@syntrologie/runtime-sdk 2.4.0-canary.2 → 2.4.0-canary.20
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/CAPABILITIES.md +116 -1
- package/dist/SmartCanvasApp.d.ts +5 -3
- package/dist/actions/executors/index.d.ts +1 -2
- package/dist/actions/index.d.ts +2 -2
- package/dist/actions/schema.d.ts +58208 -202
- package/dist/actions/schema.js +4 -2
- package/dist/actions/types.d.ts +45 -48
- package/dist/anchor/AnchorResolver.d.ts +18 -0
- package/dist/anchor/index.d.ts +2 -0
- package/dist/api.d.ts +3 -8
- package/dist/{chunk-DOJR7R46.js → chunk-LR5AA5SE.js} +45 -31
- package/dist/chunk-LR5AA5SE.js.map +7 -0
- package/dist/{chunk-ZDZ3IYFN.js → chunk-OJA7NRHL.js} +3433 -2111
- package/dist/chunk-OJA7NRHL.js.map +7 -0
- package/dist/{chunk-BIYMC56J.js → chunk-P5G4KT2U.js} +54 -6
- package/dist/chunk-P5G4KT2U.js.map +7 -0
- package/dist/components/ShadowCanvasOverlay.d.ts +1 -20
- package/dist/config/schema.d.ts +1813 -283
- package/dist/config/schema.js +61 -9
- package/dist/config/schema.js.map +2 -2
- package/dist/context/schema.d.ts +8 -8
- package/dist/decisions/schema.d.ts +506 -1490
- package/dist/decisions/schema.js +5 -2
- package/dist/decisions/types.d.ts +22 -0
- package/dist/events/registerConfigPredicates.d.ts +7 -10
- package/dist/events/schema.d.ts +8 -8
- package/dist/experiments/adapters/growthbook.d.ts +2 -0
- package/dist/experiments/types.d.ts +7 -0
- package/dist/hooks/useShadowCanvasConfig.d.ts +4 -2
- package/dist/index.d.ts +1 -0
- package/dist/index.js +27 -94
- package/dist/index.js.map +3 -3
- package/dist/overlays/schema.d.ts +48 -48
- package/dist/react.js +3 -3
- package/dist/runtime.d.ts +3 -0
- package/dist/smart-canvas.esm.js +60 -64
- package/dist/smart-canvas.esm.js.map +4 -4
- package/dist/smart-canvas.js +2434 -1163
- package/dist/smart-canvas.js.map +4 -4
- package/dist/smart-canvas.min.js +60 -64
- package/dist/smart-canvas.min.js.map +4 -4
- package/dist/surfaces/types.d.ts +2 -1
- package/dist/theme/ThemeProvider.d.ts +11 -16
- package/dist/theme/defaultTheme.d.ts +6 -1
- package/dist/theme/index.d.ts +3 -4
- package/dist/theme/types.d.ts +10 -0
- package/dist/version.d.ts +1 -1
- package/package.json +7 -7
- package/schema/canvas-config.schema.json +9403 -790
- package/scripts/validate-config.mjs +78 -0
- package/dist/actions/executors/tour.d.ts +0 -18
- package/dist/chunk-BIYMC56J.js.map +0 -7
- package/dist/chunk-DOJR7R46.js.map +0 -7
- package/dist/chunk-JMHRHAEL.js +0 -18
- package/dist/chunk-JMHRHAEL.js.map +0 -7
- package/dist/chunk-ZDZ3IYFN.js.map +0 -7
- package/dist/hooks/useHostPatches.d.ts +0 -9
- package/dist/theme/extractHostTheme.d.ts +0 -14
package/dist/actions/schema.js
CHANGED
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import {
|
|
2
2
|
AddClassZ,
|
|
3
|
+
AnchorIdZ,
|
|
3
4
|
BadgePositionZ,
|
|
4
5
|
BadgeZ,
|
|
5
6
|
CtaButtonZ,
|
|
@@ -30,10 +31,11 @@ import {
|
|
|
30
31
|
WaitZ,
|
|
31
32
|
WidgetConfigZ,
|
|
32
33
|
coreActionStepSchemas
|
|
33
|
-
} from "../chunk-
|
|
34
|
-
import "../chunk-
|
|
34
|
+
} from "../chunk-LR5AA5SE.js";
|
|
35
|
+
import "../chunk-P5G4KT2U.js";
|
|
35
36
|
export {
|
|
36
37
|
AddClassZ,
|
|
38
|
+
AnchorIdZ,
|
|
37
39
|
BadgePositionZ,
|
|
38
40
|
BadgeZ,
|
|
39
41
|
CtaButtonZ,
|
package/dist/actions/types.d.ts
CHANGED
|
@@ -5,6 +5,8 @@
|
|
|
5
5
|
* (highlight, tooltip, badge, DOM modifications, navigation).
|
|
6
6
|
*/
|
|
7
7
|
import type { Placement } from '@floating-ui/dom';
|
|
8
|
+
import type { BadgePosition, CtaButton, HighlightStyle, InsertPosition, ModalContent, ModalWaitFor, TooltipTrigger, TooltipWaitFor } from '@syntrologie/sdk-contracts';
|
|
9
|
+
export type { BadgePosition, CtaButton, HighlightStyle, InsertPosition, ModalContent, ModalWaitFor, TooltipTrigger, TooltipWaitFor, };
|
|
8
10
|
/** Static surface slots with fixed positioning */
|
|
9
11
|
export type StaticSurfaceSlot = 'drawer_right' | 'drawer_left' | 'drawer_bottom' | 'overlay_center' | 'overlay_corner_br' | 'overlay_corner_bl' | 'toast_top' | 'toast_bottom';
|
|
10
12
|
/** Dynamic inline slot (rendered inside anchor) */
|
|
@@ -13,31 +15,7 @@ export type InlineSurfaceSlot = `inline:${string}`;
|
|
|
13
15
|
export type AdjacentSurfaceSlot = `adjacent:${string}`;
|
|
14
16
|
/** All surface slot types */
|
|
15
17
|
export type SurfaceSlot = StaticSurfaceSlot | InlineSurfaceSlot | AdjacentSurfaceSlot;
|
|
16
|
-
/**
|
|
17
|
-
export interface HighlightStyle {
|
|
18
|
-
/** Ring color (default: "#5b8cff") */
|
|
19
|
-
color?: string;
|
|
20
|
-
/** Backdrop scrim opacity 0-1 (default: 0.55, set to 0 to hide) */
|
|
21
|
-
scrimOpacity?: number;
|
|
22
|
-
/** Space between element and ring in pixels (default: 12) */
|
|
23
|
-
paddingPx?: number;
|
|
24
|
-
/** Ring corner radius in pixels (default: 12) */
|
|
25
|
-
radiusPx?: number;
|
|
26
|
-
}
|
|
27
|
-
/** Badge position relative to anchor */
|
|
28
|
-
export type BadgePosition = 'top-left' | 'top-right' | 'bottom-left' | 'bottom-right';
|
|
29
|
-
/** CTA button configuration for tooltips/modals */
|
|
30
|
-
export interface CtaButton {
|
|
31
|
-
label: string;
|
|
32
|
-
actionId: string;
|
|
33
|
-
primary?: boolean;
|
|
34
|
-
}
|
|
35
|
-
/** Modal content configuration */
|
|
36
|
-
export interface ModalContent {
|
|
37
|
-
title?: string;
|
|
38
|
-
body: string;
|
|
39
|
-
}
|
|
40
|
-
/** Tooltip content configuration */
|
|
18
|
+
/** Tooltip content configuration (uses ActionStep for cta.action, narrower than sdk-contracts' unknown) */
|
|
41
19
|
export interface TooltipContent {
|
|
42
20
|
title?: string;
|
|
43
21
|
body: string;
|
|
@@ -47,25 +25,30 @@ export interface TooltipContent {
|
|
|
47
25
|
};
|
|
48
26
|
ctaButtons?: CtaButton[];
|
|
49
27
|
}
|
|
50
|
-
/** Tooltip trigger mode */
|
|
51
|
-
export type TooltipTrigger = 'immediate' | 'hover' | 'click';
|
|
52
|
-
/** Position where HTML/content should be inserted */
|
|
53
|
-
export type InsertPosition = 'before' | 'after' | 'prepend' | 'append' | 'replace';
|
|
54
28
|
/** Widget configuration for surface mounting */
|
|
55
29
|
export interface WidgetConfig {
|
|
56
30
|
widgetId: string;
|
|
57
31
|
props?: Record<string, unknown>;
|
|
58
32
|
priority?: number;
|
|
59
33
|
}
|
|
34
|
+
/** Route-scoped anchor identifier */
|
|
35
|
+
export interface AnchorId {
|
|
36
|
+
/** CSS selector for the anchor element */
|
|
37
|
+
selector: string;
|
|
38
|
+
/** Route pattern(s) where this anchor applies. Uses matchRoutePattern (**, *, :param). Use "**" for all routes. */
|
|
39
|
+
route: string | string[];
|
|
40
|
+
}
|
|
60
41
|
/** Base action with common properties */
|
|
61
42
|
interface BaseAction {
|
|
62
43
|
/** Optional label for debugging/telemetry */
|
|
63
44
|
label?: string;
|
|
45
|
+
/** Optional conditional trigger — when present, action only fires if strategy evaluates to true */
|
|
46
|
+
triggerWhen?: import('../decisions/types').DecisionStrategy<boolean>;
|
|
64
47
|
}
|
|
65
48
|
/** Highlight an anchor element with spotlight effect */
|
|
66
49
|
export interface HighlightAction extends BaseAction {
|
|
67
50
|
kind: 'overlays:highlight';
|
|
68
|
-
anchorId:
|
|
51
|
+
anchorId: AnchorId;
|
|
69
52
|
style?: HighlightStyle;
|
|
70
53
|
/** Duration in ms before auto-cleanup (for use in sequences) */
|
|
71
54
|
duration?: number;
|
|
@@ -73,30 +56,26 @@ export interface HighlightAction extends BaseAction {
|
|
|
73
56
|
/** Pulse animation on an anchor element */
|
|
74
57
|
export interface PulseAction extends BaseAction {
|
|
75
58
|
kind: 'overlays:pulse';
|
|
76
|
-
anchorId:
|
|
59
|
+
anchorId: AnchorId;
|
|
77
60
|
duration?: number;
|
|
78
61
|
}
|
|
79
62
|
/** Add a badge near an anchor element */
|
|
80
63
|
export interface BadgeAction extends BaseAction {
|
|
81
64
|
kind: 'overlays:badge';
|
|
82
|
-
anchorId:
|
|
65
|
+
anchorId: AnchorId;
|
|
83
66
|
content: string;
|
|
84
67
|
position?: BadgePosition;
|
|
85
68
|
}
|
|
86
|
-
/** Tooltip lifecycle - when the action completes (for sequences) */
|
|
87
|
-
export type TooltipWaitFor = 'dismissed' | 'cta-click' | `timeout:${number}`;
|
|
88
69
|
/** Show a tooltip near an anchor element */
|
|
89
70
|
export interface TooltipAction extends BaseAction {
|
|
90
71
|
kind: 'overlays:tooltip';
|
|
91
|
-
anchorId:
|
|
72
|
+
anchorId: AnchorId;
|
|
92
73
|
content: TooltipContent;
|
|
93
74
|
trigger?: TooltipTrigger;
|
|
94
75
|
placement?: Placement;
|
|
95
76
|
/** When the action completes (for use in sequences). Publishes event to EventBus. */
|
|
96
77
|
waitFor?: TooltipWaitFor;
|
|
97
78
|
}
|
|
98
|
-
/** Modal lifecycle - when the action completes (for sequences) */
|
|
99
|
-
export type ModalWaitFor = 'dismissed' | 'cta-click' | `timeout:${number}`;
|
|
100
79
|
/** Show a centered modal dialog */
|
|
101
80
|
export interface ModalAction extends BaseAction {
|
|
102
81
|
kind: 'overlays:modal';
|
|
@@ -118,39 +97,39 @@ export interface ModalAction extends BaseAction {
|
|
|
118
97
|
/** Insert HTML content relative to anchor */
|
|
119
98
|
export interface InsertHtmlAction extends BaseAction {
|
|
120
99
|
kind: 'content:insertHtml';
|
|
121
|
-
anchorId:
|
|
100
|
+
anchorId: AnchorId;
|
|
122
101
|
html: string;
|
|
123
102
|
position: InsertPosition;
|
|
124
103
|
}
|
|
125
104
|
/** Set text content of an anchor */
|
|
126
105
|
export interface SetTextAction extends BaseAction {
|
|
127
106
|
kind: 'content:setText';
|
|
128
|
-
anchorId:
|
|
107
|
+
anchorId: AnchorId;
|
|
129
108
|
text: string;
|
|
130
109
|
}
|
|
131
110
|
/** Set an attribute on an anchor */
|
|
132
111
|
export interface SetAttrAction extends BaseAction {
|
|
133
112
|
kind: 'content:setAttr';
|
|
134
|
-
anchorId:
|
|
113
|
+
anchorId: AnchorId;
|
|
135
114
|
attr: string;
|
|
136
115
|
value: string;
|
|
137
116
|
}
|
|
138
117
|
/** Add a CSS class to an anchor */
|
|
139
118
|
export interface AddClassAction extends BaseAction {
|
|
140
119
|
kind: 'content:addClass';
|
|
141
|
-
anchorId:
|
|
120
|
+
anchorId: AnchorId;
|
|
142
121
|
className: string;
|
|
143
122
|
}
|
|
144
123
|
/** Remove a CSS class from an anchor */
|
|
145
124
|
export interface RemoveClassAction extends BaseAction {
|
|
146
125
|
kind: 'content:removeClass';
|
|
147
|
-
anchorId:
|
|
126
|
+
anchorId: AnchorId;
|
|
148
127
|
className: string;
|
|
149
128
|
}
|
|
150
129
|
/** Set inline styles on an anchor */
|
|
151
130
|
export interface SetStyleAction extends BaseAction {
|
|
152
131
|
kind: 'content:setStyle';
|
|
153
|
-
anchorId:
|
|
132
|
+
anchorId: AnchorId;
|
|
154
133
|
styles: Record<string, string>;
|
|
155
134
|
}
|
|
156
135
|
/** Mount a widget to a surface slot */
|
|
@@ -162,7 +141,7 @@ export interface MountWidgetAction extends BaseAction {
|
|
|
162
141
|
/** Scroll to an anchor element */
|
|
163
142
|
export interface ScrollToAction extends BaseAction {
|
|
164
143
|
kind: 'navigation:scrollTo';
|
|
165
|
-
anchorId:
|
|
144
|
+
anchorId: AnchorId;
|
|
166
145
|
behavior?: ScrollBehavior;
|
|
167
146
|
block?: ScrollLogicalPosition;
|
|
168
147
|
inline?: ScrollLogicalPosition;
|
|
@@ -213,7 +192,7 @@ export type ActionStep = HighlightAction | PulseAction | BadgeAction | TooltipAc
|
|
|
213
192
|
/** Extract action kind literal types */
|
|
214
193
|
export type ActionKind = ActionStep['kind'];
|
|
215
194
|
/** State of an action */
|
|
216
|
-
export type ActionState = 'pending' | 'applied' | 'reverted' | 'failed';
|
|
195
|
+
export type ActionState = 'pending' | 'applied' | 'reverted' | 'failed' | 'deferred';
|
|
217
196
|
/** Handle returned when an action is applied */
|
|
218
197
|
export interface ActionHandle {
|
|
219
198
|
/** Unique ID for this action instance */
|
|
@@ -289,13 +268,18 @@ export interface ExecutorContext {
|
|
|
289
268
|
/** Overlay root element for rendering */
|
|
290
269
|
overlayRoot: HTMLElement;
|
|
291
270
|
/** Resolve an anchor ID to an element */
|
|
292
|
-
resolveAnchor: (anchorId:
|
|
271
|
+
resolveAnchor: (anchorId: AnchorId) => HTMLElement | null;
|
|
293
272
|
/** Generate unique IDs */
|
|
294
273
|
generateId: () => string;
|
|
295
274
|
/** Publish events to EventBus */
|
|
296
275
|
publishEvent: (name: string, props?: Record<string, unknown>) => void;
|
|
297
276
|
/** Get the current adaptive ID (if any) */
|
|
298
277
|
adaptiveId?: string;
|
|
278
|
+
/**
|
|
279
|
+
* Async anchor resolver — waits for a DOM element to appear.
|
|
280
|
+
* Returns null on timeout or route mismatch (never throws).
|
|
281
|
+
*/
|
|
282
|
+
waitForAnchor?: (anchorId: AnchorId, timeoutMs?: number) => Promise<HTMLElement | null>;
|
|
299
283
|
/**
|
|
300
284
|
* Execute a nested action (for composite executors like tours).
|
|
301
285
|
* Returns a handle that can be used to revert the action.
|
|
@@ -337,13 +321,27 @@ export interface ActionEngineOptions {
|
|
|
337
321
|
mount: (slot: SurfaceSlot, content: RenderableContent, opts?: MountOptions) => MountHandle;
|
|
338
322
|
};
|
|
339
323
|
/** Function to resolve anchor IDs to elements */
|
|
340
|
-
anchorResolver: (anchorId:
|
|
324
|
+
anchorResolver: (anchorId: AnchorId) => HTMLElement | null;
|
|
325
|
+
/** Async anchor resolver — waits for a DOM element to appear */
|
|
326
|
+
waitForAnchor?: (anchorId: AnchorId, timeoutMs?: number) => Promise<HTMLElement | null>;
|
|
341
327
|
/** Current adaptive ID for attribution */
|
|
342
328
|
adaptiveId?: string;
|
|
343
329
|
/** Optional executor registry (uses default singleton if not provided) */
|
|
344
330
|
executorRegistry?: ActionEngineExecutorRegistry;
|
|
345
331
|
/** Subscribe to navigation changes (from NavigationMonitor) */
|
|
346
332
|
subscribeNavigation?: (callback: (url: string, method: string) => void) => () => void;
|
|
333
|
+
/** Runtime for evaluating DecisionStrategy conditions (e.g., triggerWhen) */
|
|
334
|
+
runtime?: {
|
|
335
|
+
evaluateSync: <T>(strategy: import('../decisions/types').DecisionStrategy<T>) => {
|
|
336
|
+
value: T;
|
|
337
|
+
};
|
|
338
|
+
context?: {
|
|
339
|
+
subscribe: (cb: () => void) => () => void;
|
|
340
|
+
};
|
|
341
|
+
accumulator?: {
|
|
342
|
+
subscribe: (cb: () => void) => () => void;
|
|
343
|
+
};
|
|
344
|
+
};
|
|
347
345
|
}
|
|
348
346
|
/** The ActionEngine interface */
|
|
349
347
|
export interface ActionEngine {
|
|
@@ -403,4 +401,3 @@ export interface MountHandle {
|
|
|
403
401
|
isMounted: () => boolean;
|
|
404
402
|
getContainer: () => HTMLElement | null;
|
|
405
403
|
}
|
|
406
|
-
export {};
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* AnchorResolver — Centralized DOM observation for anchor element resolution.
|
|
3
|
+
*
|
|
4
|
+
* Provides a single MutationObserver that multiple callers share to wait for
|
|
5
|
+
* DOM elements to appear. Replaces scattered observation mechanisms.
|
|
6
|
+
*/
|
|
7
|
+
export interface AnchorResolverOptions {
|
|
8
|
+
root?: HTMLElement;
|
|
9
|
+
defaultTimeoutMs?: number;
|
|
10
|
+
}
|
|
11
|
+
export interface AnchorResolver {
|
|
12
|
+
resolve(selector: string): HTMLElement | null;
|
|
13
|
+
waitFor(selector: string, timeoutMs?: number): Promise<HTMLElement>;
|
|
14
|
+
onAppear(selector: string, cb: (el: HTMLElement) => void): () => void;
|
|
15
|
+
pendingCount(): number;
|
|
16
|
+
destroy(): void;
|
|
17
|
+
}
|
|
18
|
+
export declare function createAnchorResolver(opts?: AnchorResolverOptions): AnchorResolver;
|
package/dist/api.d.ts
CHANGED
|
@@ -4,13 +4,13 @@
|
|
|
4
4
|
* Entry point for the SmartCanvas SDK. Creates and manages the canvas element,
|
|
5
5
|
* handles configuration, and coordinates between the ActionEngine and UI.
|
|
6
6
|
*/
|
|
7
|
-
import type { CanvasTheme } from './components/ShadowCanvasOverlay';
|
|
8
7
|
import type { ExperimentClient } from './experiments/types';
|
|
9
8
|
import type { OverlayRecipeFetcher } from './overlays/fetcher';
|
|
10
9
|
import type { ActionHandler, AppearanceConfig, RenderProps } from './render/types';
|
|
11
10
|
import type { SmartCanvasRuntime } from './runtime';
|
|
12
11
|
import { type SmartCanvasElement } from './SmartCanvasElement';
|
|
13
12
|
import type { TelemetryClient } from './telemetry/types';
|
|
13
|
+
import type { CanvasThemeConfig } from './theme';
|
|
14
14
|
import type { CanvasConfigFetcher, CanvasConfigResponse } from './types';
|
|
15
15
|
export interface SmartCanvasIntegrations {
|
|
16
16
|
experiments?: ExperimentClient;
|
|
@@ -35,16 +35,16 @@ export interface SmartCanvasConfig {
|
|
|
35
35
|
className?: string;
|
|
36
36
|
};
|
|
37
37
|
editorUrl?: string;
|
|
38
|
-
theme?: Partial<CanvasTheme>;
|
|
39
38
|
/**
|
|
40
39
|
* v2 Runtime instance.
|
|
41
40
|
* Required for action execution. If not provided, actions will not be applied.
|
|
42
41
|
*/
|
|
43
42
|
runtime?: SmartCanvasRuntime;
|
|
44
|
-
autoDetectTheme?: boolean;
|
|
45
43
|
appearance?: AppearanceConfig;
|
|
46
44
|
renderProps?: RenderProps;
|
|
47
45
|
actionHandlers?: ActionHandler;
|
|
46
|
+
/** Workspace-level theme for 3-layer inheritance (defaults → workspace → config) */
|
|
47
|
+
workspaceTheme?: CanvasThemeConfig;
|
|
48
48
|
}
|
|
49
49
|
/**
|
|
50
50
|
* Handle for interacting with a SmartCanvas instance.
|
|
@@ -59,11 +59,6 @@ export interface SmartCanvasHandle {
|
|
|
59
59
|
* Get the current config.
|
|
60
60
|
*/
|
|
61
61
|
getConfig(): Promise<CanvasConfigResponse>;
|
|
62
|
-
/**
|
|
63
|
-
* Update the config and re-apply actions.
|
|
64
|
-
* This is the primary way to modify what the canvas displays.
|
|
65
|
-
*/
|
|
66
|
-
updateConfig(newConfig: CanvasConfigResponse): Promise<void>;
|
|
67
62
|
/**
|
|
68
63
|
* Enable or disable the canvas.
|
|
69
64
|
* When disabled, all actions are reverted.
|
|
@@ -1,5 +1,18 @@
|
|
|
1
|
+
import {
|
|
2
|
+
ActivationConfigZ,
|
|
3
|
+
DecisionStrategyZ
|
|
4
|
+
} from "./chunk-P5G4KT2U.js";
|
|
5
|
+
|
|
1
6
|
// src/actions/schema.ts
|
|
2
7
|
import { z } from "zod";
|
|
8
|
+
var ActionActivationZ = {
|
|
9
|
+
activation: ActivationConfigZ.optional(),
|
|
10
|
+
triggerWhen: DecisionStrategyZ.nullable().optional()
|
|
11
|
+
};
|
|
12
|
+
var AnchorIdZ = z.object({
|
|
13
|
+
selector: z.string(),
|
|
14
|
+
route: z.union([z.string(), z.array(z.string())])
|
|
15
|
+
}).strict();
|
|
3
16
|
var HighlightStyleZ = z.object({
|
|
4
17
|
color: z.string().optional(),
|
|
5
18
|
scrimOpacity: z.number().min(0).max(1).optional(),
|
|
@@ -47,76 +60,76 @@ var TourStepForSchemaZ = z.object({
|
|
|
47
60
|
action: z.any(),
|
|
48
61
|
route: z.string().optional(),
|
|
49
62
|
onAction: z.record(z.string()).optional()
|
|
50
|
-
}).
|
|
63
|
+
}).passthrough();
|
|
51
64
|
var ScrollBehaviorZ = z.enum(["auto", "smooth", "instant"]);
|
|
52
65
|
var ScrollLogicalPositionZ = z.enum(["start", "center", "end", "nearest"]);
|
|
53
66
|
var SetTextZ = z.object({
|
|
54
67
|
kind: z.literal("content:setText"),
|
|
55
|
-
anchorId:
|
|
68
|
+
anchorId: AnchorIdZ,
|
|
56
69
|
text: z.string(),
|
|
57
70
|
label: z.string().optional()
|
|
58
|
-
}).strict();
|
|
71
|
+
}).extend(ActionActivationZ).strict();
|
|
59
72
|
var SetAttrZ = z.object({
|
|
60
73
|
kind: z.literal("content:setAttr"),
|
|
61
|
-
anchorId:
|
|
74
|
+
anchorId: AnchorIdZ,
|
|
62
75
|
attr: z.string(),
|
|
63
76
|
value: z.string(),
|
|
64
77
|
label: z.string().optional()
|
|
65
|
-
}).strict();
|
|
78
|
+
}).extend(ActionActivationZ).strict();
|
|
66
79
|
var AddClassZ = z.object({
|
|
67
80
|
kind: z.literal("content:addClass"),
|
|
68
|
-
anchorId:
|
|
81
|
+
anchorId: AnchorIdZ,
|
|
69
82
|
className: z.string(),
|
|
70
83
|
label: z.string().optional()
|
|
71
|
-
}).strict();
|
|
84
|
+
}).extend(ActionActivationZ).strict();
|
|
72
85
|
var RemoveClassZ = z.object({
|
|
73
86
|
kind: z.literal("content:removeClass"),
|
|
74
|
-
anchorId:
|
|
87
|
+
anchorId: AnchorIdZ,
|
|
75
88
|
className: z.string(),
|
|
76
89
|
label: z.string().optional()
|
|
77
|
-
}).strict();
|
|
90
|
+
}).extend(ActionActivationZ).strict();
|
|
78
91
|
var SetStyleZ = z.object({
|
|
79
92
|
kind: z.literal("content:setStyle"),
|
|
80
|
-
anchorId:
|
|
93
|
+
anchorId: AnchorIdZ,
|
|
81
94
|
styles: z.record(z.string()),
|
|
82
95
|
label: z.string().optional()
|
|
83
|
-
}).strict();
|
|
96
|
+
}).extend(ActionActivationZ).strict();
|
|
84
97
|
var InsertHtmlZ = z.object({
|
|
85
98
|
kind: z.literal("content:insertHtml"),
|
|
86
|
-
anchorId:
|
|
99
|
+
anchorId: AnchorIdZ,
|
|
87
100
|
html: z.string(),
|
|
88
101
|
position: InsertPositionZ,
|
|
89
102
|
label: z.string().optional()
|
|
90
|
-
}).strict();
|
|
103
|
+
}).extend(ActionActivationZ).strict();
|
|
91
104
|
var HighlightZ = z.object({
|
|
92
105
|
kind: z.literal("overlays:highlight"),
|
|
93
|
-
anchorId:
|
|
106
|
+
anchorId: AnchorIdZ,
|
|
94
107
|
style: HighlightStyleZ.optional(),
|
|
95
108
|
duration: z.number().optional(),
|
|
96
109
|
label: z.string().optional()
|
|
97
|
-
}).strict();
|
|
110
|
+
}).extend(ActionActivationZ).strict();
|
|
98
111
|
var PulseZ = z.object({
|
|
99
112
|
kind: z.literal("overlays:pulse"),
|
|
100
|
-
anchorId:
|
|
113
|
+
anchorId: AnchorIdZ,
|
|
101
114
|
duration: z.number().optional(),
|
|
102
115
|
label: z.string().optional()
|
|
103
|
-
}).strict();
|
|
116
|
+
}).extend(ActionActivationZ).strict();
|
|
104
117
|
var BadgeZ = z.object({
|
|
105
118
|
kind: z.literal("overlays:badge"),
|
|
106
|
-
anchorId:
|
|
119
|
+
anchorId: AnchorIdZ,
|
|
107
120
|
content: z.string(),
|
|
108
121
|
position: BadgePositionZ.optional(),
|
|
109
122
|
label: z.string().optional()
|
|
110
|
-
}).strict();
|
|
123
|
+
}).extend(ActionActivationZ).strict();
|
|
111
124
|
var TooltipZ = z.object({
|
|
112
125
|
kind: z.literal("overlays:tooltip"),
|
|
113
|
-
anchorId:
|
|
126
|
+
anchorId: AnchorIdZ,
|
|
114
127
|
content: TooltipContentZ,
|
|
115
128
|
trigger: TooltipTriggerZ.optional(),
|
|
116
129
|
placement: PlacementZ.optional(),
|
|
117
130
|
waitFor: z.string().optional(),
|
|
118
131
|
label: z.string().optional()
|
|
119
|
-
}).strict();
|
|
132
|
+
}).extend(ActionActivationZ).strict();
|
|
120
133
|
var ModalZ = z.object({
|
|
121
134
|
kind: z.literal("overlays:modal"),
|
|
122
135
|
content: ModalContentZ,
|
|
@@ -133,44 +146,44 @@ var ModalZ = z.object({
|
|
|
133
146
|
ctaButtons: z.array(CtaButtonZ).optional(),
|
|
134
147
|
waitFor: z.string().optional(),
|
|
135
148
|
label: z.string().optional()
|
|
136
|
-
}).strict();
|
|
149
|
+
}).extend(ActionActivationZ).strict();
|
|
137
150
|
var ScrollToZ = z.object({
|
|
138
151
|
kind: z.literal("navigation:scrollTo"),
|
|
139
|
-
anchorId:
|
|
152
|
+
anchorId: AnchorIdZ,
|
|
140
153
|
behavior: ScrollBehaviorZ.optional(),
|
|
141
154
|
block: ScrollLogicalPositionZ.optional(),
|
|
142
155
|
inline: ScrollLogicalPositionZ.optional(),
|
|
143
156
|
label: z.string().optional()
|
|
144
|
-
}).strict();
|
|
157
|
+
}).extend(ActionActivationZ).strict();
|
|
145
158
|
var NavigateZ = z.object({
|
|
146
159
|
kind: z.literal("navigation:navigate"),
|
|
147
160
|
url: z.string(),
|
|
148
161
|
target: z.enum(["_self", "_blank"]).optional(),
|
|
149
162
|
label: z.string().optional()
|
|
150
|
-
}).strict();
|
|
163
|
+
}).extend(ActionActivationZ).strict();
|
|
151
164
|
var MountWidgetZ = z.object({
|
|
152
165
|
kind: z.literal("core:mountWidget"),
|
|
153
166
|
slot: z.string(),
|
|
154
167
|
widget: WidgetConfigZ,
|
|
155
168
|
label: z.string().optional()
|
|
156
|
-
}).strict();
|
|
169
|
+
}).extend(ActionActivationZ).strict();
|
|
157
170
|
var WaitZ = z.object({
|
|
158
171
|
kind: z.literal("core:wait"),
|
|
159
172
|
durationMs: z.number().min(0).optional(),
|
|
160
173
|
event: z.string().optional(),
|
|
161
174
|
label: z.string().optional()
|
|
162
|
-
}).strict();
|
|
175
|
+
}).extend(ActionActivationZ).strict();
|
|
163
176
|
var SequenceZ = z.object({
|
|
164
177
|
kind: z.literal("core:sequence"),
|
|
165
178
|
actions: z.array(z.any()),
|
|
166
179
|
label: z.string().optional()
|
|
167
|
-
}).strict();
|
|
180
|
+
}).extend(ActionActivationZ).strict();
|
|
168
181
|
var ParallelZ = z.object({
|
|
169
182
|
kind: z.literal("core:parallel"),
|
|
170
183
|
actions: z.array(z.any()),
|
|
171
184
|
waitFor: z.enum(["all", "any"]).optional(),
|
|
172
185
|
label: z.string().optional()
|
|
173
|
-
}).strict();
|
|
186
|
+
}).extend(ActionActivationZ).strict();
|
|
174
187
|
var TourZ = z.object({
|
|
175
188
|
kind: z.literal("core:tour"),
|
|
176
189
|
tourId: z.string(),
|
|
@@ -178,7 +191,7 @@ var TourZ = z.object({
|
|
|
178
191
|
startStep: z.string().optional(),
|
|
179
192
|
autoStart: z.boolean().optional(),
|
|
180
193
|
label: z.string().optional()
|
|
181
|
-
}).
|
|
194
|
+
}).extend(ActionActivationZ).passthrough();
|
|
182
195
|
var coreActionStepSchemas = [
|
|
183
196
|
{ defName: "setText", schema: SetTextZ },
|
|
184
197
|
{ defName: "setAttr", schema: SetAttrZ },
|
|
@@ -201,6 +214,7 @@ var coreActionStepSchemas = [
|
|
|
201
214
|
];
|
|
202
215
|
|
|
203
216
|
export {
|
|
217
|
+
AnchorIdZ,
|
|
204
218
|
HighlightStyleZ,
|
|
205
219
|
BadgePositionZ,
|
|
206
220
|
PlacementZ,
|
|
@@ -233,4 +247,4 @@ export {
|
|
|
233
247
|
TourZ,
|
|
234
248
|
coreActionStepSchemas
|
|
235
249
|
};
|
|
236
|
-
//# sourceMappingURL=chunk-
|
|
250
|
+
//# sourceMappingURL=chunk-LR5AA5SE.js.map
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../src/actions/schema.ts"],
|
|
4
|
+
"sourcesContent": ["/**\n * Core Action Zod Schemas\n *\n * Single source of truth for the shape of all 18 core action types.\n * These schemas are converted to JSON Schema during build and merged\n * into the unified canvas-config.schema.json.\n *\n * Design decisions:\n * - `.strict()` on most objects \u2192 `additionalProperties: false` in JSON Schema\n * - Tour/TourStep use `.passthrough()` to allow adaptive-specific extensions (e.g. `workflow`)\n * - Matches `types.ts` exactly (fixes all drift from the old manual JSON defs)\n * - Recursive ActionStep references use `z.any()` as placeholder; the generator\n * replaces `{}` with `{ \"$ref\": \"#/$defs/actionStep\" }` post-conversion\n */\n\nimport { z } from 'zod';\nimport { ActivationConfigZ, DecisionStrategyZ } from '../decisions/schema';\n\n// ============================================================================\n// Shared Sub-Types\n// ============================================================================\n\n/** Optional activation config \u2014 every action can declare its own route scoping */\nconst ActionActivationZ = {\n activation: ActivationConfigZ.optional(),\n triggerWhen: DecisionStrategyZ.nullable().optional(),\n};\n\n/** Route-scoped anchor identifier */\nconst AnchorIdZ = z\n .object({\n selector: z.string(),\n route: z.union([z.string(), z.array(z.string())]),\n })\n .strict();\n\n/** Highlight style configuration */\nconst HighlightStyleZ = z\n .object({\n color: z.string().optional(),\n scrimOpacity: z.number().min(0).max(1).optional(),\n paddingPx: z.number().optional(),\n radiusPx: z.number().optional(),\n })\n .strict();\n\n/** Badge position relative to anchor */\nconst BadgePositionZ = z.enum(['top-left', 'top-right', 'bottom-left', 'bottom-right']);\n\n/**\n * Floating-ui Placement \u2014 all 12 values.\n * Matches `@floating-ui/dom` `Placement` type.\n */\nconst PlacementZ = z.enum([\n 'top',\n 'top-start',\n 'top-end',\n 'bottom',\n 'bottom-start',\n 'bottom-end',\n 'left',\n 'left-start',\n 'left-end',\n 'right',\n 'right-start',\n 'right-end',\n]);\n\n/** CTA button configuration for tooltips/modals */\nconst CtaButtonZ = z\n .object({\n label: z.string(),\n actionId: z.string(),\n primary: z.boolean().optional(),\n })\n .strict();\n\n/**\n * Tooltip content (schema-safe version).\n * Omits `cta` (legacy field with recursive ActionStep; never in JSON schema).\n */\nconst TooltipContentZ = z\n .object({\n title: z.string().optional(),\n body: z.string(),\n ctaButtons: z.array(CtaButtonZ).optional(),\n })\n .strict();\n\n/** Modal content configuration */\nconst ModalContentZ = z\n .object({\n title: z.string().optional(),\n body: z.string(),\n })\n .strict();\n\n/** Position where HTML/content should be inserted */\nconst InsertPositionZ = z.enum(['before', 'after', 'prepend', 'append', 'replace']);\n\n/** Tooltip trigger mode */\nconst TooltipTriggerZ = z.enum(['immediate', 'hover', 'click']);\n\n/** Widget configuration for surface mounting */\nconst WidgetConfigZ = z\n .object({\n widgetId: z.string(),\n props: z.record(z.unknown()).optional(),\n priority: z.number().optional(),\n })\n .strict();\n\n/**\n * Tour step (schema-safe version).\n * Uses `z.any()` for the `action` field \u2014 the generator replaces it with a $ref.\n */\nconst TourStepForSchemaZ = z\n .object({\n id: z.string(),\n action: z.any(),\n route: z.string().optional(),\n onAction: z.record(z.string()).optional(),\n })\n .passthrough();\n\n// ============================================================================\n// ScrollBehavior / ScrollLogicalPosition (DOM built-in types as Zod enums)\n// ============================================================================\n\nconst ScrollBehaviorZ = z.enum(['auto', 'smooth', 'instant']);\nconst ScrollLogicalPositionZ = z.enum(['start', 'center', 'end', 'nearest']);\n\n// ============================================================================\n// Core Action Schemas (18 total)\n// ============================================================================\n\n// --- Content Actions ---\n\nconst SetTextZ = z\n .object({\n kind: z.literal('content:setText'),\n anchorId: AnchorIdZ,\n text: z.string(),\n label: z.string().optional(),\n })\n .extend(ActionActivationZ)\n .strict();\n\nconst SetAttrZ = z\n .object({\n kind: z.literal('content:setAttr'),\n anchorId: AnchorIdZ,\n attr: z.string(),\n value: z.string(),\n label: z.string().optional(),\n })\n .extend(ActionActivationZ)\n .strict();\n\nconst AddClassZ = z\n .object({\n kind: z.literal('content:addClass'),\n anchorId: AnchorIdZ,\n className: z.string(),\n label: z.string().optional(),\n })\n .extend(ActionActivationZ)\n .strict();\n\nconst RemoveClassZ = z\n .object({\n kind: z.literal('content:removeClass'),\n anchorId: AnchorIdZ,\n className: z.string(),\n label: z.string().optional(),\n })\n .extend(ActionActivationZ)\n .strict();\n\nconst SetStyleZ = z\n .object({\n kind: z.literal('content:setStyle'),\n anchorId: AnchorIdZ,\n styles: z.record(z.string()),\n label: z.string().optional(),\n })\n .extend(ActionActivationZ)\n .strict();\n\nconst InsertHtmlZ = z\n .object({\n kind: z.literal('content:insertHtml'),\n anchorId: AnchorIdZ,\n html: z.string(),\n position: InsertPositionZ,\n label: z.string().optional(),\n })\n .extend(ActionActivationZ)\n .strict();\n\n// --- Overlay Actions ---\n\nconst HighlightZ = z\n .object({\n kind: z.literal('overlays:highlight'),\n anchorId: AnchorIdZ,\n style: HighlightStyleZ.optional(),\n duration: z.number().optional(),\n label: z.string().optional(),\n })\n .extend(ActionActivationZ)\n .strict();\n\nconst PulseZ = z\n .object({\n kind: z.literal('overlays:pulse'),\n anchorId: AnchorIdZ,\n duration: z.number().optional(),\n label: z.string().optional(),\n })\n .extend(ActionActivationZ)\n .strict();\n\nconst BadgeZ = z\n .object({\n kind: z.literal('overlays:badge'),\n anchorId: AnchorIdZ,\n content: z.string(),\n position: BadgePositionZ.optional(),\n label: z.string().optional(),\n })\n .extend(ActionActivationZ)\n .strict();\n\nconst TooltipZ = z\n .object({\n kind: z.literal('overlays:tooltip'),\n anchorId: AnchorIdZ,\n content: TooltipContentZ,\n trigger: TooltipTriggerZ.optional(),\n placement: PlacementZ.optional(),\n waitFor: z.string().optional(),\n label: z.string().optional(),\n })\n .extend(ActionActivationZ)\n .strict();\n\nconst ModalZ = z\n .object({\n kind: z.literal('overlays:modal'),\n content: ModalContentZ,\n size: z.enum(['sm', 'md', 'lg']).optional(),\n blocking: z.boolean().optional(),\n scrim: z\n .object({\n opacity: z.number().min(0).max(1).optional(),\n })\n .strict()\n .optional(),\n dismiss: z\n .object({\n onEsc: z.boolean().optional(),\n closeButton: z.boolean().optional(),\n timeoutMs: z.number().min(0).optional(),\n })\n .strict()\n .optional(),\n ctaButtons: z.array(CtaButtonZ).optional(),\n waitFor: z.string().optional(),\n label: z.string().optional(),\n })\n .extend(ActionActivationZ)\n .strict();\n\n// --- Navigation Actions ---\n\nconst ScrollToZ = z\n .object({\n kind: z.literal('navigation:scrollTo'),\n anchorId: AnchorIdZ,\n behavior: ScrollBehaviorZ.optional(),\n block: ScrollLogicalPositionZ.optional(),\n inline: ScrollLogicalPositionZ.optional(),\n label: z.string().optional(),\n })\n .extend(ActionActivationZ)\n .strict();\n\nconst NavigateZ = z\n .object({\n kind: z.literal('navigation:navigate'),\n url: z.string(),\n target: z.enum(['_self', '_blank']).optional(),\n label: z.string().optional(),\n })\n .extend(ActionActivationZ)\n .strict();\n\n// --- Core Primitives ---\n\nconst MountWidgetZ = z\n .object({\n kind: z.literal('core:mountWidget'),\n slot: z.string(),\n widget: WidgetConfigZ,\n label: z.string().optional(),\n })\n .extend(ActionActivationZ)\n .strict();\n\nconst WaitZ = z\n .object({\n kind: z.literal('core:wait'),\n durationMs: z.number().min(0).optional(),\n event: z.string().optional(),\n label: z.string().optional(),\n })\n .extend(ActionActivationZ)\n .strict();\n\n/**\n * Sequence \u2014 executes actions serially.\n * `actions` uses `z.any()` as placeholder for recursive ActionStep refs.\n */\nconst SequenceZ = z\n .object({\n kind: z.literal('core:sequence'),\n actions: z.array(z.any()),\n label: z.string().optional(),\n })\n .extend(ActionActivationZ)\n .strict();\n\n/**\n * Parallel \u2014 executes actions concurrently.\n * `actions` uses `z.any()` as placeholder for recursive ActionStep refs.\n */\nconst ParallelZ = z\n .object({\n kind: z.literal('core:parallel'),\n actions: z.array(z.any()),\n waitFor: z.enum(['all', 'any']).optional(),\n label: z.string().optional(),\n })\n .extend(ActionActivationZ)\n .strict();\n\n/**\n * Tour \u2014 orchestrate sequential steps with cross-page state.\n * `steps` contains TourStepForSchemaZ which uses z.any() for step.action.\n */\nconst TourZ = z\n .object({\n kind: z.literal('core:tour'),\n tourId: z.string(),\n steps: z.array(TourStepForSchemaZ).min(1),\n startStep: z.string().optional(),\n autoStart: z.boolean().optional(),\n label: z.string().optional(),\n })\n .extend(ActionActivationZ)\n .passthrough();\n\n// ============================================================================\n// Export: Array for unified schema generation\n// ============================================================================\n\n/**\n * All 18 core action step schemas for unified JSON Schema generation.\n * The generator imports this array and converts each to JSON Schema,\n * then merges them into `$defs` and `actionStep.oneOf`.\n *\n * `defName` values match the existing `$defs` keys for backward compat.\n */\nexport const coreActionStepSchemas = [\n { defName: 'setText', schema: SetTextZ },\n { defName: 'setAttr', schema: SetAttrZ },\n { defName: 'addClass', schema: AddClassZ },\n { defName: 'removeClass', schema: RemoveClassZ },\n { defName: 'setStyle', schema: SetStyleZ },\n { defName: 'insertHtml', schema: InsertHtmlZ },\n { defName: 'highlight', schema: HighlightZ },\n { defName: 'pulse', schema: PulseZ },\n { defName: 'badge', schema: BadgeZ },\n { defName: 'tooltip', schema: TooltipZ },\n { defName: 'modal', schema: ModalZ },\n { defName: 'scrollTo', schema: ScrollToZ },\n { defName: 'navigate', schema: NavigateZ },\n { defName: 'mountWidget', schema: MountWidgetZ },\n { defName: 'wait', schema: WaitZ },\n { defName: 'sequence', schema: SequenceZ },\n { defName: 'parallel', schema: ParallelZ },\n { defName: 'tour', schema: TourZ },\n];\n\n// ============================================================================\n// Named Exports (for unit tests and direct usage)\n// ============================================================================\n\nexport {\n // Sub-types\n AnchorIdZ,\n HighlightStyleZ,\n BadgePositionZ,\n PlacementZ,\n CtaButtonZ,\n TooltipContentZ,\n ModalContentZ,\n InsertPositionZ,\n TooltipTriggerZ,\n WidgetConfigZ,\n TourStepForSchemaZ,\n ScrollBehaviorZ,\n ScrollLogicalPositionZ,\n // Actions\n SetTextZ,\n SetAttrZ,\n AddClassZ,\n RemoveClassZ,\n SetStyleZ,\n InsertHtmlZ,\n HighlightZ,\n PulseZ,\n BadgeZ,\n TooltipZ,\n ModalZ,\n ScrollToZ,\n NavigateZ,\n MountWidgetZ,\n WaitZ,\n SequenceZ,\n ParallelZ,\n TourZ,\n};\n"],
|
|
5
|
+
"mappings": "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",
|
|
6
|
+
"names": []
|
|
7
|
+
}
|