@syntrologie/runtime-sdk 2.3.0 → 2.4.0-canary.2
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/actions/schema.js +2 -1
- package/dist/chunk-BIYMC56J.js +165 -0
- package/dist/chunk-BIYMC56J.js.map +7 -0
- package/dist/{chunk-AYTRRBR5.js → chunk-DOJR7R46.js} +1 -16
- package/dist/{chunk-AYTRRBR5.js.map → chunk-DOJR7R46.js.map} +1 -1
- package/dist/chunk-JMHRHAEL.js +18 -0
- package/dist/chunk-JMHRHAEL.js.map +7 -0
- package/dist/{chunk-RUKIPJEJ.js → chunk-ZDZ3IYFN.js} +16 -41
- package/dist/chunk-ZDZ3IYFN.js.map +7 -0
- package/dist/config/schema.d.ts +4107 -0
- package/dist/config/schema.js +73 -0
- package/dist/config/schema.js.map +7 -0
- package/dist/context/ContextManager.d.ts +3 -3
- package/dist/context/types.d.ts +1 -1
- package/dist/decisions/schema.d.ts +1487 -49
- package/dist/decisions/schema.js +54 -0
- package/dist/decisions/schema.js.map +7 -0
- package/dist/decisions/types.d.ts +1 -1
- package/dist/hooks/useShadowCanvasConfig.d.ts +1 -3
- package/dist/index.js +48 -149
- package/dist/index.js.map +4 -4
- package/dist/react.js +3 -2
- package/dist/react.js.map +1 -1
- package/dist/runtime.d.ts +4 -4
- package/dist/smart-canvas.esm.js +27 -27
- package/dist/smart-canvas.esm.js.map +3 -3
- package/dist/smart-canvas.js +22 -36
- package/dist/smart-canvas.js.map +3 -3
- package/dist/smart-canvas.min.js +27 -27
- package/dist/smart-canvas.min.js.map +3 -3
- package/dist/types.d.ts +17 -76
- package/dist/version.d.ts +1 -1
- package/package.json +7 -7
- package/schema/canvas-config.schema.json +2044 -299
- package/dist/chunk-RUKIPJEJ.js.map +0 -7
- package/schema/canvas-config.base.schema.json +0 -351
package/dist/actions/schema.js
CHANGED
|
@@ -0,0 +1,165 @@
|
|
|
1
|
+
// src/decisions/schema.ts
|
|
2
|
+
import { z } from "zod";
|
|
3
|
+
var PageUrlConditionZ = z.object({
|
|
4
|
+
type: z.literal("page_url"),
|
|
5
|
+
url: z.string()
|
|
6
|
+
});
|
|
7
|
+
var RouteConditionZ = z.object({
|
|
8
|
+
type: z.literal("route"),
|
|
9
|
+
routeId: z.string()
|
|
10
|
+
});
|
|
11
|
+
var AnchorVisibleConditionZ = z.object({
|
|
12
|
+
type: z.literal("anchor_visible"),
|
|
13
|
+
anchorId: z.string(),
|
|
14
|
+
state: z.enum(["visible", "present", "absent"])
|
|
15
|
+
});
|
|
16
|
+
var EventOccurredConditionZ = z.object({
|
|
17
|
+
type: z.literal("event_occurred"),
|
|
18
|
+
eventName: z.string(),
|
|
19
|
+
withinMs: z.number().optional()
|
|
20
|
+
});
|
|
21
|
+
var StateEqualsConditionZ = z.object({
|
|
22
|
+
type: z.literal("state_equals"),
|
|
23
|
+
key: z.string(),
|
|
24
|
+
value: z.unknown()
|
|
25
|
+
});
|
|
26
|
+
var ViewportConditionZ = z.object({
|
|
27
|
+
type: z.literal("viewport"),
|
|
28
|
+
minWidth: z.number().optional(),
|
|
29
|
+
maxWidth: z.number().optional(),
|
|
30
|
+
minHeight: z.number().optional(),
|
|
31
|
+
maxHeight: z.number().optional()
|
|
32
|
+
});
|
|
33
|
+
var SessionMetricConditionZ = z.object({
|
|
34
|
+
type: z.literal("session_metric"),
|
|
35
|
+
key: z.string(),
|
|
36
|
+
operator: z.enum(["gte", "lte", "eq", "gt", "lt"]),
|
|
37
|
+
threshold: z.number()
|
|
38
|
+
});
|
|
39
|
+
var DismissedConditionZ = z.object({
|
|
40
|
+
type: z.literal("dismissed"),
|
|
41
|
+
key: z.string(),
|
|
42
|
+
inverted: z.boolean().optional()
|
|
43
|
+
});
|
|
44
|
+
var CooldownActiveConditionZ = z.object({
|
|
45
|
+
type: z.literal("cooldown_active"),
|
|
46
|
+
key: z.string(),
|
|
47
|
+
inverted: z.boolean().optional()
|
|
48
|
+
});
|
|
49
|
+
var FrequencyLimitConditionZ = z.object({
|
|
50
|
+
type: z.literal("frequency_limit"),
|
|
51
|
+
key: z.string(),
|
|
52
|
+
limit: z.number(),
|
|
53
|
+
inverted: z.boolean().optional()
|
|
54
|
+
});
|
|
55
|
+
var EventCountConditionZ = z.object({
|
|
56
|
+
type: z.literal("event_count"),
|
|
57
|
+
key: z.string(),
|
|
58
|
+
operator: z.enum(["gte", "lte", "eq", "gt", "lt"]),
|
|
59
|
+
count: z.number().int().min(0),
|
|
60
|
+
withinMs: z.number().positive().optional()
|
|
61
|
+
});
|
|
62
|
+
var ConditionZ = z.discriminatedUnion("type", [
|
|
63
|
+
PageUrlConditionZ,
|
|
64
|
+
RouteConditionZ,
|
|
65
|
+
AnchorVisibleConditionZ,
|
|
66
|
+
EventOccurredConditionZ,
|
|
67
|
+
StateEqualsConditionZ,
|
|
68
|
+
ViewportConditionZ,
|
|
69
|
+
SessionMetricConditionZ,
|
|
70
|
+
DismissedConditionZ,
|
|
71
|
+
CooldownActiveConditionZ,
|
|
72
|
+
FrequencyLimitConditionZ,
|
|
73
|
+
EventCountConditionZ
|
|
74
|
+
]);
|
|
75
|
+
var RuleZ = z.object({
|
|
76
|
+
conditions: z.array(ConditionZ),
|
|
77
|
+
value: z.unknown()
|
|
78
|
+
});
|
|
79
|
+
var RuleStrategyZ = z.object({
|
|
80
|
+
type: z.literal("rules"),
|
|
81
|
+
rules: z.array(RuleZ),
|
|
82
|
+
default: z.unknown()
|
|
83
|
+
});
|
|
84
|
+
var ScoreStrategyZ = z.object({
|
|
85
|
+
type: z.literal("score"),
|
|
86
|
+
field: z.string(),
|
|
87
|
+
threshold: z.number(),
|
|
88
|
+
above: z.unknown(),
|
|
89
|
+
below: z.unknown()
|
|
90
|
+
});
|
|
91
|
+
var ModelStrategyZ = z.object({
|
|
92
|
+
type: z.literal("model"),
|
|
93
|
+
modelId: z.string(),
|
|
94
|
+
inputs: z.array(z.string()),
|
|
95
|
+
outputMapping: z.record(z.string(), z.unknown()),
|
|
96
|
+
default: z.unknown()
|
|
97
|
+
});
|
|
98
|
+
var ExternalStrategyZ = z.object({
|
|
99
|
+
type: z.literal("external"),
|
|
100
|
+
endpoint: z.string(),
|
|
101
|
+
method: z.enum(["GET", "POST"]).optional(),
|
|
102
|
+
default: z.unknown(),
|
|
103
|
+
timeoutMs: z.number().optional()
|
|
104
|
+
});
|
|
105
|
+
var DecisionStrategyZ = z.discriminatedUnion("type", [
|
|
106
|
+
RuleStrategyZ,
|
|
107
|
+
ScoreStrategyZ,
|
|
108
|
+
ModelStrategyZ,
|
|
109
|
+
ExternalStrategyZ
|
|
110
|
+
]);
|
|
111
|
+
var RouteFilterZ = z.object({
|
|
112
|
+
include: z.array(z.string()).optional(),
|
|
113
|
+
exclude: z.array(z.string()).optional()
|
|
114
|
+
});
|
|
115
|
+
var ActivationConfigZ = z.object({
|
|
116
|
+
routes: RouteFilterZ,
|
|
117
|
+
strategy: DecisionStrategyZ.optional()
|
|
118
|
+
});
|
|
119
|
+
function validateCondition(data) {
|
|
120
|
+
return ConditionZ.safeParse(data);
|
|
121
|
+
}
|
|
122
|
+
function validateStrategy(data) {
|
|
123
|
+
return DecisionStrategyZ.safeParse(data);
|
|
124
|
+
}
|
|
125
|
+
function validateActivationConfig(data) {
|
|
126
|
+
return ActivationConfigZ.safeParse(data);
|
|
127
|
+
}
|
|
128
|
+
var decisionSchemas = [
|
|
129
|
+
{ defName: "activationConfig", schema: ActivationConfigZ },
|
|
130
|
+
{ defName: "routeFilter", schema: RouteFilterZ },
|
|
131
|
+
{ defName: "ruleStrategy", schema: RuleStrategyZ },
|
|
132
|
+
{ defName: "scoreStrategy", schema: ScoreStrategyZ },
|
|
133
|
+
{ defName: "modelStrategy", schema: ModelStrategyZ },
|
|
134
|
+
{ defName: "externalStrategy", schema: ExternalStrategyZ },
|
|
135
|
+
{ defName: "rule", schema: RuleZ },
|
|
136
|
+
{ defName: "condition", schema: ConditionZ }
|
|
137
|
+
];
|
|
138
|
+
|
|
139
|
+
export {
|
|
140
|
+
PageUrlConditionZ,
|
|
141
|
+
RouteConditionZ,
|
|
142
|
+
AnchorVisibleConditionZ,
|
|
143
|
+
EventOccurredConditionZ,
|
|
144
|
+
StateEqualsConditionZ,
|
|
145
|
+
ViewportConditionZ,
|
|
146
|
+
SessionMetricConditionZ,
|
|
147
|
+
DismissedConditionZ,
|
|
148
|
+
CooldownActiveConditionZ,
|
|
149
|
+
FrequencyLimitConditionZ,
|
|
150
|
+
EventCountConditionZ,
|
|
151
|
+
ConditionZ,
|
|
152
|
+
RuleZ,
|
|
153
|
+
RuleStrategyZ,
|
|
154
|
+
ScoreStrategyZ,
|
|
155
|
+
ModelStrategyZ,
|
|
156
|
+
ExternalStrategyZ,
|
|
157
|
+
DecisionStrategyZ,
|
|
158
|
+
RouteFilterZ,
|
|
159
|
+
ActivationConfigZ,
|
|
160
|
+
validateCondition,
|
|
161
|
+
validateStrategy,
|
|
162
|
+
validateActivationConfig,
|
|
163
|
+
decisionSchemas
|
|
164
|
+
};
|
|
165
|
+
//# sourceMappingURL=chunk-BIYMC56J.js.map
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../src/decisions/schema.ts"],
|
|
4
|
+
"sourcesContent": ["/**\n * Zod schemas for decision strategy validation.\n */\nimport { z } from 'zod';\n\n// =============================================================================\n// CONDITION SCHEMAS\n// =============================================================================\n\nexport const PageUrlConditionZ = z.object({\n type: z.literal('page_url'),\n url: z.string(),\n});\n\nexport const RouteConditionZ = z.object({\n type: z.literal('route'),\n routeId: z.string(),\n});\n\nexport const AnchorVisibleConditionZ = z.object({\n type: z.literal('anchor_visible'),\n anchorId: z.string(),\n state: z.enum(['visible', 'present', 'absent']),\n});\n\nexport const EventOccurredConditionZ = z.object({\n type: z.literal('event_occurred'),\n eventName: z.string(),\n withinMs: z.number().optional(),\n});\n\nexport const StateEqualsConditionZ = z.object({\n type: z.literal('state_equals'),\n key: z.string(),\n value: z.unknown(),\n});\n\nexport const ViewportConditionZ = z.object({\n type: z.literal('viewport'),\n minWidth: z.number().optional(),\n maxWidth: z.number().optional(),\n minHeight: z.number().optional(),\n maxHeight: z.number().optional(),\n});\n\nexport const SessionMetricConditionZ = z.object({\n type: z.literal('session_metric'),\n key: z.string(),\n operator: z.enum(['gte', 'lte', 'eq', 'gt', 'lt']),\n threshold: z.number(),\n});\n\nexport const DismissedConditionZ = z.object({\n type: z.literal('dismissed'),\n key: z.string(),\n inverted: z.boolean().optional(),\n});\n\nexport const CooldownActiveConditionZ = z.object({\n type: z.literal('cooldown_active'),\n key: z.string(),\n inverted: z.boolean().optional(),\n});\n\nexport const FrequencyLimitConditionZ = z.object({\n type: z.literal('frequency_limit'),\n key: z.string(),\n limit: z.number(),\n inverted: z.boolean().optional(),\n});\n\nexport const EventCountConditionZ = z.object({\n type: z.literal('event_count'),\n key: z.string(),\n operator: z.enum(['gte', 'lte', 'eq', 'gt', 'lt']),\n count: z.number().int().min(0),\n withinMs: z.number().positive().optional(),\n});\n\nexport const ConditionZ = z.discriminatedUnion('type', [\n PageUrlConditionZ,\n RouteConditionZ,\n AnchorVisibleConditionZ,\n EventOccurredConditionZ,\n StateEqualsConditionZ,\n ViewportConditionZ,\n SessionMetricConditionZ,\n DismissedConditionZ,\n CooldownActiveConditionZ,\n FrequencyLimitConditionZ,\n EventCountConditionZ,\n]);\n\n// =============================================================================\n// STRATEGY SCHEMAS\n// =============================================================================\n\nexport const RuleZ = z.object({\n conditions: z.array(ConditionZ),\n value: z.unknown(),\n});\n\nexport const RuleStrategyZ = z.object({\n type: z.literal('rules'),\n rules: z.array(RuleZ),\n default: z.unknown(),\n});\n\nexport const ScoreStrategyZ = z.object({\n type: z.literal('score'),\n field: z.string(),\n threshold: z.number(),\n above: z.unknown(),\n below: z.unknown(),\n});\n\nexport const ModelStrategyZ = z.object({\n type: z.literal('model'),\n modelId: z.string(),\n inputs: z.array(z.string()),\n outputMapping: z.record(z.string(), z.unknown()),\n default: z.unknown(),\n});\n\nexport const ExternalStrategyZ = z.object({\n type: z.literal('external'),\n endpoint: z.string(),\n method: z.enum(['GET', 'POST']).optional(),\n default: z.unknown(),\n timeoutMs: z.number().optional(),\n});\n\nexport const DecisionStrategyZ = z.discriminatedUnion('type', [\n RuleStrategyZ,\n ScoreStrategyZ,\n ModelStrategyZ,\n ExternalStrategyZ,\n]);\n\n// =============================================================================\n// ACTIVATION CONFIG SCHEMA\n// =============================================================================\n\nexport const RouteFilterZ = z.object({\n include: z.array(z.string()).optional(),\n exclude: z.array(z.string()).optional(),\n});\n\nexport const ActivationConfigZ = z.object({\n routes: RouteFilterZ,\n strategy: DecisionStrategyZ.optional(),\n});\n\n// =============================================================================\n// VALIDATION FUNCTIONS\n// =============================================================================\n\n/**\n * Validate a Condition object.\n */\nexport function validateCondition(data: unknown) {\n return ConditionZ.safeParse(data);\n}\n\n/**\n * Validate a DecisionStrategy object.\n */\nexport function validateStrategy(data: unknown) {\n return DecisionStrategyZ.safeParse(data);\n}\n\n/**\n * Validate an ActivationConfig object.\n */\nexport function validateActivationConfig(data: unknown) {\n return ActivationConfigZ.safeParse(data);\n}\n\n// =============================================================================\n// Export: Array for unified schema generation\n// =============================================================================\n\n/**\n * Decision schemas for unified JSON Schema generation.\n * The generator imports this array and converts each to a JSON Schema $def.\n *\n * Note: `decisionStrategy` is NOT included here \u2014 it's a oneOf wrapper that\n * the generator builds from $refs to the four strategy defs.\n */\nexport const decisionSchemas = [\n { defName: 'activationConfig', schema: ActivationConfigZ },\n { defName: 'routeFilter', schema: RouteFilterZ },\n { defName: 'ruleStrategy', schema: RuleStrategyZ },\n { defName: 'scoreStrategy', schema: ScoreStrategyZ },\n { defName: 'modelStrategy', schema: ModelStrategyZ },\n { defName: 'externalStrategy', schema: ExternalStrategyZ },\n { defName: 'rule', schema: RuleZ },\n { defName: 'condition', schema: ConditionZ },\n];\n\n// =============================================================================\n// TYPE INFERENCE\n// =============================================================================\n\nexport type ConditionSchema = z.infer<typeof ConditionZ>;\nexport type RuleSchema = z.infer<typeof RuleZ>;\nexport type DecisionStrategySchema = z.infer<typeof DecisionStrategyZ>;\nexport type ActivationConfigSchema = z.infer<typeof ActivationConfigZ>;\n"],
|
|
5
|
+
"mappings": "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",
|
|
6
|
+
"names": []
|
|
7
|
+
}
|
|
@@ -1,14 +1,3 @@
|
|
|
1
|
-
var __defProp = Object.defineProperty;
|
|
2
|
-
var __typeError = (msg) => {
|
|
3
|
-
throw TypeError(msg);
|
|
4
|
-
};
|
|
5
|
-
var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
|
|
6
|
-
var __publicField = (obj, key, value) => __defNormalProp(obj, typeof key !== "symbol" ? key + "" : key, value);
|
|
7
|
-
var __accessCheck = (obj, member, msg) => member.has(obj) || __typeError("Cannot " + msg);
|
|
8
|
-
var __privateGet = (obj, member, getter) => (__accessCheck(obj, member, "read from private field"), getter ? getter.call(obj) : member.get(obj));
|
|
9
|
-
var __privateAdd = (obj, member, value) => member.has(obj) ? __typeError("Cannot add the same private member more than once") : member instanceof WeakSet ? member.add(obj) : member.set(obj, value);
|
|
10
|
-
var __privateSet = (obj, member, value, setter) => (__accessCheck(obj, member, "write to private field"), setter ? setter.call(obj, value) : member.set(obj, value), value);
|
|
11
|
-
|
|
12
1
|
// src/actions/schema.ts
|
|
13
2
|
import { z } from "zod";
|
|
14
3
|
var HighlightStyleZ = z.object({
|
|
@@ -212,10 +201,6 @@ var coreActionStepSchemas = [
|
|
|
212
201
|
];
|
|
213
202
|
|
|
214
203
|
export {
|
|
215
|
-
__publicField,
|
|
216
|
-
__privateGet,
|
|
217
|
-
__privateAdd,
|
|
218
|
-
__privateSet,
|
|
219
204
|
HighlightStyleZ,
|
|
220
205
|
BadgePositionZ,
|
|
221
206
|
PlacementZ,
|
|
@@ -248,4 +233,4 @@ export {
|
|
|
248
233
|
TourZ,
|
|
249
234
|
coreActionStepSchemas
|
|
250
235
|
};
|
|
251
|
-
//# sourceMappingURL=chunk-
|
|
236
|
+
//# sourceMappingURL=chunk-DOJR7R46.js.map
|
|
@@ -2,6 +2,6 @@
|
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../src/actions/schema.ts"],
|
|
4
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 every object \u2192 `additionalProperties: false` in JSON Schema\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';\n\n// ============================================================================\n// Shared Sub-Types\n// ============================================================================\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 .strict();\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: z.string(),\n text: z.string(),\n label: z.string().optional(),\n })\n .strict();\n\nconst SetAttrZ = z\n .object({\n kind: z.literal('content:setAttr'),\n anchorId: z.string(),\n attr: z.string(),\n value: z.string(),\n label: z.string().optional(),\n })\n .strict();\n\nconst AddClassZ = z\n .object({\n kind: z.literal('content:addClass'),\n anchorId: z.string(),\n className: z.string(),\n label: z.string().optional(),\n })\n .strict();\n\nconst RemoveClassZ = z\n .object({\n kind: z.literal('content:removeClass'),\n anchorId: z.string(),\n className: z.string(),\n label: z.string().optional(),\n })\n .strict();\n\nconst SetStyleZ = z\n .object({\n kind: z.literal('content:setStyle'),\n anchorId: z.string(),\n styles: z.record(z.string()),\n label: z.string().optional(),\n })\n .strict();\n\nconst InsertHtmlZ = z\n .object({\n kind: z.literal('content:insertHtml'),\n anchorId: z.string(),\n html: z.string(),\n position: InsertPositionZ,\n label: z.string().optional(),\n })\n .strict();\n\n// --- Overlay Actions ---\n\nconst HighlightZ = z\n .object({\n kind: z.literal('overlays:highlight'),\n anchorId: z.string(),\n style: HighlightStyleZ.optional(),\n duration: z.number().optional(),\n label: z.string().optional(),\n })\n .strict();\n\nconst PulseZ = z\n .object({\n kind: z.literal('overlays:pulse'),\n anchorId: z.string(),\n duration: z.number().optional(),\n label: z.string().optional(),\n })\n .strict();\n\nconst BadgeZ = z\n .object({\n kind: z.literal('overlays:badge'),\n anchorId: z.string(),\n content: z.string(),\n position: BadgePositionZ.optional(),\n label: z.string().optional(),\n })\n .strict();\n\nconst TooltipZ = z\n .object({\n kind: z.literal('overlays:tooltip'),\n anchorId: z.string(),\n content: TooltipContentZ,\n trigger: TooltipTriggerZ.optional(),\n placement: PlacementZ.optional(),\n waitFor: z.string().optional(),\n label: z.string().optional(),\n })\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 .strict();\n\n// --- Navigation Actions ---\n\nconst ScrollToZ = z\n .object({\n kind: z.literal('navigation:scrollTo'),\n anchorId: z.string(),\n behavior: ScrollBehaviorZ.optional(),\n block: ScrollLogicalPositionZ.optional(),\n inline: ScrollLogicalPositionZ.optional(),\n label: z.string().optional(),\n })\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 .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 .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 .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 .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 .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 .strict();\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 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": "
|
|
5
|
+
"mappings": "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",
|
|
6
6
|
"names": []
|
|
7
7
|
}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
var __defProp = Object.defineProperty;
|
|
2
|
+
var __typeError = (msg) => {
|
|
3
|
+
throw TypeError(msg);
|
|
4
|
+
};
|
|
5
|
+
var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
|
|
6
|
+
var __publicField = (obj, key, value) => __defNormalProp(obj, typeof key !== "symbol" ? key + "" : key, value);
|
|
7
|
+
var __accessCheck = (obj, member, msg) => member.has(obj) || __typeError("Cannot " + msg);
|
|
8
|
+
var __privateGet = (obj, member, getter) => (__accessCheck(obj, member, "read from private field"), getter ? getter.call(obj) : member.get(obj));
|
|
9
|
+
var __privateAdd = (obj, member, value) => member.has(obj) ? __typeError("Cannot add the same private member more than once") : member instanceof WeakSet ? member.add(obj) : member.set(obj, value);
|
|
10
|
+
var __privateSet = (obj, member, value, setter) => (__accessCheck(obj, member, "write to private field"), setter ? setter.call(obj, value) : member.set(obj, value), value);
|
|
11
|
+
|
|
12
|
+
export {
|
|
13
|
+
__publicField,
|
|
14
|
+
__privateGet,
|
|
15
|
+
__privateAdd,
|
|
16
|
+
__privateSet
|
|
17
|
+
};
|
|
18
|
+
//# sourceMappingURL=chunk-JMHRHAEL.js.map
|
|
@@ -3,7 +3,7 @@ import {
|
|
|
3
3
|
__privateGet,
|
|
4
4
|
__privateSet,
|
|
5
5
|
__publicField
|
|
6
|
-
} from "./chunk-
|
|
6
|
+
} from "./chunk-JMHRHAEL.js";
|
|
7
7
|
|
|
8
8
|
// ../adaptives/adaptive-content/dist/reconciliation-guard.js
|
|
9
9
|
function guardAgainstReconciliation(container, anchor, reinsertFn, opts) {
|
|
@@ -2193,7 +2193,7 @@ function getAntiFlickerSnippet(config = {}) {
|
|
|
2193
2193
|
}
|
|
2194
2194
|
|
|
2195
2195
|
// src/version.ts
|
|
2196
|
-
var SDK_VERSION = "2.
|
|
2196
|
+
var SDK_VERSION = "2.4.0-canary.2";
|
|
2197
2197
|
|
|
2198
2198
|
// src/types.ts
|
|
2199
2199
|
var SDK_SCHEMA_VERSION = "2.0";
|
|
@@ -2216,8 +2216,7 @@ function resolveVariantConfigs(client, keys, _strategy = "first-match") {
|
|
|
2216
2216
|
...variant.configVersion && { configVersion: variant.configVersion },
|
|
2217
2217
|
...variant.canvasTitle && { canvasTitle: variant.canvasTitle },
|
|
2218
2218
|
...variant.theme && { theme: variant.theme },
|
|
2219
|
-
...variant.launcher && { launcher: variant.launcher }
|
|
2220
|
-
...variant.routes && { routes: variant.routes }
|
|
2219
|
+
...variant.launcher && { launcher: variant.launcher }
|
|
2221
2220
|
};
|
|
2222
2221
|
}
|
|
2223
2222
|
}
|
|
@@ -3888,9 +3887,6 @@ function useShadowCanvasConfig({
|
|
|
3888
3887
|
const response = await fetcher();
|
|
3889
3888
|
debug("SmartCanvas Config", "Raw config response", response);
|
|
3890
3889
|
let tiles = response.tiles || [];
|
|
3891
|
-
if (runtime3 && response.routes) {
|
|
3892
|
-
runtime3.setRoutes(response.routes);
|
|
3893
|
-
}
|
|
3894
3890
|
if (runtime3) {
|
|
3895
3891
|
tiles = await runtime3.filterTiles(tiles);
|
|
3896
3892
|
if (experiments) {
|
|
@@ -3908,8 +3904,7 @@ function useShadowCanvasConfig({
|
|
|
3908
3904
|
canvasTitle: response.canvasTitle,
|
|
3909
3905
|
configVersion: response.configVersion,
|
|
3910
3906
|
theme: response.theme,
|
|
3911
|
-
launcher: response.launcher
|
|
3912
|
-
routes: response.routes
|
|
3907
|
+
launcher: response.launcher
|
|
3913
3908
|
});
|
|
3914
3909
|
} catch (err) {
|
|
3915
3910
|
const message = err instanceof Error ? err.message : "Unknown error";
|
|
@@ -3933,24 +3928,6 @@ function useShadowCanvasConfig({
|
|
|
3933
3928
|
// src/SmartCanvasApp.tsx
|
|
3934
3929
|
import { useEffect as useEffect8, useMemo as useMemo4, useRef as useRef5, useState as useState7 } from "react";
|
|
3935
3930
|
import { jsx as jsx7 } from "react/jsx-runtime";
|
|
3936
|
-
function isRouteAllowed(routes, pathname) {
|
|
3937
|
-
var _a2, _b;
|
|
3938
|
-
if (!routes) return true;
|
|
3939
|
-
if ((_a2 = routes.include) == null ? void 0 : _a2.length) {
|
|
3940
|
-
return routes.include.some((pattern) => matchRoute(pattern, pathname));
|
|
3941
|
-
}
|
|
3942
|
-
if ((_b = routes.exclude) == null ? void 0 : _b.length) {
|
|
3943
|
-
return !routes.exclude.some((pattern) => matchRoute(pattern, pathname));
|
|
3944
|
-
}
|
|
3945
|
-
return true;
|
|
3946
|
-
}
|
|
3947
|
-
function matchRoute(pattern, pathname) {
|
|
3948
|
-
if (pattern.endsWith("/*")) {
|
|
3949
|
-
const prefix = pattern.slice(0, -2);
|
|
3950
|
-
return pathname === prefix || pathname.startsWith(`${prefix}/`);
|
|
3951
|
-
}
|
|
3952
|
-
return pathname === pattern;
|
|
3953
|
-
}
|
|
3954
3931
|
function SmartCanvasApp({
|
|
3955
3932
|
controller,
|
|
3956
3933
|
fetcher,
|
|
@@ -4174,8 +4151,7 @@ function SmartCanvasAppInner({
|
|
|
4174
4151
|
// any direct overrides from theme prop
|
|
4175
4152
|
};
|
|
4176
4153
|
}, [configState.theme, theme]);
|
|
4177
|
-
|
|
4178
|
-
if (!configState.isLoading && (!hasContent || !routeAllowed)) {
|
|
4154
|
+
if (!configState.isLoading && !hasContent) {
|
|
4179
4155
|
return null;
|
|
4180
4156
|
}
|
|
4181
4157
|
return /* @__PURE__ */ jsx7(
|
|
@@ -4831,7 +4807,7 @@ function injectBaseStyles(target) {
|
|
|
4831
4807
|
|
|
4832
4808
|
// src/api.tsx
|
|
4833
4809
|
var createSmartCanvas = async (config = {}) => {
|
|
4834
|
-
var _a2, _b, _c, _d, _e, _f, _g, _h, _i, _j
|
|
4810
|
+
var _a2, _b, _c, _d, _e, _f, _g, _h, _i, _j;
|
|
4835
4811
|
if (typeof window === "undefined" || typeof document === "undefined") {
|
|
4836
4812
|
throw new Error("SmartCanvas can only be created in a browser-like environment");
|
|
4837
4813
|
}
|
|
@@ -4870,10 +4846,9 @@ var createSmartCanvas = async (config = {}) => {
|
|
|
4870
4846
|
"[SmartCanvas] Config fetched:",
|
|
4871
4847
|
`tiles=${(_b = (_a2 = canvasConfig.tiles) == null ? void 0 : _a2.length) != null ? _b : 0},`,
|
|
4872
4848
|
`actions=${(_d = (_c = canvasConfig.actions) == null ? void 0 : _c.length) != null ? _d : 0},`,
|
|
4873
|
-
`theme=${(_f = (_e = canvasConfig.theme) == null ? void 0 : _e.name) != null ? _f : "none"}
|
|
4874
|
-
`routes=${JSON.stringify((_g = canvasConfig.routes) != null ? _g : "none")}`
|
|
4849
|
+
`theme=${(_f = (_e = canvasConfig.theme) == null ? void 0 : _e.name) != null ? _f : "none"}`
|
|
4875
4850
|
);
|
|
4876
|
-
if ((
|
|
4851
|
+
if ((_g = canvasConfig.actions) == null ? void 0 : _g.length) {
|
|
4877
4852
|
console.log(
|
|
4878
4853
|
"[SmartCanvas] Actions to apply:",
|
|
4879
4854
|
canvasConfig.actions.map(
|
|
@@ -4920,9 +4895,9 @@ var createSmartCanvas = async (config = {}) => {
|
|
|
4920
4895
|
console.log(`[SmartCanvas] Loading editor SDK for ${sdkMode} mode`);
|
|
4921
4896
|
loadEditorSdk(config.editorUrl).catch(console.error);
|
|
4922
4897
|
}
|
|
4923
|
-
const experiments = (
|
|
4924
|
-
const telemetry = (
|
|
4925
|
-
const fetcher = (
|
|
4898
|
+
const experiments = (_h = config.integrations) == null ? void 0 : _h.experiments;
|
|
4899
|
+
const telemetry = (_i = config.integrations) == null ? void 0 : _i.telemetry;
|
|
4900
|
+
const fetcher = (_j = config.fetcher) != null ? _j : createCanvasConfigFetcher({
|
|
4926
4901
|
configUri: config.configUri,
|
|
4927
4902
|
experiments,
|
|
4928
4903
|
featureKey: config.configUriFeatureKey,
|
|
@@ -6861,7 +6836,7 @@ function createDefaultContext() {
|
|
|
6861
6836
|
}
|
|
6862
6837
|
};
|
|
6863
6838
|
}
|
|
6864
|
-
function
|
|
6839
|
+
function matchRoute(url, routes) {
|
|
6865
6840
|
if (!routes) return void 0;
|
|
6866
6841
|
let pathname;
|
|
6867
6842
|
try {
|
|
@@ -6919,7 +6894,7 @@ var ContextManager = class {
|
|
|
6919
6894
|
if (options.initialPageHistory) {
|
|
6920
6895
|
this.context.session.pageHistory = options.initialPageHistory;
|
|
6921
6896
|
}
|
|
6922
|
-
this.context.page.routeId =
|
|
6897
|
+
this.context.page.routeId = matchRoute(this.context.page.url, this.routes);
|
|
6923
6898
|
this.addPageToHistory(this.context.page.url);
|
|
6924
6899
|
if (typeof window !== "undefined") {
|
|
6925
6900
|
this.setupBrowserListeners();
|
|
@@ -6946,7 +6921,7 @@ var ContextManager = class {
|
|
|
6946
6921
|
*/
|
|
6947
6922
|
setRoutes(routes) {
|
|
6948
6923
|
this.routes = routes;
|
|
6949
|
-
const newRouteId =
|
|
6924
|
+
const newRouteId = matchRoute(this.context.page.url, this.routes);
|
|
6950
6925
|
if (newRouteId !== this.context.page.routeId) {
|
|
6951
6926
|
this.updateContext({ page: { ...this.context.page, routeId: newRouteId } });
|
|
6952
6927
|
}
|
|
@@ -7025,7 +7000,7 @@ var ContextManager = class {
|
|
|
7025
7000
|
updatePage() {
|
|
7026
7001
|
const url = window.location.href;
|
|
7027
7002
|
const { title } = document;
|
|
7028
|
-
const routeId =
|
|
7003
|
+
const routeId = matchRoute(url, this.routes);
|
|
7029
7004
|
const newPage = {
|
|
7030
7005
|
url,
|
|
7031
7006
|
title,
|
|
@@ -9619,4 +9594,4 @@ export {
|
|
|
9619
9594
|
encodeToken,
|
|
9620
9595
|
Syntro
|
|
9621
9596
|
};
|
|
9622
|
-
//# sourceMappingURL=chunk-
|
|
9597
|
+
//# sourceMappingURL=chunk-ZDZ3IYFN.js.map
|