@kotao/storefront 0.2.6 → 0.2.7

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.
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/events/react.tsx"],"names":["maximum"],"mappings":"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","file":"events-react.js","sourcesContent":["import {\n type FormEvent,\n type ReactNode,\n useCallback,\n useEffect,\n useId,\n useLayoutEffect,\n useMemo,\n useRef,\n useState,\n} from 'react'\n\nimport { StorefrontFormFields } from '../react/form'\nimport type { FormAnswers, PublicForm } from '../forms'\nimport {\n consumeOfferTokenFragment,\n offerTokenHrefMarker,\n type OfferTokenHistory,\n type OfferTokenLocation,\n} from './offer-token'\nimport { StorefrontEventsRequestError, type EventsClient } from './client'\nimport type {\n EventApprovalOfferResolution,\n EventCheckoutSession,\n EventRegistrationSubmission,\n PublicEvent,\n PublicEventForm,\n PublicEventTicketType,\n} from './types'\n\nexport type EventRegistrationState =\n | 'idle'\n | 'submitting'\n | 'awaiting_approval'\n | 'waitlisted'\n | 'checkout_ready'\n | 'request_error'\n\nexport function useEventRegistration(input: {\n readonly client: EventsClient\n readonly onCheckoutSession?: (session: EventCheckoutSession) => void\n}): {\n readonly state: EventRegistrationState\n readonly submit: (submission: EventRegistrationSubmission) => Promise<void>\n readonly reset: () => void\n} {\n const [state, setState] = useState<EventRegistrationState>('idle')\n const generation = useRef(0)\n const logicalPayload = useRef<string | null>(null)\n const idempotencyKey = useRef<string | null>(null)\n const activeClient = useRef(input.client)\n const activeCallback = useRef(input.onCheckoutSession)\n\n useEffect(() => {\n if (\n activeClient.current !== input.client ||\n activeCallback.current !== input.onCheckoutSession\n ) {\n activeClient.current = input.client\n activeCallback.current = input.onCheckoutSession\n generation.current += 1\n setState('idle')\n }\n }, [input.client, input.onCheckoutSession])\n\n useEffect(\n () => () => {\n generation.current += 1\n },\n [],\n )\n\n const reset = useCallback(() => {\n generation.current += 1\n setState('idle')\n }, [])\n\n async function submit(submission: EventRegistrationSubmission): Promise<void> {\n const attempt = ++generation.current\n const prepared = registrationSubmission(submission, logicalPayload, idempotencyKey)\n setState('submitting')\n try {\n const result = await input.client.submitRegistration(prepared)\n if (attempt !== generation.current) return\n if (result.kind === 'checkout') {\n input.onCheckoutSession?.(result.checkoutSession)\n setState('checkout_ready')\n } else if (result.kind === 'approval') {\n setState('awaiting_approval')\n } else {\n setState('waitlisted')\n }\n } catch {\n if (attempt !== generation.current) return\n setState('request_error')\n }\n }\n\n return { state, submit, reset }\n}\n\nfunction registrationKey(mode: PublicEvent['registrationMode']): string {\n const kind = mode === 'approval_then_payment' ? 'application' : 'checkout'\n return `events-${kind}-${Date.now()}-${Math.random().toString(36).slice(2)}`\n}\n\nfunction stablePayload(value: unknown): string {\n return JSON.stringify(value, (_key, item: unknown) => {\n if (item === null || typeof item !== 'object' || Array.isArray(item)) return item\n return Object.fromEntries(\n Object.entries(item as Record<string, unknown>).sort(([left], [right]) =>\n left.localeCompare(right),\n ),\n )\n })\n}\n\nfunction registrationSubmission(\n submission: EventRegistrationSubmission,\n previousPayload: { current: string | null },\n previousKey: { current: string | null },\n): EventRegistrationSubmission {\n if (submission.registrationMode === 'waitlist_only') return submission\n if (submission.idempotencyKey.trim() !== '') return submission\n const payload = {\n registrationMode: submission.registrationMode,\n handle: submission.handle,\n input: submission.input,\n }\n const identity = stablePayload(payload)\n if (identity !== previousPayload.current || previousKey.current === null) {\n previousPayload.current = identity\n previousKey.current = registrationKey(submission.registrationMode)\n }\n return { ...submission, idempotencyKey: previousKey.current }\n}\n\n/** Adapts an event-owned form without claiming that it is a published standalone Forms version. */\nfunction eventFormForRenderer(form: PublicEventForm): PublicForm {\n return {\n definition: {\n id: form.definitionId,\n handle: form.definitionId,\n title: form.title,\n },\n version: {\n id: form.versionId,\n definitionId: form.definitionId,\n schema: form.schema,\n },\n } as PublicForm\n}\n\nconst REGISTRATION_COPY = {\n en: {\n submit: 'Register',\n submitting: 'Submitting…',\n awaiting_approval: 'Application received. Awaiting approval.',\n waitlisted: 'You joined the waitlist.',\n checkout_ready: 'Registration ready for checkout.',\n request_error: 'Something went wrong. Please try again.',\n email: 'Email',\n quantity: 'Quantity',\n ticket: 'Ticket',\n },\n de: {\n submit: 'Anmelden',\n submitting: 'Wird gesendet…',\n awaiting_approval: 'Anmeldung erhalten. Sie wartet auf Freigabe.',\n waitlisted: 'Du stehst auf der Warteliste.',\n checkout_ready: 'Die Anmeldung kann bezahlt werden.',\n request_error: 'Etwas ist schiefgelaufen. Bitte versuche es erneut.',\n email: 'E-Mail',\n quantity: 'Anzahl',\n ticket: 'Ticket',\n },\n} as const\n\nexport interface EventRegistrationLabels {\n readonly submit: string\n readonly submitting: string\n readonly awaiting_approval: string\n readonly waitlisted: string\n readonly checkout_ready: string\n readonly request_error: string\n readonly email: string\n readonly quantity: string\n readonly ticket: string\n}\n\nfunction registrationCopy(locale: string): EventRegistrationLabels {\n return locale.toLowerCase().startsWith('de') ? REGISTRATION_COPY.de : REGISTRATION_COPY.en\n}\n\nfunction selectable(ticket: PublicEventTicketType): boolean {\n return (\n ticket.salesState === 'on_sale' &&\n ticket.maxPerOrder >= ticket.minPerOrder &&\n (ticket.available === null || ticket.available >= ticket.minPerOrder)\n )\n}\n\nexport interface EventRegistrationFormProps {\n readonly event: PublicEvent\n readonly locale: string\n readonly client: EventsClient\n readonly cartToken?: string\n readonly fallbackLocale?: string\n readonly onCheckoutSession?: (session: EventCheckoutSession) => void\n readonly labels?: Partial<EventRegistrationLabels>\n readonly className?: string\n}\n\nexport function EventRegistrationForm({\n event,\n locale,\n client,\n cartToken,\n fallbackLocale,\n onCheckoutSession,\n labels,\n className,\n}: EventRegistrationFormProps) {\n const tickets = event.occurrences.flatMap((occurrence) => occurrence.ticketTypes)\n const firstTicket = tickets.find(selectable)\n const [ticketTypeId, setTicketTypeId] = useState(firstTicket?.id ?? '')\n const ticket = tickets.find((candidate) => candidate.id === ticketTypeId)\n const initialQuantity = ticket?.minPerOrder ?? 1\n const [quantity, setQuantity] = useState(initialQuantity)\n const [email, setEmail] = useState('')\n const [preflightError, setPreflightError] = useState(false)\n const [buyerAnswers, setBuyerAnswers] = useState<FormAnswers>({})\n const [participantAnswers, setParticipantAnswers] = useState<FormAnswers[]>(() =>\n Array.from({ length: initialQuantity }, () => ({})),\n )\n const generatedId = useId()\n const instanceId = `event-registration-${generatedId.replaceAll(':', '')}`\n const selectedProjectionIdentity = stablePayload({\n buyerForm: ticket?.buyerForm ?? null,\n participantForm: ticket?.participantForm ?? null,\n })\n const previousProjection = useRef(selectedProjectionIdentity)\n const [projectionGeneration, setProjectionGeneration] = useState(0)\n const registration = useEventRegistration({\n client,\n ...(onCheckoutSession ? { onCheckoutSession } : {}),\n })\n const copy = { ...registrationCopy(locale), ...labels }\n const previousEvent = useRef(`${event.id}:${event.handle}:${event.registrationMode}:${locale}`)\n const previousCartToken = useRef(cartToken)\n\n useEffect(() => {\n const eventIdentity = `${event.id}:${event.handle}:${event.registrationMode}:${locale}`\n if (previousEvent.current !== eventIdentity) {\n previousEvent.current = eventIdentity\n const nextTicket = tickets.find(selectable)\n setTicketTypeId(nextTicket?.id ?? '')\n setQuantity(nextTicket?.minPerOrder ?? 1)\n setEmail('')\n setBuyerAnswers({})\n setParticipantAnswers(Array.from({ length: nextTicket?.minPerOrder ?? 1 }, () => ({})))\n previousProjection.current = selectedProjectionIdentity\n setProjectionGeneration((current) => current + 1)\n setPreflightError(false)\n registration.reset()\n } else if (previousProjection.current !== selectedProjectionIdentity) {\n previousProjection.current = selectedProjectionIdentity\n setBuyerAnswers({})\n setParticipantAnswers(Array.from({ length: quantity }, () => ({})))\n setProjectionGeneration((current) => current + 1)\n setPreflightError(false)\n registration.reset()\n }\n if (previousCartToken.current !== cartToken) {\n previousCartToken.current = cartToken\n setPreflightError(false)\n registration.reset()\n }\n }, [\n cartToken,\n event.handle,\n event.id,\n event.registrationMode,\n locale,\n quantity,\n selectedProjectionIdentity,\n ])\n\n function selectTicket(nextId: string): void {\n const next = tickets.find((candidate) => candidate.id === nextId)\n if (!next || !selectable(next)) return\n setTicketTypeId(nextId)\n setQuantity(next.minPerOrder)\n setBuyerAnswers({})\n setParticipantAnswers(Array.from({ length: next.minPerOrder }, () => ({})))\n registration.reset()\n setPreflightError(false)\n }\n\n function updateQuantity(next: number): void {\n if (!ticket) return\n const maximum = Math.min(ticket.maxPerOrder, ticket.available ?? ticket.maxPerOrder)\n const normalized = Number.isFinite(next) ? Math.trunc(next) : ticket.minPerOrder\n const bounded = Math.max(ticket.minPerOrder, Math.min(maximum, normalized))\n setQuantity(bounded)\n setParticipantAnswers((current) =>\n Array.from({ length: bounded }, (_, index) => current[index] ?? {}),\n )\n registration.reset()\n setPreflightError(false)\n }\n\n async function handleSubmit(submitEvent: FormEvent<HTMLFormElement>): Promise<void> {\n submitEvent.preventDefault()\n if (!ticket || !selectable(ticket)) {\n setPreflightError(true)\n return\n }\n setPreflightError(false)\n const buyer = ticket.buyerForm\n ? { versionId: ticket.buyerForm.versionId, answers: buyerAnswers }\n : undefined\n const participants = ticket.participantForm\n ? participantAnswers.map((answers) => ({\n versionId: ticket.participantForm!.versionId,\n answers,\n }))\n : undefined\n\n let submission: EventRegistrationSubmission\n if (event.registrationMode === 'instant') {\n if (!cartToken) {\n setPreflightError(true)\n return\n }\n submission = {\n registrationMode: 'instant',\n handle: event.handle,\n idempotencyKey: '',\n input: {\n ticketTypeId: ticket.id,\n quantity,\n cartToken,\n locale,\n ...(buyer ? { buyer } : {}),\n ...(participants ? { participants } : {}),\n },\n }\n } else if (event.registrationMode === 'approval_then_payment') {\n submission = {\n registrationMode: 'approval_then_payment',\n handle: event.handle,\n idempotencyKey: '',\n input: {\n ticketTypeId: ticket.id,\n quantity,\n contactEmail: email,\n locale,\n ...(buyer ? { buyer } : {}),\n ...(participants ? { participants } : {}),\n },\n }\n } else {\n submission = {\n registrationMode: 'waitlist_only',\n handle: event.handle,\n input: { ticketTypeId: ticket.id, quantity, email },\n }\n }\n await registration.submit(submission)\n }\n\n const maximum = ticket\n ? Math.min(ticket.maxPerOrder, ticket.available ?? ticket.maxPerOrder)\n : undefined\n const renderedState = preflightError ? 'request_error' : registration.state\n const status = renderedState === 'idle' ? '' : copy[renderedState]\n\n return (\n <form className={className} data-kotao-event-registration onSubmit={handleSubmit}>\n <label>\n <span>{copy.ticket}</span>\n <select\n data-kotao-event-ticket\n value={ticketTypeId}\n onChange={(changeEvent) => selectTicket(changeEvent.currentTarget.value)}\n >\n {tickets.map((candidate) => (\n <option key={candidate.id} value={candidate.id} disabled={!selectable(candidate)}>\n {candidate.title}\n </option>\n ))}\n </select>\n </label>\n <label>\n <span>{copy.quantity}</span>\n <input\n name=\"quantity\"\n type=\"number\"\n value={quantity}\n min={ticket?.minPerOrder}\n max={maximum}\n required\n step={1}\n onChange={(changeEvent) => updateQuantity(changeEvent.currentTarget.valueAsNumber)}\n />\n </label>\n {event.registrationMode !== 'instant' ? (\n <label>\n <span>{copy.email}</span>\n <input\n type=\"email\"\n required\n value={email}\n onChange={(changeEvent) => {\n setEmail(changeEvent.currentTarget.value)\n setPreflightError(false)\n registration.reset()\n }}\n />\n </label>\n ) : null}\n {ticket?.buyerForm ? (\n <div data-kotao-event-buyer-form>\n <StorefrontFormFields\n key={`${projectionGeneration}:${ticket.id}:${ticket.buyerForm.versionId}`}\n form={eventFormForRenderer(ticket.buyerForm)}\n locale={locale}\n {...(fallbackLocale === undefined ? {} : { fallbackLocale })}\n answers={buyerAnswers}\n idPrefix={`${instanceId}-event-${event.id}-ticket-${ticket.id}-buyer`}\n onAnswersChange={(next) => {\n setBuyerAnswers(next)\n setPreflightError(false)\n registration.reset()\n }}\n />\n </div>\n ) : null}\n {ticket?.participantForm\n ? participantAnswers.map((answers, index) => (\n <div\n key={`${projectionGeneration}:${ticket.id}:${ticket.participantForm!.versionId}:${index}`}\n data-kotao-event-participant-form\n >\n <StorefrontFormFields\n form={eventFormForRenderer(ticket.participantForm!)}\n locale={locale}\n {...(fallbackLocale === undefined ? {} : { fallbackLocale })}\n answers={answers}\n idPrefix={`${instanceId}-event-${event.id}-ticket-${ticket.id}-participant-${index}`}\n onAnswersChange={(next) => {\n setParticipantAnswers((current) =>\n current.map((value, participantIndex) =>\n participantIndex === index ? next : value,\n ),\n )\n setPreflightError(false)\n registration.reset()\n }}\n />\n </div>\n ))\n : null}\n <button type=\"submit\" disabled={registration.state === 'submitting'}>\n {copy.submit}\n </button>\n <p role=\"status\" aria-live=\"polite\" aria-atomic=\"true\" data-kotao-event-state={renderedState}>\n {status}\n </p>\n </form>\n )\n}\n\nexport type EventOfferState =\n | 'resolving'\n | 'active'\n | 'claiming'\n | 'claimed'\n | 'expired'\n | 'unavailable'\n | 'request_error'\n\nexport interface EventApprovalOfferLabels {\n readonly resolving: ReactNode\n readonly claim: ReactNode\n readonly resume: ReactNode\n readonly claiming: ReactNode\n readonly claimed: ReactNode\n readonly expired: ReactNode\n readonly unavailable: ReactNode\n readonly requestError: ReactNode\n readonly retry?: ReactNode\n readonly expires: ReactNode\n}\n\nconst OFFER_LABELS: EventApprovalOfferLabels = {\n resolving: 'Loading offer…',\n claim: 'Claim offer',\n resume: 'Continue to checkout',\n claiming: 'Starting checkout…',\n claimed: 'Offer claimed. Continue to checkout.',\n expired: 'This offer has expired.',\n unavailable: 'This offer is not available.',\n requestError: 'Something went wrong. Please try again.',\n retry: 'Try again',\n expires: 'Offer expires at',\n}\n\nexport interface EventApprovalOfferProps {\n readonly client: EventsClient\n readonly offerId: string\n readonly cartToken: string\n readonly locale: string\n readonly idempotencyKey?: string\n readonly location?: OfferTokenLocation\n readonly history?: OfferTokenHistory\n readonly labels?: Partial<EventApprovalOfferLabels>\n readonly onCheckoutSession?: (session: EventCheckoutSession) => void\n readonly initialResolution?: EventApprovalOfferResolution\n readonly initialState?: Exclude<EventOfferState, 'resolving' | 'active' | 'claiming'>\n readonly className?: string\n}\n\nfunction browserLocation(): OfferTokenLocation | undefined {\n return typeof window === 'undefined' ? undefined : window.location\n}\n\nfunction browserHistory(): OfferTokenHistory | undefined {\n return typeof window === 'undefined' ? undefined : window.history\n}\n\nexport function EventApprovalOffer({\n client,\n offerId,\n cartToken,\n locale,\n idempotencyKey,\n location,\n history,\n labels,\n onCheckoutSession,\n initialResolution,\n initialState,\n className,\n}: EventApprovalOfferProps) {\n const copy = { ...OFFER_LABELS, ...labels }\n const token = useRef<string | null>(null)\n const consumedHrefMarkers = useRef(new Set<string>())\n const offerGeneration = useRef(0)\n const resolvedGeneration = useRef<number | null>(initialResolution ? 0 : null)\n const mounted = useRef(false)\n const strictCleanupGeneration = useRef<number | null>(null)\n const activeDependencies = useRef({ client, cartToken, locale, onCheckoutSession })\n const claimIdempotencyKey = useMemo(\n () => idempotencyKey ?? `events-claim-${Date.now()}-${Math.random().toString(36).slice(2)}`,\n [idempotencyKey, offerId],\n )\n const resolveIdempotencyKey = useMemo(\n () => `events-resolve-${Date.now()}-${Math.random().toString(36).slice(2)}`,\n [offerId],\n )\n const [canClaim, setCanClaim] = useState(initialResolution?.state === 'active')\n const [resolution, setResolution] = useState<EventApprovalOfferResolution | null>(\n initialResolution ?? null,\n )\n const [state, setState] = useState<EventOfferState>(\n initialResolution\n ? initialResolution.state === 'claimed'\n ? 'claimed'\n : 'active'\n : (initialState ?? 'resolving'),\n )\n\n async function resolveCapability(generation: number, claimToken: string): Promise<void> {\n try {\n const offer = await client.resolveOffer(offerId, claimToken, resolveIdempotencyKey)\n if (!mounted.current || generation !== offerGeneration.current) return\n resolvedGeneration.current = generation\n setResolution(offer)\n if (offer.state === 'claimed') setState('claimed')\n else if (new Date(offer.expiresAt).getTime() <= Date.now()) setState('expired')\n else setState('active')\n } catch (error) {\n if (!mounted.current || generation !== offerGeneration.current) return\n setState(\n error instanceof StorefrontEventsRequestError && error.status === 409\n ? 'unavailable'\n : 'request_error',\n )\n }\n }\n\n useLayoutEffect(() => {\n if (\n strictCleanupGeneration.current !== null &&\n offerGeneration.current === strictCleanupGeneration.current + 1\n ) {\n // React Strict Mode immediately remounts effects; restore the still-live attempt without\n // issuing a second capability-bearing request.\n offerGeneration.current = strictCleanupGeneration.current\n }\n strictCleanupGeneration.current = null\n mounted.current = true\n return () => {\n mounted.current = false\n strictCleanupGeneration.current = offerGeneration.current\n offerGeneration.current += 1\n }\n }, [])\n\n useLayoutEffect(() => {\n const previous = activeDependencies.current\n if (\n previous.client === client &&\n previous.cartToken === cartToken &&\n previous.locale === locale &&\n previous.onCheckoutSession === onCheckoutSession\n ) {\n return\n }\n activeDependencies.current = { client, cartToken, locale, onCheckoutSession }\n offerGeneration.current += 1\n resolvedGeneration.current = null\n token.current = null\n setCanClaim(false)\n setResolution(null)\n setState('unavailable')\n }, [cartToken, client, locale, onCheckoutSession])\n\n useLayoutEffect(() => {\n if (initialState !== undefined) return\n const currentLocation = location ?? browserLocation()\n const currentHistory = history ?? browserHistory()\n if (currentLocation === undefined || currentHistory === undefined) {\n if (initialResolution === undefined) setState('unavailable')\n return\n }\n const hrefMarker = offerTokenHrefMarker(currentLocation.href)\n if (consumedHrefMarkers.current.has(hrefMarker)) return\n consumedHrefMarkers.current.add(hrefMarker)\n offerGeneration.current += 1\n const generation = offerGeneration.current\n resolvedGeneration.current = null\n token.current = null\n setCanClaim(false)\n setResolution(null)\n setState('resolving')\n const claimToken = consumeOfferTokenFragment(currentLocation, currentHistory)\n consumedHrefMarkers.current.add(offerTokenHrefMarker(currentLocation.href))\n token.current = claimToken\n setCanClaim(claimToken !== null)\n if (claimToken === null) {\n if (initialResolution === undefined) setState('unavailable')\n return\n }\n void resolveCapability(generation, claimToken)\n })\n\n function retryResolve(): void {\n const claimToken = token.current\n if (claimToken === null) {\n setState('unavailable')\n return\n }\n const generation = offerGeneration.current\n setState('resolving')\n void resolveCapability(generation, claimToken)\n }\n\n async function claim(): Promise<void> {\n const claimToken = token.current\n const generation = offerGeneration.current\n if (\n claimToken === null ||\n resolvedGeneration.current !== generation ||\n resolution?.offerId !== offerId\n ) {\n setState('unavailable')\n return\n }\n setState('claiming')\n try {\n const session = await client.claimOffer(\n offerId,\n { claimToken, cartToken, locale },\n claimIdempotencyKey,\n )\n if (!mounted.current || generation !== offerGeneration.current) return\n token.current = null\n setCanClaim(false)\n setState('claimed')\n onCheckoutSession?.(session)\n } catch (error) {\n if (!mounted.current || generation !== offerGeneration.current) return\n setState(\n error instanceof StorefrontEventsRequestError && error.status === 409\n ? 'unavailable'\n : 'request_error',\n )\n }\n }\n\n const status =\n state === 'resolving'\n ? copy.resolving\n : state === 'claiming'\n ? copy.claiming\n : state === 'claimed'\n ? copy.claimed\n : state === 'expired'\n ? copy.expired\n : state === 'unavailable'\n ? copy.unavailable\n : state === 'request_error'\n ? copy.requestError\n : null\n\n return (\n <section className={className} data-kotao-event-approval-offer>\n {resolution ? (\n <header>\n <h1>{resolution.eventTitle}</h1>\n <p>\n {resolution.ticketTypeTitle} · {resolution.quantity}\n </p>\n <time dateTime={resolution.occurrenceStartsAt}>{resolution.occurrenceStartsAt}</time>\n </header>\n ) : null}\n {(state === 'active' ||\n (state === 'claimed' && canClaim) ||\n (state === 'request_error' && canClaim)) &&\n resolution ? (\n <>\n <p>\n {copy.expires}: <time dateTime={resolution.expiresAt}>{resolution.expiresAt}</time>\n </p>\n <button type=\"button\" onClick={claim}>\n {state === 'claimed' ? copy.resume : copy.claim}\n </button>\n </>\n ) : null}\n {state === 'request_error' && canClaim && resolution === null ? (\n <button type=\"button\" onClick={retryResolve}>\n {copy.retry}\n </button>\n ) : null}\n <p role=\"status\" aria-live=\"polite\" aria-atomic=\"true\">\n {status}\n </p>\n </section>\n )\n}\n"]}
1
+ {"version":3,"sources":["../src/events/react.tsx"],"names":["maximum"],"mappings":"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","file":"events-react.js","sourcesContent":["import {\n type FormEvent,\n type ReactNode,\n useCallback,\n useEffect,\n useId,\n useLayoutEffect,\n useMemo,\n useRef,\n useState,\n} from 'react'\n\nimport { StorefrontFormFields } from '../react/form'\nimport type { FormAnswers, PublicForm } from '../forms'\nimport {\n consumeOfferTokenFragment,\n offerTokenHrefMarker,\n type OfferTokenHistory,\n type OfferTokenLocation,\n} from './offer-token'\nimport { StorefrontEventsRequestError, type EventsClient } from './client'\nimport type {\n EventApprovalOfferResolution,\n EventCheckoutSession,\n EventRegistrationSubmission,\n PublicEvent,\n PublicEventForm,\n PublicEventTicketType,\n} from './types'\n\nexport type EventRegistrationState =\n | 'idle'\n | 'submitting'\n | 'awaiting_approval'\n | 'waitlisted'\n | 'checkout_ready'\n | 'request_error'\n\nexport function useEventRegistration(input: {\n readonly client: EventsClient\n readonly onCheckoutSession?: (session: EventCheckoutSession) => void\n}): {\n readonly state: EventRegistrationState\n readonly submit: (submission: EventRegistrationSubmission) => Promise<void>\n readonly reset: () => void\n} {\n const [state, setState] = useState<EventRegistrationState>('idle')\n const generation = useRef(0)\n const logicalPayload = useRef<string | null>(null)\n const idempotencyKey = useRef<string | null>(null)\n const activeClient = useRef(input.client)\n const activeCallback = useRef(input.onCheckoutSession)\n\n useEffect(() => {\n if (\n activeClient.current !== input.client ||\n activeCallback.current !== input.onCheckoutSession\n ) {\n activeClient.current = input.client\n activeCallback.current = input.onCheckoutSession\n generation.current += 1\n setState('idle')\n }\n }, [input.client, input.onCheckoutSession])\n\n useEffect(\n () => () => {\n generation.current += 1\n },\n [],\n )\n\n const reset = useCallback(() => {\n generation.current += 1\n setState('idle')\n }, [])\n\n async function submit(submission: EventRegistrationSubmission): Promise<void> {\n const attempt = ++generation.current\n const prepared = registrationSubmission(submission, logicalPayload, idempotencyKey)\n setState('submitting')\n try {\n const result = await input.client.submitRegistration(prepared)\n if (attempt !== generation.current) return\n if (result.kind === 'checkout') {\n input.onCheckoutSession?.(result.checkoutSession)\n setState('checkout_ready')\n } else if (result.kind === 'approval') {\n setState('awaiting_approval')\n } else {\n setState('waitlisted')\n }\n } catch {\n if (attempt !== generation.current) return\n setState('request_error')\n }\n }\n\n return { state, submit, reset }\n}\n\nfunction registrationKey(mode: PublicEvent['registrationMode']): string {\n const kind = mode === 'approval_then_payment' ? 'application' : 'checkout'\n return `events-${kind}-${Date.now()}-${Math.random().toString(36).slice(2)}`\n}\n\nfunction stablePayload(value: unknown): string {\n return JSON.stringify(value, (_key, item: unknown) => {\n if (item === null || typeof item !== 'object' || Array.isArray(item)) return item\n return Object.fromEntries(\n Object.entries(item as Record<string, unknown>).sort(([left], [right]) =>\n left.localeCompare(right),\n ),\n )\n })\n}\n\nfunction registrationSubmission(\n submission: EventRegistrationSubmission,\n previousPayload: { current: string | null },\n previousKey: { current: string | null },\n): EventRegistrationSubmission {\n if (submission.registrationMode === 'waitlist_only') return submission\n if (submission.idempotencyKey.trim() !== '') return submission\n const payload = {\n registrationMode: submission.registrationMode,\n handle: submission.handle,\n input: submission.input,\n }\n const identity = stablePayload(payload)\n if (identity !== previousPayload.current || previousKey.current === null) {\n previousPayload.current = identity\n previousKey.current = registrationKey(submission.registrationMode)\n }\n return { ...submission, idempotencyKey: previousKey.current }\n}\n\n/** Adapts an event-owned form without claiming that it is a published standalone Forms version. */\nfunction eventFormForRenderer(form: PublicEventForm): PublicForm {\n return {\n definition: {\n id: form.definitionId,\n handle: form.definitionId,\n title: form.title,\n },\n version: {\n id: form.versionId,\n definitionId: form.definitionId,\n schema: form.schema,\n },\n } as PublicForm\n}\n\nconst REGISTRATION_COPY = {\n en: {\n submit: 'Register',\n submitting: 'Submitting…',\n awaiting_approval: 'Application received. Awaiting approval.',\n waitlisted: 'You joined the waitlist.',\n checkout_ready: 'Registration ready for checkout.',\n request_error: 'Something went wrong. Please try again.',\n email: 'Email',\n quantity: 'Quantity',\n ticket: 'Ticket',\n },\n de: {\n submit: 'Anmelden',\n submitting: 'Wird gesendet…',\n awaiting_approval: 'Anmeldung erhalten. Sie wartet auf Freigabe.',\n waitlisted: 'Du stehst auf der Warteliste.',\n checkout_ready: 'Die Anmeldung kann bezahlt werden.',\n request_error: 'Etwas ist schiefgelaufen. Bitte versuche es erneut.',\n email: 'E-Mail',\n quantity: 'Anzahl',\n ticket: 'Ticket',\n },\n} as const\n\nexport interface EventRegistrationLabels {\n readonly submit: string\n readonly submitting: string\n readonly awaiting_approval: string\n readonly waitlisted: string\n readonly checkout_ready: string\n readonly request_error: string\n readonly email: string\n readonly quantity: string\n readonly ticket: string\n}\n\nfunction registrationCopy(locale: string): EventRegistrationLabels {\n return locale.toLowerCase().startsWith('de') ? REGISTRATION_COPY.de : REGISTRATION_COPY.en\n}\n\nfunction selectable(ticket: PublicEventTicketType): boolean {\n return (\n ticket.salesState === 'on_sale' &&\n ticket.maxPerOrder >= ticket.minPerOrder &&\n (ticket.available === null || ticket.available >= ticket.minPerOrder)\n )\n}\n\nexport interface EventRegistrationFormProps {\n readonly event: PublicEvent\n readonly locale: string\n readonly client: EventsClient\n readonly cartToken?: string\n readonly fallbackLocale?: string\n readonly onCheckoutSession?: (session: EventCheckoutSession) => void\n readonly labels?: Partial<EventRegistrationLabels>\n readonly className?: string\n}\n\nexport function EventRegistrationForm({\n event,\n locale,\n client,\n cartToken,\n fallbackLocale,\n onCheckoutSession,\n labels,\n className,\n}: EventRegistrationFormProps) {\n const tickets = event.occurrences.flatMap((occurrence) => occurrence.ticketTypes)\n const firstTicket = tickets.find(selectable)\n const [ticketTypeId, setTicketTypeId] = useState(firstTicket?.id ?? '')\n const ticket = tickets.find((candidate) => candidate.id === ticketTypeId)\n const initialQuantity = ticket?.minPerOrder ?? 1\n const [quantity, setQuantity] = useState(initialQuantity)\n const [email, setEmail] = useState('')\n const [preflightError, setPreflightError] = useState(false)\n const [buyerAnswers, setBuyerAnswers] = useState<FormAnswers>({})\n const [participantAnswers, setParticipantAnswers] = useState<FormAnswers[]>(() =>\n Array.from({ length: initialQuantity }, () => ({})),\n )\n const generatedId = useId()\n const instanceId = `event-registration-${generatedId.replaceAll(':', '')}`\n const selectedProjectionIdentity = stablePayload({\n buyerForm: ticket?.buyerForm ?? null,\n participantForm: ticket?.participantForm ?? null,\n })\n const previousProjection = useRef(selectedProjectionIdentity)\n const [projectionGeneration, setProjectionGeneration] = useState(0)\n const registration = useEventRegistration({\n client,\n ...(onCheckoutSession ? { onCheckoutSession } : {}),\n })\n const copy = { ...registrationCopy(locale), ...labels }\n const previousEvent = useRef(`${event.id}:${event.handle}:${event.registrationMode}:${locale}`)\n const previousCartToken = useRef(cartToken)\n\n useEffect(() => {\n const eventIdentity = `${event.id}:${event.handle}:${event.registrationMode}:${locale}`\n if (previousEvent.current !== eventIdentity) {\n previousEvent.current = eventIdentity\n const nextTicket = tickets.find(selectable)\n setTicketTypeId(nextTicket?.id ?? '')\n setQuantity(nextTicket?.minPerOrder ?? 1)\n setEmail('')\n setBuyerAnswers({})\n setParticipantAnswers(Array.from({ length: nextTicket?.minPerOrder ?? 1 }, () => ({})))\n previousProjection.current = selectedProjectionIdentity\n setProjectionGeneration((current) => current + 1)\n setPreflightError(false)\n registration.reset()\n } else if (previousProjection.current !== selectedProjectionIdentity) {\n previousProjection.current = selectedProjectionIdentity\n setBuyerAnswers({})\n setParticipantAnswers(Array.from({ length: quantity }, () => ({})))\n setProjectionGeneration((current) => current + 1)\n setPreflightError(false)\n registration.reset()\n }\n if (previousCartToken.current !== cartToken) {\n previousCartToken.current = cartToken\n setPreflightError(false)\n registration.reset()\n }\n }, [\n cartToken,\n event.handle,\n event.id,\n event.registrationMode,\n locale,\n quantity,\n selectedProjectionIdentity,\n ])\n\n function selectTicket(nextId: string): void {\n const next = tickets.find((candidate) => candidate.id === nextId)\n if (!next || !selectable(next)) return\n setTicketTypeId(nextId)\n setQuantity(next.minPerOrder)\n setBuyerAnswers({})\n setParticipantAnswers(Array.from({ length: next.minPerOrder }, () => ({})))\n registration.reset()\n setPreflightError(false)\n }\n\n function updateQuantity(next: number): void {\n if (!ticket) return\n const maximum = Math.min(ticket.maxPerOrder, ticket.available ?? ticket.maxPerOrder)\n const normalized = Number.isFinite(next) ? Math.trunc(next) : ticket.minPerOrder\n const bounded = Math.max(ticket.minPerOrder, Math.min(maximum, normalized))\n setQuantity(bounded)\n setParticipantAnswers((current) =>\n Array.from({ length: bounded }, (_, index) => current[index] ?? {}),\n )\n registration.reset()\n setPreflightError(false)\n }\n\n async function handleSubmit(submitEvent: FormEvent<HTMLFormElement>): Promise<void> {\n submitEvent.preventDefault()\n if (!ticket || !selectable(ticket)) {\n setPreflightError(true)\n return\n }\n setPreflightError(false)\n const buyer = ticket.buyerForm\n ? { versionId: ticket.buyerForm.versionId, answers: buyerAnswers }\n : undefined\n const participants = ticket.participantForm\n ? participantAnswers.map((answers) => ({\n versionId: ticket.participantForm!.versionId,\n answers,\n }))\n : undefined\n\n let submission: EventRegistrationSubmission\n if (event.registrationMode === 'instant') {\n if (!cartToken) {\n setPreflightError(true)\n return\n }\n submission = {\n registrationMode: 'instant',\n handle: event.handle,\n idempotencyKey: '',\n input: {\n ticketTypeId: ticket.id,\n quantity,\n cartToken,\n locale,\n ...(buyer ? { buyer } : {}),\n ...(participants ? { participants } : {}),\n },\n }\n } else if (event.registrationMode === 'approval_then_payment') {\n submission = {\n registrationMode: 'approval_then_payment',\n handle: event.handle,\n idempotencyKey: '',\n input: {\n ticketTypeId: ticket.id,\n quantity,\n contactEmail: email,\n locale,\n ...(buyer ? { buyer } : {}),\n ...(participants ? { participants } : {}),\n },\n }\n } else {\n submission = {\n registrationMode: 'waitlist_only',\n handle: event.handle,\n input: { ticketTypeId: ticket.id, quantity, email },\n }\n }\n await registration.submit(submission)\n }\n\n const maximum = ticket\n ? Math.min(ticket.maxPerOrder, ticket.available ?? ticket.maxPerOrder)\n : undefined\n const renderedState = preflightError ? 'request_error' : registration.state\n const status = renderedState === 'idle' ? '' : copy[renderedState]\n\n return (\n <form className={className} data-kotao-event-registration onSubmit={handleSubmit}>\n <label>\n <span>{copy.ticket}</span>\n <select\n data-kotao-event-ticket\n value={ticketTypeId}\n onChange={(changeEvent) => selectTicket(changeEvent.currentTarget.value)}\n >\n {tickets.map((candidate) => (\n <option key={candidate.id} value={candidate.id} disabled={!selectable(candidate)}>\n {candidate.title}\n </option>\n ))}\n </select>\n </label>\n <label>\n <span>{copy.quantity}</span>\n <input\n name=\"quantity\"\n type=\"number\"\n value={quantity}\n min={ticket?.minPerOrder}\n max={maximum}\n required\n step={1}\n onChange={(changeEvent) => updateQuantity(changeEvent.currentTarget.valueAsNumber)}\n />\n </label>\n {event.registrationMode !== 'instant' ? (\n <label>\n <span>{copy.email}</span>\n <input\n type=\"email\"\n required\n value={email}\n onChange={(changeEvent) => {\n setEmail(changeEvent.currentTarget.value)\n setPreflightError(false)\n registration.reset()\n }}\n />\n </label>\n ) : null}\n {ticket?.buyerForm ? (\n <div data-kotao-event-buyer-form>\n <StorefrontFormFields\n key={`${projectionGeneration}:${ticket.id}:${ticket.buyerForm.versionId}`}\n form={eventFormForRenderer(ticket.buyerForm)}\n locale={locale}\n {...(fallbackLocale === undefined ? {} : { fallbackLocale })}\n answers={buyerAnswers}\n idPrefix={`${instanceId}-event-${event.id}-ticket-${ticket.id}-buyer`}\n onAnswersChange={(next) => {\n setBuyerAnswers(next)\n setPreflightError(false)\n registration.reset()\n }}\n />\n </div>\n ) : null}\n {ticket?.participantForm\n ? participantAnswers.map((answers, index) => (\n <div\n key={`${projectionGeneration}:${ticket.id}:${ticket.participantForm!.versionId}:${index}`}\n data-kotao-event-participant-form\n >\n <StorefrontFormFields\n form={eventFormForRenderer(ticket.participantForm!)}\n locale={locale}\n {...(fallbackLocale === undefined ? {} : { fallbackLocale })}\n answers={answers}\n idPrefix={`${instanceId}-event-${event.id}-ticket-${ticket.id}-participant-${index}`}\n onAnswersChange={(next) => {\n setParticipantAnswers((current) =>\n current.map((value, participantIndex) =>\n participantIndex === index ? next : value,\n ),\n )\n setPreflightError(false)\n registration.reset()\n }}\n />\n </div>\n ))\n : null}\n <button type=\"submit\" disabled={registration.state === 'submitting'}>\n {copy.submit}\n </button>\n <p role=\"status\" aria-live=\"polite\" aria-atomic=\"true\" data-kotao-event-state={renderedState}>\n {status}\n </p>\n </form>\n )\n}\n\nexport type EventOfferState =\n | 'resolving'\n | 'active'\n | 'claiming'\n | 'claimed'\n | 'expired'\n | 'unavailable'\n | 'request_error'\n\nexport interface EventApprovalOfferLabels {\n readonly resolving: ReactNode\n readonly claim: ReactNode\n readonly resume: ReactNode\n readonly claiming: ReactNode\n readonly claimed: ReactNode\n readonly expired: ReactNode\n readonly unavailable: ReactNode\n readonly requestError: ReactNode\n readonly retry?: ReactNode\n readonly expires: ReactNode\n}\n\nconst OFFER_LABELS: EventApprovalOfferLabels = {\n resolving: 'Loading offer…',\n claim: 'Claim offer',\n resume: 'Continue to checkout',\n claiming: 'Starting checkout…',\n claimed: 'Offer claimed. Continue to checkout.',\n expired: 'This offer has expired.',\n unavailable: 'This offer is not available.',\n requestError: 'Something went wrong. Please try again.',\n retry: 'Try again',\n expires: 'Offer expires at',\n}\n\nexport interface EventApprovalOfferProps {\n readonly client: EventsClient\n readonly offerId: string\n readonly cartToken: string\n readonly locale: string\n readonly idempotencyKey?: string\n readonly location?: OfferTokenLocation\n readonly history?: OfferTokenHistory\n readonly labels?: Partial<EventApprovalOfferLabels>\n /** Formats visible dates without changing the timestamps used to resolve or claim the offer. */\n readonly formatDateTime?: (value: string) => ReactNode\n readonly onCheckoutSession?: (session: EventCheckoutSession) => void\n readonly initialResolution?: EventApprovalOfferResolution\n readonly initialState?: Exclude<EventOfferState, 'resolving' | 'active' | 'claiming'>\n readonly className?: string\n}\n\nfunction browserLocation(): OfferTokenLocation | undefined {\n return typeof window === 'undefined' ? undefined : window.location\n}\n\nfunction browserHistory(): OfferTokenHistory | undefined {\n return typeof window === 'undefined' ? undefined : window.history\n}\n\nexport function EventApprovalOffer({\n client,\n offerId,\n cartToken,\n locale,\n idempotencyKey,\n location,\n history,\n labels,\n formatDateTime,\n onCheckoutSession,\n initialResolution,\n initialState,\n className,\n}: EventApprovalOfferProps) {\n const copy = { ...OFFER_LABELS, ...labels }\n const token = useRef<string | null>(null)\n const consumedHrefMarkers = useRef(new Set<string>())\n const offerGeneration = useRef(0)\n const resolvedGeneration = useRef<number | null>(initialResolution ? 0 : null)\n const mounted = useRef(false)\n const strictCleanupGeneration = useRef<number | null>(null)\n const activeDependencies = useRef({ client, cartToken, locale, onCheckoutSession })\n const claimIdempotencyKey = useMemo(\n () => idempotencyKey ?? `events-claim-${Date.now()}-${Math.random().toString(36).slice(2)}`,\n [idempotencyKey, offerId],\n )\n const resolveIdempotencyKey = useMemo(\n () => `events-resolve-${Date.now()}-${Math.random().toString(36).slice(2)}`,\n [offerId],\n )\n const [canClaim, setCanClaim] = useState(initialResolution?.state === 'active')\n const [resolution, setResolution] = useState<EventApprovalOfferResolution | null>(\n initialResolution ?? null,\n )\n const [state, setState] = useState<EventOfferState>(\n initialResolution\n ? initialResolution.state === 'claimed'\n ? 'claimed'\n : 'active'\n : (initialState ?? 'resolving'),\n )\n\n async function resolveCapability(generation: number, claimToken: string): Promise<void> {\n try {\n const offer = await client.resolveOffer(offerId, claimToken, resolveIdempotencyKey)\n if (!mounted.current || generation !== offerGeneration.current) return\n resolvedGeneration.current = generation\n setResolution(offer)\n if (offer.state === 'claimed') setState('claimed')\n else if (new Date(offer.expiresAt).getTime() <= Date.now()) setState('expired')\n else setState('active')\n } catch (error) {\n if (!mounted.current || generation !== offerGeneration.current) return\n setState(\n error instanceof StorefrontEventsRequestError && error.status === 409\n ? 'unavailable'\n : 'request_error',\n )\n }\n }\n\n useLayoutEffect(() => {\n if (\n strictCleanupGeneration.current !== null &&\n offerGeneration.current === strictCleanupGeneration.current + 1\n ) {\n // React Strict Mode immediately remounts effects; restore the still-live attempt without\n // issuing a second capability-bearing request.\n offerGeneration.current = strictCleanupGeneration.current\n }\n strictCleanupGeneration.current = null\n mounted.current = true\n return () => {\n mounted.current = false\n strictCleanupGeneration.current = offerGeneration.current\n offerGeneration.current += 1\n }\n }, [])\n\n useLayoutEffect(() => {\n const previous = activeDependencies.current\n if (\n previous.client === client &&\n previous.cartToken === cartToken &&\n previous.locale === locale &&\n previous.onCheckoutSession === onCheckoutSession\n ) {\n return\n }\n activeDependencies.current = { client, cartToken, locale, onCheckoutSession }\n offerGeneration.current += 1\n resolvedGeneration.current = null\n token.current = null\n setCanClaim(false)\n setResolution(null)\n setState('unavailable')\n }, [cartToken, client, locale, onCheckoutSession])\n\n useLayoutEffect(() => {\n if (initialState !== undefined) return\n const currentLocation = location ?? browserLocation()\n const currentHistory = history ?? browserHistory()\n if (currentLocation === undefined || currentHistory === undefined) {\n if (initialResolution === undefined) setState('unavailable')\n return\n }\n const hrefMarker = offerTokenHrefMarker(currentLocation.href)\n if (consumedHrefMarkers.current.has(hrefMarker)) return\n consumedHrefMarkers.current.add(hrefMarker)\n offerGeneration.current += 1\n const generation = offerGeneration.current\n resolvedGeneration.current = null\n token.current = null\n setCanClaim(false)\n setResolution(null)\n setState('resolving')\n const claimToken = consumeOfferTokenFragment(currentLocation, currentHistory)\n consumedHrefMarkers.current.add(offerTokenHrefMarker(currentLocation.href))\n token.current = claimToken\n setCanClaim(claimToken !== null)\n if (claimToken === null) {\n if (initialResolution === undefined) setState('unavailable')\n return\n }\n void resolveCapability(generation, claimToken)\n })\n\n function retryResolve(): void {\n const claimToken = token.current\n if (claimToken === null) {\n setState('unavailable')\n return\n }\n const generation = offerGeneration.current\n setState('resolving')\n void resolveCapability(generation, claimToken)\n }\n\n async function claim(): Promise<void> {\n const claimToken = token.current\n const generation = offerGeneration.current\n if (\n claimToken === null ||\n resolvedGeneration.current !== generation ||\n resolution?.offerId !== offerId\n ) {\n setState('unavailable')\n return\n }\n setState('claiming')\n try {\n const session = await client.claimOffer(\n offerId,\n { claimToken, cartToken, locale },\n claimIdempotencyKey,\n )\n if (!mounted.current || generation !== offerGeneration.current) return\n token.current = null\n setCanClaim(false)\n setState('claimed')\n onCheckoutSession?.(session)\n } catch (error) {\n if (!mounted.current || generation !== offerGeneration.current) return\n setState(\n error instanceof StorefrontEventsRequestError && error.status === 409\n ? 'unavailable'\n : 'request_error',\n )\n }\n }\n\n const status =\n state === 'resolving'\n ? copy.resolving\n : state === 'claiming'\n ? copy.claiming\n : state === 'claimed'\n ? copy.claimed\n : state === 'expired'\n ? copy.expired\n : state === 'unavailable'\n ? copy.unavailable\n : state === 'request_error'\n ? copy.requestError\n : null\n\n return (\n <section className={className} data-kotao-event-approval-offer>\n {resolution ? (\n <header>\n <h1>{resolution.eventTitle}</h1>\n <p>\n {resolution.ticketTypeTitle} · {resolution.quantity}\n </p>\n <time dateTime={resolution.occurrenceStartsAt}>\n {formatDateTime\n ? formatDateTime(resolution.occurrenceStartsAt)\n : resolution.occurrenceStartsAt}\n </time>\n </header>\n ) : null}\n {(state === 'active' ||\n (state === 'claimed' && canClaim) ||\n (state === 'request_error' && canClaim)) &&\n resolution ? (\n <>\n <p>\n {copy.expires}:{' '}\n <time dateTime={resolution.expiresAt}>\n {formatDateTime ? formatDateTime(resolution.expiresAt) : resolution.expiresAt}\n </time>\n </p>\n <button type=\"button\" onClick={claim}>\n {state === 'claimed' ? copy.resume : copy.claim}\n </button>\n </>\n ) : null}\n {state === 'request_error' && canClaim && resolution === null ? (\n <button type=\"button\" onClick={retryResolve}>\n {copy.retry}\n </button>\n ) : null}\n <p role=\"status\" aria-live=\"polite\" aria-atomic=\"true\">\n {status}\n </p>\n </section>\n )\n}\n"]}
@@ -1,5 +1,5 @@
1
1
  import { HydrogenEditorManifest, HydrogenDocument, HydrogenBreakpoint, HydrogenComponentDefinition, HydrogenInstance, HydrogenEditCapability, HydrogenSourceLocation, HydrogenUnsupportedFinding, HydrogenContentBinding, HydrogenInstanceStyles } from '@kotao/storefront-contracts';
