diff --git a/packages/svelte/src/lib/components/Handle/Handle.svelte b/packages/svelte/src/lib/components/Handle/Handle.svelte index 84e50bce..ff1ca8e4 100644 --- a/packages/svelte/src/lib/components/Handle/Handle.svelte +++ b/packages/svelte/src/lib/components/Handle/Handle.svelte @@ -5,6 +5,7 @@ import { useStore } from '$lib/store'; import type { HandleComponentProps } from '$lib/types'; + import type { Writable } from 'svelte/store'; type $$Props = HandleComponentProps; @@ -12,16 +13,17 @@ export let type: $$Props['type'] = 'source'; export let position: $$Props['position'] = Position.Top; export let style: $$Props['style'] = undefined; - export let isConnectable: $$Props['isConnectable'] = true; - export let isConnectableStart: $$Props['isConnectableStart'] = true; - export let isConnectableEnd: $$Props['isConnectableEnd'] = true; + export let isConnectable: $$Props['isConnectable'] = undefined; + // export let isConnectableStart: $$Props['isConnectableStart'] = undefined; + // export let isConnectableEnd: $$Props['isConnectableEnd'] = undefined; let className: $$Props['class'] = undefined; export { className as class }; const isTarget = type === 'target'; const nodeId = getContext('svelteflow__node_id'); - // const connectable = getContext('svelteflow__node_connectable'); + const connectable = getContext>('svelteflow__node_connectable'); + $: handleConnectable = isConnectable !== undefined ? isConnectable : $connectable; const handleId = id || null; const dispatch = createEventDispatcher(); @@ -73,6 +75,8 @@ }); } } + + // @todo implement connectablestart, connectableend
> = $nodeTypes[type!] || DefaultNode; const selectNodesOnDrag = false; const dispatch = createEventDispatcher(); + const connectableStore = writable(connectable); + + $: { + connectableStore.set(!!connectable); + } setContext('svelteflow__node_id', id); - setContext('svelteflow__node_connectable', connectable); + setContext('svelteflow__node_connectable', connectableStore); onMount(() => { resizeObserver?.observe(nodeRef); @@ -75,7 +81,6 @@ dispatchEvent('nodeclick'); } - // @todo: add selectable state