@01.software/sdk 0.4.3 → 0.5.1

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 (40) hide show
  1. package/README.md +13 -13
  2. package/dist/auth.d.cts +1 -1
  3. package/dist/auth.d.ts +1 -1
  4. package/dist/{const-ikSyKVND.d.ts → const-CDpRB7XK.d.cts} +2 -2
  5. package/dist/{const-C3GC2SxR.d.cts → const-DQIDvvB-.d.ts} +2 -2
  6. package/dist/index.cjs +22 -20
  7. package/dist/index.cjs.map +1 -1
  8. package/dist/index.d.cts +55 -34
  9. package/dist/index.d.ts +55 -34
  10. package/dist/index.js +22 -20
  11. package/dist/index.js.map +1 -1
  12. package/dist/{payload-types-DPka7hJu.d.cts → payload-types-C-keX5go.d.cts} +112 -41
  13. package/dist/{payload-types-DPka7hJu.d.ts → payload-types-C-keX5go.d.ts} +112 -41
  14. package/dist/realtime.cjs.map +1 -1
  15. package/dist/realtime.d.cts +2 -2
  16. package/dist/realtime.d.ts +2 -2
  17. package/dist/realtime.js.map +1 -1
  18. package/dist/server-B80o7igg.d.cts +242 -0
  19. package/dist/server-B80o7igg.d.ts +242 -0
  20. package/dist/ui/flow/server.cjs +233 -0
  21. package/dist/ui/flow/server.cjs.map +1 -0
  22. package/dist/ui/flow/server.d.cts +3 -0
  23. package/dist/ui/flow/server.d.ts +3 -0
  24. package/dist/ui/flow/server.js +213 -0
  25. package/dist/ui/flow/server.js.map +1 -0
  26. package/dist/ui/flow.cjs +540 -127
  27. package/dist/ui/flow.cjs.map +1 -1
  28. package/dist/ui/flow.d.cts +39 -189
  29. package/dist/ui/flow.d.ts +39 -189
  30. package/dist/ui/flow.js +544 -135
  31. package/dist/ui/flow.js.map +1 -1
  32. package/dist/ui/form.d.cts +1 -1
  33. package/dist/ui/form.d.ts +1 -1
  34. package/dist/ui/video.d.cts +1 -1
  35. package/dist/ui/video.d.ts +1 -1
  36. package/dist/{webhook-CvNTdBWV.d.ts → webhook-Dqe2_xMx.d.cts} +3 -3
  37. package/dist/{webhook-B8BfJ_Ka.d.cts → webhook-DseJdRFT.d.ts} +3 -3
  38. package/dist/webhook.d.cts +3 -3
  39. package/dist/webhook.d.ts +3 -3
  40. package/package.json +17 -12
package/dist/ui/flow.d.ts CHANGED
@@ -1,178 +1,13 @@
1
- import React from 'react';
2
- import { QueryClient } from '@tanstack/react-query';
1
+ import { N as NodeTypeDef, E as EdgeTypeDef, C as CanvasData, F as FlowNode, D as DynamicNodeSlotProps, a as FlowEdge, b as FrameNodeSlotProps, c as EdgeSlotProps, d as NodeWrapperSlotProps, e as FlowViewport, f as FlowBounds } from '../server-B80o7igg.js';
2
+ export { i as DynamicNodeData, h as FlowNodeData, g as FlowNodePosition, s as FrameData, j as FrameNodeData, k as NodeTypeFieldDef, P as PrefetchFlowOptions, S as SDKClient, U as UseFlowOptions, n as UseFlowResult, r as getFrameData, q as getFrames, o as getNodeBounds, l as isDynamicNode, m as isFrameNode, p as prefetchFlow, u as useFlow } from '../server-B80o7igg.js';
3
3
  import { Edge } from '@xyflow/react';
