@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,195 @@
1
+ import { __webpack_require__ } from "../../js/runtime.js";
2
+ import { esm_browser_v4 } from "../../js/4101.js";
3
+ import "../telemetry/index.js";
4
+ import { getSentryClient } from "../widget/sentry.js";
5
+ import { Disposable } from "../../src/mixins/disposable.js";
6
+ import { createBetterPromise } from "../../src/promises.js";
7
+ import "../utils/native_globals.js";
8
+ import { metrics } from "../telemetry/metrics.js";
9
+
10
+ const tiny_emitter = __webpack_require__("47441");
11
+ /* provided dependency */ var multimodal_channel_clearTimeout = __webpack_require__(68034).Kj;
12
+ /* provided dependency */ var multimodal_channel_setTimeout = __webpack_require__(68034).pS;
13
+ function _extends() {
14
+ _extends = Object.assign || function(target) {
15
+ for(var i = 1; i < arguments.length; i++){
16
+ var source = arguments[i];
17
+ for(var key in source){
18
+ if (Object.prototype.hasOwnProperty.call(source, key)) {
19
+ target[key] = source[key];
20
+ }
21
+ }
22
+ }
23
+ return target;
24
+ };
25
+ return _extends.apply(this, arguments);
26
+ }
27
+ function _object_without_properties_loose(source, excluded) {
28
+ if (source == null) return {};
29
+ var target = {}, sourceKeys = Object.getOwnPropertyNames(source), key, i;
30
+ for(i = 0; i < sourceKeys.length; i++){
31
+ key = sourceKeys[i];
32
+ if (excluded.indexOf(key) >= 0) continue;
33
+ if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue;
34
+ target[key] = source[key];
35
+ }
36
+ return target;
37
+ }
38
+
39
+
40
+
41
+
42
+
43
+
44
+ const PERFORM_TIMEOUT = 30000;
45
+ const ACTION_PREFIX = "__action__";
46
+ const SUPPORTED_EVENTS = [
47
+ "initState",
48
+ "stateUpdate",
49
+ "message",
50
+ "messageRead",
51
+ "typingStarted",
52
+ "typingEnded",
53
+ "visitorBlocked",
54
+ "visitorUnblocked",
55
+ "botProcessEnded",
56
+ "textResponseEnded",
57
+ "textTurnDiagnostics",
58
+ "callEnded",
59
+ "toolCallStarted",
60
+ "toolCallCompleted",
61
+ "coffeeStateUpdate",
62
+ "open"
63
+ ];
64
+ const FORWARDED_EVENTS = [
65
+ "botProcessEnded"
66
+ ];
67
+ class MultimodalChannel extends Disposable(Object) {
68
+ cleanup() {
69
+ this.channel.off("multimodal", this.eventHandler);
70
+ }
71
+ on(event, listener) {
72
+ return this._emitter.on(event, listener);
73
+ }
74
+ once(event, listener) {
75
+ return this._emitter.once(event, listener);
76
+ }
77
+ off(event, listener) {
78
+ return this._emitter.off(event, listener);
79
+ }
80
+ perform(action, data) {
81
+ const id = esm_browser_v4();
82
+ const event = "" + action + ":response";
83
+ const promise = createBetterPromise();
84
+ let timeoutId = null;
85
+ const listener = (_0)=>{
86
+ let { __id } = _0, result = _object_without_properties_loose(_0, [
87
+ "__id"
88
+ ]);
89
+ if (__id !== id) return;
90
+ settle(result);
91
+ };
92
+ const timeoutCallback = ()=>{
93
+ var _getSentryClient, _this_widget_config_featureFlags;
94
+ const error = new Error("Timeout waiting for " + event + " with id " + id);
95
+ (_getSentryClient = getSentryClient({
96
+ project: "multimodal"
97
+ })) == null ? void 0 : _getSentryClient.captureException(error);
98
+ if ((_this_widget_config_featureFlags = this.widget.config.featureFlags) == null ? void 0 : _this_widget_config_featureFlags.piperXAgent) {
99
+ metrics.emitIncrement("multimodal_client_error");
100
+ }
101
+ settle({
102
+ error: {
103
+ message: error.message
104
+ }
105
+ });
106
+ };
107
+ const settle = (result)=>{
108
+ this.channel.off(event, listener);
109
+ if (timeoutId) multimodal_channel_clearTimeout(timeoutId);
110
+ if (result.error) {
111
+ this.widget.serverLog({
112
+ type: "log",
113
+ message: "Perform action " + event + " failed with error " + result.error.message
114
+ });
115
+ }
116
+ promise.resolve(result);
117
+ };
118
+ this.channel.on(event, listener);
119
+ this.channel.perform("" + ACTION_PREFIX + action, _extends({}, data, {
120
+ __id: id
121
+ }));
122
+ timeoutId = multimodal_channel_setTimeout(timeoutCallback, PERFORM_TIMEOUT);
123
+ return promise;
124
+ }
125
+ /**
126
+ * Emit a piper web tracking event locally so Analytics can push it to GTM.
127
+ * Use for client-originated events (e.g. content click, link click).
128
+ */ emitPiperWebTrackingEvent(payload) {
129
+ this.channel.emit("received", "piperWebTrackingEvent", payload);
130
+ }
131
+ // eslint-disable-next-line no-useless-constructor
132
+ constructor(widget){
133
+ super(), this.widget = widget, // first one). Replaces the old one-way `initStateReceived` latch so we can
134
+ // detect a switch in either direction — e.g. another tab flips the shared
135
+ // session to the other experience — and tear down the outgoing messenger.
136
+ this.currentMode = null, this.eventHandler = (message)=>{
137
+ if (this.currentMode === "new" && message.event === "initState" && message.payload.isReconnecting) {
138
+ // We need to ignore the payload as it can be invalid due to the reconnecting state.
139
+ // Directly emit the event to the multimodal channel so that it handles the reconnecting state.
140
+ this._emitter.emit(message.event, message.payload);
141
+ return;
142
+ }
143
+ if (message.event === "initState") {
144
+ var _this_widget_multimodal;
145
+ const nextMode = message.payload.useNewMessengerStyling ? "new" : "legacy";
146
+ const prevMode = this.currentMode;
147
+ this.currentMode = nextMode;
148
+ // Tell the composite adapter which layer owns the session so visible-behavior
149
+ // verbs/getters route to it. Signalled on every initState (both directions)
150
+ // — the initial-new case below skips hideLegacyMessenger, so ownership can't
151
+ // be inferred from that call alone.
152
+ this.widget.setMultimodalOwnsSession(nextMode === "new");
153
+ if (nextMode === "legacy") {
154
+ var _window_qualified_docking, _window_qualified;
155
+ (_window_qualified = window.qualified) == null ? void 0 : (_window_qualified_docking = _window_qualified.docking) == null ? void 0 : _window_qualified_docking.disable();
156
+ // Legacy now owns the session: tear down the multimodal UI so it stops
157
+ // rendering over the legacy messenger. (Initial legacy sessions skip this.)
158
+ if (prevMode === "new") {
159
+ var _this_widget_multimodal1;
160
+ (_this_widget_multimodal1 = this.widget.multimodal) == null ? void 0 : _this_widget_multimodal1.teardownUI();
161
+ }
162
+ // Restore the legacy iframe in case an earlier switch had hidden it.
163
+ this.widget.showLegacyMessenger();
164
+ this.channel.emit("received", message.event, message.payload);
165
+ return;
166
+ }
167
+ // Multimodal now owns the session.
168
+ if (prevMode === "legacy") {
169
+ // Hide the legacy iframe so its stale UI (e.g. a pounce bubble) doesn't
170
+ // show alongside the multimodal messenger.
171
+ this.widget.hideLegacyMessenger();
172
+ }
173
+ (_this_widget_multimodal = this.widget.multimodal) == null ? void 0 : _this_widget_multimodal.ensureUI();
174
+ // Re-bind the events bridge to the (possibly freshly rebuilt) RootStore so
175
+ // events + visible-behavior verbs never target a disposed store. Must run
176
+ // AFTER ensureUI() creates the new store; idempotent, so the initial-new
177
+ // case (bridge already bound at init) is a harmless no-op re-bind.
178
+ this.widget.bindMultimodalEventsBridge();
179
+ }
180
+ if (this.currentMode === "new" && SUPPORTED_EVENTS.includes(message.event)) {
181
+ this._emitter.emit(message.event, message.payload);
182
+ if (FORWARDED_EVENTS.includes(message.event)) {
183
+ this.channel.emit("received", message.event, message.payload);
184
+ }
185
+ } else {
186
+ this.channel.emit("received", message.event, message.payload);
187
+ }
188
+ };
189
+ this.channel = widget.channel;
190
+ this._emitter = new tiny_emitter.TinyEmitter();
191
+ this.channel.on("multimodal", this.eventHandler);
192
+ }
193
+ }
194
+
195
+ export { MultimodalChannel };
@@ -0,0 +1,33 @@
1
+ import { signals_core_module_w } from "../../../js/multimodal_v2.js";
2
+
3
+
4
+ function createActiveConversationSignal(conversations) {
5
+ const activeConversation = signals_core_module_w(()=>getActiveConversation(conversations.value));
6
+ const aiSdr = signals_core_module_w(()=>{
7
+ var _ref;
8
+ var _activeConversation_value;
9
+ return (_ref = (_activeConversation_value = activeConversation.value) == null ? void 0 : _activeConversation_value.aiSdr) != null ? _ref : null;
10
+ });
11
+ const user = signals_core_module_w(()=>{
12
+ var _ref;
13
+ var _activeConversation_value;
14
+ return (_ref = (_activeConversation_value = activeConversation.value) == null ? void 0 : _activeConversation_value.user) != null ? _ref : null;
15
+ });
16
+ const aiStrategyButtonCtas = signals_core_module_w(()=>{
17
+ var _ref;
18
+ var _activeConversation_value;
19
+ return user.value ? [] : (_ref = (_activeConversation_value = activeConversation.value) == null ? void 0 : _activeConversation_value.aiStrategyButtonCtas) != null ? _ref : [];
20
+ });
21
+ return Object.assign(activeConversation, {
22
+ aiSdr,
23
+ user,
24
+ aiStrategyButtonCtas
25
+ });
26
+ }
27
+ /** Finds the first active (non-ended) chat conversation from a plain array. */ function getActiveConversation(conversations) {
28
+ var _conversations_find;
29
+ return (_conversations_find = conversations.find((conversation)=>conversation.type === "chat" && conversation.endedAt == null)) != null ? _conversations_find : null;
30
+ }
31
+
32
+ var active_conversation_signal_getActiveConversation = /* unused export */ undefined;
33
+ export { active_conversation_signal_getActiveConversation as getActiveConversation, createActiveConversationSignal };
@@ -0,0 +1,38 @@
1
+ import { signals_core_module_w } from "../../../js/multimodal_v2.js";
2
+ import { ConversationMode as types_ConversationMode } from "../types.js";
3
+
4
+
5
+
6
+ function createAllowedConversationModeSignal(rootStore) {
7
+ const allowedConversationModes = signals_core_module_w(()=>{
8
+ const modes = [
9
+ types_ConversationMode.TEXT
10
+ ];
11
+ const { piperXAgentAvatar, piperXAgentVoice } = rootStore.featureFlags;
12
+ const { voiceDisabled, videoDisabled } = rootStore.conversationModeFailover.value;
13
+ const modality = rootStore.modalityPreference.value;
14
+ const voiceEnabled = piperXAgentVoice || piperXAgentAvatar;
15
+ const videoEnabled = piperXAgentAvatar;
16
+ // When a modality preference is set, restrict available modes to the chosen one.
17
+ // Failover flags still take precedence and can further restrict what's allowed.
18
+ // "text" modality means voice/video are intentionally suppressed — TEXT is always in modes.
19
+ // A mid-call video failover (avatar died) turns a video experience into a voice one.
20
+ const effectiveModality = modality === "video" && videoDisabled ? "voice" : modality;
21
+ if (effectiveModality === "video") {
22
+ if (videoEnabled && !videoDisabled) modes.push(types_ConversationMode.VIDEO);
23
+ } else if (effectiveModality === "voice") {
24
+ if (voiceEnabled && !voiceDisabled) modes.push(types_ConversationMode.VOICE);
25
+ } else if (effectiveModality !== "text") {
26
+ if (voiceEnabled && !voiceDisabled) modes.push(types_ConversationMode.VOICE);
27
+ if (videoEnabled && !videoDisabled) modes.push(types_ConversationMode.VIDEO);
28
+ }
29
+ return modes;
30
+ });
31
+ return Object.assign(allowedConversationModes, {
32
+ video: signals_core_module_w(()=>allowedConversationModes.value.includes(types_ConversationMode.VIDEO)),
33
+ voice: signals_core_module_w(()=>allowedConversationModes.value.includes(types_ConversationMode.VOICE)),
34
+ text: signals_core_module_w(()=>allowedConversationModes.value.includes(types_ConversationMode.TEXT))
35
+ });
36
+ }
37
+
38
+ export { createAllowedConversationModeSignal };
@@ -0,0 +1,22 @@
1
+ import { signals_core_module_w } from "../../../js/multimodal_v2.js";
2
+
3
+
4
+ function createArtifactSignal(rootStore, uiState) {
5
+ const messageId = signals_core_module_w(()=>uiState.value.artifactMessageId);
6
+ const message = signals_core_module_w(()=>{
7
+ var _rootStore_messages_value_find;
8
+ if (!messageId.value) return null;
9
+ const found = (_rootStore_messages_value_find = rootStore.messages.value.find((m)=>m.id === messageId.value)) != null ? _rootStore_messages_value_find : null;
10
+ if (!found) return null;
11
+ if (found.type === "present_content" || found.type === "present_video" || found.type === "present_deck" || found.type === "calendar_event_offer") {
12
+ return found;
13
+ }
14
+ return null;
15
+ });
16
+ return {
17
+ messageId,
18
+ message
19
+ };
20
+ }
21
+
22
+ export { createArtifactSignal };
@@ -0,0 +1,98 @@
1
+ import { signals_core_module_w } from "../../../js/multimodal_v2.js";
2
+ import { isLandscapeNarrow } from "../utils/media_queries.js";
3
+ import { MaximizedState as types_MaximizedState, InputState as types_InputState } from "../types.js";
4
+
5
+
6
+
7
+
8
+ const CONTAINER_TYPES = [
9
+ "controls",
10
+ "toolbar",
11
+ "multimodal",
12
+ "preview",
13
+ "chat",
14
+ "artifact",
15
+ "input",
16
+ "privacy",
17
+ "launcher"
18
+ ];
19
+ // `createLayoutSignal` runs from inside `UIStore`'s constructor (UIStore lazy-
20
+ // reads `this.layout` for its docking subscription), so this factory must not
21
+ // touch any rootStore property whose getter delegates back into `uiStore`
22
+ // (e.g. `rootStore.displayMode`, `rootStore.conversationMode`, `rootStore.input`).
23
+ // Those getters throw at construction time because `rootStore.uiStore` is still
24
+ // the field being initialised. To stay safe, every access goes inside a
25
+ // `computed(...)` callback — computeds defer their body until first read,
26
+ // which is well after rootStore finishes wiring up `this.uiStore`.
27
+ function createLayoutSignal(rootStore) {
28
+ const root = {
29
+ visible: signals_core_module_w(()=>!!rootStore.activeConversation.value && (rootStore.messages.hasStartChatBotEvent.value || rootStore.messages.hasShowWidgetEvent.value))
30
+ };
31
+ const background = {
32
+ visible: signals_core_module_w(()=>rootStore.maximizedState.value !== types_MaximizedState.NONE)
33
+ };
34
+ const preview = {
35
+ hidden: signals_core_module_w(()=>!rootStore.messages.preview.visible.value || rootStore.displayMode.opened.value || rootStore.input.state.value === types_InputState.FIELD_REQUEST && rootStore.displayMode.collapsed.value)
36
+ };
37
+ const input = {
38
+ hidden: signals_core_module_w(()=>rootStore.displayMode.closed.value)
39
+ };
40
+ const artifact = {
41
+ hidden: signals_core_module_w(()=>!rootStore.artifact.message.value)
42
+ };
43
+ const chat = {
44
+ hidden: signals_core_module_w(()=>rootStore.displayMode.minimized.value)
45
+ };
46
+ const launcher = {
47
+ hidden: signals_core_module_w(()=>{
48
+ if (!rootStore.displayMode.closed.value) return true;
49
+ const adapter = rootStore.getCallUiAdapter();
50
+ return adapter.state.isInCall.value || adapter.state.isVideoLoading.value;
51
+ })
52
+ };
53
+ const multimodal = {
54
+ hidden: signals_core_module_w(()=>{
55
+ var _rootStore_callStore_value;
56
+ return rootStore.conversationMode.text.value || rootStore.displayMode.closed.value && !((_rootStore_callStore_value = rootStore.callStore.value) == null ? void 0 : _rootStore_callStore_value.dailyCall.value) || rootStore.displayMode.collapsedCenter.value && !rootStore.conversationMode.video.value;
57
+ }),
58
+ usesFlipAnimation: signals_core_module_w(()=>rootStore.conversationMode.video.value || undefined)
59
+ };
60
+ const controls = {
61
+ hidden: signals_core_module_w(()=>!rootStore.displayMode.collapsed.value)
62
+ };
63
+ const privacy = {
64
+ hidden: signals_core_module_w(()=>{
65
+ var _rootStore_activePrivacyDisclosure_value, _rootStore_privacyDisclosures_value;
66
+ return !((_rootStore_activePrivacyDisclosure_value = rootStore.activePrivacyDisclosure.value) == null ? void 0 : _rootStore_activePrivacyDisclosure_value.markdown) || rootStore.displayMode.closed.value || ((_rootStore_privacyDisclosures_value = rootStore.privacyDisclosures.value) == null ? void 0 : _rootStore_privacyDisclosures_value.displayMode) === "inline";
67
+ })
68
+ };
69
+ const toolbar = {
70
+ hidden: signals_core_module_w(()=>rootStore.displayMode.collapsedCenter.value || rootStore.displayMode.closed.value || rootStore.displayMode.collapsedRight.value && rootStore.conversationMode.multimodal.value)
71
+ };
72
+ return {
73
+ root,
74
+ background,
75
+ containers: {
76
+ TYPES: CONTAINER_TYPES,
77
+ preview,
78
+ input,
79
+ privacy,
80
+ multimodal,
81
+ toolbar,
82
+ chat,
83
+ launcher,
84
+ artifact,
85
+ controls
86
+ },
87
+ additionalState: {
88
+ isInCall: signals_core_module_w(()=>{
89
+ const adapter = rootStore.getCallUiAdapter();
90
+ return adapter.state.isInCall.value || adapter.state.isVideoLoading.value;
91
+ }),
92
+ isDialogActive: signals_core_module_w(()=>rootStore.maximizedState.value !== types_MaximizedState.NONE && rootStore.displayMode.opened.value)
93
+ },
94
+ rotateToPortraitOverlay: signals_core_module_w(()=>isLandscapeNarrow.value && (!rootStore.displayMode.minimized.value || rootStore.maximizedState.value !== types_MaximizedState.NONE))
95
+ };
96
+ }
97
+
98
+ export { createLayoutSignal };
@@ -0,0 +1,207 @@
1
+ import { signals_core_module_d, signals_core_module_w } from "../../../js/multimodal_v2.js";
2
+
3
+ /* eslint-disable no-continue */
4
+ function createMessagesSignal(initialMessages) {
5
+ if (initialMessages === void 0) initialMessages = [];
6
+ const messages = signals_core_module_d(initialMessages);
7
+ const unread = signals_core_module_w(()=>messages.value.filter((message)=>!message.isRead));
8
+ const hasPounceDismissed = signals_core_module_w(()=>{
9
+ return messages.value.some((message)=>message.type === "event" && message.eventType === "pounce_dismissed");
10
+ });
11
+ const hasAiSdrCallRequested = signals_core_module_w(()=>{
12
+ return messages.value.some((message)=>message.type === "event" && message.eventType === "ai_sdr_call_requested");
13
+ });
14
+ const hasVisitorTextMessage = signals_core_module_w(()=>{
15
+ return messages.value.some((message)=>message.type === "text" && message.isOwn);
16
+ });
17
+ const pounceMessage = signals_core_module_w(()=>findPounceMessage(messages.value));
18
+ // A human rep pounce *is* a rep text message (userId + !isAp). We only want to
19
+ // deactivate when a rep sends a follow-up *after* the pounce. findPounceMessage
20
+ // returns the last pre-visitor pounce candidate, so earlier rep messages in a
21
+ // back-to-back pounce sequence sit at indices ≤ pounceIndex — keep them out of
22
+ // the follow-up check by gating on index > pounceIndex.
23
+ const hasRepTextMessage = signals_core_module_w(()=>{
24
+ const pounceMsg = pounceMessage.value;
25
+ const pounceIndex = pounceMsg ? messages.value.indexOf(pounceMsg) : -1;
26
+ return messages.value.some((message, index)=>index > pounceIndex && isRepTextMessage(message));
27
+ });
28
+ // Gating on hasStartChatBotEvent would permanently block non-AI pounces (human rep
29
+ // pounces and old-Piper auto pounces), which never emit startChatBot. Require a
30
+ // pounce candidate message instead — otherwise empty or event-only conversations
31
+ // would satisfy every deactivation check and spuriously mark pounceActive true,
32
+ // causing callers (e.g. pounceTrackingStore init in root_store) to start tracking
33
+ // and URL observation on conversations that have no pounce at all.
34
+ const pounceActive = signals_core_module_w(()=>!!pounceMessage.value && !hasPounceDismissed.value && !hasAiSdrCallRequested.value && !hasVisitorTextMessage.value && !hasRepTextMessage.value);
35
+ const pounce = createPounceMessageSignal(pounceMessage, pounceActive);
36
+ // The latest unread human-rep text message that arrives *after* the pounce. Once the
37
+ // visitor engages, the pounce bubble deactivates (see pounceActive), so a rep who
38
+ // replies while the visitor has the widget minimized used to have no collapsed-state
39
+ // surfacing at all — only the tab-title flash. This re-uses the preview bubble to show
40
+ // that reply (QAI-5515). Gating on index > pounceIndex (as hasRepTextMessage does)
41
+ // keeps a rep text that is itself part of a pre-engagement pounce sequence (e.g. a rep
42
+ // greeting followed by a shared_offer/field_request) from being treated as a follow-up
43
+ // and hijacking the pounce the bubble should show.
44
+ const repFollowUpMessage = signals_core_module_w(()=>{
45
+ var _messages_value_findLast;
46
+ const pounceMsg = pounceMessage.value;
47
+ const pounceIndex = pounceMsg ? messages.value.indexOf(pounceMsg) : -1;
48
+ return (_messages_value_findLast = messages.value.findLast((message, index)=>index > pounceIndex && isRepTextMessage(message) && !message.isRead)) != null ? _messages_value_findLast : null;
49
+ });
50
+ const preview = createPreviewSignal(pounce, repFollowUpMessage);
51
+ // WORKAROUND: Deduplicate consecutive field entries for the same field.
52
+ // Coffee's voice agent can call save_field twice for the same value due to a
53
+ // race condition in _end_turnstile_execution: when a cancelled response's
54
+ // cleanup clears _last_user_input/_current_turnstile_execution_id, it can
55
+ // clobber state that the next turn has already written. This causes the LLM
56
+ // to process the same input twice, creating duplicate field entries.
57
+ // Remove this once the root cause in Coffee is fixed.
58
+ const dedupedMessages = signals_core_module_w(()=>{
59
+ const result = [];
60
+ for (const message of messages.value){
61
+ if (!isDuplicateFieldEntry(message, result[result.length - 1])) {
62
+ result.push(message);
63
+ }
64
+ }
65
+ return result;
66
+ });
67
+ const visible = signals_core_module_w(()=>{
68
+ const visible = [];
69
+ const startIndex = pounce.value ? dedupedMessages.value.indexOf(pounce.value) : 0;
70
+ for(let i = startIndex; i < dedupedMessages.value.length; i++){
71
+ const message = dedupedMessages.value[i];
72
+ if (message.type === "event") continue;
73
+ // After visitor interaction, add read messages, stop at first unread streamable message
74
+ if (!isStreamableMessage(message)) {
75
+ visible.push(message);
76
+ } else if (message.isRead) {
77
+ visible.push(message);
78
+ } else {
79
+ visible.push(message);
80
+ return visible.sort((a, b)=>new Date(a.createdAt).getTime() - new Date(b.createdAt).getTime());
81
+ }
82
+ }
83
+ return visible.sort((a, b)=>new Date(a.createdAt).getTime() - new Date(b.createdAt).getTime());
84
+ });
85
+ const hasOpenEvent = signals_core_module_w(()=>{
86
+ return messages.value.some((message)=>message.type === "event" && message.eventType === "open");
87
+ });
88
+ const hasStartChatBotEvent = signals_core_module_w(()=>{
89
+ return messages.value.some((message)=>message.type === "event" && message.eventType === "startChatBot");
90
+ });
91
+ const hasShowWidgetEvent = signals_core_module_w(()=>{
92
+ return messages.value.some((message)=>message.type === "event" && message.eventType === "showWidget");
93
+ });
94
+ const repliedToIds = signals_core_module_w(()=>{
95
+ return new Set(messages.value.filter((message)=>message.replyToId).map((message)=>message.replyToId.toString()));
96
+ });
97
+ return Object.assign(messages, {
98
+ pounce,
99
+ preview,
100
+ repFollowUpMessage,
101
+ unread,
102
+ visible,
103
+ hasOpenEvent,
104
+ hasStartChatBotEvent,
105
+ hasShowWidgetEvent,
106
+ hasPounceDismissed,
107
+ hasAiSdrCallRequested,
108
+ hasVisitorTextMessage,
109
+ hasRepTextMessage,
110
+ pounceActive,
111
+ repliedToIds
112
+ });
113
+ }
114
+ function createPounceMessageSignal(pounceMessage, pounceActive) {
115
+ return Object.assign(pounceMessage, {
116
+ visible: signals_core_module_w(()=>!!pounceMessage.value && !pounceMessage.value.isRead && pounceActive.value)
117
+ });
118
+ }
119
+ // The collapsed preview bubble shows the active pounce, or — once the pounce has
120
+ // deactivated — an unread rep follow-up. The layout hides the whole preview area
121
+ // while the widget is opened, so this only surfaces in minimized/collapsed states.
122
+ function createPreviewSignal(pounce, repFollowUpMessage) {
123
+ // `value` is the message the bubble would render and stays visibility-independent
124
+ // (the parent gates on `visible`): prefer an unread rep follow-up, otherwise fall
125
+ // back to the pounce message. During an active pounce there is no post-engagement
126
+ // rep follow-up, so this resolves to the pounce as before.
127
+ const previewMessage = signals_core_module_w(()=>{
128
+ var _repFollowUpMessage_value;
129
+ return (_repFollowUpMessage_value = repFollowUpMessage.value) != null ? _repFollowUpMessage_value : pounce.value;
130
+ });
131
+ return Object.assign(previewMessage, {
132
+ visible: signals_core_module_w(()=>pounce.visible.value || !!repFollowUpMessage.value)
133
+ });
134
+ }
135
+ function findPounceMessage(messages) {
136
+ let pounceMessage = null;
137
+ for (const message of messages){
138
+ if (message.type === "event") continue;
139
+ if (isPounceMessage(message)) {
140
+ pounceMessage = message;
141
+ continue;
142
+ }
143
+ // First visitor message found - stop searching
144
+ if (isVisitorMessage(message)) break;
145
+ }
146
+ return pounceMessage;
147
+ }
148
+ /** Non-own text messages that are animated letter-by-letter and gated on read status. */ function isStreamableMessage(message) {
149
+ var _message_offerContent_variation, _message_offerContent;
150
+ if (message.isRead) return false;
151
+ if (message.type === "text" && message.text && !message.isOwn) {
152
+ return true;
153
+ }
154
+ if (message.type === "shared_offer" && (message.text || ((_message_offerContent = message.offerContent) == null ? void 0 : (_message_offerContent_variation = _message_offerContent.variation) == null ? void 0 : _message_offerContent_variation.textContent))) {
155
+ return true;
156
+ }
157
+ return false;
158
+ }
159
+ function isPounceMessage(message) {
160
+ // Non visitor text messages are pounce messages
161
+ if (message.type === "text" && !message.isOwn) return true;
162
+ // Shared offers are pounce messages
163
+ if (message.type === "shared_offer") return true;
164
+ // Field requests are pounce messages
165
+ if (message.type === "field_request") return true;
166
+ // All other messages cannot be pounced
167
+ return false;
168
+ }
169
+ /**
170
+ * A human rep's text message — as opposed to a visitor message or an AI auto-pounce.
171
+ * Matches the rep-message predicate used by v2_adapter and the pounce tracking stores.
172
+ */ function isRepTextMessage(message) {
173
+ return message.type === "text" && !message.isOwn && "userId" in message && !!message.userId && "isAp" in message && !message.isAp;
174
+ }
175
+ /** Messages originating from the visitor: own text, own field entries, and calendar picks. */ function isVisitorMessage(message) {
176
+ // Text messages are visitor messages if they are own
177
+ if (message.type === "text") return message.isOwn;
178
+ // Field entries are visitor messages if they are own
179
+ if (message.type === "field_entry") return message.isOwn;
180
+ // Calendar event picks are visitor messages
181
+ if (message.type === "calendar_event_pick") return true;
182
+ // All other messages are not visitor messages
183
+ return false;
184
+ }
185
+ function isEventMessage(message, type) {
186
+ return message.type === "event" && (type ? message.eventType === type : true);
187
+ }
188
+ /** System-level messages (e.g. participant_joined) that are neither visitor nor assistant. */ function isSystemMessage(message) {
189
+ return message.type === "system";
190
+ }
191
+ /** Everything that is not a visitor message, event, or system message. */ function isAssistantMessage(message) {
192
+ return !isVisitorMessage(message) && !isEventMessage(message) && !isSystemMessage(message);
193
+ }
194
+ // WORKAROUND: See comment in deduped computed above. Remove once Coffee root cause is fixed.
195
+ function isDuplicateFieldEntry(message, prev) {
196
+ if (message.type !== "field_entry" || (prev == null ? void 0 : prev.type) !== "field_entry") return false;
197
+ if (message.fieldId != null && prev.fieldId != null) {
198
+ return message.fieldId === prev.fieldId && message.text === prev.text;
199
+ }
200
+ return message.text === prev.text;
201
+ }
202
+
203
+ var messages_signal_isPounceMessage = /* unused export */ undefined;
204
+ var messages_signal_isRepTextMessage = /* unused export */ undefined;
205
+ var messages_signal_isSystemMessage = /* unused export */ undefined;
206
+ var messages_signal_isVisitorMessage = /* unused export */ undefined;
207
+ export { createMessagesSignal, isAssistantMessage, isEventMessage, isStreamableMessage, messages_signal_isPounceMessage as isPounceMessage, messages_signal_isRepTextMessage as isRepTextMessage, messages_signal_isSystemMessage as isSystemMessage, messages_signal_isVisitorMessage as isVisitorMessage };