@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.
Files changed (324) hide show
  1. package/CAPABILITIES.md +944 -440
  2. package/README.md +395 -66
  3. package/dist/RuntimeProvider.d.ts +51 -0
  4. package/dist/RuntimeProvider.js +113 -0
  5. package/dist/RuntimeProvider.js.map +1 -0
  6. package/dist/SmartCanvasApp.d.ts +16 -10
  7. package/dist/SmartCanvasApp.js +47 -51
  8. package/dist/SmartCanvasApp.js.map +1 -1
  9. package/dist/SmartCanvasElement.d.ts +5 -5
  10. package/dist/SmartCanvasElement.js +24 -14
  11. package/dist/SmartCanvasElement.js.map +1 -1
  12. package/dist/SmartCanvasPortal.d.ts +2 -2
  13. package/dist/SmartCanvasPortal.js +2 -2
  14. package/dist/SmartCanvasPortal.js.map +1 -1
  15. package/dist/actions/ActionEngine.d.ts +11 -0
  16. package/dist/actions/ActionEngine.js +272 -0
  17. package/dist/actions/ActionEngine.js.map +1 -0
  18. package/dist/actions/executors/index.d.ts +116 -0
  19. package/dist/actions/executors/index.js +240 -0
  20. package/dist/actions/executors/index.js.map +1 -0
  21. package/dist/actions/executors/tour.d.ts +18 -0
  22. package/dist/actions/executors/tour.js +332 -0
  23. package/dist/actions/executors/tour.js.map +1 -0
  24. package/dist/actions/index.d.ts +10 -0
  25. package/dist/actions/index.js +12 -0
  26. package/dist/actions/index.js.map +1 -0
  27. package/dist/actions/types.d.ts +399 -0
  28. package/dist/actions/types.js +8 -0
  29. package/dist/actions/types.js.map +1 -0
  30. package/dist/actions/validation.d.ts +14 -0
  31. package/dist/actions/validation.js +577 -0
  32. package/dist/actions/validation.js.map +1 -0
  33. package/dist/adaptives/adaptive-chatbot/index.js +9 -0
  34. package/dist/adaptives/adaptive-chatbot/index.js.map +7 -0
  35. package/dist/adaptives/adaptive-content/index.js +2 -0
  36. package/dist/adaptives/adaptive-content/index.js.map +7 -0
  37. package/dist/adaptives/adaptive-faq/index.js +11 -0
  38. package/dist/adaptives/adaptive-faq/index.js.map +7 -0
  39. package/dist/adaptives/adaptive-gamification/index.js +2 -0
  40. package/dist/adaptives/adaptive-gamification/index.js.map +7 -0
  41. package/dist/adaptives/adaptive-nav/index.js +11 -0
  42. package/dist/adaptives/adaptive-nav/index.js.map +7 -0
  43. package/dist/adaptives/adaptive-overlays/index.js +91 -0
  44. package/dist/adaptives/adaptive-overlays/index.js.map +7 -0
  45. package/dist/antiFlicker.js +1 -1
  46. package/dist/api.d.ts +40 -26
  47. package/dist/api.js +87 -60
  48. package/dist/api.js.map +1 -1
  49. package/dist/apps/AppContext.d.ts +31 -0
  50. package/dist/apps/AppContext.js +91 -0
  51. package/dist/apps/AppContext.js.map +1 -0
  52. package/dist/apps/AppLoader.d.ts +85 -0
  53. package/dist/apps/AppLoader.js +282 -0
  54. package/dist/apps/AppLoader.js.map +1 -0
  55. package/dist/apps/AppRegistry.d.ts +102 -0
  56. package/dist/apps/AppRegistry.js +317 -0
  57. package/dist/apps/AppRegistry.js.map +1 -0
  58. package/dist/apps/examples/gamification-app.example.d.ts +305 -0
  59. package/dist/apps/examples/gamification-app.example.js +329 -0
  60. package/dist/apps/examples/gamification-app.example.js.map +1 -0
  61. package/dist/apps/index.d.ts +14 -0
  62. package/dist/apps/index.js +16 -0
  63. package/dist/apps/index.js.map +1 -0
  64. package/dist/apps/types.d.ts +231 -0
  65. package/dist/apps/types.js +8 -0
  66. package/dist/apps/types.js.map +1 -0
  67. package/dist/blocks/data/ComparisonBlock.d.ts +1 -1
  68. package/dist/blocks/data/ComparisonBlock.js +40 -40
  69. package/dist/blocks/data/ComparisonBlock.js.map +1 -1
  70. package/dist/blocks/data/StatsBlock.d.ts +1 -1
  71. package/dist/blocks/data/StatsBlock.js +42 -44
  72. package/dist/blocks/data/StatsBlock.js.map +1 -1
  73. package/dist/blocks/data/index.d.ts +2 -2
  74. package/dist/blocks/data/index.js +2 -2
  75. package/dist/blocks/index.d.ts +5 -5
  76. package/dist/blocks/index.js +29 -30
  77. package/dist/blocks/index.js.map +1 -1
  78. package/dist/blocks/interactive/ChecklistBlock.d.ts +1 -1
  79. package/dist/blocks/interactive/ChecklistBlock.js +60 -60
  80. package/dist/blocks/interactive/ChecklistBlock.js.map +1 -1
  81. package/dist/blocks/interactive/RatingBlock.d.ts +1 -1
  82. package/dist/blocks/interactive/RatingBlock.js +73 -65
  83. package/dist/blocks/interactive/RatingBlock.js.map +1 -1
  84. package/dist/blocks/interactive/index.d.ts +2 -2
  85. package/dist/blocks/interactive/index.js +2 -2
  86. package/dist/blocks/notification/NotificationBlock.d.ts +2 -2
  87. package/dist/blocks/notification/NotificationBlock.js +68 -64
  88. package/dist/blocks/notification/NotificationBlock.js.map +1 -1
  89. package/dist/blocks/notification/index.d.ts +1 -1
  90. package/dist/blocks/notification/index.js +1 -1
  91. package/dist/bootstrap.d.ts +32 -8
  92. package/dist/bootstrap.js +218 -102
  93. package/dist/bootstrap.js.map +1 -1
  94. package/dist/components/ShadowCanvasOverlay.d.ts +6 -6
  95. package/dist/components/ShadowCanvasOverlay.js +156 -118
  96. package/dist/components/ShadowCanvasOverlay.js.map +1 -1
  97. package/dist/components/TileCard.d.ts +5 -5
  98. package/dist/components/TileCard.js +205 -154
  99. package/dist/components/TileCard.js.map +1 -1
  100. package/dist/components/TileWheel.d.ts +3 -3
  101. package/dist/components/TileWheel.js +29 -7
  102. package/dist/components/TileWheel.js.map +1 -1
  103. package/dist/config-validator.d.ts +49 -0
  104. package/dist/config-validator.js +173 -0
  105. package/dist/config-validator.js.map +1 -0
  106. package/dist/configFetcher.d.ts +7 -3
  107. package/dist/configFetcher.js +70 -29
  108. package/dist/configFetcher.js.map +1 -1
  109. package/dist/context/ContextManager.d.ts +3 -3
  110. package/dist/context/ContextManager.js +19 -18
  111. package/dist/context/ContextManager.js.map +1 -1
  112. package/dist/context/index.d.ts +4 -4
  113. package/dist/context/index.js +3 -3
  114. package/dist/context/schema.d.ts +9 -9
  115. package/dist/context/schema.js +2 -2
  116. package/dist/context/schema.js.map +1 -1
  117. package/dist/decisions/engine.d.ts +5 -5
  118. package/dist/decisions/engine.js +13 -13
  119. package/dist/decisions/engine.js.map +1 -1
  120. package/dist/decisions/index.d.ts +6 -6
  121. package/dist/decisions/index.js +5 -5
  122. package/dist/decisions/schema.d.ts +131 -131
  123. package/dist/decisions/schema.js +21 -21
  124. package/dist/decisions/schema.js.map +1 -1
  125. package/dist/decisions/strategies/rules.d.ts +1 -1
  126. package/dist/decisions/strategies/rules.js +24 -24
  127. package/dist/decisions/strategies/rules.js.map +1 -1
  128. package/dist/decisions/strategies/score.d.ts +1 -1
  129. package/dist/decisions/strategies/score.js +3 -3
  130. package/dist/decisions/types.d.ts +19 -19
  131. package/dist/earlyPatcher.d.ts +8 -20
  132. package/dist/earlyPatcher.js +13 -62
  133. package/dist/earlyPatcher.js.map +1 -1
  134. package/dist/editorLoader.d.ts +19 -7
  135. package/dist/editorLoader.js +154 -97
  136. package/dist/editorLoader.js.map +1 -1
  137. package/dist/events/EventBus.d.ts +3 -3
  138. package/dist/events/EventBus.js +5 -7
  139. package/dist/events/EventBus.js.map +1 -1
  140. package/dist/events/index.d.ts +6 -6
  141. package/dist/events/index.js +5 -5
  142. package/dist/events/normalizers/canvas.d.ts +2 -2
  143. package/dist/events/normalizers/canvas.js +3 -3
  144. package/dist/events/normalizers/canvas.js.map +1 -1
  145. package/dist/events/normalizers/posthog.d.ts +25 -1
  146. package/dist/events/normalizers/posthog.js +35 -27
  147. package/dist/events/normalizers/posthog.js.map +1 -1
  148. package/dist/events/schema.d.ts +13 -13
  149. package/dist/events/schema.js +3 -3
  150. package/dist/events/schema.js.map +1 -1
  151. package/dist/events/types.d.ts +7 -1
  152. package/dist/events/types.js +29 -21
  153. package/dist/events/types.js.map +1 -1
  154. package/dist/experiments/adapters/growthbook.d.ts +5 -4
  155. package/dist/experiments/adapters/growthbook.js +14 -6
  156. package/dist/experiments/adapters/growthbook.js.map +1 -1
  157. package/dist/experiments/index.d.ts +3 -3
  158. package/dist/experiments/index.js +1 -1
  159. package/dist/experiments/registry.d.ts +2 -2
  160. package/dist/experiments/registry.js +2 -2
  161. package/dist/experiments/types.d.ts +10 -1
  162. package/dist/fetchers/cdnFetcher.d.ts +1 -1
  163. package/dist/fetchers/cdnFetcher.js +4 -8
  164. package/dist/fetchers/cdnFetcher.js.map +1 -1
  165. package/dist/fetchers/experimentsFetcher.d.ts +25 -3
  166. package/dist/fetchers/experimentsFetcher.js +55 -8
  167. package/dist/fetchers/experimentsFetcher.js.map +1 -1
  168. package/dist/fetchers/index.d.ts +3 -3
  169. package/dist/fetchers/index.js +2 -2
  170. package/dist/fetchers/index.js.map +1 -1
  171. package/dist/fetchers/mergeConfigs.d.ts +29 -0
  172. package/dist/fetchers/mergeConfigs.js +38 -0
  173. package/dist/fetchers/mergeConfigs.js.map +1 -0
  174. package/dist/fetchers/registry.d.ts +1 -1
  175. package/dist/fetchers/registry.js +4 -4
  176. package/dist/fetchers/types.d.ts +1 -1
  177. package/dist/hooks/useCanvasOverlays.d.ts +8 -5
  178. package/dist/hooks/useCanvasOverlays.js +66 -17
  179. package/dist/hooks/useCanvasOverlays.js.map +1 -1
  180. package/dist/hooks/useHostPatches.d.ts +2 -2
  181. package/dist/hooks/useHostPatches.js +8 -8
  182. package/dist/hooks/useHostPatches.js.map +1 -1
  183. package/dist/hooks/useShadowCanvasConfig.d.ts +5 -9
  184. package/dist/hooks/useShadowCanvasConfig.js +7 -5
  185. package/dist/hooks/useShadowCanvasConfig.js.map +1 -1
  186. package/dist/hostPatcher/core/patcher.d.ts +1 -1
  187. package/dist/hostPatcher/core/patcher.js +18 -9
  188. package/dist/hostPatcher/core/patcher.js.map +1 -1
  189. package/dist/hostPatcher/core/sanitizer.js +24 -3
  190. package/dist/hostPatcher/core/sanitizer.js.map +1 -1
  191. package/dist/hostPatcher/policy/defaultPolicy.js +15 -5
  192. package/dist/hostPatcher/policy/defaultPolicy.js.map +1 -1
  193. package/dist/hostPatcher/utils/anchors.js +4 -6
  194. package/dist/hostPatcher/utils/anchors.js.map +1 -1
  195. package/dist/index.d.ts +34 -27
  196. package/dist/index.js +51 -24
  197. package/dist/index.js.map +1 -1
  198. package/dist/logger.d.ts +29 -0
  199. package/dist/logger.js +81 -0
  200. package/dist/logger.js.map +1 -0
  201. package/dist/metrics/index.d.ts +1 -1
  202. package/dist/metrics/index.js +1 -1
  203. package/dist/metrics/sessionMetrics.d.ts +1 -1
  204. package/dist/metrics/sessionMetrics.js +6 -6
  205. package/dist/overlays/fetcher.d.ts +2 -2
  206. package/dist/overlays/fetcher.js +13 -15
  207. package/dist/overlays/fetcher.js.map +1 -1
  208. package/dist/overlays/recipeRegistry.js +2 -2
  209. package/dist/overlays/recipeRegistry.js.map +1 -1
  210. package/dist/overlays/runtime/anchor/resolve.js +1 -1
  211. package/dist/overlays/runtime/anchor/resolve.js.map +1 -1
  212. package/dist/overlays/runtime/index.d.ts +7 -7
  213. package/dist/overlays/runtime/index.js +7 -7
  214. package/dist/overlays/runtime/overlay/highlight.js +39 -39
  215. package/dist/overlays/runtime/overlay/highlight.js.map +1 -1
  216. package/dist/overlays/runtime/overlay/modal.js +5 -5
  217. package/dist/overlays/runtime/overlay/modal.js.map +1 -1
  218. package/dist/overlays/runtime/overlay/root.js +1 -1
  219. package/dist/overlays/runtime/overlay/runner.js +88 -28
  220. package/dist/overlays/runtime/overlay/runner.js.map +1 -1
  221. package/dist/overlays/runtime/overlay/tooltip.d.ts +1 -1
  222. package/dist/overlays/runtime/overlay/tooltip.js +13 -15
  223. package/dist/overlays/runtime/overlay/tooltip.js.map +1 -1
  224. package/dist/overlays/runtime/utils/dom.js +4 -1
  225. package/dist/overlays/runtime/utils/dom.js.map +1 -1
  226. package/dist/overlays/schema.d.ts +146 -146
  227. package/dist/overlays/schema.js +12 -8
  228. package/dist/overlays/schema.js.map +1 -1
  229. package/dist/react.d.ts +7 -7
  230. package/dist/react.js +4 -4
  231. package/dist/react.js.map +1 -1
  232. package/dist/render/RenderContext.d.ts +2 -2
  233. package/dist/render/RenderContext.js +5 -5
  234. package/dist/render/RenderContext.js.map +1 -1
  235. package/dist/render/index.d.ts +3 -3
  236. package/dist/render/index.js +1 -1
  237. package/dist/render/types.d.ts +4 -4
  238. package/dist/runtime.d.ts +32 -8
  239. package/dist/runtime.js +109 -13
  240. package/dist/runtime.js.map +1 -1
  241. package/dist/smart-canvas.esm.js +144 -55
  242. package/dist/smart-canvas.esm.js.map +4 -4
  243. package/dist/smart-canvas.js +14688 -11455
  244. package/dist/smart-canvas.js.map +4 -4
  245. package/dist/smart-canvas.min.js +145 -55
  246. package/dist/smart-canvas.min.js.map +4 -4
  247. package/dist/state/StateStore.d.ts +1 -7
  248. package/dist/state/StateStore.js +15 -9
  249. package/dist/state/StateStore.js.map +1 -1
  250. package/dist/state/helpers/cooldowns.d.ts +1 -1
  251. package/dist/state/helpers/cooldowns.js +1 -1
  252. package/dist/state/helpers/dismissals.d.ts +1 -1
  253. package/dist/state/helpers/dismissals.js +1 -1
  254. package/dist/state/helpers/frequency.d.ts +1 -1
  255. package/dist/state/helpers/frequency.js +1 -1
  256. package/dist/state/index.d.ts +4 -4
  257. package/dist/state/index.js +3 -3
  258. package/dist/state/schema.d.ts +1 -1
  259. package/dist/state/schema.js +1 -1
  260. package/dist/store/example.d.ts +1 -0
  261. package/dist/store/example.js +43 -0
  262. package/dist/store/example.js.map +1 -0
  263. package/dist/store/mini-effector.d.ts +46 -0
  264. package/dist/store/mini-effector.js +88 -0
  265. package/dist/store/mini-effector.js.map +1 -0
  266. package/dist/surfaces/Surfaces.d.ts +11 -0
  267. package/dist/surfaces/Surfaces.js +361 -0
  268. package/dist/surfaces/Surfaces.js.map +1 -0
  269. package/dist/surfaces/index.d.ts +9 -0
  270. package/dist/surfaces/index.js +12 -0
  271. package/dist/surfaces/index.js.map +1 -0
  272. package/dist/surfaces/positioning.d.ts +50 -0
  273. package/dist/surfaces/positioning.js +228 -0
  274. package/dist/surfaces/positioning.js.map +1 -0
  275. package/dist/surfaces/types.d.ts +167 -0
  276. package/dist/surfaces/types.js +23 -0
  277. package/dist/surfaces/types.js.map +1 -0
  278. package/dist/telemetry/adapters/noop.d.ts +12 -0
  279. package/dist/telemetry/adapters/noop.js +42 -0
  280. package/dist/telemetry/adapters/noop.js.map +1 -0
  281. package/dist/telemetry/adapters/posthog.d.ts +8 -2
  282. package/dist/telemetry/adapters/posthog.js +36 -14
  283. package/dist/telemetry/adapters/posthog.js.map +1 -1
  284. package/dist/telemetry/index.d.ts +4 -3
  285. package/dist/telemetry/index.js +3 -2
  286. package/dist/telemetry/index.js.map +1 -1
  287. package/dist/telemetry/registry.d.ts +2 -9
  288. package/dist/telemetry/registry.js +4 -2
  289. package/dist/telemetry/registry.js.map +1 -1
  290. package/dist/telemetry/types.d.ts +1 -1
  291. package/dist/theme/ThemeProvider.d.ts +2 -2
  292. package/dist/theme/ThemeProvider.js +21 -21
  293. package/dist/theme/ThemeProvider.js.map +1 -1
  294. package/dist/theme/defaultTheme.d.ts +4 -5
  295. package/dist/theme/defaultTheme.js +127 -118
  296. package/dist/theme/defaultTheme.js.map +1 -1
  297. package/dist/theme/extractHostTheme.d.ts +1 -1
  298. package/dist/theme/extractHostTheme.js +43 -45
  299. package/dist/theme/extractHostTheme.js.map +1 -1
  300. package/dist/theme/index.d.ts +5 -5
  301. package/dist/theme/index.js +3 -3
  302. package/dist/theme/index.js.map +1 -1
  303. package/dist/theme/types.d.ts +2 -2
  304. package/dist/token.d.ts +2 -0
  305. package/dist/token.js +3 -6
  306. package/dist/token.js.map +1 -1
  307. package/dist/types-only.d.ts +32 -0
  308. package/dist/types-only.js +11 -0
  309. package/dist/types-only.js.map +1 -0
  310. package/dist/types.d.ts +89 -56
  311. package/dist/types.js +14 -2
  312. package/dist/types.js.map +1 -1
  313. package/dist/version.d.ts +13 -0
  314. package/dist/version.js +14 -0
  315. package/dist/version.js.map +1 -0
  316. package/dist/widgets/WidgetRegistry.d.ts +145 -0
  317. package/dist/widgets/WidgetRegistry.js +191 -0
  318. package/dist/widgets/WidgetRegistry.js.map +1 -0
  319. package/dist/widgets/index.d.ts +7 -0
  320. package/dist/widgets/index.js +7 -0
  321. package/dist/widgets/index.js.map +1 -0
  322. package/package.json +35 -15
  323. package/schema/canvas-config.schema.json +488 -254
  324. package/schema/runtime-context.schema.json +1 -5
