@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
|
@@ -48,6 +48,171 @@ function formatKeyAsLabel(key) {
|
|
|
48
48
|
// ../blocks/src/system/manifest/schema.ts
|
|
49
49
|
import { z as z2 } from "zod";
|
|
50
50
|
|
|
51
|
+
// ../core/src/result.ts
|
|
52
|
+
function ok(value) {
|
|
53
|
+
return { ok: true, value };
|
|
54
|
+
}
|
|
55
|
+
function err(error) {
|
|
56
|
+
return { ok: false, error };
|
|
57
|
+
}
|
|
58
|
+
|
|
59
|
+
// ../core/src/event-pricing.ts
|
|
60
|
+
function publicEventPricingType(pricing) {
|
|
61
|
+
switch (pricing.kind) {
|
|
62
|
+
case "drop_in":
|
|
63
|
+
case "free_registration":
|
|
64
|
+
return "free";
|
|
65
|
+
case "single_paid":
|
|
66
|
+
case "ticket_types":
|
|
67
|
+
case "course":
|
|
68
|
+
return isFreePublicEventPriceDisplay(pricing.display) ? "free" : "paid";
|
|
69
|
+
}
|
|
70
|
+
}
|
|
71
|
+
function isFreePublicEventPriceDisplay(display) {
|
|
72
|
+
switch (display.kind) {
|
|
73
|
+
case "free":
|
|
74
|
+
return true;
|
|
75
|
+
case "course":
|
|
76
|
+
return display.display.kind === "free";
|
|
77
|
+
case "exact":
|
|
78
|
+
case "from":
|
|
79
|
+
case "mixed":
|
|
80
|
+
case "unavailable":
|
|
81
|
+
return false;
|
|
82
|
+
}
|
|
83
|
+
}
|
|
84
|
+
|
|
85
|
+
// ../core/src/booking-date-time.ts
|
|
86
|
+
var DEFAULT_LOCALE = "en-US";
|
|
87
|
+
var FALLBACK_TIMEZONE = "UTC";
|
|
88
|
+
function isValidTimeZone(timeZone) {
|
|
89
|
+
try {
|
|
90
|
+
new Intl.DateTimeFormat(DEFAULT_LOCALE, { timeZone }).format(/* @__PURE__ */ new Date());
|
|
91
|
+
return true;
|
|
92
|
+
} catch {
|
|
93
|
+
return false;
|
|
94
|
+
}
|
|
95
|
+
}
|
|
96
|
+
function getSafeTimeZone(timeZone) {
|
|
97
|
+
const normalized = typeof timeZone === "string" ? timeZone.trim() : "";
|
|
98
|
+
return normalized && isValidTimeZone(normalized) ? normalized : FALLBACK_TIMEZONE;
|
|
99
|
+
}
|
|
100
|
+
function parseStrictBookingTimeZone(timeZone) {
|
|
101
|
+
const normalized = timeZone.trim();
|
|
102
|
+
if (!normalized || !isValidTimeZone(normalized)) {
|
|
103
|
+
return null;
|
|
104
|
+
}
|
|
105
|
+
return normalized;
|
|
106
|
+
}
|
|
107
|
+
function formatParseError(error) {
|
|
108
|
+
switch (error.reason) {
|
|
109
|
+
case "invalid_starts_at":
|
|
110
|
+
return `Expected a valid UTC/offset-aware ISO datetime in startsAt, received "${error.value}"`;
|
|
111
|
+
case "invalid_ends_at":
|
|
112
|
+
return `Expected a valid UTC/offset-aware ISO datetime in endsAt, received "${error.value ?? ""}"`;
|
|
113
|
+
case "invalid_time_zone":
|
|
114
|
+
return `Expected a valid IANA timezone in timeZone, received "${error.value}"`;
|
|
115
|
+
}
|
|
116
|
+
}
|
|
117
|
+
function formatToPartsLookup(date, locale, timeZone, format) {
|
|
118
|
+
return new Map(
|
|
119
|
+
new Intl.DateTimeFormat(locale, {
|
|
120
|
+
...format,
|
|
121
|
+
timeZone
|
|
122
|
+
}).formatToParts(date).map((part) => [part.type, part.value])
|
|
123
|
+
);
|
|
124
|
+
}
|
|
125
|
+
function getZonedDateTimeParts(date, timeZone) {
|
|
126
|
+
const parts = formatToPartsLookup(date, "en-GB", timeZone, {
|
|
127
|
+
year: "numeric",
|
|
128
|
+
month: "2-digit",
|
|
129
|
+
day: "2-digit",
|
|
130
|
+
hour: "2-digit",
|
|
131
|
+
minute: "2-digit",
|
|
132
|
+
second: "2-digit",
|
|
133
|
+
hour12: false
|
|
134
|
+
});
|
|
135
|
+
const read = (type) => Number(parts.get(type) ?? "");
|
|
136
|
+
return {
|
|
137
|
+
year: read("year"),
|
|
138
|
+
month: read("month"),
|
|
139
|
+
day: read("day"),
|
|
140
|
+
hour: read("hour"),
|
|
141
|
+
minute: read("minute"),
|
|
142
|
+
second: read("second")
|
|
143
|
+
};
|
|
144
|
+
}
|
|
145
|
+
function formatDateKey(date) {
|
|
146
|
+
const year = String(date.year).padStart(4, "0");
|
|
147
|
+
const month = String(date.month).padStart(2, "0");
|
|
148
|
+
const day = String(date.day).padStart(2, "0");
|
|
149
|
+
return `${year}-${month}-${day}`;
|
|
150
|
+
}
|
|
151
|
+
function parseUtcIsoDateTimeString(value) {
|
|
152
|
+
const normalized = value.trim();
|
|
153
|
+
const hasUtcSuffix = normalized.endsWith("Z");
|
|
154
|
+
const hasExplicitOffset = /[+-]\d{2}:\d{2}$/u.test(normalized);
|
|
155
|
+
if (!hasUtcSuffix && !hasExplicitOffset) {
|
|
156
|
+
return err("missing-timezone-offset");
|
|
157
|
+
}
|
|
158
|
+
const date = new Date(normalized);
|
|
159
|
+
if (Number.isNaN(date.getTime())) {
|
|
160
|
+
return err("invalid-date-time");
|
|
161
|
+
}
|
|
162
|
+
return ok(date.toISOString());
|
|
163
|
+
}
|
|
164
|
+
function toUtcIsoDateTimeString(value) {
|
|
165
|
+
const parsed = parseUtcIsoDateTimeString(value);
|
|
166
|
+
if (!parsed.ok) {
|
|
167
|
+
const message = parsed.error === "missing-timezone-offset" ? `Expected an offset-aware ISO datetime, received "${value}"` : `Expected a valid ISO datetime, received "${value}"`;
|
|
168
|
+
throw new Error(message);
|
|
169
|
+
}
|
|
170
|
+
return parsed.value;
|
|
171
|
+
}
|
|
172
|
+
function parseScheduledBookingDateTime(input) {
|
|
173
|
+
try {
|
|
174
|
+
const startsAt = toUtcIsoDateTimeString(input.startsAt);
|
|
175
|
+
const timeZone = parseStrictBookingTimeZone(input.timeZone);
|
|
176
|
+
if (!timeZone) {
|
|
177
|
+
return {
|
|
178
|
+
ok: false,
|
|
179
|
+
field: "timeZone",
|
|
180
|
+
reason: "invalid_time_zone",
|
|
181
|
+
value: input.timeZone
|
|
182
|
+
};
|
|
183
|
+
}
|
|
184
|
+
return {
|
|
185
|
+
ok: true,
|
|
186
|
+
value: {
|
|
187
|
+
startsAt,
|
|
188
|
+
timeZone,
|
|
189
|
+
locale: input.locale
|
|
190
|
+
}
|
|
191
|
+
};
|
|
192
|
+
} catch {
|
|
193
|
+
return {
|
|
194
|
+
ok: false,
|
|
195
|
+
field: "startsAt",
|
|
196
|
+
reason: "invalid_starts_at",
|
|
197
|
+
value: input.startsAt
|
|
198
|
+
};
|
|
199
|
+
}
|
|
200
|
+
}
|
|
201
|
+
function toScheduledBookingDateTime(input) {
|
|
202
|
+
const result = parseScheduledBookingDateTime(input);
|
|
203
|
+
if (result.ok) {
|
|
204
|
+
return result.value;
|
|
205
|
+
}
|
|
206
|
+
throw new Error(formatParseError(result));
|
|
207
|
+
}
|
|
208
|
+
function getBookingLocalDateKey(input) {
|
|
209
|
+
return formatDateKey(getLocalScheduleDate(new Date(input.startsAt), input.timeZone));
|
|
210
|
+
}
|
|
211
|
+
function getLocalScheduleDate(date, timeZone) {
|
|
212
|
+
const parts = getZonedDateTimeParts(date, getSafeTimeZone(timeZone));
|
|
213
|
+
return { year: parts.year, month: parts.month, day: parts.day };
|
|
214
|
+
}
|
|
215
|
+
|
|
51
216
|
// ../core/src/location.ts
|
|
52
217
|
function normalizeLocationAddressText(value) {
|
|
53
218
|
if (typeof value !== "string") {
|
|
@@ -2708,9 +2873,9 @@ var _Vibrant = class _Vibrant2 {
|
|
|
2708
2873
|
}
|
|
2709
2874
|
image.remove();
|
|
2710
2875
|
return res;
|
|
2711
|
-
} catch (
|
|
2876
|
+
} catch (err2) {
|
|
2712
2877
|
image.remove();
|
|
2713
|
-
return Promise.reject(
|
|
2878
|
+
return Promise.reject(err2);
|
|
2714
2879
|
}
|
|
2715
2880
|
}
|
|
2716
2881
|
async getPalettes() {
|
|
@@ -2724,9 +2889,9 @@ var _Vibrant = class _Vibrant2 {
|
|
|
2724
2889
|
const res = result1.palettes;
|
|
2725
2890
|
image.remove();
|
|
2726
2891
|
return res;
|
|
2727
|
-
} catch (
|
|
2892
|
+
} catch (err2) {
|
|
2728
2893
|
image.remove();
|
|
2729
|
-
return Promise.reject(
|
|
2894
|
+
return Promise.reject(err2);
|
|
2730
2895
|
}
|
|
2731
2896
|
}
|
|
2732
2897
|
};
|
|
@@ -19392,6 +19557,26 @@ var occurrenceContextSchema = z36.object({
|
|
|
19392
19557
|
// ../blocks/src/system/runtime/nodes/event-registration.interactive.ts
|
|
19393
19558
|
import { z as z38 } from "zod";
|
|
19394
19559
|
|
|
19560
|
+
// ../blocks/src/system/constants/events.ts
|
|
19561
|
+
var EVENT_CONTENT_TYPE_SLUGS = ["event", "events"];
|
|
19562
|
+
var eventCalendarDisplayModeValues = ["combined", "month", "week", "list", "timetable"];
|
|
19563
|
+
var eventCalendarListLayoutValues = ["stack", "grid", "compact"];
|
|
19564
|
+
var eventCalendarListLayoutOptions = [
|
|
19565
|
+
{ id: "stack", label: "Stack" },
|
|
19566
|
+
{ id: "grid", label: "Grid" },
|
|
19567
|
+
{ id: "compact", label: "Compact" }
|
|
19568
|
+
];
|
|
19569
|
+
function isEventCalendarDisplayMode(value) {
|
|
19570
|
+
return typeof value === "string" && eventCalendarDisplayModeValues.includes(value);
|
|
19571
|
+
}
|
|
19572
|
+
function isEventCalendarListLayout(value) {
|
|
19573
|
+
return typeof value === "string" && eventCalendarListLayoutValues.includes(value);
|
|
19574
|
+
}
|
|
19575
|
+
function isEventContentType(slug) {
|
|
19576
|
+
if (!slug) return false;
|
|
19577
|
+
return EVENT_CONTENT_TYPE_SLUGS.includes(slug);
|
|
19578
|
+
}
|
|
19579
|
+
|
|
19395
19580
|
// ../blocks/src/system/runtime/nodes/events/shared/pricing.ts
|
|
19396
19581
|
var DEFAULT_EVENT_CURRENCY = "USD";
|
|
19397
19582
|
function resolveRuntimeEventPricing(event) {
|
|
@@ -19514,23 +19699,6 @@ function readAmount(value) {
|
|
|
19514
19699
|
|
|
19515
19700
|
// ../blocks/src/system/runtime/nodes/shared/contract-schemas.ts
|
|
19516
19701
|
import { z as z37 } from "zod";
|
|
19517
|
-
|
|
19518
|
-
// ../blocks/src/system/constants/events.ts
|
|
19519
|
-
var eventCalendarDisplayModeValues = ["combined", "month", "week", "list", "timetable"];
|
|
19520
|
-
var eventCalendarListLayoutValues = ["stack", "grid", "compact"];
|
|
19521
|
-
var eventCalendarListLayoutOptions = [
|
|
19522
|
-
{ id: "stack", label: "Stack" },
|
|
19523
|
-
{ id: "grid", label: "Grid" },
|
|
19524
|
-
{ id: "compact", label: "Compact" }
|
|
19525
|
-
];
|
|
19526
|
-
function isEventCalendarDisplayMode(value) {
|
|
19527
|
-
return typeof value === "string" && eventCalendarDisplayModeValues.includes(value);
|
|
19528
|
-
}
|
|
19529
|
-
function isEventCalendarListLayout(value) {
|
|
19530
|
-
return typeof value === "string" && eventCalendarListLayoutValues.includes(value);
|
|
19531
|
-
}
|
|
19532
|
-
|
|
19533
|
-
// ../blocks/src/system/runtime/nodes/shared/contract-schemas.ts
|
|
19534
19702
|
var previewStageSchema = z37.enum(["preview", "published"]);
|
|
19535
19703
|
var registrationButtonVariantSchema = z37.enum(["primary", "secondary", "outline"]);
|
|
19536
19704
|
var eventButtonVariantSchema = z37.enum(["primary", "secondary", "outline", "link"]);
|
|
@@ -19541,13 +19709,64 @@ var weekStartSchema = z37.enum(["sunday", "monday"]);
|
|
|
19541
19709
|
var filterAutoShowSchema = z37.enum(["auto", "always", "never"]);
|
|
19542
19710
|
var calendarTabViewsSchema = z37.enum(["both", "month", "week"]);
|
|
19543
19711
|
|
|
19712
|
+
// ../blocks/src/system/runtime/nodes/event-registration/wizardSteps.ts
|
|
19713
|
+
function getWizardStepsForContext(hasPreSelectedContext, needsPaymentStep) {
|
|
19714
|
+
const baseSteps = hasPreSelectedContext ? ["select-tickets", "enter-details"] : ["select-event", "select-tickets", "enter-details"];
|
|
19715
|
+
if (!needsPaymentStep) {
|
|
19716
|
+
return baseSteps;
|
|
19717
|
+
}
|
|
19718
|
+
return [...baseSteps, "select-payment"];
|
|
19719
|
+
}
|
|
19720
|
+
|
|
19721
|
+
// ../blocks/src/system/runtime/nodes/event-registration/registrationDerivations.ts
|
|
19722
|
+
function eventMatchesOccurrenceId(event, occurrenceId) {
|
|
19723
|
+
return event.registrationOccurrenceId === occurrenceId || event.publicEventId === occurrenceId;
|
|
19724
|
+
}
|
|
19725
|
+
function findPreSelectedEvent(input) {
|
|
19726
|
+
const occurrenceContext = input.occurrenceContext;
|
|
19727
|
+
if (!occurrenceContext) {
|
|
19728
|
+
return null;
|
|
19729
|
+
}
|
|
19730
|
+
const contextDate = getBookingLocalDateKey(toScheduledBookingDateTime({
|
|
19731
|
+
startsAt: occurrenceContext.startsAt,
|
|
19732
|
+
timeZone: occurrenceContext.timeZone
|
|
19733
|
+
}));
|
|
19734
|
+
return input.scopedEvents.find(
|
|
19735
|
+
(event) => eventMatchesOccurrenceId(event, occurrenceContext.id) || getBookingLocalDateKey(toScheduledBookingDateTime({
|
|
19736
|
+
startsAt: event.startsAt,
|
|
19737
|
+
timeZone: event.timeZone
|
|
19738
|
+
})) === contextDate
|
|
19739
|
+
) ?? null;
|
|
19740
|
+
}
|
|
19741
|
+
function resolveEventRequiresPayment(input) {
|
|
19742
|
+
if (input.eligibility) {
|
|
19743
|
+
return input.eligibility.requiresPayment;
|
|
19744
|
+
}
|
|
19745
|
+
if (input.selectedTicketType) {
|
|
19746
|
+
return input.selectedTicketType.priceAmount > 0;
|
|
19747
|
+
}
|
|
19748
|
+
if (!input.event) {
|
|
19749
|
+
return false;
|
|
19750
|
+
}
|
|
19751
|
+
return publicEventPricingType(resolveRuntimeEventPricing(input.event)) !== "free";
|
|
19752
|
+
}
|
|
19753
|
+
|
|
19754
|
+
// ../blocks/src/system/runtime/nodes/event-registration/registrationEventAdapter.ts
|
|
19755
|
+
function toRegistrationEvent(event) {
|
|
19756
|
+
return {
|
|
19757
|
+
...event,
|
|
19758
|
+
pricing: resolveRuntimeEventPricing(event),
|
|
19759
|
+
publicEventId: event.id,
|
|
19760
|
+
registrationOccurrenceId: event.occurrenceId
|
|
19761
|
+
};
|
|
19762
|
+
}
|
|
19763
|
+
function toRegistrationEvents(events) {
|
|
19764
|
+
return events.map(toRegistrationEvent);
|
|
19765
|
+
}
|
|
19766
|
+
|
|
19544
19767
|
// ../blocks/src/system/runtime/nodes/event-registration.interactive.ts
|
|
19545
19768
|
var EVENT_REGISTRATION_GENERIC_SHELL_STEP_LABELS = ["Date", "Tickets", "Details"];
|
|
19546
|
-
var [
|
|
19547
|
-
eventRegistrationGenericDateStepLabel,
|
|
19548
|
-
eventRegistrationGenericTicketsStepLabel,
|
|
19549
|
-
eventRegistrationGenericDetailsStepLabel
|
|
19550
|
-
] = EVENT_REGISTRATION_GENERIC_SHELL_STEP_LABELS;
|
|
19769
|
+
var EVENT_REGISTRATION_SHELL_STEP_LABELS = ["Event", "Date", "Tickets", "Details", "Payment"];
|
|
19551
19770
|
var contentEntrySchema = z38.object({
|
|
19552
19771
|
id: z38.string(),
|
|
19553
19772
|
slug: z38.string(),
|
|
@@ -19583,11 +19802,7 @@ var eventRegistrationDisplaySchema = z38.object({
|
|
|
19583
19802
|
className: z38.string().nullable(),
|
|
19584
19803
|
titleText: z38.string(),
|
|
19585
19804
|
bodyText: z38.string(),
|
|
19586
|
-
stepLabels: z38.
|
|
19587
|
-
z38.literal(eventRegistrationGenericDateStepLabel),
|
|
19588
|
-
z38.literal(eventRegistrationGenericTicketsStepLabel),
|
|
19589
|
-
z38.literal(eventRegistrationGenericDetailsStepLabel)
|
|
19590
|
-
]),
|
|
19805
|
+
stepLabels: z38.array(z38.enum(EVENT_REGISTRATION_SHELL_STEP_LABELS)).min(1),
|
|
19591
19806
|
summaryButtonText: z38.string()
|
|
19592
19807
|
});
|
|
19593
19808
|
var eventRegistrationHydrationSchema = z38.object({
|
|
@@ -19622,16 +19837,81 @@ var eventRegistrationIslandMetaKeys = defineInteractiveIslandMetaKeys(
|
|
|
19622
19837
|
"stage"
|
|
19623
19838
|
);
|
|
19624
19839
|
function buildEventRegistrationDisplay(source) {
|
|
19840
|
+
const stepLabels = buildEventRegistrationShellStepLabels(source);
|
|
19625
19841
|
return {
|
|
19626
19842
|
kind: "event-registration",
|
|
19627
19843
|
state: "generic-shell",
|
|
19628
19844
|
className: source.className ?? null,
|
|
19629
19845
|
titleText: "Event registration",
|
|
19630
|
-
bodyText:
|
|
19631
|
-
stepLabels
|
|
19846
|
+
bodyText: buildEventRegistrationShellBodyText(stepLabels),
|
|
19847
|
+
stepLabels,
|
|
19632
19848
|
summaryButtonText: source.buttonText?.trim() || "Register"
|
|
19633
19849
|
};
|
|
19634
19850
|
}
|
|
19851
|
+
function buildEventRegistrationShellStepLabels(source) {
|
|
19852
|
+
const scopedEvents = scopeEventRegistrationEvents(source);
|
|
19853
|
+
if (scopedEvents.length === 0) {
|
|
19854
|
+
return EVENT_REGISTRATION_GENERIC_SHELL_STEP_LABELS;
|
|
19855
|
+
}
|
|
19856
|
+
const preSelectedEvent = findPreSelectedEvent({
|
|
19857
|
+
scopedEvents,
|
|
19858
|
+
occurrenceContext: source.occurrenceContext
|
|
19859
|
+
});
|
|
19860
|
+
const hasPreSelectedContext = Boolean(source.occurrenceContext || preSelectedEvent);
|
|
19861
|
+
const needsPaymentStep = hasPreSelectedContext && preSelectedEvent ? resolveEventRequiresPayment({
|
|
19862
|
+
eligibility: null,
|
|
19863
|
+
selectedTicketType: null,
|
|
19864
|
+
event: preSelectedEvent
|
|
19865
|
+
}) : false;
|
|
19866
|
+
return getWizardStepsForContext(hasPreSelectedContext, needsPaymentStep).map((step) => shellLabelForRegistrationStep(step, scopedEvents));
|
|
19867
|
+
}
|
|
19868
|
+
function scopeEventRegistrationEvents(source) {
|
|
19869
|
+
const events = toRegistrationEvents(source.events ?? []);
|
|
19870
|
+
if (source.occurrenceContext?.seriesId) {
|
|
19871
|
+
return events.filter((event) => event.seriesId === source.occurrenceContext?.seriesId);
|
|
19872
|
+
}
|
|
19873
|
+
const entrySlug = source.contentEntry?.slug;
|
|
19874
|
+
const entryContentType = source.contentEntry?.contentTypeSlug;
|
|
19875
|
+
if (entrySlug && entryContentType && isEventContentType(entryContentType)) {
|
|
19876
|
+
return events.filter((event) => event.slug === entrySlug);
|
|
19877
|
+
}
|
|
19878
|
+
return events;
|
|
19879
|
+
}
|
|
19880
|
+
function shellLabelForRegistrationStep(step, events) {
|
|
19881
|
+
switch (step) {
|
|
19882
|
+
case "select-event":
|
|
19883
|
+
return isDateSelection(events) ? "Date" : "Event";
|
|
19884
|
+
case "select-tickets":
|
|
19885
|
+
return "Tickets";
|
|
19886
|
+
case "enter-details":
|
|
19887
|
+
return "Details";
|
|
19888
|
+
case "select-payment":
|
|
19889
|
+
return "Payment";
|
|
19890
|
+
case "error":
|
|
19891
|
+
case "success":
|
|
19892
|
+
case "submitting":
|
|
19893
|
+
case "redirecting":
|
|
19894
|
+
case "verifying-payment":
|
|
19895
|
+
case "verifying-timeout":
|
|
19896
|
+
case "payment-failed":
|
|
19897
|
+
return "Details";
|
|
19898
|
+
}
|
|
19899
|
+
}
|
|
19900
|
+
function isDateSelection(events) {
|
|
19901
|
+
const firstSeriesId = events[0]?.seriesId;
|
|
19902
|
+
return Boolean(
|
|
19903
|
+
events.length > 1 && firstSeriesId && events.every((event) => event.seriesId === firstSeriesId)
|
|
19904
|
+
);
|
|
19905
|
+
}
|
|
19906
|
+
function buildEventRegistrationShellBodyText(stepLabels) {
|
|
19907
|
+
if (stepLabels.includes("Payment")) {
|
|
19908
|
+
return "Preparing tickets, details, and payment options.";
|
|
19909
|
+
}
|
|
19910
|
+
if (stepLabels[0] === "Tickets") {
|
|
19911
|
+
return "Preparing tickets and booking details.";
|
|
19912
|
+
}
|
|
19913
|
+
return "Preparing dates, tickets, and booking details.";
|
|
19914
|
+
}
|
|
19635
19915
|
var eventRegistrationBlockRuntime = defineClientOwnedBlockRuntime({
|
|
19636
19916
|
kind: "client-owned",
|
|
19637
19917
|
contracts: {
|
|
@@ -27654,8 +27934,8 @@ async function getJsonFromAiText(ai, config, userMessage, schema) {
|
|
|
27654
27934
|
let json;
|
|
27655
27935
|
try {
|
|
27656
27936
|
json = JSON.parse(textToParse);
|
|
27657
|
-
} catch (
|
|
27658
|
-
const msg =
|
|
27937
|
+
} catch (err2) {
|
|
27938
|
+
const msg = err2 instanceof Error ? err2.message : String(err2);
|
|
27659
27939
|
throw new AiValidationError(`NON_JSON_RESPONSE: ${msg}`, rawText, null);
|
|
27660
27940
|
}
|
|
27661
27941
|
const result = schema.safeParse(json);
|