@seatlayer/js 0.58.0 → 0.60.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/{hostedCheckout-3Y24DB65.js → hostedCheckout-ILVKHB3C.js} +8 -2
- package/dist/index.cjs +234 -46
- package/dist/index.d.cts +144 -26
- package/dist/index.d.ts +144 -26
- package/dist/index.js +226 -44
- package/package.json +7 -3
package/dist/index.d.cts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { PickerSeat, PickerSelectionValidator, RendererViewMode, SeatHoverDetails, PickerSelectionValidity, PickerTransport, PickerMapTheme } from '@seatlayer/core';
|
|
1
|
+
import { PickerSeat, PickerGAArea, PickerSelectionValidator, RendererViewMode, SeatHoverDetails, PickerSelectionValidity, PickerTransport, PickerMapTheme } from '@seatlayer/core';
|
|
2
2
|
export { ExpandedSeat, PickerMapTheme, PickerSelectionValidator, PickerSelectionValidity, PickerSelectionViolation, RendererViewMode, SeatHoverDetails } from '@seatlayer/core';
|
|
3
3
|
export { A as AccessIntentForbidsDetails, a as AccessLinkRecord, b as AccessLinkReveal, c as AccessLinkState, d as AccessLinkStatus, e as AccessLinkStatusRecord, f as ArchiveBlockedDetails, g as AssignmentBuckets, h as AssignmentDropDetails, i as AssignmentResult, B as BucketRow, C as ChannelAccessIntent, j as ChannelAccessSummary, k as ChannelAllocationPage, l as ChannelAttribution, m as ChannelAuditEntry, n as ChannelAuditPage, o as ChannelCounts, p as ChannelListResult, q as ChannelPreviewProjection, r as ChannelRecord, s as ChannelReport, t as ChannelReportLinkRecord, u as ChannelReportLinkReveal, v as ChannelReportResult, w as ChannelReportRow, x as ChannelSeatStatus, y as ChannelState, z as ChannelsCapabilities, D as ChannelsClient, E as ChannelsMode, F as ChannelsModeHost, G as ChannelsRowView, H as ChannelsSeatView, I as ControlRoomActivityEntry, J as ControlRoomSectionMetric, K as ControlRoomSnapshot, L as EventCategoryAssignmentResult, M as EventScopedManageToken, N as EventTableBookingMode, O as EventTableBookingResult, P as IntentSwitchBlockedDetails, Q as InventoryBooking, R as InventoryBookingActivity, S as InventoryBookingDetail, T as InventoryBookingObject, U as InventoryBookingState, V as InventoryBookingsPage, W as InventoryBookingsQuery, X as LogEntry, Y as LogPage, Z as ManageApi, _ as ManageApiError, $ as ReportByStatus, a0 as ReportCategoryMeta, a1 as ReportCategoryRow, a2 as ReportResult, a3 as SeatManager, a4 as SeatManagerActionResult, a5 as SeatManagerActivity, a6 as SeatManagerCapability, a7 as SeatManagerConnection, a8 as SeatManagerFilteredSection, a9 as SeatManagerMode, aa as SeatManagerOptions, ab as SeatManagerSelectionValidity, ac as SeatManagerTallies, ad as SelectionSourceRow } from './channelsMode-2z9HBOAX.cjs';
|
|
4
4
|
|
|
@@ -506,6 +506,77 @@ interface PubApiOptions {
|
|
|
506
506
|
onObjectUnavailable?: (event: SelectedObjectUnavailableEvent) => void;
|
|
507
507
|
}
|
|
508
508
|
|
|
509
|
+
/**
|
|
510
|
+
* The general-admission quantity prompt, and the GA half of the tray.
|
|
511
|
+
*
|
|
512
|
+
* Before this module a buyer could tap a GA area on the map and nothing at all
|
|
513
|
+
* happened — `onGAClick` reached `PickerController` but the drop-in widget never
|
|
514
|
+
* wired it — while every area on the chart rendered a permanent stepper row in
|
|
515
|
+
* the tray whether or not the buyer wanted one. Twelve areas meant twelve
|
|
516
|
+
* steppers of clutter, and on a phone (where the tray is a collapsed sheet) the
|
|
517
|
+
* only control that existed was the one the buyer could not see.
|
|
518
|
+
*
|
|
519
|
+
* What replaces it is two taps: tap the area, the prompt opens with a quantity
|
|
520
|
+
* already seeded to 1 (never 0 — nobody opens a ticket picker to buy none), and
|
|
521
|
+
* the primary button reads what it will do, priced live: `Add 3 tickets · $45`.
|
|
522
|
+
* The map stays visible behind it — a popover anchored at the tap on a wide
|
|
523
|
+
* layout, a bottom sheet on a narrow one — because the buyer is choosing where
|
|
524
|
+
* to stand, and a centred modal hides exactly the thing being chosen.
|
|
525
|
+
*
|
|
526
|
+
* The tray keeps the stepper rows, but only for areas with a quantity: it is a
|
|
527
|
+
* cart, not a price list. Everything else collapses into one compact `Areas`
|
|
528
|
+
* list, which is the keyboard/screen-reader entry point into the same prompt.
|
|
529
|
+
*
|
|
530
|
+
* Split out of SeatPicker.ts rather than added to it: that file is pinned at its
|
|
531
|
+
* size in the app's file-size ratchet and may not grow.
|
|
532
|
+
*/
|
|
533
|
+
|
|
534
|
+
/** One priced ticket type inside an area. `id` is null for an untiered area. */
|
|
535
|
+
interface GaPromptTier {
|
|
536
|
+
id: string | null;
|
|
537
|
+
label: string;
|
|
538
|
+
price: number;
|
|
539
|
+
}
|
|
540
|
+
/**
|
|
541
|
+
* What a host takes over when it returns `true` from `onGAPrompt`. `confirm`
|
|
542
|
+
* accepts a plain number for a single-tier area, or a per-tier record; both
|
|
543
|
+
* land in exactly the same place the built-in prompt's Add button does.
|
|
544
|
+
*/
|
|
545
|
+
interface GAPromptRequest {
|
|
546
|
+
area: PickerGAArea;
|
|
547
|
+
/** Quantities already chosen here, per tier id (`''` for an untiered area). */
|
|
548
|
+
selected: Record<string, number>;
|
|
549
|
+
min: number;
|
|
550
|
+
/** min(units still free, order cap − tickets chosen elsewhere). */
|
|
551
|
+
max: number;
|
|
552
|
+
tiers: GaPromptTier[];
|
|
553
|
+
confirm(quantity: number | Record<string, number>): void;
|
|
554
|
+
cancel(): void;
|
|
555
|
+
}
|
|
556
|
+
/** Per (area, tier) pending quantities. A `null` tier key is an untiered area. */
|
|
557
|
+
type GaQtyMap = Map<string, Map<string | null, number>>;
|
|
558
|
+
/** The slice of SeatPicker this module drives. Everything else stays private. */
|
|
559
|
+
interface GaPromptPicker {
|
|
560
|
+
root: HTMLDivElement | null;
|
|
561
|
+
els: Record<string, HTMLElement>;
|
|
562
|
+
srEl: HTMLDivElement | null;
|
|
563
|
+
gaQty: GaQtyMap;
|
|
564
|
+
maxTickets: number;
|
|
565
|
+
salesClosed: boolean;
|
|
566
|
+
gaPromptEl: HTMLDivElement | null;
|
|
567
|
+
gaPromptReturnFocus: HTMLElement | null;
|
|
568
|
+
gaAreasExpanded: boolean;
|
|
569
|
+
money(amount: number): string;
|
|
570
|
+
paidPrice(categoryKey: string | undefined, tierId: string | null | undefined, fallback: number, objectLabel?: string): number;
|
|
571
|
+
tf(key: string, fallback: string): string;
|
|
572
|
+
toast(message: string, tone?: 'error' | 'success' | 'warning' | 'neutral'): void;
|
|
573
|
+
reducedMotion(): boolean;
|
|
574
|
+
syncTray(): void;
|
|
575
|
+
/** Tickets in the order right now, held + selected seats + every GA quantity. */
|
|
576
|
+
totalTicketCount(): number;
|
|
577
|
+
onGAPromptHook?: ((prompt: GAPromptRequest) => boolean | void) | undefined;
|
|
578
|
+
}
|
|
579
|
+
|
|
509
580
|
/**
|
|
510
581
|
* SeatingChart — the embeddable buyer picker.
|
|
511
582
|
*
|
|
@@ -580,7 +651,7 @@ interface SeatingChartOptions {
|
|
|
580
651
|
selectionValidators?: PickerSelectionValidator[];
|
|
581
652
|
/**
|
|
582
653
|
* BCP 47 language for the widget UI — `'de'`, `'es-MX'`, etc. Falls back to
|
|
583
|
-
* the browser language, then English.
|
|
654
|
+
* the browser language, then English. 37 languages ship. The German
|
|
584
655
|
* bundle (etc.) is fetched on demand so unused languages cost nothing.
|
|
585
656
|
*/
|
|
586
657
|
locale?: string;
|
|
@@ -628,6 +699,13 @@ interface SeatingChartOptions {
|
|
|
628
699
|
onHoldRestored?: (result: HoldResult) => void;
|
|
629
700
|
onHoldExpired?: () => void;
|
|
630
701
|
onGAClick?: (area: GAAreaAvailability) => void;
|
|
702
|
+
/**
|
|
703
|
+
* Mirror of {@link SeatPickerOptions.onGAPrompt}. The low-level chart draws no
|
|
704
|
+
* quantity UI of its own, so this fires purely as the "the buyer wants to pick
|
|
705
|
+
* a quantity here" signal, with the same pre-computed `min`/`max`/`tiers` the
|
|
706
|
+
* full widget would have used; the return value is accepted and ignored.
|
|
707
|
+
*/
|
|
708
|
+
onGAPrompt?: (prompt: GAPromptRequest) => boolean | void;
|
|
631
709
|
/**
|
|
632
710
|
* The buyer access session lapsed. `refreshed` says whether the provider
|
|
633
711
|
* already recovered it — false means private inventory is now unavailable and
|
|
@@ -981,7 +1059,7 @@ type SeatingChartIdentityProp = (typeof SEATING_CHART_IDENTITY_PROPS)[number];
|
|
|
981
1059
|
declare const SEATING_CHART_VALUE_PROPS: readonly ["event", "apiBase", "maxSelection", "numberOfPlacesToSelect", "selectionValidators", "publicKey", "locale", "currency", "colorblindSafe", "initialView", "errorDisplay", "selectedObjects", "selectableObjects", "messages", "seatTooltip", "buyerAccessTokenProvider", "buyerAccessToken"];
|
|
982
1060
|
type SeatingChartValueProp = (typeof SEATING_CHART_VALUE_PROPS)[number];
|
|
983
1061
|
/** Every callback option a wrapper wires to its own event mechanism. */
|
|
984
|
-
declare const SEATING_CHART_CALLBACK_PROPS: readonly ["onSelectionChange", "onSelectionValidityChange", "onSelectionValid", "onSelectionInvalid", "onSelectionLimit", "onHold", "onHoldRestored", "onHoldExpired", "onGAClick", "onError", "onDeckTap", "onHint", "onSeatHover", "onAccessExpired", "onAccessUnavailable", "onSelectedObjectUnavailable"];
|
|
1062
|
+
declare const SEATING_CHART_CALLBACK_PROPS: readonly ["onSelectionChange", "onSelectionValidityChange", "onSelectionValid", "onSelectionInvalid", "onSelectionLimit", "onHold", "onHoldRestored", "onHoldExpired", "onGAClick", "onGAPrompt", "onError", "onDeckTap", "onHint", "onSeatHover", "onAccessExpired", "onAccessUnavailable", "onSelectedObjectUnavailable"];
|
|
985
1063
|
type SeatingChartCallbackProp = (typeof SEATING_CHART_CALLBACK_PROPS)[number];
|
|
986
1064
|
/** The value half of the options, as a wrapper holds it. */
|
|
987
1065
|
type SeatingChartValues = Pick<SeatingChartOptions, SeatingChartValueProp>;
|
|
@@ -1518,7 +1596,11 @@ interface SeatPickerOptions {
|
|
|
1518
1596
|
/** Optional sale guards evaluated after every change and enforced before a
|
|
1519
1597
|
* hold: minimum quantity, consecutive seats, and/or no stranded singles. */
|
|
1520
1598
|
selectionValidators?: PickerSelectionValidator[];
|
|
1521
|
-
/**
|
|
1599
|
+
/**
|
|
1600
|
+
* BCP 47 language for the widget UI. 37 languages ship; omit this and each
|
|
1601
|
+
* buyer gets their own `navigator.languages`, falling back to English.
|
|
1602
|
+
* Read once at render — there is no way to change it on a live chart.
|
|
1603
|
+
*/
|
|
1522
1604
|
locale?: string;
|
|
1523
1605
|
/** Per-key string overrides layered over the active locale. */
|
|
1524
1606
|
messages?: Record<string, string>;
|
|
@@ -1783,6 +1865,22 @@ interface SeatPickerOptions {
|
|
|
1783
1865
|
* widget has already dropped them from the tray.
|
|
1784
1866
|
*/
|
|
1785
1867
|
onSelectedObjectUnavailable?: (event: SelectedObjectUnavailableEvent) => void;
|
|
1868
|
+
/**
|
|
1869
|
+
* A buyer tapped a general-admission area (on the map, or in the tray's
|
|
1870
|
+
* `Areas` list) and the widget is about to open its own quantity prompt.
|
|
1871
|
+
*
|
|
1872
|
+
* Return `true` to take the interaction over completely — the built-in
|
|
1873
|
+
* popover/sheet is suppressed, and the host drives the choice with whatever
|
|
1874
|
+
* UI it likes, landing the result through `prompt.confirm(quantity)` (a plain
|
|
1875
|
+
* number for a single-tier area, or `{ [tierId]: quantity }`) or dropping it
|
|
1876
|
+
* with `prompt.cancel()`. Return anything else (or nothing) and the built-in
|
|
1877
|
+
* prompt opens as usual, so this is also usable as a plain notification.
|
|
1878
|
+
*
|
|
1879
|
+
* `prompt.max` already folds in the area's live availability AND the
|
|
1880
|
+
* order-wide ticket cap minus everything chosen elsewhere; a `confirm` above
|
|
1881
|
+
* it is clamped rather than rejected.
|
|
1882
|
+
*/
|
|
1883
|
+
onGAPrompt?: (prompt: GAPromptRequest) => boolean | void;
|
|
1786
1884
|
onError?: (err: unknown) => void;
|
|
1787
1885
|
}
|
|
1788
1886
|
|
|
@@ -1807,8 +1905,9 @@ interface SeatPickerOptions {
|
|
|
1807
1905
|
* so plain host CSS can restyle too.
|
|
1808
1906
|
*/
|
|
1809
1907
|
|
|
1810
|
-
declare class SeatPicker {
|
|
1811
|
-
|
|
1908
|
+
declare class SeatPicker implements GaPromptPicker {
|
|
1909
|
+
/** @internal Read by pickerGaPrompt for the `onGAPrompt` host hook. */
|
|
1910
|
+
readonly opts: SeatPickerOptions;
|
|
1812
1911
|
private readonly api;
|
|
1813
1912
|
/** Authenticated view media, cached only for this picker lifetime. */
|
|
1814
1913
|
private readonly buyerAssetUrls;
|
|
@@ -1820,17 +1919,17 @@ declare class SeatPicker {
|
|
|
1820
1919
|
private accessEl;
|
|
1821
1920
|
private readonly apiBase;
|
|
1822
1921
|
private readonly controller;
|
|
1823
|
-
|
|
1922
|
+
/** @internal */ maxTickets: number;
|
|
1824
1923
|
/** Exact ticket count required before checkout; null keeps ordinary 1..max behavior. */
|
|
1825
1924
|
private readonly exactTickets;
|
|
1826
1925
|
private lastSelectionValidity;
|
|
1827
1926
|
/** Original host pricing, kept separate from live server offer overrides. */
|
|
1828
1927
|
private readonly hostPricing;
|
|
1829
|
-
|
|
1928
|
+
/** @internal */ root: HTMLDivElement | null;
|
|
1830
1929
|
private mapHost;
|
|
1831
1930
|
private rendered;
|
|
1832
1931
|
private destroyed;
|
|
1833
|
-
|
|
1932
|
+
/** @internal */ els: Record<string, HTMLElement>;
|
|
1834
1933
|
/** Feature 6 anchor regions — positioned flex containers over the map. */
|
|
1835
1934
|
private regions;
|
|
1836
1935
|
private ro;
|
|
@@ -1874,7 +1973,15 @@ declare class SeatPicker {
|
|
|
1874
1973
|
private checkoutPanel;
|
|
1875
1974
|
private extendEl;
|
|
1876
1975
|
private bookedEl;
|
|
1877
|
-
|
|
1976
|
+
/** @internal Pending GA units per (area, tier) — see pickerGaPrompt.ts. */
|
|
1977
|
+
gaQty: GaQtyMap;
|
|
1978
|
+
/** @internal The open quantity prompt (popover or sheet), while one is up. */
|
|
1979
|
+
gaPromptEl: HTMLDivElement | null;
|
|
1980
|
+
/** @internal */ gaPromptReturnFocus: HTMLElement | null;
|
|
1981
|
+
/** @internal Whether the tray's collapsed `Areas` list is open. */
|
|
1982
|
+
gaAreasExpanded: boolean;
|
|
1983
|
+
/** Viewport point of the last map tap — anchors the GA popover. */
|
|
1984
|
+
private lastMapPoint;
|
|
1878
1985
|
private tipEl;
|
|
1879
1986
|
private tipPos;
|
|
1880
1987
|
private confirmEl;
|
|
@@ -1883,7 +1990,7 @@ declare class SeatPicker {
|
|
|
1883
1990
|
private tableDialog;
|
|
1884
1991
|
private tableDialogHeld;
|
|
1885
1992
|
private tableDialogReturnFocus;
|
|
1886
|
-
|
|
1993
|
+
/** @internal */ srEl: HTMLDivElement | null;
|
|
1887
1994
|
private baQty;
|
|
1888
1995
|
private baCat;
|
|
1889
1996
|
/** Optional navigation-zone scope for buyer best-available. */
|
|
@@ -1902,7 +2009,7 @@ declare class SeatPicker {
|
|
|
1902
2009
|
private bestAvailableConfirm;
|
|
1903
2010
|
private releasingHold;
|
|
1904
2011
|
/** Event sales window is closed (read-only load state / live close). */
|
|
1905
|
-
|
|
2012
|
+
/** @internal */ salesClosed: boolean;
|
|
1906
2013
|
/** Every seated category's live availability is 0 (sold-out overlay is up). */
|
|
1907
2014
|
private soldOut;
|
|
1908
2015
|
private soldoutEl;
|
|
@@ -1971,7 +2078,6 @@ declare class SeatPicker {
|
|
|
1971
2078
|
/** Wide-layout ticket panel collapsed (map owns the full width). */
|
|
1972
2079
|
private sideCollapsed;
|
|
1973
2080
|
private sideToggleEl;
|
|
1974
|
-
private pricesBtnEl;
|
|
1975
2081
|
/** True once we've asked the host page to pin us fullscreen (framed, no native). */
|
|
1976
2082
|
private framedFs;
|
|
1977
2083
|
/** Last height (px) posted to a host frame; dedupes redundant reports. */
|
|
@@ -2100,7 +2206,9 @@ declare class SeatPicker {
|
|
|
2100
2206
|
* unknown keys, so this collapses that to `fallback` — while still honoring a
|
|
2101
2207
|
* host `messages` override (which makes `t()` return the override, not the key).
|
|
2102
2208
|
*/
|
|
2103
|
-
|
|
2209
|
+
/** @internal The host's GA prompt takeover, if it supplied one. */
|
|
2210
|
+
get onGAPromptHook(): SeatPickerOptions['onGAPrompt'];
|
|
2211
|
+
/** @internal */ tf(key: string, fallback: string): string;
|
|
2104
2212
|
/** Sold-out overlay — an informational state with no unavailable action. */
|
|
2105
2213
|
private buildSoldoutOverlay;
|
|
2106
2214
|
/**
|
|
@@ -2141,7 +2249,7 @@ declare class SeatPicker {
|
|
|
2141
2249
|
/** Read a resolved --sl-* token value (canvas needs a real color, not var()). */
|
|
2142
2250
|
private cssVar;
|
|
2143
2251
|
/** Motion is progressive enhancement; all state remains legible when reduced. */
|
|
2144
|
-
|
|
2252
|
+
/** @internal */ reducedMotion(): boolean;
|
|
2145
2253
|
private scheduleMotion;
|
|
2146
2254
|
/** Restart one finite CSS animation without leaving a permanent state class. */
|
|
2147
2255
|
private animateOnce;
|
|
@@ -2152,14 +2260,10 @@ declare class SeatPicker {
|
|
|
2152
2260
|
/** Update only the action affordance; selection callbacks must not refire. */
|
|
2153
2261
|
private committedSelection;
|
|
2154
2262
|
private pendingSelectionCount;
|
|
2155
|
-
private heldGACounts;
|
|
2156
|
-
private pendingGACount;
|
|
2157
2263
|
private heldTicketCount;
|
|
2158
|
-
|
|
2264
|
+
/** @internal */ totalTicketCount(): number;
|
|
2159
2265
|
/** Held tickets and standing quantities consume the same order-wide cap. */
|
|
2160
2266
|
private updateSelectionCapacity;
|
|
2161
|
-
private canAddTicket;
|
|
2162
|
-
private pendingGATotal;
|
|
2163
2267
|
private syncCta;
|
|
2164
2268
|
private setCtaPhase;
|
|
2165
2269
|
/** Session-scoped capability key: isolated by API origin and event. */
|
|
@@ -2255,7 +2359,7 @@ declare class SeatPicker {
|
|
|
2255
2359
|
*/
|
|
2256
2360
|
private openSeatView;
|
|
2257
2361
|
private closeSeatView;
|
|
2258
|
-
|
|
2362
|
+
/** @internal */ money(n: number): string;
|
|
2259
2363
|
/**
|
|
2260
2364
|
* Sleep until the offer schedule's next known transition, then re-read.
|
|
2261
2365
|
*
|
|
@@ -2285,7 +2389,13 @@ declare class SeatPicker {
|
|
|
2285
2389
|
* price the widget DISPLAYS or hands off must flow through here — a map
|
|
2286
2390
|
* that shows one price while checkout charges another destroys trust.
|
|
2287
2391
|
*/
|
|
2288
|
-
|
|
2392
|
+
/** @internal */ paidPrice(categoryKey: string | undefined, tierId: string | null | undefined, fallback: number, objectLabel?: string): number;
|
|
2393
|
+
/** The half of a legend's inputs the rail and the price list share, resolved
|
|
2394
|
+
* once so the two renderings cannot be given different answers. */
|
|
2395
|
+
private legendDeps;
|
|
2396
|
+
/** Paint the phone's always-visible legend; the chip HTML lives in
|
|
2397
|
+
* pickerLegend.ts. A legend of ONE teaches nothing, so it stays away. */
|
|
2398
|
+
private syncPriceRail;
|
|
2289
2399
|
private syncPrices;
|
|
2290
2400
|
/** Tap a price row → filter + frame that category on the map; tap again to
|
|
2291
2401
|
* clear. Shares `priceBandKeys` with the band selector so the row-dim state
|
|
@@ -2304,11 +2414,16 @@ declare class SeatPicker {
|
|
|
2304
2414
|
private liveTimer;
|
|
2305
2415
|
/** A live delta took one of OUR selected (not yet held) seats — evict + tell the buyer. */
|
|
2306
2416
|
private evictTakenSelections;
|
|
2307
|
-
|
|
2417
|
+
/** @internal */ syncTray(): void;
|
|
2308
2418
|
private emitSelectionValidity;
|
|
2309
2419
|
/** Paint the bottom-sheet's collapsed one-liner (pickerTray.ts builds it). */
|
|
2310
2420
|
private renderPeek;
|
|
2311
|
-
|
|
2421
|
+
/**
|
|
2422
|
+
* Release one buyer-visible held LINE. That is one label for a seat, and every
|
|
2423
|
+
* unit label behind a grouped GA line — a buyer who presses × on
|
|
2424
|
+
* "PIT · Adult ×2" means both of them, not one of two identical cards.
|
|
2425
|
+
*/
|
|
2426
|
+
private removeHeldLabels;
|
|
2312
2427
|
private handleChangeSeats;
|
|
2313
2428
|
private handleCta;
|
|
2314
2429
|
private startHoldTimer;
|
|
@@ -2361,7 +2476,10 @@ declare class SeatPicker {
|
|
|
2361
2476
|
/** Assemble the stable {@link CheckoutHandoff} from a hold's server line items. */
|
|
2362
2477
|
private buildHandoff;
|
|
2363
2478
|
private emitHoldChange;
|
|
2364
|
-
|
|
2479
|
+
/** @internal */ toast(msg: string, tone?: 'neutral' | 'success' | 'warning' | 'error', action?: {
|
|
2480
|
+
label: string;
|
|
2481
|
+
onClick: () => void;
|
|
2482
|
+
}): void;
|
|
2365
2483
|
private placeTooltip;
|
|
2366
2484
|
/**
|
|
2367
2485
|
* Row label without the redundant section prefix. Charts commonly name row
|
|
@@ -2586,4 +2704,4 @@ interface AttachPickerFrameOptions {
|
|
|
2586
2704
|
*/
|
|
2587
2705
|
declare function attachPickerFrame(iframe: HTMLIFrameElement, opts?: AttachPickerFrameOptions): () => void;
|
|
2588
2706
|
|
|
2589
|
-
export { ApiError, type AttachPickerFrameOptions, type BestAvailableResult, BuyerAccessContext, type BuyerAccessExpiredEvent, type BuyerAccessRefreshReason, type BuyerAccessToken, type BuyerAccessTokenProvider, BuyerAccessUnavailableError, type BuyerAccessUnavailableEvent, type BuyerAccessUnavailableReason, BuyerRealtimeClient, type BuyerRealtimeOptions, type CheckoutHandoff, type CheckoutLineItem, type CheckoutSessionResult, EmbeddedDesigner, type EmbeddedDesignerEventType, type EmbeddedDesignerMessage, type EmbeddedDesignerOptions, type GAAreaAvailability, type HoldConflict, type HoldLineItem, type HoldResult, type OrderStatusResult, type PaymentOptionsReason, type PaymentOptionsResult, type PaymentProviderName, type Projection, type PubApiOptions, type RealtimeSink, type ResumedHoldResult, SEATING_CHART_CALLBACK_PROPS, SEATING_CHART_HANDLE_METHODS, SEATING_CHART_IDENTITY_PROPS, SEATING_CHART_VALUE_PROPS, type SaleState, SeatPicker, type SeatPickerBestAvailableOptions, type SeatPickerBuyerView, type SeatPickerBuyerViewOptions, type SeatPickerOptions, type SeatPickerPricing, type SeatPickerTheme, SeatingChart, type SeatingChartCallbackProp, type SeatingChartCallbacks, type SeatingChartHandle, type SeatingChartHandleMethod, type SeatingChartIdentityProp, type SeatingChartOptions, type SeatingChartValueProp, type SeatingChartValues, type SelectedObjectUnavailableEvent, type SelectedSeat, type StatusChange, type SubscribeTicket, type TicketOfferAvailability, type TicketOfferPrice, type TicketOfferSummary, attachPickerFrame, bindSeatingChartHandle, buildSeatingChartOptions, createBuyerAccessContext, createControllerSink, parseTicketOfferAvailability, ticketOfferPrices };
|
|
2707
|
+
export { ApiError, type AttachPickerFrameOptions, type BestAvailableResult, BuyerAccessContext, type BuyerAccessExpiredEvent, type BuyerAccessRefreshReason, type BuyerAccessToken, type BuyerAccessTokenProvider, BuyerAccessUnavailableError, type BuyerAccessUnavailableEvent, type BuyerAccessUnavailableReason, BuyerRealtimeClient, type BuyerRealtimeOptions, type CheckoutHandoff, type CheckoutLineItem, type CheckoutSessionResult, EmbeddedDesigner, type EmbeddedDesignerEventType, type EmbeddedDesignerMessage, type EmbeddedDesignerOptions, type GAAreaAvailability, type GAPromptRequest, type GaPromptTier, type HoldConflict, type HoldLineItem, type HoldResult, type OrderStatusResult, type PaymentOptionsReason, type PaymentOptionsResult, type PaymentProviderName, type Projection, type PubApiOptions, type RealtimeSink, type ResumedHoldResult, SEATING_CHART_CALLBACK_PROPS, SEATING_CHART_HANDLE_METHODS, SEATING_CHART_IDENTITY_PROPS, SEATING_CHART_VALUE_PROPS, type SaleState, SeatPicker, type SeatPickerBestAvailableOptions, type SeatPickerBuyerView, type SeatPickerBuyerViewOptions, type SeatPickerOptions, type SeatPickerPricing, type SeatPickerTheme, SeatingChart, type SeatingChartCallbackProp, type SeatingChartCallbacks, type SeatingChartHandle, type SeatingChartHandleMethod, type SeatingChartIdentityProp, type SeatingChartOptions, type SeatingChartValueProp, type SeatingChartValues, type SelectedObjectUnavailableEvent, type SelectedSeat, type StatusChange, type SubscribeTicket, type TicketOfferAvailability, type TicketOfferPrice, type TicketOfferSummary, attachPickerFrame, bindSeatingChartHandle, buildSeatingChartOptions, createBuyerAccessContext, createControllerSink, parseTicketOfferAvailability, ticketOfferPrices };
|
package/dist/index.d.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { PickerSeat, PickerSelectionValidator, RendererViewMode, SeatHoverDetails, PickerSelectionValidity, PickerTransport, PickerMapTheme } from '@seatlayer/core';
|
|
1
|
+
import { PickerSeat, PickerGAArea, PickerSelectionValidator, RendererViewMode, SeatHoverDetails, PickerSelectionValidity, PickerTransport, PickerMapTheme } from '@seatlayer/core';
|
|
2
2
|
export { ExpandedSeat, PickerMapTheme, PickerSelectionValidator, PickerSelectionValidity, PickerSelectionViolation, RendererViewMode, SeatHoverDetails } from '@seatlayer/core';
|
|
3
3
|
export { A as AccessIntentForbidsDetails, a as AccessLinkRecord, b as AccessLinkReveal, c as AccessLinkState, d as AccessLinkStatus, e as AccessLinkStatusRecord, f as ArchiveBlockedDetails, g as AssignmentBuckets, h as AssignmentDropDetails, i as AssignmentResult, B as BucketRow, C as ChannelAccessIntent, j as ChannelAccessSummary, k as ChannelAllocationPage, l as ChannelAttribution, m as ChannelAuditEntry, n as ChannelAuditPage, o as ChannelCounts, p as ChannelListResult, q as ChannelPreviewProjection, r as ChannelRecord, s as ChannelReport, t as ChannelReportLinkRecord, u as ChannelReportLinkReveal, v as ChannelReportResult, w as ChannelReportRow, x as ChannelSeatStatus, y as ChannelState, z as ChannelsCapabilities, D as ChannelsClient, E as ChannelsMode, F as ChannelsModeHost, G as ChannelsRowView, H as ChannelsSeatView, I as ControlRoomActivityEntry, J as ControlRoomSectionMetric, K as ControlRoomSnapshot, L as EventCategoryAssignmentResult, M as EventScopedManageToken, N as EventTableBookingMode, O as EventTableBookingResult, P as IntentSwitchBlockedDetails, Q as InventoryBooking, R as InventoryBookingActivity, S as InventoryBookingDetail, T as InventoryBookingObject, U as InventoryBookingState, V as InventoryBookingsPage, W as InventoryBookingsQuery, X as LogEntry, Y as LogPage, Z as ManageApi, _ as ManageApiError, $ as ReportByStatus, a0 as ReportCategoryMeta, a1 as ReportCategoryRow, a2 as ReportResult, a3 as SeatManager, a4 as SeatManagerActionResult, a5 as SeatManagerActivity, a6 as SeatManagerCapability, a7 as SeatManagerConnection, a8 as SeatManagerFilteredSection, a9 as SeatManagerMode, aa as SeatManagerOptions, ab as SeatManagerSelectionValidity, ac as SeatManagerTallies, ad as SelectionSourceRow } from './channelsMode-2z9HBOAX.js';
|
|
4
4
|
|
|
@@ -506,6 +506,77 @@ interface PubApiOptions {
|
|
|
506
506
|
onObjectUnavailable?: (event: SelectedObjectUnavailableEvent) => void;
|
|
507
507
|
}
|
|
508
508
|
|
|
509
|
+
/**
|
|
510
|
+
* The general-admission quantity prompt, and the GA half of the tray.
|
|
511
|
+
*
|
|
512
|
+
* Before this module a buyer could tap a GA area on the map and nothing at all
|
|
513
|
+
* happened — `onGAClick` reached `PickerController` but the drop-in widget never
|
|
514
|
+
* wired it — while every area on the chart rendered a permanent stepper row in
|
|
515
|
+
* the tray whether or not the buyer wanted one. Twelve areas meant twelve
|
|
516
|
+
* steppers of clutter, and on a phone (where the tray is a collapsed sheet) the
|
|
517
|
+
* only control that existed was the one the buyer could not see.
|
|
518
|
+
*
|
|
519
|
+
* What replaces it is two taps: tap the area, the prompt opens with a quantity
|
|
520
|
+
* already seeded to 1 (never 0 — nobody opens a ticket picker to buy none), and
|
|
521
|
+
* the primary button reads what it will do, priced live: `Add 3 tickets · $45`.
|
|
522
|
+
* The map stays visible behind it — a popover anchored at the tap on a wide
|
|
523
|
+
* layout, a bottom sheet on a narrow one — because the buyer is choosing where
|
|
524
|
+
* to stand, and a centred modal hides exactly the thing being chosen.
|
|
525
|
+
*
|
|
526
|
+
* The tray keeps the stepper rows, but only for areas with a quantity: it is a
|
|
527
|
+
* cart, not a price list. Everything else collapses into one compact `Areas`
|
|
528
|
+
* list, which is the keyboard/screen-reader entry point into the same prompt.
|
|
529
|
+
*
|
|
530
|
+
* Split out of SeatPicker.ts rather than added to it: that file is pinned at its
|
|
531
|
+
* size in the app's file-size ratchet and may not grow.
|
|
532
|
+
*/
|
|
533
|
+
|
|
534
|
+
/** One priced ticket type inside an area. `id` is null for an untiered area. */
|
|
535
|
+
interface GaPromptTier {
|
|
536
|
+
id: string | null;
|
|
537
|
+
label: string;
|
|
538
|
+
price: number;
|
|
539
|
+
}
|
|
540
|
+
/**
|
|
541
|
+
* What a host takes over when it returns `true` from `onGAPrompt`. `confirm`
|
|
542
|
+
* accepts a plain number for a single-tier area, or a per-tier record; both
|
|
543
|
+
* land in exactly the same place the built-in prompt's Add button does.
|
|
544
|
+
*/
|
|
545
|
+
interface GAPromptRequest {
|
|
546
|
+
area: PickerGAArea;
|
|
547
|
+
/** Quantities already chosen here, per tier id (`''` for an untiered area). */
|
|
548
|
+
selected: Record<string, number>;
|
|
549
|
+
min: number;
|
|
550
|
+
/** min(units still free, order cap − tickets chosen elsewhere). */
|
|
551
|
+
max: number;
|
|
552
|
+
tiers: GaPromptTier[];
|
|
553
|
+
confirm(quantity: number | Record<string, number>): void;
|
|
554
|
+
cancel(): void;
|
|
555
|
+
}
|
|
556
|
+
/** Per (area, tier) pending quantities. A `null` tier key is an untiered area. */
|
|
557
|
+
type GaQtyMap = Map<string, Map<string | null, number>>;
|
|
558
|
+
/** The slice of SeatPicker this module drives. Everything else stays private. */
|
|
559
|
+
interface GaPromptPicker {
|
|
560
|
+
root: HTMLDivElement | null;
|
|
561
|
+
els: Record<string, HTMLElement>;
|
|
562
|
+
srEl: HTMLDivElement | null;
|
|
563
|
+
gaQty: GaQtyMap;
|
|
564
|
+
maxTickets: number;
|
|
565
|
+
salesClosed: boolean;
|
|
566
|
+
gaPromptEl: HTMLDivElement | null;
|
|
567
|
+
gaPromptReturnFocus: HTMLElement | null;
|
|
568
|
+
gaAreasExpanded: boolean;
|
|
569
|
+
money(amount: number): string;
|
|
570
|
+
paidPrice(categoryKey: string | undefined, tierId: string | null | undefined, fallback: number, objectLabel?: string): number;
|
|
571
|
+
tf(key: string, fallback: string): string;
|
|
572
|
+
toast(message: string, tone?: 'error' | 'success' | 'warning' | 'neutral'): void;
|
|
573
|
+
reducedMotion(): boolean;
|
|
574
|
+
syncTray(): void;
|
|
575
|
+
/** Tickets in the order right now, held + selected seats + every GA quantity. */
|
|
576
|
+
totalTicketCount(): number;
|
|
577
|
+
onGAPromptHook?: ((prompt: GAPromptRequest) => boolean | void) | undefined;
|
|
578
|
+
}
|
|
579
|
+
|
|
509
580
|
/**
|
|
510
581
|
* SeatingChart — the embeddable buyer picker.
|
|
511
582
|
*
|
|
@@ -580,7 +651,7 @@ interface SeatingChartOptions {
|
|
|
580
651
|
selectionValidators?: PickerSelectionValidator[];
|
|
581
652
|
/**
|
|
582
653
|
* BCP 47 language for the widget UI — `'de'`, `'es-MX'`, etc. Falls back to
|
|
583
|
-
* the browser language, then English.
|
|
654
|
+
* the browser language, then English. 37 languages ship. The German
|
|
584
655
|
* bundle (etc.) is fetched on demand so unused languages cost nothing.
|
|
585
656
|
*/
|
|
586
657
|
locale?: string;
|
|
@@ -628,6 +699,13 @@ interface SeatingChartOptions {
|
|
|
628
699
|
onHoldRestored?: (result: HoldResult) => void;
|
|
629
700
|
onHoldExpired?: () => void;
|
|
630
701
|
onGAClick?: (area: GAAreaAvailability) => void;
|
|
702
|
+
/**
|
|
703
|
+
* Mirror of {@link SeatPickerOptions.onGAPrompt}. The low-level chart draws no
|
|
704
|
+
* quantity UI of its own, so this fires purely as the "the buyer wants to pick
|
|
705
|
+
* a quantity here" signal, with the same pre-computed `min`/`max`/`tiers` the
|
|
706
|
+
* full widget would have used; the return value is accepted and ignored.
|
|
707
|
+
*/
|
|
708
|
+
onGAPrompt?: (prompt: GAPromptRequest) => boolean | void;
|
|
631
709
|
/**
|
|
632
710
|
* The buyer access session lapsed. `refreshed` says whether the provider
|
|
633
711
|
* already recovered it — false means private inventory is now unavailable and
|
|
@@ -981,7 +1059,7 @@ type SeatingChartIdentityProp = (typeof SEATING_CHART_IDENTITY_PROPS)[number];
|
|
|
981
1059
|
declare const SEATING_CHART_VALUE_PROPS: readonly ["event", "apiBase", "maxSelection", "numberOfPlacesToSelect", "selectionValidators", "publicKey", "locale", "currency", "colorblindSafe", "initialView", "errorDisplay", "selectedObjects", "selectableObjects", "messages", "seatTooltip", "buyerAccessTokenProvider", "buyerAccessToken"];
|
|
982
1060
|
type SeatingChartValueProp = (typeof SEATING_CHART_VALUE_PROPS)[number];
|
|
983
1061
|
/** Every callback option a wrapper wires to its own event mechanism. */
|
|
984
|
-
declare const SEATING_CHART_CALLBACK_PROPS: readonly ["onSelectionChange", "onSelectionValidityChange", "onSelectionValid", "onSelectionInvalid", "onSelectionLimit", "onHold", "onHoldRestored", "onHoldExpired", "onGAClick", "onError", "onDeckTap", "onHint", "onSeatHover", "onAccessExpired", "onAccessUnavailable", "onSelectedObjectUnavailable"];
|
|
1062
|
+
declare const SEATING_CHART_CALLBACK_PROPS: readonly ["onSelectionChange", "onSelectionValidityChange", "onSelectionValid", "onSelectionInvalid", "onSelectionLimit", "onHold", "onHoldRestored", "onHoldExpired", "onGAClick", "onGAPrompt", "onError", "onDeckTap", "onHint", "onSeatHover", "onAccessExpired", "onAccessUnavailable", "onSelectedObjectUnavailable"];
|
|
985
1063
|
type SeatingChartCallbackProp = (typeof SEATING_CHART_CALLBACK_PROPS)[number];
|
|
986
1064
|
/** The value half of the options, as a wrapper holds it. */
|
|
987
1065
|
type SeatingChartValues = Pick<SeatingChartOptions, SeatingChartValueProp>;
|
|
@@ -1518,7 +1596,11 @@ interface SeatPickerOptions {
|
|
|
1518
1596
|
/** Optional sale guards evaluated after every change and enforced before a
|
|
1519
1597
|
* hold: minimum quantity, consecutive seats, and/or no stranded singles. */
|
|
1520
1598
|
selectionValidators?: PickerSelectionValidator[];
|
|
1521
|
-
/**
|
|
1599
|
+
/**
|
|
1600
|
+
* BCP 47 language for the widget UI. 37 languages ship; omit this and each
|
|
1601
|
+
* buyer gets their own `navigator.languages`, falling back to English.
|
|
1602
|
+
* Read once at render — there is no way to change it on a live chart.
|
|
1603
|
+
*/
|
|
1522
1604
|
locale?: string;
|
|
1523
1605
|
/** Per-key string overrides layered over the active locale. */
|
|
1524
1606
|
messages?: Record<string, string>;
|
|
@@ -1783,6 +1865,22 @@ interface SeatPickerOptions {
|
|
|
1783
1865
|
* widget has already dropped them from the tray.
|
|
1784
1866
|
*/
|
|
1785
1867
|
onSelectedObjectUnavailable?: (event: SelectedObjectUnavailableEvent) => void;
|
|
1868
|
+
/**
|
|
1869
|
+
* A buyer tapped a general-admission area (on the map, or in the tray's
|
|
1870
|
+
* `Areas` list) and the widget is about to open its own quantity prompt.
|
|
1871
|
+
*
|
|
1872
|
+
* Return `true` to take the interaction over completely — the built-in
|
|
1873
|
+
* popover/sheet is suppressed, and the host drives the choice with whatever
|
|
1874
|
+
* UI it likes, landing the result through `prompt.confirm(quantity)` (a plain
|
|
1875
|
+
* number for a single-tier area, or `{ [tierId]: quantity }`) or dropping it
|
|
1876
|
+
* with `prompt.cancel()`. Return anything else (or nothing) and the built-in
|
|
1877
|
+
* prompt opens as usual, so this is also usable as a plain notification.
|
|
1878
|
+
*
|
|
1879
|
+
* `prompt.max` already folds in the area's live availability AND the
|
|
1880
|
+
* order-wide ticket cap minus everything chosen elsewhere; a `confirm` above
|
|
1881
|
+
* it is clamped rather than rejected.
|
|
1882
|
+
*/
|
|
1883
|
+
onGAPrompt?: (prompt: GAPromptRequest) => boolean | void;
|
|
1786
1884
|
onError?: (err: unknown) => void;
|
|
1787
1885
|
}
|
|
1788
1886
|
|
|
@@ -1807,8 +1905,9 @@ interface SeatPickerOptions {
|
|
|
1807
1905
|
* so plain host CSS can restyle too.
|
|
1808
1906
|
*/
|
|
1809
1907
|
|
|
1810
|
-
declare class SeatPicker {
|
|
1811
|
-
|
|
1908
|
+
declare class SeatPicker implements GaPromptPicker {
|
|
1909
|
+
/** @internal Read by pickerGaPrompt for the `onGAPrompt` host hook. */
|
|
1910
|
+
readonly opts: SeatPickerOptions;
|
|
1812
1911
|
private readonly api;
|
|
1813
1912
|
/** Authenticated view media, cached only for this picker lifetime. */
|
|
1814
1913
|
private readonly buyerAssetUrls;
|
|
@@ -1820,17 +1919,17 @@ declare class SeatPicker {
|
|
|
1820
1919
|
private accessEl;
|
|
1821
1920
|
private readonly apiBase;
|
|
1822
1921
|
private readonly controller;
|
|
1823
|
-
|
|
1922
|
+
/** @internal */ maxTickets: number;
|
|
1824
1923
|
/** Exact ticket count required before checkout; null keeps ordinary 1..max behavior. */
|
|
1825
1924
|
private readonly exactTickets;
|
|
1826
1925
|
private lastSelectionValidity;
|
|
1827
1926
|
/** Original host pricing, kept separate from live server offer overrides. */
|
|
1828
1927
|
private readonly hostPricing;
|
|
1829
|
-
|
|
1928
|
+
/** @internal */ root: HTMLDivElement | null;
|
|
1830
1929
|
private mapHost;
|
|
1831
1930
|
private rendered;
|
|
1832
1931
|
private destroyed;
|
|
1833
|
-
|
|
1932
|
+
/** @internal */ els: Record<string, HTMLElement>;
|
|
1834
1933
|
/** Feature 6 anchor regions — positioned flex containers over the map. */
|
|
1835
1934
|
private regions;
|
|
1836
1935
|
private ro;
|
|
@@ -1874,7 +1973,15 @@ declare class SeatPicker {
|
|
|
1874
1973
|
private checkoutPanel;
|
|
1875
1974
|
private extendEl;
|
|
1876
1975
|
private bookedEl;
|
|
1877
|
-
|
|
1976
|
+
/** @internal Pending GA units per (area, tier) — see pickerGaPrompt.ts. */
|
|
1977
|
+
gaQty: GaQtyMap;
|
|
1978
|
+
/** @internal The open quantity prompt (popover or sheet), while one is up. */
|
|
1979
|
+
gaPromptEl: HTMLDivElement | null;
|
|
1980
|
+
/** @internal */ gaPromptReturnFocus: HTMLElement | null;
|
|
1981
|
+
/** @internal Whether the tray's collapsed `Areas` list is open. */
|
|
1982
|
+
gaAreasExpanded: boolean;
|
|
1983
|
+
/** Viewport point of the last map tap — anchors the GA popover. */
|
|
1984
|
+
private lastMapPoint;
|
|
1878
1985
|
private tipEl;
|
|
1879
1986
|
private tipPos;
|
|
1880
1987
|
private confirmEl;
|
|
@@ -1883,7 +1990,7 @@ declare class SeatPicker {
|
|
|
1883
1990
|
private tableDialog;
|
|
1884
1991
|
private tableDialogHeld;
|
|
1885
1992
|
private tableDialogReturnFocus;
|
|
1886
|
-
|
|
1993
|
+
/** @internal */ srEl: HTMLDivElement | null;
|
|
1887
1994
|
private baQty;
|
|
1888
1995
|
private baCat;
|
|
1889
1996
|
/** Optional navigation-zone scope for buyer best-available. */
|
|
@@ -1902,7 +2009,7 @@ declare class SeatPicker {
|
|
|
1902
2009
|
private bestAvailableConfirm;
|
|
1903
2010
|
private releasingHold;
|
|
1904
2011
|
/** Event sales window is closed (read-only load state / live close). */
|
|
1905
|
-
|
|
2012
|
+
/** @internal */ salesClosed: boolean;
|
|
1906
2013
|
/** Every seated category's live availability is 0 (sold-out overlay is up). */
|
|
1907
2014
|
private soldOut;
|
|
1908
2015
|
private soldoutEl;
|
|
@@ -1971,7 +2078,6 @@ declare class SeatPicker {
|
|
|
1971
2078
|
/** Wide-layout ticket panel collapsed (map owns the full width). */
|
|
1972
2079
|
private sideCollapsed;
|
|
1973
2080
|
private sideToggleEl;
|
|
1974
|
-
private pricesBtnEl;
|
|
1975
2081
|
/** True once we've asked the host page to pin us fullscreen (framed, no native). */
|
|
1976
2082
|
private framedFs;
|
|
1977
2083
|
/** Last height (px) posted to a host frame; dedupes redundant reports. */
|
|
@@ -2100,7 +2206,9 @@ declare class SeatPicker {
|
|
|
2100
2206
|
* unknown keys, so this collapses that to `fallback` — while still honoring a
|
|
2101
2207
|
* host `messages` override (which makes `t()` return the override, not the key).
|
|
2102
2208
|
*/
|
|
2103
|
-
|
|
2209
|
+
/** @internal The host's GA prompt takeover, if it supplied one. */
|
|
2210
|
+
get onGAPromptHook(): SeatPickerOptions['onGAPrompt'];
|
|
2211
|
+
/** @internal */ tf(key: string, fallback: string): string;
|
|
2104
2212
|
/** Sold-out overlay — an informational state with no unavailable action. */
|
|
2105
2213
|
private buildSoldoutOverlay;
|
|
2106
2214
|
/**
|
|
@@ -2141,7 +2249,7 @@ declare class SeatPicker {
|
|
|
2141
2249
|
/** Read a resolved --sl-* token value (canvas needs a real color, not var()). */
|
|
2142
2250
|
private cssVar;
|
|
2143
2251
|
/** Motion is progressive enhancement; all state remains legible when reduced. */
|
|
2144
|
-
|
|
2252
|
+
/** @internal */ reducedMotion(): boolean;
|
|
2145
2253
|
private scheduleMotion;
|
|
2146
2254
|
/** Restart one finite CSS animation without leaving a permanent state class. */
|
|
2147
2255
|
private animateOnce;
|
|
@@ -2152,14 +2260,10 @@ declare class SeatPicker {
|
|
|
2152
2260
|
/** Update only the action affordance; selection callbacks must not refire. */
|
|
2153
2261
|
private committedSelection;
|
|
2154
2262
|
private pendingSelectionCount;
|
|
2155
|
-
private heldGACounts;
|
|
2156
|
-
private pendingGACount;
|
|
2157
2263
|
private heldTicketCount;
|
|
2158
|
-
|
|
2264
|
+
/** @internal */ totalTicketCount(): number;
|
|
2159
2265
|
/** Held tickets and standing quantities consume the same order-wide cap. */
|
|
2160
2266
|
private updateSelectionCapacity;
|
|
2161
|
-
private canAddTicket;
|
|
2162
|
-
private pendingGATotal;
|
|
2163
2267
|
private syncCta;
|
|
2164
2268
|
private setCtaPhase;
|
|
2165
2269
|
/** Session-scoped capability key: isolated by API origin and event. */
|
|
@@ -2255,7 +2359,7 @@ declare class SeatPicker {
|
|
|
2255
2359
|
*/
|
|
2256
2360
|
private openSeatView;
|
|
2257
2361
|
private closeSeatView;
|
|
2258
|
-
|
|
2362
|
+
/** @internal */ money(n: number): string;
|
|
2259
2363
|
/**
|
|
2260
2364
|
* Sleep until the offer schedule's next known transition, then re-read.
|
|
2261
2365
|
*
|
|
@@ -2285,7 +2389,13 @@ declare class SeatPicker {
|
|
|
2285
2389
|
* price the widget DISPLAYS or hands off must flow through here — a map
|
|
2286
2390
|
* that shows one price while checkout charges another destroys trust.
|
|
2287
2391
|
*/
|
|
2288
|
-
|
|
2392
|
+
/** @internal */ paidPrice(categoryKey: string | undefined, tierId: string | null | undefined, fallback: number, objectLabel?: string): number;
|
|
2393
|
+
/** The half of a legend's inputs the rail and the price list share, resolved
|
|
2394
|
+
* once so the two renderings cannot be given different answers. */
|
|
2395
|
+
private legendDeps;
|
|
2396
|
+
/** Paint the phone's always-visible legend; the chip HTML lives in
|
|
2397
|
+
* pickerLegend.ts. A legend of ONE teaches nothing, so it stays away. */
|
|
2398
|
+
private syncPriceRail;
|
|
2289
2399
|
private syncPrices;
|
|
2290
2400
|
/** Tap a price row → filter + frame that category on the map; tap again to
|
|
2291
2401
|
* clear. Shares `priceBandKeys` with the band selector so the row-dim state
|
|
@@ -2304,11 +2414,16 @@ declare class SeatPicker {
|
|
|
2304
2414
|
private liveTimer;
|
|
2305
2415
|
/** A live delta took one of OUR selected (not yet held) seats — evict + tell the buyer. */
|
|
2306
2416
|
private evictTakenSelections;
|
|
2307
|
-
|
|
2417
|
+
/** @internal */ syncTray(): void;
|
|
2308
2418
|
private emitSelectionValidity;
|
|
2309
2419
|
/** Paint the bottom-sheet's collapsed one-liner (pickerTray.ts builds it). */
|
|
2310
2420
|
private renderPeek;
|
|
2311
|
-
|
|
2421
|
+
/**
|
|
2422
|
+
* Release one buyer-visible held LINE. That is one label for a seat, and every
|
|
2423
|
+
* unit label behind a grouped GA line — a buyer who presses × on
|
|
2424
|
+
* "PIT · Adult ×2" means both of them, not one of two identical cards.
|
|
2425
|
+
*/
|
|
2426
|
+
private removeHeldLabels;
|
|
2312
2427
|
private handleChangeSeats;
|
|
2313
2428
|
private handleCta;
|
|
2314
2429
|
private startHoldTimer;
|
|
@@ -2361,7 +2476,10 @@ declare class SeatPicker {
|
|
|
2361
2476
|
/** Assemble the stable {@link CheckoutHandoff} from a hold's server line items. */
|
|
2362
2477
|
private buildHandoff;
|
|
2363
2478
|
private emitHoldChange;
|
|
2364
|
-
|
|
2479
|
+
/** @internal */ toast(msg: string, tone?: 'neutral' | 'success' | 'warning' | 'error', action?: {
|
|
2480
|
+
label: string;
|
|
2481
|
+
onClick: () => void;
|
|
2482
|
+
}): void;
|
|
2365
2483
|
private placeTooltip;
|
|
2366
2484
|
/**
|
|
2367
2485
|
* Row label without the redundant section prefix. Charts commonly name row
|
|
@@ -2586,4 +2704,4 @@ interface AttachPickerFrameOptions {
|
|
|
2586
2704
|
*/
|
|
2587
2705
|
declare function attachPickerFrame(iframe: HTMLIFrameElement, opts?: AttachPickerFrameOptions): () => void;
|
|
2588
2706
|
|
|
2589
|
-
export { ApiError, type AttachPickerFrameOptions, type BestAvailableResult, BuyerAccessContext, type BuyerAccessExpiredEvent, type BuyerAccessRefreshReason, type BuyerAccessToken, type BuyerAccessTokenProvider, BuyerAccessUnavailableError, type BuyerAccessUnavailableEvent, type BuyerAccessUnavailableReason, BuyerRealtimeClient, type BuyerRealtimeOptions, type CheckoutHandoff, type CheckoutLineItem, type CheckoutSessionResult, EmbeddedDesigner, type EmbeddedDesignerEventType, type EmbeddedDesignerMessage, type EmbeddedDesignerOptions, type GAAreaAvailability, type HoldConflict, type HoldLineItem, type HoldResult, type OrderStatusResult, type PaymentOptionsReason, type PaymentOptionsResult, type PaymentProviderName, type Projection, type PubApiOptions, type RealtimeSink, type ResumedHoldResult, SEATING_CHART_CALLBACK_PROPS, SEATING_CHART_HANDLE_METHODS, SEATING_CHART_IDENTITY_PROPS, SEATING_CHART_VALUE_PROPS, type SaleState, SeatPicker, type SeatPickerBestAvailableOptions, type SeatPickerBuyerView, type SeatPickerBuyerViewOptions, type SeatPickerOptions, type SeatPickerPricing, type SeatPickerTheme, SeatingChart, type SeatingChartCallbackProp, type SeatingChartCallbacks, type SeatingChartHandle, type SeatingChartHandleMethod, type SeatingChartIdentityProp, type SeatingChartOptions, type SeatingChartValueProp, type SeatingChartValues, type SelectedObjectUnavailableEvent, type SelectedSeat, type StatusChange, type SubscribeTicket, type TicketOfferAvailability, type TicketOfferPrice, type TicketOfferSummary, attachPickerFrame, bindSeatingChartHandle, buildSeatingChartOptions, createBuyerAccessContext, createControllerSink, parseTicketOfferAvailability, ticketOfferPrices };
|
|
2707
|
+
export { ApiError, type AttachPickerFrameOptions, type BestAvailableResult, BuyerAccessContext, type BuyerAccessExpiredEvent, type BuyerAccessRefreshReason, type BuyerAccessToken, type BuyerAccessTokenProvider, BuyerAccessUnavailableError, type BuyerAccessUnavailableEvent, type BuyerAccessUnavailableReason, BuyerRealtimeClient, type BuyerRealtimeOptions, type CheckoutHandoff, type CheckoutLineItem, type CheckoutSessionResult, EmbeddedDesigner, type EmbeddedDesignerEventType, type EmbeddedDesignerMessage, type EmbeddedDesignerOptions, type GAAreaAvailability, type GAPromptRequest, type GaPromptTier, type HoldConflict, type HoldLineItem, type HoldResult, type OrderStatusResult, type PaymentOptionsReason, type PaymentOptionsResult, type PaymentProviderName, type Projection, type PubApiOptions, type RealtimeSink, type ResumedHoldResult, SEATING_CHART_CALLBACK_PROPS, SEATING_CHART_HANDLE_METHODS, SEATING_CHART_IDENTITY_PROPS, SEATING_CHART_VALUE_PROPS, type SaleState, SeatPicker, type SeatPickerBestAvailableOptions, type SeatPickerBuyerView, type SeatPickerBuyerViewOptions, type SeatPickerOptions, type SeatPickerPricing, type SeatPickerTheme, SeatingChart, type SeatingChartCallbackProp, type SeatingChartCallbacks, type SeatingChartHandle, type SeatingChartHandleMethod, type SeatingChartIdentityProp, type SeatingChartOptions, type SeatingChartValueProp, type SeatingChartValues, type SelectedObjectUnavailableEvent, type SelectedSeat, type StatusChange, type SubscribeTicket, type TicketOfferAvailability, type TicketOfferPrice, type TicketOfferSummary, attachPickerFrame, bindSeatingChartHandle, buildSeatingChartOptions, createBuyerAccessContext, createControllerSink, parseTicketOfferAvailability, ticketOfferPrices };
|