@@ -0,0 +1,332 @@
1
+ /**
2
+ * Tour Executor
3
+ *
4
+ * Orchestrates sequential tour steps with cross-page state persistence.
5
+ * Tours can span multiple pages and resume after navigation.
6
+ *
7
+ * Each step contains an inner action (modal, tooltip) that gets executed.
8
+ * The tour listens for CTA click events to advance to the next step.
9
+ */
10
+ /** Storage key for active tour state */
11
+ const ACTIVE_TOUR_KEY = 'syntro_active_tour';
12
+ /** Track active tour executors to prevent duplicates */
13
+ const activeTours = new Map();
14
+ /**
15
+ * Get active tour state from localStorage
16
+ */
17
+ function getTourState(tourId) {
18
+ try {
19
+ const data = localStorage.getItem(ACTIVE_TOUR_KEY);
20
+ if (!data)
21
+ return null;
22
+ const state = JSON.parse(data);
23
+ // Only return if it matches the requested tour
24
+ if (state.tourId !== tourId)
25
+ return null;
26
+ return state;
27
+ }
28
+ catch {
29
+ return null;
30
+ }
31
+ }
32
+ /**
33
+ * Save tour state to localStorage
34
+ */
35
+ function saveTourState(state) {
36
+ try {
37
+ localStorage.setItem(ACTIVE_TOUR_KEY, JSON.stringify(state));
38
+ }
39
+ catch {
40
+ // Storage may be full or unavailable
41
+ }
42
+ }
43
+ /**
44
+ * Clear tour state from localStorage
45
+ */
46
+ function clearTourState() {
47
+ try {
48
+ localStorage.removeItem(ACTIVE_TOUR_KEY);
49
+ }
50
+ catch {
51
+ // Ignore errors
52
+ }
53
+ }
54
+ /**
55
+ * Get current route/path
56
+ */
57
+ function getCurrentRoute() {
58
+ return window.location.pathname;
59
+ }
60
+ /**
61
+ * Check if a step matches the current route
62
+ */
63
+ function stepMatchesRoute(step) {
64
+ if (!step.route)
65
+ return true;
66
+ const currentRoute = getCurrentRoute();
67
+ // Simple pattern matching - step.route can be exact path or glob pattern
68
+ if (step.route.includes('*')) {
69
+ const pattern = new RegExp(`^${step.route.replace(/\*/g, '.*')}$`);
70
+ return pattern.test(currentRoute);
71
+ }
72
+ return currentRoute === step.route;
73
+ }
74
+ /**
75
+ * Execute a tour action
76
+ *
77
+ * Tours orchestrate a sequence of steps, persisting state to localStorage
78
+ * to support cross-page navigation. Each step contains an action to execute
79
+ * and optionally defines transitions based on action events.
80
+ */
81
+ export const executeTour = async (action, context) => {
82
+ const { tourId, steps, startStep, autoStart = true } = action;
83
+ if (steps.length === 0) {
84
+ throw new Error(`Tour "${tourId}" has no steps`);
85
+ }
86
+ // Self-guard: if this tour is already running, return no-op
87
+ // This prevents duplicate modals when applyBatch is called multiple times
88
+ if (activeTours.has(tourId)) {
89
+ return {
90
+ cleanup: async () => {
91
+ // Delegate to the original tour's cleanup
92
+ const existing = activeTours.get(tourId);
93
+ if (existing) {
94
+ await existing.cleanup();
95
+ }
96
+ },
97
+ };
98
+ }
99
+ // Check if we can execute inner actions
100
+ if (!context.applyAction) {
101
+ throw new Error('Tour executor requires applyAction in context');
102
+ }
103
+ // Get or initialize tour state
104
+ let state = getTourState(tourId);
105
+ const isResumingTour = !!state;
106
+ // If not resuming and autoStart is false, don't start the tour
107
+ if (!isResumingTour && !autoStart) {
108
+ return {
109
+ cleanup: () => { },
110
+ };
111
+ }
112
+ if (!state) {
113
+ state = {
114
+ tourId,
115
+ currentStepId: startStep || steps[0].id,
116
+ startedAt: Date.now(),
117
+ };
118
+ saveTourState(state);
119
+ }
120
+ // Find the current step
121
+ let currentStepIndex = steps.findIndex((s) => s.id === state.currentStepId);
122
+ if (currentStepIndex === -1) {
123
+ // Step not found, use startStep or first step
124
+ const initialStepId = startStep || steps[0].id;
125
+ currentStepIndex = steps.findIndex((s) => s.id === initialStepId);
126
+ if (currentStepIndex === -1)
127
+ currentStepIndex = 0;
128
+ state.currentStepId = steps[currentStepIndex].id;
129
+ saveTourState(state);
130
+ }
131
+ const currentStep = steps[currentStepIndex];
132
+ // Check if current step matches the route
133
+ if (!stepMatchesRoute(currentStep)) {
134
+ // Current page doesn't match this step's route
135
+ // Tour is "waiting" for navigation to the correct page
136
+ context.publishEvent('tour.waiting_for_route', {
137
+ tourId,
138
+ stepId: currentStep.id,
139
+ expectedRoute: currentStep.route,
140
+ currentRoute: getCurrentRoute(),
141
+ });
142
+ // Return a no-op that cleans up when tour ends
143
+ return {
144
+ cleanup: () => { },
145
+ };
146
+ }
147
+ // Track state
148
+ let isDestroyed = false;
149
+ let currentActionHandle = null;
150
+ let eventUnsubscribe = null;
151
+ let routeWatcher = null;
152
+ /**
153
+ * Clean up current step
154
+ */
155
+ const cleanupCurrentStep = async () => {
156
+ if (eventUnsubscribe) {
157
+ eventUnsubscribe();
158
+ eventUnsubscribe = null;
159
+ }
160
+ if (currentActionHandle && currentActionHandle.isApplied()) {
161
+ await currentActionHandle.revert();
162
+ currentActionHandle = null;
163
+ }
164
+ };
165
+ /**
166
+ * Advance to the next step
167
+ */
168
+ const advanceToStep = async (nextStepId) => {
169
+ if (isDestroyed)
170
+ return;
171
+ // Clean up current step
172
+ await cleanupCurrentStep();
173
+ if (nextStepId === 'end') {
174
+ // Tour complete
175
+ clearTourState();
176
+ context.publishEvent('tour.completed', {
177
+ tourId,
178
+ totalSteps: steps.length,
179
+ });
180
+ isDestroyed = true;
181
+ return;
182
+ }
183
+ // Find next step
184
+ const nextStep = steps.find((s) => s.id === nextStepId);
185
+ if (!nextStep) {
186
+ console.error(`[Tour] Step "${nextStepId}" not found`);
187
+ return;
188
+ }
189
+ // Update state
190
+ state.currentStepId = nextStepId;
191
+ saveTourState(state);
192
+ context.publishEvent('tour.step_changed', {
193
+ tourId,
194
+ previousStepId: currentStep.id,
195
+ nextStepId,
196
+ });
197
+ // If the next step has a different route, let navigation happen
198
+ if (nextStep.route && nextStep.route !== getCurrentRoute()) {
199
+ context.publishEvent('tour.awaiting_navigation', {
200
+ tourId,
201
+ stepId: nextStepId,
202
+ targetRoute: nextStep.route,
203
+ });
204
+ // Tour will resume when page reloads and this executor runs again
205
+ return;
206
+ }
207
+ // Execute the next step's action
208
+ await executeStep(nextStep);
209
+ };
210
+ /**
211
+ * Execute a step's inner action and set up event listeners
212
+ */
213
+ const executeStep = async (step) => {
214
+ if (isDestroyed)
215
+ return;
216
+ context.publishEvent('tour.step_started', {
217
+ tourId,
218
+ stepId: step.id,
219
+ stepIndex: steps.findIndex((s) => s.id === step.id),
220
+ totalSteps: steps.length,
221
+ });
222
+ // Execute the inner action
223
+ try {
224
+ currentActionHandle = await context.applyAction(step.action);
225
+ }
226
+ catch (error) {
227
+ console.error(`[Tour] Failed to execute step "${step.id}":`, error);
228
+ context.publishEvent('tour.step_failed', {
229
+ tourId,
230
+ stepId: step.id,
231
+ error: String(error),
232
+ });
233
+ return;
234
+ }
235
+ // Subscribe to CTA click events if there are transitions defined
236
+ if (step.onAction && context.subscribeEvent) {
237
+ eventUnsubscribe = context.subscribeEvent('action.modal_cta_clicked', (props) => {
238
+ const actionId = props === null || props === void 0 ? void 0 : props.actionId;
239
+ if (actionId && step.onAction) {
240
+ const nextStepId = step.onAction[actionId];
241
+ if (nextStepId) {
242
+ advanceToStep(nextStepId);
243
+ }
244
+ }
245
+ });
246
+ // Also listen for tooltip CTA clicks
247
+ const tooltipUnsubscribe = context.subscribeEvent('action.tooltip_cta_clicked', (props) => {
248
+ const actionId = props === null || props === void 0 ? void 0 : props.actionId;
249
+ if (actionId && step.onAction) {
250
+ const nextStepId = step.onAction[actionId];
251
+ if (nextStepId) {
252
+ advanceToStep(nextStepId);
253
+ }
254
+ }
255
+ });
256
+ // Combine unsubscribes
257
+ const originalUnsubscribe = eventUnsubscribe;
258
+ eventUnsubscribe = () => {
259
+ originalUnsubscribe();
260
+ tooltipUnsubscribe();
261
+ };
262
+ }
263
+ };
264
+ // Set up route change watcher for SPAs
265
+ const setupRouteWatcher = () => {
266
+ let lastPath = getCurrentRoute();
267
+ const checkRoute = () => {
268
+ const currentPath = getCurrentRoute();
269
+ if (currentPath !== lastPath) {
270
+ lastPath = currentPath;
271
+ context.publishEvent('tour.route_changed', {
272
+ tourId,
273
+ newRoute: currentPath,
274
+ });
275
+ }
276
+ };
277
+ // Watch for popstate (back/forward navigation)
278
+ window.addEventListener('popstate', checkRoute);
279
+ // Watch for pushState/replaceState
280
+ const origPushState = history.pushState.bind(history);
281
+ const origReplaceState = history.replaceState.bind(history);
282
+ history.pushState = (...args) => {
283
+ origPushState(...args);
284
+ queueMicrotask(checkRoute);
285
+ };
286
+ history.replaceState = (...args) => {
287
+ origReplaceState(...args);
288
+ queueMicrotask(checkRoute);
289
+ };
290
+ return () => {
291
+ window.removeEventListener('popstate', checkRoute);
292
+ history.pushState = origPushState;
293
+ history.replaceState = origReplaceState;
294
+ };
295
+ };
296
+ routeWatcher = setupRouteWatcher();
297
+ // Publish tour started/resumed event
298
+ if (!isResumingTour) {
299
+ context.publishEvent('tour.started', {
300
+ tourId,
301
+ totalSteps: steps.length,
302
+ startStepId: state.currentStepId,
303
+ });
304
+ }
305
+ else {
306
+ context.publishEvent('tour.resumed', {
307
+ tourId,
308
+ stepId: state.currentStepId,
309
+ });
310
+ }
311
+ // Execute the current step
312
+ await executeStep(currentStep);
313
+ // Create cleanup function
314
+ const cleanup = async () => {
315
+ isDestroyed = true;
316
+ // Remove from active tours
317
+ activeTours.delete(tourId);
318
+ await cleanupCurrentStep();
319
+ if (routeWatcher) {
320
+ routeWatcher();
321
+ }
322
+ // Don't clear tour state on cleanup - allow resume
323
+ context.publishEvent('tour.paused', {
324
+ tourId,
325
+ stepId: state.currentStepId,
326
+ });
327
+ };
328
+ // Register this tour as active
329
+ activeTours.set(tourId, { cleanup });
330
+ return { cleanup };
331
+ };
332
+ //# sourceMappingURL=tour.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tour.js","sourceRoot":"","sources":["../../../src/actions/executors/tour.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,10 @@
1
+ /**
2
+ * Actions Module
3
+ *
4
+ * Unified execution layer for interventions (highlight, tooltip, badge, DOM modifications).
5
+ */
6
+ export { createActionEngine } from './ActionEngine';
7
+ export type { ActionEngine, ActionEngineOptions, ActionEngineExecutorRegistry, ActionHandle, BatchActionHandle, ActiveAction, ActionStep, ActionKind, HighlightAction, PulseAction, BadgeAction, TooltipAction, InsertHtmlAction, SetTextAction, SetAttrAction, AddClassAction, RemoveClassAction, SetStyleAction, MountWidgetAction, ScrollToAction, NavigateAction, HighlightStyle, BadgePosition, TooltipContent, TooltipTrigger, InsertPosition, WidgetConfig, ActionState, ValidationResult, ValidationError, ValidationWarning, ExecutorResult, ExecutorContext, ExecutorCleanup, ExecutorUpdate, ActionExecutor, } from './types';
8
+ export { validateAction, validateActions } from './validation';
9
+ export { ExecutorRegistry, executorRegistry, getExecutor, hasExecutor } from './executors';
10
+ export type { ExecutorRegistration } from './executors';
@@ -0,0 +1,12 @@
1
+ /**
2
+ * Actions Module
3
+ *
4
+ * Unified execution layer for interventions (highlight, tooltip, badge, DOM modifications).
5
+ */
6
+ // Main factory
7
+ export { createActionEngine } from './ActionEngine';
8
+ // Validation
9
+ export { validateAction, validateActions } from './validation';
10
+ // Executors (for advanced usage)
11
+ export { ExecutorRegistry, executorRegistry, getExecutor, hasExecutor } from './executors';
12
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/actions/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,eAAe;AACf,OAAO,EAAE,kBAAkB,EAAE,MAAM,gBAAgB,CAAC;AAqDpD,aAAa;AACb,OAAO,EAAE,cAAc,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC;AAE/D,iCAAiC;AACjC,OAAO,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,WAAW,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC"}