@riverbankcms/sdk 0.151.0 → 0.153.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 +52 -0
- package/dist/{EventEmbeddedCheckoutStep-BBHbM22D.mjs → EventEmbeddedCheckoutStep-veN-QiAE.mjs} +10 -9
- package/dist/{PreviewEditorSidebar-BHplI9HE.mjs → PreviewEditorSidebar-jI_4DTZY.mjs} +4 -3
- package/dist/{PreviewEditorUI-DuyN8nsD.mjs → PreviewEditorUI-ORkVZhfu.mjs} +5 -4
- package/dist/{SdkPreviewModeRuntime-CR5ypwxJ.mjs → SdkPreviewModeRuntime-DaNqevI1.mjs} +341 -164
- package/dist/{SiteChromeCustomizeContext-D5t6joF_.mjs → SiteChromeCustomizeContext-CgNuBHC0.mjs} +27124 -39230
- package/dist/ThemedButton-X2UxhW6F.mjs +16525 -0
- package/dist/_dts/ai/src/contracts/proposals.d.ts +52 -52
- package/dist/_dts/ai/src/contracts/siteStyleProposalSchemas.d.ts +2357 -7859
- package/dist/_dts/api/src/bookingOperations.d.ts +5 -3
- package/dist/_dts/api/src/commercePortalEndpoints.d.ts +4 -0
- package/dist/_dts/api/src/communications.d.ts +19 -5
- package/dist/_dts/api/src/endpoints.d.ts +7 -0
- package/dist/_dts/api/src/index.d.ts +1 -1
- package/dist/_dts/api/src/indexExtendedTypes.d.ts +1 -1
- package/dist/_dts/api/src/navigation/types.d.ts +7 -0
- package/dist/_dts/api/src/navigation.d.ts +1 -1
- package/dist/_dts/api/src/publicAppointmentBookingContracts.d.ts +10 -1
- package/dist/_dts/api/src/sdkThemeWire.d.ts +186 -1434
- package/dist/_dts/api/src/shared-contracts.d.ts +10 -0
- package/dist/_dts/api/src/siteAssets.d.ts +1 -0
- package/dist/_dts/api/src/siteInfrastructure.d.ts +2 -1
- package/dist/_dts/api/src/teamMembers.d.ts +2 -27
- package/dist/_dts/block-form/src/widgets/RepeaterField/components/layoutGridDomain.d.ts +3 -13
- package/dist/_dts/blocks/src/contracts/index.d.ts +1 -0
- package/dist/_dts/blocks/src/definitions.d.ts +1 -1
- package/dist/_dts/blocks/src/index.d.ts +2 -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/pageRenderPreparation.d.ts +1 -0
- package/dist/_dts/blocks/src/pageRendererContracts.d.ts +2 -1
- package/dist/_dts/blocks/src/primitives/content/utils/sanitizeHref.d.ts +1 -1
- package/dist/_dts/blocks/src/system/blocks/event-registration.d.ts +4 -4
- package/dist/_dts/blocks/src/system/blocks/events/eventSelectionFields.d.ts +1 -1
- package/dist/_dts/blocks/src/system/blocks/events/shared/schemas.d.ts +212 -804
- package/dist/_dts/blocks/src/system/blocks/events/shared/types.d.ts +7 -2
- package/dist/_dts/blocks/src/system/blocks/location-map.d.ts +1 -1
- package/dist/_dts/blocks/src/system/blocks/media-text.d.ts +45 -45
- package/dist/_dts/blocks/src/system/blocks/offerings-preview/model.d.ts +2 -0
- package/dist/_dts/blocks/src/system/blocks/shared/teamMembers.d.ts +4 -7
- 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/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/normalizeMailingListBlockContent.d.ts +2 -0
- 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 +24 -24
- package/dist/_dts/blocks/src/system/manifest/validation.d.ts +2 -0
- package/dist/_dts/blocks/src/system/node/fragments/lookSlot.d.ts +1 -1
- package/dist/_dts/blocks/src/system/registry.d.ts +14 -2
- package/dist/_dts/blocks/src/system/runtime/api/client.d.ts +0 -5
- package/dist/_dts/blocks/src/system/runtime/api/index.d.ts +2 -0
- package/dist/_dts/blocks/src/system/runtime/api/schemas/events.d.ts +971 -0
- package/dist/_dts/blocks/src/system/runtime/api/schemas/waitlist-claims.d.ts +42 -0
- package/dist/_dts/blocks/src/system/runtime/api/types/appointments.d.ts +10 -2
- package/dist/_dts/blocks/src/system/runtime/api/types/events.d.ts +10 -136
- package/dist/_dts/blocks/src/system/runtime/components/registry.client.d.ts +48 -6
- package/dist/_dts/blocks/src/system/runtime/components/runtime-backed-blocks.d.ts +24 -3
- package/dist/_dts/blocks/src/system/runtime/hooks/useBookingFlowController.d.ts +1 -1
- package/dist/_dts/blocks/src/system/runtime/hooks/useBookingSubmission.state.d.ts +2 -0
- package/dist/_dts/blocks/src/system/runtime/hooks/useHeadlessBookingFlow.d.ts +5 -1
- package/dist/_dts/blocks/src/system/runtime/hooks/useHeadlessBookingFlow.state.d.ts +1 -1
- package/dist/_dts/blocks/src/system/runtime/lookSurfaces.d.ts +2 -2
- 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/booking-form.headless.state.d.ts +51 -1
- package/dist/_dts/blocks/src/system/runtime/nodes/booking-form.state.d.ts +6 -2
- package/dist/_dts/blocks/src/system/runtime/nodes/carousel.client.hooks.d.ts +6 -0
- package/dist/_dts/blocks/src/system/runtime/nodes/carousel.client.state.d.ts +7 -0
- package/dist/_dts/blocks/src/system/runtime/nodes/event-details/lookPresentation.d.ts +2 -2
- package/dist/_dts/blocks/src/system/runtime/nodes/event-details/presentation.d.ts +1 -1
- package/dist/_dts/blocks/src/system/runtime/nodes/event-registration/BookingEntryViews.d.ts +42 -0
- package/dist/_dts/blocks/src/system/runtime/nodes/event-registration/EventEmbeddedCheckoutStep.d.ts +4 -1
- package/dist/_dts/blocks/src/system/runtime/nodes/event-registration/EventRegistrationBookingLayer.d.ts +19 -9
- package/dist/_dts/blocks/src/system/runtime/nodes/event-registration/EventRegistrationPayment.d.ts +4 -2
- package/dist/_dts/blocks/src/system/runtime/nodes/event-registration/EventRegistrationSurface.d.ts +24 -9
- package/dist/_dts/blocks/src/system/runtime/nodes/event-registration/EventRegistrationWizardContent.d.ts +4 -2
- package/dist/_dts/blocks/src/system/runtime/nodes/event-registration/EventSelectionStep.d.ts +5 -4
- package/dist/_dts/blocks/src/system/runtime/nodes/event-registration/GuestDetailsSection.d.ts +1 -1
- package/dist/_dts/blocks/src/system/runtime/nodes/event-registration/PaymentStatusStep.d.ts +2 -0
- package/dist/_dts/blocks/src/system/runtime/nodes/event-registration/SingleTicketEntitlementNote.d.ts +11 -0
- package/dist/_dts/blocks/src/system/runtime/nodes/event-registration/SuccessStep.d.ts +4 -0
- package/dist/_dts/blocks/src/system/runtime/nodes/event-registration/TicketSelectionStep.d.ts +5 -0
- package/dist/_dts/blocks/src/system/runtime/nodes/event-registration/VerifyingTimeoutStep.d.ts +2 -0
- package/dist/_dts/blocks/src/system/runtime/nodes/event-registration/bookingCardDisplay.d.ts +31 -0
- package/dist/_dts/blocks/src/system/runtime/nodes/event-registration/bookingEntry.d.ts +154 -0
- package/dist/_dts/blocks/src/system/runtime/nodes/event-registration/bookingFocus.d.ts +12 -0
- package/dist/_dts/blocks/src/system/runtime/nodes/event-registration/event-registration.headless.contract.d.ts +2 -2
- package/dist/_dts/blocks/src/system/runtime/nodes/event-registration/event-registration.headless.planning.d.ts +2 -2
- package/dist/_dts/blocks/src/system/runtime/nodes/event-registration/eventSourceRecovery.d.ts +9 -0
- package/dist/_dts/blocks/src/system/runtime/nodes/event-registration/finishedBooking.d.ts +77 -0
- package/dist/_dts/blocks/src/system/runtime/nodes/event-registration/index.d.ts +0 -1
- package/dist/_dts/blocks/src/system/runtime/nodes/event-registration/offeringNoun.d.ts +12 -0
- package/dist/_dts/blocks/src/system/runtime/nodes/event-registration/paymentResponse.d.ts +2 -1
- package/dist/_dts/blocks/src/system/runtime/nodes/event-registration/registrationCompletion.d.ts +33 -1
- package/dist/_dts/blocks/src/system/runtime/nodes/event-registration/registrationDerivations.d.ts +11 -0
- package/dist/_dts/blocks/src/system/runtime/nodes/event-registration/registrationDisplay.d.ts +31 -0
- package/dist/_dts/blocks/src/system/runtime/nodes/event-registration/registrationDraft.state.d.ts +60 -0
- package/dist/_dts/blocks/src/system/runtime/nodes/event-registration/registrationErrorRecovery.d.ts +1 -1
- package/dist/_dts/blocks/src/system/runtime/nodes/event-registration/registrationEventAdapter.d.ts +3 -0
- package/dist/_dts/blocks/src/system/runtime/nodes/event-registration/registrationStateMachine.d.ts +58 -10
- package/dist/_dts/blocks/src/system/runtime/nodes/event-registration/registrationSurface.d.ts +17 -0
- package/dist/_dts/blocks/src/system/runtime/nodes/event-registration/types.d.ts +23 -7
- package/dist/_dts/blocks/src/system/runtime/nodes/event-registration/useBookingBarFacts.d.ts +12 -0
- package/dist/_dts/blocks/src/system/runtime/nodes/event-registration/useEventRegistrationRecoveryRequest.d.ts +3 -0
- package/dist/_dts/blocks/src/system/runtime/nodes/event-registration/useEventRegistrationStripeReturn.d.ts +4 -0
- package/dist/_dts/blocks/src/system/runtime/nodes/event-registration/useEventRegistrationSubmit.d.ts +4 -11
- package/dist/_dts/blocks/src/system/runtime/nodes/event-registration/useEventRegistrationWizard.d.ts +1563 -31
- package/dist/_dts/blocks/src/system/runtime/nodes/event-registration/useEventSourceRecovery.d.ts +2 -12
- package/dist/_dts/blocks/src/system/runtime/nodes/event-registration/usePaymentStatusRecovery.d.ts +147 -4
- package/dist/_dts/blocks/src/system/runtime/nodes/event-registration/utils.d.ts +50 -2
- package/dist/_dts/blocks/src/system/runtime/nodes/event-registration/waitlistClaimRestoration.d.ts +6 -5
- package/dist/_dts/blocks/src/system/runtime/nodes/event-registration/wizardSteps.d.ts +85 -15
- package/dist/_dts/blocks/src/system/runtime/nodes/event-registration.interactive.d.ts +53 -8
- 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/MonthLookView.d.ts +10 -3
- package/dist/_dts/blocks/src/system/runtime/nodes/events/shared/eventCollectionContract.d.ts +290 -882
- package/dist/_dts/blocks/src/system/runtime/nodes/file-download.d.ts +3 -2
- 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/shared/bookingPaymentOptionCopy.d.ts +5 -1
- package/dist/_dts/blocks/src/system/runtime/shared/bookingPaymentOptions.d.ts +37 -1
- package/dist/_dts/blocks/src/system/runtime/shared/components/ModalShell.d.ts +9 -2
- package/dist/_dts/blocks/src/system/runtime/shared/components/PaymentChoiceRows.d.ts +28 -0
- package/dist/_dts/blocks/src/system/runtime/shared/components/StepIndicator.d.ts +6 -8
- package/dist/_dts/blocks/src/system/runtime/shared/components/index.d.ts +2 -2
- package/dist/_dts/blocks/src/system/runtime/shared/index.d.ts +2 -2
- package/dist/_dts/blocks/src/system/runtime/shared/useWaitlistClaim.d.ts +9 -12
- package/dist/_dts/blocks/src/system/runtime/shared/useWaitlistClaim.state.d.ts +15 -0
- package/dist/_dts/blocks/src/system/runtime/shared/utils/themePortalRoot.d.ts +10 -15
- package/dist/_dts/blocks/src/system/transforms/registry/index.d.ts +2 -0
- package/dist/_dts/blocks/src/system/transforms/registry/links.d.ts +2 -0
- package/dist/_dts/commerce/src/purchase/bookingInstalmentSchedule.d.ts +2 -0
- package/dist/_dts/commerce/src/purchase/bookingPaymentSelection.d.ts +6 -0
- package/dist/_dts/commerce/src/purchase/confirmationEmailPayment.d.ts +14 -14
- package/dist/_dts/commerce/src/purchase/confirmationPayment.d.ts +65 -0
- package/dist/_dts/commerce/src/purchase/confirmationPaymentSchema.d.ts +66 -0
- package/dist/_dts/commerce/src/purchase/index.d.ts +2 -0
- package/dist/_dts/commerce/src/purchase/orderPaymentState.d.ts +8 -0
- package/dist/_dts/content-model/src/content-types/schema.d.ts +3 -3
- package/dist/_dts/content-model/src/templates/defaults.d.ts +2 -2
- package/dist/_dts/core/src/appointment-booking-terms.d.ts +20 -0
- package/dist/_dts/core/src/booking-payment-schemas.d.ts +70 -0
- package/dist/_dts/core/src/branded.d.ts +0 -2
- package/dist/_dts/core/src/demo-claim-access.d.ts +1 -1
- package/dist/_dts/core/src/demo-claim-readiness.d.ts +18 -0
- package/dist/_dts/core/src/demo-lifecycle-status.d.ts +1 -1
- package/dist/_dts/core/src/demo-warm-pool-target.d.ts +1 -1
- package/dist/_dts/core/src/index.d.ts +4 -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 +9 -1
- package/dist/_dts/core/src/mailing-list-submission.d.ts +1 -1
- package/dist/_dts/core/src/mailing-list-targeting-availability.d.ts +68 -0
- package/dist/_dts/core/src/mailing-list-targeting.d.ts +11 -1
- package/dist/_dts/core/src/ticket-quantity.d.ts +13 -0
- package/dist/_dts/db/src/generated/supabase/database.types.d.ts +106 -36
- package/dist/_dts/editor/src/chrome/chromeLayers.d.ts +7 -0
- package/dist/_dts/editor/src/index.d.ts +1 -0
- 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/link/LinkAddressInput.d.ts +8 -0
- package/dist/_dts/editor-blocks/src/widgets/link/LinkContentList.d.ts +12 -0
- package/dist/_dts/editor-blocks/src/widgets/link/LinkPicker.d.ts +5 -1
- package/dist/_dts/editor-blocks/src/widgets/link/LinkPickerDialog.d.ts +3 -3
- package/dist/_dts/editor-blocks/src/widgets/link/LinkSummary.d.ts +8 -2
- package/dist/_dts/editor-blocks/src/widgets/link/LinkWidget.d.ts +4 -3
- package/dist/_dts/editor-blocks/src/widgets/link/LinkWidgetContext.d.ts +2 -1
- package/dist/_dts/editor-blocks/src/widgets/link/draft.d.ts +44 -0
- package/dist/_dts/editor-blocks/src/widgets/link/presentation.d.ts +13 -0
- package/dist/_dts/editor-blocks/src/widgets/link/types.d.ts +14 -0
- package/dist/_dts/editor-blocks/src/widgets/link/useRoutableContent.d.ts +2 -0
- package/dist/_dts/editor-blocks/src/widgets/link/utils.d.ts +5 -4
- package/dist/_dts/editor-blocks/src/widgets/mailing-list-targeting/MailingListTargetingField.d.ts +1 -1
- package/dist/_dts/editor-blocks/src/widgets/mailing-list-targeting/targetingState.d.ts +13 -8
- 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/fileStorage.d.ts +4 -3
- package/dist/_dts/media-core/src/index.d.ts +5 -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-core/src/storageObjectKey.d.ts +12 -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/media-react/src/hooks/useSupabaseMediaUploader.d.ts +1 -1
- package/dist/_dts/media-react/src/internal/supabaseResumableUpload.d.ts +13 -0
- 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/previewModeRootAttribute.d.ts +11 -0
- 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/index.d.ts +1 -0
- package/dist/_dts/sdk/src/rendering/blocks-page-renderer.d.ts +0 -1
- package/dist/_dts/sdk/src/rendering/image.d.ts +14 -4
- package/dist/_dts/sdk/src/rendering/index.d.ts +5 -2
- package/dist/_dts/sdk/src/rendering/link.d.ts +5 -0
- package/dist/_dts/sdk/src/rendering/mediaAssets.d.ts +2 -4
- package/dist/_dts/sdk/src/rendering/overrides.d.ts +1 -0
- 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/blocks/opaquePanels.d.ts +3 -3
- package/dist/_dts/theme-core/src/boxBackgroundSchema.d.ts +397 -26
- package/dist/_dts/theme-core/src/buttons/types.d.ts +21 -21
- package/dist/_dts/theme-core/src/cards/types.d.ts +34 -34
- 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 +261 -2619
- package/dist/_dts/theme-core/src/palette/curated/types.d.ts +1 -1
- package/dist/_dts/theme-core/src/schema.d.ts +548 -3187
- package/dist/_dts/theme-core/src/site-styles/backgroundAppearance.d.ts +2 -2
- package/dist/_dts/theme-core/src/site-styles/runtimeBackgroundResolution.d.ts +9 -9
- package/dist/_dts/theme-core/src/site-styles/styleTags.d.ts +1 -1
- package/dist/_dts/theme-core/src/site-styles/tokenRecipes.d.ts +1 -1
- 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/client/BookingMailingListNote-DrchYW1m.mjs +386 -0
- package/dist/client/{CardListItem-ZDLYh6dL.mjs → CardListItem-CC_GVmF6.mjs} +5 -5
- package/dist/client/CheckIcon-CpyXr-Kg.mjs +35 -0
- package/dist/client/{CheckboxChoice-M-3HycLw.mjs → CheckboxChoice-Dq30m3DO.mjs} +1 -1
- package/dist/client/{DemoBookingPortalAccess-BMtvPTWE.mjs → DemoBookingPortalAccess-ojwbVUmx.mjs} +85 -85
- package/dist/client/{EventCombined.client-DUm_DOxW.mjs → EventCombined.client-DyN0v0Xk.mjs} +7 -9
- package/dist/client/{EventEmbeddedCheckoutStep-DsNNzgRm.mjs → EventEmbeddedCheckoutStep-CgfpKc3n.mjs} +11 -10
- package/dist/client/{EventListing.client-DjNYGUVm.mjs → EventListing.client-CuOuvYMz.mjs} +2 -2
- package/dist/client/{LeafletStaticMap-DuFiOHq_.mjs → LeafletStaticMap-B0WhRr3j.mjs} +1 -1
- package/dist/client/{ModalShell-CqkBvBIC.mjs → ModalShell-BXzucfR6.mjs} +83 -12
- package/dist/client/{RichText-LjPCUGGi.mjs → RichText-C1fIXBzA.mjs} +50 -34
- package/dist/client/{ThemedButton-DZKjtaDD.mjs → ThemedButton-B7HFqFBg.mjs} +1 -2
- package/dist/client/{accordion-Qe--SILD.mjs → accordion-DCDVWSye.mjs} +1 -1
- package/dist/client/{bookingForm-3BCl4g_f.mjs → bookingForm-BJ3C4GlM.mjs} +321 -154
- package/dist/client/bookings.mjs +118607 -22429
- package/dist/client/{carousel-h2YjKOS2.mjs → carousel-BSCBhfHY.mjs} +2 -2
- package/dist/client/{carousel.client-BLrd4hmY.mjs → carousel.client-GEtOGsxo.mjs} +46 -41
- package/dist/client/{cart-5NeiigVd.mjs → cart-Yv-aAtck.mjs} +3 -3
- package/dist/client/{checkout-G4UWjOEw.mjs → checkout-B9xDkl30.mjs} +3 -3
- package/dist/client/client.mjs +37511 -33793
- package/dist/client/{context-GK4-AVAh.mjs → context-BOGe3rIA.mjs} +275 -10
- package/dist/client/{eventCalendar-Prw3Yo_L.mjs → eventCalendar-D6M0T9hs.mjs} +18 -17
- package/dist/client/{eventCombined-BUugi6__.mjs → eventCombined-NM4UFBq8.mjs} +4 -4
- package/dist/client/{eventDetails-CBHUda-R.mjs → eventDetails-f_FhV4O8.mjs} +3 -4
- package/dist/client/{eventListing-CQeG45Dg.mjs → eventListing-WLkfAROh.mjs} +4 -4
- package/dist/client/{eventRegistration-Dif3p3oJ.mjs → eventRegistration-D3ejfLvW.mjs} +2209 -2144
- package/dist/client/{form-Cf0WMtfG.mjs → form-D5Or2Jyu.mjs} +5 -6
- package/dist/client/{headerSection-Bqdr3JWp.mjs → headerSection-hWgnv27V.mjs} +9 -9
- package/dist/client/hooks.mjs +17278 -16106
- package/dist/client/{locationMap-BVvPou4O.mjs → locationMap-Di1K0O2S.mjs} +3 -4
- package/dist/client/{media-47fcnhzD.mjs → media-D29-F1u_.mjs} +183 -362
- package/dist/client/mediaContext-CwbbimYB.mjs +135 -0
- package/dist/client/{newsletterForm-Cx-1dnic.mjs → newsletterForm-CwxcwTNO.mjs} +5 -5
- package/dist/client/{productDetail-DaUMaJYk.mjs → productDetail-BLSnhPdA.mjs} +3 -3
- package/dist/client/{productList-BKQlWEKE.mjs → productList-oGytONOX.mjs} +3 -3
- package/dist/client/{propsDecoder-DO5iXphQ.mjs → propsDecoder-lf_dTeZS.mjs} +18659 -14473
- package/dist/client/renderableMediaAssetAdmission-CHkXYDC_.mjs +143 -0
- package/dist/client/rendering/client.mjs +58971 -55722
- package/dist/client/rendering/islands.mjs +20 -23
- package/dist/client/rendering.mjs +41610 -37917
- package/dist/client/{routeIslandApiConfig-BNm0Z3-g.mjs → routeIslandApiConfig-Bc_WVPS8.mjs} +1 -1
- package/dist/client/{shop-D7ytcFBC.mjs → shop-BQ3bR7fA.mjs} +16 -14
- package/dist/client/{shop-commerce-D68-hHy2.mjs → shop-commerce-DDPll6ZC.mjs} +9 -9
- package/dist/client/{shop-commerce-store-Cu7X2lyu.mjs → shop-commerce-store-DO-e1pTe.mjs} +1 -1
- package/dist/client/{shopShared-D12rxE69.mjs → shopShared-BylM9jh1.mjs} +5 -5
- package/dist/client/themePortalRoot-DS92SRVZ.mjs +47 -0
- package/dist/client/{TerminalPanel-DOTSUCO0.mjs → useDiscountCodeUi-B1Puub2v.mjs} +60 -77
- package/dist/client/{useEventPagination-jgKa67KV.mjs → useEventPagination-BBhkmQaT.mjs} +6 -8
- package/dist/preview-next/before-render.mjs +96 -4
- package/dist/preview-next/client/runtime.mjs +3 -3
- package/dist/preview-next/keepAlive.mjs +7 -0
- package/dist/preview-next/middleware.mjs +7 -0
- package/dist/{sdk-runtime-4cCWO_3i.mjs → sdk-runtime-DWCvhJGu.mjs} +1 -1
- package/dist/server/components.mjs +21820 -19902
- package/dist/server/config-validation.mjs +1786 -642
- package/dist/server/config.mjs +1786 -642
- package/dist/server/data.mjs +17220 -16076
- package/dist/server/index.mjs +234 -2
- package/dist/server/next.mjs +22505 -20528
- package/dist/server/page-converter.mjs +7587 -6572
- package/dist/server/prebuild.mjs +1 -1
- package/dist/server/rendering/server.mjs +20487 -19044
- package/dist/server/rendering.mjs +21844 -19901
- package/dist/server/routing.mjs +19186 -17961
- package/dist/server/server.mjs +1874 -695
- package/dist/server/theme-bridge.mjs +1371 -914
- package/dist/server/theme.mjs +154 -37
- package/dist/{spinner-tSdG9YvG.mjs → spinner-BYM-Y81w.mjs} +1 -1
- package/dist/styles/index.css +1088 -721
- package/package.json +1 -1
- package/dist/_dts/blocks/src/system/runtime/nodes/event-registration/OrderSummary.d.ts +0 -15
- package/dist/_dts/blocks/src/system/runtime/nodes/event-registration/useWaitlistClaimRestoration.d.ts +0 -22
- package/dist/_dts/blocks/src/system/runtime/shared/components/SelectableOptionCard.d.ts +0 -30
- package/dist/client/BookingMailingListNote-DlDSs5Vm.mjs +0 -567
- package/dist/client/colorStyles-DTunOThj.mjs +0 -1316
- package/dist/client/pricing-CMD0kADd.mjs +0 -314
- package/dist/client/result-DRW7JWXz.mjs +0 -30
- package/dist/client/scrollToBlock-C86BYkyV.mjs +0 -17
- package/dist/client/themePortalRoot-AGs4cE7t.mjs +0 -30
- package/dist/spinner-BL3kW9Uh.mjs +0 -803
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
"use client";
|
|
2
|
-
import {
|
|
2
|
+
import { $n as renderableMediaAssetSchema$1, Ar as makeBoundaryId, Cn as defaultThemeTokens, G as corners, H as parseThemeForPersistence, Qn as buildRenderableMediaAssetIndex, Ri as __exportAll, Si as parseSiteId, Un as paletteColorsSchema, Wn as paletteModeSchema, Xt as resolveSurface, _t as stripStaleTransitionStyleGroup, an as textColorStyle, ar as resolveSdkFooterMode, dr as asDesignBlockId, er as indexRenderableMediaAssets, fi as expectParsedBrandedId, gr as asLayoutVariantKey, nr as mediaIdentifierSchema$2, pt as isThemeV2NormalEditorRawStyleFieldName, tr as resolveManagedMediaReference, vr as asSiteStyleId, yr as assertNever$1 } from "./ThemedButton-X2UxhW6F.mjs";
|
|
3
3
|
import { i as useOptionalPreviewLayout, t as PreviewQueryProvider } from "./PreviewQueryProvider-AR9eEn7j.mjs";
|
|
4
|
-
import { $ as backgroundColorTokens, $a as
|
|
4
|
+
import { $ as backgroundColorTokens, $a as Tabs, $i as defineFragment, $n as createRoutingHelpers, $o as parseFooterModuleId, $r as normalizeOfferingsPreviewItemLimit, $t as FileField, Aa as sectionFactsForContent, Ai as resolveImageUrlWithContext, An as mapOptionValueForSelect, Ar as SITE_CHROME_VISIBLE_HEADER_SELECTOR, At as createEditorApiClientFactory, Bi as blogFeaturedPostFragment, Bn as createManifestFormAdapter, Br as systemCustomizeFacetDefinitionsForBlock, Bt as SiteOptionPickerField, Ci as coerceInlineTextWithFallback, Cn as clientComponentRegistry, Cr as containerResponsiveThemeCss, Ct as useUISelector, Da as resolveLookSlotSurfaces, Di as LINKED_CONTENT_ENTRY_META_KEY, Dn as useSdkConfig, Do as SlidersHorizontal, Dr as normalizeBlockContent, Dt as useEntryEditorController, Ea as resolveItemSurface, Ei as plainTextToInlineText, En as SdkConfigProvider, Er as getBlockDefinition, Fa as deriveSectionGround, Fi as richTextFragment, Fn as prepareBlockEditorManifest, Fr as compileManifestContentContract, Ft as EditLeaseDiscardedNotice, G as PreviewPageDesignEditorStateProvider, Ga as SelectValue, Gi as testimonialsHeadingFragment, Gn as getBlockManifestFromSdkConfig, Go as Button, Gr as getResponsiveScopeSpec, Gt as loadMailingListAuthoringContext, H as arrangementBlockControlsFor, Ha as SelectContent, Hi as formEmbedFragment, Ho as ChevronLeft, Hr as systemCustomizeFacetNextValue, Ht as OfferingsPreviewGroupOrderField, Ia as parseCanonicalRuntimeBackground, Ii as headingFragment, In as stripTopLevelRoutingUi, Io as Info, Ir as validateManifestDraft, It as EditLeaseModal, Ji as ctaRowFragment, Jo as baselineRevisionOf, Jr as getDefaultComponentRegistry, Jt as IconPickerField, K as usePreviewPageDesignEditorState, Ki as ctaCopyFragment, Kn as ApiRequestError, Kr as escapeStyleContent, Kt as MailingListTargetingProvider, La as resolveSectionBackground, Li as cardFragment, Ln as evaluateVisibility, Lo as Image, Lr as resolveArrangementKnobs, Lt as EditorWriteSurface, Ma as sectionTransitionFamilies, Mi as buildResolveImageUrlContext, Mn as FieldFrame, Mr as planSiteOverlayHeaderClearance, Mt as useRetentionTicks, Na as sectionTransitionFamilyForBoundaryOptionId, Ni as getCurrentResolveImageUrlContext, Nn as useField, Nr as visibleHeaderClearancePx, Nt as VIEWING_PARTICIPATION, Oa as boundaryLayout, Oi as coerceLinkedContentEntriesPayload, On as hasEmptyOption, Oo as RotateCcw, Or as offeringsPreviewBlockDefinition, Pa as sectionTransitionVariantForBoundaryOptionId, Pi as setContextResolveImageUrlContext, Pn as hideThemeV2RawStyleFields, Pr as parseStoredVariant, Qi as bodyCopyFragment, Qn as API_ENDPOINTS, Qo as buildMailingListSignupBlockSourceRef, Qr as buildOfferingsPreviewRenderStates, Qt as ButtonWidgetProvider, Ri as faqAccordionFragment, Rn as getFieldIntent, Ro as GripVertical, Rr as systemCustomizeFacetAppliesToLayoutVariant, Rt as createSiteOptionApiLoader, Si as planSiteChromePlacement, Sn as useApiMediaUploader, Sr as ThemeScope, Ta as arrangementSlotNames, Ti as isInlineTextEmpty, Tn as BlockApiProvider, Tr as makeDefaultBlockComponent, Tt as EntryControllerProvider, U as arrangementOwnedFieldIds, Ua as SelectItem, Ui as formCopyFragment, Ur as buildThemeRuntime, Ut as OfferingsPreviewWidgetProvider, V as arrangementBackgroundControlFor, Va as Select, Vi as singleButtonFragment, Vo as ChevronRight, Vr as systemCustomizeFacetLabelForValue, Vt as SiteOptionWidgetProvider, W as nextArrangementLookPin, Wa as SelectTrigger, Wi as testimonialsCarouselFragment, Wn as blocksKeys, Wr as DEFAULT_THEME_RESPONSIVE_MODE, Wt as MailingListTargetingField, Xi as ctaButton, Xn as SURFACE_IDS, Xr as buildItemDataMap, Xt as EntryPickerWidgetProvider, Yi as heroCopyFragment, Yn as SURFACE_DOCUMENT_DATA_ATTRIBUTE, Yo as isEdited, Yr as buildOfferingsCatalogueState, Yt as EntryPickerField, Zi as runTransforms, Zn as resolveSurfaceDocumentAttributes, Zo as canEditorWrite, Zr as OFFERINGS_PREVIEW_EVENT_PRESET_DEFINITIONS, Zt as ButtonVariantField, _a as surfaceResolutionContextFromTheme, _i as resolveEntryRouteTarget, _n as decodePublicProductCategorySelectorQuery, _r as renderedFieldChanges, _t as renderSiteChromeBlock, aa as compileEditorModelRuntime, ai as parseGeneratedIconSetId, an as RichTextWidgetProvider, ao as DialogDescription, as as parseEditLeaseScope, at as planBackgroundOverride, ba as getGradientPreset, bi as isObjectRecord, bn as MediaEditorContextProvider, bo as X, br as unsafeAsLinkedContentEntryId, bt as PreviewTextEditor, c as PreviewDesignCoordinatorProvider, ca as readStoredMode, ci as Text$1, cn as LinkField, co as DialogTitle, cr as unwrapResponse, ct as resolveBackgroundCapability, d as usePreviewThemeOverlay, da as resolvePublishedLook, di as siblingPath, dn as PaletteProvider, dr as useOptionalEditorUiStoreInstance, dt as initPreviewAuth, ea as bindingSchema, ei as resolveOfferingsPreviewGroups, en as MediaField, eo as TabsContent, er as createSnapshotFromPageRecord, es as parseMailingListPlacementTargeting, et as canCycleBackgroundOverrideValue, fa as componentRuntimeRulesForTheme, fi as defaultTransforms, fn as usePalette, ft as registerPreviewRenewalFetcher, gi as isRichTextDoc, gn as MediaEditor, gr as renderSourceFor, hi as bookingConsentCarrierSchema, hn as createStoreBackend, hr as remoteDraftValues, ht as usePreviewToken, ia as applyCompiledRuntimeFieldsToContent, ii as parseGeneratedIconAssetId, in as RichTextField, io as DialogContent, ir as parseReferenceKind, is as selectedContentVersionId, it as parseBackgroundOverrideFromContent, ja as defaultSectionTransitionVariantForFamily, ji as SECTION_BACKGROUND_MIN_SOURCE_WIDTH, jn as unmapValueFromSelect, jr as SITE_OVERLAY_HEADER_CLEARANCE_CSS_VAR, jt as createPageSurfaceEditorServices, ka as composeBoundary, ki as getLinkedContentEntryMeta, kn as mapCurrentValueForSelect, kr as projectRecurringSchedule, la as resolveEffectiveArrangement, li as RichText$1, ln as LinkWidgetProvider, lr as useEditorUiStore, ls as unsafeAsEditorBlockId, lt as resolvePreviewSidebarTab, ma as getCuratedSiteStyle, mi as publicEventsArraySchema, mn as FormRenderer, mr as planLinkedSaveHandoverRetention, mt as usePreviewAuth, n as useSiteChromeCustomizeOptional, na as blockLookFromContent, nn as ReferenceWidgetProvider, no as TabsTrigger, nr as BUILT_IN_REFERENCE_KINDS, ns as NO_BLOCK_VERSIONS, nt as enabledBackgroundModes, oa as formatSiteChromeBackgroundTokenLabel, oi as renderInlineText, on as EditorProvider, oo as DialogFooter, ot as planBackgroundTransition, pa as designRuntimeRulesForTheme, pi as calendarWindowQuerySchema, pr as activeLinkedSaveHandover, pt as renewPreviewSession, q as PreviewDesignHistoryOrderProvider, qi as heroCtaRowFragment, qo as cn, qr as mergeContentWithBlockStyleOverrides, qt as InlineTextField, ra as readBlockComposition, ri as parseBlockIconValue, rn as useRichTextImagePicker, ro as Dialog, rs as readEditorBlockVersionsFromPlacement, rt as imagePoolForOverride, sa as arrangementManifestFromVariants, si as logger, sn as useEditor, so as DialogHeader, st as rankBackgroundImagePoolItems, t as SiteChromeCustomizeProvider, ta as arrangementHooksFromContent, ti as buildAppointmentServicesView, tn as ReferenceField, to as TabsList, ts as sameMailingListPlacementTargeting, tt as defaultBackgroundOverrideForMode, u as PreviewThemeOverlayProvider, ua as resolveModeArrangement, ui as getAtPath, ur as useEditorUiStoreInstance, us as assertNever$2, ut as createGuardedPreviewApiClient, va as gradientToCss, vi as resolvePageRouteTarget, vn as DEFAULT_LAUNCH_READINESS_INPUT, vr as resolveRenderedValues, vt as PreviewRichTextEditor, wi as inlineTextToPlainText, wn as ImageResolveContextProvider, wr as createCustomBlockRegistry, wt as EditableBlockProvider, xa as deriveSiteStyleBlockPolicy, xi as isRecord$8, xn as useMediaEditorOptional, xo as Upload, xr as isSupportedLoaderEndpoint, xt as PREVIEW_EDITABLE_OUTLINE, ya as GRADIENT_PRESETS, yi as resolveRouteTarget, yn as deriveLaunchReadiness, yt as PreviewInlineTextEditor, zi as faqHeadingFragment, zn as isHeaderField, zr as systemCustomizeFacetCurrentValue, zt as createSiteOptionWidgetAdapters } from "./SiteChromeCustomizeContext-CgNuBHC0.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";
|
|
@@ -563,7 +563,7 @@ function pageBlockPosition(index, blockCount) {
|
|
|
563
563
|
//#endregion
|
|
564
564
|
//#region ../blocks/src/pageRendererContracts.ts
|
|
565
565
|
function buildPageRendererRootRuntime(dataContext) {
|
|
566
|
-
const { siteId = null, siteName, pageId = null, pathname = null, bookingTimeZone, previewStage = "published", apiBaseUrl = null, portalToken = null, readAuthority, bookingOfferingPresets = [], appointmentServicePathPrefix = null, mailingList = { tag: "not_configured" },
|
|
566
|
+
const { siteId = null, siteName, pageId = null, pathname = null, bookingTimeZone, previewStage = "published", apiBaseUrl = null, portalToken = null, readAuthority, bookingOfferingPresets = [], appointmentServicePathPrefix = null, mailingList = { tag: "not_configured" }, loaderFailures = {} } = dataContext ?? {};
|
|
567
567
|
return {
|
|
568
568
|
siteId,
|
|
569
569
|
demoEmailSuppressed: resolveDemoEmailSuppression(dataContext),
|
|
@@ -578,7 +578,6 @@ function buildPageRendererRootRuntime(dataContext) {
|
|
|
578
578
|
bookingOfferingPresets,
|
|
579
579
|
appointmentServicePathPrefix,
|
|
580
580
|
mailingList,
|
|
581
|
-
eventRegistrationOverlayEnabled,
|
|
582
581
|
loaderFailures
|
|
583
582
|
};
|
|
584
583
|
}
|
|
@@ -1292,7 +1291,7 @@ function planNewsletterBlockSubmission(placement) {
|
|
|
1292
1291
|
function planNewsletterPreviewSubmission(placement) {
|
|
1293
1292
|
if (!placement.publishedContentId) return { tag: "unpublished-form" };
|
|
1294
1293
|
if (!placement.publishedContent) return { tag: "unpublished-settings" };
|
|
1295
|
-
const draft = parseMailingListPlacementTargeting(placement.renderedContent.targeting
|
|
1294
|
+
const draft = parseMailingListPlacementTargeting(placement.renderedContent.targeting);
|
|
1296
1295
|
const published = parseMailingListPlacementTargeting(placement.publishedContent.targeting);
|
|
1297
1296
|
if (!draft.ok || !published.ok || !sameMailingListPlacementTargeting(draft.value, published.value)) return { tag: "unpublished-settings" };
|
|
1298
1297
|
const sourceRef = buildMailingListSignupBlockSourceRef(placement.blockId, placement.publishedContentId);
|
|
@@ -1412,7 +1411,8 @@ function preparedBlockProps(entry, content, data, input) {
|
|
|
1412
1411
|
block: entry.block,
|
|
1413
1412
|
themeResources: input.themeResources,
|
|
1414
1413
|
dataContext: input.dataContext,
|
|
1415
|
-
imageResolveContext: input.imageResolveContext
|
|
1414
|
+
imageResolveContext: input.imageResolveContext,
|
|
1415
|
+
routeMap: input.routeMap
|
|
1416
1416
|
}),
|
|
1417
1417
|
bookingTimeZone: input.dataContext?.bookingTimeZone
|
|
1418
1418
|
};
|
|
@@ -1432,6 +1432,12 @@ function buildBlockOverrideProps(input) {
|
|
|
1432
1432
|
...blockSessionProps(dataContext),
|
|
1433
1433
|
...blockSubjectProps(dataContext),
|
|
1434
1434
|
imageResolveContext: input.imageResolveContext,
|
|
1435
|
+
linkResolveContext: {
|
|
1436
|
+
routes: input.routeMap ?? dataContext?.routes,
|
|
1437
|
+
pagesByIdentifier: dataContext?.pagesByIdentifier,
|
|
1438
|
+
entriesByIdentifier: dataContext?.entriesByIdentifier,
|
|
1439
|
+
stage: dataContext?.previewStage
|
|
1440
|
+
},
|
|
1435
1441
|
blockId: block.id ?? null,
|
|
1436
1442
|
contentVersionId: block.contentVersionId ?? null,
|
|
1437
1443
|
...newsletterBlockProps(block, input.content, dataContext?.previewStage),
|
|
@@ -1488,7 +1494,7 @@ function arrangementResolvedData(kind, content, data) {
|
|
|
1488
1494
|
function arrangementResolvedContent(kind, content, data, context) {
|
|
1489
1495
|
if (content._effectiveLook === void 0 || !data || kind !== "block.offerings-preview" && kind !== "block.appointment-services") return content;
|
|
1490
1496
|
if (kind === "block.appointment-services") return appointmentArrangementContent(content, data, context);
|
|
1491
|
-
const normalized = offeringsPreviewBlockDefinition
|
|
1497
|
+
const normalized = normalizeBlockContent(offeringsPreviewBlockDefinition, content);
|
|
1492
1498
|
return withCardListPhotoCount(content, content.showPhotos === false ? 0 : offeringsPreviewPhotoCount({
|
|
1493
1499
|
...normalized,
|
|
1494
1500
|
presets: context?.bookingOfferingPresets,
|
|
@@ -1889,13 +1895,11 @@ function renderSystemBlockElement(input) {
|
|
|
1889
1895
|
* referential equality of all props that affect rendering. Standard React.memo
|
|
1890
1896
|
* wouldn't catch all the render triggers from the editor store.
|
|
1891
1897
|
*/
|
|
1892
|
-
const MemoBlockSection = React$1.memo(function MemoBlockSection({ themeResources, entry: preparedEntry, audience, dataContext, registry, wrapBlock, imageResolveContext, previewAuthoring }) {
|
|
1893
|
-
const entry = preparedEntry
|
|
1894
|
-
const prepared = preparedEntry.prepared;
|
|
1898
|
+
const MemoBlockSection = React$1.memo(function MemoBlockSection({ themeResources, entry: preparedEntry, routeMap, audience, dataContext, registry, wrapBlock, imageResolveContext, previewAuthoring }) {
|
|
1899
|
+
const { entry, prepared } = preparedEntry;
|
|
1895
1900
|
const block = entry.block;
|
|
1896
1901
|
const perfStart = globalThis.process?.env?.DEBUG_PERF === "1" && typeof window === "undefined" ? Date.now() : 0;
|
|
1897
|
-
const
|
|
1898
|
-
const resolvedImageResolveContext = imageResolveContext ?? fallbackImageResolveContext;
|
|
1902
|
+
const resolvedImageResolveContext = imageResolveContext ?? getCurrentResolveImageUrlContext();
|
|
1899
1903
|
function finish(node, meta) {
|
|
1900
1904
|
if (!perfStart) return node;
|
|
1901
1905
|
const durationMs = Date.now() - perfStart;
|
|
@@ -1935,7 +1939,8 @@ const MemoBlockSection = React$1.memo(function MemoBlockSection({ themeResources
|
|
|
1935
1939
|
block,
|
|
1936
1940
|
themeResources,
|
|
1937
1941
|
dataContext,
|
|
1938
|
-
imageResolveContext: resolvedImageResolveContext
|
|
1942
|
+
imageResolveContext: resolvedImageResolveContext,
|
|
1943
|
+
routeMap
|
|
1939
1944
|
}) })), {
|
|
1940
1945
|
outcome: "overrideWithoutDefinition",
|
|
1941
1946
|
override: true,
|
|
@@ -3121,12 +3126,22 @@ function err(error) {
|
|
|
3121
3126
|
error
|
|
3122
3127
|
};
|
|
3123
3128
|
}
|
|
3129
|
+
const UUID_PATTERN = /^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$/i;
|
|
3130
|
+
function parseUuidBrand(value, unsafeConstructor) {
|
|
3131
|
+
if (typeof value !== "string") return err({ kind: "not_string" });
|
|
3132
|
+
const normalized = value.trim().toLowerCase();
|
|
3133
|
+
if (normalized.length === 0) return err({ kind: "empty_string" });
|
|
3134
|
+
if (!UUID_PATTERN.test(normalized)) return err({ kind: "invalid_uuid" });
|
|
3135
|
+
return ok(unsafeConstructor(normalized));
|
|
3136
|
+
}
|
|
3124
3137
|
const unsafeAsSiteId = (id) => id;
|
|
3138
|
+
const unsafeAsMediaAssetId = (id) => id;
|
|
3125
3139
|
const unsafeAsStorageBucketName = (value) => value;
|
|
3126
3140
|
const unsafeAsBookingSessionId = (id) => id;
|
|
3127
3141
|
const unsafeAsEntitlementId = (id) => id;
|
|
3128
3142
|
const unsafeAsSiteFontId = (id) => id;
|
|
3129
3143
|
const unsafeAsBookingRequirementId = (id) => id;
|
|
3144
|
+
const parseMediaAssetId = (value) => parseUuidBrand(value, unsafeAsMediaAssetId);
|
|
3130
3145
|
function fromArray(items) {
|
|
3131
3146
|
const [first, ...rest] = items;
|
|
3132
3147
|
if (first === void 0) return err("empty_array");
|
|
@@ -3150,6 +3165,34 @@ function isNonEmptyString(value) {
|
|
|
3150
3165
|
function hasText(value) {
|
|
3151
3166
|
return isNonEmptyString(value);
|
|
3152
3167
|
}
|
|
3168
|
+
const CONTROL_CHARACTER_PATTERN = /[\u0000-\u001f\u007f]/u;
|
|
3169
|
+
function containsUnsafePathSegmentCharacter(value) {
|
|
3170
|
+
return value.includes("/") || value.includes("\\") || CONTROL_CHARACTER_PATTERN.test(value);
|
|
3171
|
+
}
|
|
3172
|
+
function isReservedPathSegment(value) {
|
|
3173
|
+
return value === "." || value === "..";
|
|
3174
|
+
}
|
|
3175
|
+
function isUnsafePathSegment(segment) {
|
|
3176
|
+
return segment.trim().length === 0 || segment !== segment.trim() || isReservedPathSegment(segment) || containsUnsafePathSegmentCharacter(segment);
|
|
3177
|
+
}
|
|
3178
|
+
const STORAGE_OBJECT_CHARACTER = "A-Za-z0-9_!.*'() &$=@;:+,-";
|
|
3179
|
+
const unsupportedFilenameCharacters = new RegExp(`[^${STORAGE_OBJECT_CHARACTER}]+`, "gu");
|
|
3180
|
+
const supportedObjectKey = new RegExp(`^[/${STORAGE_OBJECT_CHARACTER}]+$`, "u");
|
|
3181
|
+
/** Validate without trimming or rewriting: supplied keys are object identities. */
|
|
3182
|
+
function parseWritableStoragePath(value) {
|
|
3183
|
+
if (typeof value !== "string" || value.split("/").some(isUnsafePathSegment)) return err("unsafe-path-segment");
|
|
3184
|
+
if (!supportedObjectKey.test(value)) return err("unsupported-storage-character");
|
|
3185
|
+
return ok(value);
|
|
3186
|
+
}
|
|
3187
|
+
/** Choose a new internal filename; never use this to rewrite an existing key. */
|
|
3188
|
+
function storageObjectFilename(filename, maxLength = 255) {
|
|
3189
|
+
const converted = filename.trim().normalize("NFKD").replace(/[\u0300-\u036f]/gu, "").replace(unsupportedFilenameCharacters, "-").trim();
|
|
3190
|
+
const usable = isUnsafePathSegment(converted) ? "upload" : converted;
|
|
3191
|
+
const extension = /\.[A-Za-z0-9]{1,16}$/u.exec(usable)?.[0] ?? "";
|
|
3192
|
+
const stem = extension.length > 0 ? usable.slice(0, -extension.length) : usable;
|
|
3193
|
+
const shortenedFilename = `${(/[A-Za-z0-9]/u.test(stem) || converted === filename.trim() ? stem : "upload").slice(0, Math.max(1, maxLength - extension.length)).trim() || "upload"}${extension}`;
|
|
3194
|
+
return isUnsafePathSegment(shortenedFilename) ? "upload" : shortenedFilename;
|
|
3195
|
+
}
|
|
3153
3196
|
const FILE_STORAGE_BUCKETS = {
|
|
3154
3197
|
publicSite: unsafeAsStorageBucketName("media"),
|
|
3155
3198
|
privateSite: unsafeAsStorageBucketName("site-files-private"),
|
|
@@ -3280,11 +3323,6 @@ function parseRelativeStoragePath(value) {
|
|
|
3280
3323
|
if (!validated.ok) return validated;
|
|
3281
3324
|
return ok$1(brandRelativeStoragePath(validated.value));
|
|
3282
3325
|
}
|
|
3283
|
-
function assertRelativeStoragePath(value) {
|
|
3284
|
-
const parsed = parseRelativeStoragePath(value);
|
|
3285
|
-
if (!parsed.ok) throw new Error(`Expected RelativeStoragePath, got ${parsed.error.tag}`);
|
|
3286
|
-
return parsed.value;
|
|
3287
|
-
}
|
|
3288
3326
|
function isRecord$6(value) {
|
|
3289
3327
|
return Boolean(value) && typeof value === "object" && !Array.isArray(value);
|
|
3290
3328
|
}
|
|
@@ -3584,6 +3622,129 @@ function parseCanonicalMediaIdentifier(value) {
|
|
|
3584
3622
|
});
|
|
3585
3623
|
return parsed;
|
|
3586
3624
|
}
|
|
3625
|
+
/** Strict stored-reference admission delegates the canonical identifier decision. */
|
|
3626
|
+
const mediaIdentifierSchema$1 = z.string().transform((value, context) => {
|
|
3627
|
+
const parsed = parseCanonicalMediaIdentifier(value);
|
|
3628
|
+
if (parsed.ok) return parsed.value;
|
|
3629
|
+
context.addIssue({
|
|
3630
|
+
code: "custom",
|
|
3631
|
+
message: "Expected a canonical media identifier"
|
|
3632
|
+
});
|
|
3633
|
+
return z.NEVER;
|
|
3634
|
+
});
|
|
3635
|
+
const mediaTypeDiscriminants = [
|
|
3636
|
+
"image",
|
|
3637
|
+
"video",
|
|
3638
|
+
"audio",
|
|
3639
|
+
"document",
|
|
3640
|
+
"spreadsheet",
|
|
3641
|
+
"archive"
|
|
3642
|
+
];
|
|
3643
|
+
const mediaAssetIdSchema = z.string().transform((value, context) => {
|
|
3644
|
+
const parsed = parseMediaAssetId(value);
|
|
3645
|
+
if (parsed.ok) return parsed.value;
|
|
3646
|
+
context.addIssue({
|
|
3647
|
+
code: "custom",
|
|
3648
|
+
message: "Expected a media asset ID"
|
|
3649
|
+
});
|
|
3650
|
+
return z.NEVER;
|
|
3651
|
+
});
|
|
3652
|
+
const nonemptyStorageValue = z.string().refine((value) => value.trim().length > 0);
|
|
3653
|
+
const renderableMediaAssetSchema = z.object({
|
|
3654
|
+
id: mediaAssetIdSchema,
|
|
3655
|
+
identifier: mediaIdentifierSchema$1,
|
|
3656
|
+
storageBucket: nonemptyStorageValue,
|
|
3657
|
+
storagePath: nonemptyStorageValue,
|
|
3658
|
+
mimeType: nonemptyStorageValue,
|
|
3659
|
+
filename: z.string().optional(),
|
|
3660
|
+
width: z.number().positive().nullable(),
|
|
3661
|
+
height: z.number().positive().nullable()
|
|
3662
|
+
});
|
|
3663
|
+
const hotspotSchema = z.object({
|
|
3664
|
+
x: z.number().min(0).max(1),
|
|
3665
|
+
y: z.number().min(0).max(1),
|
|
3666
|
+
radius: z.number().optional()
|
|
3667
|
+
});
|
|
3668
|
+
const rotationSchema = z.union([
|
|
3669
|
+
z.literal(0),
|
|
3670
|
+
z.literal(90),
|
|
3671
|
+
z.literal(180),
|
|
3672
|
+
z.literal(270)
|
|
3673
|
+
]);
|
|
3674
|
+
const rectSchema = z.tuple([
|
|
3675
|
+
z.number(),
|
|
3676
|
+
z.number(),
|
|
3677
|
+
z.number(),
|
|
3678
|
+
z.number()
|
|
3679
|
+
]);
|
|
3680
|
+
const aspectCropSchema = z.object({
|
|
3681
|
+
aspect: z.preprocess((value) => value == null ? void 0 : value, z.string().optional()),
|
|
3682
|
+
rect: z.preprocess((value) => value == null ? void 0 : value, rectSchema.optional()),
|
|
3683
|
+
hotspot: z.preprocess((value) => value == null ? void 0 : value, hotspotSchema.optional()),
|
|
3684
|
+
rotation: z.preprocess((value) => value == null ? void 0 : value, rotationSchema.optional())
|
|
3685
|
+
});
|
|
3686
|
+
const transformSchema = z.object({
|
|
3687
|
+
aspectCrops: z.preprocess((value) => {
|
|
3688
|
+
if (!value || typeof value !== "object" || Array.isArray(value)) return;
|
|
3689
|
+
return value;
|
|
3690
|
+
}, z.record(z.string(), aspectCropSchema.catch({}))).optional(),
|
|
3691
|
+
rect: rectSchema.optional(),
|
|
3692
|
+
hotspot: hotspotSchema.optional(),
|
|
3693
|
+
rotation: rotationSchema.optional()
|
|
3694
|
+
});
|
|
3695
|
+
const mediaPosterSchema = z.discriminatedUnion("tag", [z.object({
|
|
3696
|
+
tag: z.literal("media"),
|
|
3697
|
+
identifier: mediaIdentifierSchema$1
|
|
3698
|
+
}).strict(), z.object({
|
|
3699
|
+
tag: z.literal("external-src"),
|
|
3700
|
+
src: z.string().url()
|
|
3701
|
+
}).strict()]);
|
|
3702
|
+
const mediaUsageShape = {
|
|
3703
|
+
purpose: z.string().optional(),
|
|
3704
|
+
placeholder: z.boolean().default(true).optional(),
|
|
3705
|
+
alt: z.string().optional(),
|
|
3706
|
+
filename: z.string().optional(),
|
|
3707
|
+
width: z.number().optional(),
|
|
3708
|
+
height: z.number().optional(),
|
|
3709
|
+
poster: mediaPosterSchema.optional(),
|
|
3710
|
+
transform: transformSchema.optional()
|
|
3711
|
+
};
|
|
3712
|
+
const environmentExclusions = {
|
|
3713
|
+
assetId: z.never().optional(),
|
|
3714
|
+
id: z.never().optional(),
|
|
3715
|
+
src: z.never().optional(),
|
|
3716
|
+
storageBucket: z.never().optional(),
|
|
3717
|
+
storagePath: z.never().optional(),
|
|
3718
|
+
mimeType: z.never().optional()
|
|
3719
|
+
};
|
|
3720
|
+
const mediaBaseSchema = z.object({
|
|
3721
|
+
...mediaUsageShape,
|
|
3722
|
+
...environmentExclusions,
|
|
3723
|
+
identifier: mediaIdentifierSchema$1
|
|
3724
|
+
}).strict();
|
|
3725
|
+
mediaBaseSchema.extend({ type: z.literal("image") });
|
|
3726
|
+
mediaBaseSchema.extend({ type: z.literal("video") });
|
|
3727
|
+
const mediaSchema = mediaBaseSchema.extend({ type: z.enum(mediaTypeDiscriminants) });
|
|
3728
|
+
const externalMediaSchema = z.object({
|
|
3729
|
+
...mediaUsageShape,
|
|
3730
|
+
...environmentExclusions,
|
|
3731
|
+
type: z.enum(mediaTypeDiscriminants),
|
|
3732
|
+
src: z.string().min(1),
|
|
3733
|
+
identifier: z.never().optional()
|
|
3734
|
+
}).strict();
|
|
3735
|
+
const assetMediaSchema = z.object({
|
|
3736
|
+
...mediaUsageShape,
|
|
3737
|
+
...environmentExclusions,
|
|
3738
|
+
type: z.enum(mediaTypeDiscriminants),
|
|
3739
|
+
asset: renderableMediaAssetSchema,
|
|
3740
|
+
identifier: z.never().optional()
|
|
3741
|
+
}).strict();
|
|
3742
|
+
z.union([
|
|
3743
|
+
mediaSchema,
|
|
3744
|
+
externalMediaSchema,
|
|
3745
|
+
assetMediaSchema
|
|
3746
|
+
]);
|
|
3747
|
+
new Set(mediaTypeDiscriminants);
|
|
3587
3748
|
const MEDIA_KINDS = [
|
|
3588
3749
|
"image",
|
|
3589
3750
|
"video",
|
|
@@ -3614,9 +3775,10 @@ var MediaStorageError = class extends Error {
|
|
|
3614
3775
|
const pad = (value) => value.toString().padStart(2, "0");
|
|
3615
3776
|
const extractExtension = (filename) => {
|
|
3616
3777
|
if (!hasText(filename)) return "";
|
|
3617
|
-
const
|
|
3778
|
+
const internalFilename = storageObjectFilename(filename);
|
|
3779
|
+
const lastDot = internalFilename.lastIndexOf(".");
|
|
3618
3780
|
if (lastDot === -1) return "";
|
|
3619
|
-
return
|
|
3781
|
+
return internalFilename.slice(lastDot).toLowerCase();
|
|
3620
3782
|
};
|
|
3621
3783
|
const generateId = () => {
|
|
3622
3784
|
const crypto = globalThis.crypto;
|
|
@@ -3636,14 +3798,28 @@ const generateId = () => {
|
|
|
3636
3798
|
* since the site ID is prepended at runtime rather than stored in content data.
|
|
3637
3799
|
*/
|
|
3638
3800
|
const generateStoragePath = ({ filename, folder = "originals", variantKey, now = /* @__PURE__ */ new Date() }) => {
|
|
3639
|
-
const extension = extractExtension(filename);
|
|
3640
|
-
const year = now.getUTCFullYear();
|
|
3641
|
-
const month = pad(now.getUTCMonth() + 1);
|
|
3642
3801
|
const id = generateId();
|
|
3643
|
-
|
|
3644
|
-
|
|
3645
|
-
|
|
3802
|
+
const nowParts = {
|
|
3803
|
+
year: now.getUTCFullYear(),
|
|
3804
|
+
month: pad(now.getUTCMonth() + 1)
|
|
3805
|
+
};
|
|
3806
|
+
const path = decideGeneratedStoragePath({
|
|
3807
|
+
extension: extractExtension(filename),
|
|
3808
|
+
folder,
|
|
3809
|
+
...nowParts,
|
|
3810
|
+
id,
|
|
3811
|
+
variantKey: variantKey ?? (folder === "originals" ? id : generateId())
|
|
3812
|
+
});
|
|
3813
|
+
if (!path.ok) {
|
|
3814
|
+
const reason = typeof path.error === "string" ? path.error : path.error.tag;
|
|
3815
|
+
throw new Error(`Invalid generated storage path: ${reason}`);
|
|
3816
|
+
}
|
|
3817
|
+
return path.value;
|
|
3646
3818
|
};
|
|
3819
|
+
function decideGeneratedStoragePath(input) {
|
|
3820
|
+
const writable = parseWritableStoragePath(input.folder === "variants" ? `variants/${input.variantKey}/${input.id}${input.extension}` : input.folder === "imports" ? `imports/${input.variantKey}${input.extension}` : `originals/${input.year}/${input.month}/${input.id}${input.extension}`);
|
|
3821
|
+
return writable.ok ? parseRelativeStoragePath(writable.value) : writable;
|
|
3822
|
+
}
|
|
3647
3823
|
const DEFAULT_BUCKET = "media";
|
|
3648
3824
|
const MAX_LIMIT = 100;
|
|
3649
3825
|
const fileKindSchema = z.custom((value) => parseFileKindJson(value).ok, { message: "Invalid file kind JSON" });
|
|
@@ -4020,22 +4196,25 @@ function upsertById(assets, asset) {
|
|
|
4020
4196
|
return next;
|
|
4021
4197
|
}
|
|
4022
4198
|
function createRuntimeMediaAssetState(siteId, baseAssets) {
|
|
4199
|
+
const mediaAssetIndex = buildRenderableMediaAssetIndex(baseAssets);
|
|
4023
4200
|
return {
|
|
4024
4201
|
siteId,
|
|
4025
|
-
baseAssets:
|
|
4026
|
-
registeredAssets: []
|
|
4202
|
+
baseAssets: mediaAssetIndex?.assets ?? [],
|
|
4203
|
+
registeredAssets: [],
|
|
4204
|
+
mediaAssetIndex
|
|
4027
4205
|
};
|
|
4028
4206
|
}
|
|
4029
4207
|
function reduceRuntimeMediaAssetState(state, action) {
|
|
4030
4208
|
switch (action.type) {
|
|
4031
4209
|
case "siteSnapshotReplaced": {
|
|
4032
|
-
|
|
4033
|
-
|
|
4210
|
+
const { snapshot } = action;
|
|
4211
|
+
if (snapshot.siteId !== state.siteId) return snapshot;
|
|
4212
|
+
const nextBaseAssets = snapshot.baseAssets;
|
|
4034
4213
|
if (areEqualAssetLists(nextBaseAssets, state.baseAssets)) return state;
|
|
4035
4214
|
return {
|
|
4036
|
-
|
|
4215
|
+
...state,
|
|
4037
4216
|
baseAssets: nextBaseAssets,
|
|
4038
|
-
|
|
4217
|
+
mediaAssetIndex: state.registeredAssets.length ? indexRenderableMediaAssets(dedupeById([...nextBaseAssets, ...state.registeredAssets])) : snapshot.mediaAssetIndex
|
|
4039
4218
|
};
|
|
4040
4219
|
}
|
|
4041
4220
|
case "assetRegistered":
|
|
@@ -4044,31 +4223,11 @@ function reduceRuntimeMediaAssetState(state, action) {
|
|
|
4044
4223
|
if (nextRegisteredAssets === state.registeredAssets) return state;
|
|
4045
4224
|
return {
|
|
4046
4225
|
...state,
|
|
4047
|
-
registeredAssets: nextRegisteredAssets
|
|
4226
|
+
registeredAssets: nextRegisteredAssets,
|
|
4227
|
+
mediaAssetIndex: indexRenderableMediaAssets(dedupeById([...state.baseAssets, ...nextRegisteredAssets]))
|
|
4048
4228
|
};
|
|
4049
4229
|
}
|
|
4050
4230
|
}
|
|
4051
|
-
/**
|
|
4052
|
-
* Returns a freshly deduped merge of base and runtime assets.
|
|
4053
|
-
* Callers should memoize the result if referential stability matters downstream.
|
|
4054
|
-
*/
|
|
4055
|
-
function selectRuntimeMediaAssets(state) {
|
|
4056
|
-
return dedupeById([...state.baseAssets, ...state.registeredAssets]);
|
|
4057
|
-
}
|
|
4058
|
-
function createRuntimeMediaAssetSnapshotKey(siteId, assets) {
|
|
4059
|
-
return JSON.stringify({
|
|
4060
|
-
siteId,
|
|
4061
|
-
assets: dedupeById(assets).map((asset) => ({
|
|
4062
|
-
id: asset.id,
|
|
4063
|
-
identifier: asset.identifier ?? null,
|
|
4064
|
-
storageBucket: asset.storageBucket ?? null,
|
|
4065
|
-
storagePath: asset.storagePath ?? null,
|
|
4066
|
-
width: asset.width ?? null,
|
|
4067
|
-
height: asset.height ?? null,
|
|
4068
|
-
mimeType: asset.mimeType ?? null
|
|
4069
|
-
}))
|
|
4070
|
-
});
|
|
4071
|
-
}
|
|
4072
4231
|
//#endregion
|
|
4073
4232
|
//#region ../media-editor/src/provider.tsx
|
|
4074
4233
|
const DEFAULT_MEDIA_BUCKET = process.env.NEXT_PUBLIC_MEDIA_BUCKET ?? "media";
|
|
@@ -4085,15 +4244,14 @@ function toRuntimeMediaAssetIndexItem(asset) {
|
|
|
4085
4244
|
};
|
|
4086
4245
|
}
|
|
4087
4246
|
function MediaEditorProvider({ siteId, apiClient, children, bucket = DEFAULT_MEDIA_BUCKET, getPublicUrl, augmentRequest, uploaderOptions, bearerToken, supabaseUrl, mediaAssets }) {
|
|
4088
|
-
const
|
|
4089
|
-
const [runtimeMediaAssetState, dispatchRuntimeMediaAssetAction] = useReducer(reduceRuntimeMediaAssetState,
|
|
4247
|
+
const snapshot = useMemo(() => createRuntimeMediaAssetState(siteId, mediaAssets ?? []), [mediaAssets, siteId]);
|
|
4248
|
+
const [runtimeMediaAssetState, dispatchRuntimeMediaAssetAction] = useReducer(reduceRuntimeMediaAssetState, snapshot);
|
|
4090
4249
|
useEffect(() => {
|
|
4091
4250
|
dispatchRuntimeMediaAssetAction({
|
|
4092
4251
|
type: "siteSnapshotReplaced",
|
|
4093
|
-
|
|
4094
|
-
baseAssets: mediaAssets ?? []
|
|
4252
|
+
snapshot
|
|
4095
4253
|
});
|
|
4096
|
-
}, [
|
|
4254
|
+
}, [snapshot]);
|
|
4097
4255
|
const repo = useMemo(() => {
|
|
4098
4256
|
const clientFn = (request) => {
|
|
4099
4257
|
return apiClient(augmentRequest ? augmentRequest(request, { siteId }) : request);
|
|
@@ -4112,11 +4270,12 @@ function MediaEditorProvider({ siteId, apiClient, children, bucket = DEFAULT_MED
|
|
|
4112
4270
|
const imageResolveContext = useMemo(() => buildResolveImageUrlContext({
|
|
4113
4271
|
siteId,
|
|
4114
4272
|
supabaseUrl: supabaseUrl ?? (DEFAULT_SUPABASE_URL || void 0),
|
|
4115
|
-
|
|
4273
|
+
mediaAssetIndex: runtimeMediaAssetState.siteId === siteId ? runtimeMediaAssetState.mediaAssetIndex : snapshot.mediaAssetIndex
|
|
4116
4274
|
}), [
|
|
4117
4275
|
runtimeMediaAssetState,
|
|
4118
4276
|
siteId,
|
|
4119
|
-
supabaseUrl
|
|
4277
|
+
supabaseUrl,
|
|
4278
|
+
snapshot
|
|
4120
4279
|
]);
|
|
4121
4280
|
const resolvedSupabaseUrl = imageResolveContext.supabaseUrl;
|
|
4122
4281
|
const registerMediaAsset = useCallback((asset) => {
|
|
@@ -4124,7 +4283,7 @@ function MediaEditorProvider({ siteId, apiClient, children, bucket = DEFAULT_MED
|
|
|
4124
4283
|
dispatchRuntimeMediaAssetAction({
|
|
4125
4284
|
type: "assetRegistered",
|
|
4126
4285
|
siteId,
|
|
4127
|
-
asset: toRuntimeMediaAssetIndexItem(asset)
|
|
4286
|
+
asset: renderableMediaAssetSchema$1.parse(toRuntimeMediaAssetIndexItem(asset))
|
|
4128
4287
|
});
|
|
4129
4288
|
}, [siteId]);
|
|
4130
4289
|
const computePublicUrl = useCallback((asset) => {
|
|
@@ -4527,6 +4686,15 @@ function findPresetFromCss(css, tokens) {
|
|
|
4527
4686
|
return null;
|
|
4528
4687
|
}
|
|
4529
4688
|
//#endregion
|
|
4689
|
+
//#region ../editor/src/chrome/chromeLayers.ts
|
|
4690
|
+
/**
|
|
4691
|
+
* Where preview and editor chrome stacks against the site it shows. Sites
|
|
4692
|
+
* float their own overlays (the event booking bar sits at 12000 and its
|
|
4693
|
+
* booking panel at 14000): the chrome stays above a site's floating bars, so
|
|
4694
|
+
* its controls stay clickable while viewing, and below a site's modal panel.
|
|
4695
|
+
*/
|
|
4696
|
+
const PREVIEW_CHROME_Z_INDEX = 13e3;
|
|
4697
|
+
//#endregion
|
|
4530
4698
|
//#region ../editor-blocks/src/widgets/entry-picker/loaders.ts
|
|
4531
4699
|
function getStatusBadgeVariant(status) {
|
|
4532
4700
|
switch (status) {
|
|
@@ -4567,7 +4735,8 @@ async function loadRoutableContentItems({ apiClient, siteId }) {
|
|
|
4567
4735
|
endpoint: "getRoutableContent",
|
|
4568
4736
|
params: { siteId }
|
|
4569
4737
|
}));
|
|
4570
|
-
|
|
4738
|
+
if (!Array.isArray(payload?.items)) throw new Error("Invalid routable content response");
|
|
4739
|
+
return payload.items;
|
|
4571
4740
|
}
|
|
4572
4741
|
//#endregion
|
|
4573
4742
|
//#region ../editor-blocks/src/widgets/reference/dynamicAdapters.ts
|
|
@@ -4756,7 +4925,6 @@ const referenceLoaders = {
|
|
|
4756
4925
|
};
|
|
4757
4926
|
//#endregion
|
|
4758
4927
|
//#region ../preview-next/src/client/widgets/widgetAdapters.ts
|
|
4759
|
-
const routableContentCache = /* @__PURE__ */ new Map();
|
|
4760
4928
|
const entryPickerCache = /* @__PURE__ */ new Map();
|
|
4761
4929
|
const siteOptionItemsCache = /* @__PURE__ */ new Map();
|
|
4762
4930
|
/**
|
|
@@ -4834,23 +5002,10 @@ function createCachedReferenceAdapterLoader(kind, loader, previewClient, fallbac
|
|
|
4834
5002
|
};
|
|
4835
5003
|
}
|
|
4836
5004
|
function createPreviewLinkAdapters(previewClient) {
|
|
4837
|
-
return { fetchRoutableContent:
|
|
4838
|
-
|
|
4839
|
-
|
|
4840
|
-
|
|
4841
|
-
try {
|
|
4842
|
-
return await loadRoutableContentItems({
|
|
4843
|
-
apiClient: previewClient,
|
|
4844
|
-
siteId: currentSiteId
|
|
4845
|
-
});
|
|
4846
|
-
} catch (error) {
|
|
4847
|
-
routableContentCache.delete(currentSiteId);
|
|
4848
|
-
throw error;
|
|
4849
|
-
}
|
|
4850
|
-
})();
|
|
4851
|
-
setBoundedCache(routableContentCache, currentSiteId, promise);
|
|
4852
|
-
return promise;
|
|
4853
|
-
} };
|
|
5005
|
+
return { fetchRoutableContent: (siteId) => loadRoutableContentItems({
|
|
5006
|
+
apiClient: previewClient,
|
|
5007
|
+
siteId
|
|
5008
|
+
}) };
|
|
4854
5009
|
}
|
|
4855
5010
|
function createPreviewEntryPickerAdapter(previewClient) {
|
|
4856
5011
|
return {
|
|
@@ -6110,6 +6265,26 @@ function PreviewLeaseEditingMode() {
|
|
|
6110
6265
|
return null;
|
|
6111
6266
|
}
|
|
6112
6267
|
//#endregion
|
|
6268
|
+
//#region ../preview-next/src/client/preview/previewModeRootAttribute.ts
|
|
6269
|
+
/**
|
|
6270
|
+
* Marks the document root with the preview's mode while the preview shell is
|
|
6271
|
+
* mounted: "view" or "edit". Site CSS keys off it to put floating site
|
|
6272
|
+
* overlays (`[data-rb-site-overlay]`) away while editing, without the site
|
|
6273
|
+
* knowing about the editor.
|
|
6274
|
+
*/
|
|
6275
|
+
const PREVIEW_MODE_ATTRIBUTE = "data-rb-preview-mode";
|
|
6276
|
+
function previewModeValue(isEditingMode) {
|
|
6277
|
+
return isEditingMode ? "edit" : "view";
|
|
6278
|
+
}
|
|
6279
|
+
/** Follows mode changes, and leaves the root as it found it on unmount. */
|
|
6280
|
+
function usePreviewModeRootAttribute(isEditingMode) {
|
|
6281
|
+
useEffect(() => {
|
|
6282
|
+
const root = document.documentElement;
|
|
6283
|
+
root.setAttribute(PREVIEW_MODE_ATTRIBUTE, previewModeValue(isEditingMode));
|
|
6284
|
+
return () => root.removeAttribute(PREVIEW_MODE_ATTRIBUTE);
|
|
6285
|
+
}, [isEditingMode]);
|
|
6286
|
+
}
|
|
6287
|
+
//#endregion
|
|
6113
6288
|
//#region ../preview-next/src/client/preview/previewSetupGuidance.ts
|
|
6114
6289
|
function resolvePreviewSetupBannerState(input) {
|
|
6115
6290
|
if (input.authMode === "onboardingGrant") return input.dashboardUnlocked ? "dashboard_ready" : "awaiting_confirmation";
|
|
@@ -6970,15 +7145,23 @@ function PreviewChromeLayerProvider({ children }) {
|
|
|
6970
7145
|
portalTarget,
|
|
6971
7146
|
subscribeLayout
|
|
6972
7147
|
}), [portalTarget, subscribeLayout]);
|
|
7148
|
+
const layerHost = useBodyHost();
|
|
6973
7149
|
return /* @__PURE__ */ jsxs(PreviewChromeLayerContext.Provider, {
|
|
6974
7150
|
value,
|
|
6975
|
-
children: [children, /* @__PURE__ */ jsx("div", {
|
|
7151
|
+
children: [children, layerHost ? createPortal(/* @__PURE__ */ jsx("div", {
|
|
6976
7152
|
ref: setPortalTarget,
|
|
6977
|
-
className: "pointer-events-none fixed inset-0
|
|
7153
|
+
className: "pointer-events-none fixed inset-0",
|
|
7154
|
+
style: { zIndex: PREVIEW_CHROME_Z_INDEX },
|
|
6978
7155
|
"data-preview-chrome-layer": ""
|
|
6979
|
-
})]
|
|
7156
|
+
}), layerHost) : null]
|
|
6980
7157
|
});
|
|
6981
7158
|
}
|
|
7159
|
+
/** The document body once mounted; null during server rendering and hydration. */
|
|
7160
|
+
function useBodyHost() {
|
|
7161
|
+
const [host, setHost] = useState(null);
|
|
7162
|
+
useEffect(() => setHost(document.body), []);
|
|
7163
|
+
return host;
|
|
7164
|
+
}
|
|
6982
7165
|
/** Portal style writes are consequences of measurement, not new anchor changes. */
|
|
6983
7166
|
function hasPreviewAnchorMutation(records, portalTarget) {
|
|
6984
7167
|
return records.some(({ target }) => !portalTarget.contains(target));
|
|
@@ -8418,10 +8601,10 @@ function resolveShellThemeRoles(props) {
|
|
|
8418
8601
|
}
|
|
8419
8602
|
const previewContainerResponsiveEnabled = process.env.NEXT_PUBLIC_ENABLE_PREVIEW_CONTAINER_RESPONSIVE !== "false";
|
|
8420
8603
|
const PreviewEditorSidebar = React.lazy(async () => {
|
|
8421
|
-
return { default: (await import("./PreviewEditorSidebar-
|
|
8604
|
+
return { default: (await import("./PreviewEditorSidebar-jI_4DTZY.mjs")).PreviewEditorSidebar };
|
|
8422
8605
|
});
|
|
8423
8606
|
const PreviewEditorUI = React.lazy(async () => {
|
|
8424
|
-
return { default: (await import("./PreviewEditorUI-
|
|
8607
|
+
return { default: (await import("./PreviewEditorUI-ORkVZhfu.mjs")).PreviewEditorUI };
|
|
8425
8608
|
});
|
|
8426
8609
|
const previewPaneContainmentStyle = {
|
|
8427
8610
|
contain: "layout paint",
|
|
@@ -8504,6 +8687,7 @@ function PreviewShellLayout(props) {
|
|
|
8504
8687
|
const siteChromeRenderModel = layout?.siteChromeRenderModel ?? null;
|
|
8505
8688
|
const surfaceDocument = useMemo(() => resolvePreviewChromeSurface(surfaceId), [surfaceId]);
|
|
8506
8689
|
const isOpen = usePreviewDrawerOpen();
|
|
8690
|
+
usePreviewModeRootAttribute(useEditor().isEditingMode);
|
|
8507
8691
|
const setDrawerOpen = useEditorUiStore((s) => s.setDrawerOpen);
|
|
8508
8692
|
const sidebarTab = useEditorUiStore((s) => s.previewSidebarTab);
|
|
8509
8693
|
const setPreviewSidebarActiveTab = useEditorUiStore((s) => s.setPreviewSidebarTab);
|
|
@@ -9704,48 +9888,40 @@ function isRecord(value) {
|
|
|
9704
9888
|
}
|
|
9705
9889
|
//#endregion
|
|
9706
9890
|
//#region ../preview-next/src/client/blocks/previewCustomizeSelectedMedia.ts
|
|
9707
|
-
function selectedImageFromMediaValue(value) {
|
|
9708
|
-
if (value?.type !== "image"
|
|
9709
|
-
const
|
|
9710
|
-
|
|
9711
|
-
|
|
9712
|
-
|
|
9713
|
-
|
|
9714
|
-
|
|
9715
|
-
|
|
9716
|
-
|
|
9717
|
-
|
|
9718
|
-
|
|
9719
|
-
|
|
9720
|
-
|
|
9891
|
+
function selectedImageFromMediaValue(value, index) {
|
|
9892
|
+
if (value?.type !== "image") return null;
|
|
9893
|
+
const resolved = resolveManagedMediaReference(value, index);
|
|
9894
|
+
return resolved.kind === "resolved" ? {
|
|
9895
|
+
reference: value,
|
|
9896
|
+
imageAsset: resolved.asset
|
|
9897
|
+
} : null;
|
|
9898
|
+
}
|
|
9899
|
+
function selectedImageFromRenderableAsset(source) {
|
|
9900
|
+
const asset = renderableMediaAssetSchema$1.parse({
|
|
9901
|
+
...source,
|
|
9902
|
+
width: source.width ?? null,
|
|
9903
|
+
height: source.height ?? null
|
|
9904
|
+
});
|
|
9721
9905
|
return {
|
|
9722
|
-
|
|
9723
|
-
|
|
9906
|
+
reference: {
|
|
9907
|
+
type: "image",
|
|
9908
|
+
identifier: mediaIdentifierSchema$2.parse(asset.identifier)
|
|
9909
|
+
},
|
|
9910
|
+
imageAsset: asset
|
|
9724
9911
|
};
|
|
9725
9912
|
}
|
|
9726
9913
|
function imagePoolWithSelectedImage(input) {
|
|
9727
|
-
|
|
9728
|
-
|
|
9914
|
+
const selection = input.selectedImage;
|
|
9915
|
+
if (input.override.kind !== "image" || selection?.reference.identifier !== input.override.reference.identifier) return input.imagePool;
|
|
9729
9916
|
return [{
|
|
9730
|
-
|
|
9917
|
+
reference: input.override.reference,
|
|
9731
9918
|
source: "general-media",
|
|
9732
|
-
mediaAsset:
|
|
9733
|
-
}, ...input.imagePool.filter((item) => item.
|
|
9919
|
+
mediaAsset: selection.imageAsset
|
|
9920
|
+
}, ...input.imagePool.filter((item) => item.reference.identifier !== selection.reference.identifier)];
|
|
9734
9921
|
}
|
|
9735
|
-
function
|
|
9736
|
-
if (input.selectedImage?.
|
|
9737
|
-
return input.imagePool?.find((item) => item.
|
|
9738
|
-
}
|
|
9739
|
-
function renderableImageAssetFromSource(asset) {
|
|
9740
|
-
return {
|
|
9741
|
-
id: asset.id,
|
|
9742
|
-
...typeof asset.identifier === "string" ? { identifier: asset.identifier } : {},
|
|
9743
|
-
...typeof asset.storageBucket === "string" ? { storageBucket: asset.storageBucket } : {},
|
|
9744
|
-
...typeof asset.storagePath === "string" ? { storagePath: asset.storagePath } : {},
|
|
9745
|
-
...typeof asset.width === "number" ? { width: asset.width } : {},
|
|
9746
|
-
...typeof asset.height === "number" ? { height: asset.height } : {},
|
|
9747
|
-
...typeof asset.mimeType === "string" ? { mimeType: asset.mimeType } : {}
|
|
9748
|
-
};
|
|
9922
|
+
function selectedOrPooledImageAssetForReference(input) {
|
|
9923
|
+
if (input.selectedImage?.reference.identifier === input.reference.identifier) return input.selectedImage.imageAsset;
|
|
9924
|
+
return input.imagePool?.find((item) => item.reference.identifier === input.reference.identifier)?.mediaAsset;
|
|
9749
9925
|
}
|
|
9750
9926
|
//#endregion
|
|
9751
9927
|
//#region ../preview-next/src/client/blocks/previewCustomizeActions.ts
|
|
@@ -9805,9 +9981,9 @@ function setPageDesignBlockBackground(input) {
|
|
|
9805
9981
|
imagePool
|
|
9806
9982
|
}), input.override);
|
|
9807
9983
|
if (plan.kind !== "apply") return null;
|
|
9808
|
-
const imageAsset = plan.override.kind === "image" ?
|
|
9984
|
+
const imageAsset = plan.override.kind === "image" ? selectedOrPooledImageAssetForReference({
|
|
9809
9985
|
imagePool: input.imagePool,
|
|
9810
|
-
|
|
9986
|
+
reference: plan.override.reference,
|
|
9811
9987
|
selectedImage: input.selectedImage
|
|
9812
9988
|
}) : void 0;
|
|
9813
9989
|
return {
|
|
@@ -10343,7 +10519,7 @@ function useMediaQuery(query) {
|
|
|
10343
10519
|
}
|
|
10344
10520
|
//#endregion
|
|
10345
10521
|
//#region ../preview-next/src/client/blocks/BlockBackgroundChooser.tsx
|
|
10346
|
-
function BackgroundChooser({ capability, current, imagePoolStatus, onChoose }) {
|
|
10522
|
+
function BackgroundChooser({ editingSlot, capability, current, imagePoolStatus, onChoose }) {
|
|
10347
10523
|
const chooseFromClick = (override) => (event) => {
|
|
10348
10524
|
event.preventDefault();
|
|
10349
10525
|
event.stopPropagation();
|
|
@@ -10363,6 +10539,7 @@ function BackgroundChooser({ capability, current, imagePoolStatus, onChoose }) {
|
|
|
10363
10539
|
chooseFromClick
|
|
10364
10540
|
}) : null,
|
|
10365
10541
|
current.kind === "image" ? /* @__PURE__ */ jsx(BackgroundImageOptions, {
|
|
10542
|
+
editingSlot,
|
|
10366
10543
|
capability,
|
|
10367
10544
|
current,
|
|
10368
10545
|
imagePoolStatus,
|
|
@@ -10478,7 +10655,7 @@ function SelectedGradient({ gradientId, onReset }) {
|
|
|
10478
10655
|
}) : null]
|
|
10479
10656
|
});
|
|
10480
10657
|
}
|
|
10481
|
-
function BackgroundImageOptions({ capability, current, imagePoolStatus, onChoose, chooseFromClick }) {
|
|
10658
|
+
function BackgroundImageOptions({ editingSlot, capability, current, imagePoolStatus, onChoose, chooseFromClick }) {
|
|
10482
10659
|
const mediaEditorContext = useMediaEditorOptional();
|
|
10483
10660
|
const [mediaPickerOpenKey, setMediaPickerOpenKey] = useState(0);
|
|
10484
10661
|
if (!capability.modes.includes("image")) return null;
|
|
@@ -10493,18 +10670,19 @@ function BackgroundImageOptions({ capability, current, imagePoolStatus, onChoose
|
|
|
10493
10670
|
className: "space-y-1",
|
|
10494
10671
|
children: images.map((item) => /* @__PURE__ */ jsx(ImagePoolButton, {
|
|
10495
10672
|
item,
|
|
10496
|
-
selected: current.
|
|
10673
|
+
selected: current.reference.identifier === item.reference.identifier,
|
|
10497
10674
|
thumbnailUrl: backgroundImagePreviewUrl(item, mediaEditorContext),
|
|
10498
10675
|
onClick: chooseFromClick({
|
|
10499
10676
|
kind: "image",
|
|
10500
|
-
|
|
10677
|
+
reference: item.reference
|
|
10501
10678
|
})
|
|
10502
|
-
}, `${item.source}:${item.
|
|
10679
|
+
}, `${item.source}:${item.reference.identifier}`))
|
|
10503
10680
|
}) : /* @__PURE__ */ jsx("p", {
|
|
10504
10681
|
className: "text-xs text-muted-foreground",
|
|
10505
10682
|
children: imagePoolStatus === "loading" ? "Loading images..." : "No background-ready images yet."
|
|
10506
10683
|
}),
|
|
10507
10684
|
mediaPickerOpenKey > 0 && mediaEditorContext ? /* @__PURE__ */ jsx(BackgroundMediaPicker, {
|
|
10685
|
+
editingSlot,
|
|
10508
10686
|
openKey: mediaPickerOpenKey,
|
|
10509
10687
|
onChoose,
|
|
10510
10688
|
onDone: () => setMediaPickerOpenKey(0)
|
|
@@ -10550,19 +10728,21 @@ function ImagePoolButton({ item, selected, thumbnailUrl, onClick }) {
|
|
|
10550
10728
|
})
|
|
10551
10729
|
});
|
|
10552
10730
|
}
|
|
10553
|
-
function BackgroundMediaPicker({ openKey, onChoose, onDone }) {
|
|
10731
|
+
function BackgroundMediaPicker({ editingSlot, openKey, onChoose, onDone }) {
|
|
10732
|
+
const mediaEditorContext = useMediaEditorOptional();
|
|
10554
10733
|
const chooseMediaValue = (value) => {
|
|
10555
|
-
const selectedImage = selectedImageFromMediaValue(value);
|
|
10734
|
+
const selectedImage = selectedImageFromMediaValue(value, mediaEditorContext?.imageResolveContext.mediaAssetIndex);
|
|
10556
10735
|
if (!selectedImage) return;
|
|
10557
10736
|
onChoose({
|
|
10558
10737
|
kind: "image",
|
|
10559
|
-
|
|
10738
|
+
reference: selectedImage.reference
|
|
10560
10739
|
}, { selectedImage });
|
|
10561
10740
|
onDone();
|
|
10562
10741
|
};
|
|
10563
10742
|
return /* @__PURE__ */ jsx("div", {
|
|
10564
10743
|
onClick: (event) => event.stopPropagation(),
|
|
10565
10744
|
children: /* @__PURE__ */ jsx(MediaEditor, {
|
|
10745
|
+
editingSlot,
|
|
10566
10746
|
value: void 0,
|
|
10567
10747
|
onChange: chooseMediaValue,
|
|
10568
10748
|
allowedKinds: ["image"],
|
|
@@ -10576,10 +10756,11 @@ function BackgroundMediaPicker({ openKey, onChoose, onDone }) {
|
|
|
10576
10756
|
},
|
|
10577
10757
|
onUploadComplete: (asset) => {
|
|
10578
10758
|
if (backgroundMediaPickerAssetSelection(asset).tag === "disabled") return;
|
|
10759
|
+
const selectedImage = selectedImageFromRenderableAsset(asset);
|
|
10579
10760
|
onChoose({
|
|
10580
10761
|
kind: "image",
|
|
10581
|
-
|
|
10582
|
-
}, { selectedImage
|
|
10762
|
+
reference: selectedImage.reference
|
|
10763
|
+
}, { selectedImage });
|
|
10583
10764
|
onDone();
|
|
10584
10765
|
}
|
|
10585
10766
|
}, openKey)
|
|
@@ -10605,7 +10786,7 @@ function BackgroundPreviewSwatch({ override, imagePool }) {
|
|
|
10605
10786
|
style: { backgroundImage: gradientPreviewCss(override.gradientId) }
|
|
10606
10787
|
});
|
|
10607
10788
|
case "image":
|
|
10608
|
-
const imageItem = imagePool.find((item) => item.
|
|
10789
|
+
const imageItem = imagePool.find((item) => item.reference.identifier === override.reference.identifier);
|
|
10609
10790
|
const thumbnailUrl = imageItem ? backgroundImagePreviewUrl(imageItem, mediaEditorContext) : void 0;
|
|
10610
10791
|
return /* @__PURE__ */ jsx("span", {
|
|
10611
10792
|
className: `${baseClassName} bg-muted`,
|
|
@@ -10622,13 +10803,7 @@ function backgroundImagePreviewUrl(item, mediaEditorContext) {
|
|
|
10622
10803
|
if (!asset) return void 0;
|
|
10623
10804
|
return resolveImageUrlWithContext({
|
|
10624
10805
|
type: "image",
|
|
10625
|
-
|
|
10626
|
-
...asset.identifier ? { identifier: asset.identifier } : {},
|
|
10627
|
-
storageBucket: asset.storageBucket,
|
|
10628
|
-
storagePath: asset.storagePath,
|
|
10629
|
-
...asset.width != null ? { width: asset.width } : {},
|
|
10630
|
-
...asset.height != null ? { height: asset.height } : {},
|
|
10631
|
-
mimeType: asset.mimeType
|
|
10806
|
+
asset
|
|
10632
10807
|
}, {
|
|
10633
10808
|
width: 72,
|
|
10634
10809
|
height: 48,
|
|
@@ -10722,7 +10897,7 @@ function BlockToolbar({ blockId, blockKind, content, bookingOfferingPresets, the
|
|
|
10722
10897
|
const backgroundCycleImagePool = useMemo(() => {
|
|
10723
10898
|
if (currentBackground.kind === "supported" && currentBackground.override.kind === "image") {
|
|
10724
10899
|
const currentOverride = currentBackground.override;
|
|
10725
|
-
if (!backgroundImagePool.some((item) => item.
|
|
10900
|
+
if (!backgroundImagePool.some((item) => item.reference.identifier === currentOverride.reference.identifier)) return rankBackgroundImagePoolItems(dedupeBackgroundImagePool([...imagePoolForOverride(currentOverride), ...backgroundImagePool]));
|
|
10726
10901
|
}
|
|
10727
10902
|
return rankBackgroundImagePoolItems(backgroundImagePool);
|
|
10728
10903
|
}, [backgroundImagePool, currentBackground]);
|
|
@@ -10930,6 +11105,7 @@ function BlockToolbar({ blockId, blockKind, content, bookingOfferingPresets, the
|
|
|
10930
11105
|
enabledBackgroundModeList,
|
|
10931
11106
|
handleBackgroundCycle,
|
|
10932
11107
|
imagePoolStatus: backgroundImagePoolStatus,
|
|
11108
|
+
editingSlot: `${blockId}:_sectionStyles.background.image`,
|
|
10933
11109
|
mergedBackgroundImagePool,
|
|
10934
11110
|
onChooseBackgroundOverride: chooseBackgroundOverride,
|
|
10935
11111
|
onToggleBackgroundChooser: () => setBackgroundChooserOpen((open) => !open)
|
|
@@ -11047,8 +11223,11 @@ function PhoneBlockDock({ themeSource, children }) {
|
|
|
11047
11223
|
if (typeof document === "undefined") return null;
|
|
11048
11224
|
return createPortal(/* @__PURE__ */ jsx("div", {
|
|
11049
11225
|
"data-preview-block-dock": "",
|
|
11050
|
-
style:
|
|
11051
|
-
|
|
11226
|
+
style: {
|
|
11227
|
+
...themeSource ? readThemeCustomProperties(themeSource) : {},
|
|
11228
|
+
zIndex: PREVIEW_CHROME_Z_INDEX
|
|
11229
|
+
},
|
|
11230
|
+
className: "builder-dashboard-chrome-theme fixed inset-x-2 bottom-[calc(var(--builder-editor-chrome-offset,0px)+0.5rem)] flex flex-col items-stretch gap-1.5 rounded-xl border bg-background/95 p-2 text-foreground shadow-xl",
|
|
11052
11231
|
children
|
|
11053
11232
|
}), document.body);
|
|
11054
11233
|
}
|
|
@@ -11136,6 +11315,7 @@ function renderBlockCustomizeBuiltinRow(row, context) {
|
|
|
11136
11315
|
context.onToggleBackgroundChooser();
|
|
11137
11316
|
},
|
|
11138
11317
|
chooser: /* @__PURE__ */ jsx(BackgroundChooser, {
|
|
11318
|
+
editingSlot: context.editingSlot,
|
|
11139
11319
|
capability: context.backgroundCapability,
|
|
11140
11320
|
current: context.currentBackground.override,
|
|
11141
11321
|
imagePoolStatus: context.imagePoolStatus,
|
|
@@ -11229,7 +11409,7 @@ function backgroundOverrideValueLabel(override, imagePool) {
|
|
|
11229
11409
|
case "default": return "No colour chosen";
|
|
11230
11410
|
case "color": return formatTokenLabel(override.token);
|
|
11231
11411
|
case "gradient": return gradientLabel(override.gradientId);
|
|
11232
|
-
case "image": return imagePool.find((item) => item.
|
|
11412
|
+
case "image": return imagePool.find((item) => item.reference.identifier === override.reference.identifier)?.label ?? "Image";
|
|
11233
11413
|
}
|
|
11234
11414
|
}
|
|
11235
11415
|
function backgroundModeLabel(mode) {
|
|
@@ -11251,24 +11431,21 @@ function readBackgroundColorPaletteSnapshot() {
|
|
|
11251
11431
|
return entries.length > 0 ? Object.fromEntries(entries) : null;
|
|
11252
11432
|
}
|
|
11253
11433
|
function dedupeBackgroundImagePool(items) {
|
|
11254
|
-
|
|
11255
|
-
|
|
11256
|
-
|
|
11257
|
-
|
|
11258
|
-
|
|
11259
|
-
|
|
11260
|
-
|
|
11261
|
-
|
|
11262
|
-
|
|
11263
|
-
|
|
11264
|
-
|
|
11265
|
-
|
|
11266
|
-
|
|
11267
|
-
|
|
11268
|
-
|
|
11269
|
-
deduped.push(item);
|
|
11270
|
-
}
|
|
11271
|
-
return deduped;
|
|
11434
|
+
return Array.from(items.reduce((pool, item) => {
|
|
11435
|
+
const key = item.reference.identifier;
|
|
11436
|
+
const existing = pool.get(key);
|
|
11437
|
+
const decided = existing ? existing.source === "current" ? {
|
|
11438
|
+
...existing,
|
|
11439
|
+
mediaAsset: existing.mediaAsset ?? item.mediaAsset,
|
|
11440
|
+
label: existing.label ?? item.label,
|
|
11441
|
+
rank: existing.rank ?? item.rank
|
|
11442
|
+
} : {
|
|
11443
|
+
...existing,
|
|
11444
|
+
label: existing.label ?? item.label,
|
|
11445
|
+
rank: existing.rank ?? item.rank
|
|
11446
|
+
} : item;
|
|
11447
|
+
return new Map([...pool, [key, decided]]);
|
|
11448
|
+
}, /* @__PURE__ */ new Map()).values());
|
|
11272
11449
|
}
|
|
11273
11450
|
//#endregion
|
|
11274
11451
|
//#region ../preview-next/src/client/blocks/BoundaryControl.tsx
|
|
@@ -12357,4 +12534,4 @@ function deriveDashboardBaseUrlFromApiBaseUrl(apiBaseUrl) {
|
|
|
12357
12534
|
}
|
|
12358
12535
|
}
|
|
12359
12536
|
//#endregion
|
|
12360
|
-
export { usePreviewBlockCustomizeSelectionOptional as _, PREVIEW_CHROME_PORTAL_CLASS_NAME as a,
|
|
12537
|
+
export { usePreviewBlockCustomizeSelectionOptional as _, PREVIEW_CHROME_PORTAL_CLASS_NAME as a, PREVIEW_CHROME_Z_INDEX as b, resolvePreviewChromeSurface as c, buildPreviewDashboardSetupUrl as d, resolvePreviewDashboardSetupHandoff as f, useBlockCustomizeControls as g, usePreviewSiteFontStorageUrl as h, PreviewShellLayout as i, PREVIEW_THEME_COOKIE_NAME as l, resolvePreviewSidebarChromeModel as m, SdkPreviewModeRuntime_exports as n, PREVIEW_CHROME_THEME_CLASS_NAME as o, resolvePreviewEditorGuidanceModel as p, PreviewShell as r, applyPreviewChromeSurfaceToElement as s, SdkPreviewModeRuntime as t, canInspectSiteStyle as u, PreviewFormProvider as v, FixedBottomSurface as x, previewWidgetOverrides as y };
|