@seatlayer/js 0.68.0 → 0.69.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 +107 -25
- package/dist/index.d.cts +105 -2
- package/dist/index.d.ts +105 -2
- package/dist/index.js +106 -24
- package/package.json +2 -2
package/dist/index.d.cts
CHANGED
|
@@ -615,6 +615,9 @@ interface GaPromptPicker {
|
|
|
615
615
|
onGAPromptHook?: ((prompt: GAPromptRequest) => boolean | void) | undefined;
|
|
616
616
|
}
|
|
617
617
|
|
|
618
|
+
type SeatingChartBuyerView = 'map' | 'venue3d';
|
|
619
|
+
type SeatingChartNavigationMode = 'orbit' | 'pan';
|
|
620
|
+
|
|
618
621
|
/**
|
|
619
622
|
* SeatingChart — the embeddable buyer picker.
|
|
620
623
|
*
|
|
@@ -681,6 +684,10 @@ interface SeatingChartPickerState {
|
|
|
681
684
|
bestAvailable: boolean;
|
|
682
685
|
accessibilityFilter: boolean;
|
|
683
686
|
limitedViewFilter: boolean;
|
|
687
|
+
/** Real lazy-loaded WebGL venue view, not the retired isometric projection. */
|
|
688
|
+
venue3d: boolean;
|
|
689
|
+
/** Authored or chart-derived view-from-seat panorama. */
|
|
690
|
+
seatView: boolean;
|
|
684
691
|
};
|
|
685
692
|
catalog: {
|
|
686
693
|
categories: Array<{
|
|
@@ -723,6 +730,9 @@ interface SeatingChartPickerState {
|
|
|
723
730
|
focusedSectionId: string | null;
|
|
724
731
|
focusedSection: SectionSummary | null;
|
|
725
732
|
viewMode: RendererViewMode;
|
|
733
|
+
buyerView: SeatingChartBuyerView;
|
|
734
|
+
view3dTargetSeatId: string | null;
|
|
735
|
+
view3dNavigationMode: SeatingChartNavigationMode;
|
|
726
736
|
colorblindSafe: boolean;
|
|
727
737
|
categoryFilter: string[] | null;
|
|
728
738
|
accessibilityFilter: string[] | null;
|
|
@@ -820,6 +830,12 @@ interface SeatingChartOptions {
|
|
|
820
830
|
* real 3D venue view (`setBuyerView('venue3d')`); they remain accepted for
|
|
821
831
|
* source compatibility and will be removed in the next major. Use `'flat'`. */
|
|
822
832
|
initialView?: RendererViewMode;
|
|
833
|
+
/** Offer the real, lazy-loaded interactive venue view. Default true. */
|
|
834
|
+
enable3D?: boolean;
|
|
835
|
+
/** Offer authored/generated view-from-seat inspection. Default true. */
|
|
836
|
+
enableSeatView?: boolean;
|
|
837
|
+
/** Optional device-specific ceiling for offering the venue WebGL scene. */
|
|
838
|
+
max3DSeats?: number;
|
|
823
839
|
/**
|
|
824
840
|
* Built-in seat tooltip on mouse hover (seat · category · price · status).
|
|
825
841
|
* Rendered inside the widget so every host gets it; default true. Turn off
|
|
@@ -906,8 +922,13 @@ interface SeatingChartOptions {
|
|
|
906
922
|
onSalesClosed?: () => void;
|
|
907
923
|
/** A programmatic/native map-control action changed serializable map state. */
|
|
908
924
|
onMapStateChange?: () => void;
|
|
909
|
-
/**
|
|
925
|
+
/** rAF-coalesced camera-frame signal for in-page overlays; not native state. */
|
|
910
926
|
onViewChange?: () => void;
|
|
927
|
+
/** Real buyer-view transitions and 3D camera targets. */
|
|
928
|
+
onBuyerViewChange?: (state: {
|
|
929
|
+
view: SeatingChartBuyerView;
|
|
930
|
+
seatId?: string;
|
|
931
|
+
}) => void;
|
|
911
932
|
/**
|
|
912
933
|
* Non-blocking, localized selection advice — currently the orphan-seat hint
|
|
913
934
|
* (the selection would strand a single free seat between taken neighbors).
|
|
@@ -922,6 +943,13 @@ declare class SeatingChart {
|
|
|
922
943
|
readonly publicKey?: string;
|
|
923
944
|
private mount;
|
|
924
945
|
private hostEl;
|
|
946
|
+
/**
|
|
947
|
+
* Native hosts can render a Flutter/Swift/Kotlin decision surface above this
|
|
948
|
+
* DOM tree. UIKit platform views still participate in hit testing beneath a
|
|
949
|
+
* composited native overlay, so the runtime must be able to make its own DOM
|
|
950
|
+
* inert rather than relying on the host's visual stacking alone.
|
|
951
|
+
*/
|
|
952
|
+
private interactionEnabled_;
|
|
925
953
|
/** The organizer's language for this event, learned when the chart resolves. */
|
|
926
954
|
private eventLocale;
|
|
927
955
|
private rendered;
|
|
@@ -933,6 +961,8 @@ declare class SeatingChart {
|
|
|
933
961
|
private accessibilityFilter_;
|
|
934
962
|
private hideLimitedView_;
|
|
935
963
|
private focusedSection_;
|
|
964
|
+
/** Last rung already exposed to native chrome; raw camera frames stay in-canvas. */
|
|
965
|
+
private lastReportedViewRung_;
|
|
936
966
|
private accessState_;
|
|
937
967
|
private tipEl;
|
|
938
968
|
private tipPos;
|
|
@@ -940,8 +970,19 @@ declare class SeatingChart {
|
|
|
940
970
|
/** Null for the ordinary public chart — the tokenless path is untouched. */
|
|
941
971
|
private readonly access;
|
|
942
972
|
private readonly api;
|
|
973
|
+
private readonly apiBase;
|
|
974
|
+
private readonly buyerAssetUrls;
|
|
975
|
+
private readonly immersive;
|
|
943
976
|
private realtime;
|
|
944
977
|
constructor(options: SeatingChartOptions);
|
|
978
|
+
/**
|
|
979
|
+
* Camera x/y/scale is renderer-local and deliberately absent from the native
|
|
980
|
+
* picker snapshot. Keep pan and pinch frames on the canvas; only a semantic
|
|
981
|
+
* rung transition needs to wake native chrome.
|
|
982
|
+
*/
|
|
983
|
+
private handleViewChange;
|
|
984
|
+
/** Record the current rung before publishing an explicit state mutation. */
|
|
985
|
+
private notifyMapStateChange;
|
|
945
986
|
/** Fetch the chart, mount the renderer, seed statuses and go live. Idempotent. */
|
|
946
987
|
render(): Promise<this>;
|
|
947
988
|
/**
|
|
@@ -1125,6 +1166,28 @@ declare class SeatingChart {
|
|
|
1125
1166
|
zoomOut(): void;
|
|
1126
1167
|
/** Reset the camera so the whole chart fits the container. */
|
|
1127
1168
|
zoomToFit(): void;
|
|
1169
|
+
/** Enter or leave the same real lazy-loaded venue scene as SeatPicker. */
|
|
1170
|
+
setBuyerView(view: SeatingChartBuyerView, options?: {
|
|
1171
|
+
flyToSeatId?: string;
|
|
1172
|
+
resetView?: boolean;
|
|
1173
|
+
}): Promise<void>;
|
|
1174
|
+
getBuyerView(): SeatingChartBuyerView;
|
|
1175
|
+
/** Open an authored or chart-derived 360° view for one physical seat. */
|
|
1176
|
+
openSeatView(seatId: string): Promise<void>;
|
|
1177
|
+
/** Explicit Rotate / Move control for native and custom picker chrome. */
|
|
1178
|
+
setVenue3DNavigationMode(mode: SeatingChartNavigationMode): void;
|
|
1179
|
+
/**
|
|
1180
|
+
* Enable or suppress all buyer input inside this chart without unmounting it.
|
|
1181
|
+
*
|
|
1182
|
+
* Native SDKs use this while a native confirmation, quantity prompt, loading
|
|
1183
|
+
* surface or error surface owns the chart area. Disabling input in the DOM is
|
|
1184
|
+
* intentional: an iOS WKWebView can receive the same physical tap beneath a
|
|
1185
|
+
* Flutter overlay even when the Flutter widget is wrapped in IgnorePointer.
|
|
1186
|
+
* Programmatic bridge commands continue to work, so a prompt can still open
|
|
1187
|
+
* view-from-seat or 3D and then re-enable interaction after the handoff.
|
|
1188
|
+
*/
|
|
1189
|
+
setInteractionEnabled(enabled: boolean): void;
|
|
1190
|
+
private applyInteractionState;
|
|
1128
1191
|
/** Release the current hold (if any). No-op when nothing is held. */
|
|
1129
1192
|
release(): Promise<void>;
|
|
1130
1193
|
/** Release selected labels from the current hold while keeping the remainder. */
|
|
@@ -2241,9 +2304,11 @@ declare class SeatPicker implements GaPromptPicker {
|
|
|
2241
2304
|
private tipPos;
|
|
2242
2305
|
/** True while a TAPPED seat card is held open (touch has no hover to lose). */
|
|
2243
2306
|
private tipPinned;
|
|
2307
|
+
private tipMarkedHoverLabel;
|
|
2244
2308
|
private lastPointerType;
|
|
2245
2309
|
private confirmEl;
|
|
2246
2310
|
private confirmSeat;
|
|
2311
|
+
private suppressConfirmationSeatId;
|
|
2247
2312
|
private tableDialogEl;
|
|
2248
2313
|
private tableDialog;
|
|
2249
2314
|
private tableDialogHeld;
|
|
@@ -2563,6 +2628,26 @@ declare class SeatPicker implements GaPromptPicker {
|
|
|
2563
2628
|
* the sheet head (narrow). Never floats over the seats at the tap point.
|
|
2564
2629
|
*/
|
|
2565
2630
|
private renderSectionCard;
|
|
2631
|
+
/**
|
|
2632
|
+
* Flag the root while the phone locator is docked to the map's bottom edge,
|
|
2633
|
+
* so the map's own bottom-corner controls lift above it. The bar owns that
|
|
2634
|
+
* edge outright — without this the minimap/accessibility cluster and the
|
|
2635
|
+
* zoom/fit/eye stack sit underneath it and only their rounded corners show.
|
|
2636
|
+
*/
|
|
2637
|
+
private syncLocatorDock;
|
|
2638
|
+
/**
|
|
2639
|
+
* THE COUNT IS NEVER TRUNCATED. At 390px the strip carries a dot, the section
|
|
2640
|
+
* name, the seats-left count, prev/next, and a "‹ Overview" chip; when that
|
|
2641
|
+
* ran long the count was the flex item that shrank, and "73 seats left"
|
|
2642
|
+
* clipped to "7" — not a smaller answer but a WRONG one, and one the buyer
|
|
2643
|
+
* has no way to tell is wrong. The name is the answer to "where am I" and
|
|
2644
|
+
* keeps its room; the count yields, in order: full text → short form
|
|
2645
|
+
* ("7 left") → gone. Gone is honest; a clipped number is not.
|
|
2646
|
+
*
|
|
2647
|
+
* Re-run on every real host resize, so a rotation or a resized embed that
|
|
2648
|
+
* makes room gives the long form back.
|
|
2649
|
+
*/
|
|
2650
|
+
private fitSectionStripCount;
|
|
2566
2651
|
/** Collapse the expanded card to its slim pill (seat-picking started). */
|
|
2567
2652
|
private collapseSectionCard;
|
|
2568
2653
|
/**
|
|
@@ -2749,8 +2834,8 @@ declare class SeatPicker implements GaPromptPicker {
|
|
|
2749
2834
|
* group whose wrapper did not supply the nights.
|
|
2750
2835
|
*/
|
|
2751
2836
|
private nightStripFor;
|
|
2752
|
-
/** Close a tapped-open card. Safe to call when nothing is pinned. */
|
|
2753
2837
|
private unpinTooltip;
|
|
2838
|
+
private handleMapPointerDown;
|
|
2754
2839
|
private updateTooltip;
|
|
2755
2840
|
/**
|
|
2756
2841
|
* Push the wrapper's current seat marks at the renderer.
|
|
@@ -2765,6 +2850,7 @@ declare class SeatPicker implements GaPromptPicker {
|
|
|
2765
2850
|
getSelection(): PickerSeat[];
|
|
2766
2851
|
/** Select free objects by engine id or public label. */
|
|
2767
2852
|
selectObjects(objects: string[]): PickerSeat[];
|
|
2853
|
+
selectObjectsWithoutConfirmation(objects: string[]): PickerSeat[];
|
|
2768
2854
|
/** Deselect objects by engine id or public label. */
|
|
2769
2855
|
deselectObjects(objects: string[]): void;
|
|
2770
2856
|
/** Clear every unheld selection. */
|
|
@@ -3008,6 +3094,7 @@ interface PerformanceGroupDescriptor {
|
|
|
3008
3094
|
venue: string;
|
|
3009
3095
|
timezone: string | null;
|
|
3010
3096
|
inventoryModelVersion: 2;
|
|
3097
|
+
inclusionMode?: 'fixed' | 'flexible_dates';
|
|
3011
3098
|
performanceCount: number;
|
|
3012
3099
|
/** Present when the server versions the inclusion set. See {@link PerformanceGroupAvailability}. */
|
|
3013
3100
|
revision?: string;
|
|
@@ -3103,6 +3190,8 @@ interface PerformanceGroupCheckoutHandoff {
|
|
|
3103
3190
|
expiresAt: number;
|
|
3104
3191
|
performanceGroup: PerformanceGroupDescriptor;
|
|
3105
3192
|
selectionMode: PerformanceGroupSelectionMode;
|
|
3193
|
+
/** Performances actually included in this hold (all members for fixed groups). */
|
|
3194
|
+
performanceKeys: string[];
|
|
3106
3195
|
/** Logical booking identities only. Re-inspect the opaque hold on your server. */
|
|
3107
3196
|
seatLabels: string[];
|
|
3108
3197
|
/** Present for per-performance selection. Prices and child hold IDs remain server-only. */
|
|
@@ -3159,6 +3248,8 @@ interface PerformanceGroupPickerOptions {
|
|
|
3159
3248
|
view: SeatPickerBuyerView;
|
|
3160
3249
|
seatId?: string;
|
|
3161
3250
|
}) => void;
|
|
3251
|
+
/** Receives the underlying chart journey with Performance Group identity attached. */
|
|
3252
|
+
onAnalytics?: (event: string, props: Record<string, unknown>) => void;
|
|
3162
3253
|
hideBadge?: boolean;
|
|
3163
3254
|
theme?: SeatPickerTheme;
|
|
3164
3255
|
holdTtlMs?: number;
|
|
@@ -3221,6 +3312,12 @@ declare class PerformanceGroupPicker {
|
|
|
3221
3312
|
private progressHost;
|
|
3222
3313
|
private legendHost;
|
|
3223
3314
|
private paneHost;
|
|
3315
|
+
private datesSummaryHost;
|
|
3316
|
+
private datesCardsHost;
|
|
3317
|
+
private resettingFlexibleSelection;
|
|
3318
|
+
private selectingPartialSeat;
|
|
3319
|
+
/** The free dates advertised by a two-tone seat before the chart is narrowed. */
|
|
3320
|
+
private readonly partialSeatDates;
|
|
3224
3321
|
/** Labels pushed at the renderer on the last pull, so departures clear. */
|
|
3225
3322
|
private markedLabels;
|
|
3226
3323
|
private holdTicker;
|
|
@@ -3315,6 +3412,12 @@ declare class PerformanceGroupPicker {
|
|
|
3315
3412
|
* the buyer could reasonably hold us to.
|
|
3316
3413
|
*/
|
|
3317
3414
|
private heldTotal;
|
|
3415
|
+
private includedPerformances;
|
|
3416
|
+
/** Keep the persistent date promise aligned with the subset used by HOLD. */
|
|
3417
|
+
private syncIncludedDates;
|
|
3418
|
+
/** Turn one two-tone seat into a normal selection without changing charts. */
|
|
3419
|
+
private selectPartialSeat;
|
|
3420
|
+
private applySeatDates;
|
|
3318
3421
|
/** One tick a second while a hold is live, so the countdown line is true. */
|
|
3319
3422
|
private syncHoldTicker;
|
|
3320
3423
|
/**
|
package/dist/index.d.ts
CHANGED
|
@@ -615,6 +615,9 @@ interface GaPromptPicker {
|
|
|
615
615
|
onGAPromptHook?: ((prompt: GAPromptRequest) => boolean | void) | undefined;
|
|
616
616
|
}
|
|
617
617
|
|
|
618
|
+
type SeatingChartBuyerView = 'map' | 'venue3d';
|
|
619
|
+
type SeatingChartNavigationMode = 'orbit' | 'pan';
|
|
620
|
+
|
|
618
621
|
/**
|
|
619
622
|
* SeatingChart — the embeddable buyer picker.
|
|
620
623
|
*
|
|
@@ -681,6 +684,10 @@ interface SeatingChartPickerState {
|
|
|
681
684
|
bestAvailable: boolean;
|
|
682
685
|
accessibilityFilter: boolean;
|
|
683
686
|
limitedViewFilter: boolean;
|
|
687
|
+
/** Real lazy-loaded WebGL venue view, not the retired isometric projection. */
|
|
688
|
+
venue3d: boolean;
|
|
689
|
+
/** Authored or chart-derived view-from-seat panorama. */
|
|
690
|
+
seatView: boolean;
|
|
684
691
|
};
|
|
685
692
|
catalog: {
|
|
686
693
|
categories: Array<{
|
|
@@ -723,6 +730,9 @@ interface SeatingChartPickerState {
|
|
|
723
730
|
focusedSectionId: string | null;
|
|
724
731
|
focusedSection: SectionSummary | null;
|
|
725
732
|
viewMode: RendererViewMode;
|
|
733
|
+
buyerView: SeatingChartBuyerView;
|
|
734
|
+
view3dTargetSeatId: string | null;
|
|
735
|
+
view3dNavigationMode: SeatingChartNavigationMode;
|
|
726
736
|
colorblindSafe: boolean;
|
|
727
737
|
categoryFilter: string[] | null;
|
|
728
738
|
accessibilityFilter: string[] | null;
|
|
@@ -820,6 +830,12 @@ interface SeatingChartOptions {
|
|
|
820
830
|
* real 3D venue view (`setBuyerView('venue3d')`); they remain accepted for
|
|
821
831
|
* source compatibility and will be removed in the next major. Use `'flat'`. */
|
|
822
832
|
initialView?: RendererViewMode;
|
|
833
|
+
/** Offer the real, lazy-loaded interactive venue view. Default true. */
|
|
834
|
+
enable3D?: boolean;
|
|
835
|
+
/** Offer authored/generated view-from-seat inspection. Default true. */
|
|
836
|
+
enableSeatView?: boolean;
|
|
837
|
+
/** Optional device-specific ceiling for offering the venue WebGL scene. */
|
|
838
|
+
max3DSeats?: number;
|
|
823
839
|
/**
|
|
824
840
|
* Built-in seat tooltip on mouse hover (seat · category · price · status).
|
|
825
841
|
* Rendered inside the widget so every host gets it; default true. Turn off
|
|
@@ -906,8 +922,13 @@ interface SeatingChartOptions {
|
|
|
906
922
|
onSalesClosed?: () => void;
|
|
907
923
|
/** A programmatic/native map-control action changed serializable map state. */
|
|
908
924
|
onMapStateChange?: () => void;
|
|
909
|
-
/**
|
|
925
|
+
/** rAF-coalesced camera-frame signal for in-page overlays; not native state. */
|
|
910
926
|
onViewChange?: () => void;
|
|
927
|
+
/** Real buyer-view transitions and 3D camera targets. */
|
|
928
|
+
onBuyerViewChange?: (state: {
|
|
929
|
+
view: SeatingChartBuyerView;
|
|
930
|
+
seatId?: string;
|
|
931
|
+
}) => void;
|
|
911
932
|
/**
|
|
912
933
|
* Non-blocking, localized selection advice — currently the orphan-seat hint
|
|
913
934
|
* (the selection would strand a single free seat between taken neighbors).
|
|
@@ -922,6 +943,13 @@ declare class SeatingChart {
|
|
|
922
943
|
readonly publicKey?: string;
|
|
923
944
|
private mount;
|
|
924
945
|
private hostEl;
|
|
946
|
+
/**
|
|
947
|
+
* Native hosts can render a Flutter/Swift/Kotlin decision surface above this
|
|
948
|
+
* DOM tree. UIKit platform views still participate in hit testing beneath a
|
|
949
|
+
* composited native overlay, so the runtime must be able to make its own DOM
|
|
950
|
+
* inert rather than relying on the host's visual stacking alone.
|
|
951
|
+
*/
|
|
952
|
+
private interactionEnabled_;
|
|
925
953
|
/** The organizer's language for this event, learned when the chart resolves. */
|
|
926
954
|
private eventLocale;
|
|
927
955
|
private rendered;
|
|
@@ -933,6 +961,8 @@ declare class SeatingChart {
|
|
|
933
961
|
private accessibilityFilter_;
|
|
934
962
|
private hideLimitedView_;
|
|
935
963
|
private focusedSection_;
|
|
964
|
+
/** Last rung already exposed to native chrome; raw camera frames stay in-canvas. */
|
|
965
|
+
private lastReportedViewRung_;
|
|
936
966
|
private accessState_;
|
|
937
967
|
private tipEl;
|
|
938
968
|
private tipPos;
|
|
@@ -940,8 +970,19 @@ declare class SeatingChart {
|
|
|
940
970
|
/** Null for the ordinary public chart — the tokenless path is untouched. */
|
|
941
971
|
private readonly access;
|
|
942
972
|
private readonly api;
|
|
973
|
+
private readonly apiBase;
|
|
974
|
+
private readonly buyerAssetUrls;
|
|
975
|
+
private readonly immersive;
|
|
943
976
|
private realtime;
|
|
944
977
|
constructor(options: SeatingChartOptions);
|
|
978
|
+
/**
|
|
979
|
+
* Camera x/y/scale is renderer-local and deliberately absent from the native
|
|
980
|
+
* picker snapshot. Keep pan and pinch frames on the canvas; only a semantic
|
|
981
|
+
* rung transition needs to wake native chrome.
|
|
982
|
+
*/
|
|
983
|
+
private handleViewChange;
|
|
984
|
+
/** Record the current rung before publishing an explicit state mutation. */
|
|
985
|
+
private notifyMapStateChange;
|
|
945
986
|
/** Fetch the chart, mount the renderer, seed statuses and go live. Idempotent. */
|
|
946
987
|
render(): Promise<this>;
|
|
947
988
|
/**
|
|
@@ -1125,6 +1166,28 @@ declare class SeatingChart {
|
|
|
1125
1166
|
zoomOut(): void;
|
|
1126
1167
|
/** Reset the camera so the whole chart fits the container. */
|
|
1127
1168
|
zoomToFit(): void;
|
|
1169
|
+
/** Enter or leave the same real lazy-loaded venue scene as SeatPicker. */
|
|
1170
|
+
setBuyerView(view: SeatingChartBuyerView, options?: {
|
|
1171
|
+
flyToSeatId?: string;
|
|
1172
|
+
resetView?: boolean;
|
|
1173
|
+
}): Promise<void>;
|
|
1174
|
+
getBuyerView(): SeatingChartBuyerView;
|
|
1175
|
+
/** Open an authored or chart-derived 360° view for one physical seat. */
|
|
1176
|
+
openSeatView(seatId: string): Promise<void>;
|
|
1177
|
+
/** Explicit Rotate / Move control for native and custom picker chrome. */
|
|
1178
|
+
setVenue3DNavigationMode(mode: SeatingChartNavigationMode): void;
|
|
1179
|
+
/**
|
|
1180
|
+
* Enable or suppress all buyer input inside this chart without unmounting it.
|
|
1181
|
+
*
|
|
1182
|
+
* Native SDKs use this while a native confirmation, quantity prompt, loading
|
|
1183
|
+
* surface or error surface owns the chart area. Disabling input in the DOM is
|
|
1184
|
+
* intentional: an iOS WKWebView can receive the same physical tap beneath a
|
|
1185
|
+
* Flutter overlay even when the Flutter widget is wrapped in IgnorePointer.
|
|
1186
|
+
* Programmatic bridge commands continue to work, so a prompt can still open
|
|
1187
|
+
* view-from-seat or 3D and then re-enable interaction after the handoff.
|
|
1188
|
+
*/
|
|
1189
|
+
setInteractionEnabled(enabled: boolean): void;
|
|
1190
|
+
private applyInteractionState;
|
|
1128
1191
|
/** Release the current hold (if any). No-op when nothing is held. */
|
|
1129
1192
|
release(): Promise<void>;
|
|
1130
1193
|
/** Release selected labels from the current hold while keeping the remainder. */
|
|
@@ -2241,9 +2304,11 @@ declare class SeatPicker implements GaPromptPicker {
|
|
|
2241
2304
|
private tipPos;
|
|
2242
2305
|
/** True while a TAPPED seat card is held open (touch has no hover to lose). */
|
|
2243
2306
|
private tipPinned;
|
|
2307
|
+
private tipMarkedHoverLabel;
|
|
2244
2308
|
private lastPointerType;
|
|
2245
2309
|
private confirmEl;
|
|
2246
2310
|
private confirmSeat;
|
|
2311
|
+
private suppressConfirmationSeatId;
|
|
2247
2312
|
private tableDialogEl;
|
|
2248
2313
|
private tableDialog;
|
|
2249
2314
|
private tableDialogHeld;
|
|
@@ -2563,6 +2628,26 @@ declare class SeatPicker implements GaPromptPicker {
|
|
|
2563
2628
|
* the sheet head (narrow). Never floats over the seats at the tap point.
|
|
2564
2629
|
*/
|
|
2565
2630
|
private renderSectionCard;
|
|
2631
|
+
/**
|
|
2632
|
+
* Flag the root while the phone locator is docked to the map's bottom edge,
|
|
2633
|
+
* so the map's own bottom-corner controls lift above it. The bar owns that
|
|
2634
|
+
* edge outright — without this the minimap/accessibility cluster and the
|
|
2635
|
+
* zoom/fit/eye stack sit underneath it and only their rounded corners show.
|
|
2636
|
+
*/
|
|
2637
|
+
private syncLocatorDock;
|
|
2638
|
+
/**
|
|
2639
|
+
* THE COUNT IS NEVER TRUNCATED. At 390px the strip carries a dot, the section
|
|
2640
|
+
* name, the seats-left count, prev/next, and a "‹ Overview" chip; when that
|
|
2641
|
+
* ran long the count was the flex item that shrank, and "73 seats left"
|
|
2642
|
+
* clipped to "7" — not a smaller answer but a WRONG one, and one the buyer
|
|
2643
|
+
* has no way to tell is wrong. The name is the answer to "where am I" and
|
|
2644
|
+
* keeps its room; the count yields, in order: full text → short form
|
|
2645
|
+
* ("7 left") → gone. Gone is honest; a clipped number is not.
|
|
2646
|
+
*
|
|
2647
|
+
* Re-run on every real host resize, so a rotation or a resized embed that
|
|
2648
|
+
* makes room gives the long form back.
|
|
2649
|
+
*/
|
|
2650
|
+
private fitSectionStripCount;
|
|
2566
2651
|
/** Collapse the expanded card to its slim pill (seat-picking started). */
|
|
2567
2652
|
private collapseSectionCard;
|
|
2568
2653
|
/**
|
|
@@ -2749,8 +2834,8 @@ declare class SeatPicker implements GaPromptPicker {
|
|
|
2749
2834
|
* group whose wrapper did not supply the nights.
|
|
2750
2835
|
*/
|
|
2751
2836
|
private nightStripFor;
|
|
2752
|
-
/** Close a tapped-open card. Safe to call when nothing is pinned. */
|
|
2753
2837
|
private unpinTooltip;
|
|
2838
|
+
private handleMapPointerDown;
|
|
2754
2839
|
private updateTooltip;
|
|
2755
2840
|
/**
|
|
2756
2841
|
* Push the wrapper's current seat marks at the renderer.
|
|
@@ -2765,6 +2850,7 @@ declare class SeatPicker implements GaPromptPicker {
|
|
|
2765
2850
|
getSelection(): PickerSeat[];
|
|
2766
2851
|
/** Select free objects by engine id or public label. */
|
|
2767
2852
|
selectObjects(objects: string[]): PickerSeat[];
|
|
2853
|
+
selectObjectsWithoutConfirmation(objects: string[]): PickerSeat[];
|
|
2768
2854
|
/** Deselect objects by engine id or public label. */
|
|
2769
2855
|
deselectObjects(objects: string[]): void;
|
|
2770
2856
|
/** Clear every unheld selection. */
|
|
@@ -3008,6 +3094,7 @@ interface PerformanceGroupDescriptor {
|
|
|
3008
3094
|
venue: string;
|
|
3009
3095
|
timezone: string | null;
|
|
3010
3096
|
inventoryModelVersion: 2;
|
|
3097
|
+
inclusionMode?: 'fixed' | 'flexible_dates';
|
|
3011
3098
|
performanceCount: number;
|
|
3012
3099
|
/** Present when the server versions the inclusion set. See {@link PerformanceGroupAvailability}. */
|
|
3013
3100
|
revision?: string;
|
|
@@ -3103,6 +3190,8 @@ interface PerformanceGroupCheckoutHandoff {
|
|
|
3103
3190
|
expiresAt: number;
|
|
3104
3191
|
performanceGroup: PerformanceGroupDescriptor;
|
|
3105
3192
|
selectionMode: PerformanceGroupSelectionMode;
|
|
3193
|
+
/** Performances actually included in this hold (all members for fixed groups). */
|
|
3194
|
+
performanceKeys: string[];
|
|
3106
3195
|
/** Logical booking identities only. Re-inspect the opaque hold on your server. */
|
|
3107
3196
|
seatLabels: string[];
|
|
3108
3197
|
/** Present for per-performance selection. Prices and child hold IDs remain server-only. */
|
|
@@ -3159,6 +3248,8 @@ interface PerformanceGroupPickerOptions {
|
|
|
3159
3248
|
view: SeatPickerBuyerView;
|
|
3160
3249
|
seatId?: string;
|
|
3161
3250
|
}) => void;
|
|
3251
|
+
/** Receives the underlying chart journey with Performance Group identity attached. */
|
|
3252
|
+
onAnalytics?: (event: string, props: Record<string, unknown>) => void;
|
|
3162
3253
|
hideBadge?: boolean;
|
|
3163
3254
|
theme?: SeatPickerTheme;
|
|
3164
3255
|
holdTtlMs?: number;
|
|
@@ -3221,6 +3312,12 @@ declare class PerformanceGroupPicker {
|
|
|
3221
3312
|
private progressHost;
|
|
3222
3313
|
private legendHost;
|
|
3223
3314
|
private paneHost;
|
|
3315
|
+
private datesSummaryHost;
|
|
3316
|
+
private datesCardsHost;
|
|
3317
|
+
private resettingFlexibleSelection;
|
|
3318
|
+
private selectingPartialSeat;
|
|
3319
|
+
/** The free dates advertised by a two-tone seat before the chart is narrowed. */
|
|
3320
|
+
private readonly partialSeatDates;
|
|
3224
3321
|
/** Labels pushed at the renderer on the last pull, so departures clear. */
|
|
3225
3322
|
private markedLabels;
|
|
3226
3323
|
private holdTicker;
|
|
@@ -3315,6 +3412,12 @@ declare class PerformanceGroupPicker {
|
|
|
3315
3412
|
* the buyer could reasonably hold us to.
|
|
3316
3413
|
*/
|
|
3317
3414
|
private heldTotal;
|
|
3415
|
+
private includedPerformances;
|
|
3416
|
+
/** Keep the persistent date promise aligned with the subset used by HOLD. */
|
|
3417
|
+
private syncIncludedDates;
|
|
3418
|
+
/** Turn one two-tone seat into a normal selection without changing charts. */
|
|
3419
|
+
private selectPartialSeat;
|
|
3420
|
+
private applySeatDates;
|
|
3318
3421
|
/** One tick a second while a hold is live, so the countdown line is true. */
|
|
3319
3422
|
private syncHoldTicker;
|
|
3320
3423
|
/**
|