fix examples
This commit is contained in:
@@ -1,13 +1,18 @@
|
|||||||
<script lang="ts">
|
<script lang="ts">
|
||||||
import { NodeToolbar, type NodeProps, Handle, Position } from '@xyflow/svelte';
|
import {
|
||||||
|
NodeToolbar,
|
||||||
|
type NodeProps,
|
||||||
|
type Node,
|
||||||
|
Handle,
|
||||||
|
Position,
|
||||||
|
type Align
|
||||||
|
} from '@xyflow/svelte';
|
||||||
|
|
||||||
type $$Props = NodeProps;
|
let {
|
||||||
|
data
|
||||||
interface Props {
|
}: NodeProps<
|
||||||
data: $$Props['data'];
|
Node<{ label: string; toolbarPosition: Position; toolbarAlign: Align; toolbarVisible: boolean }>
|
||||||
}
|
> = $props();
|
||||||
|
|
||||||
let { data }: Props = $props();
|
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
<NodeToolbar
|
<NodeToolbar
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
<script lang="ts">
|
<script lang="ts">
|
||||||
import type { NodeProps } from '@xyflow/svelte';
|
import type { NodeProps } from '@xyflow/svelte';
|
||||||
|
|
||||||
type $$Props = NodeProps;
|
let {}: NodeProps = $props();
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
<div class="container">
|
<div class="container">
|
||||||
|
|||||||
@@ -9,6 +9,7 @@
|
|||||||
};
|
};
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
|
<!-- svelte-ignore a11y_no_static_element_interactions -->
|
||||||
<aside>
|
<aside>
|
||||||
<div class="label">You can drag these nodes to the pane on the left.</div>
|
<div class="label">You can drag these nodes to the pane on the left.</div>
|
||||||
<div
|
<div
|
||||||
|
|||||||
@@ -150,7 +150,7 @@
|
|||||||
{edgeTypes}
|
{edgeTypes}
|
||||||
fitView
|
fitView
|
||||||
nodeDragThreshold={2}
|
nodeDragThreshold={2}
|
||||||
onedgecreate={(connection) => {
|
onbeforeconnect={(connection) => {
|
||||||
console.log('on edge create', connection);
|
console.log('on edge create', connection);
|
||||||
|
|
||||||
return {
|
return {
|
||||||
|
|||||||
@@ -16,9 +16,9 @@
|
|||||||
|
|
||||||
const panOnDrag = [1, 2];
|
const panOnDrag = [1, 2];
|
||||||
|
|
||||||
const onMoveStart = (e: any) => console.log('move start', e);
|
const onmovestart = (e: any) => console.log('move start', e);
|
||||||
const onMove = (e: any) => console.log('move', e);
|
const onmove = (e: any) => console.log('move', e);
|
||||||
const onMoveEnd = (e: any) => console.log('move end', e);
|
const onmoveend = (e: any) => console.log('move end', e);
|
||||||
|
|
||||||
let nodes = $state.raw([
|
let nodes = $state.raw([
|
||||||
{
|
{
|
||||||
@@ -47,9 +47,9 @@
|
|||||||
selectionOnDrag
|
selectionOnDrag
|
||||||
panOnScroll
|
panOnScroll
|
||||||
{panOnDrag}
|
{panOnDrag}
|
||||||
{onMoveStart}
|
{onmovestart}
|
||||||
{onMove}
|
{onmove}
|
||||||
{onMoveEnd}
|
{onmoveend}
|
||||||
>
|
>
|
||||||
<Controls />
|
<Controls />
|
||||||
<Background variant={BackgroundVariant.Dots} />
|
<Background variant={BackgroundVariant.Dots} />
|
||||||
|
|||||||
@@ -29,14 +29,14 @@
|
|||||||
{ id: 'e1-3', source: '1', target: '3' }
|
{ id: 'e1-3', source: '1', target: '3' }
|
||||||
]);
|
]);
|
||||||
|
|
||||||
const onNodeDragStart = (_: MouseEvent, node: Node) => console.log('drag start', node);
|
const onnodedragstart = (_: MouseEvent, node: Node) => console.log('drag start', node);
|
||||||
const onNodeDragStop = (_: MouseEvent, node: Node) => console.log('drag stop', node);
|
const onnodedragstop = (_: MouseEvent, node: Node) => console.log('drag stop', node);
|
||||||
const onNodeClick = (_: MouseEvent, node: Node) => console.log('click', node);
|
const onnodeclick = (_: MouseEvent, node: Node) => console.log('click', node);
|
||||||
const onEdgeClick = (_: MouseEvent, edge: Edge) => console.log('click', edge);
|
const onedgeclick = (_: MouseEvent, edge: Edge) => console.log('click', edge);
|
||||||
const onPaneClick = (event: MouseEvent) => console.log('onPaneClick', event);
|
const onpaneclick = (event: MouseEvent) => console.log('onPaneClick', event);
|
||||||
const onPaneScroll = (event?: WheelEvent) => console.log('onPaneScroll', event);
|
const onpanescroll = (event?: WheelEvent) => console.log('onPaneScroll', event);
|
||||||
const onPaneContextMenu = (event: MouseEvent) => console.log('onPaneContextMenu', event);
|
const onpanecontextmenu = (event: MouseEvent) => console.log('onPaneContextMenu', event);
|
||||||
const onMoveEnd: OnMoveEnd = (_, viewport) => console.log('onMoveEnd', viewport);
|
const onmoveend: OnMoveEnd = (_, viewport) => console.log('onMoveEnd', viewport);
|
||||||
|
|
||||||
let isSelectable = $state(false);
|
let isSelectable = $state(false);
|
||||||
let isDraggable = $state(false);
|
let isDraggable = $state(false);
|
||||||
@@ -64,7 +64,7 @@
|
|||||||
{panOnScrollMode}
|
{panOnScrollMode}
|
||||||
{zoomOnDoubleClick}
|
{zoomOnDoubleClick}
|
||||||
{panOnDrag}
|
{panOnDrag}
|
||||||
{onMoveEnd}
|
{onmoveend}
|
||||||
fitView
|
fitView
|
||||||
>
|
>
|
||||||
<MiniMap />
|
<MiniMap />
|
||||||
|
|||||||
@@ -10,21 +10,25 @@
|
|||||||
let edges = $state.raw<Edge[]>(initialEdges);
|
let edges = $state.raw<Edge[]>(initialEdges);
|
||||||
|
|
||||||
const { getIntersectingNodes } = $derived(useSvelteFlow());
|
const { getIntersectingNodes } = $derived(useSvelteFlow());
|
||||||
|
|
||||||
const onNodeDrag = ({ targetNode }) => {
|
|
||||||
if (targetNode) {
|
|
||||||
const intersections = getIntersectingNodes(targetNode).map((n) => n.id);
|
|
||||||
|
|
||||||
nodes = nodes.map((node) => ({
|
|
||||||
...node,
|
|
||||||
class: intersections.includes(node.id) ? 'highlight' : ''
|
|
||||||
}));
|
|
||||||
}
|
|
||||||
};
|
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
<div style="height:100vh;">
|
<div style="height:100vh;">
|
||||||
<SvelteFlow bind:nodes bind:edges fitView class="intersection-flow" onnodedrag={onNodeDrag}>
|
<SvelteFlow
|
||||||
|
bind:nodes
|
||||||
|
bind:edges
|
||||||
|
fitView
|
||||||
|
class="intersection-flow"
|
||||||
|
onnodedrag={({ targetNode }) => {
|
||||||
|
if (targetNode) {
|
||||||
|
const intersections = getIntersectingNodes(targetNode).map((n) => n.id);
|
||||||
|
|
||||||
|
nodes = nodes.map((node) => ({
|
||||||
|
...node,
|
||||||
|
class: intersections.includes(node.id) ? 'highlight' : ''
|
||||||
|
}));
|
||||||
|
}
|
||||||
|
}}
|
||||||
|
>
|
||||||
<Background />
|
<Background />
|
||||||
<Controls />
|
<Controls />
|
||||||
</SvelteFlow>
|
</SvelteFlow>
|
||||||
|
|||||||
@@ -2,7 +2,7 @@
|
|||||||
import { Handle, NodeResizer, Position, type NodeProps } from '@xyflow/svelte';
|
import { Handle, NodeResizer, Position, type NodeProps } from '@xyflow/svelte';
|
||||||
import type { ResizeNode } from './types';
|
import type { ResizeNode } from './types';
|
||||||
|
|
||||||
let { data, selected = undefined }: NodeProps<ResizeNode> = $props();
|
let { data, selected }: NodeProps<ResizeNode> = $props();
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
<NodeResizer
|
<NodeResizer
|
||||||
|
|||||||
@@ -5,7 +5,7 @@
|
|||||||
type UppercaseNodeType = Node<{ text: string }, 'uppercase'>;
|
type UppercaseNodeType = Node<{ text: string }, 'uppercase'>;
|
||||||
type ResultNodeType = Node<{}, 'result'>;
|
type ResultNodeType = Node<{}, 'result'>;
|
||||||
|
|
||||||
export function isTextNode(node: any): node is TextNodeType | UppercaseNode {
|
export function isTextNode(node: any): node is TextNodeType | UppercaseNodeType {
|
||||||
return !node || !node.type ? false : node.type === 'text' || node.type === 'uppercase';
|
return !node || !node.type ? false : node.type === 'text' || node.type === 'uppercase';
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -4,7 +4,8 @@
|
|||||||
Position,
|
Position,
|
||||||
useNodeConnections,
|
useNodeConnections,
|
||||||
useNodesData,
|
useNodesData,
|
||||||
type NodeProps
|
type NodeProps,
|
||||||
|
type Node
|
||||||
} from '@xyflow/svelte';
|
} from '@xyflow/svelte';
|
||||||
import { isTextNode, type MyNode } from './+page.svelte';
|
import { isTextNode, type MyNode } from './+page.svelte';
|
||||||
|
|
||||||
|
|||||||
@@ -1,5 +1,12 @@
|
|||||||
<script lang="ts">
|
<script lang="ts">
|
||||||
import { Background, Controls, MiniMap, Panel, SvelteFlow } from '@xyflow/svelte';
|
import {
|
||||||
|
Background,
|
||||||
|
Controls,
|
||||||
|
MiniMap,
|
||||||
|
Panel,
|
||||||
|
SvelteFlow,
|
||||||
|
type SvelteFlowProps
|
||||||
|
} from '@xyflow/svelte';
|
||||||
|
|
||||||
import '@xyflow/svelte/dist/style.css';
|
import '@xyflow/svelte/dist/style.css';
|
||||||
|
|
||||||
@@ -9,10 +16,10 @@
|
|||||||
let nodes = $state.raw(flowConfig.flowProps?.nodes ?? []);
|
let nodes = $state.raw(flowConfig.flowProps?.nodes ?? []);
|
||||||
let edges = $state.raw(flowConfig.flowProps?.edges ?? []);
|
let edges = $state.raw(flowConfig.flowProps?.edges ?? []);
|
||||||
|
|
||||||
const flowProps = { ...flowConfig.flowProps };
|
const flowProps: SvelteFlowProps = { ...flowConfig.flowProps };
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
<SvelteFlow bind:nodes bind:edges {...flowProps}>
|
<SvelteFlow {...flowProps} bind:nodes bind:edges>
|
||||||
{#if flowConfig.panelProps}
|
{#if flowConfig.panelProps}
|
||||||
<Panel {...flowConfig.panelProps} />
|
<Panel {...flowConfig.panelProps} />
|
||||||
{/if}
|
{/if}
|
||||||
|
|||||||
@@ -1,10 +0,0 @@
|
|||||||
<script lang="ts">
|
|
||||||
import type { Snippet } from 'svelte';
|
|
||||||
import { portal } from '$lib/actions/portal';
|
|
||||||
|
|
||||||
let { children }: { children?: Snippet } = $props();
|
|
||||||
</script>
|
|
||||||
|
|
||||||
<div use:portal={'edgelabel'}>
|
|
||||||
{@render children?.()}
|
|
||||||
</div>
|
|
||||||
@@ -1 +0,0 @@
|
|||||||
export { default as EdgeLabelRenderer } from './EdgeLabelRenderer.svelte';
|
|
||||||
@@ -36,7 +36,7 @@
|
|||||||
onmove,
|
onmove,
|
||||||
onmovestart,
|
onmovestart,
|
||||||
onmoveend,
|
onmoveend,
|
||||||
onerror,
|
onflowerror,
|
||||||
ondelete,
|
ondelete,
|
||||||
onbeforedelete,
|
onbeforedelete,
|
||||||
onbeforeconnect,
|
onbeforeconnect,
|
||||||
@@ -49,8 +49,8 @@
|
|||||||
onreconnectend,
|
onreconnectend,
|
||||||
onclickconnectstart,
|
onclickconnectstart,
|
||||||
onclickconnectend,
|
onclickconnectend,
|
||||||
clickConnect,
|
|
||||||
oninit,
|
oninit,
|
||||||
|
clickConnect,
|
||||||
fitView,
|
fitView,
|
||||||
fitViewOptions,
|
fitViewOptions,
|
||||||
nodeOrigin,
|
nodeOrigin,
|
||||||
|
|||||||
@@ -379,7 +379,7 @@ export type SvelteFlowProps = NodeEvents &
|
|||||||
* Instead of exploding your application, we log a message to the console and then call this event handler.
|
* Instead of exploding your application, we log a message to the console and then call this event handler.
|
||||||
* You might use it for additional logging or to show a message to the user.
|
* You might use it for additional logging or to show a message to the user.
|
||||||
*/
|
*/
|
||||||
onerror?: OnError;
|
onflowerror?: OnError;
|
||||||
/** This handler gets called when the user deletes nodes or edges.
|
/** This handler gets called when the user deletes nodes or edges.
|
||||||
* @example
|
* @example
|
||||||
* onDelete={({nodes, edges}) => {
|
* onDelete={({nodes, edges}) => {
|
||||||
|
|||||||
@@ -5,7 +5,6 @@ export * from '$lib/container/SvelteFlow/types';
|
|||||||
// components
|
// components
|
||||||
export * from '$lib/container/Panel';
|
export * from '$lib/container/Panel';
|
||||||
export * from '$lib/components/SvelteFlowProvider';
|
export * from '$lib/components/SvelteFlowProvider';
|
||||||
export * from '$lib/components/EdgeLabelRenderer';
|
|
||||||
export * from '$lib/components/ViewportPortal';
|
export * from '$lib/components/ViewportPortal';
|
||||||
export {
|
export {
|
||||||
BezierEdge,
|
BezierEdge,
|
||||||
|
|||||||
@@ -285,7 +285,7 @@ export const getInitialStore = (signals: StoreSignals) => {
|
|||||||
});
|
});
|
||||||
});
|
});
|
||||||
onlyRenderVisibleElements: boolean = $derived(signals.props.onlyRenderVisibleElements ?? false);
|
onlyRenderVisibleElements: boolean = $derived(signals.props.onlyRenderVisibleElements ?? false);
|
||||||
onerror: OnError = $derived(signals.props.onerror ?? devWarn);
|
onerror: OnError = $derived(signals.props.onflowerror ?? devWarn);
|
||||||
|
|
||||||
ondelete?: OnDelete = $derived(signals.props.ondelete);
|
ondelete?: OnDelete = $derived(signals.props.ondelete);
|
||||||
onbeforedelete?: OnBeforeDelete = $derived(signals.props.onbeforedelete);
|
onbeforedelete?: OnBeforeDelete = $derived(signals.props.onbeforedelete);
|
||||||
|
|||||||
Reference in New Issue
Block a user