@riverbankcms/sdk 0.84.0 → 0.84.1
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-HML67UDA.mjs → PreviewEditorSidebar-X7RLMEI6.mjs} +2 -2
- package/dist/{PreviewEditorUI-I4BQUU6K.mjs → PreviewEditorUI-CT67N4O3.mjs} +2 -2
- package/dist/SdkPreviewModeRuntime-EIMQ3S2V.mjs +8 -0
- package/dist/_dts/blocks/src/contracts/proof-block-islands.d.ts +4 -4
- package/dist/_dts/blocks/src/system/runtime/components/registry.client.d.ts +6 -6
- package/dist/_dts/blocks/src/system/runtime/components/runtime-backed-blocks.d.ts +3 -3
- package/dist/_dts/blocks/src/system/runtime/nodes/event-registration/EventRegistrationWizard.d.ts +0 -2
- package/dist/_dts/blocks/src/system/runtime/nodes/event-registration/constants.d.ts +1 -0
- package/dist/_dts/blocks/src/system/runtime/nodes/event-registration/event-registration.headless.contract.d.ts +275 -0
- package/dist/_dts/blocks/src/system/runtime/nodes/event-registration/event-registration.headless.override.d.ts +10 -0
- package/dist/_dts/blocks/src/system/runtime/nodes/event-registration/event-registration.headless.planning.d.ts +22 -0
- package/dist/_dts/blocks/src/system/runtime/nodes/event-registration/event-registration.headless.state.d.ts +3 -303
- package/dist/_dts/blocks/src/system/runtime/nodes/event-registration/useEventRegistrationWizard.d.ts +9 -1
- package/dist/_dts/blocks/src/system/runtime/nodes/event-registration.interactive.d.ts +8 -6
- package/dist/_dts/editor-blocks/src/BlockForm.d.ts +6 -4
- package/dist/_dts/sdk/src/version.d.ts +1 -1
- package/dist/{chunk-MSHZO4SL.mjs → chunk-O62NDCTI.mjs} +268 -186
- package/dist/{chunk-HFMGVJCE.mjs → chunk-QRKJDWT7.mjs} +5 -5
- package/dist/{chunk-6X2OVO3S.mjs → chunk-RCTJAZSK.mjs} +1 -1
- package/dist/{chunk-5E33VO6J.mjs → chunk-X5ZCSU6F.mjs} +1 -1
- package/dist/cli/index.mjs +323 -35
- package/dist/cli/init-docs/content/agents-section.md +5 -0
- package/dist/cli/init-docs/content/cli-reference.md +13 -0
- package/dist/cli/init-docs/content/content-management.md +31 -0
- package/dist/cli/init-docs/content/getting-started.md +12 -0
- package/dist/cli/init-docs/content/workflow-add-block.md +3 -1
- package/dist/cli/init-docs/content/workflow-agent-safe-sync.md +81 -0
- package/dist/cli/init-docs/content/workflow-create-page.md +13 -3
- package/dist/cli/init-docs/content/workflow-custom-block.md +9 -0
- package/dist/cli/init-docs/content/workflow-templates.md +14 -0
- package/dist/client/{accordion-ESY65T56.mjs → accordion-2UZPBMYM.mjs} +1 -1
- package/dist/client/{bookingForm-JRFNZUHD.mjs → bookingForm-DYXT6YB6.mjs} +3 -3
- package/dist/client/bookings.mjs +155 -134
- package/dist/client/{carousel-CPR5VWIP.mjs → carousel-QH77HR6X.mjs} +2 -2
- package/dist/client/{cart-ZUX5BA7O.mjs → cart-X4YK4FTW.mjs} +5 -5
- package/dist/client/{checkout-RULGBADZ.mjs → checkout-OM2BEPWD.mjs} +5 -5
- package/dist/client/{chunk-BT6AEIKN.mjs → chunk-3DTWLTXM.mjs} +1 -1
- package/dist/client/{chunk-JWEYB4V6.mjs → chunk-4OXKTA3D.mjs} +1 -1
- package/dist/client/{chunk-URQCZD5W.mjs → chunk-52CGCQ7B.mjs} +4 -4
- package/dist/client/{chunk-52I7BGEK.mjs → chunk-7UCLJ5SP.mjs} +1 -1
- package/dist/client/{chunk-Z5OBQ5I4.mjs → chunk-F5VRX5Y6.mjs} +1 -1
- package/dist/client/{chunk-RDJFCPY3.mjs → chunk-UHDWIXVR.mjs} +31 -115
- package/dist/client/{chunk-HXPWP5EN.mjs → chunk-VGDBVNOO.mjs} +175 -14
- package/dist/client/{chunk-5ZEAZ33K.mjs → chunk-ZKUO52W3.mjs} +1 -1
- package/dist/client/client.mjs +337 -217
- package/dist/client/{courseRegistration-QTUDC35T.mjs → courseRegistration-YBOGURTA.mjs} +3 -3
- package/dist/client/{eventCalendar-Q7NS4XLD.mjs → eventCalendar-K4QJVCMD.mjs} +5 -5
- package/dist/client/{eventCombined-QAO7VUO5.mjs → eventCombined-MTXGMTCZ.mjs} +5 -5
- package/dist/client/{eventDetails-WTNNU6Q3.mjs → eventDetails-3PC4NL3U.mjs} +5 -5
- package/dist/client/{eventListing-5TA2ELDT.mjs → eventListing-TFJET6DN.mjs} +5 -5
- package/dist/client/{eventRegistration-M6USZGRF.mjs → eventRegistration-QGPBGJTW.mjs} +5 -5
- package/dist/client/{form-DGVGXLMH.mjs → form-MDKR4FNB.mjs} +1 -1
- package/dist/client/{headerSection-O2AGMPCU.mjs → headerSection-Y5TMR3TW.mjs} +2 -2
- package/dist/client/hooks.mjs +315 -35
- package/dist/client/{locationMap-EJRNRIKJ.mjs → locationMap-RH2LG7FZ.mjs} +1 -1
- package/dist/client/{newsletterForm-7NTC2DTR.mjs → newsletterForm-ZR5UDGBT.mjs} +1 -1
- package/dist/client/{productDetail-HH4LP53D.mjs → productDetail-OIGDR4YE.mjs} +5 -5
- package/dist/client/{productList-YVHYM2AF.mjs → productList-4MA5S2CX.mjs} +5 -5
- package/dist/client/rendering/client.mjs +310 -190
- package/dist/client/rendering/islands.mjs +18 -18
- package/dist/client/rendering.mjs +310 -190
- package/dist/client/{shop-UIFX7XRK.mjs → shop-WXSYV5QO.mjs} +5 -5
- package/dist/preview-next/client/runtime.mjs +3 -3
- package/dist/{sdk-runtime-ZENAOYMN.mjs → sdk-runtime-7HJYPRWQ.mjs} +4 -4
- package/dist/server/components.mjs +188 -61
- package/dist/server/config-validation.mjs +313 -33
- package/dist/server/config.mjs +313 -33
- package/dist/server/data.mjs +315 -35
- package/dist/server/index.mjs +1 -1
- package/dist/server/next.mjs +189 -62
- package/dist/server/page-converter.mjs +315 -35
- package/dist/server/prebuild.mjs +1 -1
- package/dist/server/rendering/server.mjs +188 -61
- package/dist/server/rendering.mjs +188 -61
- package/dist/server/routing.mjs +334 -34
- package/dist/server/server.mjs +322 -42
- package/package.json +1 -1
- package/dist/SdkPreviewModeRuntime-MCKMVDTK.mjs +0 -8
|
@@ -6378,6 +6378,171 @@ var ENDPOINT_DEFINITIONS = {
|
|
|
6378
6378
|
}
|
|
6379
6379
|
};
|
|
6380
6380
|
|
|
6381
|
+
// ../core/src/result.ts
|
|
6382
|
+
function ok(value) {
|
|
6383
|
+
return { ok: true, value };
|
|
6384
|
+
}
|
|
6385
|
+
function err(error) {
|
|
6386
|
+
return { ok: false, error };
|
|
6387
|
+
}
|
|
6388
|
+
|
|
6389
|
+
// ../core/src/event-pricing.ts
|
|
6390
|
+
function publicEventPricingType(pricing) {
|
|
6391
|
+
switch (pricing.kind) {
|
|
6392
|
+
case "drop_in":
|
|
6393
|
+
case "free_registration":
|
|
6394
|
+
return "free";
|
|
6395
|
+
case "single_paid":
|
|
6396
|
+
case "ticket_types":
|
|
6397
|
+
case "course":
|
|
6398
|
+
return isFreePublicEventPriceDisplay(pricing.display) ? "free" : "paid";
|
|
6399
|
+
}
|
|
6400
|
+
}
|
|
6401
|
+
function isFreePublicEventPriceDisplay(display) {
|
|
6402
|
+
switch (display.kind) {
|
|
6403
|
+
case "free":
|
|
6404
|
+
return true;
|
|
6405
|
+
case "course":
|
|
6406
|
+
return display.display.kind === "free";
|
|
6407
|
+
case "exact":
|
|
6408
|
+
case "from":
|
|
6409
|
+
case "mixed":
|
|
6410
|
+
case "unavailable":
|
|
6411
|
+
return false;
|
|
6412
|
+
}
|
|
6413
|
+
}
|
|
6414
|
+
|
|
6415
|
+
// ../core/src/booking-date-time.ts
|
|
6416
|
+
var DEFAULT_LOCALE = "en-US";
|
|
6417
|
+
var FALLBACK_TIMEZONE = "UTC";
|
|
6418
|
+
function isValidTimeZone(timeZone) {
|
|
6419
|
+
try {
|
|
6420
|
+
new Intl.DateTimeFormat(DEFAULT_LOCALE, { timeZone }).format(/* @__PURE__ */ new Date());
|
|
6421
|
+
return true;
|
|
6422
|
+
} catch {
|
|
6423
|
+
return false;
|
|
6424
|
+
}
|
|
6425
|
+
}
|
|
6426
|
+
function getSafeTimeZone(timeZone) {
|
|
6427
|
+
const normalized = typeof timeZone === "string" ? timeZone.trim() : "";
|
|
6428
|
+
return normalized && isValidTimeZone(normalized) ? normalized : FALLBACK_TIMEZONE;
|
|
6429
|
+
}
|
|
6430
|
+
function parseStrictBookingTimeZone(timeZone) {
|
|
6431
|
+
const normalized = timeZone.trim();
|
|
6432
|
+
if (!normalized || !isValidTimeZone(normalized)) {
|
|
6433
|
+
return null;
|
|
6434
|
+
}
|
|
6435
|
+
return normalized;
|
|
6436
|
+
}
|
|
6437
|
+
function formatParseError(error) {
|
|
6438
|
+
switch (error.reason) {
|
|
6439
|
+
case "invalid_starts_at":
|
|
6440
|
+
return `Expected a valid UTC/offset-aware ISO datetime in startsAt, received "${error.value}"`;
|
|
6441
|
+
case "invalid_ends_at":
|
|
6442
|
+
return `Expected a valid UTC/offset-aware ISO datetime in endsAt, received "${error.value ?? ""}"`;
|
|
6443
|
+
case "invalid_time_zone":
|
|
6444
|
+
return `Expected a valid IANA timezone in timeZone, received "${error.value}"`;
|
|
6445
|
+
}
|
|
6446
|
+
}
|
|
6447
|
+
function formatToPartsLookup(date, locale, timeZone, format) {
|
|
6448
|
+
return new Map(
|
|
6449
|
+
new Intl.DateTimeFormat(locale, {
|
|
6450
|
+
...format,
|
|
6451
|
+
timeZone
|
|
6452
|
+
}).formatToParts(date).map((part) => [part.type, part.value])
|
|
6453
|
+
);
|
|
6454
|
+
}
|
|
6455
|
+
function getZonedDateTimeParts(date, timeZone) {
|
|
6456
|
+
const parts = formatToPartsLookup(date, "en-GB", timeZone, {
|
|
6457
|
+
year: "numeric",
|
|
6458
|
+
month: "2-digit",
|
|
6459
|
+
day: "2-digit",
|
|
6460
|
+
hour: "2-digit",
|
|
6461
|
+
minute: "2-digit",
|
|
6462
|
+
second: "2-digit",
|
|
6463
|
+
hour12: false
|
|
6464
|
+
});
|
|
6465
|
+
const read = (type) => Number(parts.get(type) ?? "");
|
|
6466
|
+
return {
|
|
6467
|
+
year: read("year"),
|
|
6468
|
+
month: read("month"),
|
|
6469
|
+
day: read("day"),
|
|
6470
|
+
hour: read("hour"),
|
|
6471
|
+
minute: read("minute"),
|
|
6472
|
+
second: read("second")
|
|
6473
|
+
};
|
|
6474
|
+
}
|
|
6475
|
+
function formatDateKey(date) {
|
|
6476
|
+
const year = String(date.year).padStart(4, "0");
|
|
6477
|
+
const month = String(date.month).padStart(2, "0");
|
|
6478
|
+
const day = String(date.day).padStart(2, "0");
|
|
6479
|
+
return `${year}-${month}-${day}`;
|
|
6480
|
+
}
|
|
6481
|
+
function parseUtcIsoDateTimeString(value) {
|
|
6482
|
+
const normalized = value.trim();
|
|
6483
|
+
const hasUtcSuffix = normalized.endsWith("Z");
|
|
6484
|
+
const hasExplicitOffset = /[+-]\d{2}:\d{2}$/u.test(normalized);
|
|
6485
|
+
if (!hasUtcSuffix && !hasExplicitOffset) {
|
|
6486
|
+
return err("missing-timezone-offset");
|
|
6487
|
+
}
|
|
6488
|
+
const date = new Date(normalized);
|
|
6489
|
+
if (Number.isNaN(date.getTime())) {
|
|
6490
|
+
return err("invalid-date-time");
|
|
6491
|
+
}
|
|
6492
|
+
return ok(date.toISOString());
|
|
6493
|
+
}
|
|
6494
|
+
function toUtcIsoDateTimeString(value) {
|
|
6495
|
+
const parsed = parseUtcIsoDateTimeString(value);
|
|
6496
|
+
if (!parsed.ok) {
|
|
6497
|
+
const message = parsed.error === "missing-timezone-offset" ? `Expected an offset-aware ISO datetime, received "${value}"` : `Expected a valid ISO datetime, received "${value}"`;
|
|
6498
|
+
throw new Error(message);
|
|
6499
|
+
}
|
|
6500
|
+
return parsed.value;
|
|
6501
|
+
}
|
|
6502
|
+
function parseScheduledBookingDateTime(input) {
|
|
6503
|
+
try {
|
|
6504
|
+
const startsAt = toUtcIsoDateTimeString(input.startsAt);
|
|
6505
|
+
const timeZone = parseStrictBookingTimeZone(input.timeZone);
|
|
6506
|
+
if (!timeZone) {
|
|
6507
|
+
return {
|
|
6508
|
+
ok: false,
|
|
6509
|
+
field: "timeZone",
|
|
6510
|
+
reason: "invalid_time_zone",
|
|
6511
|
+
value: input.timeZone
|
|
6512
|
+
};
|
|
6513
|
+
}
|
|
6514
|
+
return {
|
|
6515
|
+
ok: true,
|
|
6516
|
+
value: {
|
|
6517
|
+
startsAt,
|
|
6518
|
+
timeZone,
|
|
6519
|
+
locale: input.locale
|
|
6520
|
+
}
|
|
6521
|
+
};
|
|
6522
|
+
} catch {
|
|
6523
|
+
return {
|
|
6524
|
+
ok: false,
|
|
6525
|
+
field: "startsAt",
|
|
6526
|
+
reason: "invalid_starts_at",
|
|
6527
|
+
value: input.startsAt
|
|
6528
|
+
};
|
|
6529
|
+
}
|
|
6530
|
+
}
|
|
6531
|
+
function toScheduledBookingDateTime(input) {
|
|
6532
|
+
const result = parseScheduledBookingDateTime(input);
|
|
6533
|
+
if (result.ok) {
|
|
6534
|
+
return result.value;
|
|
6535
|
+
}
|
|
6536
|
+
throw new Error(formatParseError(result));
|
|
6537
|
+
}
|
|
6538
|
+
function getBookingLocalDateKey(input) {
|
|
6539
|
+
return formatDateKey(getLocalScheduleDate(new Date(input.startsAt), input.timeZone));
|
|
6540
|
+
}
|
|
6541
|
+
function getLocalScheduleDate(date, timeZone) {
|
|
6542
|
+
const parts = getZonedDateTimeParts(date, getSafeTimeZone(timeZone));
|
|
6543
|
+
return { year: parts.year, month: parts.month, day: parts.day };
|
|
6544
|
+
}
|
|
6545
|
+
|
|
6381
6546
|
// ../core/src/location.ts
|
|
6382
6547
|
function normalizeLocationAddressText(value) {
|
|
6383
6548
|
if (typeof value !== "string") {
|
|
@@ -9328,9 +9493,9 @@ var _Vibrant = class _Vibrant2 {
|
|
|
9328
9493
|
}
|
|
9329
9494
|
image.remove();
|
|
9330
9495
|
return res;
|
|
9331
|
-
} catch (
|
|
9496
|
+
} catch (err2) {
|
|
9332
9497
|
image.remove();
|
|
9333
|
-
return Promise.reject(
|
|
9498
|
+
return Promise.reject(err2);
|
|
9334
9499
|
}
|
|
9335
9500
|
}
|
|
9336
9501
|
async getPalettes() {
|
|
@@ -9344,9 +9509,9 @@ var _Vibrant = class _Vibrant2 {
|
|
|
9344
9509
|
const res = result1.palettes;
|
|
9345
9510
|
image.remove();
|
|
9346
9511
|
return res;
|
|
9347
|
-
} catch (
|
|
9512
|
+
} catch (err2) {
|
|
9348
9513
|
image.remove();
|
|
9349
|
-
return Promise.reject(
|
|
9514
|
+
return Promise.reject(err2);
|
|
9350
9515
|
}
|
|
9351
9516
|
}
|
|
9352
9517
|
};
|
|
@@ -28151,6 +28316,26 @@ var occurrenceContextSchema = z43.object({
|
|
|
28151
28316
|
// ../blocks/src/system/runtime/nodes/event-registration.interactive.ts
|
|
28152
28317
|
import { z as z45 } from "zod";
|
|
28153
28318
|
|
|
28319
|
+
// ../blocks/src/system/constants/events.ts
|
|
28320
|
+
var EVENT_CONTENT_TYPE_SLUGS = ["event", "events"];
|
|
28321
|
+
var eventCalendarDisplayModeValues = ["combined", "month", "week", "list", "timetable"];
|
|
28322
|
+
var eventCalendarListLayoutValues = ["stack", "grid", "compact"];
|
|
28323
|
+
var eventCalendarListLayoutOptions = [
|
|
28324
|
+
{ id: "stack", label: "Stack" },
|
|
28325
|
+
{ id: "grid", label: "Grid" },
|
|
28326
|
+
{ id: "compact", label: "Compact" }
|
|
28327
|
+
];
|
|
28328
|
+
function isEventCalendarDisplayMode(value) {
|
|
28329
|
+
return typeof value === "string" && eventCalendarDisplayModeValues.includes(value);
|
|
28330
|
+
}
|
|
28331
|
+
function isEventCalendarListLayout(value) {
|
|
28332
|
+
return typeof value === "string" && eventCalendarListLayoutValues.includes(value);
|
|
28333
|
+
}
|
|
28334
|
+
function isEventContentType(slug) {
|
|
28335
|
+
if (!slug) return false;
|
|
28336
|
+
return EVENT_CONTENT_TYPE_SLUGS.includes(slug);
|
|
28337
|
+
}
|
|
28338
|
+
|
|
28154
28339
|
// ../blocks/src/system/runtime/nodes/events/shared/pricing.ts
|
|
28155
28340
|
var DEFAULT_EVENT_CURRENCY = "USD";
|
|
28156
28341
|
function resolveRuntimeEventPricing(event) {
|
|
@@ -28273,23 +28458,6 @@ function readAmount(value) {
|
|
|
28273
28458
|
|
|
28274
28459
|
// ../blocks/src/system/runtime/nodes/shared/contract-schemas.ts
|
|
28275
28460
|
import { z as z44 } from "zod";
|
|
28276
|
-
|
|
28277
|
-
// ../blocks/src/system/constants/events.ts
|
|
28278
|
-
var eventCalendarDisplayModeValues = ["combined", "month", "week", "list", "timetable"];
|
|
28279
|
-
var eventCalendarListLayoutValues = ["stack", "grid", "compact"];
|
|
28280
|
-
var eventCalendarListLayoutOptions = [
|
|
28281
|
-
{ id: "stack", label: "Stack" },
|
|
28282
|
-
{ id: "grid", label: "Grid" },
|
|
28283
|
-
{ id: "compact", label: "Compact" }
|
|
28284
|
-
];
|
|
28285
|
-
function isEventCalendarDisplayMode(value) {
|
|
28286
|
-
return typeof value === "string" && eventCalendarDisplayModeValues.includes(value);
|
|
28287
|
-
}
|
|
28288
|
-
function isEventCalendarListLayout(value) {
|
|
28289
|
-
return typeof value === "string" && eventCalendarListLayoutValues.includes(value);
|
|
28290
|
-
}
|
|
28291
|
-
|
|
28292
|
-
// ../blocks/src/system/runtime/nodes/shared/contract-schemas.ts
|
|
28293
28461
|
var previewStageSchema = z44.enum(["preview", "published"]);
|
|
28294
28462
|
var registrationButtonVariantSchema = z44.enum(["primary", "secondary", "outline"]);
|
|
28295
28463
|
var eventButtonVariantSchema = z44.enum(["primary", "secondary", "outline", "link"]);
|
|
@@ -28300,13 +28468,64 @@ var weekStartSchema = z44.enum(["sunday", "monday"]);
|
|
|
28300
28468
|
var filterAutoShowSchema = z44.enum(["auto", "always", "never"]);
|
|
28301
28469
|
var calendarTabViewsSchema = z44.enum(["both", "month", "week"]);
|
|
28302
28470
|
|
|
28471
|
+
// ../blocks/src/system/runtime/nodes/event-registration/wizardSteps.ts
|
|
28472
|
+
function getWizardStepsForContext(hasPreSelectedContext, needsPaymentStep) {
|
|
28473
|
+
const baseSteps = hasPreSelectedContext ? ["select-tickets", "enter-details"] : ["select-event", "select-tickets", "enter-details"];
|
|
28474
|
+
if (!needsPaymentStep) {
|
|
28475
|
+
return baseSteps;
|
|
28476
|
+
}
|
|
28477
|
+
return [...baseSteps, "select-payment"];
|
|
28478
|
+
}
|
|
28479
|
+
|
|
28480
|
+
// ../blocks/src/system/runtime/nodes/event-registration/registrationDerivations.ts
|
|
28481
|
+
function eventMatchesOccurrenceId(event, occurrenceId) {
|
|
28482
|
+
return event.registrationOccurrenceId === occurrenceId || event.publicEventId === occurrenceId;
|
|
28483
|
+
}
|
|
28484
|
+
function findPreSelectedEvent(input) {
|
|
28485
|
+
const occurrenceContext = input.occurrenceContext;
|
|
28486
|
+
if (!occurrenceContext) {
|
|
28487
|
+
return null;
|
|
28488
|
+
}
|
|
28489
|
+
const contextDate = getBookingLocalDateKey(toScheduledBookingDateTime({
|
|
28490
|
+
startsAt: occurrenceContext.startsAt,
|
|
28491
|
+
timeZone: occurrenceContext.timeZone
|
|
28492
|
+
}));
|
|
28493
|
+
return input.scopedEvents.find(
|
|
28494
|
+
(event) => eventMatchesOccurrenceId(event, occurrenceContext.id) || getBookingLocalDateKey(toScheduledBookingDateTime({
|
|
28495
|
+
startsAt: event.startsAt,
|
|
28496
|
+
timeZone: event.timeZone
|
|
28497
|
+
})) === contextDate
|
|
28498
|
+
) ?? null;
|
|
28499
|
+
}
|
|
28500
|
+
function resolveEventRequiresPayment(input) {
|
|
28501
|
+
if (input.eligibility) {
|
|
28502
|
+
return input.eligibility.requiresPayment;
|
|
28503
|
+
}
|
|
28504
|
+
if (input.selectedTicketType) {
|
|
28505
|
+
return input.selectedTicketType.priceAmount > 0;
|
|
28506
|
+
}
|
|
28507
|
+
if (!input.event) {
|
|
28508
|
+
return false;
|
|
28509
|
+
}
|
|
28510
|
+
return publicEventPricingType(resolveRuntimeEventPricing(input.event)) !== "free";
|
|
28511
|
+
}
|
|
28512
|
+
|
|
28513
|
+
// ../blocks/src/system/runtime/nodes/event-registration/registrationEventAdapter.ts
|
|
28514
|
+
function toRegistrationEvent(event) {
|
|
28515
|
+
return {
|
|
28516
|
+
...event,
|
|
28517
|
+
pricing: resolveRuntimeEventPricing(event),
|
|
28518
|
+
publicEventId: event.id,
|
|
28519
|
+
registrationOccurrenceId: event.occurrenceId
|
|
28520
|
+
};
|
|
28521
|
+
}
|
|
28522
|
+
function toRegistrationEvents(events) {
|
|
28523
|
+
return events.map(toRegistrationEvent);
|
|
28524
|
+
}
|
|
28525
|
+
|
|
28303
28526
|
// ../blocks/src/system/runtime/nodes/event-registration.interactive.ts
|
|
28304
28527
|
var EVENT_REGISTRATION_GENERIC_SHELL_STEP_LABELS = ["Date", "Tickets", "Details"];
|
|
28305
|
-
var [
|
|
28306
|
-
eventRegistrationGenericDateStepLabel,
|
|
28307
|
-
eventRegistrationGenericTicketsStepLabel,
|
|
28308
|
-
eventRegistrationGenericDetailsStepLabel
|
|
28309
|
-
] = EVENT_REGISTRATION_GENERIC_SHELL_STEP_LABELS;
|
|
28528
|
+
var EVENT_REGISTRATION_SHELL_STEP_LABELS = ["Event", "Date", "Tickets", "Details", "Payment"];
|
|
28310
28529
|
var contentEntrySchema = z45.object({
|
|
28311
28530
|
id: z45.string(),
|
|
28312
28531
|
slug: z45.string(),
|
|
@@ -28342,11 +28561,7 @@ var eventRegistrationDisplaySchema = z45.object({
|
|
|
28342
28561
|
className: z45.string().nullable(),
|
|
28343
28562
|
titleText: z45.string(),
|
|
28344
28563
|
bodyText: z45.string(),
|
|
28345
|
-
stepLabels: z45.
|
|
28346
|
-
z45.literal(eventRegistrationGenericDateStepLabel),
|
|
28347
|
-
z45.literal(eventRegistrationGenericTicketsStepLabel),
|
|
28348
|
-
z45.literal(eventRegistrationGenericDetailsStepLabel)
|
|
28349
|
-
]),
|
|
28564
|
+
stepLabels: z45.array(z45.enum(EVENT_REGISTRATION_SHELL_STEP_LABELS)).min(1),
|
|
28350
28565
|
summaryButtonText: z45.string()
|
|
28351
28566
|
});
|
|
28352
28567
|
var eventRegistrationHydrationSchema = z45.object({
|
|
@@ -28381,16 +28596,81 @@ var eventRegistrationIslandMetaKeys = defineInteractiveIslandMetaKeys(
|
|
|
28381
28596
|
"stage"
|
|
28382
28597
|
);
|
|
28383
28598
|
function buildEventRegistrationDisplay(source) {
|
|
28599
|
+
const stepLabels = buildEventRegistrationShellStepLabels(source);
|
|
28384
28600
|
return {
|
|
28385
28601
|
kind: "event-registration",
|
|
28386
28602
|
state: "generic-shell",
|
|
28387
28603
|
className: source.className ?? null,
|
|
28388
28604
|
titleText: "Event registration",
|
|
28389
|
-
bodyText:
|
|
28390
|
-
stepLabels
|
|
28605
|
+
bodyText: buildEventRegistrationShellBodyText(stepLabels),
|
|
28606
|
+
stepLabels,
|
|
28391
28607
|
summaryButtonText: source.buttonText?.trim() || "Register"
|
|
28392
28608
|
};
|
|
28393
28609
|
}
|
|
28610
|
+
function buildEventRegistrationShellStepLabels(source) {
|
|
28611
|
+
const scopedEvents = scopeEventRegistrationEvents(source);
|
|
28612
|
+
if (scopedEvents.length === 0) {
|
|
28613
|
+
return EVENT_REGISTRATION_GENERIC_SHELL_STEP_LABELS;
|
|
28614
|
+
}
|
|
28615
|
+
const preSelectedEvent = findPreSelectedEvent({
|
|
28616
|
+
scopedEvents,
|
|
28617
|
+
occurrenceContext: source.occurrenceContext
|
|
28618
|
+
});
|
|
28619
|
+
const hasPreSelectedContext = Boolean(source.occurrenceContext || preSelectedEvent);
|
|
28620
|
+
const needsPaymentStep = hasPreSelectedContext && preSelectedEvent ? resolveEventRequiresPayment({
|
|
28621
|
+
eligibility: null,
|
|
28622
|
+
selectedTicketType: null,
|
|
28623
|
+
event: preSelectedEvent
|
|
28624
|
+
}) : false;
|
|
28625
|
+
return getWizardStepsForContext(hasPreSelectedContext, needsPaymentStep).map((step) => shellLabelForRegistrationStep(step, scopedEvents));
|
|
28626
|
+
}
|
|
28627
|
+
function scopeEventRegistrationEvents(source) {
|
|
28628
|
+
const events = toRegistrationEvents(source.events ?? []);
|
|
28629
|
+
if (source.occurrenceContext?.seriesId) {
|
|
28630
|
+
return events.filter((event) => event.seriesId === source.occurrenceContext?.seriesId);
|
|
28631
|
+
}
|
|
28632
|
+
const entrySlug = source.contentEntry?.slug;
|
|
28633
|
+
const entryContentType = source.contentEntry?.contentTypeSlug;
|
|
28634
|
+
if (entrySlug && entryContentType && isEventContentType(entryContentType)) {
|
|
28635
|
+
return events.filter((event) => event.slug === entrySlug);
|
|
28636
|
+
}
|
|
28637
|
+
return events;
|
|
28638
|
+
}
|
|
28639
|
+
function shellLabelForRegistrationStep(step, events) {
|
|
28640
|
+
switch (step) {
|
|
28641
|
+
case "select-event":
|
|
28642
|
+
return isDateSelection(events) ? "Date" : "Event";
|
|
28643
|
+
case "select-tickets":
|
|
28644
|
+
return "Tickets";
|
|
28645
|
+
case "enter-details":
|
|
28646
|
+
return "Details";
|
|
28647
|
+
case "select-payment":
|
|
28648
|
+
return "Payment";
|
|
28649
|
+
case "error":
|
|
28650
|
+
case "success":
|
|
28651
|
+
case "submitting":
|
|
28652
|
+
case "redirecting":
|
|
28653
|
+
case "verifying-payment":
|
|
28654
|
+
case "verifying-timeout":
|
|
28655
|
+
case "payment-failed":
|
|
28656
|
+
return "Details";
|
|
28657
|
+
}
|
|
28658
|
+
}
|
|
28659
|
+
function isDateSelection(events) {
|
|
28660
|
+
const firstSeriesId = events[0]?.seriesId;
|
|
28661
|
+
return Boolean(
|
|
28662
|
+
events.length > 1 && firstSeriesId && events.every((event) => event.seriesId === firstSeriesId)
|
|
28663
|
+
);
|
|
28664
|
+
}
|
|
28665
|
+
function buildEventRegistrationShellBodyText(stepLabels) {
|
|
28666
|
+
if (stepLabels.includes("Payment")) {
|
|
28667
|
+
return "Preparing tickets, details, and payment options.";
|
|
28668
|
+
}
|
|
28669
|
+
if (stepLabels[0] === "Tickets") {
|
|
28670
|
+
return "Preparing tickets and booking details.";
|
|
28671
|
+
}
|
|
28672
|
+
return "Preparing dates, tickets, and booking details.";
|
|
28673
|
+
}
|
|
28394
28674
|
var eventRegistrationBlockRuntime = defineClientOwnedBlockRuntime({
|
|
28395
28675
|
kind: "client-owned",
|
|
28396
28676
|
contracts: {
|