@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
|
@@ -1,14 +1,14 @@
|
|
|
1
1
|
"use client";
|
|
2
|
-
import { addPassToCommerceCart, useCommerceCart } from './chunk-
|
|
3
|
-
import { CarouselNodeClient } from './chunk-
|
|
2
|
+
import { addPassToCommerceCart, useCommerceCart } from './chunk-F5VRX5Y6.mjs';
|
|
3
|
+
import { CarouselNodeClient } from './chunk-4OXKTA3D.mjs';
|
|
4
4
|
import { isRecord } from './chunk-I2MMZO53.mjs';
|
|
5
5
|
import { useDiscountCodeUi } from './chunk-ZFHRN6W2.mjs';
|
|
6
6
|
import { buildRouteIslandApiConfig } from './chunk-L4J5Y62O.mjs';
|
|
7
|
-
import { createBodyThemePortalRoot, consumeSearchParams, scrollToBlock, TerminalPanel, StateIcon, CheckIcon, CrossIcon, ActionRow, DiscountCodeDisclosure, consumeSearchParam, buildCheckoutReturnUrls } from './chunk-
|
|
7
|
+
import { createBodyThemePortalRoot, consumeSearchParams, scrollToBlock, TerminalPanel, StateIcon, CheckIcon, CrossIcon, ActionRow, DiscountCodeDisclosure, consumeSearchParam, buildCheckoutReturnUrls } from './chunk-7UCLJ5SP.mjs';
|
|
8
8
|
import { ModalShell, resolveDedicatedCheckoutPath } from './chunk-DVNUDUVT.mjs';
|
|
9
9
|
import { useBlockApi, FeedbackMessage, BlockApiProvider } from './chunk-UDNSI5PY.mjs';
|
|
10
10
|
import { mountReactIsland } from './chunk-N7PBWBWQ.mjs';
|
|
11
|
-
import { themeButtonClassName, formatCommercePrice, formatInterval, getShopDisplayForItems, deriveCommerceCheckoutState, buildProductDetailDisplay, productItemKey, buildProductCartItem, buildProductCardDisplay, assertNever11, reportWorkflowError, clearWorkflowFeedback } from './chunk-
|
|
11
|
+
import { themeButtonClassName, formatCommercePrice, formatInterval, getShopDisplayForItems, deriveCommerceCheckoutState, buildProductDetailDisplay, productItemKey, buildProductCartItem, buildProductCardDisplay, assertNever11, reportWorkflowError, clearWorkflowFeedback } from './chunk-VGDBVNOO.mjs';
|
|
12
12
|
import { assertNever, ok, err, getCurrentResolveImageUrlContext, resolveImageUrlWithContext, ImagePresets } from './chunk-ZE5G642V.mjs';
|
|
13
13
|
import * as React3 from 'react';
|
|
14
14
|
import React3__default, { useState, useRef, useCallback, useEffect } from 'react';
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { FeedbackMessage } from './chunk-UDNSI5PY.mjs';
|
|
2
|
-
import { themeButtonClassName } from './chunk-
|
|
2
|
+
import { themeButtonClassName } from './chunk-VGDBVNOO.mjs';
|
|
3
3
|
import { clsx_default } from './chunk-ZE5G642V.mjs';
|
|
4
4
|
import { useId } from 'react';
|
|
5
5
|
import { jsx, jsxs, Fragment } from 'react/jsx-runtime';
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { EMPTY_COMMERCE_CART_STATE, parseStoredCommerceCartState, reduceCommerceCart, buildPassCartItem } from './chunk-
|
|
1
|
+
import { EMPTY_COMMERCE_CART_STATE, parseStoredCommerceCartState, reduceCommerceCart, buildPassCartItem } from './chunk-VGDBVNOO.mjs';
|
|
2
2
|
import * as React from 'react';
|
|
3
3
|
|
|
4
4
|
var EMPTY_STATE = EMPTY_COMMERCE_CART_STATE;
|
|
@@ -1,15 +1,15 @@
|
|
|
1
1
|
"use client";
|
|
2
2
|
import { LeafletStaticMap } from './chunk-XSV6KW4D.mjs';
|
|
3
|
-
import { MagicLinkForm, useWaitlistClaim } from './chunk-
|
|
4
|
-
import { usePolling } from './chunk-
|
|
3
|
+
import { MagicLinkForm, useWaitlistClaim } from './chunk-3DTWLTXM.mjs';
|
|
4
|
+
import { usePolling } from './chunk-ZKUO52W3.mjs';
|
|
5
5
|
import { SpinnerNode } from './chunk-SYIJ5JO2.mjs';
|
|
6
6
|
import { useDiscountCodeUi } from './chunk-ZFHRN6W2.mjs';
|
|
7
|
-
import { createBodyThemePortalRoot, TabBarFragment, logoutPortal, StepIndicator, DiscountCodeDisclosure, TerminalPanel, StateIcon, formatPrice, CrossIcon, ClockIcon, consumeSearchParam, LoggedInAsUser, CheckIcon } from './chunk-
|
|
7
|
+
import { createBodyThemePortalRoot, TabBarFragment, logoutPortal, StepIndicator, DiscountCodeDisclosure, TerminalPanel, StateIcon, formatPrice, CrossIcon, ClockIcon, consumeSearchParam, LoggedInAsUser, CheckIcon } from './chunk-7UCLJ5SP.mjs';
|
|
8
8
|
import { getFieldValidationControlProps, FieldValidationMessage } from './chunk-3DCJ45Z2.mjs';
|
|
9
9
|
import { ModalShell } from './chunk-DVNUDUVT.mjs';
|
|
10
10
|
import { isSpamProtectionEnabled, AltchaWidget, getChallengeUrl } from './chunk-GFSQNTRW.mjs';
|
|
11
11
|
import { useBlockApi, FeedbackMessage } from './chunk-UDNSI5PY.mjs';
|
|
12
|
-
import { buildEventRuntimeFilters, buildEventCalendarListingRender, groupEventsByDate, getOrderedDayNames, formatDateKey, getEventRuntimeFiltersKey, themeButtonClassName, normalizeCsvIds, normalizeOptionalId, normalizeEventBlockKind, normalizeCsvString, EventCompactRow, EmptyState, getContainerClass, getCardOrientation, isToday, MAX_EVENTS_PER_DAY, formatTime, resolveCoursePricingState, resolveRuntimeEventPricing, formatEventPrice, formatEventDateParts, DateTimeTile, EventCard, buildCalendarViewport, shiftCalendarAnchorDate, addMonths, getThreeMonthRange, buildTimetableModel, formatDate, isEventContentType, formatCoursePriceAmount, formatCoursePriceDisplay, MONTH_NAMES, getEventAvailability, formatEventTeacherLine, CreditCard, Ticket, Star, Sparkles, assertNever11 } from './chunk-
|
|
12
|
+
import { buildEventRuntimeFilters, buildEventCalendarListingRender, groupEventsByDate, getOrderedDayNames, formatDateKey, getEventRuntimeFiltersKey, themeButtonClassName, normalizeCsvIds, normalizeOptionalId, normalizeEventBlockKind, normalizeCsvString, EventCompactRow, EmptyState, getContainerClass, getCardOrientation, isToday, MAX_EVENTS_PER_DAY, formatTime, WIZARD_STEPS, getWizardStepsForContext, getStepNumber, resolveCoursePricingState, resolveRuntimeEventPricing, formatEventPrice, formatEventDateParts, DateTimeTile, EventCard, buildCalendarViewport, shiftCalendarAnchorDate, addMonths, getThreeMonthRange, buildTimetableModel, formatDate, toRegistrationEvents, isEventContentType, findPreSelectedEvent, resolveRegistrationTarget, findEventByOccurrenceId, resolveEventRequiresPayment, resolveDiscountContext, formatCoursePriceAmount, formatCoursePriceDisplay, MONTH_NAMES, getEventAvailability, formatEventTeacherLine, CreditCard, Ticket, Star, Sparkles, assertNever11 } from './chunk-VGDBVNOO.mjs';
|
|
13
13
|
import { publicEventPricingType, getBookingLocalDateKey, toScheduledBookingDateTime, toBookingTimeZone, publicEventPricingCurrency, formatBookingDateTime, publicEventPricingMode, publicEventScalarPrice, publicEventTicketTypes, formatBookingDate, formatBookingTime } from './chunk-ZE5G642V.mjs';
|
|
14
14
|
import React9, { createContext, useId, useMemo, useState, useRef, useEffect, useCallback, useContext, useReducer } from 'react';
|
|
15
15
|
import { jsx, jsxs, Fragment } from 'react/jsx-runtime';
|
|
@@ -18,25 +18,6 @@ function StepIndicator2(props) {
|
|
|
18
18
|
return /* @__PURE__ */ jsx(StepIndicator, { ...props, classPrefix: "er" });
|
|
19
19
|
}
|
|
20
20
|
|
|
21
|
-
// ../blocks/src/system/runtime/nodes/event-registration/wizardSteps.ts
|
|
22
|
-
var WIZARD_STEPS = [
|
|
23
|
-
"select-event",
|
|
24
|
-
"select-tickets",
|
|
25
|
-
"enter-details",
|
|
26
|
-
"select-payment"
|
|
27
|
-
];
|
|
28
|
-
function getWizardStepsForContext(hasPreSelectedContext, needsPaymentStep) {
|
|
29
|
-
const baseSteps = hasPreSelectedContext ? ["select-tickets", "enter-details"] : ["select-event", "select-tickets", "enter-details"];
|
|
30
|
-
if (!needsPaymentStep) {
|
|
31
|
-
return baseSteps;
|
|
32
|
-
}
|
|
33
|
-
return [...baseSteps, "select-payment"];
|
|
34
|
-
}
|
|
35
|
-
function getStepNumber(step, wizardSteps) {
|
|
36
|
-
const index = wizardSteps.indexOf(step);
|
|
37
|
-
return index >= 0 ? index + 1 : 1;
|
|
38
|
-
}
|
|
39
|
-
|
|
40
21
|
// ../blocks/src/system/runtime/nodes/event-registration/registrationStateMachine.ts
|
|
41
22
|
function createInitialRegistrationFlowState(hasPreSelectedContext) {
|
|
42
23
|
return {
|
|
@@ -190,8 +171,10 @@ function requiresPaymentStep(params) {
|
|
|
190
171
|
return !isEntitlementSelection(params.paymentSelection);
|
|
191
172
|
}
|
|
192
173
|
|
|
193
|
-
// ../blocks/src/system/runtime/nodes/event-registration/event-registration.headless.
|
|
174
|
+
// ../blocks/src/system/runtime/nodes/event-registration/event-registration.headless.contract.ts
|
|
194
175
|
var DEFAULT_EVENT_REGISTRATION_MAX_TICKETS = 5;
|
|
176
|
+
|
|
177
|
+
// ../blocks/src/system/runtime/nodes/event-registration/event-registration.headless.planning.ts
|
|
195
178
|
function getRegistrableStatuses(isPreview) {
|
|
196
179
|
return isPreview ? ["active", "draft"] : ["active"];
|
|
197
180
|
}
|
|
@@ -2230,89 +2213,6 @@ function useEventRegistrationSubmit(options) {
|
|
|
2230
2213
|
};
|
|
2231
2214
|
}
|
|
2232
2215
|
|
|
2233
|
-
// ../blocks/src/system/runtime/nodes/event-registration/registrationDerivations.ts
|
|
2234
|
-
function eventMatchesOccurrenceId(event, occurrenceId) {
|
|
2235
|
-
return event.registrationOccurrenceId === occurrenceId || event.publicEventId === occurrenceId;
|
|
2236
|
-
}
|
|
2237
|
-
function findEventByOccurrenceId(events, occurrenceId) {
|
|
2238
|
-
return events.find((event) => eventMatchesOccurrenceId(event, occurrenceId)) ?? null;
|
|
2239
|
-
}
|
|
2240
|
-
function findPreSelectedEvent(input) {
|
|
2241
|
-
const occurrenceContext = input.occurrenceContext;
|
|
2242
|
-
if (!occurrenceContext) {
|
|
2243
|
-
return null;
|
|
2244
|
-
}
|
|
2245
|
-
const contextDate = getBookingLocalDateKey(toScheduledBookingDateTime({
|
|
2246
|
-
startsAt: occurrenceContext.startsAt,
|
|
2247
|
-
timeZone: occurrenceContext.timeZone
|
|
2248
|
-
}));
|
|
2249
|
-
return input.scopedEvents.find(
|
|
2250
|
-
(event) => eventMatchesOccurrenceId(event, occurrenceContext.id) || getBookingLocalDateKey(toScheduledBookingDateTime({
|
|
2251
|
-
startsAt: event.startsAt,
|
|
2252
|
-
timeZone: event.timeZone
|
|
2253
|
-
})) === contextDate
|
|
2254
|
-
) ?? null;
|
|
2255
|
-
}
|
|
2256
|
-
function resolveRegistrationTarget(input) {
|
|
2257
|
-
const occurrenceId = input.occurrenceContext?.id ?? input.selectedEvent?.registrationOccurrenceId ?? null;
|
|
2258
|
-
if (!occurrenceId) {
|
|
2259
|
-
return null;
|
|
2260
|
-
}
|
|
2261
|
-
return {
|
|
2262
|
-
occurrenceId,
|
|
2263
|
-
selectedEventId: input.selectedEvent?.publicEventId ?? null
|
|
2264
|
-
};
|
|
2265
|
-
}
|
|
2266
|
-
function resolveEventRequiresPayment(input) {
|
|
2267
|
-
if (input.eligibility) {
|
|
2268
|
-
return input.eligibility.requiresPayment;
|
|
2269
|
-
}
|
|
2270
|
-
if (input.selectedTicketType) {
|
|
2271
|
-
return input.selectedTicketType.priceAmount > 0;
|
|
2272
|
-
}
|
|
2273
|
-
if (!input.event) {
|
|
2274
|
-
return false;
|
|
2275
|
-
}
|
|
2276
|
-
return publicEventPricingType(resolveRuntimeEventPricing(input.event)) !== "free";
|
|
2277
|
-
}
|
|
2278
|
-
function resolveDiscountContext(input) {
|
|
2279
|
-
const selection = input.paymentSelection.method ? input.paymentSelection : null;
|
|
2280
|
-
if (!input.event) {
|
|
2281
|
-
return null;
|
|
2282
|
-
}
|
|
2283
|
-
if (selection?.method === "pass_bundle" && selection.bundlePassId) {
|
|
2284
|
-
return { type: "pass", passId: selection.bundlePassId };
|
|
2285
|
-
}
|
|
2286
|
-
if (selection?.method === "membership_bundle" && selection.bundleMembershipId) {
|
|
2287
|
-
return { type: "membership", membershipId: selection.bundleMembershipId };
|
|
2288
|
-
}
|
|
2289
|
-
if (!input.eventRequiresPayment) {
|
|
2290
|
-
return null;
|
|
2291
|
-
}
|
|
2292
|
-
if (selection?.method && selection.method !== "stripe") {
|
|
2293
|
-
return null;
|
|
2294
|
-
}
|
|
2295
|
-
return {
|
|
2296
|
-
type: "event",
|
|
2297
|
-
eventSeriesId: input.event.seriesId,
|
|
2298
|
-
eventCategoryId: input.event.eventCategory?.id ?? null,
|
|
2299
|
-
ticketsCount: input.ticketsCount
|
|
2300
|
-
};
|
|
2301
|
-
}
|
|
2302
|
-
|
|
2303
|
-
// ../blocks/src/system/runtime/nodes/event-registration/registrationEventAdapter.ts
|
|
2304
|
-
function toRegistrationEvent(event) {
|
|
2305
|
-
return {
|
|
2306
|
-
...event,
|
|
2307
|
-
pricing: resolveRuntimeEventPricing(event),
|
|
2308
|
-
publicEventId: event.id,
|
|
2309
|
-
registrationOccurrenceId: event.occurrenceId
|
|
2310
|
-
};
|
|
2311
|
-
}
|
|
2312
|
-
function toRegistrationEvents(events) {
|
|
2313
|
-
return events.map(toRegistrationEvent);
|
|
2314
|
-
}
|
|
2315
|
-
|
|
2316
2216
|
// ../blocks/src/system/runtime/nodes/event-registration/useEventRegistrationWizard.ts
|
|
2317
2217
|
function useEventRegistrationWizard(options) {
|
|
2318
2218
|
const api = useBlockApi();
|
|
@@ -2606,23 +2506,29 @@ function useEventRegistrationWizard(options) {
|
|
|
2606
2506
|
);
|
|
2607
2507
|
const handleDetailsComplete = async () => {
|
|
2608
2508
|
if (ticketTypeSelectionRequired && !hasValidSelectedTicketType) {
|
|
2609
|
-
|
|
2509
|
+
const message = "Select a ticket type to continue.";
|
|
2510
|
+
setErrorMessage(message);
|
|
2610
2511
|
setStep("error");
|
|
2611
|
-
return;
|
|
2512
|
+
return { ok: false, reason: "blocked", message };
|
|
2612
2513
|
}
|
|
2613
2514
|
if (!validateForm()) {
|
|
2614
2515
|
setGuestSectionShake(true);
|
|
2615
|
-
return
|
|
2516
|
+
return {
|
|
2517
|
+
ok: false,
|
|
2518
|
+
reason: "validation-failed",
|
|
2519
|
+
message: "Check the highlighted fields and try again."
|
|
2520
|
+
};
|
|
2616
2521
|
}
|
|
2617
2522
|
if (waitlistClaim.claim === null && eligibility?.isFull && !eligibility.canJoinWaitlist) {
|
|
2618
|
-
|
|
2523
|
+
const message = "This event is sold out.";
|
|
2524
|
+
setErrorMessage(message);
|
|
2619
2525
|
setStep("error");
|
|
2620
|
-
return;
|
|
2526
|
+
return { ok: false, reason: "blocked", message };
|
|
2621
2527
|
}
|
|
2622
2528
|
const shouldCollectPayment = !eligibility?.canJoinWaitlist && requiresPaymentStep({ eventRequiresPayment, paymentSelection });
|
|
2623
2529
|
if (shouldCollectPayment) {
|
|
2624
2530
|
setStep("select-payment");
|
|
2625
|
-
return;
|
|
2531
|
+
return { ok: true, outcome: "payment-step" };
|
|
2626
2532
|
}
|
|
2627
2533
|
const submitPlan = resolveEventRegistrationSubmitPlan({
|
|
2628
2534
|
paymentSelection,
|
|
@@ -2632,14 +2538,22 @@ function useEventRegistrationWizard(options) {
|
|
|
2632
2538
|
if (!submitPlan.ok) {
|
|
2633
2539
|
setErrorMessage(submitPlan.message);
|
|
2634
2540
|
setStep("error");
|
|
2635
|
-
return;
|
|
2541
|
+
return { ok: false, reason: "blocked", message: submitPlan.message };
|
|
2636
2542
|
}
|
|
2637
|
-
await handleSubmit(
|
|
2543
|
+
const submitResult = await handleSubmit(
|
|
2638
2544
|
submitPlan.args.method,
|
|
2639
2545
|
submitPlan.args.passId,
|
|
2640
2546
|
submitPlan.args.membershipId,
|
|
2641
2547
|
submitPlan.args.selection
|
|
2642
2548
|
);
|
|
2549
|
+
if (!submitResult.ok) {
|
|
2550
|
+
return {
|
|
2551
|
+
ok: false,
|
|
2552
|
+
reason: submitResult.reason === "submission-failed" ? "submission-failed" : "blocked",
|
|
2553
|
+
message: submitResult.message
|
|
2554
|
+
};
|
|
2555
|
+
}
|
|
2556
|
+
return { ok: true, outcome: "submitted" };
|
|
2643
2557
|
};
|
|
2644
2558
|
const handlePaymentSelect = async () => {
|
|
2645
2559
|
const submitPlan = resolveEventRegistrationSubmitPlan({
|
|
@@ -2808,6 +2722,8 @@ function useEventRegistrationWizard(options) {
|
|
|
2808
2722
|
handleRetry
|
|
2809
2723
|
};
|
|
2810
2724
|
}
|
|
2725
|
+
|
|
2726
|
+
// ../blocks/src/system/runtime/nodes/event-registration/constants.ts
|
|
2811
2727
|
var EVENT_REGISTRATION_ANCHOR_ID = "event-registration";
|
|
2812
2728
|
var EVENT_PORTAL_AUTH_COPY = {
|
|
2813
2729
|
membership: {
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
"use client";
|
|
2
|
-
import { parseAspectRatioValue, parseColorTokenParts, toBookingTimeZone, resolvePlanningDateInput, formatBookingDate, toScheduledBookingDateTime, formatBookingTime, toScheduledBookingDateRange, formatBookingDateParts, publicEventPricingDisplay, ImagePresets, getCurrentResolveImageUrlContext, renderVideo, renderAudio, resolveMediaNodeResponsiveImage, MediaPlaceholder, computeMediaTransformStyle, rgbColorValue } from './chunk-ZE5G642V.mjs';
|
|
2
|
+
import { parseAspectRatioValue, parseColorTokenParts, toBookingTimeZone, resolvePlanningDateInput, formatBookingDate, toScheduledBookingDateTime, formatBookingTime, toScheduledBookingDateRange, formatBookingDateParts, publicEventPricingDisplay, ImagePresets, getBookingLocalDateKey, publicEventPricingType, getCurrentResolveImageUrlContext, renderVideo, renderAudio, resolveMediaNodeResponsiveImage, MediaPlaceholder, computeMediaTransformStyle, rgbColorValue } from './chunk-ZE5G642V.mjs';
|
|
3
3
|
import z2, { z } from 'zod';
|
|
4
4
|
import { jsxs, jsx } from 'react/jsx-runtime';
|
|
5
5
|
import { createContext, forwardRef, useContext, createElement } from 'react';
|
|
@@ -7115,12 +7115,112 @@ var eventCombinedInteractiveIslandPropsCodec = createInteractiveIslandCodec({
|
|
|
7115
7115
|
stage: value.stage
|
|
7116
7116
|
})
|
|
7117
7117
|
});
|
|
7118
|
+
|
|
7119
|
+
// ../blocks/src/system/runtime/nodes/event-registration/wizardSteps.ts
|
|
7120
|
+
var WIZARD_STEPS = [
|
|
7121
|
+
"select-event",
|
|
7122
|
+
"select-tickets",
|
|
7123
|
+
"enter-details",
|
|
7124
|
+
"select-payment"
|
|
7125
|
+
];
|
|
7126
|
+
function getWizardStepsForContext(hasPreSelectedContext, needsPaymentStep) {
|
|
7127
|
+
const baseSteps = hasPreSelectedContext ? ["select-tickets", "enter-details"] : ["select-event", "select-tickets", "enter-details"];
|
|
7128
|
+
if (!needsPaymentStep) {
|
|
7129
|
+
return baseSteps;
|
|
7130
|
+
}
|
|
7131
|
+
return [...baseSteps, "select-payment"];
|
|
7132
|
+
}
|
|
7133
|
+
function getStepNumber(step, wizardSteps) {
|
|
7134
|
+
const index = wizardSteps.indexOf(step);
|
|
7135
|
+
return index >= 0 ? index + 1 : 1;
|
|
7136
|
+
}
|
|
7137
|
+
|
|
7138
|
+
// ../blocks/src/system/runtime/nodes/event-registration/registrationDerivations.ts
|
|
7139
|
+
function eventMatchesOccurrenceId(event, occurrenceId) {
|
|
7140
|
+
return event.registrationOccurrenceId === occurrenceId || event.publicEventId === occurrenceId;
|
|
7141
|
+
}
|
|
7142
|
+
function findEventByOccurrenceId(events, occurrenceId) {
|
|
7143
|
+
return events.find((event) => eventMatchesOccurrenceId(event, occurrenceId)) ?? null;
|
|
7144
|
+
}
|
|
7145
|
+
function findPreSelectedEvent(input) {
|
|
7146
|
+
const occurrenceContext = input.occurrenceContext;
|
|
7147
|
+
if (!occurrenceContext) {
|
|
7148
|
+
return null;
|
|
7149
|
+
}
|
|
7150
|
+
const contextDate = getBookingLocalDateKey(toScheduledBookingDateTime({
|
|
7151
|
+
startsAt: occurrenceContext.startsAt,
|
|
7152
|
+
timeZone: occurrenceContext.timeZone
|
|
7153
|
+
}));
|
|
7154
|
+
return input.scopedEvents.find(
|
|
7155
|
+
(event) => eventMatchesOccurrenceId(event, occurrenceContext.id) || getBookingLocalDateKey(toScheduledBookingDateTime({
|
|
7156
|
+
startsAt: event.startsAt,
|
|
7157
|
+
timeZone: event.timeZone
|
|
7158
|
+
})) === contextDate
|
|
7159
|
+
) ?? null;
|
|
7160
|
+
}
|
|
7161
|
+
function resolveRegistrationTarget(input) {
|
|
7162
|
+
const occurrenceId = input.occurrenceContext?.id ?? input.selectedEvent?.registrationOccurrenceId ?? null;
|
|
7163
|
+
if (!occurrenceId) {
|
|
7164
|
+
return null;
|
|
7165
|
+
}
|
|
7166
|
+
return {
|
|
7167
|
+
occurrenceId,
|
|
7168
|
+
selectedEventId: input.selectedEvent?.publicEventId ?? null
|
|
7169
|
+
};
|
|
7170
|
+
}
|
|
7171
|
+
function resolveEventRequiresPayment(input) {
|
|
7172
|
+
if (input.eligibility) {
|
|
7173
|
+
return input.eligibility.requiresPayment;
|
|
7174
|
+
}
|
|
7175
|
+
if (input.selectedTicketType) {
|
|
7176
|
+
return input.selectedTicketType.priceAmount > 0;
|
|
7177
|
+
}
|
|
7178
|
+
if (!input.event) {
|
|
7179
|
+
return false;
|
|
7180
|
+
}
|
|
7181
|
+
return publicEventPricingType(resolveRuntimeEventPricing(input.event)) !== "free";
|
|
7182
|
+
}
|
|
7183
|
+
function resolveDiscountContext(input) {
|
|
7184
|
+
const selection = input.paymentSelection.method ? input.paymentSelection : null;
|
|
7185
|
+
if (!input.event) {
|
|
7186
|
+
return null;
|
|
7187
|
+
}
|
|
7188
|
+
if (selection?.method === "pass_bundle" && selection.bundlePassId) {
|
|
7189
|
+
return { type: "pass", passId: selection.bundlePassId };
|
|
7190
|
+
}
|
|
7191
|
+
if (selection?.method === "membership_bundle" && selection.bundleMembershipId) {
|
|
7192
|
+
return { type: "membership", membershipId: selection.bundleMembershipId };
|
|
7193
|
+
}
|
|
7194
|
+
if (!input.eventRequiresPayment) {
|
|
7195
|
+
return null;
|
|
7196
|
+
}
|
|
7197
|
+
if (selection?.method && selection.method !== "stripe") {
|
|
7198
|
+
return null;
|
|
7199
|
+
}
|
|
7200
|
+
return {
|
|
7201
|
+
type: "event",
|
|
7202
|
+
eventSeriesId: input.event.seriesId,
|
|
7203
|
+
eventCategoryId: input.event.eventCategory?.id ?? null,
|
|
7204
|
+
ticketsCount: input.ticketsCount
|
|
7205
|
+
};
|
|
7206
|
+
}
|
|
7207
|
+
|
|
7208
|
+
// ../blocks/src/system/runtime/nodes/event-registration/registrationEventAdapter.ts
|
|
7209
|
+
function toRegistrationEvent(event) {
|
|
7210
|
+
return {
|
|
7211
|
+
...event,
|
|
7212
|
+
pricing: resolveRuntimeEventPricing(event),
|
|
7213
|
+
publicEventId: event.id,
|
|
7214
|
+
registrationOccurrenceId: event.occurrenceId
|
|
7215
|
+
};
|
|
7216
|
+
}
|
|
7217
|
+
function toRegistrationEvents(events) {
|
|
7218
|
+
return events.map(toRegistrationEvent);
|
|
7219
|
+
}
|
|
7220
|
+
|
|
7221
|
+
// ../blocks/src/system/runtime/nodes/event-registration.interactive.ts
|
|
7118
7222
|
var EVENT_REGISTRATION_GENERIC_SHELL_STEP_LABELS = ["Date", "Tickets", "Details"];
|
|
7119
|
-
var [
|
|
7120
|
-
eventRegistrationGenericDateStepLabel,
|
|
7121
|
-
eventRegistrationGenericTicketsStepLabel,
|
|
7122
|
-
eventRegistrationGenericDetailsStepLabel
|
|
7123
|
-
] = EVENT_REGISTRATION_GENERIC_SHELL_STEP_LABELS;
|
|
7223
|
+
var EVENT_REGISTRATION_SHELL_STEP_LABELS = ["Event", "Date", "Tickets", "Details", "Payment"];
|
|
7124
7224
|
var contentEntrySchema2 = z.object({
|
|
7125
7225
|
id: z.string(),
|
|
7126
7226
|
slug: z.string(),
|
|
@@ -7156,11 +7256,7 @@ var eventRegistrationDisplaySchema = z.object({
|
|
|
7156
7256
|
className: z.string().nullable(),
|
|
7157
7257
|
titleText: z.string(),
|
|
7158
7258
|
bodyText: z.string(),
|
|
7159
|
-
stepLabels: z.
|
|
7160
|
-
z.literal(eventRegistrationGenericDateStepLabel),
|
|
7161
|
-
z.literal(eventRegistrationGenericTicketsStepLabel),
|
|
7162
|
-
z.literal(eventRegistrationGenericDetailsStepLabel)
|
|
7163
|
-
]),
|
|
7259
|
+
stepLabels: z.array(z.enum(EVENT_REGISTRATION_SHELL_STEP_LABELS)).min(1),
|
|
7164
7260
|
summaryButtonText: z.string()
|
|
7165
7261
|
});
|
|
7166
7262
|
var eventRegistrationHydrationSchema = z.object({
|
|
@@ -7195,16 +7291,81 @@ var eventRegistrationIslandMetaKeys = defineInteractiveIslandMetaKeys(
|
|
|
7195
7291
|
"stage"
|
|
7196
7292
|
);
|
|
7197
7293
|
function buildEventRegistrationDisplay(source) {
|
|
7294
|
+
const stepLabels = buildEventRegistrationShellStepLabels(source);
|
|
7198
7295
|
return {
|
|
7199
7296
|
kind: "event-registration",
|
|
7200
7297
|
state: "generic-shell",
|
|
7201
7298
|
className: source.className ?? null,
|
|
7202
7299
|
titleText: "Event registration",
|
|
7203
|
-
bodyText:
|
|
7204
|
-
stepLabels
|
|
7300
|
+
bodyText: buildEventRegistrationShellBodyText(stepLabels),
|
|
7301
|
+
stepLabels,
|
|
7205
7302
|
summaryButtonText: source.buttonText?.trim() || "Register"
|
|
7206
7303
|
};
|
|
7207
7304
|
}
|
|
7305
|
+
function buildEventRegistrationShellStepLabels(source) {
|
|
7306
|
+
const scopedEvents = scopeEventRegistrationEvents(source);
|
|
7307
|
+
if (scopedEvents.length === 0) {
|
|
7308
|
+
return EVENT_REGISTRATION_GENERIC_SHELL_STEP_LABELS;
|
|
7309
|
+
}
|
|
7310
|
+
const preSelectedEvent = findPreSelectedEvent({
|
|
7311
|
+
scopedEvents,
|
|
7312
|
+
occurrenceContext: source.occurrenceContext
|
|
7313
|
+
});
|
|
7314
|
+
const hasPreSelectedContext = Boolean(source.occurrenceContext || preSelectedEvent);
|
|
7315
|
+
const needsPaymentStep = hasPreSelectedContext && preSelectedEvent ? resolveEventRequiresPayment({
|
|
7316
|
+
eligibility: null,
|
|
7317
|
+
selectedTicketType: null,
|
|
7318
|
+
event: preSelectedEvent
|
|
7319
|
+
}) : false;
|
|
7320
|
+
return getWizardStepsForContext(hasPreSelectedContext, needsPaymentStep).map((step) => shellLabelForRegistrationStep(step, scopedEvents));
|
|
7321
|
+
}
|
|
7322
|
+
function scopeEventRegistrationEvents(source) {
|
|
7323
|
+
const events = toRegistrationEvents(source.events ?? []);
|
|
7324
|
+
if (source.occurrenceContext?.seriesId) {
|
|
7325
|
+
return events.filter((event) => event.seriesId === source.occurrenceContext?.seriesId);
|
|
7326
|
+
}
|
|
7327
|
+
const entrySlug = source.contentEntry?.slug;
|
|
7328
|
+
const entryContentType = source.contentEntry?.contentTypeSlug;
|
|
7329
|
+
if (entrySlug && entryContentType && isEventContentType(entryContentType)) {
|
|
7330
|
+
return events.filter((event) => event.slug === entrySlug);
|
|
7331
|
+
}
|
|
7332
|
+
return events;
|
|
7333
|
+
}
|
|
7334
|
+
function shellLabelForRegistrationStep(step, events) {
|
|
7335
|
+
switch (step) {
|
|
7336
|
+
case "select-event":
|
|
7337
|
+
return isDateSelection(events) ? "Date" : "Event";
|
|
7338
|
+
case "select-tickets":
|
|
7339
|
+
return "Tickets";
|
|
7340
|
+
case "enter-details":
|
|
7341
|
+
return "Details";
|
|
7342
|
+
case "select-payment":
|
|
7343
|
+
return "Payment";
|
|
7344
|
+
case "error":
|
|
7345
|
+
case "success":
|
|
7346
|
+
case "submitting":
|
|
7347
|
+
case "redirecting":
|
|
7348
|
+
case "verifying-payment":
|
|
7349
|
+
case "verifying-timeout":
|
|
7350
|
+
case "payment-failed":
|
|
7351
|
+
return "Details";
|
|
7352
|
+
}
|
|
7353
|
+
}
|
|
7354
|
+
function isDateSelection(events) {
|
|
7355
|
+
const firstSeriesId = events[0]?.seriesId;
|
|
7356
|
+
return Boolean(
|
|
7357
|
+
events.length > 1 && firstSeriesId && events.every((event) => event.seriesId === firstSeriesId)
|
|
7358
|
+
);
|
|
7359
|
+
}
|
|
7360
|
+
function buildEventRegistrationShellBodyText(stepLabels) {
|
|
7361
|
+
if (stepLabels.includes("Payment")) {
|
|
7362
|
+
return "Preparing tickets, details, and payment options.";
|
|
7363
|
+
}
|
|
7364
|
+
if (stepLabels[0] === "Tickets") {
|
|
7365
|
+
return "Preparing tickets and booking details.";
|
|
7366
|
+
}
|
|
7367
|
+
return "Preparing dates, tickets, and booking details.";
|
|
7368
|
+
}
|
|
7208
7369
|
var eventRegistrationBlockRuntime = defineClientOwnedBlockRuntime({
|
|
7209
7370
|
kind: "client-owned",
|
|
7210
7371
|
contracts: {
|
|
@@ -8597,4 +8758,4 @@ lucide-react/dist/esm/lucide-react.mjs:
|
|
|
8597
8758
|
*)
|
|
8598
8759
|
*/
|
|
8599
8760
|
|
|
8600
|
-
export { BOOKING_FORM_DATA_RESERVED_KEYS, ChevronLeft, ChevronRight, CreditCard, DateTimeTile, EMPTY_COMMERCE_CART_STATE, EmptyState, EventCard, EventCompactRow, MAX_EVENTS_PER_DAY, MONTH_NAMES, Sparkles, Star, Ticket, addMonths, assertNever11, buildCalendarViewport, buildCartDisplay, buildEventCalendarListingRender, buildEventRuntimeFilters, buildPassCartItem, buildProductCardDisplay, buildProductCartItem, buildProductDetailDisplay, buildTimetableModel, clearWorkflowFeedback, defineIslandPropsDecoder, deriveBookingFormViewState, deriveCommerceCheckoutState, err2, formatBookingSubmissionPreparationError, formatCommercePrice, formatCoursePriceAmount, formatCoursePriceDisplay, formatDate, formatDateKey, formatEventDateParts, formatEventPrice, formatEventTeacherLine, formatInterval, formatTime, getBookingRedirectStateFromLocation, getBookingSuccessMessage, getCardOrientation, getContainerClass, getEventAvailability, getEventRuntimeFiltersKey, getOrderedDayNames, getShopDisplayForItems, getThreeMonthRange, groupEventsByDate, isEventContentType, isToday, logger, normalizeCsvIds, normalizeCsvString, normalizeEventBlockKind, normalizeOptionalId, ok, okWith2, parseStoredCommerceCartState, prepareBookingSubmission, productItemKey, reduceCommerceCart, reportWorkflowError, reportWorkflowSuccess, resolveAppointmentCheckoutVerificationState, resolveBookingPaymentStep, resolveBookingSiteId, resolveCoursePricingState, resolveDefaultBookingServiceId, resolveRuntimeEventPricing, shiftCalendarAnchorDate, themeButtonClassName, toSelectedCollectionOptionKind };
|
|
8761
|
+
export { BOOKING_FORM_DATA_RESERVED_KEYS, ChevronLeft, ChevronRight, CreditCard, DateTimeTile, EMPTY_COMMERCE_CART_STATE, EmptyState, EventCard, EventCompactRow, MAX_EVENTS_PER_DAY, MONTH_NAMES, Sparkles, Star, Ticket, WIZARD_STEPS, addMonths, assertNever11, buildCalendarViewport, buildCartDisplay, buildEventCalendarListingRender, buildEventRuntimeFilters, buildPassCartItem, buildProductCardDisplay, buildProductCartItem, buildProductDetailDisplay, buildTimetableModel, clearWorkflowFeedback, defineIslandPropsDecoder, deriveBookingFormViewState, deriveCommerceCheckoutState, err2, findEventByOccurrenceId, findPreSelectedEvent, formatBookingSubmissionPreparationError, formatCommercePrice, formatCoursePriceAmount, formatCoursePriceDisplay, formatDate, formatDateKey, formatEventDateParts, formatEventPrice, formatEventTeacherLine, formatInterval, formatTime, getBookingRedirectStateFromLocation, getBookingSuccessMessage, getCardOrientation, getContainerClass, getEventAvailability, getEventRuntimeFiltersKey, getOrderedDayNames, getShopDisplayForItems, getStepNumber, getThreeMonthRange, getWizardStepsForContext, groupEventsByDate, isEventContentType, isToday, logger, normalizeCsvIds, normalizeCsvString, normalizeEventBlockKind, normalizeOptionalId, ok, okWith2, parseStoredCommerceCartState, prepareBookingSubmission, productItemKey, reduceCommerceCart, reportWorkflowError, reportWorkflowSuccess, resolveAppointmentCheckoutVerificationState, resolveBookingPaymentStep, resolveBookingSiteId, resolveCoursePricingState, resolveDefaultBookingServiceId, resolveDiscountContext, resolveEventRequiresPayment, resolveRegistrationTarget, resolveRuntimeEventPricing, shiftCalendarAnchorDate, themeButtonClassName, toRegistrationEvents, toSelectedCollectionOptionKind };
|