@seatlayer/js 0.80.0 → 0.80.1

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
@@ -1816,6 +1816,20 @@ interface SeatingChartOptions {
1816
1816
  * `null` clears it. Purely informational; nothing is ever prevented.
1817
1817
  */
1818
1818
  onHint?: (message: string | null) => void;
1819
+ /**
1820
+ * The buyer tapped a seat that is ALREADY in the selection.
1821
+ *
1822
+ * The seat is still selected when this fires — this class deliberately does
1823
+ * NOT toggle it back out, because it draws no card to say so and a silent
1824
+ * drop is how a buyer loses a seat by checking which one they picked
1825
+ * (reproduced on device through the native bridge, 2026-09-04). The host
1826
+ * shows its own "Remove this seat?" and calls `deselectObjects([seat.id])`
1827
+ * if the buyer says yes; doing nothing keeps the seat.
1828
+ *
1829
+ * Grouped tables and server-held units never arrive here: they keep their own
1830
+ * paths (`onTableSelectionRequest`, the hold release).
1831
+ */
1832
+ onSeatRetap?: (seat: PickerSeat) => void;
1819
1833
  }
1820
1834
  declare class SeatingChart {
1821
1835
  private readonly opts;
@@ -2069,6 +2083,15 @@ declare class SeatingChart {
2069
2083
  setFloor(floorId: string): void;
2070
2084
  /** How the stacked view marks each level: a `G/1/2` badge, or floor names. */
2071
2085
  setFloorLabelStyle(style: FloorLabelStyle): void;
2086
+ /**
2087
+ * Does entering a section dim the rest of the venue?
2088
+ *
2089
+ * Unset, the map answers from its own stage width — no dim on a phone-sized
2090
+ * stage, where the focused section fills the viewport and the dim only
2091
+ * blackens the strip of edges around it. A native shell that wants the
2092
+ * desktop treatment (or wants it back after asking for it off) pins it here.
2093
+ */
2094
+ setSectionFocusDim(enabled: boolean): void;
2072
2095
  /** Toggle colorblind-safe rendering at runtime (see options.colorblindSafe). */
2073
2096
  setColorblindSafe(on: boolean): void;
2074
2097
  /** Switch the 2D canvas projection.
@@ -3281,7 +3304,6 @@ declare class SeatPicker implements GaPromptPicker {
3281
3304
  */
3282
3305
  private baReopen;
3283
3306
  private bestAvailableConfirm;
3284
- private releasingHold;
3285
3307
  /** Event sales window is closed (read-only load state / live close). */
3286
3308
  /** @internal */ salesClosed: boolean;
3287
3309
  /** Every seated category's live availability is 0 (sold-out overlay is up). */
@@ -3373,7 +3395,6 @@ declare class SeatPicker implements GaPromptPicker {
3373
3395
  /** Host-level event chrome owns the duplicate identity outside full screen. */
3374
3396
  private eventDetailsHidden;
3375
3397
  /** True while the hold note reads "N more selected" — the tick must not overwrite it. */
3376
- /** @internal */ holdCopyPending: boolean;
3377
3398
  /** Wide-layout ticket panel collapsed (map owns the full width). */
3378
3399
  private sideCollapsed;
3379
3400
  private sideToggleEl;
@@ -3629,7 +3650,7 @@ declare class SeatPicker implements GaPromptPicker {
3629
3650
  /** @internal */ rememberedHoldId(): string | null;
3630
3651
  /** @internal */ rememberHold(hold: HoldResult): void;
3631
3652
  /** @internal */ forgetHold(): void;
3632
- /** @internal */ resumeHoldFromServer(holdId: string, automatic: boolean): Promise<HoldResult | null>;
3653
+ /** @internal */ resumeHoldFromServer(holdId: string): Promise<HoldResult | null>;
3633
3654
  private restoreRememberedHold;
3634
3655
  /** Section-bearing objects on the active floor (single-floor → doc.objects). */
3635
3656
  private activeFloorObjects;
@@ -3833,20 +3854,6 @@ declare class SeatPicker implements GaPromptPicker {
3833
3854
  * clear. Shares `priceBandKeys` with the band selector so the row-dim state
3834
3855
  * has one source of truth (and each control resets the other). */
3835
3856
  /** @internal */ focusCategory(key: string): void;
3836
- /**
3837
- * Live-activity strip: turn WS availability deltas into one quiet line of
3838
- * social proof ("2 seats just taken in VIP · 118 left"). Diffs per-category
3839
- * counts on every status change — no per-seat payload needed. Skips the very
3840
- * first computation (initial load is not "activity").
3841
- */
3842
- /** @internal */ narrateAvailability(categories: Array<{
3843
- key: string;
3844
- label: string;
3845
- }>, left: Record<string, number>): void;
3846
- /** @internal */ lastCatAvail: Record<string, number> | null;
3847
- /** @internal */ lastAvailFloorId: string;
3848
- /** @internal */ availQuietUntil: number;
3849
- /** @internal */ liveTimer: ReturnType<typeof setTimeout> | null;
3850
3857
  /** A live delta took one of OUR selected (not yet held) seats — evict + tell the buyer. */
3851
3858
  private evictTakenSelections;
3852
3859
  /** @internal */ syncTray(): void;
@@ -3874,12 +3881,13 @@ declare class SeatPicker implements GaPromptPicker {
3874
3881
  * "PIT · Adult ×2" means both of them, not one of two identical cards.
3875
3882
  */
3876
3883
  private removeHeldLabels;
3877
- private handleChangeSeats;
3878
3884
  /** @internal */ handleCta(): Promise<void>;
3879
3885
  /** @internal */ startHoldTimer(expiresAt: number): void;
3880
3886
  /** @internal */ stopHoldTimer(): void;
3881
3887
  /** Show/refresh (or hide) the "Need more time?" prompt with the live seconds left. */
3882
3888
  /** @internal */ setExtendPrompt(show: boolean, ms: number): void;
3889
+ /** Re-ask whether the extend offer is due — for a layout flip, not a tick. */
3890
+ /** @internal */ refreshExtendPrompt(): void;
3883
3891
  /** @internal */ handleExtend(): Promise<void>;
3884
3892
  /**
3885
3893
  * Fire the booked-confirmation state once the buyer's held seats settle to
package/dist/index.d.ts CHANGED
@@ -1816,6 +1816,20 @@ interface SeatingChartOptions {
1816
1816
  * `null` clears it. Purely informational; nothing is ever prevented.
1817
1817
  */
1818
1818
  onHint?: (message: string | null) => void;
1819
+ /**
1820
+ * The buyer tapped a seat that is ALREADY in the selection.
1821
+ *
1822
+ * The seat is still selected when this fires — this class deliberately does
1823
+ * NOT toggle it back out, because it draws no card to say so and a silent
1824
+ * drop is how a buyer loses a seat by checking which one they picked
1825
+ * (reproduced on device through the native bridge, 2026-09-04). The host
1826
+ * shows its own "Remove this seat?" and calls `deselectObjects([seat.id])`
1827
+ * if the buyer says yes; doing nothing keeps the seat.
1828
+ *
1829
+ * Grouped tables and server-held units never arrive here: they keep their own
1830
+ * paths (`onTableSelectionRequest`, the hold release).
1831
+ */
1832
+ onSeatRetap?: (seat: PickerSeat) => void;
1819
1833
  }
1820
1834
  declare class SeatingChart {
1821
1835
  private readonly opts;
@@ -2069,6 +2083,15 @@ declare class SeatingChart {
2069
2083
  setFloor(floorId: string): void;
2070
2084
  /** How the stacked view marks each level: a `G/1/2` badge, or floor names. */
2071
2085
  setFloorLabelStyle(style: FloorLabelStyle): void;
2086
+ /**
2087
+ * Does entering a section dim the rest of the venue?
2088
+ *
2089
+ * Unset, the map answers from its own stage width — no dim on a phone-sized
2090
+ * stage, where the focused section fills the viewport and the dim only
2091
+ * blackens the strip of edges around it. A native shell that wants the
2092
+ * desktop treatment (or wants it back after asking for it off) pins it here.
2093
+ */
2094
+ setSectionFocusDim(enabled: boolean): void;
2072
2095
  /** Toggle colorblind-safe rendering at runtime (see options.colorblindSafe). */
2073
2096
  setColorblindSafe(on: boolean): void;
2074
2097
  /** Switch the 2D canvas projection.
@@ -3281,7 +3304,6 @@ declare class SeatPicker implements GaPromptPicker {
3281
3304
  */
3282
3305
  private baReopen;
3283
3306
  private bestAvailableConfirm;
3284
- private releasingHold;
3285
3307
  /** Event sales window is closed (read-only load state / live close). */
3286
3308
  /** @internal */ salesClosed: boolean;
3287
3309
  /** Every seated category's live availability is 0 (sold-out overlay is up). */
@@ -3373,7 +3395,6 @@ declare class SeatPicker implements GaPromptPicker {
3373
3395
  /** Host-level event chrome owns the duplicate identity outside full screen. */
3374
3396
  private eventDetailsHidden;
3375
3397
  /** True while the hold note reads "N more selected" — the tick must not overwrite it. */
3376
- /** @internal */ holdCopyPending: boolean;
3377
3398
  /** Wide-layout ticket panel collapsed (map owns the full width). */
3378
3399
  private sideCollapsed;
3379
3400
  private sideToggleEl;
@@ -3629,7 +3650,7 @@ declare class SeatPicker implements GaPromptPicker {
3629
3650
  /** @internal */ rememberedHoldId(): string | null;
3630
3651
  /** @internal */ rememberHold(hold: HoldResult): void;
3631
3652
  /** @internal */ forgetHold(): void;
3632
- /** @internal */ resumeHoldFromServer(holdId: string, automatic: boolean): Promise<HoldResult | null>;
3653
+ /** @internal */ resumeHoldFromServer(holdId: string): Promise<HoldResult | null>;
3633
3654
  private restoreRememberedHold;
3634
3655
  /** Section-bearing objects on the active floor (single-floor → doc.objects). */
3635
3656
  private activeFloorObjects;
@@ -3833,20 +3854,6 @@ declare class SeatPicker implements GaPromptPicker {
3833
3854
  * clear. Shares `priceBandKeys` with the band selector so the row-dim state
3834
3855
  * has one source of truth (and each control resets the other). */
3835
3856
  /** @internal */ focusCategory(key: string): void;
3836
- /**
3837
- * Live-activity strip: turn WS availability deltas into one quiet line of
3838
- * social proof ("2 seats just taken in VIP · 118 left"). Diffs per-category
3839
- * counts on every status change — no per-seat payload needed. Skips the very
3840
- * first computation (initial load is not "activity").
3841
- */
3842
- /** @internal */ narrateAvailability(categories: Array<{
3843
- key: string;
3844
- label: string;
3845
- }>, left: Record<string, number>): void;
3846
- /** @internal */ lastCatAvail: Record<string, number> | null;
3847
- /** @internal */ lastAvailFloorId: string;
3848
- /** @internal */ availQuietUntil: number;
3849
- /** @internal */ liveTimer: ReturnType<typeof setTimeout> | null;
3850
3857
  /** A live delta took one of OUR selected (not yet held) seats — evict + tell the buyer. */
3851
3858
  private evictTakenSelections;
3852
3859
  /** @internal */ syncTray(): void;
@@ -3874,12 +3881,13 @@ declare class SeatPicker implements GaPromptPicker {
3874
3881
  * "PIT · Adult ×2" means both of them, not one of two identical cards.
3875
3882
  */
3876
3883
  private removeHeldLabels;
3877
- private handleChangeSeats;
3878
3884
  /** @internal */ handleCta(): Promise<void>;
3879
3885
  /** @internal */ startHoldTimer(expiresAt: number): void;
3880
3886
  /** @internal */ stopHoldTimer(): void;
3881
3887
  /** Show/refresh (or hide) the "Need more time?" prompt with the live seconds left. */
3882
3888
  /** @internal */ setExtendPrompt(show: boolean, ms: number): void;
3889
+ /** Re-ask whether the extend offer is due — for a layout flip, not a tick. */
3890
+ /** @internal */ refreshExtendPrompt(): void;
3883
3891
  /** @internal */ handleExtend(): Promise<void>;
3884
3892
  /**
3885
3893
  * Fire the booked-confirmation state once the buyer's held seats settle to