@qualified-salesforce/web 0.0.1-oidc-bootstrap

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 (560) hide show
  1. package/41842993ec71d6628e4949e9a22b146b.svg +3 -0
  2. package/7271f3433ed82fc7f56adcd9e30275f4.svg +17 -0
  3. package/LICENSE.txt +82 -0
  4. package/components/helpers/entriesStringValidations.js +69 -0
  5. package/components/helpers/languages.js +32 -0
  6. package/components/shared/assertUnreachable.js +5 -0
  7. package/components/shared/controls/imageCropperHelpers.js +43 -0
  8. package/components/shared/meetingLoadingProgressSpec.js +116 -0
  9. package/constants.generated.js +9883 -0
  10. package/css/widget/multimodal_v2/host.split-css.css +162 -0
  11. package/css/widget/multimodal_v2/index.split-css.panda.css +5240 -0
  12. package/css/widget/widget.split-css.css +100 -0
  13. package/fonts/inter/Inter-Black.woff +0 -0
  14. package/fonts/inter/Inter-Black.woff2 +0 -0
  15. package/fonts/inter/Inter-BlackItalic.woff +0 -0
  16. package/fonts/inter/Inter-BlackItalic.woff2 +0 -0
  17. package/fonts/inter/Inter-Bold.woff +0 -0
  18. package/fonts/inter/Inter-Bold.woff2 +0 -0
  19. package/fonts/inter/Inter-BoldItalic.woff +0 -0
  20. package/fonts/inter/Inter-BoldItalic.woff2 +0 -0
  21. package/fonts/inter/Inter-ExtraBold.woff +0 -0
  22. package/fonts/inter/Inter-ExtraBold.woff2 +0 -0
  23. package/fonts/inter/Inter-ExtraBoldItalic.woff +0 -0
  24. package/fonts/inter/Inter-ExtraBoldItalic.woff2 +0 -0
  25. package/fonts/inter/Inter-ExtraLight.woff +0 -0
  26. package/fonts/inter/Inter-ExtraLight.woff2 +0 -0
  27. package/fonts/inter/Inter-ExtraLightItalic.woff +0 -0
  28. package/fonts/inter/Inter-ExtraLightItalic.woff2 +0 -0
  29. package/fonts/inter/Inter-Italic.woff +0 -0
  30. package/fonts/inter/Inter-Italic.woff2 +0 -0
  31. package/fonts/inter/Inter-Light.woff +0 -0
  32. package/fonts/inter/Inter-Light.woff2 +0 -0
  33. package/fonts/inter/Inter-LightItalic.woff +0 -0
  34. package/fonts/inter/Inter-LightItalic.woff2 +0 -0
  35. package/fonts/inter/Inter-Medium.woff +0 -0
  36. package/fonts/inter/Inter-Medium.woff2 +0 -0
  37. package/fonts/inter/Inter-MediumItalic.woff +0 -0
  38. package/fonts/inter/Inter-MediumItalic.woff2 +0 -0
  39. package/fonts/inter/Inter-Regular.woff +0 -0
  40. package/fonts/inter/Inter-Regular.woff2 +0 -0
  41. package/fonts/inter/Inter-SemiBold.woff +0 -0
  42. package/fonts/inter/Inter-SemiBold.woff2 +0 -0
  43. package/fonts/inter/Inter-SemiBoldItalic.woff +0 -0
  44. package/fonts/inter/Inter-SemiBoldItalic.woff2 +0 -0
  45. package/fonts/inter/Inter-Thin.woff +0 -0
  46. package/fonts/inter/Inter-Thin.woff2 +0 -0
  47. package/fonts/inter/Inter-ThinItalic.woff +0 -0
  48. package/fonts/inter/Inter-ThinItalic.woff2 +0 -0
  49. package/fonts/inter/Inter-italic.var.woff2 +0 -0
  50. package/fonts/inter/Inter-roman.var.woff2 +0 -0
  51. package/images/close.js +63 -0
  52. package/images/logo.js +22 -0
  53. package/js/4101.js +19721 -0
  54. package/js/daily-esm.js +9948 -0
  55. package/js/date-fns.js +427 -0
  56. package/js/multimodal_v2.js +1653 -0
  57. package/js/runtime.js +109 -0
  58. package/media/Inter-Black.796be8d8bf.woff2 +0 -0
  59. package/media/Inter-Black.b254104c56.woff +0 -0
  60. package/media/Inter-BlackItalic.70306b0eae.woff +0 -0
  61. package/media/Inter-BlackItalic.752f1e0aaa.woff2 +0 -0
  62. package/media/Inter-Bold.579e0f95ca.woff2 +0 -0
  63. package/media/Inter-Bold.b1234477a5.woff +0 -0
  64. package/media/Inter-BoldItalic.3d0d804323.woff +0 -0
  65. package/media/Inter-BoldItalic.828a494e04.woff2 +0 -0
  66. package/media/Inter-ExtraBold.208a9e6c99.woff +0 -0
  67. package/media/Inter-ExtraBold.d65f028165.woff2 +0 -0
  68. package/media/Inter-ExtraBoldItalic.30429962ec.woff +0 -0
  69. package/media/Inter-ExtraBoldItalic.8c7eac5ce3.woff2 +0 -0
  70. package/media/Inter-ExtraLight.15c082a57d.woff +0 -0
  71. package/media/Inter-ExtraLight.6824177d1e.woff2 +0 -0
  72. package/media/Inter-ExtraLightItalic.05138dddf3.woff2 +0 -0
  73. package/media/Inter-ExtraLightItalic.3beee54f59.woff +0 -0
  74. package/media/Inter-Italic.9beab78452.woff +0 -0
  75. package/media/Inter-Italic.d593a8df79.woff2 +0 -0
  76. package/media/Inter-Light.27083fa637.woff2 +0 -0
  77. package/media/Inter-Light.91dfddd842.woff +0 -0
  78. package/media/Inter-LightItalic.0a783b89b3.woff2 +0 -0
  79. package/media/Inter-LightItalic.f8ccf2813f.woff +0 -0
  80. package/media/Inter-Medium.dc792b508e.woff2 +0 -0
  81. package/media/Inter-Medium.ec7dd2d9d8.woff +0 -0
  82. package/media/Inter-MediumItalic.17301e5b40.woff +0 -0
  83. package/media/Inter-MediumItalic.84d3493a9f.woff2 +0 -0
  84. package/media/Inter-Regular.f1f0c35b32.woff2 +0 -0
  85. package/media/Inter-Regular.f356e84aa0.woff +0 -0
  86. package/media/Inter-SemiBold.55027e4724.woff +0 -0
  87. package/media/Inter-SemiBold.fcb100c760.woff2 +0 -0
  88. package/media/Inter-SemiBoldItalic.ab9105ed3b.woff +0 -0
  89. package/media/Inter-SemiBoldItalic.d90f295d0c.woff2 +0 -0
  90. package/media/Inter-Thin.16325d9b0f.woff +0 -0
  91. package/media/Inter-Thin.dafaa44d99.woff2 +0 -0
  92. package/media/Inter-ThinItalic.4fc662b3cf.woff2 +0 -0
  93. package/media/Inter-ThinItalic.d3d8994788.woff +0 -0
  94. package/media/Inter-italic.var.958a0b9742.woff2 +0 -0
  95. package/media/Inter-roman.var.b2129c009c.woff2 +0 -0
  96. package/package.json +20 -0
  97. package/packs/widget/api/docking/docking_host.js +97 -0
  98. package/packs/widget/api/docking/index.js +294 -0
  99. package/packs/widget/api/docking/shared.js +164 -0
  100. package/packs/widget/api/docking/viewport_lock.js +488 -0
  101. package/packs/widget/api/docking/viewport_resize.js +1203 -0
  102. package/packs/widget/esm/fonts/Inter-Black.796be8d8bf.woff2 +0 -0
  103. package/packs/widget/esm/fonts/Inter-Black.b254104c56.woff +0 -0
  104. package/packs/widget/esm/fonts/Inter-BlackItalic.70306b0eae.woff +0 -0
  105. package/packs/widget/esm/fonts/Inter-BlackItalic.752f1e0aaa.woff2 +0 -0
  106. package/packs/widget/esm/fonts/Inter-Bold.579e0f95ca.woff2 +0 -0
  107. package/packs/widget/esm/fonts/Inter-Bold.b1234477a5.woff +0 -0
  108. package/packs/widget/esm/fonts/Inter-BoldItalic.3d0d804323.woff +0 -0
  109. package/packs/widget/esm/fonts/Inter-BoldItalic.828a494e04.woff2 +0 -0
  110. package/packs/widget/esm/fonts/Inter-ExtraBold.208a9e6c99.woff +0 -0
  111. package/packs/widget/esm/fonts/Inter-ExtraBold.d65f028165.woff2 +0 -0
  112. package/packs/widget/esm/fonts/Inter-ExtraBoldItalic.30429962ec.woff +0 -0
  113. package/packs/widget/esm/fonts/Inter-ExtraBoldItalic.8c7eac5ce3.woff2 +0 -0
  114. package/packs/widget/esm/fonts/Inter-ExtraLight.15c082a57d.woff +0 -0
  115. package/packs/widget/esm/fonts/Inter-ExtraLight.6824177d1e.woff2 +0 -0
  116. package/packs/widget/esm/fonts/Inter-ExtraLightItalic.05138dddf3.woff2 +0 -0
  117. package/packs/widget/esm/fonts/Inter-ExtraLightItalic.3beee54f59.woff +0 -0
  118. package/packs/widget/esm/fonts/Inter-Italic.9beab78452.woff +0 -0
  119. package/packs/widget/esm/fonts/Inter-Italic.d593a8df79.woff2 +0 -0
  120. package/packs/widget/esm/fonts/Inter-Light.27083fa637.woff2 +0 -0
  121. package/packs/widget/esm/fonts/Inter-Light.91dfddd842.woff +0 -0
  122. package/packs/widget/esm/fonts/Inter-LightItalic.0a783b89b3.woff2 +0 -0
  123. package/packs/widget/esm/fonts/Inter-LightItalic.f8ccf2813f.woff +0 -0
  124. package/packs/widget/esm/fonts/Inter-Medium.dc792b508e.woff2 +0 -0
  125. package/packs/widget/esm/fonts/Inter-Medium.ec7dd2d9d8.woff +0 -0
  126. package/packs/widget/esm/fonts/Inter-MediumItalic.17301e5b40.woff +0 -0
  127. package/packs/widget/esm/fonts/Inter-MediumItalic.84d3493a9f.woff2 +0 -0
  128. package/packs/widget/esm/fonts/Inter-Regular.f1f0c35b32.woff2 +0 -0
  129. package/packs/widget/esm/fonts/Inter-Regular.f356e84aa0.woff +0 -0
  130. package/packs/widget/esm/fonts/Inter-SemiBold.55027e4724.woff +0 -0
  131. package/packs/widget/esm/fonts/Inter-SemiBold.fcb100c760.woff2 +0 -0
  132. package/packs/widget/esm/fonts/Inter-SemiBoldItalic.ab9105ed3b.woff +0 -0
  133. package/packs/widget/esm/fonts/Inter-SemiBoldItalic.d90f295d0c.woff2 +0 -0
  134. package/packs/widget/esm/fonts/Inter-Thin.16325d9b0f.woff +0 -0
  135. package/packs/widget/esm/fonts/Inter-Thin.dafaa44d99.woff2 +0 -0
  136. package/packs/widget/esm/fonts/Inter-ThinItalic.4fc662b3cf.woff2 +0 -0
  137. package/packs/widget/esm/fonts/Inter-ThinItalic.d3d8994788.woff +0 -0
  138. package/packs/widget/esm/fonts/Inter-italic.var.958a0b9742.woff2 +0 -0
  139. package/packs/widget/esm/fonts/Inter-roman.var.b2129c009c.woff2 +0 -0
  140. package/packs/widget/esm/index.js +183 -0
  141. package/packs/widget/esm/qualified.css +5502 -0
  142. package/routes/app/offers/scripts/OfferMainScript.js +154 -0
  143. package/routes/app/offers/scripts/constants.js +71 -0
  144. package/routes/app/offers/scripts/main/ButtonManager.js +65 -0
  145. package/routes/app/offers/scripts/main/FormManager.js +325 -0
  146. package/routes/app/offers/scripts/main/MainContext.js +19 -0
  147. package/routes/app/offers/scripts/main/OfferManager.js +91 -0
  148. package/routes/app/offers/scripts/main/TriggerManager.js +125 -0
  149. package/routes/app/offers/scripts/rendering/ContentManager.js +53 -0
  150. package/routes/app/offers/scripts/rendering/LocationManager.js +83 -0
  151. package/routes/app/offers/scripts/rendering/RenderedOffer.js +188 -0
  152. package/routes/app/offers/scripts/rendering/Renderer.js +69 -0
  153. package/routes/app/offers/scripts/rendering/RenderingInitializer.js +62 -0
  154. package/routes/app/offers/scripts/rendering/animations/AnimationManager.js +31 -0
  155. package/routes/app/offers/scripts/rendering/animations/AnimationManagerFooter.js +81 -0
  156. package/routes/app/offers/scripts/rendering/animations/AnimationManagerHeader.js +81 -0
  157. package/routes/app/offers/scripts/rendering/animations/AnimationManagerModal.js +117 -0
  158. package/routes/app/offers/scripts/rendering/animations/AnimationManagerSidebar.js +75 -0
  159. package/routes/app/offers/scripts/rendering/animations/AnimationResult.js +43 -0
  160. package/routes/app/offers/scripts/rendering/animations/Animator.js +78 -0
  161. package/routes/app/offers/scripts/rendering/animations/BaseAnimationManager.js +25 -0
  162. package/routes/app/offers/scripts/rendering/lib/BaseComponent.js +106 -0
  163. package/routes/app/offers/scripts/rendering/lib/FormComponent.js +134 -0
  164. package/routes/app/offers/scripts/rendering/lib/OfferComponent.js +144 -0
  165. package/routes/app/offers/scripts/rendering/lib/ScrollbarWidth.js +27 -0
  166. package/routes/app/offers/scripts/rendering/lib/decorators.js +20 -0
  167. package/routes/app/offers/scripts/rendering/locations/CSSVarsManager.js +66 -0
  168. package/routes/app/offers/scripts/rendering/locations/ElementResizeObserver.js +49 -0
  169. package/routes/app/offers/scripts/rendering/locations/footer.js +53 -0
  170. package/routes/app/offers/scripts/rendering/locations/header/AsyncBatchProcessor.js +70 -0
  171. package/routes/app/offers/scripts/rendering/locations/header/CSSTransitionObserver.js +182 -0
  172. package/routes/app/offers/scripts/rendering/locations/header/ElementStyleChangeObserver.js +138 -0
  173. package/routes/app/offers/scripts/rendering/locations/header/ExternalStyleManager.js +110 -0
  174. package/routes/app/offers/scripts/rendering/locations/header/Header.js +353 -0
  175. package/routes/app/offers/scripts/rendering/locations/header/InlineStyleManager.js +105 -0
  176. package/routes/app/offers/scripts/rendering/locations/header/MatchingElementsObserver.js +107 -0
  177. package/routes/app/offers/scripts/rendering/locations/header/NewElementsObserver.js +129 -0
  178. package/routes/app/offers/scripts/rendering/locations/header/RuleWrapper.js +46 -0
  179. package/routes/app/offers/scripts/rendering/locations/header/SelectorObservable.js +23 -0
  180. package/routes/app/offers/scripts/rendering/locations/header/SelectorObserver.js +61 -0
  181. package/routes/app/offers/scripts/rendering/locations/header/ShiftedElementsManager.js +45 -0
  182. package/routes/app/offers/scripts/rendering/locations/header/StyleElementManager.js +37 -0
  183. package/routes/app/offers/scripts/rendering/locations/header/StyleElementWrapper.js +62 -0
  184. package/routes/app/offers/scripts/rendering/locations/header/StyleSelectorObserver/ObservedSelectorValue.js +45 -0
  185. package/routes/app/offers/scripts/rendering/locations/header/StyleSelectorObserver/ObservedSelectors.js +62 -0
  186. package/routes/app/offers/scripts/rendering/locations/header/StyleSelectorObserver/StyleSelectorObserver.js +294 -0
  187. package/routes/app/offers/scripts/rendering/locations/header/StyleSelectorObserver/constants.js +21 -0
  188. package/routes/app/offers/scripts/rendering/locations/header/WindowResizeObserver.js +43 -0
  189. package/routes/app/offers/scripts/rendering/locations/header/utils.js +25 -0
  190. package/routes/app/offers/scripts/rendering/locations/popup.js +66 -0
  191. package/routes/app/offers/scripts/rendering/locations/sidebar.js +21 -0
  192. package/routes/app/offers/scripts/rendering/variations/ButtonBanner.js +105 -0
  193. package/routes/app/offers/scripts/rendering/variations/ButtonModal.js +114 -0
  194. package/routes/app/offers/scripts/rendering/variations/FormBanner.js +214 -0
  195. package/routes/app/offers/scripts/rendering/variations/FormModal.js +325 -0
  196. package/routes/app/offers/scripts/rendering/variations/LinkBanner.js +105 -0
  197. package/routes/app/offers/scripts/rendering/variations/components/Body.js +29 -0
  198. package/routes/app/offers/scripts/rendering/variations/components/Button.js +128 -0
  199. package/routes/app/offers/scripts/rendering/variations/components/DismissButton.js +39 -0
  200. package/routes/app/offers/scripts/rendering/variations/components/ForegroundImageBanner.js +110 -0
  201. package/routes/app/offers/scripts/rendering/variations/components/ForegroundImageModal.js +128 -0
  202. package/routes/app/offers/scripts/rendering/variations/components/Headline.js +94 -0
  203. package/routes/app/offers/scripts/rendering/variations/components/MultiFieldForm.js +302 -0
  204. package/routes/app/offers/scripts/rendering/variations/components/Tooltip.js +74 -0
  205. package/routes/app/offers/scripts/rendering/variations/icons.js +15 -0
  206. package/routes/app/offers/scripts/utils.js +115 -0
  207. package/routes/app/offers/utils/HTMLUtils.js +10 -0
  208. package/routes/app/offers/utils/createTypeGuard.js +32 -0
  209. package/routes/app/offers/utils/promise-utils.js +22 -0
  210. package/routes/app/websiteBuilder/stores/storeHelpers.js +18 -0
  211. package/sounds/message-initial.mp3 +0 -0
  212. package/sounds/message-received.mp3 +0 -0
  213. package/sounds/message-sent.mp3 +0 -0
  214. package/src/arrays.js +15 -0
  215. package/src/audio.js +106 -0
  216. package/src/bounded-set.js +16 -0
  217. package/src/bounding_box_observer.js +129 -0
  218. package/src/decorators.js +29 -0
  219. package/src/dom.js +128 -0
  220. package/src/dom_roots.js +26 -0
  221. package/src/embedded_forms/EmbeddedForm.js +638 -0
  222. package/src/embedded_forms/QualifiedEmbeddedForm.js +51 -0
  223. package/src/embedded_forms/QualifiedFormField.js +137 -0
  224. package/src/embedded_forms/utils.js +17 -0
  225. package/src/graphql-types.js +1686 -0
  226. package/src/iframes.js +86 -0
  227. package/src/localstorage.js +43 -0
  228. package/src/mirror/Shipper.js +133 -0
  229. package/src/mirror/constants.generated.js +13 -0
  230. package/src/mirror/constants.js +238 -0
  231. package/src/mirror/shipper/ChangeQueue.js +155 -0
  232. package/src/mirror/shipper/DOMSerializer.js +392 -0
  233. package/src/mirror/shipper/observers.js +441 -0
  234. package/src/mirror/shipper/utils.js +98 -0
  235. package/src/mixins/disposable.js +125 -0
  236. package/src/mixins/injectable.js +37 -0
  237. package/src/personalizations/personalization-manager.js +110 -0
  238. package/src/personalizations/strategies/node-freezing-strategy.js +174 -0
  239. package/src/personalizations/utils.js +187 -0
  240. package/src/promises.js +107 -0
  241. package/src/proxy.js +144 -0
  242. package/src/qualified_root.js +35 -0
  243. package/src/query_params.js +55 -0
  244. package/src/shadow-dom-helper.js +63 -0
  245. package/src/singleton_host.js +39 -0
  246. package/src/smart_website/trigger.js +49 -0
  247. package/src/smart_website/utils.js +149 -0
  248. package/src/string.js +53 -0
  249. package/src/timezone.js +57 -0
  250. package/src/timing.js +49 -0
  251. package/src/type-utils.js +76 -0
  252. package/src/url-utils.js +102 -0
  253. package/src/url.js +50 -0
  254. package/src/utils.js +72 -0
  255. package/src/validation.js.js +29 -0
  256. package/src/validation_ts.js +6 -0
  257. package/vendor/actioncable/adapters.js +6 -0
  258. package/vendor/actioncable/connection.js +204 -0
  259. package/vendor/actioncable/connection_monitor.js +129 -0
  260. package/vendor/actioncable/consumer.js +91 -0
  261. package/vendor/actioncable/index.js +34 -0
  262. package/vendor/actioncable/internal.js +22 -0
  263. package/vendor/actioncable/logger.js +28 -0
  264. package/vendor/actioncable/subscription.js +93 -0
  265. package/vendor/actioncable/subscriptions.js +89 -0
  266. package/vendor/open-telemetry-idgenerator.js +43 -0
  267. package/widget/analytics/facebook_tracker.js +8 -0
  268. package/widget/analytics/google_analytics_tracker.js +83 -0
  269. package/widget/analytics/google_tag_manager_tracker.js +22 -0
  270. package/widget/analytics.js +58 -0
  271. package/widget/api_handler/api_handler.js +730 -0
  272. package/widget/api_handler/base_api_handler.js +249 -0
  273. package/widget/booker_intent_tracker.js +391 -0
  274. package/widget/booker_outcome_tracker.js +329 -0
  275. package/widget/capture_widget_exceptions.js +150 -0
  276. package/widget/channel.js +282 -0
  277. package/widget/composite_experience_adapter.js +101 -0
  278. package/widget/constants.generated.js +350 -0
  279. package/widget/constants.js +21 -0
  280. package/widget/container.js +193 -0
  281. package/widget/content_activity_emitter.js +36 -0
  282. package/widget/data360_visitor.js +67 -0
  283. package/widget/date_provider.js +11 -0
  284. package/widget/debug_mode_state.js +175 -0
  285. package/widget/dummy_module.js +9 -0
  286. package/widget/eloqua_visitor.js +17 -0
  287. package/widget/form_cta_booker_intent.js +246 -0
  288. package/widget/hubspot_visitor.js +39 -0
  289. package/widget/inline_meeting_booker_page.js +90 -0
  290. package/widget/local_state/abstract_local_state.js +38 -0
  291. package/widget/local_state/debug_state/abstract_debug_flow.js +29 -0
  292. package/widget/local_state/debug_state/custom_form_flow.js +14 -0
  293. package/widget/local_state/debug_state/hubspot_form_flow.js +19 -0
  294. package/widget/local_state/debug_state/hubspot_v4_form_flow.js +19 -0
  295. package/widget/local_state/debug_state/marketo_form_flow.js +20 -0
  296. package/widget/local_state/debug_state/pardot_form_flow.js +18 -0
  297. package/widget/local_state/debug_state.js +362 -0
  298. package/widget/local_state/trace_state.js +20 -0
  299. package/widget/location_provider.js +9 -0
  300. package/widget/marketo_visitor.js +39 -0
  301. package/widget/meetings/tracing/buttons_forms_triggering_tracer.js +124 -0
  302. package/widget/meetings/tracing/spans/button_spans.js +18 -0
  303. package/widget/meetings/tracing/spans/form_spans.js +11 -0
  304. package/widget/multimodal_v2/assets_preloader.js +97 -0
  305. package/widget/multimodal_v2/components/AppLayout.js +93 -0
  306. package/widget/multimodal_v2/components/CursorOverlay.js +93 -0
  307. package/widget/multimodal_v2/components/PointerRectOverlay.js +74 -0
  308. package/widget/multimodal_v2/components/app/Artifact.js +109 -0
  309. package/widget/multimodal_v2/components/app/Background.js +27 -0
  310. package/widget/multimodal_v2/components/app/CalendarLoadingContent.js +255 -0
  311. package/widget/multimodal_v2/components/app/Chat.js +39 -0
  312. package/widget/multimodal_v2/components/app/CookieConsentModal.js +149 -0
  313. package/widget/multimodal_v2/components/app/Foreground.js +48 -0
  314. package/widget/multimodal_v2/components/app/HiddenInput.js +41 -0
  315. package/widget/multimodal_v2/components/app/Input.js +72 -0
  316. package/widget/multimodal_v2/components/app/LightboxExperience.js +769 -0
  317. package/widget/multimodal_v2/components/app/LoadingOverlay.js +97 -0
  318. package/widget/multimodal_v2/components/app/Main.js +985 -0
  319. package/widget/multimodal_v2/components/app/MessengerButton.js +160 -0
  320. package/widget/multimodal_v2/components/app/Multimodal.js +17 -0
  321. package/widget/multimodal_v2/components/app/OverlayControls.js +79 -0
  322. package/widget/multimodal_v2/components/app/Preview.js +32 -0
  323. package/widget/multimodal_v2/components/app/PrivacyDisclosure.js +57 -0
  324. package/widget/multimodal_v2/components/app/RotateDeviceOverlay.js +70 -0
  325. package/widget/multimodal_v2/components/app/Toolbar.js +156 -0
  326. package/widget/multimodal_v2/components/chat/ChatComposer.js +129 -0
  327. package/widget/multimodal_v2/components/chat/ChatInputForm.js +398 -0
  328. package/widget/multimodal_v2/components/chat/ColdStartQuestions.js +354 -0
  329. package/widget/multimodal_v2/components/chat/ComposerErrorBanner.js +62 -0
  330. package/widget/multimodal_v2/components/chat/PostCallSurvey.js +359 -0
  331. package/widget/multimodal_v2/components/chat/preview/FieldRequestRenderer.js +41 -0
  332. package/widget/multimodal_v2/components/chat/preview/PreviewMessageRenderer.js +60 -0
  333. package/widget/multimodal_v2/components/chat/preview/SharedOfferRenderer.js +143 -0
  334. package/widget/multimodal_v2/components/chat/preview/TextRenderer.js +27 -0
  335. package/widget/multimodal_v2/components/chat/preview/TimelinePreview.js +254 -0
  336. package/widget/multimodal_v2/components/chat/timeline/CalendarEventOfferRenderer.js +103 -0
  337. package/widget/multimodal_v2/components/chat/timeline/CalendarEventPickRenderer.js +148 -0
  338. package/widget/multimodal_v2/components/chat/timeline/FieldEntryRenderer.js +84 -0
  339. package/widget/multimodal_v2/components/chat/timeline/FieldRequestRenderer.js +56 -0
  340. package/widget/multimodal_v2/components/chat/timeline/InlinePrivacyDisclosure.js +66 -0
  341. package/widget/multimodal_v2/components/chat/timeline/LinkPreviewCard.js +70 -0
  342. package/widget/multimodal_v2/components/chat/timeline/MessageEntry.js +88 -0
  343. package/widget/multimodal_v2/components/chat/timeline/PresentContentRenderer.js +30 -0
  344. package/widget/multimodal_v2/components/chat/timeline/PresentDeckRenderer.js +279 -0
  345. package/widget/multimodal_v2/components/chat/timeline/PresentVideoRenderer.js +131 -0
  346. package/widget/multimodal_v2/components/chat/timeline/ShareContentRenderer.js +59 -0
  347. package/widget/multimodal_v2/components/chat/timeline/SharedOfferRenderer.js +131 -0
  348. package/widget/multimodal_v2/components/chat/timeline/SystemRenderer.js +82 -0
  349. package/widget/multimodal_v2/components/chat/timeline/TextRenderer.js +66 -0
  350. package/widget/multimodal_v2/components/chat/timeline/Timeline.js +158 -0
  351. package/widget/multimodal_v2/components/debug/DebugMultimodalPanel.js +327 -0
  352. package/widget/multimodal_v2/components/decks/index.js +160 -0
  353. package/widget/multimodal_v2/components/field_request/BooleanField.js +77 -0
  354. package/widget/multimodal_v2/components/field_request/FieldComponents.js +69 -0
  355. package/widget/multimodal_v2/components/field_request/Form.js +87 -0
  356. package/widget/multimodal_v2/components/field_request/MultiPicklistField.js +240 -0
  357. package/widget/multimodal_v2/components/field_request/PicklistField.js +166 -0
  358. package/widget/multimodal_v2/components/field_request/SingleLineInputField.js +69 -0
  359. package/widget/multimodal_v2/components/field_request/TextField.js +37 -0
  360. package/widget/multimodal_v2/components/field_request/index.js +170 -0
  361. package/widget/multimodal_v2/components/helpers/AutoScroll.js +37 -0
  362. package/widget/multimodal_v2/components/helpers/ErrorBoundary.js +53 -0
  363. package/widget/multimodal_v2/components/helpers/FocusTrapDialog.js +26 -0
  364. package/widget/multimodal_v2/components/helpers/ImpressionTracker.js +94 -0
  365. package/widget/multimodal_v2/components/helpers/ListRenderer.js +37 -0
  366. package/widget/multimodal_v2/components/helpers/Localization.js +76 -0
  367. package/widget/multimodal_v2/components/helpers/Persisted.js +166 -0
  368. package/widget/multimodal_v2/components/helpers/RichText.js +358 -0
  369. package/widget/multimodal_v2/components/helpers/ScreenReaderHeading.js +17 -0
  370. package/widget/multimodal_v2/components/helpers/Thumbnail.js +190 -0
  371. package/widget/multimodal_v2/components/helpers/VisuallyHidden.js +41 -0
  372. package/widget/multimodal_v2/components/helpers/content_click_payloads.js +58 -0
  373. package/widget/multimodal_v2/components/helpers/useDraggable.js +103 -0
  374. package/widget/multimodal_v2/components/helpers/useTextOverflow.js +44 -0
  375. package/widget/multimodal_v2/components/lightbox_gather/index.js +741 -0
  376. package/widget/multimodal_v2/components/meetings/ArtifactEntryPoint.js +252 -0
  377. package/widget/multimodal_v2/components/meetings/MeetingAdditionalAttendees.js +325 -0
  378. package/widget/multimodal_v2/components/meetings/MeetingBookerEntry.js +100 -0
  379. package/widget/multimodal_v2/components/meetings/MeetingDetailsCard.js +99 -0
  380. package/widget/multimodal_v2/components/meetings/MeetingErrorBanner.js +62 -0
  381. package/widget/multimodal_v2/components/meetings/MeetingOfferEmailStep.js +239 -0
  382. package/widget/multimodal_v2/components/meetings/MeetingOfferFooter.js +104 -0
  383. package/widget/multimodal_v2/components/meetings/MeetingOfferSelectionStep.js +60 -0
  384. package/widget/multimodal_v2/components/meetings/MeetingRepHeader.js +222 -0
  385. package/widget/multimodal_v2/components/meetings/MeetingStepShell.js +92 -0
  386. package/widget/multimodal_v2/components/meetings/MeetingSummaryRail.js +515 -0
  387. package/widget/multimodal_v2/components/meetings/MeetingTimeSelector.js +603 -0
  388. package/widget/multimodal_v2/components/meetings/MonthDatePicker.js +422 -0
  389. package/widget/multimodal_v2/components/meetings/NavigationButtons.js +76 -0
  390. package/widget/multimodal_v2/components/meetings/TimeSlotHeader.js +357 -0
  391. package/widget/multimodal_v2/components/meetings/WeekViewHeader.js +20 -0
  392. package/widget/multimodal_v2/components/meetings/constants.js +7 -0
  393. package/widget/multimodal_v2/components/meetings/index.js +47 -0
  394. package/widget/multimodal_v2/components/meetings/utils.js +328 -0
  395. package/widget/multimodal_v2/components/multimodal/Audio.js +28 -0
  396. package/widget/multimodal_v2/components/multimodal/Controls.js +188 -0
  397. package/widget/multimodal_v2/components/multimodal/LiveVideo.js +63 -0
  398. package/widget/multimodal_v2/components/multimodal/MultiModalComponent.js +424 -0
  399. package/widget/multimodal_v2/components/multimodal/MultimodalAvatar.js +36 -0
  400. package/widget/multimodal_v2/components/multimodal/OrbAvatar.js +326 -0
  401. package/widget/multimodal_v2/components/multimodal/Status.js +220 -0
  402. package/widget/multimodal_v2/components/multimodal/VideoAvatar.js +24 -0
  403. package/widget/multimodal_v2/components/multimodal/VideoPreview.js +114 -0
  404. package/widget/multimodal_v2/components/multimodal/useAudioLevelMonitoring.js +96 -0
  405. package/widget/multimodal_v2/components/multimodal/useMultimodal.js +434 -0
  406. package/widget/multimodal_v2/components/presentations/index.js +372 -0
  407. package/widget/multimodal_v2/components/shared/Avatar.js +92 -0
  408. package/widget/multimodal_v2/components/shared/AvatarGroup.js +135 -0
  409. package/widget/multimodal_v2/components/shared/Button.js +245 -0
  410. package/widget/multimodal_v2/components/shared/ButtonGroup.js +133 -0
  411. package/widget/multimodal_v2/components/shared/ComposerForm.js +98 -0
  412. package/widget/multimodal_v2/components/shared/SpeakingIndicator.js +239 -0
  413. package/widget/multimodal_v2/components/shared/ThinkingAnimation.js +165 -0
  414. package/widget/multimodal_v2/components/shared/Tooltip.js +266 -0
  415. package/widget/multimodal_v2/components/shared/controls/Dropdown.js +79 -0
  416. package/widget/multimodal_v2/components/shared/controls/PillToggle.js +142 -0
  417. package/widget/multimodal_v2/components/shared/controls/TextArea.js +114 -0
  418. package/widget/multimodal_v2/components/shared/toolCallLabels.js +12 -0
  419. package/widget/multimodal_v2/components/slides/SlidesThumbnail.js +47 -0
  420. package/widget/multimodal_v2/components/slides/index.js +61 -0
  421. package/widget/multimodal_v2/constants.js +88 -0
  422. package/widget/multimodal_v2/host.split-css.js +2 -0
  423. package/widget/multimodal_v2/host.string.js +96 -0
  424. package/widget/multimodal_v2/images/icons.js +582 -0
  425. package/widget/multimodal_v2/images/posters/piper_low_res.jpg +0 -0
  426. package/widget/multimodal_v2/index.js +23 -0
  427. package/widget/multimodal_v2/index.panda.js +28 -0
  428. package/widget/multimodal_v2/index.split-css.panda.js +2 -0
  429. package/widget/multimodal_v2/inline_meeting_booker.js +182 -0
  430. package/widget/multimodal_v2/locales/cs.js +196 -0
  431. package/widget/multimodal_v2/locales/da.js +196 -0
  432. package/widget/multimodal_v2/locales/de.js +196 -0
  433. package/widget/multimodal_v2/locales/en.js +196 -0
  434. package/widget/multimodal_v2/locales/en_AU.js +197 -0
  435. package/widget/multimodal_v2/locales/en_GB.js +197 -0
  436. package/widget/multimodal_v2/locales/es.js +197 -0
  437. package/widget/multimodal_v2/locales/es_LA.js +196 -0
  438. package/widget/multimodal_v2/locales/fi.js +196 -0
  439. package/widget/multimodal_v2/locales/fr.js +197 -0
  440. package/widget/multimodal_v2/locales/fr_CA.js +196 -0
  441. package/widget/multimodal_v2/locales/id.js +196 -0
  442. package/widget/multimodal_v2/locales/index.js +48 -0
  443. package/widget/multimodal_v2/locales/it.js +196 -0
  444. package/widget/multimodal_v2/locales/ja.js +196 -0
  445. package/widget/multimodal_v2/locales/ko.js +196 -0
  446. package/widget/multimodal_v2/locales/nb.js +196 -0
  447. package/widget/multimodal_v2/locales/nl.js +196 -0
  448. package/widget/multimodal_v2/locales/pl.js +196 -0
  449. package/widget/multimodal_v2/locales/pt_BR.js +196 -0
  450. package/widget/multimodal_v2/locales/ru.js +196 -0
  451. package/widget/multimodal_v2/locales/sv.js +196 -0
  452. package/widget/multimodal_v2/locales/th.js +196 -0
  453. package/widget/multimodal_v2/locales/tr.js +196 -0
  454. package/widget/multimodal_v2/locales/vi.js +196 -0
  455. package/widget/multimodal_v2/locales/zh_CN.js +196 -0
  456. package/widget/multimodal_v2/locales/zh_TW.js +196 -0
  457. package/widget/multimodal_v2/multimodal.js +633 -0
  458. package/widget/multimodal_v2/multimodal_channel.js +195 -0
  459. package/widget/multimodal_v2/signals/active_conversation_signal.js +33 -0
  460. package/widget/multimodal_v2/signals/allowed_conversation_mode_signal.js +38 -0
  461. package/widget/multimodal_v2/signals/artifact_signal.js +22 -0
  462. package/widget/multimodal_v2/signals/layout_signal.js +98 -0
  463. package/widget/multimodal_v2/signals/messages_signal.js +207 -0
  464. package/widget/multimodal_v2/signals/ui_state_signal.js +128 -0
  465. package/widget/multimodal_v2/stable_bundle_src.js +44 -0
  466. package/widget/multimodal_v2/stores/ai_conversation_store.js +221 -0
  467. package/widget/multimodal_v2/stores/artifact_store.js +205 -0
  468. package/widget/multimodal_v2/stores/base_store.js +16 -0
  469. package/widget/multimodal_v2/stores/call_store.js +770 -0
  470. package/widget/multimodal_v2/stores/call_ui_adapter.js +225 -0
  471. package/widget/multimodal_v2/stores/debug_multimodal_scenario_store.js +471 -0
  472. package/widget/multimodal_v2/stores/decks_store.js +285 -0
  473. package/widget/multimodal_v2/stores/device_store.js +63 -0
  474. package/widget/multimodal_v2/stores/docking_store.js +62 -0
  475. package/widget/multimodal_v2/stores/field_request_store.js +326 -0
  476. package/widget/multimodal_v2/stores/meeting_store.js +477 -0
  477. package/widget/multimodal_v2/stores/participant_store.js +73 -0
  478. package/widget/multimodal_v2/stores/post_call_survey_store.js +160 -0
  479. package/widget/multimodal_v2/stores/pounce_tracking_store.js +163 -0
  480. package/widget/multimodal_v2/stores/pounce_tracking_store_v2.js +511 -0
  481. package/widget/multimodal_v2/stores/presentations_store.js +111 -0
  482. package/widget/multimodal_v2/stores/root_store.js +1919 -0
  483. package/widget/multimodal_v2/stores/screen_share_store.js +217 -0
  484. package/widget/multimodal_v2/stores/slides_store.js +21 -0
  485. package/widget/multimodal_v2/stores/translation_store.js +185 -0
  486. package/widget/multimodal_v2/stores/ui_store.js +496 -0
  487. package/widget/multimodal_v2/stores/waiting_store.js +159 -0
  488. package/widget/multimodal_v2/stores/website_navigation_store.js +767 -0
  489. package/widget/multimodal_v2/styled-system/css/conditions.js +34 -0
  490. package/widget/multimodal_v2/styled-system/css/css.js +48 -0
  491. package/widget/multimodal_v2/styled-system/css/cva.js +96 -0
  492. package/widget/multimodal_v2/styled-system/css/cx.js +13 -0
  493. package/widget/multimodal_v2/styled-system/css/index.js +15 -0
  494. package/widget/multimodal_v2/styled-system/css/sva.js +69 -0
  495. package/widget/multimodal_v2/styled-system/helpers.js +384 -0
  496. package/widget/multimodal_v2/styled-system/jsx/create-style-context.js +96 -0
  497. package/widget/multimodal_v2/styled-system/jsx/factory-helper.js +19 -0
  498. package/widget/multimodal_v2/styled-system/jsx/factory.js +111 -0
  499. package/widget/multimodal_v2/styled-system/jsx/index.js +12 -0
  500. package/widget/multimodal_v2/styled-system/jsx/is-valid-prop.js +22 -0
  501. package/widget/multimodal_v2/types.js +105 -0
  502. package/widget/multimodal_v2/utils/auto_scroller.js +157 -0
  503. package/widget/multimodal_v2/utils/flip_animation.js +124 -0
  504. package/widget/multimodal_v2/utils/focus_gate.js +237 -0
  505. package/widget/multimodal_v2/utils/locale.js +16 -0
  506. package/widget/multimodal_v2/utils/media_queries.js +30 -0
  507. package/widget/multimodal_v2/utils/multimodal_cache.js +19 -0
  508. package/widget/multimodal_v2/utils/mutation_effect.js +14 -0
  509. package/widget/multimodal_v2/utils/navigation_interceptor.js +205 -0
  510. package/widget/multimodal_v2/utils/navigation_strategies/dom_swap.js +393 -0
  511. package/widget/multimodal_v2/utils/navigation_strategies/index.js +12 -0
  512. package/widget/multimodal_v2/utils/navigation_strategies/lwr.js +61 -0
  513. package/widget/multimodal_v2/utils/navigation_strategies/navigation_utils.js +46 -0
  514. package/widget/multimodal_v2/utils/navigation_strategies/next_js.js +24 -0
  515. package/widget/multimodal_v2/utils/navigation_strategies/wouter_v3.js +15 -0
  516. package/widget/multimodal_v2/utils/objects_map.js +38 -0
  517. package/widget/multimodal_v2/utils/perceived_voice_turn_tracker.js +345 -0
  518. package/widget/multimodal_v2/utils/sanitize_html.js +132 -0
  519. package/widget/multimodal_v2/utils/signals.js +97 -0
  520. package/widget/multimodal_v2/utils/slide_zoom.js +114 -0
  521. package/widget/multimodal_v2/utils/theme_styles.js +137 -0
  522. package/widget/multimodal_v2/utils/url_observer.js +52 -0
  523. package/widget/multimodal_v2/utils/voice_onset_detector.js +127 -0
  524. package/widget/page_mirror.js +89 -0
  525. package/widget/page_view_activity_emitter.js +71 -0
  526. package/widget/pardot_visitor.js +137 -0
  527. package/widget/personalization_observer.js +96 -0
  528. package/widget/personalizations_config.js +160 -0
  529. package/widget/qualified_form/constants.js +23 -0
  530. package/widget/qualified_form/phone_utils.js +38 -0
  531. package/widget/qualified_form/qualified_form_action.js +91 -0
  532. package/widget/qualified_form/qualified_form_action_orchestrator.js +21 -0
  533. package/widget/qualified_form/qualified_form_api.js +471 -0
  534. package/widget/scroll_disabler.js +109 -0
  535. package/widget/server-logger.js +156 -0
  536. package/widget/smart_website_config.js +112 -0
  537. package/widget/telemetry/context.js +75 -0
  538. package/widget/telemetry/index.js +16 -0
  539. package/widget/telemetry/messenger_uptime.js +80 -0
  540. package/widget/telemetry/metrics.js +120 -0
  541. package/widget/telemetry/span.js +82 -0
  542. package/widget/telemetry/telemetry.js +180 -0
  543. package/widget/telemetry/tracer.js +41 -0
  544. package/widget/telemetry/tracing_store.js +310 -0
  545. package/widget/tracker.js +916 -0
  546. package/widget/utils/native_globals.js +129 -0
  547. package/widget/v1_adapter.js +50 -0
  548. package/widget/v2_adapter.js +368 -0
  549. package/widget/visitor/base_visitor_state.js +11 -0
  550. package/widget/visitor/cookie_visitor_state.js +128 -0
  551. package/widget/visitor/in_memory_visitor_state.js +29 -0
  552. package/widget/visitor/visitor_state.js +384 -0
  553. package/widget/visitor.js +356 -0
  554. package/widget/widget/linked_widget_v2.js +227 -0
  555. package/widget/widget/page_mirror_factory.js +22 -0
  556. package/widget/widget/sentry.js +130 -0
  557. package/widget/widget/widget.js +1698 -0
  558. package/widget/widget.split-css.js +2 -0
  559. package/widget/widget_bootstrap.js +97 -0
  560. package/widget/widget_object.js +73 -0
