@kotao/storefront 0.2.5 → 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.
- package/README.md +57 -2
- package/dist/bridge-CfNBWu0H.d.ts +260 -0
- package/dist/cart-documents-BLavRDiu.d.ts +89 -0
- package/dist/cart-documents.d.ts +1 -2
- package/dist/cart-documents.js +1 -1
- package/dist/{chunk-M7BPQ54D.js → chunk-2MRB6SMP.js} +4 -3
- package/dist/chunk-2MRB6SMP.js.map +1 -0
- package/dist/chunk-CKGI3Y7L.js +19 -0
- package/dist/chunk-CKGI3Y7L.js.map +1 -0
- package/dist/{chunk-GGOZELAA.js → chunk-DTKLAOKR.js} +231 -165
- package/dist/chunk-DTKLAOKR.js.map +1 -0
- package/dist/{chunk-MCIFKJQK.js → chunk-R4N565GX.js} +5 -2
- package/dist/chunk-R4N565GX.js.map +1 -0
- package/dist/chunk-RFKLO6TD.js +1594 -0
- package/dist/chunk-RFKLO6TD.js.map +1 -0
- package/dist/{chunk-XMTWFJCZ.js → chunk-RFM27BKZ.js} +31 -7
- package/dist/chunk-RFM27BKZ.js.map +1 -0
- package/dist/{chunk-MYDKIJRH.js → chunk-SVMYFYIA.js} +2 -2
- package/dist/{chunk-MYDKIJRH.js.map → chunk-SVMYFYIA.js.map} +1 -1
- package/dist/{chunk-H3D7BAOL.js → chunk-VOTBNOWH.js} +21 -3
- package/dist/chunk-VOTBNOWH.js.map +1 -0
- package/dist/{chunk-PXVDVUFX.js → chunk-W74FGUZH.js} +10 -3
- package/dist/chunk-W74FGUZH.js.map +1 -0
- package/dist/{chunk-2IWNUDSZ.js → chunk-WNXI3MPM.js} +2 -2
- package/dist/chunk-WNXI3MPM.js.map +1 -0
- package/dist/chunk-XXNCFWXT.js +2118 -0
- package/dist/chunk-XXNCFWXT.js.map +1 -0
- package/dist/{client-bsiNPHBi.d.ts → client-CwOPPpFF.d.ts} +11 -1
- package/dist/{createCartHandler-C4RrPwSG.d.ts → createCartHandler-7DdKB-GF.d.ts} +1 -1
- package/dist/custom-css-Bl7Ur3-H.d.ts +6 -0
- package/dist/editor.d.ts +57 -104
- package/dist/editor.js +270 -1
- package/dist/editor.js.map +1 -1
- package/dist/events-react.d.ts +4 -2
- package/dist/events-react.js +6 -4
- package/dist/events-react.js.map +1 -1
- package/dist/events.d.ts +3 -3
- package/dist/events.js +1 -1
- package/dist/{fetch-M3Y-fQrW.d.ts → fetch-Bq_cc8_G.d.ts} +5 -0
- package/dist/hydrogen-CqDMW3YC.d.ts +259 -0
- package/dist/index.d.ts +75 -51
- package/dist/index.js +19 -15
- package/dist/index.js.map +1 -1
- package/dist/react-router.d.ts +40 -9
- package/dist/react-router.js +16 -7
- package/dist/react-router.js.map +1 -1
- package/dist/react.d.ts +79 -11
- package/dist/react.js +279 -10
- package/dist/react.js.map +1 -1
- package/dist/{routing-sEonP93J.d.ts → routing-Bz3Cg0BW.d.ts} +36 -6
- package/dist/seo.d.ts +7 -4
- package/dist/seo.js +2 -2
- package/dist/settings.d.ts +14 -4
- package/dist/settings.js +2 -2
- package/dist/{shop-BJSvtmnV.d.ts → shop-CnrnSAJw.d.ts} +33 -6
- package/dist/{store-CtCWHI8H.d.ts → store-ZzoBbWir.d.ts} +1 -1
- package/dist/storefront-api-types.d.ts +12 -0
- package/dist/{types-BDhHWZsP.d.ts → types-BkY0yET-.d.ts} +3 -3
- package/dist/{types-bcbQzx87.d.ts → types-DZX8ScsJ.d.ts} +2 -0
- package/package.json +4 -4
- package/dist/cart-documents-CwwRTvm8.d.ts +0 -21
- package/dist/chunk-2IWNUDSZ.js.map +0 -1
- package/dist/chunk-GGOZELAA.js.map +0 -1
- package/dist/chunk-H3D7BAOL.js.map +0 -1
- package/dist/chunk-M7BPQ54D.js.map +0 -1
- package/dist/chunk-MCIFKJQK.js.map +0 -1
- package/dist/chunk-PXVDVUFX.js.map +0 -1
- package/dist/chunk-PXZ737N3.js +0 -439
- package/dist/chunk-PXZ737N3.js.map +0 -1
- package/dist/chunk-XMTWFJCZ.js.map +0 -1
package/dist/events-react.js.map
CHANGED
|
@@ -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":";;;;;;;AAsCO,SAAS,qBAAqB,KAAA,EAOnC;AACA,EAAA,MAAM,CAAC,KAAA,EAAO,QAAQ,CAAA,GAAI,SAAiC,MAAM,CAAA;AACjE,EAAA,MAAM,UAAA,GAAa,OAAO,CAAC,CAAA;AAC3B,EAAA,MAAM,cAAA,GAAiB,OAAsB,IAAI,CAAA;AACjD,EAAA,MAAM,cAAA,GAAiB,OAAsB,IAAI,CAAA;AACjD,EAAA,MAAM,YAAA,GAAe,MAAA,CAAO,KAAA,CAAM,MAAM,CAAA;AACxC,EAAA,MAAM,cAAA,GAAiB,MAAA,CAAO,KAAA,CAAM,iBAAiB,CAAA;AAErD,EAAA,SAAA,CAAU,MAAM;AACd,IAAA,IACE,aAAa,OAAA,KAAY,KAAA,CAAM,UAC/B,cAAA,CAAe,OAAA,KAAY,MAAM,iBAAA,EACjC;AACA,MAAA,YAAA,CAAa,UAAU,KAAA,CAAM,MAAA;AAC7B,MAAA,cAAA,CAAe,UAAU,KAAA,CAAM,iBAAA;AAC/B,MAAA,UAAA,CAAW,OAAA,IAAW,CAAA;AACtB,MAAA,QAAA,CAAS,MAAM,CAAA;AAAA,IACjB;AAAA,EACF,GAAG,CAAC,KAAA,CAAM,MAAA,EAAQ,KAAA,CAAM,iBAAiB,CAAC,CAAA;AAE1C,EAAA,SAAA;AAAA,IACE,MAAM,MAAM;AACV,MAAA,UAAA,CAAW,OAAA,IAAW,CAAA;AAAA,IACxB,CAAA;AAAA,IACA;AAAC,GACH;AAEA,EAAA,MAAM,KAAA,GAAQ,YAAY,MAAM;AAC9B,IAAA,UAAA,CAAW,OAAA,IAAW,CAAA;AACtB,IAAA,QAAA,CAAS,MAAM,CAAA;AAAA,EACjB,CAAA,EAAG,EAAE,CAAA;AAEL,EAAA,eAAe,OAAO,UAAA,EAAwD;AAC5E,IAAA,MAAM,OAAA,GAAU,EAAE,UAAA,CAAW,OAAA;AAC7B,IAAA,MAAM,QAAA,GAAW,sBAAA,CAAuB,UAAA,EAAY,cAAA,EAAgB,cAAc,CAAA;AAClF,IAAA,QAAA,CAAS,YAAY,CAAA;AACrB,IAAA,IAAI;AACF,MAAA,MAAM,MAAA,GAAS,MAAM,KAAA,CAAM,MAAA,CAAO,mBAAmB,QAAQ,CAAA;AAC7D,MAAA,IAAI,OAAA,KAAY,WAAW,OAAA,EAAS;AACpC,MAAA,IAAI,MAAA,CAAO,SAAS,UAAA,EAAY;AAC9B,QAAA,KAAA,CAAM,iBAAA,GAAoB,OAAO,eAAe,CAAA;AAChD,QAAA,QAAA,CAAS,gBAAgB,CAAA;AAAA,MAC3B,CAAA,MAAA,IAAW,MAAA,CAAO,IAAA,KAAS,UAAA,EAAY;AACrC,QAAA,QAAA,CAAS,mBAAmB,CAAA;AAAA,MAC9B,CAAA,MAAO;AACL,QAAA,QAAA,CAAS,YAAY,CAAA;AAAA,MACvB;AAAA,IACF,CAAA,CAAA,MAAQ;AACN,MAAA,IAAI,OAAA,KAAY,WAAW,OAAA,EAAS;AACpC,MAAA,QAAA,CAAS,eAAe,CAAA;AAAA,IAC1B;AAAA,EACF;AAEA,EAAA,OAAO,EAAE,KAAA,EAAO,MAAA,EAAQ,KAAA,EAAM;AAChC;AAEA,SAAS,gBAAgB,IAAA,EAA+C;AACtE,EAAA,MAAM,IAAA,GAAO,IAAA,KAAS,uBAAA,GAA0B,aAAA,GAAgB,UAAA;AAChE,EAAA,OAAO,CAAA,OAAA,EAAU,IAAI,CAAA,CAAA,EAAI,IAAA,CAAK,KAAK,CAAA,CAAA,EAAI,IAAA,CAAK,MAAA,GAAS,QAAA,CAAS,EAAE,CAAA,CAAE,KAAA,CAAM,CAAC,CAAC,CAAA,CAAA;AAC5E;AAEA,SAAS,cAAc,KAAA,EAAwB;AAC7C,EAAA,OAAO,IAAA,CAAK,SAAA,CAAU,KAAA,EAAO,CAAC,MAAM,IAAA,KAAkB;AACpD,IAAA,IAAI,IAAA,KAAS,QAAQ,OAAO,IAAA,KAAS,YAAY,KAAA,CAAM,OAAA,CAAQ,IAAI,CAAA,EAAG,OAAO,IAAA;AAC7E,IAAA,OAAO,MAAA,CAAO,WAAA;AAAA,MACZ,MAAA,CAAO,OAAA,CAAQ,IAA+B,CAAA,CAAE,IAAA;AAAA,QAAK,CAAC,CAAC,IAAI,CAAA,EAAG,CAAC,KAAK,CAAA,KAClE,IAAA,CAAK,aAAA,CAAc,KAAK;AAAA;AAC1B,KACF;AAAA,EACF,CAAC,CAAA;AACH;AAEA,SAAS,sBAAA,CACP,UAAA,EACA,eAAA,EACA,WAAA,EAC6B;AAC7B,EAAA,IAAI,UAAA,CAAW,gBAAA,KAAqB,eAAA,EAAiB,OAAO,UAAA;AAC5D,EAAA,IAAI,UAAA,CAAW,cAAA,CAAe,IAAA,EAAK,KAAM,IAAI,OAAO,UAAA;AACpD,EAAA,MAAM,OAAA,GAAU;AAAA,IACd,kBAAkB,UAAA,CAAW,gBAAA;AAAA,IAC7B,QAAQ,UAAA,CAAW,MAAA;AAAA,IACnB,OAAO,UAAA,CAAW;AAAA,GACpB;AACA,EAAA,MAAM,QAAA,GAAW,cAAc,OAAO,CAAA;AACtC,EAAA,IAAI,QAAA,KAAa,eAAA,CAAgB,OAAA,IAAW,WAAA,CAAY,YAAY,IAAA,EAAM;AACxE,IAAA,eAAA,CAAgB,OAAA,GAAU,QAAA;AAC1B,IAAA,WAAA,CAAY,OAAA,GAAU,eAAA,CAAgB,UAAA,CAAW,gBAAgB,CAAA;AAAA,EACnE;AACA,EAAA,OAAO,EAAE,GAAG,UAAA,EAAY,cAAA,EAAgB,YAAY,OAAA,EAAQ;AAC9D;AAGA,SAAS,qBAAqB,IAAA,EAAmC;AAC/D,EAAA,OAAO;AAAA,IACL,UAAA,EAAY;AAAA,MACV,IAAI,IAAA,CAAK,YAAA;AAAA,MACT,QAAQ,IAAA,CAAK,YAAA;AAAA,MACb,OAAO,IAAA,CAAK;AAAA,KACd;AAAA,IACA,OAAA,EAAS;AAAA,MACP,IAAI,IAAA,CAAK,SAAA;AAAA,MACT,cAAc,IAAA,CAAK,YAAA;AAAA,MACnB,QAAQ,IAAA,CAAK;AAAA;AACf,GACF;AACF;AAEA,IAAM,iBAAA,GAAoB;AAAA,EACxB,EAAA,EAAI;AAAA,IACF,MAAA,EAAQ,UAAA;AAAA,IACR,UAAA,EAAY,kBAAA;AAAA,IACZ,iBAAA,EAAmB,0CAAA;AAAA,IACnB,UAAA,EAAY,0BAAA;AAAA,IACZ,cAAA,EAAgB,kCAAA;AAAA,IAChB,aAAA,EAAe,yCAAA;AAAA,IACf,KAAA,EAAO,OAAA;AAAA,IACP,QAAA,EAAU,UAAA;AAAA,IACV,MAAA,EAAQ;AAAA,GACV;AAAA,EACA,EAAA,EAAI;AAAA,IACF,MAAA,EAAQ,UAAA;AAAA,IACR,UAAA,EAAY,qBAAA;AAAA,IACZ,iBAAA,EAAmB,8CAAA;AAAA,IACnB,UAAA,EAAY,+BAAA;AAAA,IACZ,cAAA,EAAgB,oCAAA;AAAA,IAChB,aAAA,EAAe,qDAAA;AAAA,IACf,KAAA,EAAO,QAAA;AAAA,IACP,QAAA,EAAU,QAAA;AAAA,IACV,MAAA,EAAQ;AAAA;AAEZ,CAAA;AAcA,SAAS,iBAAiB,MAAA,EAAyC;AACjE,EAAA,OAAO,MAAA,CAAO,aAAY,CAAE,UAAA,CAAW,IAAI,CAAA,GAAI,iBAAA,CAAkB,KAAK,iBAAA,CAAkB,EAAA;AAC1F;AAEA,SAAS,WAAW,MAAA,EAAwC;AAC1D,EAAA,OACE,MAAA,CAAO,UAAA,KAAe,SAAA,IACtB,MAAA,CAAO,WAAA,IAAe,MAAA,CAAO,WAAA,KAC5B,MAAA,CAAO,SAAA,KAAc,IAAA,IAAQ,MAAA,CAAO,SAAA,IAAa,MAAA,CAAO,WAAA,CAAA;AAE7D;AAaO,SAAS,qBAAA,CAAsB;AAAA,EACpC,KAAA;AAAA,EACA,MAAA;AAAA,EACA,MAAA;AAAA,EACA,SAAA;AAAA,EACA,cAAA;AAAA,EACA,iBAAA;AAAA,EACA,MAAA;AAAA,EACA;AACF,CAAA,EAA+B;AAC7B,EAAA,MAAM,UAAU,KAAA,CAAM,WAAA,CAAY,QAAQ,CAAC,UAAA,KAAe,WAAW,WAAW,CAAA;AAChF,EAAA,MAAM,WAAA,GAAc,OAAA,CAAQ,IAAA,CAAK,UAAU,CAAA;AAC3C,EAAA,MAAM,CAAC,YAAA,EAAc,eAAe,IAAI,QAAA,CAAS,WAAA,EAAa,MAAM,EAAE,CAAA;AACtE,EAAA,MAAM,SAAS,OAAA,CAAQ,IAAA,CAAK,CAAC,SAAA,KAAc,SAAA,CAAU,OAAO,YAAY,CAAA;AACxE,EAAA,MAAM,eAAA,GAAkB,QAAQ,WAAA,IAAe,CAAA;AAC/C,EAAA,MAAM,CAAC,QAAA,EAAU,WAAW,CAAA,GAAI,SAAS,eAAe,CAAA;AACxD,EAAA,MAAM,CAAC,KAAA,EAAO,QAAQ,CAAA,GAAI,SAAS,EAAE,CAAA;AACrC,EAAA,MAAM,CAAC,cAAA,EAAgB,iBAAiB,CAAA,GAAI,SAAS,KAAK,CAAA;AAC1D,EAAA,MAAM,CAAC,YAAA,EAAc,eAAe,CAAA,GAAI,QAAA,CAAsB,EAAE,CAAA;AAChE,EAAA,MAAM,CAAC,kBAAA,EAAoB,qBAAqB,CAAA,GAAI,QAAA;AAAA,IAAwB,MAC1E,MAAM,IAAA,CAAK,EAAE,QAAQ,eAAA,EAAgB,EAAG,OAAO,EAAC,CAAE;AAAA,GACpD;AACA,EAAA,MAAM,cAAc,KAAA,EAAM;AAC1B,EAAA,MAAM,aAAa,CAAA,mBAAA,EAAsB,WAAA,CAAY,UAAA,CAAW,GAAA,EAAK,EAAE,CAAC,CAAA,CAAA;AACxE,EAAA,MAAM,6BAA6B,aAAA,CAAc;AAAA,IAC/C,SAAA,EAAW,QAAQ,SAAA,IAAa,IAAA;AAAA,IAChC,eAAA,EAAiB,QAAQ,eAAA,IAAmB;AAAA,GAC7C,CAAA;AACD,EAAA,MAAM,kBAAA,GAAqB,OAAO,0BAA0B,CAAA;AAC5D,EAAA,MAAM,CAAC,oBAAA,EAAsB,uBAAuB,CAAA,GAAI,SAAS,CAAC,CAAA;AAClE,EAAA,MAAM,eAAe,oBAAA,CAAqB;AAAA,IACxC,MAAA;AAAA,IACA,GAAI,iBAAA,GAAoB,EAAE,iBAAA,KAAsB;AAAC,GAClD,CAAA;AACD,EAAA,MAAM,OAAO,EAAE,GAAG,iBAAiB,MAAM,CAAA,EAAG,GAAG,MAAA,EAAO;AACtD,EAAA,MAAM,aAAA,GAAgB,MAAA,CAAO,CAAA,EAAG,KAAA,CAAM,EAAE,CAAA,CAAA,EAAI,KAAA,CAAM,MAAM,CAAA,CAAA,EAAI,KAAA,CAAM,gBAAgB,CAAA,CAAA,EAAI,MAAM,CAAA,CAAE,CAAA;AAC9F,EAAA,MAAM,iBAAA,GAAoB,OAAO,SAAS,CAAA;AAE1C,EAAA,SAAA,CAAU,MAAM;AACd,IAAA,MAAM,aAAA,GAAgB,CAAA,EAAG,KAAA,CAAM,EAAE,CAAA,CAAA,EAAI,KAAA,CAAM,MAAM,CAAA,CAAA,EAAI,KAAA,CAAM,gBAAgB,CAAA,CAAA,EAAI,MAAM,CAAA,CAAA;AACrF,IAAA,IAAI,aAAA,CAAc,YAAY,aAAA,EAAe;AAC3C,MAAA,aAAA,CAAc,OAAA,GAAU,aAAA;AACxB,MAAA,MAAM,UAAA,GAAa,OAAA,CAAQ,IAAA,CAAK,UAAU,CAAA;AAC1C,MAAA,eAAA,CAAgB,UAAA,EAAY,MAAM,EAAE,CAAA;AACpC,MAAA,WAAA,CAAY,UAAA,EAAY,eAAe,CAAC,CAAA;AACxC,MAAA,QAAA,CAAS,EAAE,CAAA;AACX,MAAA,eAAA,CAAgB,EAAE,CAAA;AAClB,MAAA,qBAAA,CAAsB,KAAA,CAAM,IAAA,CAAK,EAAE,MAAA,EAAQ,UAAA,EAAY,WAAA,IAAe,CAAA,EAAE,EAAG,OAAO,EAAC,CAAE,CAAC,CAAA;AACtF,MAAA,kBAAA,CAAmB,OAAA,GAAU,0BAAA;AAC7B,MAAA,uBAAA,CAAwB,CAAC,OAAA,KAAY,OAAA,GAAU,CAAC,CAAA;AAChD,MAAA,iBAAA,CAAkB,KAAK,CAAA;AACvB,MAAA,YAAA,CAAa,KAAA,EAAM;AAAA,IACrB,CAAA,MAAA,IAAW,kBAAA,CAAmB,OAAA,KAAY,0BAAA,EAA4B;AACpE,MAAA,kBAAA,CAAmB,OAAA,GAAU,0BAAA;AAC7B,MAAA,eAAA,CAAgB,EAAE,CAAA;AAClB,MAAA,qBAAA,CAAsB,KAAA,CAAM,KAAK,EAAE,MAAA,EAAQ,UAAS,EAAG,OAAO,EAAC,CAAE,CAAC,CAAA;AAClE,MAAA,uBAAA,CAAwB,CAAC,OAAA,KAAY,OAAA,GAAU,CAAC,CAAA;AAChD,MAAA,iBAAA,CAAkB,KAAK,CAAA;AACvB,MAAA,YAAA,CAAa,KAAA,EAAM;AAAA,IACrB;AACA,IAAA,IAAI,iBAAA,CAAkB,YAAY,SAAA,EAAW;AAC3C,MAAA,iBAAA,CAAkB,OAAA,GAAU,SAAA;AAC5B,MAAA,iBAAA,CAAkB,KAAK,CAAA;AACvB,MAAA,YAAA,CAAa,KAAA,EAAM;AAAA,IACrB;AAAA,EACF,CAAA,EAAG;AAAA,IACD,SAAA;AAAA,IACA,KAAA,CAAM,MAAA;AAAA,IACN,KAAA,CAAM,EAAA;AAAA,IACN,KAAA,CAAM,gBAAA;AAAA,IACN,MAAA;AAAA,IACA,QAAA;AAAA,IACA;AAAA,GACD,CAAA;AAED,EAAA,SAAS,aAAa,MAAA,EAAsB;AAC1C,IAAA,MAAM,OAAO,OAAA,CAAQ,IAAA,CAAK,CAAC,SAAA,KAAc,SAAA,CAAU,OAAO,MAAM,CAAA;AAChE,IAAA,IAAI,CAAC,IAAA,IAAQ,CAAC,UAAA,CAAW,IAAI,CAAA,EAAG;AAChC,IAAA,eAAA,CAAgB,MAAM,CAAA;AACtB,IAAA,WAAA,CAAY,KAAK,WAAW,CAAA;AAC5B,IAAA,eAAA,CAAgB,EAAE,CAAA;AAClB,IAAA,qBAAA,CAAsB,KAAA,CAAM,IAAA,CAAK,EAAE,MAAA,EAAQ,IAAA,CAAK,aAAY,EAAG,OAAO,EAAC,CAAE,CAAC,CAAA;AAC1E,IAAA,YAAA,CAAa,KAAA,EAAM;AACnB,IAAA,iBAAA,CAAkB,KAAK,CAAA;AAAA,EACzB;AAEA,EAAA,SAAS,eAAe,IAAA,EAAoB;AAC1C,IAAA,IAAI,CAAC,MAAA,EAAQ;AACb,IAAA,MAAMA,QAAAA,GAAU,KAAK,GAAA,CAAI,MAAA,CAAO,aAAa,MAAA,CAAO,SAAA,IAAa,OAAO,WAAW,CAAA;AACnF,IAAA,MAAM,UAAA,GAAa,OAAO,QAAA,CAAS,IAAI,IAAI,IAAA,CAAK,KAAA,CAAM,IAAI,CAAA,GAAI,MAAA,CAAO,WAAA;AACrE,IAAA,MAAM,OAAA,GAAU,KAAK,GAAA,CAAI,MAAA,CAAO,aAAa,IAAA,CAAK,GAAA,CAAIA,QAAAA,EAAS,UAAU,CAAC,CAAA;AAC1E,IAAA,WAAA,CAAY,OAAO,CAAA;AACnB,IAAA,qBAAA;AAAA,MAAsB,CAAC,OAAA,KACrB,KAAA,CAAM,IAAA,CAAK,EAAE,MAAA,EAAQ,OAAA,EAAQ,EAAG,CAAC,GAAG,KAAA,KAAU,OAAA,CAAQ,KAAK,CAAA,IAAK,EAAE;AAAA,KACpE;AACA,IAAA,YAAA,CAAa,KAAA,EAAM;AACnB,IAAA,iBAAA,CAAkB,KAAK,CAAA;AAAA,EACzB;AAEA,EAAA,eAAe,aAAa,WAAA,EAAwD;AAClF,IAAA,WAAA,CAAY,cAAA,EAAe;AAC3B,IAAA,IAAI,CAAC,MAAA,IAAU,CAAC,UAAA,CAAW,MAAM,CAAA,EAAG;AAClC,MAAA,iBAAA,CAAkB,IAAI,CAAA;AACtB,MAAA;AAAA,IACF;AACA,IAAA,iBAAA,CAAkB,KAAK,CAAA;AACvB,IAAA,MAAM,KAAA,GAAQ,MAAA,CAAO,SAAA,GACjB,EAAE,SAAA,EAAW,OAAO,SAAA,CAAU,SAAA,EAAW,OAAA,EAAS,YAAA,EAAa,GAC/D,MAAA;AACJ,IAAA,MAAM,eAAe,MAAA,CAAO,eAAA,GACxB,kBAAA,CAAmB,GAAA,CAAI,CAAC,OAAA,MAAa;AAAA,MACnC,SAAA,EAAW,OAAO,eAAA,CAAiB,SAAA;AAAA,MACnC;AAAA,MACA,CAAA,GACF,MAAA;AAEJ,IAAA,IAAI,UAAA;AACJ,IAAA,IAAI,KAAA,CAAM,qBAAqB,SAAA,EAAW;AACxC,MAAA,IAAI,CAAC,SAAA,EAAW;AACd,QAAA,iBAAA,CAAkB,IAAI,CAAA;AACtB,QAAA;AAAA,MACF;AACA,MAAA,UAAA,GAAa;AAAA,QACX,gBAAA,EAAkB,SAAA;AAAA,QAClB,QAAQ,KAAA,CAAM,MAAA;AAAA,QACd,cAAA,EAAgB,EAAA;AAAA,QAChB,KAAA,EAAO;AAAA,UACL,cAAc,MAAA,CAAO,EAAA;AAAA,UACrB,QAAA;AAAA,UACA,SAAA;AAAA,UACA,MAAA;AAAA,UACA,GAAI,KAAA,GAAQ,EAAE,KAAA,KAAU,EAAC;AAAA,UACzB,GAAI,YAAA,GAAe,EAAE,YAAA,KAAiB;AAAC;AACzC,OACF;AAAA,IACF,CAAA,MAAA,IAAW,KAAA,CAAM,gBAAA,KAAqB,uBAAA,EAAyB;AAC7D,MAAA,UAAA,GAAa;AAAA,QACX,gBAAA,EAAkB,uBAAA;AAAA,QAClB,QAAQ,KAAA,CAAM,MAAA;AAAA,QACd,cAAA,EAAgB,EAAA;AAAA,QAChB,KAAA,EAAO;AAAA,UACL,cAAc,MAAA,CAAO,EAAA;AAAA,UACrB,QAAA;AAAA,UACA,YAAA,EAAc,KAAA;AAAA,UACd,MAAA;AAAA,UACA,GAAI,KAAA,GAAQ,EAAE,KAAA,KAAU,EAAC;AAAA,UACzB,GAAI,YAAA,GAAe,EAAE,YAAA,KAAiB;AAAC;AACzC,OACF;AAAA,IACF,CAAA,MAAO;AACL,MAAA,UAAA,GAAa;AAAA,QACX,gBAAA,EAAkB,eAAA;AAAA,QAClB,QAAQ,KAAA,CAAM,MAAA;AAAA,QACd,OAAO,EAAE,YAAA,EAAc,MAAA,CAAO,EAAA,EAAI,UAAU,KAAA;AAAM,OACpD;AAAA,IACF;AACA,IAAA,MAAM,YAAA,CAAa,OAAO,UAAU,CAAA;AAAA,EACtC;AAEA,EAAA,MAAM,OAAA,GAAU,MAAA,GACZ,IAAA,CAAK,GAAA,CAAI,MAAA,CAAO,aAAa,MAAA,CAAO,SAAA,IAAa,MAAA,CAAO,WAAW,CAAA,GACnE,MAAA;AACJ,EAAA,MAAM,aAAA,GAAgB,cAAA,GAAiB,eAAA,GAAkB,YAAA,CAAa,KAAA;AACtE,EAAA,MAAM,MAAA,GAAS,aAAA,KAAkB,MAAA,GAAS,EAAA,GAAK,KAAK,aAAa,CAAA;AAEjE,EAAA,4BACG,MAAA,EAAA,EAAK,SAAA,EAAsB,+BAAA,EAA6B,IAAA,EAAC,UAAU,YAAA,EAClE,QAAA,EAAA;AAAA,oBAAA,IAAA,CAAC,OAAA,EAAA,EACC,QAAA,EAAA;AAAA,sBAAA,GAAA,CAAC,MAAA,EAAA,EAAM,eAAK,MAAA,EAAO,CAAA;AAAA,sBACnB,GAAA;AAAA,QAAC,QAAA;AAAA,QAAA;AAAA,UACC,yBAAA,EAAuB,IAAA;AAAA,UACvB,KAAA,EAAO,YAAA;AAAA,UACP,UAAU,CAAC,WAAA,KAAgB,YAAA,CAAa,WAAA,CAAY,cAAc,KAAK,CAAA;AAAA,UAEtE,kBAAQ,GAAA,CAAI,CAAC,8BACZ,GAAA,CAAC,QAAA,EAAA,EAA0B,OAAO,SAAA,CAAU,EAAA,EAAI,QAAA,EAAU,CAAC,WAAW,SAAS,CAAA,EAC5E,oBAAU,KAAA,EAAA,EADA,SAAA,CAAU,EAEvB,CACD;AAAA;AAAA;AACH,KAAA,EACF,CAAA;AAAA,yBACC,OAAA,EAAA,EACC,QAAA,EAAA;AAAA,sBAAA,GAAA,CAAC,MAAA,EAAA,EAAM,eAAK,QAAA,EAAS,CAAA;AAAA,sBACrB,GAAA;AAAA,QAAC,OAAA;AAAA,QAAA;AAAA,UACC,IAAA,EAAK,UAAA;AAAA,UACL,IAAA,EAAK,QAAA;AAAA,UACL,KAAA,EAAO,QAAA;AAAA,UACP,KAAK,MAAA,EAAQ,WAAA;AAAA,UACb,GAAA,EAAK,OAAA;AAAA,UACL,QAAA,EAAQ,IAAA;AAAA,UACR,IAAA,EAAM,CAAA;AAAA,UACN,UAAU,CAAC,WAAA,KAAgB,cAAA,CAAe,WAAA,CAAY,cAAc,aAAa;AAAA;AAAA;AACnF,KAAA,EACF,CAAA;AAAA,IACC,KAAA,CAAM,gBAAA,KAAqB,SAAA,mBAC1B,IAAA,CAAC,OAAA,EAAA,EACC,QAAA,EAAA;AAAA,sBAAA,GAAA,CAAC,MAAA,EAAA,EAAM,eAAK,KAAA,EAAM,CAAA;AAAA,sBAClB,GAAA;AAAA,QAAC,OAAA;AAAA,QAAA;AAAA,UACC,IAAA,EAAK,OAAA;AAAA,UACL,QAAA,EAAQ,IAAA;AAAA,UACR,KAAA,EAAO,KAAA;AAAA,UACP,QAAA,EAAU,CAAC,WAAA,KAAgB;AACzB,YAAA,QAAA,CAAS,WAAA,CAAY,cAAc,KAAK,CAAA;AACxC,YAAA,iBAAA,CAAkB,KAAK,CAAA;AACvB,YAAA,YAAA,CAAa,KAAA,EAAM;AAAA,UACrB;AAAA;AAAA;AACF,KAAA,EACF,CAAA,GACE,IAAA;AAAA,IACH,MAAA,EAAQ,SAAA,mBACP,GAAA,CAAC,KAAA,EAAA,EAAI,+BAA2B,IAAA,EAC9B,QAAA,kBAAA,GAAA;AAAA,MAAC,oBAAA;AAAA,MAAA;AAAA,QAEC,IAAA,EAAM,oBAAA,CAAqB,MAAA,CAAO,SAAS,CAAA;AAAA,QAC3C,MAAA;AAAA,QACC,GAAI,cAAA,KAAmB,MAAA,GAAY,EAAC,GAAI,EAAE,cAAA,EAAe;AAAA,QAC1D,OAAA,EAAS,YAAA;AAAA,QACT,QAAA,EAAU,GAAG,UAAU,CAAA,OAAA,EAAU,MAAM,EAAE,CAAA,QAAA,EAAW,OAAO,EAAE,CAAA,MAAA,CAAA;AAAA,QAC7D,eAAA,EAAiB,CAAC,IAAA,KAAS;AACzB,UAAA,eAAA,CAAgB,IAAI,CAAA;AACpB,UAAA,iBAAA,CAAkB,KAAK,CAAA;AACvB,UAAA,YAAA,CAAa,KAAA,EAAM;AAAA,QACrB;AAAA,OAAA;AAAA,MAVK,CAAA,EAAG,oBAAoB,CAAA,CAAA,EAAI,MAAA,CAAO,EAAE,CAAA,CAAA,EAAI,MAAA,CAAO,UAAU,SAAS,CAAA;AAAA,OAY3E,CAAA,GACE,IAAA;AAAA,IACH,QAAQ,eAAA,GACL,kBAAA,CAAmB,GAAA,CAAI,CAAC,SAAS,KAAA,qBAC/B,GAAA;AAAA,MAAC,KAAA;AAAA,MAAA;AAAA,QAEC,mCAAA,EAAiC,IAAA;AAAA,QAEjC,QAAA,kBAAA,GAAA;AAAA,UAAC,oBAAA;AAAA,UAAA;AAAA,YACC,IAAA,EAAM,oBAAA,CAAqB,MAAA,CAAO,eAAgB,CAAA;AAAA,YAClD,MAAA;AAAA,YACC,GAAI,cAAA,KAAmB,MAAA,GAAY,EAAC,GAAI,EAAE,cAAA,EAAe;AAAA,YAC1D,OAAA;AAAA,YACA,QAAA,EAAU,CAAA,EAAG,UAAU,CAAA,OAAA,EAAU,KAAA,CAAM,EAAE,CAAA,QAAA,EAAW,MAAA,CAAO,EAAE,CAAA,aAAA,EAAgB,KAAK,CAAA,CAAA;AAAA,YAClF,eAAA,EAAiB,CAAC,IAAA,KAAS;AACzB,cAAA,qBAAA;AAAA,gBAAsB,CAAC,YACrB,OAAA,CAAQ,GAAA;AAAA,kBAAI,CAAC,KAAA,EAAO,gBAAA,KAClB,gBAAA,KAAqB,QAAQ,IAAA,GAAO;AAAA;AACtC,eACF;AACA,cAAA,iBAAA,CAAkB,KAAK,CAAA;AACvB,cAAA,YAAA,CAAa,KAAA,EAAM;AAAA,YACrB;AAAA;AAAA;AACF,OAAA;AAAA,MAlBK,CAAA,EAAG,oBAAoB,CAAA,CAAA,EAAI,MAAA,CAAO,EAAE,IAAI,MAAA,CAAO,eAAA,CAAiB,SAAS,CAAA,CAAA,EAAI,KAAK,CAAA;AAAA,KAoB1F,CAAA,GACD,IAAA;AAAA,oBACJ,GAAA,CAAC,YAAO,IAAA,EAAK,QAAA,EAAS,UAAU,YAAA,CAAa,KAAA,KAAU,YAAA,EACpD,QAAA,EAAA,IAAA,CAAK,MAAA,EACR,CAAA;AAAA,oBACA,GAAA,CAAC,GAAA,EAAA,EAAE,IAAA,EAAK,QAAA,EAAS,WAAA,EAAU,UAAS,aAAA,EAAY,MAAA,EAAO,wBAAA,EAAwB,aAAA,EAC5E,QAAA,EAAA,MAAA,EACH;AAAA,GAAA,EACF,CAAA;AAEJ;AAwBA,IAAM,YAAA,GAAyC;AAAA,EAC7C,SAAA,EAAW,qBAAA;AAAA,EACX,KAAA,EAAO,aAAA;AAAA,EACP,MAAA,EAAQ,sBAAA;AAAA,EACR,QAAA,EAAU,yBAAA;AAAA,EACV,OAAA,EAAS,sCAAA;AAAA,EACT,OAAA,EAAS,yBAAA;AAAA,EACT,WAAA,EAAa,8BAAA;AAAA,EACb,YAAA,EAAc,yCAAA;AAAA,EACd,KAAA,EAAO,WAAA;AAAA,EACP,OAAA,EAAS;AACX,CAAA;AAmBA,SAAS,eAAA,GAAkD;AACzD,EAAA,OAAO,OAAO,MAAA,KAAW,WAAA,GAAc,MAAA,GAAY,MAAA,CAAO,QAAA;AAC5D;AAEA,SAAS,cAAA,GAAgD;AACvD,EAAA,OAAO,OAAO,MAAA,KAAW,WAAA,GAAc,MAAA,GAAY,MAAA,CAAO,OAAA;AAC5D;AAEO,SAAS,kBAAA,CAAmB;AAAA,EACjC,MAAA;AAAA,EACA,OAAA;AAAA,EACA,SAAA;AAAA,EACA,MAAA;AAAA,EACA,cAAA;AAAA,EACA,QAAA;AAAA,EACA,OAAA;AAAA,EACA,MAAA;AAAA,EACA,cAAA;AAAA,EACA,iBAAA;AAAA,EACA,iBAAA;AAAA,EACA,YAAA;AAAA,EACA;AACF,CAAA,EAA4B;AAC1B,EAAA,MAAM,IAAA,GAAO,EAAE,GAAG,YAAA,EAAc,GAAG,MAAA,EAAO;AAC1C,EAAA,MAAM,KAAA,GAAQ,OAAsB,IAAI,CAAA;AACxC,EAAA,MAAM,mBAAA,GAAsB,MAAA,iBAAO,IAAI,GAAA,EAAa,CAAA;AACpD,EAAA,MAAM,eAAA,GAAkB,OAAO,CAAC,CAAA;AAChC,EAAA,MAAM,kBAAA,GAAqB,MAAA,CAAsB,iBAAA,GAAoB,CAAA,GAAI,IAAI,CAAA;AAC7E,EAAA,MAAM,OAAA,GAAU,OAAO,KAAK,CAAA;AAC5B,EAAA,MAAM,uBAAA,GAA0B,OAAsB,IAAI,CAAA;AAC1D,EAAA,MAAM,qBAAqB,MAAA,CAAO,EAAE,QAAQ,SAAA,EAAW,MAAA,EAAQ,mBAAmB,CAAA;AAClF,EAAA,MAAM,mBAAA,GAAsB,OAAA;AAAA,IAC1B,MAAM,cAAA,IAAkB,CAAA,aAAA,EAAgB,IAAA,CAAK,KAAK,CAAA,CAAA,EAAI,IAAA,CAAK,MAAA,GAAS,QAAA,CAAS,EAAE,CAAA,CAAE,KAAA,CAAM,CAAC,CAAC,CAAA,CAAA;AAAA,IACzF,CAAC,gBAAgB,OAAO;AAAA,GAC1B;AACA,EAAA,MAAM,qBAAA,GAAwB,OAAA;AAAA,IAC5B,MAAM,CAAA,eAAA,EAAkB,IAAA,CAAK,GAAA,EAAK,CAAA,CAAA,EAAI,IAAA,CAAK,MAAA,EAAO,CAAE,QAAA,CAAS,EAAE,CAAA,CAAE,KAAA,CAAM,CAAC,CAAC,CAAA,CAAA;AAAA,IACzE,CAAC,OAAO;AAAA,GACV;AACA,EAAA,MAAM,CAAC,QAAA,EAAU,WAAW,IAAI,QAAA,CAAS,iBAAA,EAAmB,UAAU,QAAQ,CAAA;AAC9E,EAAA,MAAM,CAAC,UAAA,EAAY,aAAa,CAAA,GAAI,QAAA;AAAA,IAClC,iBAAA,IAAqB;AAAA,GACvB;AACA,EAAA,MAAM,CAAC,KAAA,EAAO,QAAQ,CAAA,GAAI,QAAA;AAAA,IACxB,oBACI,iBAAA,CAAkB,KAAA,KAAU,SAAA,GAC1B,SAAA,GACA,WACD,YAAA,IAAgB;AAAA,GACvB;AAEA,EAAA,eAAe,iBAAA,CAAkB,YAAoB,UAAA,EAAmC;AACtF,IAAA,IAAI;AACF,MAAA,MAAM,QAAQ,MAAM,MAAA,CAAO,YAAA,CAAa,OAAA,EAAS,YAAY,qBAAqB,CAAA;AAClF,MAAA,IAAI,CAAC,OAAA,CAAQ,OAAA,IAAW,UAAA,KAAe,gBAAgB,OAAA,EAAS;AAChE,MAAA,kBAAA,CAAmB,OAAA,GAAU,UAAA;AAC7B,MAAA,aAAA,CAAc,KAAK,CAAA;AACnB,MAAA,IAAI,KAAA,CAAM,KAAA,KAAU,SAAA,EAAW,QAAA,CAAS,SAAS,CAAA;AAAA,WAAA,IACxC,IAAI,IAAA,CAAK,KAAA,CAAM,SAAS,CAAA,CAAE,OAAA,EAAQ,IAAK,IAAA,CAAK,GAAA,EAAI,EAAG,QAAA,CAAS,SAAS,CAAA;AAAA,oBAChE,QAAQ,CAAA;AAAA,IACxB,SAAS,KAAA,EAAO;AACd,MAAA,IAAI,CAAC,OAAA,CAAQ,OAAA,IAAW,UAAA,KAAe,gBAAgB,OAAA,EAAS;AAChE,MAAA,QAAA;AAAA,QACE,KAAA,YAAiB,4BAAA,IAAgC,KAAA,CAAM,MAAA,KAAW,MAC9D,aAAA,GACA;AAAA,OACN;AAAA,IACF;AAAA,EACF;AAEA,EAAA,eAAA,CAAgB,MAAM;AACpB,IAAA,IACE,wBAAwB,OAAA,KAAY,IAAA,IACpC,gBAAgB,OAAA,KAAY,uBAAA,CAAwB,UAAU,CAAA,EAC9D;AAGA,MAAA,eAAA,CAAgB,UAAU,uBAAA,CAAwB,OAAA;AAAA,IACpD;AACA,IAAA,uBAAA,CAAwB,OAAA,GAAU,IAAA;AAClC,IAAA,OAAA,CAAQ,OAAA,GAAU,IAAA;AAClB,IAAA,OAAO,MAAM;AACX,MAAA,OAAA,CAAQ,OAAA,GAAU,KAAA;AAClB,MAAA,uBAAA,CAAwB,UAAU,eAAA,CAAgB,OAAA;AAClD,MAAA,eAAA,CAAgB,OAAA,IAAW,CAAA;AAAA,IAC7B,CAAA;AAAA,EACF,CAAA,EAAG,EAAE,CAAA;AAEL,EAAA,eAAA,CAAgB,MAAM;AACpB,IAAA,MAAM,WAAW,kBAAA,CAAmB,OAAA;AACpC,IAAA,IACE,QAAA,CAAS,MAAA,KAAW,MAAA,IACpB,QAAA,CAAS,SAAA,KAAc,SAAA,IACvB,QAAA,CAAS,MAAA,KAAW,MAAA,IACpB,QAAA,CAAS,iBAAA,KAAsB,iBAAA,EAC/B;AACA,MAAA;AAAA,IACF;AACA,IAAA,kBAAA,CAAmB,OAAA,GAAU,EAAE,MAAA,EAAQ,SAAA,EAAW,QAAQ,iBAAA,EAAkB;AAC5E,IAAA,eAAA,CAAgB,OAAA,IAAW,CAAA;AAC3B,IAAA,kBAAA,CAAmB,OAAA,GAAU,IAAA;AAC7B,IAAA,KAAA,CAAM,OAAA,GAAU,IAAA;AAChB,IAAA,WAAA,CAAY,KAAK,CAAA;AACjB,IAAA,aAAA,CAAc,IAAI,CAAA;AAClB,IAAA,QAAA,CAAS,aAAa,CAAA;AAAA,EACxB,GAAG,CAAC,SAAA,EAAW,MAAA,EAAQ,MAAA,EAAQ,iBAAiB,CAAC,CAAA;AAEjD,EAAA,eAAA,CAAgB,MAAM;AACpB,IAAA,IAAI,iBAAiB,MAAA,EAAW;AAChC,IAAA,MAAM,eAAA,GAAkB,YAAY,eAAA,EAAgB;AACpD,IAAA,MAAM,cAAA,GAAiB,WAAW,cAAA,EAAe;AACjD,IAAA,IAAI,eAAA,KAAoB,MAAA,IAAa,cAAA,KAAmB,MAAA,EAAW;AACjE,MAAA,IAAI,iBAAA,KAAsB,MAAA,EAAW,QAAA,CAAS,aAAa,CAAA;AAC3D,MAAA;AAAA,IACF;AACA,IAAA,MAAM,UAAA,GAAa,oBAAA,CAAqB,eAAA,CAAgB,IAAI,CAAA;AAC5D,IAAA,IAAI,mBAAA,CAAoB,OAAA,CAAQ,GAAA,CAAI,UAAU,CAAA,EAAG;AACjD,IAAA,mBAAA,CAAoB,OAAA,CAAQ,IAAI,UAAU,CAAA;AAC1C,IAAA,eAAA,CAAgB,OAAA,IAAW,CAAA;AAC3B,IAAA,MAAM,aAAa,eAAA,CAAgB,OAAA;AACnC,IAAA,kBAAA,CAAmB,OAAA,GAAU,IAAA;AAC7B,IAAA,KAAA,CAAM,OAAA,GAAU,IAAA;AAChB,IAAA,WAAA,CAAY,KAAK,CAAA;AACjB,IAAA,aAAA,CAAc,IAAI,CAAA;AAClB,IAAA,QAAA,CAAS,WAAW,CAAA;AACpB,IAAA,MAAM,UAAA,GAAa,yBAAA,CAA0B,eAAA,EAAiB,cAAc,CAAA;AAC5E,IAAA,mBAAA,CAAoB,OAAA,CAAQ,GAAA,CAAI,oBAAA,CAAqB,eAAA,CAAgB,IAAI,CAAC,CAAA;AAC1E,IAAA,KAAA,CAAM,OAAA,GAAU,UAAA;AAChB,IAAA,WAAA,CAAY,eAAe,IAAI,CAAA;AAC/B,IAAA,IAAI,eAAe,IAAA,EAAM;AACvB,MAAA,IAAI,iBAAA,KAAsB,MAAA,EAAW,QAAA,CAAS,aAAa,CAAA;AAC3D,MAAA;AAAA,IACF;AACA,IAAA,KAAK,iBAAA,CAAkB,YAAY,UAAU,CAAA;AAAA,EAC/C,CAAC,CAAA;AAED,EAAA,SAAS,YAAA,GAAqB;AAC5B,IAAA,MAAM,aAAa,KAAA,CAAM,OAAA;AACzB,IAAA,IAAI,eAAe,IAAA,EAAM;AACvB,MAAA,QAAA,CAAS,aAAa,CAAA;AACtB,MAAA;AAAA,IACF;AACA,IAAA,MAAM,aAAa,eAAA,CAAgB,OAAA;AACnC,IAAA,QAAA,CAAS,WAAW,CAAA;AACpB,IAAA,KAAK,iBAAA,CAAkB,YAAY,UAAU,CAAA;AAAA,EAC/C;AAEA,EAAA,eAAe,KAAA,GAAuB;AACpC,IAAA,MAAM,aAAa,KAAA,CAAM,OAAA;AACzB,IAAA,MAAM,aAAa,eAAA,CAAgB,OAAA;AACnC,IAAA,IACE,eAAe,IAAA,IACf,kBAAA,CAAmB,YAAY,UAAA,IAC/B,UAAA,EAAY,YAAY,OAAA,EACxB;AACA,MAAA,QAAA,CAAS,aAAa,CAAA;AACtB,MAAA;AAAA,IACF;AACA,IAAA,QAAA,CAAS,UAAU,CAAA;AACnB,IAAA,IAAI;AACF,MAAA,MAAM,OAAA,GAAU,MAAM,MAAA,CAAO,UAAA;AAAA,QAC3B,OAAA;AAAA,QACA,EAAE,UAAA,EAAY,SAAA,EAAW,MAAA,EAAO;AAAA,QAChC;AAAA,OACF;AACA,MAAA,IAAI,CAAC,OAAA,CAAQ,OAAA,IAAW,UAAA,KAAe,gBAAgB,OAAA,EAAS;AAChE,MAAA,KAAA,CAAM,OAAA,GAAU,IAAA;AAChB,MAAA,WAAA,CAAY,KAAK,CAAA;AACjB,MAAA,QAAA,CAAS,SAAS,CAAA;AAClB,MAAA,iBAAA,GAAoB,OAAO,CAAA;AAAA,IAC7B,SAAS,KAAA,EAAO;AACd,MAAA,IAAI,CAAC,OAAA,CAAQ,OAAA,IAAW,UAAA,KAAe,gBAAgB,OAAA,EAAS;AAChE,MAAA,QAAA;AAAA,QACE,KAAA,YAAiB,4BAAA,IAAgC,KAAA,CAAM,MAAA,KAAW,MAC9D,aAAA,GACA;AAAA,OACN;AAAA,IACF;AAAA,EACF;AAEA,EAAA,MAAM,MAAA,GACJ,KAAA,KAAU,WAAA,GACN,IAAA,CAAK,SAAA,GACL,UAAU,UAAA,GACR,IAAA,CAAK,QAAA,GACL,KAAA,KAAU,SAAA,GACR,IAAA,CAAK,UACL,KAAA,KAAU,SAAA,GACR,IAAA,CAAK,OAAA,GACL,KAAA,KAAU,aAAA,GACR,KAAK,WAAA,GACL,KAAA,KAAU,eAAA,GACR,IAAA,CAAK,YAAA,GACL,IAAA;AAEhB,EAAA,uBACE,IAAA,CAAC,SAAA,EAAA,EAAQ,SAAA,EAAsB,iCAAA,EAA+B,IAAA,EAC3D,QAAA,EAAA;AAAA,IAAA,UAAA,wBACE,QAAA,EAAA,EACC,QAAA,EAAA;AAAA,sBAAA,GAAA,CAAC,IAAA,EAAA,EAAI,qBAAW,UAAA,EAAW,CAAA;AAAA,2BAC1B,GAAA,EAAA,EACE,QAAA,EAAA;AAAA,QAAA,UAAA,CAAW,eAAA;AAAA,QAAgB,QAAA;AAAA,QAAI,UAAA,CAAW;AAAA,OAAA,EAC7C,CAAA;AAAA,sBACA,GAAA,CAAC,MAAA,EAAA,EAAK,QAAA,EAAU,UAAA,CAAW,kBAAA,EACxB,QAAA,EAAA,cAAA,GACG,cAAA,CAAe,UAAA,CAAW,kBAAkB,CAAA,GAC5C,UAAA,CAAW,kBAAA,EACjB;AAAA,KAAA,EACF,CAAA,GACE,IAAA;AAAA,IAAA,CACF,KAAA,KAAU,YACT,KAAA,KAAU,SAAA,IAAa,YACvB,KAAA,KAAU,eAAA,IAAmB,QAAA,KAChC,UAAA,mBACE,IAAA,CAAA,QAAA,EAAA,EACE,QAAA,EAAA;AAAA,sBAAA,IAAA,CAAC,GAAA,EAAA,EACE,QAAA,EAAA;AAAA,QAAA,IAAA,CAAK,OAAA;AAAA,QAAQ,GAAA;AAAA,QAAE,GAAA;AAAA,wBAChB,GAAA,CAAC,MAAA,EAAA,EAAK,QAAA,EAAU,UAAA,CAAW,SAAA,EACxB,QAAA,EAAA,cAAA,GAAiB,cAAA,CAAe,UAAA,CAAW,SAAS,CAAA,GAAI,UAAA,CAAW,SAAA,EACtE;AAAA,OAAA,EACF,CAAA;AAAA,sBACA,GAAA,CAAC,QAAA,EAAA,EAAO,IAAA,EAAK,QAAA,EAAS,OAAA,EAAS,KAAA,EAC5B,QAAA,EAAA,KAAA,KAAU,SAAA,GAAY,IAAA,CAAK,MAAA,GAAS,IAAA,CAAK,KAAA,EAC5C;AAAA,KAAA,EACF,CAAA,GACE,IAAA;AAAA,IACH,KAAA,KAAU,eAAA,IAAmB,QAAA,IAAY,UAAA,KAAe,IAAA,mBACvD,GAAA,CAAC,QAAA,EAAA,EAAO,IAAA,EAAK,QAAA,EAAS,OAAA,EAAS,YAAA,EAC5B,QAAA,EAAA,IAAA,CAAK,OACR,CAAA,GACE,IAAA;AAAA,oBACJ,GAAA,CAAC,OAAE,IAAA,EAAK,QAAA,EAAS,aAAU,QAAA,EAAS,aAAA,EAAY,QAC7C,QAAA,EAAA,MAAA,EACH;AAAA,GAAA,EACF,CAAA;AAEJ","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"]}
|
package/dist/events.d.ts
CHANGED
|
@@ -1,9 +1,9 @@
|
|
|
1
|
-
import { C as CartHandler } from './createCartHandler-
|
|
2
|
-
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
|
|
1
|
+
import { C as CartHandler } from './createCartHandler-7DdKB-GF.js';
|
|
2
|
+
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';
|
|
3
3
|
export { a as OfferTokenHistory, O as OfferTokenLocation, c as consumeOfferTokenFragment, o as offerTokenHrefMarker } from './offer-token-C-nk_nj8.js';
|
|
4
4
|
import './client-D51WdvYR.js';
|
|
5
5
|
import './http-types-CGh8WGHB.js';
|
|
6
|
-
import './types-
|
|
6
|
+
import './types-DZX8ScsJ.js';
|
|
7
7
|
import './types-CSNXbGFW.js';
|
|
8
8
|
|
|
9
9
|
declare class EventCartPreparationError extends Error {
|
package/dist/events.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
export { EventCartPreparationError, eventCartToken, prepareEventCart } from './chunk-4OQYNUGM.js';
|
|
2
2
|
export { consumeOfferTokenFragment, offerTokenHrefMarker } from './chunk-WG7HYVHJ.js';
|
|
3
|
-
export { StorefrontEventsRequestError, createEventsClient } from './chunk-
|
|
3
|
+
export { StorefrontEventsRequestError, createEventsClient } from './chunk-R4N565GX.js';
|
|
4
4
|
//# sourceMappingURL=events.js.map
|
|
5
5
|
//# sourceMappingURL=events.js.map
|
|
@@ -18,6 +18,11 @@ interface FetchThemeSettingsOptions {
|
|
|
18
18
|
readonly fetch?: typeof fetch;
|
|
19
19
|
/** Same-origin settings endpoint (default `/api/storefront/settings`). */
|
|
20
20
|
readonly endpoint?: string;
|
|
21
|
+
/**
|
|
22
|
+
* Restrict the response to one rendered template plus the base commerce templates and layout
|
|
23
|
+
* groups needed for a complete page. Omit for the legacy/full editor document.
|
|
24
|
+
*/
|
|
25
|
+
readonly templateHandle?: string;
|
|
21
26
|
/**
|
|
22
27
|
* Explicit local-preview escape hatch for server-side theme workers that call the Kotao API directly.
|
|
23
28
|
* Production themes should keep the default same-origin path.
|
|
@@ -0,0 +1,259 @@
|
|
|
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-CfNBWu0H.js';
|
|
3
|
+
|
|
4
|
+
declare const HYDROGEN_EDITOR_PROTOCOL_VERSION: 1;
|
|
5
|
+
declare const HYDROGEN_EDITOR_BRIDGE_LIMITS: {
|
|
6
|
+
readonly maxMessageBytes: 131072;
|
|
7
|
+
readonly maxMessageDepth: 32;
|
|
8
|
+
readonly maxBufferedMessages: 100;
|
|
9
|
+
readonly maxDraftOperations: 1000;
|
|
10
|
+
readonly maxProcessedMessages: 2048;
|
|
11
|
+
};
|
|
12
|
+
type HydrogenEditorReconciliationReason = 'route' | 'loader' | 'suspense' | 'hmr';
|
|
13
|
+
type HydrogenEditorOperationFailureCode = 'CAPABILITY_DENIED' | 'COMPONENT_NOT_FOUND' | 'DOCUMENT_MISMATCH' | 'DUPLICATE_OPERATION_CONFLICT' | 'INSTANCE_NOT_FOUND' | 'INVALID_OPERATION' | 'OPERATION_LIMIT_EXCEEDED' | 'REVISION_MISMATCH' | 'SLOT_CONSTRAINT' | 'UNSUPPORTED_BOUNDARY';
|
|
14
|
+
type HydrogenEditorProtocolFailureCode = 'AUTH_CONTEXT_MISMATCH' | 'BUFFER_LIMIT_EXCEEDED' | 'DUPLICATE_MESSAGE_CONFLICT' | 'MESSAGE_EXPIRED' | 'MESSAGE_TOO_DEEP' | 'MESSAGE_TOO_LARGE' | 'SEQUENCE_STALE' | 'UNKNOWN_MESSAGE' | 'UNSUPPORTED_PROTOCOL';
|
|
15
|
+
interface HydrogenEditorSecurityContext {
|
|
16
|
+
readonly sessionId: string;
|
|
17
|
+
readonly baseSha: string;
|
|
18
|
+
readonly manifestHash: string;
|
|
19
|
+
readonly channelNonce: string;
|
|
20
|
+
/**
|
|
21
|
+
* A short-lived, audience-bound token minted by the trusted Web module. The bridge compares the
|
|
22
|
+
* exact opaque token and expiry; it never parses claims or accepts a token from a message as
|
|
23
|
+
* authority.
|
|
24
|
+
*/
|
|
25
|
+
readonly previewToken: string;
|
|
26
|
+
readonly expiresAt: number;
|
|
27
|
+
}
|
|
28
|
+
interface HydrogenEditorOperationBase {
|
|
29
|
+
readonly operationId: string;
|
|
30
|
+
readonly revision: number;
|
|
31
|
+
}
|
|
32
|
+
type HydrogenEditorPreviewOperation = (HydrogenEditorOperationBase & {
|
|
33
|
+
readonly type: 'prop.patch';
|
|
34
|
+
readonly instanceId: string;
|
|
35
|
+
readonly propName: string;
|
|
36
|
+
readonly binding: HydrogenContentBinding;
|
|
37
|
+
}) | (HydrogenEditorOperationBase & {
|
|
38
|
+
readonly type: 'styles.patch';
|
|
39
|
+
readonly instanceId: string;
|
|
40
|
+
readonly styles: HydrogenInstanceStyles;
|
|
41
|
+
}) | (HydrogenEditorOperationBase & {
|
|
42
|
+
readonly type: 'variant.set';
|
|
43
|
+
readonly instanceId: string;
|
|
44
|
+
readonly variantId: string | null;
|
|
45
|
+
}) | (HydrogenEditorOperationBase & {
|
|
46
|
+
readonly type: 'slot.insert';
|
|
47
|
+
readonly parentInstanceId: string;
|
|
48
|
+
readonly slotId: string;
|
|
49
|
+
readonly index: number;
|
|
50
|
+
readonly instance: Omit<HydrogenInstance, 'parent'>;
|
|
51
|
+
}) | (HydrogenEditorOperationBase & {
|
|
52
|
+
readonly type: 'instance.move';
|
|
53
|
+
readonly instanceId: string;
|
|
54
|
+
readonly parentInstanceId: string;
|
|
55
|
+
readonly slotId: string;
|
|
56
|
+
readonly index: number;
|
|
57
|
+
}) | (HydrogenEditorOperationBase & {
|
|
58
|
+
readonly type: 'instance.remove';
|
|
59
|
+
readonly instanceId: string;
|
|
60
|
+
});
|
|
61
|
+
type HydrogenEditorCanvasIntent = {
|
|
62
|
+
readonly type: 'instance.move';
|
|
63
|
+
readonly instanceId: string;
|
|
64
|
+
readonly parentInstanceId: string;
|
|
65
|
+
readonly slotId: string;
|
|
66
|
+
readonly index: number;
|
|
67
|
+
} | {
|
|
68
|
+
readonly type: 'prop.inline';
|
|
69
|
+
readonly instanceId: string;
|
|
70
|
+
readonly propName: string;
|
|
71
|
+
readonly value: string;
|
|
72
|
+
} | {
|
|
73
|
+
readonly type: 'styles.adjust';
|
|
74
|
+
readonly instanceId: string;
|
|
75
|
+
readonly controlId: string;
|
|
76
|
+
readonly value: number;
|
|
77
|
+
readonly breakpointId?: string;
|
|
78
|
+
} | {
|
|
79
|
+
readonly type: 'slot.insert.request';
|
|
80
|
+
readonly parentInstanceId: string;
|
|
81
|
+
readonly slotId: string;
|
|
82
|
+
readonly index: number;
|
|
83
|
+
};
|
|
84
|
+
interface HydrogenEditorOperationFailure {
|
|
85
|
+
readonly code: HydrogenEditorOperationFailureCode;
|
|
86
|
+
readonly message: string;
|
|
87
|
+
readonly instanceId?: string;
|
|
88
|
+
readonly capability?: HydrogenEditCapability;
|
|
89
|
+
readonly source?: HydrogenSourceLocation;
|
|
90
|
+
}
|
|
91
|
+
type HydrogenEditorApplyResult = {
|
|
92
|
+
readonly status: 'applied' | 'duplicate';
|
|
93
|
+
readonly revision: number;
|
|
94
|
+
readonly operationId: string;
|
|
95
|
+
} | {
|
|
96
|
+
readonly status: 'rejected';
|
|
97
|
+
readonly revision: number;
|
|
98
|
+
readonly operationId: string;
|
|
99
|
+
readonly failure: HydrogenEditorOperationFailure;
|
|
100
|
+
};
|
|
101
|
+
type HydrogenEditorCanvasDispatchResult = {
|
|
102
|
+
readonly status: 'operation';
|
|
103
|
+
readonly intent: Exclude<HydrogenEditorCanvasIntent, {
|
|
104
|
+
readonly type: 'slot.insert.request';
|
|
105
|
+
}>;
|
|
106
|
+
readonly operation: HydrogenEditorPreviewOperation;
|
|
107
|
+
readonly result: HydrogenEditorApplyResult;
|
|
108
|
+
} | {
|
|
109
|
+
readonly status: 'insert-requested';
|
|
110
|
+
readonly intent: Extract<HydrogenEditorCanvasIntent, {
|
|
111
|
+
readonly type: 'slot.insert.request';
|
|
112
|
+
}>;
|
|
113
|
+
readonly revision: number;
|
|
114
|
+
} | {
|
|
115
|
+
readonly status: 'rejected';
|
|
116
|
+
readonly failure: HydrogenEditorOperationFailure;
|
|
117
|
+
readonly revision: number;
|
|
118
|
+
};
|
|
119
|
+
interface HydrogenEditorCapabilityReason {
|
|
120
|
+
readonly code: string;
|
|
121
|
+
readonly severity: 'warning' | 'blocking';
|
|
122
|
+
readonly message: string;
|
|
123
|
+
readonly capability?: HydrogenEditCapability;
|
|
124
|
+
readonly source?: HydrogenSourceLocation;
|
|
125
|
+
}
|
|
126
|
+
interface HydrogenEditorInstanceSnapshot {
|
|
127
|
+
readonly instance: HydrogenInstance;
|
|
128
|
+
readonly component: HydrogenComponentDefinition;
|
|
129
|
+
readonly childInstanceIds: Readonly<Record<string, readonly string[]>>;
|
|
130
|
+
readonly resolvedProps: Readonly<Record<string, unknown>>;
|
|
131
|
+
readonly mounted: boolean;
|
|
132
|
+
readonly editable: boolean;
|
|
133
|
+
readonly capabilityReasons: readonly HydrogenEditorCapabilityReason[];
|
|
134
|
+
}
|
|
135
|
+
interface HydrogenEditorPreviewSnapshot {
|
|
136
|
+
readonly document: HydrogenDocument;
|
|
137
|
+
readonly route?: string;
|
|
138
|
+
readonly revision: number;
|
|
139
|
+
readonly selectedInstanceId: string | null;
|
|
140
|
+
readonly hoveredInstanceId: string | null;
|
|
141
|
+
readonly selectionStatus: 'active' | 'out-of-route' | 'none';
|
|
142
|
+
readonly instanceIds: readonly string[];
|
|
143
|
+
readonly mountedInstanceIds: readonly string[];
|
|
144
|
+
}
|
|
145
|
+
interface HydrogenEditorReadyInstance {
|
|
146
|
+
readonly instance: HydrogenInstance;
|
|
147
|
+
readonly mounted: boolean;
|
|
148
|
+
readonly editable: boolean;
|
|
149
|
+
readonly capabilityReasons: readonly HydrogenEditorCapabilityReason[];
|
|
150
|
+
}
|
|
151
|
+
interface HydrogenEditorReadyDocument {
|
|
152
|
+
readonly protocolVersion: typeof HYDROGEN_EDITOR_PROTOCOL_VERSION;
|
|
153
|
+
readonly document: HydrogenDocument;
|
|
154
|
+
readonly breakpoints: readonly HydrogenBreakpoint[];
|
|
155
|
+
readonly route?: string;
|
|
156
|
+
readonly revision: number;
|
|
157
|
+
readonly selectedInstanceId: string | null;
|
|
158
|
+
readonly hoveredInstanceId: string | null;
|
|
159
|
+
readonly selectionStatus: HydrogenEditorPreviewSnapshot['selectionStatus'];
|
|
160
|
+
readonly components: readonly HydrogenComponentDefinition[];
|
|
161
|
+
readonly instances: readonly HydrogenEditorReadyInstance[];
|
|
162
|
+
readonly unsupportedFindings: readonly HydrogenUnsupportedFinding[];
|
|
163
|
+
}
|
|
164
|
+
interface HydrogenEditorReconciliation {
|
|
165
|
+
readonly reason: HydrogenEditorReconciliationReason;
|
|
166
|
+
readonly documentId: string;
|
|
167
|
+
readonly route?: string;
|
|
168
|
+
readonly revision: number;
|
|
169
|
+
readonly selectedInstanceId: string | null;
|
|
170
|
+
readonly selectionStatus: HydrogenEditorPreviewSnapshot['selectionStatus'];
|
|
171
|
+
readonly mountedInstanceIds: readonly string[];
|
|
172
|
+
}
|
|
173
|
+
interface HydrogenEditorProtocolFailure {
|
|
174
|
+
readonly code: HydrogenEditorProtocolFailureCode;
|
|
175
|
+
readonly message: string;
|
|
176
|
+
}
|
|
177
|
+
interface HydrogenEditorPreviewStore {
|
|
178
|
+
getSnapshot(): HydrogenEditorPreviewSnapshot;
|
|
179
|
+
getInstanceSnapshot(instanceId: string): HydrogenEditorInstanceSnapshot | null;
|
|
180
|
+
subscribe(listener: () => void): () => void;
|
|
181
|
+
subscribeInstance(instanceId: string, listener: () => void): () => void;
|
|
182
|
+
}
|
|
183
|
+
interface HydrogenEditorPreviewRuntime {
|
|
184
|
+
readonly manifest: HydrogenEditorManifest;
|
|
185
|
+
readonly store: HydrogenEditorPreviewStore;
|
|
186
|
+
ready(): void;
|
|
187
|
+
reconcile(documentId: string, reason: HydrogenEditorReconciliationReason, route?: string): void;
|
|
188
|
+
registerInstance(instanceId: string): () => void;
|
|
189
|
+
hoverInstance(instanceId: string | null): void;
|
|
190
|
+
selectInstance(instanceId: string | null): void;
|
|
191
|
+
dispatchCanvasIntent(intent: unknown): HydrogenEditorCanvasDispatchResult;
|
|
192
|
+
dispose(): void;
|
|
193
|
+
}
|
|
194
|
+
interface CreateHydrogenEditorPreviewRuntimeArgs {
|
|
195
|
+
readonly adminOrigin: string;
|
|
196
|
+
readonly security: HydrogenEditorSecurityContext;
|
|
197
|
+
readonly manifest: HydrogenEditorManifest;
|
|
198
|
+
readonly documentId: string;
|
|
199
|
+
readonly route?: string;
|
|
200
|
+
readonly transport: StorefrontEditorMessageSource;
|
|
201
|
+
readonly target: StorefrontEditorMessageTarget;
|
|
202
|
+
readonly now?: () => number;
|
|
203
|
+
readonly onProtocolFailure?: (failure: HydrogenEditorProtocolFailure) => void;
|
|
204
|
+
}
|
|
205
|
+
interface CreateHydrogenEditorSourceProjectionArgs {
|
|
206
|
+
readonly manifest: HydrogenEditorManifest;
|
|
207
|
+
readonly documentId: string;
|
|
208
|
+
readonly route?: string;
|
|
209
|
+
readonly revision?: number;
|
|
210
|
+
readonly selectedInstanceId?: string | null;
|
|
211
|
+
}
|
|
212
|
+
interface HydrogenEditorHostBridge {
|
|
213
|
+
requestReady(): void;
|
|
214
|
+
hoverInstance(instanceId: string | null): void;
|
|
215
|
+
selectInstance(instanceId: string | null): void;
|
|
216
|
+
applyOperation(operation: HydrogenEditorPreviewOperation): void;
|
|
217
|
+
dispose(): void;
|
|
218
|
+
}
|
|
219
|
+
interface CreateHydrogenEditorHostBridgeArgs {
|
|
220
|
+
readonly previewOrigin: string;
|
|
221
|
+
readonly security: HydrogenEditorSecurityContext;
|
|
222
|
+
readonly manifest: HydrogenEditorManifest;
|
|
223
|
+
readonly transport: StorefrontEditorMessageSource;
|
|
224
|
+
readonly target: StorefrontEditorMessageTarget;
|
|
225
|
+
readonly resolveTarget?: () => StorefrontEditorMessageTarget | null;
|
|
226
|
+
readonly now?: () => number;
|
|
227
|
+
readonly onReady?: (ready: HydrogenEditorReadyDocument) => void;
|
|
228
|
+
readonly onSelectInstance?: (instanceId: string | null) => void;
|
|
229
|
+
readonly onHoverInstance?: (instanceId: string | null) => void;
|
|
230
|
+
readonly onOperationResult?: (result: HydrogenEditorApplyResult) => void;
|
|
231
|
+
readonly onCanvasOperation?: (intent: Exclude<HydrogenEditorCanvasIntent, {
|
|
232
|
+
readonly type: 'slot.insert.request';
|
|
233
|
+
}>, operation: HydrogenEditorPreviewOperation, result: HydrogenEditorApplyResult) => void;
|
|
234
|
+
readonly onCanvasInsertRequest?: (request: Extract<HydrogenEditorCanvasIntent, {
|
|
235
|
+
readonly type: 'slot.insert.request';
|
|
236
|
+
}>) => void;
|
|
237
|
+
readonly onReconcile?: (reconciliation: HydrogenEditorReconciliation) => void;
|
|
238
|
+
readonly onProtocolFailure?: (failure: HydrogenEditorProtocolFailure) => void;
|
|
239
|
+
}
|
|
240
|
+
declare class HydrogenEditorConfigurationError extends Error {
|
|
241
|
+
constructor(message: string);
|
|
242
|
+
}
|
|
243
|
+
declare function parseHydrogenEditorCanvasIntent(value: unknown): HydrogenEditorCanvasIntent | null;
|
|
244
|
+
/**
|
|
245
|
+
* Produces the bounded editor document that can be shown before a secured preview runtime
|
|
246
|
+
* connects. Source extraction establishes editability, but every instance remains unmounted until
|
|
247
|
+
* the authenticated ADR-0047 bridge reports the live DOM boundary.
|
|
248
|
+
*/
|
|
249
|
+
declare function createHydrogenEditorSourceProjection({ manifest, documentId, route, revision, selectedInstanceId, }: CreateHydrogenEditorSourceProjectionArgs): HydrogenEditorReadyDocument;
|
|
250
|
+
declare function createHydrogenEditorPreviewRuntime({ adminOrigin, documentId, manifest, now, onProtocolFailure, route, security, target, transport, }: CreateHydrogenEditorPreviewRuntimeArgs): HydrogenEditorPreviewRuntime;
|
|
251
|
+
declare function createHydrogenEditorHostBridge({ manifest, now, onCanvasInsertRequest, onCanvasOperation, onHoverInstance, onOperationResult, onProtocolFailure, onReady, onReconcile, onSelectInstance, previewOrigin, resolveTarget, security, target, transport, }: CreateHydrogenEditorHostBridgeArgs): HydrogenEditorHostBridge;
|
|
252
|
+
/**
|
|
253
|
+
* Resolves manifest-authorized style controls to CSS properties. The largest matching breakpoint
|
|
254
|
+
* wins. Values that cannot be represented as a CSS string/number remain visible in editor state
|
|
255
|
+
* but are not applied to the rendered element.
|
|
256
|
+
*/
|
|
257
|
+
declare function resolveHydrogenEditorStyles(manifest: HydrogenEditorManifest, instance: HydrogenInstance, viewportWidth?: number): Readonly<Record<string, string | number>>;
|
|
258
|
+
|
|
259
|
+
export { createHydrogenEditorSourceProjection as A, parseHydrogenEditorCanvasIntent as B, type CreateHydrogenEditorPreviewRuntimeArgs as C, resolveHydrogenEditorStyles as D, type HydrogenEditorSecurityContext as H, type HydrogenEditorPreviewRuntime as a, type CreateHydrogenEditorHostBridgeArgs as b, type CreateHydrogenEditorSourceProjectionArgs as c, HYDROGEN_EDITOR_BRIDGE_LIMITS as d, HYDROGEN_EDITOR_PROTOCOL_VERSION as e, type HydrogenEditorApplyResult as f, type HydrogenEditorCanvasDispatchResult as g, type HydrogenEditorCanvasIntent as h, type HydrogenEditorCapabilityReason as i, HydrogenEditorConfigurationError as j, type HydrogenEditorHostBridge as k, type HydrogenEditorInstanceSnapshot as l, type HydrogenEditorOperationBase as m, type HydrogenEditorOperationFailure as n, type HydrogenEditorOperationFailureCode as o, type HydrogenEditorPreviewOperation as p, type HydrogenEditorPreviewSnapshot as q, type HydrogenEditorPreviewStore as r, type HydrogenEditorProtocolFailure as s, type HydrogenEditorProtocolFailureCode as t, type HydrogenEditorReadyDocument as u, type HydrogenEditorReadyInstance as v, type HydrogenEditorReconciliation as w, type HydrogenEditorReconciliationReason as x, createHydrogenEditorHostBridge as y, createHydrogenEditorPreviewRuntime as z };
|