From 9f538c6b7ceb8c1b5cca9c413f24ea19de86aad8 Mon Sep 17 00:00:00 2001 From: Peter Date: Tue, 28 Nov 2023 12:33:54 +0100 Subject: [PATCH 1/8] fix(svelte) split edges into internal/external. external edges dont require id, source, target anymore --- .../components/EdgeWrapper/EdgeWrapper.svelte | 2 +- .../lib/components/edges/BezierEdge.svelte | 2 +- .../edges/InternalBezierEdge.svelte | 29 ++++++++++++++++++ .../edges/InternalSmoothStepEdge.svelte | 29 ++++++++++++++++++ .../components/edges/InternalStepEdge.svelte | 30 +++++++++++++++++++ .../edges/InternalStraightEdge.svelte | 27 +++++++++++++++++ .../components/edges/SmoothStepEdge.svelte | 2 +- .../src/lib/components/edges/StepEdge.svelte | 2 +- .../lib/components/edges/StraightEdge.svelte | 2 +- .../svelte/src/lib/store/initial-store.ts | 8 ++--- 10 files changed, 124 insertions(+), 9 deletions(-) create mode 100644 packages/svelte/src/lib/components/edges/InternalBezierEdge.svelte create mode 100644 packages/svelte/src/lib/components/edges/InternalSmoothStepEdge.svelte create mode 100644 packages/svelte/src/lib/components/edges/InternalStepEdge.svelte create mode 100644 packages/svelte/src/lib/components/edges/InternalStraightEdge.svelte diff --git a/packages/svelte/src/lib/components/EdgeWrapper/EdgeWrapper.svelte b/packages/svelte/src/lib/components/EdgeWrapper/EdgeWrapper.svelte index 7a8df68c..7f5b9bbd 100644 --- a/packages/svelte/src/lib/components/EdgeWrapper/EdgeWrapper.svelte +++ b/packages/svelte/src/lib/components/EdgeWrapper/EdgeWrapper.svelte @@ -6,7 +6,7 @@ import { errorMessages, getMarkerId } from '@xyflow/system'; import { useStore } from '$lib/store'; - import BezierEdge from '$lib/components/edges/BezierEdge.svelte'; + import BezierEdge from '$lib/components/edges/InternalBezierEdge.svelte'; import type { EdgeLayouted, Edge } from '$lib/types'; import { get } from 'svelte/store'; diff --git a/packages/svelte/src/lib/components/edges/BezierEdge.svelte b/packages/svelte/src/lib/components/edges/BezierEdge.svelte index 60921eb6..56ccaf31 100644 --- a/packages/svelte/src/lib/components/edges/BezierEdge.svelte +++ b/packages/svelte/src/lib/components/edges/BezierEdge.svelte @@ -4,7 +4,7 @@ import type { EdgeProps } from '$lib/types'; import { BaseEdge } from '$lib/components/BaseEdge'; - type $$Props = EdgeProps; + type $$Props = Partial; $: [path, labelX, labelY] = getBezierPath({ sourceX: $$props.sourceX, diff --git a/packages/svelte/src/lib/components/edges/InternalBezierEdge.svelte b/packages/svelte/src/lib/components/edges/InternalBezierEdge.svelte new file mode 100644 index 00000000..a1ca0658 --- /dev/null +++ b/packages/svelte/src/lib/components/edges/InternalBezierEdge.svelte @@ -0,0 +1,29 @@ + + + diff --git a/packages/svelte/src/lib/components/edges/InternalSmoothStepEdge.svelte b/packages/svelte/src/lib/components/edges/InternalSmoothStepEdge.svelte new file mode 100644 index 00000000..73324a89 --- /dev/null +++ b/packages/svelte/src/lib/components/edges/InternalSmoothStepEdge.svelte @@ -0,0 +1,29 @@ + + + diff --git a/packages/svelte/src/lib/components/edges/InternalStepEdge.svelte b/packages/svelte/src/lib/components/edges/InternalStepEdge.svelte new file mode 100644 index 00000000..f793376b --- /dev/null +++ b/packages/svelte/src/lib/components/edges/InternalStepEdge.svelte @@ -0,0 +1,30 @@ + + + diff --git a/packages/svelte/src/lib/components/edges/InternalStraightEdge.svelte b/packages/svelte/src/lib/components/edges/InternalStraightEdge.svelte new file mode 100644 index 00000000..8cc984d7 --- /dev/null +++ b/packages/svelte/src/lib/components/edges/InternalStraightEdge.svelte @@ -0,0 +1,27 @@ + + + diff --git a/packages/svelte/src/lib/components/edges/SmoothStepEdge.svelte b/packages/svelte/src/lib/components/edges/SmoothStepEdge.svelte index 30872b68..39acb6e6 100644 --- a/packages/svelte/src/lib/components/edges/SmoothStepEdge.svelte +++ b/packages/svelte/src/lib/components/edges/SmoothStepEdge.svelte @@ -4,7 +4,7 @@ import type { EdgeProps } from '$lib/types'; import { BaseEdge } from '$lib/components/BaseEdge'; - type $$Props = EdgeProps; + type $$Props = Partial; $: [path, labelX, labelY] = getSmoothStepPath({ sourceX: $$props.sourceX, diff --git a/packages/svelte/src/lib/components/edges/StepEdge.svelte b/packages/svelte/src/lib/components/edges/StepEdge.svelte index 65012595..ac6118ca 100644 --- a/packages/svelte/src/lib/components/edges/StepEdge.svelte +++ b/packages/svelte/src/lib/components/edges/StepEdge.svelte @@ -4,7 +4,7 @@ import type { EdgeProps } from '$lib/types'; import { BaseEdge } from '$lib/components/BaseEdge'; - type $$Props = EdgeProps; + type $$Props = Partial; $: [path, labelX, labelY] = getSmoothStepPath({ sourceX: $$props.sourceX, diff --git a/packages/svelte/src/lib/components/edges/StraightEdge.svelte b/packages/svelte/src/lib/components/edges/StraightEdge.svelte index 50f282ff..9e6c88da 100644 --- a/packages/svelte/src/lib/components/edges/StraightEdge.svelte +++ b/packages/svelte/src/lib/components/edges/StraightEdge.svelte @@ -4,7 +4,7 @@ import type { EdgeProps } from '$lib/types'; import { BaseEdge } from '$lib/components/BaseEdge'; - type $$Props = EdgeProps; + type $$Props = Partial; $: [path, labelX, labelY] = getStraightPath({ sourceX: $$props.sourceX, diff --git a/packages/svelte/src/lib/store/initial-store.ts b/packages/svelte/src/lib/store/initial-store.ts index dbbb17fc..bf0166ab 100644 --- a/packages/svelte/src/lib/store/initial-store.ts +++ b/packages/svelte/src/lib/store/initial-store.ts @@ -24,10 +24,10 @@ import DefaultNode from '$lib/components/nodes/DefaultNode.svelte'; import InputNode from '$lib/components/nodes/InputNode.svelte'; import OutputNode from '$lib/components/nodes/OutputNode.svelte'; import GroupNode from '$lib/components/nodes/GroupNode.svelte'; -import BezierEdge from '$lib/components/edges/BezierEdge.svelte'; -import StraightEdge from '$lib/components/edges/StraightEdge.svelte'; -import SmoothStepEdge from '$lib/components/edges/SmoothStepEdge.svelte'; -import StepEdge from '$lib/components/edges/StepEdge.svelte'; +import BezierEdge from '$lib/components/edges/InternalBezierEdge.svelte'; +import StraightEdge from '$lib/components/edges/InternalStraightEdge.svelte'; +import SmoothStepEdge from '$lib/components/edges/InternalSmoothStepEdge.svelte'; +import StepEdge from '$lib/components/edges/InternalStepEdge.svelte'; import type { NodeTypes, EdgeTypes, From 0393409e898d4c462110c35190a192bb17ed1696 Mon Sep 17 00:00:00 2001 From: Peter Date: Tue, 28 Nov 2023 13:03:50 +0100 Subject: [PATCH 2/8] fix(system) exportet Optional type, fix(svelte) adjusted exported edge types --- .../svelte/src/routes/examples/customnode/CustomNode.svelte | 2 +- packages/svelte/src/lib/components/edges/BezierEdge.svelte | 4 ++-- .../svelte/src/lib/components/edges/SmoothStepEdge.svelte | 4 ++-- packages/svelte/src/lib/components/edges/StepEdge.svelte | 4 ++-- packages/svelte/src/lib/components/edges/StraightEdge.svelte | 3 ++- packages/system/src/types/utils.ts | 2 ++ packages/system/src/utils/index.ts | 1 + 7 files changed, 12 insertions(+), 8 deletions(-) diff --git a/examples/svelte/src/routes/examples/customnode/CustomNode.svelte b/examples/svelte/src/routes/examples/customnode/CustomNode.svelte index 25d37d32..51ba33ea 100644 --- a/examples/svelte/src/routes/examples/customnode/CustomNode.svelte +++ b/examples/svelte/src/routes/examples/customnode/CustomNode.svelte @@ -1,6 +1,6 @@ - - diff --git a/packages/svelte/src/lib/components/edges/BezierEdgeInternal.svelte b/packages/svelte/src/lib/components/edges/BezierEdge/BaseBezierEdge.svelte similarity index 69% rename from packages/svelte/src/lib/components/edges/BezierEdgeInternal.svelte rename to packages/svelte/src/lib/components/edges/BezierEdge/BaseBezierEdge.svelte index a1ca0658..749a5096 100644 --- a/packages/svelte/src/lib/components/edges/BezierEdgeInternal.svelte +++ b/packages/svelte/src/lib/components/edges/BezierEdge/BaseBezierEdge.svelte @@ -1,10 +1,10 @@ + import BaseBezierEdge from './BaseBezierEdge.svelte'; + import type { BezierEdgeProps } from '$lib/types'; + + type $$Props = BezierEdgeProps; + + $: props = $$props as $$Props; + + + diff --git a/packages/svelte/src/lib/components/edges/BezierEdge/BezierEdgeInternal.svelte b/packages/svelte/src/lib/components/edges/BezierEdge/BezierEdgeInternal.svelte new file mode 100644 index 00000000..75d168f4 --- /dev/null +++ b/packages/svelte/src/lib/components/edges/BezierEdge/BezierEdgeInternal.svelte @@ -0,0 +1,10 @@ + + + diff --git a/packages/svelte/src/lib/components/edges/SmoothStepEdge.svelte b/packages/svelte/src/lib/components/edges/SmoothStepEdge.svelte deleted file mode 100644 index f528da0e..00000000 --- a/packages/svelte/src/lib/components/edges/SmoothStepEdge.svelte +++ /dev/null @@ -1,30 +0,0 @@ - - - diff --git a/packages/svelte/src/lib/components/edges/SmoothStepEdgeInternal.svelte b/packages/svelte/src/lib/components/edges/SmoothStepEdge/BaseSmoothStepEdge.svelte similarity index 65% rename from packages/svelte/src/lib/components/edges/SmoothStepEdgeInternal.svelte rename to packages/svelte/src/lib/components/edges/SmoothStepEdge/BaseSmoothStepEdge.svelte index 73324a89..5ec4dd89 100644 --- a/packages/svelte/src/lib/components/edges/SmoothStepEdgeInternal.svelte +++ b/packages/svelte/src/lib/components/edges/SmoothStepEdge/BaseSmoothStepEdge.svelte @@ -1,10 +1,10 @@ + import BaseSmoothStepEdge from './BaseSmoothStepEdge.svelte'; + import type { SmoothStepEdgeProps } from '$lib/types'; + + type $$Props = SmoothStepEdgeProps; + + $: props = $$props as $$Props; + + + diff --git a/packages/svelte/src/lib/components/edges/SmoothStepEdge/SmoothStepEdgeInternal.svelte b/packages/svelte/src/lib/components/edges/SmoothStepEdge/SmoothStepEdgeInternal.svelte new file mode 100644 index 00000000..803247c2 --- /dev/null +++ b/packages/svelte/src/lib/components/edges/SmoothStepEdge/SmoothStepEdgeInternal.svelte @@ -0,0 +1,10 @@ + + + diff --git a/packages/svelte/src/lib/components/edges/StepEdge.svelte b/packages/svelte/src/lib/components/edges/StepEdge.svelte deleted file mode 100644 index b0860d03..00000000 --- a/packages/svelte/src/lib/components/edges/StepEdge.svelte +++ /dev/null @@ -1,31 +0,0 @@ - - - diff --git a/packages/svelte/src/lib/components/edges/StepEdgeInternal.svelte b/packages/svelte/src/lib/components/edges/StepEdge/BaseStepEdge.svelte similarity index 73% rename from packages/svelte/src/lib/components/edges/StepEdgeInternal.svelte rename to packages/svelte/src/lib/components/edges/StepEdge/BaseStepEdge.svelte index f793376b..4099e7d5 100644 --- a/packages/svelte/src/lib/components/edges/StepEdgeInternal.svelte +++ b/packages/svelte/src/lib/components/edges/StepEdge/BaseStepEdge.svelte @@ -1,10 +1,10 @@ + import BaseStepEdge from './BaseStepEdge.svelte'; + import type { StepEdgeProps } from '$lib/types'; + + type $$Props = StepEdgeProps; + + $: props = $$props as $$Props; + + + diff --git a/packages/svelte/src/lib/components/edges/StepEdge/StepEdgeInternal.svelte b/packages/svelte/src/lib/components/edges/StepEdge/StepEdgeInternal.svelte new file mode 100644 index 00000000..21109992 --- /dev/null +++ b/packages/svelte/src/lib/components/edges/StepEdge/StepEdgeInternal.svelte @@ -0,0 +1,10 @@ + + + diff --git a/packages/svelte/src/lib/components/edges/StraightEdge.svelte b/packages/svelte/src/lib/components/edges/StraightEdge.svelte deleted file mode 100644 index 979c4351..00000000 --- a/packages/svelte/src/lib/components/edges/StraightEdge.svelte +++ /dev/null @@ -1,28 +0,0 @@ - - - diff --git a/packages/svelte/src/lib/components/edges/StraightEdgeInternal.svelte b/packages/svelte/src/lib/components/edges/StraightEdge/BaseStraightEdge.svelte similarity index 75% rename from packages/svelte/src/lib/components/edges/StraightEdgeInternal.svelte rename to packages/svelte/src/lib/components/edges/StraightEdge/BaseStraightEdge.svelte index 8cc984d7..5db480ca 100644 --- a/packages/svelte/src/lib/components/edges/StraightEdgeInternal.svelte +++ b/packages/svelte/src/lib/components/edges/StraightEdge/BaseStraightEdge.svelte @@ -1,10 +1,10 @@ + import BaseStraighEdge from './BaseStraightEdge.svelte'; + import type { StraightEdgeProps } from '$lib/types'; + + type $$Props = StraightEdgeProps; + + $: props = $$props as $$Props; + + + diff --git a/packages/svelte/src/lib/components/edges/StraightEdge/StraightEdgeInternal.svelte b/packages/svelte/src/lib/components/edges/StraightEdge/StraightEdgeInternal.svelte new file mode 100644 index 00000000..bad893b2 --- /dev/null +++ b/packages/svelte/src/lib/components/edges/StraightEdge/StraightEdgeInternal.svelte @@ -0,0 +1,10 @@ + + + diff --git a/packages/svelte/src/lib/components/edges/index.ts b/packages/svelte/src/lib/components/edges/index.ts index 1f1567b6..19f1f129 100644 --- a/packages/svelte/src/lib/components/edges/index.ts +++ b/packages/svelte/src/lib/components/edges/index.ts @@ -1,4 +1,15 @@ -export { default as BezierEdge } from './BezierEdge.svelte'; -export { default as StraightEdge } from './StraightEdge.svelte'; -export { default as SmoothStepEdge } from './SmoothStepEdge.svelte'; -export { default as StepEdge } from './StepEdge.svelte'; +// We distinguish between internal and exported edges +// The internal edges are used directly like custom edges and always get an id, source and target props +// If you import an edge from the library, the id is optional and source and target are not used at all + +export { default as BezierEdge } from './BezierEdge/BezierEdge.svelte'; +export { default as BezierEdgeInternal } from './BezierEdge/BezierEdgeInternal.svelte'; + +export { default as SmoothStepEdge } from './SmoothStepEdge/BaseSmoothStepEdge.svelte'; +export { default as SmoothStepEdgeInternal } from './SmoothStepEdge/SmoothStepEdgeInternal.svelte'; + +export { default as StraightEdge } from './StraightEdge/StraightEdge.svelte'; +export { default as StraightEdgeInternal } from './StraightEdge/StraightEdgeInternal.svelte'; + +export { default as StepEdge } from './StepEdge/StepEdge.svelte'; +export { default as StepEdgeInternal } from './StepEdge/StepEdgeInternal.svelte'; diff --git a/packages/svelte/src/lib/components/edges/internal.ts b/packages/svelte/src/lib/components/edges/internal.ts deleted file mode 100644 index f2582b79..00000000 --- a/packages/svelte/src/lib/components/edges/internal.ts +++ /dev/null @@ -1,4 +0,0 @@ -export { default as BezierEdge } from './BezierEdgeInternal.svelte'; -export { default as StraightEdge } from './StraightEdgeInternal.svelte'; -export { default as SmoothStepEdge } from './SmoothStepEdgeInternal.svelte'; -export { default as StepEdge } from './StepEdgeInternal.svelte'; diff --git a/packages/svelte/src/lib/store/initial-store.ts b/packages/svelte/src/lib/store/initial-store.ts index 65acad86..dcfee4db 100644 --- a/packages/svelte/src/lib/store/initial-store.ts +++ b/packages/svelte/src/lib/store/initial-store.ts @@ -25,7 +25,12 @@ import InputNode from '$lib/components/nodes/InputNode.svelte'; import OutputNode from '$lib/components/nodes/OutputNode.svelte'; import GroupNode from '$lib/components/nodes/GroupNode.svelte'; -import { BezierEdge, StraightEdge, StepEdge, SmoothStepEdge } from '$lib/components/edges/internal'; +import { + BezierEdgeInternal, + SmoothStepEdgeInternal, + StraightEdgeInternal, + StepEdgeInternal +} from '$lib/components/edges'; import type { NodeTypes, @@ -47,10 +52,10 @@ export const initialNodeTypes = { }; export const initialEdgeTypes = { - straight: StraightEdge, - smoothstep: SmoothStepEdge, - default: BezierEdge, - step: StepEdge + straight: StraightEdgeInternal, + smoothstep: SmoothStepEdgeInternal, + default: BezierEdgeInternal, + step: StepEdgeInternal }; export const getInitialStore = ({ diff --git a/packages/svelte/src/lib/types/edges.ts b/packages/svelte/src/lib/types/edges.ts index 33f0d908..0a666ce7 100644 --- a/packages/svelte/src/lib/types/edges.ts +++ b/packages/svelte/src/lib/types/edges.ts @@ -5,7 +5,9 @@ import type { BezierPathOptions, DefaultEdgeOptionsBase, EdgePosition, - SmoothStepPathOptions + SmoothStepPathOptions, + Optional, + StepPathOptions } from '@xyflow/system'; import type { Node } from '$lib/types'; @@ -29,6 +31,7 @@ type BezierEdgeType = DefaultEdge & { type StepEdgeType = DefaultEdge & { type: 'step'; + pathOptions?: StepPathOptions; }; export type Edge = @@ -37,7 +40,7 @@ export type Edge = | BezierEdgeType | StepEdgeType; -export type EdgeProps = Omit & +export type EdgeProps = Omit, 'sourceHandle' | 'targetHandle'> & EdgePosition & { markerStart?: string; markerEnd?: string; @@ -45,6 +48,22 @@ export type EdgeProps = Omit & targetHandleId?: string | null; }; +export type EdgeComponentProps = Optional, 'source' | 'target'>, 'id'>; + +export type BezierEdgeProps = EdgeComponentProps & { + pathOptions?: BezierPathOptions; +}; + +export type SmoothStepEdgeProps = EdgeComponentProps & { + pathOptions?: SmoothStepPathOptions; +}; + +export type StepEdgeProps = EdgeComponentProps & { + pathOptions?: StepPathOptions; +}; + +export type StraightEdgeProps = EdgeComponentProps; + export type EdgeTypes = Record>>; export type DefaultEdgeOptions = Omit, 'focusable'>; diff --git a/packages/system/src/types/edges.ts b/packages/system/src/types/edges.ts index 855682d2..65c8e641 100644 --- a/packages/system/src/types/edges.ts +++ b/packages/system/src/types/edges.ts @@ -27,6 +27,10 @@ export type SmoothStepPathOptions = { borderRadius?: number; }; +export type StepPathOptions = { + offset?: number; +}; + export type BezierPathOptions = { curvature?: number; }; From a70e25b1a244861caf3fbf8a95e042a0ff1ba02b Mon Sep 17 00:00:00 2001 From: moklick Date: Thu, 30 Nov 2023 12:58:44 +0100 Subject: [PATCH 8/8] refactor(svelte/edges): cleanup types and components --- .../src/routes/examples/edges/+page.svelte | 14 ++- .../routes/examples/edges/ButtonEdge.svelte | 92 +++++++++++++++++++ .../examples/edges/CustomBezierEdge.svelte | 55 +++++++++++ .../src/components/Edges/StraightEdge.tsx | 6 +- packages/react/src/types/edges.ts | 2 +- .../lib/components/edges/BezierEdge.svelte | 48 ++++++++++ .../edges/BezierEdge/BaseBezierEdge.svelte | 33 ------- .../edges/BezierEdge/BezierEdge.svelte | 10 -- .../BezierEdge/BezierEdgeInternal.svelte | 10 -- .../edges/BezierEdgeInternal.svelte | 63 +++++++++++++ .../components/edges/SmoothStepEdge.svelte | 49 ++++++++++ .../SmoothStepEdge/BaseSmoothStepEdge.svelte | 34 ------- .../SmoothStepEdge/SmoothStepEdge.svelte | 10 -- .../SmoothStepEdgeInternal.svelte | 10 -- .../edges/SmoothStepEdgeInternal.svelte | 63 +++++++++++++ .../src/lib/components/edges/StepEdge.svelte | 49 ++++++++++ .../edges/StepEdge/BaseStepEdge.svelte | 34 ------- .../components/edges/StepEdge/StepEdge.svelte | 10 -- .../edges/StepEdge/StepEdgeInternal.svelte | 10 -- .../components/edges/StepEdgeInternal.svelte | 64 +++++++++++++ .../lib/components/edges/StraightEdge.svelte | 42 +++++++++ .../StraightEdge/BaseStraightEdge.svelte | 30 ------ .../edges/StraightEdge/StraightEdge.svelte | 10 -- .../StraightEdge/StraightEdgeInternal.svelte | 10 -- .../edges/StraightEdgeInternal.svelte | 63 +++++++++++++ .../svelte/src/lib/components/edges/index.ts | 18 ++-- packages/svelte/src/lib/index.ts | 13 ++- packages/svelte/src/lib/types/edges.ts | 15 ++- packages/svelte/tsconfig.json | 3 +- tooling/tsconfig/react.json | 3 +- 30 files changed, 640 insertions(+), 233 deletions(-) create mode 100644 examples/svelte/src/routes/examples/edges/ButtonEdge.svelte create mode 100644 examples/svelte/src/routes/examples/edges/CustomBezierEdge.svelte create mode 100644 packages/svelte/src/lib/components/edges/BezierEdge.svelte delete mode 100644 packages/svelte/src/lib/components/edges/BezierEdge/BaseBezierEdge.svelte delete mode 100644 packages/svelte/src/lib/components/edges/BezierEdge/BezierEdge.svelte delete mode 100644 packages/svelte/src/lib/components/edges/BezierEdge/BezierEdgeInternal.svelte create mode 100644 packages/svelte/src/lib/components/edges/BezierEdgeInternal.svelte create mode 100644 packages/svelte/src/lib/components/edges/SmoothStepEdge.svelte delete mode 100644 packages/svelte/src/lib/components/edges/SmoothStepEdge/BaseSmoothStepEdge.svelte delete mode 100644 packages/svelte/src/lib/components/edges/SmoothStepEdge/SmoothStepEdge.svelte delete mode 100644 packages/svelte/src/lib/components/edges/SmoothStepEdge/SmoothStepEdgeInternal.svelte create mode 100644 packages/svelte/src/lib/components/edges/SmoothStepEdgeInternal.svelte create mode 100644 packages/svelte/src/lib/components/edges/StepEdge.svelte delete mode 100644 packages/svelte/src/lib/components/edges/StepEdge/BaseStepEdge.svelte delete mode 100644 packages/svelte/src/lib/components/edges/StepEdge/StepEdge.svelte delete mode 100644 packages/svelte/src/lib/components/edges/StepEdge/StepEdgeInternal.svelte create mode 100644 packages/svelte/src/lib/components/edges/StepEdgeInternal.svelte create mode 100644 packages/svelte/src/lib/components/edges/StraightEdge.svelte delete mode 100644 packages/svelte/src/lib/components/edges/StraightEdge/BaseStraightEdge.svelte delete mode 100644 packages/svelte/src/lib/components/edges/StraightEdge/StraightEdge.svelte delete mode 100644 packages/svelte/src/lib/components/edges/StraightEdge/StraightEdgeInternal.svelte create mode 100644 packages/svelte/src/lib/components/edges/StraightEdgeInternal.svelte diff --git a/examples/svelte/src/routes/examples/edges/+page.svelte b/examples/svelte/src/routes/examples/edges/+page.svelte index 403b0ef6..8a2471b8 100644 --- a/examples/svelte/src/routes/examples/edges/+page.svelte +++ b/examples/svelte/src/routes/examples/edges/+page.svelte @@ -10,6 +10,8 @@ } from '@xyflow/svelte'; import '@xyflow/svelte/dist/style.css'; + import ButtonEdge from './ButtonEdge.svelte'; + import CustomBezierEdge from './CustomBezierEdge.svelte'; const nodes = writable([ { @@ -110,13 +112,14 @@ id: 'e5-8', source: '5', target: '8', - data: { text: 'custom edge' } + type: 'button' }, { id: 'e5-9', source: '5', target: '9', - data: { text: 'custom edge 2' } + type: 'customBezier', + label: 'custom bezier' }, { id: 'e5-6', @@ -143,9 +146,14 @@ } } ]); + + const edgeTypes = { + button: ButtonEdge, + customBezier: CustomBezierEdge + }; - + diff --git a/examples/svelte/src/routes/examples/edges/ButtonEdge.svelte b/examples/svelte/src/routes/examples/edges/ButtonEdge.svelte new file mode 100644 index 00000000..235aab98 --- /dev/null +++ b/examples/svelte/src/routes/examples/edges/ButtonEdge.svelte @@ -0,0 +1,92 @@ + + + + +
+ +
+
+ + diff --git a/examples/svelte/src/routes/examples/edges/CustomBezierEdge.svelte b/examples/svelte/src/routes/examples/edges/CustomBezierEdge.svelte new file mode 100644 index 00000000..48d86c3d --- /dev/null +++ b/examples/svelte/src/routes/examples/edges/CustomBezierEdge.svelte @@ -0,0 +1,55 @@ + + + diff --git a/packages/react/src/components/Edges/StraightEdge.tsx b/packages/react/src/components/Edges/StraightEdge.tsx index a9a453df..5a3c824d 100644 --- a/packages/react/src/components/Edges/StraightEdge.tsx +++ b/packages/react/src/components/Edges/StraightEdge.tsx @@ -1,8 +1,8 @@ import { memo } from 'react'; -import { type Optional, getStraightPath } from '@xyflow/system'; +import { getStraightPath } from '@xyflow/system'; import BaseEdge from './BaseEdge'; -import type { EdgeProps } from '../../types'; +import type { StraightEdgeProps } from '../../types'; function createStraightEdge(params: { isInternal: boolean }) { // eslint-disable-next-line react/display-name @@ -23,7 +23,7 @@ function createStraightEdge(params: { isInternal: boolean }) { markerEnd, markerStart, interactionWidth, - }: Optional) => { + }: StraightEdgeProps) => { const [path, labelX, labelY] = getStraightPath({ sourceX, sourceY, targetX, targetY }); const _id = params.isInternal ? undefined : id; diff --git a/packages/react/src/types/edges.ts b/packages/react/src/types/edges.ts index 896c4605..287c277d 100644 --- a/packages/react/src/types/edges.ts +++ b/packages/react/src/types/edges.ts @@ -109,7 +109,7 @@ export type BaseEdgeProps = Pick = Optional, 'source' | 'target'>, 'id'>; -export type StraightEdgeProps = EdgeComponentProps; +export type StraightEdgeProps = Omit, 'sourcePosition' | 'targetPosition'>; export type SmoothStepEdgeProps = EdgeComponentProps & { pathOptions?: SmoothStepPathOptions; diff --git a/packages/svelte/src/lib/components/edges/BezierEdge.svelte b/packages/svelte/src/lib/components/edges/BezierEdge.svelte new file mode 100644 index 00000000..9d32f4c7 --- /dev/null +++ b/packages/svelte/src/lib/components/edges/BezierEdge.svelte @@ -0,0 +1,48 @@ + + + diff --git a/packages/svelte/src/lib/components/edges/BezierEdge/BaseBezierEdge.svelte b/packages/svelte/src/lib/components/edges/BezierEdge/BaseBezierEdge.svelte deleted file mode 100644 index 749a5096..00000000 --- a/packages/svelte/src/lib/components/edges/BezierEdge/BaseBezierEdge.svelte +++ /dev/null @@ -1,33 +0,0 @@ - - - diff --git a/packages/svelte/src/lib/components/edges/BezierEdge/BezierEdge.svelte b/packages/svelte/src/lib/components/edges/BezierEdge/BezierEdge.svelte deleted file mode 100644 index 9f93e7df..00000000 --- a/packages/svelte/src/lib/components/edges/BezierEdge/BezierEdge.svelte +++ /dev/null @@ -1,10 +0,0 @@ - - - diff --git a/packages/svelte/src/lib/components/edges/BezierEdge/BezierEdgeInternal.svelte b/packages/svelte/src/lib/components/edges/BezierEdge/BezierEdgeInternal.svelte deleted file mode 100644 index 75d168f4..00000000 --- a/packages/svelte/src/lib/components/edges/BezierEdge/BezierEdgeInternal.svelte +++ /dev/null @@ -1,10 +0,0 @@ - - - diff --git a/packages/svelte/src/lib/components/edges/BezierEdgeInternal.svelte b/packages/svelte/src/lib/components/edges/BezierEdgeInternal.svelte new file mode 100644 index 00000000..9431a05d --- /dev/null +++ b/packages/svelte/src/lib/components/edges/BezierEdgeInternal.svelte @@ -0,0 +1,63 @@ + + + diff --git a/packages/svelte/src/lib/components/edges/SmoothStepEdge.svelte b/packages/svelte/src/lib/components/edges/SmoothStepEdge.svelte new file mode 100644 index 00000000..3e27368f --- /dev/null +++ b/packages/svelte/src/lib/components/edges/SmoothStepEdge.svelte @@ -0,0 +1,49 @@ + + + diff --git a/packages/svelte/src/lib/components/edges/SmoothStepEdge/BaseSmoothStepEdge.svelte b/packages/svelte/src/lib/components/edges/SmoothStepEdge/BaseSmoothStepEdge.svelte deleted file mode 100644 index 5ec4dd89..00000000 --- a/packages/svelte/src/lib/components/edges/SmoothStepEdge/BaseSmoothStepEdge.svelte +++ /dev/null @@ -1,34 +0,0 @@ - - - diff --git a/packages/svelte/src/lib/components/edges/SmoothStepEdge/SmoothStepEdge.svelte b/packages/svelte/src/lib/components/edges/SmoothStepEdge/SmoothStepEdge.svelte deleted file mode 100644 index 1cac5d1c..00000000 --- a/packages/svelte/src/lib/components/edges/SmoothStepEdge/SmoothStepEdge.svelte +++ /dev/null @@ -1,10 +0,0 @@ - - - diff --git a/packages/svelte/src/lib/components/edges/SmoothStepEdge/SmoothStepEdgeInternal.svelte b/packages/svelte/src/lib/components/edges/SmoothStepEdge/SmoothStepEdgeInternal.svelte deleted file mode 100644 index 803247c2..00000000 --- a/packages/svelte/src/lib/components/edges/SmoothStepEdge/SmoothStepEdgeInternal.svelte +++ /dev/null @@ -1,10 +0,0 @@ - - - diff --git a/packages/svelte/src/lib/components/edges/SmoothStepEdgeInternal.svelte b/packages/svelte/src/lib/components/edges/SmoothStepEdgeInternal.svelte new file mode 100644 index 00000000..28e87269 --- /dev/null +++ b/packages/svelte/src/lib/components/edges/SmoothStepEdgeInternal.svelte @@ -0,0 +1,63 @@ + + + diff --git a/packages/svelte/src/lib/components/edges/StepEdge.svelte b/packages/svelte/src/lib/components/edges/StepEdge.svelte new file mode 100644 index 00000000..5ca6dc00 --- /dev/null +++ b/packages/svelte/src/lib/components/edges/StepEdge.svelte @@ -0,0 +1,49 @@ + + + diff --git a/packages/svelte/src/lib/components/edges/StepEdge/BaseStepEdge.svelte b/packages/svelte/src/lib/components/edges/StepEdge/BaseStepEdge.svelte deleted file mode 100644 index 4099e7d5..00000000 --- a/packages/svelte/src/lib/components/edges/StepEdge/BaseStepEdge.svelte +++ /dev/null @@ -1,34 +0,0 @@ - - - diff --git a/packages/svelte/src/lib/components/edges/StepEdge/StepEdge.svelte b/packages/svelte/src/lib/components/edges/StepEdge/StepEdge.svelte deleted file mode 100644 index 49522e95..00000000 --- a/packages/svelte/src/lib/components/edges/StepEdge/StepEdge.svelte +++ /dev/null @@ -1,10 +0,0 @@ - - - diff --git a/packages/svelte/src/lib/components/edges/StepEdge/StepEdgeInternal.svelte b/packages/svelte/src/lib/components/edges/StepEdge/StepEdgeInternal.svelte deleted file mode 100644 index 21109992..00000000 --- a/packages/svelte/src/lib/components/edges/StepEdge/StepEdgeInternal.svelte +++ /dev/null @@ -1,10 +0,0 @@ - - - diff --git a/packages/svelte/src/lib/components/edges/StepEdgeInternal.svelte b/packages/svelte/src/lib/components/edges/StepEdgeInternal.svelte new file mode 100644 index 00000000..248e5912 --- /dev/null +++ b/packages/svelte/src/lib/components/edges/StepEdgeInternal.svelte @@ -0,0 +1,64 @@ + + + diff --git a/packages/svelte/src/lib/components/edges/StraightEdge.svelte b/packages/svelte/src/lib/components/edges/StraightEdge.svelte new file mode 100644 index 00000000..c868752f --- /dev/null +++ b/packages/svelte/src/lib/components/edges/StraightEdge.svelte @@ -0,0 +1,42 @@ + + + diff --git a/packages/svelte/src/lib/components/edges/StraightEdge/BaseStraightEdge.svelte b/packages/svelte/src/lib/components/edges/StraightEdge/BaseStraightEdge.svelte deleted file mode 100644 index 5db480ca..00000000 --- a/packages/svelte/src/lib/components/edges/StraightEdge/BaseStraightEdge.svelte +++ /dev/null @@ -1,30 +0,0 @@ - - - diff --git a/packages/svelte/src/lib/components/edges/StraightEdge/StraightEdge.svelte b/packages/svelte/src/lib/components/edges/StraightEdge/StraightEdge.svelte deleted file mode 100644 index d7153544..00000000 --- a/packages/svelte/src/lib/components/edges/StraightEdge/StraightEdge.svelte +++ /dev/null @@ -1,10 +0,0 @@ - - - diff --git a/packages/svelte/src/lib/components/edges/StraightEdge/StraightEdgeInternal.svelte b/packages/svelte/src/lib/components/edges/StraightEdge/StraightEdgeInternal.svelte deleted file mode 100644 index bad893b2..00000000 --- a/packages/svelte/src/lib/components/edges/StraightEdge/StraightEdgeInternal.svelte +++ /dev/null @@ -1,10 +0,0 @@ - - - diff --git a/packages/svelte/src/lib/components/edges/StraightEdgeInternal.svelte b/packages/svelte/src/lib/components/edges/StraightEdgeInternal.svelte new file mode 100644 index 00000000..0d436d52 --- /dev/null +++ b/packages/svelte/src/lib/components/edges/StraightEdgeInternal.svelte @@ -0,0 +1,63 @@ + + + diff --git a/packages/svelte/src/lib/components/edges/index.ts b/packages/svelte/src/lib/components/edges/index.ts index 19f1f129..4be51363 100644 --- a/packages/svelte/src/lib/components/edges/index.ts +++ b/packages/svelte/src/lib/components/edges/index.ts @@ -2,14 +2,16 @@ // The internal edges are used directly like custom edges and always get an id, source and target props // If you import an edge from the library, the id is optional and source and target are not used at all -export { default as BezierEdge } from './BezierEdge/BezierEdge.svelte'; -export { default as BezierEdgeInternal } from './BezierEdge/BezierEdgeInternal.svelte'; +// @todo: how can we prevent this duplication in ...Edge/ ...EdgeInternal? +// both are quite similar, it's just about 1-2 props that are different +export { default as BezierEdge } from './BezierEdge.svelte'; +export { default as BezierEdgeInternal } from './BezierEdgeInternal.svelte'; -export { default as SmoothStepEdge } from './SmoothStepEdge/BaseSmoothStepEdge.svelte'; -export { default as SmoothStepEdgeInternal } from './SmoothStepEdge/SmoothStepEdgeInternal.svelte'; +export { default as SmoothStepEdge } from './SmoothStepEdge.svelte'; +export { default as SmoothStepEdgeInternal } from './SmoothStepEdgeInternal.svelte'; -export { default as StraightEdge } from './StraightEdge/StraightEdge.svelte'; -export { default as StraightEdgeInternal } from './StraightEdge/StraightEdgeInternal.svelte'; +export { default as StraightEdge } from './StraightEdge.svelte'; +export { default as StraightEdgeInternal } from './StraightEdgeInternal.svelte'; -export { default as StepEdge } from './StepEdge/StepEdge.svelte'; -export { default as StepEdgeInternal } from './StepEdge/StepEdgeInternal.svelte'; +export { default as StepEdge } from './StepEdge.svelte'; +export { default as StepEdgeInternal } from './StepEdgeInternal.svelte'; diff --git a/packages/svelte/src/lib/index.ts b/packages/svelte/src/lib/index.ts index d9e0885f..a9107415 100644 --- a/packages/svelte/src/lib/index.ts +++ b/packages/svelte/src/lib/index.ts @@ -7,7 +7,7 @@ export * from '$lib/container/Panel'; export * from '$lib/components/SvelteFlowProvider'; export * from '$lib/components/EdgeLabelRenderer'; export * from '$lib/components/BaseEdge'; -export * from '$lib/components/edges'; +export { BezierEdge, StepEdge, SmoothStepEdge, StraightEdge } from '$lib/components/edges'; export * from '$lib/components/Handle'; // plugins @@ -29,7 +29,16 @@ export * from '$lib/hooks/useConnection'; export * from '$lib/hooks/useNodesEdges'; // types -export type { Edge, EdgeProps, EdgeTypes, DefaultEdgeOptions } from '$lib/types/edges'; +export type { + Edge, + EdgeProps, + BezierEdgeProps, + SmoothStepEdgeProps, + StepEdgeProps, + StraightEdgeProps, + EdgeTypes, + DefaultEdgeOptions +} from '$lib/types/edges'; export type { HandleComponentProps, FitViewOptions } from '$lib/types/general'; export type { Node, NodeTypes, DefaultNodeOptions } from '$lib/types/nodes'; export type { SvelteFlowStore } from '$lib/store/types'; diff --git a/packages/svelte/src/lib/types/edges.ts b/packages/svelte/src/lib/types/edges.ts index 0a666ce7..3f1f0e8d 100644 --- a/packages/svelte/src/lib/types/edges.ts +++ b/packages/svelte/src/lib/types/edges.ts @@ -40,7 +40,7 @@ export type Edge = | BezierEdgeType | StepEdgeType; -export type EdgeProps = Omit, 'sourceHandle' | 'targetHandle'> & +export type EdgeProps = Omit, 'sourceHandle' | 'targetHandle' | 'type'> & EdgePosition & { markerStart?: string; markerEnd?: string; @@ -48,7 +48,13 @@ export type EdgeProps = Omit, 'sourceHandle' | 'targetHandle'> targetHandleId?: string | null; }; -export type EdgeComponentProps = Optional, 'source' | 'target'>, 'id'>; +export type EdgeComponentProps = Optional< + Omit< + EdgeProps, + 'source' | 'target' | 'sourceHandleId' | 'targetHandleId' | 'animated' | 'selected' | 'data' + >, + 'id' +>; export type BezierEdgeProps = EdgeComponentProps & { pathOptions?: BezierPathOptions; @@ -62,7 +68,10 @@ export type StepEdgeProps = EdgeComponentProps & { pathOptions?: StepPathOptions; }; -export type StraightEdgeProps = EdgeComponentProps; +export type StraightEdgeProps = Omit< + EdgeComponentProps, + 'sourcePosition' | 'targetPosition' +>; export type EdgeTypes = Record>>; diff --git a/packages/svelte/tsconfig.json b/packages/svelte/tsconfig.json index 8fbe9e82..d9cfe5d6 100644 --- a/packages/svelte/tsconfig.json +++ b/packages/svelte/tsconfig.json @@ -8,7 +8,8 @@ "resolveJsonModule": true, "skipLibCheck": true, "sourceMap": true, - "strict": true + "strict": true, + "noErrorTruncation": true } // Path aliases are handled by https://kit.svelte.dev/docs/configuration#alias diff --git a/tooling/tsconfig/react.json b/tooling/tsconfig/react.json index e3cb9853..33c4fc1f 100644 --- a/tooling/tsconfig/react.json +++ b/tooling/tsconfig/react.json @@ -6,6 +6,7 @@ "lib": ["dom", "esnext"], "module": "esnext", "target": "esnext", - "outDir": "dist" + "outDir": "dist", + "noErrorTruncation": true } }