@syntrologie/runtime-sdk 0.2.21 → 1.0.0
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 +944 -440
- package/README.md +395 -66
- package/dist/RuntimeProvider.d.ts +51 -0
- package/dist/RuntimeProvider.js +113 -0
- package/dist/RuntimeProvider.js.map +1 -0
- package/dist/SmartCanvasApp.d.ts +16 -10
- package/dist/SmartCanvasApp.js +47 -51
- package/dist/SmartCanvasApp.js.map +1 -1
- package/dist/SmartCanvasElement.d.ts +5 -5
- package/dist/SmartCanvasElement.js +24 -14
- package/dist/SmartCanvasElement.js.map +1 -1
- package/dist/SmartCanvasPortal.d.ts +2 -2
- package/dist/SmartCanvasPortal.js +2 -2
- package/dist/SmartCanvasPortal.js.map +1 -1
- package/dist/actions/ActionEngine.d.ts +11 -0
- package/dist/actions/ActionEngine.js +272 -0
- package/dist/actions/ActionEngine.js.map +1 -0
- package/dist/actions/executors/index.d.ts +116 -0
- package/dist/actions/executors/index.js +240 -0
- package/dist/actions/executors/index.js.map +1 -0
- package/dist/actions/executors/tour.d.ts +18 -0
- package/dist/actions/executors/tour.js +332 -0
- package/dist/actions/executors/tour.js.map +1 -0
- package/dist/actions/index.d.ts +10 -0
- package/dist/actions/index.js +12 -0
- package/dist/actions/index.js.map +1 -0
- package/dist/actions/types.d.ts +399 -0
- package/dist/actions/types.js +8 -0
- package/dist/actions/types.js.map +1 -0
- package/dist/actions/validation.d.ts +14 -0
- package/dist/actions/validation.js +577 -0
- package/dist/actions/validation.js.map +1 -0
- package/dist/adaptives/adaptive-chatbot/index.js +9 -0
- package/dist/adaptives/adaptive-chatbot/index.js.map +7 -0
- package/dist/adaptives/adaptive-content/index.js +2 -0
- package/dist/adaptives/adaptive-content/index.js.map +7 -0
- package/dist/adaptives/adaptive-faq/index.js +11 -0
- package/dist/adaptives/adaptive-faq/index.js.map +7 -0
- package/dist/adaptives/adaptive-gamification/index.js +2 -0
- package/dist/adaptives/adaptive-gamification/index.js.map +7 -0
- package/dist/adaptives/adaptive-nav/index.js +11 -0
- package/dist/adaptives/adaptive-nav/index.js.map +7 -0
- package/dist/adaptives/adaptive-overlays/index.js +91 -0
- package/dist/adaptives/adaptive-overlays/index.js.map +7 -0
- package/dist/antiFlicker.js +1 -1
- package/dist/api.d.ts +40 -26
- package/dist/api.js +87 -60
- package/dist/api.js.map +1 -1
- package/dist/apps/AppContext.d.ts +31 -0
- package/dist/apps/AppContext.js +91 -0
- package/dist/apps/AppContext.js.map +1 -0
- package/dist/apps/AppLoader.d.ts +85 -0
- package/dist/apps/AppLoader.js +282 -0
- package/dist/apps/AppLoader.js.map +1 -0
- package/dist/apps/AppRegistry.d.ts +102 -0
- package/dist/apps/AppRegistry.js +317 -0
- package/dist/apps/AppRegistry.js.map +1 -0
- package/dist/apps/examples/gamification-app.example.d.ts +305 -0
- package/dist/apps/examples/gamification-app.example.js +329 -0
- package/dist/apps/examples/gamification-app.example.js.map +1 -0
- package/dist/apps/index.d.ts +14 -0
- package/dist/apps/index.js +16 -0
- package/dist/apps/index.js.map +1 -0
- package/dist/apps/types.d.ts +231 -0
- package/dist/apps/types.js +8 -0
- package/dist/apps/types.js.map +1 -0
- package/dist/blocks/data/ComparisonBlock.d.ts +1 -1
- package/dist/blocks/data/ComparisonBlock.js +40 -40
- package/dist/blocks/data/ComparisonBlock.js.map +1 -1
- package/dist/blocks/data/StatsBlock.d.ts +1 -1
- package/dist/blocks/data/StatsBlock.js +42 -44
- package/dist/blocks/data/StatsBlock.js.map +1 -1
- package/dist/blocks/data/index.d.ts +2 -2
- package/dist/blocks/data/index.js +2 -2
- package/dist/blocks/index.d.ts +5 -5
- package/dist/blocks/index.js +29 -30
- package/dist/blocks/index.js.map +1 -1
- package/dist/blocks/interactive/ChecklistBlock.d.ts +1 -1
- package/dist/blocks/interactive/ChecklistBlock.js +60 -60
- package/dist/blocks/interactive/ChecklistBlock.js.map +1 -1
- package/dist/blocks/interactive/RatingBlock.d.ts +1 -1
- package/dist/blocks/interactive/RatingBlock.js +73 -65
- package/dist/blocks/interactive/RatingBlock.js.map +1 -1
- package/dist/blocks/interactive/index.d.ts +2 -2
- package/dist/blocks/interactive/index.js +2 -2
- package/dist/blocks/notification/NotificationBlock.d.ts +2 -2
- package/dist/blocks/notification/NotificationBlock.js +68 -64
- package/dist/blocks/notification/NotificationBlock.js.map +1 -1
- package/dist/blocks/notification/index.d.ts +1 -1
- package/dist/blocks/notification/index.js +1 -1
- package/dist/bootstrap.d.ts +32 -8
- package/dist/bootstrap.js +218 -102
- package/dist/bootstrap.js.map +1 -1
- package/dist/components/ShadowCanvasOverlay.d.ts +6 -6
- package/dist/components/ShadowCanvasOverlay.js +156 -118
- package/dist/components/ShadowCanvasOverlay.js.map +1 -1
- package/dist/components/TileCard.d.ts +5 -5
- package/dist/components/TileCard.js +205 -154
- package/dist/components/TileCard.js.map +1 -1
- package/dist/components/TileWheel.d.ts +3 -3
- package/dist/components/TileWheel.js +29 -7
- package/dist/components/TileWheel.js.map +1 -1
- package/dist/config-validator.d.ts +49 -0
- package/dist/config-validator.js +173 -0
- package/dist/config-validator.js.map +1 -0
- package/dist/configFetcher.d.ts +7 -3
- package/dist/configFetcher.js +70 -29
- package/dist/configFetcher.js.map +1 -1
- package/dist/context/ContextManager.d.ts +3 -3
- package/dist/context/ContextManager.js +19 -18
- package/dist/context/ContextManager.js.map +1 -1
- package/dist/context/index.d.ts +4 -4
- package/dist/context/index.js +3 -3
- package/dist/context/schema.d.ts +9 -9
- package/dist/context/schema.js +2 -2
- package/dist/context/schema.js.map +1 -1
- package/dist/decisions/engine.d.ts +5 -5
- package/dist/decisions/engine.js +13 -13
- package/dist/decisions/engine.js.map +1 -1
- package/dist/decisions/index.d.ts +6 -6
- package/dist/decisions/index.js +5 -5
- package/dist/decisions/schema.d.ts +131 -131
- package/dist/decisions/schema.js +21 -21
- package/dist/decisions/schema.js.map +1 -1
- package/dist/decisions/strategies/rules.d.ts +1 -1
- package/dist/decisions/strategies/rules.js +24 -24
- package/dist/decisions/strategies/rules.js.map +1 -1
- package/dist/decisions/strategies/score.d.ts +1 -1
- package/dist/decisions/strategies/score.js +3 -3
- package/dist/decisions/types.d.ts +19 -19
- package/dist/earlyPatcher.d.ts +8 -20
- package/dist/earlyPatcher.js +13 -62
- package/dist/earlyPatcher.js.map +1 -1
- package/dist/editorLoader.d.ts +19 -7
- package/dist/editorLoader.js +154 -97
- package/dist/editorLoader.js.map +1 -1
- package/dist/events/EventBus.d.ts +3 -3
- package/dist/events/EventBus.js +5 -7
- package/dist/events/EventBus.js.map +1 -1
- package/dist/events/index.d.ts +6 -6
- package/dist/events/index.js +5 -5
- package/dist/events/normalizers/canvas.d.ts +2 -2
- package/dist/events/normalizers/canvas.js +3 -3
- package/dist/events/normalizers/canvas.js.map +1 -1
- package/dist/events/normalizers/posthog.d.ts +25 -1
- package/dist/events/normalizers/posthog.js +35 -27
- package/dist/events/normalizers/posthog.js.map +1 -1
- package/dist/events/schema.d.ts +13 -13
- package/dist/events/schema.js +3 -3
- package/dist/events/schema.js.map +1 -1
- package/dist/events/types.d.ts +7 -1
- package/dist/events/types.js +29 -21
- package/dist/events/types.js.map +1 -1
- package/dist/experiments/adapters/growthbook.d.ts +5 -4
- package/dist/experiments/adapters/growthbook.js +14 -6
- package/dist/experiments/adapters/growthbook.js.map +1 -1
- package/dist/experiments/index.d.ts +3 -3
- package/dist/experiments/index.js +1 -1
- package/dist/experiments/registry.d.ts +2 -2
- package/dist/experiments/registry.js +2 -2
- package/dist/experiments/types.d.ts +10 -1
- package/dist/fetchers/cdnFetcher.d.ts +1 -1
- package/dist/fetchers/cdnFetcher.js +4 -8
- package/dist/fetchers/cdnFetcher.js.map +1 -1
- package/dist/fetchers/experimentsFetcher.d.ts +25 -3
- package/dist/fetchers/experimentsFetcher.js +55 -8
- package/dist/fetchers/experimentsFetcher.js.map +1 -1
- package/dist/fetchers/index.d.ts +3 -3
- package/dist/fetchers/index.js +2 -2
- package/dist/fetchers/index.js.map +1 -1
- package/dist/fetchers/mergeConfigs.d.ts +29 -0
- package/dist/fetchers/mergeConfigs.js +38 -0
- package/dist/fetchers/mergeConfigs.js.map +1 -0
- package/dist/fetchers/registry.d.ts +1 -1
- package/dist/fetchers/registry.js +4 -4
- package/dist/fetchers/types.d.ts +1 -1
- package/dist/hooks/useCanvasOverlays.d.ts +8 -5
- package/dist/hooks/useCanvasOverlays.js +66 -17
- package/dist/hooks/useCanvasOverlays.js.map +1 -1
- package/dist/hooks/useHostPatches.d.ts +2 -2
- package/dist/hooks/useHostPatches.js +8 -8
- package/dist/hooks/useHostPatches.js.map +1 -1
- package/dist/hooks/useShadowCanvasConfig.d.ts +5 -9
- package/dist/hooks/useShadowCanvasConfig.js +7 -5
- package/dist/hooks/useShadowCanvasConfig.js.map +1 -1
- package/dist/hostPatcher/core/patcher.d.ts +1 -1
- package/dist/hostPatcher/core/patcher.js +18 -9
- package/dist/hostPatcher/core/patcher.js.map +1 -1
- package/dist/hostPatcher/core/sanitizer.js +24 -3
- package/dist/hostPatcher/core/sanitizer.js.map +1 -1
- package/dist/hostPatcher/policy/defaultPolicy.js +15 -5
- package/dist/hostPatcher/policy/defaultPolicy.js.map +1 -1
- package/dist/hostPatcher/utils/anchors.js +4 -6
- package/dist/hostPatcher/utils/anchors.js.map +1 -1
- package/dist/index.d.ts +34 -27
- package/dist/index.js +51 -24
- package/dist/index.js.map +1 -1
- package/dist/logger.d.ts +29 -0
- package/dist/logger.js +81 -0
- package/dist/logger.js.map +1 -0
- package/dist/metrics/index.d.ts +1 -1
- package/dist/metrics/index.js +1 -1
- package/dist/metrics/sessionMetrics.d.ts +1 -1
- package/dist/metrics/sessionMetrics.js +6 -6
- package/dist/overlays/fetcher.d.ts +2 -2
- package/dist/overlays/fetcher.js +13 -15
- package/dist/overlays/fetcher.js.map +1 -1
- package/dist/overlays/recipeRegistry.js +2 -2
- package/dist/overlays/recipeRegistry.js.map +1 -1
- package/dist/overlays/runtime/anchor/resolve.js +1 -1
- package/dist/overlays/runtime/anchor/resolve.js.map +1 -1
- package/dist/overlays/runtime/index.d.ts +7 -7
- package/dist/overlays/runtime/index.js +7 -7
- package/dist/overlays/runtime/overlay/highlight.js +39 -39
- package/dist/overlays/runtime/overlay/highlight.js.map +1 -1
- package/dist/overlays/runtime/overlay/modal.js +5 -5
- package/dist/overlays/runtime/overlay/modal.js.map +1 -1
- package/dist/overlays/runtime/overlay/root.js +1 -1
- package/dist/overlays/runtime/overlay/runner.js +88 -28
- package/dist/overlays/runtime/overlay/runner.js.map +1 -1
- package/dist/overlays/runtime/overlay/tooltip.d.ts +1 -1
- package/dist/overlays/runtime/overlay/tooltip.js +13 -15
- package/dist/overlays/runtime/overlay/tooltip.js.map +1 -1
- package/dist/overlays/runtime/utils/dom.js +4 -1
- package/dist/overlays/runtime/utils/dom.js.map +1 -1
- package/dist/overlays/schema.d.ts +146 -146
- package/dist/overlays/schema.js +12 -8
- package/dist/overlays/schema.js.map +1 -1
- package/dist/react.d.ts +7 -7
- package/dist/react.js +4 -4
- package/dist/react.js.map +1 -1
- package/dist/render/RenderContext.d.ts +2 -2
- package/dist/render/RenderContext.js +5 -5
- package/dist/render/RenderContext.js.map +1 -1
- package/dist/render/index.d.ts +3 -3
- package/dist/render/index.js +1 -1
- package/dist/render/types.d.ts +4 -4
- package/dist/runtime.d.ts +32 -8
- package/dist/runtime.js +109 -13
- package/dist/runtime.js.map +1 -1
- package/dist/smart-canvas.esm.js +144 -55
- package/dist/smart-canvas.esm.js.map +4 -4
- package/dist/smart-canvas.js +14688 -11455
- package/dist/smart-canvas.js.map +4 -4
- package/dist/smart-canvas.min.js +145 -55
- package/dist/smart-canvas.min.js.map +4 -4
- package/dist/state/StateStore.d.ts +1 -7
- package/dist/state/StateStore.js +15 -9
- package/dist/state/StateStore.js.map +1 -1
- package/dist/state/helpers/cooldowns.d.ts +1 -1
- package/dist/state/helpers/cooldowns.js +1 -1
- package/dist/state/helpers/dismissals.d.ts +1 -1
- package/dist/state/helpers/dismissals.js +1 -1
- package/dist/state/helpers/frequency.d.ts +1 -1
- package/dist/state/helpers/frequency.js +1 -1
- package/dist/state/index.d.ts +4 -4
- package/dist/state/index.js +3 -3
- package/dist/state/schema.d.ts +1 -1
- package/dist/state/schema.js +1 -1
- package/dist/store/example.d.ts +1 -0
- package/dist/store/example.js +43 -0
- package/dist/store/example.js.map +1 -0
- package/dist/store/mini-effector.d.ts +46 -0
- package/dist/store/mini-effector.js +88 -0
- package/dist/store/mini-effector.js.map +1 -0
- package/dist/surfaces/Surfaces.d.ts +11 -0
- package/dist/surfaces/Surfaces.js +361 -0
- package/dist/surfaces/Surfaces.js.map +1 -0
- package/dist/surfaces/index.d.ts +9 -0
- package/dist/surfaces/index.js +12 -0
- package/dist/surfaces/index.js.map +1 -0
- package/dist/surfaces/positioning.d.ts +50 -0
- package/dist/surfaces/positioning.js +228 -0
- package/dist/surfaces/positioning.js.map +1 -0
- package/dist/surfaces/types.d.ts +167 -0
- package/dist/surfaces/types.js +23 -0
- package/dist/surfaces/types.js.map +1 -0
- package/dist/telemetry/adapters/noop.d.ts +12 -0
- package/dist/telemetry/adapters/noop.js +42 -0
- package/dist/telemetry/adapters/noop.js.map +1 -0
- package/dist/telemetry/adapters/posthog.d.ts +8 -2
- package/dist/telemetry/adapters/posthog.js +36 -14
- package/dist/telemetry/adapters/posthog.js.map +1 -1
- package/dist/telemetry/index.d.ts +4 -3
- package/dist/telemetry/index.js +3 -2
- package/dist/telemetry/index.js.map +1 -1
- package/dist/telemetry/registry.d.ts +2 -9
- package/dist/telemetry/registry.js +4 -2
- package/dist/telemetry/registry.js.map +1 -1
- package/dist/telemetry/types.d.ts +1 -1
- package/dist/theme/ThemeProvider.d.ts +2 -2
- package/dist/theme/ThemeProvider.js +21 -21
- package/dist/theme/ThemeProvider.js.map +1 -1
- package/dist/theme/defaultTheme.d.ts +4 -5
- package/dist/theme/defaultTheme.js +127 -118
- package/dist/theme/defaultTheme.js.map +1 -1
- package/dist/theme/extractHostTheme.d.ts +1 -1
- package/dist/theme/extractHostTheme.js +43 -45
- package/dist/theme/extractHostTheme.js.map +1 -1
- package/dist/theme/index.d.ts +5 -5
- package/dist/theme/index.js +3 -3
- package/dist/theme/index.js.map +1 -1
- package/dist/theme/types.d.ts +2 -2
- package/dist/token.d.ts +2 -0
- package/dist/token.js +3 -6
- package/dist/token.js.map +1 -1
- package/dist/types-only.d.ts +32 -0
- package/dist/types-only.js +11 -0
- package/dist/types-only.js.map +1 -0
- package/dist/types.d.ts +89 -56
- package/dist/types.js +14 -2
- package/dist/types.js.map +1 -1
- package/dist/version.d.ts +13 -0
- package/dist/version.js +14 -0
- package/dist/version.js.map +1 -0
- package/dist/widgets/WidgetRegistry.d.ts +145 -0
- package/dist/widgets/WidgetRegistry.js +191 -0
- package/dist/widgets/WidgetRegistry.js.map +1 -0
- package/dist/widgets/index.d.ts +7 -0
- package/dist/widgets/index.js +7 -0
- package/dist/widgets/index.js.map +1 -0
- package/package.json +35 -15
- package/schema/canvas-config.schema.json +488 -254
- package/schema/runtime-context.schema.json +1 -5
package/dist/overlays/schema.js
CHANGED
|
@@ -4,7 +4,7 @@ export const SelectorZ = z.union([
|
|
|
4
4
|
z.object({ type: z.literal('css'), value: z.string() }),
|
|
5
5
|
z.object({ type: z.literal('aria'), role: z.string().optional(), label: z.string().optional() }),
|
|
6
6
|
z.object({ type: z.literal('shadow-css'), value: z.string() }),
|
|
7
|
-
z.object({ type: z.literal('ref'), el: z.any() }) // runtime-only
|
|
7
|
+
z.object({ type: z.literal('ref'), el: z.any() }), // runtime-only
|
|
8
8
|
]);
|
|
9
9
|
export const TooltipStepZ = z.object({
|
|
10
10
|
kind: z.literal('tooltip'),
|
|
@@ -15,11 +15,13 @@ export const TooltipStepZ = z.object({
|
|
|
15
15
|
offsetPx: z.number().optional(),
|
|
16
16
|
blocking: z.boolean().optional(),
|
|
17
17
|
trigger: z.enum(['immediate', 'hover', 'click']).optional(),
|
|
18
|
-
dismiss: z
|
|
18
|
+
dismiss: z
|
|
19
|
+
.object({
|
|
19
20
|
onEsc: z.boolean().optional(),
|
|
20
21
|
closeButton: z.boolean().optional(),
|
|
21
|
-
timeoutMs: z.number().optional()
|
|
22
|
-
})
|
|
22
|
+
timeoutMs: z.number().optional(),
|
|
23
|
+
})
|
|
24
|
+
.optional(),
|
|
23
25
|
});
|
|
24
26
|
export const HighlightStepZ = z.object({
|
|
25
27
|
kind: z.literal('highlight'),
|
|
@@ -30,17 +32,19 @@ export const HighlightStepZ = z.object({
|
|
|
30
32
|
scrim: z.object({ opacity: z.number().optional() }).optional(),
|
|
31
33
|
ringColor: z.string().optional(),
|
|
32
34
|
blocking: z.boolean().optional(),
|
|
33
|
-
dismiss: z
|
|
35
|
+
dismiss: z
|
|
36
|
+
.object({
|
|
34
37
|
onClickOutside: z.boolean().optional(),
|
|
35
38
|
onEsc: z.boolean().optional(),
|
|
36
|
-
timeoutMs: z.number().optional()
|
|
37
|
-
})
|
|
39
|
+
timeoutMs: z.number().optional(),
|
|
40
|
+
})
|
|
41
|
+
.optional(),
|
|
38
42
|
});
|
|
39
43
|
export const CanvasRecipeZ = z.object({
|
|
40
44
|
id: z.string(),
|
|
41
45
|
version: z.number(),
|
|
42
46
|
routes: z.array(z.string()).optional(),
|
|
43
|
-
steps: z.array(z.union([TooltipStepZ, HighlightStepZ]))
|
|
47
|
+
steps: z.array(z.union([TooltipStepZ, HighlightStepZ])),
|
|
44
48
|
});
|
|
45
49
|
export function validateRecipe(json) {
|
|
46
50
|
return CanvasRecipeZ.parse(json);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"schema.js","sourceRoot":"","sources":["../../src/overlays/schema.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,MAAM,CAAC,MAAM,SAAS,GAAG,CAAC,CAAC,KAAK,CAAC;IAC/B,CAAC,CAAC,MAAM,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,GAAG,EAAE,CAAC,CAAC,MAAM,EAAE,EAAE,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,EAAE,CAAC;IACpF,CAAC,CAAC,MAAM,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC;IACvD,CAAC,CAAC,MAAM,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,EAAE,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,EAAE,CAAC;IAChG,CAAC,CAAC,MAAM,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,OAAO,CAAC,YAAY,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC;IAC9D,CAAC,CAAC,MAAM,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,
|
|
1
|
+
{"version":3,"file":"schema.js","sourceRoot":"","sources":["../../src/overlays/schema.ts"],"names":[],"mappings":"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"}
|
package/dist/react.d.ts
CHANGED
|
@@ -19,11 +19,11 @@
|
|
|
19
19
|
* }
|
|
20
20
|
* ```
|
|
21
21
|
*/
|
|
22
|
-
import { type ReactNode } from
|
|
23
|
-
import
|
|
24
|
-
import type
|
|
25
|
-
import type { ExperimentClient } from
|
|
26
|
-
import type { TelemetryClient } from
|
|
22
|
+
import { type ReactNode } from 'react';
|
|
23
|
+
import type { SmartCanvasHandle } from './api';
|
|
24
|
+
import { type SyntroInitOptions, type SyntroInitResult } from './bootstrap';
|
|
25
|
+
import type { ExperimentClient } from './experiments/types';
|
|
26
|
+
import type { TelemetryClient } from './telemetry/types';
|
|
27
27
|
export interface SyntroContextValue {
|
|
28
28
|
/** The SmartCanvas handle */
|
|
29
29
|
canvas: SmartCanvasHandle | null;
|
|
@@ -44,12 +44,12 @@ export interface SyntroProviderProps {
|
|
|
44
44
|
/**
|
|
45
45
|
* Optional canvas configuration overrides.
|
|
46
46
|
*/
|
|
47
|
-
canvasOptions?: SyntroInitOptions[
|
|
47
|
+
canvasOptions?: SyntroInitOptions['canvas'];
|
|
48
48
|
/**
|
|
49
49
|
* Custom config fetcher to override the default experiment-based fetcher.
|
|
50
50
|
* Use this for local development or when bypassing the experiment server.
|
|
51
51
|
*/
|
|
52
|
-
fetcher?: SyntroInitOptions[
|
|
52
|
+
fetcher?: SyntroInitOptions['fetcher'];
|
|
53
53
|
/**
|
|
54
54
|
* Children to render.
|
|
55
55
|
*/
|
package/dist/react.js
CHANGED
|
@@ -20,8 +20,8 @@ import { jsx as _jsx } from "react/jsx-runtime";
|
|
|
20
20
|
* }
|
|
21
21
|
* ```
|
|
22
22
|
*/
|
|
23
|
-
import { createContext, useContext, useEffect, useState, useRef, } from
|
|
24
|
-
import { Syntro } from
|
|
23
|
+
import { createContext, useContext, useEffect, useState, useRef, } from 'react';
|
|
24
|
+
import { Syntro } from './bootstrap';
|
|
25
25
|
const SyntroContext = createContext(null);
|
|
26
26
|
// Global tracking to handle React Strict Mode double-mounting
|
|
27
27
|
let globalInitPromise = null;
|
|
@@ -90,7 +90,7 @@ export function SyntroProvider({ token, canvasOptions, fetcher, children, onRead
|
|
|
90
90
|
// Don't destroy on unmount in dev mode - React Strict Mode will remount
|
|
91
91
|
// The canvas persists and will be reused on remount
|
|
92
92
|
}, [token]);
|
|
93
|
-
return
|
|
93
|
+
return _jsx(SyntroContext.Provider, { value: state, children: children });
|
|
94
94
|
}
|
|
95
95
|
/**
|
|
96
96
|
* Hook to access the Syntro SDK.
|
|
@@ -102,7 +102,7 @@ export function SyntroProvider({ token, canvasOptions, fetcher, children, onRead
|
|
|
102
102
|
export function useSyntro() {
|
|
103
103
|
const context = useContext(SyntroContext);
|
|
104
104
|
if (!context) {
|
|
105
|
-
throw new Error(
|
|
105
|
+
throw new Error('useSyntro must be used within a SyntroProvider');
|
|
106
106
|
}
|
|
107
107
|
return context;
|
|
108
108
|
}
|
package/dist/react.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"react.js","sourceRoot":"","sources":["../src/react.tsx"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,OAAc,EACZ,aAAa,EACb,UAAU,EACV,SAAS,EACT,QAAQ,EACR,MAAM,GAEP,MAAM,OAAO,CAAC;
|
|
1
|
+
{"version":3,"file":"react.js","sourceRoot":"","sources":["../src/react.tsx"],"names":[],"mappings":"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"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { ReactNode } from
|
|
2
|
-
import type { RenderProps, RenderData, DefaultRenderer, AppearanceConfig, ActionHandler } from
|
|
1
|
+
import { ReactNode } from 'react';
|
|
2
|
+
import type { RenderProps, RenderData, DefaultRenderer, AppearanceConfig, ActionHandler } from './types';
|
|
3
3
|
interface RenderContextValue {
|
|
4
4
|
renderProps: RenderProps;
|
|
5
5
|
appearance: AppearanceConfig;
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { jsx as _jsx } from "react/jsx-runtime";
|
|
2
|
-
import { createContext, useContext, useMemo } from
|
|
2
|
+
import { createContext, useContext, useMemo } from 'react';
|
|
3
3
|
const RenderContext = createContext(null);
|
|
4
4
|
/**
|
|
5
5
|
* Provider for render props and appearance configuration
|
|
@@ -13,21 +13,21 @@ export function RenderProvider({ children, renderProps = {}, appearance = {}, ac
|
|
|
13
13
|
var _a;
|
|
14
14
|
const renderProp = renderProps[propName];
|
|
15
15
|
// Check for type-specific override first
|
|
16
|
-
if (propName ===
|
|
16
|
+
if (propName === 'renderContent' && renderProps.renderByType) {
|
|
17
17
|
const contentType = (_a = data.content) === null || _a === void 0 ? void 0 : _a.type;
|
|
18
18
|
if (contentType && renderProps.renderByType[contentType]) {
|
|
19
19
|
return renderProps.renderByType[contentType](data, defaultRenderer);
|
|
20
20
|
}
|
|
21
21
|
}
|
|
22
22
|
// Use custom render prop if provided
|
|
23
|
-
if (typeof renderProp ===
|
|
23
|
+
if (typeof renderProp === 'function') {
|
|
24
24
|
return renderProp(data, defaultRenderer);
|
|
25
25
|
}
|
|
26
26
|
// Fall back to default renderer
|
|
27
27
|
return defaultRenderer(data);
|
|
28
28
|
},
|
|
29
29
|
}), [renderProps, appearance, actionHandlers]);
|
|
30
|
-
return
|
|
30
|
+
return _jsx(RenderContext.Provider, { value: value, children: children });
|
|
31
31
|
}
|
|
32
32
|
/**
|
|
33
33
|
* Hook to access render context
|
|
@@ -35,7 +35,7 @@ export function RenderProvider({ children, renderProps = {}, appearance = {}, ac
|
|
|
35
35
|
export function useRenderContext() {
|
|
36
36
|
const context = useContext(RenderContext);
|
|
37
37
|
if (!context) {
|
|
38
|
-
throw new Error(
|
|
38
|
+
throw new Error('useRenderContext must be used within a RenderProvider');
|
|
39
39
|
}
|
|
40
40
|
return context;
|
|
41
41
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"RenderContext.js","sourceRoot":"","sources":["../../src/render/RenderContext.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,aAAa,EAAE,UAAU,EAAa,OAAO,EAAE,MAAM,OAAO,CAAC;
|
|
1
|
+
{"version":3,"file":"RenderContext.js","sourceRoot":"","sources":["../../src/render/RenderContext.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,aAAa,EAAE,UAAU,EAAa,OAAO,EAAE,MAAM,OAAO,CAAC;AAuBtE,MAAM,aAAa,GAAG,aAAa,CAA4B,IAAI,CAAC,CAAC;AASrE;;GAEG;AACH,MAAM,UAAU,cAAc,CAAC,EAC7B,QAAQ,EACR,WAAW,GAAG,EAAE,EAChB,UAAU,GAAG,EAAE,EACf,cAAc,GAAG,EAAE,GACC;IACpB,MAAM,KAAK,GAAG,OAAO,CACnB,GAAG,EAAE,CAAC,CAAC;QACL,WAAW;QACX,UAAU;QACV,cAAc;QACd,MAAM,EAAE,CAAC,QAAQ,EAAE,IAAI,EAAE,eAAe,EAAE,EAAE;;YAC1C,MAAM,UAAU,GAAG,WAAW,CAAC,QAAQ,CAAC,CAAC;YAEzC,yCAAyC;YACzC,IAAI,QAAQ,KAAK,eAAe,IAAI,WAAW,CAAC,YAAY,EAAE,CAAC;gBAC7D,MAAM,WAAW,GAAG,MAAA,IAAI,CAAC,OAAO,0CAAE,IAAI,CAAC;gBACvC,IAAI,WAAW,IAAI,WAAW,CAAC,YAAY,CAAC,WAAW,CAAC,EAAE,CAAC;oBACzD,OAAO,WAAW,CAAC,YAAY,CAAC,WAAW,CAAE,CAC3C,IAAI,EACJ,eAAkC,CAC5B,CAAC;gBACX,CAAC;YACH,CAAC;YAED,qCAAqC;YACrC,IAAI,OAAO,UAAU,KAAK,UAAU,EAAE,CAAC;gBACrC,OAAO,UAAU,CAAC,IAAI,EAAE,eAAkC,CAAQ,CAAC;YACrE,CAAC;YAED,gCAAgC;YAChC,OAAO,eAAe,CAAC,IAAI,CAAC,CAAC;QAC/B,CAAC;KACF,CAAC,EACF,CAAC,WAAW,EAAE,UAAU,EAAE,cAAc,CAAC,CAC1C,CAAC;IAEF,OAAO,KAAC,aAAa,CAAC,QAAQ,IAAC,KAAK,EAAE,KAAK,YAAG,QAAQ,GAA0B,CAAC;AACnF,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,gBAAgB;IAC9B,MAAM,OAAO,GAAG,UAAU,CAAC,aAAa,CAAC,CAAC;IAC1C,IAAI,CAAC,OAAO,EAAE,CAAC;QACb,MAAM,IAAI,KAAK,CAAC,uDAAuD,CAAC,CAAC;IAC3E,CAAC;IACD,OAAO,OAAO,CAAC;AACjB,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,cAAc;IAC5B,OAAO,gBAAgB,EAAE,CAAC,WAAW,CAAC;AACxC,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,aAAa;IAC3B,OAAO,gBAAgB,EAAE,CAAC,UAAU,CAAC;AACvC,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,iBAAiB;IAC/B,OAAO,gBAAgB,EAAE,CAAC,cAAc,CAAC;AAC3C,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,SAAS,CACvB,QAA2B,EAC3B,IAAgB,EAChB,eAAmC;IAEnC,MAAM,EAAE,MAAM,EAAE,GAAG,gBAAgB,EAAE,CAAC;IACtC,OAAO,MAAM,CAAC,QAAQ,EAAE,IAAI,EAAE,eAAe,CAAC,CAAC;AACjD,CAAC"}
|
package/dist/render/index.d.ts
CHANGED
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
export type { RenderData, DefaultRenderer, RenderProp, RenderProps, StyleOverrides, ClassNameOverrides, AppearanceConfig, ActionHandler, } from
|
|
2
|
-
export { RenderProvider, useRenderContext, useRenderProps, useAppearance, useActionHandlers, useRender, } from
|
|
3
|
-
export type { RenderProviderProps } from
|
|
1
|
+
export type { RenderData, DefaultRenderer, RenderProp, RenderProps, StyleOverrides, ClassNameOverrides, AppearanceConfig, ActionHandler, } from './types';
|
|
2
|
+
export { RenderProvider, useRenderContext, useRenderProps, useAppearance, useActionHandlers, useRender, } from './RenderContext';
|
|
3
|
+
export type { RenderProviderProps } from './RenderContext';
|
package/dist/render/index.js
CHANGED
|
@@ -1,3 +1,3 @@
|
|
|
1
1
|
// Context and hooks
|
|
2
|
-
export { RenderProvider, useRenderContext, useRenderProps, useAppearance, useActionHandlers, useRender, } from
|
|
2
|
+
export { RenderProvider, useRenderContext, useRenderProps, useAppearance, useActionHandlers, useRender, } from './RenderContext';
|
|
3
3
|
//# sourceMappingURL=index.js.map
|
package/dist/render/types.d.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import type { ReactNode, CSSProperties } from
|
|
2
|
-
import type { TileConfig, TileContent, BlockType, TileAction } from
|
|
1
|
+
import type { ReactNode, CSSProperties } from 'react';
|
|
2
|
+
import type { TileConfig, TileContent, BlockType, TileAction } from '../types';
|
|
3
3
|
/**
|
|
4
4
|
* Data passed to render props
|
|
5
5
|
*/
|
|
@@ -7,7 +7,7 @@ export interface RenderData {
|
|
|
7
7
|
tile: TileConfig;
|
|
8
8
|
content: TileContent;
|
|
9
9
|
isExpanded: boolean;
|
|
10
|
-
surface:
|
|
10
|
+
surface: 'overlay' | 'wheel';
|
|
11
11
|
}
|
|
12
12
|
/**
|
|
13
13
|
* Default renderer function signature
|
|
@@ -66,7 +66,7 @@ export interface AppearanceConfig {
|
|
|
66
66
|
variables?: Partial<Record<`--sc-${string}`, string>>;
|
|
67
67
|
styles?: StyleOverrides;
|
|
68
68
|
classNames?: ClassNameOverrides;
|
|
69
|
-
baseTheme?:
|
|
69
|
+
baseTheme?: 'light' | 'dark' | 'system';
|
|
70
70
|
}
|
|
71
71
|
/**
|
|
72
72
|
* Action handler for interactive elements
|
package/dist/runtime.d.ts
CHANGED
|
@@ -6,18 +6,24 @@
|
|
|
6
6
|
* - context: Page/session/viewport state
|
|
7
7
|
* - events: Normalized event stream
|
|
8
8
|
* - state: Persistent state storage
|
|
9
|
+
* - actions: ActionEngine for interventions
|
|
10
|
+
* - surfaces: Surfaces for UI rendering
|
|
9
11
|
*
|
|
10
12
|
* Note: ExperimentClient (GrowthBook) is NOT part of the runtime.
|
|
11
13
|
* GrowthBook's job is done at page load when it selects which config to deliver.
|
|
12
14
|
* The runtime receives the config and makes decisions using DecisionStrategy.
|
|
13
15
|
*/
|
|
14
|
-
import type
|
|
15
|
-
import {
|
|
16
|
-
import {
|
|
17
|
-
import {
|
|
18
|
-
import
|
|
19
|
-
import type { SessionMetricTracker } from
|
|
20
|
-
import
|
|
16
|
+
import { type ActionEngine, ExecutorRegistry } from './actions';
|
|
17
|
+
import { AppRegistry } from './apps';
|
|
18
|
+
import { ContextManager } from './context/ContextManager';
|
|
19
|
+
import type { DecisionStrategy, DecisionResult } from './decisions/types';
|
|
20
|
+
import { EventBus } from './events/EventBus';
|
|
21
|
+
import type { SessionMetricTracker } from './metrics/sessionMetrics';
|
|
22
|
+
import { StateStore } from './state/StateStore';
|
|
23
|
+
import { type Surfaces } from './surfaces';
|
|
24
|
+
import type { TelemetryClient } from './telemetry/types';
|
|
25
|
+
import type { RoutesConfig, TileConfig } from './types';
|
|
26
|
+
import { WidgetRegistry } from './widgets';
|
|
21
27
|
/**
|
|
22
28
|
* Runtime version.
|
|
23
29
|
*/
|
|
@@ -25,7 +31,7 @@ export declare const RUNTIME_VERSION = "2.0.0";
|
|
|
25
31
|
/**
|
|
26
32
|
* Runtime mode.
|
|
27
33
|
*/
|
|
28
|
-
export type RuntimeMode =
|
|
34
|
+
export type RuntimeMode = 'production' | 'development' | 'editor' | 'audit';
|
|
29
35
|
/**
|
|
30
36
|
* SmartCanvasRuntime interface.
|
|
31
37
|
*/
|
|
@@ -40,6 +46,16 @@ export interface SmartCanvasRuntime {
|
|
|
40
46
|
state: StateStore;
|
|
41
47
|
/** Session metric tracker (optional) */
|
|
42
48
|
sessionMetrics?: SessionMetricTracker;
|
|
49
|
+
/** ActionEngine for applying interventions */
|
|
50
|
+
actions: ActionEngine;
|
|
51
|
+
/** Surfaces for rendering UI into named slots */
|
|
52
|
+
surfaces: Surfaces;
|
|
53
|
+
/** Widget registry for mountable components */
|
|
54
|
+
widgets: WidgetRegistry;
|
|
55
|
+
/** Executor registry for action executors */
|
|
56
|
+
executors: ExecutorRegistry;
|
|
57
|
+
/** App registry for SynOS apps */
|
|
58
|
+
apps: AppRegistry;
|
|
43
59
|
/** Runtime version */
|
|
44
60
|
version: string;
|
|
45
61
|
/** Runtime mode */
|
|
@@ -79,6 +95,14 @@ export interface SmartCanvasRuntimeOptions {
|
|
|
79
95
|
mode?: RuntimeMode;
|
|
80
96
|
/** State namespace */
|
|
81
97
|
namespace?: string;
|
|
98
|
+
/** External EventBus (if not provided, one will be created) */
|
|
99
|
+
events?: EventBus;
|
|
100
|
+
/** Custom widget registry (if not provided, default singleton is used) */
|
|
101
|
+
widgets?: WidgetRegistry;
|
|
102
|
+
/** Custom executor registry (if not provided, default singleton is used) */
|
|
103
|
+
executors?: ExecutorRegistry;
|
|
104
|
+
/** Custom app registry (if not provided, default singleton is used) */
|
|
105
|
+
apps?: AppRegistry;
|
|
82
106
|
}
|
|
83
107
|
/**
|
|
84
108
|
* Create a SmartCanvasRuntime instance.
|
package/dist/runtime.js
CHANGED
|
@@ -1,11 +1,31 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
1
|
+
/**
|
|
2
|
+
* SmartCanvasRuntime - Unified runtime for v2 adaptives.
|
|
3
|
+
*
|
|
4
|
+
* The runtime provides access to all core providers:
|
|
5
|
+
* - telemetry: Event tracking (PostHog)
|
|
6
|
+
* - context: Page/session/viewport state
|
|
7
|
+
* - events: Normalized event stream
|
|
8
|
+
* - state: Persistent state storage
|
|
9
|
+
* - actions: ActionEngine for interventions
|
|
10
|
+
* - surfaces: Surfaces for UI rendering
|
|
11
|
+
*
|
|
12
|
+
* Note: ExperimentClient (GrowthBook) is NOT part of the runtime.
|
|
13
|
+
* GrowthBook's job is done at page load when it selects which config to deliver.
|
|
14
|
+
* The runtime receives the config and makes decisions using DecisionStrategy.
|
|
15
|
+
*/
|
|
16
|
+
import { createActionEngine, executorRegistry, } from './actions';
|
|
17
|
+
import { appRegistry as defaultAppRegistry } from './apps';
|
|
18
|
+
import { createContextManager } from './context/ContextManager';
|
|
19
|
+
import { createDecisionEngine } from './decisions/engine';
|
|
20
|
+
import { createEventBus } from './events/EventBus';
|
|
21
|
+
import { ensureOverlayRoot } from './overlays/runtime/overlay/root';
|
|
22
|
+
import { createStateStore } from './state/StateStore';
|
|
23
|
+
import { createSurfaces } from './surfaces';
|
|
24
|
+
import { widgetRegistry as defaultWidgetRegistry } from './widgets';
|
|
5
25
|
/**
|
|
6
26
|
* Runtime version.
|
|
7
27
|
*/
|
|
8
|
-
export const RUNTIME_VERSION =
|
|
28
|
+
export const RUNTIME_VERSION = '2.0.0';
|
|
9
29
|
/**
|
|
10
30
|
* Check if a URL matches a route filter.
|
|
11
31
|
*/
|
|
@@ -21,7 +41,7 @@ function matchesRouteFilter(url, filter) {
|
|
|
21
41
|
pathname = url;
|
|
22
42
|
}
|
|
23
43
|
// Normalize pathname
|
|
24
|
-
const normalizedPath = pathname.replace(/\/$/,
|
|
44
|
+
const normalizedPath = pathname.replace(/\/$/, '') || '/';
|
|
25
45
|
// Check exclude patterns first
|
|
26
46
|
if (filter.exclude) {
|
|
27
47
|
for (const pattern of filter.exclude) {
|
|
@@ -46,30 +66,73 @@ function matchesRouteFilter(url, filter) {
|
|
|
46
66
|
* Match a pathname against a route pattern.
|
|
47
67
|
*/
|
|
48
68
|
function matchRoutePattern(pathname, pattern) {
|
|
49
|
-
const normalizedPattern = pattern.replace(/\/$/,
|
|
69
|
+
const normalizedPattern = pattern.replace(/\/$/, '') || '/';
|
|
50
70
|
// Exact match
|
|
51
71
|
if (pathname === normalizedPattern)
|
|
52
72
|
return true;
|
|
53
73
|
// Convert pattern to regex
|
|
54
74
|
const regexPattern = normalizedPattern
|
|
55
|
-
.replace(/[.+^${}()|[\]\\]/g,
|
|
56
|
-
.replace(/\*\*/g,
|
|
57
|
-
.replace(/\*/g,
|
|
58
|
-
.replace(/:[^/]+/g,
|
|
75
|
+
.replace(/[.+^${}()|[\]\\]/g, '\\$&') // Escape regex chars
|
|
76
|
+
.replace(/\*\*/g, '.*') // ** matches anything
|
|
77
|
+
.replace(/\*/g, '[^/]*') // * matches within path segment
|
|
78
|
+
.replace(/:[^/]+/g, '[^/]+'); // :param matches any segment
|
|
59
79
|
const regex = new RegExp(`^${regexPattern}$`);
|
|
60
80
|
return regex.test(pathname);
|
|
61
81
|
}
|
|
82
|
+
/**
|
|
83
|
+
* Resolve an anchor ID to an element.
|
|
84
|
+
*
|
|
85
|
+
* Resolution order:
|
|
86
|
+
* 1. Syntro-tracked anchors (context.anchors with data-syntro-anchor attribute)
|
|
87
|
+
* 2. Native CSS selector via querySelector (handles tags, classes, IDs,
|
|
88
|
+
* attributes, combinators, pseudo-selectors — anything the browser supports)
|
|
89
|
+
* 3. Shorthand ID lookup via getElementById (bare strings like "main-content")
|
|
90
|
+
* 4. data-syntro-anchor attribute fallback (bare strings used as anchor names)
|
|
91
|
+
*/
|
|
92
|
+
function resolveAnchorById(anchorId, ctx) {
|
|
93
|
+
// 1. Check anchors tracked in runtime context
|
|
94
|
+
const runtimeContext = ctx.get();
|
|
95
|
+
if (runtimeContext.anchors) {
|
|
96
|
+
const anchorState = runtimeContext.anchors.find((a) => a.anchorId === anchorId);
|
|
97
|
+
if (anchorState === null || anchorState === void 0 ? void 0 : anchorState.present) {
|
|
98
|
+
const el = document.querySelector(`[data-syntro-anchor="${anchorId}"]`);
|
|
99
|
+
if (el)
|
|
100
|
+
return el;
|
|
101
|
+
}
|
|
102
|
+
}
|
|
103
|
+
// 2. Try as CSS selector (let the browser handle all valid CSS)
|
|
104
|
+
try {
|
|
105
|
+
const el = document.querySelector(anchorId);
|
|
106
|
+
if (el)
|
|
107
|
+
return el;
|
|
108
|
+
}
|
|
109
|
+
catch {
|
|
110
|
+
// Invalid CSS selector — fall through to shorthand lookups
|
|
111
|
+
}
|
|
112
|
+
// 3. Try as element ID (bare string like "hero-section")
|
|
113
|
+
const byId = document.getElementById(anchorId);
|
|
114
|
+
if (byId)
|
|
115
|
+
return byId;
|
|
116
|
+
// 4. Try as data-syntro-anchor attribute value
|
|
117
|
+
return document.querySelector(`[data-syntro-anchor="${anchorId}"]`);
|
|
118
|
+
}
|
|
62
119
|
/**
|
|
63
120
|
* Create a SmartCanvasRuntime instance.
|
|
64
121
|
*/
|
|
65
122
|
export function createSmartCanvasRuntime(options = {}) {
|
|
66
|
-
|
|
123
|
+
var _a, _b, _c, _d;
|
|
124
|
+
const { telemetry, sessionMetrics, routes, mode = 'production', namespace } = options;
|
|
125
|
+
// Use provided registries or defaults
|
|
126
|
+
const widgets = (_a = options.widgets) !== null && _a !== void 0 ? _a : defaultWidgetRegistry;
|
|
127
|
+
const executors = (_b = options.executors) !== null && _b !== void 0 ? _b : executorRegistry;
|
|
128
|
+
const apps = (_c = options.apps) !== null && _c !== void 0 ? _c : defaultAppRegistry;
|
|
67
129
|
// Create core providers
|
|
68
130
|
const context = createContextManager({
|
|
69
131
|
telemetry,
|
|
70
132
|
routes,
|
|
71
133
|
});
|
|
72
|
-
|
|
134
|
+
// Use external EventBus if provided, otherwise create one
|
|
135
|
+
const events = (_d = options.events) !== null && _d !== void 0 ? _d : createEventBus();
|
|
73
136
|
const state = createStateStore({
|
|
74
137
|
namespace,
|
|
75
138
|
});
|
|
@@ -79,12 +142,36 @@ export function createSmartCanvasRuntime(options = {}) {
|
|
|
79
142
|
events,
|
|
80
143
|
sessionMetrics,
|
|
81
144
|
});
|
|
145
|
+
// Create overlay root for Surfaces and ActionEngine
|
|
146
|
+
const overlayRoot = ensureOverlayRoot();
|
|
147
|
+
// Anchor resolver bound to context
|
|
148
|
+
const anchorResolver = (anchorId) => resolveAnchorById(anchorId, context);
|
|
149
|
+
// Create Surfaces provider with widget registry
|
|
150
|
+
const surfaces = createSurfaces({
|
|
151
|
+
overlayRoot,
|
|
152
|
+
eventBus: events,
|
|
153
|
+
anchorResolver,
|
|
154
|
+
widgetRegistry: widgets,
|
|
155
|
+
});
|
|
156
|
+
// Create ActionEngine provider with executor registry
|
|
157
|
+
const actions = createActionEngine({
|
|
158
|
+
overlayRoot,
|
|
159
|
+
eventBus: events,
|
|
160
|
+
surfaces,
|
|
161
|
+
anchorResolver,
|
|
162
|
+
executorRegistry: executors,
|
|
163
|
+
});
|
|
82
164
|
const runtime = {
|
|
83
165
|
telemetry,
|
|
84
166
|
context,
|
|
85
167
|
events,
|
|
86
168
|
state,
|
|
87
169
|
sessionMetrics,
|
|
170
|
+
actions,
|
|
171
|
+
surfaces,
|
|
172
|
+
widgets,
|
|
173
|
+
executors,
|
|
174
|
+
apps,
|
|
88
175
|
version: RUNTIME_VERSION,
|
|
89
176
|
mode,
|
|
90
177
|
async evaluate(strategy) {
|
|
@@ -124,9 +211,18 @@ export function createSmartCanvasRuntime(options = {}) {
|
|
|
124
211
|
context.setRoutes(routes);
|
|
125
212
|
},
|
|
126
213
|
destroy() {
|
|
214
|
+
// Unbind and clean up apps registry
|
|
215
|
+
apps.unbind().catch((err) => {
|
|
216
|
+
console.error('[Runtime] Error unbinding apps registry:', err);
|
|
217
|
+
});
|
|
127
218
|
context.destroy();
|
|
219
|
+
actions.destroy();
|
|
220
|
+
surfaces.destroy();
|
|
128
221
|
},
|
|
129
222
|
};
|
|
223
|
+
// Bind apps registry to runtime
|
|
224
|
+
apps.bind(runtime);
|
|
225
|
+
widgets.bindRuntime(runtime);
|
|
130
226
|
return runtime;
|
|
131
227
|
}
|
|
132
228
|
//# sourceMappingURL=runtime.js.map
|
package/dist/runtime.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"runtime.js","sourceRoot":"","sources":["../src/runtime.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"runtime.js","sourceRoot":"","sources":["../src/runtime.ts"],"names":[],"mappings":"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"}
|