@seatlayer/js 0.75.2 → 0.77.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.d.cts CHANGED
@@ -3,6 +3,7 @@ export { ExpandedSeat, PickerMapTheme, PickerSelectionValidator, PickerSelection
3
3
  import { T as ThemeMode } from './channelsMode-goczEzyt.cjs';
4
4
  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, U as InventoryBookingObject, V as InventoryBookingState, W as InventoryBookingsPage, X as InventoryBookingsQuery, Y as LogEntry, Z as LogPage, _ as ManageApi, $ as ManageApiError, a0 as ReportByStatus, a1 as ReportCategoryMeta, a2 as ReportCategoryRow, a3 as ReportResult, a4 as SeatManager, a5 as SeatManagerActionResult, a6 as SeatManagerActivity, a7 as SeatManagerCapability, a8 as SeatManagerConnection, a9 as SeatManagerFilteredSection, aa as SeatManagerMode, ab as SeatManagerOptions, ac as SeatManagerSelectionValidity, ad as SeatManagerTallies, ae as SelectionSourceRow } from './channelsMode-goczEzyt.cjs';
5
5
  import * as _seatlayer_core_core_seatConfidence from '@seatlayer/core/core/seatConfidence';
6
+ import { SeatConfidenceDisclosure } from '@seatlayer/core/core/seatConfidence';
6
7
  import { Venue3DHandle } from '@seatlayer/core/view3d';
7
8
 
8
9
  /**
@@ -1437,9 +1438,10 @@ interface SeatingChartPickerState {
1437
1438
  selection: {
1438
1439
  /**
1439
1440
  * The selected seats, each carrying where it currently IS on screen when
1440
- * the renderer can say — see {@link SeatScreenPoint}.
1441
+ * the renderer can say — see {@link SeatScreenPoint} — and what a card may
1442
+ * honestly show of the view from it, see {@link SeatViewThumbnail}.
1441
1443
  */
1442
- seats: Array<SelectedSeat & SeatScreenPoint>;
1444
+ seats: Array<SelectedSeat & SeatScreenPoint & SeatViewThumbnail>;
1443
1445
  validity: PickerSelectionValidity | null;
1444
1446
  maxSelection: number;
1445
1447
  };
@@ -1469,6 +1471,39 @@ interface SeatScreenPoint {
1469
1471
  y: number;
1470
1472
  };
1471
1473
  }
1474
+ /**
1475
+ * What a shell may honestly put on its own confirm card about the view from a
1476
+ * seat. `capability: seat-view-thumbnail-v1`.
1477
+ *
1478
+ * ALL THREE FIELDS ARE PRESENT-ONLY, and each absence means something specific:
1479
+ *
1480
+ * - `seatViewThumb` — the organizer's real view photo, as the REFERENCE the
1481
+ * host resolves through the authenticated buyer-asset transport (never a
1482
+ * plain URL a native `<img>` could fetch on its own: the Event's bearer does
1483
+ * not travel on an image request). It appears only when the same predicate
1484
+ * the web card uses says the media policy will actually hand the bytes back,
1485
+ * so a native card cannot promise a frame that then empties itself. There is
1486
+ * no second `kind`: with no uploaded photo the field is simply absent (owner
1487
+ * call 2026-09-02 — a generated stand-in read as a dummy picture, so the web
1488
+ * card stopped offering one and native must not reintroduce it).
1489
+ *
1490
+ * - `sightlineMetres` — distance from the seat to the stage, the number the web
1491
+ * card prints as its sightline line, from the same measurement. Absent on a
1492
+ * chart with no stage shape, because every chart has a bare `focalPoint` and
1493
+ * its presence alone never justifies a "to stage" claim.
1494
+ *
1495
+ * - `seatViewConfidence` — the seat confidence passport's summary, present only
1496
+ * for a seat that actually carries evidence. It describes supplied evidence
1497
+ * and known limits; it is not a guarantee about the real view.
1498
+ */
1499
+ interface SeatViewThumbnail {
1500
+ seatViewThumb?: {
1501
+ reference: string;
1502
+ kind: 'real';
1503
+ };
1504
+ sightlineMetres?: number;
1505
+ seatViewConfidence?: SeatConfidenceDisclosure;
1506
+ }
1472
1507
 
