diff --git a/packages/svelte/src/lib/components/NodeWrapper/types.ts b/packages/svelte/src/lib/components/NodeWrapper/types.ts
index 0f746a47..8c547d23 100644
--- a/packages/svelte/src/lib/components/NodeWrapper/types.ts
+++ b/packages/svelte/src/lib/components/NodeWrapper/types.ts
@@ -38,5 +38,5 @@ export type NodeWrapperProps = Pick<
zIndex: number;
node: InternalNode;
initialized: boolean;
- nodeClickDistance: number;
+ nodeClickDistance?: number;
};
diff --git a/packages/svelte/src/lib/container/NodeRenderer/NodeRenderer.svelte b/packages/svelte/src/lib/container/NodeRenderer/NodeRenderer.svelte
index b54e15cb..a6cda57e 100644
--- a/packages/svelte/src/lib/container/NodeRenderer/NodeRenderer.svelte
+++ b/packages/svelte/src/lib/container/NodeRenderer/NodeRenderer.svelte
@@ -2,13 +2,21 @@
import { onDestroy } from 'svelte';
import { nodeHasDimensions } from '@xyflow/system';
+ import type { NodeEvents } from '$lib/types/events';
import { NodeWrapper } from '$lib/components/NodeWrapper';
import { useStore } from '$lib/store';
- import type { NodeRendererProps } from './types';
- type $$Props = NodeRendererProps;
-
- export let nodeClickDistance: $$Props['nodeClickDistance'] = 0;
+ let {
+ nodeClickDistance,
+ onnodeclick,
+ onnodecontextmenu,
+ onnodemouseenter,
+ onnodemousemove,
+ onnodemouseleave,
+ onnodedrag,
+ onnodedragstart,
+ onnodedragstop
+ }: { nodeClickDistance?: number } & NodeEvents = $props();
const {
visibleNodes,
@@ -82,14 +90,14 @@
parentId={node.parentId}
{resizeObserver}
{nodeClickDistance}
- on:nodeclick
- on:nodemouseenter
- on:nodemousemove
- on:nodemouseleave
- on:nodedrag
- on:nodedragstart
- on:nodedragstop
- on:nodecontextmenu
+ {onnodeclick}
+ {onnodemouseenter}
+ {onnodemousemove}
+ {onnodemouseleave}
+ {onnodedrag}
+ {onnodedragstart}
+ {onnodedragstop}
+ {onnodecontextmenu}
/>
{/each}
diff --git a/packages/svelte/src/lib/container/NodeRenderer/types.ts b/packages/svelte/src/lib/container/NodeRenderer/types.ts
deleted file mode 100644
index 93c78afe..00000000
--- a/packages/svelte/src/lib/container/NodeRenderer/types.ts
+++ /dev/null
@@ -1,3 +0,0 @@
-export type NodeRendererProps = {
- nodeClickDistance?: number;
-};
diff --git a/packages/svelte/src/lib/plugins/NodeToolbar/NodeToolbar.svelte b/packages/svelte/src/lib/plugins/NodeToolbar/NodeToolbar.svelte
index 58d73db5..0e28e583 100644
--- a/packages/svelte/src/lib/plugins/NodeToolbar/NodeToolbar.svelte
+++ b/packages/svelte/src/lib/plugins/NodeToolbar/NodeToolbar.svelte
@@ -1,38 +1,32 @@
{#if $domNode && isActive && toolbarNodes}
@@ -75,6 +71,6 @@
style:transform
style:z-index={zIndex}
>
-
+ {@render children?.()}
{/if}
diff --git a/packages/svelte/src/lib/plugins/NodeToolbar/types.ts b/packages/svelte/src/lib/plugins/NodeToolbar/types.ts
index aec506a3..0f192d4b 100644
--- a/packages/svelte/src/lib/plugins/NodeToolbar/types.ts
+++ b/packages/svelte/src/lib/plugins/NodeToolbar/types.ts
@@ -1,4 +1,5 @@
import type { Position, Align } from '@xyflow/system';
+import type { Snippet } from 'svelte';
export type NodeToolbarProps = {
/** The id of the node, or array of ids the toolbar should be displayed at */
@@ -16,4 +17,5 @@ export type NodeToolbarProps = {
offset?: number;
/** If true, node toolbar is visible even if node is not selected */
isVisible?: boolean;
+ children?: Snippet;
};