4
-
5
- interface DynamicNodeData {
6
- nodeTypeSlug: string;
7
- label: string;
8
- fields: Record<string, unknown>;
9
- }
10
- type FlowNodeData = (DynamicNodeData | FrameNodeData) & Record<string, unknown>;
11
- interface FlowNodePosition {
12
- x: number;
13
- y: number;
14
- }
15
- interface FlowNode {
16
- id: string;
17
- type?: string;
18
- position: FlowNodePosition;
19
- data: FlowNodeData;
20
- style?: React.CSSProperties;
21
- width?: number;
22
- height?: number;
23
- measured?: {
24
- width?: number;
25
- height?: number;
26
- };
27
- draggable?: boolean;
28
- selectable?: boolean;
29
- [key: string]: unknown;
30
- }
31
- interface FlowEdge {
32
- id: string;
33
- source: string;
34
- target: string;
35
- sourceHandle?: string | null;
36
- targetHandle?: string | null;
37
- type?: string;
38
- style?: React.CSSProperties;
39
- animated?: boolean;
40
- markerStart?: unknown;
41
- markerEnd?: unknown;
42
- edgeTypeSlug?: string;
43
- fields?: Record<string, unknown>;
44
- [key: string]: unknown;
45
- }
46
- interface FlowViewport {
47
- x: number;
48
- y: number;
49
- zoom: number;
50
- }
51
- interface CanvasData {
52
- nodes: FlowNode[];
53
- edges: FlowEdge[];
54
- viewport: FlowViewport;
55
- }
56
- interface NodeTypeFieldDef {
57
- name: string;
58
- label: string;
59
- fieldType: 'text' | 'textarea' | 'number' | 'url' | 'color' | 'image' | 'select' | 'toggle';
60
- options?: {
61
- label: string;
62
- value: string;
63
- }[];
64
- defaultValue?: string;
65
- required?: boolean;
66
- }
67
- interface NodeTypeDef {
68
- slug: string;
69
- name: string;
70
- color: string;
71
- defaultSize: {
72
- width: number;
73
- height: number;
74
- };
75
- fields: NodeTypeFieldDef[];
76
- transparentBackground?: boolean;
77
- }
78
- interface EdgeTypeDef {
79
- slug: string;
80
- name: string;
81
- color: string;
82
- strokeWidth: number;
83
- animated: boolean;
84
- lineStyle: string;
85
- markerStart: string;
86
- markerEnd: string;
87
- fields: NodeTypeFieldDef[];
88
- }
89
- declare function isDynamicNode(node: FlowNode): node is FlowNode & {
90
- data: DynamicNodeData;
91
- };
92
- declare function isFrameNode(node: FlowNode): node is FlowNode & {
93
- data: FrameNodeData;
94
- };
95
- interface DynamicNodeSlotProps {
96
- id: string;
97
- nodeTypeSlug: string;
98
- label: string;
99
- fields: Record<string, unknown>;
100
- nodeTypeDef?: NodeTypeDef;
101
- }
102
- interface FrameNodeData {
103
- label: string;
104
- color?: string;
105
- padding?: number;
106
- borderStyle?: 'dashed' | 'solid' | 'none';
107
- opacity?: number;
108
- }
109
- interface FrameNodeSlotProps {
110
- id: string;
111
- label: string;
112
- color?: string;
113
- padding?: number;
114
- borderStyle?: 'dashed' | 'solid' | 'none';
115
- opacity?: number;
116
- children?: React.ReactNode;
117
- }
118
- interface EdgeSlotProps {
119
- id: string;
120
- edgeTypeSlug?: string;
121
- source: string;
122
- target: string;
123
- label?: string;
124
- fields?: Record<string, unknown>;
125
- edgeTypeDef?: EdgeTypeDef;
126
- style?: React.CSSProperties;
127
- }
128
- interface NodeWrapperSlotProps {
129
- id: string;
130
- nodeTypeSlug: string;
131
- label: string;
132
- selected?: boolean;
133
- nodeTypeDef?: NodeTypeDef;
134
- children: React.ReactNode;
135
- }
136
- interface FlowBounds {
137
- x: number;
138
- y: number;
139
- width: number;
140
- height: number;
141
- }
4
+ import React from 'react';
5
+ import '@tanstack/react-query';
142
6
 
143
7
  declare const BUILT_IN_NODE_TYPES: NodeTypeDef[];
144
8
 
145
9
  declare const BUILT_IN_EDGE_TYPES: EdgeTypeDef[];
146
10
 
