@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,46 @@
1
+ /**
2
+ * This class is used to wrap CSS rules in a wrapper that can be used to create new CSS rule with the original rule wrapper.
3
+ * Example:
4
+ *
5
+ * Given a CSS rule:
6
+ * @media (max-width: 1000px) {
7
+ * .test-selector {
8
+ * color: red;
9
+ * }
10
+ * }
11
+ *
12
+ * We can create a new rule wrapper with the original rule wrapper by calling the `getRuleWrapper` method.
13
+ *
14
+ * const wrapper = RuleWrapper.getRuleWrapper(rule);
15
+ * wrapper would be:
16
+ * @media (max-width: 1000px) {
17
+ * {{QUALIFIED_CSS_PLACEHOLDER}}
18
+ * }
19
+ *
20
+ * We can then use the wrapper to create a new rule wrapper with the original rule wrapper by calling the `wrap` method.
21
+ *
22
+ * const newWrapper = RuleWrapper.wrap(wrapper, ".test-selector { color: blue; }");
23
+ * newWrapper would be:
24
+ * @media (max-width: 1000px) {
25
+ * .test-selector { color: blue; }
26
+ * }
27
+ */ class RuleWrapper {
28
+ static wrap(wrapper, cssText) {
29
+ return wrapper ? wrapper.replace(this.CSS_PLACEHOLDER, cssText) : cssText;
30
+ }
31
+ static getRuleWrapper(rule) {
32
+ if (!rule.parentRule) return undefined;
33
+ let parent = rule;
34
+ let finalCssText = this.CSS_PLACEHOLDER;
35
+ while(parent.parentRule){
36
+ if (parent.parentRule instanceof CSSGroupingRule) {
37
+ finalCssText = parent.parentRule.cssText.split("{")[0] + " { " + finalCssText + " }";
38
+ }
39
+ parent = parent.parentRule;
40
+ }
41
+ return finalCssText;
42
+ }
43
+ }
44
+ RuleWrapper.CSS_PLACEHOLDER = "{{QUALIFIED_CSS_PLACEHOLDER}}";
45
+
46
+ export { RuleWrapper };
@@ -0,0 +1,23 @@
1
+ /**
2
+ * This class contains the set of rules and selectors that should be observed
3
+ * And also a selector that should be ignored
4
+ */ class SelectorObservable {
5
+ get value() {
6
+ return this._value;
7
+ }
8
+ computeValue() {
9
+ const includedSelector = [
10
+ this.includedSelector,
11
+ ...this.rules.map((rule)=>rule.selector)
12
+ ].join(",");
13
+ return ":is(" + includedSelector + "):not(:is(" + this.ignoredSelector + "))";
14
+ }
15
+ constructor(rules, includedSelector, ignoredSelector){
16
+ this.rules = rules;
17
+ this.includedSelector = includedSelector;
18
+ this.ignoredSelector = ignoredSelector;
19
+ this._value = this.computeValue();
20
+ }
21
+ }
22
+
23
+ export { SelectorObservable };
@@ -0,0 +1,61 @@
1
+ import { StyleSelectorObserver } from "./StyleSelectorObserver/StyleSelectorObserver.js";
2
+
3
+
4
+ /**
5
+ * A class that uses the style selector observer to compute a selector that can be used to filter
6
+ * the elements we want to shift. This selector gets all the fixed, sticky elements and all the absolute elements relative to the body across all media queries.
7
+ * We then use these elements as a base set of candidates to apply further filtering.
8
+ */ class SelectorObserver {
9
+ get current() {
10
+ var _this__current;
11
+ return (_this__current = this._current) != null ? _this__current : this._current = this.compute(this.styleSelectorObserver.current);
12
+ }
13
+ init() {
14
+ this.isDisposed = false;
15
+ this.styleSelectorObserver.observe(this.onSelectorChange, this.properties);
16
+ }
17
+ dispose() {
18
+ this.styleSelectorObserver.unobserve(this.onSelectorChange);
19
+ this.isDisposed = true;
20
+ this.observers.clear();
21
+ }
22
+ observe(observer) {
23
+ this.observers.add(observer);
24
+ return ()=>this.unobserve(observer);
25
+ }
26
+ unobserve(observer) {
27
+ this.observers.delete(observer);
28
+ }
29
+ // eslint-disable-next-line no-useless-constructor
30
+ constructor(compute, properties){
31
+ this.compute = compute;
32
+ this.properties = properties;
33
+ this.styleSelectorObserver = StyleSelectorObserver.getInstance();
34
+ this.isDisposed = true;
35
+ this._current = null;
36
+ this.observers = new Set();
37
+ this.onSelectorChange = ()=>{
38
+ if (this.isDisposed) return;
39
+ const { didChange, newObservable } = this.computeNewObservable();
40
+ if (!didChange) return;
41
+ this._current = newObservable;
42
+ for (const observer of this.observers){
43
+ observer(newObservable);
44
+ }
45
+ };
46
+ this.computeNewObservable = ()=>{
47
+ var _this__current;
48
+ const newObservable = this.compute(this.styleSelectorObserver.current);
49
+ if (((_this__current = this._current) == null ? void 0 : _this__current.value) === newObservable.value) return {
50
+ didChange: false,
51
+ newObservable
52
+ };
53
+ return {
54
+ didChange: true,
55
+ newObservable
56
+ };
57
+ };
58
+ }
59
+ }
60
+
61
+ export { SelectorObserver };
@@ -0,0 +1,45 @@
1
+ /**
2
+ * Class managing shifted elements
3
+ * It keeps track of all the elements that are currently shifted
4
+ * And sets the data attribute on the elements that are shifted
5
+ */ class ShiftedElementsManager {
6
+ get elements() {
7
+ return this.shiftedElements;
8
+ }
9
+ init() {
10
+ this.isDisposed = false;
11
+ this.shiftedElements = new Set();
12
+ }
13
+ dispose() {
14
+ this.isDisposed = true;
15
+ if (!this.shiftedElements) return;
16
+ for (const element of this.shiftedElements){
17
+ element.removeAttribute(this.options.dataAttribute);
18
+ }
19
+ this.shiftedElements.clear();
20
+ this.shiftedElements = null;
21
+ }
22
+ add(element) {
23
+ if (!this.shiftedElements || this.isDisposed) return;
24
+ this.shiftedElements.add(element);
25
+ element.setAttribute(this.options.dataAttribute, "true");
26
+ }
27
+ has(element) {
28
+ var _ref;
29
+ var _this_shiftedElements;
30
+ return (_ref = (_this_shiftedElements = this.shiftedElements) == null ? void 0 : _this_shiftedElements.has(element)) != null ? _ref : false;
31
+ }
32
+ remove(element) {
33
+ if (!this.shiftedElements || this.isDisposed) return;
34
+ this.shiftedElements.delete(element);
35
+ element.removeAttribute(this.options.dataAttribute);
36
+ }
37
+ // eslint-disable-next-line no-useless-constructor
38
+ constructor(options){
39
+ this.options = options;
40
+ this.shiftedElements = null;
41
+ this.isDisposed = true;
42
+ }
43
+ }
44
+
45
+ export { ShiftedElementsManager };
@@ -0,0 +1,37 @@
1
+ import { StyleElementWrapper } from "./StyleElementWrapper.js";
2
+
3
+
4
+ const InstancesConfig = {
5
+ header: [
6
+ "htmlOffset",
7
+ "externalStylesOffset"
8
+ ]
9
+ };
10
+ // Class that manages style elements
11
+ // It is used to ensure we dispose of all the style elements when the instance is disposed
12
+ class StyleElementManager {
13
+ static get(key) {
14
+ var _this_instances_key;
15
+ return (_this_instances_key = this.instances[key]) != null ? _this_instances_key : this.instances[key] = new StyleElementManager(key, InstancesConfig[key]);
16
+ }
17
+ get(id) {
18
+ return this.styleElements[id];
19
+ }
20
+ dispose() {
21
+ for (const id of this.ids){
22
+ this.styleElements[id].dispose();
23
+ }
24
+ delete StyleElementManager.instances[this.key];
25
+ }
26
+ constructor(key, ids){
27
+ this.key = key;
28
+ this.ids = ids;
29
+ this.styleElements = {};
30
+ for (const id of ids){
31
+ this.styleElements[id] = new StyleElementWrapper();
32
+ }
33
+ }
34
+ }
35
+ StyleElementManager.instances = {};
36
+
37
+ export { StyleElementManager };
@@ -0,0 +1,62 @@
1
+ // Wrapper for a style element that can be added to the document head
2
+ // It is used to create and manage a style element
3
+ const STYLE_ELEMENT_ID_PREFIX = "qualified-offer-style-element-";
4
+ /**
5
+ * Wrapper around a style element that can be added to the document head
6
+ * It is used to create and manage a style element
7
+ */ class StyleElementWrapper {
8
+ static isStyleElementWrapper(element) {
9
+ return element.id.startsWith(STYLE_ELEMENT_ID_PREFIX);
10
+ }
11
+ addRule(cssText) {
12
+ this._rules.push(cssText);
13
+ }
14
+ clearRules() {
15
+ this._rules = [];
16
+ }
17
+ writeRules() {
18
+ let css = "";
19
+ for (const cssText of this._rules){
20
+ css += cssText;
21
+ }
22
+ this.styleElement.textContent = css;
23
+ }
24
+ init(param) {
25
+ let { disabled = false, rules = [] } = param === void 0 ? {} : param;
26
+ for (const cssText of rules){
27
+ this.addRule(cssText);
28
+ }
29
+ rules.length > 0 && this.writeRules();
30
+ !disabled && this.enable();
31
+ }
32
+ dispose() {
33
+ this.styleElement.textContent = "";
34
+ this._rules = [];
35
+ this.styleElement.remove();
36
+ }
37
+ enable() {
38
+ if (!this.styleElement.isConnected) {
39
+ document.head.appendChild(this.styleElement);
40
+ // Check if the style element is connected otherwise append it to the body
41
+ // Some websites won't allow the style element to be appended to the head
42
+ queueMicrotask(()=>{
43
+ if (!this.styleElement.isConnected) {
44
+ document.body.appendChild(this.styleElement);
45
+ }
46
+ });
47
+ }
48
+ }
49
+ disable() {
50
+ this.styleElement.remove();
51
+ }
52
+ constructor(){
53
+ this.id = "" + STYLE_ELEMENT_ID_PREFIX + StyleElementWrapper.id++;
54
+ // DO NOT USE a Set here, it will break the order of the rules
55
+ this._rules = [];
56
+ this.styleElement = document.createElement("style");
57
+ this.styleElement.id = this.id;
58
+ }
59
+ }
60
+ StyleElementWrapper.id = 0;
61
+
62
+ export { StyleElementWrapper };
@@ -0,0 +1,45 @@
1
+ import { RuleWrapper } from "../RuleWrapper.js";
2
+
3
+
4
+ class ReadonlyObservedSelectorValue {
5
+ get rules() {
6
+ return this.observedSelectorValue.rules;
7
+ }
8
+ // eslint-disable-next-line no-useless-constructor
9
+ constructor(observedSelectorValue){
10
+ this.observedSelectorValue = observedSelectorValue;
11
+ }
12
+ }
13
+ class ObservedSelectorValue {
14
+ get rules() {
15
+ return this._rulesInfo;
16
+ }
17
+ hasRule(rule) {
18
+ return this._rules.has(rule);
19
+ }
20
+ addRule(rule) {
21
+ if (this._rules.has(rule)) return;
22
+ this._rules.add(rule);
23
+ this._rulesInfo.add({
24
+ rule,
25
+ selector: rule.selectorText,
26
+ priority: rule.style.getPropertyPriority(this.property),
27
+ value: rule.style.getPropertyValue(this.property),
28
+ wrapper: RuleWrapper.getRuleWrapper(rule)
29
+ });
30
+ }
31
+ clear() {
32
+ this._rules.clear();
33
+ this._rulesInfo.clear();
34
+ }
35
+ // eslint-disable-next-line no-useless-constructor
36
+ constructor(property){
37
+ this.property = property;
38
+ this.readonly = new ReadonlyObservedSelectorValue(this);
39
+ this._rulesInfo = new Set();
40
+ this._rules = new Set();
41
+ }
42
+ }
43
+
44
+ var ObservedSelectorValue_ReadonlyObservedSelectorValue = /* unused export */ undefined;
45
+ export { ObservedSelectorValue, ObservedSelectorValue_ReadonlyObservedSelectorValue as ReadonlyObservedSelectorValue };
@@ -0,0 +1,62 @@
1
+ import { ObservedSelectorValue } from "./ObservedSelectorValue.js";
2
+ import { PROPERTIES } from "./constants.js";
3
+
4
+
5
+
6
+ class ReadonlyObservedSelectors {
7
+ get(key) {
8
+ return this.selectors.get(key);
9
+ }
10
+ // eslint-disable-next-line no-useless-constructor
11
+ constructor(selectors){
12
+ this.selectors = selectors;
13
+ }
14
+ }
15
+ class ObservedSelectors {
16
+ get(key) {
17
+ // Map is guaranteed to have the key since we initialize it in the constructor
18
+ return this._map.get(key).readonly;
19
+ }
20
+ getChangedProperties(param) {
21
+ let { clear = false } = param === void 0 ? {} : param;
22
+ const changedProperties = new Set(this._changedProperties);
23
+ if (clear) this.clearChangedProperties();
24
+ return changedProperties;
25
+ }
26
+ addRule(key, rule) {
27
+ const value = this._map.get(key);
28
+ if (value.hasRule(rule)) return;
29
+ value.addRule(rule);
30
+ this.setChangedProperties(key);
31
+ }
32
+ clear() {
33
+ for (const value of this._map.values()){
34
+ value.clear();
35
+ }
36
+ this.setChangedProperties(...this._map.keys());
37
+ }
38
+ setChangedProperties() {
39
+ for(var _len = arguments.length, properties = new Array(_len), _key = 0; _key < _len; _key++){
40
+ properties[_key] = arguments[_key];
41
+ }
42
+ for (const property of properties){
43
+ this._changedProperties.add(property);
44
+ }
45
+ }
46
+ clearChangedProperties() {
47
+ this._changedProperties.clear();
48
+ }
49
+ constructor(){
50
+ this.readonly = new ReadonlyObservedSelectors(this);
51
+ this._map = new Map();
52
+ this._changedProperties = new Set();
53
+ this._map = new Map();
54
+ for (const [property, value] of PROPERTIES){
55
+ const key = property + ":" + value;
56
+ this._map.set(key, new ObservedSelectorValue(property));
57
+ }
58
+ }
59
+ }
60
+
61
+ var ObservedSelectors_ReadonlyObservedSelectors = /* unused export */ undefined;
62
+ export { ObservedSelectors, ObservedSelectors_ReadonlyObservedSelectors as ReadonlyObservedSelectors };
@@ -0,0 +1,294 @@
1
+ import { __webpack_require__ } from "../../../../../../../../js/runtime.js";
2
+ import { _debugLog } from "../../../../../../../../src/smart_website/utils.js";
3
+ import { AsyncBatchProcessor } from "../AsyncBatchProcessor.js";
4
+ import { StyleElementWrapper } from "../StyleElementWrapper.js";
5
+ import { ObservedSelectors } from "./ObservedSelectors.js";
6
+ import "../../../../../../../../widget/utils/native_globals.js";
7
+ import { PROPERTIES, OBSERVED_PROPERTIES } from "./constants.js";
8
+
9
+ /* provided dependency */ var StyleSelectorObserver_setTimeout = __webpack_require__(68034).pS;
10
+ /* eslint-disable no-continue */
11
+
12
+
13
+
14
+
15
+ const CROSSORIGIN_NODE_DATA_ATTRIBUTE = "qualified-offer-crossorigin-node";
16
+ const CROSSORIGIN_NODE_LOAD_TIMEOUT = 5000;
17
+ /**
18
+ * This class observes the stylesheets and style tags in the document and
19
+ * keeps track of the selectors that have defined the observed properties.
20
+ *
21
+ * Example: we have the following observed property: ["position", "fixed"]
22
+ * If we have the following css rules:
23
+ *
24
+ * .header { position: fixed; top: 0; }
25
+ * .footer { position: fixed; bottom: 0; }
26
+ * div > p { position: fixed; }
27
+ *
28
+ * The class will keep track of the selectors that have the property "position: fixed"
29
+ * and also include the elements with inline styles that have the property "position: fixed"
30
+ * and will return the following map:
31
+ *
32
+ * Map {
33
+ * "position:fixed" => "*[style*="position:fixed"]`, `*[style*="position: fixed"], .header, .footer, div > p"
34
+ * }
35
+ *
36
+ * This offers a faster way to get the elements that have the required properties
37
+ * than iterating over all the elements and checking their computed styles.
38
+ */ class StyleSelectorObserver {
39
+ static setConfig(config) {
40
+ this.config = config;
41
+ }
42
+ static getInstance() {
43
+ var _this_instance;
44
+ return (_this_instance = this.instance) != null ? _this_instance : this.instance = new StyleSelectorObserver();
45
+ }
46
+ get current() {
47
+ return this.observedSelectors.readonly;
48
+ }
49
+ // This method is used to lazy load the observer and start observing the stylesheets
50
+ async load() {
51
+ var _ref;
52
+ var _StyleSelectorObserver_config, _this_crossOriginStylesheetsHolder_shadowRoot;
53
+ if (this.initialized) return;
54
+ this.observe(StyleSelectorObserver.noop);
55
+ if (!((_StyleSelectorObserver_config = StyleSelectorObserver.config) == null ? void 0 : _StyleSelectorObserver_config.handleCrossOriginStylesheets) || !this.crossOriginStylesheetsHolder) {
56
+ return;
57
+ }
58
+ const promises = [];
59
+ const nodes = (_ref = (_this_crossOriginStylesheetsHolder_shadowRoot = this.crossOriginStylesheetsHolder.shadowRoot) == null ? void 0 : _this_crossOriginStylesheetsHolder_shadowRoot.querySelectorAll("link")) != null ? _ref : [];
60
+ for (const node of nodes){
61
+ promises.push(new Promise((resolve, reject)=>{
62
+ try {
63
+ if (node.sheet) {
64
+ resolve(void 0);
65
+ } else {
66
+ node.addEventListener("load", resolve);
67
+ node.addEventListener("error", reject);
68
+ node.addEventListener("abort", reject);
69
+ node.addEventListener("timeout", reject);
70
+ }
71
+ } catch (unused) {
72
+ reject(new Error("Failed to load cross-origin stylesheet"));
73
+ }
74
+ }));
75
+ }
76
+ await Promise.race([
77
+ Promise.allSettled(promises).then(()=>this.selectorUpdateQueue.executeImmediately()),
78
+ // Ensure we don't block the header from rendering
79
+ new Promise((resolve)=>StyleSelectorObserver_setTimeout(resolve, CROSSORIGIN_NODE_LOAD_TIMEOUT))
80
+ ]);
81
+ }
82
+ observe(observer, properties) {
83
+ if (properties === void 0) properties = OBSERVED_PROPERTIES;
84
+ if (observer !== StyleSelectorObserver.noop) {
85
+ // Disconnect the lazy observer when a real observer is added
86
+ this.unobserve(StyleSelectorObserver.noop);
87
+ }
88
+ this.initialize();
89
+ this.observers.set(observer, properties);
90
+ // Request immediate callback
91
+ this.selectorUpdateQueue.executeImmediately();
92
+ return ()=>this.unobserve(observer);
93
+ }
94
+ unobserve(observer) {
95
+ this.observers.delete(observer);
96
+ }
97
+ dispose() {
98
+ var _this_styleNodesObserver, _this_crossOriginStylesheetsHolder;
99
+ (_this_styleNodesObserver = this.styleNodesObserver) == null ? void 0 : _this_styleNodesObserver.disconnect();
100
+ this.styleNodesObserver = null;
101
+ this.selectorUpdateQueue.clearAndCancel();
102
+ (_this_crossOriginStylesheetsHolder = this.crossOriginStylesheetsHolder) == null ? void 0 : _this_crossOriginStylesheetsHolder.remove();
103
+ this.observers.clear();
104
+ this.observedSelectors.clear();
105
+ this.initialized = false;
106
+ }
107
+ initialize() {
108
+ if (this.initialized) return;
109
+ this.initialized = true;
110
+ // Create a hidden div to hold cross-origin stylesheets
111
+ this.insertCrossOriginStylesheetHolder();
112
+ // Listen for new stylesheets and style tags and add the rules that have a the required properties
113
+ this.styleNodesObserver = new MutationObserver(this.handleStyleMutations);
114
+ this.styleNodesObserver.observe(document.head, {
115
+ childList: true
116
+ });
117
+ this.styleNodesObserver.observe(document.body, {
118
+ childList: true
119
+ });
120
+ this.styleNodesObserver.observe(this.crossOriginStylesheetsHolder.shadowRoot, {
121
+ childList: true
122
+ });
123
+ // Go through all stylesheets and find all the rules that have the required properties
124
+ for (const sheet of document.styleSheets){
125
+ this.handle(sheet);
126
+ }
127
+ }
128
+ insertCrossOriginStylesheetHolder() {
129
+ this.crossOriginStylesheetsHolder = document.createElement("div");
130
+ this.crossOriginStylesheetsHolder.style.display = "none";
131
+ this.crossOriginStylesheetsHolder.attachShadow({
132
+ mode: "open"
133
+ });
134
+ document.body.appendChild(this.crossOriginStylesheetsHolder);
135
+ }
136
+ shouldHandle(nodeOrHref) {
137
+ const url = new URL(nodeOrHref instanceof HTMLLinkElement ? nodeOrHref.href : nodeOrHref);
138
+ // Skip family stylesheets since we don't care about fonts
139
+ if (url.searchParams.has("family")) {
140
+ return false;
141
+ }
142
+ return true;
143
+ }
144
+ handle(node) {
145
+ if (node instanceof HTMLStyleElement && StyleElementWrapper.isStyleElementWrapper(node)) {
146
+ return;
147
+ }
148
+ const sheet = node instanceof CSSStyleSheet ? node : node.sheet;
149
+ if (!sheet) return;
150
+ let rules = null;
151
+ const isCrossOrigin = sheet.href && !sheet.href.startsWith(window.location.origin) && sheet.ownerNode instanceof HTMLLinkElement && (sheet.ownerNode.crossOrigin === null || sheet.ownerNode.crossOrigin === "use-credentials");
152
+ if (isCrossOrigin) {
153
+ this.handleCrossOriginStylesheet(sheet);
154
+ return;
155
+ }
156
+ try {
157
+ rules = sheet.cssRules;
158
+ } catch (unused) {
159
+ var _sheet_href;
160
+ this.debugLog("Failed to get css rules", {
161
+ href: (_sheet_href = sheet.href) != null ? _sheet_href : "no href"
162
+ });
163
+ if (node instanceof HTMLElement && node.hasAttribute(CROSSORIGIN_NODE_DATA_ATTRIBUTE)) {
164
+ var _sheet_href1;
165
+ this.debugLog("Failed to get css rules with cross origin node", {
166
+ href: (_sheet_href1 = sheet.href) != null ? _sheet_href1 : "no href"
167
+ });
168
+ node.remove();
169
+ } else {
170
+ // Handle in case the above condition didn't catch it
171
+ this.handleCrossOriginStylesheet(sheet);
172
+ }
173
+ return;
174
+ }
175
+ this.iterateRules(rules);
176
+ if (node instanceof HTMLElement && node.hasAttribute(CROSSORIGIN_NODE_DATA_ATTRIBUTE)) {
177
+ node.remove();
178
+ }
179
+ }
180
+ handleCrossOriginStylesheet(sheet) {
181
+ var _StyleSelectorObserver_config, _StyleSelectorObserver_config1, _this_crossOriginStylesheetsHolder_shadowRoot, _this_crossOriginStylesheetsHolder;
182
+ if (!((_StyleSelectorObserver_config = StyleSelectorObserver.config) == null ? void 0 : _StyleSelectorObserver_config.handleCrossOriginStylesheets) || !sheet.href || !this.shouldHandle(sheet.href)) {
183
+ return;
184
+ }
185
+ let node;
186
+ if (sheet.ownerNode instanceof HTMLLinkElement) {
187
+ node = sheet.ownerNode.cloneNode();
188
+ } else {
189
+ var _sheet_href;
190
+ node = document.createElement("link");
191
+ node.href = (_sheet_href = sheet.href) != null ? _sheet_href : "";
192
+ node.rel = "stylesheet";
193
+ }
194
+ // Optionally add cache-busting param to force a fresh request.
195
+ // Without this, the browser may serve a cached non-CORS response
196
+ // (from the original request without crossOrigin), causing CORS errors.
197
+ if ((_StyleSelectorObserver_config1 = StyleSelectorObserver.config) == null ? void 0 : _StyleSelectorObserver_config1.cacheBustCrossOriginStylesheets) {
198
+ const url = new URL(node.href);
199
+ url.searchParams.set("_q_cache_bust", "1");
200
+ node.href = url.toString();
201
+ }
202
+ node.crossOrigin = "anonymous";
203
+ node.setAttribute("async", "");
204
+ node.setAttribute(CROSSORIGIN_NODE_DATA_ATTRIBUTE, "");
205
+ (_this_crossOriginStylesheetsHolder = this.crossOriginStylesheetsHolder) == null ? void 0 : (_this_crossOriginStylesheetsHolder_shadowRoot = _this_crossOriginStylesheetsHolder.shadowRoot) == null ? void 0 : _this_crossOriginStylesheetsHolder_shadowRoot.appendChild(node);
206
+ }
207
+ iterateRules(rules) {
208
+ for (const rule of rules != null ? rules : []){
209
+ if (rule instanceof CSSGroupingRule) {
210
+ this.iterateRules(rule.cssRules);
211
+ }
212
+ if (rule instanceof CSSImportRule) {
213
+ if (rule.styleSheet) {
214
+ this.handle(rule.styleSheet);
215
+ }
216
+ continue;
217
+ }
218
+ if (!(rule instanceof CSSStyleRule)) continue;
219
+ for(let i = 0; i < PROPERTIES.length; i++){
220
+ const [property, value] = PROPERTIES[i];
221
+ const styleValue = rule.style.getPropertyValue(property);
222
+ if (!styleValue) continue;
223
+ if (value === "*") {
224
+ this.observedSelectors.addRule("" + property + ":*", rule);
225
+ } else if (styleValue === value) {
226
+ this.observedSelectors.addRule(property + ":" + value, rule);
227
+ }
228
+ }
229
+ }
230
+ }
231
+ requestUpdate(node) {
232
+ this.selectorUpdateQueue.add(node);
233
+ // No need to process if there is no listeners
234
+ if (this.observers.size === 0) return;
235
+ this.selectorUpdateQueue.scheduleExecution();
236
+ }
237
+ notify(properties) {
238
+ for (const [cb, observerProperties] of this.observers){
239
+ if (observerProperties.some((property)=>properties.has(property))) {
240
+ cb(this.current);
241
+ }
242
+ }
243
+ }
244
+ debugLog(message, context) {
245
+ _debugLog("[StyleSelectorObserver] " + message, context);
246
+ }
247
+ // Make sure the instance is a singleton to ensure that we don't have multiple observers
248
+ // eslint-disable-next-line no-useless-constructor
249
+ constructor(){
250
+ this.initialized = false;
251
+ this.observedSelectors = new ObservedSelectors();
252
+ this.styleNodesObserver = null;
253
+ this.crossOriginStylesheetsHolder = null;
254
+ this.observers = new Map();
255
+ this.handleStyleMutations = (mutations)=>{
256
+ const nodes = new Set();
257
+ for (const mutation of mutations){
258
+ if (mutation.type === "childList") {
259
+ for (const node of mutation.addedNodes){
260
+ if (node instanceof HTMLStyleElement || node instanceof HTMLLinkElement && node.rel === "stylesheet") {
261
+ nodes.add(node);
262
+ }
263
+ }
264
+ }
265
+ }
266
+ for (const node of nodes){
267
+ if (node instanceof HTMLStyleElement) {
268
+ this.requestUpdate(node);
269
+ }
270
+ if (node instanceof HTMLLinkElement && this.shouldHandle(node)) {
271
+ node.addEventListener("load", ()=>this.requestUpdate(node));
272
+ }
273
+ }
274
+ };
275
+ this.processNodes = (nodes)=>{
276
+ for (const node of nodes){
277
+ this.handle(node);
278
+ }
279
+ // No need to request callback if there is no listeners
280
+ if (this.observers.size === 0) return;
281
+ const changedProperties = this.observedSelectors.getChangedProperties({
282
+ clear: true
283
+ });
284
+ if (changedProperties.size === 0) return;
285
+ this.notify(changedProperties);
286
+ };
287
+ this.selectorUpdateQueue = new AsyncBatchProcessor(this.processNodes);
288
+ }
289
+ }
290
+ StyleSelectorObserver.config = null;
291
+ StyleSelectorObserver.instance = null;
292
+ StyleSelectorObserver.noop = ()=>{};
293
+
294
+ export { StyleSelectorObserver };