@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,66 @@
|
|
|
1
|
+
import { jsxRuntime_module_u } from "../../../../../js/multimodal_v2.js";
|
|
2
|
+
import "../../../styled-system/jsx/index.js";
|
|
3
|
+
import { RichText } from "../../helpers/RichText.js";
|
|
4
|
+
import { styled } from "../../../styled-system/jsx/factory.js";
|
|
5
|
+
|
|
6
|
+
|
|
7
|
+
|
|
8
|
+
|
|
9
|
+
const LINK_TRANSFORMERS = {
|
|
10
|
+
a: (node)=>{
|
|
11
|
+
node.target = "_blank";
|
|
12
|
+
node.rel = "noopener noreferrer";
|
|
13
|
+
}
|
|
14
|
+
};
|
|
15
|
+
const InlinePrivacyDisclosure = (param)=>{
|
|
16
|
+
let { disclosure } = param;
|
|
17
|
+
const item = disclosure.value;
|
|
18
|
+
if (!(item == null ? void 0 : item.markdown)) return null;
|
|
19
|
+
return /*#__PURE__*/ jsxRuntime_module_u(Container, {
|
|
20
|
+
"data-component-name": "InlinePrivacyDisclosure.Container",
|
|
21
|
+
children: /*#__PURE__*/ jsxRuntime_module_u(Message, {
|
|
22
|
+
children: /*#__PURE__*/ jsxRuntime_module_u(RichText, {
|
|
23
|
+
text: item.markdown,
|
|
24
|
+
styled: false,
|
|
25
|
+
elementTransformers: LINK_TRANSFORMERS
|
|
26
|
+
})
|
|
27
|
+
})
|
|
28
|
+
});
|
|
29
|
+
};
|
|
30
|
+
const Container = styled("div", {
|
|
31
|
+
base: {
|
|
32
|
+
display: "flex",
|
|
33
|
+
alignItems: "center",
|
|
34
|
+
justifyContent: "center",
|
|
35
|
+
paddingBlock: "$md",
|
|
36
|
+
paddingInline: "$lg",
|
|
37
|
+
borderRadius: "[12px]",
|
|
38
|
+
border: "[1px solid token($colors.border)]",
|
|
39
|
+
width: "[100%]"
|
|
40
|
+
}
|
|
41
|
+
});
|
|
42
|
+
Container.displayName = "InlinePrivacyDisclosure";
|
|
43
|
+
const Message = styled("span", {
|
|
44
|
+
base: {
|
|
45
|
+
fontSize: "13px",
|
|
46
|
+
lineHeight: "20px",
|
|
47
|
+
color: "$text.muted",
|
|
48
|
+
textAlign: "center",
|
|
49
|
+
"& a": {
|
|
50
|
+
color: "$text.muted",
|
|
51
|
+
textDecoration: "underline",
|
|
52
|
+
textDecorationSkipInk: "none",
|
|
53
|
+
textUnderlinePosition: "from-font",
|
|
54
|
+
cursor: "pointer",
|
|
55
|
+
"&:hover": {
|
|
56
|
+
color: "$text.dark"
|
|
57
|
+
}
|
|
58
|
+
},
|
|
59
|
+
"& p": {
|
|
60
|
+
margin: "[0]"
|
|
61
|
+
}
|
|
62
|
+
}
|
|
63
|
+
});
|
|
64
|
+
Message.displayName = "Message";
|
|
65
|
+
|
|
66
|
+
export { InlinePrivacyDisclosure };
|
|
@@ -0,0 +1,70 @@
|
|
|
1
|
+
import "../../../styled-system/jsx/index.js";
|
|
2
|
+
import { Persisted } from "../../helpers/Persisted.js";
|
|
3
|
+
import { styled } from "../../../styled-system/jsx/factory.js";
|
|
4
|
+
|
|
5
|
+
|
|
6
|
+
|
|
7
|
+
const LinkPreviewContainer = styled("a", {
|
|
8
|
+
base: {
|
|
9
|
+
borderRadius: "[8px]",
|
|
10
|
+
overflow: "hidden",
|
|
11
|
+
display: "flex",
|
|
12
|
+
outline: "1px solid token(colors.$gray.border)",
|
|
13
|
+
outlineOffset: "-1px",
|
|
14
|
+
backgroundColor: "$white.solid",
|
|
15
|
+
textDecoration: "none",
|
|
16
|
+
opacity: 1,
|
|
17
|
+
transition: "opacity 0.2s ease, box-shadow 0.2s ease, transform 0.2s ease",
|
|
18
|
+
"&:focus": {
|
|
19
|
+
outline: "2px solid token(colors.$primary)",
|
|
20
|
+
outlineOffset: "-2px"
|
|
21
|
+
},
|
|
22
|
+
"&:hover": {
|
|
23
|
+
cursor: "pointer",
|
|
24
|
+
boxShadow: "[0 4px 12px rgba(0, 0, 0, 0.1)]",
|
|
25
|
+
transform: "translateY(-2px)"
|
|
26
|
+
}
|
|
27
|
+
},
|
|
28
|
+
variants: {
|
|
29
|
+
hidden: {
|
|
30
|
+
true: {
|
|
31
|
+
opacity: 0,
|
|
32
|
+
visibility: "hidden"
|
|
33
|
+
}
|
|
34
|
+
}
|
|
35
|
+
}
|
|
36
|
+
});
|
|
37
|
+
LinkPreviewContainer.displayName = "LinkPreviewContainer";
|
|
38
|
+
const LinkPreviewImage = styled(Persisted, {
|
|
39
|
+
base: {
|
|
40
|
+
objectFit: "cover",
|
|
41
|
+
width: "[160px]",
|
|
42
|
+
display: "none",
|
|
43
|
+
"&[src]:not([src=''])": {
|
|
44
|
+
display: "block"
|
|
45
|
+
}
|
|
46
|
+
}
|
|
47
|
+
});
|
|
48
|
+
LinkPreviewImage.displayName = "LinkPreviewImage";
|
|
49
|
+
const LinkPreviewBody = styled("div", {
|
|
50
|
+
base: {
|
|
51
|
+
paddingInline: "$lg",
|
|
52
|
+
paddingBlock: "$md"
|
|
53
|
+
}
|
|
54
|
+
});
|
|
55
|
+
LinkPreviewBody.displayName = "LinkPreviewBody";
|
|
56
|
+
const LinkPreviewTitle = styled("div", {
|
|
57
|
+
base: {
|
|
58
|
+
color: "$primary",
|
|
59
|
+
fontWeight: "$semibold"
|
|
60
|
+
}
|
|
61
|
+
});
|
|
62
|
+
LinkPreviewTitle.displayName = "LinkPreviewTitle";
|
|
63
|
+
const LinkPreviewUrl = styled("div", {
|
|
64
|
+
base: {
|
|
65
|
+
color: "$text.muted"
|
|
66
|
+
}
|
|
67
|
+
});
|
|
68
|
+
LinkPreviewUrl.displayName = "LinkPreviewUrl";
|
|
69
|
+
|
|
70
|
+
export { LinkPreviewBody, LinkPreviewContainer, LinkPreviewImage, LinkPreviewTitle, LinkPreviewUrl };
|
|
@@ -0,0 +1,88 @@
|
|
|
1
|
+
import { jsxRuntime_module_u } from "../../../../../js/multimodal_v2.js";
|
|
2
|
+
import "../../../styled-system/jsx/index.js";
|
|
3
|
+
import { styled } from "../../../styled-system/jsx/factory.js";
|
|
4
|
+
|
|
5
|
+
function _extends() {
|
|
6
|
+
_extends = Object.assign || function(target) {
|
|
7
|
+
for(var i = 1; i < arguments.length; i++){
|
|
8
|
+
var source = arguments[i];
|
|
9
|
+
for(var key in source){
|
|
10
|
+
if (Object.prototype.hasOwnProperty.call(source, key)) {
|
|
11
|
+
target[key] = source[key];
|
|
12
|
+
}
|
|
13
|
+
}
|
|
14
|
+
}
|
|
15
|
+
return target;
|
|
16
|
+
};
|
|
17
|
+
return _extends.apply(this, arguments);
|
|
18
|
+
}
|
|
19
|
+
function _object_without_properties_loose(source, excluded) {
|
|
20
|
+
if (source == null) return {};
|
|
21
|
+
var target = {}, sourceKeys = Object.getOwnPropertyNames(source), key, i;
|
|
22
|
+
for(i = 0; i < sourceKeys.length; i++){
|
|
23
|
+
key = sourceKeys[i];
|
|
24
|
+
if (excluded.indexOf(key) >= 0) continue;
|
|
25
|
+
if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue;
|
|
26
|
+
target[key] = source[key];
|
|
27
|
+
}
|
|
28
|
+
return target;
|
|
29
|
+
}
|
|
30
|
+
|
|
31
|
+
|
|
32
|
+
const MessageEntry = (_0)=>{
|
|
33
|
+
let { children } = _0, props = _object_without_properties_loose(_0, [
|
|
34
|
+
"children"
|
|
35
|
+
]);
|
|
36
|
+
return /*#__PURE__*/ jsxRuntime_module_u(Container, _extends({
|
|
37
|
+
"data-component-name": "MessageEntry.Container",
|
|
38
|
+
"data-is-own": props.isOwn
|
|
39
|
+
}, props, {
|
|
40
|
+
children: children
|
|
41
|
+
}));
|
|
42
|
+
};
|
|
43
|
+
const Container = styled("div", {
|
|
44
|
+
base: {
|
|
45
|
+
display: "flex",
|
|
46
|
+
width: "[fit-content]",
|
|
47
|
+
borderRadius: "[8px]",
|
|
48
|
+
wordBreak: "break-word",
|
|
49
|
+
fontSize: "14px",
|
|
50
|
+
lineHeight: "22px",
|
|
51
|
+
textDecoration: "none",
|
|
52
|
+
"&[data-is-own=true]": {
|
|
53
|
+
marginTop: "$sm"
|
|
54
|
+
},
|
|
55
|
+
"&:first-child": {
|
|
56
|
+
marginTop: "$lg"
|
|
57
|
+
}
|
|
58
|
+
},
|
|
59
|
+
variants: {
|
|
60
|
+
isOwn: {
|
|
61
|
+
true: {
|
|
62
|
+
justifyContent: "flex-end",
|
|
63
|
+
marginLeft: "$auto",
|
|
64
|
+
backgroundColor: "[#F2F2F2]",
|
|
65
|
+
color: "$text.dark",
|
|
66
|
+
maxWidth: "[90%]",
|
|
67
|
+
paddingBlock: "$lg",
|
|
68
|
+
paddingInline: "$md"
|
|
69
|
+
},
|
|
70
|
+
false: {
|
|
71
|
+
justifyContent: "flex-start",
|
|
72
|
+
backgroundColor: "$transparent",
|
|
73
|
+
color: "$text.dark",
|
|
74
|
+
borderTopLeftRadius: "4px"
|
|
75
|
+
}
|
|
76
|
+
},
|
|
77
|
+
fullWidth: {
|
|
78
|
+
true: {
|
|
79
|
+
width: "[100%]",
|
|
80
|
+
padding: "$none"
|
|
81
|
+
}
|
|
82
|
+
}
|
|
83
|
+
}
|
|
84
|
+
});
|
|
85
|
+
Container.displayName = "Container";
|
|
86
|
+
|
|
87
|
+
var MessageEntry_Container = /* unused export */ undefined;
|
|
88
|
+
export { MessageEntry, MessageEntry_Container as Container };
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
import { jsxRuntime_module_u } from "../../../../../js/multimodal_v2.js";
|
|
2
|
+
import { SlidesThumbnail } from "../../slides/SlidesThumbnail.js";
|
|
3
|
+
import { MessageEntry } from "./MessageEntry.js";
|
|
4
|
+
|
|
5
|
+
|
|
6
|
+
|
|
7
|
+
|
|
8
|
+
const PresentContentRenderer = (param)=>{
|
|
9
|
+
let { item, context } = param;
|
|
10
|
+
const { t } = context.translationStore;
|
|
11
|
+
const handleClick = ()=>{
|
|
12
|
+
// We may need to load the store here, because the user can click on a
|
|
13
|
+
// slide thumbnail from the conversation history instead of the LLM sharing
|
|
14
|
+
// it via tool call.
|
|
15
|
+
void context.presentArtifactMessage(item);
|
|
16
|
+
};
|
|
17
|
+
return /*#__PURE__*/ jsxRuntime_module_u(MessageEntry, {
|
|
18
|
+
isOwn: false,
|
|
19
|
+
children: /*#__PURE__*/ jsxRuntime_module_u(SlidesThumbnail, {
|
|
20
|
+
message: item,
|
|
21
|
+
onClick: handleClick,
|
|
22
|
+
t: t
|
|
23
|
+
})
|
|
24
|
+
});
|
|
25
|
+
};
|
|
26
|
+
/* export default */ const timeline_PresentContentRenderer = (PresentContentRenderer);
|
|
27
|
+
|
|
28
|
+
var PresentContentRenderer_PresentContentRenderer = /* unused export */ undefined;
|
|
29
|
+
export { PresentContentRenderer_PresentContentRenderer as PresentContentRenderer };
|
|
30
|
+
export default timeline_PresentContentRenderer;
|
|
@@ -0,0 +1,279 @@
|
|
|
1
|
+
import { jsxRuntime_module_u, useComputed } from "../../../../../js/multimodal_v2.js";
|
|
2
|
+
import { PlayIcon } from "../../../images/icons.js";
|
|
3
|
+
import "../../../styled-system/jsx/index.js";
|
|
4
|
+
import { RichText } from "../../helpers/RichText.js";
|
|
5
|
+
import { Button } from "../../shared/Button.js";
|
|
6
|
+
import { MessageEntry } from "./MessageEntry.js";
|
|
7
|
+
import { MaximizedState as types_MaximizedState, StartCallTrigger as types_StartCallTrigger } from "../../../types.js";
|
|
8
|
+
import { styled } from "../../../styled-system/jsx/factory.js";
|
|
9
|
+
|
|
10
|
+
|
|
11
|
+
/** @jsxImportSource preact */
|
|
12
|
+
|
|
13
|
+
|
|
14
|
+
|
|
15
|
+
|
|
16
|
+
|
|
17
|
+
|
|
18
|
+
/**
|
|
19
|
+
* Renders a `present_deck` message in the timeline. Two modes:
|
|
20
|
+
*
|
|
21
|
+
* - Presented on a call: the deck's per-slide talk tracks are available, so we
|
|
22
|
+
* render the presentation as a formatted record — each slide thumbnail
|
|
23
|
+
* followed by its narration. This replaces the realtime API's one-turn
|
|
24
|
+
* transcript, which would otherwise arrive as a single wall of text (the raw
|
|
25
|
+
* transcript is folded into this message server-side and never shown).
|
|
26
|
+
* - Off-call: a "join call" prompt whose button starts the presentation.
|
|
27
|
+
*
|
|
28
|
+
* The mode is a stable property of the message (talk tracks are only ever
|
|
29
|
+
* populated for on-call presentations), so this dispatcher never calls hooks —
|
|
30
|
+
* each sub-component owns its own.
|
|
31
|
+
*/ const PresentDeckRenderer = (param)=>{
|
|
32
|
+
let { item, context } = param;
|
|
33
|
+
var _item_slides;
|
|
34
|
+
const presentedSlides = ((_item_slides = item.slides) != null ? _item_slides : []).filter((slide)=>!!slide.talkTrack);
|
|
35
|
+
if (presentedSlides.length > 0) {
|
|
36
|
+
return /*#__PURE__*/ jsxRuntime_module_u(PresentDeckTranscript, {
|
|
37
|
+
item: item,
|
|
38
|
+
context: context
|
|
39
|
+
});
|
|
40
|
+
}
|
|
41
|
+
return /*#__PURE__*/ jsxRuntime_module_u(PresentDeckJoinCard, {
|
|
42
|
+
item: item,
|
|
43
|
+
context: context
|
|
44
|
+
});
|
|
45
|
+
};
|
|
46
|
+
/**
|
|
47
|
+
* The presentation record: each slide's thumbnail followed by its talk track.
|
|
48
|
+
*
|
|
49
|
+
* A presentation can span several `present_deck` messages — the initial share
|
|
50
|
+
* plus any resume after an interruption, where the agent re-shares only the
|
|
51
|
+
* remaining slides (e.g. interrupted on slide 3 of 5 → resume carries just 3-5).
|
|
52
|
+
* Rendering each message on its own would show a fragment that appears to start
|
|
53
|
+
* mid-deck. Instead we render ONE consolidated record on the LAST message for the
|
|
54
|
+
* deck — the union of every slide shown across all its shares, each once, in
|
|
55
|
+
* slide order — and nothing on the earlier ones. When a slide was shown more than
|
|
56
|
+
* once (a resume re-covers the slide it picked up on), the latest share wins, so
|
|
57
|
+
* the talk track reflects what was actually narrated on the resumed run.
|
|
58
|
+
*/ function PresentDeckTranscript(param) {
|
|
59
|
+
let { item, context } = param;
|
|
60
|
+
const record = useComputed(()=>{
|
|
61
|
+
var _forDeck_;
|
|
62
|
+
// All shares for this deck, oldest first. Include `item` itself in case it
|
|
63
|
+
// isn't in the message list yet (optimistic render / tests).
|
|
64
|
+
const forDeck = context.messages.value.filter((m)=>m.type === "present_deck" && m.deckId === item.deckId);
|
|
65
|
+
if (!forDeck.some((m)=>m.id === item.id)) forDeck.push(item);
|
|
66
|
+
forDeck.sort((a, b)=>new Date(a.createdAt).getTime() - new Date(b.createdAt).getTime());
|
|
67
|
+
// Only the last share renders the consolidated record.
|
|
68
|
+
if (((_forDeck_ = forDeck[forDeck.length - 1]) == null ? void 0 : _forDeck_.id) !== item.id) return [];
|
|
69
|
+
const bySlideIndex = new Map();
|
|
70
|
+
for (const message of forDeck){
|
|
71
|
+
var _message_slides;
|
|
72
|
+
for (const slide of (_message_slides = message.slides) != null ? _message_slides : []){
|
|
73
|
+
if (slide.talkTrack) {
|
|
74
|
+
bySlideIndex.set(slide.slideIndex, slide);
|
|
75
|
+
}
|
|
76
|
+
}
|
|
77
|
+
}
|
|
78
|
+
return [
|
|
79
|
+
...bySlideIndex.values()
|
|
80
|
+
].sort((a, b)=>a.slideIndex - b.slideIndex);
|
|
81
|
+
});
|
|
82
|
+
if (record.value.length === 0) return null;
|
|
83
|
+
return /*#__PURE__*/ jsxRuntime_module_u(MessageEntry, {
|
|
84
|
+
isOwn: false,
|
|
85
|
+
children: /*#__PURE__*/ jsxRuntime_module_u(Transcript, {
|
|
86
|
+
"data-component-name": "PresentDeckRenderer.Transcript",
|
|
87
|
+
children: record.value.map((slide)=>{
|
|
88
|
+
var _ref, _slide_pageTitle;
|
|
89
|
+
return /*#__PURE__*/ jsxRuntime_module_u(SlideBlock, {
|
|
90
|
+
children: [
|
|
91
|
+
/*#__PURE__*/ jsxRuntime_module_u(SlidePreview, {
|
|
92
|
+
type: "button",
|
|
93
|
+
"aria-label": context.translationStore.t("slides.viewSlide", {
|
|
94
|
+
id: slide.slideIndex + 1
|
|
95
|
+
}),
|
|
96
|
+
onClick: ()=>context.revisitDeckSlide(item, slide.slideIndex, slide.pageTitle),
|
|
97
|
+
children: /*#__PURE__*/ jsxRuntime_module_u(SlidePreviewImage, {
|
|
98
|
+
crossOrigin: "anonymous",
|
|
99
|
+
src: slide.imageUrl,
|
|
100
|
+
alt: (_ref = (_slide_pageTitle = slide.pageTitle) != null ? _slide_pageTitle : item.deckTitle) != null ? _ref : ""
|
|
101
|
+
})
|
|
102
|
+
}),
|
|
103
|
+
/*#__PURE__*/ jsxRuntime_module_u(RichText, {
|
|
104
|
+
text: slide.talkTrack,
|
|
105
|
+
animated: false,
|
|
106
|
+
paragraphSpacing: false
|
|
107
|
+
})
|
|
108
|
+
]
|
|
109
|
+
}, slide.pageId + "-" + slide.slideIndex);
|
|
110
|
+
})
|
|
111
|
+
})
|
|
112
|
+
});
|
|
113
|
+
}
|
|
114
|
+
/**
|
|
115
|
+
* Off-call "join call" prompt. Mirrors PresentVideoRenderer — decks are
|
|
116
|
+
* call-gated, so the deck itself only plays in the maximized overlay once a call
|
|
117
|
+
* is in progress.
|
|
118
|
+
*/ function PresentDeckJoinCard(param) {
|
|
119
|
+
let { item, context } = param;
|
|
120
|
+
const { hidden, thumbnailUrl, ariaLabel, startLabel, handleStartDeck } = usePresentDeckJoinCard({
|
|
121
|
+
item,
|
|
122
|
+
context
|
|
123
|
+
});
|
|
124
|
+
if (hidden) return null;
|
|
125
|
+
return /*#__PURE__*/ jsxRuntime_module_u(MessageEntry, {
|
|
126
|
+
isOwn: false,
|
|
127
|
+
children: /*#__PURE__*/ jsxRuntime_module_u(Card, {
|
|
128
|
+
"data-component-name": "PresentDeckRenderer.Card",
|
|
129
|
+
children: [
|
|
130
|
+
/*#__PURE__*/ jsxRuntime_module_u(ThumbnailFrame, {
|
|
131
|
+
children: thumbnailUrl && // Every slide load must be crossorigin, here and everywhere else. The assets
|
|
132
|
+
// origin only sends `Access-Control-Allow-Origin` (and `Vary: Origin`) when the
|
|
133
|
+
// request carries an `Origin` header, so a plain <img> caches a response with
|
|
134
|
+
// neither, and the browser then serves that ACAO-less entry to a later
|
|
135
|
+
// crossorigin request for the same url, which fails the CORS check. This card
|
|
136
|
+
// previews the deck's FIRST slide off-call, so it was the plain load that
|
|
137
|
+
// poisoned slide 1 for the overlay and the perception capture that followed.
|
|
138
|
+
/*#__PURE__*/ jsxRuntime_module_u(ThumbnailImage, {
|
|
139
|
+
src: thumbnailUrl,
|
|
140
|
+
alt: ariaLabel,
|
|
141
|
+
crossOrigin: "anonymous"
|
|
142
|
+
})
|
|
143
|
+
}),
|
|
144
|
+
/*#__PURE__*/ jsxRuntime_module_u(Button, {
|
|
145
|
+
variant: "primary",
|
|
146
|
+
size: "md",
|
|
147
|
+
iconOnly: true,
|
|
148
|
+
"aria-label": startLabel,
|
|
149
|
+
onClick: handleStartDeck,
|
|
150
|
+
children: /*#__PURE__*/ jsxRuntime_module_u(PlayIcon, {})
|
|
151
|
+
})
|
|
152
|
+
]
|
|
153
|
+
})
|
|
154
|
+
});
|
|
155
|
+
}
|
|
156
|
+
function usePresentDeckJoinCard(param) {
|
|
157
|
+
let { item, context } = param;
|
|
158
|
+
var _ref, _item_deckTitle;
|
|
159
|
+
const { t } = context.translationStore;
|
|
160
|
+
// The tool can fire multiple times for the same deck (navigating slides). Only
|
|
161
|
+
// show the card for the last message of a given deck — one "join call" prompt
|
|
162
|
+
// is enough. Walk backwards (no findLast — the widget runs in old browsers).
|
|
163
|
+
const lastPresentDeck = useComputed(()=>{
|
|
164
|
+
const visible = context.messages.visible.value;
|
|
165
|
+
for(let i = visible.length - 1; i >= 0; i--){
|
|
166
|
+
const m = visible[i];
|
|
167
|
+
if (m.type === "present_deck" && m.deckId === item.deckId) {
|
|
168
|
+
return m;
|
|
169
|
+
}
|
|
170
|
+
}
|
|
171
|
+
return undefined;
|
|
172
|
+
});
|
|
173
|
+
// Hidden when: a deck is up in the overlay (where it plays on a call); text-only
|
|
174
|
+
// mode has no call capability; a call is already in progress; or this isn't the
|
|
175
|
+
// last card for the deck.
|
|
176
|
+
const hidden = useComputed(()=>{
|
|
177
|
+
var _context_artifact_message_value;
|
|
178
|
+
return context.maximizedState.value === types_MaximizedState.ARTIFACT && ((_context_artifact_message_value = context.artifact.message.value) == null ? void 0 : _context_artifact_message_value.type) === "present_deck" || context.conversationMode.text.value || context.callInProgress.value || lastPresentDeck.value != null && lastPresentDeck.value.id !== item.id;
|
|
179
|
+
});
|
|
180
|
+
const handleStartDeck = ()=>{
|
|
181
|
+
if (context.callInProgress.peek()) return;
|
|
182
|
+
context.getCallUiAdapter().actions.startCall({
|
|
183
|
+
trigger: {
|
|
184
|
+
type: types_StartCallTrigger.StartDeck,
|
|
185
|
+
deckId: item.deckId,
|
|
186
|
+
slideIndex: item.slideIndex
|
|
187
|
+
}
|
|
188
|
+
});
|
|
189
|
+
};
|
|
190
|
+
return {
|
|
191
|
+
hidden: hidden.value,
|
|
192
|
+
thumbnailUrl: item.imageUrl,
|
|
193
|
+
ariaLabel: (_ref = (_item_deckTitle = item.deckTitle) != null ? _item_deckTitle : item.pageTitle) != null ? _ref : "",
|
|
194
|
+
startLabel: t("presentation.start"),
|
|
195
|
+
handleStartDeck
|
|
196
|
+
};
|
|
197
|
+
}
|
|
198
|
+
const Card = styled("div", {
|
|
199
|
+
base: {
|
|
200
|
+
display: "flex",
|
|
201
|
+
flexDirection: "column",
|
|
202
|
+
gap: "$sm",
|
|
203
|
+
padding: "$lg",
|
|
204
|
+
borderRadius: "[8px]",
|
|
205
|
+
outline: "1px solid token(colors.$gray.border)",
|
|
206
|
+
outlineOffset: "-1px",
|
|
207
|
+
backgroundColor: "$white.solid"
|
|
208
|
+
}
|
|
209
|
+
});
|
|
210
|
+
Card.displayName = "PresentDeckCard";
|
|
211
|
+
const Transcript = styled("div", {
|
|
212
|
+
base: {
|
|
213
|
+
display: "flex",
|
|
214
|
+
flexDirection: "column",
|
|
215
|
+
gap: "$lg"
|
|
216
|
+
}
|
|
217
|
+
});
|
|
218
|
+
Transcript.displayName = "PresentDeckTranscript";
|
|
219
|
+
const SlideBlock = styled("div", {
|
|
220
|
+
base: {
|
|
221
|
+
display: "flex",
|
|
222
|
+
flexDirection: "column",
|
|
223
|
+
gap: "$sm"
|
|
224
|
+
}
|
|
225
|
+
});
|
|
226
|
+
SlideBlock.displayName = "PresentDeckSlideBlock";
|
|
227
|
+
// Matches the slide-image preview size used elsewhere (SlidesThumbnail): a
|
|
228
|
+
// fixed 200px width at the slide's natural aspect ratio, not a full-width crop.
|
|
229
|
+
// A button so clicking re-opens the slide in the viewer.
|
|
230
|
+
const SlidePreview = styled("button", {
|
|
231
|
+
base: {
|
|
232
|
+
width: "[200px]",
|
|
233
|
+
padding: "$none",
|
|
234
|
+
border: "none",
|
|
235
|
+
borderRadius: "md",
|
|
236
|
+
overflow: "hidden",
|
|
237
|
+
cursor: "pointer",
|
|
238
|
+
backgroundColor: "$gray"
|
|
239
|
+
}
|
|
240
|
+
});
|
|
241
|
+
SlidePreview.displayName = "PresentDeckSlidePreview";
|
|
242
|
+
const SlidePreviewImage = styled("img", {
|
|
243
|
+
base: {
|
|
244
|
+
width: "[100%]",
|
|
245
|
+
height: "[auto]",
|
|
246
|
+
display: "block"
|
|
247
|
+
}
|
|
248
|
+
});
|
|
249
|
+
SlidePreviewImage.displayName = "PresentDeckSlidePreviewImage";
|
|
250
|
+
// Fits the slide at its natural aspect, like SlidePreview above. A fixed 16:9 frame
|
|
251
|
+
// with an object-fit: cover image centre-cropped a portrait slide, cutting off its
|
|
252
|
+
// title; a deck may contain pages of any shape, so the frame takes the slide's.
|
|
253
|
+
// With no image to take a shape from, keep the 16:9 placeholder the frame used to
|
|
254
|
+
// be so the card doesn't collapse to a bare button.
|
|
255
|
+
const ThumbnailFrame = styled("div", {
|
|
256
|
+
base: {
|
|
257
|
+
width: "[100%]",
|
|
258
|
+
overflow: "hidden",
|
|
259
|
+
borderRadius: "[8px]",
|
|
260
|
+
backgroundColor: "$gray",
|
|
261
|
+
"&:empty": {
|
|
262
|
+
aspectRatio: "[16 / 9]"
|
|
263
|
+
}
|
|
264
|
+
}
|
|
265
|
+
});
|
|
266
|
+
ThumbnailFrame.displayName = "PresentDeckThumbnailFrame";
|
|
267
|
+
const ThumbnailImage = styled("img", {
|
|
268
|
+
base: {
|
|
269
|
+
width: "[100%]",
|
|
270
|
+
height: "[auto]",
|
|
271
|
+
display: "block"
|
|
272
|
+
}
|
|
273
|
+
});
|
|
274
|
+
ThumbnailImage.displayName = "PresentDeckThumbnailImage";
|
|
275
|
+
/* export default */ const timeline_PresentDeckRenderer = (PresentDeckRenderer);
|
|
276
|
+
|
|
277
|
+
var PresentDeckRenderer_PresentDeckRenderer = /* unused export */ undefined;
|
|
278
|
+
export { PresentDeckRenderer_PresentDeckRenderer as PresentDeckRenderer };
|
|
279
|
+
export default timeline_PresentDeckRenderer;
|
|
@@ -0,0 +1,131 @@
|
|
|
1
|
+
import { hooks_module_T, jsxRuntime_module_u, useComputed } from "../../../../../js/multimodal_v2.js";
|
|
2
|
+
import { PlayIcon } from "../../../images/icons.js";
|
|
3
|
+
import "../../../styled-system/jsx/index.js";
|
|
4
|
+
import { Thumbnail } from "../../helpers/Thumbnail.js";
|
|
5
|
+
import { Button } from "../../shared/Button.js";
|
|
6
|
+
import { MessageEntry } from "./MessageEntry.js";
|
|
7
|
+
import { MaximizedState as types_MaximizedState, StartCallTrigger as types_StartCallTrigger } from "../../../types.js";
|
|
8
|
+
import { styled } from "../../../styled-system/jsx/factory.js";
|
|
9
|
+
|
|
10
|
+
|
|
11
|
+
/** @jsxImportSource preact */
|
|
12
|
+
|
|
13
|
+
|
|
14
|
+
|
|
15
|
+
|
|
16
|
+
|
|
17
|
+
|
|
18
|
+
|
|
19
|
+
const PresentVideoRenderer = (param)=>{
|
|
20
|
+
let { item, context } = param;
|
|
21
|
+
const { hidden, ariaLabel, startLabel, timestamp, handleStartPresentation } = usePresentVideoRenderer({
|
|
22
|
+
item,
|
|
23
|
+
context
|
|
24
|
+
});
|
|
25
|
+
if (hidden) return null;
|
|
26
|
+
return /*#__PURE__*/ jsxRuntime_module_u(MessageEntry, {
|
|
27
|
+
isOwn: false,
|
|
28
|
+
children: /*#__PURE__*/ jsxRuntime_module_u(Card, {
|
|
29
|
+
"data-component-name": "PresentVideoRenderer.Card",
|
|
30
|
+
children: [
|
|
31
|
+
/*#__PURE__*/ jsxRuntime_module_u(ThumbnailFrame, {
|
|
32
|
+
children: /*#__PURE__*/ jsxRuntime_module_u(Thumbnail, {
|
|
33
|
+
videoUrl: item.videoUrl,
|
|
34
|
+
timestamp: timestamp,
|
|
35
|
+
"aria-label": ariaLabel
|
|
36
|
+
})
|
|
37
|
+
}),
|
|
38
|
+
/*#__PURE__*/ jsxRuntime_module_u(Button, {
|
|
39
|
+
variant: "primary",
|
|
40
|
+
size: "md",
|
|
41
|
+
iconOnly: true,
|
|
42
|
+
"aria-label": startLabel,
|
|
43
|
+
onClick: handleStartPresentation,
|
|
44
|
+
children: /*#__PURE__*/ jsxRuntime_module_u(PlayIcon, {})
|
|
45
|
+
})
|
|
46
|
+
]
|
|
47
|
+
})
|
|
48
|
+
});
|
|
49
|
+
};
|
|
50
|
+
function usePresentVideoRenderer(param) {
|
|
51
|
+
let { item, context } = param;
|
|
52
|
+
var _item_presentationTitle;
|
|
53
|
+
const { t } = context.translationStore;
|
|
54
|
+
// The tool fires per section, so multiple present_video messages arrive.
|
|
55
|
+
// Only show the card for the last one — one "Join call" prompt is enough.
|
|
56
|
+
// Memoized so we only re-scan the timeline when the visible messages change.
|
|
57
|
+
// Avoid Array.prototype.findLast (ES2023) since the widget runs in arbitrary
|
|
58
|
+
// visitor browsers; walk backwards to find the last matching message instead.
|
|
59
|
+
const lastPresentVideo = useComputed(()=>{
|
|
60
|
+
const visible = context.messages.visible.value;
|
|
61
|
+
for(let i = visible.length - 1; i >= 0; i--){
|
|
62
|
+
const m = visible[i];
|
|
63
|
+
if (m.type === "present_video" && m.presentationId === item.presentationId) {
|
|
64
|
+
return m;
|
|
65
|
+
}
|
|
66
|
+
}
|
|
67
|
+
return undefined;
|
|
68
|
+
});
|
|
69
|
+
// The card is hidden when:
|
|
70
|
+
// - In a call, the video plays in the artifact overlay (no timeline card needed).
|
|
71
|
+
// - Text-only mode has no call capability.
|
|
72
|
+
// - A call is already in progress; read reactively so dismissing the artifact
|
|
73
|
+
// mid-call doesn't bring the now-inert card back.
|
|
74
|
+
// - This isn't the last present_video card for the presentation.
|
|
75
|
+
const hidden = useComputed(()=>{
|
|
76
|
+
var _context_artifact_message_value;
|
|
77
|
+
return context.maximizedState.value === types_MaximizedState.ARTIFACT && ((_context_artifact_message_value = context.artifact.message.value) == null ? void 0 : _context_artifact_message_value.type) === "present_video" || context.conversationMode.text.value || context.callInProgress.value || lastPresentVideo.value != null && lastPresentVideo.value.id !== item.id;
|
|
78
|
+
});
|
|
79
|
+
const handleStartPresentation = ()=>{
|
|
80
|
+
if (context.callInProgress.peek()) return;
|
|
81
|
+
context.getCallUiAdapter().actions.startCall({
|
|
82
|
+
trigger: {
|
|
83
|
+
type: types_StartCallTrigger.StartPresentation,
|
|
84
|
+
presentationId: item.presentationId,
|
|
85
|
+
sectionPosition: item.sectionPosition
|
|
86
|
+
}
|
|
87
|
+
});
|
|
88
|
+
};
|
|
89
|
+
// A second in, past the black or title frame many videos open on, clamped to this section:
|
|
90
|
+
// Thumbnail only clamps to the whole video, so a sub-second section would otherwise sample a
|
|
91
|
+
// frame belonging to the next one.
|
|
92
|
+
const timestamp = hooks_module_T(()=>Math.min(item.startTime + 1, Math.max(item.endTime - 0.001, item.startTime)), [
|
|
93
|
+
item.startTime,
|
|
94
|
+
item.endTime
|
|
95
|
+
]);
|
|
96
|
+
return {
|
|
97
|
+
hidden: hidden.value,
|
|
98
|
+
ariaLabel: (_item_presentationTitle = item.presentationTitle) != null ? _item_presentationTitle : item.sectionTitle,
|
|
99
|
+
startLabel: t("presentation.start"),
|
|
100
|
+
handleStartPresentation,
|
|
101
|
+
timestamp
|
|
102
|
+
};
|
|
103
|
+
}
|
|
104
|
+
const Card = styled("div", {
|
|
105
|
+
base: {
|
|
106
|
+
display: "flex",
|
|
107
|
+
flexDirection: "column",
|
|
108
|
+
gap: "$sm",
|
|
109
|
+
padding: "$lg",
|
|
110
|
+
borderRadius: "[8px]",
|
|
111
|
+
outline: "1px solid token(colors.$gray.border)",
|
|
112
|
+
outlineOffset: "-1px",
|
|
113
|
+
backgroundColor: "$white.solid"
|
|
114
|
+
}
|
|
115
|
+
});
|
|
116
|
+
Card.displayName = "PresentVideoCard";
|
|
117
|
+
const ThumbnailFrame = styled("div", {
|
|
118
|
+
base: {
|
|
119
|
+
width: "[100%]",
|
|
120
|
+
aspectRatio: "[16 / 9]",
|
|
121
|
+
overflow: "hidden",
|
|
122
|
+
borderRadius: "[8px]",
|
|
123
|
+
backgroundColor: "$gray"
|
|
124
|
+
}
|
|
125
|
+
});
|
|
126
|
+
ThumbnailFrame.displayName = "ThumbnailFrame";
|
|
127
|
+
/* export default */ const timeline_PresentVideoRenderer = (PresentVideoRenderer);
|
|
128
|
+
|
|
129
|
+
var PresentVideoRenderer_PresentVideoRenderer = /* unused export */ undefined;
|
|
130
|
+
export { PresentVideoRenderer_PresentVideoRenderer as PresentVideoRenderer };
|
|
131
|
+
export default timeline_PresentVideoRenderer;
|