@syntrologie/runtime-sdk 2.1.0 → 2.2.0-canary.10

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 (360) hide show
  1. package/CAPABILITIES.md +50 -43
  2. package/README.md +7 -7
  3. package/dist/RuntimeProvider.d.ts +1 -1
  4. package/dist/ShadowRootContext.d.ts +19 -0
  5. package/dist/SmartCanvasApp.d.ts +7 -4
  6. package/dist/SmartCanvasElement.d.ts +7 -2
  7. package/dist/SmartCanvasPortal.d.ts +1 -1
  8. package/dist/actions/executors/core-flow.d.ts +19 -0
  9. package/dist/actions/executors/index.d.ts +4 -3
  10. package/dist/actions/executors/tour.d.ts +1 -1
  11. package/dist/actions/index.d.ts +4 -3
  12. package/dist/actions/schema.d.ts +1229 -0
  13. package/dist/actions/schema.js +67 -0
  14. package/dist/actions/schema.js.map +7 -0
  15. package/dist/api.d.ts +4 -2
  16. package/dist/apps/builtinRuntimeModules.generated.d.ts +20 -0
  17. package/dist/apps/examples/gamification-app.example.d.ts +4 -4
  18. package/dist/apps/index.d.ts +7 -7
  19. package/dist/blocks/data/index.d.ts +1 -1
  20. package/dist/blocks/index.d.ts +2 -2
  21. package/dist/blocks/interactive/index.d.ts +1 -1
  22. package/dist/blocks/notification/NotificationBlock.d.ts +1 -1
  23. package/dist/blocks/notification/index.d.ts +1 -1
  24. package/dist/bootstrap.d.ts +4 -4
  25. package/dist/chunk-AYTRRBR5.js +251 -0
  26. package/dist/chunk-AYTRRBR5.js.map +7 -0
  27. package/dist/chunk-VLWWR22N.js +9266 -0
  28. package/dist/chunk-VLWWR22N.js.map +7 -0
  29. package/dist/components/ShadowCanvasOverlay.d.ts +2 -2
  30. package/dist/components/TileCard.d.ts +1 -1
  31. package/dist/context/ContextManager.d.ts +1 -1
  32. package/dist/context/index.d.ts +3 -3
  33. package/dist/decisions/engine.d.ts +1 -1
  34. package/dist/decisions/index.d.ts +3 -3
  35. package/dist/decisions/schema.d.ts +24 -24
  36. package/dist/decisions/strategies/rules.d.ts +1 -1
  37. package/dist/decisions/strategies/score.d.ts +1 -1
  38. package/dist/editorLoader.d.ts +4 -4
  39. package/dist/events/EventAccumulator.d.ts +1 -1
  40. package/dist/events/EventBus.d.ts +1 -1
  41. package/dist/events/index.d.ts +7 -6
  42. package/dist/events/registerConfigPredicates.d.ts +19 -0
  43. package/dist/experiments/adapters/growthbook.d.ts +1 -1
  44. package/dist/experiments/index.d.ts +2 -2
  45. package/dist/experiments/registry.d.ts +1 -1
  46. package/dist/fetchers/index.d.ts +2 -2
  47. package/dist/hooks/useShadowCanvasConfig.d.ts +1 -1
  48. package/dist/hostPatcher/index.d.ts +2 -2
  49. package/dist/index.d.ts +24 -21
  50. package/dist/index.js +2349 -75
  51. package/dist/index.js.map +7 -1
  52. package/dist/metrics/index.d.ts +1 -1
  53. package/dist/notifications/index.d.ts +6 -6
  54. package/dist/overlays/runtime/index.d.ts +3 -3
  55. package/dist/overlays/runtime/overlay/root.d.ts +17 -1
  56. package/dist/overlays/runtime/overlay/tooltip.d.ts +1 -1
  57. package/dist/react.js +90 -134
  58. package/dist/react.js.map +7 -1
  59. package/dist/render/RenderContext.d.ts +2 -2
  60. package/dist/render/index.d.ts +2 -2
  61. package/dist/render/types.d.ts +2 -2
  62. package/dist/runtime.d.ts +8 -8
  63. package/dist/smart-canvas.esm.js +158 -126
  64. package/dist/smart-canvas.esm.js.map +4 -4
  65. package/dist/smart-canvas.js +18872 -16744
  66. package/dist/smart-canvas.js.map +4 -4
  67. package/dist/smart-canvas.min.js +158 -126
  68. package/dist/smart-canvas.min.js.map +4 -4
  69. package/dist/state/StateStore.d.ts +1 -1
  70. package/dist/state/helpers/cooldowns.d.ts +1 -1
  71. package/dist/state/helpers/dismissals.d.ts +1 -1
  72. package/dist/state/helpers/frequency.d.ts +1 -1
  73. package/dist/state/index.d.ts +3 -3
  74. package/dist/surfaces/index.d.ts +3 -3
  75. package/dist/surfaces/positioning.d.ts +1 -1
  76. package/dist/telemetry/adapters/posthog.d.ts +2 -2
  77. package/dist/telemetry/index.d.ts +3 -3
  78. package/dist/telemetry/registry.d.ts +1 -1
  79. package/dist/telemetry/types.d.ts +5 -0
  80. package/dist/theme/ThemeProvider.d.ts +1 -1
  81. package/dist/theme/extractHostTheme.d.ts +1 -1
  82. package/dist/theme/index.d.ts +4 -4
  83. package/dist/types-only.d.ts +1 -1
  84. package/dist/types-only.js +1 -11
  85. package/dist/types-only.js.map +7 -1
  86. package/dist/types.d.ts +1 -1
  87. package/dist/version.d.ts +1 -1
  88. package/dist/widgets/index.d.ts +1 -1
  89. package/package.json +29 -17
  90. package/schema/canvas-config.base.schema.json +351 -0
  91. package/schema/canvas-config.schema.json +3308 -444
  92. package/scripts/validate-config.mjs +54 -58
  93. package/dist/RuntimeProvider.js +0 -113
  94. package/dist/RuntimeProvider.js.map +0 -1
  95. package/dist/SmartCanvasApp.js +0 -143
  96. package/dist/SmartCanvasApp.js.map +0 -1
  97. package/dist/SmartCanvasElement.js +0 -138
  98. package/dist/SmartCanvasElement.js.map +0 -1
  99. package/dist/SmartCanvasPortal.js +0 -17
  100. package/dist/SmartCanvasPortal.js.map +0 -1
  101. package/dist/actions/ActionEngine.js +0 -272
  102. package/dist/actions/ActionEngine.js.map +0 -1
  103. package/dist/actions/executors/index.js +0 -240
  104. package/dist/actions/executors/index.js.map +0 -1
  105. package/dist/actions/executors/tour.js +0 -332
  106. package/dist/actions/executors/tour.js.map +0 -1
  107. package/dist/actions/index.js +0 -12
  108. package/dist/actions/index.js.map +0 -1
  109. package/dist/actions/types.js +0 -8
  110. package/dist/actions/types.js.map +0 -1
  111. package/dist/actions/validation.js +0 -577
  112. package/dist/actions/validation.js.map +0 -1
  113. package/dist/adaptives/adaptive-chatbot/index.js +0 -9
  114. package/dist/adaptives/adaptive-chatbot/index.js.map +0 -7
  115. package/dist/adaptives/adaptive-content/index.js +0 -22
  116. package/dist/adaptives/adaptive-content/index.js.map +0 -7
  117. package/dist/adaptives/adaptive-faq/index.js +0 -11
  118. package/dist/adaptives/adaptive-faq/index.js.map +0 -7
  119. package/dist/adaptives/adaptive-gamification/index.js +0 -2
  120. package/dist/adaptives/adaptive-gamification/index.js.map +0 -7
  121. package/dist/adaptives/adaptive-nav/index.js +0 -12
  122. package/dist/adaptives/adaptive-nav/index.js.map +0 -7
  123. package/dist/adaptives/adaptive-overlays/index.js +0 -94
  124. package/dist/adaptives/adaptive-overlays/index.js.map +0 -7
  125. package/dist/antiFlicker.js +0 -39
  126. package/dist/antiFlicker.js.map +0 -1
  127. package/dist/api.js +0 -205
  128. package/dist/api.js.map +0 -1
  129. package/dist/apps/AppContext.js +0 -91
  130. package/dist/apps/AppContext.js.map +0 -1
  131. package/dist/apps/AppLoader.js +0 -293
  132. package/dist/apps/AppLoader.js.map +0 -1
  133. package/dist/apps/AppRegistry.js +0 -317
  134. package/dist/apps/AppRegistry.js.map +0 -1
  135. package/dist/apps/examples/gamification-app.example.js +0 -329
  136. package/dist/apps/examples/gamification-app.example.js.map +0 -1
  137. package/dist/apps/index.js +0 -16
  138. package/dist/apps/index.js.map +0 -1
  139. package/dist/apps/types.js +0 -8
  140. package/dist/apps/types.js.map +0 -1
  141. package/dist/blocks/data/ComparisonBlock.js +0 -95
  142. package/dist/blocks/data/ComparisonBlock.js.map +0 -1
  143. package/dist/blocks/data/StatsBlock.js +0 -102
  144. package/dist/blocks/data/StatsBlock.js.map +0 -1
  145. package/dist/blocks/data/index.js +0 -3
  146. package/dist/blocks/data/index.js.map +0 -1
  147. package/dist/blocks/index.js +0 -93
  148. package/dist/blocks/index.js.map +0 -1
  149. package/dist/blocks/interactive/ChecklistBlock.js +0 -111
  150. package/dist/blocks/interactive/ChecklistBlock.js.map +0 -1
  151. package/dist/blocks/interactive/RatingBlock.js +0 -147
  152. package/dist/blocks/interactive/RatingBlock.js.map +0 -1
  153. package/dist/blocks/interactive/index.js +0 -3
  154. package/dist/blocks/interactive/index.js.map +0 -1
  155. package/dist/blocks/notification/NotificationBlock.js +0 -171
  156. package/dist/blocks/notification/NotificationBlock.js.map +0 -1
  157. package/dist/blocks/notification/index.js +0 -2
  158. package/dist/blocks/notification/index.js.map +0 -1
  159. package/dist/blocks/theme-tokens.js +0 -25
  160. package/dist/blocks/theme-tokens.js.map +0 -1
  161. package/dist/bootstrap.js +0 -448
  162. package/dist/bootstrap.js.map +0 -1
  163. package/dist/bundle-entry.js +0 -9
  164. package/dist/bundle-entry.js.map +0 -1
  165. package/dist/components/ShadowCanvasOverlay.js +0 -327
  166. package/dist/components/ShadowCanvasOverlay.js.map +0 -1
  167. package/dist/components/TileCard.js +0 -103
  168. package/dist/components/TileCard.js.map +0 -1
  169. package/dist/components/TileWheel.js +0 -50
  170. package/dist/components/TileWheel.js.map +0 -1
  171. package/dist/config-validator.js +0 -173
  172. package/dist/config-validator.js.map +0 -1
  173. package/dist/configFetcher.js +0 -131
  174. package/dist/configFetcher.js.map +0 -1
  175. package/dist/context/ContextManager.js +0 -269
  176. package/dist/context/ContextManager.js.map +0 -1
  177. package/dist/context/index.js +0 -7
  178. package/dist/context/index.js.map +0 -1
  179. package/dist/context/schema.js +0 -50
  180. package/dist/context/schema.js.map +0 -1
  181. package/dist/context/types.js +0 -8
  182. package/dist/context/types.js.map +0 -1
  183. package/dist/controller.js +0 -34
  184. package/dist/controller.js.map +0 -1
  185. package/dist/decisions/engine.js +0 -117
  186. package/dist/decisions/engine.js.map +0 -1
  187. package/dist/decisions/index.js +0 -10
  188. package/dist/decisions/index.js.map +0 -1
  189. package/dist/decisions/schema.js +0 -151
  190. package/dist/decisions/schema.js.map +0 -1
  191. package/dist/decisions/strategies/rules.js +0 -166
  192. package/dist/decisions/strategies/rules.js.map +0 -1
  193. package/dist/decisions/strategies/score.js +0 -29
  194. package/dist/decisions/strategies/score.js.map +0 -1
  195. package/dist/decisions/types.js +0 -2
  196. package/dist/decisions/types.js.map +0 -1
  197. package/dist/earlyPatcher.js +0 -20
  198. package/dist/earlyPatcher.js.map +0 -1
  199. package/dist/editorLoader.js +0 -254
  200. package/dist/editorLoader.js.map +0 -1
  201. package/dist/events/EventAccumulator.js +0 -101
  202. package/dist/events/EventAccumulator.js.map +0 -1
  203. package/dist/events/EventBus.js +0 -152
  204. package/dist/events/EventBus.js.map +0 -1
  205. package/dist/events/index.js +0 -11
  206. package/dist/events/index.js.map +0 -1
  207. package/dist/events/normalizers/canvas.js +0 -116
  208. package/dist/events/normalizers/canvas.js.map +0 -1
  209. package/dist/events/normalizers/posthog.js +0 -171
  210. package/dist/events/normalizers/posthog.js.map +0 -1
  211. package/dist/events/schema.js +0 -30
  212. package/dist/events/schema.js.map +0 -1
  213. package/dist/events/types.js +0 -54
  214. package/dist/events/types.js.map +0 -1
  215. package/dist/experiments/adapters/growthbook.js +0 -81
  216. package/dist/experiments/adapters/growthbook.js.map +0 -1
  217. package/dist/experiments/index.js +0 -4
  218. package/dist/experiments/index.js.map +0 -1
  219. package/dist/experiments/registry.js +0 -30
  220. package/dist/experiments/registry.js.map +0 -1
  221. package/dist/experiments/types.js +0 -2
  222. package/dist/experiments/types.js.map +0 -1
  223. package/dist/fetchers/cdnFetcher.js +0 -96
  224. package/dist/fetchers/cdnFetcher.js.map +0 -1
  225. package/dist/fetchers/experimentsFetcher.js +0 -109
  226. package/dist/fetchers/experimentsFetcher.js.map +0 -1
  227. package/dist/fetchers/index.js +0 -5
  228. package/dist/fetchers/index.js.map +0 -1
  229. package/dist/fetchers/mergeConfigs.js +0 -38
  230. package/dist/fetchers/mergeConfigs.js.map +0 -1
  231. package/dist/fetchers/registry.js +0 -58
  232. package/dist/fetchers/registry.js.map +0 -1
  233. package/dist/fetchers/types.js +0 -2
  234. package/dist/fetchers/types.js.map +0 -1
  235. package/dist/hooks/useCanvasOverlays.js +0 -128
  236. package/dist/hooks/useCanvasOverlays.js.map +0 -1
  237. package/dist/hooks/useHostPatches.js +0 -40
  238. package/dist/hooks/useHostPatches.js.map +0 -1
  239. package/dist/hooks/useShadowCanvasConfig.js +0 -63
  240. package/dist/hooks/useShadowCanvasConfig.js.map +0 -1
  241. package/dist/hostPatcher/core/patcher.js +0 -181
  242. package/dist/hostPatcher/core/patcher.js.map +0 -1
  243. package/dist/hostPatcher/core/sanitizer.js +0 -66
  244. package/dist/hostPatcher/core/sanitizer.js.map +0 -1
  245. package/dist/hostPatcher/core/types.js +0 -2
  246. package/dist/hostPatcher/core/types.js.map +0 -1
  247. package/dist/hostPatcher/index.js +0 -7
  248. package/dist/hostPatcher/index.js.map +0 -1
  249. package/dist/hostPatcher/policy/defaultPolicy.js +0 -23
  250. package/dist/hostPatcher/policy/defaultPolicy.js.map +0 -1
  251. package/dist/hostPatcher/utils/anchors.js +0 -105
  252. package/dist/hostPatcher/utils/anchors.js.map +0 -1
  253. package/dist/hostPatcher/utils/observer.js +0 -11
  254. package/dist/hostPatcher/utils/observer.js.map +0 -1
  255. package/dist/logger.js +0 -81
  256. package/dist/logger.js.map +0 -1
  257. package/dist/metrics/index.js +0 -5
  258. package/dist/metrics/index.js.map +0 -1
  259. package/dist/metrics/sessionMetrics.js +0 -178
  260. package/dist/metrics/sessionMetrics.js.map +0 -1
  261. package/dist/notifications/NotificationToastStack.js +0 -118
  262. package/dist/notifications/NotificationToastStack.js.map +0 -1
  263. package/dist/notifications/index.js +0 -6
  264. package/dist/notifications/index.js.map +0 -1
  265. package/dist/notifications/matcher.js +0 -66
  266. package/dist/notifications/matcher.js.map +0 -1
  267. package/dist/notifications/types.js +0 -13
  268. package/dist/notifications/types.js.map +0 -1
  269. package/dist/notifications/useNotifications.js +0 -104
  270. package/dist/notifications/useNotifications.js.map +0 -1
  271. package/dist/notifications/useNotifyWatcher.js +0 -62
  272. package/dist/notifications/useNotifyWatcher.js.map +0 -1
  273. package/dist/overlays/fetcher.js +0 -15
  274. package/dist/overlays/fetcher.js.map +0 -1
  275. package/dist/overlays/recipeRegistry.js +0 -32
  276. package/dist/overlays/recipeRegistry.js.map +0 -1
  277. package/dist/overlays/runtime/anchor/resolve.js +0 -87
  278. package/dist/overlays/runtime/anchor/resolve.js.map +0 -1
  279. package/dist/overlays/runtime/index.js +0 -8
  280. package/dist/overlays/runtime/index.js.map +0 -1
  281. package/dist/overlays/runtime/overlay/highlight.js +0 -160
  282. package/dist/overlays/runtime/overlay/highlight.js.map +0 -1
  283. package/dist/overlays/runtime/overlay/modal.js +0 -78
  284. package/dist/overlays/runtime/overlay/modal.js.map +0 -1
  285. package/dist/overlays/runtime/overlay/root.js +0 -297
  286. package/dist/overlays/runtime/overlay/root.js.map +0 -1
  287. package/dist/overlays/runtime/overlay/runner.js +0 -602
  288. package/dist/overlays/runtime/overlay/runner.js.map +0 -1
  289. package/dist/overlays/runtime/overlay/tooltip.js +0 -232
  290. package/dist/overlays/runtime/overlay/tooltip.js.map +0 -1
  291. package/dist/overlays/runtime/utils/dom.js +0 -12
  292. package/dist/overlays/runtime/utils/dom.js.map +0 -1
  293. package/dist/overlays/schema.js +0 -52
  294. package/dist/overlays/schema.js.map +0 -1
  295. package/dist/overlays/types.js +0 -2
  296. package/dist/overlays/types.js.map +0 -1
  297. package/dist/render/RenderContext.js +0 -69
  298. package/dist/render/RenderContext.js.map +0 -1
  299. package/dist/render/index.js +0 -3
  300. package/dist/render/index.js.map +0 -1
  301. package/dist/render/types.js +0 -2
  302. package/dist/render/types.js.map +0 -1
  303. package/dist/runtime.js +0 -237
  304. package/dist/runtime.js.map +0 -1
  305. package/dist/state/StateStore.js +0 -176
  306. package/dist/state/StateStore.js.map +0 -1
  307. package/dist/state/helpers/cooldowns.js +0 -31
  308. package/dist/state/helpers/cooldowns.js.map +0 -1
  309. package/dist/state/helpers/dismissals.js +0 -34
  310. package/dist/state/helpers/dismissals.js.map +0 -1
  311. package/dist/state/helpers/frequency.js +0 -43
  312. package/dist/state/helpers/frequency.js.map +0 -1
  313. package/dist/state/index.js +0 -7
  314. package/dist/state/index.js.map +0 -1
  315. package/dist/state/schema.js +0 -25
  316. package/dist/state/schema.js.map +0 -1
  317. package/dist/state/types.js +0 -9
  318. package/dist/state/types.js.map +0 -1
  319. package/dist/store/example.js +0 -43
  320. package/dist/store/example.js.map +0 -1
  321. package/dist/store/mini-effector.js +0 -88
  322. package/dist/store/mini-effector.js.map +0 -1
  323. package/dist/surfaces/Surfaces.js +0 -361
  324. package/dist/surfaces/Surfaces.js.map +0 -1
  325. package/dist/surfaces/index.js +0 -12
  326. package/dist/surfaces/index.js.map +0 -1
  327. package/dist/surfaces/positioning.js +0 -228
  328. package/dist/surfaces/positioning.js.map +0 -1
  329. package/dist/surfaces/types.js +0 -23
  330. package/dist/surfaces/types.js.map +0 -1
  331. package/dist/telemetry/adapters/noop.js +0 -42
  332. package/dist/telemetry/adapters/noop.js.map +0 -1
  333. package/dist/telemetry/adapters/posthog.js +0 -180
  334. package/dist/telemetry/adapters/posthog.js.map +0 -1
  335. package/dist/telemetry/index.js +0 -4
  336. package/dist/telemetry/index.js.map +0 -1
  337. package/dist/telemetry/registry.js +0 -29
  338. package/dist/telemetry/registry.js.map +0 -1
  339. package/dist/telemetry/types.js +0 -2
  340. package/dist/telemetry/types.js.map +0 -1
  341. package/dist/theme/ThemeProvider.js +0 -109
  342. package/dist/theme/ThemeProvider.js.map +0 -1
  343. package/dist/theme/defaultTheme.js +0 -190
  344. package/dist/theme/defaultTheme.js.map +0 -1
  345. package/dist/theme/extractHostTheme.js +0 -259
  346. package/dist/theme/extractHostTheme.js.map +0 -1
  347. package/dist/theme/index.js +0 -7
  348. package/dist/theme/index.js.map +0 -1
  349. package/dist/theme/types.js +0 -6
  350. package/dist/theme/types.js.map +0 -1
  351. package/dist/token.js +0 -44
  352. package/dist/token.js.map +0 -1
  353. package/dist/types.js +0 -17
  354. package/dist/types.js.map +0 -1
  355. package/dist/version.js +0 -14
  356. package/dist/version.js.map +0 -1
  357. package/dist/widgets/WidgetRegistry.js +0 -190
  358. package/dist/widgets/WidgetRegistry.js.map +0 -1
  359. package/dist/widgets/index.js +0 -7
  360. package/dist/widgets/index.js.map +0 -1
