@riverbankcms/sdk 0.140.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/dist/{PreviewEditorSidebar-CUyTzd5z.mjs → PreviewEditorSidebar-Q-fy9GYw.mjs} +3 -3
- package/dist/{PreviewEditorUI-Agkw4v5i.mjs → PreviewEditorUI-LYGzgk85.mjs} +2 -2
- package/dist/{SdkPreviewModeRuntime-DdbeAdS8.mjs → SdkPreviewModeRuntime-CoPYI5Jq.mjs} +72 -46
- package/dist/{SiteChromeCustomizeContext-CqGOz-Kv.mjs → SiteChromeCustomizeContext-D8LePX8x.mjs} +681 -196
- package/dist/_dts/api/src/contentRuntime.d.ts +12 -31
- package/dist/_dts/api/src/domainConnection.d.ts +4 -0
- package/dist/_dts/api/src/footerCompositionContracts.d.ts +25 -0
- package/dist/_dts/api/src/index.d.ts +1 -1
- package/dist/_dts/api/src/launchReadiness.d.ts +1 -0
- package/dist/_dts/api/src/navigation/dashboardSiteNav.d.ts +2 -1
- package/dist/_dts/api/src/siteManagementEndpoints.d.ts +3 -26
- package/dist/_dts/api/src/siteOnboarding.d.ts +7 -0
- package/dist/_dts/billing/src/site-arrangements.d.ts +12 -3
- package/dist/_dts/blocks/src/contracts/proof-block-islands.d.ts +4 -0
- package/dist/_dts/blocks/src/pageRendererContracts.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/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/prefetchBlockData.d.ts +5 -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/runtime/components/registry.client.d.ts +12 -180
- package/dist/_dts/blocks/src/system/runtime/components/runtime-backed-blocks.d.ts +6 -90
- 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 +5 -1
- 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/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/useEventRegistrationWizard.d.ts +4 -5
- package/dist/_dts/blocks/src/system/runtime/nodes/event-registration/useSettledCommerceView.d.ts +37 -0
- 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/transforms/registry/eventCalendar.d.ts +12 -0
- package/dist/_dts/commerce/src/purchase/bookingInstalmentSchedule.d.ts +4 -0
- package/dist/_dts/db/src/generated/supabase/database.types.d.ts +3 -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 +1 -1
- 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/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/generated/containerResponsiveThemeCss.d.ts +1 -1
- 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/client/{BookingConsentAgreement-CuKa82V4.mjs → BookingConsentAgreement-xJeYNdnb.mjs} +2 -2
- package/dist/client/{DiscountCodeDisclosure-BbYieKWB.mjs → DiscountCodeDisclosure-DdT6uzl9.mjs} +1 -1
- package/dist/client/{EventCombined.client-LTfR1Aby.mjs → EventCombined.client-Cp28uYuM.mjs} +11 -15
- package/dist/client/{EventListing.client-DUHpYSuo.mjs → EventListing.client-CD6AJsMr.mjs} +4 -17
- package/dist/client/{LeafletStaticMap-CHRupL6m.mjs → LeafletStaticMap-DBsAi9-e.mjs} +1 -1
- package/dist/client/{accordion-6HiIFxNL.mjs → accordion-6dwbOKYR.mjs} +1 -1
- package/dist/client/{bookingForm-Dlmid43H.mjs → bookingForm-CZE9_qPQ.mjs} +5 -5
- package/dist/client/bookings.mjs +175 -93
- package/dist/client/{carousel-DmkZRRq_.mjs → carousel-7VHGQARz.mjs} +1 -1
- package/dist/client/{cart-CIC24330.mjs → cart-Qg_mvQhh.mjs} +3 -3
- package/dist/client/{checkout-D1Zw9imo.mjs → checkout-D84rpgdr.mjs} +3 -3
- package/dist/client/client.mjs +602 -139
- package/dist/client/{context-Cy1OayHx.mjs → context-Ctp3T0Wr.mjs} +1 -1
- package/dist/client/{dates-aDcfoLHr.mjs → dates-DJKFcI_N.mjs} +2 -2
- package/dist/client/{eventCalendar-FQxMPAjf.mjs → eventCalendar-CK31z3vs.mjs} +11 -7
- package/dist/client/{eventCombined-Dr3ac6Hb.mjs → eventCombined-DiXd-ewn.mjs} +3 -3
- package/dist/client/{eventDetails-D-AzUHFQ.mjs → eventDetails-CTRgt2DK.mjs} +4 -4
- package/dist/client/{eventListing-B3XxBf3i.mjs → eventListing-Dy9vi_j_.mjs} +3 -3
- package/dist/client/{eventRegistration-I6EaokFD.mjs → eventRegistration-CnalYMr2.mjs} +124 -31
- package/dist/client/{form-BbWckVWY.mjs → form-eUiMveTT.mjs} +2 -2
- package/dist/client/{headerSection-C9qU4Y7x.mjs → headerSection-Dy9kQpB1.mjs} +2 -2
- package/dist/client/hooks.mjs +247 -32
- package/dist/client/{locationMap-CLCShvlG.mjs → locationMap-DalCmWU0.mjs} +2 -2
- package/dist/client/{newsletterForm-Briukxzi.mjs → newsletterForm-SDDPvhS0.mjs} +23 -10
- package/dist/client/{pricing-Copadu-2.mjs → pricing-OcMz4SnX.mjs} +1 -1
- package/dist/client/{productDetail-oujlRd-r.mjs → productDetail-BQrgHElM.mjs} +3 -3
- package/dist/client/{productList-BRiIRUcd.mjs → productList-OnPn_UJj.mjs} +3 -3
- package/dist/client/{propsDecoder-CB2KS_ko.mjs → propsDecoder-zBdsnS-N.mjs} +38 -8
- package/dist/client/rendering/client.mjs +446 -121
- package/dist/client/rendering/islands.mjs +17 -17
- package/dist/client/rendering.mjs +601 -138
- package/dist/client/{scrollToBlock-B1IS1_ua.mjs → scrollToBlock-BNM4Ob2Y.mjs} +28 -11
- package/dist/client/{shop-Vn6yNFED.mjs → shop-Bv1fPTwQ.mjs} +6 -6
- package/dist/client/{shop-commerce-BVTqipYp.mjs → shop-commerce-D4KNGaW8.mjs} +5 -5
- package/dist/client/{shop-commerce-store-BVnJVy7v.mjs → shop-commerce-store-2N5EV0Rc.mjs} +1 -1
- package/dist/client/{shopShared-COIeK77T.mjs → shopShared-DvJGdHTV.mjs} +3 -3
- package/dist/client/{useEventFilters-DzIUcS9n.mjs → useEventFilters-BBBvGDHQ.mjs} +17 -11
- package/dist/preview-next/client/runtime.mjs +3 -3
- package/dist/preview-next/editor-chrome.css +4 -8
- package/dist/{sdk-runtime-CnCLvZRv.mjs → sdk-runtime-Defnbfzw.mjs} +1 -1
- package/dist/{separator-DKDRJ1oH.mjs → separator-CZXO3Sb0.mjs} +1 -1
- package/dist/server/components.mjs +384 -62
- package/dist/server/config-validation.mjs +232 -26
- package/dist/server/config.mjs +232 -26
- package/dist/server/data.mjs +247 -32
- package/dist/server/index.mjs +1 -1
- package/dist/server/next.mjs +400 -69
- package/dist/server/page-converter.mjs +189 -25
- package/dist/server/prebuild.mjs +1 -1
- package/dist/server/rendering/server.mjs +399 -68
- package/dist/server/rendering.mjs +399 -68
- package/dist/server/routing.mjs +261 -33
- package/dist/server/server.mjs +248 -33
- package/dist/server/theme-bridge.mjs +47 -15
- package/dist/server/theme.mjs +1 -1
- package/dist/styles/index.css +28 -2
- package/package.json +1 -1
package/dist/client/hooks.mjs
CHANGED
|
@@ -2524,7 +2524,7 @@ const BUTTON_CONTRAST_POLICY = {
|
|
|
2524
2524
|
nonTextMinimumRatio: 3,
|
|
2525
2525
|
gradientSamplesPerSegment: 20,
|
|
2526
2526
|
alphaBackgrounds: "reject-without-known-surface",
|
|
2527
|
-
disabled: "
|
|
2527
|
+
disabled: "validated-colour-pair-with-muted-control-opacity"
|
|
2528
2528
|
};
|
|
2529
2529
|
function validateButtonSurfaceContrast(input) {
|
|
2530
2530
|
const ratio = contrastRatio(input.buttonPaint, input.surfaceHex);
|
|
@@ -8349,6 +8349,7 @@ const calendarWindowQuerySchema = z.object({
|
|
|
8349
8349
|
eventSurface: z.enum(eventSurfaceScopeValues).optional(),
|
|
8350
8350
|
eventPresets: z.string().optional(),
|
|
8351
8351
|
scheduleScope: z.enum(eventScheduleScopeValues).optional(),
|
|
8352
|
+
seriesIds: z.string().optional(),
|
|
8352
8353
|
categoryIds: z.string().optional(),
|
|
8353
8354
|
venueId: z.string().transform(normalizeCalendarFilterId).optional(),
|
|
8354
8355
|
staffMemberId: z.string().transform(normalizeCalendarFilterId).optional()
|
|
@@ -17016,6 +17017,7 @@ function isDisplayMediaKind(kind) {
|
|
|
17016
17017
|
}
|
|
17017
17018
|
const siteOptionSources = [
|
|
17018
17019
|
"eventCategories",
|
|
17020
|
+
"eventSeries",
|
|
17019
17021
|
"venues",
|
|
17020
17022
|
"staffMembers"
|
|
17021
17023
|
];
|
|
@@ -29712,7 +29714,8 @@ const appointmentServicesBlockDefinition = {
|
|
|
29712
29714
|
el("appointment-services", {
|
|
29713
29715
|
sectionHeading: { $bind: { from: "content.heading" } },
|
|
29714
29716
|
services: { $bind: { from: "data.services" } },
|
|
29715
|
-
pathname: { $bind: { from: "$root.pathname" } }
|
|
29717
|
+
pathname: { $bind: { from: "$root.pathname" } },
|
|
29718
|
+
servicePathPrefix: { $bind: { from: "$root.appointmentServicePathPrefix" } }
|
|
29716
29719
|
})
|
|
29717
29720
|
], { gap: "lg" })
|
|
29718
29721
|
})]
|
|
@@ -31253,6 +31256,35 @@ const eventSpotlightBlockDefinition = {
|
|
|
31253
31256
|
} }
|
|
31254
31257
|
};
|
|
31255
31258
|
//#endregion
|
|
31259
|
+
//#region ../blocks/src/system/blocks/events/shared/eventSelection.ts
|
|
31260
|
+
/** Invalid saved selections fail closed rather than widening discovery. */
|
|
31261
|
+
function resolveEventSelection(mode, value) {
|
|
31262
|
+
if (mode !== "selected") return { kind: "matching" };
|
|
31263
|
+
const candidates = Array.isArray(value) ? value : typeof value === "string" ? value.split(",").filter(Boolean) : [];
|
|
31264
|
+
const ids = [];
|
|
31265
|
+
for (const candidate of candidates) {
|
|
31266
|
+
if (typeof candidate !== "string") return {
|
|
31267
|
+
kind: "selected",
|
|
31268
|
+
seriesIds: []
|
|
31269
|
+
};
|
|
31270
|
+
const parsed = parseEventSeriesId(candidate.trim());
|
|
31271
|
+
if (!parsed.ok) return {
|
|
31272
|
+
kind: "selected",
|
|
31273
|
+
seriesIds: []
|
|
31274
|
+
};
|
|
31275
|
+
ids.push(parsed.value);
|
|
31276
|
+
}
|
|
31277
|
+
return {
|
|
31278
|
+
kind: "selected",
|
|
31279
|
+
seriesIds: [...new Set(ids)].sort()
|
|
31280
|
+
};
|
|
31281
|
+
}
|
|
31282
|
+
/** Undefined means discovery; an empty string is an explicitly empty selection. */
|
|
31283
|
+
function eventSeriesScopeCsv(value) {
|
|
31284
|
+
if (value == null) return void 0;
|
|
31285
|
+
return typeof value === "string" ? value : value.join(",");
|
|
31286
|
+
}
|
|
31287
|
+
//#endregion
|
|
31256
31288
|
//#region ../blocks/src/system/runtime/nodes/events/shared/listingLayout.ts
|
|
31257
31289
|
/**
|
|
31258
31290
|
* Layout classes for event listing containers and cards. Presentation
|
|
@@ -31352,6 +31384,7 @@ const eventCollectionFilterSourceSchemaShape = {
|
|
|
31352
31384
|
eventSurface: eventSurfaceScopeSchema$1.nullable().optional(),
|
|
31353
31385
|
filterEventPresets: z.union([z.string(), z.array(z.string())]).nullable().optional(),
|
|
31354
31386
|
scheduleScope: eventScheduleScopeSchema$1.nullable().optional(),
|
|
31387
|
+
seriesIds: z.union([z.string(), z.array(z.string())]).nullable().optional(),
|
|
31355
31388
|
filterCategoryIds: z.union([z.string(), z.array(z.string())]).nullable().optional(),
|
|
31356
31389
|
filterStaffMemberId: z.string().nullable().optional(),
|
|
31357
31390
|
filterVenueId: z.string().nullable().optional()
|
|
@@ -31398,6 +31431,7 @@ const eventCollectionDisplaySchemaShape = {
|
|
|
31398
31431
|
eventSurface: eventSurfaceScopeSchema$1,
|
|
31399
31432
|
filterEventPresets: z.string().nullable(),
|
|
31400
31433
|
scheduleScope: eventScheduleScopeSchema$1,
|
|
31434
|
+
seriesIds: z.string().nullable().optional(),
|
|
31401
31435
|
filterCategoryIds: z.string().nullable(),
|
|
31402
31436
|
filterStaffMemberId: z.string().nullable(),
|
|
31403
31437
|
filterVenueId: z.string().nullable(),
|
|
@@ -31445,11 +31479,15 @@ function buildEventCollectionDisplay(source) {
|
|
|
31445
31479
|
};
|
|
31446
31480
|
}
|
|
31447
31481
|
function buildEventCollectionFilterDisplay(source) {
|
|
31448
|
-
|
|
31449
|
-
|
|
31450
|
-
|
|
31451
|
-
|
|
31452
|
-
|
|
31482
|
+
const selected = source.seriesIds != null;
|
|
31483
|
+
const matchingFilters = selected ? {
|
|
31484
|
+
eventSurface: "all",
|
|
31485
|
+
filterEventPresets: null,
|
|
31486
|
+
scheduleScope: "any",
|
|
31487
|
+
filterCategoryIds: null,
|
|
31488
|
+
filterStaffMemberId: null,
|
|
31489
|
+
filterVenueId: null
|
|
31490
|
+
} : {
|
|
31453
31491
|
eventSurface: normalizeEventSurfaceScope(source.eventSurface),
|
|
31454
31492
|
filterEventPresets: normalizeEventSurfacePresetsCsv(source.filterEventPresets),
|
|
31455
31493
|
scheduleScope: normalizeEventScheduleScope(source.scheduleScope),
|
|
@@ -31457,6 +31495,14 @@ function buildEventCollectionFilterDisplay(source) {
|
|
|
31457
31495
|
filterStaffMemberId: normalizeEventStaffMemberId(source.filterStaffMemberId),
|
|
31458
31496
|
filterVenueId: normalizeEventVenueId(source.filterVenueId)
|
|
31459
31497
|
};
|
|
31498
|
+
return {
|
|
31499
|
+
seriesIds: eventSeriesScopeCsv(source.seriesIds),
|
|
31500
|
+
showFilters: selected ? false : source.showFilters ?? true,
|
|
31501
|
+
showCategoryFilter: source.showCategoryFilter ?? "auto",
|
|
31502
|
+
showVenueFilter: source.showVenueFilter ?? false,
|
|
31503
|
+
showStaffFilter: source.showStaffFilter ?? true,
|
|
31504
|
+
...matchingFilters
|
|
31505
|
+
};
|
|
31460
31506
|
}
|
|
31461
31507
|
function buildEventCollectionPresentationDisplay(source) {
|
|
31462
31508
|
return {
|
|
@@ -31471,14 +31517,15 @@ function buildEventCollectionPresentationDisplay(source) {
|
|
|
31471
31517
|
}
|
|
31472
31518
|
function buildEventCollectionHydration(source, now = /* @__PURE__ */ new Date()) {
|
|
31473
31519
|
const timeZone = source.calendarWindow?.scope.timeZone ?? toBookingTimeZone(source.bookingTimeZone);
|
|
31520
|
+
const selected = source.seriesIds != null;
|
|
31474
31521
|
return {
|
|
31475
31522
|
calendarWindow: source.calendarWindow ?? void 0,
|
|
31476
31523
|
siteId: source.siteId,
|
|
31477
31524
|
stage: source.stage,
|
|
31478
31525
|
prefetchedEvents: source.events != null,
|
|
31479
|
-
eventSurface: normalizeEventSurfaceScope(source.eventSurface),
|
|
31480
|
-
filterEventPresets: normalizeEventSurfacePresetsCsv(source.filterEventPresets),
|
|
31481
|
-
scheduleScope: normalizeEventScheduleScope(source.scheduleScope),
|
|
31526
|
+
eventSurface: selected ? "all" : normalizeEventSurfaceScope(source.eventSurface),
|
|
31527
|
+
filterEventPresets: selected ? null : normalizeEventSurfacePresetsCsv(source.filterEventPresets),
|
|
31528
|
+
scheduleScope: selected ? "any" : normalizeEventScheduleScope(source.scheduleScope),
|
|
31482
31529
|
calendarContext: {
|
|
31483
31530
|
timeZone,
|
|
31484
31531
|
initialToday: source.calendarWindow?.initialToday ?? getLocalScheduleDate(now, timeZone)
|
|
@@ -31544,6 +31591,7 @@ const eventListingHydrationSchema = z.object({
|
|
|
31544
31591
|
eventSurface: eventSurfaceScopeSchema,
|
|
31545
31592
|
filterEventPresets: z.string().nullable(),
|
|
31546
31593
|
scheduleScope: eventScheduleScopeSchema,
|
|
31594
|
+
seriesIds: z.string().nullable().optional(),
|
|
31547
31595
|
filterCategoryIds: z.string().nullable().optional(),
|
|
31548
31596
|
filterStaffMemberId: z.string().nullable().optional(),
|
|
31549
31597
|
filterVenueId: z.string().nullable().optional(),
|
|
@@ -31604,6 +31652,7 @@ const eventListingBlockRuntime = defineProgressiveBlockRuntime({
|
|
|
31604
31652
|
eventSurface: normalizeEventSurfaceScope(source.eventSurface),
|
|
31605
31653
|
filterEventPresets: normalizeEventSurfacePresetsCsv(source.filterEventPresets),
|
|
31606
31654
|
scheduleScope: normalizeEventScheduleScope(source.scheduleScope),
|
|
31655
|
+
seriesIds: eventSeriesScopeCsv(source.seriesIds),
|
|
31607
31656
|
filterCategoryIds: normalizeEventCategoryIdsCsv(source.filterCategoryIds),
|
|
31608
31657
|
filterStaffMemberId: normalizeEventStaffMemberId(source.filterStaffMemberId),
|
|
31609
31658
|
filterVenueId: normalizeEventVenueId(source.filterVenueId),
|
|
@@ -31977,6 +32026,65 @@ const eventListingBlockDefinition = {
|
|
|
31977
32026
|
} }
|
|
31978
32027
|
};
|
|
31979
32028
|
//#endregion
|
|
32029
|
+
//#region ../blocks/src/system/blocks/events/eventSelectionFields.ts
|
|
32030
|
+
const eventSelectionFields = [{
|
|
32031
|
+
id: "eventSelection",
|
|
32032
|
+
type: "select",
|
|
32033
|
+
label: "Events to show",
|
|
32034
|
+
required: false,
|
|
32035
|
+
multiple: false,
|
|
32036
|
+
defaultValue: "matching",
|
|
32037
|
+
options: [{
|
|
32038
|
+
value: "matching",
|
|
32039
|
+
label: "All matching events"
|
|
32040
|
+
}, {
|
|
32041
|
+
value: "selected",
|
|
32042
|
+
label: "Selected events"
|
|
32043
|
+
}],
|
|
32044
|
+
ui: { intent: "behavior" }
|
|
32045
|
+
}, createSiteOptionSelectField({
|
|
32046
|
+
id: "selectedEventSeriesIds",
|
|
32047
|
+
label: "Selected events",
|
|
32048
|
+
description: "Show upcoming dates for these events. Other event filters do not apply.",
|
|
32049
|
+
required: false,
|
|
32050
|
+
multiple: true,
|
|
32051
|
+
defaultValue: [],
|
|
32052
|
+
optionSource: "eventSeries",
|
|
32053
|
+
ui: {
|
|
32054
|
+
intent: "behavior",
|
|
32055
|
+
searchThreshold: 1,
|
|
32056
|
+
visibleWhen: {
|
|
32057
|
+
field: "eventSelection",
|
|
32058
|
+
equals: "selected"
|
|
32059
|
+
}
|
|
32060
|
+
}
|
|
32061
|
+
})];
|
|
32062
|
+
function withEventSelectionVisibility(field) {
|
|
32063
|
+
if (![
|
|
32064
|
+
"eventSurface",
|
|
32065
|
+
"filterEventPresets",
|
|
32066
|
+
"scheduleScope",
|
|
32067
|
+
"filterCategoryIds",
|
|
32068
|
+
"filterStaffMemberId",
|
|
32069
|
+
"filterVenueId",
|
|
32070
|
+
"showFilters",
|
|
32071
|
+
"showCategoryFilter",
|
|
32072
|
+
"showVenueFilter",
|
|
32073
|
+
"showStaffFilter"
|
|
32074
|
+
].includes(field.id)) return field;
|
|
32075
|
+
const visibleWhen = field.ui?.visibleWhen;
|
|
32076
|
+
return {
|
|
32077
|
+
...field,
|
|
32078
|
+
ui: {
|
|
32079
|
+
...field.ui,
|
|
32080
|
+
visibleWhen: { allOf: [{
|
|
32081
|
+
field: "eventSelection",
|
|
32082
|
+
notEquals: "selected"
|
|
32083
|
+
}, ...visibleWhen ? [visibleWhen] : []] }
|
|
32084
|
+
}
|
|
32085
|
+
};
|
|
32086
|
+
}
|
|
32087
|
+
//#endregion
|
|
31980
32088
|
//#region ../blocks/src/system/runtime/nodes/events/EventCalendar.interactive.ts
|
|
31981
32089
|
const eventCalendarSourceSchema = z.object({
|
|
31982
32090
|
...eventCollectionSourceSchemaShape,
|
|
@@ -32059,19 +32167,59 @@ const eventCalendarBlockRuntime = defineProgressiveBlockRuntime({
|
|
|
32059
32167
|
//#region ../blocks/src/system/blocks/events/eventCalendarDataLoaders.ts
|
|
32060
32168
|
const scopeParams = {
|
|
32061
32169
|
siteId: { $bind: { from: "$root.siteId" } },
|
|
32170
|
+
seriesIds: { $bind: {
|
|
32171
|
+
from: "content",
|
|
32172
|
+
transforms: [{
|
|
32173
|
+
id: "events.calendarSelectionParam",
|
|
32174
|
+
options: { key: "seriesIds" }
|
|
32175
|
+
}]
|
|
32176
|
+
} },
|
|
32062
32177
|
stage: { $bind: {
|
|
32063
32178
|
from: "$root.previewStage",
|
|
32064
32179
|
fallback: "published"
|
|
32065
32180
|
} },
|
|
32066
|
-
eventSurface: { $bind: {
|
|
32181
|
+
eventSurface: { $bind: {
|
|
32182
|
+
from: "content",
|
|
32183
|
+
transforms: [{
|
|
32184
|
+
id: "events.calendarSelectionParam",
|
|
32185
|
+
options: { key: "eventSurface" }
|
|
32186
|
+
}, { id: "value.csv" }]
|
|
32187
|
+
} },
|
|
32067
32188
|
eventPresets: { $bind: {
|
|
32068
|
-
from: "content
|
|
32069
|
-
transforms: [{
|
|
32189
|
+
from: "content",
|
|
32190
|
+
transforms: [{
|
|
32191
|
+
id: "events.calendarSelectionParam",
|
|
32192
|
+
options: { key: "filterEventPresets" }
|
|
32193
|
+
}, { id: "value.csv" }]
|
|
32194
|
+
} },
|
|
32195
|
+
scheduleScope: { $bind: {
|
|
32196
|
+
from: "content",
|
|
32197
|
+
transforms: [{
|
|
32198
|
+
id: "events.calendarSelectionParam",
|
|
32199
|
+
options: { key: "scheduleScope" }
|
|
32200
|
+
}, { id: "value.csv" }]
|
|
32201
|
+
} },
|
|
32202
|
+
categoryIds: { $bind: {
|
|
32203
|
+
from: "content",
|
|
32204
|
+
transforms: [{
|
|
32205
|
+
id: "events.calendarSelectionParam",
|
|
32206
|
+
options: { key: "filterCategoryIds" }
|
|
32207
|
+
}, { id: "value.csv" }]
|
|
32070
32208
|
} },
|
|
32071
|
-
|
|
32072
|
-
|
|
32073
|
-
|
|
32074
|
-
|
|
32209
|
+
staffMemberId: { $bind: {
|
|
32210
|
+
from: "content",
|
|
32211
|
+
transforms: [{
|
|
32212
|
+
id: "events.calendarSelectionParam",
|
|
32213
|
+
options: { key: "filterStaffMemberId" }
|
|
32214
|
+
}, { id: "value.csv" }]
|
|
32215
|
+
} },
|
|
32216
|
+
venueId: { $bind: {
|
|
32217
|
+
from: "content",
|
|
32218
|
+
transforms: [{
|
|
32219
|
+
id: "events.calendarSelectionParam",
|
|
32220
|
+
options: { key: "filterVenueId" }
|
|
32221
|
+
}, { id: "value.csv" }]
|
|
32222
|
+
} }
|
|
32075
32223
|
};
|
|
32076
32224
|
/** Combined renders two jobs; calendar-only variants never pay for the list seed. */
|
|
32077
32225
|
const eventCalendarDataLoaders = {
|
|
@@ -32201,6 +32349,13 @@ const eventCalendarLayout = [styledSection({
|
|
|
32201
32349
|
from: "content.defaultCalendarView",
|
|
32202
32350
|
fallback: "month"
|
|
32203
32351
|
} },
|
|
32352
|
+
seriesIds: { $bind: {
|
|
32353
|
+
from: "content",
|
|
32354
|
+
transforms: [{
|
|
32355
|
+
id: "events.calendarSelectionParam",
|
|
32356
|
+
options: { key: "seriesIds" }
|
|
32357
|
+
}]
|
|
32358
|
+
} },
|
|
32204
32359
|
showFilters: { $bind: {
|
|
32205
32360
|
from: "content.showFilters",
|
|
32206
32361
|
fallback: true
|
|
@@ -32222,17 +32377,47 @@ const eventCalendarLayout = [styledSection({
|
|
|
32222
32377
|
fallback: true
|
|
32223
32378
|
} },
|
|
32224
32379
|
eventSurface: { $bind: {
|
|
32225
|
-
from: "content
|
|
32226
|
-
|
|
32380
|
+
from: "content",
|
|
32381
|
+
transforms: [{
|
|
32382
|
+
id: "events.calendarSelectionParam",
|
|
32383
|
+
options: { key: "eventSurface" }
|
|
32384
|
+
}]
|
|
32385
|
+
} },
|
|
32386
|
+
filterEventPresets: { $bind: {
|
|
32387
|
+
from: "content",
|
|
32388
|
+
transforms: [{
|
|
32389
|
+
id: "events.calendarSelectionParam",
|
|
32390
|
+
options: { key: "filterEventPresets" }
|
|
32391
|
+
}]
|
|
32227
32392
|
} },
|
|
32228
|
-
filterEventPresets: { $bind: { from: "content.filterEventPresets" } },
|
|
32229
32393
|
scheduleScope: { $bind: {
|
|
32230
|
-
from: "content
|
|
32231
|
-
|
|
32394
|
+
from: "content",
|
|
32395
|
+
transforms: [{
|
|
32396
|
+
id: "events.calendarSelectionParam",
|
|
32397
|
+
options: { key: "scheduleScope" }
|
|
32398
|
+
}]
|
|
32399
|
+
} },
|
|
32400
|
+
filterCategoryIds: { $bind: {
|
|
32401
|
+
from: "content",
|
|
32402
|
+
transforms: [{
|
|
32403
|
+
id: "events.calendarSelectionParam",
|
|
32404
|
+
options: { key: "filterCategoryIds" }
|
|
32405
|
+
}]
|
|
32406
|
+
} },
|
|
32407
|
+
filterStaffMemberId: { $bind: {
|
|
32408
|
+
from: "content",
|
|
32409
|
+
transforms: [{
|
|
32410
|
+
id: "events.calendarSelectionParam",
|
|
32411
|
+
options: { key: "filterStaffMemberId" }
|
|
32412
|
+
}]
|
|
32413
|
+
} },
|
|
32414
|
+
filterVenueId: { $bind: {
|
|
32415
|
+
from: "content",
|
|
32416
|
+
transforms: [{
|
|
32417
|
+
id: "events.calendarSelectionParam",
|
|
32418
|
+
options: { key: "filterVenueId" }
|
|
32419
|
+
}]
|
|
32232
32420
|
} },
|
|
32233
|
-
filterCategoryIds: { $bind: { from: "content.filterCategoryIds" } },
|
|
32234
|
-
filterStaffMemberId: { $bind: { from: "content.filterStaffMemberId" } },
|
|
32235
|
-
filterVenueId: { $bind: { from: "content.filterVenueId" } },
|
|
32236
32421
|
cardRole: { $bind: {
|
|
32237
32422
|
from: "content._cardStyles.role",
|
|
32238
32423
|
fallback: "default"
|
|
@@ -32736,6 +32921,7 @@ const eventCalendarAdditionalFields = [
|
|
|
32736
32921
|
}
|
|
32737
32922
|
}
|
|
32738
32923
|
},
|
|
32924
|
+
...eventSelectionFields,
|
|
32739
32925
|
{
|
|
32740
32926
|
id: "eventSurface",
|
|
32741
32927
|
type: "select",
|
|
@@ -32945,7 +33131,7 @@ const eventCalendarBlockDefinition = {
|
|
|
32945
33131
|
titleSource: "heading",
|
|
32946
33132
|
description: "Display events with calendar, list, or combined views with filtering",
|
|
32947
33133
|
skipSectionStyles: true,
|
|
32948
|
-
additionalFields: eventCalendarAdditionalFields,
|
|
33134
|
+
additionalFields: eventCalendarAdditionalFields.map(withEventSelectionVisibility),
|
|
32949
33135
|
styleTokens: {
|
|
32950
33136
|
background: "surface",
|
|
32951
33137
|
typography: "body",
|
|
@@ -39604,6 +39790,26 @@ const linksTransforms = [{
|
|
|
39604
39790
|
}
|
|
39605
39791
|
}];
|
|
39606
39792
|
const defaultTransforms = createTransformRegistry([
|
|
39793
|
+
{
|
|
39794
|
+
id: "events.calendarSelectionParam",
|
|
39795
|
+
kind: "formatter",
|
|
39796
|
+
summary: "Resolve selected events instead of discovery filters",
|
|
39797
|
+
schema: z.object({ key: z.enum([
|
|
39798
|
+
"seriesIds",
|
|
39799
|
+
"eventSurface",
|
|
39800
|
+
"filterEventPresets",
|
|
39801
|
+
"scheduleScope",
|
|
39802
|
+
"filterCategoryIds",
|
|
39803
|
+
"filterStaffMemberId",
|
|
39804
|
+
"filterVenueId"
|
|
39805
|
+
]) }),
|
|
39806
|
+
run(value, { key }) {
|
|
39807
|
+
const content = asPartialObject(value) ?? {};
|
|
39808
|
+
const selection = resolveEventSelection(content.eventSelection, content.selectedEventSeriesIds);
|
|
39809
|
+
if (selection.kind === "selected") return key === "seriesIds" ? selection.seriesIds : void 0;
|
|
39810
|
+
return key === "seriesIds" ? void 0 : content[key];
|
|
39811
|
+
}
|
|
39812
|
+
},
|
|
39607
39813
|
{
|
|
39608
39814
|
id: "events.calendarReadEnabled",
|
|
39609
39815
|
kind: "formatter",
|
|
@@ -39918,12 +40124,12 @@ function normalizeContent(block) {
|
|
|
39918
40124
|
}
|
|
39919
40125
|
/**
|
|
39920
40126
|
* Normalize params for API calls.
|
|
39921
|
-
* Converts
|
|
40127
|
+
* Converts supplied values to strings, preserving absent versus explicitly empty params.
|
|
39922
40128
|
*/
|
|
39923
40129
|
function normalizeParams(input) {
|
|
39924
40130
|
if (!input || typeof input !== "object") return {};
|
|
39925
40131
|
const output = {};
|
|
39926
|
-
for (const [key, value] of Object.entries(input)) output[key] = coerceToString(value);
|
|
40132
|
+
for (const [key, value] of Object.entries(input)) if (value !== void 0 && value !== null) output[key] = coerceToString(value);
|
|
39927
40133
|
return output;
|
|
39928
40134
|
}
|
|
39929
40135
|
function isNonArrayObject(value) {
|
|
@@ -39987,6 +40193,14 @@ function coercePayload(payload) {
|
|
|
39987
40193
|
* - Frontend: provide internal API client
|
|
39988
40194
|
* - SDK: provide SDK client with endpoint mapping
|
|
39989
40195
|
*/
|
|
40196
|
+
function projectDataLoaders(loaders, shouldLoad, blockId, blockKind) {
|
|
40197
|
+
if (!shouldLoad) return [...loaders];
|
|
40198
|
+
return loaders.filter(({ key }) => shouldLoad({
|
|
40199
|
+
blockId,
|
|
40200
|
+
blockKind,
|
|
40201
|
+
loaderKey: key
|
|
40202
|
+
}));
|
|
40203
|
+
}
|
|
39990
40204
|
function shouldSkipResolvedLoader(input) {
|
|
39991
40205
|
if (input.loader.requiredParams?.some((param) => !input.params[param]?.trim())) return true;
|
|
39992
40206
|
return Boolean(input.isValidEndpoint && !input.isValidEndpoint(input.endpoint));
|
|
@@ -40015,7 +40229,7 @@ async function prefetchBlockData$1(page, context, options) {
|
|
|
40015
40229
|
return (await prefetchBlockDataWithFailures(page, context, options)).resolvedData;
|
|
40016
40230
|
}
|
|
40017
40231
|
async function prefetchBlockDataWithFailures(page, context, options) {
|
|
40018
|
-
const { apiClient, isValidEndpoint, onError, getCustomBlockLoaders, getBlockDefinition: getBlockDefinition$1 = getBlockDefinition, resolveParamsBindings: resolveParamsBindings$1 = resolveParamsBindings } = options;
|
|
40232
|
+
const { apiClient, isValidEndpoint, onError, getCustomBlockLoaders, getBlockDefinition: getBlockDefinition$1 = getBlockDefinition, resolveParamsBindings: resolveParamsBindings$1 = resolveParamsBindings, shouldLoad } = options;
|
|
40019
40233
|
const results = {};
|
|
40020
40234
|
const loaderFailures = {};
|
|
40021
40235
|
const tasks = [];
|
|
@@ -40032,6 +40246,7 @@ async function prefetchBlockDataWithFailures(page, context, options) {
|
|
|
40032
40246
|
loader
|
|
40033
40247
|
})) : [];
|
|
40034
40248
|
} else loaders = [];
|
|
40249
|
+
loaders = projectDataLoaders(loaders, shouldLoad, blockId, block.kind);
|
|
40035
40250
|
if (loaders.length === 0) continue;
|
|
40036
40251
|
const root = {
|
|
40037
40252
|
...context.root ?? {},
|
|
@@ -40110,8 +40325,8 @@ function toStringParams(value) {
|
|
|
40110
40325
|
for (const [k, v] of Object.entries(value)) if (typeof v === "string") out[k] = v;
|
|
40111
40326
|
return out;
|
|
40112
40327
|
}
|
|
40113
|
-
function stripEmptyStringValues(params) {
|
|
40114
|
-
for (const [key, value] of Object.entries(params)) if (value === "") delete params[key];
|
|
40328
|
+
function stripEmptyStringValues(params, endpoint) {
|
|
40329
|
+
for (const [key, value] of Object.entries(params)) if (value === "" && !(key === "seriesIds" && (endpoint === "listPublicEvents" || endpoint === "listPublicEventCalendarWindow"))) delete params[key];
|
|
40115
40330
|
}
|
|
40116
40331
|
function ensureSiteId(params, context) {
|
|
40117
40332
|
if (!params.siteId && typeof context.siteId === "string" && context.siteId) params.siteId = context.siteId;
|
|
@@ -40124,7 +40339,7 @@ function ensureSiteId(params, context) {
|
|
|
40124
40339
|
*/
|
|
40125
40340
|
function normalizeLoaderParams(endpoint, params, context) {
|
|
40126
40341
|
const out = toStringParams(params);
|
|
40127
|
-
stripEmptyStringValues(out);
|
|
40342
|
+
stripEmptyStringValues(out, endpoint);
|
|
40128
40343
|
if (endpoint === "getPublicFormById") {
|
|
40129
40344
|
ensureSiteId(out, context);
|
|
40130
40345
|
if (!out.formId && out.formSlug) {
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { i as textColorStyle } from "./colorStyles-3013aRAY.mjs";
|
|
2
|
-
import { dt as themeButtonClassName, t as defineIslandPropsDecoder } from "./propsDecoder-
|
|
2
|
+
import { dt as themeButtonClassName, t as defineIslandPropsDecoder } from "./propsDecoder-zBdsnS-N.mjs";
|
|
3
3
|
import { t as mountReactIsland } from "./reactMount-SY8AVRof.mjs";
|
|
4
|
-
import { t as LeafletStaticMap } from "./LeafletStaticMap-
|
|
4
|
+
import { t as LeafletStaticMap } from "./LeafletStaticMap-DBsAi9-e.mjs";
|
|
5
5
|
import "react";
|
|
6
6
|
import { jsx, jsxs } from "react/jsx-runtime";
|
|
7
7
|
//#region ../core/src/location.ts
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
"use client";
|
|
2
2
|
import { O as clsx } from "./colorStyles-3013aRAY.mjs";
|
|
3
|
-
import { Pt as assertNever, Ut as parseMailingListVisitorSelection, dt as themeButtonClassName, mn as assertNever$1, t as defineIslandPropsDecoder } from "./propsDecoder-
|
|
4
|
-
import { n as useBlockApi, r as BlockApiError, t as BlockApiProvider } from "./context-
|
|
3
|
+
import { Pt as assertNever, Ut as parseMailingListVisitorSelection, dt as themeButtonClassName, mn as assertNever$1, t as defineIslandPropsDecoder } from "./propsDecoder-zBdsnS-N.mjs";
|
|
4
|
+
import { n as useBlockApi, r as BlockApiError, t as BlockApiProvider } from "./context-Ctp3T0Wr.mjs";
|
|
5
5
|
import { n as isSpamProtectionEnabled, r as AltchaWidget, t as getChallengeUrl } from "./src-B833rYRr.mjs";
|
|
6
6
|
import { t as FeedbackMessage } from "./FeedbackMessage-CtLvvS_d.mjs";
|
|
7
7
|
import { n as getFieldValidationControlProps, t as FieldValidationMessage } from "./FieldValidationMessage-AYanWFb-.mjs";
|
|
@@ -145,7 +145,7 @@ function NewsletterFormClient({ render }) {
|
|
|
145
145
|
if (submitTarget.tag === "unavailable") {
|
|
146
146
|
dispatchSubmission({
|
|
147
147
|
type: "failed",
|
|
148
|
-
error: newsletterFormError(
|
|
148
|
+
error: newsletterFormError(SIGNUPS_PAUSED_MESSAGE)
|
|
149
149
|
});
|
|
150
150
|
return;
|
|
151
151
|
}
|
|
@@ -156,14 +156,16 @@ function NewsletterFormClient({ render }) {
|
|
|
156
156
|
});
|
|
157
157
|
return;
|
|
158
158
|
}
|
|
159
|
-
const
|
|
160
|
-
|
|
159
|
+
const selection = readVisitorSelection(formData, render.hydration);
|
|
160
|
+
const selectionError = visitorSelectionError(selection);
|
|
161
|
+
if (selectionError) {
|
|
161
162
|
dispatchSubmission({
|
|
162
163
|
type: "failed",
|
|
163
|
-
error:
|
|
164
|
+
error: selectionError
|
|
164
165
|
});
|
|
165
166
|
return;
|
|
166
167
|
}
|
|
168
|
+
const visitorSelection = selection.tag === "chosen" ? selection.value : void 0;
|
|
167
169
|
dispatchSubmission({ type: "submitted" });
|
|
168
170
|
try {
|
|
169
171
|
const result = await api.subscribeNewsletter({
|
|
@@ -363,10 +365,18 @@ function transportFailureMessage(err) {
|
|
|
363
365
|
}
|
|
364
366
|
return RETRY_SHORTLY_MESSAGE;
|
|
365
367
|
}
|
|
368
|
+
function visitorSelectionError(selection) {
|
|
369
|
+
switch (selection.tag) {
|
|
370
|
+
case "nothing_chosen": return newsletterFieldError(TOPIC_CHOICE_FIELD_ID, "Choose at least one email topic.");
|
|
371
|
+
case "unusable": return newsletterFormError(SIGNUPS_PAUSED_MESSAGE);
|
|
372
|
+
case "not_offered":
|
|
373
|
+
case "chosen": return null;
|
|
374
|
+
}
|
|
375
|
+
}
|
|
366
376
|
function readVisitorSelection(formData, hydration) {
|
|
367
|
-
if (hydration.choicePresentation !== "visitor_choice") return
|
|
377
|
+
if (hydration.choicePresentation !== "visitor_choice") return { tag: "not_offered" };
|
|
368
378
|
const ids = formData.getAll(TOPIC_CHOICE_FIELD_ID).flatMap((value) => typeof value === "string" ? [value] : []);
|
|
369
|
-
if (ids.length === 0) return
|
|
379
|
+
if (ids.length === 0) return { tag: "nothing_chosen" };
|
|
370
380
|
const raw = hydration.choiceProvider === "native" ? {
|
|
371
381
|
provider: "native",
|
|
372
382
|
topicIds: ids
|
|
@@ -377,9 +387,12 @@ function readVisitorSelection(formData, hydration) {
|
|
|
377
387
|
provider: "mailchimp",
|
|
378
388
|
interestIds: ids
|
|
379
389
|
} : null;
|
|
380
|
-
if (raw === null) return
|
|
390
|
+
if (raw === null) return { tag: "unusable" };
|
|
381
391
|
const parsed = parseMailingListVisitorSelection(raw);
|
|
382
|
-
return parsed.ok ?
|
|
392
|
+
return parsed.ok ? {
|
|
393
|
+
tag: "chosen",
|
|
394
|
+
value: parsed.value
|
|
395
|
+
} : { tag: "unusable" };
|
|
383
396
|
}
|
|
384
397
|
function publicSignupError(outcome) {
|
|
385
398
|
switch (outcome.tag) {
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { an as formatEventPricing, cn as publicEventPricingDisplay, in as formatBookingPriceDisplay } from "./propsDecoder-
|
|
1
|
+
import { an as formatEventPricing, cn as publicEventPricingDisplay, in as formatBookingPriceDisplay } from "./propsDecoder-zBdsnS-N.mjs";
|
|
2
2
|
//#region ../blocks/src/system/runtime/nodes/events/domain/capacity.ts
|
|
3
3
|
/**
|
|
4
4
|
* Compute remaining spots for an event from `availableSpots` with a fallback
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import { t as defineIslandPropsDecoder } from "./propsDecoder-
|
|
2
|
-
import { r as ProductDetailController } from "./shop-commerce-
|
|
3
|
-
import { t as mountShopBlockIsland } from "./shopShared-
|
|
1
|
+
import { t as defineIslandPropsDecoder } from "./propsDecoder-zBdsnS-N.mjs";
|
|
2
|
+
import { r as ProductDetailController } from "./shop-commerce-D4KNGaW8.mjs";
|
|
3
|
+
import { t as mountShopBlockIsland } from "./shopShared-DvJGdHTV.mjs";
|
|
4
4
|
import "react";
|
|
5
5
|
import { jsx } from "react/jsx-runtime";
|
|
6
6
|
//#region ../blocks/src/system/runtime/nodes/product-detail.client.tsx
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import { t as defineIslandPropsDecoder } from "./propsDecoder-
|
|
2
|
-
import { i as ProductListController } from "./shop-commerce-
|
|
3
|
-
import { t as mountShopBlockIsland } from "./shopShared-
|
|
1
|
+
import { t as defineIslandPropsDecoder } from "./propsDecoder-zBdsnS-N.mjs";
|
|
2
|
+
import { i as ProductListController } from "./shop-commerce-D4KNGaW8.mjs";
|
|
3
|
+
import { t as mountShopBlockIsland } from "./shopShared-DvJGdHTV.mjs";
|
|
4
4
|
import "react";
|
|
5
5
|
import { jsx } from "react/jsx-runtime";
|
|
6
6
|
//#region ../blocks/src/system/runtime/nodes/product-list.client.tsx
|