@infinit-canvas/react 0.1.7 → 0.1.10
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +1070 -33
- package/dist/react-infinite-canvas.cjs +362 -344
- package/dist/react-infinite-canvas.js +3043 -2677
- package/package.json +1 -1
- package/src/types.d.ts +81 -11
package/package.json
CHANGED
package/src/types.d.ts
CHANGED
|
@@ -40,11 +40,11 @@ export interface NodeHandle {
|
|
|
40
40
|
y?: number;
|
|
41
41
|
}
|
|
42
42
|
|
|
43
|
-
export interface Node<T = Record<string, unknown
|
|
43
|
+
export interface Node<T = Record<string, unknown>, TType extends string = string> {
|
|
44
44
|
id: string;
|
|
45
45
|
position: XYPosition;
|
|
46
46
|
data: T;
|
|
47
|
-
type?:
|
|
47
|
+
type?: TType;
|
|
48
48
|
width?: number;
|
|
49
49
|
height?: number;
|
|
50
50
|
selected?: boolean;
|
|
@@ -62,17 +62,18 @@ export interface Node<T = Record<string, unknown>> {
|
|
|
62
62
|
ariaLabel?: string;
|
|
63
63
|
className?: string;
|
|
64
64
|
style?: React.CSSProperties;
|
|
65
|
+
measured?: { width?: number; height?: number };
|
|
65
66
|
}
|
|
66
67
|
|
|
67
68
|
// ─── Edge Types ──────────────────────────────────────────────────
|
|
68
69
|
|
|
69
70
|
export type EdgeType = 'default' | 'straight' | 'step' | 'smoothstep';
|
|
70
71
|
|
|
71
|
-
export interface Edge<T = Record<string, unknown
|
|
72
|
+
export interface Edge<T = Record<string, unknown>, TType extends string = string> {
|
|
72
73
|
id: string;
|
|
73
74
|
source: string;
|
|
74
75
|
target: string;
|
|
75
|
-
type?:
|
|
76
|
+
type?: TType;
|
|
76
77
|
sourceHandle?: string | null;
|
|
77
78
|
targetHandle?: string | null;
|
|
78
79
|
data?: T;
|
|
@@ -401,6 +402,10 @@ export interface PanelProps {
|
|
|
401
402
|
|
|
402
403
|
// ─── Hook Return Types ───────────────────────────────────────────
|
|
403
404
|
|
|
405
|
+
export interface ViewportAnimationOptions {
|
|
406
|
+
duration?: number;
|
|
407
|
+
}
|
|
408
|
+
|
|
404
409
|
export interface ReactFlowInstance {
|
|
405
410
|
getNodes: () => Node[];
|
|
406
411
|
getEdges: () => Edge[];
|
|
@@ -412,15 +417,18 @@ export interface ReactFlowInstance {
|
|
|
412
417
|
addEdges: (edges: Edge | Edge[]) => void;
|
|
413
418
|
deleteElements: (params: { nodes?: Node[]; edges?: Edge[] }) => void;
|
|
414
419
|
getViewport: () => Viewport;
|
|
415
|
-
setViewport: (viewport: Partial<Viewport
|
|
420
|
+
setViewport: (viewport: Partial<Viewport>, options?: ViewportAnimationOptions) => void;
|
|
416
421
|
getZoom: () => number;
|
|
417
|
-
zoomIn: () => void;
|
|
418
|
-
zoomOut: () => void;
|
|
419
|
-
zoomTo: (zoom: number) => void;
|
|
422
|
+
zoomIn: (options?: ViewportAnimationOptions) => void;
|
|
423
|
+
zoomOut: (options?: ViewportAnimationOptions) => void;
|
|
424
|
+
zoomTo: (zoom: number, options?: ViewportAnimationOptions) => void;
|
|
420
425
|
fitView: (options?: FitViewOptions) => void;
|
|
421
|
-
|
|
426
|
+
fitBounds: (bounds: Rect, options?: FitViewOptions) => void;
|
|
427
|
+
setCenter: (x: number, y: number, options?: { zoom?: number; duration?: number }) => void;
|
|
422
428
|
screenToFlowPosition: (position: XYPosition) => XYPosition;
|
|
423
429
|
flowToScreenPosition: (position: XYPosition) => XYPosition;
|
|
430
|
+
updateNodeData: (nodeId: string, dataUpdate: Partial<Node['data']> | ((node: Node) => Partial<Node['data']>)) => void;
|
|
431
|
+
toObject: () => { nodes: Node[]; edges: Edge[]; viewport: Viewport };
|
|
424
432
|
}
|
|
425
433
|
|
|
426
434
|
export interface UseOnViewportChangeOptions {
|
|
@@ -434,7 +442,7 @@ export interface UseOnSelectionChangeOptions {
|
|
|
434
442
|
}
|
|
435
443
|
|
|
436
444
|
export interface UseHandleConnectionsOptions {
|
|
437
|
-
nodeId
|
|
445
|
+
nodeId?: string;
|
|
438
446
|
type: HandleType;
|
|
439
447
|
handleId?: string;
|
|
440
448
|
}
|
|
@@ -443,7 +451,7 @@ export interface UseHandleConnectionsOptions {
|
|
|
443
451
|
|
|
444
452
|
// Core
|
|
445
453
|
export declare function InfiniteCanvas(props: InfiniteCanvasProps): JSX.Element;
|
|
446
|
-
export declare function InfiniteCanvasProvider(props: { children: React.ReactNode }): JSX.Element;
|
|
454
|
+
export declare function InfiniteCanvasProvider(props: { children: React.ReactNode; initialNodes?: Node[]; initialEdges?: Edge[] }): JSX.Element;
|
|
447
455
|
export declare function useInfiniteCanvas(options?: Partial<InfiniteCanvasProps>): {
|
|
448
456
|
wrapRef: React.RefObject<HTMLDivElement>;
|
|
449
457
|
canvasRef: React.RefObject<HTMLCanvasElement>;
|
|
@@ -482,6 +490,30 @@ export declare function useKeyPress(keyOrKeys: string | string[]): boolean;
|
|
|
482
490
|
export declare function useUpdateNodeInternals(): (nodeId: string | string[]) => void;
|
|
483
491
|
export declare function useNodesInitialized(options?: { includeHiddenNodes?: boolean }): boolean;
|
|
484
492
|
export declare function useInternalNode(nodeId: string): Node | undefined;
|
|
493
|
+
export declare function useStore<T>(selector: (state: InfiniteCanvasState) => T, equalityFn?: (a: T, b: T) => boolean): T;
|
|
494
|
+
export declare function useStoreApi(): { getState: () => InfiniteCanvasState; setState: (partial: Partial<InfiniteCanvasState>) => void; subscribe: (listener: (state: InfiniteCanvasState) => void) => () => void };
|
|
495
|
+
|
|
496
|
+
// Undo/Redo
|
|
497
|
+
export interface UseUndoRedoOptions {
|
|
498
|
+
maxHistorySize?: number;
|
|
499
|
+
}
|
|
500
|
+
export interface UseUndoRedoReturn {
|
|
501
|
+
undo: () => void;
|
|
502
|
+
redo: () => void;
|
|
503
|
+
takeSnapshot: () => void;
|
|
504
|
+
canUndo: boolean;
|
|
505
|
+
canRedo: boolean;
|
|
506
|
+
}
|
|
507
|
+
export declare function useUndoRedo(options?: UseUndoRedoOptions): UseUndoRedoReturn;
|
|
508
|
+
|
|
509
|
+
// Change middleware
|
|
510
|
+
export declare function useOnNodesChangeMiddleware<NodeType extends Node = Node>(
|
|
511
|
+
middleware: (changes: NodeChange<NodeType>[]) => NodeChange<NodeType>[] | false | void
|
|
512
|
+
): (originalOnNodesChange: OnNodesChange<NodeType>) => OnNodesChange<NodeType>;
|
|
513
|
+
|
|
514
|
+
export declare function useOnEdgesChangeMiddleware<EdgeType extends Edge = Edge>(
|
|
515
|
+
middleware: (changes: EdgeChange<EdgeType>[]) => EdgeChange<EdgeType>[] | false | void
|
|
516
|
+
): (originalOnEdgesChange: OnEdgesChange<EdgeType>) => OnEdgesChange<EdgeType>;
|
|
485
517
|
|
|
486
518
|
// Utilities
|
|
487
519
|
export declare function applyNodeChanges<NodeType extends Node = Node>(changes: NodeChange<NodeType>[], nodes: NodeType[]): NodeType[];
|
|
@@ -504,6 +536,14 @@ export declare function Controls(props: ControlsProps): JSX.Element;
|
|
|
504
536
|
export declare function MiniMap(props: MiniMapProps): JSX.Element;
|
|
505
537
|
export declare function Background(props: BackgroundProps): JSX.Element;
|
|
506
538
|
export declare function Panel(props: PanelProps): JSX.Element;
|
|
539
|
+
export declare function Handle(props: HandleProps): JSX.Element;
|
|
540
|
+
export declare function NodeResizer(props: NodeResizerProps): JSX.Element;
|
|
541
|
+
export declare function NodeToolbar(props: NodeToolbarProps): JSX.Element;
|
|
542
|
+
export declare function EdgeToolbar(props: { children?: React.ReactNode; style?: React.CSSProperties; className?: string }): JSX.Element;
|
|
543
|
+
export declare function EdgeLabelRenderer(props: { children?: React.ReactNode }): JSX.Element;
|
|
544
|
+
export declare function ViewportPortal(props: { children?: React.ReactNode }): JSX.Element;
|
|
545
|
+
export declare function ConnectionLine(props: ConnectionLineComponentProps): JSX.Element;
|
|
546
|
+
export declare function SelectionBox(props: { selectionKeyCode?: string; selectionMode?: SelectionMode }): JSX.Element;
|
|
507
547
|
|
|
508
548
|
// ─── React Flow Compatibility Types ─────────────────────────────
|
|
509
549
|
|
|
@@ -575,6 +615,33 @@ export interface HandleProps {
|
|
|
575
615
|
children?: React.ReactNode;
|
|
576
616
|
}
|
|
577
617
|
|
|
618
|
+
export interface NodeResizerProps {
|
|
619
|
+
minWidth?: number;
|
|
620
|
+
minHeight?: number;
|
|
621
|
+
maxWidth?: number;
|
|
622
|
+
maxHeight?: number;
|
|
623
|
+
keepAspectRatio?: boolean;
|
|
624
|
+
shouldResize?: (event: any) => boolean;
|
|
625
|
+
onResizeStart?: (event: any, params: { width: number; height: number }) => void;
|
|
626
|
+
onResize?: (event: any, params: { width: number; height: number }) => void;
|
|
627
|
+
onResizeEnd?: (event: any, params: { width: number; height: number }) => void;
|
|
628
|
+
color?: string;
|
|
629
|
+
handleStyle?: React.CSSProperties;
|
|
630
|
+
lineStyle?: React.CSSProperties;
|
|
631
|
+
isVisible?: boolean;
|
|
632
|
+
}
|
|
633
|
+
|
|
634
|
+
export interface NodeToolbarProps {
|
|
635
|
+
nodeId?: string | string[];
|
|
636
|
+
isVisible?: boolean;
|
|
637
|
+
position?: Position;
|
|
638
|
+
offset?: number;
|
|
639
|
+
align?: 'center' | 'start' | 'end';
|
|
640
|
+
style?: React.CSSProperties;
|
|
641
|
+
className?: string;
|
|
642
|
+
children?: React.ReactNode;
|
|
643
|
+
}
|
|
644
|
+
|
|
578
645
|
export interface ConnectionLineComponentProps {
|
|
579
646
|
fromX: number;
|
|
580
647
|
fromY: number;
|
|
@@ -609,6 +676,9 @@ export type InfiniteCanvasState = {
|
|
|
609
676
|
domNode: HTMLDivElement | null;
|
|
610
677
|
width: number;
|
|
611
678
|
height: number;
|
|
679
|
+
minZoom: number;
|
|
680
|
+
maxZoom: number;
|
|
681
|
+
[key: string]: unknown;
|
|
612
682
|
};
|
|
613
683
|
|
|
614
684
|
export type NodeOrigin = [number, number];
|