@@ -0,0 +1,285 @@
1
+ import { __webpack_require__ } from "../../../js/runtime.js";
2
+ import { signals_core_module_E, signals_core_module_d, signals_core_module_w } from "../../../js/multimodal_v2.js";
3
+ import "../../utils/native_globals.js";
4
+
5
+ /* provided dependency */ var decks_store_setTimeout = __webpack_require__(68034).pS;
6
+ /* provided dependency */ var decks_store_clearTimeout = __webpack_require__(68034).Kj;
7
+
8
+ // Floor for how long a slide stays up before auto-advancing. A slide whose
9
+ // talk-track generation failed has an estimated duration of 0; without a floor
10
+ // setTimeout(…, 0) would flash through the whole sequence instantly.
11
+ const MIN_SLIDE_DURATION_MS = 2000;
12
+ class DecksStore {
13
+ dispose() {
14
+ this.unsubscribeArtifact == null ? void 0 : this.unsubscribeArtifact.call(this);
15
+ this.unsubscribeArtifact = null;
16
+ this.disposeInterruptEffect == null ? void 0 : this.disposeInterruptEffect.call(this);
17
+ this.disposeInterruptEffect = null;
18
+ this.disposeTextInterruptEffect == null ? void 0 : this.disposeTextInterruptEffect.call(this);
19
+ this.disposeTextInterruptEffect = null;
20
+ this.clearAdvanceTimer();
21
+ }
22
+ // Show a single slide statically (visitor clicked it in the transcript record).
23
+ // Set the revisit target before the artifact overlay opens so the artifact
24
+ // subscription treats the open as a revisit rather than a fresh presentation.
25
+ prepareRevisit(messageId, slideIndex, pageTitle) {
26
+ this.clearAdvanceTimer();
27
+ this.stopped.value = true;
28
+ this.revisitMessageId = messageId;
29
+ // Set the title before the index signal, which triggers the currentDeck recompute.
30
+ this.revisitPageTitle = pageTitle;
31
+ this.revisitIndex.value = slideIndex;
32
+ }
33
+ isRevisiting(messageId) {
34
+ return this.revisitMessageId === messageId && this.revisitIndex.peek() != null;
35
+ }
36
+ // Fire-and-forget the current on-screen slide + the full sequence to the backend,
37
+ // which computes the remaining slides and seeds the agent's context. The early
38
+ // return in handleInterruption (guarding on `stopped`) makes this fire exactly
39
+ // once per guided run; a new deck message resets `stopped` so a later resume can
40
+ // be interrupted and re-report.
41
+ notifyInterruption(message) {
42
+ var _ref, _message_slides;
43
+ var _message_slides1;
44
+ const current = this.currentDeck.value;
45
+ if (!current) return;
46
+ if (!message.autoAdvance || ((_ref = (_message_slides1 = message.slides) == null ? void 0 : _message_slides1.length) != null ? _ref : 0) <= 1) return;
47
+ if (current.sequencePosition >= current.sequenceLength - 1) return;
48
+ this.rootStore.channel.perform("notify_deck_interrupted", {
49
+ deck_id: message.deckId,
50
+ current_slide_index: current.currentIndex,
51
+ sequence_slide_indexes: ((_message_slides = message.slides) != null ? _message_slides : []).map((slide)=>slide.slideIndex)
52
+ });
53
+ }
54
+ scheduleAdvance(slides) {
55
+ var _ref;
56
+ var _slides_, _slides_position;
57
+ if (this.stopped.value) return; // visitor interrupted — do not advance
58
+ const position = this.playbackIndex.value;
59
+ if (position >= slides.length - 1) return; // last slide — stop advancing
60
+ // Warm the browser cache for the next slide's image now, while the current one
61
+ // is on screen, so the auto-advance swap doesn't flash a blank/stale frame
62
+ // while the full-res PDF page downloads (narration keeps pace regardless).
63
+ this.preloadImage((_slides_ = slides[position + 1]) == null ? void 0 : _slides_.imageUrl);
64
+ // Each slide stays up for as long as its talk track takes to narrate, but
65
+ // never less than the floor (a failed talk track estimates to 0ms).
66
+ const durationMs = Math.max((_ref = (_slides_position = slides[position]) == null ? void 0 : _slides_position.estimatedDurationMs) != null ? _ref : 0, MIN_SLIDE_DURATION_MS);
67
+ this.advanceTimerId = decks_store_setTimeout(()=>{
68
+ this.advanceTimerId = null;
69
+ if (this.stopped.value) return;
70
+ this.playbackIndex.value = Math.min(this.playbackIndex.value + 1, slides.length - 1);
71
+ this.scheduleAdvance(slides);
72
+ }, durationMs);
73
+ }
74
+ clearRevisit() {
75
+ this.revisitMessageId = null;
76
+ this.revisitIndex.value = null;
77
+ this.revisitPageTitle = undefined;
78
+ }
79
+ clearAdvanceTimer() {
80
+ if (this.advanceTimerId !== null) {
81
+ decks_store_clearTimeout(this.advanceTimerId);
82
+ this.advanceTimerId = null;
83
+ }
84
+ }
85
+ // Kick off a background fetch of an image URL so it's cached before it's shown. Crossorigin
86
+ // like every other slide load, so this warm-up can't be the one that caches an ACAO-less
87
+ // response and poisons the entry the visible <img> needs.
88
+ preloadImage(url) {
89
+ if (!url || typeof Image === "undefined") return;
90
+ const img = new Image();
91
+ img.crossOrigin = "anonymous";
92
+ img.src = url;
93
+ }
94
+ constructor(rootStore){
95
+ var _ref;
96
+ var _latestVisitorText;
97
+ this.rootStore = rootStore;
98
+ // Derived state: the deck slide currently presented in the ARTIFACT overlay.
99
+ //
100
+ // A single share_deck tool call can present one slide or an auto-advancing
101
+ // sequence. The slide on screen is `slides[playbackIndex]`; for legacy/single
102
+ // messages the index comes straight from the message.
103
+ this.currentDeck = signals_core_module_w(()=>{
104
+ var _ref, _ref1, _ref2;
105
+ var _message_slideImageUrls;
106
+ const message = this.rootStore.artifact.message.value;
107
+ if (!message || message.type !== "present_deck") return null;
108
+ const slideImageUrls = ((_message_slideImageUrls = message.slideImageUrls) == null ? void 0 : _message_slideImageUrls.length) > 0 ? message.slideImageUrls : [
109
+ message.imageUrl
110
+ ];
111
+ // Revisit: the visitor clicked a slide in the transcript record. Show that
112
+ // single slide statically (no auto-advance, no progress dots).
113
+ const revisitIndex = this.revisitIndex.value;
114
+ if (revisitIndex != null) {
115
+ var _ref3, _this_revisitPageTitle;
116
+ var _message_slides_find, _message_slides;
117
+ return {
118
+ deckId: message.deckId,
119
+ slideImageUrls,
120
+ currentIndex: clampIndex(revisitIndex, slideImageUrls.length),
121
+ sequencePosition: 0,
122
+ sequenceLength: 1,
123
+ pageTitle: (_ref3 = (_this_revisitPageTitle = this.revisitPageTitle) != null ? _this_revisitPageTitle : (_message_slides = message.slides) == null ? void 0 : (_message_slides_find = _message_slides.find((slide)=>slide.slideIndex === revisitIndex)) == null ? void 0 : _message_slides_find.pageTitle) != null ? _ref3 : message.pageTitle,
124
+ deckTitle: message.deckTitle
125
+ };
126
+ }
127
+ const sequence = this.sequence.value;
128
+ const position = clampIndex(this.playbackIndex.value, sequence.length);
129
+ const slide = sequence[position];
130
+ const slideIndex = (_ref = (_ref1 = slide == null ? void 0 : slide.slideIndex) != null ? _ref1 : message.slideIndex) != null ? _ref : 0;
131
+ return {
132
+ deckId: message.deckId,
133
+ slideImageUrls,
134
+ currentIndex: clampIndex(slideIndex, slideImageUrls.length),
135
+ sequencePosition: position,
136
+ sequenceLength: sequence.length,
137
+ pageTitle: (_ref2 = slide == null ? void 0 : slide.pageTitle) != null ? _ref2 : message.pageTitle,
138
+ deckTitle: message.deckTitle
139
+ };
140
+ });
141
+ // Everything below is private
142
+ // 0-based position within the active sequence.
143
+ this.playbackIndex = signals_core_module_d(0);
144
+ // Set once the visitor interrupts; halts auto-advancing.
145
+ this.stopped = signals_core_module_d(false);
146
+ this.advanceTimerId = null;
147
+ this.lastHandledMessageId = null;
148
+ // Set when the visitor clicks a slide in the transcript record to revisit it.
149
+ // While set, `currentDeck` shows that single slide statically. Cleared when a
150
+ // new/different deck message becomes the active artifact.
151
+ this.revisitIndex = signals_core_module_d(null);
152
+ this.revisitMessageId = null;
153
+ // The clicked slide's title, passed through from the transcript record so a
154
+ // revisit shows the right title even when the active message (the last share)
155
+ // doesn't contain that slide. Cleared alongside the revisit state.
156
+ this.revisitPageTitle = undefined;
157
+ this.unsubscribeArtifact = null;
158
+ this.disposeInterruptEffect = null;
159
+ this.disposeTextInterruptEffect = null;
160
+ // Id of the most recent visitor text message we've already accounted for, so a
161
+ // text-mode interruption only fires for a genuinely new message.
162
+ this.lastVisitorTextMessageId = null;
163
+ // The ordered slides to present for the active deck message. Falls back to a
164
+ // synthesized one-item sequence for legacy messages without a `slides` array.
165
+ this.sequence = signals_core_module_w(()=>{
166
+ var _message_slideIndex;
167
+ var _message_slides;
168
+ const message = this.rootStore.artifact.message.value;
169
+ if (!message || message.type !== "present_deck") return [];
170
+ if ((_message_slides = message.slides) == null ? void 0 : _message_slides.length) return message.slides;
171
+ return [
172
+ {
173
+ pageId: message.pageId,
174
+ slideIndex: (_message_slideIndex = message.slideIndex) != null ? _message_slideIndex : 0,
175
+ imageUrl: message.imageUrl,
176
+ pageTitle: message.pageTitle
177
+ }
178
+ ];
179
+ });
180
+ this.handleArtifactMessageChange = (message)=>{
181
+ var _ref;
182
+ var _message_slides;
183
+ if (!message || message.type !== "present_deck") {
184
+ this.clearAdvanceTimer();
185
+ this.lastHandledMessageId = null;
186
+ this.playbackIndex.value = 0;
187
+ this.clearRevisit();
188
+ return;
189
+ }
190
+ // A revisit open (prepareRevisit set revisitMessageId first): show the
191
+ // requested slide statically — don't reset playback or auto-advance.
192
+ if (message.id === this.revisitMessageId) {
193
+ this.clearAdvanceTimer();
194
+ this.lastHandledMessageId = message.id;
195
+ this.stopped.value = true;
196
+ return;
197
+ }
198
+ // Skip if we've already handled this exact message. The subscription
199
+ // re-fires whenever the message object is replaced under the same id — an
200
+ // unrelated upstream signal re-resolving, or the server re-broadcasting the
201
+ // deck once its narration transcript is absorbed
202
+ // (Internal::PyperxController#absorb_deck_narration!). Return BEFORE
203
+ // touching the advance timer: clearing it here would freeze an in-flight
204
+ // presentation on the current slide with nothing left to reschedule it.
205
+ if (this.lastHandledMessageId === message.id) return;
206
+ this.clearAdvanceTimer();
207
+ // Any other deck message supersedes a revisit view.
208
+ this.clearRevisit();
209
+ this.lastHandledMessageId = message.id;
210
+ this.playbackIndex.value = 0;
211
+ this.stopped.value = false;
212
+ // Auto-advance through a multi-slide sequence so the agent can present it as
213
+ // one continuous flow without re-calling the tool for each slide.
214
+ if (message.autoAdvance && ((_ref = (_message_slides = message.slides) == null ? void 0 : _message_slides.length) != null ? _ref : 0) > 1) {
215
+ var _message_slides1;
216
+ this.scheduleAdvance((_message_slides1 = message.slides) != null ? _message_slides1 : []);
217
+ }
218
+ };
219
+ // The visitor started speaking over the presentation. Stop advancing; the current
220
+ // slide stays on screen, and tell the agent where the presentation stopped so it
221
+ // can address the visitor and later resume the remaining slides.
222
+ this.handleInterruption = ()=>{
223
+ if (this.stopped.value) return;
224
+ const message = this.rootStore.artifact.message.value;
225
+ if ((message == null ? void 0 : message.type) !== "present_deck") return;
226
+ // Report the interruption position BEFORE we stop, so the agent knows which
227
+ // slide is frozen on screen and which slides remain. Only worth reporting for a
228
+ // multi-slide auto-advancing sequence with unshown slides left — single-slide
229
+ // narration is agent-driven and the last slide has nothing to resume.
230
+ this.notifyInterruption(message);
231
+ this.clearAdvanceTimer();
232
+ this.stopped.value = true;
233
+ };
234
+ this.unsubscribeArtifact = this.rootStore.artifact.message.subscribe(this.handleArtifactMessageChange);
235
+ // Halt the presentation the moment the visitor starts speaking (interruption):
236
+ // stop auto-advancing slides. We don't resume — an interruption ends the guided run.
237
+ this.disposeInterruptEffect = signals_core_module_E(()=>{
238
+ var _ref;
239
+ var _this_rootStore_callStore_value_isVisitorSpeaking, _this_rootStore_callStore_value, _this_rootStore_callStore;
240
+ const speaking = (_ref = (_this_rootStore_callStore = this.rootStore.callStore) == null ? void 0 : (_this_rootStore_callStore_value = _this_rootStore_callStore.value) == null ? void 0 : (_this_rootStore_callStore_value_isVisitorSpeaking = _this_rootStore_callStore_value.isVisitorSpeaking) == null ? void 0 : _this_rootStore_callStore_value_isVisitorSpeaking.value) != null ? _ref : false;
241
+ if (speaking) this.handleInterruption();
242
+ });
243
+ // A visitor text message sent mid-presentation is a text-mode interruption and
244
+ // must have the same effect as speaking over the deck (barge-in): the backend
245
+ // already cancels the agent's turn to answer the text, so here we halt
246
+ // auto-advance and report the interruption position exactly as the voice path
247
+ // does. Seed lastVisitorTextMessageId from the existing history so we only
248
+ // react to a message sent AFTER this store is watching, not to backlog.
249
+ this.lastVisitorTextMessageId = (_ref = (_latestVisitorText = latestVisitorText(this.rootStore.messages.value)) == null ? void 0 : _latestVisitorText.id) != null ? _ref : null;
250
+ this.disposeTextInterruptEffect = signals_core_module_E(()=>{
251
+ const latest = latestVisitorText(this.rootStore.messages.value);
252
+ if (!latest || latest.id === this.lastVisitorTextMessageId) return;
253
+ this.lastVisitorTextMessageId = latest.id;
254
+ // In voice mode the visitor's spoken utterance is also persisted as a
255
+ // visitor text message, out-of-band and often AFTER the deck message it
256
+ // requested ("let's continue the presentation") — with createdAt
257
+ // backdated to when it was spoken. A message older than the deck on
258
+ // screen is that late-arriving request, not an interruption OF the
259
+ // presentation, and must not halt it. peek(): the deck message is
260
+ // read as a point-in-time fact about the new text message, not a
261
+ // subscription — this effect must only re-run when the messages change.
262
+ const deckMessage = this.rootStore.artifact.message.peek();
263
+ if ((deckMessage == null ? void 0 : deckMessage.type) === "present_deck" && new Date(latest.createdAt).getTime() < new Date(deckMessage.createdAt).getTime()) {
264
+ return;
265
+ }
266
+ this.handleInterruption();
267
+ });
268
+ }
269
+ }
270
+
271
+ function clampIndex(index, length) {
272
+ if (length <= 0) return 0;
273
+ return Math.min(Math.max(index, 0), length - 1);
274
+ }
275
+ // The most recent visitor-authored text message in the list, or null if there
276
+ // is none. Used to detect a text-mode interruption of a live deck.
277
+ function latestVisitorText(messages) {
278
+ for(let i = messages.length - 1; i >= 0; i--){
279
+ const message = messages[i];
280
+ if (message.type === "text" && message.isOwn) return message;
281
+ }
282
+ return null;
283
+ }
284
+
285
+ export default DecksStore;
@@ -0,0 +1,63 @@
1
+ import { signals_core_module_r, signals_core_module_d } from "../../../js/multimodal_v2.js";
2
+
3
+
4
+ class DeviceStore {
5
+ dispose() {
6
+ this.microphoneDevices.value = [];
7
+ this.selectedMicrophoneDevice.value = {};
8
+ this.isMicMuted.value = false;
9
+ }
10
+ // eslint-disable-next-line no-useless-constructor
11
+ constructor(callStore){
12
+ this.callStore = callStore;
13
+ this.microphoneDevices = signals_core_module_d([]);
14
+ this.selectedMicrophoneDevice = signals_core_module_d({});
15
+ this.isMicMuted = signals_core_module_d(false);
16
+ this.toggleMic = async ()=>{
17
+ const call = this.callStore.dailyCall.value;
18
+ if (!call) return;
19
+ const newMicState = !this.callStore.deviceStore.isMicMuted.value;
20
+ call.setLocalAudio(!newMicState);
21
+ this.callStore.deviceStore.isMicMuted.value = newMicState;
22
+ };
23
+ this.updateSelectedMic = async (updatedMicId)=>{
24
+ const call = this.callStore.dailyCall.value;
25
+ if (!call) return;
26
+ try {
27
+ await call.setInputDevicesAsync({
28
+ audioDeviceId: updatedMicId,
29
+ videoDeviceId: null
30
+ });
31
+ const updatedSelectedMic = this.microphoneDevices.value.find((mic)=>mic.deviceId === updatedMicId);
32
+ signals_core_module_r(()=>{
33
+ this.selectedMicrophoneDevice.value = updatedSelectedMic || {};
34
+ });
35
+ } catch (error) {
36
+ // eslint-disable-next-line no-console
37
+ console.error("Failed to update selected microphone:", error);
38
+ }
39
+ };
40
+ this.updateAvailableDevices = async ()=>{
41
+ const call = this.callStore.dailyCall.value;
42
+ if (!call) return;
43
+ const { devices } = await call.enumerateDevices();
44
+ // filter out empty devices that have not been granted yet
45
+ const availableDevices = devices.filter((device)=>device.deviceId !== "");
46
+ const availableMicrophones = availableDevices.filter((device)=>device.kind === "audioinput");
47
+ const selectedDevices = await call.getInputDevices();
48
+ const selectedMicrophone = selectedDevices.mic;
49
+ signals_core_module_r(()=>{
50
+ this.microphoneDevices.value = availableMicrophones;
51
+ this.selectedMicrophoneDevice.value = selectedMicrophone;
52
+ });
53
+ };
54
+ this.syncMediaState = ()=>{
55
+ const call = this.callStore.dailyCall.value;
56
+ if (!call) return;
57
+ this.isMicMuted.value = !call.localAudio();
58
+ };
59
+ }
60
+ }
61
+
62
+
63
+ export default DeviceStore;
@@ -0,0 +1,62 @@
1
+ import { BaseStore } from "./base_store.js";
2
+
3
+
4
+ class DockingStore extends BaseStore {
5
+ constructor(...args){
6
+ var _ref;
7
+ var _window_qualified;
8
+ super(...args), this.api = (_ref = (_window_qualified = window.qualified) == null ? void 0 : _window_qualified.docking) != null ? _ref : null, this.apiPromise = null, // (e.g. teardown ran while enable() was still awaiting ensureApi()).
9
+ this.generation = 0, this.enable = async (param)=>{
10
+ let { confirm = ()=>true } = param === void 0 ? {} : param;
11
+ const gen = this.generation;
12
+ const api = await this.ensureApi();
13
+ if (gen !== this.generation) return;
14
+ if (confirm()) {
15
+ api.enable();
16
+ this.persistDockedState(true);
17
+ }
18
+ }, this.disable = ()=>{
19
+ this.generation++;
20
+ if (!this.api) return;
21
+ this.api.disable();
22
+ this.persistDockedState(false);
23
+ }, this.reEvaluate = ()=>{
24
+ var _this_api;
25
+ (_this_api = this.api) == null ? void 0 : _this_api.reEvaluate();
26
+ }, this.isDocked = ()=>{
27
+ var _ref;
28
+ var _this_api;
29
+ return (_ref = (_this_api = this.api) == null ? void 0 : _this_api.isDocked()) != null ? _ref : false;
30
+ }, this.cancelAbort = ()=>{
31
+ var _this_api;
32
+ (_this_api = this.api) == null ? void 0 : _this_api.cancelAbort();
33
+ }, this.persistDockedState = (isDocked)=>{
34
+ this.visitor.isDocked = isDocked;
35
+ }, this.ensureApi = ()=>{
36
+ if (this.apiPromise) return this.apiPromise;
37
+ const ensureApiInitialized = ()=>{
38
+ var _window_qualified;
39
+ this.api = (_window_qualified = window.qualified) == null ? void 0 : _window_qualified.docking;
40
+ // Calling init multiple times is safe
41
+ this.api.init();
42
+ this.cancelAbort();
43
+ return this.api;
44
+ };
45
+ this.apiPromise = new Promise((resolve)=>{
46
+ var _window_qualified;
47
+ if ((_window_qualified = window.qualified) == null ? void 0 : _window_qualified.docking) {
48
+ resolve(ensureApiInitialized());
49
+ return;
50
+ }
51
+ import("../../../packs/widget/api/docking/index.js").then((param)=>{
52
+ let { registerDockingAPI } = param;
53
+ registerDockingAPI();
54
+ resolve(ensureApiInitialized());
55
+ });
56
+ });
57
+ return this.apiPromise;
58
+ };
59
+ }
60
+ }
61
+
62
+ export { DockingStore };