1473
1508
  /**
1474
1509
  * SeatingChart — the embeddable buyer picker.
@@ -2748,7 +2783,11 @@ declare class SeatPicker implements GaPromptPicker {
2748
2783
  private tipPinned;
2749
2784
  private tipMarkedHoverLabel;
2750
2785
  private lastPointerType;
2751
- /** @internal */ confirmEl: HTMLDivElement | null;
2786
+ /** @internal The mounted confirm card. A facade over ConfirmCard in both
2787
+ * directions — the widget's own callers, its tests and the toast placer all
2788
+ * read and assign it as the plain field it used to be. */
2789
+ /** @internal */ get confirmEl(): HTMLDivElement | null;
2790
+ /** @internal */ set confirmEl(el: HTMLDivElement | null);
2752
2791
  /** Light / dark / auto, or null when the widget is not managing a mode at
2753
2792
  * all — which is the default, and is byte-for-byte the old behaviour. */
2754
2793
  private themeMode;
@@ -2758,7 +2797,11 @@ declare class SeatPicker implements GaPromptPicker {
2758
2797
  * the closure that says so once the render facts exist to say it with. */
2759
2798
  private seatsRevealed;
2760
2799
  private seatsRevealedReport;
2761
- private confirmSeat;
2800
+ /** The seat the confirm card is about — the same facade as `confirmEl`. */
2801
+ private get confirmSeat();
2802
+ private set confirmSeat(value);
2803
+ /** The confirm card owns its element and its candidate seat. */
2804
+ private confirmCardCache;
2762
2805
  private suppressConfirmationSeatId;
2763
2806
  private tableDialogEl;
2764
2807
  private tableDialog;
@@ -2881,28 +2924,7 @@ declare class SeatPicker implements GaPromptPicker {
2881
2924
  private framedFs;
2882
2925
  /** Last height (px) posted to a host frame; dedupes redundant reports. */
2883
2926
  private lastPostedHeight;
2884
- /** True when the chart carries a real performance anchor — a stage-kind shape.
2885
- * Every chart has a `focalPoint` (a bare look-at coordinate), so its presence
2886
- * alone never justifies a "to stage" claim; only an actual stage does. */
2887
- private chartHasStage;
2888
- /**
2889
- * Eager sightline preview for the confirm card: the organizer's real view
2890
- * photo, or — only when the chart has an actual stage to look at — a generated
2891
- * forward view plus an approximate distance-to-stage line. On a stageless
2892
- * chart both the distance claim and the generic stage silhouette are
2893
- * invented promises, so we suppress them; a real attached photo always shows.
2894
- * (OV-52)
2895
- */
2896
- private confirmThumbHtml;
2897
- /**
2898
- * The reference the card's thumbnail would load, or null when there is none
2899
- * the buyer-media policy will hand back.
2900
- *
2901
- * The same predicate `BuyerAssetObjectUrls.resolve` applies, asked BEFORE the
2902
- * markup is built rather than after the fetch fails — which is the difference
2903
- * between a card that never shows a frame and one that shows a frame and then
2904
- * takes it away.
2905
- */
2927
+ /** See `./seatViewThumb`, which the native bridge answers from as well. */
2906
2928
  private deliverableViewReference;
2907
2929
  /** True when the picker is rendered inside an iframe (snippet embed at /e/:key). */
2908
2930
  private isFramed;
@@ -3010,6 +3032,17 @@ declare class SeatPicker implements GaPromptPicker {
3010
3032
  * seats the buyer cannot see.
3011
3033
  */
3012
3034
  private focusSeatsForFilter;
3035
+ /**
3036
+ * Say what just happened when the camera could not say it.
3037
+ *
3038
+ * Fifteen wheelchair spaces in fifteen sections around a bowl have no "there"
3039
+ * to fly to: the framing call frames the whole venue, which is the view the
3040
+ * buyer was already looking at, so from their side the map dimmed and nothing
3041
+ * else changed. The overview now marks the sections that carry them; this is
3042
+ * the sentence that tells the buyer to look for those marks. Said only for
3043
+ * that shape — a tight cluster is dived into and explains itself.
3044
+ */
3045
+ private explainAccessibilitySpread;
3013
3046
  /** Turn the buyer's accessibility filter on or off from host code. Mirrors
3014
3047
  * the bridge command and the menu, so the three never diverge. */
3015
3048
  setAccessibilityFilter(types: AccessibilityType[] | null): void;
@@ -3194,59 +3227,27 @@ declare class SeatPicker implements GaPromptPicker {
3194
3227
  private confirmTableDialog;
3195
3228
  private cancelTableDialog;
3196
3229
  private dismissTableDialog;
3197
- /** @internal */ showConfirm(seat: ExpandedSeat): void;
3198
3230
  /**
3199
- * Ask for the press, once, until someone answers.
3200
- *
3201
- * The confirm card arrives with two buttons and nothing saying which one
3202
- * carries the decision. So the commit button shimmers shortly after the card
3203
- * lands and then breathes — and stops at the first sign of a person touching
3204
- * the card at all, not after a fixed count. An invitation that keeps being
3205
- * made after it has been received is nagging, which is why the stop is bound
3206
- * to three different first-contacts rather than to a timer.
3231
+ * The confirm card, built on first use.
3207
3232
  *
3208
- * Nothing here runs under reduced motion: the class is never added, so the
3209
- * button is simply a button. (pickerMotion also stands the class down, for a
3210
- * caller that is not this one.)
3233
+ * Every host member is a function that calls back through `this`, never a
3234
+ * captured value: the widget's tests replace `dismissConfirm`,
3235
+ * `reducedMotion`, `scheduleMotion`, `syncTray`, `canOffer3d`, `enter3d` and
3236
+ * `buyerAssetUrls` on the INSTANCE, and the card has to see those.
3211
3237
  */
3212
- private inviteCommit;
3213
- /**
3214
- * What the confirm card's commit button says.
3215
- *
3216
- * "Select" named the mechanism, not the act — on a card already showing Row,
3217
- * Seat and a price, the one control that decides the purchase was the least
3218
- * specific thing on it. It names the act instead.
3219
- *
3220
- * NO PRICE ON THE BUTTON (owner call 2026-09-02). "Add seat · $180" was tried
3221
- * and wrapped the button to two lines beside a one-line Cancel on a 310px
3222
- * phone card. The amount is already the largest thing in the band directly
3223
- * above, so putting it on the button bought a second copy of a fact the
3224
- * buyer is looking at and cost the row its shape.
3225
- *
3226
- * A seat only. A booth, a table or a general-admission line keeps the
3227
- * existing wording rather than being told it is adding a "seat" — those
3228
- * surfaces have their own nouns (the table dialog says "Select whole table"),
3229
- * and a wrong noun is worse than a general verb.
3230
- */
3231
- private addSeatLabel;
3238
+ private get confirmCard();
3239
+ /** @internal */ showConfirm(seat: ExpandedSeat): void;
3232
3240
  private reanchorConfirm;
3233
3241
  private dismissConfirm;
3234
- /**
3235
- * Commit the candidate — and let the press be seen.
3236
- *
3237
- * STATE FIRST, ALWAYS. The cart, the totals and the 3D snapshot update on the
3238
- * same tick as the click; nothing below defers a fact. What IS sequenced is
3239
- * the card's departure: the button sweeps its accent left to right while the
3240
- * tick draws and the label turns to "Added", and only then does the card
3241
- * leave and the seat fly to the tray. Dismissing on the click cut that sweep
3242
- * off after about one frame — the widget was animating a moment nobody could
3243
- * see, which is worse than not animating it.
3244
- *
3245
- * Reduced motion takes the old path exactly: no sweep, no wait.
3246
- */
3247
- private commitConfirm;
3242
+ /** @internal The card's own button calls the card; this is the seam the
3243
+ * widget's tests press. */
3244
+ /** @internal */ commitConfirm(): Promise<void>;
3248
3245
  private cancelConfirm;
3249
3246
  private closeConfirm;
3247
+ /** See `./pickerConfirmCard`; kept as members because the widget's tests
3248
+ * call and replace both on the instance. */
3249
+ private inviteCommit;
3250
+ private addSeatLabel;
3250
3251
  private seatViewEnabled;
3251
3252
  /** Every bookable seat (cached) — neighbor heads for the generated panorama. */
3252
3253
  /** @internal */ allSeats(): ExpandedSeat[];
@@ -3317,6 +3318,21 @@ declare class SeatPicker implements GaPromptPicker {
3317
3318
  /** A live delta took one of OUR selected (not yet held) seats — evict + tell the buyer. */
3318
3319
  private evictTakenSelections;
3319
3320
  /** @internal */ syncTray(): void;
3321
+ /**
3322
+ * Re-fit every block whose width is decided by a translated string.
3323
+ *
3324
+ * ONE pass over the whole widget rather than a fit call bolted onto each
3325
+ * renderer, because the three blocks share a cause: a language the layout has
3326
+ * never seen. Wiring them separately is how a fourth block ships without one.
3327
+ *
3328
+ * Coalesced into a single animation frame, and deliberately not run inline:
3329
+ * every caller here has just written innerHTML, and `scrollWidth` read in the
3330
+ * same tick reports the box the browser has not laid out yet. The frame is
3331
+ * also where a web font that changed the metrics has landed.
3332
+ */
3333
+ private fitScheduled;
3334
+ /** @internal */ scheduleFit(): void;
3335
+ private fitTranslatedRows;
3320
3336
  private emitSelectionValidity;
3321
3337
  /** Paint the bottom-sheet's collapsed one-liner (pickerTray.ts builds it). */
3322
3338
  private renderPeek;
package/dist/index.d.ts CHANGED
@@ -3,6 +3,7 @@ export { ExpandedSeat, PickerMapTheme, PickerSelectionValidator, PickerSelection
3
3
  import { T as ThemeMode } from './channelsMode-goczEzyt.js';
4
4
  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, U as InventoryBookingObject, V as InventoryBookingState, W as InventoryBookingsPage, X as InventoryBookingsQuery, Y as LogEntry, Z as LogPage, _ as ManageApi, $ as ManageApiError, a0 as ReportByStatus, a1 as ReportCategoryMeta, a2 as ReportCategoryRow, a3 as ReportResult, a4 as SeatManager, a5 as SeatManagerActionResult, a6 as SeatManagerActivity, a7 as SeatManagerCapability, a8 as SeatManagerConnection, a9 as SeatManagerFilteredSection, aa as SeatManagerMode, ab as SeatManagerOptions, ac as SeatManagerSelectionValidity, ad as SeatManagerTallies, ae as SelectionSourceRow } from './channelsMode-goczEzyt.js';
5
5
  import * as _seatlayer_core_core_seatConfidence from '@seatlayer/core/core/seatConfidence';
6
+ import { SeatConfidenceDisclosure } from '@seatlayer/core/core/seatConfidence';
6
7
  import { Venue3DHandle } from '@seatlayer/core/view3d';
7
8
 
8
9
  /**
@@ -1437,9 +1438,10 @@ interface SeatingChartPickerState {
1437
1438
  selection: {
1438
1439
  /**
1439
1440
  * The selected seats, each carrying where it currently IS on screen when
1440
- * the renderer can say — see {@link SeatScreenPoint}.
1441
+ * the renderer can say — see {@link SeatScreenPoint} — and what a card may
1442
+ * honestly show of the view from it, see {@link SeatViewThumbnail}.
1441
1443
  */
1442
- seats: Array<SelectedSeat & SeatScreenPoint>;
1444
+ seats: Array<SelectedSeat & SeatScreenPoint & SeatViewThumbnail>;
1443
1445
  validity: PickerSelectionValidity | null;
1444
1446
  maxSelection: number;
1445
1447
  };
@@ -1469,6 +1471,39 @@ interface SeatScreenPoint {
1469
1471
  y: number;
1470
1472
  };
1471
1473
  }
1474
+ /**
1475
+ * What a shell may honestly put on its own confirm card about the view from a
1476
+ * seat. `capability: seat-view-thumbnail-v1`.
1477
+ *
1478
+ * ALL THREE FIELDS ARE PRESENT-ONLY, and each absence means something specific:
1479
+ *
1480
+ * - `seatViewThumb` — the organizer's real view photo, as the REFERENCE the
1481
+ * host resolves through the authenticated buyer-asset transport (never a
1482
+ * plain URL a native `<img>` could fetch on its own: the Event's bearer does
1483
+ * not travel on an image request). It appears only when the same predicate
1484
+ * the web card uses says the media policy will actually hand the bytes back,
1485
+ * so a native card cannot promise a frame that then empties itself. There is
1486
+ * no second `kind`: with no uploaded photo the field is simply absent (owner
1487
+ * call 2026-09-02 — a generated stand-in read as a dummy picture, so the web
1488
+ * card stopped offering one and native must not reintroduce it).
1489
+ *
1490
+ * - `sightlineMetres` — distance from the seat to the stage, the number the web
1491
+ * card prints as its sightline line, from the same measurement. Absent on a
1492
+ * chart with no stage shape, because every chart has a bare `focalPoint` and
1493
+ * its presence alone never justifies a "to stage" claim.
1494
+ *
1495
+ * - `seatViewConfidence` — the seat confidence passport's summary, present only
1496
+ * for a seat that actually carries evidence. It describes supplied evidence
1497
+ * and known limits; it is not a guarantee about the real view.
1498
+ */
1499
+ interface SeatViewThumbnail {
1500
+ seatViewThumb?: {
1501
+ reference: string;
1502
+ kind: 'real';
1503
+ };
1504
+ sightlineMetres?: number;
1505
+ seatViewConfidence?: SeatConfidenceDisclosure;
1506
+ }
1472
1507
 
1473
1508
  /**
1474
1509
  * SeatingChart — the embeddable buyer picker.
@@ -2748,7 +2783,11 @@ declare class SeatPicker implements GaPromptPicker {
2748
2783
  private tipPinned;
2749
2784
  private tipMarkedHoverLabel;
2750
2785
  private lastPointerType;
2751
- /** @internal */ confirmEl: HTMLDivElement | null;
2786
+ /** @internal The mounted confirm card. A facade over ConfirmCard in both
2787
+ * directions — the widget's own callers, its tests and the toast placer all
2788
+ * read and assign it as the plain field it used to be. */
2789
+ /** @internal */ get confirmEl(): HTMLDivElement | null;
2790
+ /** @internal */ set confirmEl(el: HTMLDivElement | null);
2752
2791
  /** Light / dark / auto, or null when the widget is not managing a mode at
2753
2792
  * all — which is the default, and is byte-for-byte the old behaviour. */
2754
2793
  private themeMode;
@@ -2758,7 +2797,11 @@ declare class SeatPicker implements GaPromptPicker {
2758
2797
  * the closure that says so once the render facts exist to say it with. */
2759
2798
  private seatsRevealed;
2760
2799
  private seatsRevealedReport;
2761
- private confirmSeat;
2800
+ /** The seat the confirm card is about — the same facade as `confirmEl`. */
2801
+ private get confirmSeat();
2802
+ private set confirmSeat(value);
2803
+ /** The confirm card owns its element and its candidate seat. */
2804
+ private confirmCardCache;
2762
2805
  private suppressConfirmationSeatId;
2763
2806
  private tableDialogEl;
2764
2807
  private tableDialog;
@@ -2881,28 +2924,7 @@ declare class SeatPicker implements GaPromptPicker {
2881
2924
  private framedFs;
2882
2925
  /** Last height (px) posted to a host frame; dedupes redundant reports. */
2883
2926
  private lastPostedHeight;
2884
- /** True when the chart carries a real performance anchor — a stage-kind shape.
2885
- * Every chart has a `focalPoint` (a bare look-at coordinate), so its presence
2886
- * alone never justifies a "to stage" claim; only an actual stage does. */
2887
- private chartHasStage;
2888
- /**
2889
- * Eager sightline preview for the confirm card: the organizer's real view
2890
- * photo, or — only when the chart has an actual stage to look at — a generated
2891
- * forward view plus an approximate distance-to-stage line. On a stageless
2892
- * chart both the distance claim and the generic stage silhouette are
2893
- * invented promises, so we suppress them; a real attached photo always shows.
2894
- * (OV-52)
2895
- */
2896
- private confirmThumbHtml;
2897
- /**
2898
- * The reference the card's thumbnail would load, or null when there is none
2899
- * the buyer-media policy will hand back.
2900
- *
2901
- * The same predicate `BuyerAssetObjectUrls.resolve` applies, asked BEFORE the
2902
- * markup is built rather than after the fetch fails — which is the difference
2903
- * between a card that never shows a frame and one that shows a frame and then
2904
- * takes it away.
2905
- */
2927
+ /** See `./seatViewThumb`, which the native bridge answers from as well. */
2906
2928
  private deliverableViewReference;
2907
2929
  /** True when the picker is rendered inside an iframe (snippet embed at /e/:key). */
2908
2930
  private isFramed;
@@ -3010,6 +3032,17 @@ declare class SeatPicker implements GaPromptPicker {
3010
3032
  * seats the buyer cannot see.
3011
3033
  */
3012
3034
  private focusSeatsForFilter;
3035
+ /**
3036
+ * Say what just happened when the camera could not say it.
3037
+ *
3038
+ * Fifteen wheelchair spaces in fifteen sections around a bowl have no "there"
3039
+ * to fly to: the framing call frames the whole venue, which is the view the
3040
+ * buyer was already looking at, so from their side the map dimmed and nothing
3041
+ * else changed. The overview now marks the sections that carry them; this is
3042
+ * the sentence that tells the buyer to look for those marks. Said only for
3043
+ * that shape — a tight cluster is dived into and explains itself.
3044
+ */
3045
+ private explainAccessibilitySpread;
3013
3046
  /** Turn the buyer's accessibility filter on or off from host code. Mirrors
3014
3047
  * the bridge command and the menu, so the three never diverge. */
3015
3048
  setAccessibilityFilter(types: AccessibilityType[] | null): void;
@@ -3194,59 +3227,27 @@ declare class SeatPicker implements GaPromptPicker {
3194
3227
  private confirmTableDialog;
3195
3228
  private cancelTableDialog;
3196
3229
  private dismissTableDialog;
3197
- /** @internal */ showConfirm(seat: ExpandedSeat): void;
3198
3230
  /**
3199
- * Ask for the press, once, until someone answers.
3200
- *
3201
- * The confirm card arrives with two buttons and nothing saying which one
3202
- * carries the decision. So the commit button shimmers shortly after the card
3203
- * lands and then breathes — and stops at the first sign of a person touching
3204
- * the card at all, not after a fixed count. An invitation that keeps being
3205
- * made after it has been received is nagging, which is why the stop is bound
3206
- * to three different first-contacts rather than to a timer.
3231
+ * The confirm card, built on first use.
3207
3232
  *
3208
- * Nothing here runs under reduced motion: the class is never added, so the
3209
- * button is simply a button. (pickerMotion also stands the class down, for a
3210
- * caller that is not this one.)
3233
+ * Every host member is a function that calls back through `this`, never a
3234
+ * captured value: the widget's tests replace `dismissConfirm`,
3235
+ * `reducedMotion`, `scheduleMotion`, `syncTray`, `canOffer3d`, `enter3d` and
3236
+ * `buyerAssetUrls` on the INSTANCE, and the card has to see those.
3211
3237
  */
3212
- private inviteCommit;
3213
- /**
3214
- * What the confirm card's commit button says.
3215
- *
3216
- * "Select" named the mechanism, not the act — on a card already showing Row,
3217
- * Seat and a price, the one control that decides the purchase was the least
3218
- * specific thing on it. It names the act instead.
3219
- *
3220
- * NO PRICE ON THE BUTTON (owner call 2026-09-02). "Add seat · $180" was tried
3221
- * and wrapped the button to two lines beside a one-line Cancel on a 310px
3222
- * phone card. The amount is already the largest thing in the band directly
3223
- * above, so putting it on the button bought a second copy of a fact the
3224
- * buyer is looking at and cost the row its shape.
3225
- *
3226
- * A seat only. A booth, a table or a general-admission line keeps the
3227
- * existing wording rather than being told it is adding a "seat" — those
3228
- * surfaces have their own nouns (the table dialog says "Select whole table"),
3229
- * and a wrong noun is worse than a general verb.
3230
- */
3231
- private addSeatLabel;
3238
+ private get confirmCard();
3239
+ /** @internal */ showConfirm(seat: ExpandedSeat): void;
3232
3240
  private reanchorConfirm;
3233
3241
  private dismissConfirm;
3234
- /**
3235
- * Commit the candidate — and let the press be seen.
3236
- *
3237
- * STATE FIRST, ALWAYS. The cart, the totals and the 3D snapshot update on the
3238
- * same tick as the click; nothing below defers a fact. What IS sequenced is
3239
- * the card's departure: the button sweeps its accent left to right while the
3240
- * tick draws and the label turns to "Added", and only then does the card
3241
- * leave and the seat fly to the tray. Dismissing on the click cut that sweep
3242
- * off after about one frame — the widget was animating a moment nobody could
3243
- * see, which is worse than not animating it.
3244
- *
3245
- * Reduced motion takes the old path exactly: no sweep, no wait.
3246
- */
3247
- private commitConfirm;
3242
+ /** @internal The card's own button calls the card; this is the seam the
3243
+ * widget's tests press. */
3244
+ /** @internal */ commitConfirm(): Promise<void>;
3248
3245
  private cancelConfirm;
3249
3246
  private closeConfirm;
3247
+ /** See `./pickerConfirmCard`; kept as members because the widget's tests
3248
+ * call and replace both on the instance. */
3249
+ private inviteCommit;
3250
+ private addSeatLabel;
3250
3251
  private seatViewEnabled;
3251
3252
  /** Every bookable seat (cached) — neighbor heads for the generated panorama. */
3252
3253
  /** @internal */ allSeats(): ExpandedSeat[];
@@ -3317,6 +3318,21 @@ declare class SeatPicker implements GaPromptPicker {
3317
3318
  /** A live delta took one of OUR selected (not yet held) seats — evict + tell the buyer. */
3318
3319
  private evictTakenSelections;
3319
3320
  /** @internal */ syncTray(): void;
3321
+ /**
3322
+ * Re-fit every block whose width is decided by a translated string.
3323
+ *
3324
+ * ONE pass over the whole widget rather than a fit call bolted onto each
3325
+ * renderer, because the three blocks share a cause: a language the layout has
3326
+ * never seen. Wiring them separately is how a fourth block ships without one.
3327
+ *
3328
+ * Coalesced into a single animation frame, and deliberately not run inline:
3329
+ * every caller here has just written innerHTML, and `scrollWidth` read in the
3330
+ * same tick reports the box the browser has not laid out yet. The frame is
3331
+ * also where a web font that changed the metrics has landed.
3332
+ */
3333
+ private fitScheduled;
3334
+ /** @internal */ scheduleFit(): void;
3335
+ private fitTranslatedRows;
3320
3336
  private emitSelectionValidity;
3321
3337
  /** Paint the bottom-sheet's collapsed one-liner (pickerTray.ts builds it). */
3322
3338
  private renderPeek;