@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.
- package/41842993ec71d6628e4949e9a22b146b.svg +3 -0
- package/7271f3433ed82fc7f56adcd9e30275f4.svg +17 -0
- package/LICENSE.txt +82 -0
- package/components/helpers/entriesStringValidations.js +69 -0
- package/components/helpers/languages.js +32 -0
- package/components/shared/assertUnreachable.js +5 -0
- package/components/shared/controls/imageCropperHelpers.js +43 -0
- package/components/shared/meetingLoadingProgressSpec.js +116 -0
- package/constants.generated.js +9883 -0
- package/css/widget/multimodal_v2/host.split-css.css +162 -0
- package/css/widget/multimodal_v2/index.split-css.panda.css +5240 -0
- package/css/widget/widget.split-css.css +100 -0
- package/fonts/inter/Inter-Black.woff +0 -0
- package/fonts/inter/Inter-Black.woff2 +0 -0
- package/fonts/inter/Inter-BlackItalic.woff +0 -0
- package/fonts/inter/Inter-BlackItalic.woff2 +0 -0
- package/fonts/inter/Inter-Bold.woff +0 -0
- package/fonts/inter/Inter-Bold.woff2 +0 -0
- package/fonts/inter/Inter-BoldItalic.woff +0 -0
- package/fonts/inter/Inter-BoldItalic.woff2 +0 -0
- package/fonts/inter/Inter-ExtraBold.woff +0 -0
- package/fonts/inter/Inter-ExtraBold.woff2 +0 -0
- package/fonts/inter/Inter-ExtraBoldItalic.woff +0 -0
- package/fonts/inter/Inter-ExtraBoldItalic.woff2 +0 -0
- package/fonts/inter/Inter-ExtraLight.woff +0 -0
- package/fonts/inter/Inter-ExtraLight.woff2 +0 -0
- package/fonts/inter/Inter-ExtraLightItalic.woff +0 -0
- package/fonts/inter/Inter-ExtraLightItalic.woff2 +0 -0
- package/fonts/inter/Inter-Italic.woff +0 -0
- package/fonts/inter/Inter-Italic.woff2 +0 -0
- package/fonts/inter/Inter-Light.woff +0 -0
- package/fonts/inter/Inter-Light.woff2 +0 -0
- package/fonts/inter/Inter-LightItalic.woff +0 -0
- package/fonts/inter/Inter-LightItalic.woff2 +0 -0
- package/fonts/inter/Inter-Medium.woff +0 -0
- package/fonts/inter/Inter-Medium.woff2 +0 -0
- package/fonts/inter/Inter-MediumItalic.woff +0 -0
- package/fonts/inter/Inter-MediumItalic.woff2 +0 -0
- package/fonts/inter/Inter-Regular.woff +0 -0
- package/fonts/inter/Inter-Regular.woff2 +0 -0
- package/fonts/inter/Inter-SemiBold.woff +0 -0
- package/fonts/inter/Inter-SemiBold.woff2 +0 -0
- package/fonts/inter/Inter-SemiBoldItalic.woff +0 -0
- package/fonts/inter/Inter-SemiBoldItalic.woff2 +0 -0
- package/fonts/inter/Inter-Thin.woff +0 -0
- package/fonts/inter/Inter-Thin.woff2 +0 -0
- package/fonts/inter/Inter-ThinItalic.woff +0 -0
- package/fonts/inter/Inter-ThinItalic.woff2 +0 -0
- package/fonts/inter/Inter-italic.var.woff2 +0 -0
- package/fonts/inter/Inter-roman.var.woff2 +0 -0
- package/images/close.js +63 -0
- package/images/logo.js +22 -0
- package/js/4101.js +19721 -0
- package/js/daily-esm.js +9948 -0
- package/js/date-fns.js +427 -0
- package/js/multimodal_v2.js +1653 -0
- package/js/runtime.js +109 -0
- package/media/Inter-Black.796be8d8bf.woff2 +0 -0
- package/media/Inter-Black.b254104c56.woff +0 -0
- package/media/Inter-BlackItalic.70306b0eae.woff +0 -0
- package/media/Inter-BlackItalic.752f1e0aaa.woff2 +0 -0
- package/media/Inter-Bold.579e0f95ca.woff2 +0 -0
- package/media/Inter-Bold.b1234477a5.woff +0 -0
- package/media/Inter-BoldItalic.3d0d804323.woff +0 -0
- package/media/Inter-BoldItalic.828a494e04.woff2 +0 -0
- package/media/Inter-ExtraBold.208a9e6c99.woff +0 -0
- package/media/Inter-ExtraBold.d65f028165.woff2 +0 -0
- package/media/Inter-ExtraBoldItalic.30429962ec.woff +0 -0
- package/media/Inter-ExtraBoldItalic.8c7eac5ce3.woff2 +0 -0
- package/media/Inter-ExtraLight.15c082a57d.woff +0 -0
- package/media/Inter-ExtraLight.6824177d1e.woff2 +0 -0
- package/media/Inter-ExtraLightItalic.05138dddf3.woff2 +0 -0
- package/media/Inter-ExtraLightItalic.3beee54f59.woff +0 -0
- package/media/Inter-Italic.9beab78452.woff +0 -0
- package/media/Inter-Italic.d593a8df79.woff2 +0 -0
- package/media/Inter-Light.27083fa637.woff2 +0 -0
- package/media/Inter-Light.91dfddd842.woff +0 -0
- package/media/Inter-LightItalic.0a783b89b3.woff2 +0 -0
- package/media/Inter-LightItalic.f8ccf2813f.woff +0 -0
- package/media/Inter-Medium.dc792b508e.woff2 +0 -0
- package/media/Inter-Medium.ec7dd2d9d8.woff +0 -0
- package/media/Inter-MediumItalic.17301e5b40.woff +0 -0
- package/media/Inter-MediumItalic.84d3493a9f.woff2 +0 -0
- package/media/Inter-Regular.f1f0c35b32.woff2 +0 -0
- package/media/Inter-Regular.f356e84aa0.woff +0 -0
- package/media/Inter-SemiBold.55027e4724.woff +0 -0
- package/media/Inter-SemiBold.fcb100c760.woff2 +0 -0
- package/media/Inter-SemiBoldItalic.ab9105ed3b.woff +0 -0
- package/media/Inter-SemiBoldItalic.d90f295d0c.woff2 +0 -0
- package/media/Inter-Thin.16325d9b0f.woff +0 -0
- package/media/Inter-Thin.dafaa44d99.woff2 +0 -0
- package/media/Inter-ThinItalic.4fc662b3cf.woff2 +0 -0
- package/media/Inter-ThinItalic.d3d8994788.woff +0 -0
- package/media/Inter-italic.var.958a0b9742.woff2 +0 -0
- package/media/Inter-roman.var.b2129c009c.woff2 +0 -0
- package/package.json +20 -0
- package/packs/widget/api/docking/docking_host.js +97 -0
- package/packs/widget/api/docking/index.js +294 -0
- package/packs/widget/api/docking/shared.js +164 -0
- package/packs/widget/api/docking/viewport_lock.js +488 -0
- package/packs/widget/api/docking/viewport_resize.js +1203 -0
- package/packs/widget/esm/fonts/Inter-Black.796be8d8bf.woff2 +0 -0
- package/packs/widget/esm/fonts/Inter-Black.b254104c56.woff +0 -0
- package/packs/widget/esm/fonts/Inter-BlackItalic.70306b0eae.woff +0 -0
- package/packs/widget/esm/fonts/Inter-BlackItalic.752f1e0aaa.woff2 +0 -0
- package/packs/widget/esm/fonts/Inter-Bold.579e0f95ca.woff2 +0 -0
- package/packs/widget/esm/fonts/Inter-Bold.b1234477a5.woff +0 -0
- package/packs/widget/esm/fonts/Inter-BoldItalic.3d0d804323.woff +0 -0
- package/packs/widget/esm/fonts/Inter-BoldItalic.828a494e04.woff2 +0 -0
- package/packs/widget/esm/fonts/Inter-ExtraBold.208a9e6c99.woff +0 -0
- package/packs/widget/esm/fonts/Inter-ExtraBold.d65f028165.woff2 +0 -0
- package/packs/widget/esm/fonts/Inter-ExtraBoldItalic.30429962ec.woff +0 -0
- package/packs/widget/esm/fonts/Inter-ExtraBoldItalic.8c7eac5ce3.woff2 +0 -0
- package/packs/widget/esm/fonts/Inter-ExtraLight.15c082a57d.woff +0 -0
- package/packs/widget/esm/fonts/Inter-ExtraLight.6824177d1e.woff2 +0 -0
- package/packs/widget/esm/fonts/Inter-ExtraLightItalic.05138dddf3.woff2 +0 -0
- package/packs/widget/esm/fonts/Inter-ExtraLightItalic.3beee54f59.woff +0 -0
- package/packs/widget/esm/fonts/Inter-Italic.9beab78452.woff +0 -0
- package/packs/widget/esm/fonts/Inter-Italic.d593a8df79.woff2 +0 -0
- package/packs/widget/esm/fonts/Inter-Light.27083fa637.woff2 +0 -0
- package/packs/widget/esm/fonts/Inter-Light.91dfddd842.woff +0 -0
- package/packs/widget/esm/fonts/Inter-LightItalic.0a783b89b3.woff2 +0 -0
- package/packs/widget/esm/fonts/Inter-LightItalic.f8ccf2813f.woff +0 -0
- package/packs/widget/esm/fonts/Inter-Medium.dc792b508e.woff2 +0 -0
- package/packs/widget/esm/fonts/Inter-Medium.ec7dd2d9d8.woff +0 -0
- package/packs/widget/esm/fonts/Inter-MediumItalic.17301e5b40.woff +0 -0
- package/packs/widget/esm/fonts/Inter-MediumItalic.84d3493a9f.woff2 +0 -0
- package/packs/widget/esm/fonts/Inter-Regular.f1f0c35b32.woff2 +0 -0
- package/packs/widget/esm/fonts/Inter-Regular.f356e84aa0.woff +0 -0
- package/packs/widget/esm/fonts/Inter-SemiBold.55027e4724.woff +0 -0
- package/packs/widget/esm/fonts/Inter-SemiBold.fcb100c760.woff2 +0 -0
- package/packs/widget/esm/fonts/Inter-SemiBoldItalic.ab9105ed3b.woff +0 -0
- package/packs/widget/esm/fonts/Inter-SemiBoldItalic.d90f295d0c.woff2 +0 -0
- package/packs/widget/esm/fonts/Inter-Thin.16325d9b0f.woff +0 -0
- package/packs/widget/esm/fonts/Inter-Thin.dafaa44d99.woff2 +0 -0
- package/packs/widget/esm/fonts/Inter-ThinItalic.4fc662b3cf.woff2 +0 -0
- package/packs/widget/esm/fonts/Inter-ThinItalic.d3d8994788.woff +0 -0
- package/packs/widget/esm/fonts/Inter-italic.var.958a0b9742.woff2 +0 -0
- package/packs/widget/esm/fonts/Inter-roman.var.b2129c009c.woff2 +0 -0
- package/packs/widget/esm/index.js +183 -0
- package/packs/widget/esm/qualified.css +5502 -0
- package/routes/app/offers/scripts/OfferMainScript.js +154 -0
- package/routes/app/offers/scripts/constants.js +71 -0
- package/routes/app/offers/scripts/main/ButtonManager.js +65 -0
- package/routes/app/offers/scripts/main/FormManager.js +325 -0
- package/routes/app/offers/scripts/main/MainContext.js +19 -0
- package/routes/app/offers/scripts/main/OfferManager.js +91 -0
- package/routes/app/offers/scripts/main/TriggerManager.js +125 -0
- package/routes/app/offers/scripts/rendering/ContentManager.js +53 -0
- package/routes/app/offers/scripts/rendering/LocationManager.js +83 -0
- package/routes/app/offers/scripts/rendering/RenderedOffer.js +188 -0
- package/routes/app/offers/scripts/rendering/Renderer.js +69 -0
- package/routes/app/offers/scripts/rendering/RenderingInitializer.js +62 -0
- package/routes/app/offers/scripts/rendering/animations/AnimationManager.js +31 -0
- package/routes/app/offers/scripts/rendering/animations/AnimationManagerFooter.js +81 -0
- package/routes/app/offers/scripts/rendering/animations/AnimationManagerHeader.js +81 -0
- package/routes/app/offers/scripts/rendering/animations/AnimationManagerModal.js +117 -0
- package/routes/app/offers/scripts/rendering/animations/AnimationManagerSidebar.js +75 -0
- package/routes/app/offers/scripts/rendering/animations/AnimationResult.js +43 -0
- package/routes/app/offers/scripts/rendering/animations/Animator.js +78 -0
- package/routes/app/offers/scripts/rendering/animations/BaseAnimationManager.js +25 -0
- package/routes/app/offers/scripts/rendering/lib/BaseComponent.js +106 -0
- package/routes/app/offers/scripts/rendering/lib/FormComponent.js +134 -0
- package/routes/app/offers/scripts/rendering/lib/OfferComponent.js +144 -0
- package/routes/app/offers/scripts/rendering/lib/ScrollbarWidth.js +27 -0
- package/routes/app/offers/scripts/rendering/lib/decorators.js +20 -0
- package/routes/app/offers/scripts/rendering/locations/CSSVarsManager.js +66 -0
- package/routes/app/offers/scripts/rendering/locations/ElementResizeObserver.js +49 -0
- package/routes/app/offers/scripts/rendering/locations/footer.js +53 -0
- package/routes/app/offers/scripts/rendering/locations/header/AsyncBatchProcessor.js +70 -0
- package/routes/app/offers/scripts/rendering/locations/header/CSSTransitionObserver.js +182 -0
- package/routes/app/offers/scripts/rendering/locations/header/ElementStyleChangeObserver.js +138 -0
- package/routes/app/offers/scripts/rendering/locations/header/ExternalStyleManager.js +110 -0
- package/routes/app/offers/scripts/rendering/locations/header/Header.js +353 -0
- package/routes/app/offers/scripts/rendering/locations/header/InlineStyleManager.js +105 -0
- package/routes/app/offers/scripts/rendering/locations/header/MatchingElementsObserver.js +107 -0
- package/routes/app/offers/scripts/rendering/locations/header/NewElementsObserver.js +129 -0
- package/routes/app/offers/scripts/rendering/locations/header/RuleWrapper.js +46 -0
- package/routes/app/offers/scripts/rendering/locations/header/SelectorObservable.js +23 -0
- package/routes/app/offers/scripts/rendering/locations/header/SelectorObserver.js +61 -0
- package/routes/app/offers/scripts/rendering/locations/header/ShiftedElementsManager.js +45 -0
- package/routes/app/offers/scripts/rendering/locations/header/StyleElementManager.js +37 -0
- package/routes/app/offers/scripts/rendering/locations/header/StyleElementWrapper.js +62 -0
- package/routes/app/offers/scripts/rendering/locations/header/StyleSelectorObserver/ObservedSelectorValue.js +45 -0
- package/routes/app/offers/scripts/rendering/locations/header/StyleSelectorObserver/ObservedSelectors.js +62 -0
- package/routes/app/offers/scripts/rendering/locations/header/StyleSelectorObserver/StyleSelectorObserver.js +294 -0
- package/routes/app/offers/scripts/rendering/locations/header/StyleSelectorObserver/constants.js +21 -0
- package/routes/app/offers/scripts/rendering/locations/header/WindowResizeObserver.js +43 -0
- package/routes/app/offers/scripts/rendering/locations/header/utils.js +25 -0
- package/routes/app/offers/scripts/rendering/locations/popup.js +66 -0
- package/routes/app/offers/scripts/rendering/locations/sidebar.js +21 -0
- package/routes/app/offers/scripts/rendering/variations/ButtonBanner.js +105 -0
- package/routes/app/offers/scripts/rendering/variations/ButtonModal.js +114 -0
- package/routes/app/offers/scripts/rendering/variations/FormBanner.js +214 -0
- package/routes/app/offers/scripts/rendering/variations/FormModal.js +325 -0
- package/routes/app/offers/scripts/rendering/variations/LinkBanner.js +105 -0
- package/routes/app/offers/scripts/rendering/variations/components/Body.js +29 -0
- package/routes/app/offers/scripts/rendering/variations/components/Button.js +128 -0
- package/routes/app/offers/scripts/rendering/variations/components/DismissButton.js +39 -0
- package/routes/app/offers/scripts/rendering/variations/components/ForegroundImageBanner.js +110 -0
- package/routes/app/offers/scripts/rendering/variations/components/ForegroundImageModal.js +128 -0
- package/routes/app/offers/scripts/rendering/variations/components/Headline.js +94 -0
- package/routes/app/offers/scripts/rendering/variations/components/MultiFieldForm.js +302 -0
- package/routes/app/offers/scripts/rendering/variations/components/Tooltip.js +74 -0
- package/routes/app/offers/scripts/rendering/variations/icons.js +15 -0
- package/routes/app/offers/scripts/utils.js +115 -0
- package/routes/app/offers/utils/HTMLUtils.js +10 -0
- package/routes/app/offers/utils/createTypeGuard.js +32 -0
- package/routes/app/offers/utils/promise-utils.js +22 -0
- package/routes/app/websiteBuilder/stores/storeHelpers.js +18 -0
- package/sounds/message-initial.mp3 +0 -0
- package/sounds/message-received.mp3 +0 -0
- package/sounds/message-sent.mp3 +0 -0
- package/src/arrays.js +15 -0
- package/src/audio.js +106 -0
- package/src/bounded-set.js +16 -0
- package/src/bounding_box_observer.js +129 -0
- package/src/decorators.js +29 -0
- package/src/dom.js +128 -0
- package/src/dom_roots.js +26 -0
- package/src/embedded_forms/EmbeddedForm.js +638 -0
- package/src/embedded_forms/QualifiedEmbeddedForm.js +51 -0
- package/src/embedded_forms/QualifiedFormField.js +137 -0
- package/src/embedded_forms/utils.js +17 -0
- package/src/graphql-types.js +1686 -0
- package/src/iframes.js +86 -0
- package/src/localstorage.js +43 -0
- package/src/mirror/Shipper.js +133 -0
- package/src/mirror/constants.generated.js +13 -0
- package/src/mirror/constants.js +238 -0
- package/src/mirror/shipper/ChangeQueue.js +155 -0
- package/src/mirror/shipper/DOMSerializer.js +392 -0
- package/src/mirror/shipper/observers.js +441 -0
- package/src/mirror/shipper/utils.js +98 -0
- package/src/mixins/disposable.js +125 -0
- package/src/mixins/injectable.js +37 -0
- package/src/personalizations/personalization-manager.js +110 -0
- package/src/personalizations/strategies/node-freezing-strategy.js +174 -0
- package/src/personalizations/utils.js +187 -0
- package/src/promises.js +107 -0
- package/src/proxy.js +144 -0
- package/src/qualified_root.js +35 -0
- package/src/query_params.js +55 -0
- package/src/shadow-dom-helper.js +63 -0
- package/src/singleton_host.js +39 -0
- package/src/smart_website/trigger.js +49 -0
- package/src/smart_website/utils.js +149 -0
- package/src/string.js +53 -0
- package/src/timezone.js +57 -0
- package/src/timing.js +49 -0
- package/src/type-utils.js +76 -0
- package/src/url-utils.js +102 -0
- package/src/url.js +50 -0
- package/src/utils.js +72 -0
- package/src/validation.js.js +29 -0
- package/src/validation_ts.js +6 -0
- package/vendor/actioncable/adapters.js +6 -0
- package/vendor/actioncable/connection.js +204 -0
- package/vendor/actioncable/connection_monitor.js +129 -0
- package/vendor/actioncable/consumer.js +91 -0
- package/vendor/actioncable/index.js +34 -0
- package/vendor/actioncable/internal.js +22 -0
- package/vendor/actioncable/logger.js +28 -0
- package/vendor/actioncable/subscription.js +93 -0
- package/vendor/actioncable/subscriptions.js +89 -0
- package/vendor/open-telemetry-idgenerator.js +43 -0
- package/widget/analytics/facebook_tracker.js +8 -0
- package/widget/analytics/google_analytics_tracker.js +83 -0
- package/widget/analytics/google_tag_manager_tracker.js +22 -0
- package/widget/analytics.js +58 -0
- package/widget/api_handler/api_handler.js +730 -0
- package/widget/api_handler/base_api_handler.js +249 -0
- package/widget/booker_intent_tracker.js +391 -0
- package/widget/booker_outcome_tracker.js +329 -0
- package/widget/capture_widget_exceptions.js +150 -0
- package/widget/channel.js +282 -0
- package/widget/composite_experience_adapter.js +101 -0
- package/widget/constants.generated.js +350 -0
- package/widget/constants.js +21 -0
- package/widget/container.js +193 -0
- package/widget/content_activity_emitter.js +36 -0
- package/widget/data360_visitor.js +67 -0
- package/widget/date_provider.js +11 -0
- package/widget/debug_mode_state.js +175 -0
- package/widget/dummy_module.js +9 -0
- package/widget/eloqua_visitor.js +17 -0
- package/widget/form_cta_booker_intent.js +246 -0
- package/widget/hubspot_visitor.js +39 -0
- package/widget/inline_meeting_booker_page.js +90 -0
- package/widget/local_state/abstract_local_state.js +38 -0
- package/widget/local_state/debug_state/abstract_debug_flow.js +29 -0
- package/widget/local_state/debug_state/custom_form_flow.js +14 -0
- package/widget/local_state/debug_state/hubspot_form_flow.js +19 -0
- package/widget/local_state/debug_state/hubspot_v4_form_flow.js +19 -0
- package/widget/local_state/debug_state/marketo_form_flow.js +20 -0
- package/widget/local_state/debug_state/pardot_form_flow.js +18 -0
- package/widget/local_state/debug_state.js +362 -0
- package/widget/local_state/trace_state.js +20 -0
- package/widget/location_provider.js +9 -0
- package/widget/marketo_visitor.js +39 -0
- package/widget/meetings/tracing/buttons_forms_triggering_tracer.js +124 -0
- package/widget/meetings/tracing/spans/button_spans.js +18 -0
- package/widget/meetings/tracing/spans/form_spans.js +11 -0
- package/widget/multimodal_v2/assets_preloader.js +97 -0
- package/widget/multimodal_v2/components/AppLayout.js +93 -0
- package/widget/multimodal_v2/components/CursorOverlay.js +93 -0
- package/widget/multimodal_v2/components/PointerRectOverlay.js +74 -0
- package/widget/multimodal_v2/components/app/Artifact.js +109 -0
- package/widget/multimodal_v2/components/app/Background.js +27 -0
- package/widget/multimodal_v2/components/app/CalendarLoadingContent.js +255 -0
- package/widget/multimodal_v2/components/app/Chat.js +39 -0
- package/widget/multimodal_v2/components/app/CookieConsentModal.js +149 -0
- package/widget/multimodal_v2/components/app/Foreground.js +48 -0
- package/widget/multimodal_v2/components/app/HiddenInput.js +41 -0
- package/widget/multimodal_v2/components/app/Input.js +72 -0
- package/widget/multimodal_v2/components/app/LightboxExperience.js +769 -0
- package/widget/multimodal_v2/components/app/LoadingOverlay.js +97 -0
- package/widget/multimodal_v2/components/app/Main.js +985 -0
- package/widget/multimodal_v2/components/app/MessengerButton.js +160 -0
- package/widget/multimodal_v2/components/app/Multimodal.js +17 -0
- package/widget/multimodal_v2/components/app/OverlayControls.js +79 -0
- package/widget/multimodal_v2/components/app/Preview.js +32 -0
- package/widget/multimodal_v2/components/app/PrivacyDisclosure.js +57 -0
- package/widget/multimodal_v2/components/app/RotateDeviceOverlay.js +70 -0
- package/widget/multimodal_v2/components/app/Toolbar.js +156 -0
- package/widget/multimodal_v2/components/chat/ChatComposer.js +129 -0
- package/widget/multimodal_v2/components/chat/ChatInputForm.js +398 -0
- package/widget/multimodal_v2/components/chat/ColdStartQuestions.js +354 -0
- package/widget/multimodal_v2/components/chat/ComposerErrorBanner.js +62 -0
- package/widget/multimodal_v2/components/chat/PostCallSurvey.js +359 -0
- package/widget/multimodal_v2/components/chat/preview/FieldRequestRenderer.js +41 -0
- package/widget/multimodal_v2/components/chat/preview/PreviewMessageRenderer.js +60 -0
- package/widget/multimodal_v2/components/chat/preview/SharedOfferRenderer.js +143 -0
- package/widget/multimodal_v2/components/chat/preview/TextRenderer.js +27 -0
- package/widget/multimodal_v2/components/chat/preview/TimelinePreview.js +254 -0
- package/widget/multimodal_v2/components/chat/timeline/CalendarEventOfferRenderer.js +103 -0
- package/widget/multimodal_v2/components/chat/timeline/CalendarEventPickRenderer.js +148 -0
- package/widget/multimodal_v2/components/chat/timeline/FieldEntryRenderer.js +84 -0
- package/widget/multimodal_v2/components/chat/timeline/FieldRequestRenderer.js +56 -0
- package/widget/multimodal_v2/components/chat/timeline/InlinePrivacyDisclosure.js +66 -0
- package/widget/multimodal_v2/components/chat/timeline/LinkPreviewCard.js +70 -0
- package/widget/multimodal_v2/components/chat/timeline/MessageEntry.js +88 -0
- package/widget/multimodal_v2/components/chat/timeline/PresentContentRenderer.js +30 -0
- package/widget/multimodal_v2/components/chat/timeline/PresentDeckRenderer.js +279 -0
- package/widget/multimodal_v2/components/chat/timeline/PresentVideoRenderer.js +131 -0
- package/widget/multimodal_v2/components/chat/timeline/ShareContentRenderer.js +59 -0
- package/widget/multimodal_v2/components/chat/timeline/SharedOfferRenderer.js +131 -0
- package/widget/multimodal_v2/components/chat/timeline/SystemRenderer.js +82 -0
- package/widget/multimodal_v2/components/chat/timeline/TextRenderer.js +66 -0
- package/widget/multimodal_v2/components/chat/timeline/Timeline.js +158 -0
- package/widget/multimodal_v2/components/debug/DebugMultimodalPanel.js +327 -0
- package/widget/multimodal_v2/components/decks/index.js +160 -0
- package/widget/multimodal_v2/components/field_request/BooleanField.js +77 -0
- package/widget/multimodal_v2/components/field_request/FieldComponents.js +69 -0
- package/widget/multimodal_v2/components/field_request/Form.js +87 -0
- package/widget/multimodal_v2/components/field_request/MultiPicklistField.js +240 -0
- package/widget/multimodal_v2/components/field_request/PicklistField.js +166 -0
- package/widget/multimodal_v2/components/field_request/SingleLineInputField.js +69 -0
- package/widget/multimodal_v2/components/field_request/TextField.js +37 -0
- package/widget/multimodal_v2/components/field_request/index.js +170 -0
- package/widget/multimodal_v2/components/helpers/AutoScroll.js +37 -0
- package/widget/multimodal_v2/components/helpers/ErrorBoundary.js +53 -0
- package/widget/multimodal_v2/components/helpers/FocusTrapDialog.js +26 -0
- package/widget/multimodal_v2/components/helpers/ImpressionTracker.js +94 -0
- package/widget/multimodal_v2/components/helpers/ListRenderer.js +37 -0
- package/widget/multimodal_v2/components/helpers/Localization.js +76 -0
- package/widget/multimodal_v2/components/helpers/Persisted.js +166 -0
- package/widget/multimodal_v2/components/helpers/RichText.js +358 -0
- package/widget/multimodal_v2/components/helpers/ScreenReaderHeading.js +17 -0
- package/widget/multimodal_v2/components/helpers/Thumbnail.js +190 -0
- package/widget/multimodal_v2/components/helpers/VisuallyHidden.js +41 -0
- package/widget/multimodal_v2/components/helpers/content_click_payloads.js +58 -0
- package/widget/multimodal_v2/components/helpers/useDraggable.js +103 -0
- package/widget/multimodal_v2/components/helpers/useTextOverflow.js +44 -0
- package/widget/multimodal_v2/components/lightbox_gather/index.js +741 -0
- package/widget/multimodal_v2/components/meetings/ArtifactEntryPoint.js +252 -0
- package/widget/multimodal_v2/components/meetings/MeetingAdditionalAttendees.js +325 -0
- package/widget/multimodal_v2/components/meetings/MeetingBookerEntry.js +100 -0
- package/widget/multimodal_v2/components/meetings/MeetingDetailsCard.js +99 -0
- package/widget/multimodal_v2/components/meetings/MeetingErrorBanner.js +62 -0
- package/widget/multimodal_v2/components/meetings/MeetingOfferEmailStep.js +239 -0
- package/widget/multimodal_v2/components/meetings/MeetingOfferFooter.js +104 -0
- package/widget/multimodal_v2/components/meetings/MeetingOfferSelectionStep.js +60 -0
- package/widget/multimodal_v2/components/meetings/MeetingRepHeader.js +222 -0
- package/widget/multimodal_v2/components/meetings/MeetingStepShell.js +92 -0
- package/widget/multimodal_v2/components/meetings/MeetingSummaryRail.js +515 -0
- package/widget/multimodal_v2/components/meetings/MeetingTimeSelector.js +603 -0
- package/widget/multimodal_v2/components/meetings/MonthDatePicker.js +422 -0
- package/widget/multimodal_v2/components/meetings/NavigationButtons.js +76 -0
- package/widget/multimodal_v2/components/meetings/TimeSlotHeader.js +357 -0
- package/widget/multimodal_v2/components/meetings/WeekViewHeader.js +20 -0
- package/widget/multimodal_v2/components/meetings/constants.js +7 -0
- package/widget/multimodal_v2/components/meetings/index.js +47 -0
- package/widget/multimodal_v2/components/meetings/utils.js +328 -0
- package/widget/multimodal_v2/components/multimodal/Audio.js +28 -0
- package/widget/multimodal_v2/components/multimodal/Controls.js +188 -0
- package/widget/multimodal_v2/components/multimodal/LiveVideo.js +63 -0
- package/widget/multimodal_v2/components/multimodal/MultiModalComponent.js +424 -0
- package/widget/multimodal_v2/components/multimodal/MultimodalAvatar.js +36 -0
- package/widget/multimodal_v2/components/multimodal/OrbAvatar.js +326 -0
- package/widget/multimodal_v2/components/multimodal/Status.js +220 -0
- package/widget/multimodal_v2/components/multimodal/VideoAvatar.js +24 -0
- package/widget/multimodal_v2/components/multimodal/VideoPreview.js +114 -0
- package/widget/multimodal_v2/components/multimodal/useAudioLevelMonitoring.js +96 -0
- package/widget/multimodal_v2/components/multimodal/useMultimodal.js +434 -0
- package/widget/multimodal_v2/components/presentations/index.js +372 -0
- package/widget/multimodal_v2/components/shared/Avatar.js +92 -0
- package/widget/multimodal_v2/components/shared/AvatarGroup.js +135 -0
- package/widget/multimodal_v2/components/shared/Button.js +245 -0
- package/widget/multimodal_v2/components/shared/ButtonGroup.js +133 -0
- package/widget/multimodal_v2/components/shared/ComposerForm.js +98 -0
- package/widget/multimodal_v2/components/shared/SpeakingIndicator.js +239 -0
- package/widget/multimodal_v2/components/shared/ThinkingAnimation.js +165 -0
- package/widget/multimodal_v2/components/shared/Tooltip.js +266 -0
- package/widget/multimodal_v2/components/shared/controls/Dropdown.js +79 -0
- package/widget/multimodal_v2/components/shared/controls/PillToggle.js +142 -0
- package/widget/multimodal_v2/components/shared/controls/TextArea.js +114 -0
- package/widget/multimodal_v2/components/shared/toolCallLabels.js +12 -0
- package/widget/multimodal_v2/components/slides/SlidesThumbnail.js +47 -0
- package/widget/multimodal_v2/components/slides/index.js +61 -0
- package/widget/multimodal_v2/constants.js +88 -0
- package/widget/multimodal_v2/host.split-css.js +2 -0
- package/widget/multimodal_v2/host.string.js +96 -0
- package/widget/multimodal_v2/images/icons.js +582 -0
- package/widget/multimodal_v2/images/posters/piper_low_res.jpg +0 -0
- package/widget/multimodal_v2/index.js +23 -0
- package/widget/multimodal_v2/index.panda.js +28 -0
- package/widget/multimodal_v2/index.split-css.panda.js +2 -0
- package/widget/multimodal_v2/inline_meeting_booker.js +182 -0
- package/widget/multimodal_v2/locales/cs.js +196 -0
- package/widget/multimodal_v2/locales/da.js +196 -0
- package/widget/multimodal_v2/locales/de.js +196 -0
- package/widget/multimodal_v2/locales/en.js +196 -0
- package/widget/multimodal_v2/locales/en_AU.js +197 -0
- package/widget/multimodal_v2/locales/en_GB.js +197 -0
- package/widget/multimodal_v2/locales/es.js +197 -0
- package/widget/multimodal_v2/locales/es_LA.js +196 -0
- package/widget/multimodal_v2/locales/fi.js +196 -0
- package/widget/multimodal_v2/locales/fr.js +197 -0
- package/widget/multimodal_v2/locales/fr_CA.js +196 -0
- package/widget/multimodal_v2/locales/id.js +196 -0
- package/widget/multimodal_v2/locales/index.js +48 -0
- package/widget/multimodal_v2/locales/it.js +196 -0
- package/widget/multimodal_v2/locales/ja.js +196 -0
- package/widget/multimodal_v2/locales/ko.js +196 -0
- package/widget/multimodal_v2/locales/nb.js +196 -0
- package/widget/multimodal_v2/locales/nl.js +196 -0
- package/widget/multimodal_v2/locales/pl.js +196 -0
- package/widget/multimodal_v2/locales/pt_BR.js +196 -0
- package/widget/multimodal_v2/locales/ru.js +196 -0
- package/widget/multimodal_v2/locales/sv.js +196 -0
- package/widget/multimodal_v2/locales/th.js +196 -0
- package/widget/multimodal_v2/locales/tr.js +196 -0
- package/widget/multimodal_v2/locales/vi.js +196 -0
- package/widget/multimodal_v2/locales/zh_CN.js +196 -0
- package/widget/multimodal_v2/locales/zh_TW.js +196 -0
- package/widget/multimodal_v2/multimodal.js +633 -0
- package/widget/multimodal_v2/multimodal_channel.js +195 -0
- package/widget/multimodal_v2/signals/active_conversation_signal.js +33 -0
- package/widget/multimodal_v2/signals/allowed_conversation_mode_signal.js +38 -0
- package/widget/multimodal_v2/signals/artifact_signal.js +22 -0
- package/widget/multimodal_v2/signals/layout_signal.js +98 -0
- package/widget/multimodal_v2/signals/messages_signal.js +207 -0
- package/widget/multimodal_v2/signals/ui_state_signal.js +128 -0
- package/widget/multimodal_v2/stable_bundle_src.js +44 -0
- package/widget/multimodal_v2/stores/ai_conversation_store.js +221 -0
- package/widget/multimodal_v2/stores/artifact_store.js +205 -0
- package/widget/multimodal_v2/stores/base_store.js +16 -0
- package/widget/multimodal_v2/stores/call_store.js +770 -0
- package/widget/multimodal_v2/stores/call_ui_adapter.js +225 -0
- package/widget/multimodal_v2/stores/debug_multimodal_scenario_store.js +471 -0
- package/widget/multimodal_v2/stores/decks_store.js +285 -0
- package/widget/multimodal_v2/stores/device_store.js +63 -0
- package/widget/multimodal_v2/stores/docking_store.js +62 -0
- package/widget/multimodal_v2/stores/field_request_store.js +326 -0
- package/widget/multimodal_v2/stores/meeting_store.js +477 -0
- package/widget/multimodal_v2/stores/participant_store.js +73 -0
- package/widget/multimodal_v2/stores/post_call_survey_store.js +160 -0
- package/widget/multimodal_v2/stores/pounce_tracking_store.js +163 -0
- package/widget/multimodal_v2/stores/pounce_tracking_store_v2.js +511 -0
- package/widget/multimodal_v2/stores/presentations_store.js +111 -0
- package/widget/multimodal_v2/stores/root_store.js +1919 -0
- package/widget/multimodal_v2/stores/screen_share_store.js +217 -0
- package/widget/multimodal_v2/stores/slides_store.js +21 -0
- package/widget/multimodal_v2/stores/translation_store.js +185 -0
- package/widget/multimodal_v2/stores/ui_store.js +496 -0
- package/widget/multimodal_v2/stores/waiting_store.js +159 -0
- package/widget/multimodal_v2/stores/website_navigation_store.js +767 -0
- package/widget/multimodal_v2/styled-system/css/conditions.js +34 -0
- package/widget/multimodal_v2/styled-system/css/css.js +48 -0
- package/widget/multimodal_v2/styled-system/css/cva.js +96 -0
- package/widget/multimodal_v2/styled-system/css/cx.js +13 -0
- package/widget/multimodal_v2/styled-system/css/index.js +15 -0
- package/widget/multimodal_v2/styled-system/css/sva.js +69 -0
- package/widget/multimodal_v2/styled-system/helpers.js +384 -0
- package/widget/multimodal_v2/styled-system/jsx/create-style-context.js +96 -0
- package/widget/multimodal_v2/styled-system/jsx/factory-helper.js +19 -0
- package/widget/multimodal_v2/styled-system/jsx/factory.js +111 -0
- package/widget/multimodal_v2/styled-system/jsx/index.js +12 -0
- package/widget/multimodal_v2/styled-system/jsx/is-valid-prop.js +22 -0
- package/widget/multimodal_v2/types.js +105 -0
- package/widget/multimodal_v2/utils/auto_scroller.js +157 -0
- package/widget/multimodal_v2/utils/flip_animation.js +124 -0
- package/widget/multimodal_v2/utils/focus_gate.js +237 -0
- package/widget/multimodal_v2/utils/locale.js +16 -0
- package/widget/multimodal_v2/utils/media_queries.js +30 -0
- package/widget/multimodal_v2/utils/multimodal_cache.js +19 -0
- package/widget/multimodal_v2/utils/mutation_effect.js +14 -0
- package/widget/multimodal_v2/utils/navigation_interceptor.js +205 -0
- package/widget/multimodal_v2/utils/navigation_strategies/dom_swap.js +393 -0
- package/widget/multimodal_v2/utils/navigation_strategies/index.js +12 -0
- package/widget/multimodal_v2/utils/navigation_strategies/lwr.js +61 -0
- package/widget/multimodal_v2/utils/navigation_strategies/navigation_utils.js +46 -0
- package/widget/multimodal_v2/utils/navigation_strategies/next_js.js +24 -0
- package/widget/multimodal_v2/utils/navigation_strategies/wouter_v3.js +15 -0
- package/widget/multimodal_v2/utils/objects_map.js +38 -0
- package/widget/multimodal_v2/utils/perceived_voice_turn_tracker.js +345 -0
- package/widget/multimodal_v2/utils/sanitize_html.js +132 -0
- package/widget/multimodal_v2/utils/signals.js +97 -0
- package/widget/multimodal_v2/utils/slide_zoom.js +114 -0
- package/widget/multimodal_v2/utils/theme_styles.js +137 -0
- package/widget/multimodal_v2/utils/url_observer.js +52 -0
- package/widget/multimodal_v2/utils/voice_onset_detector.js +127 -0
- package/widget/page_mirror.js +89 -0
- package/widget/page_view_activity_emitter.js +71 -0
- package/widget/pardot_visitor.js +137 -0
- package/widget/personalization_observer.js +96 -0
- package/widget/personalizations_config.js +160 -0
- package/widget/qualified_form/constants.js +23 -0
- package/widget/qualified_form/phone_utils.js +38 -0
- package/widget/qualified_form/qualified_form_action.js +91 -0
- package/widget/qualified_form/qualified_form_action_orchestrator.js +21 -0
- package/widget/qualified_form/qualified_form_api.js +471 -0
- package/widget/scroll_disabler.js +109 -0
- package/widget/server-logger.js +156 -0
- package/widget/smart_website_config.js +112 -0
- package/widget/telemetry/context.js +75 -0
- package/widget/telemetry/index.js +16 -0
- package/widget/telemetry/messenger_uptime.js +80 -0
- package/widget/telemetry/metrics.js +120 -0
- package/widget/telemetry/span.js +82 -0
- package/widget/telemetry/telemetry.js +180 -0
- package/widget/telemetry/tracer.js +41 -0
- package/widget/telemetry/tracing_store.js +310 -0
- package/widget/tracker.js +916 -0
- package/widget/utils/native_globals.js +129 -0
- package/widget/v1_adapter.js +50 -0
- package/widget/v2_adapter.js +368 -0
- package/widget/visitor/base_visitor_state.js +11 -0
- package/widget/visitor/cookie_visitor_state.js +128 -0
- package/widget/visitor/in_memory_visitor_state.js +29 -0
- package/widget/visitor/visitor_state.js +384 -0
- package/widget/visitor.js +356 -0
- package/widget/widget/linked_widget_v2.js +227 -0
- package/widget/widget/page_mirror_factory.js +22 -0
- package/widget/widget/sentry.js +130 -0
- package/widget/widget/widget.js +1698 -0
- package/widget/widget.split-css.js +2 -0
- package/widget/widget_bootstrap.js +97 -0
- package/widget/widget_object.js +73 -0
|
@@ -0,0 +1,916 @@
|
|
|
1
|
+
import { __webpack_require__ } from "../js/runtime.js";
|
|
2
|
+
import { esm_browser_v4, _class_private_field_loose_base, _class_private_field_loose_key, __decorate, __metadata } from "../js/4101.js";
|
|
3
|
+
import { supportedBrowserLanguage } from "../components/helpers/languages.js";
|
|
4
|
+
import { getEventTarget, addEventListener, isDomVisible, cloneEvent } from "../src/dom.js";
|
|
5
|
+
import { PersonalizationManager } from "../src/personalizations/personalization-manager.js";
|
|
6
|
+
import { BUTTON_LIKE_SELECTOR, isWithinQualifiedElement } from "../src/smart_website/utils.js";
|
|
7
|
+
import { fromBase64 } from "../src/string.js";
|
|
8
|
+
import { every, after } from "../src/timing.js";
|
|
9
|
+
import { default as WidgetObject } from "./widget_object.js";
|
|
10
|
+
import { captureWidgetExceptions } from "./capture_widget_exceptions.js";
|
|
11
|
+
import { isSafariUserAgent } from "./constants.js";
|
|
12
|
+
import { default as data360_visitor } from "./data360_visitor.js";
|
|
13
|
+
import { default as eloqua_visitor } from "./eloqua_visitor.js";
|
|
14
|
+
import { armFormCtaBookerIntent } from "./form_cta_booker_intent.js";
|
|
15
|
+
import { default as hubspot_visitor } from "./hubspot_visitor.js";
|
|
16
|
+
import { default as marketo_visitor } from "./marketo_visitor.js";
|
|
17
|
+
import { ButtonsFormsTriggeringTracer } from "./meetings/tracing/buttons_forms_triggering_tracer.js";
|
|
18
|
+
import { default as pardot_visitor } from "./pardot_visitor.js";
|
|
19
|
+
import { default as personalizations_config } from "./personalizations_config.js";
|
|
20
|
+
import { default as smart_website_config } from "./smart_website_config.js";
|
|
21
|
+
import "./telemetry/index.js";
|
|
22
|
+
import { inject } from "../src/mixins/injectable.js";
|
|
23
|
+
import { ignoreIfDisposed } from "../src/mixins/disposable.js";
|
|
24
|
+
import { telemetry, withTelemetryCtx, getTelemetryCtx } from "./telemetry/telemetry.js";
|
|
25
|
+
|
|
26
|
+
const debounce = __webpack_require__("37753");
|
|
27
|
+
var debounce_default = /*#__PURE__*/__webpack_require__.n(debounce);
|
|
28
|
+
const throttle = __webpack_require__("61442");
|
|
29
|
+
var throttle_default = /*#__PURE__*/__webpack_require__.n(throttle);
|
|
30
|
+
|
|
31
|
+
|
|
32
|
+
|
|
33
|
+
|
|
34
|
+
|
|
35
|
+
|
|
36
|
+
|
|
37
|
+
|
|
38
|
+
|
|
39
|
+
|
|
40
|
+
|
|
41
|
+
|
|
42
|
+
|
|
43
|
+
|
|
44
|
+
|
|
45
|
+
|
|
46
|
+
|
|
47
|
+
|
|
48
|
+
|
|
49
|
+
|
|
50
|
+
|
|
51
|
+
|
|
52
|
+
|
|
53
|
+
|
|
54
|
+
|
|
55
|
+
|
|
56
|
+
|
|
57
|
+
|
|
58
|
+
const events = [
|
|
59
|
+
"scroll",
|
|
60
|
+
"mousemove",
|
|
61
|
+
"click",
|
|
62
|
+
"touchstart",
|
|
63
|
+
"keypress"
|
|
64
|
+
];
|
|
65
|
+
const HIJACK_BUTTON_DEBOUNCE_MS = 100;
|
|
66
|
+
const EXPERIENCE_TIMEOUT_MS = 5000;
|
|
67
|
+
const FALLBACK_EVENT_SYMBOL = Symbol("FALLBACK_EVENT");
|
|
68
|
+
const FALLBACK_EVENT_VALUE = "QUALIFIED_FALLBACK_EVENT";
|
|
69
|
+
const HIJACK_CLICK_DEBOUNCE_MS = 1200;
|
|
70
|
+
const PRIVACY_DISCLOSURE_MESSAGE_TYPES = [
|
|
71
|
+
"text",
|
|
72
|
+
"field_entry",
|
|
73
|
+
"lightbox_gather",
|
|
74
|
+
"calendar_event_offer"
|
|
75
|
+
];
|
|
76
|
+
var _onVisibilityChange = /*#__PURE__*/ _class_private_field_loose_key("_onVisibilityChange");
|
|
77
|
+
class Tracker extends WidgetObject {
|
|
78
|
+
async init() {
|
|
79
|
+
var _this_config_pardotConfig;
|
|
80
|
+
this.telemetryCtx = getTelemetryCtx();
|
|
81
|
+
this.widget.logTiming("Time to init tracker", "widget_time_to_init_tracker_ms");
|
|
82
|
+
events.forEach((event)=>{
|
|
83
|
+
this.callOnDispose(addEventListener(window, event, this.eventHandler, {
|
|
84
|
+
capture: true
|
|
85
|
+
}));
|
|
86
|
+
});
|
|
87
|
+
this.callOnDispose(addEventListener(window, "visibilitychange", _class_private_field_loose_base(this, _onVisibilityChange)[_onVisibilityChange], {
|
|
88
|
+
capture: true
|
|
89
|
+
}));
|
|
90
|
+
this.callOnDispose(addEventListener(window, "pagehide", this.onPageHide, {
|
|
91
|
+
capture: true
|
|
92
|
+
}));
|
|
93
|
+
this.callOnDispose(()=>{
|
|
94
|
+
var _this_widget_personalizationObserver;
|
|
95
|
+
return (_this_widget_personalizationObserver = this.widget.personalizationObserver) == null ? void 0 : _this_widget_personalizationObserver.stop();
|
|
96
|
+
});
|
|
97
|
+
this.callOnDispose(()=>this.handleButtonTriggers.cancel());
|
|
98
|
+
if ((_this_config_pardotConfig = this.config.pardotConfig) == null ? void 0 : _this_config_pardotConfig.accountId) {
|
|
99
|
+
await telemetry.startActiveSpanAsync("Init pardot", {}, this.telemetryCtx, async (span)=>{
|
|
100
|
+
if (!this.config.pardotConfig) return;
|
|
101
|
+
const pardot = await new pardot_visitor(this.config.pardotConfig).getIdentities();
|
|
102
|
+
this.setInitializationParams({
|
|
103
|
+
pardot: {
|
|
104
|
+
prospect_email: pardot.prospectEmail,
|
|
105
|
+
visitor_id: pardot.visitorId
|
|
106
|
+
}
|
|
107
|
+
});
|
|
108
|
+
span.end();
|
|
109
|
+
});
|
|
110
|
+
}
|
|
111
|
+
if (this.isDisposed) {
|
|
112
|
+
return;
|
|
113
|
+
}
|
|
114
|
+
if (this.config.hasMarketo) {
|
|
115
|
+
await telemetry.startActiveSpanAsync("Init marketo", {}, this.telemetryCtx, async (span)=>{
|
|
116
|
+
const marketoToken = await new marketo_visitor().getToken();
|
|
117
|
+
if (marketoToken !== undefined) {
|
|
118
|
+
this.setInitializationParams({
|
|
119
|
+
marketo: {
|
|
120
|
+
token: marketoToken
|
|
121
|
+
}
|
|
122
|
+
});
|
|
123
|
+
}
|
|
124
|
+
span.end();
|
|
125
|
+
});
|
|
126
|
+
}
|
|
127
|
+
if (this.isDisposed) {
|
|
128
|
+
return;
|
|
129
|
+
}
|
|
130
|
+
if (this.config.hasHubSpot) {
|
|
131
|
+
await telemetry.startActiveSpanAsync("Init hubspot", {}, this.telemetryCtx, async (span)=>{
|
|
132
|
+
const hubspotToken = await new hubspot_visitor().getToken(this.widget.config.hubspotTokenRetrievalTimeout);
|
|
133
|
+
if (hubspotToken !== undefined) {
|
|
134
|
+
this.setInitializationParams({
|
|
135
|
+
hubspot: {
|
|
136
|
+
token: hubspotToken
|
|
137
|
+
}
|
|
138
|
+
});
|
|
139
|
+
}
|
|
140
|
+
span.end();
|
|
141
|
+
});
|
|
142
|
+
}
|
|
143
|
+
if (this.isDisposed) {
|
|
144
|
+
return;
|
|
145
|
+
}
|
|
146
|
+
if (this.config.hasData360) {
|
|
147
|
+
await telemetry.startActiveSpanAsync("Init data360", {}, this.telemetryCtx, async (span)=>{
|
|
148
|
+
const deviceId = await new data360_visitor().getDeviceId();
|
|
149
|
+
if (deviceId !== undefined) {
|
|
150
|
+
this.setInitializationParams({
|
|
151
|
+
data360: {
|
|
152
|
+
deviceId
|
|
153
|
+
}
|
|
154
|
+
});
|
|
155
|
+
}
|
|
156
|
+
span.end();
|
|
157
|
+
});
|
|
158
|
+
}
|
|
159
|
+
if (this.isDisposed) {
|
|
160
|
+
return;
|
|
161
|
+
}
|
|
162
|
+
if (this.config.hasEloqua) {
|
|
163
|
+
await telemetry.startActiveSpanAsync("Init eloqua", {}, this.telemetryCtx, async (span)=>{
|
|
164
|
+
const eloquaToken = new eloqua_visitor().getToken();
|
|
165
|
+
if (eloquaToken !== undefined) {
|
|
166
|
+
this.setInitializationParams({
|
|
167
|
+
eloqua: {
|
|
168
|
+
token: eloquaToken
|
|
169
|
+
}
|
|
170
|
+
});
|
|
171
|
+
}
|
|
172
|
+
span.end();
|
|
173
|
+
});
|
|
174
|
+
}
|
|
175
|
+
if (this.isDisposed) {
|
|
176
|
+
return;
|
|
177
|
+
}
|
|
178
|
+
if (this.visitor.smartFormData) {
|
|
179
|
+
if (this.config.hasSmartForms) {
|
|
180
|
+
this.experienceAdapter.showLightboxLoading();
|
|
181
|
+
// Pre-offer SLI: a submit saved by `saveSmartFormData` before this page
|
|
182
|
+
// context existed, replayed at init. Unlike the api_handler path this IS
|
|
183
|
+
// a replay, so the clock necessarily starts here — the original submit
|
|
184
|
+
// moment belongs to a previous context — the same compromise the
|
|
185
|
+
// redirect-replay arm site in `widget.ts` documents.
|
|
186
|
+
//
|
|
187
|
+
// Armed inside the `hasSmartForms` guard rather than beside the params:
|
|
188
|
+
// without smart forms there is no lightbox, no wait the visitor can see,
|
|
189
|
+
// and no path to a booker, so counting it would add journeys to the
|
|
190
|
+
// denominator that could never have produced an offer.
|
|
191
|
+
if (this.featureFlags.bookerJourneySLI) {
|
|
192
|
+
armFormCtaBookerIntent("form:smart_form", this.visitor.smartFormData.botApiName);
|
|
193
|
+
}
|
|
194
|
+
}
|
|
195
|
+
this.setInitializationParams({
|
|
196
|
+
smart_form: {
|
|
197
|
+
field_values: this.visitor.smartFormData.fieldValues,
|
|
198
|
+
bot_api_name: this.visitor.smartFormData.botApiName
|
|
199
|
+
}
|
|
200
|
+
});
|
|
201
|
+
this.visitor.clearSmartFormData();
|
|
202
|
+
}
|
|
203
|
+
if (!this.widget.isMeetingLink) {
|
|
204
|
+
const shouldRebroadcast = !!(this.visitor.lastValidRebroadcastTime && this.visitor.lastValidRebroadcastTime > this.widget.dateProvider.new().getTime());
|
|
205
|
+
if (shouldRebroadcast) {
|
|
206
|
+
const rebroadcastMessage = "[Qualified] Page loaded within the valid rebroadcast period, and thus is going to rebroadcast the last element conversation.";
|
|
207
|
+
this.widget.debugLog(rebroadcastMessage);
|
|
208
|
+
}
|
|
209
|
+
withTelemetryCtx(this.telemetryCtx, ()=>{
|
|
210
|
+
this.createPageView({
|
|
211
|
+
singlePageApp: false,
|
|
212
|
+
reconnecting: false,
|
|
213
|
+
rebroadcast: shouldRebroadcast,
|
|
214
|
+
qualifiedRedirected: this.visitor.qualifiedRedirected
|
|
215
|
+
});
|
|
216
|
+
});
|
|
217
|
+
this.visitor.setQualifiedRedirect(undefined);
|
|
218
|
+
this.visitor.setLastValidRebroadcastTime(undefined);
|
|
219
|
+
}
|
|
220
|
+
const searchParams = new URLSearchParams(window.location.search);
|
|
221
|
+
if (searchParams.has("q_offer_info")) {
|
|
222
|
+
let id, expiration;
|
|
223
|
+
try {
|
|
224
|
+
var _searchParams_get;
|
|
225
|
+
({ id, expiration } = JSON.parse(fromBase64((_searchParams_get = searchParams.get("q_offer_info")) != null ? _searchParams_get : "")));
|
|
226
|
+
} catch (e) {
|
|
227
|
+
this.widget.debugLog("Error parsing offer info: " + e);
|
|
228
|
+
}
|
|
229
|
+
if (id && expiration && expiration > this.dateProvider.now()) {
|
|
230
|
+
this.pageViewActivityEmitter.emitOfferLanded({
|
|
231
|
+
offerVersionId: id
|
|
232
|
+
});
|
|
233
|
+
}
|
|
234
|
+
const uri = new URL(window.location.href);
|
|
235
|
+
uri.searchParams.delete("q_offer_info");
|
|
236
|
+
// Remove the offer info from the URL so that it doesn't get rebroadcasted
|
|
237
|
+
window.history.replaceState(window.history.state, "", uri.toString());
|
|
238
|
+
}
|
|
239
|
+
this.updatePageVisible();
|
|
240
|
+
this.channel.emit("initTrackerCreatePageView");
|
|
241
|
+
this.initializationParams = {};
|
|
242
|
+
this.initialize();
|
|
243
|
+
}
|
|
244
|
+
startBehaviorTracker() {
|
|
245
|
+
var _this_config_featureFlags;
|
|
246
|
+
this.timerStartedAt = Date.now();
|
|
247
|
+
const secondsToWait = ((_this_config_featureFlags = this.config.featureFlags) == null ? void 0 : _this_config_featureFlags.leads) ? 5 : 10;
|
|
248
|
+
const timerDisposer = every(500, ()=>{
|
|
249
|
+
if (this.timerStartedAt) {
|
|
250
|
+
this.timerTimeOnSite = Date.now() - this.timerStartedAt;
|
|
251
|
+
}
|
|
252
|
+
if (this.experienceAdapter.apMessagesCount >= 2 || this.experienceAdapter.autoRespondPounceCount >= 2 || this.experienceAdapter.userResponded || this.experienceAdapter.visitorResponded) {
|
|
253
|
+
stopBehaviorTracker();
|
|
254
|
+
}
|
|
255
|
+
if (this.timerTimeOnSite > secondsToWait * 1000) {
|
|
256
|
+
// 10s * (1000ms / 1s) = 10,000ms
|
|
257
|
+
this.metActiveThreshold();
|
|
258
|
+
stopBehaviorTracker();
|
|
259
|
+
}
|
|
260
|
+
});
|
|
261
|
+
// For window focusing
|
|
262
|
+
const windowFocusDisposer = addEventListener(window, "focus", ()=>{
|
|
263
|
+
this.timerStartedAt = Date.now();
|
|
264
|
+
});
|
|
265
|
+
const windowBlurDisposer = addEventListener(window, "blur", ()=>{
|
|
266
|
+
this.timerStartedAt = null;
|
|
267
|
+
});
|
|
268
|
+
// For tab focusing
|
|
269
|
+
const pageVisibilityDisposer = addEventListener(window, "visibilitychange", ()=>{
|
|
270
|
+
if (document.visibilityState === "visible") {
|
|
271
|
+
this.timerStartedAt = Date.now();
|
|
272
|
+
} else {
|
|
273
|
+
this.timerStartedAt = null;
|
|
274
|
+
}
|
|
275
|
+
});
|
|
276
|
+
const stopBehaviorTracker = ()=>{
|
|
277
|
+
pageVisibilityDisposer();
|
|
278
|
+
windowFocusDisposer();
|
|
279
|
+
windowBlurDisposer();
|
|
280
|
+
timerDisposer();
|
|
281
|
+
};
|
|
282
|
+
}
|
|
283
|
+
closestSelector(target, triggers) {
|
|
284
|
+
return Object.keys(triggers).find((key)=>{
|
|
285
|
+
const keySelector = key + ", " + key + " *";
|
|
286
|
+
const matchResult = target.matches(keySelector);
|
|
287
|
+
if (matchResult) {
|
|
288
|
+
this.widget.debugLog("trigger " + keySelector + " matched");
|
|
289
|
+
}
|
|
290
|
+
return matchResult;
|
|
291
|
+
});
|
|
292
|
+
}
|
|
293
|
+
handleTriggers(event, triggers, botType) {
|
|
294
|
+
this.widget.debugLog("Handling " + botType + " triggers: " + JSON.stringify(triggers));
|
|
295
|
+
let selector;
|
|
296
|
+
let filterFn;
|
|
297
|
+
const TargetClass = this.featureFlags.smartCtaNestedTriggersSupport ? Element : HTMLElement;
|
|
298
|
+
if (botType === "SMART_CTA") {
|
|
299
|
+
filterFn = (el)=>{
|
|
300
|
+
var _this_smartWebsiteConfig;
|
|
301
|
+
return el instanceof TargetClass && !!(selector = (_this_smartWebsiteConfig = this.smartWebsiteConfig) == null ? void 0 : _this_smartWebsiteConfig.matchingSelector(el));
|
|
302
|
+
};
|
|
303
|
+
} else {
|
|
304
|
+
filterFn = (el)=>el instanceof TargetClass && !!(selector = this.closestSelector(el, triggers));
|
|
305
|
+
}
|
|
306
|
+
const target = getEventTarget(event, {
|
|
307
|
+
filterFn,
|
|
308
|
+
hasShadowDomSupport: this.featureFlags.smartCtaShadowDomSupport,
|
|
309
|
+
nestedTriggersSupport: this.featureFlags.smartCtaNestedTriggersSupport
|
|
310
|
+
});
|
|
311
|
+
if (!selector || !target) return;
|
|
312
|
+
// preventDefault here since we're hijacking the click
|
|
313
|
+
event.preventDefault();
|
|
314
|
+
// stopPropagation here since we're hijacking the click
|
|
315
|
+
event.stopPropagation();
|
|
316
|
+
if (this.waitingForFallbackEvent) {
|
|
317
|
+
return;
|
|
318
|
+
}
|
|
319
|
+
this.afterInit(async ()=>{
|
|
320
|
+
await this.widget.initialized;
|
|
321
|
+
this.lastButtonTriggerEvent = {
|
|
322
|
+
event,
|
|
323
|
+
target,
|
|
324
|
+
selector: selector
|
|
325
|
+
};
|
|
326
|
+
this.hijackClick(botType, triggers[selector], this.lastButtonTriggerEvent);
|
|
327
|
+
this.recordClickActivity(event);
|
|
328
|
+
});
|
|
329
|
+
}
|
|
330
|
+
initialize() {
|
|
331
|
+
this.initialized = true;
|
|
332
|
+
this.afterInitQueue.forEach((queuedAction)=>queuedAction());
|
|
333
|
+
this.afterInitQueue = [];
|
|
334
|
+
}
|
|
335
|
+
setInitializationParams(params) {
|
|
336
|
+
if (this.initialized) {
|
|
337
|
+
throw new Error("Tracker already initialized!");
|
|
338
|
+
} else {
|
|
339
|
+
Object.assign(this.initializationParams, params);
|
|
340
|
+
}
|
|
341
|
+
}
|
|
342
|
+
constructor(injectionProps){
|
|
343
|
+
var _ref;
|
|
344
|
+
var _this_widget_personalizationObserver, _this_config_featureFlags, _this_config_featureFlags1, _this_config_featureFlags2;
|
|
345
|
+
super(injectionProps), Object.defineProperty(this, _onVisibilityChange, {
|
|
346
|
+
writable: true,
|
|
347
|
+
value: void 0
|
|
348
|
+
}), this.initialized = false, // AI Nudge
|
|
349
|
+
this.timerStartedAt = null, this.experienceLoadingStartTimeMap = new Map(), this.lastButtonTriggerEvent = null, this.isBotRedirecting = false, this.waitingForFallbackEvent = false, // @ts-expect-error property decorator typing
|
|
350
|
+
this.eventHandler = (e)=>{
|
|
351
|
+
// Cut down on noise by ignoring mousemove when document isn't focused
|
|
352
|
+
if (e.type !== "mousemove" || document.hasFocus()) {
|
|
353
|
+
this.registerActivity();
|
|
354
|
+
}
|
|
355
|
+
// Conditions are listed independently for clarity.
|
|
356
|
+
// Let non clicks propagate
|
|
357
|
+
if (e.type !== "click") return;
|
|
358
|
+
// Let clicks without a target propagate
|
|
359
|
+
if (!e.target) return;
|
|
360
|
+
if (FALLBACK_EVENT_SYMBOL in e && e[FALLBACK_EVENT_SYMBOL] === FALLBACK_EVENT_VALUE) {
|
|
361
|
+
this.waitingForFallbackEvent = false;
|
|
362
|
+
}
|
|
363
|
+
this.handleButtonTriggers(e);
|
|
364
|
+
}, /**
|
|
365
|
+
* Debounce for the case of EventDispatch triggering duplicated click events for the same
|
|
366
|
+
* selectors within a tight window.
|
|
367
|
+
*
|
|
368
|
+
* See discussion in https://github.com/FatbearLabs/fireball/pull/9915#issuecomment-1716515215
|
|
369
|
+
*/ this.handleButtonTriggers = debounce_default()((e)=>{
|
|
370
|
+
// Cannot trigger smart cta/manual bot experiences on meeting link pages
|
|
371
|
+
if (this.widget.isMeetingLink) {
|
|
372
|
+
return;
|
|
373
|
+
}
|
|
374
|
+
// Let fallback events propagate and also debounce trigger handling
|
|
375
|
+
if (FALLBACK_EVENT_SYMBOL in e && e[FALLBACK_EVENT_SYMBOL] === FALLBACK_EVENT_VALUE) {
|
|
376
|
+
return;
|
|
377
|
+
}
|
|
378
|
+
if (e.target instanceof Element && isWithinQualifiedElement(e.target)) {
|
|
379
|
+
return;
|
|
380
|
+
}
|
|
381
|
+
this.handleSmartCtaTriggers(e);
|
|
382
|
+
this.handleManualBotTriggers(e);
|
|
383
|
+
}, HIJACK_BUTTON_DEBOUNCE_MS, {
|
|
384
|
+
leading: true,
|
|
385
|
+
trailing: false
|
|
386
|
+
}), this.recordClickActivity = (e)=>{
|
|
387
|
+
if (e.target instanceof Element && this.pageViewActivityEmitter && this.smartWebsiteConfig) {
|
|
388
|
+
const selector = this.smartWebsiteConfig.matchingSelector(e.target);
|
|
389
|
+
if (selector) {
|
|
390
|
+
var _this_personalizationsConfig;
|
|
391
|
+
const metadata = (_this_personalizationsConfig = this.personalizationsConfig) == null ? void 0 : _this_personalizationsConfig.lookupSelectorMetadata(selector);
|
|
392
|
+
this.pageViewActivityEmitter.emitPersonalizationClick({
|
|
393
|
+
selector,
|
|
394
|
+
experimentArmId: metadata == null ? void 0 : metadata.experimentArmId
|
|
395
|
+
});
|
|
396
|
+
}
|
|
397
|
+
}
|
|
398
|
+
}, this.updatePageVisible = ()=>{
|
|
399
|
+
if (!this.navigating) {
|
|
400
|
+
this.pageVisible = isDomVisible();
|
|
401
|
+
}
|
|
402
|
+
}, // Idle tracking
|
|
403
|
+
this.registerActivity = debounce_default()(()=>{
|
|
404
|
+
if (this.isDisposed) {
|
|
405
|
+
return;
|
|
406
|
+
}
|
|
407
|
+
this.widget.registerClientActivity();
|
|
408
|
+
// visitor active again, create new page view
|
|
409
|
+
if (this.expiredFromInactivity && document.hasFocus()) {
|
|
410
|
+
var _this_channel_connect;
|
|
411
|
+
this.expiredFromInactivity = false;
|
|
412
|
+
(_this_channel_connect = this.channel.connect()) == null ? void 0 : _this_channel_connect.then(()=>{
|
|
413
|
+
if (this.widget.isMeetingLink) {
|
|
414
|
+
// TODO: remove once meeting link has its own pack
|
|
415
|
+
this.recordMeetingLinkLoad();
|
|
416
|
+
} else {
|
|
417
|
+
this.createPageView();
|
|
418
|
+
}
|
|
419
|
+
// Needs to be toggled only after creating page view so that SPA page
|
|
420
|
+
// views are blocked
|
|
421
|
+
this.initialize();
|
|
422
|
+
this.initializationParams = {};
|
|
423
|
+
});
|
|
424
|
+
}
|
|
425
|
+
}, 200), this.hijackClick = debounce_default()(async (botType, apiName, param)=>{
|
|
426
|
+
let { target, selector, event } = param;
|
|
427
|
+
const transaction = esm_browser_v4();
|
|
428
|
+
const startTime = performance.now();
|
|
429
|
+
this.experienceLoadingStartTimeMap.set(transaction, startTime);
|
|
430
|
+
let loadingId;
|
|
431
|
+
if (botType === "MANUAL") {
|
|
432
|
+
if (this.config.hasMeetingBookerExperienceBuilder) {
|
|
433
|
+
this.experienceAdapter.showLightboxLoading();
|
|
434
|
+
} else {
|
|
435
|
+
this.experienceAdapter.showMessengerLoading();
|
|
436
|
+
}
|
|
437
|
+
} else if (botType === "SMART_CTA") {
|
|
438
|
+
try {
|
|
439
|
+
ButtonsFormsTriggeringTracer.startButtonClickSpan();
|
|
440
|
+
// Pre-offer SLI: the click is the visitor's intent moment. Gated at arm,
|
|
441
|
+
// so nothing is tracked at all for teams without the flag.
|
|
442
|
+
if (this.featureFlags.bookerJourneySLI) {
|
|
443
|
+
// `apiName` — the experience this selector is configured to trigger —
|
|
444
|
+
// not `visitor.botApiName`, which is a state key no widget code path
|
|
445
|
+
// ever writes (only `smartFormData.botApiName` is set), so it would
|
|
446
|
+
// leave every CTA intent with no experience dimension at all.
|
|
447
|
+
armFormCtaBookerIntent("cta:" + selector, apiName);
|
|
448
|
+
}
|
|
449
|
+
const loadingTarget = this.featureFlags.smartCtaNestedTriggersSupport ? target.closest(BUTTON_LIKE_SELECTOR) : target;
|
|
450
|
+
this.personalizationManager.add(loadingTarget, selector);
|
|
451
|
+
loadingId = this.personalizationManager.applyLoading(loadingTarget, "spinner");
|
|
452
|
+
loadingId && this.experienceAdapter.showInlineLoading(loadingId);
|
|
453
|
+
} catch (e) {
|
|
454
|
+
this.widget.debugLog("Failed to add inline spinner " + e.message);
|
|
455
|
+
this.widget.serverLog({
|
|
456
|
+
message: e.message,
|
|
457
|
+
type: "both",
|
|
458
|
+
extra: {
|
|
459
|
+
event: "meeting_progress_loading_bar_error"
|
|
460
|
+
}
|
|
461
|
+
});
|
|
462
|
+
}
|
|
463
|
+
}
|
|
464
|
+
this.widget.debugLog("Showing experience for trigger [" + transaction + "]: " + selector);
|
|
465
|
+
this.showExperience(apiName, undefined, transaction);
|
|
466
|
+
const showExperienceDisposer = after(EXPERIENCE_TIMEOUT_MS, ()=>{
|
|
467
|
+
if (!this.experienceLoadingStartTimeMap.has(transaction)) {
|
|
468
|
+
return;
|
|
469
|
+
}
|
|
470
|
+
this.widget.debugLog("Experience timed out [" + transaction + "]: " + selector);
|
|
471
|
+
this.experienceAdapter.closeLightbox();
|
|
472
|
+
loadingId && this.personalizationManager.removeLoadingByUuid(loadingId);
|
|
473
|
+
// This fallback is called if we don't receive a response from the server within the timeout
|
|
474
|
+
this.dispatchFallbackEvent({
|
|
475
|
+
event,
|
|
476
|
+
target,
|
|
477
|
+
selector
|
|
478
|
+
});
|
|
479
|
+
});
|
|
480
|
+
this.callOnDispose(showExperienceDisposer);
|
|
481
|
+
}, HIJACK_CLICK_DEBOUNCE_MS, {
|
|
482
|
+
leading: true,
|
|
483
|
+
trailing: false
|
|
484
|
+
}), this.handleManualBotTriggers = (e)=>{
|
|
485
|
+
this.handleTriggers(e, this.config.manualBotTriggers, "MANUAL");
|
|
486
|
+
}, this.handleSmartCtaTriggers = (e)=>{
|
|
487
|
+
var _this_smartWebsiteConfig;
|
|
488
|
+
if ((_this_smartWebsiteConfig = this.smartWebsiteConfig) == null ? void 0 : _this_smartWebsiteConfig.hasCurrentTriggerSelectors) {
|
|
489
|
+
this.handleTriggers(e, this.smartWebsiteConfig.triggerSelectors, "SMART_CTA");
|
|
490
|
+
}
|
|
491
|
+
}, this.afterInit = (callback)=>{
|
|
492
|
+
if (this.initialized) {
|
|
493
|
+
callback();
|
|
494
|
+
} else {
|
|
495
|
+
this.afterInitQueue.push(callback);
|
|
496
|
+
}
|
|
497
|
+
}, this.handlePardotFormSubmitted = async (botApiName)=>{
|
|
498
|
+
if (botApiName === void 0) botApiName = "default";
|
|
499
|
+
await telemetry.startActiveSpanAsync("Pardot form submitted", {}, this.telemetryCtx, async (span)=>{
|
|
500
|
+
const pardot = this.config.pardotConfig ? await new pardot_visitor(this.config.pardotConfig).getIdentities() : {};
|
|
501
|
+
if (this.isDisposed) {
|
|
502
|
+
return;
|
|
503
|
+
}
|
|
504
|
+
this.channel.send({
|
|
505
|
+
event: "pardotFormSubmitted",
|
|
506
|
+
payload: {
|
|
507
|
+
bot_api_name: botApiName,
|
|
508
|
+
pardot_prospect_email: pardot.prospectEmail,
|
|
509
|
+
pardot_visitor_id: pardot.visitorId
|
|
510
|
+
}
|
|
511
|
+
});
|
|
512
|
+
span.end();
|
|
513
|
+
});
|
|
514
|
+
}, this.handleSmartFormSubmitted = (fieldValues, botApiName)=>{
|
|
515
|
+
if (botApiName === void 0) botApiName = "default";
|
|
516
|
+
this.channel.send({
|
|
517
|
+
event: "smartFormSubmitted",
|
|
518
|
+
payload: {
|
|
519
|
+
field_values: fieldValues,
|
|
520
|
+
bot_api_name: botApiName
|
|
521
|
+
}
|
|
522
|
+
});
|
|
523
|
+
}, // TODO: Fix eslint error when this file is edited
|
|
524
|
+
// eslint-disable-next-line default-param-last
|
|
525
|
+
this.showExperience = (botApiName, initialClientState, transaction)=>{
|
|
526
|
+
if (botApiName === void 0) botApiName = "default";
|
|
527
|
+
this.channel.perform("show_experience", {
|
|
528
|
+
api_name: botApiName,
|
|
529
|
+
initial_client_state: initialClientState,
|
|
530
|
+
transaction
|
|
531
|
+
});
|
|
532
|
+
}, this.showFormExperience = (botApiName, formDestinations)=>{
|
|
533
|
+
var _this_widget_visitor_smartFormData, _this_widget_visitor_formData, _this_widget_visitor_smartFormData1;
|
|
534
|
+
if (!this.config.hasSmartForms) return;
|
|
535
|
+
const validBotApiName = botApiName || ((_this_widget_visitor_smartFormData = this.widget.visitor.smartFormData) == null ? void 0 : _this_widget_visitor_smartFormData.botApiName);
|
|
536
|
+
const validFieldValues = ((_this_widget_visitor_formData = this.widget.visitor.formData) == null ? void 0 : _this_widget_visitor_formData.fieldValues) || ((_this_widget_visitor_smartFormData1 = this.widget.visitor.smartFormData) == null ? void 0 : _this_widget_visitor_smartFormData1.fieldValues);
|
|
537
|
+
this.channel.perform("show_form_experience", {
|
|
538
|
+
bot_api_name: validBotApiName,
|
|
539
|
+
field_values: validFieldValues,
|
|
540
|
+
form_data: this.widget.visitor.formData,
|
|
541
|
+
form_destinations: formDestinations
|
|
542
|
+
});
|
|
543
|
+
this.widget.visitor.clearSmartFormData();
|
|
544
|
+
this.widget.visitor.clearFormData();
|
|
545
|
+
}, // TODO: extract redirect logic into its own handler, for setting up a form experience
|
|
546
|
+
// to be shown on the next page load
|
|
547
|
+
this.showExperienceForForm = (formType, formData, showOnRedirect)=>{
|
|
548
|
+
if (showOnRedirect === void 0) showOnRedirect = false;
|
|
549
|
+
var _formData_formActionUrl;
|
|
550
|
+
if (!this.config.hasSmartForms) {
|
|
551
|
+
this.widget.debugState.logEvent("tracker:showExperienceForForm", "error", {}, "smart_forms flag is not enabled");
|
|
552
|
+
return;
|
|
553
|
+
}
|
|
554
|
+
if (formData.formActionUrl && !this.config.formBotTriggers.pardot.includes((_formData_formActionUrl = formData.formActionUrl) == null ? void 0 : _formData_formActionUrl.replace(/^https?:\/\//, ""))) {
|
|
555
|
+
this.widget.debugState.logEvent("tracker:showExperienceForForm", "error", {}, "Form action URL is not in the list of Pardot form action URLs");
|
|
556
|
+
return;
|
|
557
|
+
}
|
|
558
|
+
if (showOnRedirect) {
|
|
559
|
+
this.widget.visitor.setFormExperienceDataWithExpiry({
|
|
560
|
+
formType,
|
|
561
|
+
formData
|
|
562
|
+
});
|
|
563
|
+
window.postMessage({
|
|
564
|
+
source: "qualified",
|
|
565
|
+
token: this.config.token,
|
|
566
|
+
message: "done",
|
|
567
|
+
verb: "showExperienceForForm"
|
|
568
|
+
}, window.location.origin);
|
|
569
|
+
} else {
|
|
570
|
+
var _formData_formActionUrl1;
|
|
571
|
+
ButtonsFormsTriggeringTracer.startSubmitFormSpan({
|
|
572
|
+
"form.type": formType,
|
|
573
|
+
"form.with_redirect": false
|
|
574
|
+
});
|
|
575
|
+
// Pre-offer SLI: the submit is the visitor's intent moment.
|
|
576
|
+
//
|
|
577
|
+
// No experience name on this path. `smartFormData` is written only by the
|
|
578
|
+
// `saveSmartFormData` API, so for a Marketo/HubSpot/custom submit arriving
|
|
579
|
+
// here any value it holds belongs to a different journey — reading it would
|
|
580
|
+
// attribute this form to an unrelated experience, which is worse than
|
|
581
|
+
// leaving the dimension absent. `formData` carries no api name either
|
|
582
|
+
// (`formEmail` / `formId` / `formActionUrl` only). Same call as the
|
|
583
|
+
// redirect-replay site in `widget.ts`.
|
|
584
|
+
if (this.featureFlags.bookerJourneySLI) {
|
|
585
|
+
armFormCtaBookerIntent("form:" + formType);
|
|
586
|
+
}
|
|
587
|
+
this.experienceAdapter.showLightboxLoading();
|
|
588
|
+
this.channel.perform("show_experience_for_form", {
|
|
589
|
+
form_type: formType,
|
|
590
|
+
form_data: {
|
|
591
|
+
raw: formData.raw || formData,
|
|
592
|
+
form_id: formData.formId,
|
|
593
|
+
form_email: formData.formEmail,
|
|
594
|
+
form_action_url: (_formData_formActionUrl1 = formData.formActionUrl) == null ? void 0 : _formData_formActionUrl1.replace(/^https?:\/\//, "")
|
|
595
|
+
}
|
|
596
|
+
});
|
|
597
|
+
}
|
|
598
|
+
this.widget.debugState.logEvent("tracker:showExperienceForForm", "success", {});
|
|
599
|
+
}, this.metActiveThreshold = ()=>{
|
|
600
|
+
const meta_description = document.querySelector('meta[name="description"]');
|
|
601
|
+
let description = null;
|
|
602
|
+
if (meta_description instanceof HTMLMetaElement) {
|
|
603
|
+
description = meta_description.content;
|
|
604
|
+
}
|
|
605
|
+
this.channel.perform("met_active_threshold", {
|
|
606
|
+
// Hack to prevent "Message from" title flashes from being fed to the backend
|
|
607
|
+
// Needed only temporarily until we start using chunks in auto pounce instead of the HTML title
|
|
608
|
+
title: this.resolveTitle(),
|
|
609
|
+
description,
|
|
610
|
+
source: this.experienceAdapter.apMessagesCount > 0 ? "auto_pounce" : "auto_respond"
|
|
611
|
+
});
|
|
612
|
+
}, this.resolveTitle = ()=>{
|
|
613
|
+
const { originalDocumentTitle } = this.experienceAdapter;
|
|
614
|
+
const documentTitle = document.title;
|
|
615
|
+
const resolvedTitle = originalDocumentTitle != null ? originalDocumentTitle : documentTitle;
|
|
616
|
+
if (resolvedTitle.startsWith("Message from")) {
|
|
617
|
+
var _this_experienceAdapter_originalDocumentTitle;
|
|
618
|
+
const message = "Resolved title is flash title for met_active_threshold";
|
|
619
|
+
this.widget.serverLog({
|
|
620
|
+
message,
|
|
621
|
+
extra: {
|
|
622
|
+
original_document_title: (_this_experienceAdapter_originalDocumentTitle = this.experienceAdapter.originalDocumentTitle) != null ? _this_experienceAdapter_originalDocumentTitle : "original_document_title was null or undefined",
|
|
623
|
+
document_title: document.title,
|
|
624
|
+
url: window.document.location.href
|
|
625
|
+
}
|
|
626
|
+
});
|
|
627
|
+
}
|
|
628
|
+
return resolvedTitle.startsWith("Message from") ? null : resolvedTitle;
|
|
629
|
+
}, this.getIdentity = ()=>{
|
|
630
|
+
this.channel.send({
|
|
631
|
+
event: "getIdentity",
|
|
632
|
+
payload: {}
|
|
633
|
+
});
|
|
634
|
+
}, this.setFieldValues = (fieldValues)=>{
|
|
635
|
+
this.channel.send({
|
|
636
|
+
event: "setFieldValues",
|
|
637
|
+
payload: {
|
|
638
|
+
field_values: fieldValues
|
|
639
|
+
}
|
|
640
|
+
});
|
|
641
|
+
}, // TODO: remove once meeting link has its own pack
|
|
642
|
+
this.recordMeetingLinkLoad = (token)=>{
|
|
643
|
+
if (token === void 0) token = undefined;
|
|
644
|
+
const data = Object.assign({}, this.initializationParams, {
|
|
645
|
+
wu: this.widget.widgetId,
|
|
646
|
+
url: document.location.href,
|
|
647
|
+
wv: this.config.version,
|
|
648
|
+
referrer: document.referrer,
|
|
649
|
+
mlt: token || this.widget.meetingLinkToken
|
|
650
|
+
});
|
|
651
|
+
return this.channel.perform("record_meeting_link_load", data);
|
|
652
|
+
}, this.recordPrivacyDisclosure = (target, conversationId)=>{
|
|
653
|
+
const browserLocale = supportedBrowserLanguage(navigator.language);
|
|
654
|
+
return this.channel.perform("record_privacy_disclosure", {
|
|
655
|
+
target,
|
|
656
|
+
conversation_id: conversationId,
|
|
657
|
+
meeting_link_locale: browserLocale
|
|
658
|
+
});
|
|
659
|
+
}, this.recordPrivacyDisclosureConsent = (message)=>{
|
|
660
|
+
if (message.type && PRIVACY_DISCLOSURE_MESSAGE_TYPES.includes(message.type)) {
|
|
661
|
+
return this.channel.perform("record_privacy_disclosure_consent", {
|
|
662
|
+
message_id: message.id
|
|
663
|
+
});
|
|
664
|
+
}
|
|
665
|
+
}, this.createPageView = (param)=>{
|
|
666
|
+
let { singlePageApp, reconnecting, rebroadcast, qualifiedRedirected } = param === void 0 ? {
|
|
667
|
+
singlePageApp: false,
|
|
668
|
+
reconnecting: false,
|
|
669
|
+
rebroadcast: false,
|
|
670
|
+
qualifiedRedirected: false
|
|
671
|
+
} : param;
|
|
672
|
+
const telemetryCtx = getTelemetryCtx();
|
|
673
|
+
// Ignore if URL hasn't changed
|
|
674
|
+
if (singlePageApp && document.location.href === this.lastPageViewUrl) return;
|
|
675
|
+
if (singlePageApp && !this.initialized) return;
|
|
676
|
+
this.lastPageViewUrl = document.location.href;
|
|
677
|
+
const data = Object.assign({}, this.initializationParams, {
|
|
678
|
+
wu: this.widget.widgetId,
|
|
679
|
+
url: document.location.href,
|
|
680
|
+
single_page_app: singlePageApp,
|
|
681
|
+
wv: this.config.version,
|
|
682
|
+
referrer: document.referrer,
|
|
683
|
+
reconnecting,
|
|
684
|
+
rebroadcast,
|
|
685
|
+
has_custom_form_data: this.visitor.hasFormData,
|
|
686
|
+
redirect_count: this.getRedirectCount()
|
|
687
|
+
});
|
|
688
|
+
const urlParams = new URLSearchParams(document.location.search);
|
|
689
|
+
if (urlParams.get("q_profiler_id")) {
|
|
690
|
+
data.q_profiler_id = urlParams.get("q_profiler_id");
|
|
691
|
+
}
|
|
692
|
+
this.widget.debugLog("Show clientside lightbox loading", "info", {
|
|
693
|
+
rebroadcast: String(rebroadcast),
|
|
694
|
+
qualifiedRedirected: String(qualifiedRedirected)
|
|
695
|
+
});
|
|
696
|
+
if (rebroadcast && !qualifiedRedirected) {
|
|
697
|
+
this.experienceAdapter.showLightboxLoading();
|
|
698
|
+
}
|
|
699
|
+
return withTelemetryCtx(telemetryCtx, ()=>this.channel.perform("record_page_view", data));
|
|
700
|
+
}, this.logExperienceLoadingTime = (transaction)=>{
|
|
701
|
+
const startTime = this.experienceLoadingStartTimeMap.get(transaction);
|
|
702
|
+
if (!startTime) {
|
|
703
|
+
return;
|
|
704
|
+
}
|
|
705
|
+
const delta = performance.now() - startTime;
|
|
706
|
+
const message = "Button experience loading time";
|
|
707
|
+
this.widget.logTiming(message, "buttons_time_to_socket_ms", delta);
|
|
708
|
+
this.experienceLoadingStartTimeMap.delete(transaction);
|
|
709
|
+
}, this.dispatchFallbackEvent = (buttonTriggerEvent)=>{
|
|
710
|
+
var _this_lastButtonTriggerEvent;
|
|
711
|
+
const { event, target: clickedElement, selector } = buttonTriggerEvent;
|
|
712
|
+
if (!event || this.isBotRedirecting) return;
|
|
713
|
+
// Force-open in current tab, because Safari does not allow us to open in a new tab asynchronously.
|
|
714
|
+
// This is a compromise. New tab is ideal, but Safari makes this impossible.
|
|
715
|
+
if (isSafariUserAgent && clickedElement instanceof HTMLAnchorElement && clickedElement.href && typeof clickedElement.target === "string" && clickedElement.target.toLowerCase() === "_blank") {
|
|
716
|
+
window.location.href = clickedElement.href;
|
|
717
|
+
this.waitingForFallbackEvent = false;
|
|
718
|
+
} else {
|
|
719
|
+
this.waitingForFallbackEvent = true;
|
|
720
|
+
const newEvent = cloneEvent(event, {
|
|
721
|
+
[FALLBACK_EVENT_SYMBOL]: FALLBACK_EVENT_VALUE
|
|
722
|
+
});
|
|
723
|
+
// Manipulations to host's DOM can cause the last event target to be detached
|
|
724
|
+
// For example, when adding a loading icon, we cleanup the inners of a button.
|
|
725
|
+
// Since the event is triggered on the cleaned element of that button,
|
|
726
|
+
// We need to check if target isConnected to DOM.
|
|
727
|
+
if (clickedElement == null ? void 0 : clickedElement.isConnected) {
|
|
728
|
+
clickedElement.dispatchEvent(newEvent);
|
|
729
|
+
} else if (selector) {
|
|
730
|
+
var _this_personalizationManager_get;
|
|
731
|
+
(_this_personalizationManager_get = this.personalizationManager.get(selector)) == null ? void 0 : _this_personalizationManager_get.dispatchEvent(newEvent);
|
|
732
|
+
}
|
|
733
|
+
}
|
|
734
|
+
if (event === ((_this_lastButtonTriggerEvent = this.lastButtonTriggerEvent) == null ? void 0 : _this_lastButtonTriggerEvent.event)) {
|
|
735
|
+
this.lastButtonTriggerEvent = null;
|
|
736
|
+
}
|
|
737
|
+
}, _class_private_field_loose_base(this, _onVisibilityChange)[_onVisibilityChange] = throttle_default()(()=>{
|
|
738
|
+
if (!this.isDisposed) {
|
|
739
|
+
this.updatePageVisible();
|
|
740
|
+
this.sendHeartbeat();
|
|
741
|
+
}
|
|
742
|
+
}, 1000), // @ts-expect-error property decorator typing
|
|
743
|
+
this.onPageHide = ()=>{
|
|
744
|
+
this.navigating = true;
|
|
745
|
+
}, // @ts-expect-error property decorator typing
|
|
746
|
+
this.onPing = ()=>{
|
|
747
|
+
var _this_config_heartbeatPingDivisor;
|
|
748
|
+
// Heartbeat frequency divisor. Default 2 (was hardcoded prior to INF-1108).
|
|
749
|
+
// With 4-second pings, divisor of 2 sends a heartbeat every 8 seconds (every 2nd ping).
|
|
750
|
+
// Fallback to 2 if config is missing (server-side validates to >= 1).
|
|
751
|
+
const divisor = (_this_config_heartbeatPingDivisor = this.config.heartbeatPingDivisor) != null ? _this_config_heartbeatPingDivisor : 2;
|
|
752
|
+
if (this.pingCounter++ % divisor === 0) {
|
|
753
|
+
this.sendHeartbeat();
|
|
754
|
+
}
|
|
755
|
+
}, this.sendHeartbeat = ()=>{
|
|
756
|
+
if (this.heartbeatManager.blocked) {
|
|
757
|
+
return;
|
|
758
|
+
}
|
|
759
|
+
this.channel.send({
|
|
760
|
+
event: "heartbeat",
|
|
761
|
+
payload: {
|
|
762
|
+
client_activity_at: this.widget.lastClientActivityAt,
|
|
763
|
+
page_visible: this.pageVisible
|
|
764
|
+
}
|
|
765
|
+
});
|
|
766
|
+
}, // @ts-expect-error property decorator typing
|
|
767
|
+
this.onSessionEnded = ()=>{
|
|
768
|
+
// TODO: when would this happen, backend didn't see heartbeats for awhile, but the cables are
|
|
769
|
+
// still connected?
|
|
770
|
+
this.channel.disconnect();
|
|
771
|
+
this.channel.connect();
|
|
772
|
+
}, // @ts-expect-error property decorator typing
|
|
773
|
+
this.onIdleTooLong = ()=>{
|
|
774
|
+
this.expiredFromInactivity = true;
|
|
775
|
+
this.initialized = false;
|
|
776
|
+
this.channel.disconnect();
|
|
777
|
+
}, // @ts-expect-error property decorator typing
|
|
778
|
+
this.onBotRedirect = ()=>{
|
|
779
|
+
this.visitor.setQualifiedRedirect(true);
|
|
780
|
+
this.isBotRedirecting = true;
|
|
781
|
+
}, // @ts-expect-error property decorator typing
|
|
782
|
+
this.onEndLoadingState = ()=>{
|
|
783
|
+
var // Clear any active loading overlay in the v2 adapter path.
|
|
784
|
+
// In v1, the iframe handles this via postMessage; v2 needs an explicit signal write.
|
|
785
|
+
// Guard: experienceAdapter may not be initialized yet if the channel fires before Widget.init() completes.
|
|
786
|
+
_this_experienceAdapter;
|
|
787
|
+
(_this_experienceAdapter = this.experienceAdapter) == null ? void 0 : _this_experienceAdapter.closeLightbox();
|
|
788
|
+
// This fallback is called if we should trigger the default behavior of the last button click
|
|
789
|
+
// i.e if the button click was hijacked but the visitor was disqualified
|
|
790
|
+
this.lastButtonTriggerEvent && this.dispatchFallbackEvent(this.lastButtonTriggerEvent);
|
|
791
|
+
}, this.getRedirectCount = ()=>{
|
|
792
|
+
var _performance_getEntriesByType;
|
|
793
|
+
const navigationEntry = performance.getEntriesByType == null ? void 0 : (_performance_getEntriesByType = performance.getEntriesByType.call(performance, "navigation")) == null ? void 0 : _performance_getEntriesByType[0];
|
|
794
|
+
return navigationEntry == null ? void 0 : navigationEntry.redirectCount;
|
|
795
|
+
};
|
|
796
|
+
this.lastPageViewUrl = "";
|
|
797
|
+
this.pingCounter = 0;
|
|
798
|
+
this.navigating = false;
|
|
799
|
+
this.pageVisible = true;
|
|
800
|
+
this.expiredFromInactivity = false;
|
|
801
|
+
this.initializationParams = {};
|
|
802
|
+
this.telemetryCtx = undefined;
|
|
803
|
+
this.afterInitQueue = [];
|
|
804
|
+
// AI Nudge
|
|
805
|
+
this.timerStartedAt = null;
|
|
806
|
+
this.timerTimeOnSite = 0;
|
|
807
|
+
if (this.config.smartCtaTriggers) {
|
|
808
|
+
this.smartWebsiteConfig = new smart_website_config({
|
|
809
|
+
smartCtaTriggers: this.config.smartCtaTriggers
|
|
810
|
+
});
|
|
811
|
+
}
|
|
812
|
+
this.personalizationManager = ((_this_widget_personalizationObserver = this.widget.personalizationObserver) == null ? void 0 : _this_widget_personalizationObserver.manager) || new PersonalizationManager((_ref = (_this_config_featureFlags = this.config.featureFlags) == null ? void 0 : _this_config_featureFlags.smartCtaEnhancedFreezing) != null ? _ref : false);
|
|
813
|
+
if (this.config.experimentSelectors && this.config.experimentSelectors.length > 0) {
|
|
814
|
+
var _this_widget_personalizationObserver1;
|
|
815
|
+
(_this_widget_personalizationObserver1 = this.widget.personalizationObserver) == null ? void 0 : _this_widget_personalizationObserver1.stop(true);
|
|
816
|
+
this.personalizationsConfig = new personalizations_config({
|
|
817
|
+
experimentSelectors: this.config.experimentSelectors,
|
|
818
|
+
currentUrl: window.location.href,
|
|
819
|
+
activityEmitter: this.pageViewActivityEmitter
|
|
820
|
+
}, this.personalizationManager);
|
|
821
|
+
}
|
|
822
|
+
this.channel.on("ping", this.onPing);
|
|
823
|
+
this.channel.on("sessionEnded", this.onSessionEnded);
|
|
824
|
+
this.channel.on("idleTooLong", this.onIdleTooLong);
|
|
825
|
+
this.channel.on("redirect", this.onBotRedirect);
|
|
826
|
+
this.channel.on("endLoadingState", this.onEndLoadingState);
|
|
827
|
+
this.channel.on("reconnected", ()=>{
|
|
828
|
+
/**
|
|
829
|
+
* When idle, "initialized" is set to false.
|
|
830
|
+
* We just want to send this pageview if the reconnection was from an active connection trying to recover after being lost
|
|
831
|
+
* instead of idle connection reconnecting.
|
|
832
|
+
* Idle connections page views are already being taken care on "registerActivity" debounce.
|
|
833
|
+
*/ if (this.initialized) {
|
|
834
|
+
this.createPageView({
|
|
835
|
+
singlePageApp: false,
|
|
836
|
+
reconnecting: true,
|
|
837
|
+
rebroadcast: false
|
|
838
|
+
});
|
|
839
|
+
}
|
|
840
|
+
});
|
|
841
|
+
this.channel.on("personalizeWebsite", (data)=>{
|
|
842
|
+
var _this_personalizationsConfig;
|
|
843
|
+
return (_this_personalizationsConfig = this.personalizationsConfig) == null ? void 0 : _this_personalizationsConfig.onPersonalizeWebsite(data);
|
|
844
|
+
});
|
|
845
|
+
this.channel.on("showExperienceEnd", this.logExperienceLoadingTime);
|
|
846
|
+
this.channel.on("endInlineLoading", (uuid)=>{
|
|
847
|
+
this.personalizationManager.removeLoadingByUuid(uuid);
|
|
848
|
+
});
|
|
849
|
+
this.channel.on("widgetEvent", (name)=>this.widget.emitWidgetEvent(name));
|
|
850
|
+
this.channel.on("syncScriptState", (scriptState)=>{
|
|
851
|
+
try {
|
|
852
|
+
this.widget.iframeManager.handleSyncScriptState(scriptState);
|
|
853
|
+
} catch (unused) {
|
|
854
|
+
// V2 path: IframeManager not registered, syncScriptState is v1-only — safe to ignore
|
|
855
|
+
}
|
|
856
|
+
});
|
|
857
|
+
if (((_this_config_featureFlags1 = this.config.featureFlags) == null ? void 0 : _this_config_featureFlags1.demo) || ((_this_config_featureFlags2 = this.config.featureFlags) == null ? void 0 : _this_config_featureFlags2.demoKillSessionShortcut)) {
|
|
858
|
+
// Demo utility to quickly kill the session. Shift-Cmd-K (Mac) or Shift-Ctrl-K (Windows/Linux)
|
|
859
|
+
this.callOnDispose(addEventListener(document, "keydown", async (event)=>{
|
|
860
|
+
// eslint-disable-next-line rulesdir/enforce-comment
|
|
861
|
+
if (event.key === "k" && (event.metaKey || event.ctrlKey) && event.shiftKey) {
|
|
862
|
+
event.preventDefault();
|
|
863
|
+
await this.channel.perform("kill_session", {});
|
|
864
|
+
this.channel.disconnect();
|
|
865
|
+
// Show a small red dot in the bottom right corner to let SE know session was killed
|
|
866
|
+
// z-index allows it to show over the multimodal widget
|
|
867
|
+
const indicator = document.createElement("div");
|
|
868
|
+
// eslint-disable-next-line rulesdir/enforce-comment
|
|
869
|
+
indicator.style.cssText = "position:fixed;bottom:10px;right:10px;width:10px;height:10px;background:#f44;border-radius:50%;z-index:2147483648";
|
|
870
|
+
document.body.appendChild(indicator);
|
|
871
|
+
}
|
|
872
|
+
}));
|
|
873
|
+
}
|
|
874
|
+
}
|
|
875
|
+
}
|
|
876
|
+
__decorate([
|
|
877
|
+
inject,
|
|
878
|
+
__metadata("design:type", typeof HeartbeatManager === "undefined" ? Object : HeartbeatManager)
|
|
879
|
+
], Tracker.prototype, "heartbeatManager", void 0);
|
|
880
|
+
__decorate([
|
|
881
|
+
ignoreIfDisposed
|
|
882
|
+
], Tracker.prototype, "eventHandler", void 0);
|
|
883
|
+
__decorate([
|
|
884
|
+
captureWidgetExceptions,
|
|
885
|
+
__metadata("design:type", Function),
|
|
886
|
+
__metadata("design:paramtypes", [
|
|
887
|
+
typeof Event === "undefined" ? Object : Event,
|
|
888
|
+
typeof TriggerQuerySelectors === "undefined" ? Object : TriggerQuerySelectors,
|
|
889
|
+
typeof BotType === "undefined" ? Object : BotType
|
|
890
|
+
]),
|
|
891
|
+
__metadata("design:returntype", void 0)
|
|
892
|
+
], Tracker.prototype, "handleTriggers", null);
|
|
893
|
+
__decorate([
|
|
894
|
+
ignoreIfDisposed
|
|
895
|
+
], Tracker.prototype, "onPageHide", void 0);
|
|
896
|
+
__decorate([
|
|
897
|
+
ignoreIfDisposed
|
|
898
|
+
], Tracker.prototype, "onPing", void 0);
|
|
899
|
+
__decorate([
|
|
900
|
+
ignoreIfDisposed
|
|
901
|
+
], Tracker.prototype, "onSessionEnded", void 0);
|
|
902
|
+
__decorate([
|
|
903
|
+
ignoreIfDisposed
|
|
904
|
+
], Tracker.prototype, "onIdleTooLong", void 0);
|
|
905
|
+
__decorate([
|
|
906
|
+
ignoreIfDisposed
|
|
907
|
+
], Tracker.prototype, "onBotRedirect", void 0);
|
|
908
|
+
__decorate([
|
|
909
|
+
ignoreIfDisposed
|
|
910
|
+
], Tracker.prototype, "onEndLoadingState", void 0);
|
|
911
|
+
/* export default */ const tracker = (Tracker);
|
|
912
|
+
|
|
913
|
+
var tracker_HIJACK_CLICK_DEBOUNCE_MS = /* unused export */ undefined;
|
|
914
|
+
var tracker_PRIVACY_DISCLOSURE_MESSAGE_TYPES = /* unused export */ undefined;
|
|
915
|
+
export { tracker_HIJACK_CLICK_DEBOUNCE_MS as HIJACK_CLICK_DEBOUNCE_MS, tracker_PRIVACY_DISCLOSURE_MESSAGE_TYPES as PRIVACY_DISCLOSURE_MESSAGE_TYPES };
|
|
916
|
+
export default tracker;
|