@syntrologie/runtime-sdk 2.0.0 → 2.0.1-canary.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CAPABILITIES.md +232 -138
- package/README.md +76 -57
- package/dist/RuntimeProvider.d.ts +6 -6
- package/dist/RuntimeProvider.js +2 -3
- package/dist/RuntimeProvider.js.map +1 -1
- package/dist/SmartCanvasApp.d.ts +8 -8
- package/dist/SmartCanvasApp.js +16 -18
- package/dist/SmartCanvasApp.js.map +1 -1
- package/dist/SmartCanvasElement.d.ts +5 -5
- package/dist/SmartCanvasElement.js +13 -13
- package/dist/SmartCanvasElement.js.map +1 -1
- package/dist/SmartCanvasPortal.d.ts +2 -2
- package/dist/SmartCanvasPortal.js +2 -2
- package/dist/actions/ActionEngine.d.ts +1 -1
- package/dist/actions/ActionEngine.js +24 -24
- package/dist/actions/ActionEngine.js.map +1 -1
- package/dist/actions/executors/index.d.ts +6 -6
- package/dist/actions/executors/index.js +22 -22
- package/dist/actions/executors/index.js.map +1 -1
- package/dist/actions/executors/tour.d.ts +1 -1
- package/dist/actions/executors/tour.js +19 -19
- package/dist/actions/executors/tour.js.map +1 -1
- package/dist/actions/index.d.ts +5 -5
- package/dist/actions/index.js +3 -3
- package/dist/actions/index.js.map +1 -1
- package/dist/actions/types.d.ts +37 -37
- package/dist/actions/validation.d.ts +1 -1
- package/dist/actions/validation.js +195 -196
- package/dist/actions/validation.js.map +1 -1
- package/dist/antiFlicker.js +1 -1
- package/dist/api.d.ts +10 -10
- package/dist/api.js +11 -11
- package/dist/api.js.map +1 -1
- package/dist/apps/AppContext.d.ts +2 -2
- package/dist/apps/AppContext.js +1 -1
- package/dist/apps/AppContext.js.map +1 -1
- package/dist/apps/AppLoader.d.ts +2 -2
- package/dist/apps/AppLoader.js +24 -24
- package/dist/apps/AppLoader.js.map +1 -1
- package/dist/apps/AppRegistry.d.ts +2 -2
- package/dist/apps/AppRegistry.js +28 -28
- package/dist/apps/AppRegistry.js.map +1 -1
- package/dist/apps/adaptive-chatbot/index.js +7 -0
- package/dist/apps/adaptive-chatbot/index.js.map +7 -0
- package/dist/apps/examples/gamification-app.example.d.ts +3 -3
- package/dist/apps/examples/gamification-app.example.js +94 -94
- package/dist/apps/examples/gamification-app.example.js.map +1 -1
- package/dist/apps/faq/index.js.map +3 -3
- package/dist/apps/gamification/index.js.map +3 -3
- package/dist/apps/index.d.ts +10 -10
- package/dist/apps/index.js +6 -6
- package/dist/apps/nav/index.js.map +3 -3
- package/dist/apps/types.d.ts +10 -10
- 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 +41 -41
- 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 -29
- 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 +75 -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 +67 -63
- 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 +10 -10
- package/dist/bootstrap.js +54 -40
- package/dist/bootstrap.js.map +1 -1
- package/dist/components/ShadowCanvasOverlay.d.ts +6 -6
- package/dist/components/ShadowCanvasOverlay.js +117 -107
- package/dist/components/ShadowCanvasOverlay.js.map +1 -1
- package/dist/components/TileCard.d.ts +5 -5
- package/dist/components/TileCard.js +174 -143
- package/dist/components/TileCard.js.map +1 -1
- package/dist/components/TileWheel.d.ts +3 -3
- package/dist/components/TileWheel.js +7 -7
- package/dist/components/TileWheel.js.map +1 -1
- package/dist/configFetcher.d.ts +2 -2
- package/dist/configFetcher.js +10 -7
- package/dist/configFetcher.js.map +1 -1
- package/dist/context/ContextManager.d.ts +3 -3
- package/dist/context/ContextManager.js +15 -15
- 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 +1 -1
- package/dist/context/schema.js +1 -1
- package/dist/decisions/engine.d.ts +5 -5
- package/dist/decisions/engine.js +13 -13
- package/dist/decisions/index.d.ts +6 -6
- package/dist/decisions/index.js +5 -5
- package/dist/decisions/schema.d.ts +1 -1
- package/dist/decisions/schema.js +20 -20
- 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/editorLoader.js +20 -20
- 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 +1 -1
- package/dist/events/normalizers/posthog.js +35 -27
- package/dist/events/normalizers/posthog.js.map +1 -1
- package/dist/events/schema.d.ts +1 -1
- package/dist/events/schema.js +2 -2
- package/dist/events/types.d.ts +1 -1
- package/dist/events/types.js +27 -27
- package/dist/experiments/adapters/growthbook.d.ts +4 -4
- package/dist/experiments/adapters/growthbook.js +5 -5
- 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 +5 -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 +2 -2
- package/dist/fetchers/experimentsFetcher.js +7 -7
- 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/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 +5 -5
- package/dist/hooks/useCanvasOverlays.js +15 -13
- 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 +3 -3
- package/dist/hooks/useShadowCanvasConfig.js +5 -2
- 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 +32 -32
- package/dist/index.js +29 -29
- package/dist/index.js.map +1 -1
- 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 +4 -4
- 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 +70 -23
- 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 +10 -10
- 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.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 +12 -12
- package/dist/runtime.js +20 -20
- package/dist/runtime.js.map +1 -1
- package/dist/smart-canvas.esm.js +16 -16
- package/dist/smart-canvas.esm.js.map +4 -4
- package/dist/smart-canvas.js +644 -491
- package/dist/smart-canvas.js.map +4 -4
- package/dist/smart-canvas.min.js +15 -15
- package/dist/smart-canvas.min.js.map +4 -4
- package/dist/state/StateStore.d.ts +1 -1
- package/dist/state/StateStore.js +9 -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.js +13 -13
- package/dist/store/example.js.map +1 -1
- package/dist/store/mini-effector.js +6 -8
- package/dist/store/mini-effector.js.map +1 -1
- package/dist/surfaces/Surfaces.d.ts +1 -1
- package/dist/surfaces/Surfaces.js +25 -25
- package/dist/surfaces/Surfaces.js.map +1 -1
- package/dist/surfaces/index.d.ts +4 -4
- package/dist/surfaces/index.js +3 -3
- package/dist/surfaces/positioning.d.ts +2 -2
- package/dist/surfaces/positioning.js +74 -77
- package/dist/surfaces/positioning.js.map +1 -1
- package/dist/surfaces/types.d.ts +9 -9
- package/dist/surfaces/types.js +7 -7
- package/dist/surfaces/types.js.map +1 -1
- 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 +2 -2
- package/dist/telemetry/adapters/posthog.js +29 -16
- 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 -2
- 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 +2 -2
- package/dist/theme/defaultTheme.js +111 -111
- package/dist/theme/defaultTheme.js.map +1 -1
- package/dist/theme/extractHostTheme.d.ts +1 -1
- package/dist/theme/extractHostTheme.js +42 -44
- 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.js +3 -6
- package/dist/token.js.map +1 -1
- package/dist/types-only.d.ts +1 -1
- package/dist/types.d.ts +43 -43
- package/dist/widgets/WidgetRegistry.d.ts +2 -2
- package/dist/widgets/WidgetRegistry.js +11 -11
- package/dist/widgets/WidgetRegistry.js.map +1 -1
- package/dist/widgets/index.d.ts +2 -2
- package/dist/widgets/index.js +1 -1
- package/dist/widgets/index.js.map +1 -1
- package/package.json +4 -2
- package/schema/canvas-config.schema.json +51 -7
- package/schema/runtime-context.schema.json +1 -5
package/README.md
CHANGED
|
@@ -19,21 +19,21 @@ The SDK ships a framework-agnostic `<smart-canvas>` custom element with an **ope
|
|
|
19
19
|
## Quick Start
|
|
20
20
|
|
|
21
21
|
```typescript
|
|
22
|
-
import { Syntro } from
|
|
22
|
+
import { Syntro } from '@syntrologie/runtime-sdk';
|
|
23
23
|
|
|
24
|
-
const { runtime } = await Syntro.init({ token:
|
|
24
|
+
const { runtime } = await Syntro.init({ token: 'syn_...' });
|
|
25
25
|
|
|
26
26
|
// Change a headline
|
|
27
27
|
const handle = await runtime.actions.apply({
|
|
28
|
-
kind:
|
|
29
|
-
anchorId:
|
|
30
|
-
text:
|
|
28
|
+
kind: 'set_text',
|
|
29
|
+
anchorId: 'h1.hero-title',
|
|
30
|
+
text: 'Welcome to Our New Experience',
|
|
31
31
|
});
|
|
32
32
|
|
|
33
33
|
// Show a toast notification
|
|
34
|
-
const toast = runtime.surfaces.mount(
|
|
35
|
-
type:
|
|
36
|
-
content: '<div class="toast">Changes applied!</div>'
|
|
34
|
+
const toast = runtime.surfaces.mount('toast_top', {
|
|
35
|
+
type: 'html',
|
|
36
|
+
content: '<div class="toast">Changes applied!</div>',
|
|
37
37
|
});
|
|
38
38
|
|
|
39
39
|
// Later: revert and cleanup
|
|
@@ -87,25 +87,38 @@ The ActionEngine provides a unified API for applying reversible interventions:
|
|
|
87
87
|
|
|
88
88
|
```typescript
|
|
89
89
|
// Visual actions
|
|
90
|
-
await runtime.actions.apply({ kind:
|
|
91
|
-
await runtime.actions.apply({
|
|
92
|
-
|
|
93
|
-
|
|
90
|
+
await runtime.actions.apply({ kind: 'highlight', anchorId: '#cta', style: { color: '#4f46e5' } });
|
|
91
|
+
await runtime.actions.apply({
|
|
92
|
+
kind: 'tooltip',
|
|
93
|
+
anchorId: '#help',
|
|
94
|
+
content: { body: 'Click for help' },
|
|
95
|
+
});
|
|
96
|
+
await runtime.actions.apply({ kind: 'badge', anchorId: '#inbox', content: '3' });
|
|
97
|
+
await runtime.actions.apply({ kind: 'pulse', anchorId: '#notification' });
|
|
94
98
|
|
|
95
99
|
// DOM actions
|
|
96
|
-
await runtime.actions.apply({ kind:
|
|
97
|
-
await runtime.actions.apply({
|
|
98
|
-
|
|
99
|
-
|
|
100
|
+
await runtime.actions.apply({ kind: 'set_text', anchorId: 'h1', text: 'New headline' });
|
|
101
|
+
await runtime.actions.apply({
|
|
102
|
+
kind: 'insert_html',
|
|
103
|
+
anchorId: '.cta',
|
|
104
|
+
html: '<span>NEW</span>',
|
|
105
|
+
position: 'append',
|
|
106
|
+
});
|
|
107
|
+
await runtime.actions.apply({ kind: 'add_class', anchorId: '.card', className: 'highlighted' });
|
|
108
|
+
await runtime.actions.apply({
|
|
109
|
+
kind: 'set_style',
|
|
110
|
+
anchorId: '.hero',
|
|
111
|
+
styles: { background: '#1e40af' },
|
|
112
|
+
});
|
|
100
113
|
|
|
101
114
|
// Navigation actions
|
|
102
|
-
await runtime.actions.apply({ kind:
|
|
103
|
-
await runtime.actions.apply({ kind:
|
|
115
|
+
await runtime.actions.apply({ kind: 'scroll_to', anchorId: '#pricing' });
|
|
116
|
+
await runtime.actions.apply({ kind: 'navigate', url: '/signup' });
|
|
104
117
|
|
|
105
118
|
// Batch with atomic rollback
|
|
106
119
|
const batch = await runtime.actions.applyBatch([
|
|
107
|
-
{ kind:
|
|
108
|
-
{ kind:
|
|
120
|
+
{ kind: 'set_text', anchorId: 'h1', text: 'New' },
|
|
121
|
+
{ kind: 'highlight', anchorId: 'h1' },
|
|
109
122
|
]);
|
|
110
123
|
await batch.revertAll();
|
|
111
124
|
```
|
|
@@ -116,18 +129,22 @@ The Surfaces system manages UI rendering into named slots:
|
|
|
116
129
|
|
|
117
130
|
```typescript
|
|
118
131
|
// Static slots
|
|
119
|
-
runtime.surfaces.mount(
|
|
120
|
-
runtime.surfaces.mount(
|
|
121
|
-
runtime.surfaces.mount(
|
|
132
|
+
runtime.surfaces.mount('toast_top', { type: 'html', content: '<div>Saved!</div>' });
|
|
133
|
+
runtime.surfaces.mount('drawer_right', { type: 'html', content: '<div>Settings</div>' });
|
|
134
|
+
runtime.surfaces.mount('overlay_center', { type: 'html', content: '<div>Modal</div>' });
|
|
122
135
|
|
|
123
136
|
// Dynamic slots (positioned relative to anchors)
|
|
124
|
-
runtime.surfaces.mount(
|
|
125
|
-
runtime.surfaces.mount(
|
|
126
|
-
|
|
127
|
-
}
|
|
137
|
+
runtime.surfaces.mount('inline:product-card', { type: 'html', content: '<span>SALE</span>' });
|
|
138
|
+
runtime.surfaces.mount(
|
|
139
|
+
'adjacent:help-icon',
|
|
140
|
+
{ type: 'html', content: '<div>Help text</div>' },
|
|
141
|
+
{
|
|
142
|
+
position: { placement: 'bottom' },
|
|
143
|
+
}
|
|
144
|
+
);
|
|
128
145
|
|
|
129
146
|
// Priority-based arbitration
|
|
130
|
-
runtime.surfaces.mount(
|
|
147
|
+
runtime.surfaces.mount('toast_top', content, { priority: 10 }); // Higher priority wins
|
|
131
148
|
```
|
|
132
149
|
|
|
133
150
|
**Available Static Slots:**
|
|
@@ -147,14 +164,14 @@ runtime.surfaces.mount("toast_top", content, { priority: 10 }); // Higher priori
|
|
|
147
164
|
The runtime provides access to all core providers:
|
|
148
165
|
|
|
149
166
|
```typescript
|
|
150
|
-
const { runtime } = await Syntro.init({ token:
|
|
151
|
-
|
|
152
|
-
runtime.telemetry
|
|
153
|
-
runtime.context
|
|
154
|
-
runtime.events
|
|
155
|
-
runtime.state
|
|
156
|
-
runtime.actions
|
|
157
|
-
runtime.surfaces
|
|
167
|
+
const { runtime } = await Syntro.init({ token: 'syn_...' });
|
|
168
|
+
|
|
169
|
+
runtime.telemetry; // Event tracking (PostHog)
|
|
170
|
+
runtime.context; // Page/session/viewport state
|
|
171
|
+
runtime.events; // Normalized event stream
|
|
172
|
+
runtime.state; // Persistent storage
|
|
173
|
+
runtime.actions; // ActionEngine
|
|
174
|
+
runtime.surfaces; // Surfaces
|
|
158
175
|
```
|
|
159
176
|
|
|
160
177
|
---
|
|
@@ -169,9 +186,11 @@ import {
|
|
|
169
186
|
SmartCanvasPortal,
|
|
170
187
|
registerSmartCanvasElement,
|
|
171
188
|
type SmartCanvasElement,
|
|
172
|
-
} from
|
|
189
|
+
} from '@syntrologie/smart-canvas-sdk';
|
|
173
190
|
|
|
174
|
-
const canvasFetcher = async () => {
|
|
191
|
+
const canvasFetcher = async () => {
|
|
192
|
+
/* return ShadowCanvasConfigResponse */
|
|
193
|
+
};
|
|
175
194
|
|
|
176
195
|
function SmartCanvasBridge() {
|
|
177
196
|
const [element, setElement] = useState<SmartCanvasElement | null>(null);
|
|
@@ -210,12 +229,12 @@ When using via CDN, the SDK is available as `window.SyntrologieSDK`:
|
|
|
210
229
|
await window.SmartCanvas?.create({
|
|
211
230
|
defaultOpen: true,
|
|
212
231
|
tokens: {
|
|
213
|
-
|
|
214
|
-
|
|
232
|
+
'--sc-surface': '#050814',
|
|
233
|
+
'--sc-fg': '#f8fafc',
|
|
215
234
|
},
|
|
216
235
|
integrations: {
|
|
217
|
-
posthog,
|
|
218
|
-
growthbook,
|
|
236
|
+
posthog, // existing PostHog client
|
|
237
|
+
growthbook, // existing GrowthBook client
|
|
219
238
|
},
|
|
220
239
|
});
|
|
221
240
|
```
|
|
@@ -228,7 +247,7 @@ The EventBus provides a unified stream of normalized events:
|
|
|
228
247
|
|
|
229
248
|
```typescript
|
|
230
249
|
// Subscribe to events
|
|
231
|
-
runtime.events.subscribe({ names: [
|
|
250
|
+
runtime.events.subscribe({ names: ['ui.click', 'action.applied'] }, (event) => {
|
|
232
251
|
console.log(event.name, event.props);
|
|
233
252
|
});
|
|
234
253
|
|
|
@@ -266,18 +285,18 @@ Control when adaptives activate:
|
|
|
266
285
|
|
|
267
286
|
```typescript
|
|
268
287
|
const result = runtime.evaluateSync({
|
|
269
|
-
type:
|
|
288
|
+
type: 'rules',
|
|
270
289
|
rules: [
|
|
271
290
|
{
|
|
272
291
|
conditions: [
|
|
273
|
-
{ type:
|
|
274
|
-
{ type:
|
|
275
|
-
{ type:
|
|
292
|
+
{ type: 'page_url', pattern: '/pricing*' },
|
|
293
|
+
{ type: 'viewport', minWidth: 768 },
|
|
294
|
+
{ type: 'dismissed', key: 'promo', inverted: true },
|
|
276
295
|
],
|
|
277
|
-
value: true
|
|
278
|
-
}
|
|
296
|
+
value: true,
|
|
297
|
+
},
|
|
279
298
|
],
|
|
280
|
-
default: false
|
|
299
|
+
default: false,
|
|
281
300
|
});
|
|
282
301
|
|
|
283
302
|
if (result.value) {
|
|
@@ -388,13 +407,13 @@ npx tsc --noEmit
|
|
|
388
407
|
|
|
389
408
|
The telemetry client emits:
|
|
390
409
|
|
|
391
|
-
| Event
|
|
392
|
-
|
|
|
393
|
-
| `shadow_canvas_opened` / `shadow_canvas_closed` | Toggle button interactions
|
|
394
|
-
| `shadow_canvas_rectangle_viewed`
|
|
395
|
-
| `shadow_canvas_action`
|
|
396
|
-
| `action.applied` / `action.reverted`
|
|
397
|
-
| `surface.mounted` / `surface.unmounted`
|
|
410
|
+
| Event | Description |
|
|
411
|
+
| ----------------------------------------------- | --------------------------------------- |
|
|
412
|
+
| `shadow_canvas_opened` / `shadow_canvas_closed` | Toggle button interactions |
|
|
413
|
+
| `shadow_canvas_rectangle_viewed` | A rectangle becomes visible |
|
|
414
|
+
| `shadow_canvas_action` | CTA click, chatbot send, overlay events |
|
|
415
|
+
| `action.applied` / `action.reverted` | ActionEngine events |
|
|
416
|
+
| `surface.mounted` / `surface.unmounted` | Surfaces events |
|
|
398
417
|
|
|
399
418
|
---
|
|
400
419
|
|
|
@@ -3,9 +3,9 @@
|
|
|
3
3
|
*
|
|
4
4
|
* Provides access to the SmartCanvasRuntime from any component in the tree.
|
|
5
5
|
*/
|
|
6
|
-
import { ReactNode } from
|
|
7
|
-
import type { SmartCanvasRuntime } from
|
|
8
|
-
import type { RuntimeContext } from
|
|
6
|
+
import { ReactNode } from 'react';
|
|
7
|
+
import type { SmartCanvasRuntime } from './runtime';
|
|
8
|
+
import type { RuntimeContext } from './context/types';
|
|
9
9
|
export interface RuntimeProviderProps {
|
|
10
10
|
/** The SmartCanvasRuntime instance */
|
|
11
11
|
runtime: SmartCanvasRuntime | null;
|
|
@@ -35,8 +35,8 @@ export declare function useViewportContext(): import("./context").ViewportContex
|
|
|
35
35
|
export declare function useRuntimeEvents(filter: {
|
|
36
36
|
names?: string[];
|
|
37
37
|
patterns?: string[];
|
|
38
|
-
sources?: Array<
|
|
39
|
-
} | undefined, callback: (event: import(
|
|
38
|
+
sources?: Array<'posthog' | 'canvas' | 'derived'>;
|
|
39
|
+
} | undefined, callback: (event: import('./events/types').NormalizedEvent) => void, deps?: React.DependencyList): void;
|
|
40
40
|
/**
|
|
41
41
|
* Hook to access state helpers.
|
|
42
42
|
*/
|
|
@@ -44,7 +44,7 @@ export declare function useRuntimeState(): import("./state").StateStore | null;
|
|
|
44
44
|
/**
|
|
45
45
|
* Hook to evaluate a decision strategy.
|
|
46
46
|
*/
|
|
47
|
-
export declare function useDecision<T>(strategy: import(
|
|
47
|
+
export declare function useDecision<T>(strategy: import('./decisions/types').DecisionStrategy<T> | undefined | null, defaultValue: T): {
|
|
48
48
|
value: T;
|
|
49
49
|
isFallback: boolean;
|
|
50
50
|
isLoading: boolean;
|
package/dist/RuntimeProvider.js
CHANGED
|
@@ -4,7 +4,7 @@ import { jsx as _jsx } from "react/jsx-runtime";
|
|
|
4
4
|
*
|
|
5
5
|
* Provides access to the SmartCanvasRuntime from any component in the tree.
|
|
6
6
|
*/
|
|
7
|
-
import { createContext, useContext, useMemo, useEffect, useState } from
|
|
7
|
+
import { createContext, useContext, useMemo, useEffect, useState } from 'react';
|
|
8
8
|
const RuntimeReactContext = createContext({
|
|
9
9
|
runtime: null,
|
|
10
10
|
context: null,
|
|
@@ -27,7 +27,7 @@ export function RuntimeProvider({ runtime, children }) {
|
|
|
27
27
|
return unsubscribe;
|
|
28
28
|
}, [runtime]);
|
|
29
29
|
const value = useMemo(() => ({ runtime, context }), [runtime, context]);
|
|
30
|
-
return
|
|
30
|
+
return _jsx(RuntimeReactContext.Provider, { value: value, children: children });
|
|
31
31
|
}
|
|
32
32
|
/**
|
|
33
33
|
* Hook to access the SmartCanvasRuntime.
|
|
@@ -73,7 +73,6 @@ export function useRuntimeEvents(filter, callback, deps = []) {
|
|
|
73
73
|
? runtime.events.subscribe(filter, callback)
|
|
74
74
|
: runtime.events.subscribe(callback);
|
|
75
75
|
return unsubscribe;
|
|
76
|
-
// eslint-disable-next-line react-hooks/exhaustive-deps
|
|
77
76
|
}, [runtime, ...deps]);
|
|
78
77
|
}
|
|
79
78
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"RuntimeProvider.js","sourceRoot":"","sources":["../src/RuntimeProvider.tsx"],"names":[],"mappings":";AAAA;;;;GAIG;AACH,OAAO,EAAE,aAAa,EAAE,UAAU,EAAa,OAAO,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC;AAc3F,MAAM,mBAAmB,GAAG,aAAa,CAAsB;IAC7D,OAAO,EAAE,IAAI;IACb,OAAO,EAAE,IAAI;CACd,CAAC,CAAC;AAQH;;GAEG;AACH,MAAM,UAAU,eAAe,CAAC,EAAE,OAAO,EAAE,QAAQ,EAAwB;IACzE,6DAA6D;IAC7D,MAAM,CAAC,OAAO,EAAE,UAAU,CAAC,GAAG,QAAQ,CACpC,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,IAAI,CACvC,CAAC;IAEF,SAAS,CAAC,GAAG,EAAE;QACb,IAAI,CAAC,OAAO;YAAE,OAAO;QAErB,sBAAsB;QACtB,UAAU,CAAC,OAAO,CAAC,OAAO,CAAC,GAAG,EAAE,CAAC,CAAC;QAElC,uBAAuB;QACvB,MAAM,WAAW,GAAG,OAAO,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,GAAG,EAAE,EAAE;YACpD,UAAU,CAAC,GAAG,CAAC,CAAC;QAClB,CAAC,CAAC,CAAC;QAEH,OAAO,WAAW,CAAC;IACrB,CAAC,EAAE,CAAC,OAAO,CAAC,CAAC,CAAC;IAEd,MAAM,KAAK,GAAG,OAAO,
|
|
1
|
+
{"version":3,"file":"RuntimeProvider.js","sourceRoot":"","sources":["../src/RuntimeProvider.tsx"],"names":[],"mappings":"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"}
|
package/dist/SmartCanvasApp.d.ts
CHANGED
|
@@ -1,11 +1,11 @@
|
|
|
1
|
-
import { ReactNode } from
|
|
2
|
-
import { SmartCanvasController } from
|
|
3
|
-
import type { CanvasConfigFetcher } from
|
|
4
|
-
import type { ExperimentClient } from
|
|
5
|
-
import type { TelemetryClient } from
|
|
6
|
-
import { MountableComponent } from
|
|
7
|
-
import { CanvasTheme } from
|
|
8
|
-
import type { SmartCanvasRuntime } from
|
|
1
|
+
import { ReactNode } from 'react';
|
|
2
|
+
import { SmartCanvasController } from './controller';
|
|
3
|
+
import type { CanvasConfigFetcher } from './types';
|
|
4
|
+
import type { ExperimentClient } from './experiments/types';
|
|
5
|
+
import type { TelemetryClient } from './telemetry/types';
|
|
6
|
+
import { MountableComponent } from './api';
|
|
7
|
+
import { CanvasTheme } from './components/ShadowCanvasOverlay';
|
|
8
|
+
import type { SmartCanvasRuntime } from './runtime';
|
|
9
9
|
export interface SmartCanvasAppProps {
|
|
10
10
|
controller: SmartCanvasController;
|
|
11
11
|
fetcher?: CanvasConfigFetcher;
|
package/dist/SmartCanvasApp.js
CHANGED
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
import { jsx as _jsx } from "react/jsx-runtime";
|
|
2
|
-
import { useEffect, useMemo, useState } from
|
|
3
|
-
import { ShadowCanvasOverlay } from
|
|
4
|
-
import { useShadowCanvasConfig } from
|
|
5
|
-
import { createCanvasConfigFetcher } from
|
|
6
|
-
import { RuntimeProvider, usePageContext } from
|
|
2
|
+
import { useEffect, useMemo, useState } from 'react';
|
|
3
|
+
import { ShadowCanvasOverlay } from './components/ShadowCanvasOverlay';
|
|
4
|
+
import { useShadowCanvasConfig } from './hooks/useShadowCanvasConfig';
|
|
5
|
+
import { createCanvasConfigFetcher } from './configFetcher';
|
|
6
|
+
import { RuntimeProvider, usePageContext } from './RuntimeProvider';
|
|
7
7
|
/**
|
|
8
8
|
* Check if current route is allowed based on routes config
|
|
9
9
|
*/
|
|
@@ -13,11 +13,11 @@ function isRouteAllowed(routes, pathname) {
|
|
|
13
13
|
return true;
|
|
14
14
|
// If include is specified, route must match one of the patterns
|
|
15
15
|
if ((_a = routes.include) === null || _a === void 0 ? void 0 : _a.length) {
|
|
16
|
-
return routes.include.some(pattern => matchRoute(pattern, pathname));
|
|
16
|
+
return routes.include.some((pattern) => matchRoute(pattern, pathname));
|
|
17
17
|
}
|
|
18
18
|
// If exclude is specified, route must NOT match any patterns
|
|
19
19
|
if ((_b = routes.exclude) === null || _b === void 0 ? void 0 : _b.length) {
|
|
20
|
-
return !routes.exclude.some(pattern => matchRoute(pattern, pathname));
|
|
20
|
+
return !routes.exclude.some((pattern) => matchRoute(pattern, pathname));
|
|
21
21
|
}
|
|
22
22
|
return true;
|
|
23
23
|
}
|
|
@@ -26,13 +26,13 @@ function isRouteAllowed(routes, pathname) {
|
|
|
26
26
|
* Examples: "/login" matches "/login", "/admin/*" matches "/admin/users"
|
|
27
27
|
*/
|
|
28
28
|
function matchRoute(pattern, pathname) {
|
|
29
|
-
if (pattern.endsWith(
|
|
29
|
+
if (pattern.endsWith('/*')) {
|
|
30
30
|
const prefix = pattern.slice(0, -2);
|
|
31
|
-
return pathname === prefix || pathname.startsWith(prefix +
|
|
31
|
+
return pathname === prefix || pathname.startsWith(prefix + '/');
|
|
32
32
|
}
|
|
33
33
|
return pathname === pattern;
|
|
34
34
|
}
|
|
35
|
-
export function SmartCanvasApp({ controller, fetcher, configUri, configUriFeatureKey =
|
|
35
|
+
export function SmartCanvasApp({ controller, fetcher, configUri, configUriFeatureKey = 'smart-canvas-config-uri', configFeatureKey = 'smart-canvas-config', fetchCredentials = 'include', pollIntervalMs, experiments, telemetry, runtime, overlayFetcher, overlayConfigUri, overlayConfigFeatureKey = 'smart-canvas-overlay-uri', overlayFetchCredentials = 'include', footerSlot, launcherLabel, canvasHost, customRenderers, theme, }) {
|
|
36
36
|
// Wrap the app with RuntimeProvider if runtime is available
|
|
37
37
|
if (runtime) {
|
|
38
38
|
return (_jsx(RuntimeProvider, { runtime: runtime, children: _jsx(SmartCanvasAppInner, { controller: controller, fetcher: fetcher, configUri: configUri, configUriFeatureKey: configUriFeatureKey, configFeatureKey: configFeatureKey, fetchCredentials: fetchCredentials, pollIntervalMs: pollIntervalMs, experiments: experiments, telemetry: telemetry, runtime: runtime, overlayFetcher: overlayFetcher, overlayConfigUri: overlayConfigUri, overlayConfigFeatureKey: overlayConfigFeatureKey, overlayFetchCredentials: overlayFetchCredentials, footerSlot: footerSlot, launcherLabel: launcherLabel, canvasHost: canvasHost, customRenderers: customRenderers, theme: theme }) }));
|
|
@@ -44,26 +44,24 @@ export function SmartCanvasApp({ controller, fetcher, configUri, configUriFeatur
|
|
|
44
44
|
* Inner component that handles the actual rendering logic.
|
|
45
45
|
* Separated to allow RuntimeProvider to wrap it when runtime is available.
|
|
46
46
|
*/
|
|
47
|
-
function SmartCanvasAppInner({ controller, fetcher, configUri, configUriFeatureKey =
|
|
47
|
+
function SmartCanvasAppInner({ controller, fetcher, configUri, configUriFeatureKey = 'smart-canvas-config-uri', configFeatureKey = 'smart-canvas-config', fetchCredentials = 'include', pollIntervalMs, experiments, telemetry, runtime, overlayFetcher: _overlayFetcher, overlayConfigUri: _overlayConfigUri, overlayConfigFeatureKey: _overlayConfigFeatureKey = 'smart-canvas-overlay-uri', overlayFetchCredentials: _overlayFetchCredentials = 'include', footerSlot, launcherLabel, canvasHost: _canvasHost, customRenderers, theme, }) {
|
|
48
48
|
var _a, _b, _c;
|
|
49
49
|
const [open, setOpen] = useState(controller.getState().open);
|
|
50
50
|
// Use runtime context for pathname if available, otherwise track locally
|
|
51
51
|
const pageContext = usePageContext();
|
|
52
|
-
const [localPathname, setLocalPathname] = useState(() => typeof window !==
|
|
52
|
+
const [localPathname, setLocalPathname] = useState(() => typeof window !== 'undefined' ? window.location.pathname : '/');
|
|
53
53
|
// If runtime is available, use its context for pathname (it already handles SPA navigation)
|
|
54
54
|
// Otherwise, track pathname locally (legacy mode)
|
|
55
|
-
const pathname = (pageContext === null || pageContext === void 0 ? void 0 : pageContext.url)
|
|
56
|
-
? new URL(pageContext.url).pathname
|
|
57
|
-
: localPathname;
|
|
55
|
+
const pathname = (pageContext === null || pageContext === void 0 ? void 0 : pageContext.url) ? new URL(pageContext.url).pathname : localPathname;
|
|
58
56
|
// Track route changes locally only when runtime is not available (legacy mode)
|
|
59
57
|
useEffect(() => {
|
|
60
58
|
if (runtime)
|
|
61
59
|
return; // Runtime handles this via ContextManager
|
|
62
|
-
if (typeof window ===
|
|
60
|
+
if (typeof window === 'undefined')
|
|
63
61
|
return;
|
|
64
62
|
const updatePathname = () => setLocalPathname(window.location.pathname);
|
|
65
63
|
// Listen for popstate (back/forward navigation)
|
|
66
|
-
window.addEventListener(
|
|
64
|
+
window.addEventListener('popstate', updatePathname);
|
|
67
65
|
// Intercept pushState/replaceState for SPA navigation
|
|
68
66
|
const originalPushState = history.pushState;
|
|
69
67
|
const originalReplaceState = history.replaceState;
|
|
@@ -76,7 +74,7 @@ function SmartCanvasAppInner({ controller, fetcher, configUri, configUriFeatureK
|
|
|
76
74
|
updatePathname();
|
|
77
75
|
};
|
|
78
76
|
return () => {
|
|
79
|
-
window.removeEventListener(
|
|
77
|
+
window.removeEventListener('popstate', updatePathname);
|
|
80
78
|
history.pushState = originalPushState;
|
|
81
79
|
history.replaceState = originalReplaceState;
|
|
82
80
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SmartCanvasApp.js","sourceRoot":"","sources":["../src/SmartCanvasApp.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAa,SAAS,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC;AAChE,OAAO,EAAE,mBAAmB,EAAE,MAAM,kCAAkC,CAAC;AAGvE,OAAO,EAAE,qBAAqB,EAAE,MAAM,+BAA+B,CAAC;AAGtE,OAAO,EAAE,yBAAyB,EAAE,MAAM,iBAAiB,CAAC;AAI5D,OAAO,EAAE,eAAe,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AAEpE;;GAEG;AACH,SAAS,cAAc,CAAC,MAAgC,EAAE,QAAgB;;IACxE,IAAI,CAAC,MAAM;QAAE,OAAO,IAAI,CAAC;IAEzB,gEAAgE;IAChE,IAAI,MAAA,MAAM,CAAC,OAAO,0CAAE,MAAM,EAAE,CAAC;QAC3B,OAAO,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,
|
|
1
|
+
{"version":3,"file":"SmartCanvasApp.js","sourceRoot":"","sources":["../src/SmartCanvasApp.tsx"],"names":[],"mappings":"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"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import { type SmartCanvasAppProps } from
|
|
2
|
-
import { SmartCanvasController } from
|
|
3
|
-
import { MountableComponent } from
|
|
1
|
+
import { type SmartCanvasAppProps } from './SmartCanvasApp';
|
|
2
|
+
import { SmartCanvasController } from './controller';
|
|
3
|
+
import { MountableComponent } from './api';
|
|
4
4
|
export declare class SmartCanvasElement extends HTMLElement {
|
|
5
5
|
#private;
|
|
6
6
|
constructor();
|
|
@@ -17,13 +17,13 @@ export declare class SmartCanvasElement extends HTMLElement {
|
|
|
17
17
|
/**
|
|
18
18
|
* Used by standalone create() helper to bootstrap React into the shadow.
|
|
19
19
|
*/
|
|
20
|
-
mountReactApp(appProps: Omit<SmartCanvasAppProps,
|
|
20
|
+
mountReactApp(appProps: Omit<SmartCanvasAppProps, 'controller'>): void;
|
|
21
21
|
private render;
|
|
22
22
|
private applyBaseStyles;
|
|
23
23
|
}
|
|
24
24
|
export declare const registerSmartCanvasElement: () => void;
|
|
25
25
|
declare global {
|
|
26
26
|
interface HTMLElementTagNameMap {
|
|
27
|
-
|
|
27
|
+
'smart-canvas': SmartCanvasElement;
|
|
28
28
|
}
|
|
29
29
|
}
|
|
@@ -11,10 +11,10 @@ var __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (
|
|
|
11
11
|
};
|
|
12
12
|
var _SmartCanvasElement_shadow, _SmartCanvasElement_mount, _SmartCanvasElement_overlayRoot, _SmartCanvasElement_controller, _SmartCanvasElement_root, _SmartCanvasElement_lastAppProps, _SmartCanvasElement_customRenderers;
|
|
13
13
|
import { jsx as _jsx } from "react/jsx-runtime";
|
|
14
|
-
import { createRoot } from
|
|
15
|
-
import { SmartCanvasApp } from
|
|
16
|
-
import { createSmartCanvasController } from
|
|
17
|
-
const TAG_NAME =
|
|
14
|
+
import { createRoot } from 'react-dom/client';
|
|
15
|
+
import { SmartCanvasApp } from './SmartCanvasApp';
|
|
16
|
+
import { createSmartCanvasController } from './controller';
|
|
17
|
+
const TAG_NAME = 'smart-canvas';
|
|
18
18
|
const BASE_CSS = `
|
|
19
19
|
:host {
|
|
20
20
|
font: inherit;
|
|
@@ -30,12 +30,12 @@ const BASE_CSS = `
|
|
|
30
30
|
}
|
|
31
31
|
`;
|
|
32
32
|
const ensureOverlayRoot = () => {
|
|
33
|
-
const id =
|
|
33
|
+
const id = 'smartcanvas-overlays';
|
|
34
34
|
let root = document.getElementById(id);
|
|
35
35
|
if (!root) {
|
|
36
|
-
root = document.createElement(
|
|
36
|
+
root = document.createElement('div');
|
|
37
37
|
root.id = id;
|
|
38
|
-
root.setAttribute(
|
|
38
|
+
root.setAttribute('data-smart-canvas-overlay', 'true');
|
|
39
39
|
// Guard against body not existing yet (script in <head>)
|
|
40
40
|
if (document.body) {
|
|
41
41
|
document.body.appendChild(root);
|
|
@@ -60,16 +60,16 @@ export class SmartCanvasElement extends HTMLElement {
|
|
|
60
60
|
_SmartCanvasElement_root.set(this, null);
|
|
61
61
|
_SmartCanvasElement_lastAppProps.set(this, null);
|
|
62
62
|
_SmartCanvasElement_customRenderers.set(this, {});
|
|
63
|
-
__classPrivateFieldSet(this, _SmartCanvasElement_shadow, this.attachShadow({ mode:
|
|
64
|
-
__classPrivateFieldSet(this, _SmartCanvasElement_mount, document.createElement(
|
|
65
|
-
__classPrivateFieldGet(this, _SmartCanvasElement_mount, "f").setAttribute(
|
|
63
|
+
__classPrivateFieldSet(this, _SmartCanvasElement_shadow, this.attachShadow({ mode: 'open', delegatesFocus: true }), "f");
|
|
64
|
+
__classPrivateFieldSet(this, _SmartCanvasElement_mount, document.createElement('div'), "f");
|
|
65
|
+
__classPrivateFieldGet(this, _SmartCanvasElement_mount, "f").setAttribute('part', 'mount');
|
|
66
66
|
__classPrivateFieldGet(this, _SmartCanvasElement_shadow, "f").appendChild(__classPrivateFieldGet(this, _SmartCanvasElement_mount, "f"));
|
|
67
67
|
__classPrivateFieldSet(this, _SmartCanvasElement_overlayRoot, ensureOverlayRoot(), "f");
|
|
68
68
|
__classPrivateFieldSet(this, _SmartCanvasElement_controller, createSmartCanvasController(), "f");
|
|
69
69
|
this.applyBaseStyles();
|
|
70
70
|
}
|
|
71
71
|
connectedCallback() {
|
|
72
|
-
this.style.setProperty(
|
|
72
|
+
this.style.setProperty('font-family', 'inherit');
|
|
73
73
|
}
|
|
74
74
|
disconnectedCallback() {
|
|
75
75
|
var _a;
|
|
@@ -126,7 +126,7 @@ export class SmartCanvasElement extends HTMLElement {
|
|
|
126
126
|
__classPrivateFieldGet(this, _SmartCanvasElement_shadow, "f").adoptedStyleSheets = [sheet];
|
|
127
127
|
}
|
|
128
128
|
else {
|
|
129
|
-
const style = document.createElement(
|
|
129
|
+
const style = document.createElement('style');
|
|
130
130
|
style.textContent = BASE_CSS;
|
|
131
131
|
__classPrivateFieldGet(this, _SmartCanvasElement_shadow, "f").appendChild(style);
|
|
132
132
|
}
|
|
@@ -134,7 +134,7 @@ export class SmartCanvasElement extends HTMLElement {
|
|
|
134
134
|
}
|
|
135
135
|
_SmartCanvasElement_shadow = new WeakMap(), _SmartCanvasElement_mount = new WeakMap(), _SmartCanvasElement_overlayRoot = new WeakMap(), _SmartCanvasElement_controller = new WeakMap(), _SmartCanvasElement_root = new WeakMap(), _SmartCanvasElement_lastAppProps = new WeakMap(), _SmartCanvasElement_customRenderers = new WeakMap();
|
|
136
136
|
export const registerSmartCanvasElement = () => {
|
|
137
|
-
if (typeof window ===
|
|
137
|
+
if (typeof window === 'undefined')
|
|
138
138
|
return;
|
|
139
139
|
if (!customElements.get(TAG_NAME)) {
|
|
140
140
|
customElements.define(TAG_NAME, SmartCanvasElement);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SmartCanvasElement.js","sourceRoot":"","sources":["../src/SmartCanvasElement.tsx"],"names":[],"mappings":";;;;;;;;;;;;;AAAA,OAAO,EAAE,UAAU,EAAQ,MAAM,kBAAkB,CAAC;AACpD,OAAO,EAAE,cAAc,EAA4B,MAAM,kBAAkB,CAAC;AAC5E,OAAO,EAAE,2BAA2B,EAAyB,MAAM,cAAc,CAAC;AAGlF,MAAM,QAAQ,GAAG,cAAc,CAAC;AAChC,MAAM,QAAQ,GAAG;;;;;;;;;;;;;CAahB,CAAC;AAEF,MAAM,iBAAiB,GAAG,GAAG,EAAE;IAC7B,MAAM,EAAE,GAAG,sBAAsB,CAAC;IAClC,IAAI,IAAI,GAAG,QAAQ,CAAC,cAAc,CAAC,EAAE,CAAC,CAAC;IACvC,IAAI,CAAC,IAAI,EAAE,CAAC;QACV,IAAI,GAAG,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;QACrC,IAAI,CAAC,EAAE,GAAG,EAAE,CAAC;QACb,IAAI,CAAC,YAAY,CAAC,2BAA2B,EAAE,MAAM,CAAC,CAAC;QACvD,yDAAyD;QACzD,IAAI,QAAQ,CAAC,IAAI,EAAE,CAAC;YAClB,QAAQ,CAAC,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;QAClC,CAAC;aAAM,CAAC;YACN,QAAQ,CAAC,gBAAgB,
|
|
1
|
+
{"version":3,"file":"SmartCanvasElement.js","sourceRoot":"","sources":["../src/SmartCanvasElement.tsx"],"names":[],"mappings":"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"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { ReactNode } from
|
|
2
|
-
import type { SmartCanvasElement } from
|
|
1
|
+
import { ReactNode } from 'react';
|
|
2
|
+
import type { SmartCanvasElement } from './SmartCanvasElement';
|
|
3
3
|
export interface SmartCanvasPortalProps {
|
|
4
4
|
element: SmartCanvasElement | null;
|
|
5
5
|
children: ReactNode;
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { useLayoutEffect, useState } from
|
|
2
|
-
import { createPortal } from
|
|
1
|
+
import { useLayoutEffect, useState } from 'react';
|
|
2
|
+
import { createPortal } from 'react-dom';
|
|
3
3
|
export function SmartCanvasPortal({ element, children }) {
|
|
4
4
|
const [mountNode, setMountNode] = useState(null);
|
|
5
5
|
useLayoutEffect(() => {
|
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
* Unified execution layer for interventions. Provides a high-level API for
|
|
5
5
|
* applying, reverting, and managing action steps.
|
|
6
6
|
*/
|
|
7
|
-
import type { ActionEngine, ActionEngineOptions } from
|
|
7
|
+
import type { ActionEngine, ActionEngineOptions } from './types';
|
|
8
8
|
/**
|
|
9
9
|
* Create an ActionEngine instance.
|
|
10
10
|
*/
|