@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 @@
|
|
|
1
|
+
{"version":3,"file":"positioning.js","sourceRoot":"","sources":["../../src/surfaces/positioning.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,167 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Surfaces Types
|
|
3
|
+
*
|
|
4
|
+
* Defines types for the managed surface system that renders UI into named slots.
|
|
5
|
+
* Surfaces handles layout, stacking, animations, and priority-based arbitration.
|
|
6
|
+
*/
|
|
7
|
+
import type { Placement } from '@floating-ui/dom';
|
|
8
|
+
/** Static surface slots with fixed positioning */
|
|
9
|
+
export type StaticSurfaceSlot = 'drawer_right' | 'drawer_left' | 'drawer_bottom' | 'overlay_center' | 'overlay_corner_br' | 'overlay_corner_bl' | 'toast_top' | 'toast_bottom';
|
|
10
|
+
/** Dynamic inline slot (rendered inside anchor) */
|
|
11
|
+
export type InlineSurfaceSlot = `inline:${string}`;
|
|
12
|
+
/** Dynamic adjacent slot (positioned near anchor) */
|
|
13
|
+
export type AdjacentSurfaceSlot = `adjacent:${string}`;
|
|
14
|
+
/** All surface slot types */
|
|
15
|
+
export type SurfaceSlot = StaticSurfaceSlot | InlineSurfaceSlot | AdjacentSurfaceSlot;
|
|
16
|
+
/** React component content */
|
|
17
|
+
export interface ReactContent {
|
|
18
|
+
type: 'react';
|
|
19
|
+
component: unknown;
|
|
20
|
+
props?: Record<string, unknown>;
|
|
21
|
+
}
|
|
22
|
+
/** HTML string content */
|
|
23
|
+
export interface HtmlContent {
|
|
24
|
+
type: 'html';
|
|
25
|
+
content: string;
|
|
26
|
+
}
|
|
27
|
+
/** Widget reference content */
|
|
28
|
+
export interface WidgetContent {
|
|
29
|
+
type: 'widget';
|
|
30
|
+
widgetId: string;
|
|
31
|
+
config?: Record<string, unknown>;
|
|
32
|
+
}
|
|
33
|
+
/** Custom mount function content */
|
|
34
|
+
export interface CustomContent {
|
|
35
|
+
type: 'custom';
|
|
36
|
+
mount: (container: HTMLElement) => () => void;
|
|
37
|
+
}
|
|
38
|
+
/** Union of all renderable content types */
|
|
39
|
+
export type RenderableContent = ReactContent | HtmlContent | WidgetContent | CustomContent;
|
|
40
|
+
/** Position configuration for adjacent slots */
|
|
41
|
+
export interface PositionConfig {
|
|
42
|
+
placement: Placement | 'auto';
|
|
43
|
+
offset?: {
|
|
44
|
+
x: number;
|
|
45
|
+
y: number;
|
|
46
|
+
};
|
|
47
|
+
flip?: boolean;
|
|
48
|
+
shift?: boolean;
|
|
49
|
+
}
|
|
50
|
+
/** Size constraints for mounted content */
|
|
51
|
+
export interface MountConstraints {
|
|
52
|
+
maxWidth?: string;
|
|
53
|
+
maxHeight?: string;
|
|
54
|
+
minWidth?: string;
|
|
55
|
+
minHeight?: string;
|
|
56
|
+
}
|
|
57
|
+
/** Animation types for enter/exit */
|
|
58
|
+
export type AnimationType = 'fade' | 'slide' | 'scale' | 'none';
|
|
59
|
+
/** Options when mounting content to a surface */
|
|
60
|
+
export interface MountOptions {
|
|
61
|
+
/** Priority for conflict resolution (higher wins) */
|
|
62
|
+
priority?: number;
|
|
63
|
+
/** Whether to unmount other content in the same slot */
|
|
64
|
+
exclusive?: boolean;
|
|
65
|
+
/** Animation for enter/exit */
|
|
66
|
+
animation?: AnimationType;
|
|
67
|
+
/** Position configuration for adjacent slots */
|
|
68
|
+
position?: PositionConfig;
|
|
69
|
+
/** Size constraints */
|
|
70
|
+
constraints?: MountConstraints;
|
|
71
|
+
/** ID of the adaptive mounting this content */
|
|
72
|
+
adaptiveId?: string;
|
|
73
|
+
/** Whether to auto-unmount on route change */
|
|
74
|
+
autoUnmountOnRouteChange?: boolean;
|
|
75
|
+
}
|
|
76
|
+
/** Handle returned when content is mounted */
|
|
77
|
+
export interface MountHandle {
|
|
78
|
+
/** Unique ID for this mount */
|
|
79
|
+
id: string;
|
|
80
|
+
/** Update the content */
|
|
81
|
+
update: (content: RenderableContent) => void;
|
|
82
|
+
/** Update mount options */
|
|
83
|
+
setOptions: (opts: Partial<MountOptions>) => void;
|
|
84
|
+
/** Unmount the content */
|
|
85
|
+
unmount: () => void;
|
|
86
|
+
/** Check if still mounted */
|
|
87
|
+
isMounted: () => boolean;
|
|
88
|
+
/** Get the DOM container element */
|
|
89
|
+
getContainer: () => HTMLElement | null;
|
|
90
|
+
}
|
|
91
|
+
/** State of a surface slot */
|
|
92
|
+
export interface SurfaceState {
|
|
93
|
+
/** The slot identifier */
|
|
94
|
+
slot: SurfaceSlot;
|
|
95
|
+
/** Whether the slot is currently occupied */
|
|
96
|
+
occupied: boolean;
|
|
97
|
+
/** Priority of the current content (if occupied) */
|
|
98
|
+
currentPriority?: number;
|
|
99
|
+
/** Adaptive ID that owns current content */
|
|
100
|
+
currentAdaptiveId?: string;
|
|
101
|
+
/** Total number of mounts to this slot this session */
|
|
102
|
+
mountCount: number;
|
|
103
|
+
/** ID of the current mount (if occupied) */
|
|
104
|
+
currentMountId?: string;
|
|
105
|
+
}
|
|
106
|
+
/** Callback for surface state changes */
|
|
107
|
+
export type SurfaceChangeCallback = (state: SurfaceState) => void;
|
|
108
|
+
/** Widget registry interface (subset needed by Surfaces) */
|
|
109
|
+
export interface SurfacesWidgetRegistry {
|
|
110
|
+
has: (id: string) => boolean;
|
|
111
|
+
mount: (id: string, container: HTMLElement, config?: Record<string, unknown>) => {
|
|
112
|
+
unmount: () => void;
|
|
113
|
+
update: (config?: Record<string, unknown>) => void;
|
|
114
|
+
};
|
|
115
|
+
}
|
|
116
|
+
/** Options for creating a Surfaces instance */
|
|
117
|
+
export interface SurfacesOptions {
|
|
118
|
+
/** Overlay root element for rendering */
|
|
119
|
+
overlayRoot: HTMLElement;
|
|
120
|
+
/** Event bus for publishing surface events */
|
|
121
|
+
eventBus?: {
|
|
122
|
+
publish: (name: string, props?: Record<string, unknown>) => void;
|
|
123
|
+
};
|
|
124
|
+
/** Function to resolve anchor IDs to elements (for inline/adjacent slots) */
|
|
125
|
+
anchorResolver?: (anchorId: string) => HTMLElement | null;
|
|
126
|
+
/** Default animation type */
|
|
127
|
+
defaultAnimation?: AnimationType;
|
|
128
|
+
/** Widget registry for resolving widget content */
|
|
129
|
+
widgetRegistry?: SurfacesWidgetRegistry;
|
|
130
|
+
}
|
|
131
|
+
/** The Surfaces interface */
|
|
132
|
+
export interface Surfaces {
|
|
133
|
+
/** Mount content to a surface slot */
|
|
134
|
+
mount: (slot: SurfaceSlot, content: RenderableContent, opts?: MountOptions) => MountHandle;
|
|
135
|
+
/** Get the current state of a slot */
|
|
136
|
+
getState: (slot: SurfaceSlot) => SurfaceState;
|
|
137
|
+
/** Subscribe to state changes for a slot */
|
|
138
|
+
onStateChange: (slot: SurfaceSlot, fn: SurfaceChangeCallback) => () => void;
|
|
139
|
+
/** Check if content can be mounted to a slot */
|
|
140
|
+
canMount: (slot: SurfaceSlot, priority?: number) => boolean;
|
|
141
|
+
/** Clean up all mounted surfaces */
|
|
142
|
+
destroy: () => void;
|
|
143
|
+
}
|
|
144
|
+
/** Resolved internal options (with defaults applied) */
|
|
145
|
+
export interface InternalMountOptions {
|
|
146
|
+
priority: number;
|
|
147
|
+
exclusive: boolean;
|
|
148
|
+
animation: AnimationType;
|
|
149
|
+
position: PositionConfig;
|
|
150
|
+
constraints: MountConstraints;
|
|
151
|
+
adaptiveId?: string;
|
|
152
|
+
autoUnmountOnRouteChange: boolean;
|
|
153
|
+
}
|
|
154
|
+
/** Internal mount entry */
|
|
155
|
+
export interface InternalMountEntry {
|
|
156
|
+
id: string;
|
|
157
|
+
slot: SurfaceSlot;
|
|
158
|
+
content: RenderableContent;
|
|
159
|
+
options: InternalMountOptions;
|
|
160
|
+
container: HTMLElement;
|
|
161
|
+
cleanup?: () => void;
|
|
162
|
+
mountedAt: number;
|
|
163
|
+
}
|
|
164
|
+
/** Slot type classifier */
|
|
165
|
+
export declare function getSlotType(slot: SurfaceSlot): 'static' | 'inline' | 'adjacent';
|
|
166
|
+
/** Extract anchor ID from inline/adjacent slots */
|
|
167
|
+
export declare function getSlotAnchorId(slot: SurfaceSlot): string | null;
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Surfaces Types
|
|
3
|
+
*
|
|
4
|
+
* Defines types for the managed surface system that renders UI into named slots.
|
|
5
|
+
* Surfaces handles layout, stacking, animations, and priority-based arbitration.
|
|
6
|
+
*/
|
|
7
|
+
/** Slot type classifier */
|
|
8
|
+
export function getSlotType(slot) {
|
|
9
|
+
if (slot.startsWith('inline:'))
|
|
10
|
+
return 'inline';
|
|
11
|
+
if (slot.startsWith('adjacent:'))
|
|
12
|
+
return 'adjacent';
|
|
13
|
+
return 'static';
|
|
14
|
+
}
|
|
15
|
+
/** Extract anchor ID from inline/adjacent slots */
|
|
16
|
+
export function getSlotAnchorId(slot) {
|
|
17
|
+
if (slot.startsWith('inline:'))
|
|
18
|
+
return slot.slice(7);
|
|
19
|
+
if (slot.startsWith('adjacent:'))
|
|
20
|
+
return slot.slice(9);
|
|
21
|
+
return null;
|
|
22
|
+
}
|
|
23
|
+
//# sourceMappingURL=types.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/surfaces/types.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AA+OH,2BAA2B;AAC3B,MAAM,UAAU,WAAW,CAAC,IAAiB;IAC3C,IAAI,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC;QAAE,OAAO,QAAQ,CAAC;IAChD,IAAI,IAAI,CAAC,UAAU,CAAC,WAAW,CAAC;QAAE,OAAO,UAAU,CAAC;IACpD,OAAO,QAAQ,CAAC;AAClB,CAAC;AAED,mDAAmD;AACnD,MAAM,UAAU,eAAe,CAAC,IAAiB;IAC/C,IAAI,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC;QAAE,OAAO,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;IACrD,IAAI,IAAI,CAAC,UAAU,CAAC,WAAW,CAAC;QAAE,OAAO,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;IACvD,OAAO,IAAI,CAAC;AACd,CAAC"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* No-op adapter for the TelemetryClient interface.
|
|
3
|
+
*
|
|
4
|
+
* Used when telemetry is disabled (e.g. demo mode with t="noop").
|
|
5
|
+
* All tracking methods silently do nothing. Session/distinct IDs
|
|
6
|
+
* return stable values so downstream code that reads them still works.
|
|
7
|
+
*/
|
|
8
|
+
import type { TelemetryClient } from '../types';
|
|
9
|
+
/**
|
|
10
|
+
* Create a TelemetryClient that silently discards all events.
|
|
11
|
+
*/
|
|
12
|
+
export declare function createNoopClient(): TelemetryClient;
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
function randomId() {
|
|
2
|
+
const chars = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789';
|
|
3
|
+
let id = '';
|
|
4
|
+
for (let i = 0; i < 16; i++) {
|
|
5
|
+
id += chars[Math.floor(Math.random() * chars.length)];
|
|
6
|
+
}
|
|
7
|
+
return id;
|
|
8
|
+
}
|
|
9
|
+
class NoopAdapter {
|
|
10
|
+
constructor() {
|
|
11
|
+
this.sessionId = randomId();
|
|
12
|
+
console.log(`[Syntro Telemetry] Using noop adapter (no telemetry configured). sessionId=${this.sessionId}`);
|
|
13
|
+
}
|
|
14
|
+
trackCanvasOpened(_surface) { }
|
|
15
|
+
trackCanvasClosed(_surface) { }
|
|
16
|
+
trackRectangleViewed(_rectangleId, _surface) { }
|
|
17
|
+
trackAction(_action, _rectangleId, _surface) { }
|
|
18
|
+
register(_properties) { }
|
|
19
|
+
getSessionId() {
|
|
20
|
+
return this.sessionId;
|
|
21
|
+
}
|
|
22
|
+
startSessionRecording() { }
|
|
23
|
+
trackExperiment(_key, _variationId, _variationName) { }
|
|
24
|
+
setPersonProperties(_properties) { }
|
|
25
|
+
setPersonPropertiesOnce(_properties) { }
|
|
26
|
+
getDistinctId() {
|
|
27
|
+
return 'demo-user';
|
|
28
|
+
}
|
|
29
|
+
getAllFeatureFlags() {
|
|
30
|
+
return {};
|
|
31
|
+
}
|
|
32
|
+
getSegmentFlags() {
|
|
33
|
+
return {};
|
|
34
|
+
}
|
|
35
|
+
}
|
|
36
|
+
/**
|
|
37
|
+
* Create a TelemetryClient that silently discards all events.
|
|
38
|
+
*/
|
|
39
|
+
export function createNoopClient() {
|
|
40
|
+
return new NoopAdapter();
|
|
41
|
+
}
|
|
42
|
+
//# sourceMappingURL=noop.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"noop.js","sourceRoot":"","sources":["../../../src/telemetry/adapters/noop.ts"],"names":[],"mappings":"AASA,SAAS,QAAQ;IACf,MAAM,KAAK,GAAG,gEAAgE,CAAC;IAC/E,IAAI,EAAE,GAAG,EAAE,CAAC;IACZ,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC;QAC5B,EAAE,IAAI,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,EAAE,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC;IACxD,CAAC;IACD,OAAO,EAAE,CAAC;AACZ,CAAC;AAED,MAAM,WAAW;IAGf;QACE,IAAI,CAAC,SAAS,GAAG,QAAQ,EAAE,CAAC;QAC5B,OAAO,CAAC,GAAG,CACT,8EAA8E,IAAI,CAAC,SAAS,EAAE,CAC/F,CAAC;IACJ,CAAC;IAED,iBAAiB,CAAC,QAAuB,IAAS,CAAC;IACnD,iBAAiB,CAAC,QAAuB,IAAS,CAAC;IACnD,oBAAoB,CAAC,YAAoB,EAAE,QAAuB,IAAS,CAAC;IAC5E,WAAW,CAAC,OAAe,EAAE,YAAoB,EAAE,QAAuB,IAAS,CAAC;IAEpF,QAAQ,CAAC,WAAoC,IAAS,CAAC;IACvD,YAAY;QACV,OAAO,IAAI,CAAC,SAAS,CAAC;IACxB,CAAC;IACD,qBAAqB,KAAU,CAAC;IAChC,eAAe,CAAC,IAAY,EAAE,YAAoB,EAAE,cAAuB,IAAS,CAAC;IACrF,mBAAmB,CAAC,WAAoC,IAAS,CAAC;IAClE,uBAAuB,CAAC,WAAoC,IAAS,CAAC;IAEtE,aAAa;QACX,OAAO,WAAW,CAAC;IACrB,CAAC;IAED,kBAAkB;QAChB,OAAO,EAAE,CAAC;IACZ,CAAC;IAED,eAAe;QACb,OAAO,EAAE,CAAC;IACZ,CAAC;CACF;AAED;;GAEG;AACH,MAAM,UAAU,gBAAgB;IAC9B,OAAO,IAAI,WAAW,EAAE,CAAC;AAC3B,CAAC"}
|
|
@@ -4,8 +4,8 @@
|
|
|
4
4
|
* This file is INTERNAL - consumers should only import from telemetry/types.ts
|
|
5
5
|
* and use the TelemetryClient interface.
|
|
6
6
|
*/
|
|
7
|
-
import type { PostHog, Properties } from
|
|
8
|
-
import type { TelemetryClient, CanvasSurface } from
|
|
7
|
+
import type { PostHog, Properties } from 'posthog-js';
|
|
8
|
+
import type { TelemetryClient, CanvasSurface } from '../types';
|
|
9
9
|
export interface PostHogAdapterOptions {
|
|
10
10
|
/**
|
|
11
11
|
* PostHog API key.
|
|
@@ -53,6 +53,11 @@ export interface PostHogAdapterOptions {
|
|
|
53
53
|
* Used to update GrowthBook attributes with segment membership.
|
|
54
54
|
*/
|
|
55
55
|
onFeatureFlagsLoaded?: (flags: Record<string, boolean | string>) => void;
|
|
56
|
+
/**
|
|
57
|
+
* Callback when any event is captured by PostHog.
|
|
58
|
+
* Used to feed events into the EventBus for runtime decisions.
|
|
59
|
+
*/
|
|
60
|
+
onCapture?: (eventName: string, properties?: Record<string, unknown>) => void;
|
|
56
61
|
}
|
|
57
62
|
interface CanvasAnalyticsPayload extends Properties {
|
|
58
63
|
rectangleId?: string;
|
|
@@ -65,6 +70,7 @@ export declare class PostHogAdapter implements TelemetryClient {
|
|
|
65
70
|
private readonly options;
|
|
66
71
|
private client?;
|
|
67
72
|
private featureFlagsCallback?;
|
|
73
|
+
private captureCallback?;
|
|
68
74
|
constructor(options?: PostHogAdapterOptions);
|
|
69
75
|
/**
|
|
70
76
|
* Get all feature flags from PostHog.
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import posthog from
|
|
1
|
+
import posthog from 'posthog-js';
|
|
2
2
|
/**
|
|
3
3
|
* Internal adapter that implements TelemetryClient using PostHog.
|
|
4
4
|
*/
|
|
@@ -8,14 +8,17 @@ export class PostHogAdapter {
|
|
|
8
8
|
this.options = options;
|
|
9
9
|
this.client = options.client;
|
|
10
10
|
this.featureFlagsCallback = options.onFeatureFlagsLoaded;
|
|
11
|
-
|
|
12
|
-
|
|
11
|
+
this.captureCallback = options.onCapture;
|
|
12
|
+
if (!this.client && typeof window !== 'undefined' && options.apiKey) {
|
|
13
13
|
// Determine if we should enable feature flags (for segment membership)
|
|
14
14
|
// Default: true (enabled) to support segment targeting via /decide
|
|
15
15
|
const enableFeatureFlags = (_a = options.enableFeatureFlags) !== null && _a !== void 0 ? _a : true;
|
|
16
|
+
// Use a named instance so we don't clobber the customer's global PostHog.
|
|
17
|
+
// posthog.init() with a 3rd arg returns an isolated instance.
|
|
18
|
+
const instanceName = `syntro_${options.apiKey.slice(-6) || 'sdk'}`;
|
|
16
19
|
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
17
|
-
this.client.init(options.apiKey, {
|
|
18
|
-
api_host: (_b = options.apiHost) !== null && _b !== void 0 ? _b :
|
|
20
|
+
this.client = posthog.init(options.apiKey, {
|
|
21
|
+
api_host: (_b = options.apiHost) !== null && _b !== void 0 ? _b : 'https://telemetry.syntrologie.com',
|
|
19
22
|
// Feature flags for segment membership (in_segment_* flags)
|
|
20
23
|
// When enabled, /decide is called to get segment flags
|
|
21
24
|
advanced_disable_feature_flags: !enableFeatureFlags,
|
|
@@ -48,9 +51,28 @@ export class PostHogAdapter {
|
|
|
48
51
|
this.featureFlagsCallback(allFlags);
|
|
49
52
|
}
|
|
50
53
|
});
|
|
54
|
+
// If flags already loaded before callback was registered, fire immediately
|
|
55
|
+
const existingFlags = this.getAllFeatureFlags();
|
|
56
|
+
if (existingFlags && Object.keys(existingFlags).length > 0) {
|
|
57
|
+
this.featureFlagsCallback(existingFlags);
|
|
58
|
+
}
|
|
59
|
+
}
|
|
60
|
+
// Wire up capture callback to feed events into EventBus
|
|
61
|
+
if (this.captureCallback) {
|
|
62
|
+
// PostHog's eventCaptured passes a single CaptureResult object:
|
|
63
|
+
// { uuid, event, properties, $set, $set_once, timestamp }
|
|
64
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
65
|
+
ph.on('eventCaptured', (data) => {
|
|
66
|
+
var _a;
|
|
67
|
+
const eventName = typeof data === 'string' ? data : data === null || data === void 0 ? void 0 : data.event;
|
|
68
|
+
const properties = typeof data === 'string' ? undefined : data === null || data === void 0 ? void 0 : data.properties;
|
|
69
|
+
if (typeof eventName === 'string') {
|
|
70
|
+
(_a = this.captureCallback) === null || _a === void 0 ? void 0 : _a.call(this, eventName, properties);
|
|
71
|
+
}
|
|
72
|
+
});
|
|
51
73
|
}
|
|
52
74
|
},
|
|
53
|
-
});
|
|
75
|
+
}, instanceName);
|
|
54
76
|
}
|
|
55
77
|
}
|
|
56
78
|
/**
|
|
@@ -72,7 +94,7 @@ export class PostHogAdapter {
|
|
|
72
94
|
return {};
|
|
73
95
|
const segmentFlags = {};
|
|
74
96
|
for (const [key, value] of Object.entries(allFlags)) {
|
|
75
|
-
if (key.startsWith(
|
|
97
|
+
if (key.startsWith('in_segment_')) {
|
|
76
98
|
segmentFlags[key] = value === true;
|
|
77
99
|
}
|
|
78
100
|
}
|
|
@@ -91,16 +113,16 @@ export class PostHogAdapter {
|
|
|
91
113
|
(_a = this.client) === null || _a === void 0 ? void 0 : _a.capture(eventName, payload);
|
|
92
114
|
}
|
|
93
115
|
trackCanvasOpened(surface) {
|
|
94
|
-
this.track(
|
|
116
|
+
this.track('shadow_canvas_opened', { surface });
|
|
95
117
|
}
|
|
96
118
|
trackCanvasClosed(surface) {
|
|
97
|
-
this.track(
|
|
119
|
+
this.track('shadow_canvas_closed', { surface });
|
|
98
120
|
}
|
|
99
121
|
trackRectangleViewed(rectangleId, surface) {
|
|
100
|
-
this.track(
|
|
122
|
+
this.track('shadow_canvas_rectangle_viewed', { rectangleId, surface });
|
|
101
123
|
}
|
|
102
124
|
trackAction(action, rectangleId, surface) {
|
|
103
|
-
this.track(
|
|
125
|
+
this.track('shadow_canvas_action', { action, rectangleId, surface });
|
|
104
126
|
}
|
|
105
127
|
register(properties) {
|
|
106
128
|
var _a, _b;
|
|
@@ -126,7 +148,7 @@ export class PostHogAdapter {
|
|
|
126
148
|
[`${experimentProperty}_id`]: variationId,
|
|
127
149
|
});
|
|
128
150
|
// Fire discrete event for experiment assignment tracking
|
|
129
|
-
this.track(
|
|
151
|
+
this.track('$experiment_started', {
|
|
130
152
|
$experiment_key: experimentKey,
|
|
131
153
|
$experiment_variation_id: variationId,
|
|
132
154
|
$experiment_variation_name: variationName !== null && variationName !== void 0 ? variationName : `variation_${variationId}`,
|
|
@@ -135,12 +157,12 @@ export class PostHogAdapter {
|
|
|
135
157
|
setPersonProperties(properties) {
|
|
136
158
|
var _a;
|
|
137
159
|
// PostHog's $set event sets person properties
|
|
138
|
-
(_a = this.client) === null || _a === void 0 ? void 0 : _a.capture(
|
|
160
|
+
(_a = this.client) === null || _a === void 0 ? void 0 : _a.capture('$set', { $set: properties });
|
|
139
161
|
}
|
|
140
162
|
setPersonPropertiesOnce(properties) {
|
|
141
163
|
var _a;
|
|
142
164
|
// PostHog's $set_once only sets if property doesn't exist
|
|
143
|
-
(_a = this.client) === null || _a === void 0 ? void 0 : _a.capture(
|
|
165
|
+
(_a = this.client) === null || _a === void 0 ? void 0 : _a.capture('$set', { $set_once: properties });
|
|
144
166
|
}
|
|
145
167
|
getDistinctId() {
|
|
146
168
|
var _a, _b;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"posthog.js","sourceRoot":"","sources":["../../../src/telemetry/adapters/posthog.ts"],"names":[],"mappings":"AAOA,OAAO,OAAO,MAAM,YAAY,CAAC;
|
|
1
|
+
{"version":3,"file":"posthog.js","sourceRoot":"","sources":["../../../src/telemetry/adapters/posthog.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
-
export type { TelemetryClient, CanvasSurface } from
|
|
2
|
-
export { createPostHogClient } from
|
|
3
|
-
export type { PostHogAdapterOptions } from
|
|
1
|
+
export type { TelemetryClient, CanvasSurface } from './types';
|
|
2
|
+
export { createPostHogClient } from './adapters/posthog';
|
|
3
|
+
export type { PostHogAdapterOptions } from './adapters/posthog';
|
|
4
|
+
export { createNoopClient } from './adapters/noop';
|
package/dist/telemetry/index.js
CHANGED
|
@@ -1,3 +1,4 @@
|
|
|
1
|
-
// Adapter
|
|
2
|
-
export { createPostHogClient } from
|
|
1
|
+
// Adapter factories - consumers use these to create clients
|
|
2
|
+
export { createPostHogClient } from './adapters/posthog';
|
|
3
|
+
export { createNoopClient } from './adapters/noop';
|
|
3
4
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/telemetry/index.ts"],"names":[],"mappings":"AAGA,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/telemetry/index.ts"],"names":[],"mappings":"AAGA,4DAA4D;AAC5D,OAAO,EAAE,mBAAmB,EAAE,MAAM,oBAAoB,CAAC;AAEzD,OAAO,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAC"}
|
|
@@ -1,12 +1,5 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
*
|
|
4
|
-
* Maps provider names to their adapter factories.
|
|
5
|
-
* This allows the bootstrap module to dynamically create
|
|
6
|
-
* telemetry clients based on token configuration.
|
|
7
|
-
*/
|
|
8
|
-
import { PostHogAdapterOptions } from "./adapters/posthog";
|
|
9
|
-
import type { TelemetryClient } from "./types";
|
|
1
|
+
import { PostHogAdapterOptions } from './adapters/posthog';
|
|
2
|
+
import type { TelemetryClient } from './types';
|
|
10
3
|
/**
|
|
11
4
|
* Create a telemetry client for the specified provider.
|
|
12
5
|
*
|
|
@@ -5,9 +5,11 @@
|
|
|
5
5
|
* This allows the bootstrap module to dynamically create
|
|
6
6
|
* telemetry clients based on token configuration.
|
|
7
7
|
*/
|
|
8
|
-
import {
|
|
8
|
+
import { createNoopClient } from './adapters/noop';
|
|
9
|
+
import { createPostHogClient } from './adapters/posthog';
|
|
9
10
|
const adapters = {
|
|
10
11
|
posthog: (config) => createPostHogClient(config),
|
|
12
|
+
noop: () => createNoopClient(),
|
|
11
13
|
};
|
|
12
14
|
/**
|
|
13
15
|
* Create a telemetry client for the specified provider.
|
|
@@ -20,7 +22,7 @@ const adapters = {
|
|
|
20
22
|
export function createTelemetryClient(provider, config) {
|
|
21
23
|
const factory = adapters[provider];
|
|
22
24
|
if (!factory) {
|
|
23
|
-
throw new Error(`Unknown telemetry provider: ${provider}. Supported: ${Object.keys(adapters).join(
|
|
25
|
+
throw new Error(`Unknown telemetry provider: ${provider}. Supported: ${Object.keys(adapters).join(', ')}`);
|
|
24
26
|
}
|
|
25
27
|
return factory(config);
|
|
26
28
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"registry.js","sourceRoot":"","sources":["../../src/telemetry/registry.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AACH,OAAO,EAAE,mBAAmB,EAAyB,MAAM,oBAAoB,CAAC;AAKhF,MAAM,QAAQ,GAAmC;IAC/C,OAAO,EAAE,CAAC,MAA6B,EAAE,EAAE,CAAC,mBAAmB,CAAC,MAAM,CAAC;
|
|
1
|
+
{"version":3,"file":"registry.js","sourceRoot":"","sources":["../../src/telemetry/registry.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AACH,OAAO,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAC;AACnD,OAAO,EAAE,mBAAmB,EAAyB,MAAM,oBAAoB,CAAC;AAKhF,MAAM,QAAQ,GAAmC;IAC/C,OAAO,EAAE,CAAC,MAA6B,EAAE,EAAE,CAAC,mBAAmB,CAAC,MAAM,CAAC;IACvE,IAAI,EAAE,GAAG,EAAE,CAAC,gBAAgB,EAAE;CAC/B,CAAC;AAEF;;;;;;;GAOG;AACH,MAAM,UAAU,qBAAqB,CACnC,QAAgB,EAChB,MAA6B;IAE7B,MAAM,OAAO,GAAG,QAAQ,CAAC,QAAQ,CAAC,CAAC;IACnC,IAAI,CAAC,OAAO,EAAE,CAAC;QACb,MAAM,IAAI,KAAK,CACb,+BAA+B,QAAQ,gBAAgB,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAC1F,CAAC;IACJ,CAAC;IACD,OAAO,OAAO,CAAC,MAAM,CAAC,CAAC;AACzB,CAAC"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { ReactNode } from
|
|
2
|
-
import type { CanvasThemeTokens, ThemeAppearance, ThemeMode } from
|
|
1
|
+
import { ReactNode } from 'react';
|
|
2
|
+
import type { CanvasThemeTokens, ThemeAppearance, ThemeMode } from './types';
|
|
3
3
|
interface ThemeContextValue {
|
|
4
4
|
theme: CanvasThemeTokens;
|
|
5
5
|
mode: ThemeMode;
|
|
@@ -1,46 +1,46 @@
|
|
|
1
1
|
import { jsx as _jsx } from "react/jsx-runtime";
|
|
2
|
-
import { createContext, useContext, useMemo, useEffect, useState } from
|
|
3
|
-
import { darkTheme, lightTheme, themeToCssVariables } from
|
|
4
|
-
import { autoDetectTheme } from
|
|
2
|
+
import { createContext, useContext, useMemo, useEffect, useState } from 'react';
|
|
3
|
+
import { darkTheme, lightTheme, themeToCssVariables } from './defaultTheme';
|
|
4
|
+
import { autoDetectTheme } from './extractHostTheme';
|
|
5
5
|
const ThemeContext = createContext(null);
|
|
6
6
|
/**
|
|
7
7
|
* Detect system color scheme preference
|
|
8
8
|
*/
|
|
9
9
|
function getSystemMode() {
|
|
10
10
|
var _a, _b;
|
|
11
|
-
if (typeof window ===
|
|
12
|
-
return
|
|
13
|
-
return ((_b = (_a = window.matchMedia) === null || _a === void 0 ? void 0 : _a.call(window,
|
|
11
|
+
if (typeof window === 'undefined')
|
|
12
|
+
return 'dark';
|
|
13
|
+
return ((_b = (_a = window.matchMedia) === null || _a === void 0 ? void 0 : _a.call(window, '(prefers-color-scheme: dark)')) === null || _b === void 0 ? void 0 : _b.matches) ? 'dark' : 'light';
|
|
14
14
|
}
|
|
15
15
|
/**
|
|
16
16
|
* Theme provider component that injects CSS variables into shadow DOM
|
|
17
17
|
*/
|
|
18
18
|
export function ThemeProvider({ children, appearance, autoDetect = true, shadowRoot, }) {
|
|
19
19
|
var _a;
|
|
20
|
-
const [mode, setMode] = useState((_a = appearance === null || appearance === void 0 ? void 0 : appearance.mode) !== null && _a !== void 0 ? _a :
|
|
20
|
+
const [mode, setMode] = useState((_a = appearance === null || appearance === void 0 ? void 0 : appearance.mode) !== null && _a !== void 0 ? _a : 'auto');
|
|
21
21
|
const [systemMode, setSystemMode] = useState(getSystemMode);
|
|
22
22
|
// Listen for system color scheme changes
|
|
23
23
|
useEffect(() => {
|
|
24
|
-
if (typeof window ===
|
|
24
|
+
if (typeof window === 'undefined')
|
|
25
25
|
return;
|
|
26
|
-
const mediaQuery = window.matchMedia(
|
|
26
|
+
const mediaQuery = window.matchMedia('(prefers-color-scheme: dark)');
|
|
27
27
|
const handleChange = (e) => {
|
|
28
|
-
setSystemMode(e.matches ?
|
|
28
|
+
setSystemMode(e.matches ? 'dark' : 'light');
|
|
29
29
|
};
|
|
30
|
-
mediaQuery.addEventListener(
|
|
31
|
-
return () => mediaQuery.removeEventListener(
|
|
30
|
+
mediaQuery.addEventListener('change', handleChange);
|
|
31
|
+
return () => mediaQuery.removeEventListener('change', handleChange);
|
|
32
32
|
}, []);
|
|
33
33
|
// Resolve effective mode
|
|
34
|
-
const effectiveMode = mode ===
|
|
34
|
+
const effectiveMode = mode === 'auto' ? systemMode : mode;
|
|
35
35
|
// Build theme
|
|
36
36
|
const theme = useMemo(() => {
|
|
37
37
|
let baseTheme;
|
|
38
38
|
if (autoDetect) {
|
|
39
39
|
// Auto-detect theme from host page
|
|
40
|
-
baseTheme = autoDetectTheme(effectiveMode ===
|
|
40
|
+
baseTheme = autoDetectTheme(effectiveMode === 'light' ? lightTheme : darkTheme);
|
|
41
41
|
}
|
|
42
42
|
else {
|
|
43
|
-
baseTheme = effectiveMode ===
|
|
43
|
+
baseTheme = effectiveMode === 'light' ? lightTheme : darkTheme;
|
|
44
44
|
}
|
|
45
45
|
return baseTheme;
|
|
46
46
|
}, [autoDetect, effectiveMode]);
|
|
@@ -62,16 +62,16 @@ export function ThemeProvider({ children, appearance, autoDetect = true, shadowR
|
|
|
62
62
|
if (!shadowRoot)
|
|
63
63
|
return;
|
|
64
64
|
// Find or create the style element
|
|
65
|
-
let styleEl = shadowRoot.querySelector(
|
|
65
|
+
let styleEl = shadowRoot.querySelector('#sc-theme-vars');
|
|
66
66
|
if (!styleEl) {
|
|
67
|
-
styleEl = document.createElement(
|
|
68
|
-
styleEl.id =
|
|
67
|
+
styleEl = document.createElement('style');
|
|
68
|
+
styleEl.id = 'sc-theme-vars';
|
|
69
69
|
shadowRoot.insertBefore(styleEl, shadowRoot.firstChild);
|
|
70
70
|
}
|
|
71
71
|
// Generate CSS
|
|
72
72
|
const cssRules = Object.entries(cssVariables)
|
|
73
73
|
.map(([key, value]) => ` ${key}: ${value};`)
|
|
74
|
-
.join(
|
|
74
|
+
.join('\n');
|
|
75
75
|
styleEl.textContent = `:host {\n${cssRules}\n}`;
|
|
76
76
|
}, [shadowRoot, cssVariables]);
|
|
77
77
|
const value = {
|
|
@@ -88,7 +88,7 @@ export function ThemeProvider({ children, appearance, autoDetect = true, shadowR
|
|
|
88
88
|
export function useTheme() {
|
|
89
89
|
const context = useContext(ThemeContext);
|
|
90
90
|
if (!context) {
|
|
91
|
-
throw new Error(
|
|
91
|
+
throw new Error('useTheme must be used within a ThemeProvider');
|
|
92
92
|
}
|
|
93
93
|
return context;
|
|
94
94
|
}
|
|
@@ -103,7 +103,7 @@ export function useThemeToken(token) {
|
|
|
103
103
|
* Hook to get CSS variable name for a token
|
|
104
104
|
*/
|
|
105
105
|
export function useThemeVar(token) {
|
|
106
|
-
const kebabCase = (str) => str.replace(/([a-z])([A-Z])/g,
|
|
106
|
+
const kebabCase = (str) => str.replace(/([a-z])([A-Z])/g, '$1-$2').toLowerCase();
|
|
107
107
|
return `var(--sc-${kebabCase(token)})`;
|
|
108
108
|
}
|
|
109
109
|
//# sourceMappingURL=ThemeProvider.js.map
|