@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
|
@@ -0,0 +1,113 @@
|
|
|
1
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
|
2
|
+
/**
|
|
3
|
+
* RuntimeProvider - React context for accessing the v2 Runtime.
|
|
4
|
+
*
|
|
5
|
+
* Provides access to the SmartCanvasRuntime from any component in the tree.
|
|
6
|
+
*/
|
|
7
|
+
import { createContext, useContext, useMemo, useEffect, useState } from 'react';
|
|
8
|
+
const RuntimeReactContext = createContext({
|
|
9
|
+
runtime: null,
|
|
10
|
+
context: null,
|
|
11
|
+
});
|
|
12
|
+
/**
|
|
13
|
+
* Provider component for the SmartCanvasRuntime.
|
|
14
|
+
*/
|
|
15
|
+
export function RuntimeProvider({ runtime, children }) {
|
|
16
|
+
// Subscribe to context changes and re-render when they occur
|
|
17
|
+
const [context, setContext] = useState(runtime ? runtime.context.get() : null);
|
|
18
|
+
useEffect(() => {
|
|
19
|
+
if (!runtime)
|
|
20
|
+
return;
|
|
21
|
+
// Set initial context
|
|
22
|
+
setContext(runtime.context.get());
|
|
23
|
+
// Subscribe to changes
|
|
24
|
+
const unsubscribe = runtime.context.subscribe((ctx) => {
|
|
25
|
+
setContext(ctx);
|
|
26
|
+
});
|
|
27
|
+
return unsubscribe;
|
|
28
|
+
}, [runtime]);
|
|
29
|
+
const value = useMemo(() => ({ runtime, context }), [runtime, context]);
|
|
30
|
+
return _jsx(RuntimeReactContext.Provider, { value: value, children: children });
|
|
31
|
+
}
|
|
32
|
+
/**
|
|
33
|
+
* Hook to access the SmartCanvasRuntime.
|
|
34
|
+
*/
|
|
35
|
+
export function useRuntime() {
|
|
36
|
+
const { runtime } = useContext(RuntimeReactContext);
|
|
37
|
+
return runtime;
|
|
38
|
+
}
|
|
39
|
+
/**
|
|
40
|
+
* Hook to access the current runtime context (reactive).
|
|
41
|
+
*/
|
|
42
|
+
export function useRuntimeContext() {
|
|
43
|
+
const { context } = useContext(RuntimeReactContext);
|
|
44
|
+
return context;
|
|
45
|
+
}
|
|
46
|
+
/**
|
|
47
|
+
* Hook to access a specific part of the runtime context.
|
|
48
|
+
*/
|
|
49
|
+
export function usePageContext() {
|
|
50
|
+
var _a;
|
|
51
|
+
const context = useRuntimeContext();
|
|
52
|
+
return (_a = context === null || context === void 0 ? void 0 : context.page) !== null && _a !== void 0 ? _a : null;
|
|
53
|
+
}
|
|
54
|
+
export function useSessionContext() {
|
|
55
|
+
var _a;
|
|
56
|
+
const context = useRuntimeContext();
|
|
57
|
+
return (_a = context === null || context === void 0 ? void 0 : context.session) !== null && _a !== void 0 ? _a : null;
|
|
58
|
+
}
|
|
59
|
+
export function useViewportContext() {
|
|
60
|
+
var _a;
|
|
61
|
+
const context = useRuntimeContext();
|
|
62
|
+
return (_a = context === null || context === void 0 ? void 0 : context.viewport) !== null && _a !== void 0 ? _a : null;
|
|
63
|
+
}
|
|
64
|
+
/**
|
|
65
|
+
* Hook to subscribe to runtime events.
|
|
66
|
+
*/
|
|
67
|
+
export function useRuntimeEvents(filter, callback, deps = []) {
|
|
68
|
+
const runtime = useRuntime();
|
|
69
|
+
useEffect(() => {
|
|
70
|
+
if (!runtime)
|
|
71
|
+
return;
|
|
72
|
+
const unsubscribe = filter
|
|
73
|
+
? runtime.events.subscribe(filter, callback)
|
|
74
|
+
: runtime.events.subscribe(callback);
|
|
75
|
+
return unsubscribe;
|
|
76
|
+
}, [runtime, ...deps]);
|
|
77
|
+
}
|
|
78
|
+
/**
|
|
79
|
+
* Hook to access state helpers.
|
|
80
|
+
*/
|
|
81
|
+
export function useRuntimeState() {
|
|
82
|
+
var _a;
|
|
83
|
+
const runtime = useRuntime();
|
|
84
|
+
return (_a = runtime === null || runtime === void 0 ? void 0 : runtime.state) !== null && _a !== void 0 ? _a : null;
|
|
85
|
+
}
|
|
86
|
+
/**
|
|
87
|
+
* Hook to evaluate a decision strategy.
|
|
88
|
+
*/
|
|
89
|
+
export function useDecision(strategy, defaultValue) {
|
|
90
|
+
const runtime = useRuntime();
|
|
91
|
+
const [result, setResult] = useState({
|
|
92
|
+
value: defaultValue,
|
|
93
|
+
isFallback: true,
|
|
94
|
+
isLoading: true,
|
|
95
|
+
});
|
|
96
|
+
useEffect(() => {
|
|
97
|
+
if (!runtime || !strategy) {
|
|
98
|
+
setResult({ value: defaultValue, isFallback: true, isLoading: false });
|
|
99
|
+
return;
|
|
100
|
+
}
|
|
101
|
+
let cancelled = false;
|
|
102
|
+
runtime.evaluate(strategy).then((res) => {
|
|
103
|
+
if (!cancelled) {
|
|
104
|
+
setResult({ value: res.value, isFallback: res.isFallback, isLoading: false });
|
|
105
|
+
}
|
|
106
|
+
});
|
|
107
|
+
return () => {
|
|
108
|
+
cancelled = true;
|
|
109
|
+
};
|
|
110
|
+
}, [runtime, strategy, defaultValue]);
|
|
111
|
+
return result;
|
|
112
|
+
}
|
|
113
|
+
//# sourceMappingURL=RuntimeProvider.js.map
|
|
@@ -0,0 +1 @@
|
|
|
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 {
|
|
3
|
-
import
|
|
4
|
-
import
|
|
5
|
-
import type {
|
|
6
|
-
import type {
|
|
7
|
-
import {
|
|
8
|
-
import {
|
|
1
|
+
import { ReactNode } from 'react';
|
|
2
|
+
import { MountableComponent } from './api';
|
|
3
|
+
import { CanvasTheme } from './components/ShadowCanvasOverlay';
|
|
4
|
+
import { SmartCanvasController } from './controller';
|
|
5
|
+
import type { ExperimentClient } from './experiments/types';
|
|
6
|
+
import type { SmartCanvasRuntime } from './runtime';
|
|
7
|
+
import type { TelemetryClient } from './telemetry/types';
|
|
8
|
+
import type { CanvasConfigFetcher } from './types';
|
|
9
9
|
export interface SmartCanvasAppProps {
|
|
10
10
|
controller: SmartCanvasController;
|
|
11
11
|
fetcher?: CanvasConfigFetcher;
|
|
@@ -16,9 +16,15 @@ export interface SmartCanvasAppProps {
|
|
|
16
16
|
pollIntervalMs?: number;
|
|
17
17
|
experiments?: ExperimentClient;
|
|
18
18
|
telemetry?: TelemetryClient;
|
|
19
|
-
|
|
19
|
+
/** v2 Runtime instance for context, events, state, and decisions */
|
|
20
|
+
runtime?: SmartCanvasRuntime;
|
|
21
|
+
/** @deprecated Actions replace overlay recipes. Use config.actions instead. */
|
|
22
|
+
overlayFetcher?: () => Promise<unknown>;
|
|
23
|
+
/** @deprecated Actions replace overlay recipes. Use config.actions instead. */
|
|
20
24
|
overlayConfigUri?: string;
|
|
25
|
+
/** @deprecated Actions replace overlay recipes. Use config.actions instead. */
|
|
21
26
|
overlayConfigFeatureKey?: string;
|
|
27
|
+
/** @deprecated Actions replace overlay recipes. Use config.actions instead. */
|
|
22
28
|
overlayFetchCredentials?: RequestCredentials;
|
|
23
29
|
footerSlot?: ReactNode;
|
|
24
30
|
launcherLabel?: string;
|
|
@@ -26,4 +32,4 @@ export interface SmartCanvasAppProps {
|
|
|
26
32
|
customRenderers?: Record<string, MountableComponent>;
|
|
27
33
|
theme?: Partial<CanvasTheme>;
|
|
28
34
|
}
|
|
29
|
-
export declare function SmartCanvasApp({ controller, fetcher, configUri, configUriFeatureKey, configFeatureKey, fetchCredentials, pollIntervalMs, experiments, telemetry, overlayFetcher, overlayConfigUri, overlayConfigFeatureKey, overlayFetchCredentials, footerSlot, launcherLabel, canvasHost, customRenderers, theme, }: SmartCanvasAppProps): import("react/jsx-runtime").JSX.Element
|
|
35
|
+
export declare function SmartCanvasApp({ controller, fetcher, configUri, configUriFeatureKey, configFeatureKey, fetchCredentials, pollIntervalMs, experiments, telemetry, runtime, overlayFetcher, overlayConfigUri, overlayConfigFeatureKey, overlayFetchCredentials, footerSlot, launcherLabel, canvasHost, customRenderers, theme, }: SmartCanvasAppProps): import("react/jsx-runtime").JSX.Element;
|
package/dist/SmartCanvasApp.js
CHANGED
|
@@ -1,10 +1,9 @@
|
|
|
1
1
|
import { jsx as _jsx } from "react/jsx-runtime";
|
|
2
|
-
import { useEffect, useMemo, useState } from
|
|
3
|
-
import { ShadowCanvasOverlay } from
|
|
4
|
-
import {
|
|
5
|
-
import {
|
|
6
|
-
import {
|
|
7
|
-
import { useHostPatches } from "./hooks/useHostPatches";
|
|
2
|
+
import { useEffect, useMemo, useState } from 'react';
|
|
3
|
+
import { ShadowCanvasOverlay } from './components/ShadowCanvasOverlay';
|
|
4
|
+
import { createCanvasConfigFetcher } from './configFetcher';
|
|
5
|
+
import { useShadowCanvasConfig } from './hooks/useShadowCanvasConfig';
|
|
6
|
+
import { RuntimeProvider, usePageContext } from './RuntimeProvider';
|
|
8
7
|
/**
|
|
9
8
|
* Check if current route is allowed based on routes config
|
|
10
9
|
*/
|
|
@@ -14,11 +13,11 @@ function isRouteAllowed(routes, pathname) {
|
|
|
14
13
|
return true;
|
|
15
14
|
// If include is specified, route must match one of the patterns
|
|
16
15
|
if ((_a = routes.include) === null || _a === void 0 ? void 0 : _a.length) {
|
|
17
|
-
return routes.include.some(pattern => matchRoute(pattern, pathname));
|
|
16
|
+
return routes.include.some((pattern) => matchRoute(pattern, pathname));
|
|
18
17
|
}
|
|
19
18
|
// If exclude is specified, route must NOT match any patterns
|
|
20
19
|
if ((_b = routes.exclude) === null || _b === void 0 ? void 0 : _b.length) {
|
|
21
|
-
return !routes.exclude.some(pattern => matchRoute(pattern, pathname));
|
|
20
|
+
return !routes.exclude.some((pattern) => matchRoute(pattern, pathname));
|
|
22
21
|
}
|
|
23
22
|
return true;
|
|
24
23
|
}
|
|
@@ -27,40 +26,59 @@ function isRouteAllowed(routes, pathname) {
|
|
|
27
26
|
* Examples: "/login" matches "/login", "/admin/*" matches "/admin/users"
|
|
28
27
|
*/
|
|
29
28
|
function matchRoute(pattern, pathname) {
|
|
30
|
-
if (pattern.endsWith(
|
|
29
|
+
if (pattern.endsWith('/*')) {
|
|
31
30
|
const prefix = pattern.slice(0, -2);
|
|
32
|
-
return pathname === prefix || pathname.startsWith(prefix
|
|
31
|
+
return pathname === prefix || pathname.startsWith(`${prefix}/`);
|
|
33
32
|
}
|
|
34
33
|
return pathname === pattern;
|
|
35
34
|
}
|
|
36
|
-
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
|
+
// Wrap the app with RuntimeProvider if runtime is available
|
|
37
|
+
if (runtime) {
|
|
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 }) }));
|
|
39
|
+
}
|
|
40
|
+
// No runtime - render directly (legacy mode)
|
|
41
|
+
return (_jsx(SmartCanvasAppInner, { controller: controller, fetcher: fetcher, configUri: configUri, configUriFeatureKey: configUriFeatureKey, configFeatureKey: configFeatureKey, fetchCredentials: fetchCredentials, pollIntervalMs: pollIntervalMs, experiments: experiments, telemetry: telemetry, overlayFetcher: overlayFetcher, overlayConfigUri: overlayConfigUri, overlayConfigFeatureKey: overlayConfigFeatureKey, overlayFetchCredentials: overlayFetchCredentials, footerSlot: footerSlot, launcherLabel: launcherLabel, canvasHost: canvasHost, customRenderers: customRenderers, theme: theme }));
|
|
42
|
+
}
|
|
43
|
+
/**
|
|
44
|
+
* Inner component that handles the actual rendering logic.
|
|
45
|
+
* Separated to allow RuntimeProvider to wrap it when runtime is available.
|
|
46
|
+
*/
|
|
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, }) {
|
|
37
48
|
var _a, _b, _c;
|
|
38
49
|
const [open, setOpen] = useState(controller.getState().open);
|
|
39
|
-
|
|
40
|
-
|
|
50
|
+
// Use runtime context for pathname if available, otherwise track locally
|
|
51
|
+
const pageContext = usePageContext();
|
|
52
|
+
const [localPathname, setLocalPathname] = useState(() => typeof window !== 'undefined' ? window.location.pathname : '/');
|
|
53
|
+
// If runtime is available, use its context for pathname (it already handles SPA navigation)
|
|
54
|
+
// Otherwise, track pathname locally (legacy mode)
|
|
55
|
+
const pathname = (pageContext === null || pageContext === void 0 ? void 0 : pageContext.url) ? new URL(pageContext.url).pathname : localPathname;
|
|
56
|
+
// Track route changes locally only when runtime is not available (legacy mode)
|
|
41
57
|
useEffect(() => {
|
|
42
|
-
if (
|
|
58
|
+
if (runtime)
|
|
59
|
+
return; // Runtime handles this via ContextManager
|
|
60
|
+
if (typeof window === 'undefined')
|
|
43
61
|
return;
|
|
44
|
-
const updatePathname = () =>
|
|
62
|
+
const updatePathname = () => setLocalPathname(window.location.pathname);
|
|
45
63
|
// Listen for popstate (back/forward navigation)
|
|
46
|
-
window.addEventListener(
|
|
64
|
+
window.addEventListener('popstate', updatePathname);
|
|
47
65
|
// Intercept pushState/replaceState for SPA navigation
|
|
48
66
|
const originalPushState = history.pushState;
|
|
49
67
|
const originalReplaceState = history.replaceState;
|
|
50
68
|
history.pushState = function (...args) {
|
|
51
69
|
originalPushState.apply(this, args);
|
|
52
|
-
updatePathname
|
|
70
|
+
queueMicrotask(updatePathname);
|
|
53
71
|
};
|
|
54
72
|
history.replaceState = function (...args) {
|
|
55
73
|
originalReplaceState.apply(this, args);
|
|
56
|
-
updatePathname
|
|
74
|
+
queueMicrotask(updatePathname);
|
|
57
75
|
};
|
|
58
76
|
return () => {
|
|
59
|
-
window.removeEventListener(
|
|
77
|
+
window.removeEventListener('popstate', updatePathname);
|
|
60
78
|
history.pushState = originalPushState;
|
|
61
79
|
history.replaceState = originalReplaceState;
|
|
62
80
|
};
|
|
63
|
-
}, []);
|
|
81
|
+
}, [runtime]);
|
|
64
82
|
const derivedFetcher = useMemo(() => {
|
|
65
83
|
if (fetcher)
|
|
66
84
|
return fetcher;
|
|
@@ -76,6 +94,7 @@ export function SmartCanvasApp({ controller, fetcher, configUri, configUriFeatur
|
|
|
76
94
|
fetcher: derivedFetcher,
|
|
77
95
|
pollIntervalMs,
|
|
78
96
|
experiments,
|
|
97
|
+
runtime,
|
|
79
98
|
});
|
|
80
99
|
const hasContent = configState.tiles.length > 0 && !configState.error;
|
|
81
100
|
useEffect(() => controller.subscribe((state) => setOpen(state.open)), [controller]);
|
|
@@ -84,38 +103,15 @@ export function SmartCanvasApp({ controller, fetcher, configUri, configUriFeatur
|
|
|
84
103
|
controller.setOpen(false);
|
|
85
104
|
}
|
|
86
105
|
}, [controller, hasContent]);
|
|
87
|
-
//
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
if (
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
return async () => configState.overlayRecipes;
|
|
95
|
-
}
|
|
96
|
-
if (configState.overlayRecipe) {
|
|
97
|
-
return async () => configState.overlayRecipe;
|
|
98
|
-
}
|
|
99
|
-
// Don't create a fetcher if there's no URI and we're still loading config
|
|
100
|
-
if (!overlayConfigUri && configState.isLoading) {
|
|
101
|
-
return undefined;
|
|
106
|
+
// Apply actions when config loads
|
|
107
|
+
// Actions are processed by ActionEngine through the runtime
|
|
108
|
+
useEffect(() => {
|
|
109
|
+
if ((runtime === null || runtime === void 0 ? void 0 : runtime.actions) && configState.actions.length > 0) {
|
|
110
|
+
runtime.actions.applyBatch(configState.actions).catch((err) => {
|
|
111
|
+
console.error('[SmartCanvas] Failed to apply actions:', err);
|
|
112
|
+
});
|
|
102
113
|
}
|
|
103
|
-
|
|
104
|
-
}, [overlayFetcher, configState.overlayRecipes, configState.overlayRecipe, configState.isLoading, overlayConfigUri]);
|
|
105
|
-
useCanvasOverlays({
|
|
106
|
-
recipesFetcher: derivedOverlayRecipesFetcher,
|
|
107
|
-
configUri: !derivedOverlayRecipesFetcher && !configState.isLoading ? overlayConfigUri : undefined,
|
|
108
|
-
featureKey: overlayConfigFeatureKey,
|
|
109
|
-
credentials: overlayFetchCredentials,
|
|
110
|
-
experiments,
|
|
111
|
-
telemetry,
|
|
112
|
-
canvasHost,
|
|
113
|
-
});
|
|
114
|
-
useHostPatches({
|
|
115
|
-
patches: configState.patches,
|
|
116
|
-
telemetry,
|
|
117
|
-
canvasHost,
|
|
118
|
-
});
|
|
114
|
+
}, [runtime, configState.actions]);
|
|
119
115
|
// Merge theme from config (workspace settings) with any direct theme prop
|
|
120
116
|
// Config theme takes precedence for workspace-set values, but theme prop can override
|
|
121
117
|
// NOTE: This must be called BEFORE any early returns to maintain consistent hook order
|
|
@@ -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;
|
|
1
|
+
{"version":3,"file":"SmartCanvasApp.js","sourceRoot":"","sources":["../src/SmartCanvasApp.tsx"],"names":[],"mappings":"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"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import { SmartCanvasController } from
|
|
3
|
-
import {
|
|
1
|
+
import { MountableComponent } from './api';
|
|
2
|
+
import { SmartCanvasController } from './controller';
|
|
3
|
+
import { type SmartCanvasAppProps } from './SmartCanvasApp';
|
|
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 {
|
|
16
|
-
import {
|
|
17
|
-
const TAG_NAME =
|
|
14
|
+
import { createRoot } from 'react-dom/client';
|
|
15
|
+
import { createSmartCanvasController } from './controller';
|
|
16
|
+
import { SmartCanvasApp } from './SmartCanvasApp';
|
|
17
|
+
const TAG_NAME = 'smart-canvas';
|
|
18
18
|
const BASE_CSS = `
|
|
19
19
|
:host {
|
|
20
20
|
font: inherit;
|
|
@@ -30,13 +30,23 @@ 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(
|
|
39
|
-
|
|
38
|
+
root.setAttribute('data-smart-canvas-overlay', 'true');
|
|
39
|
+
// Guard against body not existing yet (script in <head>)
|
|
40
|
+
if (document.body) {
|
|
41
|
+
document.body.appendChild(root);
|
|
42
|
+
}
|
|
43
|
+
else {
|
|
44
|
+
document.addEventListener('DOMContentLoaded', () => {
|
|
45
|
+
if (!root.parentNode) {
|
|
46
|
+
document.body.appendChild(root);
|
|
47
|
+
}
|
|
48
|
+
}, { once: true });
|
|
49
|
+
}
|
|
40
50
|
}
|
|
41
51
|
return root;
|
|
42
52
|
};
|
|
@@ -50,16 +60,16 @@ export class SmartCanvasElement extends HTMLElement {
|
|
|
50
60
|
_SmartCanvasElement_root.set(this, null);
|
|
51
61
|
_SmartCanvasElement_lastAppProps.set(this, null);
|
|
52
62
|
_SmartCanvasElement_customRenderers.set(this, {});
|
|
53
|
-
__classPrivateFieldSet(this, _SmartCanvasElement_shadow, this.attachShadow({ mode:
|
|
54
|
-
__classPrivateFieldSet(this, _SmartCanvasElement_mount, document.createElement(
|
|
55
|
-
__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');
|
|
56
66
|
__classPrivateFieldGet(this, _SmartCanvasElement_shadow, "f").appendChild(__classPrivateFieldGet(this, _SmartCanvasElement_mount, "f"));
|
|
57
67
|
__classPrivateFieldSet(this, _SmartCanvasElement_overlayRoot, ensureOverlayRoot(), "f");
|
|
58
68
|
__classPrivateFieldSet(this, _SmartCanvasElement_controller, createSmartCanvasController(), "f");
|
|
59
69
|
this.applyBaseStyles();
|
|
60
70
|
}
|
|
61
71
|
connectedCallback() {
|
|
62
|
-
this.style.setProperty(
|
|
72
|
+
this.style.setProperty('font-family', 'inherit');
|
|
63
73
|
}
|
|
64
74
|
disconnectedCallback() {
|
|
65
75
|
var _a;
|
|
@@ -116,7 +126,7 @@ export class SmartCanvasElement extends HTMLElement {
|
|
|
116
126
|
__classPrivateFieldGet(this, _SmartCanvasElement_shadow, "f").adoptedStyleSheets = [sheet];
|
|
117
127
|
}
|
|
118
128
|
else {
|
|
119
|
-
const style = document.createElement(
|
|
129
|
+
const style = document.createElement('style');
|
|
120
130
|
style.textContent = BASE_CSS;
|
|
121
131
|
__classPrivateFieldGet(this, _SmartCanvasElement_shadow, "f").appendChild(style);
|
|
122
132
|
}
|
|
@@ -124,7 +134,7 @@ export class SmartCanvasElement extends HTMLElement {
|
|
|
124
134
|
}
|
|
125
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();
|
|
126
136
|
export const registerSmartCanvasElement = () => {
|
|
127
|
-
if (typeof window ===
|
|
137
|
+
if (typeof window === 'undefined')
|
|
128
138
|
return;
|
|
129
139
|
if (!customElements.get(TAG_NAME)) {
|
|
130
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;
|
|
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(() => {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SmartCanvasPortal.js","sourceRoot":"","sources":["../src/SmartCanvasPortal.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAa,eAAe,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC;AAC7D,OAAO,EAAE,YAAY,EAAE,MAAM,WAAW,CAAC;
|
|
1
|
+
{"version":3,"file":"SmartCanvasPortal.js","sourceRoot":"","sources":["../src/SmartCanvasPortal.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAa,eAAe,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC;AAC7D,OAAO,EAAE,YAAY,EAAE,MAAM,WAAW,CAAC;AASzC,MAAM,UAAU,iBAAiB,CAAC,EAAE,OAAO,EAAE,QAAQ,EAA0B;IAC7E,MAAM,CAAC,SAAS,EAAE,YAAY,CAAC,GAAG,QAAQ,CAAqB,IAAI,CAAC,CAAC;IAErE,eAAe,CAAC,GAAG,EAAE;QACnB,IAAI,CAAC,OAAO,EAAE,CAAC;YACb,YAAY,CAAC,IAAI,CAAC,CAAC;YACnB,OAAO;QACT,CAAC;QACD,YAAY,CAAC,OAAO,CAAC,YAAY,EAAE,CAAC,CAAC;QACrC,OAAO,GAAG,EAAE,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC;IAClC,CAAC,EAAE,CAAC,OAAO,CAAC,CAAC,CAAC;IAEd,IAAI,CAAC,SAAS;QAAE,OAAO,IAAI,CAAC;IAC5B,OAAO,YAAY,CAAC,QAAQ,EAAE,SAAS,CAAC,CAAC;AAC3C,CAAC"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* ActionEngine
|
|
3
|
+
*
|
|
4
|
+
* Unified execution layer for interventions. Provides a high-level API for
|
|
5
|
+
* applying, reverting, and managing action steps.
|
|
6
|
+
*/
|
|
7
|
+
import type { ActionEngine, ActionEngineOptions } from './types';
|
|
8
|
+
/**
|
|
9
|
+
* Create an ActionEngine instance.
|
|
10
|
+
*/
|
|
11
|
+
export declare function createActionEngine(options: ActionEngineOptions): ActionEngine;
|