147
- type FlowCollection = 'flows' | 'flow-node-types' | 'flow-edge-types';
148
- type AnyFn = (...args: any[]) => any;
149
- interface SDKClient {
150
- from(collection: FlowCollection): {
151
- find: AnyFn;
152
- findById: AnyFn;
153
- };
154
- queryClient: QueryClient;
155
- }
156
- interface UseFlowOptions {
157
- /** SDK client instance (BrowserClient or ServerClient) */
158
- client: SDKClient;
159
- /** Flow slug (URL-friendly identifier) */
160
- slug?: string;
161
- /** Flow document ID (UUID) */
162
- id?: string;
163
- /** Enable/disable data fetching (default: true) */
164
- enabled?: boolean;
165
- }
166
- interface UseFlowResult {
167
- data: CanvasData | undefined;
168
- nodeTypeDefs: NodeTypeDef[];
169
- edgeTypeDefs: EdgeTypeDef[];
170
- flow: Record<string, unknown> | undefined;
171
- isLoading: boolean;
172
- error: Error | null;
173
- }
174
- declare function useFlow(options: UseFlowOptions): UseFlowResult;
175
-
176
11
  interface UseFlowDataOptions {
177
12
  /** Canvas data from Flow document's `canvas` field */
178
13
  data: CanvasData | undefined;
@@ -198,21 +33,16 @@ interface UseFlowDataResult {
198
33
  */
199
34
  declare function useFlowData(options: UseFlowDataOptions): UseFlowDataResult;
200
35
 
201
- /**
202
- * Calculate bounding box for given node IDs.
203
- * Pure function — usable in SSR, server components, or outside React.
204
- */
205
- declare function getNodeBounds(nodes: FlowNode[], nodeIds: string[]): FlowBounds | undefined;
206
- /**
207
- * Get all frame nodes with their bounds.
208
- * Sorted by position (top-left to bottom-right).
209
- * Builds a single nodeMap to compute absolute positions (O(F) instead of O(F*N)).
210
- */
211
- declare function getFrames(nodes: FlowNode[]): Array<{
212
- id: string;
36
+ interface CodeComponentProps {
37
+ fields: Record<string, unknown>;
213
38
  label: string;
214
- bounds: FlowBounds;
215
- }>;
39
+ color: string;
40
+ nodeTypeSlug: string;
41
+ width: number;
42
+ height: number;
43
+ }
44
+ declare function compileTemplate(code: string, slug: string): React.FC<CodeComponentProps> | null;
45
+ declare function clearTemplateCache(): void;
216
46
 
217
47
  /**
218
48
  * Renders a Flow canvas in read-only mode.
@@ -243,6 +73,14 @@ interface FlowRendererProps {
243
73
  fitView?: boolean;
244
74
  /** Called when a node is clicked */
245
75
  onNodeClick?: (event: React.MouseEvent, node: FlowNode) => void;
76
+ /** Called when a node is double-clicked */
77
+ onNodeDoubleClick?: (event: React.MouseEvent, node: FlowNode) => void;
78
+ /** Called on node right-click / context menu */
79
+ onNodeContextMenu?: (event: React.MouseEvent, node: FlowNode) => void;
80
+ /** Called when mouse enters a node */
81
+ onNodeMouseEnter?: (event: React.MouseEvent, node: FlowNode) => void;
82
+ /** Called when mouse leaves a node */
83
+ onNodeMouseLeave?: (event: React.MouseEvent, node: FlowNode) => void;
246
84
  /** Called when an edge is clicked */
247
85
  onEdgeClick?: (event: React.MouseEvent, edge: FlowEdge) => void;
248
86
  /** S1: Custom frame node renderer. Should be a stable reference (memoize or define outside render). */
@@ -259,19 +97,31 @@ interface FlowRendererProps {
259
97
  minimapNodeColor?: (node: FlowNode) => string;
260
98
  /** S4: Additional children rendered inside ReactFlow */
261
99
  children?: React.ReactNode;
262
- /** S5: Global override for all dynamic nodes. Should be a stable reference (memoize or define outside render). */
263
- renderNode?: (props: DynamicNodeSlotProps, defaultRender: React.ReactElement) => React.ReactElement | null;
100
+ /** S5: Global override for all dynamic nodes. `content` is the resolved rendering (custom renderer output or default). `props.defaultRender` contains the original template/field-based rendering. */
101
+ renderNode?: (props: DynamicNodeSlotProps, content: React.ReactElement) => React.ReactElement | null;
264
102
  /** S6: Called when viewport changes (pan/zoom) */
265
103
  onViewportChange?: (viewport: FlowViewport) => void;
266
104
  /** S6: Default viewport (used when fitView is false) */
267
105
  defaultViewport?: FlowViewport;
268
- /** S8: Focus on specific bounds */
106
+ /** S8: Focus on specific bounds (used for initial viewport fit). */
269
107
  bounds?: FlowBounds;
108
+ /** S8: Separate bounds for panning/zoom restriction. When set, overrides bounds-based translateExtent. Useful when fitBounds (content) differs from clampBounds (frame area). */
109
+ clampBounds?: FlowBounds;
270
110
  /** S8: Padding for focus bounds (default: 0.1) */
271
111
  focusPadding?: number;
272
112
  /** S8: Animate focus transition (true=300ms, number=custom ms, false=instant) */
273
113
  focusAnimation?: boolean | number;
274
- }
275
- declare function FlowRenderer({ data, className, style, nodeRenderers, nodeTypeDefs, edgeTypeDefs, background, interactive, fitView, onNodeClick, onEdgeClick, frameRenderer, edgeRenderers, nodeWrapper, controls, minimap, minimapNodeColor, children, renderNode, onViewportChange, defaultViewport: defaultViewportProp, bounds, focusPadding, focusAnimation, }: FlowRendererProps): React.JSX.Element | null;
114
+ /** S8: Focus mode — "contain" fits entire bounds (may have margins), "cover" fills viewport (may crop). Default: "contain" */
115
+ focusMode?: 'contain' | 'cover';
116
+ /** Re-fit viewport on container resize (default: true when bounds is set) */
117
+ responsiveFit?: boolean;
118
+ /** Override translateExtent directly. When set, overrides the automatic bounds-based panning restriction. */
119
+ translateExtent?: [[number, number], [number, number]];
120
+ /** Minimum zoom level. When clampBounds is set, automatically enforced as cover zoom (user cannot zoom out beyond the frame). */
121
+ minZoom?: number;
122
+ /** Maximum zoom level */
123
+ maxZoom?: number;
124
+ }
125
+ declare function FlowRenderer({ data, className, style, nodeRenderers, nodeTypeDefs, edgeTypeDefs, background, interactive, fitView, onNodeClick, onNodeDoubleClick, onNodeContextMenu, onNodeMouseEnter, onNodeMouseLeave, onEdgeClick, frameRenderer, edgeRenderers, nodeWrapper, controls, minimap, minimapNodeColor, children, renderNode, onViewportChange, defaultViewport: defaultViewportProp, bounds, clampBounds, focusPadding, focusAnimation, focusMode, responsiveFit, translateExtent: translateExtentProp, minZoom: minZoomProp, maxZoom: maxZoomProp, }: FlowRendererProps): React.JSX.Element | null;
276
126
 
277
- export { BUILT_IN_EDGE_TYPES, BUILT_IN_NODE_TYPES, type CanvasData, type DynamicNodeData, type DynamicNodeSlotProps, type EdgeSlotProps, type EdgeTypeDef, type FlowBounds, type FlowEdge, type FlowNode, type FlowNodeData, type FlowNodePosition, FlowRenderer, type FlowRendererProps, type FlowViewport, type FrameNodeData, type FrameNodeSlotProps, type NodeTypeDef, type NodeTypeFieldDef, type NodeWrapperSlotProps, type SDKClient, type UseFlowDataOptions, type UseFlowDataResult, type UseFlowOptions, type UseFlowResult, getFrames, getNodeBounds, isDynamicNode, isFrameNode, useFlow, useFlowData };
127
+ export { BUILT_IN_EDGE_TYPES, BUILT_IN_NODE_TYPES, CanvasData, type CodeComponentProps, DynamicNodeSlotProps, EdgeSlotProps, EdgeTypeDef, FlowBounds, FlowEdge, FlowNode, FlowRenderer, type FlowRendererProps, FlowViewport, FrameNodeSlotProps, NodeTypeDef, NodeWrapperSlotProps, type UseFlowDataOptions, type UseFlowDataResult, clearTemplateCache, compileTemplate, useFlowData };