@jeevandev/flow-canvas 0.0.4 → 0.0.5

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.
Files changed (2) hide show
  1. package/dist/index.d.ts +214 -1
  2. package/package.json +2 -2
package/dist/index.d.ts CHANGED
@@ -1 +1,214 @@
1
- export {}
1
+ import { default as default_2 } from 'react';
2
+ import { JSX } from 'react/jsx-runtime';
3
+ import { ReactNode } from 'react';
4
+ import { StoreApi } from 'zustand';
5
+ import { WritableDraft } from 'immer';
6
+
7
+ export declare const Canvas: ({ children, grid, background, className, style, canvasStyle }: CanvasProps) => JSX.Element;
8
+
9
+ declare interface CanvasProps {
10
+ children?: ReactNode;
11
+ grid?: ReactNode;
12
+ background?: ReactNode;
13
+ className?: string;
14
+ style?: React.CSSProperties;
15
+ canvasStyle?: React.CSSProperties;
16
+ }
17
+
18
+ export declare const DefaultNode: ({ data, ...props }: {
19
+ data: any;
20
+ } & React.HTMLAttributes<HTMLDivElement>) => JSX.Element;
21
+
22
+ export declare interface Edge {
23
+ id: string;
24
+ source: string;
25
+ target: string;
26
+ sourceHandle?: string;
27
+ targetHandle?: string;
28
+ type?: string;
29
+ data?: Record<string, any>;
30
+ style?: React.CSSProperties;
31
+ animated?: boolean;
32
+ }
33
+
34
+ export declare const Editor: ({ children, initialNodes, initialEdges, nodes, config, className, style, onChange }: EditorProps & {
35
+ nodes?: EditorNode[];
36
+ }) => JSX.Element;
37
+
38
+ export declare interface EditorConfig {
39
+ width?: number;
40
+ height?: number;
41
+ showGrid?: boolean;
42
+ gridSize?: number;
43
+ gridColor?: string;
44
+ snapGuide?: boolean;
45
+ snapping?: boolean;
46
+ pan?: boolean;
47
+ zoom?: boolean;
48
+ isLimited?: boolean;
49
+ minZoom?: number;
50
+ maxZoom?: number;
51
+ viewOnly?: boolean;
52
+ connectionMode?: 'loose' | 'strict';
53
+ snapToHandle?: boolean;
54
+ rotation?: boolean;
55
+ rotationSnap?: number;
56
+ rotationSpeed?: number;
57
+ }
58
+
59
+ export declare interface EditorNode {
60
+ id: string;
61
+ x: number;
62
+ y: number;
63
+ width: number;
64
+ height: number;
65
+ rotation?: number;
66
+ draggable?: boolean;
67
+ resizable?: boolean;
68
+ rotatable?: boolean;
69
+ type?: string;
70
+ data?: Record<string, any>;
71
+ handles?: Record<string, {
72
+ id: string;
73
+ type: 'source' | 'target';
74
+ position: 'top' | 'right' | 'bottom' | 'left';
75
+ x: number;
76
+ y: number;
77
+ width: number;
78
+ height: number;
79
+ }>;
80
+ className?: string;
81
+ style?: React.CSSProperties;
82
+ customCss?: string;
83
+ [key: string]: any;
84
+ }
85
+
86
+ export declare interface EditorProps {
87
+ children?: ReactNode;
88
+ initialNodes?: EditorNode[];
89
+ initialEdges?: Edge[];
90
+ config?: EditorConfig;
91
+ className?: string;
92
+ style?: React.CSSProperties;
93
+ onChange?: (state: EditorState) => void;
94
+ }
95
+
96
+ export declare interface EditorState {
97
+ nodes: Record<string, EditorNode>;
98
+ edges: Record<string, Edge>;
99
+ selectedIds: string[];
100
+ config: EditorConfig;
101
+ camera: {
102
+ x: number;
103
+ y: number;
104
+ zoom: number;
105
+ };
106
+ dimensions: {
107
+ width: number;
108
+ height: number;
109
+ };
110
+ connectionState: {
111
+ nodeId: string | null;
112
+ handleId: string | null;
113
+ handleType: 'source' | 'target' | null;
114
+ position: {
115
+ x: number;
116
+ y: number;
117
+ } | null;
118
+ isValid: boolean;
119
+ };
120
+ startConnection: (nodeId: string, handleId: string, handleType: 'source' | 'target', position: {
121
+ x: number;
122
+ y: number;
123
+ }) => void;
124
+ updateConnection: (position: {
125
+ x: number;
126
+ y: number;
127
+ }) => void;
128
+ endConnection: () => void;
129
+ setNodes: (nodes: EditorNode[]) => void;
130
+ addNode: (node: EditorNode) => void;
131
+ updateNode: (id: string, node: Partial<EditorNode>) => void;
132
+ registerHandle: (nodeId: string, handleId: string, handle: {
133
+ type: 'source' | 'target';
134
+ position: 'top' | 'right' | 'bottom' | 'left';
135
+ x: number;
136
+ y: number;
137
+ width: number;
138
+ height: number;
139
+ }) => void;
140
+ removeNode: (id: string) => void;
141
+ setEdges: (edges: Edge[]) => void;
142
+ addEdge: (edge: Edge) => void;
143
+ removeEdge: (id: string) => void;
144
+ selectNode: (id: string, multi?: boolean) => void;
145
+ deselectAll: () => void;
146
+ deleteSelected: () => void;
147
+ duplicateSelected: () => void;
148
+ setConfig: (config: Partial<EditorConfig>) => void;
149
+ panCamera: (dx: number, dy: number) => void;
150
+ zoomCamera: (factor: number, cx: number, cy: number) => void;
151
+ setCamera: (x: number, y: number, zoom: number) => void;
152
+ setDimensions: (width: number, height: number) => void;
153
+ nudgeSelected: (dx: number, dy: number) => void;
154
+ resizeNode: (id: string, x: number, y: number, w: number, h: number) => void;
155
+ rotateNode: (id: string, angle: number) => void;
156
+ }
157
+
158
+ export declare const ElementWrapper: default_2.MemoExoticComponent<({ id, children, className, style, draggable, resizable, rotatable, selectable, rotationSnap, showDragHandle, doubleClickToEdit, ...props }: Props) => JSX.Element | null>;
159
+
160
+ export declare const Handle: ({ type, id, position, className, style, ...props }: HandleProps) => JSX.Element;
161
+
162
+ declare interface HandleProps extends default_2.HTMLAttributes<HTMLDivElement> {
163
+ type: 'source' | 'target';
164
+ id?: string;
165
+ position?: 'top' | 'right' | 'bottom' | 'left';
166
+ }
167
+
168
+ export declare const InputNode: ({ data, ...props }: {
169
+ data: any;
170
+ } & React.HTMLAttributes<HTMLDivElement>) => JSX.Element;
171
+
172
+ export declare const NodeLayer: ({ nodeTypes }: NodeLayerProps) => JSX.Element;
173
+
174
+ declare interface NodeLayerProps {
175
+ nodeTypes?: Record<string, default_2.ComponentType<any>>;
176
+ }
177
+
178
+ export declare const OutputNode: ({ data, ...props }: {
179
+ data: any;
180
+ } & React.HTMLAttributes<HTMLDivElement>) => JSX.Element;
181
+
182
+ declare interface Props extends Omit<default_2.HTMLAttributes<HTMLDivElement>, 'id' | 'style' | 'onDrag'> {
183
+ id: string;
184
+ children: ReactNode;
185
+ className?: string;
186
+ style?: default_2.CSSProperties;
187
+ draggable?: boolean;
188
+ resizable?: boolean;
189
+ rotatable?: boolean;
190
+ selectable?: boolean;
191
+ rotationSnap?: boolean | number;
192
+ showDragHandle?: boolean;
193
+ doubleClickToEdit?: boolean;
194
+ }
195
+
196
+ declare interface Props_2 {
197
+ id: string;
198
+ children: ReactNode;
199
+ className?: string;
200
+ style?: default_2.CSSProperties;
201
+ draggable?: boolean;
202
+ selectable?: boolean;
203
+ }
204
+
205
+ export declare const useEditor: <T>(selector: (state: EditorState) => T) => T;
206
+
207
+ export declare const useEditorStoreApi: () => Omit<StoreApi<EditorState>, "setState"> & {
208
+ setState(nextStateOrUpdater: EditorState | Partial<EditorState> | ((state: WritableDraft<EditorState>) => void), shouldReplace?: false): void;
209
+ setState(nextStateOrUpdater: EditorState | ((state: WritableDraft<EditorState>) => void), shouldReplace: true): void;
210
+ };
211
+
212
+ export declare const WorkflowNodeWrapper: default_2.MemoExoticComponent<({ id, children, className, style, draggable, selectable, }: Props_2) => JSX.Element | null>;
213
+
214
+ export { }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@jeevandev/flow-canvas",
3
- "version": "0.0.4",
3
+ "version": "0.0.5",
4
4
  "type": "module",
5
5
  "main": "./dist/flow-canvas.umd.js",
6
6
  "module": "./dist/flow-canvas.es.js",
@@ -10,7 +10,7 @@
10
10
  "import": "./dist/flow-canvas.es.js",
11
11
  "require": "./dist/flow-canvas.umd.js"
12
12
  },
13
- "./style.css": "./dist/style.css"
13
+ "./style.css": "./dist/flow-canvas.css"
14
14
  },
15
15
  "files": [
16
16
  "dist"