@seatlayer/js 0.63.1 → 0.64.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/index.cjs +89 -11
- package/dist/index.d.cts +311 -13
- package/dist/index.d.ts +311 -13
- package/dist/index.js +88 -10
- package/package.json +2 -2
package/dist/index.d.ts
CHANGED
|
@@ -115,6 +115,22 @@ interface SelectedObjectUnavailableEvent {
|
|
|
115
115
|
| 'exhausted';
|
|
116
116
|
code?: string;
|
|
117
117
|
}
|
|
118
|
+
/**
|
|
119
|
+
* Observed when the held bearer is replaced by a newly minted one.
|
|
120
|
+
*
|
|
121
|
+
* Exists for exactly one caller today: a Performance Group session owns the
|
|
122
|
+
* holds it created, so a re-mint has to ADOPT them onto the new session before
|
|
123
|
+
* anything else is allowed to speak to the group. See
|
|
124
|
+
* `PerformanceGroupApi`'s adopt handshake.
|
|
125
|
+
*/
|
|
126
|
+
interface BuyerAccessRenewalEvent {
|
|
127
|
+
/** The bearer that was in hand before the renewal. Never null when observed. */
|
|
128
|
+
previousToken: string;
|
|
129
|
+
/** The bearer that just replaced it. */
|
|
130
|
+
token: string;
|
|
131
|
+
reason: BuyerAccessRefreshReason;
|
|
132
|
+
}
|
|
133
|
+
type BuyerAccessRenewalObserver = (event: BuyerAccessRenewalEvent) => void | Promise<void>;
|
|
118
134
|
interface BuyerAccessContextOptions {
|
|
119
135
|
provider?: BuyerAccessTokenProvider;
|
|
120
136
|
/** One-shot escape hatch for hosts that already own the token lifecycle. */
|
|
@@ -152,6 +168,21 @@ declare class BuyerAccessContext {
|
|
|
152
168
|
* held `configured` true. Found against a live worker in the M9 pass.
|
|
153
169
|
*/
|
|
154
170
|
get configured(): boolean;
|
|
171
|
+
/**
|
|
172
|
+
* Observe bearer rotation: "the token changed from X to Y".
|
|
173
|
+
*
|
|
174
|
+
* The observer is awaited INSIDE `#renew`, which is single-flight, so no
|
|
175
|
+
* `authorization()` caller can obtain the new bearer until the observer has
|
|
176
|
+
* settled. That serialization is the whole point — a Performance Group must
|
|
177
|
+
* finish adopting its holds onto the new session before any other group
|
|
178
|
+
* request goes out on it.
|
|
179
|
+
*
|
|
180
|
+
* The observer never sees the very first acquisition (there is no previous
|
|
181
|
+
* token to inherit from) and never sees a no-op re-issue of the same string.
|
|
182
|
+
* Its rejection is swallowed here: it belongs to the caller that registered
|
|
183
|
+
* it, and that caller latches its own terminal state.
|
|
184
|
+
*/
|
|
185
|
+
onRenewed(observer: BuyerAccessRenewalObserver | undefined): void;
|
|
155
186
|
/** Set once a state arrives that refreshing cannot clear. */
|
|
156
187
|
get unavailable(): BuyerAccessUnavailableEvent | null;
|
|
157
188
|
/** True while a usable bearer is held (ignores skew). */
|
|
@@ -1979,6 +2010,8 @@ declare class SeatPicker implements GaPromptPicker {
|
|
|
1979
2010
|
/** Original host pricing, kept separate from live server offer overrides. */
|
|
1980
2011
|
private readonly hostPricing;
|
|
1981
2012
|
private readonly performanceGroup;
|
|
2013
|
+
/** Structural (not CSS) removal of per-performance money — see pickerInternal. */
|
|
2014
|
+
private readonly suppressPricing;
|
|
1982
2015
|
/** @internal */ root: HTMLDivElement | null;
|
|
1983
2016
|
private mapHost;
|
|
1984
2017
|
private rendered;
|
|
@@ -2038,6 +2071,9 @@ declare class SeatPicker implements GaPromptPicker {
|
|
|
2038
2071
|
private lastMapPoint;
|
|
2039
2072
|
private tipEl;
|
|
2040
2073
|
private tipPos;
|
|
2074
|
+
/** True while a TAPPED seat card is held open (touch has no hover to lose). */
|
|
2075
|
+
private tipPinned;
|
|
2076
|
+
private lastPointerType;
|
|
2041
2077
|
private confirmEl;
|
|
2042
2078
|
private confirmSeat;
|
|
2043
2079
|
private tableDialogEl;
|
|
@@ -2340,8 +2376,6 @@ declare class SeatPicker implements GaPromptPicker {
|
|
|
2340
2376
|
/** Complete buyer-visible price range, including every ticket tier and
|
|
2341
2377
|
* tier-specific host override. */
|
|
2342
2378
|
private catPriceRange;
|
|
2343
|
-
/** Derive category price bands without hiding the upper end of tier ranges. */
|
|
2344
|
-
private priceBands;
|
|
2345
2379
|
/** Build the compact price selector in the panel header. Choosing a band both
|
|
2346
2380
|
* filters availability and smoothly frames the matching seats on the map. */
|
|
2347
2381
|
private buildPriceFilter;
|
|
@@ -2389,6 +2423,13 @@ declare class SeatPicker implements GaPromptPicker {
|
|
|
2389
2423
|
private sectionCardOnView;
|
|
2390
2424
|
/** Fraction of the focused section's on-screen bbox covered by the card. */
|
|
2391
2425
|
private sectionCardCoverage;
|
|
2426
|
+
/**
|
|
2427
|
+
* The polite-live sentence for a partly-available seat, or '' for any other.
|
|
2428
|
+
*
|
|
2429
|
+
* Focus is the only moment a keyboard buyer gets: the night strip lives on a
|
|
2430
|
+
* hover surface they never reach, so the same facts arrive here as prose.
|
|
2431
|
+
*/
|
|
2432
|
+
private markedSeatAnnouncement;
|
|
2392
2433
|
/** aria-live readout when keyboard focus lands on a seat. */
|
|
2393
2434
|
private announceSeat;
|
|
2394
2435
|
private showTableDialog;
|
|
@@ -2499,6 +2540,16 @@ declare class SeatPicker implements GaPromptPicker {
|
|
|
2499
2540
|
*/
|
|
2500
2541
|
private detectBooked;
|
|
2501
2542
|
private showBooked;
|
|
2543
|
+
/**
|
|
2544
|
+
* A Performance Group hold settled, told to us by the WRAPPER rather than by
|
|
2545
|
+
* a socket (§8: this surface has no realtime feed). `detectBooked` waits for
|
|
2546
|
+
* the controller's own hold to settle and for a group it never does — the
|
|
2547
|
+
* collapsed projection only speaks free/blocked — so a booking completed on
|
|
2548
|
+
* the host's server was invisible and the picker sat on "Continue to
|
|
2549
|
+
* checkout" forever. `booked` runs the ordinary success path (overlay +
|
|
2550
|
+
* `onBooked`); `lost` is the reset a hold expiry does. Either way the hold is
|
|
2551
|
+
* dropped, so the CTA cannot offer a checkout that cannot happen. */
|
|
2552
|
+
/** @internal */ notifyGroupSettled(outcome: 'booked' | 'lost'): void;
|
|
2502
2553
|
/**
|
|
2503
2554
|
* The seats are held. Send the buyer wherever this picker's `checkout` option
|
|
2504
2555
|
* says they go.
|
|
@@ -2540,17 +2591,27 @@ declare class SeatPicker implements GaPromptPicker {
|
|
|
2540
2591
|
}): void;
|
|
2541
2592
|
private placeTooltip;
|
|
2542
2593
|
/**
|
|
2543
|
-
*
|
|
2544
|
-
*
|
|
2545
|
-
*
|
|
2546
|
-
*
|
|
2547
|
-
*
|
|
2548
|
-
*
|
|
2594
|
+
* The Performance Group night strip for a two-tone seat.
|
|
2595
|
+
*
|
|
2596
|
+
* A marked seat is server-status blocked and stays unselectable — the mark is
|
|
2597
|
+
* the only place the buyer can learn that it is blocked by ONE night rather
|
|
2598
|
+
* than by all of them, and which one. '' for every other seat, and for a
|
|
2599
|
+
* group whose wrapper did not supply the nights.
|
|
2549
2600
|
*/
|
|
2550
|
-
|
|
2551
|
-
|
|
2552
|
-
private
|
|
2601
|
+
private nightStripFor;
|
|
2602
|
+
/** Close a tapped-open card. Safe to call when nothing is pinned. */
|
|
2603
|
+
private unpinTooltip;
|
|
2553
2604
|
private updateTooltip;
|
|
2605
|
+
/**
|
|
2606
|
+
* Push the wrapper's current seat marks at the renderer.
|
|
2607
|
+
*
|
|
2608
|
+
* PULLED from the seam rather than pushed into the widget, and called
|
|
2609
|
+
* immediately AFTER a status batch has been applied — the two must land on
|
|
2610
|
+
* the same tick, in that order, or a repaint from the status pass wipes the
|
|
2611
|
+
* two-tone paint. Labels are resolved here because only the controller knows
|
|
2612
|
+
* the label→id mapping, and the wrapper must never learn engine ids.
|
|
2613
|
+
*/
|
|
2614
|
+
private syncSeatMarks;
|
|
2554
2615
|
getSelection(): PickerSeat[];
|
|
2555
2616
|
/** Select free objects by engine id or public label. */
|
|
2556
2617
|
selectObjects(objects: string[]): PickerSeat[];
|
|
@@ -2558,8 +2619,19 @@ declare class SeatPicker implements GaPromptPicker {
|
|
|
2558
2619
|
deselectObjects(objects: string[]): void;
|
|
2559
2620
|
/** Clear every unheld selection. */
|
|
2560
2621
|
clearSelection(): void;
|
|
2622
|
+
/** @internal Display colour of the first sellable category. ASKED OF THE RENDERER: colourblind-safe mode remaps hues there and never touches the document. */ categoryLegendColor(): string;
|
|
2561
2623
|
/** @internal */ refreshAvailability(): Promise<void>;
|
|
2562
2624
|
/** @internal */ refreshPerformanceGroupComposition(): void;
|
|
2625
|
+
/**
|
|
2626
|
+
* @internal Adopt a hold this picker did not create.
|
|
2627
|
+
*
|
|
2628
|
+
* The Performance Group wrapper recovers an operation id from storage on
|
|
2629
|
+
* reload and learns the hold behind it BEFORE this picker's own
|
|
2630
|
+
* remembered-hold path could know one exists. Nothing happens when a hold is
|
|
2631
|
+
* already live — the two restore paths must not race each other into a
|
|
2632
|
+
* double resume.
|
|
2633
|
+
*/
|
|
2634
|
+
adoptRestoredHold(holdId: string): Promise<void>;
|
|
2563
2635
|
/** Select every selectable object in the named categories. */
|
|
2564
2636
|
selectCategories(categoryKeys: string[]): PickerSeat[];
|
|
2565
2637
|
/** Deselect every selected object in the named categories. */
|
|
@@ -2770,7 +2842,6 @@ declare class SeatPicker implements GaPromptPicker {
|
|
|
2770
2842
|
*/
|
|
2771
2843
|
private showAccessPanel;
|
|
2772
2844
|
private dismissAccessPanel;
|
|
2773
|
-
private accessCopy;
|
|
2774
2845
|
destroy(): void;
|
|
2775
2846
|
}
|
|
2776
2847
|
|
|
@@ -2787,6 +2858,8 @@ interface PerformanceGroupDescriptor {
|
|
|
2787
2858
|
timezone: string | null;
|
|
2788
2859
|
inventoryModelVersion: 2;
|
|
2789
2860
|
performanceCount: number;
|
|
2861
|
+
/** Present when the server versions the inclusion set. See {@link PerformanceGroupAvailability}. */
|
|
2862
|
+
revision?: string;
|
|
2790
2863
|
performances: Array<{
|
|
2791
2864
|
position: number;
|
|
2792
2865
|
eventKey: string;
|
|
@@ -2814,6 +2887,60 @@ interface PerformanceGroupOperationEvent {
|
|
|
2814
2887
|
state: PerformanceGroupOperationState;
|
|
2815
2888
|
decision: 'commit' | 'abort' | null;
|
|
2816
2889
|
}
|
|
2890
|
+
/**
|
|
2891
|
+
* What the wrapper needs to render §12's recovery wording without inventing
|
|
2892
|
+
* its own state machine. `pending` is inert-and-wait; `failed` is the terminal
|
|
2893
|
+
* state whose ABSENCE used to leave the picker aria-busy forever (H7).
|
|
2894
|
+
*/
|
|
2895
|
+
type PerformanceGroupRecoveryState = {
|
|
2896
|
+
kind: 'idle';
|
|
2897
|
+
} | {
|
|
2898
|
+
kind: 'pending';
|
|
2899
|
+
operationId: string;
|
|
2900
|
+
phase: PerformanceGroupOperationState | 'unknown';
|
|
2901
|
+
/** True once the recovery has run long enough to owe the buyer an explanation. */
|
|
2902
|
+
longRunning: boolean;
|
|
2903
|
+
reference: string;
|
|
2904
|
+
} | {
|
|
2905
|
+
kind: 'failed';
|
|
2906
|
+
operationId: string;
|
|
2907
|
+
reference: string;
|
|
2908
|
+
reason: 'deadline' | 'request_failed' | 'session_adopt_failed';
|
|
2909
|
+
/** False when the same operation can no longer be polled (adopt failure). */
|
|
2910
|
+
retryable: boolean;
|
|
2911
|
+
};
|
|
2912
|
+
/** Group-level sale state, surfaced from `/objects` rather than dropped (M11). */
|
|
2913
|
+
interface PerformanceGroupAvailability {
|
|
2914
|
+
state: 'active' | 'closing' | 'closed' | 'archived';
|
|
2915
|
+
salesClosed: boolean;
|
|
2916
|
+
revision: string | null;
|
|
2917
|
+
/** True when this read's revision differs from the one first observed. */
|
|
2918
|
+
revisionChanged: boolean;
|
|
2919
|
+
/**
|
|
2920
|
+
* Same-seat only: for every seat that is free on SOME performances, the
|
|
2921
|
+
* eventKeys (chronological) where it is NOT. Seats free everywhere or nowhere
|
|
2922
|
+
* are absent, which is what keeps this small on a 20,000-seat chart.
|
|
2923
|
+
*
|
|
2924
|
+
* The collapsed `seats` map still says `blocked` for all of these — the map
|
|
2925
|
+
* must never offer a seat the buyer cannot have on every night. This is the
|
|
2926
|
+
* EXPLANATION for that "no", and nothing more.
|
|
2927
|
+
*/
|
|
2928
|
+
partial: Record<string, string[]>;
|
|
2929
|
+
/** How many seats the collapsed view reports as bookable on every night. */
|
|
2930
|
+
freeCount: number;
|
|
2931
|
+
/** How many are blocked on every night — i.e. not explained by `partial`. */
|
|
2932
|
+
blockedCount: number;
|
|
2933
|
+
}
|
|
2934
|
+
/** Raised instead of speaking to the network after `destroy()`. */
|
|
2935
|
+
declare class PerformanceGroupDestroyedError extends Error {
|
|
2936
|
+
constructor();
|
|
2937
|
+
}
|
|
2938
|
+
/**
|
|
2939
|
+
* The "short operation reference" §12 asks us to read out loud. It has to be
|
|
2940
|
+
* sayable over the phone, so it is the tail of the id, upper-cased — never the
|
|
2941
|
+
* whole `pghop_…` uuid.
|
|
2942
|
+
*/
|
|
2943
|
+
declare function shortOperationReference(operationId: string): string;
|
|
2817
2944
|
|
|
2818
2945
|
interface PerformanceGroupSeatAllocation {
|
|
2819
2946
|
eventKey: string;
|
|
@@ -2829,12 +2956,39 @@ interface PerformanceGroupCheckoutHandoff {
|
|
|
2829
2956
|
seatLabels: string[];
|
|
2830
2957
|
/** Present for per-performance selection. Prices and child hold IDs remain server-only. */
|
|
2831
2958
|
allocations?: PerformanceGroupSeatAllocation[];
|
|
2959
|
+
/**
|
|
2960
|
+
* `held` until the coordinator says otherwise; `booked` once the operation
|
|
2961
|
+
* settles that way. A group has no socket (§8), so this only ever becomes
|
|
2962
|
+
* `booked` through the transport's settlement watch.
|
|
2963
|
+
*/
|
|
2964
|
+
bookingState?: 'held' | 'booked';
|
|
2965
|
+
}
|
|
2966
|
+
/** What the wrapper is showing the buyer right now, for host telemetry. */
|
|
2967
|
+
interface PerformanceGroupStatusEvent {
|
|
2968
|
+
kind: 'idle' | 'pending' | 'recovery_failed' | 'sales_closed' | 'revision_changed';
|
|
2969
|
+
message: string;
|
|
2970
|
+
/** The short operation reference from §12, when one applies. */
|
|
2971
|
+
reference?: string;
|
|
2832
2972
|
}
|
|
2833
2973
|
interface PerformanceGroupPickerOptions {
|
|
2834
2974
|
container: string | HTMLElement;
|
|
2835
2975
|
performanceGroup: string;
|
|
2836
2976
|
/** `same_seat` renders one shared choice; `per_performance` renders one chart with date tabs. */
|
|
2837
2977
|
selectionMode?: PerformanceGroupSelectionMode;
|
|
2978
|
+
/**
|
|
2979
|
+
* Offer the buyer a way out of same-seat selection.
|
|
2980
|
+
*
|
|
2981
|
+
* Default false. A same-seat map hides a real outcome: a seat free on two of
|
|
2982
|
+
* three nights is shown as unavailable, and without this option the only
|
|
2983
|
+
* thing to say about it is "pick a different seat". With it on, the seat's
|
|
2984
|
+
* card and the "Your seats" pane carry one quiet action that re-opens the
|
|
2985
|
+
* same group as a night-by-night choice, in place.
|
|
2986
|
+
*
|
|
2987
|
+
* Requires `numberOfPlacesToSelect`, because per-performance selection is
|
|
2988
|
+
* defined by a party size and the switch must not land the buyer in a mode
|
|
2989
|
+
* the transport cannot submit.
|
|
2990
|
+
*/
|
|
2991
|
+
allowSelectionModeSwitch?: boolean;
|
|
2838
2992
|
apiBase?: string;
|
|
2839
2993
|
buyerAccessTokenProvider?: BuyerAccessTokenProvider;
|
|
2840
2994
|
buyerAccessToken?: string | BuyerAccessToken;
|
|
@@ -2871,8 +3025,16 @@ interface PerformanceGroupPickerOptions {
|
|
|
2871
3025
|
onHoldChange?: (handoff: PerformanceGroupCheckoutHandoff | null) => void;
|
|
2872
3026
|
onCheckout?: (handoff: PerformanceGroupCheckoutHandoff) => void;
|
|
2873
3027
|
onHoldExpired?: () => void;
|
|
3028
|
+
/**
|
|
3029
|
+
* The whole package is booked. Fires ONCE, from the settlement watch, with
|
|
3030
|
+
* the same handoff shape plus `bookingState: 'booked'`.
|
|
3031
|
+
*/
|
|
3032
|
+
onBooked?: (handoff: PerformanceGroupCheckoutHandoff) => void;
|
|
2874
3033
|
onAccessExpired?: (event: BuyerAccessExpiredEvent) => void;
|
|
2875
3034
|
onAccessUnavailable?: (event: BuyerAccessUnavailableEvent) => void;
|
|
3035
|
+
onStatusChange?: (event: PerformanceGroupStatusEvent) => void;
|
|
3036
|
+
/** Fired after the buyer moves between selection modes in place. */
|
|
3037
|
+
onSelectionModeChange?: (mode: PerformanceGroupSelectionMode) => void;
|
|
2876
3038
|
onError?: (error: unknown) => void;
|
|
2877
3039
|
}
|
|
2878
3040
|
declare class PerformanceGroupPicker {
|
|
@@ -2884,35 +3046,171 @@ declare class PerformanceGroupPicker {
|
|
|
2884
3046
|
private root;
|
|
2885
3047
|
private innerHost;
|
|
2886
3048
|
private tabsHost;
|
|
3049
|
+
private prevButton;
|
|
3050
|
+
private nextButton;
|
|
2887
3051
|
private heldSummary;
|
|
2888
3052
|
private live;
|
|
3053
|
+
private statusHost;
|
|
3054
|
+
private statusCopy;
|
|
3055
|
+
private statusAction;
|
|
2889
3056
|
private rendered;
|
|
2890
3057
|
private destroyed;
|
|
2891
3058
|
private continued;
|
|
2892
3059
|
private switchingPerformance;
|
|
2893
3060
|
private operationPending;
|
|
3061
|
+
private recovery;
|
|
3062
|
+
private availability;
|
|
2894
3063
|
private activePerformanceKey;
|
|
2895
3064
|
private readonly selectionsByEvent;
|
|
2896
3065
|
private readonly validByEvent;
|
|
2897
3066
|
private refreshingComposition;
|
|
2898
3067
|
private activeHandoff;
|
|
3068
|
+
private readonly panelId;
|
|
3069
|
+
private selectionModeValue;
|
|
3070
|
+
private progressHost;
|
|
3071
|
+
private legendHost;
|
|
3072
|
+
private paneHost;
|
|
3073
|
+
/** Labels pushed at the renderer on the last pull, so departures clear. */
|
|
3074
|
+
private markedLabels;
|
|
3075
|
+
private holdTicker;
|
|
3076
|
+
private switchingMode;
|
|
3077
|
+
/** Latched at the first `booked`, so the callback and the copy fire once. */
|
|
3078
|
+
private booked;
|
|
2899
3079
|
constructor(options: PerformanceGroupPickerOptions);
|
|
3080
|
+
/**
|
|
3081
|
+
* The mode the buyer is ACTUALLY in.
|
|
3082
|
+
*
|
|
3083
|
+
* Not `options.selectionMode`: with `allowSelectionModeSwitch` the buyer can
|
|
3084
|
+
* change it, and every derived surface — tabs, pane, submission state, the
|
|
3085
|
+
* handoff's `selectionMode` — has to follow the live value or the wrapper
|
|
3086
|
+
* starts describing a session that no longer exists.
|
|
3087
|
+
*/
|
|
3088
|
+
private get mode();
|
|
3089
|
+
get selectionMode(): PerformanceGroupSelectionMode;
|
|
2900
3090
|
get descriptor(): PerformanceGroupDescriptor | null;
|
|
2901
3091
|
get currentHold(): PerformanceGroupCheckoutHandoff | null;
|
|
2902
3092
|
render(): Promise<this>;
|
|
3093
|
+
/**
|
|
3094
|
+
* Everything around the map.
|
|
3095
|
+
*
|
|
3096
|
+
* Rebuilt wholesale when the buyer switches selection mode, because the
|
|
3097
|
+
* difference between the two modes is not a class on one element — the tab
|
|
3098
|
+
* bar appears, the summary and the map helper change what they claim, and the
|
|
3099
|
+
* "Your selection" pane changes what it is a list OF. Patching those in place
|
|
3100
|
+
* is how a surface ends up half-describing the mode it used to be in.
|
|
3101
|
+
*/
|
|
3102
|
+
private buildChrome;
|
|
3103
|
+
private mountPicker;
|
|
3104
|
+
private performanceCards;
|
|
3105
|
+
/** Chronological nights with the SAME date formatting the chrome uses. */
|
|
3106
|
+
private nights;
|
|
3107
|
+
/**
|
|
3108
|
+
* The marks the picker should be showing right now.
|
|
3109
|
+
*
|
|
3110
|
+
* Pulled by SeatPicker straight after it applies a status batch. Every label
|
|
3111
|
+
* currently in `partial` gets its mark; every label that has LEFT `partial`
|
|
3112
|
+
* since the last pull gets an explicit null, because `setSeatMarks` merges
|
|
3113
|
+
* and a dropped label would otherwise keep its two-tone paint forever.
|
|
3114
|
+
*/
|
|
3115
|
+
private seatMarks;
|
|
3116
|
+
/** Per-night picks for the picker's "Your seats" pane (per-performance). */
|
|
3117
|
+
private nightSummary;
|
|
3118
|
+
/**
|
|
3119
|
+
* The three-step strip. "Review" becomes current the moment a hold commits —
|
|
3120
|
+
* that is the only point at which there is something to review, and it is the
|
|
3121
|
+
* point the buyer most needs told that the seats are actually theirs.
|
|
3122
|
+
*/
|
|
3123
|
+
private syncProgress;
|
|
3124
|
+
/** The map's ONE availability key. Hidden with the map when the sale is shut. */
|
|
3125
|
+
private syncLegend;
|
|
3126
|
+
/**
|
|
3127
|
+
* The colour the "available" swatch has to match.
|
|
3128
|
+
*
|
|
3129
|
+
* Asked of the RENDERER, not the document: colourblind-safe mode remaps hues
|
|
3130
|
+
* inside the renderer and never touches `doc.categories[].color`, so reading
|
|
3131
|
+
* the document would print a key that disagrees with the map for exactly the
|
|
3132
|
+
* buyers who most depend on the key.
|
|
3133
|
+
*/
|
|
3134
|
+
private categoryColor;
|
|
3135
|
+
/**
|
|
3136
|
+
* "Your selection" — one line per performance, and a total ONLY once the
|
|
3137
|
+
* server has committed a hold and told us what it costs.
|
|
3138
|
+
*/
|
|
3139
|
+
private syncPane;
|
|
3140
|
+
/**
|
|
3141
|
+
* The package total, from the SERVER's own hold lines.
|
|
3142
|
+
*
|
|
3143
|
+
* Null until a hold commits. There is no browser-side per-performance price
|
|
3144
|
+
* for a group (the transport suppresses single-event pricing on purpose), so
|
|
3145
|
+
* anything computed before commit would be a quote we invented — and a quote
|
|
3146
|
+
* the buyer could reasonably hold us to.
|
|
3147
|
+
*/
|
|
3148
|
+
private heldTotal;
|
|
3149
|
+
/** One tick a second while a hold is live, so the countdown line is true. */
|
|
3150
|
+
private syncHoldTicker;
|
|
3151
|
+
/**
|
|
3152
|
+
* Re-open the same group in the other selection mode, in place.
|
|
3153
|
+
*
|
|
3154
|
+
* Refused while an operation is undecided or a hold exists: §12 forbids a
|
|
3155
|
+
* competing action over an outcome the coordinator still owns, and the
|
|
3156
|
+
* transport refuses too, so this is belt and braces on the same rule.
|
|
3157
|
+
*/
|
|
3158
|
+
private switchSelectionMode;
|
|
2903
3159
|
release(): Promise<void>;
|
|
2904
3160
|
close(): void;
|
|
2905
3161
|
destroy(): void;
|
|
3162
|
+
/**
|
|
3163
|
+
* Every buyer-facing string in this wrapper, through the shared catalog.
|
|
3164
|
+
*
|
|
3165
|
+
* A host `messages` entry still wins — it is checked first here AND it is
|
|
3166
|
+
* installed as a global override — so integrator copy keeps working while
|
|
3167
|
+
* the default is a real translation rather than a hard-coded English literal.
|
|
3168
|
+
*/
|
|
2906
3169
|
private copy;
|
|
2907
3170
|
private performanceTabs;
|
|
3171
|
+
private tabButtons;
|
|
3172
|
+
private tabKeydown;
|
|
3173
|
+
private stepPerformance;
|
|
2908
3174
|
private submissionState;
|
|
3175
|
+
/** §12: no second HOLD action while an outcome is unknown or sale is shut. */
|
|
3176
|
+
private holdBlocked;
|
|
2909
3177
|
private selectionChanged;
|
|
2910
3178
|
private selectionValidityChanged;
|
|
2911
3179
|
private refreshComposition;
|
|
2912
3180
|
private tabState;
|
|
2913
3181
|
private updateTabs;
|
|
2914
3182
|
private switchPerformance;
|
|
3183
|
+
/**
|
|
3184
|
+
* Lock without `inert`.
|
|
3185
|
+
*
|
|
3186
|
+
* `inert` removes the whole subtree from the a11y tree AND blurs whatever the
|
|
3187
|
+
* buyer had focused, so a screen-reader user mid-selection was dropped to the
|
|
3188
|
+
* top of the document with no announcement. `aria-disabled` plus a
|
|
3189
|
+
* pointer-events block keeps the focused seat where it is and readable, and
|
|
3190
|
+
* the status region below carries the reason.
|
|
3191
|
+
*/
|
|
3192
|
+
private setInteractionLocked;
|
|
3193
|
+
private announce;
|
|
3194
|
+
private showStatus;
|
|
3195
|
+
private clearStatus;
|
|
2915
3196
|
private operationChanged;
|
|
3197
|
+
/**
|
|
3198
|
+
* The package is booked.
|
|
3199
|
+
*
|
|
3200
|
+
* Everything that was true only while a hold was RUNNING stops: the clock,
|
|
3201
|
+
* the "held together · mm:ss" line, and the checkout the buyer has already
|
|
3202
|
+
* been through. What stays is the per-night summary — the answer to "what did
|
|
3203
|
+
* I actually buy?" is the last thing to take away at the moment it becomes
|
|
3204
|
+
* the only question left.
|
|
3205
|
+
*/
|
|
3206
|
+
private bookingSettled;
|
|
3207
|
+
/** The hold went away before it was booked — expiry, or an organizer release. */
|
|
3208
|
+
private holdLost;
|
|
3209
|
+
private recoveryChanged;
|
|
3210
|
+
private retryRecovery;
|
|
3211
|
+
private restoreOperation;
|
|
3212
|
+
private availabilityChanged;
|
|
3213
|
+
private reloadDescriptor;
|
|
2916
3214
|
private handoff;
|
|
2917
3215
|
private renderHeldAllocations;
|
|
2918
3216
|
private resetPerPerformanceSelection;
|
|
@@ -2959,4 +3257,4 @@ interface AttachPickerFrameOptions {
|
|
|
2959
3257
|
*/
|
|
2960
3258
|
declare function attachPickerFrame(iframe: HTMLIFrameElement, opts?: AttachPickerFrameOptions): () => void;
|
|
2961
3259
|
|
|
2962
|
-
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 PerformanceGroupCheckoutHandoff, type PerformanceGroupDescriptor, type PerformanceGroupHold, type PerformanceGroupHoldAllocation, type PerformanceGroupOperationEvent, type PerformanceGroupOperationState, PerformanceGroupPicker, type PerformanceGroupPickerOptions, type PerformanceGroupSeatAllocation, type PerformanceGroupSelectionMode, 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 };
|
|
3260
|
+
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 PerformanceGroupAvailability, type PerformanceGroupCheckoutHandoff, type PerformanceGroupDescriptor, PerformanceGroupDestroyedError, type PerformanceGroupHold, type PerformanceGroupHoldAllocation, type PerformanceGroupOperationEvent, type PerformanceGroupOperationState, PerformanceGroupPicker, type PerformanceGroupPickerOptions, type PerformanceGroupRecoveryState, type PerformanceGroupSeatAllocation, type PerformanceGroupSelectionMode, type PerformanceGroupStatusEvent, 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, shortOperationReference, ticketOfferPrices };
|