From 49e8c9329a0e0f38a2c601a85661b3b13ef775ce Mon Sep 17 00:00:00 2001 From: moklick Date: Wed, 11 Jun 2025 10:48:49 +0200 Subject: [PATCH] feat(svelte): add autoScale for node resizer --- .../src/examples/NodeResizer/BottomRightResizer.tsx | 2 +- .../src/lib/plugins/NodeResizer/NodeResizer.svelte | 11 ++++++++++- .../src/lib/plugins/NodeResizer/ResizeControl.svelte | 3 ++- packages/svelte/src/lib/plugins/NodeResizer/types.ts | 3 +++ 4 files changed, 16 insertions(+), 3 deletions(-) diff --git a/examples/react/src/examples/NodeResizer/BottomRightResizer.tsx b/examples/react/src/examples/NodeResizer/BottomRightResizer.tsx index 9809ef61..38ad14cd 100644 --- a/examples/react/src/examples/NodeResizer/BottomRightResizer.tsx +++ b/examples/react/src/examples/NodeResizer/BottomRightResizer.tsx @@ -11,7 +11,7 @@ const CustomResizerNode: FC = ({ data }) => { minWidth={100} maxWidth={500} color="orange" - scaleControls + autoScale={false} />
{data.label}
diff --git a/packages/svelte/src/lib/plugins/NodeResizer/NodeResizer.svelte b/packages/svelte/src/lib/plugins/NodeResizer/NodeResizer.svelte index 8ced5ba3..0fa4bd3d 100644 --- a/packages/svelte/src/lib/plugins/NodeResizer/NodeResizer.svelte +++ b/packages/svelte/src/lib/plugins/NodeResizer/NodeResizer.svelte @@ -14,6 +14,7 @@ handleStyle, lineClass, lineStyle, + autoScale = true, ...rest }: NodeResizerProps = $props(); @@ -25,11 +26,19 @@ style={lineStyle} {nodeId} {position} + {autoScale} variant={ResizeControlVariant.Line} {...rest} /> {/each} {#each XY_RESIZER_HANDLE_POSITIONS as position (position)} - + {/each} {/if} diff --git a/packages/svelte/src/lib/plugins/NodeResizer/ResizeControl.svelte b/packages/svelte/src/lib/plugins/NodeResizer/ResizeControl.svelte index 47d7db5a..b9f38214 100644 --- a/packages/svelte/src/lib/plugins/NodeResizer/ResizeControl.svelte +++ b/packages/svelte/src/lib/plugins/NodeResizer/ResizeControl.svelte @@ -22,6 +22,7 @@ maxWidth = Number.MAX_VALUE, maxHeight = Number.MAX_VALUE, keepAspectRatio = false, + autoScale = true, shouldResize, onResizeStart, onResize, @@ -121,7 +122,7 @@ bind:this={resizeControlRef} style:border-color={isLineVariant ? color : undefined} style:background-color={isLineVariant ? undefined : color} - style:scale={isLineVariant ? undefined : Math.max(1 / store.viewport.zoom, 1)} + style:scale={isLineVariant || !autoScale ? undefined : Math.max(1 / store.viewport.zoom, 1)} {...rest} > {@render children?.()} diff --git a/packages/svelte/src/lib/plugins/NodeResizer/types.ts b/packages/svelte/src/lib/plugins/NodeResizer/types.ts index 23140c52..5f9bb95e 100644 --- a/packages/svelte/src/lib/plugins/NodeResizer/types.ts +++ b/packages/svelte/src/lib/plugins/NodeResizer/types.ts @@ -36,6 +36,8 @@ export type NodeResizerProps = { maxHeight?: number; /** Keep aspect ratio when resizing */ keepAspectRatio?: boolean; + /** Automatically scale the node when resizing */ + autoScale?: boolean; /** Callback to determine if node should resize */ shouldResize?: ShouldResize; /** Callback called when resizing starts */ @@ -55,6 +57,7 @@ export type ResizeControlProps = Pick< | 'maxWidth' | 'maxHeight' | 'keepAspectRatio' + | 'autoScale' | 'shouldResize' | 'onResizeStart' | 'onResize'