@01.software/sdk 0.5.1 → 0.5.3
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/dist/auth.d.cts +1 -1
- package/dist/auth.d.ts +1 -1
- package/dist/{const-CDpRB7XK.d.cts → const-C9I6r5Wa.d.cts} +1 -1
- package/dist/{const-DQIDvvB-.d.ts → const-JbuUTzeh.d.ts} +1 -1
- package/dist/index.d.cts +6 -6
- package/dist/index.d.ts +6 -6
- package/dist/{payload-types-C-keX5go.d.cts → payload-types-D8fN_vZR.d.cts} +17 -1
- package/dist/{payload-types-C-keX5go.d.ts → payload-types-D8fN_vZR.d.ts} +17 -1
- package/dist/realtime.d.cts +2 -2
- package/dist/realtime.d.ts +2 -2
- package/dist/{server-B80o7igg.d.cts → server-StNHlSjW.d.cts} +5 -1
- package/dist/{server-B80o7igg.d.ts → server-StNHlSjW.d.ts} +5 -1
- package/dist/ui/code-block.cjs +5 -1
- package/dist/ui/code-block.cjs.map +1 -1
- package/dist/ui/code-block.js +5 -1
- package/dist/ui/code-block.js.map +1 -1
- package/dist/ui/flow/server.cjs +101 -34
- package/dist/ui/flow/server.cjs.map +1 -1
- package/dist/ui/flow/server.d.cts +1 -1
- package/dist/ui/flow/server.d.ts +1 -1
- package/dist/ui/flow/server.js +101 -34
- package/dist/ui/flow/server.js.map +1 -1
- package/dist/ui/flow.cjs +718 -180
- package/dist/ui/flow.cjs.map +1 -1
- package/dist/ui/flow.d.cts +77 -11
- package/dist/ui/flow.d.ts +77 -11
- package/dist/ui/flow.js +705 -167
- package/dist/ui/flow.js.map +1 -1
- package/dist/ui/form.d.cts +1 -1
- package/dist/ui/form.d.ts +1 -1
- package/dist/ui/video.d.cts +1 -1
- package/dist/ui/video.d.ts +1 -1
- package/dist/{webhook-DseJdRFT.d.ts → webhook-BkwMrrL1.d.ts} +2 -2
- package/dist/{webhook-Dqe2_xMx.d.cts → webhook-Dbx-pRib.d.cts} +2 -2
- package/dist/webhook.d.cts +3 -3
- package/dist/webhook.d.ts +3 -3
- package/package.json +5 -3
package/dist/ui/flow.d.cts
CHANGED
|
@@ -1,13 +1,10 @@
|
|
|
1
|
-
import { N as NodeTypeDef, E as EdgeTypeDef,
|
|
2
|
-
export {
|
|
1
|
+
import { C as CanvasData, N as NodeTypeDef, E as EdgeTypeDef, F as FlowNode, a as NodeTypeFieldDef, D as DynamicNodeSlotProps, b as FlowEdge, c as FrameNodeSlotProps, d as EdgeSlotProps, e as NodeWrapperSlotProps, f as FlowViewport, g as FlowBounds, S as SDKClient, h as FrameData } from '../server-StNHlSjW.cjs';
|
|
2
|
+
export { o as BUILT_IN_EDGE_TYPES, B as BUILT_IN_NODE_TYPES, k as DynamicNodeData, j as FlowNodeData, i as FlowNodePosition, l as FrameNodeData, P as PrefetchFlowOptions, U as UseFlowOptions, p as UseFlowResult, t as getFrameData, s as getFrames, r as getNodeBounds, m as isDynamicNode, n as isFrameNode, q as prefetchFlow, u as useFlow } from '../server-StNHlSjW.cjs';
|
|
3
3
|
import { Edge } from '@xyflow/react';
|
|
4
4
|
import React from 'react';
|
|
5
|
+
import { I as ImageData } from '../image-TT8lTsk5.cjs';
|
|
5
6
|
import '@tanstack/react-query';
|
|
6
7
|
|
|
7
|
-
declare const BUILT_IN_NODE_TYPES: NodeTypeDef[];
|
|
8
|
-
|
|
9
|
-
declare const BUILT_IN_EDGE_TYPES: EdgeTypeDef[];
|
|
10
|
-
|
|
11
8
|
interface UseFlowDataOptions {
|
|
12
9
|
/** Canvas data from Flow document's `canvas` field */
|
|
13
10
|
data: CanvasData | undefined;
|
|
@@ -44,6 +41,31 @@ interface CodeComponentProps {
|
|
|
44
41
|
declare function compileTemplate(code: string, slug: string): React.FC<CodeComponentProps> | null;
|
|
45
42
|
declare function clearTemplateCache(): void;
|
|
46
43
|
|
|
44
|
+
declare function renderFieldValue(key: string, val: unknown, fieldDef?: NodeTypeFieldDef): React.ReactNode;
|
|
45
|
+
|
|
46
|
+
/** Extract an image field value with proper typing. */
|
|
47
|
+
declare function getImageField(fields: Record<string, unknown>, name: string): ImageData | undefined;
|
|
48
|
+
/** Extract a text/textarea/url/color field value. */
|
|
49
|
+
declare function getTextField(fields: Record<string, unknown>, name: string): string | undefined;
|
|
50
|
+
/** Extract a number field value. */
|
|
51
|
+
declare function getNumberField(fields: Record<string, unknown>, name: string): number | undefined;
|
|
52
|
+
/** Extract a toggle/boolean field value. */
|
|
53
|
+
declare function getBooleanField(fields: Record<string, unknown>, name: string): boolean | undefined;
|
|
54
|
+
|
|
55
|
+
/**
|
|
56
|
+
* Sanitize tenant-authored CSS using PostCSS AST parsing.
|
|
57
|
+
*
|
|
58
|
+
* - At-rules: allowlist only (@keyframes, @media, @supports, @container, @layer)
|
|
59
|
+
* - Declarations: blocks url(), expression(), paint(), -moz-binding
|
|
60
|
+
* - Selectors: removes :root/html/body targets; scopes remainder under scopeClass
|
|
61
|
+
*
|
|
62
|
+
* Returns empty string on parse failure (fail-closed).
|
|
63
|
+
*
|
|
64
|
+
* @param css - Raw CSS string from tenant
|
|
65
|
+
* @param scopeClass - Container class to scope selectors (e.g. 'flow-node--my-type')
|
|
66
|
+
*/
|
|
67
|
+
declare function sanitizeCSS(css: string, scopeClass?: string): string;
|
|
68
|
+
|
|
47
69
|
/**
|
|
48
70
|
* Renders a Flow canvas in read-only mode.
|
|
49
71
|
*
|
|
@@ -83,11 +105,13 @@ interface FlowRendererProps {
|
|
|
83
105
|
onNodeMouseLeave?: (event: React.MouseEvent, node: FlowNode) => void;
|
|
84
106
|
/** Called when an edge is clicked */
|
|
85
107
|
onEdgeClick?: (event: React.MouseEvent, edge: FlowEdge) => void;
|
|
86
|
-
/** S1: Custom frame node renderer
|
|
108
|
+
/** S1: Custom frame node renderer */
|
|
87
109
|
frameRenderer?: React.ComponentType<FrameNodeSlotProps>;
|
|
88
|
-
/**
|
|
110
|
+
/** Hide frame nodes. Shorthand for `frameRenderer={() => null}`. Default: false */
|
|
111
|
+
hideFrames?: boolean;
|
|
112
|
+
/** S2: Custom edge renderers by edge type slug */
|
|
89
113
|
edgeRenderers?: Record<string, React.ComponentType<EdgeSlotProps>>;
|
|
90
|
-
/** S3: Wraps every dynamic node's rendered content
|
|
114
|
+
/** S3: Wraps every dynamic node's rendered content */
|
|
91
115
|
nodeWrapper?: React.ComponentType<NodeWrapperSlotProps>;
|
|
92
116
|
/** S4: Show controls (default: false) */
|
|
93
117
|
controls?: boolean;
|
|
@@ -122,6 +146,48 @@ interface FlowRendererProps {
|
|
|
122
146
|
/** Maximum zoom level */
|
|
123
147
|
maxZoom?: number;
|
|
124
148
|
}
|
|
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;
|
|
149
|
+
declare function FlowRenderer({ data, className, style, nodeRenderers, nodeTypeDefs, edgeTypeDefs, background, interactive, fitView, onNodeClick, onNodeDoubleClick, onNodeContextMenu, onNodeMouseEnter, onNodeMouseLeave, onEdgeClick, frameRenderer, hideFrames, 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;
|
|
150
|
+
|
|
151
|
+
interface FlowFrameProps extends Omit<FlowRendererProps, 'data' | 'nodeTypeDefs' | 'edgeTypeDefs' | 'bounds' | 'clampBounds' | 'fitView' | 'hideFrames' | 'translateExtent' | 'defaultViewport'> {
|
|
152
|
+
/** SDK client instance (Client or ServerClient) */
|
|
153
|
+
client: SDKClient;
|
|
154
|
+
/** Flow slug (URL-friendly identifier) */
|
|
155
|
+
slug?: string;
|
|
156
|
+
/** Flow document ID (UUID) */
|
|
157
|
+
id?: string;
|
|
158
|
+
/** Frame node ID to render */
|
|
159
|
+
frameId: string;
|
|
160
|
+
/** Content rendered while loading (default: null) */
|
|
161
|
+
loading?: React.ReactNode;
|
|
162
|
+
/** Render function for error state (default: returns null) */
|
|
163
|
+
error?: (err: Error) => React.ReactNode;
|
|
164
|
+
/**
|
|
165
|
+
* Called when frame data is ready — escape hatch for raw data access.
|
|
166
|
+
* Use `prefetchFlow({ client, slug })` for SSR.
|
|
167
|
+
*/
|
|
168
|
+
onDataReady?: (frameData: FrameData, flow: Record<string, unknown>) => void;
|
|
169
|
+
}
|
|
170
|
+
/**
|
|
171
|
+
* Renders a single frame from a Flow document.
|
|
172
|
+
*
|
|
173
|
+
* Fetches the flow via `useFlow`, extracts the frame with `getFrameData`,
|
|
174
|
+
* and passes the result to `FlowRenderer` with correct bounds wired.
|
|
175
|
+
*
|
|
176
|
+
* For SSR / prefetching use the existing `prefetchFlow({ client, slug })`.
|
|
177
|
+
*
|
|
178
|
+
* @example
|
|
179
|
+
* ```tsx
|
|
180
|
+
* import { FlowFrame } from '@01.software/sdk/ui/flow'
|
|
181
|
+
*
|
|
182
|
+
* export default function Home() {
|
|
183
|
+
* return (
|
|
184
|
+
* <div className="w-full h-screen">
|
|
185
|
+
* <FlowFrame client={client} slug="home" frameId={FRAME_ID} interactive />
|
|
186
|
+
* </div>
|
|
187
|
+
* )
|
|
188
|
+
* }
|
|
189
|
+
* ```
|
|
190
|
+
*/
|
|
191
|
+
declare function FlowFrame({ client, slug, id, frameId, loading, error: renderError, onDataReady, ...rendererProps }: FlowFrameProps): React.JSX.Element | null;
|
|
126
192
|
|
|
127
|
-
export {
|
|
193
|
+
export { CanvasData, type CodeComponentProps, DynamicNodeSlotProps, EdgeSlotProps, EdgeTypeDef, FlowBounds, FlowEdge, FlowFrame, type FlowFrameProps, FlowNode, FlowRenderer, type FlowRendererProps, FlowViewport, FrameData, FrameNodeSlotProps, NodeTypeDef, NodeTypeFieldDef, NodeWrapperSlotProps, SDKClient, type UseFlowDataOptions, type UseFlowDataResult, clearTemplateCache, compileTemplate, getBooleanField, getImageField, getNumberField, getTextField, renderFieldValue, sanitizeCSS, useFlowData };
|
package/dist/ui/flow.d.ts
CHANGED
|
@@ -1,13 +1,10 @@
|
|
|
1
|
-
import { N as NodeTypeDef, E as EdgeTypeDef,
|
|
2
|
-
export {
|
|
1
|
+
import { C as CanvasData, N as NodeTypeDef, E as EdgeTypeDef, F as FlowNode, a as NodeTypeFieldDef, D as DynamicNodeSlotProps, b as FlowEdge, c as FrameNodeSlotProps, d as EdgeSlotProps, e as NodeWrapperSlotProps, f as FlowViewport, g as FlowBounds, S as SDKClient, h as FrameData } from '../server-StNHlSjW.js';
|
|
2
|
+
export { o as BUILT_IN_EDGE_TYPES, B as BUILT_IN_NODE_TYPES, k as DynamicNodeData, j as FlowNodeData, i as FlowNodePosition, l as FrameNodeData, P as PrefetchFlowOptions, U as UseFlowOptions, p as UseFlowResult, t as getFrameData, s as getFrames, r as getNodeBounds, m as isDynamicNode, n as isFrameNode, q as prefetchFlow, u as useFlow } from '../server-StNHlSjW.js';
|
|
3
3
|
import { Edge } from '@xyflow/react';
|
|
4
4
|
import React from 'react';
|
|
5
|
+
import { I as ImageData } from '../image-TT8lTsk5.js';
|
|
5
6
|
import '@tanstack/react-query';
|
|
6
7
|
|
|
7
|
-
declare const BUILT_IN_NODE_TYPES: NodeTypeDef[];
|
|
8
|
-
|
|
9
|
-
declare const BUILT_IN_EDGE_TYPES: EdgeTypeDef[];
|
|
10
|
-
|
|
11
8
|
interface UseFlowDataOptions {
|
|
12
9
|
/** Canvas data from Flow document's `canvas` field */
|
|
13
10
|
data: CanvasData | undefined;
|
|
@@ -44,6 +41,31 @@ interface CodeComponentProps {
|
|
|
44
41
|
declare function compileTemplate(code: string, slug: string): React.FC<CodeComponentProps> | null;
|
|
45
42
|
declare function clearTemplateCache(): void;
|
|
46
43
|
|
|
44
|
+
declare function renderFieldValue(key: string, val: unknown, fieldDef?: NodeTypeFieldDef): React.ReactNode;
|
|
45
|
+
|
|
46
|
+
/** Extract an image field value with proper typing. */
|
|
47
|
+
declare function getImageField(fields: Record<string, unknown>, name: string): ImageData | undefined;
|
|
48
|
+
/** Extract a text/textarea/url/color field value. */
|
|
49
|
+
declare function getTextField(fields: Record<string, unknown>, name: string): string | undefined;
|
|
50
|
+
/** Extract a number field value. */
|
|
51
|
+
declare function getNumberField(fields: Record<string, unknown>, name: string): number | undefined;
|
|
52
|
+
/** Extract a toggle/boolean field value. */
|
|
53
|
+
declare function getBooleanField(fields: Record<string, unknown>, name: string): boolean | undefined;
|
|
54
|
+
|
|
55
|
+
/**
|
|
56
|
+
* Sanitize tenant-authored CSS using PostCSS AST parsing.
|
|
57
|
+
*
|
|
58
|
+
* - At-rules: allowlist only (@keyframes, @media, @supports, @container, @layer)
|
|
59
|
+
* - Declarations: blocks url(), expression(), paint(), -moz-binding
|
|
60
|
+
* - Selectors: removes :root/html/body targets; scopes remainder under scopeClass
|
|
61
|
+
*
|
|
62
|
+
* Returns empty string on parse failure (fail-closed).
|
|
63
|
+
*
|
|
64
|
+
* @param css - Raw CSS string from tenant
|
|
65
|
+
* @param scopeClass - Container class to scope selectors (e.g. 'flow-node--my-type')
|
|
66
|
+
*/
|
|
67
|
+
declare function sanitizeCSS(css: string, scopeClass?: string): string;
|
|
68
|
+
|
|
47
69
|
/**
|
|
48
70
|
* Renders a Flow canvas in read-only mode.
|
|
49
71
|
*
|
|
@@ -83,11 +105,13 @@ interface FlowRendererProps {
|
|
|
83
105
|
onNodeMouseLeave?: (event: React.MouseEvent, node: FlowNode) => void;
|
|
84
106
|
/** Called when an edge is clicked */
|
|
85
107
|
onEdgeClick?: (event: React.MouseEvent, edge: FlowEdge) => void;
|
|
86
|
-
/** S1: Custom frame node renderer
|
|
108
|
+
/** S1: Custom frame node renderer */
|
|
87
109
|
frameRenderer?: React.ComponentType<FrameNodeSlotProps>;
|
|
88
|
-
/**
|
|
110
|
+
/** Hide frame nodes. Shorthand for `frameRenderer={() => null}`. Default: false */
|
|
111
|
+
hideFrames?: boolean;
|
|
112
|
+
/** S2: Custom edge renderers by edge type slug */
|
|
89
113
|
edgeRenderers?: Record<string, React.ComponentType<EdgeSlotProps>>;
|
|
90
|
-
/** S3: Wraps every dynamic node's rendered content
|
|
114
|
+
/** S3: Wraps every dynamic node's rendered content */
|
|
91
115
|
nodeWrapper?: React.ComponentType<NodeWrapperSlotProps>;
|
|
92
116
|
/** S4: Show controls (default: false) */
|
|
93
117
|
controls?: boolean;
|
|
@@ -122,6 +146,48 @@ interface FlowRendererProps {
|
|
|
122
146
|
/** Maximum zoom level */
|
|
123
147
|
maxZoom?: number;
|
|
124
148
|
}
|
|
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;
|
|
149
|
+
declare function FlowRenderer({ data, className, style, nodeRenderers, nodeTypeDefs, edgeTypeDefs, background, interactive, fitView, onNodeClick, onNodeDoubleClick, onNodeContextMenu, onNodeMouseEnter, onNodeMouseLeave, onEdgeClick, frameRenderer, hideFrames, 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;
|
|
150
|
+
|
|
151
|
+
interface FlowFrameProps extends Omit<FlowRendererProps, 'data' | 'nodeTypeDefs' | 'edgeTypeDefs' | 'bounds' | 'clampBounds' | 'fitView' | 'hideFrames' | 'translateExtent' | 'defaultViewport'> {
|
|
152
|
+
/** SDK client instance (Client or ServerClient) */
|
|
153
|
+
client: SDKClient;
|
|
154
|
+
/** Flow slug (URL-friendly identifier) */
|
|
155
|
+
slug?: string;
|
|
156
|
+
/** Flow document ID (UUID) */
|
|
157
|
+
id?: string;
|
|
158
|
+
/** Frame node ID to render */
|
|
159
|
+
frameId: string;
|
|
160
|
+
/** Content rendered while loading (default: null) */
|
|
161
|
+
loading?: React.ReactNode;
|
|
162
|
+
/** Render function for error state (default: returns null) */
|
|
163
|
+
error?: (err: Error) => React.ReactNode;
|
|
164
|
+
/**
|
|
165
|
+
* Called when frame data is ready — escape hatch for raw data access.
|
|
166
|
+
* Use `prefetchFlow({ client, slug })` for SSR.
|
|
167
|
+
*/
|
|
168
|
+
onDataReady?: (frameData: FrameData, flow: Record<string, unknown>) => void;
|
|
169
|
+
}
|
|
170
|
+
/**
|
|
171
|
+
* Renders a single frame from a Flow document.
|
|
172
|
+
*
|
|
173
|
+
* Fetches the flow via `useFlow`, extracts the frame with `getFrameData`,
|
|
174
|
+
* and passes the result to `FlowRenderer` with correct bounds wired.
|
|
175
|
+
*
|
|
176
|
+
* For SSR / prefetching use the existing `prefetchFlow({ client, slug })`.
|
|
177
|
+
*
|
|
178
|
+
* @example
|
|
179
|
+
* ```tsx
|
|
180
|
+
* import { FlowFrame } from '@01.software/sdk/ui/flow'
|
|
181
|
+
*
|
|
182
|
+
* export default function Home() {
|
|
183
|
+
* return (
|
|
184
|
+
* <div className="w-full h-screen">
|
|
185
|
+
* <FlowFrame client={client} slug="home" frameId={FRAME_ID} interactive />
|
|
186
|
+
* </div>
|
|
187
|
+
* )
|
|
188
|
+
* }
|
|
189
|
+
* ```
|
|
190
|
+
*/
|
|
191
|
+
declare function FlowFrame({ client, slug, id, frameId, loading, error: renderError, onDataReady, ...rendererProps }: FlowFrameProps): React.JSX.Element | null;
|
|
126
192
|
|
|
127
|
-
export {
|
|
193
|
+
export { CanvasData, type CodeComponentProps, DynamicNodeSlotProps, EdgeSlotProps, EdgeTypeDef, FlowBounds, FlowEdge, FlowFrame, type FlowFrameProps, FlowNode, FlowRenderer, type FlowRendererProps, FlowViewport, FrameData, FrameNodeSlotProps, NodeTypeDef, NodeTypeFieldDef, NodeWrapperSlotProps, SDKClient, type UseFlowDataOptions, type UseFlowDataResult, clearTemplateCache, compileTemplate, getBooleanField, getImageField, getNumberField, getTextField, renderFieldValue, sanitizeCSS, useFlowData };
|