feat(react/svelte): controlled viewport (#3461)

* feat(react): controlled viewport

* refactor(react): cleanup viewport

* feat(svelte): two way data binding for viewport, cleanup transform <> viewport stuff

* refactor(svelte): viewport stuff
This commit is contained in:
Moritz Klack
2023-09-28 16:19:03 +02:00
committed by GitHub
parent 2215b68438
commit ae33cba887
35 changed files with 351 additions and 95 deletions
@@ -43,7 +43,7 @@
const defaultHeight = 150;
const {
nodes,
transform,
viewport,
width: containerWidth,
height: containerHeight,
flowId,
@@ -59,10 +59,10 @@
const labelledBy = `svelte-flow__minimap-desc-${$flowId}`;
$: viewBB = {
x: -$transform[0] / $transform[2],
y: -$transform[1] / $transform[2],
width: $containerWidth / $transform[2],
height: $containerHeight / $transform[2]
x: -$viewport.x / $viewport.zoom,
y: -$viewport.y / $viewport.zoom,
width: $containerWidth / $viewport.zoom,
height: $containerHeight / $viewport.zoom
};
$: boundingRect = $nodes.length > 0 ? getBoundsOfRects(getRectOfNodes($nodes), viewBB) : viewBB;
$: elementWidth = width ?? defaultWidth;
@@ -100,7 +100,7 @@
style:--minimap-mask-stroke-width-props={maskStrokeWidth}
use:interactive={{
panZoom: $panZoom,
transform,
viewport,
getViewScale,
translateExtent: $translateExtent,
width: $containerWidth,