@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
package/js/runtime.js
ADDED
|
@@ -0,0 +1,109 @@
|
|
|
1
|
+
|
|
2
|
+
var __webpack_modules__ = {};
|
|
3
|
+
// The module cache
|
|
4
|
+
var __webpack_module_cache__ = {};
|
|
5
|
+
// The require function
|
|
6
|
+
function __webpack_require__(moduleId) {
|
|
7
|
+
// Check if module is in cache
|
|
8
|
+
var cachedModule = __webpack_module_cache__[moduleId];
|
|
9
|
+
if (cachedModule !== undefined) {
|
|
10
|
+
return cachedModule.exports;
|
|
11
|
+
}
|
|
12
|
+
// Create a new module (and put it into the cache)
|
|
13
|
+
var module = (__webpack_module_cache__[moduleId] = {
|
|
14
|
+
id: moduleId,
|
|
15
|
+
exports: {}
|
|
16
|
+
});
|
|
17
|
+
// Execute the module function
|
|
18
|
+
__webpack_modules__[moduleId](module, module.exports, __webpack_require__);
|
|
19
|
+
|
|
20
|
+
// Return the exports of the module
|
|
21
|
+
return module.exports;
|
|
22
|
+
}
|
|
23
|
+
// expose the modules object (__webpack_modules__)
|
|
24
|
+
__webpack_require__.m = __webpack_modules__;
|
|
25
|
+
|
|
26
|
+
// webpack/runtime/compat_get_default_export
|
|
27
|
+
(() => {
|
|
28
|
+
// getDefaultExport function for compatibility with non-ESM modules
|
|
29
|
+
__webpack_require__.n = (module) => {
|
|
30
|
+
var getter = module && module.__esModule ?
|
|
31
|
+
() => (module['default']) :
|
|
32
|
+
() => (module);
|
|
33
|
+
__webpack_require__.d(getter, { a: getter });
|
|
34
|
+
return getter;
|
|
35
|
+
};
|
|
36
|
+
|
|
37
|
+
})();
|
|
38
|
+
// webpack/runtime/define_property_getters
|
|
39
|
+
(() => {
|
|
40
|
+
__webpack_require__.d = (exports, getters, values) => {
|
|
41
|
+
var define = (defs, kind) => {
|
|
42
|
+
for(var key in defs) {
|
|
43
|
+
if(__webpack_require__.o(defs, key) && !__webpack_require__.o(exports, key)) {
|
|
44
|
+
Object.defineProperty(exports, key, { enumerable: true, [kind]: defs[key] });
|
|
45
|
+
}
|
|
46
|
+
}
|
|
47
|
+
};
|
|
48
|
+
define(getters, "get");
|
|
49
|
+
define(values, "value");
|
|
50
|
+
};
|
|
51
|
+
})();
|
|
52
|
+
// webpack/runtime/esm_register_module
|
|
53
|
+
(() => {
|
|
54
|
+
__webpack_require__.add = function registerModules(modules) { Object.assign(__webpack_require__.m, modules) }
|
|
55
|
+
|
|
56
|
+
})();
|
|
57
|
+
// webpack/runtime/global
|
|
58
|
+
(() => {
|
|
59
|
+
__webpack_require__.g = (() => {
|
|
60
|
+
if (typeof globalThis === 'object') return globalThis;
|
|
61
|
+
try {
|
|
62
|
+
return this || new Function('return this')();
|
|
63
|
+
} catch (e) {
|
|
64
|
+
if (typeof window === 'object') return window;
|
|
65
|
+
}
|
|
66
|
+
})();
|
|
67
|
+
})();
|
|
68
|
+
// webpack/runtime/has_own_property
|
|
69
|
+
(() => {
|
|
70
|
+
__webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))
|
|
71
|
+
})();
|
|
72
|
+
// webpack/runtime/node_module_decorator
|
|
73
|
+
(() => {
|
|
74
|
+
__webpack_require__.nmd = (module) => {
|
|
75
|
+
module.paths = [];
|
|
76
|
+
if (!module.children) module.children = [];
|
|
77
|
+
return module;
|
|
78
|
+
};
|
|
79
|
+
})();
|
|
80
|
+
// webpack/runtime/auto_public_path
|
|
81
|
+
(() => {
|
|
82
|
+
var scriptUrl;
|
|
83
|
+
|
|
84
|
+
if (__webpack_require__.g.importScripts) scriptUrl = __webpack_require__.g.location + "";
|
|
85
|
+
var document = __webpack_require__.g.document;
|
|
86
|
+
if (!scriptUrl && document) {
|
|
87
|
+
// Technically we could use `document.currentScript instanceof window.HTMLScriptElement`,
|
|
88
|
+
// but an attacker could try to inject `<script>HTMLScriptElement = HTMLImageElement</script>`
|
|
89
|
+
// and use `<img name="currentScript" src="https://attacker.controlled.server/"></img>`
|
|
90
|
+
if (document.currentScript && document.currentScript.tagName.toUpperCase() === 'SCRIPT') scriptUrl = document.currentScript.src;
|
|
91
|
+
if (!scriptUrl) {
|
|
92
|
+
var scripts = document.getElementsByTagName("script");
|
|
93
|
+
if (scripts.length) {
|
|
94
|
+
var i = scripts.length - 1;
|
|
95
|
+
while (i > -1 && (!scriptUrl || !/^http(s?):/.test(scriptUrl))) scriptUrl = scripts[i--].src;
|
|
96
|
+
}
|
|
97
|
+
}
|
|
98
|
+
}
|
|
99
|
+
|
|
100
|
+
// When supporting browsers where an automatic publicPath is not supported you must specify an output.publicPath manually via configuration",
|
|
101
|
+
// or pass an empty string ("") and set the __webpack_public_path__ variable from your code to use your own logic.',
|
|
102
|
+
if (!scriptUrl) throw new Error("Automatic publicPath is not supported in this browser");
|
|
103
|
+
scriptUrl = scriptUrl.replace(/^blob:/, "").replace(/#.*$/, "").replace(/\?.*$/, "").replace(/\/[^\/]+$/, "/");
|
|
104
|
+
|
|
105
|
+
__webpack_require__.p = scriptUrl + '../';
|
|
106
|
+
|
|
107
|
+
})();
|
|
108
|
+
|
|
109
|
+
export { __webpack_require__ };
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
package/package.json
ADDED
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "@qualified-salesforce/web",
|
|
3
|
+
"version": "0.0.1-oidc-bootstrap",
|
|
4
|
+
"description": "Embeddable Qualified messenger widget for self-hosted deployments.",
|
|
5
|
+
"license": "SEE LICENSE IN LICENSE.txt",
|
|
6
|
+
"type": "module",
|
|
7
|
+
"exports": {
|
|
8
|
+
".": "./packs/widget/esm/index.js",
|
|
9
|
+
"./qualified.css": "./packs/widget/esm/qualified.css"
|
|
10
|
+
},
|
|
11
|
+
"sideEffects": [
|
|
12
|
+
"**/*.css",
|
|
13
|
+
"./js/4101.js",
|
|
14
|
+
"./js/multimodal_v2.js",
|
|
15
|
+
"./widget/multimodal_v2/host.string.js",
|
|
16
|
+
"./widget/multimodal_v2/index.panda.js",
|
|
17
|
+
"./widget/utils/native_globals.js",
|
|
18
|
+
"./packs/widget/esm/index.js"
|
|
19
|
+
]
|
|
20
|
+
}
|
|
@@ -0,0 +1,97 @@
|
|
|
1
|
+
import { Q_DOCKING_TAG_NAME } from "./shared.js";
|
|
2
|
+
import { defineSingletonHost } from "../../../../src/singleton_host.js";
|
|
3
|
+
import { getQualifiedRoot } from "../../../../src/qualified_root.js";
|
|
4
|
+
|
|
5
|
+
/* eslint-disable rulesdir/css-units */
|
|
6
|
+
|
|
7
|
+
|
|
8
|
+
/**
|
|
9
|
+
* Single child of `<q-root>` holding every node the docking system injects. Base
|
|
10
|
+
* styles, skeleton and matchMedia iframe in the light DOM; in-flight
|
|
11
|
+
* cross-origin clones in the shadow root.
|
|
12
|
+
*
|
|
13
|
+
* Shadow tree from the constructor, so it exists whether or not the host is
|
|
14
|
+
* mounted. The style waits for connection, which a constructor cannot do and
|
|
15
|
+
* which re-dresses an adopted host anyway.
|
|
16
|
+
*/ class QDockingElement extends HTMLElement {
|
|
17
|
+
connectedCallback() {
|
|
18
|
+
this.style.cssText = "display:contents";
|
|
19
|
+
}
|
|
20
|
+
constructor(){
|
|
21
|
+
super();
|
|
22
|
+
installShadow(this);
|
|
23
|
+
}
|
|
24
|
+
}
|
|
25
|
+
/**
|
|
26
|
+
* Attaches the slotted shadow tree unless the host has one already. The `<slot>`
|
|
27
|
+
* is what lets the light-DOM children render at all.
|
|
28
|
+
*
|
|
29
|
+
* Outside the constructor because a third party can claim the tag, leaving us an
|
|
30
|
+
* element none of our hooks run on.
|
|
31
|
+
*/ function installShadow(host) {
|
|
32
|
+
const existing = host.shadowRoot;
|
|
33
|
+
if (existing) return existing;
|
|
34
|
+
const shadow = host.attachShadow({
|
|
35
|
+
mode: "open"
|
|
36
|
+
});
|
|
37
|
+
shadow.appendChild(document.createElement("slot"));
|
|
38
|
+
return shadow;
|
|
39
|
+
}
|
|
40
|
+
const findDockingHost = defineSingletonHost(Q_DOCKING_TAG_NAME, QDockingElement);
|
|
41
|
+
/**
|
|
42
|
+
* Returns the singleton `<q-docking>` host, creating it under `<q-root>` on
|
|
43
|
+
* first call. Both are boxless, so the skeleton's `position: fixed` still
|
|
44
|
+
* resolves against `<html>` as if it were a direct child.
|
|
45
|
+
*/ function getDockingHost() {
|
|
46
|
+
const host = findDockingHost();
|
|
47
|
+
const root = getQualifiedRoot();
|
|
48
|
+
// Corrective for an adopted host parked elsewhere; the move restores its style.
|
|
49
|
+
if (host.parentNode !== root) root.appendChild(host);
|
|
50
|
+
// Corrective for a foreign registration's host; no-ops on our own.
|
|
51
|
+
installShadow(host);
|
|
52
|
+
if (host.style.display !== "contents") host.style.cssText = "display:contents";
|
|
53
|
+
return host;
|
|
54
|
+
}
|
|
55
|
+
/** Open shadow root attached to the singleton `<q-docking>` host. */ function getDockingShadowRoot() {
|
|
56
|
+
return installShadow(getDockingHost());
|
|
57
|
+
}
|
|
58
|
+
/**
|
|
59
|
+
* Module scope, not a field: a host from a foreign registration is a plain
|
|
60
|
+
* `HTMLElement`, where a prototype getter would read `undefined` and quietly
|
|
61
|
+
* unproxy `matchMedia`. A singleton either way.
|
|
62
|
+
*/ let probeIframe = null;
|
|
63
|
+
/**
|
|
64
|
+
* The invisible iframe inside `<q-docking>` mirroring the constrained viewport,
|
|
65
|
+
* created on first use. Its `contentWindow` is the single source every viewport
|
|
66
|
+
* proxy reads: a native `matchMedia` evaluating against the docked width, plus
|
|
67
|
+
* dimensions that agree with it exactly.
|
|
68
|
+
*
|
|
69
|
+
* Sized from `--qdvw` because percentages resolve against the slot's box and end
|
|
70
|
+
* up `0x0` in Chromium under `display: contents`.
|
|
71
|
+
*
|
|
72
|
+
* No `srcdoc`/`src` on purpose: either swaps the document off the initial
|
|
73
|
+
* about:blank, and MediaQueryLists made before the swap stop firing `change`.
|
|
74
|
+
*/ function getProbeIframe() {
|
|
75
|
+
const host = getDockingHost();
|
|
76
|
+
// Recreated when the host was replaced under us (hot reload, or the page moved it).
|
|
77
|
+
if ((probeIframe == null ? void 0 : probeIframe.parentNode) === host) return probeIframe;
|
|
78
|
+
const iframe = document.createElement("iframe");
|
|
79
|
+
iframe.style.cssText = [
|
|
80
|
+
"position:fixed",
|
|
81
|
+
"top:0",
|
|
82
|
+
"left:0",
|
|
83
|
+
"width:var(" + (/* inlined export .DOCKED_VIEWPORT_WIDTH_CSS_VARIABLE */"--qdvw") + ", 100%)",
|
|
84
|
+
"height:100dvh",
|
|
85
|
+
"visibility:hidden",
|
|
86
|
+
"pointer-events:none",
|
|
87
|
+
"border:none",
|
|
88
|
+
"opacity:0",
|
|
89
|
+
// Below every layout so the invisible probe never wins a stacking-context contest.
|
|
90
|
+
"z-index:-1"
|
|
91
|
+
].join(";");
|
|
92
|
+
host.appendChild(iframe);
|
|
93
|
+
probeIframe = iframe;
|
|
94
|
+
return iframe;
|
|
95
|
+
}
|
|
96
|
+
|
|
97
|
+
export { getDockingHost, getDockingShadowRoot, getProbeIframe };
|
|
@@ -0,0 +1,294 @@
|
|
|
1
|
+
import { __webpack_require__ } from "../../../../js/runtime.js";
|
|
2
|
+
import { getDockingHost } from "./docking_host.js";
|
|
3
|
+
import { withTransitionsDisabled, DOCKED_MODE, DOCKED_TOP_OFFSET_CSS_VARIABLE, dispatchResizeEvent, DOCKED_DOCUMENT_ATTRIBUTE, MOBILE_BREAKPOINT } from "./shared.js";
|
|
4
|
+
import { createViewportLock } from "./viewport_lock.js";
|
|
5
|
+
import { DOCKED_RIGHT_OFFSET_CSS_VARIABLE, createViewportResize } from "./viewport_resize.js";
|
|
6
|
+
import "../../../../widget/utils/native_globals.js";
|
|
7
|
+
import { _extends } from "../../../../js/4101.js";
|
|
8
|
+
import { originalOf } from "../../../../src/proxy.js";
|
|
9
|
+
|
|
10
|
+
/* provided dependency */ var docking_setTimeout = __webpack_require__(68034).pS;
|
|
11
|
+
/* provided dependency */ var requestAnimationFrame = __webpack_require__(68034).gj;
|
|
12
|
+
/* provided dependency */ var docking_clearTimeout = __webpack_require__(68034).Kj;
|
|
13
|
+
|
|
14
|
+
/* eslint-disable rulesdir/css-units */
|
|
15
|
+
|
|
16
|
+
|
|
17
|
+
|
|
18
|
+
|
|
19
|
+
// ============================================================================
|
|
20
|
+
// Constants
|
|
21
|
+
// ============================================================================
|
|
22
|
+
const Q_STATE_COOKIE_PREFIX = "__q_state_";
|
|
23
|
+
const BASE_STYLES_ID = "q-docked-base-styles";
|
|
24
|
+
const SKELETON_ID = "q-docked-skeleton";
|
|
25
|
+
const SKELETON_Z_INDEX = 2147483639; // Below widget (2147483640) but above page content
|
|
26
|
+
// Absolute ceiling on how long the page may sit docked without an initState. Deliberately
|
|
27
|
+
// below the 50s worst case of the stage budgets below, so a load that exhausts its full
|
|
28
|
+
// allowance in every stage still gets cut off here rather than stalling the visitor.
|
|
29
|
+
const DOCKING_HARD_ABORT_TIMEOUT_MS = 45000;
|
|
30
|
+
const DOCKING_LOADING_STAGE_TIMEOUTS = {
|
|
31
|
+
init_qualified: 10000,
|
|
32
|
+
socket_connection: 15000,
|
|
33
|
+
init_multimodal: 10000,
|
|
34
|
+
init_state: 15000
|
|
35
|
+
};
|
|
36
|
+
// ============================================================================
|
|
37
|
+
// Public API Registration
|
|
38
|
+
// ============================================================================
|
|
39
|
+
/**
|
|
40
|
+
* Registers the docking API on window.qualified.docking.
|
|
41
|
+
* Returns early if the API is already registered or if window.qualified doesn't exist.
|
|
42
|
+
* Call this function to expose the docked layout manager as a global API.
|
|
43
|
+
*/ function registerDockingAPI() {
|
|
44
|
+
if (!window.qualified || window.qualified.docking) return;
|
|
45
|
+
window.qualified.docking = createDockingAPI();
|
|
46
|
+
}
|
|
47
|
+
/**
|
|
48
|
+
* Creates the docking API with all state encapsulated in closures.
|
|
49
|
+
* This is a factory function that returns the public API.
|
|
50
|
+
*/ function createDockingAPI() {
|
|
51
|
+
/**
|
|
52
|
+
* Set by the first `init`, whether or not {@link start} ran with it. Docking
|
|
53
|
+
* below the mobile breakpoint waits for the viewport to grow, and a second
|
|
54
|
+
* `init` in the meantime must not queue a second wait — `state` is still null
|
|
55
|
+
* then, so it cannot carry the guard itself.
|
|
56
|
+
*/ let initialized = false;
|
|
57
|
+
let state = null;
|
|
58
|
+
let pendingState = null;
|
|
59
|
+
const init = (config)=>{
|
|
60
|
+
if (config === void 0) config = {};
|
|
61
|
+
if (initialized) return;
|
|
62
|
+
initialized = true;
|
|
63
|
+
whenAboveMobileBreakpoint(()=>start(config));
|
|
64
|
+
};
|
|
65
|
+
/**
|
|
66
|
+
* Everything `init` does to the host page, held back until the viewport
|
|
67
|
+
* clears the mobile breakpoint. Creating `state` here is what keeps the page
|
|
68
|
+
* untouched in the meantime: every other method either returns early on a
|
|
69
|
+
* null `state` or records into {@link pendingState}, which is folded back in
|
|
70
|
+
* at the end of this.
|
|
71
|
+
*/ const start = (config)=>{
|
|
72
|
+
state = {
|
|
73
|
+
c: config,
|
|
74
|
+
bs: null,
|
|
75
|
+
concerns: getConcerns(config),
|
|
76
|
+
ft: null
|
|
77
|
+
};
|
|
78
|
+
withTransitionsDisabled(document.documentElement, ()=>{
|
|
79
|
+
var _readDockedStateFromCookie;
|
|
80
|
+
const shouldDock = (_readDockedStateFromCookie = readDockedStateFromCookie()) != null ? _readDockedStateFromCookie : state.c.defaultDocked;
|
|
81
|
+
if (shouldDock) {
|
|
82
|
+
enable();
|
|
83
|
+
state.ft = {
|
|
84
|
+
hard: docking_setTimeout(abort, DOCKING_HARD_ABORT_TIMEOUT_MS),
|
|
85
|
+
soft: docking_setTimeout(abort, DOCKING_LOADING_STAGE_TIMEOUTS.init_qualified)
|
|
86
|
+
};
|
|
87
|
+
// Inform previous scripts that the window resized
|
|
88
|
+
requestAnimationFrame(()=>dispatchResizeEvent());
|
|
89
|
+
}
|
|
90
|
+
// Each concern self-contains its setup. viewport_lock internally captures
|
|
91
|
+
// the host page's pre-docking scroll position before installing its scroll
|
|
92
|
+
// proxy, then restores it onto body during reEvaluate (after base styles
|
|
93
|
+
// make body the scroll container) — no orchestration needed here.
|
|
94
|
+
for (const concern of state.concerns)concern.init();
|
|
95
|
+
reEvaluate();
|
|
96
|
+
if (state.c.showSkeleton) {
|
|
97
|
+
createSkeleton();
|
|
98
|
+
}
|
|
99
|
+
// Inside the transition guard: a pending `disable` undocking the page it
|
|
100
|
+
// was just docked into should animate no more than the docking did.
|
|
101
|
+
applyPendingState();
|
|
102
|
+
});
|
|
103
|
+
};
|
|
104
|
+
const enable = ()=>{
|
|
105
|
+
if (recordedAsPending({
|
|
106
|
+
docked: true
|
|
107
|
+
})) return;
|
|
108
|
+
if (!state) return;
|
|
109
|
+
// The attribute's value doubles as the layout flag: presence => docked, value
|
|
110
|
+
// => which mode. Existing `[q-docked]` presence selectors are unaffected.
|
|
111
|
+
document.documentElement.setAttribute(DOCKED_DOCUMENT_ATTRIBUTE, state.c.dockUnderHeader ? DOCKED_MODE.underHeader : DOCKED_MODE.regular);
|
|
112
|
+
};
|
|
113
|
+
const disable = ()=>{
|
|
114
|
+
if (recordedAsPending({
|
|
115
|
+
docked: false
|
|
116
|
+
})) return;
|
|
117
|
+
if (!state) return;
|
|
118
|
+
document.documentElement.removeAttribute(DOCKED_DOCUMENT_ATTRIBUTE);
|
|
119
|
+
};
|
|
120
|
+
const reEvaluate = ()=>{
|
|
121
|
+
if (!state) return;
|
|
122
|
+
createBaseStyles(state);
|
|
123
|
+
for (const concern of state.concerns)concern.reEvaluate();
|
|
124
|
+
};
|
|
125
|
+
const cancelAbort = ()=>{
|
|
126
|
+
if (recordedAsPending({
|
|
127
|
+
abortCancelled: true
|
|
128
|
+
})) return;
|
|
129
|
+
if (!(state == null ? void 0 : state.ft)) return;
|
|
130
|
+
docking_clearTimeout(state.ft.hard);
|
|
131
|
+
docking_clearTimeout(state.ft.soft);
|
|
132
|
+
state.ft = null;
|
|
133
|
+
};
|
|
134
|
+
const setAbortStage = (abortState)=>{
|
|
135
|
+
if (recordedAsPending({
|
|
136
|
+
abortStage: abortState
|
|
137
|
+
})) return;
|
|
138
|
+
if (!(state == null ? void 0 : state.ft)) return;
|
|
139
|
+
docking_clearTimeout(state.ft.soft);
|
|
140
|
+
state.ft.soft = docking_setTimeout(abort, DOCKING_LOADING_STAGE_TIMEOUTS[abortState]);
|
|
141
|
+
};
|
|
142
|
+
const isDocked = ()=>{
|
|
143
|
+
return document.documentElement.hasAttribute(DOCKED_DOCUMENT_ATTRIBUTE);
|
|
144
|
+
};
|
|
145
|
+
const abort = ()=>{
|
|
146
|
+
cancelAbort();
|
|
147
|
+
disable();
|
|
148
|
+
};
|
|
149
|
+
/** Initialized, but still waiting on the breakpoint — nothing to act on yet. */ const isPending = ()=>{
|
|
150
|
+
return initialized && !state;
|
|
151
|
+
};
|
|
152
|
+
/**
|
|
153
|
+
* Folds `patch` into {@link pendingState} if docking has not started, and
|
|
154
|
+
* reports whether it did — so a public method can hand off and return in one
|
|
155
|
+
* line rather than repeating the check and the merge.
|
|
156
|
+
*
|
|
157
|
+
* `false` covers both live docking and a page where `init` was never called;
|
|
158
|
+
* the caller's own `state` guard sorts those out.
|
|
159
|
+
*/ const recordedAsPending = (patch)=>{
|
|
160
|
+
if (!isPending()) return false;
|
|
161
|
+
pendingState = _extends({}, pendingState, patch);
|
|
162
|
+
return true;
|
|
163
|
+
};
|
|
164
|
+
/**
|
|
165
|
+
* Replays {@link pendingState} onto the state `start` just built, through the
|
|
166
|
+
* same public methods a live caller would have reached.
|
|
167
|
+
*
|
|
168
|
+
* Collapsing the calls loses their interleaving, so the fields are applied in
|
|
169
|
+
* a fixed order and cancellation goes last. That matches the real lifecycle,
|
|
170
|
+
* where `cancelAbort` is terminal (`initState`, `delay_connect` and
|
|
171
|
+
* `unauthorized` all end the sequence, and a live `setAbortStage` after one
|
|
172
|
+
* is already a no-op) and is the safer way to lose the tie: at worst the page
|
|
173
|
+
* keeps a dock it could have dropped, rather than dropping one out from under
|
|
174
|
+
* a widget that had reported in.
|
|
175
|
+
*/ const applyPendingState = ()=>{
|
|
176
|
+
const pending = pendingState;
|
|
177
|
+
pendingState = null;
|
|
178
|
+
if (!pending) return;
|
|
179
|
+
if (pending.docked !== undefined) {
|
|
180
|
+
if (pending.docked) enable();
|
|
181
|
+
else disable();
|
|
182
|
+
}
|
|
183
|
+
if (pending.abortStage) setAbortStage(pending.abortStage);
|
|
184
|
+
if (pending.abortCancelled) cancelAbort();
|
|
185
|
+
};
|
|
186
|
+
return {
|
|
187
|
+
init,
|
|
188
|
+
enable,
|
|
189
|
+
disable,
|
|
190
|
+
reEvaluate,
|
|
191
|
+
isDocked,
|
|
192
|
+
cancelAbort,
|
|
193
|
+
setAbortStage
|
|
194
|
+
};
|
|
195
|
+
}
|
|
196
|
+
/**
|
|
197
|
+
* Invokes `fn` while the viewport is wider than {@link MOBILE_BREAKPOINT} —
|
|
198
|
+
* synchronously if it already is, otherwise on the first change that crosses
|
|
199
|
+
* the breakpoint upwards.
|
|
200
|
+
*
|
|
201
|
+
* At or below the breakpoint the docked layout collapses to full width: the
|
|
202
|
+
* base stylesheet zeroes every docked-width variable inside the same media
|
|
203
|
+
* query, and the skeleton is hidden outright. Setting docking up anyway would
|
|
204
|
+
* rewrite the host page's stylesheets, proxy its viewport accessors and move
|
|
205
|
+
* its scroll container onto `<body>` — all invisible, all risk. Gating on the
|
|
206
|
+
* breakpoint leaves phones on a page we never touched while still picking
|
|
207
|
+
* docking up if the window later grows past it.
|
|
208
|
+
*
|
|
209
|
+
* The query is read through the pre-patch `matchMedia` because docking's own
|
|
210
|
+
* proxy repoints `window.matchMedia` at the shrunk content area once it starts,
|
|
211
|
+
* and the gate is a question about the real viewport.
|
|
212
|
+
*/ function whenAboveMobileBreakpoint(fn) {
|
|
213
|
+
const { matchMedia } = originalOf(window);
|
|
214
|
+
const mql = matchMedia.call(window, "(" + MOBILE_BREAKPOINT + ")");
|
|
215
|
+
if (!mql.matches) {
|
|
216
|
+
fn();
|
|
217
|
+
return;
|
|
218
|
+
}
|
|
219
|
+
const onChange = ()=>{
|
|
220
|
+
if (mql.matches) return;
|
|
221
|
+
mql.removeEventListener("change", onChange);
|
|
222
|
+
fn();
|
|
223
|
+
};
|
|
224
|
+
mql.addEventListener("change", onChange);
|
|
225
|
+
}
|
|
226
|
+
function getConcerns(config) {
|
|
227
|
+
var _config_skipCrossOriginStylesheets, _config_dockUnderHeader;
|
|
228
|
+
const concerns = [
|
|
229
|
+
createViewportResize({
|
|
230
|
+
skipCrossOriginStylesheets: (_config_skipCrossOriginStylesheets = config.skipCrossOriginStylesheets) != null ? _config_skipCrossOriginStylesheets : false,
|
|
231
|
+
dockUnderHeader: (_config_dockUnderHeader = config.dockUnderHeader) != null ? _config_dockUnderHeader : false
|
|
232
|
+
})
|
|
233
|
+
];
|
|
234
|
+
if (!config.dockUnderHeader && !config.disableViewportLock) {
|
|
235
|
+
concerns.push(createViewportLock());
|
|
236
|
+
}
|
|
237
|
+
return concerns;
|
|
238
|
+
}
|
|
239
|
+
// ============================================================================
|
|
240
|
+
// Base Styles
|
|
241
|
+
// ============================================================================
|
|
242
|
+
/**
|
|
243
|
+
* Creates the combined base stylesheet for docked mode by concatenating CSS
|
|
244
|
+
* from every registered concern (in `state.concerns` order) into a single
|
|
245
|
+
* `<style>` element. Kept as a single element (rather than one per concern)
|
|
246
|
+
* so the host page only sees one injected stylesheet and selector
|
|
247
|
+
* specificity is predictable across all concerns.
|
|
248
|
+
*/ function createBaseStyles(state) {
|
|
249
|
+
var _state_bs;
|
|
250
|
+
if (state.bs && state.bs.isConnected) return;
|
|
251
|
+
(_state_bs = state.bs) == null ? void 0 : _state_bs.remove();
|
|
252
|
+
state.bs = document.createElement("style");
|
|
253
|
+
state.bs.id = BASE_STYLES_ID;
|
|
254
|
+
state.bs.textContent = state.concerns.map((c)=>c.getStyles()).join("");
|
|
255
|
+
getDockingHost().appendChild(state.bs);
|
|
256
|
+
}
|
|
257
|
+
// ============================================================================
|
|
258
|
+
// Skeleton
|
|
259
|
+
// ============================================================================
|
|
260
|
+
/**
|
|
261
|
+
* Creates a loading skeleton element in the docked area.
|
|
262
|
+
* The skeleton is shown while the widget content is loading.
|
|
263
|
+
*/ function createSkeleton() {
|
|
264
|
+
const el = document.createElement("div");
|
|
265
|
+
el.id = SKELETON_ID;
|
|
266
|
+
el.innerHTML = /* html */ "\n <style>\n @keyframes q-shimmer{0%{background-position:-200% 0}to{background-position:200% 0}}\n /* Skeleton container - hidden by default, shown when docked on desktop */\n #" + SKELETON_ID + "{display:none;position:fixed;top:var(" + DOCKED_TOP_OFFSET_CSS_VARIABLE + ", 0px);right:var(" + DOCKED_RIGHT_OFFSET_CSS_VARIABLE + ", 0px);width:" + (/* inlined export .DOCKED_WIDTH_PX */400) + "px;height:calc(100% - var(" + DOCKED_TOP_OFFSET_CSS_VARIABLE + ", 0px));background:#fff;box-shadow:-2px 0 8px rgba(0,0,0,.08);z-index:" + SKELETON_Z_INDEX + ";box-sizing:border-box;font-family:system-ui,sans-serif}\n html[" + DOCKED_DOCUMENT_ATTRIBUTE + "]:not([q-widget-visible]) #" + SKELETON_ID + "{display:flex;flex-direction:column;padding:16px}\n /* Under-header docking parks the skeleton flush under the host header: swap the drop shadow for a hairline left border (no top border), matching the docked card. */\n html[" + DOCKED_DOCUMENT_ATTRIBUTE + '="' + DOCKED_MODE.underHeader + '"] #' + SKELETON_ID + "{box-shadow:none;border-left:1px solid #E6E9EC}\n @media(" + MOBILE_BREAKPOINT + "){html[" + DOCKED_DOCUMENT_ATTRIBUTE + "] #" + SKELETON_ID + '{display:none !important}}\n .q-sk{background:linear-gradient(90deg,#f0f0f0 25%,#e8e8e8 50%,#f0f0f0 75%);background-size:200% 100%;animation:q-shimmer 1.5s infinite;border-radius:4px}\n .q-sk-h{display:flex;align-items:center;gap:8px;margin-bottom:16px}\n .q-sk-av{width:32px;height:32px;border-radius:50%;flex-shrink:0}\n .q-sk-t{width:100px;height:16px}\n .q-sk-x{width:24px;height:24px;border-radius:50%;margin-left:auto;flex-shrink:0}\n .q-sk-v{width:100%;height:200px;border-radius:8px;margin-bottom:16px}\n .q-sk-p{height:14px;margin-bottom:8px}\n .q-sk-p:nth-child(2){width:90%}.q-sk-p:nth-child(3){width:75%}\n .q-sk-sp{flex:1}\n .q-sk-sg{margin-bottom:16px}\n .q-sk-l{width:120px;height:12px;margin-bottom:8px}\n .q-sk-ch{display:flex;flex-direction:column;gap:6px}\n .q-sk-c{height:20px;border-radius:10px}\n .q-sk-c:nth-child(1){width:80px}.q-sk-c:nth-child(2){width:100px}.q-sk-c:nth-child(3){width:120px}\n .q-sk-cp{border:1px solid #e0e0e0;border-radius:8px;padding:12px}\n .q-sk-in{width:60%;height:16px;margin-bottom:12px}\n .q-sk-ac{display:flex;align-items:center;gap:8px}\n .q-sk-bt{width:100px;height:32px;border-radius:16px}\n .q-sk-ic{width:32px;height:32px;border-radius:50%;margin-left:auto;flex-shrink:0}\n .q-sk-pr{width:200px;height:10px;margin:12px auto 0}\n </style>\n <div class="q-sk-h"><div class="q-sk q-sk-av"></div><div class="q-sk q-sk-t"></div><div class="q-sk q-sk-x"></div></div>\n <div class="q-sk q-sk-v"></div>\n <div class="q-sk q-sk-p"></div><div class="q-sk q-sk-p"></div><div class="q-sk q-sk-p"></div>\n <div class="q-sk-sp"></div>\n <div class="q-sk-sg"><div class="q-sk q-sk-l"></div><div class="q-sk-ch"><div class="q-sk q-sk-c"></div><div class="q-sk q-sk-c"></div><div class="q-sk q-sk-c"></div></div></div>\n <div class="q-sk-cp"><div class="q-sk q-sk-in"></div><div class="q-sk-ac"><div class="q-sk q-sk-bt"></div><div class="q-sk q-sk-ic"></div><div class="q-sk q-sk-ic"></div></div></div>\n <div class="q-sk q-sk-pr"></div>\n ';
|
|
267
|
+
getDockingHost().append(el);
|
|
268
|
+
}
|
|
269
|
+
// ============================================================================
|
|
270
|
+
// Cookie Helpers (standalone — no external dependencies)
|
|
271
|
+
// ============================================================================
|
|
272
|
+
/**
|
|
273
|
+
* Reads the docked flag (`d`) from the first `__q_state_*` cookie.
|
|
274
|
+
* Finds the cookie by prefix, decodes the base64 JSON value, and extracts `d`.
|
|
275
|
+
* Returns `true`, `false`, or `null` if the cookie does not exist / cannot be read.
|
|
276
|
+
*/ function readDockedStateFromCookie() {
|
|
277
|
+
const cookies = document.cookie.split(";");
|
|
278
|
+
for (const cookie of cookies){
|
|
279
|
+
const [rawName, ...rest] = cookie.split("=");
|
|
280
|
+
const name = rawName == null ? void 0 : rawName.trim();
|
|
281
|
+
if (name && name.startsWith(Q_STATE_COOKIE_PREFIX)) {
|
|
282
|
+
try {
|
|
283
|
+
const attrs = JSON.parse(decodeURIComponent(escape(atob(rest.join("=")))));
|
|
284
|
+
if (typeof attrs !== "object" || attrs === null) return null;
|
|
285
|
+
return attrs.d === 1 ? true : attrs.d === 0 ? false : null;
|
|
286
|
+
} catch (unused) {
|
|
287
|
+
return null;
|
|
288
|
+
}
|
|
289
|
+
}
|
|
290
|
+
}
|
|
291
|
+
return null;
|
|
292
|
+
}
|
|
293
|
+
|
|
294
|
+
export { registerDockingAPI };
|