@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,170 @@
|
|
|
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 { Form } from "./Form.js";
|
|
5
|
+
import { styled } from "../../styled-system/jsx/factory.js";
|
|
6
|
+
|
|
7
|
+
/** @jsxImportSource preact */
|
|
8
|
+
|
|
9
|
+
|
|
10
|
+
|
|
11
|
+
const FieldRequest = (param)=>{
|
|
12
|
+
let { rootStore } = param;
|
|
13
|
+
const { fieldRequestStore, displayMode } = rootStore;
|
|
14
|
+
const store = fieldRequestStore.value;
|
|
15
|
+
if (!(store == null ? void 0 : store.activeFieldRequestMessage.value)) {
|
|
16
|
+
return null;
|
|
17
|
+
}
|
|
18
|
+
const message = store.activeFieldRequestMessage.value;
|
|
19
|
+
const isCollapsed = displayMode.collapsedCenter.value || displayMode.collapsedRight.value;
|
|
20
|
+
const barebone = message.fieldType === "picklist" || message.fieldType === "multi_picklist";
|
|
21
|
+
const shouldShowMessage = !message.hideText && message.text && isCollapsed;
|
|
22
|
+
// Full variant: render form with ChatComposer-like styling
|
|
23
|
+
return /*#__PURE__*/ jsxRuntime_module_u(Container, {
|
|
24
|
+
"data-component-name": "FieldRequest.Container",
|
|
25
|
+
displayMode: displayMode,
|
|
26
|
+
children: /*#__PURE__*/ jsxRuntime_module_u(ContentsWrapper, {
|
|
27
|
+
"data-component-name": "FieldRequest.ContentsWrapper",
|
|
28
|
+
displayMode: displayMode,
|
|
29
|
+
barebone: barebone,
|
|
30
|
+
children: [
|
|
31
|
+
shouldShowMessage && /*#__PURE__*/ jsxRuntime_module_u(MessageText, {
|
|
32
|
+
children: /*#__PURE__*/ jsxRuntime_module_u(RichText, {
|
|
33
|
+
text: message.text
|
|
34
|
+
})
|
|
35
|
+
}),
|
|
36
|
+
!rootStore.input.isAnchored.value && /*#__PURE__*/ jsxRuntime_module_u(Form, {
|
|
37
|
+
message: message,
|
|
38
|
+
rootStore: rootStore
|
|
39
|
+
})
|
|
40
|
+
]
|
|
41
|
+
})
|
|
42
|
+
});
|
|
43
|
+
};
|
|
44
|
+
// Container matches ChatComposer's Container styling
|
|
45
|
+
const Container = styled("div", {
|
|
46
|
+
base: {
|
|
47
|
+
width: "[100%]",
|
|
48
|
+
display: "flex",
|
|
49
|
+
flexDirection: "column",
|
|
50
|
+
transition: "[margin-inline 200ms ease-out]"
|
|
51
|
+
},
|
|
52
|
+
variants: {
|
|
53
|
+
displayMode: {
|
|
54
|
+
collapsed_center: {
|
|
55
|
+
borderRadius: "[8px]",
|
|
56
|
+
boxShadow: "[0 0 24px rgba(0, 0, 0, 0.12)]",
|
|
57
|
+
position: "relative",
|
|
58
|
+
"& > [data-chat-controls]": {
|
|
59
|
+
opacity: 0,
|
|
60
|
+
pointerEvents: "none"
|
|
61
|
+
},
|
|
62
|
+
"&:hover > [data-chat-controls]": {
|
|
63
|
+
opacity: 1,
|
|
64
|
+
pointerEvents: "auto"
|
|
65
|
+
},
|
|
66
|
+
_touchDevice: {
|
|
67
|
+
"& > [data-chat-controls]": {
|
|
68
|
+
opacity: 1,
|
|
69
|
+
pointerEvents: "auto"
|
|
70
|
+
}
|
|
71
|
+
}
|
|
72
|
+
},
|
|
73
|
+
collapsed_right: {
|
|
74
|
+
borderRadius: "[8px]",
|
|
75
|
+
boxShadow: "[0 0 24px rgba(0, 0, 0, 0.12)]",
|
|
76
|
+
position: "relative",
|
|
77
|
+
"& > [data-chat-controls]": {
|
|
78
|
+
opacity: 0,
|
|
79
|
+
pointerEvents: "none"
|
|
80
|
+
},
|
|
81
|
+
"&:hover > [data-chat-controls]": {
|
|
82
|
+
opacity: 1,
|
|
83
|
+
pointerEvents: "auto"
|
|
84
|
+
},
|
|
85
|
+
_touchDevice: {
|
|
86
|
+
"& > [data-chat-controls]": {
|
|
87
|
+
opacity: 1,
|
|
88
|
+
pointerEvents: "auto"
|
|
89
|
+
}
|
|
90
|
+
}
|
|
91
|
+
},
|
|
92
|
+
closed: {
|
|
93
|
+
backgroundColor: "$transparent",
|
|
94
|
+
borderRadius: "[0px]",
|
|
95
|
+
border: "none",
|
|
96
|
+
boxShadow: "$none",
|
|
97
|
+
gap: "$sm",
|
|
98
|
+
paddingBottom: "$none"
|
|
99
|
+
},
|
|
100
|
+
sidebar: {
|
|
101
|
+
border: "none",
|
|
102
|
+
boxShadow: "$none",
|
|
103
|
+
gap: "$sm",
|
|
104
|
+
paddingBottom: "$md",
|
|
105
|
+
marginInline: "$xl"
|
|
106
|
+
},
|
|
107
|
+
docked: {
|
|
108
|
+
border: "none",
|
|
109
|
+
boxShadow: "$none",
|
|
110
|
+
gap: "$sm",
|
|
111
|
+
paddingBottom: "$md"
|
|
112
|
+
}
|
|
113
|
+
}
|
|
114
|
+
}
|
|
115
|
+
});
|
|
116
|
+
Container.displayName = "Container";
|
|
117
|
+
// ContentsWrapper matches ChatComposer's ContentsWrapper styling
|
|
118
|
+
const ContentsWrapper = styled("div", {
|
|
119
|
+
base: {
|
|
120
|
+
width: "[100%]"
|
|
121
|
+
},
|
|
122
|
+
variants: {
|
|
123
|
+
displayMode: {
|
|
124
|
+
collapsed_center: {
|
|
125
|
+
backgroundColor: "$white.solid",
|
|
126
|
+
borderRadius: "[6px 6px 0 0]",
|
|
127
|
+
overflow: "hidden"
|
|
128
|
+
},
|
|
129
|
+
collapsed_right: {
|
|
130
|
+
backgroundColor: "$white.solid",
|
|
131
|
+
borderRadius: "[6px 6px 0 0]",
|
|
132
|
+
overflow: "hidden"
|
|
133
|
+
},
|
|
134
|
+
closed: {
|
|
135
|
+
backgroundColor: "[#FAFAFA]",
|
|
136
|
+
borderRadius: "[8px]"
|
|
137
|
+
},
|
|
138
|
+
sidebar: {
|
|
139
|
+
backgroundColor: "[#FAFAFA]",
|
|
140
|
+
borderRadius: "[8px]",
|
|
141
|
+
boxShadow: "[0px 1px 3px 0px rgba(0, 0, 0, 0.06)]"
|
|
142
|
+
},
|
|
143
|
+
docked: {
|
|
144
|
+
backgroundColor: "[#FAFAFA]",
|
|
145
|
+
borderRadius: "[8px]",
|
|
146
|
+
boxShadow: "[0px 1px 3px 0px rgba(0, 0, 0, 0.06)]"
|
|
147
|
+
}
|
|
148
|
+
},
|
|
149
|
+
barebone: {
|
|
150
|
+
true: {
|
|
151
|
+
boxShadow: "$none"
|
|
152
|
+
}
|
|
153
|
+
}
|
|
154
|
+
}
|
|
155
|
+
});
|
|
156
|
+
ContentsWrapper.displayName = "ContentsWrapper";
|
|
157
|
+
const MessageText = styled("div", {
|
|
158
|
+
base: {
|
|
159
|
+
wordBreak: "break-word",
|
|
160
|
+
fontSize: "14px",
|
|
161
|
+
lineHeight: "22px",
|
|
162
|
+
color: "$text.dark",
|
|
163
|
+
paddingInline: "$lg",
|
|
164
|
+
paddingTop: "$lg"
|
|
165
|
+
}
|
|
166
|
+
});
|
|
167
|
+
MessageText.displayName = "MessageText";
|
|
168
|
+
/* export default */ const field_request = (FieldRequest);
|
|
169
|
+
|
|
170
|
+
export default field_request;
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
import { useComputed, jsxRuntime_module_u, utils_module_o, useSignalEffect } from "../../../../js/multimodal_v2.js";
|
|
2
|
+
import { AutoScroller } from "../../utils/auto_scroller.js";
|
|
3
|
+
|
|
4
|
+
/** @jsxImportSource preact */
|
|
5
|
+
|
|
6
|
+
|
|
7
|
+
|
|
8
|
+
const AutoScroll = (param)=>{
|
|
9
|
+
let { children, className } = param;
|
|
10
|
+
const containerRef = utils_module_o(null);
|
|
11
|
+
const scrollerRef = utils_module_o(null);
|
|
12
|
+
// Use useComputed to memoize children while reacting to signal changes
|
|
13
|
+
const childrenComponent = useComputed(()=>{
|
|
14
|
+
if (!scrollerRef.value) return null;
|
|
15
|
+
return children({
|
|
16
|
+
isUserScrolling: scrollerRef.value.isUserScrolling,
|
|
17
|
+
scrollToBottom: scrollerRef.value.scrollToBottom
|
|
18
|
+
});
|
|
19
|
+
});
|
|
20
|
+
useSignalEffect(()=>{
|
|
21
|
+
if (containerRef.value) {
|
|
22
|
+
scrollerRef.value = new AutoScroller(containerRef.value);
|
|
23
|
+
}
|
|
24
|
+
return ()=>{
|
|
25
|
+
if (scrollerRef.value) {
|
|
26
|
+
scrollerRef.value.dispose();
|
|
27
|
+
}
|
|
28
|
+
};
|
|
29
|
+
});
|
|
30
|
+
return /*#__PURE__*/ jsxRuntime_module_u("div", {
|
|
31
|
+
ref: containerRef,
|
|
32
|
+
className: className,
|
|
33
|
+
children: childrenComponent
|
|
34
|
+
});
|
|
35
|
+
};
|
|
36
|
+
|
|
37
|
+
export { AutoScroll };
|
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
import { preact_module_x } from "../../../../js/multimodal_v2.js";
|
|
2
|
+
import { isDebugMode } from "../../../../src/smart_website/utils.js";
|
|
3
|
+
import { serverLogger } from "../../../server-logger.js";
|
|
4
|
+
import { getSentryClient } from "../../../widget/sentry.js";
|
|
5
|
+
|
|
6
|
+
/** @jsxImportSource preact */
|
|
7
|
+
|
|
8
|
+
|
|
9
|
+
|
|
10
|
+
/**
|
|
11
|
+
* ErrorBoundary catches JavaScript errors in child components and reports them to Sentry.
|
|
12
|
+
*
|
|
13
|
+
* Note: Error boundaries require class components in Preact/React - this is an exception
|
|
14
|
+
* to the "avoid class components" rule as there is no functional equivalent.
|
|
15
|
+
*/ class ErrorBoundary extends preact_module_x {
|
|
16
|
+
static getDerivedStateFromError() {
|
|
17
|
+
return {
|
|
18
|
+
hasError: true
|
|
19
|
+
};
|
|
20
|
+
}
|
|
21
|
+
componentDidCatch(error) {
|
|
22
|
+
var _getSentryClient, _this_props_rootStore;
|
|
23
|
+
(_getSentryClient = getSentryClient({
|
|
24
|
+
project: "multimodal"
|
|
25
|
+
})) == null ? void 0 : _getSentryClient.captureException(error);
|
|
26
|
+
if ((_this_props_rootStore = this.props.rootStore) == null ? void 0 : _this_props_rootStore.featureFlags.piperXAgent) {
|
|
27
|
+
serverLogger.serverLog({
|
|
28
|
+
message: "multimodal_client_error",
|
|
29
|
+
extra: {
|
|
30
|
+
method: "inc"
|
|
31
|
+
}
|
|
32
|
+
});
|
|
33
|
+
}
|
|
34
|
+
if (isDebugMode()) {
|
|
35
|
+
// eslint-disable-next-line no-console
|
|
36
|
+
console.error("[Multimodal - ErrorBoundary] " + error.message, error.stack);
|
|
37
|
+
}
|
|
38
|
+
}
|
|
39
|
+
render() {
|
|
40
|
+
if (this.state.hasError) {
|
|
41
|
+
var _this_props_fallback;
|
|
42
|
+
return (_this_props_fallback = this.props.fallback) != null ? _this_props_fallback : null;
|
|
43
|
+
}
|
|
44
|
+
return this.props.children;
|
|
45
|
+
}
|
|
46
|
+
constructor(...args){
|
|
47
|
+
super(...args), this.state = {
|
|
48
|
+
hasError: false
|
|
49
|
+
};
|
|
50
|
+
}
|
|
51
|
+
}
|
|
52
|
+
|
|
53
|
+
export { ErrorBoundary };
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
import { jsxRuntime_module_u } from "../../../../js/multimodal_v2.js";
|
|
2
|
+
|
|
3
|
+
/** @jsxImportSource preact */
|
|
4
|
+
/**
|
|
5
|
+
* Semantic dialog wrapper — provides `role="dialog"`, `aria-modal`, and
|
|
6
|
+
* Escape-key handling. All focus management is handled externally by FocusGate.
|
|
7
|
+
*/ const FocusTrapDialog = (param)=>{
|
|
8
|
+
let { active, onClose, ariaLabel, children } = param;
|
|
9
|
+
const onKeyDown = (e)=>{
|
|
10
|
+
if (!active.value) return;
|
|
11
|
+
if (e.key === "Escape") {
|
|
12
|
+
// Prevent the event from bubbling to outer dialogs or the page.
|
|
13
|
+
e.stopPropagation();
|
|
14
|
+
onClose();
|
|
15
|
+
}
|
|
16
|
+
};
|
|
17
|
+
return /*#__PURE__*/ jsxRuntime_module_u("div", {
|
|
18
|
+
role: active.value ? "dialog" : undefined,
|
|
19
|
+
"aria-modal": active.value ? "true" : undefined,
|
|
20
|
+
"aria-label": active.value ? (ariaLabel == null ? void 0 : ariaLabel.value) || "Dialog" : undefined,
|
|
21
|
+
onKeyDown: onKeyDown,
|
|
22
|
+
children: children
|
|
23
|
+
});
|
|
24
|
+
};
|
|
25
|
+
|
|
26
|
+
export { FocusTrapDialog };
|
|
@@ -0,0 +1,94 @@
|
|
|
1
|
+
import { jsxRuntime_module_u, hooks_module_y, hooks_module_A } from "../../../../js/multimodal_v2.js";
|
|
2
|
+
|
|
3
|
+
/** @jsxImportSource preact */
|
|
4
|
+
|
|
5
|
+
const LINK_TAG_PATTERN = /<a[^>]*\shref\s*=/i;
|
|
6
|
+
/** Returns true if the HTML string contains at least one anchor element with an href attribute. */ function hasLinks(html) {
|
|
7
|
+
if (!html) return false;
|
|
8
|
+
return LINK_TAG_PATTERN.test(html);
|
|
9
|
+
}
|
|
10
|
+
/**
|
|
11
|
+
* Extracts link modules from a rendered DOM element by querying for `<a href>` elements.
|
|
12
|
+
* Falls back to the element's full text content with an empty URL if no links are found.
|
|
13
|
+
*/ function extractModulesFromElement(el) {
|
|
14
|
+
var _ref;
|
|
15
|
+
var _el_textContent;
|
|
16
|
+
const links = el.querySelectorAll("a[href]");
|
|
17
|
+
if (links.length > 0) {
|
|
18
|
+
return Array.from(links).filter(isElementVisible).map((link)=>{
|
|
19
|
+
var _ref, _link_getAttribute;
|
|
20
|
+
var _link_textContent;
|
|
21
|
+
return {
|
|
22
|
+
name: (_ref = (_link_textContent = link.textContent) == null ? void 0 : _link_textContent.trim()) != null ? _ref : "",
|
|
23
|
+
url: (_link_getAttribute = link.getAttribute("href")) != null ? _link_getAttribute : ""
|
|
24
|
+
};
|
|
25
|
+
}).filter((module)=>module.name.length > 0 || module.url.length > 0);
|
|
26
|
+
}
|
|
27
|
+
const fallbackName = (_ref = (_el_textContent = el.textContent) == null ? void 0 : _el_textContent.trim()) != null ? _ref : "";
|
|
28
|
+
return fallbackName ? [
|
|
29
|
+
{
|
|
30
|
+
name: fallbackName,
|
|
31
|
+
url: ""
|
|
32
|
+
}
|
|
33
|
+
] : [];
|
|
34
|
+
}
|
|
35
|
+
/**
|
|
36
|
+
* Wraps content and fires a content impression event when the element
|
|
37
|
+
* enters the viewport. Each message ID is tracked so impressions fire only once.
|
|
38
|
+
*/ const ImpressionTracker = (param)=>{
|
|
39
|
+
let { messageId, impressedIds, onImpression, modules: explicitModules, children } = param;
|
|
40
|
+
const ref = hooks_module_A(null);
|
|
41
|
+
const impressedIdsRef = hooks_module_A(impressedIds);
|
|
42
|
+
const onImpressionRef = hooks_module_A(onImpression);
|
|
43
|
+
const explicitModulesRef = hooks_module_A(explicitModules);
|
|
44
|
+
hooks_module_y(()=>{
|
|
45
|
+
impressedIdsRef.current = impressedIds;
|
|
46
|
+
onImpressionRef.current = onImpression;
|
|
47
|
+
explicitModulesRef.current = explicitModules;
|
|
48
|
+
}, [
|
|
49
|
+
impressedIds,
|
|
50
|
+
onImpression,
|
|
51
|
+
explicitModules
|
|
52
|
+
]);
|
|
53
|
+
hooks_module_y(()=>{
|
|
54
|
+
const el = ref.current;
|
|
55
|
+
if (!el || impressedIdsRef.current.has(messageId)) return;
|
|
56
|
+
const observer = new IntersectionObserver((entries)=>{
|
|
57
|
+
var _explicitModulesRef_current;
|
|
58
|
+
const entry = entries[0];
|
|
59
|
+
if (!(entry == null ? void 0 : entry.isIntersecting)) return;
|
|
60
|
+
const modules = (_explicitModulesRef_current = explicitModulesRef.current) != null ? _explicitModulesRef_current : extractModulesFromElement(el);
|
|
61
|
+
if (modules.length === 0) return;
|
|
62
|
+
impressedIdsRef.current.add(messageId);
|
|
63
|
+
observer.disconnect();
|
|
64
|
+
onImpressionRef.current(modules);
|
|
65
|
+
}, {
|
|
66
|
+
threshold: 0.5
|
|
67
|
+
});
|
|
68
|
+
observer.observe(el);
|
|
69
|
+
return ()=>observer.disconnect();
|
|
70
|
+
}, [
|
|
71
|
+
messageId
|
|
72
|
+
]);
|
|
73
|
+
return /*#__PURE__*/ jsxRuntime_module_u("div", {
|
|
74
|
+
ref: ref,
|
|
75
|
+
"data-qualified-content-impression-region": "",
|
|
76
|
+
children: children
|
|
77
|
+
});
|
|
78
|
+
};
|
|
79
|
+
/**
|
|
80
|
+
* Returns false if the element or any ancestor has `display:none` or `visibility:hidden`
|
|
81
|
+
* applied via inline styles. Note: `getComputedStyle` returns empty strings for CSS-class-applied
|
|
82
|
+
* properties in JSDOM, so class-based hiding is not detectable in tests.
|
|
83
|
+
*/ function isElementVisible(el) {
|
|
84
|
+
let current = el;
|
|
85
|
+
while(current){
|
|
86
|
+
const style = window.getComputedStyle(current);
|
|
87
|
+
if (style.display === "none" || style.visibility === "hidden") return false;
|
|
88
|
+
current = current.parentElement;
|
|
89
|
+
}
|
|
90
|
+
return true;
|
|
91
|
+
}
|
|
92
|
+
|
|
93
|
+
var ImpressionTracker_extractModulesFromElement = /* unused export */ undefined;
|
|
94
|
+
export { ImpressionTracker, ImpressionTracker_extractModulesFromElement as extractModulesFromElement, hasLinks };
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
import { compat_module_P, preact_module_k, jsxRuntime_module_u, utils_module_e } from "../../../../js/multimodal_v2.js";
|
|
2
|
+
|
|
3
|
+
/** @jsxImportSource preact */
|
|
4
|
+
|
|
5
|
+
|
|
6
|
+
|
|
7
|
+
/**
|
|
8
|
+
* Renders a list of items using a set of renderers.
|
|
9
|
+
* The items are expected to have a `type` property that is used to index the renderers.
|
|
10
|
+
*
|
|
11
|
+
* @param context - The context to pass to the renderers.
|
|
12
|
+
* @param items - The items to render.
|
|
13
|
+
* @param renderers - The renderers to use indexed by the item type.
|
|
14
|
+
* @param noItemsFallback - The fallback to use if there are no items.
|
|
15
|
+
* @returns The rendered list.
|
|
16
|
+
*/ const ListRenderer = (param)=>{
|
|
17
|
+
let { context, items, renderers, noItemsFallback } = param;
|
|
18
|
+
return /*#__PURE__*/ jsxRuntime_module_u(utils_module_e, {
|
|
19
|
+
each: items,
|
|
20
|
+
fallback: noItemsFallback,
|
|
21
|
+
children: (item)=>{
|
|
22
|
+
const Component = renderers[item.type];
|
|
23
|
+
if (!Component) {
|
|
24
|
+
return /*#__PURE__*/ jsxRuntime_module_u(preact_module_k, {}, item.id);
|
|
25
|
+
}
|
|
26
|
+
return /*#__PURE__*/ jsxRuntime_module_u(compat_module_P, {
|
|
27
|
+
fallback: null,
|
|
28
|
+
children: /*#__PURE__*/ jsxRuntime_module_u(Component, {
|
|
29
|
+
item: item,
|
|
30
|
+
context: context
|
|
31
|
+
})
|
|
32
|
+
}, item.id);
|
|
33
|
+
}
|
|
34
|
+
});
|
|
35
|
+
};
|
|
36
|
+
|
|
37
|
+
export { ListRenderer };
|
|
@@ -0,0 +1,76 @@
|
|
|
1
|
+
import { preact_module_k, signals_core_module_w, jsxRuntime_module_u, hooks_module_T } from "../../../../js/multimodal_v2.js";
|
|
2
|
+
import { useTranslationStore } from "../../stores/translation_store.js";
|
|
3
|
+
import { isSignalike } from "../../utils/signals.js";
|
|
4
|
+
|
|
5
|
+
|
|
6
|
+
|
|
7
|
+
|
|
8
|
+
|
|
9
|
+
|
|
10
|
+
/**
|
|
11
|
+
* A simple wrapper component that resolves a Localization to a reactive string.
|
|
12
|
+
* Useful for rendering localized text directly in JSX.
|
|
13
|
+
*
|
|
14
|
+
* @param loc - The localization object or string to resolve
|
|
15
|
+
* @returns A fragment containing the translated string
|
|
16
|
+
*
|
|
17
|
+
* @example
|
|
18
|
+
* <span><Text id="hello.world" /></span>
|
|
19
|
+
*/ const Text = (props)=>{
|
|
20
|
+
const text = useLocalization("loc" in props ? props.loc : props);
|
|
21
|
+
return /*#__PURE__*/ jsxRuntime_module_u(preact_module_k, {
|
|
22
|
+
children: text.value
|
|
23
|
+
});
|
|
24
|
+
};
|
|
25
|
+
/**
|
|
26
|
+
* Hook that resolves a Localization (or signal containing one) to a translated string.
|
|
27
|
+
* Handles three cases:
|
|
28
|
+
* 1. Undefined/empty input → returns empty string
|
|
29
|
+
* 2. Plain string → returns the string as-is (no translation)
|
|
30
|
+
* 3. Localization object → looks up the translation key and interpolates fields
|
|
31
|
+
*
|
|
32
|
+
* This is more useful for shared components that can be localized
|
|
33
|
+
*
|
|
34
|
+
* @param loc - A Localization value or a signal containing one
|
|
35
|
+
* @returns A computed signal that reactively updates when the localization or translations change
|
|
36
|
+
*/ function useLocalization(loc) {
|
|
37
|
+
const store = useTranslationStore();
|
|
38
|
+
// Setup dual reactivity so that we react to plain state change across re-renders and also signal changes
|
|
39
|
+
// Basically if loc is not a signal but it's value changes then the useMemo will create a new computed signal
|
|
40
|
+
// If loc is in fact a signal, useMemo will never re-render and computed will just change automatically when the loc signal changes
|
|
41
|
+
return hooks_module_T(()=>signals_core_module_w(()=>localize(store, loc)), [
|
|
42
|
+
store,
|
|
43
|
+
loc
|
|
44
|
+
]);
|
|
45
|
+
}
|
|
46
|
+
function t(id, fields) {
|
|
47
|
+
if (typeof id === "function") {
|
|
48
|
+
return {
|
|
49
|
+
getId: id,
|
|
50
|
+
fields
|
|
51
|
+
};
|
|
52
|
+
}
|
|
53
|
+
return {
|
|
54
|
+
id,
|
|
55
|
+
fields
|
|
56
|
+
};
|
|
57
|
+
}
|
|
58
|
+
function localize(store, loc) {
|
|
59
|
+
var _ref, _localization_fields;
|
|
60
|
+
const localization = isSignalike(loc) ? loc.value : loc;
|
|
61
|
+
if (!localization) return "";
|
|
62
|
+
if (typeof localization === "string" || typeof localization === "number") return localization.toString();
|
|
63
|
+
const id = (_ref = localization.getId == null ? void 0 : localization.getId.call(localization)) != null ? _ref : localization.id;
|
|
64
|
+
if (!id) return "";
|
|
65
|
+
const fields = Object.fromEntries(Object.entries((_localization_fields = localization.fields) != null ? _localization_fields : {}).map((param)=>{
|
|
66
|
+
let [key, value] = param;
|
|
67
|
+
return [
|
|
68
|
+
key,
|
|
69
|
+
localize(store, value)
|
|
70
|
+
];
|
|
71
|
+
}));
|
|
72
|
+
return (store == null ? void 0 : store.t(id, fields)) || "";
|
|
73
|
+
}
|
|
74
|
+
|
|
75
|
+
var Localization_localize = /* unused export */ undefined;
|
|
76
|
+
export { Localization_localize as localize, Text, t, useLocalization };
|
|
@@ -0,0 +1,166 @@
|
|
|
1
|
+
import { jsxRuntime_module_u, hooks_module_y, hooks_module_A } from "../../../../js/multimodal_v2.js";
|
|
2
|
+
import { AssetsPreloader } from "../../assets_preloader.js";
|
|
3
|
+
import "../../styled-system/jsx/index.js";
|
|
4
|
+
import { getCache } from "../../utils/multimodal_cache.js";
|
|
5
|
+
import { styled } from "../../styled-system/jsx/factory.js";
|
|
6
|
+
|
|
7
|
+
/* eslint-disable no-continue */ function _object_without_properties_loose(source, excluded) {
|
|
8
|
+
if (source == null) return {};
|
|
9
|
+
var target = {}, sourceKeys = Object.getOwnPropertyNames(source), key, i;
|
|
10
|
+
for(i = 0; i < sourceKeys.length; i++){
|
|
11
|
+
key = sourceKeys[i];
|
|
12
|
+
if (excluded.indexOf(key) >= 0) continue;
|
|
13
|
+
if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue;
|
|
14
|
+
target[key] = source[key];
|
|
15
|
+
}
|
|
16
|
+
return target;
|
|
17
|
+
}
|
|
18
|
+
|
|
19
|
+
|
|
20
|
+
|
|
21
|
+
|
|
22
|
+
|
|
23
|
+
const CACHE_KEY = "components.helpers.Persisted";
|
|
24
|
+
/**
|
|
25
|
+
* A component that creates and persists DOM elements across re-renders using a cache.
|
|
26
|
+
* This is useful for elements like video or audio where you want to maintain state
|
|
27
|
+
* (e.g., playback position, loaded data) even when the component unmounts and remounts.
|
|
28
|
+
*
|
|
29
|
+
* Elements are cached by their `id` prop and reused across renders, preventing
|
|
30
|
+
* recreation of the DOM element and loss of state.
|
|
31
|
+
*
|
|
32
|
+
* @template T - The type of HTML element to create (e.g., "video", "audio", "iframe")
|
|
33
|
+
* @param props - Component props
|
|
34
|
+
* @param props.id - Unique identifier for caching this specific element
|
|
35
|
+
* @param props.elementType - The HTML element type to create
|
|
36
|
+
* @param props.attributes - Additional HTML attributes to apply to the element
|
|
37
|
+
* @returns A container component that manages the persisted element
|
|
38
|
+
*
|
|
39
|
+
* @example
|
|
40
|
+
* ```tsx
|
|
41
|
+
* <Persisted
|
|
42
|
+
* id="video-player"
|
|
43
|
+
* elementType="video"
|
|
44
|
+
* src={videoUrl}
|
|
45
|
+
* controls={true}
|
|
46
|
+
* />
|
|
47
|
+
* ```
|
|
48
|
+
*/ const Persisted = (props)=>{
|
|
49
|
+
const cache = getCache(CACHE_KEY, ()=>new Map(AssetsPreloader.preloadedAssets));
|
|
50
|
+
const { elementType, innerRef, children } = props, attributes = _object_without_properties_loose(props, [
|
|
51
|
+
"elementType",
|
|
52
|
+
"innerRef",
|
|
53
|
+
"children"
|
|
54
|
+
]);
|
|
55
|
+
const { id } = attributes;
|
|
56
|
+
const containerRef = hooks_module_A(null);
|
|
57
|
+
const elementRef = hooks_module_A(null);
|
|
58
|
+
const stableAttributes = useAttributes(attributes);
|
|
59
|
+
// Effect for creating/mounting the element (runs once per id/as)
|
|
60
|
+
hooks_module_y(()=>{
|
|
61
|
+
if (!containerRef.current) return;
|
|
62
|
+
// Get or create the specific element
|
|
63
|
+
let element = cache.get(id);
|
|
64
|
+
if (!element) {
|
|
65
|
+
element = document.createElement(elementType);
|
|
66
|
+
cache.set(id, element);
|
|
67
|
+
} else if (element.isConnected) {
|
|
68
|
+
// We are trying to mount two elements with the same id, so we need to clone the element
|
|
69
|
+
// this element will be garbage collected by the browser when the component unmounts
|
|
70
|
+
element = element.cloneNode(true);
|
|
71
|
+
}
|
|
72
|
+
elementRef.current = element;
|
|
73
|
+
containerRef.current.appendChild(element);
|
|
74
|
+
return ()=>{
|
|
75
|
+
var _element_parentNode;
|
|
76
|
+
element == null ? void 0 : (_element_parentNode = element.parentNode) == null ? void 0 : _element_parentNode.removeChild(element);
|
|
77
|
+
};
|
|
78
|
+
}, [
|
|
79
|
+
id,
|
|
80
|
+
elementType,
|
|
81
|
+
cache
|
|
82
|
+
]);
|
|
83
|
+
// Effect for updating the innerRef
|
|
84
|
+
hooks_module_y(()=>{
|
|
85
|
+
if (innerRef) {
|
|
86
|
+
innerRef.current = elementRef.current;
|
|
87
|
+
}
|
|
88
|
+
}, [
|
|
89
|
+
innerRef
|
|
90
|
+
]);
|
|
91
|
+
// Effect for updating attributes
|
|
92
|
+
hooks_module_y(()=>{
|
|
93
|
+
if (!elementRef.current) return;
|
|
94
|
+
applyAttributes(elementRef.current, stableAttributes);
|
|
95
|
+
}, [
|
|
96
|
+
stableAttributes
|
|
97
|
+
]);
|
|
98
|
+
return /*#__PURE__*/ jsxRuntime_module_u(Container, {
|
|
99
|
+
ref: containerRef
|
|
100
|
+
});
|
|
101
|
+
};
|
|
102
|
+
function useAttributes(current) {
|
|
103
|
+
const stableRef = hooks_module_A(current);
|
|
104
|
+
const keysRef = hooks_module_A(Object.keys(current));
|
|
105
|
+
const prev = stableRef.current;
|
|
106
|
+
const prevKeys = keysRef.current;
|
|
107
|
+
const currentKeys = Object.keys(current);
|
|
108
|
+
// Fast path: same number of keys and all values match
|
|
109
|
+
if (currentKeys.length === prevKeys.length && currentKeys.every((key)=>current[key] === prev[key])) {
|
|
110
|
+
return stableRef.current;
|
|
111
|
+
}
|
|
112
|
+
// Values changed, update references
|
|
113
|
+
stableRef.current = current;
|
|
114
|
+
keysRef.current = currentKeys;
|
|
115
|
+
return stableRef.current;
|
|
116
|
+
}
|
|
117
|
+
const ATTRIBUTES_CONFIG = {
|
|
118
|
+
className: {
|
|
119
|
+
attributeName: "class",
|
|
120
|
+
forceAttribute: true
|
|
121
|
+
}
|
|
122
|
+
};
|
|
123
|
+
function applyAttributes(element, attributes) {
|
|
124
|
+
const propertiesToAssign = {};
|
|
125
|
+
for (const [key, value] of Object.entries(attributes)){
|
|
126
|
+
var _ATTRIBUTES_CONFIG_key, _config_attributeName;
|
|
127
|
+
const config = (_ATTRIBUTES_CONFIG_key = ATTRIBUTES_CONFIG[key]) != null ? _ATTRIBUTES_CONFIG_key : {};
|
|
128
|
+
if (config.skip) continue;
|
|
129
|
+
const attributeName = (_config_attributeName = config.attributeName) != null ? _config_attributeName : key;
|
|
130
|
+
// Some attributes like 'class' must use setAttribute
|
|
131
|
+
if (config.forceAttribute) {
|
|
132
|
+
if (value == null) {
|
|
133
|
+
element.removeAttribute(attributeName);
|
|
134
|
+
} else {
|
|
135
|
+
element.setAttribute(attributeName, String(value));
|
|
136
|
+
}
|
|
137
|
+
continue;
|
|
138
|
+
}
|
|
139
|
+
// Use the original key for property assignment (e.g., 'className' not 'class')
|
|
140
|
+
const propertyName = key;
|
|
141
|
+
// Handle null/undefined - reset to default value
|
|
142
|
+
if (value == null) {
|
|
143
|
+
// Check if it's a boolean property to reset to false instead of empty string
|
|
144
|
+
if (typeof element[propertyName] === "boolean") {
|
|
145
|
+
propertiesToAssign[propertyName] = false;
|
|
146
|
+
} else {
|
|
147
|
+
propertiesToAssign[propertyName] = "";
|
|
148
|
+
}
|
|
149
|
+
continue;
|
|
150
|
+
}
|
|
151
|
+
const stringValue = String(value);
|
|
152
|
+
if (element.getAttribute(propertyName) !== stringValue) {
|
|
153
|
+
propertiesToAssign[propertyName] = value;
|
|
154
|
+
}
|
|
155
|
+
}
|
|
156
|
+
// Apply all properties at once
|
|
157
|
+
Object.assign(element, propertiesToAssign);
|
|
158
|
+
}
|
|
159
|
+
const Container = styled("div", {
|
|
160
|
+
base: {
|
|
161
|
+
display: "contents"
|
|
162
|
+
}
|
|
163
|
+
});
|
|
164
|
+
Container.displayName = "Container";
|
|
165
|
+
|
|
166
|
+
export { Persisted };
|