@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,285 @@
|
|
|
1
|
+
import { __webpack_require__ } from "../../../js/runtime.js";
|
|
2
|
+
import { signals_core_module_E, signals_core_module_d, signals_core_module_w } from "../../../js/multimodal_v2.js";
|
|
3
|
+
import "../../utils/native_globals.js";
|
|
4
|
+
|
|
5
|
+
/* provided dependency */ var decks_store_setTimeout = __webpack_require__(68034).pS;
|
|
6
|
+
/* provided dependency */ var decks_store_clearTimeout = __webpack_require__(68034).Kj;
|
|
7
|
+
|
|
8
|
+
// Floor for how long a slide stays up before auto-advancing. A slide whose
|
|
9
|
+
// talk-track generation failed has an estimated duration of 0; without a floor
|
|
10
|
+
// setTimeout(…, 0) would flash through the whole sequence instantly.
|
|
11
|
+
const MIN_SLIDE_DURATION_MS = 2000;
|
|
12
|
+
class DecksStore {
|
|
13
|
+
dispose() {
|
|
14
|
+
this.unsubscribeArtifact == null ? void 0 : this.unsubscribeArtifact.call(this);
|
|
15
|
+
this.unsubscribeArtifact = null;
|
|
16
|
+
this.disposeInterruptEffect == null ? void 0 : this.disposeInterruptEffect.call(this);
|
|
17
|
+
this.disposeInterruptEffect = null;
|
|
18
|
+
this.disposeTextInterruptEffect == null ? void 0 : this.disposeTextInterruptEffect.call(this);
|
|
19
|
+
this.disposeTextInterruptEffect = null;
|
|
20
|
+
this.clearAdvanceTimer();
|
|
21
|
+
}
|
|
22
|
+
// Show a single slide statically (visitor clicked it in the transcript record).
|
|
23
|
+
// Set the revisit target before the artifact overlay opens so the artifact
|
|
24
|
+
// subscription treats the open as a revisit rather than a fresh presentation.
|
|
25
|
+
prepareRevisit(messageId, slideIndex, pageTitle) {
|
|
26
|
+
this.clearAdvanceTimer();
|
|
27
|
+
this.stopped.value = true;
|
|
28
|
+
this.revisitMessageId = messageId;
|
|
29
|
+
// Set the title before the index signal, which triggers the currentDeck recompute.
|
|
30
|
+
this.revisitPageTitle = pageTitle;
|
|
31
|
+
this.revisitIndex.value = slideIndex;
|
|
32
|
+
}
|
|
33
|
+
isRevisiting(messageId) {
|
|
34
|
+
return this.revisitMessageId === messageId && this.revisitIndex.peek() != null;
|
|
35
|
+
}
|
|
36
|
+
// Fire-and-forget the current on-screen slide + the full sequence to the backend,
|
|
37
|
+
// which computes the remaining slides and seeds the agent's context. The early
|
|
38
|
+
// return in handleInterruption (guarding on `stopped`) makes this fire exactly
|
|
39
|
+
// once per guided run; a new deck message resets `stopped` so a later resume can
|
|
40
|
+
// be interrupted and re-report.
|
|
41
|
+
notifyInterruption(message) {
|
|
42
|
+
var _ref, _message_slides;
|
|
43
|
+
var _message_slides1;
|
|
44
|
+
const current = this.currentDeck.value;
|
|
45
|
+
if (!current) return;
|
|
46
|
+
if (!message.autoAdvance || ((_ref = (_message_slides1 = message.slides) == null ? void 0 : _message_slides1.length) != null ? _ref : 0) <= 1) return;
|
|
47
|
+
if (current.sequencePosition >= current.sequenceLength - 1) return;
|
|
48
|
+
this.rootStore.channel.perform("notify_deck_interrupted", {
|
|
49
|
+
deck_id: message.deckId,
|
|
50
|
+
current_slide_index: current.currentIndex,
|
|
51
|
+
sequence_slide_indexes: ((_message_slides = message.slides) != null ? _message_slides : []).map((slide)=>slide.slideIndex)
|
|
52
|
+
});
|
|
53
|
+
}
|
|
54
|
+
scheduleAdvance(slides) {
|
|
55
|
+
var _ref;
|
|
56
|
+
var _slides_, _slides_position;
|
|
57
|
+
if (this.stopped.value) return; // visitor interrupted — do not advance
|
|
58
|
+
const position = this.playbackIndex.value;
|
|
59
|
+
if (position >= slides.length - 1) return; // last slide — stop advancing
|
|
60
|
+
// Warm the browser cache for the next slide's image now, while the current one
|
|
61
|
+
// is on screen, so the auto-advance swap doesn't flash a blank/stale frame
|
|
62
|
+
// while the full-res PDF page downloads (narration keeps pace regardless).
|
|
63
|
+
this.preloadImage((_slides_ = slides[position + 1]) == null ? void 0 : _slides_.imageUrl);
|
|
64
|
+
// Each slide stays up for as long as its talk track takes to narrate, but
|
|
65
|
+
// never less than the floor (a failed talk track estimates to 0ms).
|
|
66
|
+
const durationMs = Math.max((_ref = (_slides_position = slides[position]) == null ? void 0 : _slides_position.estimatedDurationMs) != null ? _ref : 0, MIN_SLIDE_DURATION_MS);
|
|
67
|
+
this.advanceTimerId = decks_store_setTimeout(()=>{
|
|
68
|
+
this.advanceTimerId = null;
|
|
69
|
+
if (this.stopped.value) return;
|
|
70
|
+
this.playbackIndex.value = Math.min(this.playbackIndex.value + 1, slides.length - 1);
|
|
71
|
+
this.scheduleAdvance(slides);
|
|
72
|
+
}, durationMs);
|
|
73
|
+
}
|
|
74
|
+
clearRevisit() {
|
|
75
|
+
this.revisitMessageId = null;
|
|
76
|
+
this.revisitIndex.value = null;
|
|
77
|
+
this.revisitPageTitle = undefined;
|
|
78
|
+
}
|
|
79
|
+
clearAdvanceTimer() {
|
|
80
|
+
if (this.advanceTimerId !== null) {
|
|
81
|
+
decks_store_clearTimeout(this.advanceTimerId);
|
|
82
|
+
this.advanceTimerId = null;
|
|
83
|
+
}
|
|
84
|
+
}
|
|
85
|
+
// Kick off a background fetch of an image URL so it's cached before it's shown. Crossorigin
|
|
86
|
+
// like every other slide load, so this warm-up can't be the one that caches an ACAO-less
|
|
87
|
+
// response and poisons the entry the visible <img> needs.
|
|
88
|
+
preloadImage(url) {
|
|
89
|
+
if (!url || typeof Image === "undefined") return;
|
|
90
|
+
const img = new Image();
|
|
91
|
+
img.crossOrigin = "anonymous";
|
|
92
|
+
img.src = url;
|
|
93
|
+
}
|
|
94
|
+
constructor(rootStore){
|
|
95
|
+
var _ref;
|
|
96
|
+
var _latestVisitorText;
|
|
97
|
+
this.rootStore = rootStore;
|
|
98
|
+
// Derived state: the deck slide currently presented in the ARTIFACT overlay.
|
|
99
|
+
//
|
|
100
|
+
// A single share_deck tool call can present one slide or an auto-advancing
|
|
101
|
+
// sequence. The slide on screen is `slides[playbackIndex]`; for legacy/single
|
|
102
|
+
// messages the index comes straight from the message.
|
|
103
|
+
this.currentDeck = signals_core_module_w(()=>{
|
|
104
|
+
var _ref, _ref1, _ref2;
|
|
105
|
+
var _message_slideImageUrls;
|
|
106
|
+
const message = this.rootStore.artifact.message.value;
|
|
107
|
+
if (!message || message.type !== "present_deck") return null;
|
|
108
|
+
const slideImageUrls = ((_message_slideImageUrls = message.slideImageUrls) == null ? void 0 : _message_slideImageUrls.length) > 0 ? message.slideImageUrls : [
|
|
109
|
+
message.imageUrl
|
|
110
|
+
];
|
|
111
|
+
// Revisit: the visitor clicked a slide in the transcript record. Show that
|
|
112
|
+
// single slide statically (no auto-advance, no progress dots).
|
|
113
|
+
const revisitIndex = this.revisitIndex.value;
|
|
114
|
+
if (revisitIndex != null) {
|
|
115
|
+
var _ref3, _this_revisitPageTitle;
|
|
116
|
+
var _message_slides_find, _message_slides;
|
|
117
|
+
return {
|
|
118
|
+
deckId: message.deckId,
|
|
119
|
+
slideImageUrls,
|
|
120
|
+
currentIndex: clampIndex(revisitIndex, slideImageUrls.length),
|
|
121
|
+
sequencePosition: 0,
|
|
122
|
+
sequenceLength: 1,
|
|
123
|
+
pageTitle: (_ref3 = (_this_revisitPageTitle = this.revisitPageTitle) != null ? _this_revisitPageTitle : (_message_slides = message.slides) == null ? void 0 : (_message_slides_find = _message_slides.find((slide)=>slide.slideIndex === revisitIndex)) == null ? void 0 : _message_slides_find.pageTitle) != null ? _ref3 : message.pageTitle,
|
|
124
|
+
deckTitle: message.deckTitle
|
|
125
|
+
};
|
|
126
|
+
}
|
|
127
|
+
const sequence = this.sequence.value;
|
|
128
|
+
const position = clampIndex(this.playbackIndex.value, sequence.length);
|
|
129
|
+
const slide = sequence[position];
|
|
130
|
+
const slideIndex = (_ref = (_ref1 = slide == null ? void 0 : slide.slideIndex) != null ? _ref1 : message.slideIndex) != null ? _ref : 0;
|
|
131
|
+
return {
|
|
132
|
+
deckId: message.deckId,
|
|
133
|
+
slideImageUrls,
|
|
134
|
+
currentIndex: clampIndex(slideIndex, slideImageUrls.length),
|
|
135
|
+
sequencePosition: position,
|
|
136
|
+
sequenceLength: sequence.length,
|
|
137
|
+
pageTitle: (_ref2 = slide == null ? void 0 : slide.pageTitle) != null ? _ref2 : message.pageTitle,
|
|
138
|
+
deckTitle: message.deckTitle
|
|
139
|
+
};
|
|
140
|
+
});
|
|
141
|
+
// Everything below is private
|
|
142
|
+
// 0-based position within the active sequence.
|
|
143
|
+
this.playbackIndex = signals_core_module_d(0);
|
|
144
|
+
// Set once the visitor interrupts; halts auto-advancing.
|
|
145
|
+
this.stopped = signals_core_module_d(false);
|
|
146
|
+
this.advanceTimerId = null;
|
|
147
|
+
this.lastHandledMessageId = null;
|
|
148
|
+
// Set when the visitor clicks a slide in the transcript record to revisit it.
|
|
149
|
+
// While set, `currentDeck` shows that single slide statically. Cleared when a
|
|
150
|
+
// new/different deck message becomes the active artifact.
|
|
151
|
+
this.revisitIndex = signals_core_module_d(null);
|
|
152
|
+
this.revisitMessageId = null;
|
|
153
|
+
// The clicked slide's title, passed through from the transcript record so a
|
|
154
|
+
// revisit shows the right title even when the active message (the last share)
|
|
155
|
+
// doesn't contain that slide. Cleared alongside the revisit state.
|
|
156
|
+
this.revisitPageTitle = undefined;
|
|
157
|
+
this.unsubscribeArtifact = null;
|
|
158
|
+
this.disposeInterruptEffect = null;
|
|
159
|
+
this.disposeTextInterruptEffect = null;
|
|
160
|
+
// Id of the most recent visitor text message we've already accounted for, so a
|
|
161
|
+
// text-mode interruption only fires for a genuinely new message.
|
|
162
|
+
this.lastVisitorTextMessageId = null;
|
|
163
|
+
// The ordered slides to present for the active deck message. Falls back to a
|
|
164
|
+
// synthesized one-item sequence for legacy messages without a `slides` array.
|
|
165
|
+
this.sequence = signals_core_module_w(()=>{
|
|
166
|
+
var _message_slideIndex;
|
|
167
|
+
var _message_slides;
|
|
168
|
+
const message = this.rootStore.artifact.message.value;
|
|
169
|
+
if (!message || message.type !== "present_deck") return [];
|
|
170
|
+
if ((_message_slides = message.slides) == null ? void 0 : _message_slides.length) return message.slides;
|
|
171
|
+
return [
|
|
172
|
+
{
|
|
173
|
+
pageId: message.pageId,
|
|
174
|
+
slideIndex: (_message_slideIndex = message.slideIndex) != null ? _message_slideIndex : 0,
|
|
175
|
+
imageUrl: message.imageUrl,
|
|
176
|
+
pageTitle: message.pageTitle
|
|
177
|
+
}
|
|
178
|
+
];
|
|
179
|
+
});
|
|
180
|
+
this.handleArtifactMessageChange = (message)=>{
|
|
181
|
+
var _ref;
|
|
182
|
+
var _message_slides;
|
|
183
|
+
if (!message || message.type !== "present_deck") {
|
|
184
|
+
this.clearAdvanceTimer();
|
|
185
|
+
this.lastHandledMessageId = null;
|
|
186
|
+
this.playbackIndex.value = 0;
|
|
187
|
+
this.clearRevisit();
|
|
188
|
+
return;
|
|
189
|
+
}
|
|
190
|
+
// A revisit open (prepareRevisit set revisitMessageId first): show the
|
|
191
|
+
// requested slide statically — don't reset playback or auto-advance.
|
|
192
|
+
if (message.id === this.revisitMessageId) {
|
|
193
|
+
this.clearAdvanceTimer();
|
|
194
|
+
this.lastHandledMessageId = message.id;
|
|
195
|
+
this.stopped.value = true;
|
|
196
|
+
return;
|
|
197
|
+
}
|
|
198
|
+
// Skip if we've already handled this exact message. The subscription
|
|
199
|
+
// re-fires whenever the message object is replaced under the same id — an
|
|
200
|
+
// unrelated upstream signal re-resolving, or the server re-broadcasting the
|
|
201
|
+
// deck once its narration transcript is absorbed
|
|
202
|
+
// (Internal::PyperxController#absorb_deck_narration!). Return BEFORE
|
|
203
|
+
// touching the advance timer: clearing it here would freeze an in-flight
|
|
204
|
+
// presentation on the current slide with nothing left to reschedule it.
|
|
205
|
+
if (this.lastHandledMessageId === message.id) return;
|
|
206
|
+
this.clearAdvanceTimer();
|
|
207
|
+
// Any other deck message supersedes a revisit view.
|
|
208
|
+
this.clearRevisit();
|
|
209
|
+
this.lastHandledMessageId = message.id;
|
|
210
|
+
this.playbackIndex.value = 0;
|
|
211
|
+
this.stopped.value = false;
|
|
212
|
+
// Auto-advance through a multi-slide sequence so the agent can present it as
|
|
213
|
+
// one continuous flow without re-calling the tool for each slide.
|
|
214
|
+
if (message.autoAdvance && ((_ref = (_message_slides = message.slides) == null ? void 0 : _message_slides.length) != null ? _ref : 0) > 1) {
|
|
215
|
+
var _message_slides1;
|
|
216
|
+
this.scheduleAdvance((_message_slides1 = message.slides) != null ? _message_slides1 : []);
|
|
217
|
+
}
|
|
218
|
+
};
|
|
219
|
+
// The visitor started speaking over the presentation. Stop advancing; the current
|
|
220
|
+
// slide stays on screen, and tell the agent where the presentation stopped so it
|
|
221
|
+
// can address the visitor and later resume the remaining slides.
|
|
222
|
+
this.handleInterruption = ()=>{
|
|
223
|
+
if (this.stopped.value) return;
|
|
224
|
+
const message = this.rootStore.artifact.message.value;
|
|
225
|
+
if ((message == null ? void 0 : message.type) !== "present_deck") return;
|
|
226
|
+
// Report the interruption position BEFORE we stop, so the agent knows which
|
|
227
|
+
// slide is frozen on screen and which slides remain. Only worth reporting for a
|
|
228
|
+
// multi-slide auto-advancing sequence with unshown slides left — single-slide
|
|
229
|
+
// narration is agent-driven and the last slide has nothing to resume.
|
|
230
|
+
this.notifyInterruption(message);
|
|
231
|
+
this.clearAdvanceTimer();
|
|
232
|
+
this.stopped.value = true;
|
|
233
|
+
};
|
|
234
|
+
this.unsubscribeArtifact = this.rootStore.artifact.message.subscribe(this.handleArtifactMessageChange);
|
|
235
|
+
// Halt the presentation the moment the visitor starts speaking (interruption):
|
|
236
|
+
// stop auto-advancing slides. We don't resume — an interruption ends the guided run.
|
|
237
|
+
this.disposeInterruptEffect = signals_core_module_E(()=>{
|
|
238
|
+
var _ref;
|
|
239
|
+
var _this_rootStore_callStore_value_isVisitorSpeaking, _this_rootStore_callStore_value, _this_rootStore_callStore;
|
|
240
|
+
const speaking = (_ref = (_this_rootStore_callStore = this.rootStore.callStore) == null ? void 0 : (_this_rootStore_callStore_value = _this_rootStore_callStore.value) == null ? void 0 : (_this_rootStore_callStore_value_isVisitorSpeaking = _this_rootStore_callStore_value.isVisitorSpeaking) == null ? void 0 : _this_rootStore_callStore_value_isVisitorSpeaking.value) != null ? _ref : false;
|
|
241
|
+
if (speaking) this.handleInterruption();
|
|
242
|
+
});
|
|
243
|
+
// A visitor text message sent mid-presentation is a text-mode interruption and
|
|
244
|
+
// must have the same effect as speaking over the deck (barge-in): the backend
|
|
245
|
+
// already cancels the agent's turn to answer the text, so here we halt
|
|
246
|
+
// auto-advance and report the interruption position exactly as the voice path
|
|
247
|
+
// does. Seed lastVisitorTextMessageId from the existing history so we only
|
|
248
|
+
// react to a message sent AFTER this store is watching, not to backlog.
|
|
249
|
+
this.lastVisitorTextMessageId = (_ref = (_latestVisitorText = latestVisitorText(this.rootStore.messages.value)) == null ? void 0 : _latestVisitorText.id) != null ? _ref : null;
|
|
250
|
+
this.disposeTextInterruptEffect = signals_core_module_E(()=>{
|
|
251
|
+
const latest = latestVisitorText(this.rootStore.messages.value);
|
|
252
|
+
if (!latest || latest.id === this.lastVisitorTextMessageId) return;
|
|
253
|
+
this.lastVisitorTextMessageId = latest.id;
|
|
254
|
+
// In voice mode the visitor's spoken utterance is also persisted as a
|
|
255
|
+
// visitor text message, out-of-band and often AFTER the deck message it
|
|
256
|
+
// requested ("let's continue the presentation") — with createdAt
|
|
257
|
+
// backdated to when it was spoken. A message older than the deck on
|
|
258
|
+
// screen is that late-arriving request, not an interruption OF the
|
|
259
|
+
// presentation, and must not halt it. peek(): the deck message is
|
|
260
|
+
// read as a point-in-time fact about the new text message, not a
|
|
261
|
+
// subscription — this effect must only re-run when the messages change.
|
|
262
|
+
const deckMessage = this.rootStore.artifact.message.peek();
|
|
263
|
+
if ((deckMessage == null ? void 0 : deckMessage.type) === "present_deck" && new Date(latest.createdAt).getTime() < new Date(deckMessage.createdAt).getTime()) {
|
|
264
|
+
return;
|
|
265
|
+
}
|
|
266
|
+
this.handleInterruption();
|
|
267
|
+
});
|
|
268
|
+
}
|
|
269
|
+
}
|
|
270
|
+
|
|
271
|
+
function clampIndex(index, length) {
|
|
272
|
+
if (length <= 0) return 0;
|
|
273
|
+
return Math.min(Math.max(index, 0), length - 1);
|
|
274
|
+
}
|
|
275
|
+
// The most recent visitor-authored text message in the list, or null if there
|
|
276
|
+
// is none. Used to detect a text-mode interruption of a live deck.
|
|
277
|
+
function latestVisitorText(messages) {
|
|
278
|
+
for(let i = messages.length - 1; i >= 0; i--){
|
|
279
|
+
const message = messages[i];
|
|
280
|
+
if (message.type === "text" && message.isOwn) return message;
|
|
281
|
+
}
|
|
282
|
+
return null;
|
|
283
|
+
}
|
|
284
|
+
|
|
285
|
+
export default DecksStore;
|
|
@@ -0,0 +1,63 @@
|
|
|
1
|
+
import { signals_core_module_r, signals_core_module_d } from "../../../js/multimodal_v2.js";
|
|
2
|
+
|
|
3
|
+
|
|
4
|
+
class DeviceStore {
|
|
5
|
+
dispose() {
|
|
6
|
+
this.microphoneDevices.value = [];
|
|
7
|
+
this.selectedMicrophoneDevice.value = {};
|
|
8
|
+
this.isMicMuted.value = false;
|
|
9
|
+
}
|
|
10
|
+
// eslint-disable-next-line no-useless-constructor
|
|
11
|
+
constructor(callStore){
|
|
12
|
+
this.callStore = callStore;
|
|
13
|
+
this.microphoneDevices = signals_core_module_d([]);
|
|
14
|
+
this.selectedMicrophoneDevice = signals_core_module_d({});
|
|
15
|
+
this.isMicMuted = signals_core_module_d(false);
|
|
16
|
+
this.toggleMic = async ()=>{
|
|
17
|
+
const call = this.callStore.dailyCall.value;
|
|
18
|
+
if (!call) return;
|
|
19
|
+
const newMicState = !this.callStore.deviceStore.isMicMuted.value;
|
|
20
|
+
call.setLocalAudio(!newMicState);
|
|
21
|
+
this.callStore.deviceStore.isMicMuted.value = newMicState;
|
|
22
|
+
};
|
|
23
|
+
this.updateSelectedMic = async (updatedMicId)=>{
|
|
24
|
+
const call = this.callStore.dailyCall.value;
|
|
25
|
+
if (!call) return;
|
|
26
|
+
try {
|
|
27
|
+
await call.setInputDevicesAsync({
|
|
28
|
+
audioDeviceId: updatedMicId,
|
|
29
|
+
videoDeviceId: null
|
|
30
|
+
});
|
|
31
|
+
const updatedSelectedMic = this.microphoneDevices.value.find((mic)=>mic.deviceId === updatedMicId);
|
|
32
|
+
signals_core_module_r(()=>{
|
|
33
|
+
this.selectedMicrophoneDevice.value = updatedSelectedMic || {};
|
|
34
|
+
});
|
|
35
|
+
} catch (error) {
|
|
36
|
+
// eslint-disable-next-line no-console
|
|
37
|
+
console.error("Failed to update selected microphone:", error);
|
|
38
|
+
}
|
|
39
|
+
};
|
|
40
|
+
this.updateAvailableDevices = async ()=>{
|
|
41
|
+
const call = this.callStore.dailyCall.value;
|
|
42
|
+
if (!call) return;
|
|
43
|
+
const { devices } = await call.enumerateDevices();
|
|
44
|
+
// filter out empty devices that have not been granted yet
|
|
45
|
+
const availableDevices = devices.filter((device)=>device.deviceId !== "");
|
|
46
|
+
const availableMicrophones = availableDevices.filter((device)=>device.kind === "audioinput");
|
|
47
|
+
const selectedDevices = await call.getInputDevices();
|
|
48
|
+
const selectedMicrophone = selectedDevices.mic;
|
|
49
|
+
signals_core_module_r(()=>{
|
|
50
|
+
this.microphoneDevices.value = availableMicrophones;
|
|
51
|
+
this.selectedMicrophoneDevice.value = selectedMicrophone;
|
|
52
|
+
});
|
|
53
|
+
};
|
|
54
|
+
this.syncMediaState = ()=>{
|
|
55
|
+
const call = this.callStore.dailyCall.value;
|
|
56
|
+
if (!call) return;
|
|
57
|
+
this.isMicMuted.value = !call.localAudio();
|
|
58
|
+
};
|
|
59
|
+
}
|
|
60
|
+
}
|
|
61
|
+
|
|
62
|
+
|
|
63
|
+
export default DeviceStore;
|
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
import { BaseStore } from "./base_store.js";
|
|
2
|
+
|
|
3
|
+
|
|
4
|
+
class DockingStore extends BaseStore {
|
|
5
|
+
constructor(...args){
|
|
6
|
+
var _ref;
|
|
7
|
+
var _window_qualified;
|
|
8
|
+
super(...args), this.api = (_ref = (_window_qualified = window.qualified) == null ? void 0 : _window_qualified.docking) != null ? _ref : null, this.apiPromise = null, // (e.g. teardown ran while enable() was still awaiting ensureApi()).
|
|
9
|
+
this.generation = 0, this.enable = async (param)=>{
|
|
10
|
+
let { confirm = ()=>true } = param === void 0 ? {} : param;
|
|
11
|
+
const gen = this.generation;
|
|
12
|
+
const api = await this.ensureApi();
|
|
13
|
+
if (gen !== this.generation) return;
|
|
14
|
+
if (confirm()) {
|
|
15
|
+
api.enable();
|
|
16
|
+
this.persistDockedState(true);
|
|
17
|
+
}
|
|
18
|
+
}, this.disable = ()=>{
|
|
19
|
+
this.generation++;
|
|
20
|
+
if (!this.api) return;
|
|
21
|
+
this.api.disable();
|
|
22
|
+
this.persistDockedState(false);
|
|
23
|
+
}, this.reEvaluate = ()=>{
|
|
24
|
+
var _this_api;
|
|
25
|
+
(_this_api = this.api) == null ? void 0 : _this_api.reEvaluate();
|
|
26
|
+
}, this.isDocked = ()=>{
|
|
27
|
+
var _ref;
|
|
28
|
+
var _this_api;
|
|
29
|
+
return (_ref = (_this_api = this.api) == null ? void 0 : _this_api.isDocked()) != null ? _ref : false;
|
|
30
|
+
}, this.cancelAbort = ()=>{
|
|
31
|
+
var _this_api;
|
|
32
|
+
(_this_api = this.api) == null ? void 0 : _this_api.cancelAbort();
|
|
33
|
+
}, this.persistDockedState = (isDocked)=>{
|
|
34
|
+
this.visitor.isDocked = isDocked;
|
|
35
|
+
}, this.ensureApi = ()=>{
|
|
36
|
+
if (this.apiPromise) return this.apiPromise;
|
|
37
|
+
const ensureApiInitialized = ()=>{
|
|
38
|
+
var _window_qualified;
|
|
39
|
+
this.api = (_window_qualified = window.qualified) == null ? void 0 : _window_qualified.docking;
|
|
40
|
+
// Calling init multiple times is safe
|
|
41
|
+
this.api.init();
|
|
42
|
+
this.cancelAbort();
|
|
43
|
+
return this.api;
|
|
44
|
+
};
|
|
45
|
+
this.apiPromise = new Promise((resolve)=>{
|
|
46
|
+
var _window_qualified;
|
|
47
|
+
if ((_window_qualified = window.qualified) == null ? void 0 : _window_qualified.docking) {
|
|
48
|
+
resolve(ensureApiInitialized());
|
|
49
|
+
return;
|
|
50
|
+
}
|
|
51
|
+
import("../../../packs/widget/api/docking/index.js").then((param)=>{
|
|
52
|
+
let { registerDockingAPI } = param;
|
|
53
|
+
registerDockingAPI();
|
|
54
|
+
resolve(ensureApiInitialized());
|
|
55
|
+
});
|
|
56
|
+
});
|
|
57
|
+
return this.apiPromise;
|
|
58
|
+
};
|
|
59
|
+
}
|
|
60
|
+
}
|
|
61
|
+
|
|
62
|
+
export { DockingStore };
|