UNPKG

@cnvx/nodal

Version:

A Svelte 5 library for creating interactive node diagrams with customizable connections and layouts

45 lines (44 loc) 1.25 kB
import { type Snippet } from "svelte"; import { SvelteMap } from "svelte/reactivity"; import { type Vector2 } from "./diagram-lib.js"; export interface DiagramNodeDef { id: string; x: number; y: number; width?: number; height?: number; clientOnly?: boolean; } type PathGenParams = { pathGen?: "bezier"; curvature?: number; offset?: Vector2; } | { pathGen: "smoothstep"; borderRadius?: number; center?: Vector2; }; export type DiagramEdgeParams = { snippet?: Snippet<[edge: DiagramEdgeDef, path: string, extra: any]>; snippetExtraArg?: any; sourceAnchor?: Vector2; targetAnchor?: Vector2; class?: string; style?: string; zIndex?: number; } & PathGenParams; export type DiagramEdgeDef = { source: string; target: string; } & DiagramEdgeParams; export type DiagramProps = { nodes: SvelteMap<string, DiagramNodeDef>; edges: SvelteMap<string, DiagramEdgeDef>; children: Snippet; scaleToFit?: boolean; }; declare const Diagram: import("svelte").Component<DiagramProps, { generateCurvePath: (x1: number, y1: number, x2: number, y2: number, edge: DiagramEdgeDef) => string; }, "">; type Diagram = ReturnType<typeof Diagram>; export default Diagram;