2
- import { S as StorefrontEditorMessageSource, a as StorefrontEditorMessageTarget } from './bridge-ZKbKqgFd.js';
2
+ import { S as StorefrontEditorMessageSource, a as StorefrontEditorMessageTarget } from './bridge-CfNBWu0H.js';
3
3
 
4
4
  declare const HYDROGEN_EDITOR_PROTOCOL_VERSION: 1;
5
5
  declare const HYDROGEN_EDITOR_BRIDGE_LIMITS: {
package/dist/index.d.ts CHANGED
@@ -5,8 +5,8 @@ import { c as ConsentBucket, C as ConsentState, B as BoundNonceProvider, A as An
5
5
  export { d as ANALYTICS_EVENTS, b as AnalyticsBus, e as AnalyticsBusOptions, f as AnalyticsDeviceClass, a as AnalyticsEmitter, h as AnalyticsEventMap, i as AnalyticsEventName, j as AnalyticsGeo, k as CONSENT_BUCKETS, l as CONSENT_COOKIE, m as CartForm, n as CartFormProps, o as CartViewedPayload, p as CollectionViewedPayload, D as DENIED_CONSENT, E as EventHandler, G as GRANTED_CONSENT, q as GetShopAnalyticsOptions, P as PageViewedPayload, r as PixelEvent, s as PixelSend, t as PixelTransport, v as PixelTransportOptions, w as ProductAddedToCartPayload, x as ProductViewedPayload, y as SearchViewedPayload, S as ShopAnalytics, z as buildConsentCookie, F as createAnalyticsBus, H as createAnalyticsEmitter, I as createPixelTransport, J as getShopAnalytics, K as isGranted, L as mergeConsent, M as parseConsent, N as readConsentCookie, O as serializeConsent } from './shop-CnrnSAJw.js';
6
6
  import { a as CartDispatchAction } from './createCartHandler-7DdKB-GF.js';
7
7
  export { b as CartGetId, C as CartHandler, c as CartSetId, d as CreateCartHandlerOptions, H as HydrogenCartHandlerOptions, R as RequestCartHandlerOptions, e as cartGetIdDefault, f as cartSetIdDefault, g as createCartHandler } from './createCartHandler-7DdKB-GF.js';
8
- import { c as ThemeSettingsSnapshot, R as ResolvedSettings } from './store-DO08fzJi.js';
9
- export { b as ResolvedBlock, a as ResolvedSection, T as ThemeSettingsStore, d as createThemeSettingsStore } from './store-DO08fzJi.js';
8
+ import { c as ThemeSettingsSnapshot, R as ResolvedSettings } from './store-ZzoBbWir.js';
9
+ export { b as ResolvedBlock, a as ResolvedSection, d as ResolvedValuesDocument, T as ThemeSettingsStore, e as createThemeSettingsStore } from './store-ZzoBbWir.js';
10
10
  import { C as CustomerAccountClient } from './routing-Bz3Cg0BW.js';
11
11
  export { A as Address, c as AddressConnection, d as CustomerAccount, e as CustomerAccountError, f as CustomerAccountErrorCode, G as GEO_HEADER, g as GEO_SIGNATURE_HEADER, h as Geo, K as KotaoContext, a as KotaoEnv, b as KotaoSession, L as LocalizePathOptions, M as Money, O as Order, i as OrderConnection, j as OrderPageInfo, k as OrdersOptions, R as ROUTING_LOCALE_HEADER, l as ROUTING_ORIGINAL_PATHNAME_HEADER, m as RequestLoginCodeInput, n as RequestLoginCodeResult, S as StorefrontExecutionContext, o as StorefrontMarketContext, p as StrippedLocalePath, V as VerifyLoginCodeInput, W as WithCache, q as createKotaoContext, r as createWithCache, t as isLocalePathSegment, u as localeFromAcceptLanguage, v as localeFromPathname, w as localeFromRequest, x as localizePath, y as marketContextFromHeaders, z as originalPathnameFromRequest, B as signGeo, D as stripLocalePrefixFromPathname, s as stripLocalePrefixFromRequest, E as trustedShopOriginFromHeaders, F as verifyGeo } from './routing-Bz3Cg0BW.js';
12
12
  export { AUTO_REDIRECT_LANGUAGE_HEADER, MARKET_ALTERNATE_LOCALES_HEADER, MARKET_CANONICAL_URL_HEADER, MARKET_DEFAULT_LOCALE_HEADER, MARKET_ID_HEADER, MARKET_PATH_PREFIX_HEADER, MARKET_ROOT_URLS_HEADER, MARKET_SETTINGS_ENVIRONMENT_HEADER, MARKET_THEME_ID_HEADER, autoRedirectEnabled } from '@kotao/storefront-contracts';
@@ -22,7 +22,7 @@ export { ADDRESS_PROPERTIES, FORM_ANSWER_PREFIX, FormFetchOptions, RenderFormHtm
22
22
  export { EventCartPreparationError, eventCartToken, prepareEventCart } from './events.js';
23
23
  export { C as ClaimEventApprovalOffer, d as CreateEventApprovalRequest, e as CreateEventCheckoutSession, f as CreateEventWaitlistEntry, b as EventApprovalOfferResolution, g as EventApprovalRequestReceipt, a as EventCheckoutSession, h as EventFormAnswer, i as EventFormSubmissionInput, j as EventRegistrationMode, k as EventRegistrationResult, c as EventRegistrationSubmission, l as EventWaitlistReceipt, E as EventsClient, P as PublicEvent, m as PublicEventForm, n as PublicEventOccurrence, o as PublicEventSummary, p as PublicEventTicketType, q as PublicEventVenue, S as StorefrontEventsRequestError, r as createEventsClient } from './client-CwOPPpFF.js';
24
24
  export { a as OfferTokenHistory, O as OfferTokenLocation, c as consumeOfferTokenFragment, o as offerTokenHrefMarker } from './offer-token-C-nk_nj8.js';
25
- export { C as CreateStorefrontEditorBridgeArgs, b as CreateStorefrontEditorHostBridgeArgs, c as StorefrontEditorAppExtensionPreview, d as StorefrontEditorBlockSchema, e as StorefrontEditorBridge, f as StorefrontEditorCanvasAction, g as StorefrontEditorCanvasBlockAction, h as StorefrontEditorCanvasPosition, i as StorefrontEditorCanvasSectionAction, j as StorefrontEditorDocument, k as StorefrontEditorHostBridge, l as StorefrontEditorMessageEvent, S as StorefrontEditorMessageSource, a as StorefrontEditorMessageTarget, m as StorefrontEditorReady, n as StorefrontEditorRect, o as StorefrontEditorSectionPreset, p as StorefrontEditorSectionPresetBlock, q as StorefrontEditorSectionSchema, r as StorefrontEditorSelection, s as StorefrontEditorSelectionScope, t as StorefrontEditorSettingInput, u as StorefrontEditorSettingOption, v as StorefrontEditorThemeStyle, x as createStorefrontEditorBridge, y as createStorefrontEditorHostBridge, z as positionStorefrontEditorCanvasToolbar } from './bridge-ZKbKqgFd.js';
25
+ export { C as CreateStorefrontEditorBridgeArgs, b as CreateStorefrontEditorHostBridgeArgs, c as StorefrontEditorAppExtensionPreview, d as StorefrontEditorBlockSchema, e as StorefrontEditorBridge, f as StorefrontEditorCanvasAction, g as StorefrontEditorCanvasBlockAction, h as StorefrontEditorCanvasPosition, i as StorefrontEditorCanvasSectionAction, j as StorefrontEditorDocument, k as StorefrontEditorHostBridge, l as StorefrontEditorMessageEvent, S as StorefrontEditorMessageSource, a as StorefrontEditorMessageTarget, m as StorefrontEditorNavigationRequest, n as StorefrontEditorReady, o as StorefrontEditorRect, p as StorefrontEditorSectionPreset, q as StorefrontEditorSectionPresetBlock, r as StorefrontEditorSectionSchema, s as StorefrontEditorSelection, t as StorefrontEditorSelectionScope, u as StorefrontEditorSettingInput, v as StorefrontEditorSettingOption, w as StorefrontEditorThemeStyle, y as createStorefrontEditorBridge, z as createStorefrontEditorHostBridge, A as positionStorefrontEditorCanvasToolbar } from './bridge-CfNBWu0H.js';
26
26
  export { S as STOREFRONT_SECTION_CUSTOM_CSS_SETTING, s as scopeStorefrontSectionCss } from './custom-css-Bl7Ur3-H.js';
27
27
  import './http-types-CGh8WGHB.js';
28
28
  import 'react';
@@ -32,6 +32,7 @@ import '@kotao/storefront-contracts/theme';
32
32
  declare const CART_ID_COOKIE = "kotao_cart";
33
33
  declare function readCartIdCookie(cookieHeader: string | null | undefined): string | null;
34
34
  declare function buildCartIdCookie(cartId: string): string;
35
+ declare function clearCartIdCookie(): string;
35
36
 
36
37
  declare function applyOptimisticCartAction(cart: Cart, action: CartDispatchAction): Cart;
37
38
  /**
@@ -266,4 +267,4 @@ interface HostedLocaleInput {
266
267
  */
267
268
  declare function resolveHostedLocale(input: HostedLocaleInput): string;
268
269
 
269
- export { type AnalyticsAttributionEnvironment, AnalyticsContext, CART_ID_COOKIE, CHECKOUT_CONSENT_CATEGORIES, CHECKOUT_CONSENT_PARAM_PREFIX, CHECKOUT_DESIGN_TOKEN_INPUTS, CUSTOMER_SESSION_COOKIE, Cart, CartDispatchAction, type CheckoutDesignTokens, ConsentBucket, ConsentState, type ContentSecurityPolicyResult, type ContentSecurityPolicyShop, type CreateContentSecurityPolicyOptions, CustomerAccountClient, type CustomerAccountClientOptions, DEFAULT_HOSTED_SESSION_MAX_AGE, DEFAULT_SESSION_MAX_AGE, HOSTED_CUSTOMER_CSRF_COOKIE, HOSTED_CUSTOMER_CSRF_HEADER, HOSTED_CUSTOMER_SESSION_COOKIE, type HostedLocaleInput, type HostedSessionCookieAttrs, LOCALIZATION_COOKIE, type LegacySessionReadOptions, MAX_HOSTED_SESSION_MAX_AGE, MAX_LEGACY_CUSTOMER_SESSION_TOKEN_LENGTH, type ResolveCheckoutUrlOptions, ResolvedSettings, type SessionCookieAttrs, ThemeSettingsSnapshot, appendConsentToCheckoutUrl, applyOptimisticCartAction, buildCartIdCookie, buildCustomerSessionCookie, buildHostedCustomerSessionCookie, buildLocalizationCookie, clearCustomerSessionCookie, clearHostedCustomerSessionCookie, clearLegacyCustomerSessionCookie, collectAnalyticsAttribution, createContentSecurityPolicy, createCustomerAccountClient, decodeCheckoutConsent, decodeConsent, encodeCheckoutConsent, encodeConsent, escapeHostedHtml, extractCheckoutDesignTokens, handleLocalizationPost, readCartIdCookie, readCustomerSessionToken, readHostedCustomerCsrfToken, readHostedCustomerSessionToken, readLegacyCustomerSessionToken, readLocalizationCookie, resolveCheckoutUrl, resolveHostedBranding, resolveHostedLocale, sanitizeHostedCssValue, shopHostname, useOptimisticCart };
270
+ export { type AnalyticsAttributionEnvironment, AnalyticsContext, CART_ID_COOKIE, CHECKOUT_CONSENT_CATEGORIES, CHECKOUT_CONSENT_PARAM_PREFIX, CHECKOUT_DESIGN_TOKEN_INPUTS, CUSTOMER_SESSION_COOKIE, Cart, CartDispatchAction, type CheckoutDesignTokens, ConsentBucket, ConsentState, type ContentSecurityPolicyResult, type ContentSecurityPolicyShop, type CreateContentSecurityPolicyOptions, CustomerAccountClient, type CustomerAccountClientOptions, DEFAULT_HOSTED_SESSION_MAX_AGE, DEFAULT_SESSION_MAX_AGE, HOSTED_CUSTOMER_CSRF_COOKIE, HOSTED_CUSTOMER_CSRF_HEADER, HOSTED_CUSTOMER_SESSION_COOKIE, type HostedLocaleInput, type HostedSessionCookieAttrs, LOCALIZATION_COOKIE, type LegacySessionReadOptions, MAX_HOSTED_SESSION_MAX_AGE, MAX_LEGACY_CUSTOMER_SESSION_TOKEN_LENGTH, type ResolveCheckoutUrlOptions, ResolvedSettings, type SessionCookieAttrs, ThemeSettingsSnapshot, appendConsentToCheckoutUrl, applyOptimisticCartAction, buildCartIdCookie, buildCustomerSessionCookie, buildHostedCustomerSessionCookie, buildLocalizationCookie, clearCartIdCookie, clearCustomerSessionCookie, clearHostedCustomerSessionCookie, clearLegacyCustomerSessionCookie, collectAnalyticsAttribution, createContentSecurityPolicy, createCustomerAccountClient, decodeCheckoutConsent, decodeConsent, encodeCheckoutConsent, encodeConsent, escapeHostedHtml, extractCheckoutDesignTokens, handleLocalizationPost, readCartIdCookie, readCustomerSessionToken, readHostedCustomerCsrfToken, readHostedCustomerSessionToken, readLegacyCustomerSessionToken, readLocalizationCookie, resolveCheckoutUrl, resolveHostedBranding, resolveHostedLocale, sanitizeHostedCssValue, shopHostname, useOptimisticCart };
package/dist/index.js CHANGED
@@ -2,15 +2,15 @@ export { getAdjacentAndFirstAvailableVariants, getProductOptions, getSelectedPro
2
2
  import { createNonceProvider } from './chunk-RFM27BKZ.js';
3
3
  export { CartForm, collectAnalyticsAttribution, createAnalyticsBus, createAnalyticsEmitter, createPixelTransport } from './chunk-RFM27BKZ.js';
4
4
  export { flattenConnection, getPaginationInfo, getPaginationVariables } from './chunk-5QOFKGKD.js';
5
- import { CHECKOUT_DESIGN_TOKEN_INPUTS, localizePath, buildLocalizationCookie, extractCheckoutDesignTokens, readLocalizationCookie } from './chunk-EG34HLSX.js';
6
- export { CART_ID_COOKIE, CHECKOUT_CONSENT_CATEGORIES, CHECKOUT_CONSENT_PARAM_PREFIX, CHECKOUT_DESIGN_TOKEN_INPUTS, CUSTOMER_SESSION_COOKIE, CacheCustom, CacheLong, CacheNone, CacheShort, CustomerAccountError, DEFAULT_HOSTED_SESSION_MAX_AGE, DEFAULT_SESSION_MAX_AGE, GEO_HEADER, GEO_SIGNATURE_HEADER, HOSTED_CUSTOMER_CSRF_COOKIE, HOSTED_CUSTOMER_CSRF_HEADER, HOSTED_CUSTOMER_SESSION_COOKIE, LOCALIZATION_COOKIE, MARKET_ALTERNATE_LOCALES_HEADER, MARKET_CANONICAL_URL_HEADER, MARKET_DEFAULT_LOCALE_HEADER, MARKET_ID_HEADER, MARKET_PATH_PREFIX_HEADER, MARKET_ROOT_URLS_HEADER, MARKET_SETTINGS_ENVIRONMENT_HEADER, MARKET_THEME_ID_HEADER, MAX_HOSTED_SESSION_MAX_AGE, MAX_LEGACY_CUSTOMER_SESSION_TOKEN_LENGTH, ROUTING_LOCALE_HEADER, ROUTING_ORIGINAL_PATHNAME_HEADER, StorefrontDefaultCache, StorefrontQueryTimeoutError, StorefrontUpstreamError, buildCartIdCookie, buildCustomerSessionCookie, buildHostedCustomerSessionCookie, buildLocalizationCookie, cartGetIdDefault, cartSetIdDefault, clearCustomerSessionCookie, clearHostedCustomerSessionCookie, clearLegacyCustomerSessionCookie, createCache, createCartHandler, createCustomerAccountClient, createKotaoContext, createStorefrontClient, createWithCache, decodeCheckoutConsent, encodeCheckoutConsent, extractCheckoutDesignTokens, generateCacheControlHeader, isLocalePathSegment, localeFromAcceptLanguage, localeFromPathname, localeFromRequest, localizePath, marketContextFromHeaders, originalPathnameFromRequest, readCartIdCookie, readCustomerSessionToken, readHostedCustomerCsrfToken, readHostedCustomerSessionToken, readLegacyCustomerSessionToken, readLocalizationCookie, resolveCheckoutUrl, shopHostname, signGeo, stripLocalePrefixFromPathname, stripLocalePrefixFromRequest, trustedShopOriginFromHeaders, verifyGeo } from './chunk-EG34HLSX.js';
5
+ import { CHECKOUT_DESIGN_TOKEN_INPUTS, localizePath, buildLocalizationCookie, extractCheckoutDesignTokens, readLocalizationCookie } from './chunk-DTKLAOKR.js';
6
+ export { CART_ID_COOKIE, CHECKOUT_CONSENT_CATEGORIES, CHECKOUT_CONSENT_PARAM_PREFIX, CHECKOUT_DESIGN_TOKEN_INPUTS, CUSTOMER_SESSION_COOKIE, CacheCustom, CacheLong, CacheNone, CacheShort, CustomerAccountError, DEFAULT_HOSTED_SESSION_MAX_AGE, DEFAULT_SESSION_MAX_AGE, GEO_HEADER, GEO_SIGNATURE_HEADER, HOSTED_CUSTOMER_CSRF_COOKIE, HOSTED_CUSTOMER_CSRF_HEADER, HOSTED_CUSTOMER_SESSION_COOKIE, LOCALIZATION_COOKIE, MARKET_ALTERNATE_LOCALES_HEADER, MARKET_CANONICAL_URL_HEADER, MARKET_DEFAULT_LOCALE_HEADER, MARKET_ID_HEADER, MARKET_PATH_PREFIX_HEADER, MARKET_ROOT_URLS_HEADER, MARKET_SETTINGS_ENVIRONMENT_HEADER, MARKET_THEME_ID_HEADER, MAX_HOSTED_SESSION_MAX_AGE, MAX_LEGACY_CUSTOMER_SESSION_TOKEN_LENGTH, ROUTING_LOCALE_HEADER, ROUTING_ORIGINAL_PATHNAME_HEADER, StorefrontDefaultCache, StorefrontQueryTimeoutError, StorefrontUpstreamError, buildCartIdCookie, buildCustomerSessionCookie, buildHostedCustomerSessionCookie, buildLocalizationCookie, cartGetIdDefault, cartSetIdDefault, clearCartIdCookie, clearCustomerSessionCookie, clearHostedCustomerSessionCookie, clearLegacyCustomerSessionCookie, createCache, createCartHandler, createCustomerAccountClient, createKotaoContext, createStorefrontClient, createWithCache, decodeCheckoutConsent, encodeCheckoutConsent, extractCheckoutDesignTokens, generateCacheControlHeader, isLocalePathSegment, localeFromAcceptLanguage, localeFromPathname, localeFromRequest, localizePath, marketContextFromHeaders, originalPathnameFromRequest, readCartIdCookie, readCustomerSessionToken, readHostedCustomerCsrfToken, readHostedCustomerSessionToken, readLegacyCustomerSessionToken, readLocalizationCookie, resolveCheckoutUrl, shopHostname, signGeo, stripLocalePrefixFromPathname, stripLocalePrefixFromRequest, trustedShopOriginFromHeaders, verifyGeo } from './chunk-DTKLAOKR.js';
7
7
  import { CART_FORM_ACTIONS, CONSENT_BUCKETS } from './chunk-OGWYTYYS.js';
8
8
  export { CART_FORM_ACTIONS, CONSENT_BUCKETS, CONSENT_COOKIE, DENIED_CONSENT, GRANTED_CONSENT, buildConsentCookie, isGranted, mergeConsent, parseConsent, readConsentCookie, serializeConsent } from './chunk-OGWYTYYS.js';
9
9
  export { URL_REDIRECT_QUERY, breadcrumbListJsonLd, buildRobotsTxt, buildSitemapIndexXml, buildSitemapXml, localBusinessJsonLd, organizationJsonLd, productJsonLd, resolveRedirect, resolveStorefrontRedirect, restaurantJsonLd, robotsResponse, sitemapIndexResponse, sitemapResponse, storefrontRedirect, websiteJsonLd } from './chunk-W74FGUZH.js';
10
10
  export { getSeoMeta, serializeJsonLd } from './chunk-SVMYFYIA.js';
11
11
  export { createThemeSettingsStore, mergeSection, mergeSettings, reconcileSyntheticSectionGroup, resolveThemeSettings } from './chunk-VOTBNOWH.js';
12
12
  export { fetchThemeSettings } from './chunk-2MRB6SMP.js';
13
- export { STOREFRONT_SECTION_CUSTOM_CSS_SETTING, createStorefrontEditorBridge, createStorefrontEditorHostBridge, positionStorefrontEditorCanvasToolbar, scopeStorefrontSectionCss } from './chunk-O6YZEY7X.js';
13
+ export { STOREFRONT_SECTION_CUSTOM_CSS_SETTING, createStorefrontEditorBridge, createStorefrontEditorHostBridge, positionStorefrontEditorCanvasToolbar, scopeStorefrontSectionCss } from './chunk-RFKLO6TD.js';
14
14
  import './chunk-CKGI3Y7L.js';
15
15
  export { EventCartPreparationError, eventCartToken, prepareEventCart } from './chunk-4OQYNUGM.js';
16
16
  export { consumeOfferTokenFragment, offerTokenHrefMarker } from './chunk-WG7HYVHJ.js';
@@ -43,8 +43,18 @@ declare module 'react-router' {
43
43
  }
44
44
  }
45
45
  declare const kotaoContext: react_router.RouterContext<KotaoContext>;
46
+ /**
47
+ * Structural reader shared by React Router's development and production declaration trees.
48
+ * React Router 8 publishes the provider class from both conditional entry points; their private
49
+ * fields make the two class types nominally incompatible even though the runtime API is identical.
50
+ */
51
+ interface KotaoRouterContextReader {
52
+ get<T>(context: {
53
+ readonly defaultValue?: T;
54
+ }): T;
55
+ }
46
56
  declare function createKotaoRouterContext(context: KotaoContext): RouterContextProvider;
47
- declare function getKotaoContext(context: Readonly<RouterContextProvider>): KotaoContext;
57
+ declare function getKotaoContext(context: KotaoRouterContextReader): KotaoContext;
48
58
  /**
49
59
  * Build the Kotao storefront context for a React Router request. Wrap the result with
50
60
  * `createKotaoRouterContext` before handing it to React Router 8. Isolated here so the SDK core
@@ -1,5 +1,5 @@
1
- import { createKotaoContext } from './chunk-EG34HLSX.js';
2
- export { stripLocalePrefixFromRequest } from './chunk-EG34HLSX.js';
1
+ import { createKotaoContext } from './chunk-DTKLAOKR.js';
2
+ export { stripLocalePrefixFromRequest } from './chunk-DTKLAOKR.js';
3
3
  import './chunk-OGWYTYYS.js';
4
4
  import './chunk-2MRB6SMP.js';
5
5
  import './chunk-CKGI3Y7L.js';
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/react-router/compat.ts","../src/react-router/binding.ts"],"names":[],"mappings":";;;;;;;;;AAUA,SAAS,kBAAkB,IAAA,EAA2C;AACpE,EAAA,OAAO,OAAO,IAAA,KAAS,QAAA,GAAW,EAAE,MAAA,EAAQ,MAAK,GAAI,IAAA;AACvD;AAEA,SAAS,SAAS,KAAA,EAAkD;AAClE,EAAA,OAAO,KAAA,KAAU,QAAQ,OAAO,KAAA,KAAU,YAAY,CAAC,KAAA,CAAM,QAAQ,KAAK,CAAA;AAC5E;AAEA,SAAS,cAAc,KAAA,EAA+C;AACpE,EAAA,OAAO,QAAA,CAAS,KAAK,CAAA,IAAK,OAAO,MAAM,IAAA,KAAS,UAAA;AAClD;AAEO,SAAS,IAAA,CAAQ,MAAS,IAAA,EAAkC;AACjE,EAAA,OAAO,QAAA,CAAS,IAAA,CAAK,IAAA,EAAM,iBAAA,CAAkB,IAAI,CAAC,CAAA;AACpD;AAEA,eAAsB,KAAA,CAAS,MAAS,KAAA,EAA+C;AACrF,EAAA,IAAI,SAAS,IAAI,CAAA,IAAK,CAAC,aAAA,CAAc,IAAI,CAAA,EAAG;AAC1C,IAAA,MAAM,OAAA,GAAU,MAAM,OAAA,CAAQ,GAAA;AAAA,MAC5B,MAAA,CAAO,OAAA,CAAQ,IAAI,CAAA,CAAE,IAAI,OAAO,CAAC,GAAA,EAAK,KAAK,CAAA,KAAM,CAAC,GAAA,EAAK,MAAM,KAAK,CAAU;AAAA,KAC9E;AACA,IAAA,OAAO,MAAA,CAAO,YAAY,OAAO,CAAA;AAAA,EACnC;AAEA,EAAA,OAAQ,MAAM,IAAA;AAChB;ACFO,IAAM,eAAe,aAAA;AAErB,SAAS,yBAAyB,OAAA,EAA8C;AACrF,EAAA,MAAM,WAAW,MAAA,CAAO,MAAA,CAAO,IAAI,qBAAA,IAAyB,OAAO,CAAA;AACnE,EAAA,QAAA,CAAS,GAAA,CAAI,cAAc,OAAO,CAAA;AAClC,EAAA,OAAO,QAAA;AACT;AAEO,SAAS,gBAAgB,OAAA,EAAwD;AACtF,EAAA,OAAO,OAAA,CAAQ,IAAI,YAAY,CAAA;AACjC;AAQO,IAAM,mBAAA,GAAsB,CACjC,OAAA,EACA,GAAA,EACA,YAAA,EACA,SAC0B,kBAAA,CAAmB,OAAA,EAAS,GAAA,EAAK,YAAA,EAAc,IAAI","file":"react-router.js","sourcesContent":["type JsonInit = ResponseInit | number\nexport interface JsonResponse<T> {\n readonly type: string\n readonly data: T\n readonly init: ResponseInit | null\n}\n\ntype AwaitedDeferred<T> =\n T extends Record<string, unknown> ? { [K in keyof T]: Awaited<T[K]> } : Awaited<T>\n\nfunction normalizeJsonInit(init?: JsonInit): ResponseInit | undefined {\n return typeof init === 'number' ? { status: init } : init\n}\n\nfunction isRecord(value: unknown): value is Record<string, unknown> {\n return value !== null && typeof value === 'object' && !Array.isArray(value)\n}\n\nfunction isPromiseLike(value: unknown): value is PromiseLike<unknown> {\n return isRecord(value) && typeof value.then === 'function'\n}\n\nexport function json<T>(data: T, init?: JsonInit): JsonResponse<T> {\n return Response.json(data, normalizeJsonInit(init)) as unknown as JsonResponse<T>\n}\n\nexport async function defer<T>(data: T, _init?: JsonInit): Promise<AwaitedDeferred<T>> {\n if (isRecord(data) && !isPromiseLike(data)) {\n const entries = await Promise.all(\n Object.entries(data).map(async ([key, value]) => [key, await value] as const),\n )\n return Object.fromEntries(entries) as AwaitedDeferred<T>\n }\n\n return (await data) as AwaitedDeferred<T>\n}\n","import type { HydrogenSession } from '../cart/types'\nimport type { StorefrontCacheInput } from '../cache/cache'\nimport { createContext, RouterContextProvider } from 'react-router'\nimport {\n createKotaoContext,\n type KotaoContext,\n type KotaoEnv,\n type StorefrontExecutionContext,\n} from '../context/context'\nexport { stripLocalePrefixFromRequest } from '../localization/routing'\n\nexport interface KotaoLoadContextDeps {\n readonly openCache?: (name: string) => Promise<StorefrontCacheInput>\n readonly session?: HydrogenSession\n}\n\ndeclare module 'react-router' {\n /**\n * Compatibility projection for Hydrogen routes that read `context.storefront` directly.\n * React Router 8 requires the provider instance; the canonical typed value remains available\n * through `context.get(kotaoContext)`.\n */\n // eslint-disable-next-line @typescript-eslint/no-empty-object-type\n interface RouterContextProvider extends KotaoContext {}\n\n /**\n * Source-import compatibility for Hydrogen projects that still name their application context.\n * React Router 8 itself receives `RouterContextProvider`; generated Kotao entries use that type.\n */\n // eslint-disable-next-line @typescript-eslint/no-empty-object-type\n interface AppLoadContext extends KotaoContext {}\n}\n\nexport const kotaoContext = createContext<KotaoContext>()\n\nexport function createKotaoRouterContext(context: KotaoContext): RouterContextProvider {\n const provider = Object.assign(new RouterContextProvider(), context)\n provider.set(kotaoContext, context)\n return provider\n}\n\nexport function getKotaoContext(context: Readonly<RouterContextProvider>): KotaoContext {\n return context.get(kotaoContext)\n}\n\n/**\n * Build the Kotao storefront context for a React Router request. Wrap the result with\n * `createKotaoRouterContext` before handing it to React Router 8. Isolated here so the SDK core\n * stays framework-agnostic (a TanStack\n * Start binding can be added alongside without touching the core).\n */\nexport const getKotaoLoadContext = (\n request: Request,\n env: KotaoEnv,\n executionCtx: StorefrontExecutionContext,\n deps?: KotaoLoadContextDeps,\n): Promise<KotaoContext> => createKotaoContext(request, env, executionCtx, deps)\n"]}
1
+ {"version":3,"sources":["../src/react-router/compat.ts","../src/react-router/binding.ts"],"names":[],"mappings":";;;;;;;;;AAUA,SAAS,kBAAkB,IAAA,EAA2C;AACpE,EAAA,OAAO,OAAO,IAAA,KAAS,QAAA,GAAW,EAAE,MAAA,EAAQ,MAAK,GAAI,IAAA;AACvD;AAEA,SAAS,SAAS,KAAA,EAAkD;AAClE,EAAA,OAAO,KAAA,KAAU,QAAQ,OAAO,KAAA,KAAU,YAAY,CAAC,KAAA,CAAM,QAAQ,KAAK,CAAA;AAC5E;AAEA,SAAS,cAAc,KAAA,EAA+C;AACpE,EAAA,OAAO,QAAA,CAAS,KAAK,CAAA,IAAK,OAAO,MAAM,IAAA,KAAS,UAAA;AAClD;AAEO,SAAS,IAAA,CAAQ,MAAS,IAAA,EAAkC;AACjE,EAAA,OAAO,QAAA,CAAS,IAAA,CAAK,IAAA,EAAM,iBAAA,CAAkB,IAAI,CAAC,CAAA;AACpD;AAEA,eAAsB,KAAA,CAAS,MAAS,KAAA,EAA+C;AACrF,EAAA,IAAI,SAAS,IAAI,CAAA,IAAK,CAAC,aAAA,CAAc,IAAI,CAAA,EAAG;AAC1C,IAAA,MAAM,OAAA,GAAU,MAAM,OAAA,CAAQ,GAAA;AAAA,MAC5B,MAAA,CAAO,OAAA,CAAQ,IAAI,CAAA,CAAE,IAAI,OAAO,CAAC,GAAA,EAAK,KAAK,CAAA,KAAM,CAAC,GAAA,EAAK,MAAM,KAAK,CAAU;AAAA,KAC9E;AACA,IAAA,OAAO,MAAA,CAAO,YAAY,OAAO,CAAA;AAAA,EACnC;AAEA,EAAA,OAAQ,MAAM,IAAA;AAChB;ACFO,IAAM,eAAe,aAAA;AAWrB,SAAS,yBAAyB,OAAA,EAA8C;AACrF,EAAA,MAAM,WAAW,MAAA,CAAO,MAAA,CAAO,IAAI,qBAAA,IAAyB,OAAO,CAAA;AACnE,EAAA,QAAA,CAAS,GAAA,CAAI,cAAc,OAAO,CAAA;AAClC,EAAA,OAAO,QAAA;AACT;AAEO,SAAS,gBAAgB,OAAA,EAAiD;AAC/E,EAAA,OAAO,OAAA,CAAQ,IAAI,YAAY,CAAA;AACjC;AAQO,IAAM,mBAAA,GAAsB,CACjC,OAAA,EACA,GAAA,EACA,YAAA,EACA,SAC0B,kBAAA,CAAmB,OAAA,EAAS,GAAA,EAAK,YAAA,EAAc,IAAI","file":"react-router.js","sourcesContent":["type JsonInit = ResponseInit | number\nexport interface JsonResponse<T> {\n readonly type: string\n readonly data: T\n readonly init: ResponseInit | null\n}\n\ntype AwaitedDeferred<T> =\n T extends Record<string, unknown> ? { [K in keyof T]: Awaited<T[K]> } : Awaited<T>\n\nfunction normalizeJsonInit(init?: JsonInit): ResponseInit | undefined {\n return typeof init === 'number' ? { status: init } : init\n}\n\nfunction isRecord(value: unknown): value is Record<string, unknown> {\n return value !== null && typeof value === 'object' && !Array.isArray(value)\n}\n\nfunction isPromiseLike(value: unknown): value is PromiseLike<unknown> {\n return isRecord(value) && typeof value.then === 'function'\n}\n\nexport function json<T>(data: T, init?: JsonInit): JsonResponse<T> {\n return Response.json(data, normalizeJsonInit(init)) as unknown as JsonResponse<T>\n}\n\nexport async function defer<T>(data: T, _init?: JsonInit): Promise<AwaitedDeferred<T>> {\n if (isRecord(data) && !isPromiseLike(data)) {\n const entries = await Promise.all(\n Object.entries(data).map(async ([key, value]) => [key, await value] as const),\n )\n return Object.fromEntries(entries) as AwaitedDeferred<T>\n }\n\n return (await data) as AwaitedDeferred<T>\n}\n","import type { HydrogenSession } from '../cart/types'\nimport type { StorefrontCacheInput } from '../cache/cache'\nimport { createContext, RouterContextProvider } from 'react-router'\nimport {\n createKotaoContext,\n type KotaoContext,\n type KotaoEnv,\n type StorefrontExecutionContext,\n} from '../context/context'\nexport { stripLocalePrefixFromRequest } from '../localization/routing'\n\nexport interface KotaoLoadContextDeps {\n readonly openCache?: (name: string) => Promise<StorefrontCacheInput>\n readonly session?: HydrogenSession\n}\n\ndeclare module 'react-router' {\n /**\n * Compatibility projection for Hydrogen routes that read `context.storefront` directly.\n * React Router 8 requires the provider instance; the canonical typed value remains available\n * through `context.get(kotaoContext)`.\n */\n // eslint-disable-next-line @typescript-eslint/no-empty-object-type\n interface RouterContextProvider extends KotaoContext {}\n\n /**\n * Source-import compatibility for Hydrogen projects that still name their application context.\n * React Router 8 itself receives `RouterContextProvider`; generated Kotao entries use that type.\n */\n // eslint-disable-next-line @typescript-eslint/no-empty-object-type\n interface AppLoadContext extends KotaoContext {}\n}\n\nexport const kotaoContext = createContext<KotaoContext>()\n\n/**\n * Structural reader shared by React Router's development and production declaration trees.\n * React Router 8 publishes the provider class from both conditional entry points; their private\n * fields make the two class types nominally incompatible even though the runtime API is identical.\n */\nexport interface KotaoRouterContextReader {\n get<T>(context: { readonly defaultValue?: T }): T\n}\n\nexport function createKotaoRouterContext(context: KotaoContext): RouterContextProvider {\n const provider = Object.assign(new RouterContextProvider(), context)\n provider.set(kotaoContext, context)\n return provider\n}\n\nexport function getKotaoContext(context: KotaoRouterContextReader): KotaoContext {\n return context.get(kotaoContext)\n}\n\n/**\n * Build the Kotao storefront context for a React Router request. Wrap the result with\n * `createKotaoRouterContext` before handing it to React Router 8. Isolated here so the SDK core\n * stays framework-agnostic (a TanStack\n * Start binding can be added alongside without touching the core).\n */\nexport const getKotaoLoadContext = (\n request: Request,\n env: KotaoEnv,\n executionCtx: StorefrontExecutionContext,\n deps?: KotaoLoadContextDeps,\n): Promise<KotaoContext> => createKotaoContext(request, env, executionCtx, deps)\n"]}
package/dist/react.d.ts CHANGED
@@ -7,13 +7,13 @@ import { Cart } from './storefront-api-types.js';
7
7
  import { ImageAttrsOptions, ImageData, ImageCrop, ImageFormat } from './image.js';
8
8
  import { C as Connection, P as PaginationInfo } from './pagination-DCrQk02Q.js';
9
9
  import { S as SeoConfig } from './types-BkY0yET-.js';
10
- import { T as ThemeSettingsStore, R as ResolvedSettings, c as ThemeSettingsSnapshot } from './store-DO08fzJi.js';
10
+ import { T as ThemeSettingsStore, R as ResolvedSettings, c as ThemeSettingsSnapshot } from './store-ZzoBbWir.js';
11
11
  import { S as SmartCartMountConfig, C as CartAdapter } from './cart-documents-BLavRDiu.js';
12
12
  export { R as REACT_SEAM_CART_DOCUMENTS, a as SmartCartBranding, b as SmartCartLine, c as SmartCartLineDiscount, d as SmartCartLineOption, e as SmartCartMoney, f as SmartCartState, g as createStorefrontApiCartAdapter } from './cart-documents-BLavRDiu.js';
13
13
  import { P as PublicForm, a as FormAnswers, b as FormFieldErrors } from './types-CSNXbGFW.js';
14
- import { a as HydrogenEditorPreviewRuntime, x as HydrogenEditorReconciliationReason, l as HydrogenEditorInstanceSnapshot } from './hydrogen-Bu7k0kE4.js';
14
+ import { a as HydrogenEditorPreviewRuntime, x as HydrogenEditorReconciliationReason, l as HydrogenEditorInstanceSnapshot } from './hydrogen-CqDMW3YC.js';
15
15
  import '@kotao/storefront-contracts';
16
- import './bridge-ZKbKqgFd.js';
16
+ import './bridge-CfNBWu0H.js';
17
17
 
18
18
  type CartFormInputValue = unknown;
19
19
  type CartFormFetcher = FetcherWithComponents<unknown>;
@@ -1,6 +1,6 @@
1
1
  import { SectionSchema, Preset, ValuesDocument, SettingInput, SectionInstance } from '@kotao/storefront-contracts/theme';
2
- import { a as ResolvedSection, R as ResolvedSettings, c as ThemeSettingsSnapshot } from './store-DO08fzJi.js';
3
- export { b as ResolvedBlock, T as ThemeSettingsStore, d as createThemeSettingsStore } from './store-DO08fzJi.js';
2
+ import { a as ResolvedSection, R as ResolvedSettings, c as ThemeSettingsSnapshot } from './store-ZzoBbWir.js';
3
+ export { b as ResolvedBlock, d as ResolvedValuesDocument, T as ThemeSettingsStore, e as createThemeSettingsStore } from './store-ZzoBbWir.js';
4
4
  export { F as FetchThemeSettingsOptions, S as StoredThemeSettings, f as fetchThemeSettings } from './fetch-Bq_cc8_G.js';
5
5
  import './client-D51WdvYR.js';
6
6
  import './http-types-CGh8WGHB.js';
@@ -64,4 +64,4 @@ interface ThemeSettingsStore {
64
64
  }
65
65
  declare function createThemeSettingsStore(initial: ThemeSettingsSnapshot): ThemeSettingsStore;
66
66
 
67
- export { type ResolvedSettings as R, type ThemeSettingsStore as T, type ResolvedSection as a, type ResolvedBlock as b, type ThemeSettingsSnapshot as c, createThemeSettingsStore as d };
67
+ export { type ResolvedSettings as R, type ThemeSettingsStore as T, type ResolvedSection as a, type ResolvedBlock as b, type ThemeSettingsSnapshot as c, type ResolvedValuesDocument as d, createThemeSettingsStore as e };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@kotao/storefront",
3
- "version": "0.2.6",
3
+ "version": "0.2.7",
4
4
  "type": "module",
5
5
  "license": "MIT",
6
6
  "description": "Kotao Storefronts theme SDK — framework-agnostic server runtime, React Router 8 binding, and authenticated source-authoritative React/Hydrogen editor bridge (ADR-0003/ADR-0047). Leaf package (ADR-0006).",