From edbc67e8c4a16f0a36d8ea6dfd88774ec48b8028 Mon Sep 17 00:00:00 2001
From: Peter
Date: Tue, 19 Sep 2023 14:36:04 +0200
Subject: [PATCH 1/5] feat(svelte) fixed on:connectstart and on:connectend
---
.../svelte/src/lib/components/Handle/Handle.svelte | 11 ++++++++++-
packages/svelte/src/lib/container/SvelteFlow/types.ts | 4 ++--
2 files changed, 12 insertions(+), 3 deletions(-)
diff --git a/packages/svelte/src/lib/components/Handle/Handle.svelte b/packages/svelte/src/lib/components/Handle/Handle.svelte
index ff1ca8e4..ac938374 100644
--- a/packages/svelte/src/lib/components/Handle/Handle.svelte
+++ b/packages/svelte/src/lib/components/Handle/Handle.svelte
@@ -70,7 +70,16 @@
updateConnection,
cancelConnection,
panBy,
- onConnect: onConnectExtended,
+ onConnect: (params) => {
+ addEdge(params);
+ dispatch('connect', params);
+ },
+ onConnectStart: (event, params) => {
+ dispatch('connectstart', { event, params });
+ },
+ onConnectEnd: (event) => {
+ dispatch('connectend', event);
+ },
getTransform: () => $transform
});
}
diff --git a/packages/svelte/src/lib/container/SvelteFlow/types.ts b/packages/svelte/src/lib/container/SvelteFlow/types.ts
index b6d12104..26b60f82 100644
--- a/packages/svelte/src/lib/container/SvelteFlow/types.ts
+++ b/packages/svelte/src/lib/container/SvelteFlow/types.ts
@@ -64,9 +64,9 @@ export type SvelteFlowProps = DOMAttributes & {
'on:nodemousemove'?: CustomEvent;
'on:nodemouseleave'?: CustomEvent;
'on:edgeclick'?: CustomEvent;
- 'on:connectstart'?: CustomEvent;
+ 'on:connectstart'?: CustomEvent<{ event: MouseEvent | TouchEvent }>;
'on:connect'?: CustomEvent;
- 'on:connectend'?: CustomEvent;
+ 'on:connectend'?: CustomEvent;
'on:paneclick'?: CustomEvent;
'on:panecontextmenu'?: CustomEvent;
};
From e27566f27921930d3d02e608a32228b4c984030d Mon Sep 17 00:00:00 2001
From: Peter
Date: Tue, 19 Sep 2023 14:54:43 +0200
Subject: [PATCH 2/5] fix(svelte) fixed type for on:connectstart
---
packages/svelte/src/lib/container/SvelteFlow/types.ts | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/packages/svelte/src/lib/container/SvelteFlow/types.ts b/packages/svelte/src/lib/container/SvelteFlow/types.ts
index 26b60f82..db9ae308 100644
--- a/packages/svelte/src/lib/container/SvelteFlow/types.ts
+++ b/packages/svelte/src/lib/container/SvelteFlow/types.ts
@@ -64,7 +64,7 @@ export type SvelteFlowProps = DOMAttributes & {
'on:nodemousemove'?: CustomEvent;
'on:nodemouseleave'?: CustomEvent;
'on:edgeclick'?: CustomEvent;
- 'on:connectstart'?: CustomEvent<{ event: MouseEvent | TouchEvent }>;
+ 'on:connectstart'?: CustomEvent<{ event: MouseEvent | TouchEvent; params: OnConnectStartParams }>;
'on:connect'?: CustomEvent;
'on:connectend'?: CustomEvent;
'on:paneclick'?: CustomEvent;
From 1c2bcbef34e539d395cdf1bbdaad062dab5cf6f4 Mon Sep 17 00:00:00 2001
From: Peter
Date: Tue, 19 Sep 2023 15:23:10 +0200
Subject: [PATCH 3/5] fix(svelte) adjusted svelteflow types for connect events
---
.../src/lib/components/Handle/Handle.svelte | 17 +++++++++++------
.../src/lib/container/SvelteFlow/types.ts | 14 ++++++++++----
2 files changed, 21 insertions(+), 10 deletions(-)
diff --git a/packages/svelte/src/lib/components/Handle/Handle.svelte b/packages/svelte/src/lib/components/Handle/Handle.svelte
index ac938374..c3af20ed 100644
--- a/packages/svelte/src/lib/components/Handle/Handle.svelte
+++ b/packages/svelte/src/lib/components/Handle/Handle.svelte
@@ -70,15 +70,20 @@
updateConnection,
cancelConnection,
panBy,
- onConnect: (params) => {
- addEdge(params);
- dispatch('connect', params);
+ onConnect: (connection) => {
+ addEdge(connection);
+ dispatch('connect', { connection: connection });
},
- onConnectStart: (event, params) => {
- dispatch('connectstart', { event, params });
+ onConnectStart: (event, startParams) => {
+ dispatch('connectstart', {
+ event,
+ nodeId: startParams.nodeId,
+ handleId: startParams.handleId,
+ handleType: startParams.handleType
+ });
},
onConnectEnd: (event) => {
- dispatch('connectend', event);
+ dispatch('connectend', { event });
},
getTransform: () => $transform
});
diff --git a/packages/svelte/src/lib/container/SvelteFlow/types.ts b/packages/svelte/src/lib/container/SvelteFlow/types.ts
index db9ae308..a529bc02 100644
--- a/packages/svelte/src/lib/container/SvelteFlow/types.ts
+++ b/packages/svelte/src/lib/container/SvelteFlow/types.ts
@@ -12,7 +12,8 @@ import type {
OnMoveEnd,
CoordinateExtent,
PanOnScrollMode,
- IsValidConnection
+ IsValidConnection,
+ HandleType
} from '@xyflow/system';
import type { Edge, Node, NodeTypes, KeyDefinition, EdgeTypes } from '$lib/types';
@@ -64,9 +65,14 @@ export type SvelteFlowProps = DOMAttributes & {
'on:nodemousemove'?: CustomEvent;
'on:nodemouseleave'?: CustomEvent;
'on:edgeclick'?: CustomEvent;
- 'on:connectstart'?: CustomEvent<{ event: MouseEvent | TouchEvent; params: OnConnectStartParams }>;
- 'on:connect'?: CustomEvent;
- 'on:connectend'?: CustomEvent;
+ 'on:connectstart'?: CustomEvent<{
+ event: MouseEvent | TouchEvent;
+ nodeId?: string;
+ handleId?: string;
+ handleType?: HandleType;
+ }>;
+ 'on:connect'?: CustomEvent<{ connection: Connection }>;
+ 'on:connectend'?: CustomEvent<{ event: MouseEvent | TouchEvent }>;
'on:paneclick'?: CustomEvent;
'on:panecontextmenu'?: CustomEvent;
};
From accfc9d200c1bd68a7f542796edd2063092f7533 Mon Sep 17 00:00:00 2001
From: moklick
Date: Tue, 19 Sep 2023 15:37:08 +0200
Subject: [PATCH 4/5] chore(svelte): cleanup handle component
---
.../src/lib/components/Handle/Handle.svelte | 16 +++++-----------
1 file changed, 5 insertions(+), 11 deletions(-)
diff --git a/packages/svelte/src/lib/components/Handle/Handle.svelte b/packages/svelte/src/lib/components/Handle/Handle.svelte
index c3af20ed..d5310923 100644
--- a/packages/svelte/src/lib/components/Handle/Handle.svelte
+++ b/packages/svelte/src/lib/components/Handle/Handle.svelte
@@ -1,7 +1,7 @@
diff --git a/packages/svelte/src/lib/components/NodeWrapper/NodeWrapper.svelte b/packages/svelte/src/lib/components/NodeWrapper/NodeWrapper.svelte
index 0e697afd..17c8e4ce 100644
--- a/packages/svelte/src/lib/components/NodeWrapper/NodeWrapper.svelte
+++ b/packages/svelte/src/lib/components/NodeWrapper/NodeWrapper.svelte
@@ -69,21 +69,21 @@
};
});
- function dispatchEvent(eventName: string) {
+ function dispatchEvent(eventName: string, event?: MouseEvent | TouchEvent) {
const node = $nodes.find((n) => n.id === id);
- dispatch(eventName, node);
+ dispatch(eventName, { node, event });
}
- function onSelectNodeHandler(event: MouseEvent) {
+ function onSelectNodeHandler(event: MouseEvent | TouchEvent) {
if (selectable && (!selectNodesOnDrag || !draggable)) {
// this handler gets called within the drag start event when selectNodesOnDrag=true
addSelectedNodes([id]);
}
// @todo: support multiselection
-
- dispatchEvent('nodeclick');
+ dispatchEvent('nodeclick', event);
}
+
// @todo: add selectable state
@@ -112,9 +112,9 @@
style:transform="translate({positionOrigin?.x ?? 0}px, {positionOrigin?.y ?? 0}px)"
{style}
on:click={onSelectNodeHandler}
- on:mouseenter={() => dispatchEvent('nodemouseenter')}
- on:mouseleave={() => dispatchEvent('nodemouseleave')}
- on:mousemove={() => dispatchEvent('nodemousemove')}
+ on:mouseenter={(event) => dispatchEvent('nodemouseenter', event)}
+ on:mouseleave={(event) => dispatchEvent('nodemouseleave', event)}
+ on:mousemove={(event) => dispatchEvent('nodemousemove', event)}
>
diff --git a/packages/svelte/src/lib/container/SvelteFlow/types.ts b/packages/svelte/src/lib/container/SvelteFlow/types.ts
index a529bc02..97d5a3a9 100644
--- a/packages/svelte/src/lib/container/SvelteFlow/types.ts
+++ b/packages/svelte/src/lib/container/SvelteFlow/types.ts
@@ -3,7 +3,6 @@ import type {
Connection,
ConnectionLineType,
NodeOrigin,
- OnConnectStartParams,
Viewport,
SelectionMode,
SnapGrid,
@@ -60,11 +59,11 @@ export type SvelteFlowProps = DOMAttributes & {
onMove?: OnMove;
onMoveEnd?: OnMoveEnd;
- 'on:nodeclick'?: CustomEvent;
- 'on:nodemouseenter'?: CustomEvent;
- 'on:nodemousemove'?: CustomEvent;
- 'on:nodemouseleave'?: CustomEvent;
- 'on:edgeclick'?: CustomEvent;
+ 'on:nodeclick'?: CustomEvent<{ event: MouseEvent | TouchEvent; node: Node }>;
+ 'on:nodemouseenter'?: CustomEvent<{ event: MouseEvent; node: Node }>;
+ 'on:nodemousemove'?: CustomEvent<{ event: MouseEvent; node: Node }>;
+ 'on:nodemouseleave'?: CustomEvent<{ event: MouseEvent; node: Node }>;
+ 'on:edgeclick'?: CustomEvent<{ event: MouseEvent; edge: Edge }>;
'on:connectstart'?: CustomEvent<{
event: MouseEvent | TouchEvent;
nodeId?: string;
@@ -73,6 +72,6 @@ export type SvelteFlowProps = DOMAttributes & {
}>;
'on:connect'?: CustomEvent<{ connection: Connection }>;
'on:connectend'?: CustomEvent<{ event: MouseEvent | TouchEvent }>;
- 'on:paneclick'?: CustomEvent;
- 'on:panecontextmenu'?: CustomEvent;
+ 'on:paneclick'?: CustomEvent<{ event: MouseEvent | TouchEvent }>;
+ 'on:panecontextmenu'?: CustomEvent<{ event: MouseEvent }>;
};