@riverbankcms/sdk 0.139.0 → 0.141.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/README.md +1 -1
- package/dist/{PreviewEditorSidebar-BDeenhi3.mjs → PreviewEditorSidebar-Q-fy9GYw.mjs} +4 -4
- package/dist/{PreviewEditorUI-DSRhgjF5.mjs → PreviewEditorUI-LYGzgk85.mjs} +3 -3
- package/dist/{PreviewQueryProvider-D2K8GLUG.mjs → PreviewQueryProvider-CN0ewic5.mjs} +1 -1
- package/dist/{SdkPreviewModeRuntime-CL7wSnYu.mjs → SdkPreviewModeRuntime-CoPYI5Jq.mjs} +90 -50
- package/dist/{SiteChromeCustomizeContext-BhDn-5ir.mjs → SiteChromeCustomizeContext-D8LePX8x.mjs} +2731 -1303
- package/dist/_dts/ai/src/contracts/proposals.d.ts +165 -165
- package/dist/_dts/ai/src/contracts/siteStyleProposalSchemas.d.ts +212 -212
- package/dist/_dts/api/src/accessAdmin.d.ts +74 -104
- package/dist/_dts/api/src/aiEndpoints.d.ts +5 -1
- package/dist/_dts/api/src/authSubmission.d.ts +46 -0
- package/dist/_dts/api/src/billing.d.ts +8 -4
- package/dist/_dts/api/src/billingEndpointDefinitions.d.ts +23 -0
- package/dist/_dts/api/src/billingEndpointTypes.d.ts +26 -0
- package/dist/_dts/api/src/blocks.d.ts +2 -0
- package/dist/_dts/api/src/bookingRecords.d.ts +1 -2
- package/dist/_dts/api/src/commercePortalEndpoints.d.ts +8 -1
- package/dist/_dts/api/src/communications.d.ts +0 -1
- package/dist/_dts/api/src/contentRuntime.d.ts +17 -31
- package/dist/_dts/api/src/domainConnection.d.ts +4 -0
- package/dist/_dts/api/src/endpoints.d.ts +93 -64
- package/dist/_dts/api/src/event-destination-policy.d.ts +2 -1
- package/dist/_dts/api/src/footerCompositionContracts.d.ts +25 -0
- package/dist/_dts/api/src/footerSettings.d.ts +9 -6
- package/dist/_dts/api/src/index.d.ts +6 -7
- package/dist/_dts/api/src/indexCoreTypes.d.ts +1 -1
- package/dist/_dts/api/src/indexExtendedTypes.d.ts +1 -1
- package/dist/_dts/api/src/launchReadiness.d.ts +1 -0
- package/dist/_dts/api/src/mailingListIntegration.d.ts +8 -2
- package/dist/_dts/api/src/navigation/dashboardSettingsNav.d.ts +1 -1
- package/dist/_dts/api/src/navigation/dashboardSiteNav.d.ts +2 -1
- package/dist/_dts/api/src/navigation/types.d.ts +1 -1
- package/dist/_dts/api/src/onboarding/confirmationResend.d.ts +25 -0
- package/dist/_dts/api/src/onboarding/surfaceData.d.ts +32 -32
- package/dist/_dts/api/src/publicBookingAvailabilityEndpointDefinitions.d.ts +8 -0
- package/dist/_dts/api/src/publicExperience/commerceEndpoints.d.ts +1 -0
- package/dist/_dts/api/src/publicExperience/eventEndpoints.d.ts +11 -3
- package/dist/_dts/api/src/publicExperience/sharedTypes.d.ts +3 -29
- package/dist/_dts/api/src/publicOnboardingAttemptEndpointDefinitions.d.ts +65 -0
- package/dist/_dts/api/src/saveOutcome.d.ts +20 -0
- package/dist/_dts/api/src/sdkContracts.d.ts +3 -22
- package/dist/_dts/api/src/sdkPushContracts.d.ts +18 -0
- package/dist/_dts/api/src/sdkThemeWire.d.ts +44 -44
- package/dist/_dts/api/src/settings/permissions.d.ts +12 -0
- package/dist/_dts/api/src/siteManagementEndpoints.d.ts +10 -29
- package/dist/_dts/api/src/siteOnboarding.d.ts +9 -9
- package/dist/_dts/api/src/sitePlatformEndpoints.d.ts +2 -4
- package/dist/_dts/api/src/siteRuntimeEndpoints.d.ts +3 -1
- package/dist/_dts/api/src/siteSettings.d.ts +20 -7
- package/dist/_dts/api/src/types.d.ts +77 -77
- package/dist/_dts/api/src/wholeSeriesRuns.d.ts +2 -37
- package/dist/_dts/billing/src/membership/index.d.ts +3 -0
- package/dist/_dts/billing/src/plans/types.d.ts +3 -0
- package/dist/_dts/billing/src/site-arrangements.d.ts +23 -3
- package/dist/_dts/blocks/src/contracts/proof-block-islands.d.ts +20 -4
- package/dist/_dts/blocks/src/pageRenderAdmission.d.ts +2 -0
- package/dist/_dts/blocks/src/pageRendererContracts.d.ts +7 -0
- package/dist/_dts/blocks/src/portal/types.d.ts +2 -4
- package/dist/_dts/blocks/src/portal/waitlist-types.d.ts +35 -0
- package/dist/_dts/blocks/src/system/blocks/event-registration.d.ts +2 -0
- package/dist/_dts/blocks/src/system/blocks/events/event-calendar.d.ts +2 -0
- package/dist/_dts/blocks/src/system/blocks/events/eventSelectionFields.d.ts +122 -0
- package/dist/_dts/blocks/src/system/blocks/events/shared/calendarWindow.d.ts +2 -1
- package/dist/_dts/blocks/src/system/blocks/events/shared/eventSelection.d.ts +11 -0
- package/dist/_dts/blocks/src/system/blocks/events/shared/schemas.d.ts +42 -0
- package/dist/_dts/blocks/src/system/blocks/events/shared/types.d.ts +4 -0
- package/dist/_dts/blocks/src/system/blocks/location-map.d.ts +2 -2
- package/dist/_dts/blocks/src/system/blocks/media-text.d.ts +47 -47
- package/dist/_dts/blocks/src/system/data/index.d.ts +2 -2
- package/dist/_dts/blocks/src/system/data/prefetchBlockData.d.ts +7 -1
- package/dist/_dts/blocks/src/system/data/types.d.ts +9 -0
- package/dist/_dts/blocks/src/system/data/utils.d.ts +1 -1
- package/dist/_dts/blocks/src/system/manifest/schema.d.ts +27 -1
- package/dist/_dts/blocks/src/system/registry.d.ts +1 -0
- package/dist/_dts/blocks/src/system/runtime/api/client.d.ts +0 -28
- package/dist/_dts/blocks/src/system/runtime/api/index.d.ts +1 -1
- package/dist/_dts/blocks/src/system/runtime/api/types/events.d.ts +7 -3
- package/dist/_dts/blocks/src/system/runtime/api/types/portal.d.ts +1 -1
- package/dist/_dts/blocks/src/system/runtime/api/types/waitlist-claims.d.ts +7 -2
- package/dist/_dts/blocks/src/system/runtime/components/registry.client.d.ts +42 -186
- package/dist/_dts/blocks/src/system/runtime/components/runtime-backed-blocks.d.ts +21 -93
- package/dist/_dts/blocks/src/system/runtime/hooks/useEventFilters.d.ts +2 -1
- package/dist/_dts/blocks/src/system/runtime/nodes/appointment-services.d.ts +48 -1
- package/dist/_dts/blocks/src/system/runtime/nodes/event-registration/EventRegistrationSurface.d.ts +1 -2
- package/dist/_dts/blocks/src/system/runtime/nodes/event-registration/TicketSelectionStep.d.ts +2 -0
- package/dist/_dts/blocks/src/system/runtime/nodes/event-registration/checkoutRecovery.d.ts +14 -0
- package/dist/_dts/blocks/src/system/runtime/nodes/event-registration/eventSourceRecovery.d.ts +56 -0
- package/dist/_dts/blocks/src/system/runtime/nodes/event-registration/hooks.d.ts +4 -0
- package/dist/_dts/blocks/src/system/runtime/nodes/event-registration/hooks.state.d.ts +5 -0
- package/dist/_dts/blocks/src/system/runtime/nodes/event-registration/types.d.ts +6 -8
- package/dist/_dts/blocks/src/system/runtime/nodes/event-registration/useCheckoutRecovery.d.ts +8 -0
- package/dist/_dts/blocks/src/system/runtime/nodes/event-registration/useDiscountCodeUi.d.ts +3 -0
- package/dist/_dts/blocks/src/system/runtime/nodes/event-registration/useDiscountCodeUi.state.d.ts +10 -3
- package/dist/_dts/blocks/src/system/runtime/nodes/event-registration/useEventCheckoutHandoffRestore.d.ts +9 -0
- package/dist/_dts/blocks/src/system/runtime/nodes/event-registration/useEventRegistrationSubmit.d.ts +8 -7
- package/dist/_dts/blocks/src/system/runtime/nodes/event-registration/useEventRegistrationWizard.d.ts +14 -7
- package/dist/_dts/blocks/src/system/runtime/nodes/event-registration/useEventSourceRecovery.d.ts +18 -0
- package/dist/_dts/blocks/src/system/runtime/nodes/event-registration/useSettledCommerceView.d.ts +37 -0
- package/dist/_dts/blocks/src/system/runtime/nodes/event-registration.client.d.ts +1 -1
- package/dist/_dts/blocks/src/system/runtime/nodes/event-registration.interactive.d.ts +24 -6
- package/dist/_dts/blocks/src/system/runtime/nodes/event-registration.server.d.ts +4 -2
- package/dist/_dts/blocks/src/system/runtime/nodes/events/EventCombined.client.d.ts +4 -3
- package/dist/_dts/blocks/src/system/runtime/nodes/events/EventCombined.interactive.d.ts +3 -0
- package/dist/_dts/blocks/src/system/runtime/nodes/events/EventListing.interactive.d.ts +11 -101
- package/dist/_dts/blocks/src/system/runtime/nodes/events/shared/eventCollectionContract.d.ts +7 -2
- package/dist/_dts/blocks/src/system/runtime/nodes/events/shared/listOptions.d.ts +2 -0
- package/dist/_dts/blocks/src/system/runtime/nodes/newsletter-form.interactive.d.ts +6 -0
- package/dist/_dts/blocks/src/system/runtime/nodes/newsletter-form.types.d.ts +1 -0
- package/dist/_dts/blocks/src/system/runtime/resolver.d.ts +1 -0
- package/dist/_dts/blocks/src/system/runtime/shared/components/index.d.ts +2 -6
- package/dist/_dts/blocks/src/system/runtime/shared/index.d.ts +2 -2
- package/dist/_dts/blocks/src/system/runtime/shared/useWaitlistClaim.d.ts +2 -0
- package/dist/_dts/blocks/src/system/transforms/registry/eventCalendar.d.ts +12 -0
- package/dist/_dts/commerce/src/purchase/bookingInstalmentSchedule.d.ts +4 -0
- package/dist/_dts/commerce/src/purchase/event-registration-errors.d.ts +4 -0
- package/dist/_dts/commerce/src/purchase/orderItemMetadata.d.ts +27 -4
- package/dist/_dts/content-editor/src/controller/EntryControllerProvider.d.ts +2 -1
- package/dist/_dts/content-editor/src/hooks/useBlockAutosave.d.ts +3 -1
- package/dist/_dts/content-editor/src/useFooterComposerState.d.ts +3 -0
- package/dist/_dts/core/src/branded.d.ts +0 -8
- package/dist/_dts/core/src/index.d.ts +1 -0
- package/dist/_dts/core/src/mailing-list-setup-parser.d.ts +1 -1
- package/dist/_dts/core/src/mailing-list-setup.d.ts +14 -1
- package/dist/_dts/core/src/mailing-list-submission.d.ts +7 -27
- package/dist/_dts/core/src/participants.d.ts +2 -29
- package/dist/_dts/core/src/public-experience.d.ts +4 -0
- package/dist/_dts/core/src/public-profile.d.ts +27 -1
- package/dist/_dts/core/src/site-route-target.d.ts +9 -2
- package/dist/_dts/db/src/generated/supabase/database.types.d.ts +296 -606
- package/dist/_dts/editor-blocks/src/widgets/mailing-list-targeting/MailingListGlobalSettingsSummary.d.ts +10 -0
- package/dist/_dts/editor-blocks/src/widgets/mailing-list-targeting/MailingListTargetingField.d.ts +3 -2
- package/dist/_dts/editor-blocks/src/widgets/mailing-list-targeting/context.d.ts +3 -2
- package/dist/_dts/editor-blocks/src/widgets/mailing-list-targeting/loaders.d.ts +3 -2
- package/dist/_dts/editor-blocks/src/widgets/mailing-list-targeting/targetingState.d.ts +19 -0
- package/dist/_dts/editor-blocks/src/widgets/site-option-picker/loaders.d.ts +27 -1
- package/dist/_dts/sdk/src/public-api/contracts.d.ts +14 -20
- package/dist/_dts/sdk/src/rendering/blocks-page-renderer.d.ts +2 -0
- package/dist/_dts/sdk/src/rendering/components/pageShared.d.ts +2 -0
- package/dist/_dts/sdk/src/rendering/helpers/pageRuntimeSupport.d.ts +7 -1
- package/dist/_dts/sdk/src/rendering/helpers/templateContent.d.ts +1 -0
- package/dist/_dts/sdk/src/version.d.ts +1 -1
- package/dist/_dts/theme-core/src/ThemeFontLoader.d.ts +17 -1
- package/dist/_dts/theme-core/src/accordions/types.d.ts +3 -3
- package/dist/_dts/theme-core/src/buttons/affordanceSuppression.d.ts +17 -0
- package/dist/_dts/theme-core/src/buttons/buttonColourContract.d.ts +1 -1
- package/dist/_dts/theme-core/src/buttons/classNames.d.ts +16 -0
- package/dist/_dts/theme-core/src/buttons/generateButtonCss.d.ts +0 -6
- package/dist/_dts/theme-core/src/buttons/resolvedButtonCss.d.ts +4 -4
- package/dist/_dts/theme-core/src/cards/types.d.ts +21 -21
- package/dist/_dts/theme-core/src/generated/containerResponsiveThemeCss.d.ts +1 -1
- package/dist/_dts/theme-core/src/header/interactionPalette.d.ts +8 -2
- package/dist/_dts/theme-core/src/header/legacyHeaderVariant.d.ts +2 -2
- package/dist/_dts/theme-core/src/hosted-booking-appearance.d.ts +54 -12
- package/dist/_dts/theme-core/src/index.d.ts +1 -1
- package/dist/_dts/theme-core/src/inputs/types.d.ts +2 -2
- package/dist/_dts/theme-core/src/mock-themes/all.d.ts +54 -54
- package/dist/_dts/theme-core/src/runtime/buildThemeRuntimeFromBridge.d.ts +1 -4
- package/dist/_dts/theme-core/src/schema.d.ts +84 -84
- package/dist/_dts/theme-core/src/shared/componentStyles.d.ts +1 -1
- package/dist/_dts/theme-core/src/site-styles/backgroundAppearance.d.ts +2 -2
- package/dist/_dts/theme-core/src/surfaces/foregroundInteraction.d.ts +77 -0
- package/dist/_dts/theme-core/src/surfaces/index.d.ts +1 -0
- package/dist/_dts/theme-core/src/typography/generateTypographyCss.d.ts +2 -2
- package/dist/_dts/ui/src/lib/use-delayed-flag.d.ts +9 -0
- package/dist/_dts/ui/src/pending-button.d.ts +10 -0
- package/dist/client/{BookingConsentAgreement-CZvTDtsK.mjs → BookingConsentAgreement-xJeYNdnb.mjs} +4 -4
- package/dist/client/{DiscountCodeDisclosure-D-DsLCMU.mjs → DiscountCodeDisclosure-DdT6uzl9.mjs} +1 -1
- package/dist/client/{EventCombined.client-dWqgd5ZO.mjs → EventCombined.client-Cp28uYuM.mjs} +12 -16
- package/dist/client/{EventListing.client-BMRa9IYp.mjs → EventListing.client-CD6AJsMr.mjs} +4 -17
- package/dist/client/{LeafletStaticMap-D21W9kBZ.mjs → LeafletStaticMap-DBsAi9-e.mjs} +1 -1
- package/dist/client/{accordion-FxF_ta47.mjs → accordion-6dwbOKYR.mjs} +1 -1
- package/dist/client/{bookingForm-YnwW4TGw.mjs → bookingForm-CZE9_qPQ.mjs} +7 -7
- package/dist/client/bookings.mjs +500 -233
- package/dist/client/{carousel-vng7fFT5.mjs → carousel-7VHGQARz.mjs} +2 -2
- package/dist/client/{carousel.client-59G_WMr4.mjs → carousel.client-DQTjCVQT.mjs} +1 -1
- package/dist/client/{cart-DEPDsjNk.mjs → cart-Qg_mvQhh.mjs} +3 -3
- package/dist/client/{checkout-CZRWu9rW.mjs → checkout-D84rpgdr.mjs} +3 -3
- package/dist/client/{checkoutUrls-BuseL0dw.mjs → checkoutUrls-FL6lRkrt.mjs} +1 -1
- package/dist/client/client.mjs +2315 -1017
- package/dist/client/{colorStyles-CrxJrPjJ.mjs → colorStyles-3013aRAY.mjs} +3 -1
- package/dist/client/{context-DvU_WUmd.mjs → context-Ctp3T0Wr.mjs} +6 -19
- package/dist/client/{dates-wnPMiRl5.mjs → dates-DJKFcI_N.mjs} +2 -2
- package/dist/client/{eventCalendar-BA3Q5L15.mjs → eventCalendar-CK31z3vs.mjs} +12 -8
- package/dist/client/{eventCombined-51wgR-1R.mjs → eventCombined-DiXd-ewn.mjs} +3 -3
- package/dist/client/{eventDetails-modaetpm.mjs → eventDetails-CTRgt2DK.mjs} +4 -4
- package/dist/client/{eventListing-D8t2J3Kv.mjs → eventListing-Dy9vi_j_.mjs} +3 -3
- package/dist/client/{eventRegistration-CYqtkCE_.mjs → eventRegistration-CnalYMr2.mjs} +618 -177
- package/dist/client/{form-CBKXN5In.mjs → form-eUiMveTT.mjs} +3 -3
- package/dist/client/{headerSection-DylDqNrs.mjs → headerSection-Dy9kQpB1.mjs} +2 -2
- package/dist/client/hooks.mjs +692 -212
- package/dist/client/{locationMap-CvWrG0vZ.mjs → locationMap-DalCmWU0.mjs} +3 -3
- package/dist/client/{media-BOHuueS5.mjs → media-DHpfFwd3.mjs} +1 -1
- package/dist/client/{newsletterForm-Btwk70zw.mjs → newsletterForm-SDDPvhS0.mjs} +150 -94
- package/dist/client/{pricing-Uzw-GQ6Y.mjs → pricing-OcMz4SnX.mjs} +1 -1
- package/dist/client/{productDetail-JLcUYKnd.mjs → productDetail-BQrgHElM.mjs} +3 -3
- package/dist/client/{productList-FM0cbUzj.mjs → productList-OnPn_UJj.mjs} +3 -3
- package/dist/client/{propsDecoder-DYzafZb2.mjs → propsDecoder-zBdsnS-N.mjs} +168 -32
- package/dist/client/rendering/client.mjs +1355 -519
- package/dist/client/rendering/islands.mjs +19 -19
- package/dist/client/rendering.mjs +2294 -953
- package/dist/client/{scrollToBlock-CvXszexS.mjs → scrollToBlock-BNM4Ob2Y.mjs} +28 -11
- package/dist/client/{shop-BIcjvy5a.mjs → shop-Bv1fPTwQ.mjs} +6 -6
- package/dist/client/{shop-commerce-BZQsy7xw.mjs → shop-commerce-D4KNGaW8.mjs} +7 -7
- package/dist/client/{shop-commerce-store-D5V7XAb5.mjs → shop-commerce-store-2N5EV0Rc.mjs} +1 -1
- package/dist/client/{shopShared-DowkXevB.mjs → shopShared-DvJGdHTV.mjs} +4 -4
- package/dist/client/{useEventFilters-oMoTw_JE.mjs → useEventFilters-BBBvGDHQ.mjs} +19 -13
- package/dist/preview-next/before-render.mjs +119 -64
- package/dist/preview-next/client/runtime.mjs +4 -4
- package/dist/preview-next/editor-chrome.css +4 -8
- package/dist/preview-next/keepAlive.mjs +119 -64
- package/dist/preview-next/middleware.mjs +119 -64
- package/dist/{previewAuthStore-COUyAKaX.mjs → previewAuthStore-Gjb6r6vz.mjs} +119 -64
- package/dist/{sdk-runtime-D4k2LSGF.mjs → sdk-runtime-Defnbfzw.mjs} +2 -2
- package/dist/{separator-UGtpag4Z.mjs → separator-CZXO3Sb0.mjs} +1 -1
- package/dist/server/components.mjs +1170 -384
- package/dist/server/config-validation.mjs +560 -105
- package/dist/server/config.mjs +564 -109
- package/dist/server/data.mjs +688 -212
- package/dist/server/index.mjs +126 -66
- package/dist/server/next.mjs +1429 -662
- package/dist/server/page-converter.mjs +372 -99
- package/dist/server/prebuild.mjs +1 -1
- package/dist/server/rendering/server.mjs +1624 -817
- package/dist/server/rendering.mjs +1200 -391
- package/dist/server/routing.mjs +767 -247
- package/dist/server/server.mjs +715 -276
- package/dist/server/theme-bridge.mjs +475 -110
- package/dist/server/theme.mjs +9 -3
- package/dist/styles/index.css +265 -45
- package/package.json +1 -1
- package/dist/_dts/blocks/src/system/runtime/shared/components/BookingOptionCompactRow.d.ts +0 -29
- package/dist/_dts/blocks/src/system/runtime/shared/components/BookingOptionList.d.ts +0 -13
package/dist/server/config.mjs
CHANGED
|
@@ -1359,10 +1359,12 @@ const unsafeAsApiKeyId = (id) => id;
|
|
|
1359
1359
|
const unsafeAsEventOfferingId = (id) => id;
|
|
1360
1360
|
const unsafeAsEventSeriesId = (id) => id;
|
|
1361
1361
|
const unsafeAsUserId = (id) => id;
|
|
1362
|
+
const unsafeAsContentVersionId = (id) => id;
|
|
1362
1363
|
const parseSiteId = (value) => parseUuidBrand(value, unsafeAsSiteId);
|
|
1363
1364
|
const parseApiKeyId = (value) => parseUuidBrand(value, unsafeAsApiKeyId);
|
|
1364
1365
|
const parseEventOfferingId = (value) => parseUuidBrand(value, unsafeAsEventOfferingId);
|
|
1365
1366
|
const parseUserId = (value) => parseUuidBrand(value, unsafeAsUserId);
|
|
1367
|
+
const parseContentVersionId = (value) => parseUuidBrand(value, unsafeAsContentVersionId);
|
|
1366
1368
|
const parseEventSeriesId = (value) => parseUuidBrand(value, unsafeAsEventSeriesId);
|
|
1367
1369
|
//#endregion
|
|
1368
1370
|
//#region ../core/src/assert-never.ts
|
|
@@ -1596,7 +1598,7 @@ function parseEventPageSurfaceDestinationMode(value) {
|
|
|
1596
1598
|
return value === "cms-managed" || value === "system-managed" ? value : void 0;
|
|
1597
1599
|
}
|
|
1598
1600
|
function parseEventPageSurfaceSubject(value) {
|
|
1599
|
-
if (!isRecord$
|
|
1601
|
+
if (!isRecord$12(value)) return err({ kind: "notObject" });
|
|
1600
1602
|
switch (value.kind) {
|
|
1601
1603
|
case "eventSeries": {
|
|
1602
1604
|
const eventSeriesId = parseEventSeriesId(value.eventSeriesId);
|
|
@@ -1651,7 +1653,7 @@ function parseEventSeriesIdList(values) {
|
|
|
1651
1653
|
}
|
|
1652
1654
|
return ok(parsed);
|
|
1653
1655
|
}
|
|
1654
|
-
function isRecord$
|
|
1656
|
+
function isRecord$12(value) {
|
|
1655
1657
|
return typeof value === "object" && value !== null && !Array.isArray(value);
|
|
1656
1658
|
}
|
|
1657
1659
|
//#endregion
|
|
@@ -1822,7 +1824,7 @@ function toLocationCoordinates(value) {
|
|
|
1822
1824
|
}
|
|
1823
1825
|
//#endregion
|
|
1824
1826
|
//#region ../core/src/rich-text.ts
|
|
1825
|
-
function isRecord$
|
|
1827
|
+
function isRecord$11(value) {
|
|
1826
1828
|
return typeof value === "object" && value !== null && !Array.isArray(value);
|
|
1827
1829
|
}
|
|
1828
1830
|
function hasOnlyKeys(value, allowed) {
|
|
@@ -1842,15 +1844,15 @@ function isDenseArrayOf(value, predicate) {
|
|
|
1842
1844
|
return true;
|
|
1843
1845
|
}
|
|
1844
1846
|
function isTipTapMark(value) {
|
|
1845
|
-
return isRecord$
|
|
1847
|
+
return isRecord$11(value) && hasOnlyKeys(value, markKeys) && typeof value.type === "string" && value.type.length > 0 && (value.attrs === void 0 || isRecord$11(value.attrs));
|
|
1846
1848
|
}
|
|
1847
1849
|
function isTipTapNode(value) {
|
|
1848
|
-
if (!isRecord$
|
|
1850
|
+
if (!isRecord$11(value) || !hasOnlyKeys(value, nodeKeys) || typeof value.type !== "string" || value.type.length === 0 || value.type === "doc" || value.attrs !== void 0 && !isRecord$11(value.attrs) || value.marks !== void 0 && (!Array.isArray(value.marks) || !isDenseArrayOf(value.marks, isTipTapMark)) || value.content !== void 0 && (!Array.isArray(value.content) || !isDenseArrayOf(value.content, isTipTapNode))) return false;
|
|
1849
1851
|
if (value.type === "text") return typeof value.text === "string" && value.text.length > 0 && value.content === void 0;
|
|
1850
1852
|
return value.text === void 0;
|
|
1851
1853
|
}
|
|
1852
1854
|
function isCanonicalRichTextDoc(value) {
|
|
1853
|
-
return isRecord$
|
|
1855
|
+
return isRecord$11(value) && hasOnlyKeys(value, rootKeys) && value.type === "doc" && Array.isArray(value.content) && isDenseArrayOf(value.content, isTipTapNode);
|
|
1854
1856
|
}
|
|
1855
1857
|
//#endregion
|
|
1856
1858
|
//#region ../core/src/mailing-list-identifiers.ts
|
|
@@ -1867,16 +1869,47 @@ function parsePositiveInteger(value) {
|
|
|
1867
1869
|
function parseNewsletterListId(value) {
|
|
1868
1870
|
return parseTrimmedMatchingString(value, UUID_PATTERN);
|
|
1869
1871
|
}
|
|
1872
|
+
function parseMailchimpAccountId(value) {
|
|
1873
|
+
return parseTrimmedMatchingString(value, OPAQUE_ID_PATTERN);
|
|
1874
|
+
}
|
|
1870
1875
|
function parseMailchimpAudienceId(value) {
|
|
1871
1876
|
return parseTrimmedMatchingString(value, OPAQUE_ID_PATTERN);
|
|
1872
1877
|
}
|
|
1873
1878
|
function parseMailchimpInterestId(value) {
|
|
1874
1879
|
return parseTrimmedMatchingString(value, OPAQUE_ID_PATTERN);
|
|
1875
1880
|
}
|
|
1881
|
+
function parseBrevoAccountId(value) {
|
|
1882
|
+
return parseTrimmedMatchingString(value, OPAQUE_ID_PATTERN);
|
|
1883
|
+
}
|
|
1876
1884
|
function parseBrevoListId(value) {
|
|
1877
1885
|
return parsePositiveInteger(value);
|
|
1878
1886
|
}
|
|
1879
1887
|
//#endregion
|
|
1888
|
+
//#region ../core/src/mailing-list-setup.ts
|
|
1889
|
+
function isRecord$10(value) {
|
|
1890
|
+
return typeof value === "object" && value !== null && !Array.isArray(value);
|
|
1891
|
+
}
|
|
1892
|
+
const DEFAULT_MAILING_LIST_SUCCESS_MESSAGE = "Thanks — you're on the list.";
|
|
1893
|
+
function parseMailingListProviderScope(value) {
|
|
1894
|
+
if (!isRecord$10(value)) return err("invalid_mailing_list_provider_scope");
|
|
1895
|
+
if (value.provider === "native") return ok({ provider: "native" });
|
|
1896
|
+
if (value.provider === "brevo") {
|
|
1897
|
+
const accountId = parseBrevoAccountId(value.accountId);
|
|
1898
|
+
return accountId !== null ? ok({
|
|
1899
|
+
provider: "brevo",
|
|
1900
|
+
accountId
|
|
1901
|
+
}) : err("invalid_mailing_list_provider_scope");
|
|
1902
|
+
}
|
|
1903
|
+
if (value.provider === "mailchimp") {
|
|
1904
|
+
const accountId = parseMailchimpAccountId(value.accountId);
|
|
1905
|
+
return accountId !== null ? ok({
|
|
1906
|
+
provider: "mailchimp",
|
|
1907
|
+
accountId
|
|
1908
|
+
}) : err("invalid_mailing_list_provider_scope");
|
|
1909
|
+
}
|
|
1910
|
+
return err("invalid_mailing_list_provider_scope");
|
|
1911
|
+
}
|
|
1912
|
+
//#endregion
|
|
1880
1913
|
//#region ../core/src/mailing-list-setup-parser.ts
|
|
1881
1914
|
function parseMailingListGlobalForm(value) {
|
|
1882
1915
|
if (!isRecord$9(value)) return formError("shape");
|
|
@@ -1885,12 +1918,15 @@ function parseMailingListGlobalForm(value) {
|
|
|
1885
1918
|
if (typeof value.includeOptionalPhone !== "boolean") return formError("includeOptionalPhone");
|
|
1886
1919
|
const buttonLabel = parseRequiredString(value.buttonLabel);
|
|
1887
1920
|
if (buttonLabel === null) return formError("buttonLabel");
|
|
1921
|
+
const successMessage = parseRequiredString(value.successMessage);
|
|
1922
|
+
if (successMessage === null) return formError("successMessage");
|
|
1888
1923
|
const privacyNote = parseOptionalString(value.privacyNote);
|
|
1889
1924
|
if (privacyNote === void 0) return formError("privacyNote");
|
|
1890
1925
|
return ok({
|
|
1891
1926
|
fields,
|
|
1892
1927
|
includeOptionalPhone: value.includeOptionalPhone,
|
|
1893
1928
|
buttonLabel,
|
|
1929
|
+
successMessage,
|
|
1894
1930
|
privacyNote
|
|
1895
1931
|
});
|
|
1896
1932
|
}
|
|
@@ -2220,11 +2256,17 @@ function parseMailingListSignedSourceToken(value) {
|
|
|
2220
2256
|
const parsed = typeof value === "string" ? value.trim() : "";
|
|
2221
2257
|
return /^[A-Za-z0-9._~-]{16,1000}$/u.test(parsed) ? parsed : null;
|
|
2222
2258
|
}
|
|
2223
|
-
function
|
|
2224
|
-
const parsed =
|
|
2225
|
-
return parsed
|
|
2259
|
+
function parseMailingListContentVersionId(value) {
|
|
2260
|
+
const parsed = parseContentVersionId(value);
|
|
2261
|
+
return parsed.ok ? parsed.value : null;
|
|
2262
|
+
}
|
|
2263
|
+
function buildMailingListSignupBlockSourceRef(blockId, contentVersionId) {
|
|
2264
|
+
const parsedBlockId = parseMailingListBlockId(blockId);
|
|
2265
|
+
const parsedContentVersionId = parseMailingListContentVersionId(contentVersionId);
|
|
2266
|
+
return parsedBlockId !== null && parsedContentVersionId !== null ? {
|
|
2226
2267
|
tag: "block_ref",
|
|
2227
|
-
blockId:
|
|
2268
|
+
blockId: parsedBlockId,
|
|
2269
|
+
contentVersionId: parsedContentVersionId
|
|
2228
2270
|
} : null;
|
|
2229
2271
|
}
|
|
2230
2272
|
//#endregion
|
|
@@ -2729,6 +2771,14 @@ const PUBLIC_BOOKING_AVAILABILITY_ENDPOINT_DEFINITIONS = defineEndpointDefinitio
|
|
|
2729
2771
|
auth: "public",
|
|
2730
2772
|
responseKind: "json"
|
|
2731
2773
|
},
|
|
2774
|
+
getPublicBookingServiceBySlug: {
|
|
2775
|
+
path: "/public/bookings/services/by-slug/{slug}",
|
|
2776
|
+
method: "GET",
|
|
2777
|
+
revalidate: publicReadFreshnessSeconds("getPublicBookingService"),
|
|
2778
|
+
tags: [TAG_TEMPLATES.publicBookingServices],
|
|
2779
|
+
auth: "public",
|
|
2780
|
+
responseKind: "json"
|
|
2781
|
+
},
|
|
2732
2782
|
getPublicBookingResourcesReference: {
|
|
2733
2783
|
path: "/public/bookings/resources/reference",
|
|
2734
2784
|
method: "GET",
|
|
@@ -3281,16 +3331,110 @@ const PUBLIC_READ_ENDPOINT_DEFINITIONS = defineEndpointDefinitions({
|
|
|
3281
3331
|
responseKind: "json"
|
|
3282
3332
|
}
|
|
3283
3333
|
});
|
|
3334
|
+
//#endregion
|
|
3335
|
+
//#region ../api/src/publicOnboardingAttemptEndpointDefinitions.ts
|
|
3336
|
+
/**
|
|
3337
|
+
* The anonymous onboarding attempt, addressed by its opaque resume token.
|
|
3338
|
+
*
|
|
3339
|
+
* Every route here is reached before there is an account, so none of them can
|
|
3340
|
+
* be scoped to a site or a user: the token is the whole credential. They are
|
|
3341
|
+
* kept together so that stays obvious.
|
|
3342
|
+
*/
|
|
3343
|
+
const PUBLIC_ONBOARDING_ATTEMPT_ENDPOINT_DEFINITIONS = defineEndpointDefinitions({
|
|
3344
|
+
createPublicOnboardingAttempt: {
|
|
3345
|
+
path: "/public/onboarding/attempts",
|
|
3346
|
+
method: "POST",
|
|
3347
|
+
auth: "public",
|
|
3348
|
+
errors: [],
|
|
3349
|
+
responseKind: "json"
|
|
3350
|
+
},
|
|
3351
|
+
createPublicOnboardingLogoUploadUrl: {
|
|
3352
|
+
path: "/public/onboarding/attempts/{attemptToken}/logo-upload-url",
|
|
3353
|
+
method: "POST",
|
|
3354
|
+
auth: "public",
|
|
3355
|
+
errors: [],
|
|
3356
|
+
responseKind: "json"
|
|
3357
|
+
},
|
|
3358
|
+
uploadPublicOnboardingLogo: {
|
|
3359
|
+
path: "/public/onboarding/attempts/{attemptToken}/logo",
|
|
3360
|
+
method: "POST",
|
|
3361
|
+
auth: "public",
|
|
3362
|
+
errors: [],
|
|
3363
|
+
responseKind: "json"
|
|
3364
|
+
},
|
|
3365
|
+
getPublicOnboardingAttempt: {
|
|
3366
|
+
path: "/public/onboarding/attempts/{attemptToken}",
|
|
3367
|
+
method: "GET",
|
|
3368
|
+
auth: "public",
|
|
3369
|
+
errors: [],
|
|
3370
|
+
responseKind: "json"
|
|
3371
|
+
},
|
|
3372
|
+
getPublicOnboardingAttemptProgress: {
|
|
3373
|
+
path: "/public/onboarding/attempts/{attemptToken}/status",
|
|
3374
|
+
method: "GET",
|
|
3375
|
+
auth: "public",
|
|
3376
|
+
errors: [],
|
|
3377
|
+
responseKind: "json"
|
|
3378
|
+
},
|
|
3379
|
+
updatePublicOnboardingAttempt: {
|
|
3380
|
+
path: "/public/onboarding/attempts/{attemptToken}",
|
|
3381
|
+
method: "PATCH",
|
|
3382
|
+
auth: "public",
|
|
3383
|
+
errors: [],
|
|
3384
|
+
responseKind: "json"
|
|
3385
|
+
},
|
|
3386
|
+
runPublicOnboardingAttempt: {
|
|
3387
|
+
path: "/public/onboarding/attempts/{attemptToken}/run",
|
|
3388
|
+
method: "POST",
|
|
3389
|
+
auth: "public",
|
|
3390
|
+
errors: [],
|
|
3391
|
+
responseKind: "json"
|
|
3392
|
+
},
|
|
3393
|
+
resendPublicOnboardingAttemptConfirmation: {
|
|
3394
|
+
path: "/public/onboarding/attempts/{attemptToken}/resend-confirmation",
|
|
3395
|
+
method: "POST",
|
|
3396
|
+
auth: "public",
|
|
3397
|
+
errors: [],
|
|
3398
|
+
responseKind: "json"
|
|
3399
|
+
}
|
|
3400
|
+
});
|
|
3401
|
+
//#endregion
|
|
3402
|
+
//#region ../api/src/billingEndpointDefinitions.ts
|
|
3403
|
+
const BILLING_ENDPOINT_DEFINITIONS = defineEndpointDefinitions({
|
|
3404
|
+
adminChangePlan: {
|
|
3405
|
+
path: "/admin/billing/plan",
|
|
3406
|
+
method: "POST",
|
|
3407
|
+
tags: ["admin", "billing"],
|
|
3408
|
+
auth: "admin",
|
|
3409
|
+
responseKind: "json"
|
|
3410
|
+
},
|
|
3411
|
+
changePlan: {
|
|
3412
|
+
path: "/billing/plan/change",
|
|
3413
|
+
method: "POST",
|
|
3414
|
+
tags: ["billing"],
|
|
3415
|
+
auth: "user",
|
|
3416
|
+
responseKind: "json"
|
|
3417
|
+
},
|
|
3418
|
+
createBillingPortalSession: {
|
|
3419
|
+
path: "/billing/portal/session",
|
|
3420
|
+
method: "POST",
|
|
3421
|
+
tags: ["billing"],
|
|
3422
|
+
auth: "user",
|
|
3423
|
+
responseKind: "json"
|
|
3424
|
+
}
|
|
3425
|
+
});
|
|
3284
3426
|
({
|
|
3285
3427
|
...ACCOUNT_ENDPOINT_DEFINITIONS,
|
|
3428
|
+
...PUBLIC_ONBOARDING_ATTEMPT_ENDPOINT_DEFINITIONS,
|
|
3286
3429
|
...PUBLIC_EVENT_ENDPOINT_DEFINITIONS,
|
|
3287
3430
|
...GIFTING_ENDPOINT_DEFINITIONS,
|
|
3288
|
-
...PUBLIC_READ_ENDPOINT_DEFINITIONS
|
|
3431
|
+
...PUBLIC_READ_ENDPOINT_DEFINITIONS,
|
|
3432
|
+
...BILLING_ENDPOINT_DEFINITIONS
|
|
3289
3433
|
}), TAG_TEMPLATES.siteCollection, TAG_TEMPLATES.siteTheme, TAG_TEMPLATES.siteCollection, { ...SITE_API_KEY_ENDPOINT_DEFINITIONS }, TAG_TEMPLATES.site, TAG_TEMPLATES.siteBookingSettings, TAG_TEMPLATES.site, TAG_TEMPLATES.siteBookingSettings, TAG_TEMPLATES.site, TAG_TEMPLATES.siteEmailSettings, TAG_TEMPLATES.site, TAG_TEMPLATES.siteEmailSettings, TAG_TEMPLATES.site, TAG_TEMPLATES.siteEmailSettings, TAG_TEMPLATES.site, TAG_TEMPLATES.siteEmailSettings, {
|
|
3290
3434
|
...NEWSLETTER_ENDPOINT_DEFINITIONS,
|
|
3291
3435
|
...APPOINTMENT_ENDPOINT_DEFINITIONS,
|
|
3292
3436
|
...EVENT_SERIES_REGISTRATION_ENDPOINT_DEFINITIONS
|
|
3293
|
-
}, TAG_TEMPLATES.siteCollection, TAG_TEMPLATES.siteById, TAG_TEMPLATES.siteBySlug, TAG_TEMPLATES.siteByDomain, TAG_TEMPLATES.siteCollection, TAG_TEMPLATES.siteById, TAG_TEMPLATES.siteBySlug, TAG_TEMPLATES.siteByDomain, TAG_TEMPLATES.siteCollection, TAG_TEMPLATES.pageSurfaceById, TAG_TEMPLATES.siteCollection, TAG_TEMPLATES.pageSurfaceById, TAG_TEMPLATES.siteCollection, TAG_TEMPLATES.siteRoutableContent, TAG_TEMPLATES.pageSurfaceById, TAG_TEMPLATES.siteCollection, TAG_TEMPLATES.siteRoutableContent, TAG_TEMPLATES.pageSurfaceById, TAG_TEMPLATES.workflowRunById, TAG_TEMPLATES.siteCollection, TAG_TEMPLATES.siteRoutableContent, TAG_TEMPLATES.routeById, TAG_TEMPLATES.site, TAG_TEMPLATES.siteSettings, TAG_TEMPLATES.siteCollection, TAG_TEMPLATES.site, TAG_TEMPLATES.siteSettings, TAG_TEMPLATES.siteCollection, TAG_TEMPLATES.site, TAG_TEMPLATES.siteSettings, TAG_TEMPLATES.siteCollection, TAG_TEMPLATES.site, TAG_TEMPLATES.site, TAG_TEMPLATES.siteSettings, TAG_TEMPLATES.site, TAG_TEMPLATES.siteSettings, TAG_TEMPLATES.site, TAG_TEMPLATES.siteSettings, TAG_TEMPLATES.site, TAG_TEMPLATES.siteSettings, TAG_TEMPLATES.site, TAG_TEMPLATES.siteSettings, TAG_TEMPLATES.site, TAG_TEMPLATES.siteSettings, TAG_TEMPLATES.site, TAG_TEMPLATES.siteSettings, TAG_TEMPLATES.site, TAG_TEMPLATES.siteSettings, TAG_TEMPLATES.site, TAG_TEMPLATES.siteSettings, TAG_TEMPLATES.site, TAG_TEMPLATES.siteSettings, TAG_TEMPLATES.site, TAG_TEMPLATES.siteSettings, TAG_TEMPLATES.site, TAG_TEMPLATES.siteSettings, TAG_TEMPLATES.site, TAG_TEMPLATES.siteSettings, TAG_TEMPLATES.site, TAG_TEMPLATES.siteSettings, TAG_TEMPLATES.site, TAG_TEMPLATES.siteSettings, TAG_TEMPLATES.site, TAG_TEMPLATES.siteSettings, TAG_TEMPLATES.site, TAG_TEMPLATES.siteSettings, TAG_TEMPLATES.site, TAG_TEMPLATES.siteSettings, TAG_TEMPLATES.site, TAG_TEMPLATES.siteSettings, TAG_TEMPLATES.site, TAG_TEMPLATES.siteSettings, TAG_TEMPLATES.site, TAG_TEMPLATES.siteSettings, TAG_TEMPLATES.site, TAG_TEMPLATES.siteSettings, TAG_TEMPLATES.site, TAG_TEMPLATES.siteSettings, TAG_TEMPLATES.site, TAG_TEMPLATES.siteSettings, TAG_TEMPLATES.site, TAG_TEMPLATES.siteSettings, TAG_TEMPLATES.site, TAG_TEMPLATES.siteSettings, TAG_TEMPLATES.siteCollection, TAG_TEMPLATES.siteNavigation, TAG_TEMPLATES.siteCollection, TAG_TEMPLATES.siteNavigation, TAG_TEMPLATES.navigationMenuById, TAG_TEMPLATES.siteCollection, TAG_TEMPLATES.siteNavigation, TAG_TEMPLATES.navigationMenuById, TAG_TEMPLATES.siteCollection, TAG_TEMPLATES.siteNavigation, TAG_TEMPLATES.navigationMenuById, TAG_TEMPLATES.navigationItemById, TAG_TEMPLATES.siteCollection, TAG_TEMPLATES.siteNavigation, TAG_TEMPLATES.navigationMenuById, TAG_TEMPLATES.navigationItemById, TAG_TEMPLATES.siteCollection, TAG_TEMPLATES.siteNavigation, TAG_TEMPLATES.navigationMenuById, TAG_TEMPLATES.siteRoutableContent, TAG_TEMPLATES.siteRoutableContent, TAG_TEMPLATES.siteRoutableContent, TAG_TEMPLATES.siteSettings, TAG_TEMPLATES.siteCollection, TAG_TEMPLATES.siteTheme, TAG_TEMPLATES.siteCollection, TAG_TEMPLATES.siteTheme, TAG_TEMPLATES.siteCollection, TAG_TEMPLATES.siteTheme, TAG_TEMPLATES.siteCollection, TAG_TEMPLATES.pageSurfaceById, TAG_TEMPLATES.siteCollection, TAG_TEMPLATES.pageSurfaceById, TAG_TEMPLATES.siteCollection, TAG_TEMPLATES.pageSurfaceById, TAG_TEMPLATES.siteCollection, TAG_TEMPLATES.pageSurfaceById, TAG_TEMPLATES.siteRoutableContent, TAG_TEMPLATES.pageById, TAG_TEMPLATES.siteRoutableContent, TAG_TEMPLATES.pageById, TAG_TEMPLATES.siteRoutableContent, TAG_TEMPLATES.pageById, TAG_TEMPLATES.siteRoutableContent, TAG_TEMPLATES.pageById, TAG_TEMPLATES.siteRoutableContent, TAG_TEMPLATES.pageById, TAG_TEMPLATES.siteRoutableContent, TAG_TEMPLATES.pageById, TAG_TEMPLATES.siteRoutableContent, TAG_TEMPLATES.pageById, TAG_TEMPLATES.siteRoutableContent, TAG_TEMPLATES.pageById, TAG_TEMPLATES.siteRoutableContent, TAG_TEMPLATES.pageById, TAG_TEMPLATES.siteRoutableContent, TAG_TEMPLATES.siteRoutableContent, TAG_TEMPLATES.siteRedirects, TAG_TEMPLATES.siteRouteOutcomes, TAG_TEMPLATES.siteRoutableContent, TAG_TEMPLATES.siteRedirects, TAG_TEMPLATES.siteRouteOutcomes, TAG_TEMPLATES.siteRoutableContent, TAG_TEMPLATES.siteForms, TAG_TEMPLATES.siteForms, TAG_TEMPLATES.siteForms, TAG_TEMPLATES.siteForms, TAG_TEMPLATES.siteForms, TAG_TEMPLATES.siteForms, TAG_TEMPLATES.formSubmissionsBySlug, TAG_TEMPLATES.siteForms, TAG_TEMPLATES.formSubmissionsBySlug, TAG_TEMPLATES.siteForms, TAG_TEMPLATES.formSubmissionsBySlug, TAG_TEMPLATES.siteForms, { ...PUBLIC_BOOKING_AVAILABILITY_ENDPOINT_DEFINITIONS }, TAG_TEMPLATES.publicEventFilters, TAG_TEMPLATES.publicEvents, TAG_TEMPLATES.publicShop, TAG_TEMPLATES.publicCheckout, TAG_TEMPLATES.siteRoutableContent, { ...PUBLIC_EVENT_CHECKOUT_ENDPOINT_DEFINITIONS }, TAG_TEMPLATES.publicEvents, TAG_TEMPLATES.publicEvents, { ...EVENT_MANAGEMENT_ENDPOINT_DEFINITIONS }, { ...SDK_MEDIA_ENDPOINT_DEFINITIONS }, { ...SDK_ENDPOINT_DEFINITIONS }, { ...SDK_ENTRY_READ_ENDPOINTS };
|
|
3437
|
+
}, TAG_TEMPLATES.siteCollection, TAG_TEMPLATES.siteById, TAG_TEMPLATES.siteBySlug, TAG_TEMPLATES.siteByDomain, TAG_TEMPLATES.siteCollection, TAG_TEMPLATES.siteById, TAG_TEMPLATES.siteBySlug, TAG_TEMPLATES.siteByDomain, TAG_TEMPLATES.siteCollection, TAG_TEMPLATES.pageSurfaceById, TAG_TEMPLATES.siteCollection, TAG_TEMPLATES.pageSurfaceById, TAG_TEMPLATES.siteCollection, TAG_TEMPLATES.siteRoutableContent, TAG_TEMPLATES.pageSurfaceById, TAG_TEMPLATES.siteCollection, TAG_TEMPLATES.siteRoutableContent, TAG_TEMPLATES.pageSurfaceById, TAG_TEMPLATES.workflowRunById, TAG_TEMPLATES.siteCollection, TAG_TEMPLATES.siteRoutableContent, TAG_TEMPLATES.routeById, TAG_TEMPLATES.site, TAG_TEMPLATES.siteSettings, TAG_TEMPLATES.siteCollection, TAG_TEMPLATES.site, TAG_TEMPLATES.siteSettings, TAG_TEMPLATES.siteCollection, TAG_TEMPLATES.site, TAG_TEMPLATES.siteSettings, TAG_TEMPLATES.siteCollection, TAG_TEMPLATES.site, TAG_TEMPLATES.site, TAG_TEMPLATES.siteSettings, TAG_TEMPLATES.site, TAG_TEMPLATES.siteSettings, TAG_TEMPLATES.site, TAG_TEMPLATES.siteSettings, TAG_TEMPLATES.site, TAG_TEMPLATES.siteSettings, TAG_TEMPLATES.site, TAG_TEMPLATES.siteSettings, TAG_TEMPLATES.site, TAG_TEMPLATES.siteSettings, TAG_TEMPLATES.site, TAG_TEMPLATES.siteSettings, TAG_TEMPLATES.site, TAG_TEMPLATES.siteSettings, TAG_TEMPLATES.site, TAG_TEMPLATES.siteSettings, TAG_TEMPLATES.site, TAG_TEMPLATES.siteSettings, TAG_TEMPLATES.site, TAG_TEMPLATES.siteSettings, TAG_TEMPLATES.site, TAG_TEMPLATES.siteSettings, TAG_TEMPLATES.site, TAG_TEMPLATES.siteSettings, TAG_TEMPLATES.site, TAG_TEMPLATES.siteSettings, TAG_TEMPLATES.site, TAG_TEMPLATES.siteSettings, TAG_TEMPLATES.site, TAG_TEMPLATES.siteSettings, TAG_TEMPLATES.site, TAG_TEMPLATES.siteSettings, TAG_TEMPLATES.site, TAG_TEMPLATES.siteSettings, TAG_TEMPLATES.site, TAG_TEMPLATES.siteSettings, TAG_TEMPLATES.site, TAG_TEMPLATES.siteSettings, TAG_TEMPLATES.site, TAG_TEMPLATES.siteSettings, TAG_TEMPLATES.site, TAG_TEMPLATES.siteSettings, TAG_TEMPLATES.site, TAG_TEMPLATES.siteSettings, TAG_TEMPLATES.site, TAG_TEMPLATES.siteSettings, TAG_TEMPLATES.site, TAG_TEMPLATES.siteSettings, TAG_TEMPLATES.site, TAG_TEMPLATES.siteSettings, TAG_TEMPLATES.siteCollection, TAG_TEMPLATES.siteNavigation, TAG_TEMPLATES.siteCollection, TAG_TEMPLATES.siteNavigation, TAG_TEMPLATES.navigationMenuById, TAG_TEMPLATES.siteCollection, TAG_TEMPLATES.siteNavigation, TAG_TEMPLATES.navigationMenuById, TAG_TEMPLATES.siteCollection, TAG_TEMPLATES.siteNavigation, TAG_TEMPLATES.navigationMenuById, TAG_TEMPLATES.navigationItemById, TAG_TEMPLATES.siteCollection, TAG_TEMPLATES.siteNavigation, TAG_TEMPLATES.navigationMenuById, TAG_TEMPLATES.navigationItemById, TAG_TEMPLATES.siteCollection, TAG_TEMPLATES.siteNavigation, TAG_TEMPLATES.navigationMenuById, TAG_TEMPLATES.siteRoutableContent, TAG_TEMPLATES.siteRoutableContent, TAG_TEMPLATES.siteRoutableContent, TAG_TEMPLATES.siteSettings, TAG_TEMPLATES.publicEvents, TAG_TEMPLATES.publicBookingServices, TAG_TEMPLATES.siteCollection, TAG_TEMPLATES.siteTheme, TAG_TEMPLATES.siteCollection, TAG_TEMPLATES.siteTheme, TAG_TEMPLATES.siteCollection, TAG_TEMPLATES.siteTheme, TAG_TEMPLATES.siteCollection, TAG_TEMPLATES.pageSurfaceById, TAG_TEMPLATES.siteCollection, TAG_TEMPLATES.pageSurfaceById, TAG_TEMPLATES.siteCollection, TAG_TEMPLATES.pageSurfaceById, TAG_TEMPLATES.siteCollection, TAG_TEMPLATES.pageSurfaceById, TAG_TEMPLATES.siteRoutableContent, TAG_TEMPLATES.pageById, TAG_TEMPLATES.siteRoutableContent, TAG_TEMPLATES.pageById, TAG_TEMPLATES.siteRoutableContent, TAG_TEMPLATES.pageById, TAG_TEMPLATES.siteRoutableContent, TAG_TEMPLATES.pageById, TAG_TEMPLATES.siteRoutableContent, TAG_TEMPLATES.pageById, TAG_TEMPLATES.siteRoutableContent, TAG_TEMPLATES.pageById, TAG_TEMPLATES.siteRoutableContent, TAG_TEMPLATES.pageById, TAG_TEMPLATES.siteRoutableContent, TAG_TEMPLATES.pageById, TAG_TEMPLATES.siteRoutableContent, TAG_TEMPLATES.pageById, TAG_TEMPLATES.siteRoutableContent, TAG_TEMPLATES.siteRoutableContent, TAG_TEMPLATES.siteRedirects, TAG_TEMPLATES.siteRouteOutcomes, TAG_TEMPLATES.siteRoutableContent, TAG_TEMPLATES.siteRedirects, TAG_TEMPLATES.siteRouteOutcomes, TAG_TEMPLATES.siteRoutableContent, TAG_TEMPLATES.siteForms, TAG_TEMPLATES.siteForms, TAG_TEMPLATES.siteForms, TAG_TEMPLATES.siteForms, TAG_TEMPLATES.siteForms, TAG_TEMPLATES.siteForms, TAG_TEMPLATES.formSubmissionsBySlug, TAG_TEMPLATES.siteForms, TAG_TEMPLATES.formSubmissionsBySlug, TAG_TEMPLATES.siteForms, TAG_TEMPLATES.formSubmissionsBySlug, TAG_TEMPLATES.siteForms, { ...PUBLIC_BOOKING_AVAILABILITY_ENDPOINT_DEFINITIONS }, TAG_TEMPLATES.publicEventFilters, TAG_TEMPLATES.publicEvents, TAG_TEMPLATES.publicShop, TAG_TEMPLATES.publicCheckout, TAG_TEMPLATES.siteRoutableContent, { ...PUBLIC_EVENT_CHECKOUT_ENDPOINT_DEFINITIONS }, TAG_TEMPLATES.publicEvents, TAG_TEMPLATES.publicEvents, { ...EVENT_MANAGEMENT_ENDPOINT_DEFINITIONS }, { ...SDK_MEDIA_ENDPOINT_DEFINITIONS }, { ...SDK_ENDPOINT_DEFINITIONS }, { ...SDK_ENTRY_READ_ENDPOINTS };
|
|
3294
3438
|
z.object({ refreshToken: z.string().min(1).max(4096) }).strict();
|
|
3295
3439
|
z.object({
|
|
3296
3440
|
accessToken: z.string().min(1).max(4096),
|
|
@@ -5930,7 +6074,7 @@ const BUTTON_CONTRAST_POLICY = {
|
|
|
5930
6074
|
nonTextMinimumRatio: 3,
|
|
5931
6075
|
gradientSamplesPerSegment: 20,
|
|
5932
6076
|
alphaBackgrounds: "reject-without-known-surface",
|
|
5933
|
-
disabled: "
|
|
6077
|
+
disabled: "validated-colour-pair-with-muted-control-opacity"
|
|
5934
6078
|
};
|
|
5935
6079
|
function validateButtonSurfaceContrast(input) {
|
|
5936
6080
|
const ratio = contrastRatio(input.buttonPaint, input.surfaceHex);
|
|
@@ -6456,59 +6600,6 @@ function interpolateHex(startHex, endHex, position) {
|
|
|
6456
6600
|
const channel = (from, to) => Math.round(from + (to - from) * position).toString(16).padStart(2, "0");
|
|
6457
6601
|
return `#${channel(start.r, end.r)}${channel(start.g, end.g)}${channel(start.b, end.b)}`;
|
|
6458
6602
|
}
|
|
6459
|
-
shadeBackgroundEffect({
|
|
6460
|
-
id: "darken-background",
|
|
6461
|
-
name: "Darken on Hover",
|
|
6462
|
-
description: "Darkens the background color on hover",
|
|
6463
|
-
label: "Darken Amount (shade step)",
|
|
6464
|
-
shadeDirection: 1
|
|
6465
|
-
});
|
|
6466
|
-
shadeBackgroundEffect({
|
|
6467
|
-
id: "lighten-background",
|
|
6468
|
-
name: "Lighten on Hover",
|
|
6469
|
-
description: "Lightens the background color on hover",
|
|
6470
|
-
label: "Lighten Amount (shade step)",
|
|
6471
|
-
shadeDirection: -1
|
|
6472
|
-
});
|
|
6473
|
-
function shadeBackgroundEffect(config) {
|
|
6474
|
-
return {
|
|
6475
|
-
id: config.id,
|
|
6476
|
-
name: config.name,
|
|
6477
|
-
description: config.description,
|
|
6478
|
-
category: "background",
|
|
6479
|
-
pseudoElement: "none",
|
|
6480
|
-
applicableTo: ["button"],
|
|
6481
|
-
customizableOption: {
|
|
6482
|
-
name: "amount",
|
|
6483
|
-
type: "select",
|
|
6484
|
-
label: config.label,
|
|
6485
|
-
default: 100,
|
|
6486
|
-
options: [
|
|
6487
|
-
0,
|
|
6488
|
-
100,
|
|
6489
|
-
200,
|
|
6490
|
-
300,
|
|
6491
|
-
400,
|
|
6492
|
-
500,
|
|
6493
|
-
600,
|
|
6494
|
-
700,
|
|
6495
|
-
800,
|
|
6496
|
-
900
|
|
6497
|
-
]
|
|
6498
|
-
},
|
|
6499
|
-
isApplicable: (buttonConfig) => buttonConfig.background.type === "solid",
|
|
6500
|
-
generateCSS: ({ themeId, variantId, options, tokens, buttonConfig }) => {
|
|
6501
|
-
if (buttonConfig.background.type !== "solid") return "";
|
|
6502
|
-
const amount = (options.amount || 100) * config.shadeDirection;
|
|
6503
|
-
const baseToken = buttonConfig.background.colorToken ?? "primary-500";
|
|
6504
|
-
return `
|
|
6505
|
-
:where([data-theme-scope="${themeId}"]) .${variantId}:hover {
|
|
6506
|
-
background-color: ${tokens.getColor(tokens.adjustShade(baseToken, amount))};
|
|
6507
|
-
}
|
|
6508
|
-
`;
|
|
6509
|
-
}
|
|
6510
|
-
};
|
|
6511
|
-
}
|
|
6512
6603
|
//#endregion
|
|
6513
6604
|
//#region ../theme-core/src/palette/utils/opaqueSurfaceColor.ts
|
|
6514
6605
|
/** Resolve an opaque colour, compositing alpha against an explicit underlay. */
|
|
@@ -6793,6 +6884,59 @@ function mergeStyles(...styles) {
|
|
|
6793
6884
|
}
|
|
6794
6885
|
return Object.keys(merged).length ? merged : void 0;
|
|
6795
6886
|
}
|
|
6887
|
+
shadeBackgroundEffect({
|
|
6888
|
+
id: "darken-background",
|
|
6889
|
+
name: "Darken on Hover",
|
|
6890
|
+
description: "Darkens the background color on hover",
|
|
6891
|
+
label: "Darken Amount (shade step)",
|
|
6892
|
+
shadeDirection: 1
|
|
6893
|
+
});
|
|
6894
|
+
shadeBackgroundEffect({
|
|
6895
|
+
id: "lighten-background",
|
|
6896
|
+
name: "Lighten on Hover",
|
|
6897
|
+
description: "Lightens the background color on hover",
|
|
6898
|
+
label: "Lighten Amount (shade step)",
|
|
6899
|
+
shadeDirection: -1
|
|
6900
|
+
});
|
|
6901
|
+
function shadeBackgroundEffect(config) {
|
|
6902
|
+
return {
|
|
6903
|
+
id: config.id,
|
|
6904
|
+
name: config.name,
|
|
6905
|
+
description: config.description,
|
|
6906
|
+
category: "background",
|
|
6907
|
+
pseudoElement: "none",
|
|
6908
|
+
applicableTo: ["button"],
|
|
6909
|
+
customizableOption: {
|
|
6910
|
+
name: "amount",
|
|
6911
|
+
type: "select",
|
|
6912
|
+
label: config.label,
|
|
6913
|
+
default: 100,
|
|
6914
|
+
options: [
|
|
6915
|
+
0,
|
|
6916
|
+
100,
|
|
6917
|
+
200,
|
|
6918
|
+
300,
|
|
6919
|
+
400,
|
|
6920
|
+
500,
|
|
6921
|
+
600,
|
|
6922
|
+
700,
|
|
6923
|
+
800,
|
|
6924
|
+
900
|
|
6925
|
+
]
|
|
6926
|
+
},
|
|
6927
|
+
isApplicable: (buttonConfig) => buttonConfig.background.type === "solid",
|
|
6928
|
+
generateCSS: ({ themeId, variantId, options, tokens, buttonConfig }) => {
|
|
6929
|
+
if (buttonConfig.background.type !== "solid") return "";
|
|
6930
|
+
const amount = (options.amount || 100) * config.shadeDirection;
|
|
6931
|
+
const baseToken = buttonConfig.background.colorToken ?? "primary-500";
|
|
6932
|
+
return `
|
|
6933
|
+
:where([data-theme-scope="${themeId}"]) .${variantId}:hover {
|
|
6934
|
+
background-color: ${tokens.getColor(tokens.adjustShade(baseToken, amount))};
|
|
6935
|
+
}
|
|
6936
|
+
`;
|
|
6937
|
+
}
|
|
6938
|
+
};
|
|
6939
|
+
}
|
|
6796
6940
|
//#endregion
|
|
6797
6941
|
//#region ../theme-core/src/utils/tokenOrColor.ts
|
|
6798
6942
|
/**
|
|
@@ -10215,8 +10359,14 @@ const headerInteractionPillPaletteValues = [
|
|
|
10215
10359
|
"accent"
|
|
10216
10360
|
];
|
|
10217
10361
|
/**
|
|
10218
|
-
* "No pill":
|
|
10219
|
-
*
|
|
10362
|
+
* "No pill": a colour change on hover rather than a filled background.
|
|
10363
|
+
*
|
|
10364
|
+
* The palette step writes nothing (#1318 Phase 4c decision 2), but on a
|
|
10365
|
+
* foreground-adaptive style that is not the end of the story: the hover colour
|
|
10366
|
+
* is derived from the resolved opening foreground at render time, paired with
|
|
10367
|
+
* the resting colour, so `quiet` resolves to a definite colour rather than to
|
|
10368
|
+
* whatever brand token the recipe happened to name. See
|
|
10369
|
+
* `applyOpeningForeground`.
|
|
10220
10370
|
*
|
|
10221
10371
|
* It exists because "a colour change on hover, no filled background" was not
|
|
10222
10372
|
* expressible in the vocabulary, and it is what
|
|
@@ -16266,6 +16416,7 @@ function isDisplayMediaKind(kind) {
|
|
|
16266
16416
|
}
|
|
16267
16417
|
const siteOptionSources = [
|
|
16268
16418
|
"eventCategories",
|
|
16419
|
+
"eventSeries",
|
|
16269
16420
|
"venues",
|
|
16270
16421
|
"staffMembers"
|
|
16271
16422
|
];
|
|
@@ -27136,7 +27287,8 @@ const appointmentServicesBlockDefinition = {
|
|
|
27136
27287
|
el("appointment-services", {
|
|
27137
27288
|
sectionHeading: { $bind: { from: "content.heading" } },
|
|
27138
27289
|
services: { $bind: { from: "data.services" } },
|
|
27139
|
-
pathname: { $bind: { from: "$root.pathname" } }
|
|
27290
|
+
pathname: { $bind: { from: "$root.pathname" } },
|
|
27291
|
+
servicePathPrefix: { $bind: { from: "$root.appointmentServicePathPrefix" } }
|
|
27140
27292
|
})
|
|
27141
27293
|
], { gap: "lg" })
|
|
27142
27294
|
})]
|
|
@@ -27516,6 +27668,28 @@ const bookingRequirementConsentFieldSchema = z.object({
|
|
|
27516
27668
|
z.union([blockBookingConsentSchema, bookingRequirementConsentFieldSchema]);
|
|
27517
27669
|
//#endregion
|
|
27518
27670
|
//#region ../blocks/src/system/blocks/events/shared/schemas.ts
|
|
27671
|
+
const publicEventLoaderQuerySchemaShape = {
|
|
27672
|
+
limit: z.string().optional(),
|
|
27673
|
+
from: z.string().optional(),
|
|
27674
|
+
to: z.string().optional(),
|
|
27675
|
+
afterStartsAt: z.string().optional(),
|
|
27676
|
+
afterId: z.string().optional(),
|
|
27677
|
+
categoryIds: z.string().optional(),
|
|
27678
|
+
venueId: z.string().optional(),
|
|
27679
|
+
staffMemberId: z.string().optional(),
|
|
27680
|
+
eventSurface: z.string().optional(),
|
|
27681
|
+
eventPresets: z.string().optional(),
|
|
27682
|
+
scheduleScope: z.string().optional(),
|
|
27683
|
+
seriesId: z.string().optional(),
|
|
27684
|
+
seriesIds: z.string().optional(),
|
|
27685
|
+
runSeriesId: z.string().optional(),
|
|
27686
|
+
seriesSlug: z.string().optional(),
|
|
27687
|
+
includeOccurrenceId: z.string().optional(),
|
|
27688
|
+
readIntent: z.string().optional(),
|
|
27689
|
+
detailLevel: z.string().optional(),
|
|
27690
|
+
readProfile: z.string().optional()
|
|
27691
|
+
};
|
|
27692
|
+
z.object(publicEventLoaderQuerySchemaShape);
|
|
27519
27693
|
const eventPresetSchema = z.enum([
|
|
27520
27694
|
"event",
|
|
27521
27695
|
"class",
|
|
@@ -28318,6 +28492,44 @@ function toWholeSeriesRegistrationEvents(events) {
|
|
|
28318
28492
|
return groupPublicEventsByRun(events).map(toWholeSeriesRegistrationEvent).filter((event) => event !== null);
|
|
28319
28493
|
}
|
|
28320
28494
|
//#endregion
|
|
28495
|
+
//#region ../blocks/src/system/runtime/nodes/event-registration/eventSourceRecovery.ts
|
|
28496
|
+
const { limit: _rawLimit, eventSurface: _rawEventSurface, scheduleScope: _rawScheduleScope, detailLevel: _rawDetailLevel, ...stringEventQueryShape } = publicEventLoaderQuerySchemaShape;
|
|
28497
|
+
const eventRecoveryRequestSchema = z.object({
|
|
28498
|
+
...stringEventQueryShape,
|
|
28499
|
+
limit: z.coerce.number().int().positive().optional(),
|
|
28500
|
+
eventSurface: z.enum(eventSurfaceScopeValues).optional(),
|
|
28501
|
+
scheduleScope: z.enum(eventScheduleScopeValues).optional(),
|
|
28502
|
+
detailLevel: z.enum(["full", "listing"]).optional(),
|
|
28503
|
+
stage: z.enum(["preview", "published"]).optional()
|
|
28504
|
+
});
|
|
28505
|
+
function resolveEventRegistrationEventSource(input) {
|
|
28506
|
+
if (input.wholeSeriesRunEvents != null) return {
|
|
28507
|
+
kind: "loaded",
|
|
28508
|
+
events: input.wholeSeriesRunEvents
|
|
28509
|
+
};
|
|
28510
|
+
if (input.events != null) return {
|
|
28511
|
+
kind: "loaded",
|
|
28512
|
+
events: input.events
|
|
28513
|
+
};
|
|
28514
|
+
return {
|
|
28515
|
+
kind: "unresolved",
|
|
28516
|
+
request: parseEventLoaderRecoveryRequest(input.failures?.wholeSeriesRunEvents ?? input.failures?.events)
|
|
28517
|
+
};
|
|
28518
|
+
}
|
|
28519
|
+
const eventLoaderFailureSchema = z.object({
|
|
28520
|
+
endpoint: z.literal("listPublicEvents"),
|
|
28521
|
+
params: eventRecoveryRequestSchema.extend({ siteId: z.string().optional() })
|
|
28522
|
+
});
|
|
28523
|
+
function parseEventLoaderRecoveryRequest(value) {
|
|
28524
|
+
const parsed = eventLoaderFailureSchema.safeParse(value);
|
|
28525
|
+
if (!parsed.success) return null;
|
|
28526
|
+
const { siteId: _siteId, stage, ...params } = parsed.data.params;
|
|
28527
|
+
return {
|
|
28528
|
+
...params,
|
|
28529
|
+
stage: stage ?? "published"
|
|
28530
|
+
};
|
|
28531
|
+
}
|
|
28532
|
+
//#endregion
|
|
28321
28533
|
//#region ../blocks/src/system/runtime/nodes/event-registration.interactive.ts
|
|
28322
28534
|
const EVENT_REGISTRATION_GENERIC_SHELL_STEP_LABELS = [
|
|
28323
28535
|
"Date",
|
|
@@ -28335,8 +28547,6 @@ const eventRegistrationPublicEventSchema = z.preprocess(normalizeEventRegistrati
|
|
|
28335
28547
|
const eventRegistrationHydrationSchemaShape = {
|
|
28336
28548
|
occurrenceContext: occurrenceContextSchema.optional(),
|
|
28337
28549
|
subject: eventRegistrationPageSurfaceSubjectSchema.nullable().optional(),
|
|
28338
|
-
events: z.array(eventRegistrationPublicEventSchema).nullable().optional(),
|
|
28339
|
-
wholeSeriesRunEvents: z.array(eventRegistrationPublicEventSchema).nullable().optional(),
|
|
28340
28550
|
maxTickets: z.string().optional(),
|
|
28341
28551
|
showVenue: z.boolean().optional(),
|
|
28342
28552
|
showCapacity: z.boolean().optional(),
|
|
@@ -28348,12 +28558,22 @@ const eventRegistrationHydrationSchemaShape = {
|
|
|
28348
28558
|
sitePasses: publicPassProductCollectionSchema.nullable().optional(),
|
|
28349
28559
|
siteMemberships: publicMembershipProductCollectionSchema.nullable().optional()
|
|
28350
28560
|
};
|
|
28561
|
+
const eventRegistrationEventSourceSchema = z.discriminatedUnion("kind", [z.object({
|
|
28562
|
+
kind: z.literal("loaded"),
|
|
28563
|
+
events: z.array(eventRegistrationPublicEventSchema)
|
|
28564
|
+
}), z.object({
|
|
28565
|
+
kind: z.literal("unresolved"),
|
|
28566
|
+
request: eventRecoveryRequestSchema.nullable()
|
|
28567
|
+
})]);
|
|
28351
28568
|
const eventRegistrationSourceSchema = z.object({
|
|
28352
28569
|
siteId: z.string().optional(),
|
|
28353
28570
|
apiBaseUrl: z.string().optional(),
|
|
28354
28571
|
portalToken: z.string().nullable().optional(),
|
|
28355
28572
|
previewToken: z.string().nullable().optional(),
|
|
28356
28573
|
...eventRegistrationHydrationSchemaShape,
|
|
28574
|
+
events: z.array(eventRegistrationPublicEventSchema).nullable().optional(),
|
|
28575
|
+
wholeSeriesRunEvents: z.array(eventRegistrationPublicEventSchema).nullable().optional(),
|
|
28576
|
+
eventLoaderFailures: z.record(z.string(), z.unknown()).nullable().optional(),
|
|
28357
28577
|
className: z.string().nullable().optional(),
|
|
28358
28578
|
buttonText: z.string().nullable().optional(),
|
|
28359
28579
|
maxTickets: z.string().nullable().optional(),
|
|
@@ -28374,7 +28594,10 @@ const eventRegistrationDisplaySchema = z.discriminatedUnion("state", [z.object({
|
|
|
28374
28594
|
titleText: z.string(),
|
|
28375
28595
|
bodyText: z.string()
|
|
28376
28596
|
})]);
|
|
28377
|
-
const eventRegistrationHydrationSchema = z.object(
|
|
28597
|
+
const eventRegistrationHydrationSchema = z.object({
|
|
28598
|
+
...eventRegistrationHydrationSchemaShape,
|
|
28599
|
+
eventSource: eventRegistrationEventSourceSchema
|
|
28600
|
+
});
|
|
28378
28601
|
const eventRegistrationRenderSchema = z.object({
|
|
28379
28602
|
display: eventRegistrationDisplaySchema,
|
|
28380
28603
|
hydration: eventRegistrationHydrationSchema
|
|
@@ -28433,16 +28656,12 @@ function buildEventRegistrationShellStepLabels(source, scopedSourceEvents) {
|
|
|
28433
28656
|
function toScopedEventRegistrationEvents(scopedSourceEvents) {
|
|
28434
28657
|
return [...toRegistrationEvents(scopedSourceEvents), ...toWholeSeriesRegistrationEvents(scopedSourceEvents)];
|
|
28435
28658
|
}
|
|
28436
|
-
function scopeEventRegistrationSourceEvents(source) {
|
|
28437
|
-
return resolveEventRegistrationScopedEvents(
|
|
28659
|
+
function scopeEventRegistrationSourceEvents(source, eventSource) {
|
|
28660
|
+
return resolveEventRegistrationScopedEvents(eventSource.kind === "loaded" ? eventSource.events : [], {
|
|
28438
28661
|
occurrenceContext: source.occurrenceContext,
|
|
28439
28662
|
subject: source.subject
|
|
28440
28663
|
});
|
|
28441
28664
|
}
|
|
28442
|
-
function resolveLoadedEventRegistrationSourceEvents(source, scopedSourceEvents) {
|
|
28443
|
-
if (source.events == null && source.wholeSeriesRunEvents == null) return null;
|
|
28444
|
-
return [...scopedSourceEvents];
|
|
28445
|
-
}
|
|
28446
28665
|
/**
|
|
28447
28666
|
* The one run this surface is registering for, when the scoped events describe
|
|
28448
28667
|
* exactly one. More than one run means the visitor still has to choose.
|
|
@@ -28482,14 +28701,21 @@ const eventRegistrationBlockRuntime = defineClientOwnedBlockRuntime({
|
|
|
28482
28701
|
render: createZodCodec(eventRegistrationRenderSchema)
|
|
28483
28702
|
},
|
|
28484
28703
|
buildRender: (source) => {
|
|
28485
|
-
const
|
|
28486
|
-
|
|
28704
|
+
const eventSource = resolveEventRegistrationEventSource({
|
|
28705
|
+
events: source.events,
|
|
28706
|
+
wholeSeriesRunEvents: source.wholeSeriesRunEvents,
|
|
28707
|
+
failures: source.eventLoaderFailures
|
|
28708
|
+
});
|
|
28709
|
+
const scopedSourceEvents = scopeEventRegistrationSourceEvents(source, eventSource);
|
|
28487
28710
|
return {
|
|
28488
28711
|
display: buildEventRegistrationDisplayFromScopedEvents(source, scopedSourceEvents),
|
|
28489
28712
|
hydration: {
|
|
28490
28713
|
occurrenceContext: source.occurrenceContext ?? null,
|
|
28491
28714
|
subject: source.subject ?? null,
|
|
28492
|
-
|
|
28715
|
+
eventSource: eventSource.kind === "loaded" ? {
|
|
28716
|
+
...eventSource,
|
|
28717
|
+
events: [...scopedSourceEvents]
|
|
28718
|
+
} : eventSource,
|
|
28493
28719
|
maxTickets: source.maxTickets ?? void 0,
|
|
28494
28720
|
showVenue: source.showVenue,
|
|
28495
28721
|
showCapacity: source.showCapacity,
|
|
@@ -28665,6 +28891,7 @@ const eventRegistrationBlockDefinition = {
|
|
|
28665
28891
|
} },
|
|
28666
28892
|
events: { $bind: { from: "data.events" } },
|
|
28667
28893
|
wholeSeriesRunEvents: { $bind: { from: "data.wholeSeriesRunEvents" } },
|
|
28894
|
+
loaderFailures: { $bind: { from: "$root.loaderFailures" } },
|
|
28668
28895
|
sitePasses: { $bind: { from: "data.sitePasses" } },
|
|
28669
28896
|
siteMemberships: { $bind: { from: "data.siteMemberships" } },
|
|
28670
28897
|
stage: { $bind: {
|
|
@@ -29150,6 +29377,35 @@ const eventSpotlightBlockDefinition = {
|
|
|
29150
29377
|
} }
|
|
29151
29378
|
};
|
|
29152
29379
|
//#endregion
|
|
29380
|
+
//#region ../blocks/src/system/blocks/events/shared/eventSelection.ts
|
|
29381
|
+
/** Invalid saved selections fail closed rather than widening discovery. */
|
|
29382
|
+
function resolveEventSelection(mode, value) {
|
|
29383
|
+
if (mode !== "selected") return { kind: "matching" };
|
|
29384
|
+
const candidates = Array.isArray(value) ? value : typeof value === "string" ? value.split(",").filter(Boolean) : [];
|
|
29385
|
+
const ids = [];
|
|
29386
|
+
for (const candidate of candidates) {
|
|
29387
|
+
if (typeof candidate !== "string") return {
|
|
29388
|
+
kind: "selected",
|
|
29389
|
+
seriesIds: []
|
|
29390
|
+
};
|
|
29391
|
+
const parsed = parseEventSeriesId(candidate.trim());
|
|
29392
|
+
if (!parsed.ok) return {
|
|
29393
|
+
kind: "selected",
|
|
29394
|
+
seriesIds: []
|
|
29395
|
+
};
|
|
29396
|
+
ids.push(parsed.value);
|
|
29397
|
+
}
|
|
29398
|
+
return {
|
|
29399
|
+
kind: "selected",
|
|
29400
|
+
seriesIds: [...new Set(ids)].sort()
|
|
29401
|
+
};
|
|
29402
|
+
}
|
|
29403
|
+
/** Undefined means discovery; an empty string is an explicitly empty selection. */
|
|
29404
|
+
function eventSeriesScopeCsv(value) {
|
|
29405
|
+
if (value == null) return void 0;
|
|
29406
|
+
return typeof value === "string" ? value : value.join(",");
|
|
29407
|
+
}
|
|
29408
|
+
//#endregion
|
|
29153
29409
|
//#region ../blocks/src/system/runtime/nodes/events/shared/listingLayout.ts
|
|
29154
29410
|
/**
|
|
29155
29411
|
* Layout classes for event listing containers and cards. Presentation
|
|
@@ -29278,6 +29534,7 @@ z.object({
|
|
|
29278
29534
|
eventSurface: z.enum(eventSurfaceScopeValues).optional(),
|
|
29279
29535
|
eventPresets: z.string().optional(),
|
|
29280
29536
|
scheduleScope: z.enum(eventScheduleScopeValues).optional(),
|
|
29537
|
+
seriesIds: z.string().optional(),
|
|
29281
29538
|
categoryIds: z.string().optional(),
|
|
29282
29539
|
venueId: z.string().transform(normalizeCalendarFilterId).optional(),
|
|
29283
29540
|
staffMemberId: z.string().transform(normalizeCalendarFilterId).optional()
|
|
@@ -29340,6 +29597,7 @@ const eventCollectionFilterSourceSchemaShape = {
|
|
|
29340
29597
|
eventSurface: eventSurfaceScopeSchema$1.nullable().optional(),
|
|
29341
29598
|
filterEventPresets: z.union([z.string(), z.array(z.string())]).nullable().optional(),
|
|
29342
29599
|
scheduleScope: eventScheduleScopeSchema$1.nullable().optional(),
|
|
29600
|
+
seriesIds: z.union([z.string(), z.array(z.string())]).nullable().optional(),
|
|
29343
29601
|
filterCategoryIds: z.union([z.string(), z.array(z.string())]).nullable().optional(),
|
|
29344
29602
|
filterStaffMemberId: z.string().nullable().optional(),
|
|
29345
29603
|
filterVenueId: z.string().nullable().optional()
|
|
@@ -29386,6 +29644,7 @@ const eventCollectionDisplaySchemaShape = {
|
|
|
29386
29644
|
eventSurface: eventSurfaceScopeSchema$1,
|
|
29387
29645
|
filterEventPresets: z.string().nullable(),
|
|
29388
29646
|
scheduleScope: eventScheduleScopeSchema$1,
|
|
29647
|
+
seriesIds: z.string().nullable().optional(),
|
|
29389
29648
|
filterCategoryIds: z.string().nullable(),
|
|
29390
29649
|
filterStaffMemberId: z.string().nullable(),
|
|
29391
29650
|
filterVenueId: z.string().nullable(),
|
|
@@ -29433,11 +29692,15 @@ function buildEventCollectionDisplay(source) {
|
|
|
29433
29692
|
};
|
|
29434
29693
|
}
|
|
29435
29694
|
function buildEventCollectionFilterDisplay(source) {
|
|
29436
|
-
|
|
29437
|
-
|
|
29438
|
-
|
|
29439
|
-
|
|
29440
|
-
|
|
29695
|
+
const selected = source.seriesIds != null;
|
|
29696
|
+
const matchingFilters = selected ? {
|
|
29697
|
+
eventSurface: "all",
|
|
29698
|
+
filterEventPresets: null,
|
|
29699
|
+
scheduleScope: "any",
|
|
29700
|
+
filterCategoryIds: null,
|
|
29701
|
+
filterStaffMemberId: null,
|
|
29702
|
+
filterVenueId: null
|
|
29703
|
+
} : {
|
|
29441
29704
|
eventSurface: normalizeEventSurfaceScope(source.eventSurface),
|
|
29442
29705
|
filterEventPresets: normalizeEventSurfacePresetsCsv(source.filterEventPresets),
|
|
29443
29706
|
scheduleScope: normalizeEventScheduleScope(source.scheduleScope),
|
|
@@ -29445,6 +29708,14 @@ function buildEventCollectionFilterDisplay(source) {
|
|
|
29445
29708
|
filterStaffMemberId: normalizeEventStaffMemberId(source.filterStaffMemberId),
|
|
29446
29709
|
filterVenueId: normalizeEventVenueId(source.filterVenueId)
|
|
29447
29710
|
};
|
|
29711
|
+
return {
|
|
29712
|
+
seriesIds: eventSeriesScopeCsv(source.seriesIds),
|
|
29713
|
+
showFilters: selected ? false : source.showFilters ?? true,
|
|
29714
|
+
showCategoryFilter: source.showCategoryFilter ?? "auto",
|
|
29715
|
+
showVenueFilter: source.showVenueFilter ?? false,
|
|
29716
|
+
showStaffFilter: source.showStaffFilter ?? true,
|
|
29717
|
+
...matchingFilters
|
|
29718
|
+
};
|
|
29448
29719
|
}
|
|
29449
29720
|
function buildEventCollectionPresentationDisplay(source) {
|
|
29450
29721
|
return {
|
|
@@ -29459,14 +29730,15 @@ function buildEventCollectionPresentationDisplay(source) {
|
|
|
29459
29730
|
}
|
|
29460
29731
|
function buildEventCollectionHydration(source, now = /* @__PURE__ */ new Date()) {
|
|
29461
29732
|
const timeZone = source.calendarWindow?.scope.timeZone ?? toBookingTimeZone(source.bookingTimeZone);
|
|
29733
|
+
const selected = source.seriesIds != null;
|
|
29462
29734
|
return {
|
|
29463
29735
|
calendarWindow: source.calendarWindow ?? void 0,
|
|
29464
29736
|
siteId: source.siteId,
|
|
29465
29737
|
stage: source.stage,
|
|
29466
29738
|
prefetchedEvents: source.events != null,
|
|
29467
|
-
eventSurface: normalizeEventSurfaceScope(source.eventSurface),
|
|
29468
|
-
filterEventPresets: normalizeEventSurfacePresetsCsv(source.filterEventPresets),
|
|
29469
|
-
scheduleScope: normalizeEventScheduleScope(source.scheduleScope),
|
|
29739
|
+
eventSurface: selected ? "all" : normalizeEventSurfaceScope(source.eventSurface),
|
|
29740
|
+
filterEventPresets: selected ? null : normalizeEventSurfacePresetsCsv(source.filterEventPresets),
|
|
29741
|
+
scheduleScope: selected ? "any" : normalizeEventScheduleScope(source.scheduleScope),
|
|
29470
29742
|
calendarContext: {
|
|
29471
29743
|
timeZone,
|
|
29472
29744
|
initialToday: source.calendarWindow?.initialToday ?? getLocalScheduleDate(now, timeZone)
|
|
@@ -29532,6 +29804,7 @@ const eventListingHydrationSchema = z.object({
|
|
|
29532
29804
|
eventSurface: eventSurfaceScopeSchema,
|
|
29533
29805
|
filterEventPresets: z.string().nullable(),
|
|
29534
29806
|
scheduleScope: eventScheduleScopeSchema,
|
|
29807
|
+
seriesIds: z.string().nullable().optional(),
|
|
29535
29808
|
filterCategoryIds: z.string().nullable().optional(),
|
|
29536
29809
|
filterStaffMemberId: z.string().nullable().optional(),
|
|
29537
29810
|
filterVenueId: z.string().nullable().optional(),
|
|
@@ -29592,6 +29865,7 @@ const eventListingBlockRuntime = defineProgressiveBlockRuntime({
|
|
|
29592
29865
|
eventSurface: normalizeEventSurfaceScope(source.eventSurface),
|
|
29593
29866
|
filterEventPresets: normalizeEventSurfacePresetsCsv(source.filterEventPresets),
|
|
29594
29867
|
scheduleScope: normalizeEventScheduleScope(source.scheduleScope),
|
|
29868
|
+
seriesIds: eventSeriesScopeCsv(source.seriesIds),
|
|
29595
29869
|
filterCategoryIds: normalizeEventCategoryIdsCsv(source.filterCategoryIds),
|
|
29596
29870
|
filterStaffMemberId: normalizeEventStaffMemberId(source.filterStaffMemberId),
|
|
29597
29871
|
filterVenueId: normalizeEventVenueId(source.filterVenueId),
|
|
@@ -29965,6 +30239,65 @@ const eventListingBlockDefinition = {
|
|
|
29965
30239
|
} }
|
|
29966
30240
|
};
|
|
29967
30241
|
//#endregion
|
|
30242
|
+
//#region ../blocks/src/system/blocks/events/eventSelectionFields.ts
|
|
30243
|
+
const eventSelectionFields = [{
|
|
30244
|
+
id: "eventSelection",
|
|
30245
|
+
type: "select",
|
|
30246
|
+
label: "Events to show",
|
|
30247
|
+
required: false,
|
|
30248
|
+
multiple: false,
|
|
30249
|
+
defaultValue: "matching",
|
|
30250
|
+
options: [{
|
|
30251
|
+
value: "matching",
|
|
30252
|
+
label: "All matching events"
|
|
30253
|
+
}, {
|
|
30254
|
+
value: "selected",
|
|
30255
|
+
label: "Selected events"
|
|
30256
|
+
}],
|
|
30257
|
+
ui: { intent: "behavior" }
|
|
30258
|
+
}, createSiteOptionSelectField({
|
|
30259
|
+
id: "selectedEventSeriesIds",
|
|
30260
|
+
label: "Selected events",
|
|
30261
|
+
description: "Show upcoming dates for these events. Other event filters do not apply.",
|
|
30262
|
+
required: false,
|
|
30263
|
+
multiple: true,
|
|
30264
|
+
defaultValue: [],
|
|
30265
|
+
optionSource: "eventSeries",
|
|
30266
|
+
ui: {
|
|
30267
|
+
intent: "behavior",
|
|
30268
|
+
searchThreshold: 1,
|
|
30269
|
+
visibleWhen: {
|
|
30270
|
+
field: "eventSelection",
|
|
30271
|
+
equals: "selected"
|
|
30272
|
+
}
|
|
30273
|
+
}
|
|
30274
|
+
})];
|
|
30275
|
+
function withEventSelectionVisibility(field) {
|
|
30276
|
+
if (![
|
|
30277
|
+
"eventSurface",
|
|
30278
|
+
"filterEventPresets",
|
|
30279
|
+
"scheduleScope",
|
|
30280
|
+
"filterCategoryIds",
|
|
30281
|
+
"filterStaffMemberId",
|
|
30282
|
+
"filterVenueId",
|
|
30283
|
+
"showFilters",
|
|
30284
|
+
"showCategoryFilter",
|
|
30285
|
+
"showVenueFilter",
|
|
30286
|
+
"showStaffFilter"
|
|
30287
|
+
].includes(field.id)) return field;
|
|
30288
|
+
const visibleWhen = field.ui?.visibleWhen;
|
|
30289
|
+
return {
|
|
30290
|
+
...field,
|
|
30291
|
+
ui: {
|
|
30292
|
+
...field.ui,
|
|
30293
|
+
visibleWhen: { allOf: [{
|
|
30294
|
+
field: "eventSelection",
|
|
30295
|
+
notEquals: "selected"
|
|
30296
|
+
}, ...visibleWhen ? [visibleWhen] : []] }
|
|
30297
|
+
}
|
|
30298
|
+
};
|
|
30299
|
+
}
|
|
30300
|
+
//#endregion
|
|
29968
30301
|
//#region ../blocks/src/system/runtime/nodes/events/EventCalendar.interactive.ts
|
|
29969
30302
|
const eventCalendarSourceSchema = z.object({
|
|
29970
30303
|
...eventCollectionSourceSchemaShape,
|
|
@@ -30047,19 +30380,59 @@ const eventCalendarBlockRuntime = defineProgressiveBlockRuntime({
|
|
|
30047
30380
|
//#region ../blocks/src/system/blocks/events/eventCalendarDataLoaders.ts
|
|
30048
30381
|
const scopeParams = {
|
|
30049
30382
|
siteId: { $bind: { from: "$root.siteId" } },
|
|
30383
|
+
seriesIds: { $bind: {
|
|
30384
|
+
from: "content",
|
|
30385
|
+
transforms: [{
|
|
30386
|
+
id: "events.calendarSelectionParam",
|
|
30387
|
+
options: { key: "seriesIds" }
|
|
30388
|
+
}]
|
|
30389
|
+
} },
|
|
30050
30390
|
stage: { $bind: {
|
|
30051
30391
|
from: "$root.previewStage",
|
|
30052
30392
|
fallback: "published"
|
|
30053
30393
|
} },
|
|
30054
|
-
eventSurface: { $bind: {
|
|
30394
|
+
eventSurface: { $bind: {
|
|
30395
|
+
from: "content",
|
|
30396
|
+
transforms: [{
|
|
30397
|
+
id: "events.calendarSelectionParam",
|
|
30398
|
+
options: { key: "eventSurface" }
|
|
30399
|
+
}, { id: "value.csv" }]
|
|
30400
|
+
} },
|
|
30055
30401
|
eventPresets: { $bind: {
|
|
30056
|
-
from: "content
|
|
30057
|
-
transforms: [{
|
|
30402
|
+
from: "content",
|
|
30403
|
+
transforms: [{
|
|
30404
|
+
id: "events.calendarSelectionParam",
|
|
30405
|
+
options: { key: "filterEventPresets" }
|
|
30406
|
+
}, { id: "value.csv" }]
|
|
30407
|
+
} },
|
|
30408
|
+
scheduleScope: { $bind: {
|
|
30409
|
+
from: "content",
|
|
30410
|
+
transforms: [{
|
|
30411
|
+
id: "events.calendarSelectionParam",
|
|
30412
|
+
options: { key: "scheduleScope" }
|
|
30413
|
+
}, { id: "value.csv" }]
|
|
30414
|
+
} },
|
|
30415
|
+
categoryIds: { $bind: {
|
|
30416
|
+
from: "content",
|
|
30417
|
+
transforms: [{
|
|
30418
|
+
id: "events.calendarSelectionParam",
|
|
30419
|
+
options: { key: "filterCategoryIds" }
|
|
30420
|
+
}, { id: "value.csv" }]
|
|
30058
30421
|
} },
|
|
30059
|
-
|
|
30060
|
-
|
|
30061
|
-
|
|
30062
|
-
|
|
30422
|
+
staffMemberId: { $bind: {
|
|
30423
|
+
from: "content",
|
|
30424
|
+
transforms: [{
|
|
30425
|
+
id: "events.calendarSelectionParam",
|
|
30426
|
+
options: { key: "filterStaffMemberId" }
|
|
30427
|
+
}, { id: "value.csv" }]
|
|
30428
|
+
} },
|
|
30429
|
+
venueId: { $bind: {
|
|
30430
|
+
from: "content",
|
|
30431
|
+
transforms: [{
|
|
30432
|
+
id: "events.calendarSelectionParam",
|
|
30433
|
+
options: { key: "filterVenueId" }
|
|
30434
|
+
}, { id: "value.csv" }]
|
|
30435
|
+
} }
|
|
30063
30436
|
};
|
|
30064
30437
|
/** Combined renders two jobs; calendar-only variants never pay for the list seed. */
|
|
30065
30438
|
const eventCalendarDataLoaders = {
|
|
@@ -30189,6 +30562,13 @@ const eventCalendarLayout = [styledSection({
|
|
|
30189
30562
|
from: "content.defaultCalendarView",
|
|
30190
30563
|
fallback: "month"
|
|
30191
30564
|
} },
|
|
30565
|
+
seriesIds: { $bind: {
|
|
30566
|
+
from: "content",
|
|
30567
|
+
transforms: [{
|
|
30568
|
+
id: "events.calendarSelectionParam",
|
|
30569
|
+
options: { key: "seriesIds" }
|
|
30570
|
+
}]
|
|
30571
|
+
} },
|
|
30192
30572
|
showFilters: { $bind: {
|
|
30193
30573
|
from: "content.showFilters",
|
|
30194
30574
|
fallback: true
|
|
@@ -30210,17 +30590,47 @@ const eventCalendarLayout = [styledSection({
|
|
|
30210
30590
|
fallback: true
|
|
30211
30591
|
} },
|
|
30212
30592
|
eventSurface: { $bind: {
|
|
30213
|
-
from: "content
|
|
30214
|
-
|
|
30593
|
+
from: "content",
|
|
30594
|
+
transforms: [{
|
|
30595
|
+
id: "events.calendarSelectionParam",
|
|
30596
|
+
options: { key: "eventSurface" }
|
|
30597
|
+
}]
|
|
30598
|
+
} },
|
|
30599
|
+
filterEventPresets: { $bind: {
|
|
30600
|
+
from: "content",
|
|
30601
|
+
transforms: [{
|
|
30602
|
+
id: "events.calendarSelectionParam",
|
|
30603
|
+
options: { key: "filterEventPresets" }
|
|
30604
|
+
}]
|
|
30215
30605
|
} },
|
|
30216
|
-
filterEventPresets: { $bind: { from: "content.filterEventPresets" } },
|
|
30217
30606
|
scheduleScope: { $bind: {
|
|
30218
|
-
from: "content
|
|
30219
|
-
|
|
30607
|
+
from: "content",
|
|
30608
|
+
transforms: [{
|
|
30609
|
+
id: "events.calendarSelectionParam",
|
|
30610
|
+
options: { key: "scheduleScope" }
|
|
30611
|
+
}]
|
|
30612
|
+
} },
|
|
30613
|
+
filterCategoryIds: { $bind: {
|
|
30614
|
+
from: "content",
|
|
30615
|
+
transforms: [{
|
|
30616
|
+
id: "events.calendarSelectionParam",
|
|
30617
|
+
options: { key: "filterCategoryIds" }
|
|
30618
|
+
}]
|
|
30619
|
+
} },
|
|
30620
|
+
filterStaffMemberId: { $bind: {
|
|
30621
|
+
from: "content",
|
|
30622
|
+
transforms: [{
|
|
30623
|
+
id: "events.calendarSelectionParam",
|
|
30624
|
+
options: { key: "filterStaffMemberId" }
|
|
30625
|
+
}]
|
|
30626
|
+
} },
|
|
30627
|
+
filterVenueId: { $bind: {
|
|
30628
|
+
from: "content",
|
|
30629
|
+
transforms: [{
|
|
30630
|
+
id: "events.calendarSelectionParam",
|
|
30631
|
+
options: { key: "filterVenueId" }
|
|
30632
|
+
}]
|
|
30220
30633
|
} },
|
|
30221
|
-
filterCategoryIds: { $bind: { from: "content.filterCategoryIds" } },
|
|
30222
|
-
filterStaffMemberId: { $bind: { from: "content.filterStaffMemberId" } },
|
|
30223
|
-
filterVenueId: { $bind: { from: "content.filterVenueId" } },
|
|
30224
30634
|
cardRole: { $bind: {
|
|
30225
30635
|
from: "content._cardStyles.role",
|
|
30226
30636
|
fallback: "default"
|
|
@@ -30724,6 +31134,7 @@ const eventCalendarAdditionalFields = [
|
|
|
30724
31134
|
}
|
|
30725
31135
|
}
|
|
30726
31136
|
},
|
|
31137
|
+
...eventSelectionFields,
|
|
30727
31138
|
{
|
|
30728
31139
|
id: "eventSurface",
|
|
30729
31140
|
type: "select",
|
|
@@ -30933,7 +31344,7 @@ const eventCalendarBlockDefinition = {
|
|
|
30933
31344
|
titleSource: "heading",
|
|
30934
31345
|
description: "Display events with calendar, list, or combined views with filtering",
|
|
30935
31346
|
skipSectionStyles: true,
|
|
30936
|
-
additionalFields: eventCalendarAdditionalFields,
|
|
31347
|
+
additionalFields: eventCalendarAdditionalFields.map(withEventSelectionVisibility),
|
|
30937
31348
|
styleTokens: {
|
|
30938
31349
|
background: "surface",
|
|
30939
31350
|
typography: "body",
|
|
@@ -35087,6 +35498,15 @@ const newsletterFieldSchema = z.object({
|
|
|
35087
35498
|
placeholder: z.string().optional()
|
|
35088
35499
|
});
|
|
35089
35500
|
const mailingListSignupBlockIdSchema = z.string().trim().min(1).transform(parseRequiredMailingListSignupBlockId);
|
|
35501
|
+
const mailingListContentVersionIdSchema = z.string().transform((value, ctx) => {
|
|
35502
|
+
const parsed = parseMailingListContentVersionId(value);
|
|
35503
|
+
if (parsed) return parsed;
|
|
35504
|
+
ctx.addIssue({
|
|
35505
|
+
code: z.ZodIssueCode.custom,
|
|
35506
|
+
message: "Invalid mailing-list content version ID"
|
|
35507
|
+
});
|
|
35508
|
+
return z.NEVER;
|
|
35509
|
+
});
|
|
35090
35510
|
const signedMailingListSourceTokenSchema = z.string().trim().min(1).transform(parseRequiredMailingListSignedSourceToken);
|
|
35091
35511
|
const newsletterSourceCommonSchema = z.object({
|
|
35092
35512
|
siteId: z.string().optional(),
|
|
@@ -35100,7 +35520,8 @@ const newsletterSourceCommonSchema = z.object({
|
|
|
35100
35520
|
const newsletterSourceSchema = z.discriminatedUnion("source", [
|
|
35101
35521
|
newsletterSourceCommonSchema.extend({
|
|
35102
35522
|
source: z.literal("block"),
|
|
35103
|
-
blockId: z.string().nullable().optional()
|
|
35523
|
+
blockId: z.string().nullable().optional(),
|
|
35524
|
+
contentVersionId: z.string().nullable().optional()
|
|
35104
35525
|
}),
|
|
35105
35526
|
newsletterSourceCommonSchema.extend({
|
|
35106
35527
|
source: z.literal("signed-footer"),
|
|
@@ -35116,6 +35537,7 @@ const newsletterDisplaySchema = z.object({
|
|
|
35116
35537
|
availability: z.enum(["ready", "unavailable"]),
|
|
35117
35538
|
className: z.string().nullable(),
|
|
35118
35539
|
buttonLabel: z.string(),
|
|
35540
|
+
successMessage: z.string(),
|
|
35119
35541
|
buttonVariant: newsletterButtonVariantSchema,
|
|
35120
35542
|
privacyNote: z.string().nullable(),
|
|
35121
35543
|
fields: z.array(newsletterFieldSchema),
|
|
@@ -35130,7 +35552,8 @@ const newsletterHydrationSchema = z.object({
|
|
|
35130
35552
|
tag: z.literal("block-source"),
|
|
35131
35553
|
sourceRef: z.object({
|
|
35132
35554
|
tag: z.literal("block_ref"),
|
|
35133
|
-
blockId: mailingListSignupBlockIdSchema
|
|
35555
|
+
blockId: mailingListSignupBlockIdSchema,
|
|
35556
|
+
contentVersionId: mailingListContentVersionIdSchema
|
|
35134
35557
|
}).nullable()
|
|
35135
35558
|
}),
|
|
35136
35559
|
z.object({
|
|
@@ -35169,6 +35592,7 @@ function buildNewsletterDisplay(source) {
|
|
|
35169
35592
|
fields: { preset: "emailOnly" },
|
|
35170
35593
|
includeOptionalPhone: false,
|
|
35171
35594
|
buttonLabel: "Subscribe",
|
|
35595
|
+
successMessage: DEFAULT_MAILING_LIST_SUCCESS_MESSAGE,
|
|
35172
35596
|
privacyNote: null
|
|
35173
35597
|
};
|
|
35174
35598
|
const targeting = source.targeting ?? { mode: "default" };
|
|
@@ -35178,6 +35602,7 @@ function buildNewsletterDisplay(source) {
|
|
|
35178
35602
|
availability: runtimeTargetingIsAvailable(context, targeting, choices) ? "ready" : "unavailable",
|
|
35179
35603
|
className: source.className ?? null,
|
|
35180
35604
|
buttonLabel: form.buttonLabel,
|
|
35605
|
+
successMessage: form.successMessage,
|
|
35181
35606
|
buttonVariant: source.buttonVariant ?? "primary",
|
|
35182
35607
|
privacyNote: form.privacyNote,
|
|
35183
35608
|
fields: getGlobalFormFields(form),
|
|
@@ -35208,7 +35633,7 @@ const newsletterFormBlockRuntime = defineProgressiveBlockRuntime({
|
|
|
35208
35633
|
function projectNewsletterFormHydrationTarget(source) {
|
|
35209
35634
|
switch (source.source) {
|
|
35210
35635
|
case "block": {
|
|
35211
|
-
const sourceRef = buildMailingListSignupBlockSourceRef(source.blockId);
|
|
35636
|
+
const sourceRef = buildMailingListSignupBlockSourceRef(source.blockId, source.contentVersionId);
|
|
35212
35637
|
if (sourceRef?.tag === "block_ref") return {
|
|
35213
35638
|
tag: "block-source",
|
|
35214
35639
|
sourceRef
|
|
@@ -37342,6 +37767,26 @@ const linksTransforms = [{
|
|
|
37342
37767
|
//#endregion
|
|
37343
37768
|
//#region ../blocks/src/system/transforms/registry/index.ts
|
|
37344
37769
|
const builtinTransformDefinitions = [
|
|
37770
|
+
{
|
|
37771
|
+
id: "events.calendarSelectionParam",
|
|
37772
|
+
kind: "formatter",
|
|
37773
|
+
summary: "Resolve selected events instead of discovery filters",
|
|
37774
|
+
schema: z.object({ key: z.enum([
|
|
37775
|
+
"seriesIds",
|
|
37776
|
+
"eventSurface",
|
|
37777
|
+
"filterEventPresets",
|
|
37778
|
+
"scheduleScope",
|
|
37779
|
+
"filterCategoryIds",
|
|
37780
|
+
"filterStaffMemberId",
|
|
37781
|
+
"filterVenueId"
|
|
37782
|
+
]) }),
|
|
37783
|
+
run(value, { key }) {
|
|
37784
|
+
const content = asPartialObject(value) ?? {};
|
|
37785
|
+
const selection = resolveEventSelection(content.eventSelection, content.selectedEventSeriesIds);
|
|
37786
|
+
if (selection.kind === "selected") return key === "seriesIds" ? selection.seriesIds : void 0;
|
|
37787
|
+
return key === "seriesIds" ? void 0 : content[key];
|
|
37788
|
+
}
|
|
37789
|
+
},
|
|
37345
37790
|
{
|
|
37346
37791
|
id: "events.calendarReadEnabled",
|
|
37347
37792
|
kind: "formatter",
|
|
@@ -37699,7 +38144,17 @@ const riverbankSiteConfigInputSchema = z.object({
|
|
|
37699
38144
|
z.object({
|
|
37700
38145
|
config: riverbankSiteConfigInputSchema,
|
|
37701
38146
|
forceContentTypes: z.boolean().optional(),
|
|
37702
|
-
mode: z.enum(["apply", "preview"]).optional()
|
|
38147
|
+
mode: z.enum(["apply", "preview"]).optional(),
|
|
38148
|
+
expectedMailingListProviderScope: z.unknown().transform((value, ctx) => {
|
|
38149
|
+
if (value === void 0) return void 0;
|
|
38150
|
+
const parsed = parseMailingListProviderScope(value);
|
|
38151
|
+
if (parsed.ok) return parsed.value;
|
|
38152
|
+
ctx.addIssue({
|
|
38153
|
+
code: "custom",
|
|
38154
|
+
message: "Invalid mailing-list provider scope"
|
|
38155
|
+
});
|
|
38156
|
+
return z.NEVER;
|
|
38157
|
+
}).optional()
|
|
37703
38158
|
}).strict();
|
|
37704
38159
|
//#endregion
|
|
37705
38160
|
//#region ../api/src/sdkThemeWire.ts
|