@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,129 @@
|
|
|
1
|
+
import { __webpack_require__ } from "../../js/runtime.js";
|
|
2
|
+
import { logger } from "./logger.js";
|
|
3
|
+
import "../../widget/utils/native_globals.js";
|
|
4
|
+
|
|
5
|
+
/* provided dependency */ var connection_monitor_clearTimeout = __webpack_require__(68034).Kj;
|
|
6
|
+
/* provided dependency */ var connection_monitor_setTimeout = __webpack_require__(68034).pS;
|
|
7
|
+
|
|
8
|
+
// Responsible for ensuring the cable connection is in good health by validating the heartbeat pings sent from the server, and attempting
|
|
9
|
+
// revival reconnections if things go astray. Internal class, not intended for direct user manipulation.
|
|
10
|
+
const now = ()=>new Date().getTime();
|
|
11
|
+
const secondsSince = (time)=>(now() - time) / 1000;
|
|
12
|
+
class ConnectionMonitor {
|
|
13
|
+
start() {
|
|
14
|
+
if (!this.isRunning()) {
|
|
15
|
+
this.startedAt = now();
|
|
16
|
+
delete this.stoppedAt;
|
|
17
|
+
this.startPolling();
|
|
18
|
+
addEventListener("visibilitychange", this.visibilityDidChange);
|
|
19
|
+
logger.log("ConnectionMonitor started. stale threshold = " + this.constructor.staleThreshold + " s");
|
|
20
|
+
}
|
|
21
|
+
}
|
|
22
|
+
stop() {
|
|
23
|
+
if (this.isRunning()) {
|
|
24
|
+
this.stoppedAt = now();
|
|
25
|
+
this.stopPolling();
|
|
26
|
+
removeEventListener("visibilitychange", this.visibilityDidChange);
|
|
27
|
+
logger.log("ConnectionMonitor stopped");
|
|
28
|
+
}
|
|
29
|
+
}
|
|
30
|
+
isRunning() {
|
|
31
|
+
return this.startedAt && !this.stoppedAt;
|
|
32
|
+
}
|
|
33
|
+
recordPing() {
|
|
34
|
+
this.pingedAt = now();
|
|
35
|
+
}
|
|
36
|
+
// START PATCH
|
|
37
|
+
recordConnectWaiting() {
|
|
38
|
+
this.connectWaitingStartedAt = now();
|
|
39
|
+
logger.log("ConnectionMonitor recorded waiting for connect");
|
|
40
|
+
}
|
|
41
|
+
// END PATCH
|
|
42
|
+
recordConnect() {
|
|
43
|
+
this.reconnectAttempts = 0;
|
|
44
|
+
this.recordPing();
|
|
45
|
+
delete this.connectWaitingStartedAt;
|
|
46
|
+
delete this.disconnectedAt;
|
|
47
|
+
logger.log("ConnectionMonitor recorded connect");
|
|
48
|
+
}
|
|
49
|
+
recordDisconnect() {
|
|
50
|
+
this.disconnectedAt = now();
|
|
51
|
+
logger.log("ConnectionMonitor recorded disconnect");
|
|
52
|
+
}
|
|
53
|
+
// Private
|
|
54
|
+
startPolling() {
|
|
55
|
+
this.stopPolling();
|
|
56
|
+
this.poll();
|
|
57
|
+
}
|
|
58
|
+
stopPolling() {
|
|
59
|
+
connection_monitor_clearTimeout(this.pollTimeout);
|
|
60
|
+
}
|
|
61
|
+
poll() {
|
|
62
|
+
this.pollTimeout = connection_monitor_setTimeout(()=>{
|
|
63
|
+
this.reconnectIfStale();
|
|
64
|
+
this.poll();
|
|
65
|
+
}, this.getPollInterval());
|
|
66
|
+
}
|
|
67
|
+
// The poll interval introduces a jitter of a relatively large range (e.g. first reconnect attempt can take)
|
|
68
|
+
// anywhere from 6-12s. This is intentionally wide (and most important for the first reconnect) to avoid stampeding-herd
|
|
69
|
+
// effects when dynos restart (e.g. during deploy) and widgets reconnect.
|
|
70
|
+
getPollInterval() {
|
|
71
|
+
const { staleThreshold, reconnectionBackoffRate } = this.constructor;
|
|
72
|
+
const backoff = Math.pow(1 + reconnectionBackoffRate, Math.min(this.reconnectAttempts, 10));
|
|
73
|
+
const jitterMax = this.reconnectAttempts === 0 ? 1.0 : reconnectionBackoffRate;
|
|
74
|
+
const jitter = jitterMax * Math.random();
|
|
75
|
+
return staleThreshold * 1000 * backoff * (1 + jitter);
|
|
76
|
+
}
|
|
77
|
+
reconnectIfStale() {
|
|
78
|
+
if (this.connectionIsStale()) {
|
|
79
|
+
logger.log("ConnectionMonitor detected stale connection. reconnectAttempts = " + this.reconnectAttempts + ", time stale = " + secondsSince(this.refreshedAt) + " s, stale threshold = " + this.constructor.staleThreshold + " s");
|
|
80
|
+
this.reconnectAttempts++;
|
|
81
|
+
if (this.disconnectedRecently()) {
|
|
82
|
+
logger.log("ConnectionMonitor skipping reopening recent disconnect. time disconnected = " + secondsSince(this.disconnectedAt) + " s");
|
|
83
|
+
// START PATCH
|
|
84
|
+
} else if (this.waitingForConnect()) {
|
|
85
|
+
logger.log("ConnectionMonitor skipping reopening recent connect waiting. time waiting = " + secondsSince(this.connectWaitingStartedAt) + " s");
|
|
86
|
+
// END PATCH
|
|
87
|
+
} else {
|
|
88
|
+
logger.log("ConnectionMonitor reopening");
|
|
89
|
+
this.connection.reopen();
|
|
90
|
+
}
|
|
91
|
+
}
|
|
92
|
+
}
|
|
93
|
+
get refreshedAt() {
|
|
94
|
+
return this.pingedAt ? this.pingedAt : this.startedAt;
|
|
95
|
+
}
|
|
96
|
+
connectionIsStale() {
|
|
97
|
+
return secondsSince(this.refreshedAt) > this.constructor.staleThreshold;
|
|
98
|
+
}
|
|
99
|
+
disconnectedRecently() {
|
|
100
|
+
return this.disconnectedAt && secondsSince(this.disconnectedAt) < this.constructor.staleThreshold;
|
|
101
|
+
}
|
|
102
|
+
// START PATCH
|
|
103
|
+
waitingForConnect() {
|
|
104
|
+
return this.connectWaitingStartedAt && secondsSince(this.connectWaitingStartedAt) < this.constructor.staleThreshold;
|
|
105
|
+
}
|
|
106
|
+
// END PATCH
|
|
107
|
+
visibilityDidChange() {
|
|
108
|
+
if (document.visibilityState === "visible") {
|
|
109
|
+
connection_monitor_setTimeout(()=>{
|
|
110
|
+
// START PATCH
|
|
111
|
+
if (this.connectionIsStale() && !this.waitingForConnect() || !this.connection.isOpen()) {
|
|
112
|
+
// END PATCH
|
|
113
|
+
logger.log("ConnectionMonitor reopening stale connection on visibilitychange. visibilityState = " + document.visibilityState);
|
|
114
|
+
this.connection.reopen();
|
|
115
|
+
}
|
|
116
|
+
}, 200);
|
|
117
|
+
}
|
|
118
|
+
}
|
|
119
|
+
constructor(connection){
|
|
120
|
+
this.visibilityDidChange = this.visibilityDidChange.bind(this);
|
|
121
|
+
this.connection = connection;
|
|
122
|
+
this.reconnectAttempts = 0;
|
|
123
|
+
}
|
|
124
|
+
}
|
|
125
|
+
ConnectionMonitor.staleThreshold = 6; // Server::Connections::BEAT_INTERVAL * 2 (missed two pings)
|
|
126
|
+
ConnectionMonitor.reconnectionBackoffRate = 0.15;
|
|
127
|
+
/* export default */ const connection_monitor = (ConnectionMonitor);
|
|
128
|
+
|
|
129
|
+
export default connection_monitor;
|
|
@@ -0,0 +1,91 @@
|
|
|
1
|
+
import { default as connection } from "./connection.js";
|
|
2
|
+
import { Subscriptions } from "./subscriptions.js";
|
|
3
|
+
|
|
4
|
+
|
|
5
|
+
|
|
6
|
+
class Consumer {
|
|
7
|
+
get url() {
|
|
8
|
+
// START PATCH: Modify existing url getter to return with initial connect param attached
|
|
9
|
+
const websocketUrl = createWebSocketURL(this._url);
|
|
10
|
+
return urlWithInitialConnectParam(websocketUrl, this.connection.hasConnectedBefore());
|
|
11
|
+
// END PATCH
|
|
12
|
+
}
|
|
13
|
+
send(data) {
|
|
14
|
+
return this.connection.send(data);
|
|
15
|
+
}
|
|
16
|
+
connect() {
|
|
17
|
+
return this.connection.open();
|
|
18
|
+
}
|
|
19
|
+
disconnect() {
|
|
20
|
+
return this.connection.close({
|
|
21
|
+
allowReconnect: false
|
|
22
|
+
});
|
|
23
|
+
}
|
|
24
|
+
ensureActiveConnection() {
|
|
25
|
+
if (!this.connection.isActive()) {
|
|
26
|
+
return this.connection.open();
|
|
27
|
+
}
|
|
28
|
+
}
|
|
29
|
+
constructor(url){
|
|
30
|
+
this._url = url;
|
|
31
|
+
this.subscriptions = new Subscriptions(this);
|
|
32
|
+
this.connection = new connection(this);
|
|
33
|
+
}
|
|
34
|
+
}
|
|
35
|
+
// The ActionCable.Consumer establishes the connection to a server-side Ruby Connection object. Once established,
|
|
36
|
+
// the ActionCable.ConnectionMonitor will ensure that its properly maintained through heartbeats and checking for stale updates.
|
|
37
|
+
// The Consumer instance is also the gateway to establishing subscriptions to desired channels through the #createSubscription
|
|
38
|
+
// method.
|
|
39
|
+
//
|
|
40
|
+
// The following example shows how this can be set up:
|
|
41
|
+
//
|
|
42
|
+
// App = {}
|
|
43
|
+
// App.cable = ActionCable.createConsumer("ws://example.com/accounts/1")
|
|
44
|
+
// App.appearance = App.cable.subscriptions.create("AppearanceChannel")
|
|
45
|
+
//
|
|
46
|
+
// For more details on how you'd configure an actual channel subscription, see ActionCable.Subscription.
|
|
47
|
+
//
|
|
48
|
+
// When a consumer is created, it automatically connects with the server.
|
|
49
|
+
//
|
|
50
|
+
// To disconnect from the server, call
|
|
51
|
+
//
|
|
52
|
+
// App.cable.disconnect()
|
|
53
|
+
//
|
|
54
|
+
// and to restart the connection:
|
|
55
|
+
//
|
|
56
|
+
// App.cable.connect()
|
|
57
|
+
//
|
|
58
|
+
// Any channel subscriptions which existed prior to disconnecting will
|
|
59
|
+
// automatically resubscribe.
|
|
60
|
+
|
|
61
|
+
function createWebSocketURL(url) {
|
|
62
|
+
if (typeof url === "function") {
|
|
63
|
+
url = url();
|
|
64
|
+
}
|
|
65
|
+
if (url && !/^wss?:/i.test(url)) {
|
|
66
|
+
const a = document.createElement("a");
|
|
67
|
+
a.href = url;
|
|
68
|
+
// Fix populating Location properties in IE. Otherwise, protocol will be blank.
|
|
69
|
+
a.href = a.href;
|
|
70
|
+
a.protocol = a.protocol.replace("http", "ws");
|
|
71
|
+
return a.href;
|
|
72
|
+
} else {
|
|
73
|
+
return url;
|
|
74
|
+
}
|
|
75
|
+
}
|
|
76
|
+
// START PATCH
|
|
77
|
+
function urlWithInitialConnectParam(url, connectedBefore) {
|
|
78
|
+
let hasQueryParamsAlready;
|
|
79
|
+
try {
|
|
80
|
+
const urlObject = new URL(url);
|
|
81
|
+
hasQueryParamsAlready = Array.from(urlObject.searchParams.entries()).length > 0;
|
|
82
|
+
} catch (unused) {
|
|
83
|
+
hasQueryParamsAlready = false;
|
|
84
|
+
}
|
|
85
|
+
const initialConnectQueryParam = "ic=" + !connectedBefore;
|
|
86
|
+
return url + (hasQueryParamsAlready ? "&" + initialConnectQueryParam : "?" + initialConnectQueryParam);
|
|
87
|
+
} // END PATCH
|
|
88
|
+
|
|
89
|
+
var consumer_createWebSocketURL = /* unused export */ undefined;
|
|
90
|
+
export { consumer_createWebSocketURL as createWebSocketURL };
|
|
91
|
+
export default Consumer;
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
import { default as Consumer } from "./consumer.js";
|
|
2
|
+
import { INTERNAL as internal } from "./internal.js";
|
|
3
|
+
|
|
4
|
+
|
|
5
|
+
|
|
6
|
+
|
|
7
|
+
|
|
8
|
+
|
|
9
|
+
|
|
10
|
+
|
|
11
|
+
|
|
12
|
+
|
|
13
|
+
function createConsumer(url) {
|
|
14
|
+
if (url === void 0) url = getConfig("url") || internal.default_mount_path;
|
|
15
|
+
return new Consumer(url);
|
|
16
|
+
}
|
|
17
|
+
function getConfig(name) {
|
|
18
|
+
const element = document.head.querySelector("meta[name='action-cable-" + name + "']");
|
|
19
|
+
if (element) {
|
|
20
|
+
return element.getAttribute("content");
|
|
21
|
+
}
|
|
22
|
+
}
|
|
23
|
+
|
|
24
|
+
var actioncable_createWebSocketURL = /* unused export */ undefined;
|
|
25
|
+
var actioncable_getConfig = /* unused export */ undefined;
|
|
26
|
+
export { actioncable_createWebSocketURL as createWebSocketURL, actioncable_getConfig as getConfig, createConsumer };
|
|
27
|
+
export { default as Connection } from "./connection.js";
|
|
28
|
+
export { default as ConnectionMonitor } from "./connection_monitor.js";
|
|
29
|
+
export { default as Consumer } from "./consumer.js";
|
|
30
|
+
export { INTERNAL } from "./internal.js";
|
|
31
|
+
export { Subscription } from "./subscription.js";
|
|
32
|
+
export { Subscriptions } from "./subscriptions.js";
|
|
33
|
+
export { default as adapters } from "./adapters.js";
|
|
34
|
+
export { logger } from "./logger.js";
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
/* export default */ const internal = ({
|
|
2
|
+
message_types: {
|
|
3
|
+
welcome: "welcome",
|
|
4
|
+
disconnect: "disconnect",
|
|
5
|
+
ping: "ping",
|
|
6
|
+
confirmation: "confirm_subscription",
|
|
7
|
+
rejection: "reject_subscription"
|
|
8
|
+
},
|
|
9
|
+
disconnect_reasons: {
|
|
10
|
+
unauthorized: "unauthorized",
|
|
11
|
+
invalid_request: "invalid_request",
|
|
12
|
+
server_restart: "server_restart"
|
|
13
|
+
},
|
|
14
|
+
default_mount_path: "/cable",
|
|
15
|
+
protocols: [
|
|
16
|
+
"actioncable-v1-json",
|
|
17
|
+
"actioncable-unsupported"
|
|
18
|
+
]
|
|
19
|
+
});
|
|
20
|
+
|
|
21
|
+
export { internal as INTERNAL };
|
|
22
|
+
export default internal;
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
import { default as adapters } from "./adapters.js";
|
|
2
|
+
|
|
3
|
+
|
|
4
|
+
// The logger is disabled by default. You can enable it with:
|
|
5
|
+
//
|
|
6
|
+
// ActionCable.logger.enabled = true
|
|
7
|
+
//
|
|
8
|
+
// Example:
|
|
9
|
+
//
|
|
10
|
+
// import * as ActionCable from '@rails/actioncable'
|
|
11
|
+
//
|
|
12
|
+
// ActionCable.logger.enabled = true
|
|
13
|
+
// ActionCable.logger.log('Connection Established.')
|
|
14
|
+
//
|
|
15
|
+
/* export default */ const logger = ({
|
|
16
|
+
log () {
|
|
17
|
+
for(var _len = arguments.length, messages = new Array(_len), _key = 0; _key < _len; _key++){
|
|
18
|
+
messages[_key] = arguments[_key];
|
|
19
|
+
}
|
|
20
|
+
if (this.enabled) {
|
|
21
|
+
messages.push(Date.now());
|
|
22
|
+
adapters.logger.log("[ActionCable]", ...messages);
|
|
23
|
+
}
|
|
24
|
+
}
|
|
25
|
+
});
|
|
26
|
+
|
|
27
|
+
export { logger };
|
|
28
|
+
export default logger;
|
|
@@ -0,0 +1,93 @@
|
|
|
1
|
+
// A new subscription is created through the ActionCable.Subscriptions instance available on the consumer.
|
|
2
|
+
// It provides a number of callbacks and a method for calling remote procedure calls on the corresponding
|
|
3
|
+
// Channel instance on the server side.
|
|
4
|
+
//
|
|
5
|
+
// An example demonstrates the basic functionality:
|
|
6
|
+
//
|
|
7
|
+
// App.appearance = App.cable.subscriptions.create("AppearanceChannel", {
|
|
8
|
+
// connected() {
|
|
9
|
+
// // Called once the subscription has been successfully completed
|
|
10
|
+
// },
|
|
11
|
+
//
|
|
12
|
+
// disconnected({ willAttemptReconnect: boolean }) {
|
|
13
|
+
// // Called when the client has disconnected with the server.
|
|
14
|
+
// // The object will have an `willAttemptReconnect` property which
|
|
15
|
+
// // says whether the client has the intention of attempting
|
|
16
|
+
// // to reconnect.
|
|
17
|
+
// },
|
|
18
|
+
//
|
|
19
|
+
// appear() {
|
|
20
|
+
// this.perform('appear', {appearing_on: this.appearingOn()})
|
|
21
|
+
// },
|
|
22
|
+
//
|
|
23
|
+
// away() {
|
|
24
|
+
// this.perform('away')
|
|
25
|
+
// },
|
|
26
|
+
//
|
|
27
|
+
// appearingOn() {
|
|
28
|
+
// $('main').data('appearing-on')
|
|
29
|
+
// }
|
|
30
|
+
// })
|
|
31
|
+
//
|
|
32
|
+
// The methods #appear and #away forward their intent to the remote AppearanceChannel instance on the server
|
|
33
|
+
// by calling the `perform` method with the first parameter being the action (which maps to AppearanceChannel#appear/away).
|
|
34
|
+
// The second parameter is a hash that'll get JSON encoded and made available on the server in the data parameter.
|
|
35
|
+
//
|
|
36
|
+
// This is how the server component would look:
|
|
37
|
+
//
|
|
38
|
+
// class AppearanceChannel < ApplicationActionCable::Channel
|
|
39
|
+
// def subscribed
|
|
40
|
+
// current_user.appear
|
|
41
|
+
// end
|
|
42
|
+
//
|
|
43
|
+
// def unsubscribed
|
|
44
|
+
// current_user.disappear
|
|
45
|
+
// end
|
|
46
|
+
//
|
|
47
|
+
// def appear(data)
|
|
48
|
+
// current_user.appear on: data['appearing_on']
|
|
49
|
+
// end
|
|
50
|
+
//
|
|
51
|
+
// def away
|
|
52
|
+
// current_user.away
|
|
53
|
+
// end
|
|
54
|
+
// end
|
|
55
|
+
//
|
|
56
|
+
// The "AppearanceChannel" name is automatically mapped between the client-side subscription creation and the server-side Ruby class name.
|
|
57
|
+
// The AppearanceChannel#appear/away public methods are exposed automatically to client-side invocation through the perform method.
|
|
58
|
+
const subscription_extend = function extend(object, properties) {
|
|
59
|
+
if (properties != null) {
|
|
60
|
+
for(let key in properties){
|
|
61
|
+
const value = properties[key];
|
|
62
|
+
object[key] = value;
|
|
63
|
+
}
|
|
64
|
+
}
|
|
65
|
+
return object;
|
|
66
|
+
};
|
|
67
|
+
class Subscription {
|
|
68
|
+
// Perform a channel action with the optional data passed as an attribute
|
|
69
|
+
perform(action, data) {
|
|
70
|
+
if (data === void 0) data = {};
|
|
71
|
+
data.action = action;
|
|
72
|
+
return this.send(data);
|
|
73
|
+
}
|
|
74
|
+
send(data) {
|
|
75
|
+
return this.consumer.send({
|
|
76
|
+
command: "message",
|
|
77
|
+
identifier: this.identifier,
|
|
78
|
+
data: JSON.stringify(data)
|
|
79
|
+
});
|
|
80
|
+
}
|
|
81
|
+
unsubscribe() {
|
|
82
|
+
return this.consumer.subscriptions.remove(this);
|
|
83
|
+
}
|
|
84
|
+
constructor(consumer, params = {}, mixin){
|
|
85
|
+
this.consumer = consumer;
|
|
86
|
+
this.identifier = JSON.stringify(params);
|
|
87
|
+
subscription_extend(this, mixin);
|
|
88
|
+
}
|
|
89
|
+
}
|
|
90
|
+
|
|
91
|
+
|
|
92
|
+
export { Subscription };
|
|
93
|
+
export default Subscription;
|
|
@@ -0,0 +1,89 @@
|
|
|
1
|
+
import { Subscription } from "./subscription.js";
|
|
2
|
+
|
|
3
|
+
|
|
4
|
+
class Subscriptions {
|
|
5
|
+
create(channelName, mixin) {
|
|
6
|
+
const channel = channelName;
|
|
7
|
+
const params = typeof channel === "object" ? channel : {
|
|
8
|
+
channel
|
|
9
|
+
};
|
|
10
|
+
const subscription = new Subscription(this.consumer, params, mixin);
|
|
11
|
+
return this.add(subscription);
|
|
12
|
+
}
|
|
13
|
+
// Private
|
|
14
|
+
add(subscription) {
|
|
15
|
+
this.subscriptions.push(subscription);
|
|
16
|
+
this.consumer.ensureActiveConnection();
|
|
17
|
+
this.notify(subscription, "initialized");
|
|
18
|
+
this.sendCommand(subscription, "subscribe");
|
|
19
|
+
return subscription;
|
|
20
|
+
}
|
|
21
|
+
remove(subscription) {
|
|
22
|
+
this.forget(subscription);
|
|
23
|
+
if (!this.findAll(subscription.identifier).length) {
|
|
24
|
+
this.sendCommand(subscription, "unsubscribe");
|
|
25
|
+
}
|
|
26
|
+
return subscription;
|
|
27
|
+
}
|
|
28
|
+
reject(identifier) {
|
|
29
|
+
return this.findAll(identifier).map((subscription)=>{
|
|
30
|
+
this.forget(subscription);
|
|
31
|
+
this.notify(subscription, "rejected");
|
|
32
|
+
return subscription;
|
|
33
|
+
});
|
|
34
|
+
}
|
|
35
|
+
forget(subscription) {
|
|
36
|
+
this.subscriptions = this.subscriptions.filter((s)=>s !== subscription);
|
|
37
|
+
return subscription;
|
|
38
|
+
}
|
|
39
|
+
findAll(identifier) {
|
|
40
|
+
return this.subscriptions.filter((s)=>s.identifier === identifier);
|
|
41
|
+
}
|
|
42
|
+
reload() {
|
|
43
|
+
return this.subscriptions.map((subscription)=>this.sendCommand(subscription, "subscribe"));
|
|
44
|
+
}
|
|
45
|
+
notifyAll(callbackName) {
|
|
46
|
+
for(var _len = arguments.length, args = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++){
|
|
47
|
+
args[_key - 1] = arguments[_key];
|
|
48
|
+
}
|
|
49
|
+
return this.subscriptions.map((subscription)=>this.notify(subscription, callbackName, ...args));
|
|
50
|
+
}
|
|
51
|
+
notify(subscription, callbackName) {
|
|
52
|
+
for(var _len = arguments.length, args = new Array(_len > 2 ? _len - 2 : 0), _key = 2; _key < _len; _key++){
|
|
53
|
+
args[_key - 2] = arguments[_key];
|
|
54
|
+
}
|
|
55
|
+
let subscriptions;
|
|
56
|
+
if (typeof subscription === "string") {
|
|
57
|
+
subscriptions = this.findAll(subscription);
|
|
58
|
+
} else {
|
|
59
|
+
subscriptions = [
|
|
60
|
+
subscription
|
|
61
|
+
];
|
|
62
|
+
}
|
|
63
|
+
return subscriptions.map((subscription)=>typeof subscription[callbackName] === "function" ? subscription[callbackName](...args) : undefined);
|
|
64
|
+
}
|
|
65
|
+
sendCommand(subscription, command) {
|
|
66
|
+
const { identifier } = subscription;
|
|
67
|
+
return this.consumer.send({
|
|
68
|
+
command,
|
|
69
|
+
identifier
|
|
70
|
+
});
|
|
71
|
+
}
|
|
72
|
+
constructor(consumer){
|
|
73
|
+
this.consumer = consumer;
|
|
74
|
+
this.subscriptions = [];
|
|
75
|
+
}
|
|
76
|
+
}
|
|
77
|
+
// Collection class for creating (and internally managing) channel subscriptions.
|
|
78
|
+
// The only method intended to be triggered by the user is ActionCable.Subscriptions#create,
|
|
79
|
+
// and it should be called through the consumer like so:
|
|
80
|
+
//
|
|
81
|
+
// App = {}
|
|
82
|
+
// App.cable = ActionCable.createConsumer("ws://example.com/accounts/1")
|
|
83
|
+
// App.appearance = App.cable.subscriptions.create("AppearanceChannel")
|
|
84
|
+
//
|
|
85
|
+
// For more details on how you'd configure an actual channel subscription, see ActionCable.Subscription.
|
|
86
|
+
|
|
87
|
+
|
|
88
|
+
export { Subscriptions };
|
|
89
|
+
export default Subscriptions;
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* Copyright The OpenTelemetry Authors
|
|
3
|
+
*
|
|
4
|
+
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
5
|
+
* you may not use this file except in compliance with the License.
|
|
6
|
+
* You may obtain a copy of the License at
|
|
7
|
+
*
|
|
8
|
+
* https://www.apache.org/licenses/LICENSE-2.0
|
|
9
|
+
*
|
|
10
|
+
* Unless required by applicable law or agreed to in writing, software
|
|
11
|
+
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
12
|
+
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
13
|
+
* See the License for the specific language governing permissions and
|
|
14
|
+
* limitations under the License.
|
|
15
|
+
*/ const SPAN_ID_BYTES = 8;
|
|
16
|
+
const TRACE_ID_BYTES = 16;
|
|
17
|
+
class RandomIdGenerator {
|
|
18
|
+
constructor(){
|
|
19
|
+
/**
|
|
20
|
+
* Returns a random 16-byte trace ID formatted/encoded as a 32 lowercase hex
|
|
21
|
+
* characters corresponding to 128 bits.
|
|
22
|
+
*/ this.generateTraceId = getIdGenerator(TRACE_ID_BYTES);
|
|
23
|
+
/**
|
|
24
|
+
* Returns a random 8-byte span ID formatted/encoded as a 16 lowercase hex
|
|
25
|
+
* characters corresponding to 64 bits.
|
|
26
|
+
*/ this.generateSpanId = getIdGenerator(SPAN_ID_BYTES);
|
|
27
|
+
}
|
|
28
|
+
}
|
|
29
|
+
const SHARED_CHAR_CODES_ARRAY = Array(32);
|
|
30
|
+
function getIdGenerator(bytes) {
|
|
31
|
+
return function generateId() {
|
|
32
|
+
for(let i = 0; i < bytes * 2; i++){
|
|
33
|
+
SHARED_CHAR_CODES_ARRAY[i] = Math.floor(Math.random() * 16) + 48;
|
|
34
|
+
// valid hex characters in the range 48-57 and 97-102
|
|
35
|
+
if (SHARED_CHAR_CODES_ARRAY[i] >= 58) {
|
|
36
|
+
SHARED_CHAR_CODES_ARRAY[i] += 39;
|
|
37
|
+
}
|
|
38
|
+
}
|
|
39
|
+
return String.fromCharCode.apply(null, SHARED_CHAR_CODES_ARRAY.slice(0, bytes * 2));
|
|
40
|
+
};
|
|
41
|
+
}
|
|
42
|
+
|
|
43
|
+
export { RandomIdGenerator };
|
|
@@ -0,0 +1,83 @@
|
|
|
1
|
+
class GoogleAnalyticsTracker {
|
|
2
|
+
trackEvent(name) {
|
|
3
|
+
var _this_tracker;
|
|
4
|
+
(_this_tracker = this.tracker) == null ? void 0 : _this_tracker.trackEvent("Qualified Chat", name);
|
|
5
|
+
}
|
|
6
|
+
constructor(propertyId){
|
|
7
|
+
try {
|
|
8
|
+
if (window._gat) {
|
|
9
|
+
// ga.js
|
|
10
|
+
this.tracker = new GaJsTracker(propertyId);
|
|
11
|
+
} else if (window.ga) {
|
|
12
|
+
// analytics.js
|
|
13
|
+
this.tracker = new AnalyticsJsTracker(propertyId);
|
|
14
|
+
} else if (window.gtag) {
|
|
15
|
+
// google tag manager or global site tag
|
|
16
|
+
// Note: if we're pushing events via gtag or gtm, the customer will need
|
|
17
|
+
// to configure tags or (gtm) set up products (gtag)
|
|
18
|
+
this.tracker = new GtagTracker(propertyId);
|
|
19
|
+
}
|
|
20
|
+
} catch (e) {
|
|
21
|
+
console.warn("Qualified: Error initializing Google Analytics", e); // eslint-disable-line no-console
|
|
22
|
+
}
|
|
23
|
+
}
|
|
24
|
+
}
|
|
25
|
+
class GaJsTracker {
|
|
26
|
+
trackEvent(category, name) {
|
|
27
|
+
var _this_tracker;
|
|
28
|
+
(_this_tracker = this.tracker) == null ? void 0 : _this_tracker._trackEvent(category, name);
|
|
29
|
+
}
|
|
30
|
+
constructor(propertyId){
|
|
31
|
+
// Create a tracker with the specified property ID, otherwise use the
|
|
32
|
+
// default tracker
|
|
33
|
+
if (propertyId) {
|
|
34
|
+
this.tracker = window._gat._getTracker(propertyId);
|
|
35
|
+
} else {
|
|
36
|
+
this.tracker = window.pageTracker;
|
|
37
|
+
}
|
|
38
|
+
}
|
|
39
|
+
}
|
|
40
|
+
class GtagTracker {
|
|
41
|
+
// eslint-disable-next-line camelcase
|
|
42
|
+
trackEvent(category, name) {
|
|
43
|
+
// eslint-disable-next-line camelcase
|
|
44
|
+
const options = {
|
|
45
|
+
event_category: category
|
|
46
|
+
};
|
|
47
|
+
if (this.propertyId) {
|
|
48
|
+
options.send_to = this.propertyId;
|
|
49
|
+
}
|
|
50
|
+
window.gtag == null ? void 0 : window.gtag.call(window, "event", name, options);
|
|
51
|
+
}
|
|
52
|
+
constructor(propertyId){
|
|
53
|
+
this.propertyId = propertyId;
|
|
54
|
+
}
|
|
55
|
+
}
|
|
56
|
+
class AnalyticsJsTracker {
|
|
57
|
+
trackEvent(category, action) {
|
|
58
|
+
this.initialized.then(()=>{
|
|
59
|
+
var _this_tracker;
|
|
60
|
+
(_this_tracker = this.tracker) == null ? void 0 : _this_tracker.send("event", category, action);
|
|
61
|
+
});
|
|
62
|
+
}
|
|
63
|
+
constructor(propertyId){
|
|
64
|
+
this.initialized = new Promise((resolve)=>{
|
|
65
|
+
window.ga(()=>{
|
|
66
|
+
// Create a named tracker with the specified property ID, otherwise use
|
|
67
|
+
// the default tracker
|
|
68
|
+
if (propertyId) {
|
|
69
|
+
var _window_ga;
|
|
70
|
+
window.ga == null ? void 0 : window.ga.call(window, "create", propertyId, "auto", "_qualifiedTracker");
|
|
71
|
+
this.tracker = (_window_ga = window.ga) == null ? void 0 : _window_ga.getByName("_qualifiedTracker");
|
|
72
|
+
} else {
|
|
73
|
+
var _window_ga1;
|
|
74
|
+
this.tracker = (_window_ga1 = window.ga) == null ? void 0 : _window_ga1.getAll()[0];
|
|
75
|
+
}
|
|
76
|
+
resolve();
|
|
77
|
+
});
|
|
78
|
+
});
|
|
79
|
+
}
|
|
80
|
+
}
|
|
81
|
+
/* export default */ const google_analytics_tracker = (GoogleAnalyticsTracker);
|
|
82
|
+
|
|
83
|
+
export default google_analytics_tracker;
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
class GoogleTagManagerTracker {
|
|
2
|
+
trackEvent(action) {
|
|
3
|
+
var _window_dataLayer;
|
|
4
|
+
(_window_dataLayer = window.dataLayer) == null ? void 0 : _window_dataLayer.push({
|
|
5
|
+
action,
|
|
6
|
+
category: "Qualified Chat",
|
|
7
|
+
event: "ga_event"
|
|
8
|
+
});
|
|
9
|
+
}
|
|
10
|
+
/**
|
|
11
|
+
* Push a full event object to dataLayer (e.g. for multimodal/Salesforce-style tracking).
|
|
12
|
+
*/ trackSalesforceEvent(event) {
|
|
13
|
+
if (typeof window === "undefined") return;
|
|
14
|
+
if (!window.dataLayer) return;
|
|
15
|
+
window.dataLayer.push(event);
|
|
16
|
+
}
|
|
17
|
+
}
|
|
18
|
+
/* export default */ const google_tag_manager_tracker = (GoogleTagManagerTracker);
|
|
19
|
+
|
|
20
|
+
var google_tag_manager_tracker_GoogleTagManagerTracker = /* unused export */ undefined;
|
|
21
|
+
export { google_tag_manager_tracker_GoogleTagManagerTracker as GoogleTagManagerTracker };
|
|
22
|
+
export default google_tag_manager_tracker;
|