@@ -1,327 +0,0 @@
1
- import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
2
- import { base, brand, button, slateGrey, red, text } from '@syntro/design-system/tokens';
3
- import { useEffect, useState, useCallback, useRef } from 'react';
4
- import { createPortal } from 'react-dom';
5
- import { CanvasEvents } from '../events/normalizers/canvas';
6
- import { StandardEvents } from '../events/types';
7
- import { useNotifications } from '../notifications/useNotifications';
8
- import { useNotifyWatcher } from '../notifications/useNotifyWatcher';
9
- import { NotificationToastStack } from '../notifications/NotificationToastStack';
10
- import { useRuntime } from '../RuntimeProvider';
11
- import { withAlpha } from '../theme';
12
- import { TileCard } from './TileCard';
13
- // Inject launcher animation styles once
14
- const LAUNCHER_STYLES_ID = 'syntro-launcher-styles';
15
- function ensureLauncherStyles() {
16
- if (typeof document === 'undefined')
17
- return;
18
- if (document.getElementById(LAUNCHER_STYLES_ID))
19
- return;
20
- const style = document.createElement('style');
21
- style.id = LAUNCHER_STYLES_ID;
22
- style.textContent = `
23
- @keyframes syntro-launcher-pulse {
24
- 0%, 100% {
25
- box-shadow: 0 20px 45px ${slateGrey[0]}59, 0 0 0 0 ${brand[3]}66;
26
- }
27
- 50% {
28
- box-shadow: 0 20px 45px ${slateGrey[0]}59, 0 0 0 8px ${brand[3]}00;
29
- }
30
- }
31
- @keyframes syntro-launcher-glow {
32
- 0%, 100% {
33
- border-color: ${slateGrey[5]};
34
- }
35
- 50% {
36
- border-color: ${brand[4]}99;
37
- }
38
- }
39
- .syntro-launcher-animate {
40
- animation: syntro-launcher-pulse 2s ease-in-out infinite, syntro-launcher-glow 2s ease-in-out infinite;
41
- }
42
- .syntro-launcher-animate:hover {
43
- animation: none;
44
- }
45
- @keyframes syntro-badge-ping {
46
- 0% { transform: scale(1); opacity: 1; }
47
- 75%, 100% { transform: scale(2.2); opacity: 0; }
48
- }
49
- @keyframes syntro-badge-glow {
50
- 0%, 100% { box-shadow: 0 0 8px 2px ${withAlpha(brand[4], 0.3)}; }
51
- 50% { box-shadow: 0 0 20px 6px ${withAlpha(brand[4], 0.5)}; }
52
- }
53
- @keyframes syntro-badge-bounce {
54
- 0%, 100% { transform: translateY(0); }
55
- 25% { transform: translateY(-6px); }
56
- 50% { transform: translateY(-3px); }
57
- }
58
- .syntro-badge-ping { animation: syntro-badge-ping 1.5s cubic-bezier(0,0,0.2,1) infinite; }
59
- .syntro-badge-glow { animation: syntro-badge-glow 2s ease-in-out infinite; }
60
- .syntro-badge-bounce { animation: syntro-badge-bounce 2s ease-in-out infinite; }
61
- `;
62
- document.head.appendChild(style);
63
- }
64
- const DEFAULT_THEME = {
65
- position: 'right',
66
- baseWidth: 'clamp(320px, 16.666vw, 420px)',
67
- expandedWidth: '40vw',
68
- zIndex: 2147483600,
69
- backdropBlur: '18px',
70
- mode: 'dark',
71
- colorPrimary: brand[3],
72
- colorBackground: slateGrey[1],
73
- colorText: text.primary,
74
- colorTextSecondary: text.secondary,
75
- borderRadius: '12px',
76
- glassBackground: withAlpha(slateGrey[1], 0.6),
77
- glassBlur: 'blur(24px)',
78
- glassSaturate: 'saturate(1.2)',
79
- };
80
- export function ShadowCanvasOverlay({ isOpen, onToggle, telemetry, launcherLabel = 'Adaptives', launcherAnimate = false, launcherAnimationStyle: _launcherAnimationStyle = 'pulse', notificationCount, footerSlot, tiles, isLoading, error, canvasTitle, displayMode = 'standard', theme: themeOverride, }) {
81
- var _a, _b, _c, _d, _e, _f, _g;
82
- const [mounted, setMounted] = useState(false);
83
- const [launcherPos, setLauncherPos] = useState(null);
84
- const dragRef = useRef(null);
85
- // Get runtime for publishing events to the EventBus
86
- const runtime = useRuntime();
87
- // Notification toast system
88
- const { notifications, dismiss: dismissNotification } = useNotifications((_a = runtime === null || runtime === void 0 ? void 0 : runtime.events) !== null && _a !== void 0 ? _a : null, tiles);
89
- // Watch for notify-bearing actions crossing showWhen thresholds (runs even with drawer closed)
90
- useNotifyWatcher(runtime, tiles, runtime === null || runtime === void 0 ? void 0 : runtime.apps);
91
- const handleNotificationClick = useCallback((notif) => {
92
- // Publish telemetry event
93
- if (runtime) {
94
- runtime.events.publish(StandardEvents.NOTIFICATION_CLICKED, {
95
- notificationId: notif.id,
96
- tileId: notif.tileId,
97
- itemId: notif.itemId,
98
- });
99
- }
100
- // Open canvas if closed
101
- if (!isOpen) {
102
- onToggle();
103
- }
104
- // Publish deep link event for the target adaptive to handle
105
- if (runtime && notif.tileId) {
106
- runtime.events.publish(StandardEvents.NOTIFICATION_DEEP_LINK, {
107
- tileId: notif.tileId,
108
- itemId: notif.itemId,
109
- });
110
- }
111
- // Dismiss the clicked toast
112
- dismissNotification(notif.id);
113
- }, [runtime, isOpen, onToggle, dismissNotification]);
114
- const theme = { ...DEFAULT_THEME, ...themeOverride };
115
- // Track tile viewed events
116
- useEffect(() => {
117
- if (!isOpen)
118
- return;
119
- tiles.forEach((tile) => {
120
- // Telemetry tracking (PostHog)
121
- telemetry === null || telemetry === void 0 ? void 0 : telemetry.trackRectangleViewed(tile.id, 'overlay');
122
- // EventBus publishing
123
- if (runtime) {
124
- const event = CanvasEvents.tileViewed(tile.id, 'overlay');
125
- runtime.events.publish(event.name, event.props, event.source);
126
- }
127
- });
128
- }, [telemetry, runtime, isOpen, tiles]);
129
- useEffect(() => {
130
- setMounted(true);
131
- ensureLauncherStyles();
132
- }, []);
133
- const toggle = useCallback(() => {
134
- const next = !isOpen;
135
- // Telemetry tracking (PostHog)
136
- if (next) {
137
- telemetry === null || telemetry === void 0 ? void 0 : telemetry.trackCanvasOpened('overlay');
138
- }
139
- else {
140
- telemetry === null || telemetry === void 0 ? void 0 : telemetry.trackCanvasClosed('overlay');
141
- }
142
- // EventBus publishing
143
- if (runtime) {
144
- const event = next
145
- ? CanvasEvents.canvasOpened('overlay')
146
- : CanvasEvents.canvasClosed('overlay');
147
- runtime.events.publish(event.name, event.props, event.source);
148
- }
149
- onToggle();
150
- }, [isOpen, telemetry, runtime, onToggle]);
151
- // Drag-to-reposition: pointerdown starts tracking, pointermove updates position,
152
- // pointerup commits. If total movement < 5px, treat as a click instead.
153
- const onLauncherPointerDown = useCallback((e) => {
154
- const rect = e.currentTarget.getBoundingClientRect();
155
- dragRef.current = {
156
- startX: e.clientX,
157
- startY: e.clientY,
158
- startElX: rect.left,
159
- startElY: rect.top,
160
- dragged: false,
161
- };
162
- e.currentTarget.setPointerCapture(e.pointerId);
163
- }, []);
164
- const onLauncherPointerMove = useCallback((e) => {
165
- const drag = dragRef.current;
166
- if (!drag)
167
- return;
168
- const dx = e.clientX - drag.startX;
169
- const dy = e.clientY - drag.startY;
170
- if (Math.abs(dx) > 5 || Math.abs(dy) > 5) {
171
- drag.dragged = true;
172
- }
173
- if (drag.dragged) {
174
- setLauncherPos({ x: drag.startElX + dx, y: drag.startElY + dy });
175
- }
176
- }, []);
177
- const onLauncherPointerUp = useCallback((e) => {
178
- const drag = dragRef.current;
179
- dragRef.current = null;
180
- if (drag && !drag.dragged) {
181
- toggle();
182
- }
183
- }, [toggle]);
184
- const isFocused = displayMode === 'focused';
185
- const isRight = theme.position === 'right';
186
- const isLightMode = theme.mode === 'light';
187
- const containerStyle = {
188
- display: 'flex',
189
- flexDirection: 'column',
190
- width: isFocused ? theme.expandedWidth : theme.baseWidth,
191
- minWidth: '320px',
192
- height: '100%',
193
- maxHeight: '100%',
194
- pointerEvents: 'auto',
195
- opacity: isOpen ? 1 : 0,
196
- transition: isOpen
197
- ? 'transform 340ms cubic-bezier(0.16, 1, 0.3, 1), opacity 280ms ease-out'
198
- : 'transform 280ms cubic-bezier(0.4, 0, 0.2, 1), opacity 200ms ease-in',
199
- color: theme.colorText || text.primary,
200
- // Standard mode: no tint, just blur with a tight fade mask at the leading edge
201
- // Focused mode: full frosted glass
202
- background: isFocused ? ((_b = theme.glassBackground) !== null && _b !== void 0 ? _b : withAlpha(slateGrey[1], 0.6)) : 'transparent',
203
- backdropFilter: isFocused
204
- ? `${(_c = theme.glassBlur) !== null && _c !== void 0 ? _c : 'blur(24px)'} ${(_d = theme.glassSaturate) !== null && _d !== void 0 ? _d : 'saturate(1.2)'}`
205
- : 'blur(6px)',
206
- WebkitBackdropFilter: isFocused
207
- ? `${(_e = theme.glassBlur) !== null && _e !== void 0 ? _e : 'blur(24px)'} ${(_f = theme.glassSaturate) !== null && _f !== void 0 ? _f : 'saturate(1.2)'}`
208
- : 'blur(6px)',
209
- // Tight fade mask so blur cuts off sharply at the leading edge
210
- ...(!isFocused
211
- ? {
212
- maskImage: isRight
213
- ? 'linear-gradient(to right, transparent, black 6%)'
214
- : 'linear-gradient(to left, transparent, black 6%)',
215
- WebkitMaskImage: isRight
216
- ? 'linear-gradient(to right, transparent, black 6%)'
217
- : 'linear-gradient(to left, transparent, black 6%)',
218
- }
219
- : {}),
220
- border: 'none',
221
- borderRadius: '0',
222
- boxShadow: 'none',
223
- // Transform logic
224
- transform: isOpen ? 'translateX(0)' : isRight ? 'translateX(120%)' : 'translateX(-120%)',
225
- };
226
- const wrapperStyle = {
227
- position: 'absolute',
228
- inset: 0,
229
- display: 'flex',
230
- flexDirection: isRight ? 'row-reverse' : 'row',
231
- alignItems: 'stretch',
232
- pointerEvents: 'none',
233
- padding: '0',
234
- };
235
- const content = (_jsx("div", { "data-shadow-canvas-id": "overlay-root", style: {
236
- position: 'fixed',
237
- inset: 0,
238
- pointerEvents: isOpen ? 'auto' : 'none',
239
- zIndex: theme.zIndex,
240
- }, children: _jsxs("div", { style: wrapperStyle, children: [_jsxs("div", { style: containerStyle, children: [isFocused && canvasTitle && (_jsx("header", { style: { color: 'white', padding: '1.5rem 1.5rem 0' }, children: _jsx("p", { style: {
241
- margin: 0,
242
- fontSize: '0.7rem',
243
- textTransform: 'uppercase',
244
- letterSpacing: '0.5em',
245
- color: text.tertiary,
246
- }, children: canvasTitle }) })), _jsx("div", { style: { flex: 1, overflowY: 'auto', padding: isFocused ? '0' : '1rem' }, children: isLoading ? (_jsx("div", { style: { color: text.primary, padding: isFocused ? '1rem' : '0' }, children: "Loading..." })) : error ? (_jsxs("div", { style: { color: red[8], padding: isFocused ? '1rem' : '0' }, children: ["Failed to load: ", error] })) : isFocused ? (
247
- /* Focused Mode: Render first tile full size */
248
- tiles.length > 0 ? (_jsx(TileCard, { config: tiles[0], surface: "overlay", telemetry: telemetry, style: { width: '100%', height: '100%' } })) : null) : (
249
- /* Standard Mode: Stacked cards — widgets always visible */
250
- _jsx("div", { style: {
251
- display: 'flex',
252
- flexDirection: 'column',
253
- gap: '0.75rem',
254
- width: '100%',
255
- }, children: tiles.map((tile) => (_jsx(TileCard, { config: tile, surface: "overlay", telemetry: telemetry, style: { width: '100%' } }, tile.id))) })) }), footerSlot] }), _jsx("div", { onClick: toggle, style: {
256
- flex: '1 1 auto',
257
- pointerEvents: isOpen ? 'auto' : 'none',
258
- cursor: 'default',
259
- } })] }) }));
260
- if (!mounted)
261
- return null;
262
- return (_jsxs(_Fragment, { children: [createPortal(_jsxs("div", { "data-shadow-canvas-id": "overlay-launcher", style: {
263
- position: 'fixed',
264
- inset: 0,
265
- pointerEvents: 'none',
266
- zIndex: theme.zIndex + 47,
267
- }, children: [_jsx(NotificationToastStack, { notifications: notifications, onDismiss: dismissNotification, onClickNotification: handleNotificationClick, position: theme.position }), _jsxs("button", { "aria-label": "Toggle shadow canvas", className: launcherAnimate && !isOpen ? 'syntro-launcher-animate' : undefined, style: {
268
- position: 'fixed',
269
- ...(launcherPos
270
- ? { top: launcherPos.y, left: launcherPos.x }
271
- : {
272
- bottom: '2.5rem',
273
- right: isRight ? '2.5rem' : undefined,
274
- left: !isRight ? '2.5rem' : undefined,
275
- }),
276
- pointerEvents: 'auto',
277
- display: 'flex',
278
- alignItems: 'center',
279
- justifyContent: 'center',
280
- width: '56px',
281
- height: '56px',
282
- borderRadius: '9999px',
283
- color: button.primary.icon,
284
- boxShadow: `0 8px 32px ${withAlpha(slateGrey[0], 0.6)}`,
285
- transition: dragRef.current
286
- ? 'none'
287
- : 'transform 0.2s ease, opacity 0.3s ease, background-color 0.2s ease',
288
- outline: 'none',
289
- padding: 0,
290
- border: 'none',
291
- backgroundColor: button.primary.backgroundDefault,
292
- cursor: ((_g = dragRef.current) === null || _g === void 0 ? void 0 : _g.dragged) ? 'grabbing' : 'pointer',
293
- touchAction: 'none',
294
- }, onPointerDown: onLauncherPointerDown, onPointerMove: onLauncherPointerMove, onPointerUp: onLauncherPointerUp, onMouseEnter: (e) => {
295
- var _a;
296
- if (!((_a = dragRef.current) === null || _a === void 0 ? void 0 : _a.dragged)) {
297
- e.currentTarget.style.backgroundColor = button.primary.backgroundHover;
298
- }
299
- }, onMouseLeave: (e) => {
300
- var _a;
301
- if (!((_a = dragRef.current) === null || _a === void 0 ? void 0 : _a.dragged)) {
302
- e.currentTarget.style.backgroundColor = button.primary.backgroundDefault;
303
- }
304
- }, children: [_jsx("svg", { width: "24", height: "24", viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", strokeWidth: "2", strokeLinecap: "round", strokeLinejoin: "round", style: { transition: 'transform 200ms ease' }, children: isOpen ? (_jsxs(_Fragment, { children: [_jsx("path", { d: "M18 6L6 18" }), _jsx("path", { d: "M6 6l12 12" })] })) : (_jsxs(_Fragment, { children: [_jsx("path", { d: "M12 3l1.912 5.813a2 2 0 0 0 1.275 1.275L21 12l-5.813 1.912a2 2 0 0 0-1.275 1.275L12 21l-1.912-5.813a2 2 0 0 0-1.275-1.275L3 12l5.813-1.912a2 2 0 0 0 1.275-1.275L12 3Z" }), _jsx("path", { d: "M5 3v4" }), _jsx("path", { d: "M3 5h4" }), _jsx("path", { d: "M19 17v4" }), _jsx("path", { d: "M17 19h4" })] })) }), !isOpen && notifications.length > 0 && (_jsxs("div", { style: { position: 'absolute', top: -2, right: -2, pointerEvents: 'none' }, children: [_jsx("span", { className: "syntro-badge-ping", style: {
305
- position: 'absolute',
306
- inset: 0,
307
- borderRadius: '9999px',
308
- background: withAlpha(brand[4], 0.4),
309
- } }), _jsx("span", { className: "syntro-badge-glow", style: {
310
- position: 'absolute',
311
- inset: -4,
312
- borderRadius: '9999px',
313
- } }), _jsx("span", { className: "syntro-badge-bounce", style: {
314
- position: 'relative',
315
- display: 'flex',
316
- alignItems: 'center',
317
- justifyContent: 'center',
318
- width: 20,
319
- height: 20,
320
- borderRadius: '9999px',
321
- background: brand[4],
322
- color: base.white,
323
- fontSize: 11,
324
- fontWeight: 700,
325
- }, children: notifications.length > 99 ? '99+' : notifications.length })] }))] })] }), document.body), isOpen ? createPortal(content, document.body) : null] }));
326
- }
327
- //# sourceMappingURL=ShadowCanvasOverlay.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"ShadowCanvasOverlay.js","sourceRoot":"","sources":["../../src/components/ShadowCanvasOverlay.tsx"],"names":[],"mappings":"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"}
@@ -1,103 +0,0 @@
1
- import { jsxs as _jsxs, jsx as _jsx } from "react/jsx-runtime";
2
- import { brand, slateGrey, text, border } from '@syntro/design-system/tokens';
3
- import { useCallback, useEffect, useRef, useState } from 'react';
4
- import { useRuntime } from '../RuntimeProvider';
5
- import { withAlpha } from '../theme';
6
- // ---------------------------------------------------------------------------
7
- // WidgetMount - mounts a registered widget into a DOM container
8
- // ---------------------------------------------------------------------------
9
- function WidgetMount({ widgetId, props, }) {
10
- const runtime = useRuntime();
11
- const containerRef = useRef(null);
12
- const handleRef = useRef(null);
13
- const registry = runtime === null || runtime === void 0 ? void 0 : runtime.widgets;
14
- useEffect(() => {
15
- if (!containerRef.current || !registry)
16
- return;
17
- // If widget is not registered, bail out
18
- if (!registry.has(widgetId)) {
19
- console.warn(`[TileCard] Widget not found in registry: ${widgetId}`);
20
- return;
21
- }
22
- // Mount the widget
23
- const handle = registry.mount(widgetId, containerRef.current, props);
24
- handleRef.current = handle;
25
- return () => {
26
- handle.unmount();
27
- handleRef.current = null;
28
- };
29
- }, [registry, widgetId, props]);
30
- if (!registry || !registry.has(widgetId)) {
31
- return (_jsxs("div", { style: {
32
- padding: '0.75rem',
33
- fontSize: '0.8rem',
34
- color: text.tertiary,
35
- fontStyle: 'italic',
36
- }, children: ["Widget not available: ", widgetId] }));
37
- }
38
- return _jsx("div", { ref: containerRef, style: { width: '100%', minHeight: '40px' } });
39
- }
40
- export function TileCard({ config, surface: _surface, telemetry: _telemetry, style, }) {
41
- const { title, widget, props } = config;
42
- const [, setTick] = useState(0);
43
- // Force a re-render once the runtime becomes available so WidgetMount can
44
- // pick up the registry. This covers the case where TileCard renders before
45
- // the RuntimeProvider has propagated the runtime value.
46
- const runtime = useRuntime();
47
- useEffect(() => {
48
- if (runtime)
49
- setTick((t) => t + 1);
50
- }, [runtime]);
51
- const [hovered, setHovered] = useState(false);
52
- const onMouseEnter = useCallback(() => setHovered(true), []);
53
- const onMouseLeave = useCallback(() => setHovered(false), []);
54
- const cardStyle = {
55
- display: 'flex',
56
- flexDirection: 'column',
57
- borderRadius: '14px',
58
- background: hovered ? withAlpha(slateGrey[1], 0.7) : withAlpha(slateGrey[1], 0.6),
59
- backdropFilter: 'blur(16px) saturate(1.2)',
60
- WebkitBackdropFilter: 'blur(16px) saturate(1.2)',
61
- border: '1px solid rgba(255, 255, 255, 0.08)',
62
- boxShadow: '0 2px 12px rgba(0, 0, 0, 0.3)',
63
- color: text.primary,
64
- fontFamily: "-apple-system, BlinkMacSystemFont, 'SF Pro Display', sans-serif",
65
- overflow: 'hidden',
66
- cursor: 'default',
67
- transition: 'all 0.25s ease',
68
- transform: hovered ? 'scale(1.01)' : 'scale(1)',
69
- ...style,
70
- };
71
- const headerStyle = {
72
- display: 'flex',
73
- alignItems: 'center',
74
- gap: '0.75rem',
75
- padding: '0.875rem 1rem',
76
- minHeight: '72px',
77
- };
78
- const iconStyle = {
79
- width: '40px',
80
- height: '40px',
81
- borderRadius: '10px',
82
- background: `linear-gradient(135deg, ${brand[3]} 0%, ${brand[3]}cc 100%)`,
83
- display: 'flex',
84
- alignItems: 'center',
85
- justifyContent: 'center',
86
- fontSize: '1.25rem',
87
- flexShrink: 0,
88
- boxShadow: `0 2px 8px ${brand[3]}40`,
89
- };
90
- return (_jsxs("article", { "data-shadow-canvas-id": `tile-${config.id}`, style: cardStyle, onMouseEnter: onMouseEnter, onMouseLeave: onMouseLeave, children: [_jsxs("div", { style: headerStyle, children: [_jsx("div", { style: iconStyle, children: '+' }), _jsx("div", { style: { flex: 1, minWidth: 0 }, children: _jsx("h3", { style: {
91
- fontSize: '0.95rem',
92
- fontWeight: 600,
93
- color: text.primary,
94
- margin: '0.125rem 0 0',
95
- whiteSpace: 'nowrap',
96
- overflow: 'hidden',
97
- textOverflow: 'ellipsis',
98
- }, children: title !== null && title !== void 0 ? title : widget }) })] }), _jsx("div", { style: {
99
- padding: '0 1rem 1rem',
100
- borderTop: `1px solid ${border.secondary}`,
101
- }, children: _jsx("div", { style: { paddingTop: '0.875rem' }, children: _jsx(WidgetMount, { widgetId: widget, props: props }) }) })] }));
102
- }
103
- //# sourceMappingURL=TileCard.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"TileCard.js","sourceRoot":"","sources":["../../src/components/TileCard.tsx"],"names":[],"mappings":"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"}
@@ -1,50 +0,0 @@
1
- import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
- import { brand, slateGrey, border } from '@syntro/design-system/tokens';
3
- import { useEffect, useMemo, useState } from 'react';
4
- import { TileCard } from './TileCard';
5
- export function TileWheel({ tiles, intervalMs = 7000, telemetry }) {
6
- const [index, setIndex] = useState(0);
7
- const ordered = useMemo(() => [...tiles].sort((a, b) => { var _a, _b; return ((_a = a.priority) !== null && _a !== void 0 ? _a : 0) - ((_b = b.priority) !== null && _b !== void 0 ? _b : 0); }), [tiles]);
8
- useEffect(() => {
9
- telemetry === null || telemetry === void 0 ? void 0 : telemetry.trackCanvasOpened('wheel');
10
- }, [telemetry]);
11
- useEffect(() => {
12
- if (ordered.length <= 1)
13
- return;
14
- const id = setInterval(() => {
15
- setIndex((prev) => (prev + 1) % ordered.length);
16
- }, intervalMs);
17
- return () => clearInterval(id);
18
- }, [ordered, intervalMs]);
19
- useEffect(() => {
20
- const current = ordered[index];
21
- if (current) {
22
- telemetry === null || telemetry === void 0 ? void 0 : telemetry.trackRectangleViewed(current.id, 'wheel');
23
- }
24
- }, [index, ordered, telemetry]);
25
- if (!ordered.length)
26
- return null;
27
- return (_jsxs("div", { style: {
28
- position: 'relative',
29
- overflow: 'hidden',
30
- borderRadius: '1.5rem',
31
- border: `1px solid ${border.primary}`,
32
- background: slateGrey[1],
33
- padding: '1.5rem',
34
- boxShadow: '0 25px 50px -12px rgba(0, 0, 0, 0.25)',
35
- }, "data-shadow-canvas-id": "wheel", children: [_jsx("div", { style: {
36
- display: 'flex',
37
- transition: 'transform 700ms ease-out',
38
- transform: `translateX(-${index * 100}%)`,
39
- width: `${ordered.length * 100}%`,
40
- }, children: ordered.map((tile) => (_jsx("div", { style: { width: '100%', flexShrink: 0, padding: '0 1rem' }, children: _jsx(TileCard, { config: tile, surface: "wheel", telemetry: telemetry }) }, tile.id))) }), _jsx("div", { style: { marginTop: '1rem', display: 'flex', justifyContent: 'center', gap: '0.5rem' }, children: ordered.map((tile, idx) => (_jsx("button", { style: {
41
- height: '0.5rem',
42
- width: '1.5rem',
43
- borderRadius: '9999px',
44
- background: idx === index ? brand[3] : slateGrey[6],
45
- border: 'none',
46
- cursor: 'pointer',
47
- padding: 0,
48
- }, onClick: () => setIndex(idx) }, tile.id))) })] }));
49
- }
50
- //# sourceMappingURL=TileWheel.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"TileWheel.js","sourceRoot":"","sources":["../../src/components/TileWheel.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,KAAK,EAAE,SAAS,EAAE,MAAM,EAAE,MAAM,8BAA8B,CAAC;AACxE,OAAO,EAAE,SAAS,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC;AAKrD,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AAQtC,MAAM,UAAU,SAAS,CAAC,EAAE,KAAK,EAAE,UAAU,GAAG,IAAI,EAAE,SAAS,EAAkB;IAC/E,MAAM,CAAC,KAAK,EAAE,QAAQ,CAAC,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAC;IACtC,MAAM,OAAO,GAAG,OAAO,CACrB,GAAG,EAAE,CACH,CAAC,GAAG,KAAK,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,eAAC,OAAA,CAAC,MAAA,CAAC,CAAC,QAAQ,mCAAI,CAAC,CAAC,GAAG,CAAC,MAAA,CAAC,CAAC,QAAQ,mCAAI,CAAC,CAAC,CAAA,EAAA,CAAC,EAClE,CAAC,KAAK,CAAC,CACR,CAAC;IAEF,SAAS,CAAC,GAAG,EAAE;QACb,SAAS,aAAT,SAAS,uBAAT,SAAS,CAAE,iBAAiB,CAAC,OAAO,CAAC,CAAC;IACxC,CAAC,EAAE,CAAC,SAAS,CAAC,CAAC,CAAC;IAEhB,SAAS,CAAC,GAAG,EAAE;QACb,IAAI,OAAO,CAAC,MAAM,IAAI,CAAC;YAAE,OAAO;QAChC,MAAM,EAAE,GAAG,WAAW,CAAC,GAAG,EAAE;YAC1B,QAAQ,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,IAAI,GAAG,CAAC,CAAC,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;QAClD,CAAC,EAAE,UAAU,CAAC,CAAC;QACf,OAAO,GAAG,EAAE,CAAC,aAAa,CAAC,EAAE,CAAC,CAAC;IACjC,CAAC,EAAE,CAAC,OAAO,EAAE,UAAU,CAAC,CAAC,CAAC;IAE1B,SAAS,CAAC,GAAG,EAAE;QACb,MAAM,OAAO,GAAG,OAAO,CAAC,KAAK,CAAC,CAAC;QAC/B,IAAI,OAAO,EAAE,CAAC;YACZ,SAAS,aAAT,SAAS,uBAAT,SAAS,CAAE,oBAAoB,CAAC,OAAO,CAAC,EAAE,EAAE,OAAO,CAAC,CAAC;QACvD,CAAC;IACH,CAAC,EAAE,CAAC,KAAK,EAAE,OAAO,EAAE,SAAS,CAAC,CAAC,CAAC;IAEhC,IAAI,CAAC,OAAO,CAAC,MAAM;QAAE,OAAO,IAAI,CAAC;IAEjC,OAAO,CACL,eACE,KAAK,EAAE;YACL,QAAQ,EAAE,UAAU;YACpB,QAAQ,EAAE,QAAQ;YAClB,YAAY,EAAE,QAAQ;YACtB,MAAM,EAAE,aAAa,MAAM,CAAC,OAAO,EAAE;YACrC,UAAU,EAAE,SAAS,CAAC,CAAC,CAAC;YACxB,OAAO,EAAE,QAAQ;YACjB,SAAS,EAAE,uCAAuC;SACnD,2BACqB,OAAO,aAE7B,cACE,KAAK,EAAE;oBACL,OAAO,EAAE,MAAM;oBACf,UAAU,EAAE,0BAA0B;oBACtC,SAAS,EAAE,eAAe,KAAK,GAAG,GAAG,IAAI;oBACzC,KAAK,EAAE,GAAG,OAAO,CAAC,MAAM,GAAG,GAAG,GAAG;iBAClC,YAEA,OAAO,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CACrB,cAAmB,KAAK,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,UAAU,EAAE,CAAC,EAAE,OAAO,EAAE,QAAQ,EAAE,YAC3E,KAAC,QAAQ,IAAC,MAAM,EAAE,IAAI,EAAE,OAAO,EAAC,OAAO,EAAC,SAAS,EAAE,SAAS,GAAI,IADxD,IAAI,CAAC,EAAE,CAEX,CACP,CAAC,GACE,EACN,cAAK,KAAK,EAAE,EAAE,SAAS,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,cAAc,EAAE,QAAQ,EAAE,GAAG,EAAE,QAAQ,EAAE,YACxF,OAAO,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,GAAG,EAAE,EAAE,CAAC,CAC1B,iBAEE,KAAK,EAAE;wBACL,MAAM,EAAE,QAAQ;wBAChB,KAAK,EAAE,QAAQ;wBACf,YAAY,EAAE,QAAQ;wBACtB,UAAU,EAAE,GAAG,KAAK,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC;wBACnD,MAAM,EAAE,MAAM;wBACd,MAAM,EAAE,SAAS;wBACjB,OAAO,EAAE,CAAC;qBACX,EACD,OAAO,EAAE,GAAG,EAAE,CAAC,QAAQ,CAAC,GAAG,CAAC,IAVvB,IAAI,CAAC,EAAE,CAWZ,CACH,CAAC,GACE,IACF,CACP,CAAC;AACJ,CAAC"}