@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,356 @@
1
+ import { default as WidgetObject } from "./widget_object.js";
2
+ import { default as DebugModeState } from "./debug_mode_state.js";
3
+ import { default as cookie_visitor_state } from "./visitor/cookie_visitor_state.js";
4
+ import { VisitorState } from "./visitor/visitor_state.js";
5
+ import { esm_browser_v4, _extends, isMobile } from "../js/4101.js";
6
+ import { default as in_memory_visitor_state } from "./visitor/in_memory_visitor_state.js";
7
+ import { DEPRECATED_ATTRIBUTE_KEYS } from "./visitor/base_visitor_state.js";
8
+
9
+
10
+
11
+
12
+
13
+
14
+
15
+
16
+
17
+
18
+ // Any visitor state attrs that are listed here will be passed to the Messenger
19
+ // during initialization and persisted back to cookie whenever they change in
20
+ // the Messenger
21
+ const messengerStateAttrs = [
22
+ "messengerExpanded",
23
+ "promptDismissed",
24
+ "conversationId",
25
+ "forceHideConversationId"
26
+ ];
27
+ const STATE_COOKIE_PREFIX = "__q_state_", OLD_STATE_COOKIE = "__q_state", FORM_EXPERIENCE_TTL = 60000;
28
+ class Visitor extends WidgetObject {
29
+ static getUuid(token, useVisitorStateV2) {
30
+ if (useVisitorStateV2 === void 0) useVisitorStateV2 = false;
31
+ if (useVisitorStateV2) {
32
+ const oldState = new VisitorState(null, OLD_STATE_COOKIE, true);
33
+ try {
34
+ const oldUuid = oldState.get("uuid");
35
+ if (oldUuid) return oldUuid;
36
+ const currentState = new VisitorState(null, STATE_COOKIE_PREFIX + token, true);
37
+ try {
38
+ return currentState.get("uuid");
39
+ } finally{
40
+ currentState.dispose();
41
+ }
42
+ } finally{
43
+ oldState.dispose();
44
+ }
45
+ }
46
+ return new cookie_visitor_state(null, OLD_STATE_COOKIE).get("uuid") || new cookie_visitor_state(null, STATE_COOKIE_PREFIX + token).get("uuid");
47
+ }
48
+ async reportCookieError(message) {
49
+ const extra = {
50
+ domain: document.domain,
51
+ href: document.location.href
52
+ };
53
+ fetch(this.widget.resourceUrl("visitor_events"), {
54
+ method: "POST",
55
+ headers: {
56
+ "Content-Type": "application/json; charset=utf-8"
57
+ },
58
+ body: JSON.stringify({
59
+ type: "both",
60
+ event: message,
61
+ extra
62
+ })
63
+ });
64
+ }
65
+ get uuid() {
66
+ const uuid = this.state.get("uuid");
67
+ if (uuid) {
68
+ return uuid;
69
+ } else {
70
+ this.reportCookieError("Invalid visitor state, unable to read uuid.");
71
+ throw new Error("Qualified: invalid visitor state");
72
+ }
73
+ }
74
+ get botApiName() {
75
+ return this.state.get("botApiName");
76
+ }
77
+ get formData() {
78
+ return this.state.get("formData");
79
+ }
80
+ get hasFormData() {
81
+ return this.formData !== undefined;
82
+ }
83
+ get smartFormData() {
84
+ return this.state.get("smartFormData");
85
+ }
86
+ get messengerState() {
87
+ return messengerStateAttrs.reduce((state, attr)=>{
88
+ if (!this.isAttributeEnabled(attr)) {
89
+ return state;
90
+ }
91
+ return _extends({}, state, {
92
+ [attr]: this.state.get(attr)
93
+ });
94
+ }, {});
95
+ }
96
+ set messengerExpanded(expanded) {
97
+ this.state.update({
98
+ messengerExpanded: expanded
99
+ });
100
+ }
101
+ set promptDismissed(dismissed) {
102
+ this.state.update({
103
+ promptDismissed: dismissed != null ? dismissed : true
104
+ });
105
+ }
106
+ set conversationId(conversationId) {
107
+ this.state.update({
108
+ conversationId
109
+ });
110
+ }
111
+ set forceHideConversationId(forceHideConversationId) {
112
+ this.state.update({
113
+ forceHideConversationId
114
+ });
115
+ }
116
+ set isDocked(isDocked) {
117
+ this.state.update({
118
+ d: isDocked ? 1 : 0
119
+ });
120
+ }
121
+ get hasPendingMultimodalRedirectDismissal() {
122
+ const expiry = this.state.get("mrd");
123
+ if (typeof expiry !== "number") return false;
124
+ if (expiry < this.widget.dateProvider.new().getTime()) {
125
+ this.clearMultimodalRedirectDismissal();
126
+ return false;
127
+ }
128
+ return true;
129
+ }
130
+ setMultimodalRedirectDismissalWithExpiry(ttl) {
131
+ if (ttl === void 0) ttl = 30000;
132
+ this.state.update({
133
+ mrd: this.widget.dateProvider.new().getTime() + ttl
134
+ });
135
+ }
136
+ clearMultimodalRedirectDismissal() {
137
+ this.state.update({
138
+ mrd: undefined
139
+ });
140
+ }
141
+ setFormData(fieldValues) {
142
+ if (DebugModeState.isInDebugMode()) {
143
+ if (!fieldValues.email) {
144
+ DebugModeState.setApiMessage("saveFormData", "Error", "“saveFormData” was called but no email value was provided.");
145
+ } else {
146
+ DebugModeState.setApiMessage("saveFormData", "Success", "“saveFormData” was called successfully.");
147
+ }
148
+ }
149
+ this.state.update({
150
+ formData: {
151
+ fieldValues
152
+ }
153
+ });
154
+ }
155
+ setSmartFormData(fieldValues, botApiName) {
156
+ var _this_widget_multimodal_rootStore, _this_widget_multimodal;
157
+ if (DebugModeState.isInDebugMode()) {
158
+ if (!fieldValues.email) {
159
+ DebugModeState.setApiMessage("saveSmartFormData", "Error", "“saveSmartFormData” was called but no email value was provided.");
160
+ } else {
161
+ DebugModeState.setApiMessage("saveSmartFormData", "Success", "“saveSmartFormData” was called successfully for " + botApiName + " with the following field values: " + JSON.stringify(fieldValues) + ".");
162
+ }
163
+ }
164
+ (_this_widget_multimodal = this.widget.multimodal) == null ? void 0 : (_this_widget_multimodal_rootStore = _this_widget_multimodal.rootStore) == null ? void 0 : _this_widget_multimodal_rootStore.uiStore.primeRedirectDismissedUIState();
165
+ this.state.update({
166
+ smartFormData: {
167
+ fieldValues,
168
+ botApiName
169
+ }
170
+ });
171
+ }
172
+ clearFormData() {
173
+ this.state.update({
174
+ formData: undefined
175
+ });
176
+ }
177
+ clearSmartFormData() {
178
+ this.state.update({
179
+ smartFormData: undefined
180
+ });
181
+ }
182
+ get lastValidRebroadcastTime() {
183
+ return this.state.get("lastValidRebroadcastTime");
184
+ }
185
+ setLastValidRebroadcastTime(lastValidRebroadcastTime) {
186
+ this.state.update({
187
+ lastValidRebroadcastTime
188
+ });
189
+ }
190
+ get qualifiedRedirected() {
191
+ return this.state.get("qualifiedRedirected");
192
+ }
193
+ setQualifiedRedirect(qualifiedRedirected) {
194
+ this.state.update({
195
+ qualifiedRedirected
196
+ });
197
+ const shouldCloseOnMobileRedirect = this.config.hasWebsiteCloseChatOnMobileRedirect;
198
+ if (!qualifiedRedirected || !shouldCloseOnMobileRedirect) return;
199
+ // We use forceHideConversationId to force prompts into a hidden state and the messenger into a collapsed state.
200
+ // This only runs on mobile in order to prevent the messenger from taking up the whole screen after redirecting.
201
+ // We set forceHideConversationId to the conversationId so that this doesn't impact future conversations.
202
+ const conversationId = this.state.get("conversationId");
203
+ if (conversationId && isMobile().any) {
204
+ this.state.update({
205
+ forceHideConversationId: conversationId
206
+ });
207
+ }
208
+ }
209
+ get formExperienceData() {
210
+ const data = this.state.get("formExperienceData");
211
+ if (!data) return null;
212
+ if (data.expiry && this.widget.dateProvider.new().getTime() > data.expiry) {
213
+ this.clearFormExperienceData();
214
+ return null;
215
+ }
216
+ return data;
217
+ }
218
+ setFormExperienceData(formExperienceData) {
219
+ this.state.update({
220
+ formExperienceData
221
+ });
222
+ }
223
+ setFormExperienceDataWithExpiry(formExperienceData, ttl) {
224
+ if (ttl === void 0) ttl = FORM_EXPERIENCE_TTL;
225
+ var _this_widget_multimodal_rootStore, _this_widget_multimodal;
226
+ (_this_widget_multimodal = this.widget.multimodal) == null ? void 0 : (_this_widget_multimodal_rootStore = _this_widget_multimodal.rootStore) == null ? void 0 : _this_widget_multimodal_rootStore.uiStore.primeRedirectDismissedUIState();
227
+ this.setFormExperienceData(_extends({}, formExperienceData, {
228
+ expiry: this.widget.dateProvider.new().getTime() + ttl
229
+ }));
230
+ this.widget.debugState.logEvent("visitor:setFormExperienceDataWithExpiry", "success", {});
231
+ }
232
+ clearFormExperienceData() {
233
+ this.state.update({
234
+ formExperienceData: undefined
235
+ });
236
+ }
237
+ updatePersistence(isPersisted) {
238
+ if (this.state instanceof VisitorState) {
239
+ this.state.isPersisted = isPersisted;
240
+ return;
241
+ }
242
+ if (this.state.isPersisted === isPersisted) {
243
+ return;
244
+ }
245
+ const oldState = this.state;
246
+ if (!oldState.isPersisted && isPersisted) {
247
+ // InMemoryVisitorState -> CookieVisitorState
248
+ this.state = new cookie_visitor_state(this.widget, STATE_COOKIE_PREFIX + this.config.token);
249
+ } else {
250
+ // CookieVisitorState -> InMemoryVisitorState
251
+ this.state = new in_memory_visitor_state();
252
+ }
253
+ this.state.update(oldState.attributes);
254
+ oldState.destroy();
255
+ }
256
+ reset() {
257
+ this.state.destroy();
258
+ }
259
+ refreshPersistedState() {
260
+ var _this_config_featureFlags;
261
+ if (!this.state.isPersisted) return;
262
+ const persistedState = ((_this_config_featureFlags = this.config.featureFlags) == null ? void 0 : _this_config_featureFlags.websiteVisitorStateV2) ? this.createState() : this.createOldState();
263
+ this.state.update(persistedState.attributes);
264
+ if (persistedState instanceof VisitorState) {
265
+ persistedState.dispose();
266
+ }
267
+ }
268
+ resourceUrl(name, params) {
269
+ return this.widget.resourceUrl(name, _extends({
270
+ uuid: this.uuid
271
+ }, params));
272
+ }
273
+ clearDeprecatedAttrs() {
274
+ // Extremely defensive error handling, because this is a critical visitor path
275
+ try {
276
+ DEPRECATED_ATTRIBUTE_KEYS.forEach((attr)=>{
277
+ if (this.state.isPersisted && this.state.has(attr)) {
278
+ this.state.delete(attr);
279
+ }
280
+ });
281
+ } catch (clearError) {
282
+ try {
283
+ this.widget.serverLog({
284
+ message: "Failed to clear deprecated attrs: " + clearError,
285
+ type: "sentry"
286
+ });
287
+ } catch (logError) {
288
+ console.warn("Failed to call serverLog in clearDeprecatedAttrs:", logError); // eslint-disable-line no-console
289
+ }
290
+ }
291
+ }
292
+ createOldState() {
293
+ let state;
294
+ if (this.widget.isMeetingLink || // TODO: remove once meeting link has its own pack
295
+ this.config.requiresCookieConsent && !this.config.hasCookieConsent) {
296
+ state = new in_memory_visitor_state();
297
+ } else {
298
+ state = new cookie_visitor_state(this.widget, STATE_COOKIE_PREFIX + this.config.token);
299
+ // Convert old, non-token-suffixed cookie and remove it
300
+ if (!state.isInitialized) {
301
+ const oldState = new cookie_visitor_state(this.widget, OLD_STATE_COOKIE);
302
+ if (oldState.isInitialized) {
303
+ state.update(oldState.attributes);
304
+ oldState.destroy();
305
+ }
306
+ }
307
+ }
308
+ if (!state.isInitialized) {
309
+ state.update({
310
+ uuid: esm_browser_v4()
311
+ });
312
+ }
313
+ return state;
314
+ }
315
+ createState() {
316
+ const cookieName = STATE_COOKIE_PREFIX + this.config.token;
317
+ const shouldPersist = !this.widget.isMeetingLink && !(this.config.requiresCookieConsent && !this.config.hasCookieConsent);
318
+ // Create state with appropriate persistence setting
319
+ const state = new VisitorState(this.widget, cookieName, shouldPersist);
320
+ // If the new state isn't initialized, try migrating from old cookie format
321
+ if (!state.isInitialized && shouldPersist) {
322
+ const oldState = new VisitorState(this.widget, OLD_STATE_COOKIE, true);
323
+ if (oldState.isInitialized) {
324
+ state.copyFrom(oldState);
325
+ oldState.destroy();
326
+ }
327
+ }
328
+ // Ensure state has UUID if not initialized
329
+ if (!state.isInitialized) {
330
+ state.update({
331
+ uuid: esm_browser_v4()
332
+ });
333
+ }
334
+ return state;
335
+ }
336
+ isAttributeEnabled(attr) {
337
+ switch(attr){
338
+ case "forceHideConversationId":
339
+ if (!isMobile().any) return false;
340
+ return !!this.config.hasWebsiteCloseChatOnMobileRedirect || this.state.has("forceHideConversationId");
341
+ default:
342
+ return true;
343
+ }
344
+ }
345
+ constructor(injectionProps){
346
+ var _this_config_featureFlags;
347
+ super(injectionProps);
348
+ this.state = ((_this_config_featureFlags = this.config.featureFlags) == null ? void 0 : _this_config_featureFlags.websiteVisitorStateV2) ? this.createState() : this.createOldState();
349
+ this.clearDeprecatedAttrs();
350
+ }
351
+ }
352
+ /* export default */ const visitor = (Visitor);
353
+
354
+ var visitor_messengerStateAttrs = /* unused export */ undefined;
355
+ export { visitor_messengerStateAttrs as messengerStateAttrs };
356
+ export default visitor;
@@ -0,0 +1,227 @@
1
+ import { __webpack_require__ } from "../../js/runtime.js";
2
+ import { OfferMainScript } from "../../routes/app/offers/scripts/OfferMainScript.js";
3
+ import { default as analytics } from "../analytics.js";
4
+ import { AssetsPreloader } from "../multimodal_v2/assets_preloader.js";
5
+ import { V2Adapter } from "../v2_adapter.js";
6
+ import { getSentryClient } from "./sentry.js";
7
+ import { default as PageMirrorFactory } from "./page_mirror_factory.js";
8
+ import { default as Widget } from "./widget.js";
9
+
10
+
11
+
12
+
13
+
14
+
15
+
16
+
17
+ class LinkedWidgetV2 extends Widget {
18
+ static createContainer() {
19
+ const container = super.createContainer();
20
+ /* eslint-disable no-undef */ __webpack_require__.p = "" + this.environmentConfig.cdnHost + "/packs/";
21
+ // Register analytics, offer script, and page mirror factory eagerly for non-code-split builds
22
+ container.register1("analytics", analytics);
23
+ container.register1("offerScript", OfferMainScript);
24
+ container.register1("pageMirrorFactory", PageMirrorFactory);
25
+ // NOTE: IframeManager is deliberately NOT registered.
26
+ // NOTE: IframeApiHandler is deliberately NOT registered (no iframe context).
27
+ return container;
28
+ }
29
+ // Override to use container.load() (dynamic import path) instead of
30
+ // container.resolve() (requires pre-registration). Matches ChunkedWidget pattern.
31
+ async loadMultimodalV2() {
32
+ return this.container.load("multimodal_v2");
33
+ }
34
+ createExperienceAdapter() {
35
+ const onFirstApMessage = ()=>this.tracker.startBehaviorTracker();
36
+ return new V2Adapter(onFirstApMessage);
37
+ }
38
+ // Override to skip feature flag checks — v2 bundle always loads multimodal_v2.
39
+ async initializeMultimodalV2() {
40
+ try {
41
+ if (this.isDisposed) {
42
+ this.multimodalReady.resolve(null);
43
+ return;
44
+ }
45
+ AssetsPreloader.preload(this.config);
46
+ this._multimodal = await this.loadMultimodalV2();
47
+ this._multimodal.init();
48
+ this.multimodalReady.resolve(this._multimodal);
49
+ } catch (error) {
50
+ var _getSentryClient;
51
+ (_getSentryClient = getSentryClient({
52
+ project: "multimodal"
53
+ })) == null ? void 0 : _getSentryClient.captureException(error);
54
+ this.multimodalReady.reject(error);
55
+ }
56
+ }
57
+ // v2 has no iframe handshake — widget is ready as soon as init() resolves.
58
+ // Base Widget.initialized accesses this.iframeManager which throws on v2.
59
+ get initialized() {
60
+ return Promise.resolve();
61
+ }
62
+ // recordPerformanceEntries uses channel.pingPong to request asset timing from the
63
+ // IframeManager. V2 has no iframe, so the pingPong never receives a response and
64
+ // Widget.init() deadlocks. Override to resolve immediately.
65
+ recordPerformanceEntries(_iframeSpan) {
66
+ return Promise.resolve();
67
+ }
68
+ // no-op: V2 bundle has no iframe; PageMirror DOM capture runs independently via WebSocket
69
+ startShipper() {}
70
+ // no-op: V2 bundle has no iframe
71
+ stopShipper() {}
72
+ // no-op: V2 bundle has no iframe
73
+ requestKeyframe() {}
74
+ async init(teamToken, config) {
75
+ if (config === void 0) config = {};
76
+ var _this_multimodal;
77
+ await super.init(teamToken, config);
78
+ const rootStore = (_this_multimodal = this.multimodal) == null ? void 0 : _this_multimodal.rootStore;
79
+ if (rootStore) {
80
+ this.experienceAdapter.bindRootStore(rootStore);
81
+ this.flushPendingElementConversationEvents();
82
+ // Pause/resume offer rendering when meeting booker opens/closes.
83
+ // V1 does this in iframe_manager.ts:273-275 via postmate setFullScreen event.
84
+ // V2 has no iframe events; use elementConversationOffer signal instead.
85
+ // Truthy (non-null CalendarEventOfferMessage) = meeting booker opened → pause.
86
+ // Falsy (null) = meeting booker closed → resume.
87
+ let meetingBookerWasActive = !!rootStore.elementConversationOffer.peek();
88
+ const disposeElementConversationOfferSubscription = rootStore.elementConversationOffer.subscribe((offer)=>{
89
+ const isActive = offer !== null;
90
+ if (isActive && !meetingBookerWasActive) {
91
+ var _this_offerScript;
92
+ meetingBookerWasActive = true;
93
+ (_this_offerScript = this.offerScript) == null ? void 0 : _this_offerScript.pause();
94
+ } else if (!isActive && meetingBookerWasActive) {
95
+ var _this_offerScript1;
96
+ meetingBookerWasActive = false;
97
+ (_this_offerScript1 = this.offerScript) == null ? void 0 : _this_offerScript1.resume();
98
+ }
99
+ });
100
+ this.callOnDispose(disposeElementConversationOfferSubscription);
101
+ this.bindInlineSpinnerTeardown(rootStore);
102
+ }
103
+ }
104
+ bindInlineSpinnerTeardown(rootStore) {
105
+ let previousLoadingUuid = rootStore.loadingUuid.peek();
106
+ const dispose = rootStore.loadingUuid.subscribe((uuid)=>{
107
+ if (previousLoadingUuid && !uuid) {
108
+ this.channel.emit("endInlineLoading", previousLoadingUuid);
109
+ }
110
+ previousLoadingUuid = uuid;
111
+ });
112
+ this.callOnDispose(dispose);
113
+ }
114
+ syncInit(config) {
115
+ super.syncInit(config);
116
+ this.bindElementConversationListeners();
117
+ }
118
+ bindElementConversationListeners() {
119
+ if (this.elementConversationListenersBound) return;
120
+ this.elementConversationListenersBound = true;
121
+ // Register listener unconditionally — rootStore looked up lazily when events arrive.
122
+ this.channel.on("received", (eventName, payload)=>{
123
+ this.handleReceivedElementConversationEvent(eventName, payload);
124
+ });
125
+ // In V2 there is no qualified_form_api to bridge elementMessage into the full-screen
126
+ // element conversation UI. Listen directly: when a gather/offer/text message arrives
127
+ // during the loading phase, wrap it as a minimal conversation and hand off to the store.
128
+ this.channel.on("elementMessage", (payload)=>{
129
+ this.handleElementMessageEvent(payload);
130
+ });
131
+ }
132
+ handleReceivedElementConversationEvent(eventName, payload) {
133
+ var _this_multimodal;
134
+ const rs = (_this_multimodal = this.multimodal) == null ? void 0 : _this_multimodal.rootStore;
135
+ if (!rs) {
136
+ if (eventName === "startElementConversationLoadingState" || eventName === "initElementConversation" || eventName === "initQualifiedFormElementConversation") {
137
+ this.pendingElementConversationEvents.push({
138
+ kind: "received",
139
+ eventName,
140
+ payload
141
+ });
142
+ }
143
+ return;
144
+ }
145
+ if (eventName === "startElementConversationLoadingState") {
146
+ rs.showElementConversationLoadingState();
147
+ } else if (eventName === "initElementConversation") {
148
+ const uuid = rs.loadingUuid.peek();
149
+ if (uuid) this.channel.emit("endInlineLoading", uuid);
150
+ rs.handleInitElementConversation(payload);
151
+ } else if (eventName === "initQualifiedFormElementConversation") {
152
+ const uuid = rs.loadingUuid.peek();
153
+ if (uuid) this.channel.emit("endInlineLoading", uuid);
154
+ rs.handleInitQualifiedFormElementConversation(payload);
155
+ }
156
+ }
157
+ handleElementMessageEvent(payload) {
158
+ var _this_multimodal;
159
+ const rs = (_this_multimodal = this.multimodal) == null ? void 0 : _this_multimodal.rootStore;
160
+ const isQualifiedFormGather = (payload == null ? void 0 : payload.type) === "lightbox_gather" && this.isQualifiedFormElementMessage(payload);
161
+ if (!rs) {
162
+ if ((payload == null ? void 0 : payload.type) === "lightbox_gather" && !isQualifiedFormGather || (payload == null ? void 0 : payload.type) === "calendar_event_offer" || (payload == null ? void 0 : payload.type) === "text") {
163
+ this.pendingElementConversationEvents.push({
164
+ kind: "elementMessage",
165
+ payload
166
+ });
167
+ }
168
+ return;
169
+ }
170
+ if ((payload == null ? void 0 : payload.type) === "lightbox_gather" && !isQualifiedFormGather && rs.elementConversationLoading.value) {
171
+ var _payload_conversationId;
172
+ const uuid = rs.loadingUuid.peek();
173
+ if (uuid) this.channel.emit("endInlineLoading", uuid);
174
+ rs.handleInitElementConversation({
175
+ id: (_payload_conversationId = payload.conversationId) != null ? _payload_conversationId : payload.conversation_id,
176
+ messages: [
177
+ payload
178
+ ]
179
+ });
180
+ } else if ((payload == null ? void 0 : payload.type) === "calendar_event_offer" && rs.elementConversationLoading.value) {
181
+ const uuid = rs.loadingUuid.peek();
182
+ if (uuid) this.channel.emit("endInlineLoading", uuid);
183
+ rs.handleInitQualifiedFormElementConversation({
184
+ messages: [
185
+ payload
186
+ ]
187
+ });
188
+ } else if ((payload == null ? void 0 : payload.type) === "text" && rs.elementConversationLoading.value) {
189
+ const uuid = rs.loadingUuid.peek();
190
+ if (uuid) this.channel.emit("endInlineLoading", uuid);
191
+ rs.handleElementConversationTextMessage(payload);
192
+ }
193
+ }
194
+ isQualifiedFormElementMessage(payload) {
195
+ var _ref;
196
+ var _payload_conversation_script, _payload_conversation, _payload_conversation_script1, _payload_conversation1;
197
+ const botType = (_ref = payload == null ? void 0 : (_payload_conversation = payload.conversation) == null ? void 0 : (_payload_conversation_script = _payload_conversation.script) == null ? void 0 : _payload_conversation_script.botType) != null ? _ref : payload == null ? void 0 : (_payload_conversation1 = payload.conversation) == null ? void 0 : (_payload_conversation_script1 = _payload_conversation1.script) == null ? void 0 : _payload_conversation_script1.bot_type;
198
+ return botType === "form";
199
+ }
200
+ flushPendingElementConversationEvents() {
201
+ if (this.pendingElementConversationEvents.length === 0) return;
202
+ const pendingEvents = this.pendingElementConversationEvents;
203
+ this.pendingElementConversationEvents = [];
204
+ pendingEvents.forEach((event)=>{
205
+ if (event.kind === "received") {
206
+ this.handleReceivedElementConversationEvent(event.eventName, event.payload);
207
+ } else {
208
+ this.handleElementMessageEvent(event.payload);
209
+ }
210
+ });
211
+ }
212
+ constructor(...args){
213
+ super(...args), this.elementConversationListenersBound = false, this.pendingElementConversationEvents = [];
214
+ }
215
+ }
216
+ // V2-only widget: no IframeManager, no Postmate, no cross-frame code.
217
+ // Used by: qualified-stable.js (customer-hosted) and v2 CDN bundle.
218
+ //
219
+ // Key differences from LinkedWidget:
220
+ // - Does NOT register IframeManager (tree-shaking removes it from bundle)
221
+ // - Does NOT register IframeApiHandler (no iframe context)
222
+ // - createExperienceAdapter() returns V2Adapter instead of V1Adapter
223
+ // - initializeMultimodalV2() always loads v2 (skips feature flag checks)
224
+ // - init() calls bindRootStore() after super.init() resolves
225
+
226
+
227
+ export default LinkedWidgetV2;
@@ -0,0 +1,22 @@
1
+ import { default as PageMirror } from "../page_mirror.js";
2
+ import { default as WidgetObject } from "../widget_object.js";
3
+
4
+
5
+
6
+ class PageMirrorFactory extends WidgetObject {
7
+ create() {
8
+ if (!this.widget.config.isComplete || this.widget.config.disableLiveView) {
9
+ return this.container.resolve("emptyPageMirror");
10
+ } else {
11
+ return this.container.resolve("pageMirror", this.widget.config.denylistedVisitorStreamDomains || []);
12
+ }
13
+ }
14
+ constructor(injectionProps){
15
+ super(injectionProps);
16
+ injectionProps.container.set("emptyPageMirror", {});
17
+ injectionProps.container.register1("pageMirror", PageMirror);
18
+ }
19
+ }
20
+
21
+
22
+ export default PageMirrorFactory;