@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,730 @@
1
+ import { __webpack_require__ } from "../../js/runtime.js";
2
+ import { createForm } from "../../src/embedded_forms/QualifiedEmbeddedForm.js";
3
+ import { tryGet } from "../../src/utils.js";
4
+ import { default as DebugModeState } from "../debug_mode_state.js";
5
+ import { armFormCtaBookerIntent } from "../form_cta_booker_intent.js";
6
+ import { QualifiedFormApi } from "../qualified_form/qualified_form_api.js";
7
+ import "../telemetry/index.js";
8
+ import { widgetBootstrap } from "../widget_bootstrap.js";
9
+ import { PARDOT_EMAIL_SELECTOR, default as base_api_handler } from "./base_api_handler.js";
10
+ import "../utils/native_globals.js";
11
+ import { parseQueryParams } from "../../src/query_params.js";
12
+ import { _extends } from "../../js/4101.js";
13
+ import { withTelemetryCtx } from "../telemetry/telemetry.js";
14
+
15
+ /* provided dependency */ var __nativeWindowAddEventListener = __webpack_require__(68034).zh;
16
+
17
+
18
+
19
+
20
+
21
+
22
+
23
+
24
+
25
+
26
+ const START_CALL_STATES = [
27
+ "open",
28
+ "maximized",
29
+ "minimized"
30
+ ];
31
+ /**
32
+ * Allowed API verbs that can be triggered via URL query parameters.
33
+ * Each key is the verb name (the query param will be `q_<verb>`).
34
+ * An optional `schema` defines how to parse the param value into typed options.
35
+ */ const ALLOWED_URL_VERBS = {
36
+ showExperience: {
37
+ dict: false,
38
+ params: [
39
+ {
40
+ name: "botApiName",
41
+ type: "string"
42
+ }
43
+ ]
44
+ },
45
+ pardotFormSubmitted: {
46
+ dict: false,
47
+ params: [
48
+ {
49
+ name: "botApiName",
50
+ type: "string"
51
+ }
52
+ ]
53
+ },
54
+ startCall: {
55
+ dict: true,
56
+ params: [
57
+ {
58
+ name: "state",
59
+ type: "enum",
60
+ allowed: START_CALL_STATES,
61
+ // `q_startCall` used to carry the deprecated `maximized` boolean in this
62
+ // slot, so those URLs keep working.
63
+ aliases: {
64
+ "1": "maximized",
65
+ true: "maximized",
66
+ "0": "open",
67
+ false: "open"
68
+ }
69
+ }
70
+ ]
71
+ },
72
+ startChat: {
73
+ dict: true,
74
+ params: [
75
+ {
76
+ name: "initialMessage",
77
+ type: "string"
78
+ },
79
+ {
80
+ name: "position",
81
+ type: "enum",
82
+ allowed: [
83
+ "pinned",
84
+ "floating"
85
+ ]
86
+ }
87
+ ]
88
+ }
89
+ };
90
+ class ApiHandler extends base_api_handler {
91
+ markReady() {
92
+ super.markReady();
93
+ this.executeUrlApiCalls();
94
+ // Listen for messages coming from iframes
95
+ __nativeWindowAddEventListener("message", (param)=>{
96
+ let { data, origin, source } = param;
97
+ if ((data == null ? void 0 : data.source) === "qualified" && (data == null ? void 0 : data.token) === this.widget.config.token && Array.isArray(data.args) && this.widget.isAllowedOrigin(origin) && data.args[0] !== "initialize") {
98
+ this.execute(...data.args);
99
+ source == null ? void 0 : source.postMessage({
100
+ source: "qualified",
101
+ token: this.widget.config.token,
102
+ message: "done",
103
+ verb: ((data == null ? void 0 : data.args) || [
104
+ null
105
+ ])[0]
106
+ }, {
107
+ targetOrigin: origin
108
+ });
109
+ }
110
+ });
111
+ }
112
+ executeUrlApiCalls() {
113
+ // Execute querystring API calls of format q_<verb>[=<key>:<value>[;<key>:<value>]]
114
+ const params = new URLSearchParams(document.location.search);
115
+ for (const [verb, schema] of Object.entries(ALLOWED_URL_VERBS)){
116
+ const param = "q_" + verb;
117
+ if (params.has(param)) {
118
+ const value = params.get(param);
119
+ const result = parseQueryParams(value, schema);
120
+ if (Array.isArray(result)) {
121
+ this.execute(verb, ...result);
122
+ } else {
123
+ this.execute(verb, result);
124
+ }
125
+ }
126
+ }
127
+ }
128
+ constructor(injectionProps){
129
+ super(injectionProps, {
130
+ initialize: (teamToken, teamConfig)=>{
131
+ withTelemetryCtx({
132
+ traceId: widgetBootstrap.traceId,
133
+ parentSpan: widgetBootstrap.initSpan,
134
+ telemetry: widgetBootstrap.telemetry
135
+ }, ()=>{
136
+ this.widget.init(teamToken, teamConfig);
137
+ });
138
+ this.getIdentityQueue = [];
139
+ },
140
+ teardown: ()=>{
141
+ this.widget.onTeardown();
142
+ },
143
+ open: ()=>{
144
+ this.widget.initialized.then(()=>this.widget.open());
145
+ },
146
+ // For Pardot forms on landing pages
147
+ initPardotForm: (formActionUrl)=>{
148
+ __nativeWindowAddEventListener("submit", (e)=>{
149
+ if (e.target instanceof HTMLFormElement && e.target.id && (e.target.id === "pardot-form" || e.target.matches('form[action="' + formActionUrl + '"]'))) {
150
+ const emailInput = e.target.querySelector(PARDOT_EMAIL_SELECTOR);
151
+ const email = emailInput == null ? void 0 : emailInput.value;
152
+ if (email) {
153
+ const formElement = e.target;
154
+ const formData = Object.fromEntries(new FormData(formElement));
155
+ this.execute("parsePardotFormForLandingPage", formElement.outerHTML, formData, email, formActionUrl);
156
+ this.execute("emitFormFill", "pardot");
157
+ }
158
+ }
159
+ });
160
+ this.widget.debugState.logEvent("api:initPardotForm", "success", {
161
+ isLandingPage: true,
162
+ formActionUrl
163
+ });
164
+ },
165
+ // For Pardot forms on landing pages
166
+ initPardotFormThankYou: (formActionUrl)=>{
167
+ // No implementation needed for Pardot forms on landing pages
168
+ this.widget.debugState.logEvent("api:initPardotFormThankYou", "success", {
169
+ isLandingPage: true,
170
+ formActionUrl
171
+ });
172
+ },
173
+ pardotFormSubmitted: (botApiName)=>{
174
+ if (botApiName === void 0) botApiName = "default";
175
+ if (this.tracker.initialized) {
176
+ this.widget.initialized.then(()=>this.tracker.handlePardotFormSubmitted(botApiName));
177
+ } else {
178
+ this.tracker.setInitializationParams({
179
+ bot_api_name: botApiName
180
+ });
181
+ }
182
+ this.widget.debugState.logEvent("api:saveFormData", "success", {
183
+ botApiName
184
+ });
185
+ },
186
+ // This handler is for getting the field name - value pairs from Pardot forms
187
+ // that have the "no wait" feature enabled.
188
+ parsePardotForm: (form, formData, email)=>{
189
+ if (!form || !formData) {
190
+ this.widget.debugState.logEvent("api:parsePardotForm", "error", {
191
+ form,
192
+ formData,
193
+ email
194
+ }, "Failed to parse Pardot form. Form: " + form + ", formData: " + formData);
195
+ return;
196
+ }
197
+ const tempElement = document.createElement("div");
198
+ tempElement.innerHTML = form;
199
+ const receivedFormElement = tempElement.querySelector("form");
200
+ const values = this.widget.excludeLongFieldValue(formData, "pardot", receivedFormElement);
201
+ // TODO: This is a safety check to avoid the edge cases where the the parsing in excludeLongFieldValue fails to get the correct data.
202
+ // If that happens, we avoid polluting the already saved email and send a debuglog.
203
+ // When we are very certain the parsing works for all the cases, we can remove this check.
204
+ if (!!values && values.email === email) {
205
+ this.visitor.setFormData(values);
206
+ this.widget.debugState.logEvent("api:parsePardotForm", "success", {
207
+ email
208
+ });
209
+ } else {
210
+ this.widget.debugState.logEvent("api:parsePardotForm", "error", {
211
+ incomingEmail: values.email,
212
+ correctEmail: email
213
+ }, "Failed to parse and get the correct field values from the Pardot form. Got " + values.email + ", while the correct email is " + email);
214
+ }
215
+ },
216
+ // This handler is for getting the field name - value pairs from Pardot forms
217
+ // that have the "no wait" feature enabled.
218
+ parsePardotFormForLandingPage: (form, formData, email, formActionUrl)=>{
219
+ if (!form || !formData) {
220
+ this.widget.debugState.logEvent("api:parsePardotFormForLandingPage", "error", {
221
+ form,
222
+ formData,
223
+ email,
224
+ formActionUrl
225
+ }, "Failed to parse Pardot form. Form: " + form + ", formData: " + formData);
226
+ return;
227
+ }
228
+ const tempElement = document.createElement("div");
229
+ tempElement.innerHTML = form;
230
+ const receivedFormElement = tempElement.querySelector("form");
231
+ const values = this.widget.excludeLongFieldValue(formData, "pardot", receivedFormElement);
232
+ // TODO: This is a safety check to avoid the edge cases where the the parsing in excludeLongFieldValue fails to get the correct data.
233
+ // If that happens, we avoid polluting the already saved email and send a debuglog.
234
+ // When we are very certain the parsing works for all the cases, we can remove this check.
235
+ if (!!values && values.email === email) {
236
+ this.visitor.setFormExperienceDataWithExpiry({
237
+ formType: "pardot",
238
+ formData: _extends({}, values, {
239
+ formActionUrl,
240
+ formEmail: email
241
+ })
242
+ }, 5000);
243
+ this.widget.debugState.logEvent("api:parsePardotFormForLandingPage", "success", {
244
+ email
245
+ });
246
+ } else {
247
+ this.widget.debugState.logEvent("api:parsePardotFormForLandingPage", "error", {
248
+ incomingEmail: values.email,
249
+ correctEmail: email
250
+ }, "Failed to parse and get the correct field values from the Pardot form on landing page. Got " + values.email + ", while the correct email is " + email);
251
+ this.visitor.setFormExperienceDataWithExpiry({
252
+ formType: "pardot",
253
+ formData: {
254
+ formActionUrl,
255
+ formEmail: email
256
+ }
257
+ }, 5000);
258
+ }
259
+ },
260
+ saveFormData: (fieldValues)=>{
261
+ this.visitor.setFormData(fieldValues);
262
+ if (fieldValues.email) {
263
+ this.widget.debugState.logEvent("api:saveFormData", "success", {
264
+ fieldValues
265
+ });
266
+ } else {
267
+ this.widget.debugState.logEvent("api:saveFormData", "error", {}, '"saveFormData" was called but no email was provided.');
268
+ }
269
+ },
270
+ // Note: Old implementation of saving form data
271
+ saveSmartFormData: (fieldValues, botApiName)=>{
272
+ if (botApiName === void 0) botApiName = "default";
273
+ this.visitor.setSmartFormData(fieldValues, botApiName);
274
+ this.widget.debugState.logEvent("api:saveSmartFormData", "success", {
275
+ fieldValues,
276
+ botApiName
277
+ });
278
+ },
279
+ sendSmartFormData: (fieldValues, botApiName)=>{
280
+ if (botApiName === void 0) botApiName = "default";
281
+ this.widget.initialized.then(()=>this.tracker.handleSmartFormSubmitted(fieldValues, botApiName));
282
+ this.widget.debugState.logEvent("api:sendSmartFormData", "success", {
283
+ fieldValues,
284
+ botApiName
285
+ });
286
+ },
287
+ showExperience: (botApiName, startCollapsed, showLoadingState)=>{
288
+ if (startCollapsed === void 0) startCollapsed = false;
289
+ if (showLoadingState === void 0) showLoadingState = true;
290
+ const initialClientState = startCollapsed ? "collapsed" : "expanded";
291
+ if (showLoadingState) {
292
+ if (this.tracker.config.hasMeetingBookerExperienceBuilder) {
293
+ this.experienceAdapter.showLightboxLoading();
294
+ } else if (!startCollapsed) {
295
+ this.widget.initialized.then(()=>{
296
+ this.experienceAdapter.showMessengerLoading();
297
+ });
298
+ }
299
+ }
300
+ if (this.tracker.initialized) {
301
+ this.widget.initialized.then(()=>this.tracker.showExperience(botApiName, initialClientState));
302
+ } else {
303
+ this.tracker.setInitializationParams({
304
+ bot_api_name: botApiName,
305
+ bot_initial_client_state: initialClientState
306
+ });
307
+ }
308
+ this.widget.debugState.logEvent("api:showExperience", "success", {
309
+ botApiName,
310
+ startCollapsed,
311
+ hasMeetingBookerExperienceBuilder: this.tracker.config.hasMeetingBookerExperienceBuilder
312
+ });
313
+ },
314
+ /**
315
+ *
316
+ * @param {HTMLFormElement | string} formElementOrSelector Form to trigger to a Form Experience or String containing a css selector that uniquely identifies the form
317
+ * @param {FieldMappingsObject} fieldMappings Mapping of visitor field API names to names of fields on the form
318
+ * @param {(FieldValuesObject) => void} altSubmitCallback Function to run using the field values, existence prevents actual form submit
319
+ */ registerForm: (formElementOrSelector, fieldMappings, altSubmitCallback)=>{
320
+ if (fieldMappings === void 0) fieldMappings = {};
321
+ if (altSubmitCallback === void 0) altSubmitCallback = null;
322
+ this.widget.initialized.then(()=>{
323
+ __nativeWindowAddEventListener("submit", (e)=>{
324
+ let formElement = null;
325
+ if (typeof formElementOrSelector === "string") {
326
+ formElement = document.querySelector(formElementOrSelector);
327
+ } else if (formElementOrSelector instanceof HTMLFormElement) {
328
+ formElement = formElementOrSelector;
329
+ }
330
+ if (e.target !== formElement) return;
331
+ const formData = new FormData(e.target);
332
+ const fieldValues = Object.entries(fieldMappings).reduce((acc, param)=>{
333
+ let [fieldApiName, formFieldName] = param;
334
+ acc[fieldApiName] = formData.get(formFieldName);
335
+ return acc;
336
+ }, {});
337
+ this.visitor.setFormData(fieldValues);
338
+ if (altSubmitCallback) {
339
+ // TODO(eslint): Explain why preventDefault() is needed. This comment was added as part of the enforce-comment eslint rule
340
+ e.preventDefault();
341
+ // TODO(eslint): Explain why stopPropagation() is needed. This comment was added as part of the enforce-comment eslint rule
342
+ e.stopPropagation();
343
+ try {
344
+ altSubmitCallback(fieldValues);
345
+ } catch (error) {
346
+ console.error("Qualified: Error running altSubmitCallback", error); // eslint-disable-line no-console
347
+ }
348
+ }
349
+ }, {
350
+ capture: true
351
+ });
352
+ });
353
+ this.widget.debugState.logEvent("api:registerForm", "success", {
354
+ formElementOrSelector: formElementOrSelector.toString(),
355
+ fieldMappings
356
+ });
357
+ },
358
+ showForm: async (botApiName, clientConfig)=>{
359
+ var _tryGet;
360
+ if (!this.tracker.config.hasWebsiteEmbeddedForms) {
361
+ this.widget.debugState.logEvent("api:showForm", "error", {
362
+ botApiName,
363
+ clientConfig
364
+ }, "`showForm` was called but `website_embedded_forms` feature flag is not enabled");
365
+ return;
366
+ }
367
+ const targetElements = document.querySelectorAll(clientConfig.target);
368
+ if (targetElements.length > 1) {
369
+ this.widget.debugState.logEvent("api:showForm", "error", {
370
+ botApiName,
371
+ clientConfig
372
+ }, "Found " + targetElements.length + " target elements for selector, but expected 1: `" + clientConfig.target + "`");
373
+ // Don't return early; continue with the first target element
374
+ }
375
+ const targetElement = targetElements[0];
376
+ if (!targetElement) {
377
+ this.widget.debugState.logEvent("api:showForm", "error", {
378
+ botApiName,
379
+ clientConfig
380
+ }, "Target element not found: `" + clientConfig.target + "`");
381
+ return;
382
+ }
383
+ // Fetch the form config from the server, then render an embedded Qualified Form in the
384
+ // `clientConfig.target` element.
385
+ //
386
+ // If we want to render the form sooner, alternatively we can require the target element to
387
+ // have a `data-qualified-form-experience-api-name` attribute. The widget would need to
388
+ // query for all elements with this attribute when the DOM is ready, as well as whenever the
389
+ // DOM changes (e.g., when embedding a form inside a dialog), then start fetching each form
390
+ // config before the `showForm` API call.
391
+ const iframeManagerRef = (_tryGet = tryGet(()=>this.iframeManager)) != null ? _tryGet : null;
392
+ const qualifiedFormApi = new QualifiedFormApi({
393
+ channel: this.channel,
394
+ formApiName: botApiName,
395
+ iframeManager: iframeManagerRef,
396
+ source: (/* inlined export .QualifiedFormSource.EMBEDDED */"embedded")
397
+ });
398
+ const formConfigResponse = await qualifiedFormApi.getFormConfig();
399
+ if (formConfigResponse.success) {
400
+ const serverConfig = formConfigResponse.qualifiedFormConfig;
401
+ const form = await createForm(_extends({
402
+ formExperienceApiName: botApiName
403
+ }, clientConfig, {
404
+ // Server config no longer provides these values, so we're using the client config values instead
405
+ // emailInputLabelText: serverConfig.emailField?.label,
406
+ // emailInputPlaceholderText: serverConfig.emailField?.placeholder,
407
+ // successRedirectUrl: serverConfig.assetUrl,
408
+ successRedirectUrl: undefined,
409
+ // Force the url to be undefined because we want the qualified form to use the redirect node for redirecting
410
+ validateBusinessEmail: serverConfig.validateBusinessEmail ? "true" : undefined
411
+ }));
412
+ targetElement.append(form);
413
+ } else {
414
+ this.widget.debugState.logEvent("api:showForm", "error", {
415
+ botApiName,
416
+ clientConfig
417
+ }, "Failed to get form config for form experience `" + botApiName + "`. Error: " + formConfigResponse.error);
418
+ }
419
+ },
420
+ showFormExperience: (botApiName, options)=>{
421
+ if (options === void 0) options = {
422
+ formDestinations: null
423
+ };
424
+ var _this_visitor_formData, _this_visitor_smartFormData, _options_formDestinations;
425
+ const fieldValues = ((_this_visitor_formData = this.visitor.formData) == null ? void 0 : _this_visitor_formData.fieldValues) || ((_this_visitor_smartFormData = this.visitor.smartFormData) == null ? void 0 : _this_visitor_smartFormData.fieldValues);
426
+ if (!fieldValues) {
427
+ this.widget.debugState.logEvent("api:showFormExperience", "error", {
428
+ botApiName,
429
+ formDestinations: options.formDestinations
430
+ }, '"showFormExperience" was called but no form data was found. Not triggering the form experience.');
431
+ return;
432
+ }
433
+ this.experienceAdapter.showLightboxLoading();
434
+ // Pre-offer SLI. Armed here, above the initialized/pre-init split, so one
435
+ // call covers both branches — they differ in how the experience is started,
436
+ // not in whether the visitor is now watching a spinner.
437
+ //
438
+ // Placed after the `fieldValues` guard on purpose: that path returns
439
+ // without showing the lightbox, so there is no wait to measure and arming
440
+ // would add a journey the visitor never experienced.
441
+ //
442
+ // `botApiName` is the experience the caller asked for, so unlike the other
443
+ // form arm sites this one has a real source for the dimension.
444
+ if (this.featureFlags.bookerJourneySLI) {
445
+ armFormCtaBookerIntent("form:" + botApiName, botApiName);
446
+ }
447
+ if (DebugModeState.isInDebugMode()) {
448
+ let formDestinationsLog;
449
+ if (Array.isArray(options.formDestinations) && options.formDestinations.length > 0) {
450
+ formDestinationsLog = " with the following form destination(s): " + options.formDestinations.join(", ");
451
+ } else {
452
+ formDestinationsLog = " with no form destinations provided";
453
+ }
454
+ DebugModeState.setApiMessage("showFormExperience", "Success", '"showFormExperience" was called successfully for ' + botApiName + formDestinationsLog + ".");
455
+ }
456
+ if (this.tracker.initialized) {
457
+ this.widget.initialized.then(()=>this.tracker.showFormExperience(botApiName, options.formDestinations));
458
+ } else {
459
+ const params = {
460
+ bot_api_name: botApiName,
461
+ form_destinations: options.formDestinations
462
+ };
463
+ if (fieldValues) {
464
+ params.smart_form = {
465
+ field_values: fieldValues
466
+ };
467
+ }
468
+ this.tracker.setInitializationParams(params);
469
+ }
470
+ const formDestinationsString = ((_options_formDestinations = options.formDestinations) == null ? void 0 : _options_formDestinations.join(",")) || "none";
471
+ this.widget.debugState.logEvent("api:showFormExperience", "success", {
472
+ botApiName,
473
+ formDestinations: options.formDestinations
474
+ }, '"showFormExperience" was called successfully for ' + botApiName + " with form destinations [" + formDestinationsString + "]");
475
+ },
476
+ showExperienceForForm: (formType, formData, showOnRedirect)=>{
477
+ if (showOnRedirect === void 0) showOnRedirect = false;
478
+ var _formData_formActionUrl;
479
+ if (!this.widget.config.hasSmartForms) {
480
+ this.widget.debugState.logEvent("api:showExperienceForForm", "error", {
481
+ formType,
482
+ formData,
483
+ showOnRedirect
484
+ }, '"showExperienceForForm" was called but "smart_forms" flag is not enabled');
485
+ return;
486
+ }
487
+ const normalizedFormActionUrl = (_formData_formActionUrl = formData.formActionUrl) == null ? void 0 : _formData_formActionUrl.replace(/^https?:\/\//, "");
488
+ const formActionUrlCandidates = normalizedFormActionUrl ? [
489
+ normalizedFormActionUrl,
490
+ normalizedFormActionUrl.replace("/iframe/", "/"),
491
+ normalizedFormActionUrl.startsWith("/") ? "" + window.location.host + normalizedFormActionUrl : undefined,
492
+ normalizedFormActionUrl.startsWith("/") ? "" + window.location.host + normalizedFormActionUrl.replace("/iframe/", "/") : undefined
493
+ ].filter((formActionUrl)=>!!formActionUrl) : [];
494
+ const matchedFormActionUrl = formActionUrlCandidates.find((formActionUrl)=>this.widget.config.formBotTriggers.pardot.includes(formActionUrl));
495
+ if (normalizedFormActionUrl && !matchedFormActionUrl) {
496
+ this.widget.debugState.logEvent("api:showExperienceForForm", "error", {
497
+ formType,
498
+ formData,
499
+ showOnRedirect
500
+ }, '"showExperienceForForm" was called but "formData.formActionUrl" is not in the list of configured triggers');
501
+ return;
502
+ }
503
+ if (matchedFormActionUrl && matchedFormActionUrl !== normalizedFormActionUrl) {
504
+ formData = _extends({}, formData, {
505
+ formActionUrl: matchedFormActionUrl
506
+ });
507
+ }
508
+ if (formType === "pardot") {
509
+ var _this_visitor_formData, _this_visitor_formData_fieldValues, _this_visitor_formData1;
510
+ formData = _extends({}, formData, (_this_visitor_formData = this.visitor.formData) == null ? void 0 : _this_visitor_formData.fieldValues);
511
+ formData.formEmail = formData.formEmail || ((_this_visitor_formData1 = this.visitor.formData) == null ? void 0 : (_this_visitor_formData_fieldValues = _this_visitor_formData1.fieldValues) == null ? void 0 : _this_visitor_formData_fieldValues.email);
512
+ }
513
+ if (showOnRedirect) {
514
+ // TODO: look into toggling a flag to prevent the cookie state from being read out before
515
+ // redirect happens since there is still technically a race case here
516
+ __nativeWindowAddEventListener("beforeunload", ()=>{
517
+ // The Pardot iframe flow saves field values to both the formData cookie attribute
518
+ // (via parsePardotForm) and formExperienceData (here). Since the field values have
519
+ // already been merged into the local formData variable above, clear the redundant
520
+ // formData to avoid exceeding the browser's 4096-byte cookie size limit.
521
+ if (formType === "pardot") {
522
+ this.visitor.clearFormData();
523
+ }
524
+ this.visitor.setFormExperienceDataWithExpiry({
525
+ formType,
526
+ formData
527
+ });
528
+ });
529
+ window.postMessage({
530
+ source: "qualified",
531
+ token: this.widget.config.token,
532
+ message: "done",
533
+ verb: "showExperienceForForm"
534
+ }, window.location.origin);
535
+ } else if (this.tracker.initialized) {
536
+ this.experienceAdapter.showLightboxLoading();
537
+ this.widget.initialized.then(()=>this.tracker.showExperienceForForm(formType, formData));
538
+ } else {
539
+ var _formData_formActionUrl1;
540
+ this.experienceAdapter.showLightboxLoading();
541
+ // Pre-offer SLI: this is the submit moment just as much as the
542
+ // initialized branch above is — the only difference is that the
543
+ // experience starts from the page-view request rather than
544
+ // `show_experience_for_form`, so `Tracker.showExperienceForForm`'s arm
545
+ // site is never reached and the whole pre-initialization submit path
546
+ // emitted nothing. The clock is honest here; this is not a replay.
547
+ if (this.featureFlags.bookerJourneySLI) {
548
+ armFormCtaBookerIntent("form:" + formType);
549
+ }
550
+ this.tracker.setInitializationParams({
551
+ smart_form: {
552
+ form_type: formType,
553
+ field_values: {
554
+ email: formData.formEmail
555
+ },
556
+ form_data: {
557
+ form_email: formData.formEmail,
558
+ form_action_url: (_formData_formActionUrl1 = formData.formActionUrl) == null ? void 0 : _formData_formActionUrl1.replace(/^https?:\/\//, ""),
559
+ raw: formData,
560
+ form_id: formData.formId
561
+ }
562
+ }
563
+ });
564
+ }
565
+ this.widget.debugState.logEvent("api:showExperienceForForm", "success", {
566
+ formType,
567
+ formData,
568
+ showOnRedirect
569
+ });
570
+ },
571
+ refreshVisitorState: ()=>{
572
+ this.visitor.refreshPersistedState();
573
+ },
574
+ getIdentity: (callback)=>{
575
+ this.getIdentityQueue.push(callback);
576
+ if (this.channel.initStateReceived) {
577
+ this.tracker.getIdentity();
578
+ } else {
579
+ this.channel.once("initState", this.tracker.getIdentity);
580
+ }
581
+ if (!this.subscribedToGetIdentity) {
582
+ this.subscribedToGetIdentity = true;
583
+ this.channel.emitter.on("received", (event, payload)=>{
584
+ if (event === "getIdentity") {
585
+ try {
586
+ this.getIdentityQueue.forEach((queuedCallback)=>{
587
+ queuedCallback(payload);
588
+ });
589
+ this.getIdentityQueue = [];
590
+ } catch (e) {
591
+ console.error("Qualified: Error in the given getIdentity callback.", e); // eslint-disable-line no-console
592
+ }
593
+ }
594
+ });
595
+ }
596
+ },
597
+ handleEvents: (handler)=>{
598
+ this.channel.emitter.on("received", (event, payload)=>{
599
+ if (event === "conversationEvent") {
600
+ try {
601
+ handler(payload.name, payload.data);
602
+ // TODO: Remove after enabling field_broadcasting_restriction FF (CORE-1102)
603
+ this.widget.serverLog({
604
+ message: "handleEvents event: " + payload.name,
605
+ type: "log",
606
+ extra: {
607
+ api_method: "handleEvents",
608
+ api_event: payload.name
609
+ }
610
+ });
611
+ } catch (e) {
612
+ console.error("Qualified: Error in event handler", e); // eslint-disable-line no-console
613
+ }
614
+ }
615
+ if (event === "pageViewActivityEvent") {
616
+ try {
617
+ handler(payload.name, payload.data);
618
+ // TODO: Remove after enabling field_broadcasting_restriction FF (CORE-1102)
619
+ this.widget.serverLog({
620
+ message: "handleEvents event: " + payload.name,
621
+ type: "log",
622
+ extra: {
623
+ api_method: "handleEvents",
624
+ api_event: payload.name
625
+ }
626
+ });
627
+ } catch (e) {
628
+ console.error("Qualified: Error in event handler", e); // eslint-disable-line no-console
629
+ }
630
+ }
631
+ });
632
+ },
633
+ handleMessengerEvents: (handler)=>{
634
+ this.experienceAdapter.addMessengerEventsListener(handler);
635
+ },
636
+ handleWidgetEvents: (handler)=>{
637
+ this.widget.addWidgetEventsListener(handler);
638
+ },
639
+ identify: (fieldValues)=>{
640
+ if (this.tracker.initialized) {
641
+ this.tracker.setFieldValues(fieldValues);
642
+ } else {
643
+ this.tracker.setInitializationParams({
644
+ field_values: fieldValues
645
+ });
646
+ }
647
+ this.widget.debugState.logEvent("api:identify", "success", {
648
+ fieldValues
649
+ });
650
+ },
651
+ page: ()=>{
652
+ this.tracker.createPageView({
653
+ singlePageApp: true,
654
+ reconnecting: false,
655
+ rebroadcast: false
656
+ });
657
+ },
658
+ endExperience: ()=>{
659
+ this.widget.endExperience();
660
+ },
661
+ setCookieConsent: (hasCookieConsent)=>{
662
+ if (hasCookieConsent === true || hasCookieConsent === false) {
663
+ this.widget.setCookieConsent(hasCookieConsent);
664
+ if (hasCookieConsent === true) {
665
+ this.channel.send({
666
+ event: "cookieConsentGiven",
667
+ payload: {}
668
+ });
669
+ }
670
+ } else {
671
+ console.error("Qualified: setCookieConsent must be called with a boolean value."); // eslint-disable-line no-console
672
+ }
673
+ },
674
+ emitFormFill: (formType)=>{
675
+ this.widget.initialized.then(()=>this.tracker.pageViewActivityEmitter.emitFormFill({
676
+ formType
677
+ }));
678
+ },
679
+ submitEmbeddedForm: (param)=>{
680
+ let { email, formExperienceApiName } = param;
681
+ if (this.tracker.config.hasWebsiteEmbeddedForms) {
682
+ this.channel.send({
683
+ event: "submitEmbeddedForm",
684
+ payload: {
685
+ bot_api_name: formExperienceApiName,
686
+ email
687
+ }
688
+ });
689
+ this.widget.debugState.logEvent("api:submitEmbeddedForm", "success", {
690
+ formExperienceApiName
691
+ });
692
+ } else {
693
+ this.widget.debugState.logEvent("api:submitEmbeddedForm", "error", {
694
+ formExperienceApiName
695
+ }, "`submitEmbeddedForm` was called but `website_embedded_forms` feature flag is not enabled");
696
+ }
697
+ },
698
+ // Used by iframed widgets to log debug events to parent frame
699
+ logDebugEvent: (key, status, data, message)=>{
700
+ this.widget.debugState.logEvent(key, status, data, message);
701
+ },
702
+ setChatIsVisible: (chatIsVisible)=>{
703
+ this.experienceAdapter.setChatIsVisible(chatIsVisible);
704
+ },
705
+ startCall: async (options)=>{
706
+ // Voice FF is needed at least for this to work
707
+ if (!this.featureFlags.piperXAgentVoice) return;
708
+ try {
709
+ const multimodal = await this.widget.multimodalReady;
710
+ multimodal == null ? void 0 : multimodal.startCall(options);
711
+ } catch (unused) {
712
+ // multimodal failed to initialize — nothing to do
713
+ }
714
+ },
715
+ startChat: async (options)=>{
716
+ try {
717
+ const multimodal = await this.widget.multimodalReady;
718
+ multimodal == null ? void 0 : multimodal.startChat(options);
719
+ } catch (unused) {
720
+ // multimodal failed to initialize — nothing to do
721
+ }
722
+ }
723
+ }), this.getIdentityQueue = [];
724
+ }
725
+ }
726
+
727
+
728
+ var api_handler_START_CALL_STATES = /* unused export */ undefined;
729
+ export { api_handler_START_CALL_STATES as START_CALL_STATES };
730
+ export default ApiHandler;