@riverbankcms/sdk 0.90.0 → 0.91.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-KVXNF3VW.mjs → PreviewEditorSidebar-3TT47WCF.mjs} +3 -3
- package/dist/{PreviewEditorUI-J3JN5Z7T.mjs → PreviewEditorUI-ORCLLUNZ.mjs} +3 -3
- package/dist/SdkPreviewModeRuntime-GMCDQPZZ.mjs +8 -0
- package/dist/_dts/api/src/bookingConfig.d.ts +3 -0
- package/dist/_dts/api/src/event-listing-destination.d.ts +59 -0
- package/dist/_dts/api/src/index.d.ts +4 -0
- package/dist/_dts/api/src/navigation/dashboardSettingsNav.d.ts +0 -1
- package/dist/_dts/api/src/navigation.d.ts +2 -0
- package/dist/_dts/api/src/publicExperienceEndpoints.d.ts +3 -1
- package/dist/_dts/api/src/settings/permissions.d.ts +273 -0
- package/dist/_dts/api/src/types.d.ts +1 -0
- package/dist/_dts/blocks/src/system/blocks/events/shared/schemas.d.ts +60 -2
- package/dist/_dts/blocks/src/system/blocks/events/shared/types.d.ts +12 -1
- package/dist/_dts/blocks/src/system/blocks/media-text.d.ts +9 -9
- package/dist/_dts/blocks/src/system/blocks/team-members.d.ts +1 -1
- package/dist/_dts/blocks/src/system/manifest/fieldValidation/index.d.ts +17 -0
- package/dist/_dts/blocks/src/system/runtime/nodes/event-registration/event-registration.headless.contract.d.ts +5 -0
- package/dist/_dts/blocks/src/system/runtime/nodes/event-registration/eventPaymentOptions.d.ts +24 -0
- package/dist/_dts/blocks/src/system/runtime/nodes/events/shared/destination.d.ts +8 -0
- package/dist/_dts/blocks/src/system/runtime/nodes/events/shared/pricing.d.ts +3 -0
- package/dist/_dts/blocks/src/system/runtime/nodes/events/shared/utils.d.ts +7 -0
- package/dist/_dts/core/src/event-pricing.d.ts +12 -2
- package/dist/_dts/core/src/string.d.ts +12 -0
- package/dist/_dts/sdk/src/cli/sync/validation.d.ts +2 -2
- package/dist/_dts/sdk/src/public-api/contracts.d.ts +11 -1
- package/dist/_dts/sdk/src/rendering/islands/types.d.ts +11 -1
- package/dist/_dts/sdk/src/version.d.ts +1 -1
- package/dist/{chunk-GSPFFUVB.mjs → chunk-AFPMCLS7.mjs} +2 -2
- package/dist/{chunk-RQ3XZ4SJ.mjs → chunk-GDT2QGIL.mjs} +1 -1
- package/dist/{chunk-PMBB6MQ7.mjs → chunk-RQUZYSES.mjs} +345 -153
- package/dist/{chunk-AEOYWPE4.mjs → chunk-S3YHJWEU.mjs} +7 -7
- package/dist/{chunk-UG7I7S7W.mjs → chunk-U5YM4AWE.mjs} +1 -1
- package/dist/{chunk-BOQXMCSP.mjs → chunk-ZA2S7H34.mjs} +3 -3
- package/dist/cli/index.mjs +363 -437
- package/dist/cli/init-docs/content/workflow-add-block.md +48 -0
- package/dist/cli/init-docs/content/workflow-custom-block.md +10 -0
- package/dist/client/{accordion-GXQNWQ6O.mjs → accordion-AFX37652.mjs} +2 -2
- package/dist/client/{bookingForm-STLUJ36H.mjs → bookingForm-32V5QCOW.mjs} +6 -6
- package/dist/client/bookings.mjs +1170 -571
- package/dist/client/{carousel-CVRN6EPP.mjs → carousel-TJGQJ7ER.mjs} +3 -3
- package/dist/client/{cart-IYIBA5CL.mjs → cart-JUU2JEW4.mjs} +6 -6
- package/dist/client/{checkout-O3BGM4GS.mjs → checkout-RD6BTFX4.mjs} +6 -6
- package/dist/client/{chunk-DAS5CIER.mjs → chunk-6QZIBNGV.mjs} +119 -21
- package/dist/client/{chunk-VFHZLZAC.mjs → chunk-6RN62XBV.mjs} +1 -1
- package/dist/client/{chunk-D3ETC2SU.mjs → chunk-C4LP6BPG.mjs} +1 -1
- package/dist/client/{chunk-NBFRJ5NB.mjs → chunk-CKXEUWWA.mjs} +2 -2
- package/dist/client/{chunk-4RTFGHZN.mjs → chunk-E6VIWZUG.mjs} +6 -3
- package/dist/client/{chunk-Z62JYS5O.mjs → chunk-FMZZHAIR.mjs} +2 -2
- package/dist/client/{chunk-FHU6PFPM.mjs → chunk-ISAUXU5R.mjs} +1 -1
- package/dist/client/{chunk-HIHOQGIP.mjs → chunk-LJCX6V7Q.mjs} +9 -9
- package/dist/client/{chunk-6DPXDOIL.mjs → chunk-MLBNVN4H.mjs} +99 -26
- package/dist/client/{chunk-7DH35FGA.mjs → chunk-PMNAV6LO.mjs} +1 -1
- package/dist/client/{chunk-MFPKS6QS.mjs → chunk-RMOFBBNA.mjs} +5 -5
- package/dist/client/{chunk-25W2EQUN.mjs → chunk-RWYFG625.mjs} +17 -8
- package/dist/client/client.mjs +305 -113
- package/dist/client/{courseRegistration-2D3ACMJR.mjs → courseRegistration-X63QAIVV.mjs} +6 -6
- package/dist/client/{eventCalendar-QY4UZUFF.mjs → eventCalendar-5T24GCZL.mjs} +9 -9
- package/dist/client/{eventCombined-RRCDKJC2.mjs → eventCombined-AZVTF22X.mjs} +9 -9
- package/dist/client/{eventDetails-YO335BUT.mjs → eventDetails-7GPFNLGF.mjs} +9 -9
- package/dist/client/{eventListing-PXA6GFQ3.mjs → eventListing-QEUMTMUM.mjs} +9 -9
- package/dist/client/{eventRegistration-2ZHEDDXO.mjs → eventRegistration-P2EDKCQZ.mjs} +9 -9
- package/dist/client/{form-ZS6KX4U2.mjs → form-NUJ7H4IN.mjs} +3 -3
- package/dist/client/{headerSection-QK5SLIIB.mjs → headerSection-JB7LECPL.mjs} +3 -3
- package/dist/client/hooks.mjs +93 -42
- package/dist/client/{locationMap-GFNIUD2X.mjs → locationMap-UEYWUCSW.mjs} +3 -3
- package/dist/client/{newsletterForm-PGLTTCUG.mjs → newsletterForm-S2YZQ2X7.mjs} +3 -3
- package/dist/client/{productDetail-OPBE5ZPI.mjs → productDetail-H5MADGG7.mjs} +6 -6
- package/dist/client/{productList-NI72Q62Z.mjs → productList-DK7YON7H.mjs} +6 -6
- package/dist/client/rendering/client.mjs +262 -70
- package/dist/client/rendering/islands.mjs +19 -19
- package/dist/client/rendering.mjs +306 -114
- package/dist/client/{shop-3ZQPEWYI.mjs → shop-6PA7RDRJ.mjs} +6 -6
- package/dist/client/spam-protection.mjs +10 -10
- package/dist/preview-next/client/runtime.mjs +5 -5
- package/dist/{sdk-runtime-FSHXCWDS.mjs → sdk-runtime-JP5347OB.mjs} +6 -6
- package/dist/server/components.mjs +149 -69
- package/dist/server/config-validation.mjs +85 -34
- package/dist/server/config.mjs +85 -34
- package/dist/server/data.mjs +93 -42
- package/dist/server/index.mjs +1 -1
- package/dist/server/navigation.mjs +2 -2
- package/dist/server/next.mjs +170 -90
- package/dist/server/page-converter.mjs +77 -26
- package/dist/server/prebuild.mjs +1 -1
- package/dist/server/rendering/server.mjs +161 -81
- package/dist/server/rendering.mjs +165 -85
- package/dist/server/routing.mjs +135 -58
- package/dist/server/server.mjs +102 -51
- package/package.json +2 -2
- package/dist/SdkPreviewModeRuntime-UBL6MSNP.mjs +0 -8
package/dist/server/next.mjs
CHANGED
|
@@ -6537,6 +6537,8 @@ function publicEventPricingType(pricing) {
|
|
|
6537
6537
|
case "ticket_types":
|
|
6538
6538
|
case "course":
|
|
6539
6539
|
return isFreePublicEventPriceDisplay(pricing.display) ? "free" : "paid";
|
|
6540
|
+
case "external":
|
|
6541
|
+
return "external";
|
|
6540
6542
|
}
|
|
6541
6543
|
}
|
|
6542
6544
|
function publicEventPricingCurrency(pricing) {
|
|
@@ -6548,6 +6550,8 @@ function publicEventPricingCurrency(pricing) {
|
|
|
6548
6550
|
return pricing.currency;
|
|
6549
6551
|
case "course":
|
|
6550
6552
|
return pricing.display.display.currency;
|
|
6553
|
+
case "external":
|
|
6554
|
+
return null;
|
|
6551
6555
|
}
|
|
6552
6556
|
}
|
|
6553
6557
|
function isFreePublicEventPriceDisplay(display) {
|
|
@@ -6561,6 +6565,7 @@ function isFreePublicEventPriceDisplay(display) {
|
|
|
6561
6565
|
case "range":
|
|
6562
6566
|
case "mixed":
|
|
6563
6567
|
case "unavailable":
|
|
6568
|
+
case "external":
|
|
6564
6569
|
return false;
|
|
6565
6570
|
}
|
|
6566
6571
|
}
|
|
@@ -6591,6 +6596,8 @@ function formatBookingPriceDisplay(display, options = {}) {
|
|
|
6591
6596
|
return display.paidToAmount > display.paidFromAmount ? `Free / ${formatCurrencyAmount(display.paidFromAmount, display.currency, options)} - ${formatCurrencyAmount(display.paidToAmount, display.currency, options)}` : `Free / ${formatCurrencyAmount(display.paidFromAmount, display.currency, options)}`;
|
|
6592
6597
|
case "unavailable":
|
|
6593
6598
|
return "Pricing unavailable";
|
|
6599
|
+
case "external":
|
|
6600
|
+
return display.label;
|
|
6594
6601
|
case "course":
|
|
6595
6602
|
return formatCoursePriceDisplayLabel(display.display, options);
|
|
6596
6603
|
default:
|
|
@@ -6614,11 +6621,11 @@ function isValidTimeZone(timeZone) {
|
|
|
6614
6621
|
}
|
|
6615
6622
|
function getSafeTimeZone(timeZone) {
|
|
6616
6623
|
const normalized = typeof timeZone === "string" ? timeZone.trim() : "";
|
|
6617
|
-
return normalized && isValidTimeZone(normalized) ? normalized : FALLBACK_TIMEZONE;
|
|
6624
|
+
return normalized.length > 0 && isValidTimeZone(normalized) ? normalized : FALLBACK_TIMEZONE;
|
|
6618
6625
|
}
|
|
6619
6626
|
function parseStrictBookingTimeZone(timeZone) {
|
|
6620
6627
|
const normalized = timeZone.trim();
|
|
6621
|
-
if (
|
|
6628
|
+
if (normalized.length === 0 || !isValidTimeZone(normalized)) {
|
|
6622
6629
|
return null;
|
|
6623
6630
|
}
|
|
6624
6631
|
return normalized;
|
|
@@ -6695,7 +6702,7 @@ function parseScheduledBookingDateTime(input) {
|
|
|
6695
6702
|
try {
|
|
6696
6703
|
const startsAt = toUtcIsoDateTimeString(input.startsAt);
|
|
6697
6704
|
const timeZone = parseStrictBookingTimeZone(input.timeZone);
|
|
6698
|
-
if (
|
|
6705
|
+
if (timeZone === null) {
|
|
6699
6706
|
return {
|
|
6700
6707
|
ok: false,
|
|
6701
6708
|
field: "timeZone",
|
|
@@ -6830,10 +6837,10 @@ function normalizeLocationAddressText(value) {
|
|
|
6830
6837
|
return null;
|
|
6831
6838
|
}
|
|
6832
6839
|
const trimmed = value.trim();
|
|
6833
|
-
return trimmed ? trimmed : null;
|
|
6840
|
+
return trimmed.length > 0 ? trimmed : null;
|
|
6834
6841
|
}
|
|
6835
6842
|
function hasLocationCoordinates(value) {
|
|
6836
|
-
return typeof value
|
|
6843
|
+
return value != null && typeof value.lat === "number" && typeof value.lng === "number";
|
|
6837
6844
|
}
|
|
6838
6845
|
function toLocationCoordinates(value) {
|
|
6839
6846
|
if (!hasLocationCoordinates(value)) {
|
|
@@ -32926,6 +32933,18 @@ var publicCoursesArraySchema = z45.array(publicCourseSchema);
|
|
|
32926
32933
|
var eventPresetSchema = z46.enum(["event", "class", "workshop", "retreat", "performance"]);
|
|
32927
32934
|
var eventScheduleScopeSchema = z46.enum(["recurring", "oneOff"]);
|
|
32928
32935
|
var eventDestinationModeSchema = z46.enum(["cms-managed", "system-managed"]);
|
|
32936
|
+
var publicEventDestinationSchema = z46.discriminatedUnion("kind", [
|
|
32937
|
+
z46.object({
|
|
32938
|
+
kind: z46.literal("native"),
|
|
32939
|
+
mode: eventDestinationModeSchema,
|
|
32940
|
+
path: z46.string()
|
|
32941
|
+
}),
|
|
32942
|
+
z46.object({
|
|
32943
|
+
kind: z46.literal("external"),
|
|
32944
|
+
url: z46.string(),
|
|
32945
|
+
label: z46.string()
|
|
32946
|
+
})
|
|
32947
|
+
]);
|
|
32929
32948
|
var eventVenueSchema = z46.object({
|
|
32930
32949
|
id: z46.string(),
|
|
32931
32950
|
name: z46.string(),
|
|
@@ -32940,7 +32959,7 @@ var eventCategorySchema = z46.object({
|
|
|
32940
32959
|
name: z46.string(),
|
|
32941
32960
|
color: z46.string().nullable()
|
|
32942
32961
|
});
|
|
32943
|
-
var pricingTypeSchema = z46.enum(["free", "paid"]);
|
|
32962
|
+
var pricingTypeSchema = z46.enum(["free", "paid", "external"]);
|
|
32944
32963
|
var accessRestrictionSchema = z46.enum(["none", "category"]);
|
|
32945
32964
|
var eventPricingModeSchema = z46.enum(["single", "ticket_types"]);
|
|
32946
32965
|
var publicCoursePriceDisplaySchema = z46.discriminatedUnion("kind", [
|
|
@@ -32961,6 +32980,7 @@ var publicEventPriceDisplaySchema = z46.discriminatedUnion("kind", [
|
|
|
32961
32980
|
currency: z46.string()
|
|
32962
32981
|
}),
|
|
32963
32982
|
z46.object({ kind: z46.literal("unavailable"), currency: z46.string() }),
|
|
32983
|
+
z46.object({ kind: z46.literal("external"), label: z46.string() }),
|
|
32964
32984
|
z46.object({ kind: z46.literal("course"), display: publicCoursePriceDisplaySchema })
|
|
32965
32985
|
]);
|
|
32966
32986
|
var publicEventTicketTypePriceDisplaySchema = z46.union([
|
|
@@ -33039,6 +33059,10 @@ var publicEventPricingSchema = z46.discriminatedUnion("kind", [
|
|
|
33039
33059
|
z46.object({
|
|
33040
33060
|
kind: z46.literal("course"),
|
|
33041
33061
|
display: z46.object({ kind: z46.literal("course"), display: publicCoursePriceDisplaySchema })
|
|
33062
|
+
}),
|
|
33063
|
+
z46.object({
|
|
33064
|
+
kind: z46.literal("external"),
|
|
33065
|
+
display: z46.object({ kind: z46.literal("external"), label: z46.string() })
|
|
33042
33066
|
})
|
|
33043
33067
|
]);
|
|
33044
33068
|
var publicTeamMemberSummarySchema = z46.object({
|
|
@@ -33067,7 +33091,8 @@ var publicEventSchema = z46.object({
|
|
|
33067
33091
|
image: mediaSchema2.nullable().optional()
|
|
33068
33092
|
}).optional(),
|
|
33069
33093
|
slug: z46.string(),
|
|
33070
|
-
path: z46.string(),
|
|
33094
|
+
path: z46.string().nullable(),
|
|
33095
|
+
destination: publicEventDestinationSchema,
|
|
33071
33096
|
requiresRegistration: z46.boolean(),
|
|
33072
33097
|
deliveryMode: z46.enum(["in_person", "online", "hybrid"]),
|
|
33073
33098
|
attendanceModes: z46.array(publicEventAttendanceModeAvailabilitySchema),
|
|
@@ -33371,12 +33396,41 @@ function isEventContentType(slug) {
|
|
|
33371
33396
|
return EVENT_CONTENT_TYPE_SLUGS.includes(slug);
|
|
33372
33397
|
}
|
|
33373
33398
|
|
|
33399
|
+
// ../blocks/src/system/runtime/nodes/events/shared/destination.ts
|
|
33400
|
+
function isRecord5(value) {
|
|
33401
|
+
return typeof value === "object" && value !== null && !Array.isArray(value);
|
|
33402
|
+
}
|
|
33403
|
+
function isRuntimeEventDestination(value) {
|
|
33404
|
+
if (!isRecord5(value) || typeof value.kind !== "string") return false;
|
|
33405
|
+
if (value.kind === "native") {
|
|
33406
|
+
return (value.mode === "cms-managed" || value.mode === "system-managed") && typeof value.path === "string";
|
|
33407
|
+
}
|
|
33408
|
+
return value.kind === "external" && typeof value.url === "string" && typeof value.label === "string";
|
|
33409
|
+
}
|
|
33410
|
+
function resolveRuntimeEventDestination(event) {
|
|
33411
|
+
if (isRuntimeEventDestination(event.destination)) {
|
|
33412
|
+
return event.destination;
|
|
33413
|
+
}
|
|
33414
|
+
return {
|
|
33415
|
+
kind: "native",
|
|
33416
|
+
mode: event.eventDestinationMode === "system-managed" ? "system-managed" : "cms-managed",
|
|
33417
|
+
path: typeof event.path === "string" ? event.path : ""
|
|
33418
|
+
};
|
|
33419
|
+
}
|
|
33420
|
+
|
|
33374
33421
|
// ../blocks/src/system/runtime/nodes/events/shared/pricing.ts
|
|
33375
33422
|
var DEFAULT_EVENT_CURRENCY = "USD";
|
|
33376
33423
|
function resolveRuntimeEventPricing(event) {
|
|
33377
33424
|
if (isPublicEventPricing(event.pricing)) {
|
|
33378
33425
|
return event.pricing;
|
|
33379
33426
|
}
|
|
33427
|
+
const destination = resolveRuntimeEventDestination(event);
|
|
33428
|
+
if (destination.kind === "external") {
|
|
33429
|
+
return {
|
|
33430
|
+
kind: "external",
|
|
33431
|
+
display: { kind: "external", label: "External registration" }
|
|
33432
|
+
};
|
|
33433
|
+
}
|
|
33380
33434
|
const legacy = event;
|
|
33381
33435
|
const currency = readCurrency(legacy.currency);
|
|
33382
33436
|
if (event.requiresRegistration === false) {
|
|
@@ -33413,22 +33467,22 @@ function resolveRuntimeEventPricing(event) {
|
|
|
33413
33467
|
function readCurrency(value) {
|
|
33414
33468
|
return typeof value === "string" && value.trim().length > 0 ? value : DEFAULT_EVENT_CURRENCY;
|
|
33415
33469
|
}
|
|
33416
|
-
function
|
|
33470
|
+
function isRecord6(value) {
|
|
33417
33471
|
return typeof value === "object" && value !== null && !Array.isArray(value);
|
|
33418
33472
|
}
|
|
33419
33473
|
function isPublicEventPricing(value) {
|
|
33420
|
-
if (!
|
|
33421
|
-
return value.kind === "drop_in" || value.kind === "free_registration" || value.kind === "single_paid" || value.kind === "ticket_types" || value.kind === "course";
|
|
33474
|
+
if (!isRecord6(value) || typeof value.kind !== "string") return false;
|
|
33475
|
+
return value.kind === "drop_in" || value.kind === "free_registration" || value.kind === "single_paid" || value.kind === "ticket_types" || value.kind === "course" || value.kind === "external";
|
|
33422
33476
|
}
|
|
33423
33477
|
function isPublicEventTicketType(value) {
|
|
33424
|
-
return
|
|
33478
|
+
return isRecord6(value) && typeof value.id === "string";
|
|
33425
33479
|
}
|
|
33426
33480
|
function readTicketTypePriceDisplay(value, currency) {
|
|
33427
33481
|
const display = readLegacyPriceDisplay(value, currency);
|
|
33428
|
-
return display.kind === "course" ? { kind: "unavailable", currency } : display;
|
|
33482
|
+
return display.kind === "course" || display.kind === "external" ? { kind: "unavailable", currency } : display;
|
|
33429
33483
|
}
|
|
33430
33484
|
function readLegacyPriceDisplay(value, currency) {
|
|
33431
|
-
if (!
|
|
33485
|
+
if (!isRecord6(value) || typeof value.kind !== "string") {
|
|
33432
33486
|
return { kind: "unavailable", currency };
|
|
33433
33487
|
}
|
|
33434
33488
|
const displayCurrency = readCurrency(value.currency);
|
|
@@ -33467,7 +33521,7 @@ function readLegacyPriceDisplay(value, currency) {
|
|
|
33467
33521
|
case "unavailable":
|
|
33468
33522
|
return { kind: "unavailable", currency: displayCurrency };
|
|
33469
33523
|
case "course":
|
|
33470
|
-
return
|
|
33524
|
+
return isRecord6(value.display) ? {
|
|
33471
33525
|
kind: "course",
|
|
33472
33526
|
display: readCoursePriceDisplay(value.display, displayCurrency)
|
|
33473
33527
|
} : {
|
|
@@ -33554,7 +33608,7 @@ function resolveEventRequiresPayment(input) {
|
|
|
33554
33608
|
if (!input.event) {
|
|
33555
33609
|
return false;
|
|
33556
33610
|
}
|
|
33557
|
-
return publicEventPricingType(resolveRuntimeEventPricing(input.event))
|
|
33611
|
+
return publicEventPricingType(resolveRuntimeEventPricing(input.event)) === "paid";
|
|
33558
33612
|
}
|
|
33559
33613
|
|
|
33560
33614
|
// ../blocks/src/system/runtime/nodes/event-registration/registrationEventAdapter.ts
|
|
@@ -33751,15 +33805,16 @@ var eventRegistrationBlockRuntime = defineClientOwnedBlockRuntime({
|
|
|
33751
33805
|
})
|
|
33752
33806
|
});
|
|
33753
33807
|
function normalizeEventRegistrationEventInput(value) {
|
|
33754
|
-
if (!
|
|
33808
|
+
if (!isRecord7(value)) {
|
|
33755
33809
|
return value;
|
|
33756
33810
|
}
|
|
33757
33811
|
return {
|
|
33758
33812
|
...value,
|
|
33813
|
+
destination: resolveRuntimeEventDestination(value),
|
|
33759
33814
|
pricing: resolveRuntimeEventPricing(value)
|
|
33760
33815
|
};
|
|
33761
33816
|
}
|
|
33762
|
-
function
|
|
33817
|
+
function isRecord7(value) {
|
|
33763
33818
|
return typeof value === "object" && value !== null && !Array.isArray(value);
|
|
33764
33819
|
}
|
|
33765
33820
|
var eventRegistrationInteractiveIslandPropsCodec = createInteractiveIslandCodec({
|
|
@@ -35028,7 +35083,7 @@ function formatCalendarTitle(viewDate, view, days, monthNames = MONTH_NAMES) {
|
|
|
35028
35083
|
if (view === "week") {
|
|
35029
35084
|
const weekStart = days[0];
|
|
35030
35085
|
const weekEnd = days[6];
|
|
35031
|
-
if (
|
|
35086
|
+
if (weekStart === void 0 || weekEnd === void 0) {
|
|
35032
35087
|
return `${monthNames[viewDate.getMonth()] ?? ""} ${viewDate.getFullYear()}`;
|
|
35033
35088
|
}
|
|
35034
35089
|
const startMonth = monthNames[weekStart.getMonth()] ?? "";
|
|
@@ -35134,7 +35189,9 @@ function getLocalDateKey(isoTimestamp, timeZone) {
|
|
|
35134
35189
|
const year = parts.find((part) => part.type === "year")?.value;
|
|
35135
35190
|
const month = parts.find((part) => part.type === "month")?.value;
|
|
35136
35191
|
const day = parts.find((part) => part.type === "day")?.value;
|
|
35137
|
-
if (
|
|
35192
|
+
if (year === void 0 || year.length === 0) return null;
|
|
35193
|
+
if (month === void 0 || month.length === 0) return null;
|
|
35194
|
+
if (day === void 0 || day.length === 0) return null;
|
|
35138
35195
|
return `${year}-${month}-${day}`;
|
|
35139
35196
|
}
|
|
35140
35197
|
var validTimeZoneCache = /* @__PURE__ */ new Map();
|
|
@@ -35391,7 +35448,7 @@ function enumerateDateKeys(startDateKey, endDateKey) {
|
|
|
35391
35448
|
}
|
|
35392
35449
|
function parseDateKey(dateKey) {
|
|
35393
35450
|
const match = /^(\d{4})-(\d{2})-(\d{2})$/.exec(dateKey);
|
|
35394
|
-
if (
|
|
35451
|
+
if (match === null) {
|
|
35395
35452
|
throw new Error(`Invalid timetable date key: ${dateKey}`);
|
|
35396
35453
|
}
|
|
35397
35454
|
const [, year, month, day] = match;
|
|
@@ -35411,7 +35468,7 @@ function groupItemsByDate(items, accessors) {
|
|
|
35411
35468
|
const dateKey = getLocalDateKey(startsAt, timeZone);
|
|
35412
35469
|
if (dateKey == null) continue;
|
|
35413
35470
|
const existing = grouped.get(dateKey);
|
|
35414
|
-
if (existing) {
|
|
35471
|
+
if (existing !== void 0) {
|
|
35415
35472
|
existing.push(item);
|
|
35416
35473
|
} else {
|
|
35417
35474
|
grouped.set(dateKey, [item]);
|
|
@@ -35552,16 +35609,28 @@ function groupEventsByDate(events) {
|
|
|
35552
35609
|
function formatEventPrice(event) {
|
|
35553
35610
|
return formatEventPricing(resolveRuntimeEventPricing(event), { decimals: "auto" });
|
|
35554
35611
|
}
|
|
35612
|
+
function resolveEventHref(event) {
|
|
35613
|
+
const destination = resolveRuntimeEventDestination(event);
|
|
35614
|
+
return destination.kind === "external" ? destination.url : destination.path;
|
|
35615
|
+
}
|
|
35616
|
+
function resolveEventLinkProps(event) {
|
|
35617
|
+
const href = resolveEventHref(event);
|
|
35618
|
+
const destination = resolveRuntimeEventDestination(event);
|
|
35619
|
+
return destination.kind === "external" ? { href, target: "_blank", rel: "noopener noreferrer" } : { href };
|
|
35620
|
+
}
|
|
35555
35621
|
function resolveEventCta(event, buttonText) {
|
|
35556
35622
|
const { isFull: isSoldOut } = getEventAvailability(event);
|
|
35557
|
-
const
|
|
35623
|
+
const destination = resolveRuntimeEventDestination(event);
|
|
35624
|
+
const isExternal = destination.kind === "external";
|
|
35625
|
+
const defaultButtonText = isExternal ? destination.label : event.kind === "course_session" ? "Book course" : "Book";
|
|
35558
35626
|
const effectiveButtonText = buttonText ?? defaultButtonText;
|
|
35559
|
-
|
|
35560
|
-
|
|
35627
|
+
const href = resolveEventHref(event);
|
|
35628
|
+
if (!isExternal && isSoldOut) {
|
|
35629
|
+
return { label: "Sold out", href, external: false, hidden: true };
|
|
35561
35630
|
}
|
|
35562
35631
|
const enrollmentOpen = event.kind === "course_session" ? event.course?.enrollmentOpen !== false : true;
|
|
35563
35632
|
const label = !enrollmentOpen ? "Registration closed" : effectiveButtonText;
|
|
35564
|
-
return { label, href:
|
|
35633
|
+
return { label, href, external: isExternal, hidden: false };
|
|
35565
35634
|
}
|
|
35566
35635
|
|
|
35567
35636
|
// ../../node_modules/.pnpm/clsx@2.1.1/node_modules/clsx/dist/clsx.mjs
|
|
@@ -36996,6 +37065,8 @@ var EventCard = ({
|
|
|
36996
37065
|
"a",
|
|
36997
37066
|
{
|
|
36998
37067
|
href: cta.href,
|
|
37068
|
+
target: cta.external ? "_blank" : void 0,
|
|
37069
|
+
rel: cta.external ? "noopener noreferrer" : void 0,
|
|
36999
37070
|
className: `${buttonClass} event-card-cta`,
|
|
37000
37071
|
children: cta.label
|
|
37001
37072
|
}
|
|
@@ -37085,10 +37156,19 @@ var EventCompactRow = ({
|
|
|
37085
37156
|
formattedTime,
|
|
37086
37157
|
/* @__PURE__ */ jsx8("span", { className: "event-compact-row-action-price", children: price })
|
|
37087
37158
|
] }),
|
|
37088
|
-
cta.hidden ? /* @__PURE__ */ jsx8("span", { className: "event-compact-row-status", children: cta.label }) : /* @__PURE__ */ jsxs6(
|
|
37089
|
-
|
|
37090
|
-
|
|
37091
|
-
|
|
37159
|
+
cta.hidden ? /* @__PURE__ */ jsx8("span", { className: "event-compact-row-status", children: cta.label }) : /* @__PURE__ */ jsxs6(
|
|
37160
|
+
"a",
|
|
37161
|
+
{
|
|
37162
|
+
href: cta.href,
|
|
37163
|
+
target: cta.external ? "_blank" : void 0,
|
|
37164
|
+
rel: cta.external ? "noopener noreferrer" : void 0,
|
|
37165
|
+
className: `${buttonClass} event-compact-row-cta`,
|
|
37166
|
+
children: [
|
|
37167
|
+
/* @__PURE__ */ jsx8("span", { children: cta.label }),
|
|
37168
|
+
/* @__PURE__ */ jsx8(ArrowRightIcon, { "aria-hidden": "true" })
|
|
37169
|
+
]
|
|
37170
|
+
}
|
|
37171
|
+
)
|
|
37092
37172
|
] })
|
|
37093
37173
|
] })
|
|
37094
37174
|
] });
|
|
@@ -38678,7 +38758,7 @@ function inferLegacyOfferingsPreviewGroupOrder(overrides) {
|
|
|
38678
38758
|
return keys.length >= 2 ? keys : [];
|
|
38679
38759
|
}
|
|
38680
38760
|
function normalizeOfferingsPreviewContentForWrite(value) {
|
|
38681
|
-
if (!
|
|
38761
|
+
if (!isRecord8(value)) return null;
|
|
38682
38762
|
const groupOrderValue = value.groupOrder;
|
|
38683
38763
|
if (Array.isArray(groupOrderValue)) {
|
|
38684
38764
|
const normalized = normalizeOfferingsPreviewGroupOrder(groupOrderValue);
|
|
@@ -38691,7 +38771,7 @@ function normalizeOfferingsPreviewContentForWrite(value) {
|
|
|
38691
38771
|
return { ...value, groupOrder: [] };
|
|
38692
38772
|
}
|
|
38693
38773
|
const legacyOrder = inferLegacyOfferingsPreviewGroupOrder(
|
|
38694
|
-
Array.isArray(value.groupOverrides) ? value.groupOverrides.filter(
|
|
38774
|
+
Array.isArray(value.groupOverrides) ? value.groupOverrides.filter(isRecord8) : []
|
|
38695
38775
|
);
|
|
38696
38776
|
return legacyOrder.length > 0 ? { ...value, groupOrder: legacyOrder } : value;
|
|
38697
38777
|
}
|
|
@@ -38745,7 +38825,7 @@ function uniqueOfferingsPreviewSourceKeys(values) {
|
|
|
38745
38825
|
}
|
|
38746
38826
|
return keys;
|
|
38747
38827
|
}
|
|
38748
|
-
function
|
|
38828
|
+
function isRecord8(value) {
|
|
38749
38829
|
return typeof value === "object" && value !== null && !Array.isArray(value);
|
|
38750
38830
|
}
|
|
38751
38831
|
function mergeOrderedKeysWithDefaults(orderedKeys, defaultKeys) {
|
|
@@ -39207,7 +39287,7 @@ function isOfferingsPreviewItemLimit(value) {
|
|
|
39207
39287
|
return value === "1" || value === "2" || value === "3" || value === "4" || value === "5" || value === "6" || value === null;
|
|
39208
39288
|
}
|
|
39209
39289
|
function normalizeOfferingsPreviewGroupOverride(value) {
|
|
39210
|
-
if (!
|
|
39290
|
+
if (!isRecord9(value)) return [];
|
|
39211
39291
|
const override = {};
|
|
39212
39292
|
if (isOfferingsPreviewSourceKey(value.sourceKey) || value.sourceKey === null) {
|
|
39213
39293
|
override.sourceKey = value.sourceKey;
|
|
@@ -39239,12 +39319,12 @@ function isButtonVariant(value) {
|
|
|
39239
39319
|
return value === "primary" || value === "secondary" || value === "outline" || value === "link" || value === null;
|
|
39240
39320
|
}
|
|
39241
39321
|
function normalizeCardStylesContent(value) {
|
|
39242
|
-
return
|
|
39322
|
+
return isRecord9(value) || value === null ? value : void 0;
|
|
39243
39323
|
}
|
|
39244
39324
|
function normalizeSectionStylesContent(value) {
|
|
39245
|
-
return
|
|
39325
|
+
return isRecord9(value) || value === null ? value : void 0;
|
|
39246
39326
|
}
|
|
39247
|
-
function
|
|
39327
|
+
function isRecord9(value) {
|
|
39248
39328
|
return typeof value === "object" && value !== null && !Array.isArray(value);
|
|
39249
39329
|
}
|
|
39250
39330
|
|
|
@@ -42410,7 +42490,7 @@ function deriveNewsletterSignupRuntimeSource(values) {
|
|
|
42410
42490
|
};
|
|
42411
42491
|
}
|
|
42412
42492
|
function sanitizeNewsletterSignupPublicContent(content) {
|
|
42413
|
-
if (!
|
|
42493
|
+
if (!isRecord10(content)) return content;
|
|
42414
42494
|
const provider = parseNewsletterSignupDestinationProvider(content.destinationProvider) ?? getProviderFromExplicitDestination(content.destination);
|
|
42415
42495
|
const {
|
|
42416
42496
|
destination: _destination,
|
|
@@ -42429,7 +42509,7 @@ function sanitizeNewsletterSignupPublicContent(content) {
|
|
|
42429
42509
|
return mutablePublicContent;
|
|
42430
42510
|
}
|
|
42431
42511
|
function getProviderFromExplicitDestination(destination) {
|
|
42432
|
-
if (!
|
|
42512
|
+
if (!isRecord10(destination) || typeof destination.tag !== "string") return null;
|
|
42433
42513
|
if (destination.tag === "riverbank_list") return "riverbank";
|
|
42434
42514
|
if (destination.tag === "mailchimp_audience") return "mailchimp";
|
|
42435
42515
|
return null;
|
|
@@ -42441,7 +42521,7 @@ function parseTrimmedString(value) {
|
|
|
42441
42521
|
const trimmed = value.trim();
|
|
42442
42522
|
return trimmed.length > 0 ? trimmed : null;
|
|
42443
42523
|
}
|
|
42444
|
-
function
|
|
42524
|
+
function isRecord10(value) {
|
|
42445
42525
|
return typeof value === "object" && value !== null;
|
|
42446
42526
|
}
|
|
42447
42527
|
|
|
@@ -44484,11 +44564,11 @@ function extractRouteUpdatedAt(candidate) {
|
|
|
44484
44564
|
}
|
|
44485
44565
|
function resolveRouteTargetForStage(routeIdValue, routes, stageInput) {
|
|
44486
44566
|
const routeId = typeof routeIdValue === "string" ? routeIdValue : null;
|
|
44487
|
-
if (
|
|
44567
|
+
if (routeId === null || routeId.length === 0 || routes === void 0) return null;
|
|
44488
44568
|
const routeEntry = routes[routeId];
|
|
44489
44569
|
if (!isRouteVisibleInStage(routeEntry, stageInput)) return null;
|
|
44490
44570
|
const href = extractRouteHref(routeEntry, stageInput);
|
|
44491
|
-
if (
|
|
44571
|
+
if (href === null) return null;
|
|
44492
44572
|
return {
|
|
44493
44573
|
routeId,
|
|
44494
44574
|
href,
|
|
@@ -44637,7 +44717,7 @@ import React4 from "react";
|
|
|
44637
44717
|
// ../blocks/src/system/data/linkedContentEntries.ts
|
|
44638
44718
|
var LINKED_CONTENT_ENTRY_META_KEY = "__rbLinkedContentEntry";
|
|
44639
44719
|
function coerceLinkedContentEntriesPayload(payload) {
|
|
44640
|
-
if (!
|
|
44720
|
+
if (!isRecord11(payload)) return payload;
|
|
44641
44721
|
const response = payload;
|
|
44642
44722
|
if (!Array.isArray(response.entries)) return payload;
|
|
44643
44723
|
const contentType = parsePublicContentTypeMeta(response.contentType);
|
|
@@ -44645,16 +44725,16 @@ function coerceLinkedContentEntriesPayload(payload) {
|
|
|
44645
44725
|
return response.entries.map((entry) => enrichLinkedContentEntry(entry, contentType));
|
|
44646
44726
|
}
|
|
44647
44727
|
function getLinkedContentEntryMeta(value) {
|
|
44648
|
-
if (!
|
|
44728
|
+
if (!isRecord11(value)) return null;
|
|
44649
44729
|
const candidate = value[LINKED_CONTENT_ENTRY_META_KEY];
|
|
44650
44730
|
return isLinkedContentEntryMeta(candidate) ? candidate : null;
|
|
44651
44731
|
}
|
|
44652
44732
|
function buildLinkedContentEditTarget(input) {
|
|
44653
44733
|
const { entry, sourceBlockId, sourceBlockKind, itemIndex } = input;
|
|
44654
|
-
if (!
|
|
44734
|
+
if (!isRecord11(entry)) return null;
|
|
44655
44735
|
const meta = getLinkedContentEntryMeta(entry);
|
|
44656
44736
|
if (!meta || meta.support.kind !== "supported") return null;
|
|
44657
|
-
const content =
|
|
44737
|
+
const content = isRecord11(entry.content) ? entry.content : {};
|
|
44658
44738
|
return {
|
|
44659
44739
|
kind: "linked-content-entry",
|
|
44660
44740
|
entryId: meta.entryId,
|
|
@@ -44704,12 +44784,12 @@ function resolveLinkedEntryInlineFieldEligibility(input) {
|
|
|
44704
44784
|
};
|
|
44705
44785
|
}
|
|
44706
44786
|
function enrichLinkedContentEntry(entry, contentType) {
|
|
44707
|
-
if (!
|
|
44787
|
+
if (!isRecord11(entry)) return entry;
|
|
44708
44788
|
const entryId = typeof entry.id === "string" ? entry.id : null;
|
|
44709
44789
|
if (!entryId) return entry;
|
|
44710
44790
|
const title = typeof entry.title === "string" && entry.title.trim().length > 0 ? entry.title : entryId;
|
|
44711
44791
|
const optimisticHash = typeof entry.optimisticHash === "string" && entry.optimisticHash.length > 0 ? entry.optimisticHash : null;
|
|
44712
|
-
const content =
|
|
44792
|
+
const content = isRecord11(entry.content) ? entry.content : {};
|
|
44713
44793
|
const meta = {
|
|
44714
44794
|
kind: "linked-content-entry",
|
|
44715
44795
|
entryId,
|
|
@@ -44805,7 +44885,7 @@ function capitalize(value) {
|
|
|
44805
44885
|
return value.charAt(0).toUpperCase() + value.slice(1).toLowerCase();
|
|
44806
44886
|
}
|
|
44807
44887
|
function parsePublicContentTypeMeta(value) {
|
|
44808
|
-
if (!
|
|
44888
|
+
if (!isRecord11(value)) return null;
|
|
44809
44889
|
if (typeof value.key !== "string" || value.key.trim().length === 0) return null;
|
|
44810
44890
|
return {
|
|
44811
44891
|
key: value.key,
|
|
@@ -44815,7 +44895,7 @@ function parsePublicContentTypeMeta(value) {
|
|
|
44815
44895
|
};
|
|
44816
44896
|
}
|
|
44817
44897
|
function parsePublicContentTypeLinkedEntryEditing(value) {
|
|
44818
|
-
if (!
|
|
44898
|
+
if (!isRecord11(value) || typeof value.kind !== "string") return null;
|
|
44819
44899
|
switch (value.kind) {
|
|
44820
44900
|
case "generic":
|
|
44821
44901
|
return { kind: "generic" };
|
|
@@ -44829,7 +44909,7 @@ function parsePublicContentTypeLinkedEntryEditing(value) {
|
|
|
44829
44909
|
}
|
|
44830
44910
|
}
|
|
44831
44911
|
function parsePublicContentTypeFieldMeta(value) {
|
|
44832
|
-
if (!
|
|
44912
|
+
if (!isRecord11(value)) return [];
|
|
44833
44913
|
if (typeof value.id !== "string" || typeof value.type !== "string") return [];
|
|
44834
44914
|
return [{
|
|
44835
44915
|
id: value.id,
|
|
@@ -44844,14 +44924,14 @@ function parseStringArray(value) {
|
|
|
44844
44924
|
return value.filter((item) => typeof item === "string");
|
|
44845
44925
|
}
|
|
44846
44926
|
function isLinkedContentEntryMeta(value) {
|
|
44847
|
-
if (!
|
|
44927
|
+
if (!isRecord11(value)) return false;
|
|
44848
44928
|
if (value.kind !== "linked-content-entry") return false;
|
|
44849
44929
|
if (typeof value.entryId !== "string") return false;
|
|
44850
44930
|
if (typeof value.contentTypeKey !== "string") return false;
|
|
44851
44931
|
if (typeof value.contentTypeLabel !== "string") return false;
|
|
44852
44932
|
if (typeof value.title !== "string") return false;
|
|
44853
44933
|
if (!(value.optimisticHash === null || typeof value.optimisticHash === "string")) return false;
|
|
44854
|
-
if (!
|
|
44934
|
+
if (!isRecord11(value.contentType)) return false;
|
|
44855
44935
|
if (!isLinkedEntryFieldSourceArray(value.fieldSources)) return false;
|
|
44856
44936
|
return isLinkedContentEditSupport(value.support);
|
|
44857
44937
|
}
|
|
@@ -44859,7 +44939,7 @@ function isLinkedEntryFieldSourceArray(value) {
|
|
|
44859
44939
|
return Array.isArray(value) && value.every(isLinkedEntryFieldSource);
|
|
44860
44940
|
}
|
|
44861
44941
|
function isLinkedEntryFieldSource(value) {
|
|
44862
|
-
if (!
|
|
44942
|
+
if (!isRecord11(value)) return false;
|
|
44863
44943
|
if (typeof value.displayPath !== "string") return false;
|
|
44864
44944
|
switch (value.kind) {
|
|
44865
44945
|
case "content-field":
|
|
@@ -44885,7 +44965,7 @@ function isLinkedEntryInlineFieldReadOnlyReason(value) {
|
|
|
44885
44965
|
}
|
|
44886
44966
|
}
|
|
44887
44967
|
function isLinkedContentEditSupport(value) {
|
|
44888
|
-
if (!
|
|
44968
|
+
if (!isRecord11(value) || typeof value.kind !== "string") return false;
|
|
44889
44969
|
switch (value.kind) {
|
|
44890
44970
|
case "supported":
|
|
44891
44971
|
return true;
|
|
@@ -44897,7 +44977,7 @@ function isLinkedContentEditSupport(value) {
|
|
|
44897
44977
|
return false;
|
|
44898
44978
|
}
|
|
44899
44979
|
}
|
|
44900
|
-
function
|
|
44980
|
+
function isRecord11(value) {
|
|
44901
44981
|
return typeof value === "object" && value !== null && !Array.isArray(value);
|
|
44902
44982
|
}
|
|
44903
44983
|
|
|
@@ -46353,12 +46433,12 @@ function toTrimmedString(value) {
|
|
|
46353
46433
|
return trimmed ? trimmed : void 0;
|
|
46354
46434
|
}
|
|
46355
46435
|
function normalizeBookingFormConfig(form2) {
|
|
46356
|
-
if (!
|
|
46436
|
+
if (!isRecord12(form2)) return null;
|
|
46357
46437
|
const id = readNonEmptyString(form2.id);
|
|
46358
46438
|
const name = readNonEmptyString(form2.name);
|
|
46359
46439
|
if (!id || !name) return null;
|
|
46360
|
-
const schemaSource =
|
|
46361
|
-
const settingsSource =
|
|
46440
|
+
const schemaSource = isRecord12(form2.schema) ? form2.schema : isRecord12(form2.schemaJson) ? form2.schemaJson : null;
|
|
46441
|
+
const settingsSource = isRecord12(form2.settings) ? form2.settings : isRecord12(form2.settingsJson) ? form2.settingsJson : null;
|
|
46362
46442
|
return {
|
|
46363
46443
|
id,
|
|
46364
46444
|
name,
|
|
@@ -46382,10 +46462,10 @@ function normalizeBookingServices(services) {
|
|
|
46382
46462
|
if (Array.isArray(services)) {
|
|
46383
46463
|
return services.filter(isBookingFormService).map(normalizeService);
|
|
46384
46464
|
}
|
|
46385
|
-
if (
|
|
46465
|
+
if (isRecord12(services) && "services" in services) {
|
|
46386
46466
|
return Array.isArray(services.services) ? services.services.filter(isBookingFormService).map(normalizeService) : [];
|
|
46387
46467
|
}
|
|
46388
|
-
return
|
|
46468
|
+
return isRecord12(services) ? Object.values(services).filter(isBookingFormService).map(normalizeService) : [];
|
|
46389
46469
|
}
|
|
46390
46470
|
function normalizeBookingSchema(value) {
|
|
46391
46471
|
if (!value) return void 0;
|
|
@@ -46397,7 +46477,7 @@ function normalizeBookingSchema(value) {
|
|
|
46397
46477
|
};
|
|
46398
46478
|
}
|
|
46399
46479
|
function readBookingFormField(value) {
|
|
46400
|
-
if (!
|
|
46480
|
+
if (!isRecord12(value)) return null;
|
|
46401
46481
|
const id = readNonEmptyString(value.id);
|
|
46402
46482
|
const label = readNonEmptyString(value.label);
|
|
46403
46483
|
const type = readBookingFieldType(value.type);
|
|
@@ -46443,7 +46523,7 @@ function readBookingFieldOptions(value) {
|
|
|
46443
46523
|
return options.length > 0 ? options : void 0;
|
|
46444
46524
|
}
|
|
46445
46525
|
function readBookingFieldOption(value) {
|
|
46446
|
-
if (!
|
|
46526
|
+
if (!isRecord12(value)) return null;
|
|
46447
46527
|
const optionValue = readNonEmptyString(value.value);
|
|
46448
46528
|
const label = readNonEmptyString(value.label);
|
|
46449
46529
|
return optionValue && label ? { value: optionValue, label } : null;
|
|
@@ -46460,7 +46540,7 @@ function normalizeBookingSettings(value) {
|
|
|
46460
46540
|
};
|
|
46461
46541
|
}
|
|
46462
46542
|
function isBookingFormService(value) {
|
|
46463
|
-
return
|
|
46543
|
+
return isRecord12(value) && typeof value.id === "string" && typeof value.siteId === "string" && typeof value.title === "string";
|
|
46464
46544
|
}
|
|
46465
46545
|
function readNonEmptyString(value) {
|
|
46466
46546
|
if (typeof value !== "string") return null;
|
|
@@ -46478,7 +46558,7 @@ function readStringArray(value) {
|
|
|
46478
46558
|
const strings = value.filter((item) => typeof item === "string");
|
|
46479
46559
|
return strings.length > 0 ? strings : void 0;
|
|
46480
46560
|
}
|
|
46481
|
-
function
|
|
46561
|
+
function isRecord12(value) {
|
|
46482
46562
|
return typeof value === "object" && value !== null;
|
|
46483
46563
|
}
|
|
46484
46564
|
|
|
@@ -47036,7 +47116,7 @@ function EventDetailsView({
|
|
|
47036
47116
|
"a",
|
|
47037
47117
|
{
|
|
47038
47118
|
className: "rb-tile rb-tile--interactive",
|
|
47039
|
-
|
|
47119
|
+
...resolveEventLinkProps(e),
|
|
47040
47120
|
children: /* @__PURE__ */ jsx30(
|
|
47041
47121
|
DateTimeTile,
|
|
47042
47122
|
{
|
|
@@ -48720,7 +48800,7 @@ var AgendaEventCard = ({
|
|
|
48720
48800
|
showCapacity,
|
|
48721
48801
|
onClick
|
|
48722
48802
|
}) => {
|
|
48723
|
-
const
|
|
48803
|
+
const eventLinkProps = resolveEventLinkProps(event);
|
|
48724
48804
|
const categoryColor = event.eventCategory?.color || "rgb(var(--tb-accent))";
|
|
48725
48805
|
const price = formatEventPrice(event);
|
|
48726
48806
|
const { available, isFull } = getEventAvailability(event);
|
|
@@ -48781,7 +48861,7 @@ var AgendaEventCard = ({
|
|
|
48781
48861
|
}
|
|
48782
48862
|
);
|
|
48783
48863
|
}
|
|
48784
|
-
return /* @__PURE__ */ jsx47("a", {
|
|
48864
|
+
return /* @__PURE__ */ jsx47("a", { ...eventLinkProps, className: "event-agenda-card", children: cardContent });
|
|
48785
48865
|
};
|
|
48786
48866
|
|
|
48787
48867
|
// ../blocks/src/system/runtime/nodes/events/shared/WeekAgendaView.tsx
|
|
@@ -49024,7 +49104,7 @@ function renderCalendarSsr(display) {
|
|
|
49024
49104
|
dayEvents.slice(0, MAX_EVENTS_PER_DAY).map((event) => /* @__PURE__ */ jsxs35(
|
|
49025
49105
|
"a",
|
|
49026
49106
|
{
|
|
49027
|
-
|
|
49107
|
+
...resolveEventLinkProps(event),
|
|
49028
49108
|
className: "event-calendar-event",
|
|
49029
49109
|
title: `${event.title} at ${formatTime(event.startsAt, { timeZone: getEventTimeZone(event) })}`,
|
|
49030
49110
|
children: [
|
|
@@ -49152,7 +49232,7 @@ function renderTimetableSsr(display) {
|
|
|
49152
49232
|
day.events.length === 0 ? /* @__PURE__ */ jsx49("p", { className: "event-timetable-day-empty", children: "No classes" }) : day.events.map((cell) => /* @__PURE__ */ jsxs35(
|
|
49153
49233
|
"a",
|
|
49154
49234
|
{
|
|
49155
|
-
|
|
49235
|
+
...resolveEventLinkProps(cell.event),
|
|
49156
49236
|
className: "event-timetable-event",
|
|
49157
49237
|
title: `${cell.event.title}, ${cell.timeLabel}`,
|
|
49158
49238
|
style: {
|
|
@@ -49959,14 +50039,14 @@ function isDecoratedHeadingBlockKind(blockKind) {
|
|
|
49959
50039
|
return blockKind === "block.intro" || blockKind === "block.feature-cards" || blockKind === "block.testimonials" || blockKind === "block.faq";
|
|
49960
50040
|
}
|
|
49961
50041
|
function readVariant(blockContent) {
|
|
49962
|
-
if (!
|
|
50042
|
+
if (!isRecord13(blockContent)) return void 0;
|
|
49963
50043
|
const variant = blockContent.variant;
|
|
49964
50044
|
return typeof variant === "string" ? variant : void 0;
|
|
49965
50045
|
}
|
|
49966
50046
|
function isFaqDecoratedVariant(variant) {
|
|
49967
50047
|
return variant === "default" || variant === "question-columns";
|
|
49968
50048
|
}
|
|
49969
|
-
function
|
|
50049
|
+
function isRecord13(value) {
|
|
49970
50050
|
return typeof value === "object" && value !== null && !Array.isArray(value);
|
|
49971
50051
|
}
|
|
49972
50052
|
function buildHeadingDecorationWrapperClassName(className) {
|
|
@@ -68012,7 +68092,7 @@ function preset(id, verticalId, canonicalBehaviour, label, pluralLabel, descript
|
|
|
68012
68092
|
}
|
|
68013
68093
|
|
|
68014
68094
|
// ../api/src/utils/isRecord.ts
|
|
68015
|
-
function
|
|
68095
|
+
function isRecord14(value) {
|
|
68016
68096
|
return typeof value === "object" && value !== null && !Array.isArray(value);
|
|
68017
68097
|
}
|
|
68018
68098
|
|
|
@@ -68319,7 +68399,7 @@ function sanitizeMarks(marks) {
|
|
|
68319
68399
|
if (mark.type === "bold" || mark.type === "strong" || mark.type === "italic" || mark.type === "em") {
|
|
68320
68400
|
return [{ type: mark.type }];
|
|
68321
68401
|
}
|
|
68322
|
-
if (mark.type === "link" &&
|
|
68402
|
+
if (mark.type === "link" && isRecord14(mark.attrs) && typeof mark.attrs.href === "string") {
|
|
68323
68403
|
const attrs = { href: mark.attrs.href };
|
|
68324
68404
|
if (typeof mark.attrs.target === "string" && mark.attrs.target.trim().length > 0) {
|
|
68325
68405
|
attrs.target = mark.attrs.target;
|
|
@@ -68334,10 +68414,10 @@ function sanitizeMarks(marks) {
|
|
|
68334
68414
|
return sanitized.length > 0 ? sanitized : void 0;
|
|
68335
68415
|
}
|
|
68336
68416
|
function unwrapRichTextValue(value) {
|
|
68337
|
-
if (
|
|
68417
|
+
if (isRecord14(value) && isRecord14(value.doc)) {
|
|
68338
68418
|
return unwrapRichTextValue(value.doc);
|
|
68339
68419
|
}
|
|
68340
|
-
if (
|
|
68420
|
+
if (isRecord14(value) && value.type === "doc") {
|
|
68341
68421
|
return {
|
|
68342
68422
|
type: "doc",
|
|
68343
68423
|
content: Array.isArray(value.content) ? value.content.filter(isTipTapNodeLike).map(coerceTipTapNode) : []
|
|
@@ -68346,7 +68426,7 @@ function unwrapRichTextValue(value) {
|
|
|
68346
68426
|
return EMPTY_SITE_BANNER_BODY;
|
|
68347
68427
|
}
|
|
68348
68428
|
function isTipTapNodeLike(value) {
|
|
68349
|
-
return
|
|
68429
|
+
return isRecord14(value) && typeof value.type === "string";
|
|
68350
68430
|
}
|
|
68351
68431
|
function coerceTipTapNode(value) {
|
|
68352
68432
|
return {
|
|
@@ -68354,9 +68434,9 @@ function coerceTipTapNode(value) {
|
|
|
68354
68434
|
...Array.isArray(value.content) ? { content: value.content.filter(isTipTapNodeLike).map(coerceTipTapNode) } : {},
|
|
68355
68435
|
...typeof value.text === "string" ? { text: value.text } : {},
|
|
68356
68436
|
...Array.isArray(value.marks) ? {
|
|
68357
|
-
marks: value.marks.filter((mark) =>
|
|
68437
|
+
marks: value.marks.filter((mark) => isRecord14(mark) && typeof mark.type === "string").map((mark) => ({
|
|
68358
68438
|
type: mark.type,
|
|
68359
|
-
...
|
|
68439
|
+
...isRecord14(mark.attrs) ? { attrs: mark.attrs } : {}
|
|
68360
68440
|
}))
|
|
68361
68441
|
} : {}
|
|
68362
68442
|
};
|
|
@@ -68546,7 +68626,7 @@ var ENTRY_REF_KEYS = [
|
|
|
68546
68626
|
"entryId",
|
|
68547
68627
|
"slug"
|
|
68548
68628
|
];
|
|
68549
|
-
function
|
|
68629
|
+
function isRecord15(value) {
|
|
68550
68630
|
return Boolean(value) && typeof value === "object" && !Array.isArray(value);
|
|
68551
68631
|
}
|
|
68552
68632
|
function extractManualEntryRef(item) {
|
|
@@ -68554,7 +68634,7 @@ function extractManualEntryRef(item) {
|
|
|
68554
68634
|
const trimmed = item.trim();
|
|
68555
68635
|
return trimmed.length > 0 ? trimmed : null;
|
|
68556
68636
|
}
|
|
68557
|
-
if (!
|
|
68637
|
+
if (!isRecord15(item)) return null;
|
|
68558
68638
|
for (const key of ENTRY_REF_KEYS) {
|
|
68559
68639
|
const raw = item[key];
|
|
68560
68640
|
if (typeof raw === "string" && raw.trim().length > 0) {
|
|
@@ -69079,7 +69159,7 @@ function collectMediaAssetSidecar(mediaAssets) {
|
|
|
69079
69159
|
return Array.isArray(mediaAssets) && mediaAssets.length > 0 ? mediaAssets : void 0;
|
|
69080
69160
|
}
|
|
69081
69161
|
function convertPageResponseBlock(block) {
|
|
69082
|
-
if (!
|
|
69162
|
+
if (!isRecord16(block)) {
|
|
69083
69163
|
throw new Error("Invalid block format in page API response");
|
|
69084
69164
|
}
|
|
69085
69165
|
if (typeof block.id !== "string" && block.id !== null) {
|
|
@@ -69110,20 +69190,20 @@ function buildPageOutline(input) {
|
|
|
69110
69190
|
blocks: input.blocks.map(convertPageResponseBlock)
|
|
69111
69191
|
};
|
|
69112
69192
|
}
|
|
69113
|
-
function
|
|
69193
|
+
function isRecord16(value) {
|
|
69114
69194
|
return Boolean(value) && typeof value === "object" && !Array.isArray(value);
|
|
69115
69195
|
}
|
|
69116
69196
|
function readContentRecord(value) {
|
|
69117
|
-
return
|
|
69197
|
+
return isRecord16(value) ? value : void 0;
|
|
69118
69198
|
}
|
|
69119
69199
|
function readNestedContentRecord(value) {
|
|
69120
|
-
if (!
|
|
69200
|
+
if (!isRecord16(value)) return null;
|
|
69121
69201
|
return readContentRecord(value.data) ?? null;
|
|
69122
69202
|
}
|
|
69123
69203
|
function sanitizeSdkRuntimeBlockContent(blockKind, content) {
|
|
69124
69204
|
if (blockKind !== "block.newsletter-signup") return content;
|
|
69125
69205
|
const sanitized = sanitizeNewsletterSignupPublicContent(content);
|
|
69126
|
-
return
|
|
69206
|
+
return isRecord16(sanitized) ? sanitized : {};
|
|
69127
69207
|
}
|
|
69128
69208
|
function sanitizeNullableSdkRuntimeBlockContent(blockKind, content) {
|
|
69129
69209
|
return content ? sanitizeSdkRuntimeBlockContent(blockKind, content) : null;
|
|
@@ -69740,15 +69820,15 @@ function Page(props2) {
|
|
|
69740
69820
|
var lazyBlockOverrideSymbol = /* @__PURE__ */ Symbol.for("riverbankcms.sdk.lazyBlockOverride");
|
|
69741
69821
|
|
|
69742
69822
|
// src/rendering/overrideResolution.ts
|
|
69743
|
-
function
|
|
69823
|
+
function isRecord17(value) {
|
|
69744
69824
|
return typeof value === "object" && value !== null;
|
|
69745
69825
|
}
|
|
69746
69826
|
function isBlockOutlineLike(value) {
|
|
69747
69827
|
const id = value.id;
|
|
69748
|
-
return typeof value.kind === "string" && (typeof id === "string" || id === null) && (typeof value.purpose === "string" ||
|
|
69828
|
+
return typeof value.kind === "string" && (typeof id === "string" || id === null) && (typeof value.purpose === "string" || isRecord17(value.content) || isRecord17(value.draftContent) || isRecord17(value.bindings));
|
|
69749
69829
|
}
|
|
69750
69830
|
function collectBlockKindsFromValue(value, usedKinds, seen) {
|
|
69751
|
-
if (!
|
|
69831
|
+
if (!isRecord17(value)) return;
|
|
69752
69832
|
if (seen.has(value)) return;
|
|
69753
69833
|
seen.add(value);
|
|
69754
69834
|
if (isBlockOutlineLike(value)) {
|
|
@@ -69797,7 +69877,7 @@ function selectOverrideKeysForUsedKinds(usedKinds, entries) {
|
|
|
69797
69877
|
return selectedKeys;
|
|
69798
69878
|
}
|
|
69799
69879
|
function isLazyRegistration(registration) {
|
|
69800
|
-
return
|
|
69880
|
+
return isRecord17(registration) && registration[lazyBlockOverrideSymbol] === true;
|
|
69801
69881
|
}
|
|
69802
69882
|
async function resolveOverrideComponent(registration) {
|
|
69803
69883
|
if (isLazyRegistration(registration)) {
|
|
@@ -70799,7 +70879,7 @@ var CircuitOpenError = class extends Error {
|
|
|
70799
70879
|
};
|
|
70800
70880
|
|
|
70801
70881
|
// src/version.ts
|
|
70802
|
-
var SDK_VERSION = "0.
|
|
70882
|
+
var SDK_VERSION = "0.91.0";
|
|
70803
70883
|
|
|
70804
70884
|
// src/next/content-load-failure.ts
|
|
70805
70885
|
var SdkContentLoadError = RiverbankContentLoadError;
|