From f68d6d1066b71b02761f2667f228ace262532e65 Mon Sep 17 00:00:00 2001 From: moklick Date: Mon, 16 Oct 2023 11:14:18 +0200 Subject: [PATCH 1/6] chore(svelte): edge types --- packages/svelte/src/lib/types/edges.ts | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/packages/svelte/src/lib/types/edges.ts b/packages/svelte/src/lib/types/edges.ts index c4426a89..3f65be9c 100644 --- a/packages/svelte/src/lib/types/edges.ts +++ b/packages/svelte/src/lib/types/edges.ts @@ -10,13 +10,11 @@ import type { import type { Node } from '$lib/types'; -export type DefaultEdge = EdgeBase & { +export type DefaultEdge = Omit, 'focusable'> & { label?: string; labelStyle?: string; style?: string; class?: string; - sourceNode?: Node; - targetNode?: Node; }; type SmoothStepEdgeType = DefaultEdge & { @@ -47,7 +45,7 @@ export type EdgeProps = Omit & export type EdgeTypes = Record>>; -export type DefaultEdgeOptions = DefaultEdgeOptionsBase; +export type DefaultEdgeOptions = Omit, 'focusable'>; export type EdgeLayouted = Pick< Edge, @@ -72,6 +70,8 @@ export type EdgeLayouted = Pick< | 'class' > & EdgePosition & { + sourceNode?: Node; + targetNode?: Node; sourceHandleId?: string | null; targetHandleId?: string | null; }; From 3c30fa40874ffa230ec8191f155ba5252ec096cc Mon Sep 17 00:00:00 2001 From: moklick Date: Mon, 16 Oct 2023 11:14:56 +0200 Subject: [PATCH 2/6] chore(svelte): rename showInteractive to showLock --- packages/svelte/src/lib/plugins/Controls/Controls.svelte | 4 ++-- packages/svelte/src/lib/plugins/Controls/types.ts | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/packages/svelte/src/lib/plugins/Controls/Controls.svelte b/packages/svelte/src/lib/plugins/Controls/Controls.svelte index 80ef31a6..396d19dd 100644 --- a/packages/svelte/src/lib/plugins/Controls/Controls.svelte +++ b/packages/svelte/src/lib/plugins/Controls/Controls.svelte @@ -15,7 +15,7 @@ export let position: $$Props['position'] = 'bottom-left'; export let showZoom: $$Props['showZoom'] = true; export let showFitView: $$Props['showFitView'] = true; - export let showInteractive: $$Props['showInteractive'] = true; + export let showLock: $$Props['showLock'] = true; export let buttonBgColor: $$Props['buttonBgColor'] = undefined; export let buttonBgColorHover: $$Props['buttonBgColorHover'] = undefined; export let buttonColor: $$Props['buttonColor'] = undefined; @@ -101,7 +101,7 @@ {/if} - {#if showInteractive} + {#if showLock} Date: Mon, 16 Oct 2023 11:22:05 +0200 Subject: [PATCH 3/6] chore(svelte): add id prop --- .../src/additional-components/Background/Background.tsx | 6 ++++-- .../svelte/src/lib/plugins/Background/Background.svelte | 3 ++- packages/svelte/src/lib/plugins/Background/types.ts | 1 + 3 files changed, 7 insertions(+), 3 deletions(-) diff --git a/packages/react/src/additional-components/Background/Background.tsx b/packages/react/src/additional-components/Background/Background.tsx index 73664f9f..843daf19 100644 --- a/packages/react/src/additional-components/Background/Background.tsx +++ b/packages/react/src/additional-components/Background/Background.tsx @@ -46,6 +46,8 @@ function Background({ ? [scaledSize / offset, scaledSize / offset] : [patternDimensions[0] / offset, patternDimensions[1] / offset]; + const _patternId = `${patternId}${id ? id : ''}`; + return ( )} - + ); } diff --git a/packages/svelte/src/lib/plugins/Background/Background.svelte b/packages/svelte/src/lib/plugins/Background/Background.svelte index 7e6a9bff..67689ab9 100644 --- a/packages/svelte/src/lib/plugins/Background/Background.svelte +++ b/packages/svelte/src/lib/plugins/Background/Background.svelte @@ -16,6 +16,7 @@ type $$Props = BackgroundProps; + export let id: $$Props['id'] = undefined; export let variant: $$Props['variant'] = BackgroundVariant.Dots; export let gap: $$Props['gap'] = 20; export let size: $$Props['size'] = 1; @@ -32,7 +33,7 @@ const isCross = variant === BackgroundVariant.Cross; const gapXY: number[] = Array.isArray(gap!) ? gap! : [gap!, gap!]; - $: patternId = `background-pattern-${$flowId}`; + $: patternId = `background-pattern-${$flowId}-${id ? id : ''}`; $: scaledGap = [gapXY[0] * $viewport.zoom || 1, gapXY[1] * $viewport.zoom || 1]; $: scaledSize = patternSize * $viewport.zoom; $: patternDimensions = (isCross ? [scaledSize, scaledSize] : scaledGap) as [number, number]; diff --git a/packages/svelte/src/lib/plugins/Background/types.ts b/packages/svelte/src/lib/plugins/Background/types.ts index dd6a4d3c..3ca5667d 100644 --- a/packages/svelte/src/lib/plugins/Background/types.ts +++ b/packages/svelte/src/lib/plugins/Background/types.ts @@ -5,6 +5,7 @@ export enum BackgroundVariant { } export type BackgroundProps = { + id?: string; bgColor?: string; patternColor?: string; patternClass?: string; From c7a533bffed7bb39885cf8abdf4f9078a5ebef5d Mon Sep 17 00:00:00 2001 From: moklick Date: Mon, 16 Oct 2023 15:53:36 +0200 Subject: [PATCH 4/6] chore(svelte): fix types for event handlers --- .../components/EdgeWrapper/EdgeWrapper.svelte | 17 +++++++++++---- .../src/lib/components/Handle/Handle.svelte | 21 +++++++++++++++++-- .../components/NodeWrapper/NodeWrapper.svelte | 12 ++++++++++- .../svelte/src/lib/container/Pane/Pane.svelte | 9 +++++++- .../src/lib/container/SvelteFlow/types.ts | 21 ------------------- 5 files changed, 51 insertions(+), 29 deletions(-) diff --git a/packages/svelte/src/lib/components/EdgeWrapper/EdgeWrapper.svelte b/packages/svelte/src/lib/components/EdgeWrapper/EdgeWrapper.svelte index 7d609447..8601415b 100644 --- a/packages/svelte/src/lib/components/EdgeWrapper/EdgeWrapper.svelte +++ b/packages/svelte/src/lib/components/EdgeWrapper/EdgeWrapper.svelte @@ -6,7 +6,7 @@ import { useStore } from '$lib/store'; import BezierEdge from '$lib/components/edges/BezierEdge.svelte'; - import type { EdgeLayouted } from '$lib/types'; + import type { EdgeLayouted, Edge } from '$lib/types'; type $$Props = EdgeLayouted; @@ -39,7 +39,10 @@ export { className as class }; const { edges, edgeTypes, flowId, addSelectedEdges } = useStore(); - const dispatch = createEventDispatcher(); + const dispatch = createEventDispatcher<{ + edgeclick: { edge: Edge; event: MouseEvent | TouchEvent }; + edgecontextmenu: { edge: Edge; event: MouseEvent }; + }>(); $: edgeComponent = $edgeTypes[type!] || BezierEdge; $: markerStartUrl = markerStart ? `url(#${getMarkerId(markerStart, $flowId)})` : undefined; @@ -51,12 +54,18 @@ } const edge = $edges.find((e) => e.id === id); - dispatch('edgeclick', { event, edge }); + + if (edge) { + dispatch('edgeclick', { event, edge }); + } } function onContextMenu(event: MouseEvent) { const edge = $edges.find((e) => e.id === id); - dispatch('edgecontextmenu', { event, edge }); + + if (edge) { + dispatch('edgecontextmenu', { event, edge }); + } } diff --git a/packages/svelte/src/lib/components/Handle/Handle.svelte b/packages/svelte/src/lib/components/Handle/Handle.svelte index 58d5ad02..655bcc6b 100644 --- a/packages/svelte/src/lib/components/Handle/Handle.svelte +++ b/packages/svelte/src/lib/components/Handle/Handle.svelte @@ -1,7 +1,13 @@ Date: Mon, 16 Oct 2023 18:54:40 +0200 Subject: [PATCH 6/6] feat(svelte): add selected prop for minimap node --- packages/svelte/src/lib/plugins/Minimap/Minimap.svelte | 1 + packages/svelte/src/lib/plugins/Minimap/MinimapNode.svelte | 2 ++ 2 files changed, 3 insertions(+) diff --git a/packages/svelte/src/lib/plugins/Minimap/Minimap.svelte b/packages/svelte/src/lib/plugins/Minimap/Minimap.svelte index 79b5e1ad..95c8c7d3 100644 --- a/packages/svelte/src/lib/plugins/Minimap/Minimap.svelte +++ b/packages/svelte/src/lib/plugins/Minimap/Minimap.svelte @@ -121,6 +121,7 @@ y={pos.y} width={node.width} height={node.height} + selected={node.selected} color={nodeColorFunc(node)} borderRadius={nodeBorderRadius} strokeColor={nodeStrokeColorFunc(node)} diff --git a/packages/svelte/src/lib/plugins/Minimap/MinimapNode.svelte b/packages/svelte/src/lib/plugins/Minimap/MinimapNode.svelte index c9658f8a..ff0b1f0a 100644 --- a/packages/svelte/src/lib/plugins/Minimap/MinimapNode.svelte +++ b/packages/svelte/src/lib/plugins/Minimap/MinimapNode.svelte @@ -10,12 +10,14 @@ export let shapeRendering: string; export let strokeColor: string; export let strokeWidth: number = 2; + export let selected: boolean = false; let className: string = ''; export { className as class };