@riverbankcms/sdk 0.152.0 → 0.154.0
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/CHANGELOG.md +15 -0
- package/dist/{EventEmbeddedCheckoutStep-DVQXWFm6.mjs → EventEmbeddedCheckoutStep-ba9npQtb.mjs} +1 -1
- package/dist/{PreviewEditorSidebar-Dr4NJi3Q.mjs → PreviewEditorSidebar-C7FiaxlF.mjs} +194 -22
- package/dist/{PreviewEditorUI-DSZXQbyh.mjs → PreviewEditorUI-DFst50q1.mjs} +20 -44
- package/dist/{SdkPreviewModeRuntime-Dl4GyMc3.mjs → SdkPreviewModeRuntime-BUNV_YHZ.mjs} +266 -143
- package/dist/{SiteChromeCustomizeContext-DgBe-FlM.mjs → SiteChromeCustomizeContext-DEj7qppF.mjs} +5340 -4329
- package/dist/{ThemedButton-B8ViBnLK.mjs → ThemedButton-C8kzu0hY.mjs} +610 -116
- package/dist/_dts/ai/src/contracts/proposals.d.ts +416 -182
- package/dist/_dts/ai/src/contracts/siteStyleProposalSchemas.d.ts +3270 -8214
- package/dist/_dts/api/src/billing.d.ts +2 -0
- package/dist/_dts/api/src/billingEndpointDefinitions.d.ts +78 -0
- package/dist/_dts/api/src/bookingAdjustments.d.ts +3 -2
- package/dist/_dts/api/src/bookingOperations.d.ts +7 -2
- package/dist/_dts/api/src/bookingPeople.d.ts +19 -0
- package/dist/_dts/api/src/bookingPeopleEndpointDefinitions.d.ts +8 -0
- package/dist/_dts/api/src/bookingRecords.d.ts +4 -106
- package/dist/_dts/api/src/bookings.d.ts +2 -3
- package/dist/_dts/api/src/communications.d.ts +19 -5
- package/dist/_dts/api/src/contentRuntime.d.ts +1 -0
- package/dist/_dts/api/src/endpoints.d.ts +88 -43
- package/dist/_dts/api/src/index.d.ts +4 -2
- package/dist/_dts/api/src/indexCoreTypes.d.ts +1 -0
- package/dist/_dts/api/src/indexExtendedTypes.d.ts +1 -1
- package/dist/_dts/api/src/moneyPayments.d.ts +116 -0
- package/dist/_dts/api/src/onboarding/surfaceData.d.ts +2 -0
- package/dist/_dts/api/src/sdk-event-upsert.d.ts +2 -2
- package/dist/_dts/api/src/sdkThemeWire.d.ts +348 -1537
- package/dist/_dts/api/src/shared-contracts.d.ts +10 -0
- package/dist/_dts/api/src/siteInfrastructure.d.ts +2 -1
- package/dist/_dts/api/src/sitePlatformEndpoints.d.ts +18 -0
- package/dist/_dts/api/src/siteRuntimeEndpoints.d.ts +17 -16
- package/dist/_dts/api/src/siteSettings.d.ts +1 -0
- package/dist/_dts/api/src/stripeConnectSetup.d.ts +90 -0
- package/dist/_dts/api/src/teamMembers.d.ts +2 -27
- package/dist/_dts/api/src/types.d.ts +11 -31
- package/dist/_dts/api/src/wholeSeriesRuns.d.ts +2 -4
- package/dist/_dts/block-form/src/widgets/RepeaterField/components/layoutGridDomain.d.ts +3 -13
- package/dist/_dts/blocks/src/client/site-chrome.d.ts +1 -1
- package/dist/_dts/blocks/src/contracts/index.d.ts +1 -0
- package/dist/_dts/blocks/src/contracts/proof-block-islands.d.ts +8 -96
- package/dist/_dts/blocks/src/index.d.ts +1 -0
- package/dist/_dts/blocks/src/lib/media.d.ts +1 -0
- package/dist/_dts/blocks/src/lib/picsum.d.ts +2 -2
- package/dist/_dts/blocks/src/pageRendererContracts.d.ts +2 -1
- package/dist/_dts/blocks/src/primitives/content/components/RichText.d.ts +1 -1
- package/dist/_dts/blocks/src/primitives/content/primitives.d.ts +4 -1
- package/dist/_dts/blocks/src/primitives/layout/Section.d.ts +1 -0
- package/dist/_dts/blocks/src/system/blocks/events/event-calendar.d.ts +1 -1
- package/dist/_dts/blocks/src/system/blocks/events/eventSelectionFields.d.ts +2 -2
- package/dist/_dts/blocks/src/system/blocks/events/shared/fields.d.ts +0 -4
- package/dist/_dts/blocks/src/system/blocks/events/shared/index.d.ts +0 -1
- package/dist/_dts/blocks/src/system/blocks/events/shared/schemas.d.ts +276 -884
- package/dist/_dts/blocks/src/system/blocks/events/shared/types.d.ts +2 -2
- package/dist/_dts/blocks/src/system/blocks/form.d.ts +10 -0
- package/dist/_dts/blocks/src/system/blocks/image-gallery/fields.d.ts +1 -0
- package/dist/_dts/blocks/src/system/blocks/image-gallery.d.ts +6 -1
- package/dist/_dts/blocks/src/system/blocks/location-map.d.ts +2 -2
- package/dist/_dts/blocks/src/system/blocks/media-text.d.ts +92 -90
- package/dist/_dts/blocks/src/system/blocks/newsletter-signup.d.ts +12 -0
- package/dist/_dts/blocks/src/system/blocks/shared/teamMembers.d.ts +4 -7
- package/dist/_dts/blocks/src/system/blocks/site-footer-runtime-layout.d.ts +23 -0
- package/dist/_dts/blocks/src/system/blocks/site-footer-runtime-profile.d.ts +20 -0
- package/dist/_dts/blocks/src/system/blocks/site-footer-runtime.d.ts +17 -16
- package/dist/_dts/blocks/src/system/blocks/site-footer.d.ts +1 -1
- package/dist/_dts/blocks/src/system/blocks/team-members.d.ts +2 -2
- package/dist/_dts/blocks/src/system/customize/backgrounds.d.ts +6 -6
- package/dist/_dts/blocks/src/system/customize/facets.d.ts +75 -9
- package/dist/_dts/blocks/src/system/fields/backgroundContent.d.ts +377 -1
- package/dist/_dts/blocks/src/system/helpers/backgroundMedia.d.ts +6 -2
- package/dist/_dts/blocks/src/system/helpers/resolveBackground.d.ts +3 -3
- package/dist/_dts/blocks/src/system/layout/repeaterGrid.d.ts +12 -5
- package/dist/_dts/blocks/src/system/manifest/fieldValidation/index.d.ts +3 -3
- package/dist/_dts/blocks/src/system/manifest/schema.d.ts +48 -48
- package/dist/_dts/blocks/src/system/manifest/validation.d.ts +2 -0
- package/dist/_dts/blocks/src/system/node/fragments/index.d.ts +1 -0
- package/dist/_dts/blocks/src/system/node/fragments/lookSlot.d.ts +1 -1
- package/dist/_dts/blocks/src/system/node/fragments/responsiveTwoColumn.d.ts +3 -1
- package/dist/_dts/blocks/src/system/node/fragments/sectionHead.d.ts +15 -0
- package/dist/_dts/blocks/src/system/runtime/components/registry.client.d.ts +18 -198
- package/dist/_dts/blocks/src/system/runtime/components/runtime-backed-blocks.d.ts +9 -99
- package/dist/_dts/blocks/src/system/runtime/hooks/useBookingFlowController.d.ts +1 -1
- package/dist/_dts/blocks/src/system/runtime/hooks/useHeadlessBookingFlow.d.ts +2 -0
- package/dist/_dts/blocks/src/system/runtime/lookSurfaces.d.ts +18 -6
- package/dist/_dts/blocks/src/system/runtime/nodes/ImageResolveContext.d.ts +1 -1
- package/dist/_dts/blocks/src/system/runtime/nodes/appointment-services.d.ts +50 -202
- package/dist/_dts/blocks/src/system/runtime/nodes/basic.d.ts +2 -1
- package/dist/_dts/blocks/src/system/runtime/nodes/booking-form.headless.state.d.ts +28 -1
- package/dist/_dts/blocks/src/system/runtime/nodes/event-details/lookPresentation.d.ts +12 -6
- package/dist/_dts/blocks/src/system/runtime/nodes/event-details/presentation.d.ts +1 -1
- package/dist/_dts/blocks/src/system/runtime/nodes/events/domain/dates.d.ts +1 -1
- package/dist/_dts/blocks/src/system/runtime/nodes/events/shared/CardListItem.d.ts +1 -1
- package/dist/_dts/blocks/src/system/runtime/nodes/events/shared/eventCollectionContract.d.ts +289 -885
- package/dist/_dts/blocks/src/system/runtime/nodes/file-download.d.ts +3 -2
- package/dist/_dts/blocks/src/system/runtime/nodes/form.fields.d.ts +5 -2
- package/dist/_dts/blocks/src/system/runtime/nodes/form.interactive.d.ts +11 -79
- package/dist/_dts/blocks/src/system/runtime/nodes/form.parts.d.ts +7 -0
- package/dist/_dts/blocks/src/system/runtime/nodes/form.server.d.ts +2 -13
- package/dist/_dts/blocks/src/system/runtime/nodes/media.d.ts +22 -90
- package/dist/_dts/blocks/src/system/runtime/nodes/mediaContext.d.ts +69 -0
- package/dist/_dts/blocks/src/system/runtime/nodes/newsletter-form.interactive.d.ts +8 -72
- package/dist/_dts/blocks/src/system/runtime/nodes/newsletter-form.parts.d.ts +6 -6
- package/dist/_dts/blocks/src/system/runtime/nodes/newsletter-form.types.d.ts +3 -2
- package/dist/_dts/blocks/src/system/runtime/nodes/shared/contract-schemas.d.ts +2 -2
- package/dist/_dts/blocks/src/system/transforms/registry/_utils/surfaceForegroundStyles.d.ts +3 -0
- package/dist/_dts/blocks/src/system/transforms/registry/footerArrangement.d.ts +6 -0
- package/dist/_dts/blocks/src/system/transforms/registry/index.d.ts +1 -0
- package/dist/_dts/blocks/src/system/transforms/registry/layout.d.ts +0 -11
- package/dist/_dts/blocks/src/system/transforms/registry/links.d.ts +3 -3
- package/dist/_dts/blocks/src/system/transforms/typed.d.ts +1 -10
- package/dist/_dts/commerce/src/purchase/orderConfirmationPlanning.d.ts +1 -0
- package/dist/_dts/content-editor/src/FooterComposerOverview.d.ts +5 -2
- package/dist/_dts/content-editor/src/FooterComposerPanel.d.ts +1 -1
- package/dist/_dts/content-editor/src/FooterNavigationLayoutControl.d.ts +6 -3
- package/dist/_dts/content-editor/src/controller/editorLeaseParticipation.d.ts +1 -1
- package/dist/_dts/content-editor/src/footerComposer.d.ts +2 -1
- package/dist/_dts/content-editor/src/footerComposerPanelTypes.d.ts +3 -1
- package/dist/_dts/content-editor/src/footerNavigationLayoutState.d.ts +56 -0
- package/dist/_dts/content-editor/src/footerPreviewRuntime.d.ts +2 -1
- package/dist/_dts/content-editor/src/useFooterComposerState.d.ts +3 -4
- package/dist/_dts/content-editor/src/useFooterNavigationLayout.d.ts +11 -8
- package/dist/_dts/content-model/src/content-types/schema.d.ts +3 -3
- package/dist/_dts/core/src/booking-refunds.d.ts +2 -0
- package/dist/_dts/core/src/date-display.d.ts +85 -0
- package/dist/_dts/core/src/date-time-formatter.d.ts +2 -0
- package/dist/_dts/core/src/footer-arrangement.d.ts +8 -1
- package/dist/_dts/core/src/footer-composition-types.d.ts +6 -1
- package/dist/_dts/core/src/footer-composition.d.ts +1 -1
- package/dist/_dts/core/src/footer-navigation-layout.d.ts +3 -0
- package/dist/_dts/core/src/index.d.ts +2 -0
- package/dist/_dts/core/src/mailing-list-runtime.d.ts +2 -2
- package/dist/_dts/core/src/mailing-list-setup-parser.d.ts +9 -1
- package/dist/_dts/core/src/mailing-list-setup.d.ts +12 -1
- package/dist/_dts/core/src/mailing-list-submission.d.ts +7 -2
- package/dist/_dts/core/src/mailing-list-targeting.d.ts +9 -1
- package/dist/_dts/core/src/public-profile.d.ts +3 -1
- package/dist/_dts/core/src/scheduled-date-time.d.ts +69 -0
- package/dist/_dts/db/src/generated/supabase/database.types.d.ts +105 -13
- package/dist/_dts/db/src/schemas/forms.d.ts +16 -16
- package/dist/_dts/editor-blocks/src/index.d.ts +1 -0
- package/dist/_dts/editor-blocks/src/media/MediaField.d.ts +2 -2
- package/dist/_dts/editor-blocks/src/media/admitEditorMediaField.d.ts +4 -0
- package/dist/_dts/editor-blocks/src/widgets/mailing-list-targeting/targetingState.d.ts +2 -2
- package/dist/_dts/media-core/src/assetsInUseSummary.d.ts +6 -0
- package/dist/_dts/media-core/src/contentMediaAudit.d.ts +3 -2
- package/dist/_dts/media-core/src/index.d.ts +4 -0
- package/dist/_dts/media-core/src/media.d.ts +406 -0
- package/dist/_dts/media-core/src/mediaIdentifierSchema.d.ts +3 -0
- package/dist/_dts/media-core/src/mediaKinds.d.ts +2 -0
- package/dist/_dts/media-core/src/mediaUsageProjection.d.ts +13 -1
- package/dist/_dts/media-core/src/mediaWriteNormalizer.d.ts +2 -6
- package/dist/_dts/media-core/src/portableMediaReferences.d.ts +8 -21
- package/dist/_dts/media-core/src/renderableMediaAsset.d.ts +28 -14
- package/dist/_dts/media-core/src/renderableMediaAssetAdmission.d.ts +15 -0
- package/dist/_dts/media-editor/src/CropDialog.d.ts +6 -3
- package/dist/_dts/media-editor/src/MediaEditor.d.ts +2 -1
- package/dist/_dts/media-editor/src/MediaPreview.d.ts +3 -3
- package/dist/_dts/media-editor/src/cropEditorSource.d.ts +5 -7
- package/dist/_dts/media-editor/src/editorMediaState.d.ts +29 -0
- package/dist/_dts/media-editor/src/mediaSelection.d.ts +1 -2
- package/dist/_dts/media-editor/src/runtimeMediaAssetState.d.ts +4 -5
- package/dist/_dts/media-editor/src/types.d.ts +1 -1
- package/dist/_dts/media-editor/src/utils.d.ts +0 -1
- package/dist/_dts/media-react/src/components/cropChangePolicy.d.ts +4 -1
- package/dist/_dts/media-react/src/components/cropGeometry.d.ts +1 -0
- package/dist/_dts/media-react/src/components/useImageCropperController.d.ts +1 -0
- package/dist/_dts/preview-next/src/client/blocks/ArrangementBlockToolbar.d.ts +2 -1
- package/dist/_dts/preview-next/src/client/blocks/BlockBackgroundChooser.d.ts +2 -1
- package/dist/_dts/preview-next/src/client/blocks/previewCustomizeSelectedMedia.d.ts +11 -12
- package/dist/_dts/preview-next/src/client/preview/PreviewShell.d.ts +1 -0
- package/dist/_dts/preview-next/src/client/preview/PreviewShellLayout.d.ts +1 -0
- package/dist/_dts/preview-next/src/client/preview/SiteChromeCustomizeContext.d.ts +4 -1
- package/dist/_dts/preview-next/src/client/preview/siteChromeSavePlan.d.ts +27 -5
- package/dist/_dts/preview-next/src/client/preview/siteStylePreviewPlanner.d.ts +2 -0
- package/dist/_dts/preview-next/src/client/preview/useConfirmedPreferenceRecord.d.ts +12 -0
- package/dist/_dts/preview-next/src/client/preview/usePersistedFooterPreferences.d.ts +26 -0
- package/dist/_dts/preview-next/src/client/preview/usePersistedHeaderPreferences.d.ts +40 -2
- package/dist/_dts/sdk/src/config/validation.d.ts +3 -3
- package/dist/_dts/sdk/src/contracts/content.d.ts +2 -45
- package/dist/_dts/sdk/src/contracts/index.d.ts +1 -1
- package/dist/_dts/sdk/src/contracts/rendering.d.ts +3 -3
- package/dist/_dts/sdk/src/contracts/system-block-content.d.ts +4 -46
- package/dist/_dts/sdk/src/date-time/index.d.ts +2 -68
- package/dist/_dts/sdk/src/index.d.ts +1 -0
- package/dist/_dts/sdk/src/public-api/contracts.d.ts +1 -0
- package/dist/_dts/sdk/src/rendering/image.d.ts +5 -5
- package/dist/_dts/sdk/src/rendering/index.d.ts +2 -1
- package/dist/_dts/sdk/src/rendering/islands/types.d.ts +1 -1
- package/dist/_dts/sdk/src/rendering/link.d.ts +3 -7
- package/dist/_dts/sdk/src/rendering/mediaAssets.d.ts +2 -4
- package/dist/_dts/sdk/src/version.d.ts +1 -1
- package/dist/_dts/theme-core/src/accordions/types.d.ts +1 -1
- package/dist/_dts/theme-core/src/boxBackgroundSchema.d.ts +397 -26
- package/dist/_dts/theme-core/src/buttons/buttonColourContract.d.ts +2 -0
- package/dist/_dts/theme-core/src/buttons/resolveButtonColourStates.d.ts +2 -0
- package/dist/_dts/theme-core/src/buttons/styles/recipes/lanternRecipes.d.ts +60 -0
- package/dist/_dts/theme-core/src/buttons/styles/registry.d.ts +57 -0
- package/dist/_dts/theme-core/src/buttons/styles/selection.d.ts +10 -1
- package/dist/_dts/theme-core/src/buttons/types.d.ts +378 -66
- package/dist/_dts/theme-core/src/buttons/typography.d.ts +24 -0
- package/dist/_dts/theme-core/src/cards/types.d.ts +42 -42
- package/dist/_dts/theme-core/src/footer/effectiveNavLinkStyle.d.ts +1 -1
- package/dist/_dts/theme-core/src/footer/generateFooterCss.d.ts +4 -1
- package/dist/_dts/theme-core/src/footer/mode.d.ts +2 -11
- package/dist/_dts/theme-core/src/generated/containerResponsiveThemeCss.d.ts +1 -1
- package/dist/_dts/theme-core/src/inputs/types.d.ts +3 -3
- package/dist/_dts/theme-core/src/lib/media.d.ts +2 -616
- package/dist/_dts/theme-core/src/mock-themes/all.d.ts +495 -2766
- package/dist/_dts/theme-core/src/navigation/types.d.ts +4 -4
- package/dist/_dts/theme-core/src/palette/curated/types.d.ts +1 -1
- package/dist/_dts/theme-core/src/schema.d.ts +838 -3369
- package/dist/_dts/theme-core/src/site-styles/appearancePresetTypes.d.ts +23 -7
- package/dist/_dts/theme-core/src/site-styles/backgroundAppearance.d.ts +2 -2
- package/dist/_dts/theme-core/src/site-styles/compilationPlan.d.ts +4 -6
- package/dist/_dts/theme-core/src/site-styles/compileFooterAgainstRow.d.ts +121 -0
- package/dist/_dts/theme-core/src/site-styles/curatedSiteStyles.d.ts +25 -0
- package/dist/_dts/theme-core/src/site-styles/footerLookDefaults.d.ts +45 -0
- package/dist/_dts/theme-core/src/site-styles/footerLookRecipe.d.ts +50 -0
- package/dist/_dts/theme-core/src/site-styles/footerLooks.d.ts +9 -35
- package/dist/_dts/theme-core/src/site-styles/footerPreferences.d.ts +29 -0
- package/dist/_dts/theme-core/src/site-styles/headerPreferencesPersistence.d.ts +2 -3
- package/dist/_dts/theme-core/src/site-styles/index.d.ts +4 -0
- package/dist/_dts/theme-core/src/site-styles/lookResolution.d.ts +2 -2
- package/dist/_dts/theme-core/src/site-styles/previewCompiler.d.ts +1 -1
- package/dist/_dts/theme-core/src/site-styles/runtimeBackgroundResolution.d.ts +9 -9
- package/dist/_dts/theme-core/src/site-styles/siteChromeBackgrounds.d.ts +8 -0
- package/dist/_dts/theme-core/src/site-styles/styleTags.d.ts +1 -1
- package/dist/_dts/theme-core/src/site-styles/themeParity.d.ts +1 -1
- package/dist/_dts/theme-core/src/site-styles/tokenRecipes.d.ts +2 -2
- package/dist/_dts/theme-core/src/styles/skinTokens.d.ts +2 -2
- package/dist/_dts/theme-core/src/typography/schema.d.ts +2 -2
- package/dist/_dts/ui/src/card.d.ts +1 -1
- package/dist/client/{BookingMailingListNote-CBuMKN0w.mjs → BookingMailingListNote-CNoSqFtf.mjs} +2 -2
- package/dist/client/{CardListItem-Dc9XTXhB.mjs → CardListItem-BkTkqBkh.mjs} +5 -4
- package/dist/client/{CheckboxChoice-CIqx_o0E.mjs → CheckboxChoice-CHJpsty4.mjs} +1 -1
- package/dist/client/{DemoBookingPortalAccess-D3VQ_kLj.mjs → DemoBookingPortalAccess-C7KQKFNt.mjs} +2 -2
- package/dist/client/{EventCombined.client-BHGEKise.mjs → EventCombined.client-BgeYMjHJ.mjs} +5 -6
- package/dist/client/{EventEmbeddedCheckoutStep-Bo1Cm23R.mjs → EventEmbeddedCheckoutStep-BTc_lTkM.mjs} +2 -2
- package/dist/client/{EventListing.client-D5OQgVPr.mjs → EventListing.client-ChRs9Hl2.mjs} +2 -2
- package/dist/client/{LeafletStaticMap-CLL5cWrr.mjs → LeafletStaticMap-C_dNQgd0.mjs} +1 -1
- package/dist/client/{RichText-BoDmnopf.mjs → RichText-BI9bzbjo.mjs} +106 -60
- package/dist/client/{ThemedButton-Ciltp0IK.mjs → ThemedButton-wl3Z3wkH.mjs} +1 -2
- package/dist/client/{accordion-DOkRS64-.mjs → accordion-6Yz8Wd83.mjs} +1 -1
- package/dist/client/{bookingForm-wlMVwo9h.mjs → bookingForm-i_pKIGiY.mjs} +42 -15
- package/dist/client/bookings.mjs +118357 -22833
- package/dist/client/{carousel-CGWk-Z0u.mjs → carousel-DNqd_PjC.mjs} +2 -2
- package/dist/client/{carousel.client-kX5mN1Eg.mjs → carousel.client-BUgjPbb6.mjs} +1 -1
- package/dist/client/{cart-OBBPlaH4.mjs → cart-D8OBHuF4.mjs} +3 -3
- package/dist/client/{checkout-Bmw2WjQX.mjs → checkout-F3-9IGLU.mjs} +3 -3
- package/dist/client/client.mjs +20785 -19238
- package/dist/client/{context-BI77UFAn.mjs → context-Dg4ZrxDD.mjs} +1 -1
- package/dist/client/{eventCalendar-qkej2Edn.mjs → eventCalendar-BUc7YIBM.mjs} +8 -9
- package/dist/client/{eventCombined-DApKHvat.mjs → eventCombined-BwfShk2a.mjs} +4 -4
- package/dist/client/{eventDetails-BQyUDPH0.mjs → eventDetails-BMOVC3go.mjs} +3 -3
- package/dist/client/{eventListing-CeAnshlZ.mjs → eventListing-BwE9PM-t.mjs} +4 -4
- package/dist/client/{eventRegistration-C3A3NyBO.mjs → eventRegistration-CCWPYDc7.mjs} +10 -10
- package/dist/client/{form-DW8rU7jO.mjs → form-CXFr0Gd5.mjs} +115 -52
- package/dist/client/{headerSection-CkIhsoNm.mjs → headerSection-BX8qw8kH.mjs} +3 -3
- package/dist/client/hooks.mjs +17908 -16797
- package/dist/client/{locationMap-D4O8wbli.mjs → locationMap-B3La71m0.mjs} +3 -4
- package/dist/client/{media-C5K_0xPd.mjs → media-B1Cbv721.mjs} +183 -362
- package/dist/client/mediaContext-CwbbimYB.mjs +135 -0
- package/dist/client/{newsletterForm-B7IxSPuz.mjs → newsletterForm-DnGyR0x7.mjs} +51 -15
- package/dist/client/{productDetail-Bqxpwy5N.mjs → productDetail-BVgTqvkb.mjs} +3 -3
- package/dist/client/{productList-u9Lz8V15.mjs → productList-CcO7kUQw.mjs} +3 -3
- package/dist/client/{propsDecoder-Bf1jucUp.mjs → propsDecoder-B1OeWavE.mjs} +2193 -374
- package/dist/client/renderableMediaAssetAdmission-CHkXYDC_.mjs +143 -0
- package/dist/client/rendering/client.mjs +22424 -21488
- package/dist/client/rendering/islands.mjs +20 -23
- package/dist/client/rendering.mjs +21025 -19413
- package/dist/client/{routeIslandApiConfig-BgP-aPMl.mjs → routeIslandApiConfig-Dl4vglJm.mjs} +1 -1
- package/dist/client/{shop-B_eykR-_.mjs → shop-P72nX5Fs.mjs} +7 -7
- package/dist/client/{shop-commerce-CT0APkFV.mjs → shop-commerce-Bt7uraDx.mjs} +8 -8
- package/dist/client/{shop-commerce-store-DcvZxdEK.mjs → shop-commerce-store-C1-mxSye.mjs} +1 -1
- package/dist/client/{shopShared-BVJOiUiJ.mjs → shopShared-Db-cRGu3.mjs} +5 -5
- package/dist/client/{useDiscountCodeUi-DPmYDunz.mjs → useDiscountCodeUi-jvAiUoUX.mjs} +1 -1
- package/dist/client/{useEventPagination-8-U55vH5.mjs → useEventPagination-BdWpCniq.mjs} +6 -7
- package/dist/preview-next/before-render.mjs +222 -55
- package/dist/preview-next/client/runtime.mjs +3 -3
- package/dist/preview-next/editor-chrome.css +5 -2
- package/dist/preview-next/keepAlive.mjs +133 -51
- package/dist/preview-next/middleware.mjs +133 -51
- package/dist/{sdk-runtime-C5jPdSrk.mjs → sdk-runtime-DLhjF2Nw.mjs} +1 -1
- package/dist/server/components.mjs +21541 -20118
- package/dist/server/config-validation.mjs +2466 -1403
- package/dist/server/config.mjs +2466 -1403
- package/dist/server/data.mjs +17842 -16759
- package/dist/server/date-time.mjs +258 -116
- package/dist/server/index.mjs +360 -53
- package/dist/server/next.mjs +21913 -20539
- package/dist/server/page-converter.mjs +8121 -7322
- package/dist/server/prebuild.mjs +1 -1
- package/dist/server/rendering/server.mjs +21196 -19760
- package/dist/server/rendering.mjs +21554 -20123
- package/dist/server/routing.mjs +19806 -18607
- package/dist/server/server.mjs +2907 -1845
- package/dist/server/theme-bridge.mjs +991 -160
- package/dist/server/theme.mjs +501 -100
- package/dist/{spinner-B-ab2rJp.mjs → spinner-MTooKfck.mjs} +1 -1
- package/dist/styles/index.css +254 -1
- package/package.json +1 -1
- package/dist/_dts/blocks/src/system/blocks/events/shared/layout.d.ts +0 -12
- package/dist/client/aspectTransforms-D-TnDdq4.mjs +0 -93
- package/dist/client/colorStyles-ECDNPE_P.mjs +0 -1253
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
"use client";
|
|
2
|
-
import { G as corners, H as parseThemeForPersistence,
|
|
2
|
+
import { $n as renderableMediaAssetSchema$1, Cn as defaultThemeTokens, G as corners, H as parseThemeForPersistence, Ii as __exportAll, Or as makeBoundaryId, Qn as buildRenderableMediaAssetIndex, Un as paletteColorsSchema, Wn as paletteModeSchema, Xt as resolveSurface, _r as assertNever$1, _t as stripStaleTransitionStyleGroup, an as textColorStyle, bi as parseSiteId, er as indexRenderableMediaAssets, gr as asSiteStyleId, lr as asDesignBlockId, mr as asLayoutVariantKey, nr as mediaIdentifierSchema$2, pt as isThemeV2NormalEditorRawStyleFieldName, tr as resolveManagedMediaReference, ui as expectParsedBrandedId } from "./ThemedButton-C8kzu0hY.mjs";
|
|
3
3
|
import { i as useOptionalPreviewLayout, t as PreviewQueryProvider } from "./PreviewQueryProvider-AR9eEn7j.mjs";
|
|
4
|
-
import { $ as
|
|
4
|
+
import { $ as defaultBackgroundOverrideForMode, $i as defineFragment, $n as createSnapshotFromPageRecord, $o as baselineRevisionOf, $r as normalizeOfferingsPreviewItemLimit, $t as MediaField, Ai as resolveImageUrlWithContext, An as unmapValueFromSelect, Ar as SITE_CHROME_VISIBLE_HEADER_SELECTOR, At as createPageSurfaceEditorServices, B as arrangementBlockControlsFor, Ba as deriveSectionGround, Bi as blogFeaturedPostFragment, Br as systemCustomizeFacetDefinitionsForBlock, Bt as SiteOptionWidgetProvider, Ci as coerceInlineTextWithFallback, Cn as ImageResolveContextProvider, Cr as resolveSdkFooterMode, Ct as EditableBlockProvider, Da as arrangementSlotNames, Di as LINKED_CONTENT_ENTRY_META_KEY, Dn as hasEmptyOption, Dr as normalizeBlockContent, Ei as plainTextToInlineText, En as useSdkConfig, Eo as Upload, Er as getBlockDefinition, Et as useEntryEditorController, Fa as sectionFactsForContent, Fi as richTextFragment, Fn as stripTopLevelRoutingUi, Fr as compileManifestContentContract, Ft as EditLeaseModal, G as PreviewDesignHistoryOrderProvider, Gi as testimonialsHeadingFragment, Gn as ApiRequestError, Gr as getResponsiveScopeSpec, Gt as MailingListTargetingProvider, H as nextArrangementLookPin, Ha as resolveSectionBackground, Hi as formEmbedFragment, Ho as Image, Hr as systemCustomizeFacetNextValue, Ht as OfferingsPreviewWidgetProvider, Ia as defaultSectionTransitionVariantForFamily, Ii as headingFragment, In as evaluateVisibility, Ir as validateManifestDraft, It as EditorWriteSurface, Ja as SelectItem, Ji as ctaRowFragment, Jn as SURFACE_DOCUMENT_DATA_ATTRIBUTE, Jr as getDefaultComponentRegistry, Jt as EntryPickerField, Ka as Select, Ki as ctaCopyFragment, Ko as ChevronRight, Kr as escapeStyleContent, Kt as InlineTextField, La as sectionTransitionFamilies, Li as cardFragment, Ln as getFieldIntent, Lr as resolveArrangementKnobs, Lt as createSiteOptionApiLoader, Ma as formatSiteChromeBackgroundTokenLabel, Mi as buildResolveImageUrlContext, Mn as useField, Mo as SlidersHorizontal, Mr as planSiteOverlayHeaderClearance, Mt as VIEWING_PARTICIPATION, Na as boundaryLayout, Ni as getCurrentResolveImageUrlContext, Nn as hideThemeV2RawStyleFields, No as RotateCcw, Nr as visibleHeaderClearancePx, Oa as resolveItemSurface, Oi as coerceLinkedContentEntriesPayload, On as mapCurrentValueForSelect, Or as offeringsPreviewBlockDefinition, Pa as composeBoundary, Pi as setContextResolveImageUrlContext, Pn as prepareBlockEditorManifest, Pr as parseStoredVariant, Pt as EditLeaseDiscardedNotice, Q as canCycleBackgroundOverrideValue, Qi as runTransforms, Qn as createRoutingHelpers, Qo as cn, Qr as buildOfferingsPreviewRenderStates, Qt as FileField, Ra as sectionTransitionFamilyForBoundaryOptionId, Ri as faqAccordionFragment, Rn as isHeaderField, Rr as systemCustomizeFacetAppliesToLayoutVariant, Rt as createSiteOptionWidgetAdapters, Sa as deriveSiteStyleBlockPolicy, Si as planSiteChromePlacement, Sn as clientComponentRegistry, Sr as containerResponsiveThemeCss, St as useUISelector, Ti as isInlineTextEmpty, Tn as SdkConfigProvider, To as X, Tr as makeDefaultBlockComponent, U as PreviewPageDesignEditorStateProvider, Ui as formCopyFragment, Un as blocksKeys, Uo as GripVertical, Ur as buildThemeRuntime, Ut as MailingListTargetingField, V as arrangementOwnedFieldIds, Va as parseCanonicalRuntimeBackground, Vi as singleButtonFragment, Vo as Info, Vr as systemCustomizeFacetLabelForValue, Vt as OfferingsPreviewGroupOrderField, W as usePreviewPageDesignEditorState, Wi as testimonialsCarouselFragment, Wn as getBlockManifestFromSdkConfig, Wr as DEFAULT_THEME_RESPONSIVE_MODE, Wt as loadMailingListAuthoringContext, Xa as SelectValue, Xi as ctaButton, Xn as resolveSurfaceDocumentAttributes, Xo as Button, Xr as buildItemDataMap, Xt as ButtonVariantField, Ya as SelectTrigger, Yi as heroCopyFragment, Yn as SURFACE_IDS, Yr as buildOfferingsCatalogueState, Yt as EntryPickerWidgetProvider, Z as backgroundColorTokens, Zi as bodyCopyFragment, Zn as API_ENDPOINTS, Zr as OFFERINGS_PREVIEW_EVENT_PRESET_DEFINITIONS, Zt as ButtonWidgetProvider, _i as resolveEntryRouteTarget, _n as DEFAULT_LAUNCH_READINESS_INPUT, _r as resolveRenderedValues, _t as PreviewRichTextEditor, aa as compileEditorModelRuntime, ai as parseGeneratedIconSetId, an as EditorProvider, ao as TabsContent, as as parseMailingListPlacementTargeting, at as rankBackgroundImagePoolItems, ba as GRADIENT_PRESETS, bi as isObjectRecord, bn as useMediaEditorOptional, br as isSupportedLoaderEndpoint, bt as PREVIEW_EDITABLE_OUTLINE, c as PreviewThemeOverlayProvider, ca as arrangementManifestFromVariants, ci as Text$1, cn as LinkWidgetProvider, co as Dialog, cr as useEditorUiStore, cs as readEditorBlockVersionsFromPlacement, ct as createGuardedPreviewApiClient, da as resolveModeArrangement, di as siblingPath, dn as usePalette, do as DialogFooter, dt as renewPreviewSession, ea as bindingSchema, ei as resolveOfferingsPreviewGroups, en as ReferenceField, es as isEdited, et as enabledBackgroundModes, fa as resolvePublishedLook, fi as defaultTransforms, fo as DialogHeader, fr as activeLinkedSaveHandover, ft as usePreviewAuth, gi as isRichTextDoc, gn as decodePublicProductCategorySelectorQuery, gr as renderedFieldChanges, ha as getCuratedSiteStyle, hi as bookingConsentCarrierSchema, hn as MediaEditor, hr as renderSourceFor, hs as assertNever$2, ht as renderSiteChromeBlock, ia as applyCompiledRuntimeFieldsToContent, ii as parseGeneratedIconAssetId, in as RichTextWidgetProvider, io as Tabs, is as parseFooterModuleId, it as planBackgroundTransition, ji as SECTION_BACKGROUND_MIN_SOURCE_WIDTH, jn as FieldFrame, jr as SITE_OVERLAY_HEADER_CLEARANCE_CSS_VAR, jt as useRetentionTicks, ka as resolveLookSlotSurfaces, ki as getLinkedContentEntryMeta, kn as mapOptionValueForSelect, kr as projectRecurringSchedule, kt as createEditorApiClientFactory, l as usePreviewThemeOverlay, la as readStoredMode, li as RichText$1, lo as DialogContent, lr as useEditorUiStoreInstance, ls as selectedContentVersionId, lt as initPreviewAuth, ma as designRuntimeRulesForTheme, mi as publicEventsArraySchema, mn as createStoreBackend, mr as remoteDraftValues, ms as unsafeAsEditorBlockId, n as useSiteChromeCustomizeOptional, na as blockLookFromContent, nn as useRichTextImagePicker, ns as canEditorWrite, nt as parseBackgroundOverrideFromContent, o as PreviewDesignCoordinatorProvider, oi as renderInlineText, on as useEditor, oo as TabsList, os as sameMailingListPlacementTargeting, ot as resolveBackgroundCapability, pa as componentRuntimeRulesForTheme, pi as calendarWindowQuerySchema, pn as FormRenderer, po as DialogTitle, pr as planLinkedSaveHandoverRetention, pt as usePreviewToken, qa as SelectContent, qi as heroCtaRowFragment, qo as ChevronLeft, qr as mergeContentWithBlockStyleOverrides, qt as IconPickerField, ra as readBlockComposition, ri as parseBlockIconValue, rn as RichTextField, rr as parseReferenceKind, rs as buildMailingListSignupBlockSourceRef, rt as planBackgroundOverride, si as logger, sn as LinkField, so as TabsTrigger, sr as unwrapResponse, ss as NO_BLOCK_VERSIONS, st as resolvePreviewSidebarTab, t as SiteChromeCustomizeProvider, ta as arrangementHooksFromContent, ti as buildAppointmentServicesView, tn as ReferenceWidgetProvider, tr as BUILT_IN_REFERENCE_KINDS, tt as imagePoolForOverride, ua as resolveEffectiveArrangement, ui as getAtPath, un as PaletteProvider, uo as DialogDescription, ur as useOptionalEditorUiStoreInstance, us as parseEditLeaseScope, ut as registerPreviewRenewalFetcher, va as surfaceResolutionContextFromTheme, vi as resolvePageRouteTarget, vn as deriveLaunchReadiness, vt as PreviewInlineTextEditor, wi as inlineTextToPlainText, wn as BlockApiProvider, wr as createCustomBlockRegistry, wt as EntryControllerProvider, xa as getGradientPreset, xi as isRecord$8, xn as useApiMediaUploader, xr as ThemeScope, ya as gradientToCss, yi as resolveRouteTarget, yn as MediaEditorContextProvider, yr as unsafeAsLinkedContentEntryId, yt as PreviewTextEditor, z as arrangementBackgroundControlFor, za as sectionTransitionVariantForBoundaryOptionId, zi as faqHeadingFragment, zn as createManifestFormAdapter, zr as systemCustomizeFacetCurrentValue, zt as SiteOptionPickerField } from "./SiteChromeCustomizeContext-DEj7qppF.mjs";
|
|
5
5
|
import * as React$1 from "react";
|
|
6
6
|
import React, { Children, Fragment, cloneElement, createContext, isValidElement, useCallback, useContext, useEffect, useId, useLayoutEffect, useMemo, useReducer, useRef, useState } from "react";
|
|
7
7
|
import { Fragment as Fragment$1, jsx, jsxs } from "react/jsx-runtime";
|
|
@@ -960,10 +960,7 @@ function arrangementPhotoContent(content, knobs) {
|
|
|
960
960
|
}) };
|
|
961
961
|
}
|
|
962
962
|
function arrangementContentFacts(content) {
|
|
963
|
-
const
|
|
964
|
-
const background = isObjectRecord(section.background) ? section.background : {};
|
|
965
|
-
const itemPhotos = Array.isArray(content.cards) ? content.cards.filter((card) => isObjectRecord(card) && isObjectRecord(card.media)).length : 0;
|
|
966
|
-
const photoCount = Array.isArray(content.cards) ? itemPhotos : isObjectRecord(background.image) ? 1 : 0;
|
|
963
|
+
const photoCount = arrangementPhotoCount(content);
|
|
967
964
|
return {
|
|
968
965
|
photoCount,
|
|
969
966
|
facts: {
|
|
@@ -974,6 +971,13 @@ function arrangementContentFacts(content) {
|
|
|
974
971
|
}
|
|
975
972
|
};
|
|
976
973
|
}
|
|
974
|
+
/** The content stage owns media presence for every arrangement consumer. */
|
|
975
|
+
function arrangementPhotoCount(content) {
|
|
976
|
+
if (Array.isArray(content.cards)) return content.cards.filter((card) => isObjectRecord(card) && isObjectRecord(card.media)).length;
|
|
977
|
+
if (Array.isArray(content.images)) return content.images.filter((item) => isObjectRecord(item) && isObjectRecord(item.image)).length;
|
|
978
|
+
const section = isObjectRecord(content._sectionStyles) ? content._sectionStyles : {};
|
|
979
|
+
return isObjectRecord((isObjectRecord(section.background) ? section.background : {}).image) ? 1 : 0;
|
|
980
|
+
}
|
|
977
981
|
function effectiveContentKnobValue(blockKind, key, value) {
|
|
978
982
|
const facet = systemCustomizeFacetDefinitionsForBlock(blockKind).find((entry) => entry.target.kind === "content-field" && entry.target.field === key);
|
|
979
983
|
return facet?.target.kind === "content-field" && facet.target.boolean ? value === "true" : value;
|
|
@@ -3126,12 +3130,22 @@ function err(error) {
|
|
|
3126
3130
|
error
|
|
3127
3131
|
};
|
|
3128
3132
|
}
|
|
3133
|
+
const UUID_PATTERN = /^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$/i;
|
|
3134
|
+
function parseUuidBrand(value, unsafeConstructor) {
|
|
3135
|
+
if (typeof value !== "string") return err({ kind: "not_string" });
|
|
3136
|
+
const normalized = value.trim().toLowerCase();
|
|
3137
|
+
if (normalized.length === 0) return err({ kind: "empty_string" });
|
|
3138
|
+
if (!UUID_PATTERN.test(normalized)) return err({ kind: "invalid_uuid" });
|
|
3139
|
+
return ok(unsafeConstructor(normalized));
|
|
3140
|
+
}
|
|
3129
3141
|
const unsafeAsSiteId = (id) => id;
|
|
3142
|
+
const unsafeAsMediaAssetId = (id) => id;
|
|
3130
3143
|
const unsafeAsStorageBucketName = (value) => value;
|
|
3131
3144
|
const unsafeAsBookingSessionId = (id) => id;
|
|
3132
3145
|
const unsafeAsEntitlementId = (id) => id;
|
|
3133
3146
|
const unsafeAsSiteFontId = (id) => id;
|
|
3134
3147
|
const unsafeAsBookingRequirementId = (id) => id;
|
|
3148
|
+
const parseMediaAssetId = (value) => parseUuidBrand(value, unsafeAsMediaAssetId);
|
|
3135
3149
|
function fromArray(items) {
|
|
3136
3150
|
const [first, ...rest] = items;
|
|
3137
3151
|
if (first === void 0) return err("empty_array");
|
|
@@ -3612,6 +3626,129 @@ function parseCanonicalMediaIdentifier(value) {
|
|
|
3612
3626
|
});
|
|
3613
3627
|
return parsed;
|
|
3614
3628
|
}
|
|
3629
|
+
/** Strict stored-reference admission delegates the canonical identifier decision. */
|
|
3630
|
+
const mediaIdentifierSchema$1 = z.string().transform((value, context) => {
|
|
3631
|
+
const parsed = parseCanonicalMediaIdentifier(value);
|
|
3632
|
+
if (parsed.ok) return parsed.value;
|
|
3633
|
+
context.addIssue({
|
|
3634
|
+
code: "custom",
|
|
3635
|
+
message: "Expected a canonical media identifier"
|
|
3636
|
+
});
|
|
3637
|
+
return z.NEVER;
|
|
3638
|
+
});
|
|
3639
|
+
const mediaTypeDiscriminants = [
|
|
3640
|
+
"image",
|
|
3641
|
+
"video",
|
|
3642
|
+
"audio",
|
|
3643
|
+
"document",
|
|
3644
|
+
"spreadsheet",
|
|
3645
|
+
"archive"
|
|
3646
|
+
];
|
|
3647
|
+
const mediaAssetIdSchema = z.string().transform((value, context) => {
|
|
3648
|
+
const parsed = parseMediaAssetId(value);
|
|
3649
|
+
if (parsed.ok) return parsed.value;
|
|
3650
|
+
context.addIssue({
|
|
3651
|
+
code: "custom",
|
|
3652
|
+
message: "Expected a media asset ID"
|
|
3653
|
+
});
|
|
3654
|
+
return z.NEVER;
|
|
3655
|
+
});
|
|
3656
|
+
const nonemptyStorageValue = z.string().refine((value) => value.trim().length > 0);
|
|
3657
|
+
const renderableMediaAssetSchema = z.object({
|
|
3658
|
+
id: mediaAssetIdSchema,
|
|
3659
|
+
identifier: mediaIdentifierSchema$1,
|
|
3660
|
+
storageBucket: nonemptyStorageValue,
|
|
3661
|
+
storagePath: nonemptyStorageValue,
|
|
3662
|
+
mimeType: nonemptyStorageValue,
|
|
3663
|
+
filename: z.string().optional(),
|
|
3664
|
+
width: z.number().positive().nullable(),
|
|
3665
|
+
height: z.number().positive().nullable()
|
|
3666
|
+
});
|
|
3667
|
+
const hotspotSchema = z.object({
|
|
3668
|
+
x: z.number().min(0).max(1),
|
|
3669
|
+
y: z.number().min(0).max(1),
|
|
3670
|
+
radius: z.number().optional()
|
|
3671
|
+
});
|
|
3672
|
+
const rotationSchema = z.union([
|
|
3673
|
+
z.literal(0),
|
|
3674
|
+
z.literal(90),
|
|
3675
|
+
z.literal(180),
|
|
3676
|
+
z.literal(270)
|
|
3677
|
+
]);
|
|
3678
|
+
const rectSchema = z.tuple([
|
|
3679
|
+
z.number(),
|
|
3680
|
+
z.number(),
|
|
3681
|
+
z.number(),
|
|
3682
|
+
z.number()
|
|
3683
|
+
]);
|
|
3684
|
+
const aspectCropSchema = z.object({
|
|
3685
|
+
aspect: z.preprocess((value) => value == null ? void 0 : value, z.string().optional()),
|
|
3686
|
+
rect: z.preprocess((value) => value == null ? void 0 : value, rectSchema.optional()),
|
|
3687
|
+
hotspot: z.preprocess((value) => value == null ? void 0 : value, hotspotSchema.optional()),
|
|
3688
|
+
rotation: z.preprocess((value) => value == null ? void 0 : value, rotationSchema.optional())
|
|
3689
|
+
});
|
|
3690
|
+
const transformSchema = z.object({
|
|
3691
|
+
aspectCrops: z.preprocess((value) => {
|
|
3692
|
+
if (!value || typeof value !== "object" || Array.isArray(value)) return;
|
|
3693
|
+
return value;
|
|
3694
|
+
}, z.record(z.string(), aspectCropSchema.catch({}))).optional(),
|
|
3695
|
+
rect: rectSchema.optional(),
|
|
3696
|
+
hotspot: hotspotSchema.optional(),
|
|
3697
|
+
rotation: rotationSchema.optional()
|
|
3698
|
+
});
|
|
3699
|
+
const mediaPosterSchema = z.discriminatedUnion("tag", [z.object({
|
|
3700
|
+
tag: z.literal("media"),
|
|
3701
|
+
identifier: mediaIdentifierSchema$1
|
|
3702
|
+
}).strict(), z.object({
|
|
3703
|
+
tag: z.literal("external-src"),
|
|
3704
|
+
src: z.string().url()
|
|
3705
|
+
}).strict()]);
|
|
3706
|
+
const mediaUsageShape = {
|
|
3707
|
+
purpose: z.string().optional(),
|
|
3708
|
+
placeholder: z.boolean().default(true).optional(),
|
|
3709
|
+
alt: z.string().optional(),
|
|
3710
|
+
filename: z.string().optional(),
|
|
3711
|
+
width: z.number().optional(),
|
|
3712
|
+
height: z.number().optional(),
|
|
3713
|
+
poster: mediaPosterSchema.optional(),
|
|
3714
|
+
transform: transformSchema.optional()
|
|
3715
|
+
};
|
|
3716
|
+
const environmentExclusions = {
|
|
3717
|
+
assetId: z.never().optional(),
|
|
3718
|
+
id: z.never().optional(),
|
|
3719
|
+
src: z.never().optional(),
|
|
3720
|
+
storageBucket: z.never().optional(),
|
|
3721
|
+
storagePath: z.never().optional(),
|
|
3722
|
+
mimeType: z.never().optional()
|
|
3723
|
+
};
|
|
3724
|
+
const mediaBaseSchema = z.object({
|
|
3725
|
+
...mediaUsageShape,
|
|
3726
|
+
...environmentExclusions,
|
|
3727
|
+
identifier: mediaIdentifierSchema$1
|
|
3728
|
+
}).strict();
|
|
3729
|
+
mediaBaseSchema.extend({ type: z.literal("image") });
|
|
3730
|
+
mediaBaseSchema.extend({ type: z.literal("video") });
|
|
3731
|
+
const mediaSchema = mediaBaseSchema.extend({ type: z.enum(mediaTypeDiscriminants) });
|
|
3732
|
+
const externalMediaSchema = z.object({
|
|
3733
|
+
...mediaUsageShape,
|
|
3734
|
+
...environmentExclusions,
|
|
3735
|
+
type: z.enum(mediaTypeDiscriminants),
|
|
3736
|
+
src: z.string().min(1),
|
|
3737
|
+
identifier: z.never().optional()
|
|
3738
|
+
}).strict();
|
|
3739
|
+
const assetMediaSchema = z.object({
|
|
3740
|
+
...mediaUsageShape,
|
|
3741
|
+
...environmentExclusions,
|
|
3742
|
+
type: z.enum(mediaTypeDiscriminants),
|
|
3743
|
+
asset: renderableMediaAssetSchema,
|
|
3744
|
+
identifier: z.never().optional()
|
|
3745
|
+
}).strict();
|
|
3746
|
+
z.union([
|
|
3747
|
+
mediaSchema,
|
|
3748
|
+
externalMediaSchema,
|
|
3749
|
+
assetMediaSchema
|
|
3750
|
+
]);
|
|
3751
|
+
new Set(mediaTypeDiscriminants);
|
|
3615
3752
|
const MEDIA_KINDS = [
|
|
3616
3753
|
"image",
|
|
3617
3754
|
"video",
|
|
@@ -4063,22 +4200,25 @@ function upsertById(assets, asset) {
|
|
|
4063
4200
|
return next;
|
|
4064
4201
|
}
|
|
4065
4202
|
function createRuntimeMediaAssetState(siteId, baseAssets) {
|
|
4203
|
+
const mediaAssetIndex = buildRenderableMediaAssetIndex(baseAssets);
|
|
4066
4204
|
return {
|
|
4067
4205
|
siteId,
|
|
4068
|
-
baseAssets:
|
|
4069
|
-
registeredAssets: []
|
|
4206
|
+
baseAssets: mediaAssetIndex?.assets ?? [],
|
|
4207
|
+
registeredAssets: [],
|
|
4208
|
+
mediaAssetIndex
|
|
4070
4209
|
};
|
|
4071
4210
|
}
|
|
4072
4211
|
function reduceRuntimeMediaAssetState(state, action) {
|
|
4073
4212
|
switch (action.type) {
|
|
4074
4213
|
case "siteSnapshotReplaced": {
|
|
4075
|
-
|
|
4076
|
-
|
|
4214
|
+
const { snapshot } = action;
|
|
4215
|
+
if (snapshot.siteId !== state.siteId) return snapshot;
|
|
4216
|
+
const nextBaseAssets = snapshot.baseAssets;
|
|
4077
4217
|
if (areEqualAssetLists(nextBaseAssets, state.baseAssets)) return state;
|
|
4078
4218
|
return {
|
|
4079
|
-
|
|
4219
|
+
...state,
|
|
4080
4220
|
baseAssets: nextBaseAssets,
|
|
4081
|
-
|
|
4221
|
+
mediaAssetIndex: state.registeredAssets.length ? indexRenderableMediaAssets(dedupeById([...nextBaseAssets, ...state.registeredAssets])) : snapshot.mediaAssetIndex
|
|
4082
4222
|
};
|
|
4083
4223
|
}
|
|
4084
4224
|
case "assetRegistered":
|
|
@@ -4087,31 +4227,11 @@ function reduceRuntimeMediaAssetState(state, action) {
|
|
|
4087
4227
|
if (nextRegisteredAssets === state.registeredAssets) return state;
|
|
4088
4228
|
return {
|
|
4089
4229
|
...state,
|
|
4090
|
-
registeredAssets: nextRegisteredAssets
|
|
4230
|
+
registeredAssets: nextRegisteredAssets,
|
|
4231
|
+
mediaAssetIndex: indexRenderableMediaAssets(dedupeById([...state.baseAssets, ...nextRegisteredAssets]))
|
|
4091
4232
|
};
|
|
4092
4233
|
}
|
|
4093
4234
|
}
|
|
4094
|
-
/**
|
|
4095
|
-
* Returns a freshly deduped merge of base and runtime assets.
|
|
4096
|
-
* Callers should memoize the result if referential stability matters downstream.
|
|
4097
|
-
*/
|
|
4098
|
-
function selectRuntimeMediaAssets(state) {
|
|
4099
|
-
return dedupeById([...state.baseAssets, ...state.registeredAssets]);
|
|
4100
|
-
}
|
|
4101
|
-
function createRuntimeMediaAssetSnapshotKey(siteId, assets) {
|
|
4102
|
-
return JSON.stringify({
|
|
4103
|
-
siteId,
|
|
4104
|
-
assets: dedupeById(assets).map((asset) => ({
|
|
4105
|
-
id: asset.id,
|
|
4106
|
-
identifier: asset.identifier ?? null,
|
|
4107
|
-
storageBucket: asset.storageBucket ?? null,
|
|
4108
|
-
storagePath: asset.storagePath ?? null,
|
|
4109
|
-
width: asset.width ?? null,
|
|
4110
|
-
height: asset.height ?? null,
|
|
4111
|
-
mimeType: asset.mimeType ?? null
|
|
4112
|
-
}))
|
|
4113
|
-
});
|
|
4114
|
-
}
|
|
4115
4235
|
//#endregion
|
|
4116
4236
|
//#region ../media-editor/src/provider.tsx
|
|
4117
4237
|
const DEFAULT_MEDIA_BUCKET = process.env.NEXT_PUBLIC_MEDIA_BUCKET ?? "media";
|
|
@@ -4128,15 +4248,14 @@ function toRuntimeMediaAssetIndexItem(asset) {
|
|
|
4128
4248
|
};
|
|
4129
4249
|
}
|
|
4130
4250
|
function MediaEditorProvider({ siteId, apiClient, children, bucket = DEFAULT_MEDIA_BUCKET, getPublicUrl, augmentRequest, uploaderOptions, bearerToken, supabaseUrl, mediaAssets }) {
|
|
4131
|
-
const
|
|
4132
|
-
const [runtimeMediaAssetState, dispatchRuntimeMediaAssetAction] = useReducer(reduceRuntimeMediaAssetState,
|
|
4251
|
+
const snapshot = useMemo(() => createRuntimeMediaAssetState(siteId, mediaAssets ?? []), [mediaAssets, siteId]);
|
|
4252
|
+
const [runtimeMediaAssetState, dispatchRuntimeMediaAssetAction] = useReducer(reduceRuntimeMediaAssetState, snapshot);
|
|
4133
4253
|
useEffect(() => {
|
|
4134
4254
|
dispatchRuntimeMediaAssetAction({
|
|
4135
4255
|
type: "siteSnapshotReplaced",
|
|
4136
|
-
|
|
4137
|
-
baseAssets: mediaAssets ?? []
|
|
4256
|
+
snapshot
|
|
4138
4257
|
});
|
|
4139
|
-
}, [
|
|
4258
|
+
}, [snapshot]);
|
|
4140
4259
|
const repo = useMemo(() => {
|
|
4141
4260
|
const clientFn = (request) => {
|
|
4142
4261
|
return apiClient(augmentRequest ? augmentRequest(request, { siteId }) : request);
|
|
@@ -4155,11 +4274,12 @@ function MediaEditorProvider({ siteId, apiClient, children, bucket = DEFAULT_MED
|
|
|
4155
4274
|
const imageResolveContext = useMemo(() => buildResolveImageUrlContext({
|
|
4156
4275
|
siteId,
|
|
4157
4276
|
supabaseUrl: supabaseUrl ?? (DEFAULT_SUPABASE_URL || void 0),
|
|
4158
|
-
|
|
4277
|
+
mediaAssetIndex: runtimeMediaAssetState.siteId === siteId ? runtimeMediaAssetState.mediaAssetIndex : snapshot.mediaAssetIndex
|
|
4159
4278
|
}), [
|
|
4160
4279
|
runtimeMediaAssetState,
|
|
4161
4280
|
siteId,
|
|
4162
|
-
supabaseUrl
|
|
4281
|
+
supabaseUrl,
|
|
4282
|
+
snapshot
|
|
4163
4283
|
]);
|
|
4164
4284
|
const resolvedSupabaseUrl = imageResolveContext.supabaseUrl;
|
|
4165
4285
|
const registerMediaAsset = useCallback((asset) => {
|
|
@@ -4167,7 +4287,7 @@ function MediaEditorProvider({ siteId, apiClient, children, bucket = DEFAULT_MED
|
|
|
4167
4287
|
dispatchRuntimeMediaAssetAction({
|
|
4168
4288
|
type: "assetRegistered",
|
|
4169
4289
|
siteId,
|
|
4170
|
-
asset: toRuntimeMediaAssetIndexItem(asset)
|
|
4290
|
+
asset: renderableMediaAssetSchema$1.parse(toRuntimeMediaAssetIndexItem(asset))
|
|
4171
4291
|
});
|
|
4172
4292
|
}, [siteId]);
|
|
4173
4293
|
const computePublicUrl = useCallback((asset) => {
|
|
@@ -8485,10 +8605,10 @@ function resolveShellThemeRoles(props) {
|
|
|
8485
8605
|
}
|
|
8486
8606
|
const previewContainerResponsiveEnabled = process.env.NEXT_PUBLIC_ENABLE_PREVIEW_CONTAINER_RESPONSIVE !== "false";
|
|
8487
8607
|
const PreviewEditorSidebar = React.lazy(async () => {
|
|
8488
|
-
return { default: (await import("./PreviewEditorSidebar-
|
|
8608
|
+
return { default: (await import("./PreviewEditorSidebar-C7FiaxlF.mjs")).PreviewEditorSidebar };
|
|
8489
8609
|
});
|
|
8490
8610
|
const PreviewEditorUI = React.lazy(async () => {
|
|
8491
|
-
return { default: (await import("./PreviewEditorUI-
|
|
8611
|
+
return { default: (await import("./PreviewEditorUI-DFst50q1.mjs")).PreviewEditorUI };
|
|
8492
8612
|
});
|
|
8493
8613
|
const previewPaneContainmentStyle = {
|
|
8494
8614
|
contain: "layout paint",
|
|
@@ -8515,6 +8635,7 @@ function renderShellProviders(input) {
|
|
|
8515
8635
|
apiClient: input.apiClient,
|
|
8516
8636
|
theme: themeRoles.persistenceTheme,
|
|
8517
8637
|
headerPreferences: props.themeSelectionHeaderPreferences ?? null,
|
|
8638
|
+
footerPreferences: props.themeSelectionFooterPreferences,
|
|
8518
8639
|
themeId: props.themeId ?? null,
|
|
8519
8640
|
selectionId: props.themeSelectionId ?? null,
|
|
8520
8641
|
selectionVersion: props.themeSelectionVersion ?? null,
|
|
@@ -8843,6 +8964,7 @@ function resolveShellLayoutProps(input) {
|
|
|
8843
8964
|
themeSelectionButtonStyleSelection: props.themeSelectionButtonStyleSelection ?? null,
|
|
8844
8965
|
themeSelectionButtonStyleRepairs: props.themeSelectionButtonStyleRepairs ?? [],
|
|
8845
8966
|
themeSelectionHeaderPreferences: props.themeSelectionHeaderPreferences ?? null,
|
|
8967
|
+
themeSelectionFooterPreferences: props.themeSelectionFooterPreferences,
|
|
8846
8968
|
themeSelectionHeaderSelection: props.themeSelectionHeaderSelection ?? null,
|
|
8847
8969
|
themeSelectionFooterLookId: props.themeSelectionFooterLookId ?? null,
|
|
8848
8970
|
themeSelectionHeaderLogo: props.themeSelectionHeaderLogo,
|
|
@@ -9772,48 +9894,40 @@ function isRecord(value) {
|
|
|
9772
9894
|
}
|
|
9773
9895
|
//#endregion
|
|
9774
9896
|
//#region ../preview-next/src/client/blocks/previewCustomizeSelectedMedia.ts
|
|
9775
|
-
function selectedImageFromMediaValue(value) {
|
|
9776
|
-
if (value?.type !== "image"
|
|
9777
|
-
const
|
|
9778
|
-
|
|
9779
|
-
|
|
9780
|
-
|
|
9781
|
-
|
|
9782
|
-
|
|
9783
|
-
|
|
9784
|
-
|
|
9785
|
-
|
|
9786
|
-
|
|
9787
|
-
|
|
9788
|
-
|
|
9897
|
+
function selectedImageFromMediaValue(value, index) {
|
|
9898
|
+
if (value?.type !== "image") return null;
|
|
9899
|
+
const resolved = resolveManagedMediaReference(value, index);
|
|
9900
|
+
return resolved.kind === "resolved" ? {
|
|
9901
|
+
reference: value,
|
|
9902
|
+
imageAsset: resolved.asset
|
|
9903
|
+
} : null;
|
|
9904
|
+
}
|
|
9905
|
+
function selectedImageFromRenderableAsset(source) {
|
|
9906
|
+
const asset = renderableMediaAssetSchema$1.parse({
|
|
9907
|
+
...source,
|
|
9908
|
+
width: source.width ?? null,
|
|
9909
|
+
height: source.height ?? null
|
|
9910
|
+
});
|
|
9789
9911
|
return {
|
|
9790
|
-
|
|
9791
|
-
|
|
9912
|
+
reference: {
|
|
9913
|
+
type: "image",
|
|
9914
|
+
identifier: mediaIdentifierSchema$2.parse(asset.identifier)
|
|
9915
|
+
},
|
|
9916
|
+
imageAsset: asset
|
|
9792
9917
|
};
|
|
9793
9918
|
}
|
|
9794
9919
|
function imagePoolWithSelectedImage(input) {
|
|
9795
|
-
|
|
9796
|
-
|
|
9920
|
+
const selection = input.selectedImage;
|
|
9921
|
+
if (input.override.kind !== "image" || selection?.reference.identifier !== input.override.reference.identifier) return input.imagePool;
|
|
9797
9922
|
return [{
|
|
9798
|
-
|
|
9923
|
+
reference: input.override.reference,
|
|
9799
9924
|
source: "general-media",
|
|
9800
|
-
mediaAsset:
|
|
9801
|
-
}, ...input.imagePool.filter((item) => item.
|
|
9925
|
+
mediaAsset: selection.imageAsset
|
|
9926
|
+
}, ...input.imagePool.filter((item) => item.reference.identifier !== selection.reference.identifier)];
|
|
9802
9927
|
}
|
|
9803
|
-
function
|
|
9804
|
-
if (input.selectedImage?.
|
|
9805
|
-
return input.imagePool?.find((item) => item.
|
|
9806
|
-
}
|
|
9807
|
-
function renderableImageAssetFromSource(asset) {
|
|
9808
|
-
return {
|
|
9809
|
-
id: asset.id,
|
|
9810
|
-
...typeof asset.identifier === "string" ? { identifier: asset.identifier } : {},
|
|
9811
|
-
...typeof asset.storageBucket === "string" ? { storageBucket: asset.storageBucket } : {},
|
|
9812
|
-
...typeof asset.storagePath === "string" ? { storagePath: asset.storagePath } : {},
|
|
9813
|
-
...typeof asset.width === "number" ? { width: asset.width } : {},
|
|
9814
|
-
...typeof asset.height === "number" ? { height: asset.height } : {},
|
|
9815
|
-
...typeof asset.mimeType === "string" ? { mimeType: asset.mimeType } : {}
|
|
9816
|
-
};
|
|
9928
|
+
function selectedOrPooledImageAssetForReference(input) {
|
|
9929
|
+
if (input.selectedImage?.reference.identifier === input.reference.identifier) return input.selectedImage.imageAsset;
|
|
9930
|
+
return input.imagePool?.find((item) => item.reference.identifier === input.reference.identifier)?.mediaAsset;
|
|
9817
9931
|
}
|
|
9818
9932
|
//#endregion
|
|
9819
9933
|
//#region ../preview-next/src/client/blocks/previewCustomizeActions.ts
|
|
@@ -9873,9 +9987,9 @@ function setPageDesignBlockBackground(input) {
|
|
|
9873
9987
|
imagePool
|
|
9874
9988
|
}), input.override);
|
|
9875
9989
|
if (plan.kind !== "apply") return null;
|
|
9876
|
-
const imageAsset = plan.override.kind === "image" ?
|
|
9990
|
+
const imageAsset = plan.override.kind === "image" ? selectedOrPooledImageAssetForReference({
|
|
9877
9991
|
imagePool: input.imagePool,
|
|
9878
|
-
|
|
9992
|
+
reference: plan.override.reference,
|
|
9879
9993
|
selectedImage: input.selectedImage
|
|
9880
9994
|
}) : void 0;
|
|
9881
9995
|
return {
|
|
@@ -10285,13 +10399,16 @@ function useArrangementToolbar(input) {
|
|
|
10285
10399
|
editHeadline: () => input.openField(headlineFieldPath(designBlock.blockKind))
|
|
10286
10400
|
};
|
|
10287
10401
|
}
|
|
10288
|
-
function ArrangementControlsRow({ toolbar, blockTitle, popover, onToggleOptions, editButton }) {
|
|
10402
|
+
function ArrangementControlsRow({ toolbar, blockName, blockTitle, popover, onToggleOptions, editButton }) {
|
|
10289
10403
|
const { controls } = toolbar;
|
|
10290
10404
|
return /* @__PURE__ */ jsxs(Fragment$1, { children: [
|
|
10291
10405
|
/* @__PURE__ */ jsxs("div", {
|
|
10406
|
+
role: "group",
|
|
10407
|
+
"aria-label": `${blockTitle} controls`,
|
|
10292
10408
|
className: "flex min-w-0 items-center justify-end gap-1 sm:flex-wrap",
|
|
10293
10409
|
"data-preview-chrome-row": "",
|
|
10294
10410
|
children: [
|
|
10411
|
+
blockName,
|
|
10295
10412
|
controls.mode ? /* @__PURE__ */ jsx(ArrangementModeSwitchPill, {
|
|
10296
10413
|
blockLabel: blockTitle,
|
|
10297
10414
|
mode: controls.mode,
|
|
@@ -10411,7 +10528,7 @@ function useMediaQuery(query) {
|
|
|
10411
10528
|
}
|
|
10412
10529
|
//#endregion
|
|
10413
10530
|
//#region ../preview-next/src/client/blocks/BlockBackgroundChooser.tsx
|
|
10414
|
-
function BackgroundChooser({ capability, current, imagePoolStatus, onChoose }) {
|
|
10531
|
+
function BackgroundChooser({ editingSlot, capability, current, imagePoolStatus, onChoose }) {
|
|
10415
10532
|
const chooseFromClick = (override) => (event) => {
|
|
10416
10533
|
event.preventDefault();
|
|
10417
10534
|
event.stopPropagation();
|
|
@@ -10431,6 +10548,7 @@ function BackgroundChooser({ capability, current, imagePoolStatus, onChoose }) {
|
|
|
10431
10548
|
chooseFromClick
|
|
10432
10549
|
}) : null,
|
|
10433
10550
|
current.kind === "image" ? /* @__PURE__ */ jsx(BackgroundImageOptions, {
|
|
10551
|
+
editingSlot,
|
|
10434
10552
|
capability,
|
|
10435
10553
|
current,
|
|
10436
10554
|
imagePoolStatus,
|
|
@@ -10546,7 +10664,7 @@ function SelectedGradient({ gradientId, onReset }) {
|
|
|
10546
10664
|
}) : null]
|
|
10547
10665
|
});
|
|
10548
10666
|
}
|
|
10549
|
-
function BackgroundImageOptions({ capability, current, imagePoolStatus, onChoose, chooseFromClick }) {
|
|
10667
|
+
function BackgroundImageOptions({ editingSlot, capability, current, imagePoolStatus, onChoose, chooseFromClick }) {
|
|
10550
10668
|
const mediaEditorContext = useMediaEditorOptional();
|
|
10551
10669
|
const [mediaPickerOpenKey, setMediaPickerOpenKey] = useState(0);
|
|
10552
10670
|
if (!capability.modes.includes("image")) return null;
|
|
@@ -10561,18 +10679,19 @@ function BackgroundImageOptions({ capability, current, imagePoolStatus, onChoose
|
|
|
10561
10679
|
className: "space-y-1",
|
|
10562
10680
|
children: images.map((item) => /* @__PURE__ */ jsx(ImagePoolButton, {
|
|
10563
10681
|
item,
|
|
10564
|
-
selected: current.
|
|
10682
|
+
selected: current.reference.identifier === item.reference.identifier,
|
|
10565
10683
|
thumbnailUrl: backgroundImagePreviewUrl(item, mediaEditorContext),
|
|
10566
10684
|
onClick: chooseFromClick({
|
|
10567
10685
|
kind: "image",
|
|
10568
|
-
|
|
10686
|
+
reference: item.reference
|
|
10569
10687
|
})
|
|
10570
|
-
}, `${item.source}:${item.
|
|
10688
|
+
}, `${item.source}:${item.reference.identifier}`))
|
|
10571
10689
|
}) : /* @__PURE__ */ jsx("p", {
|
|
10572
10690
|
className: "text-xs text-muted-foreground",
|
|
10573
10691
|
children: imagePoolStatus === "loading" ? "Loading images..." : "No background-ready images yet."
|
|
10574
10692
|
}),
|
|
10575
10693
|
mediaPickerOpenKey > 0 && mediaEditorContext ? /* @__PURE__ */ jsx(BackgroundMediaPicker, {
|
|
10694
|
+
editingSlot,
|
|
10576
10695
|
openKey: mediaPickerOpenKey,
|
|
10577
10696
|
onChoose,
|
|
10578
10697
|
onDone: () => setMediaPickerOpenKey(0)
|
|
@@ -10618,19 +10737,21 @@ function ImagePoolButton({ item, selected, thumbnailUrl, onClick }) {
|
|
|
10618
10737
|
})
|
|
10619
10738
|
});
|
|
10620
10739
|
}
|
|
10621
|
-
function BackgroundMediaPicker({ openKey, onChoose, onDone }) {
|
|
10740
|
+
function BackgroundMediaPicker({ editingSlot, openKey, onChoose, onDone }) {
|
|
10741
|
+
const mediaEditorContext = useMediaEditorOptional();
|
|
10622
10742
|
const chooseMediaValue = (value) => {
|
|
10623
|
-
const selectedImage = selectedImageFromMediaValue(value);
|
|
10743
|
+
const selectedImage = selectedImageFromMediaValue(value, mediaEditorContext?.imageResolveContext.mediaAssetIndex);
|
|
10624
10744
|
if (!selectedImage) return;
|
|
10625
10745
|
onChoose({
|
|
10626
10746
|
kind: "image",
|
|
10627
|
-
|
|
10747
|
+
reference: selectedImage.reference
|
|
10628
10748
|
}, { selectedImage });
|
|
10629
10749
|
onDone();
|
|
10630
10750
|
};
|
|
10631
10751
|
return /* @__PURE__ */ jsx("div", {
|
|
10632
10752
|
onClick: (event) => event.stopPropagation(),
|
|
10633
10753
|
children: /* @__PURE__ */ jsx(MediaEditor, {
|
|
10754
|
+
editingSlot,
|
|
10634
10755
|
value: void 0,
|
|
10635
10756
|
onChange: chooseMediaValue,
|
|
10636
10757
|
allowedKinds: ["image"],
|
|
@@ -10644,10 +10765,11 @@ function BackgroundMediaPicker({ openKey, onChoose, onDone }) {
|
|
|
10644
10765
|
},
|
|
10645
10766
|
onUploadComplete: (asset) => {
|
|
10646
10767
|
if (backgroundMediaPickerAssetSelection(asset).tag === "disabled") return;
|
|
10768
|
+
const selectedImage = selectedImageFromRenderableAsset(asset);
|
|
10647
10769
|
onChoose({
|
|
10648
10770
|
kind: "image",
|
|
10649
|
-
|
|
10650
|
-
}, { selectedImage
|
|
10771
|
+
reference: selectedImage.reference
|
|
10772
|
+
}, { selectedImage });
|
|
10651
10773
|
onDone();
|
|
10652
10774
|
}
|
|
10653
10775
|
}, openKey)
|
|
@@ -10673,7 +10795,7 @@ function BackgroundPreviewSwatch({ override, imagePool }) {
|
|
|
10673
10795
|
style: { backgroundImage: gradientPreviewCss(override.gradientId) }
|
|
10674
10796
|
});
|
|
10675
10797
|
case "image":
|
|
10676
|
-
const imageItem = imagePool.find((item) => item.
|
|
10798
|
+
const imageItem = imagePool.find((item) => item.reference.identifier === override.reference.identifier);
|
|
10677
10799
|
const thumbnailUrl = imageItem ? backgroundImagePreviewUrl(imageItem, mediaEditorContext) : void 0;
|
|
10678
10800
|
return /* @__PURE__ */ jsx("span", {
|
|
10679
10801
|
className: `${baseClassName} bg-muted`,
|
|
@@ -10690,13 +10812,7 @@ function backgroundImagePreviewUrl(item, mediaEditorContext) {
|
|
|
10690
10812
|
if (!asset) return void 0;
|
|
10691
10813
|
return resolveImageUrlWithContext({
|
|
10692
10814
|
type: "image",
|
|
10693
|
-
|
|
10694
|
-
...asset.identifier ? { identifier: asset.identifier } : {},
|
|
10695
|
-
storageBucket: asset.storageBucket,
|
|
10696
|
-
storagePath: asset.storagePath,
|
|
10697
|
-
...asset.width != null ? { width: asset.width } : {},
|
|
10698
|
-
...asset.height != null ? { height: asset.height } : {},
|
|
10699
|
-
mimeType: asset.mimeType
|
|
10815
|
+
asset
|
|
10700
10816
|
}, {
|
|
10701
10817
|
width: 72,
|
|
10702
10818
|
height: 48,
|
|
@@ -10790,7 +10906,7 @@ function BlockToolbar({ blockId, blockKind, content, bookingOfferingPresets, the
|
|
|
10790
10906
|
const backgroundCycleImagePool = useMemo(() => {
|
|
10791
10907
|
if (currentBackground.kind === "supported" && currentBackground.override.kind === "image") {
|
|
10792
10908
|
const currentOverride = currentBackground.override;
|
|
10793
|
-
if (!backgroundImagePool.some((item) => item.
|
|
10909
|
+
if (!backgroundImagePool.some((item) => item.reference.identifier === currentOverride.reference.identifier)) return rankBackgroundImagePoolItems(dedupeBackgroundImagePool([...imagePoolForOverride(currentOverride), ...backgroundImagePool]));
|
|
10794
10910
|
}
|
|
10795
10911
|
return rankBackgroundImagePoolItems(backgroundImagePool);
|
|
10796
10912
|
}, [backgroundImagePool, currentBackground]);
|
|
@@ -10977,6 +11093,10 @@ function BlockToolbar({ blockId, blockKind, content, bookingOfferingPresets, the
|
|
|
10977
11093
|
popover.toggle(e);
|
|
10978
11094
|
};
|
|
10979
11095
|
const blockTitle = formatBlockKindLabel$1(blockKind);
|
|
11096
|
+
const blockName = /* @__PURE__ */ jsx(BlockNamePill, {
|
|
11097
|
+
phone: selection.phone,
|
|
11098
|
+
label: blockTitle
|
|
11099
|
+
});
|
|
10980
11100
|
const editButton = /* @__PURE__ */ jsx("button", {
|
|
10981
11101
|
type: "button",
|
|
10982
11102
|
onClick: handleEdit,
|
|
@@ -10998,6 +11118,7 @@ function BlockToolbar({ blockId, blockKind, content, bookingOfferingPresets, the
|
|
|
10998
11118
|
enabledBackgroundModeList,
|
|
10999
11119
|
handleBackgroundCycle,
|
|
11000
11120
|
imagePoolStatus: backgroundImagePoolStatus,
|
|
11121
|
+
editingSlot: `${blockId}:_sectionStyles.background.image`,
|
|
11001
11122
|
mergedBackgroundImagePool,
|
|
11002
11123
|
onChooseBackgroundOverride: chooseBackgroundOverride,
|
|
11003
11124
|
onToggleBackgroundChooser: () => setBackgroundChooserOpen((open) => !open)
|
|
@@ -11013,16 +11134,18 @@ function BlockToolbar({ blockId, blockKind, content, bookingOfferingPresets, the
|
|
|
11013
11134
|
});
|
|
11014
11135
|
return /* @__PURE__ */ jsx(BlockToolbarFrame, {
|
|
11015
11136
|
selection,
|
|
11016
|
-
blockTitle,
|
|
11017
11137
|
placement,
|
|
11018
11138
|
forceVisible: popover.open,
|
|
11019
11139
|
controls: arrangementToolbar ? /* @__PURE__ */ jsx(ArrangementControlsRow, {
|
|
11020
11140
|
toolbar: arrangementToolbar,
|
|
11141
|
+
blockName,
|
|
11021
11142
|
blockTitle,
|
|
11022
11143
|
popover,
|
|
11023
11144
|
onToggleOptions: toggleCustomize,
|
|
11024
11145
|
editButton
|
|
11025
11146
|
}) : /* @__PURE__ */ jsx(LegacyControlsRow, {
|
|
11147
|
+
blockName,
|
|
11148
|
+
blockTitle,
|
|
11026
11149
|
popover,
|
|
11027
11150
|
showCustomise: hasCustomizeControls,
|
|
11028
11151
|
onToggleCustomise: toggleCustomize,
|
|
@@ -11040,7 +11163,7 @@ function BlockToolbar({ blockId, blockKind, content, bookingOfferingPresets, the
|
|
|
11040
11163
|
* Where a block's controls go: floating with the block on wider screens, or
|
|
11041
11164
|
* in one dock above the toolbar on a phone (only for the selected section).
|
|
11042
11165
|
*/
|
|
11043
|
-
function BlockToolbarFrame({ selection,
|
|
11166
|
+
function BlockToolbarFrame({ selection, placement, forceVisible, controls, popoverPanel }) {
|
|
11044
11167
|
const dock = selection.phone && selection.selected;
|
|
11045
11168
|
return /* @__PURE__ */ jsxs(Fragment$1, { children: [
|
|
11046
11169
|
/* @__PURE__ */ jsx("span", {
|
|
@@ -11048,7 +11171,6 @@ function BlockToolbarFrame({ selection, blockTitle, placement, forceVisible, con
|
|
|
11048
11171
|
"aria-hidden": "true",
|
|
11049
11172
|
style: { display: "contents" }
|
|
11050
11173
|
}),
|
|
11051
|
-
selection.selected ? /* @__PURE__ */ jsx(SelectedBlockOutline, { label: blockTitle }) : null,
|
|
11052
11174
|
dock ? /* @__PURE__ */ jsxs(PhoneBlockDock, {
|
|
11053
11175
|
themeSource: selection.blockElement,
|
|
11054
11176
|
children: [controls, popoverPanel]
|
|
@@ -11069,17 +11191,31 @@ function BlockToolbarFrame({ selection, blockTitle, placement, forceVisible, con
|
|
|
11069
11191
|
})
|
|
11070
11192
|
] });
|
|
11071
11193
|
}
|
|
11072
|
-
|
|
11194
|
+
/** Quiet block identity beside either toolbar's controls, omitted in the phone dock. */
|
|
11195
|
+
function BlockNamePill({ phone, label }) {
|
|
11196
|
+
if (phone) return null;
|
|
11197
|
+
return /* @__PURE__ */ jsx("span", {
|
|
11198
|
+
className: "shrink-0 rounded-full bg-background/95 px-2.5 py-1 text-xs text-muted-foreground",
|
|
11199
|
+
children: label
|
|
11200
|
+
});
|
|
11201
|
+
}
|
|
11202
|
+
function LegacyControlsRow({ blockName, blockTitle, popover, showCustomise, onToggleCustomise, editButton }) {
|
|
11073
11203
|
return /* @__PURE__ */ jsxs("div", {
|
|
11074
|
-
|
|
11204
|
+
role: "group",
|
|
11205
|
+
"aria-label": `${blockTitle} controls`,
|
|
11206
|
+
className: "flex items-center gap-1",
|
|
11075
11207
|
"data-preview-chrome-row": "",
|
|
11076
|
-
children: [
|
|
11077
|
-
|
|
11078
|
-
|
|
11079
|
-
|
|
11080
|
-
|
|
11081
|
-
|
|
11082
|
-
|
|
11208
|
+
children: [
|
|
11209
|
+
blockName,
|
|
11210
|
+
showCustomise ? /* @__PURE__ */ jsx(CustomizePillButton, {
|
|
11211
|
+
buttonRef: popover.buttonRef,
|
|
11212
|
+
ariaLabel: "Customise",
|
|
11213
|
+
open: popover.open,
|
|
11214
|
+
controlsId: popover.panelId,
|
|
11215
|
+
onClick: onToggleCustomise
|
|
11216
|
+
}) : null,
|
|
11217
|
+
editButton
|
|
11218
|
+
]
|
|
11083
11219
|
});
|
|
11084
11220
|
}
|
|
11085
11221
|
function QuickManifestFields({ fields, backend, blockKind, bookingOfferingPresets }) {
|
|
@@ -11099,17 +11235,6 @@ function QuickManifestFields({ fields, backend, blockKind, bookingOfferingPreset
|
|
|
11099
11235
|
})
|
|
11100
11236
|
});
|
|
11101
11237
|
}
|
|
11102
|
-
/** A solid outline and the section's name on the selected block. */
|
|
11103
|
-
function SelectedBlockOutline({ label }) {
|
|
11104
|
-
return /* @__PURE__ */ jsxs(Fragment$1, { children: [/* @__PURE__ */ jsx("span", {
|
|
11105
|
-
"aria-hidden": "true",
|
|
11106
|
-
"data-preview-selected-block": "",
|
|
11107
|
-
className: "pointer-events-none absolute inset-0 z-[40] outline outline-2 -outline-offset-2 outline-sky-600"
|
|
11108
|
-
}), /* @__PURE__ */ jsx("span", {
|
|
11109
|
-
className: "pointer-events-none absolute bottom-2 left-2 z-[40] rounded bg-sky-600 px-1.5 py-0.5 text-[11px] font-medium text-white",
|
|
11110
|
-
children: label
|
|
11111
|
-
})] });
|
|
11112
|
-
}
|
|
11113
11238
|
/** On a phone the selected section's controls sit in one dock above the toolbar. */
|
|
11114
11239
|
function PhoneBlockDock({ themeSource, children }) {
|
|
11115
11240
|
if (typeof document === "undefined") return null;
|
|
@@ -11207,6 +11332,7 @@ function renderBlockCustomizeBuiltinRow(row, context) {
|
|
|
11207
11332
|
context.onToggleBackgroundChooser();
|
|
11208
11333
|
},
|
|
11209
11334
|
chooser: /* @__PURE__ */ jsx(BackgroundChooser, {
|
|
11335
|
+
editingSlot: context.editingSlot,
|
|
11210
11336
|
capability: context.backgroundCapability,
|
|
11211
11337
|
current: context.currentBackground.override,
|
|
11212
11338
|
imagePoolStatus: context.imagePoolStatus,
|
|
@@ -11300,7 +11426,7 @@ function backgroundOverrideValueLabel(override, imagePool) {
|
|
|
11300
11426
|
case "default": return "No colour chosen";
|
|
11301
11427
|
case "color": return formatTokenLabel(override.token);
|
|
11302
11428
|
case "gradient": return gradientLabel(override.gradientId);
|
|
11303
|
-
case "image": return imagePool.find((item) => item.
|
|
11429
|
+
case "image": return imagePool.find((item) => item.reference.identifier === override.reference.identifier)?.label ?? "Image";
|
|
11304
11430
|
}
|
|
11305
11431
|
}
|
|
11306
11432
|
function backgroundModeLabel(mode) {
|
|
@@ -11322,24 +11448,21 @@ function readBackgroundColorPaletteSnapshot() {
|
|
|
11322
11448
|
return entries.length > 0 ? Object.fromEntries(entries) : null;
|
|
11323
11449
|
}
|
|
11324
11450
|
function dedupeBackgroundImagePool(items) {
|
|
11325
|
-
|
|
11326
|
-
|
|
11327
|
-
|
|
11328
|
-
|
|
11329
|
-
|
|
11330
|
-
|
|
11331
|
-
|
|
11332
|
-
|
|
11333
|
-
|
|
11334
|
-
|
|
11335
|
-
|
|
11336
|
-
|
|
11337
|
-
|
|
11338
|
-
|
|
11339
|
-
|
|
11340
|
-
deduped.push(item);
|
|
11341
|
-
}
|
|
11342
|
-
return deduped;
|
|
11451
|
+
return Array.from(items.reduce((pool, item) => {
|
|
11452
|
+
const key = item.reference.identifier;
|
|
11453
|
+
const existing = pool.get(key);
|
|
11454
|
+
const decided = existing ? existing.source === "current" ? {
|
|
11455
|
+
...existing,
|
|
11456
|
+
mediaAsset: existing.mediaAsset ?? item.mediaAsset,
|
|
11457
|
+
label: existing.label ?? item.label,
|
|
11458
|
+
rank: existing.rank ?? item.rank
|
|
11459
|
+
} : {
|
|
11460
|
+
...existing,
|
|
11461
|
+
label: existing.label ?? item.label,
|
|
11462
|
+
rank: existing.rank ?? item.rank
|
|
11463
|
+
} : item;
|
|
11464
|
+
return new Map([...pool, [key, decided]]);
|
|
11465
|
+
}, /* @__PURE__ */ new Map()).values());
|
|
11343
11466
|
}
|
|
11344
11467
|
//#endregion
|
|
11345
11468
|
//#region ../preview-next/src/client/blocks/BoundaryControl.tsx
|