@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,19 @@
|
|
|
1
|
+
import { AbstractDebugFlow } from "./abstract_debug_flow.js";
|
|
2
|
+
|
|
3
|
+
|
|
4
|
+
class HubspotFormFlow extends AbstractDebugFlow {
|
|
5
|
+
constructor(...args){
|
|
6
|
+
super(...args), this.name = "HubSpot Form Experience", this.steps = [
|
|
7
|
+
"widget:hasMeetingBookerExperienceBuilder",
|
|
8
|
+
"widget:hubspot:hbsptFound",
|
|
9
|
+
"debug:formSubmitCapture",
|
|
10
|
+
"widget:hubspot:onFormSubmit",
|
|
11
|
+
"visitor:setFormExperienceDataWithExpiry",
|
|
12
|
+
"widget:hubspot:onFormSubmitted",
|
|
13
|
+
"tracker:showExperienceForForm",
|
|
14
|
+
"widget:formExperienceDataFound"
|
|
15
|
+
];
|
|
16
|
+
}
|
|
17
|
+
}
|
|
18
|
+
|
|
19
|
+
export { HubspotFormFlow };
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import { AbstractDebugFlow } from "./abstract_debug_flow.js";
|
|
2
|
+
|
|
3
|
+
|
|
4
|
+
class HubspotV4FormFlow extends AbstractDebugFlow {
|
|
5
|
+
constructor(...args){
|
|
6
|
+
super(...args), this.name = "HubSpot V4 Form Experience", this.steps = [
|
|
7
|
+
"widget:hasMeetingBookerExperienceBuilder",
|
|
8
|
+
"widget:hubspotV4:HubSpotFormsV4Found",
|
|
9
|
+
"widget:hubspotV4:initComplete",
|
|
10
|
+
"debug:formSubmitCapture",
|
|
11
|
+
"widget:hubspotV4:onSubmissionSuccess",
|
|
12
|
+
"visitor:setFormExperienceDataWithExpiry",
|
|
13
|
+
"tracker:showExperienceForForm",
|
|
14
|
+
"widget:formExperienceDataFound"
|
|
15
|
+
];
|
|
16
|
+
}
|
|
17
|
+
}
|
|
18
|
+
|
|
19
|
+
export { HubspotV4FormFlow };
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import { AbstractDebugFlow } from "./abstract_debug_flow.js";
|
|
2
|
+
|
|
3
|
+
|
|
4
|
+
class MarketoFormFlow extends AbstractDebugFlow {
|
|
5
|
+
constructor(...args){
|
|
6
|
+
super(...args), this.name = "Marketo Form Experience", this.steps = [
|
|
7
|
+
"widget:hasMeetingBookerExperienceBuilder",
|
|
8
|
+
"widget:marketo:MktoForms2Found",
|
|
9
|
+
"widget:marketo:configuredFormFound",
|
|
10
|
+
"debug:formSubmitCapture",
|
|
11
|
+
"widget:marketo:onSubmit",
|
|
12
|
+
"visitor:setFormExperienceDataWithExpiry",
|
|
13
|
+
"widget:marketo:onSuccess",
|
|
14
|
+
"tracker:showExperienceForForm",
|
|
15
|
+
"widget:formExperienceDataFound"
|
|
16
|
+
];
|
|
17
|
+
}
|
|
18
|
+
}
|
|
19
|
+
|
|
20
|
+
export { MarketoFormFlow };
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import { AbstractDebugFlow } from "./abstract_debug_flow.js";
|
|
2
|
+
|
|
3
|
+
|
|
4
|
+
class PardotFormFlow extends AbstractDebugFlow {
|
|
5
|
+
constructor(...args){
|
|
6
|
+
super(...args), this.name = "Pardot Form Experience", this.steps = [
|
|
7
|
+
"api:initPardotForm",
|
|
8
|
+
"api:initPardotFormThankYou",
|
|
9
|
+
"api:saveFormData",
|
|
10
|
+
"api:parsePardotForm",
|
|
11
|
+
"api:parsePardotFormForLandingPage",
|
|
12
|
+
"visitor:setFormExperienceDataWithExpiry",
|
|
13
|
+
"api:showExperienceForForm"
|
|
14
|
+
];
|
|
15
|
+
}
|
|
16
|
+
}
|
|
17
|
+
|
|
18
|
+
export { PardotFormFlow };
|
|
@@ -0,0 +1,362 @@
|
|
|
1
|
+
import { __webpack_require__ } from "../../js/runtime.js";
|
|
2
|
+
import { DOMReady } from "../../src/dom.js";
|
|
3
|
+
import { CustomFormFlow } from "./debug_state/custom_form_flow.js";
|
|
4
|
+
import { HubspotFormFlow } from "./debug_state/hubspot_form_flow.js";
|
|
5
|
+
import { HubspotV4FormFlow } from "./debug_state/hubspot_v4_form_flow.js";
|
|
6
|
+
import { MarketoFormFlow } from "./debug_state/marketo_form_flow.js";
|
|
7
|
+
import { PardotFormFlow } from "./debug_state/pardot_form_flow.js";
|
|
8
|
+
import { AbstractLocalState } from "./abstract_local_state.js";
|
|
9
|
+
import "../utils/native_globals.js";
|
|
10
|
+
|
|
11
|
+
/* provided dependency */ var __nativeWindowAddEventListener = __webpack_require__(68034).zh;
|
|
12
|
+
|
|
13
|
+
|
|
14
|
+
|
|
15
|
+
|
|
16
|
+
|
|
17
|
+
|
|
18
|
+
|
|
19
|
+
const LOG_PREFIX = "[Qualified Debug]";
|
|
20
|
+
// Persisted state for "q_debug" query parameter
|
|
21
|
+
class DebugState extends AbstractLocalState {
|
|
22
|
+
set channel(chan) {
|
|
23
|
+
this._channel = chan;
|
|
24
|
+
}
|
|
25
|
+
get channel() {
|
|
26
|
+
if (this._channel) return this._channel;
|
|
27
|
+
throw new Error("Channel not set from upstream");
|
|
28
|
+
}
|
|
29
|
+
logEvent(key, status, data, message) {
|
|
30
|
+
if (!this.isDebugging) return;
|
|
31
|
+
try {
|
|
32
|
+
console.log(LOG_PREFIX, message != null ? message : getDefaultDebugMessage(key, status), data); // eslint-disable-line no-console
|
|
33
|
+
const event = {
|
|
34
|
+
timestamp: Date.now(),
|
|
35
|
+
key,
|
|
36
|
+
status,
|
|
37
|
+
data,
|
|
38
|
+
message
|
|
39
|
+
};
|
|
40
|
+
this.events.push(event);
|
|
41
|
+
this.updateStateAtKey("events", this.events);
|
|
42
|
+
this.eventsMap[key] = event;
|
|
43
|
+
} catch (error) {
|
|
44
|
+
console.error(LOG_PREFIX, "Error logging event", error); // eslint-disable-line no-console
|
|
45
|
+
}
|
|
46
|
+
}
|
|
47
|
+
initElements() {
|
|
48
|
+
// TODO: Maybe extract these to a dialog provider if this gets reused
|
|
49
|
+
// Create dialog element
|
|
50
|
+
const dialogEl = document.createElement("dialog");
|
|
51
|
+
dialogEl.id = "qualified-debug-dialog";
|
|
52
|
+
dialogEl.innerHTML = "\n <div>Debug Output</div>\n <button id=archive-session>Archive Session</button>\n <pre></pre>\n <button id=close-debug>Close</button>\n <style>#qualified-debug-dialog::backdrop { background-color: #000a; }</style>\n ";
|
|
53
|
+
Object.assign(dialogEl.style, {
|
|
54
|
+
textAlign: "left"
|
|
55
|
+
});
|
|
56
|
+
dialogEl.addEventListener("click", (e)=>{
|
|
57
|
+
if (e.target.matches("#close-debug")) {
|
|
58
|
+
dialogEl.close();
|
|
59
|
+
}
|
|
60
|
+
});
|
|
61
|
+
dialogEl.addEventListener("click", (e)=>{
|
|
62
|
+
if (e.target.matches("#archive-session")) {
|
|
63
|
+
this.channel.send({
|
|
64
|
+
event: "archiveSession"
|
|
65
|
+
});
|
|
66
|
+
dialogEl.close();
|
|
67
|
+
}
|
|
68
|
+
});
|
|
69
|
+
document.body.appendChild(dialogEl);
|
|
70
|
+
// Create button element
|
|
71
|
+
const buttonEl = document.createElement("button");
|
|
72
|
+
buttonEl.textContent = "Debug Output";
|
|
73
|
+
Object.assign(buttonEl.style, {
|
|
74
|
+
position: "fixed",
|
|
75
|
+
bottom: "0",
|
|
76
|
+
left: "0",
|
|
77
|
+
zIndex: "" + 2 ** 31,
|
|
78
|
+
padding: "10px"
|
|
79
|
+
});
|
|
80
|
+
buttonEl.addEventListener("click", ()=>{
|
|
81
|
+
dialogEl.querySelector("pre").textContent = this.flowOutput();
|
|
82
|
+
dialogEl.showModal();
|
|
83
|
+
});
|
|
84
|
+
document.body.appendChild(buttonEl);
|
|
85
|
+
}
|
|
86
|
+
flowOutput(flowName) {
|
|
87
|
+
const flow = this.flows.find((flow)=>flow.name === flowName);
|
|
88
|
+
if (flow) {
|
|
89
|
+
return flow.textOutput;
|
|
90
|
+
}
|
|
91
|
+
return this.flows.map((flow)=>flow.textOutput).join("\n\n======\n\n");
|
|
92
|
+
}
|
|
93
|
+
constructor(){
|
|
94
|
+
var _ref;
|
|
95
|
+
var _this_persistedState, _this_persistedState1;
|
|
96
|
+
super(), this.KEY = "__q_local_form_debug", this.TTL = 30 * 60 * 1000 // 30 minutes
|
|
97
|
+
, this.flows = [], this.events = [], this.eventsMap = {}, this.isDebugging = new URLSearchParams(document.location.search).has("q_debug") || !!((_this_persistedState = this.persistedState) == null ? void 0 : _this_persistedState.isDebugging);
|
|
98
|
+
this.updateStateAtKey("isDebugging", this.isDebugging);
|
|
99
|
+
if (!this.isDebugging) return;
|
|
100
|
+
this.flows = [
|
|
101
|
+
new CustomFormFlow(this.eventsMap),
|
|
102
|
+
new MarketoFormFlow(this.eventsMap),
|
|
103
|
+
new HubspotFormFlow(this.eventsMap),
|
|
104
|
+
new HubspotV4FormFlow(this.eventsMap),
|
|
105
|
+
new PardotFormFlow(this.eventsMap)
|
|
106
|
+
];
|
|
107
|
+
this.events = (_ref = (_this_persistedState1 = this.persistedState) == null ? void 0 : _this_persistedState1.events) != null ? _ref : [];
|
|
108
|
+
this.events.forEach((event)=>{
|
|
109
|
+
this.eventsMap[event.key] = event;
|
|
110
|
+
});
|
|
111
|
+
__nativeWindowAddEventListener("submit", ()=>{
|
|
112
|
+
this.logEvent("debug:formSubmitCapture", "success");
|
|
113
|
+
}, {
|
|
114
|
+
capture: true
|
|
115
|
+
});
|
|
116
|
+
DOMReady().then(()=>this.initElements());
|
|
117
|
+
}
|
|
118
|
+
}
|
|
119
|
+
// There are generally two categories of events:
|
|
120
|
+
//
|
|
121
|
+
// For events that denote whether or not something occurred, define "missing" and "success" messages.
|
|
122
|
+
// ` shouldOccur: {
|
|
123
|
+
// ` missing: "This event should have occurred, but it did not.",
|
|
124
|
+
// ` success: "This event occurred successfully.",
|
|
125
|
+
// ` },
|
|
126
|
+
// Successful occurrences are logged as "success", otherwise the "missing" message is used downstream if something expects this event.
|
|
127
|
+
// ` debugState.logEvent("shouldOccur", "success");
|
|
128
|
+
// ` debugState.logEvent("shouldOccur", "success", { maybeData }, "A more specific message!");
|
|
129
|
+
// Any "error" occurrences should be logged with more specific messages.
|
|
130
|
+
// ` debugState.logEvent("shouldOccur", "error", { maybeData }, "This event occurrred, but something went wrong!");
|
|
131
|
+
//
|
|
132
|
+
//
|
|
133
|
+
// For events that denote whether an expected condition was satisfied, define "error" and "success" messages.
|
|
134
|
+
// ` shouldSatisfyCondition: {
|
|
135
|
+
// ` error: "This event occurred, but something went wrong and the condition was not satisfied.",
|
|
136
|
+
// ` success: "This event occurred and the condition was satisfied.",
|
|
137
|
+
// ` },
|
|
138
|
+
// Satisfied conditions are logged as "success", and "error" otherwise.
|
|
139
|
+
// ` debugState.logEvent("shouldSatisfyCondition", "success");
|
|
140
|
+
// ` debugState.logEvent("shouldSatisfyCondition", "success", { maybeData }, "A more specific message!");
|
|
141
|
+
// ` debugState.logEvent("shouldSatisfyCondition", "error");
|
|
142
|
+
// ` debugState.logEvent("shouldSatisfyCondition", "error", { maybeData }, "Something else went wrong!");
|
|
143
|
+
//
|
|
144
|
+
// TODO: More explicitly type these events. Or move the interpretation to downstream consumers.
|
|
145
|
+
const DEBUG_EVENTS = {
|
|
146
|
+
debug: {
|
|
147
|
+
formSubmitCapture: {
|
|
148
|
+
missing: 'Form "submit" event was not detected',
|
|
149
|
+
success: 'Form "submit" event was detected'
|
|
150
|
+
}
|
|
151
|
+
},
|
|
152
|
+
api: {
|
|
153
|
+
identify: {
|
|
154
|
+
missing: '"identify" was not called',
|
|
155
|
+
success: '"identify" was called successfully'
|
|
156
|
+
},
|
|
157
|
+
initPardotForm: {
|
|
158
|
+
missing: '"initPardotForm" was not called',
|
|
159
|
+
success: '"initPardotForm" was called successfully'
|
|
160
|
+
},
|
|
161
|
+
initPardotFormThankYou: {
|
|
162
|
+
missing: '"initPardotFormThankYou" was not called',
|
|
163
|
+
success: '"initPardotFormThankYou" was called successfully'
|
|
164
|
+
},
|
|
165
|
+
pardotFormSubmitted: {
|
|
166
|
+
missing: '"pardotFormSubmitted" was not called',
|
|
167
|
+
success: '"pardotFormSubmitted" was called successfully'
|
|
168
|
+
},
|
|
169
|
+
parsePardotForm: {
|
|
170
|
+
missing: '"parsePardotForm" was not called',
|
|
171
|
+
success: '"parsePardotForm" was called successfully'
|
|
172
|
+
},
|
|
173
|
+
parsePardotFormForLandingPage: {
|
|
174
|
+
missing: '"parsePardotFormForLandingPage" was not called',
|
|
175
|
+
success: '"parsePardotFormForLandingPage" was called successfully'
|
|
176
|
+
},
|
|
177
|
+
registerForm: {
|
|
178
|
+
missing: '"registerForm" was not called',
|
|
179
|
+
success: '"registerForm" was called successfully'
|
|
180
|
+
},
|
|
181
|
+
saveFormData: {
|
|
182
|
+
missing: '"saveFormData" was not called',
|
|
183
|
+
success: '"saveFormData" was called successfully'
|
|
184
|
+
},
|
|
185
|
+
saveSmartFormData: {
|
|
186
|
+
missing: '"saveSmartFormData" was not called',
|
|
187
|
+
success: '"saveSmartFormData" was called successfully'
|
|
188
|
+
},
|
|
189
|
+
sendSmartFormData: {
|
|
190
|
+
missing: '"sendSmartFormData" was not called',
|
|
191
|
+
success: '"sendSmartFormData" was called successfully'
|
|
192
|
+
},
|
|
193
|
+
showExperience: {
|
|
194
|
+
missing: '"showExperience" was not called',
|
|
195
|
+
success: '"showExperience" was called successfully'
|
|
196
|
+
},
|
|
197
|
+
showExperienceForForm: {
|
|
198
|
+
missing: '"showExperienceForForm" was not called',
|
|
199
|
+
success: '"showExperienceForForm" was called successfully'
|
|
200
|
+
},
|
|
201
|
+
showForm: {
|
|
202
|
+
missing: '"showForm" was not called',
|
|
203
|
+
success: '"showForm" was called successfully'
|
|
204
|
+
},
|
|
205
|
+
showFormExperience: {
|
|
206
|
+
missing: '"showFormExperience" was not called',
|
|
207
|
+
success: '"showFormExperience" was called successfully'
|
|
208
|
+
},
|
|
209
|
+
submitEmbeddedForm: {
|
|
210
|
+
missing: '"submitEmbeddedForm" was not called',
|
|
211
|
+
success: '"submitEmbeddedForm" was called successfully'
|
|
212
|
+
}
|
|
213
|
+
},
|
|
214
|
+
tracker: {
|
|
215
|
+
showExperienceForForm: {
|
|
216
|
+
missing: '"showExperienceForForm" was not called',
|
|
217
|
+
success: '"showExperienceForForm" was called successfully'
|
|
218
|
+
}
|
|
219
|
+
},
|
|
220
|
+
visitor: {
|
|
221
|
+
setFormExperienceDataWithExpiry: {
|
|
222
|
+
missing: '"setFormExperienceDataWithExpiry" was not called',
|
|
223
|
+
success: '"setFormExperienceDataWithExpiry" was called successfully'
|
|
224
|
+
}
|
|
225
|
+
},
|
|
226
|
+
widget: {
|
|
227
|
+
initFormExperience: {
|
|
228
|
+
missing: '"initFormExperience" was not called',
|
|
229
|
+
success: '"initFormExperience" was called successfully'
|
|
230
|
+
},
|
|
231
|
+
hasMeetingBookerExperienceBuilder: {
|
|
232
|
+
error: '"meeting_booker_experience_builder" flag is not enabled',
|
|
233
|
+
success: '"meeting_booker_experience_builder" flag is enabled'
|
|
234
|
+
},
|
|
235
|
+
hasSmartForms: {
|
|
236
|
+
error: '"smart_forms" flag is not enabled',
|
|
237
|
+
success: '"smart_forms" flag is enabled'
|
|
238
|
+
},
|
|
239
|
+
formExperienceDataFound: {
|
|
240
|
+
missing: "No form experience data was found from previous page.",
|
|
241
|
+
success: "Form experience data was found from previous page. Triggering form experience.",
|
|
242
|
+
error: "Error while finding form experience data from previous page."
|
|
243
|
+
},
|
|
244
|
+
hubspot: {
|
|
245
|
+
hbsptFound: {
|
|
246
|
+
error: '"window.hbspt" is undefined. This is only necessary when attempting to configure a HubSpot Smart Form. Otherwise, you can safely ignore this log.',
|
|
247
|
+
success: '"window.hbspt" is defined. Initializing HubSpot Smart Form now.'
|
|
248
|
+
},
|
|
249
|
+
initHubspotFormsComplete: {
|
|
250
|
+
missing: 'HubSpot forms setup using "window.hbspt" did not complete.',
|
|
251
|
+
success: 'HubSpot forms setup using "window.hbspt" has completed.'
|
|
252
|
+
},
|
|
253
|
+
onFormSubmit: {
|
|
254
|
+
missing: '"onFormSubmit" event was not detected',
|
|
255
|
+
success: '"onFormSubmit" event was detected'
|
|
256
|
+
},
|
|
257
|
+
onFormSubmitted: {
|
|
258
|
+
missing: '"onFormSubmitted" event was not detected',
|
|
259
|
+
success: '"onFormSubmitted" event was detected'
|
|
260
|
+
},
|
|
261
|
+
window: {
|
|
262
|
+
error: "Unable to access content window"
|
|
263
|
+
}
|
|
264
|
+
},
|
|
265
|
+
hubspotV4: {
|
|
266
|
+
HubSpotFormsV4Found: {
|
|
267
|
+
error: '"window.HubSpotFormsV4" is undefined. This is only necessary when attempting to configure a HubSpot V4 Smart Form. Otherwise, you can safely ignore this log.',
|
|
268
|
+
success: '"window.HubSpotFormsV4" is defined. Initializing HubSpot V4 Smart Form now.'
|
|
269
|
+
},
|
|
270
|
+
initComplete: {
|
|
271
|
+
error: "HubSpot V4 forms setup did not complete.",
|
|
272
|
+
success: "HubSpot V4 forms setup has completed."
|
|
273
|
+
},
|
|
274
|
+
onSubmissionSuccess: {
|
|
275
|
+
error: "Error processing HubSpot V4 form submission.",
|
|
276
|
+
success: '"hs-form-event:on-submission:success" event was processed successfully.'
|
|
277
|
+
},
|
|
278
|
+
pollTimeout: {
|
|
279
|
+
error: '"window.HubSpotFormsV4" was not found after 30s of polling. The HubSpot V4 script may not be loading on this page.'
|
|
280
|
+
},
|
|
281
|
+
window: {
|
|
282
|
+
error: "Unable to access content window for HubSpot V4"
|
|
283
|
+
}
|
|
284
|
+
},
|
|
285
|
+
marketo: {
|
|
286
|
+
MktoForms2Found: {
|
|
287
|
+
error: '"window.MktoForms2" is undefined. This is only necessary when attempting to configure a Marketo Smart Form. Otherwise, you can safely ignore this log.',
|
|
288
|
+
success: '"window.MktoForms2" is defined. Initializing Marketo Smart Forms now.'
|
|
289
|
+
},
|
|
290
|
+
configuredFormFound: {
|
|
291
|
+
missing: "No configured Marketo form was found.",
|
|
292
|
+
success: "Found Marketo form in configurations."
|
|
293
|
+
},
|
|
294
|
+
configuredFormSetup: {
|
|
295
|
+
missing: "No Marketo form was set up.",
|
|
296
|
+
success: "Marketo form has been set up."
|
|
297
|
+
},
|
|
298
|
+
initMarketoFormsComplete: {
|
|
299
|
+
missing: 'Marketo forms setup using "window.MktoForms" did not complete.',
|
|
300
|
+
success: 'Marketo forms setup using "window.MktoForms" has completed.'
|
|
301
|
+
},
|
|
302
|
+
onSubmit: {
|
|
303
|
+
missing: '"mktoForm.onSubmit" was not called',
|
|
304
|
+
success: '"mktoForm.onSubmit" was called successfully'
|
|
305
|
+
},
|
|
306
|
+
onSuccess: {
|
|
307
|
+
missing: '"mktoForm.onSuccess" was not called',
|
|
308
|
+
success: '"mktoForm.onSuccess" was called successfully'
|
|
309
|
+
},
|
|
310
|
+
showExperienceForForm: {
|
|
311
|
+
missing: "Redirecting after Marketo form submission. Showing form experience after redirect.",
|
|
312
|
+
success: "No redirection from Marketo form. Showing form experience."
|
|
313
|
+
},
|
|
314
|
+
redirectEvent: {
|
|
315
|
+
missing: "Marketo form did not redirect.",
|
|
316
|
+
success: "Marketo form is redirecting."
|
|
317
|
+
}
|
|
318
|
+
},
|
|
319
|
+
qualifiedForms: {
|
|
320
|
+
initQualifiedForms: {
|
|
321
|
+
success: "Embedded Qualified Form custom element was registered",
|
|
322
|
+
error: "Embedded Qualified Form custom element was not registered"
|
|
323
|
+
}
|
|
324
|
+
},
|
|
325
|
+
multimodal: {
|
|
326
|
+
gate: {
|
|
327
|
+
success: "Checked multimodal gate conditions"
|
|
328
|
+
},
|
|
329
|
+
hostReady: {
|
|
330
|
+
success: "Multimodal host created and shadow root attached"
|
|
331
|
+
},
|
|
332
|
+
shadowRegistered: {
|
|
333
|
+
success: "Registered shadow root with stylesLoader"
|
|
334
|
+
},
|
|
335
|
+
globalStyleInjected: {
|
|
336
|
+
success: "Injected global styles element into shadow root"
|
|
337
|
+
},
|
|
338
|
+
loadStart: {
|
|
339
|
+
success: "Starting dynamic import for multimodal module"
|
|
340
|
+
},
|
|
341
|
+
loadDone: {
|
|
342
|
+
success: "Dynamic import resolved for multimodal module"
|
|
343
|
+
},
|
|
344
|
+
loadError: {
|
|
345
|
+
error: "Dynamic import failed for multimodal module"
|
|
346
|
+
},
|
|
347
|
+
initCalled: {
|
|
348
|
+
success: "Called multimodal.init()"
|
|
349
|
+
}
|
|
350
|
+
}
|
|
351
|
+
}
|
|
352
|
+
};
|
|
353
|
+
function getDefaultDebugMessage(key, status) {
|
|
354
|
+
var _defaultMessages_status;
|
|
355
|
+
const defaultMessages = key.split(":").reduce((acc, curr)=>{
|
|
356
|
+
// @ts-expect-error - This traversal should work, by definition of DebugEventKey
|
|
357
|
+
return acc[curr];
|
|
358
|
+
}, DEBUG_EVENTS);
|
|
359
|
+
return (_defaultMessages_status = defaultMessages[status]) != null ? _defaultMessages_status : "Undefined message for " + key + ":" + status;
|
|
360
|
+
}
|
|
361
|
+
|
|
362
|
+
export { DebugState, getDefaultDebugMessage };
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import { AbstractLocalState } from "./abstract_local_state.js";
|
|
2
|
+
|
|
3
|
+
|
|
4
|
+
// Persisted state for "q_trace" query parameter
|
|
5
|
+
class TraceState extends AbstractLocalState {
|
|
6
|
+
setIsTracing(value, trace) {
|
|
7
|
+
this.isTracing = value;
|
|
8
|
+
this.traceValue = trace;
|
|
9
|
+
this.updateStateAtKey("isTracing", value);
|
|
10
|
+
this.updateStateAtKey("traceValue", trace);
|
|
11
|
+
}
|
|
12
|
+
constructor(...args){
|
|
13
|
+
var _ref;
|
|
14
|
+
var _this_persistedState, _this_persistedState1, _this_persistedState2;
|
|
15
|
+
super(...args), this.KEY = "__q_local_trace", this.TTL = 30 * 60 * 1000 // 30 minutes
|
|
16
|
+
, this.isTracing = (_ref = (_this_persistedState = this.persistedState) == null ? void 0 : _this_persistedState.isTracing) != null ? _ref : false, this.traceValue = ((_this_persistedState1 = this.persistedState) == null ? void 0 : _this_persistedState1.isTracing) ? (_this_persistedState2 = this.persistedState) == null ? void 0 : _this_persistedState2.traceValue : null;
|
|
17
|
+
}
|
|
18
|
+
}
|
|
19
|
+
|
|
20
|
+
export { TraceState };
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
class LocationProvider {
|
|
2
|
+
get hostname() {
|
|
3
|
+
// console.log(`[LocationProvider] hostname=${window.location.hostname}`);
|
|
4
|
+
return window.location.hostname;
|
|
5
|
+
}
|
|
6
|
+
}
|
|
7
|
+
/* export default */ const location_provider = (LocationProvider);
|
|
8
|
+
|
|
9
|
+
export default location_provider;
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
import { __webpack_require__ } from "../js/runtime.js";
|
|
2
|
+
import { api } from "../js/4101.js";
|
|
3
|
+
import "./utils/native_globals.js";
|
|
4
|
+
|
|
5
|
+
/* provided dependency */ var marketo_visitor_setInterval = __webpack_require__(68034).LK;
|
|
6
|
+
/* provided dependency */ var marketo_visitor_clearInterval = __webpack_require__(68034).wm;
|
|
7
|
+
|
|
8
|
+
const timeout = 1000;
|
|
9
|
+
class MarketoVisitor {
|
|
10
|
+
async getToken() {
|
|
11
|
+
return new Promise((resolve)=>{
|
|
12
|
+
// Marketo's Munchkin tracking sets a cookie with the form:
|
|
13
|
+
// id:123-ABC-789&token:_mch-localhost-1585090488855-75516
|
|
14
|
+
const getCookiedToken = ()=>api.get("_mkto_trk");
|
|
15
|
+
if (getCookiedToken()) {
|
|
16
|
+
// cookie exists already
|
|
17
|
+
resolve(getCookiedToken());
|
|
18
|
+
} else if (window.Munchkin) {
|
|
19
|
+
// munchkin tracking exists but cookie isn't set yet
|
|
20
|
+
const startTime = Date.now();
|
|
21
|
+
const intervalId = marketo_visitor_setInterval(()=>{
|
|
22
|
+
if (getCookiedToken()) {
|
|
23
|
+
marketo_visitor_clearInterval(intervalId);
|
|
24
|
+
resolve(getCookiedToken());
|
|
25
|
+
} else if (Date.now() - startTime > timeout) {
|
|
26
|
+
marketo_visitor_clearInterval(intervalId);
|
|
27
|
+
resolve(undefined);
|
|
28
|
+
}
|
|
29
|
+
}, 200);
|
|
30
|
+
} else {
|
|
31
|
+
// no cookie or tracking
|
|
32
|
+
resolve(undefined);
|
|
33
|
+
}
|
|
34
|
+
});
|
|
35
|
+
}
|
|
36
|
+
}
|
|
37
|
+
/* export default */ const marketo_visitor = (MarketoVisitor);
|
|
38
|
+
|
|
39
|
+
export default marketo_visitor;
|
|
@@ -0,0 +1,124 @@
|
|
|
1
|
+
import "../../telemetry/index.js";
|
|
2
|
+
import { getSentryClient } from "../../widget/sentry.js";
|
|
3
|
+
import { ButtonsTriggeringSpans } from "./spans/button_spans.js";
|
|
4
|
+
import { FormsTriggeringSpans } from "./spans/form_spans.js";
|
|
5
|
+
import { tracingStore as tracing_store_tracingStore } from "../../telemetry/tracing_store.js";
|
|
6
|
+
|
|
7
|
+
|
|
8
|
+
|
|
9
|
+
|
|
10
|
+
|
|
11
|
+
class ButtonsFormsTriggeringTracer {
|
|
12
|
+
static startButtonClickSpan() {
|
|
13
|
+
tracing_store_tracingStore.startSpan(ButtonsTriggeringSpans.BUTTON_CLICK);
|
|
14
|
+
tracing_store_tracingStore.startSpan(ButtonsTriggeringSpans.WAIT_FOR_LIGHTBOX_LOADING_SPINNER, {
|
|
15
|
+
parentSpan: ButtonsTriggeringSpans.BUTTON_CLICK
|
|
16
|
+
});
|
|
17
|
+
}
|
|
18
|
+
static startSubmitFormSpan(attributes) {
|
|
19
|
+
tracing_store_tracingStore.startSpan(FormsTriggeringSpans.SUBMIT_FORM, {
|
|
20
|
+
attributes
|
|
21
|
+
});
|
|
22
|
+
}
|
|
23
|
+
static finishFormOrButtonSpan(message) {
|
|
24
|
+
const attributes = this.extractAttributesIfFormsOrButtonsResponse(message);
|
|
25
|
+
if (attributes) {
|
|
26
|
+
/**
|
|
27
|
+
* Buttons can be very fast and not have enough time to show the loading spinner,
|
|
28
|
+
* so we remove the loading spinner span since for this execution no loading spinner was necessary.
|
|
29
|
+
*/ tracing_store_tracingStore.cancelSpan(ButtonsTriggeringSpans.WAIT_FOR_LIGHTBOX_LOADING_SPINNER);
|
|
30
|
+
tracing_store_tracingStore.finishSpans([
|
|
31
|
+
FormsTriggeringSpans.SUBMIT_FORM,
|
|
32
|
+
ButtonsTriggeringSpans.BUTTON_CLICK
|
|
33
|
+
], {
|
|
34
|
+
attributes
|
|
35
|
+
});
|
|
36
|
+
}
|
|
37
|
+
}
|
|
38
|
+
static finishWaitForLightboxLoadingSpinnerSpan() {
|
|
39
|
+
tracing_store_tracingStore.finishSpan(ButtonsTriggeringSpans.WAIT_FOR_LIGHTBOX_LOADING_SPINNER);
|
|
40
|
+
}
|
|
41
|
+
static nonEmptyUniqueValues(values) {
|
|
42
|
+
const uniqueValues = Array.from(new Set(values));
|
|
43
|
+
return uniqueValues.filter((value)=>value !== undefined).filter((value)=>value !== null).filter((value)=>value !== "");
|
|
44
|
+
}
|
|
45
|
+
static setExperienceResultType(attributes, result) {
|
|
46
|
+
attributes["app.experience_result_type"] = result;
|
|
47
|
+
}
|
|
48
|
+
static updateExperienceResultType(param) {
|
|
49
|
+
let { attributes, widgetInitAfterButtonOrForm, fallbackToDefaultForButtonOrForm, messages = [] } = param;
|
|
50
|
+
if (widgetInitAfterButtonOrForm) {
|
|
51
|
+
this.setExperienceResultType(attributes, "widget");
|
|
52
|
+
} else if (fallbackToDefaultForButtonOrForm) {
|
|
53
|
+
this.setExperienceResultType(attributes, "fallback_to_default");
|
|
54
|
+
} else {
|
|
55
|
+
const messageTypes = this.nonEmptyUniqueValues(messages.map((msg)=>msg.type));
|
|
56
|
+
if (messageTypes.length > 0) {
|
|
57
|
+
attributes["message.types"] = messageTypes;
|
|
58
|
+
if (!attributes["app.experience_result_type"]) {
|
|
59
|
+
const isQualificationQuestions = messageTypes.includes("lightbox_gather");
|
|
60
|
+
const isMeetingBooker = messageTypes.includes("calendar_event_offer");
|
|
61
|
+
if (isQualificationQuestions) {
|
|
62
|
+
this.setExperienceResultType(attributes, "qualification_questions");
|
|
63
|
+
} else if (isMeetingBooker) {
|
|
64
|
+
this.setExperienceResultType(attributes, "meeting_booker");
|
|
65
|
+
} else {
|
|
66
|
+
this.setExperienceResultType(attributes, "unknown");
|
|
67
|
+
}
|
|
68
|
+
}
|
|
69
|
+
}
|
|
70
|
+
}
|
|
71
|
+
}
|
|
72
|
+
static extractAttributesIfFormsOrButtonsResponse(message) {
|
|
73
|
+
let attributes;
|
|
74
|
+
try {
|
|
75
|
+
var _message_payload_messages, _message_payload, _message_payload_conversations, _message_payload1, _message_payload2;
|
|
76
|
+
const hasMessages = (((_message_payload = message.payload) == null ? void 0 : (_message_payload_messages = _message_payload.messages) == null ? void 0 : _message_payload_messages.length) || 0) > 0;
|
|
77
|
+
const hasConversations = (((_message_payload1 = message.payload) == null ? void 0 : (_message_payload_conversations = _message_payload1.conversations) == null ? void 0 : _message_payload_conversations.length) || 0) > 0;
|
|
78
|
+
/**
|
|
79
|
+
* This indicates a full-screen meeting booker or qualification questions were shown.
|
|
80
|
+
*/ const fullscreenMBOrQQ = message.event === "initElementConversation" && hasMessages;
|
|
81
|
+
/**
|
|
82
|
+
* This indicates the same as above, but when the return was async (maybe if experience has
|
|
83
|
+
* pushes after routing for a meeting).
|
|
84
|
+
*/ const asyncFullscreenMBOrQQ = message.event === "elementMessage";
|
|
85
|
+
/**
|
|
86
|
+
* This indicates a conversation (widget) as a result of a form submission or button trigger.
|
|
87
|
+
*/ const lastConversation = hasConversations && message.payload.conversations[message.payload.conversations.length - 1];
|
|
88
|
+
const widgetInitAfterButtonOrForm = message.event === "initState" && [
|
|
89
|
+
"smart_cta",
|
|
90
|
+
"form"
|
|
91
|
+
].includes(lastConversation == null ? void 0 : lastConversation.triggeredByBotType);
|
|
92
|
+
const fallbackToDefaultForButtonOrForm = message.event === "closeLightbox" && ((_message_payload2 = message.payload) == null ? void 0 : _message_payload2.fallbackToDefault) === true;
|
|
93
|
+
if (fullscreenMBOrQQ || asyncFullscreenMBOrQQ || widgetInitAfterButtonOrForm || fallbackToDefaultForButtonOrForm) {
|
|
94
|
+
attributes = {};
|
|
95
|
+
this.updateExperienceResultType({
|
|
96
|
+
attributes,
|
|
97
|
+
widgetInitAfterButtonOrForm,
|
|
98
|
+
fallbackToDefaultForButtonOrForm
|
|
99
|
+
});
|
|
100
|
+
if (hasMessages) {
|
|
101
|
+
const { messages = [] } = message.payload || {};
|
|
102
|
+
this.updateExperienceResultType({
|
|
103
|
+
attributes,
|
|
104
|
+
messages
|
|
105
|
+
});
|
|
106
|
+
const uniqueEventTypes = this.nonEmptyUniqueValues(messages.map((msg)=>msg.eventType));
|
|
107
|
+
if (uniqueEventTypes.length > 0) {
|
|
108
|
+
attributes["message.event_types"] = uniqueEventTypes;
|
|
109
|
+
}
|
|
110
|
+
const uniqueConversationIds = this.nonEmptyUniqueValues(messages.map((msg)=>msg.conversationId));
|
|
111
|
+
if (uniqueConversationIds.length > 0) {
|
|
112
|
+
attributes["conversation.ids"] = uniqueConversationIds;
|
|
113
|
+
}
|
|
114
|
+
}
|
|
115
|
+
}
|
|
116
|
+
} catch (e) {
|
|
117
|
+
var _getSentryClient;
|
|
118
|
+
(_getSentryClient = getSentryClient()) == null ? void 0 : _getSentryClient.captureException(e);
|
|
119
|
+
}
|
|
120
|
+
return attributes;
|
|
121
|
+
}
|
|
122
|
+
}
|
|
123
|
+
|
|
124
|
+
export { ButtonsFormsTriggeringTracer };
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
const ButtonsTriggeringSpans = {
|
|
2
|
+
/**
|
|
3
|
+
* This span involves triggering a button and getting a response (either conversation or full-screen meeting booker).
|
|
4
|
+
* Ignores loading state.
|
|
5
|
+
*/ BUTTON_CLICK: {
|
|
6
|
+
name: "Visitor: Button Click",
|
|
7
|
+
samplingProbability: 1.0
|
|
8
|
+
},
|
|
9
|
+
/**
|
|
10
|
+
* When triggering an experience via buttons, we may show the lightbox loading spinner if the process takes too long.
|
|
11
|
+
* See Messenger.jsx#useMeetingProgressBar for more details.
|
|
12
|
+
*/ WAIT_FOR_LIGHTBOX_LOADING_SPINNER: {
|
|
13
|
+
name: "System: Wait for lightbox loading spinner",
|
|
14
|
+
samplingProbability: 1.0
|
|
15
|
+
}
|
|
16
|
+
};
|
|
17
|
+
|
|
18
|
+
export { ButtonsTriggeringSpans };
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
const FormsTriggeringSpans = {
|
|
2
|
+
/**
|
|
3
|
+
* This span involves triggering a form experiences and getting a response (either conversation or full-screen meeting booker).
|
|
4
|
+
* Ignores loading state.
|
|
5
|
+
*/ SUBMIT_FORM: {
|
|
6
|
+
name: "Visitor: Submit Form",
|
|
7
|
+
samplingProbability: 1.0
|
|
8
|
+
}
|
|
9
|
+
};
|
|
10
|
+
|
|
11
|
+
export { FormsTriggeringSpans };
|