UNPKG

@xyflow/svelte

Version:

Svelte Flow - A highly customizable Svelte library for building node-based editors, workflow systems, diagrams and more.

50 lines (49 loc) 3.7 kB
import type { InternalNodeUpdate, XYPosition, ViewportHelperFunctionOptions, Connection, UpdateNodePositions, CoordinateExtent, UpdateConnection, Viewport, SetCenter } from '@xyflow/system'; import type { getInitialStore } from './initial-store.svelte'; import type { Node, Edge, NodeTypes, EdgeTypes, FitViewOptions } from '../types'; import type { SvelteFlowProps } from '../container/SvelteFlow'; export type SvelteFlowStoreActions<NodeType extends Node = Node, EdgeType extends Edge = Edge> = { setNodeTypes: (nodeTypes: NodeTypes) => void; setEdgeTypes: (edgeTypes: EdgeTypes) => void; addEdge: (edge: EdgeType | Connection) => void; zoomIn: (options?: ViewportHelperFunctionOptions) => Promise<boolean>; zoomOut: (options?: ViewportHelperFunctionOptions) => Promise<boolean>; setMinZoom: (minZoom: number) => void; setMaxZoom: (maxZoom: number) => void; setTranslateExtent: (extent: CoordinateExtent) => void; fitView: (options?: FitViewOptions) => Promise<boolean>; setCenter: SetCenter; updateNodePositions: UpdateNodePositions; updateNodeInternals: (updates: Map<string, InternalNodeUpdate>) => void; unselectNodesAndEdges: (params?: { nodes?: NodeType[]; edges?: EdgeType[]; }) => void; addSelectedNodes: (ids: string[]) => void; addSelectedEdges: (ids: string[]) => void; handleNodeSelection: (id: string, unselect?: boolean, nodeRef?: HTMLDivElement | null) => void; handleEdgeSelection: (id: string) => void; moveSelectedNodes: (direction: XYPosition, factor: number) => void; panBy: (delta: XYPosition) => Promise<boolean>; updateConnection: UpdateConnection; cancelConnection: () => void; reset(): void; }; export type SvelteFlowRestProps<NodeType extends Node = Node, EdgeType extends Edge = Edge> = Omit<SvelteFlowProps<NodeType, EdgeType>, 'width' | 'height' | 'class' | 'proOptions' | 'selectionKey' | 'deleteKey' | 'panActivationKey' | 'multiSelectionKey' | 'zoomActivationKey' | 'paneClickDistance' | 'nodeClickDistance' | 'onMoveStart' | 'onMoveEnd' | 'onMove' | 'onnodeclick' | 'onnodecontextmenu' | 'onnodedrag' | 'onnodedragstart' | 'onnodedragstop' | 'onnodepointerenter' | 'onnodepointermove' | 'onnodepointerleave' | 'onselectionclick' | 'onselectioncontextmenu' | 'onedgeclick' | 'onedgecontextmenu' | 'onedgepointerenter' | 'onedgepointerleave' | 'onpaneclick' | 'onpanecontextmenu' | 'panOnScrollMode' | 'preventScrolling' | 'zoomOnScroll' | 'zoomOnDoubleClick' | 'zoomOnPinch' | 'panOnScroll' | 'panOnDrag' | 'selectionOnDrag' | 'connectionLineComponent' | 'connectionLineStyle' | 'connectionLineContainerStyle' | 'connectionLineType' | 'attributionPosition' | 'children' | 'nodes' | 'edges' | 'viewport'>; export type StoreSignals<NodeType extends Node = Node, EdgeType extends Edge = Edge> = { props: SvelteFlowRestProps<NodeType, EdgeType>; width?: number; height?: number; nodes: NodeType[]; edges: EdgeType[]; viewport?: Viewport; }; export type SvelteFlowStoreState<NodeType extends Node = Node, EdgeType extends Edge = Edge> = ReturnType<typeof getInitialStore<NodeType, EdgeType>>; export type SvelteFlowStore<NodeType extends Node = Node, EdgeType extends Edge = Edge> = SvelteFlowStoreState<NodeType, EdgeType> & SvelteFlowStoreActions<NodeType, EdgeType>; export type StoreContext<NodeType extends Node = Node, EdgeType extends Edge = Edge> = { getStore: () => SvelteFlowStore<NodeType, EdgeType>; provider: boolean; }; export type ProviderContext<NodeType extends Node = Node, EdgeType extends Edge = Edge> = StoreContext<NodeType, EdgeType> & { setStore: (store: SvelteFlowStore<NodeType, EdgeType>) => void; };