@seatlayer/js 0.56.0 → 0.58.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/README.md +28 -0
- package/dist/{channelsMode-CFxx1jp3.d.cts → channelsMode-2z9HBOAX.d.cts} +35 -0
- package/dist/{channelsMode-CFxx1jp3.d.ts → channelsMode-2z9HBOAX.d.ts} +35 -0
- package/dist/index.cjs +5 -5
- package/dist/index.d.cts +20 -15
- package/dist/index.d.ts +20 -15
- package/dist/index.js +4 -4
- package/dist/manager.cjs +138 -108
- package/dist/manager.d.cts +2 -2
- package/dist/manager.d.ts +2 -2
- package/dist/manager.js +141 -111
- package/package.json +2 -2
package/dist/index.d.cts
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import { PickerSeat, RendererViewMode, SeatHoverDetails, PickerSelectionValidity, PickerTransport, PickerMapTheme } from '@seatlayer/core';
|
|
2
|
-
export { ExpandedSeat, PickerMapTheme, PickerSelectionValidity, RendererViewMode, SeatHoverDetails } from '@seatlayer/core';
|
|
3
|
-
export { A as AccessIntentForbidsDetails, a as AccessLinkRecord, b as AccessLinkReveal, c as AccessLinkState, d as AccessLinkStatus, e as AccessLinkStatusRecord, f as ArchiveBlockedDetails, g as AssignmentBuckets, h as AssignmentDropDetails, i as AssignmentResult, B as BucketRow, C as ChannelAccessIntent, j as ChannelAccessSummary, k as ChannelAllocationPage, l as ChannelAttribution, m as ChannelAuditEntry, n as ChannelAuditPage, o as ChannelCounts, p as ChannelListResult, q as ChannelPreviewProjection, r as ChannelRecord, s as ChannelReport, t as ChannelReportLinkRecord, u as ChannelReportLinkReveal, v as ChannelReportResult, w as ChannelReportRow, x as ChannelSeatStatus, y as ChannelState, z as ChannelsCapabilities, D as ChannelsClient, E as ChannelsMode, F as ChannelsModeHost, G as ChannelsRowView, H as ChannelsSeatView, I as ControlRoomActivityEntry, J as ControlRoomSectionMetric, K as ControlRoomSnapshot, L as EventCategoryAssignmentResult, M as EventScopedManageToken, N as EventTableBookingMode, O as EventTableBookingResult, P as IntentSwitchBlockedDetails, Q as InventoryBooking, R as InventoryBookingActivity, S as InventoryBookingDetail, T as InventoryBookingObject, U as InventoryBookingState, V as InventoryBookingsPage, W as InventoryBookingsQuery, X as LogEntry, Y as LogPage, Z as ManageApi, _ as ManageApiError, $ as ReportByStatus, a0 as ReportCategoryMeta, a1 as ReportCategoryRow, a2 as ReportResult, a3 as SeatManager, a4 as SeatManagerActionResult, a5 as SeatManagerActivity, a6 as SeatManagerCapability, a7 as SeatManagerConnection, a8 as SeatManagerFilteredSection, a9 as SeatManagerMode, aa as SeatManagerOptions, ab as SeatManagerSelectionValidity, ac as SeatManagerTallies, ad as SelectionSourceRow } from './channelsMode-
|
|
1
|
+
import { PickerSeat, PickerSelectionValidator, RendererViewMode, SeatHoverDetails, PickerSelectionValidity, PickerTransport, PickerMapTheme } from '@seatlayer/core';
|
|
2
|
+
export { ExpandedSeat, PickerMapTheme, PickerSelectionValidator, PickerSelectionValidity, PickerSelectionViolation, RendererViewMode, SeatHoverDetails } from '@seatlayer/core';
|
|
3
|
+
export { A as AccessIntentForbidsDetails, a as AccessLinkRecord, b as AccessLinkReveal, c as AccessLinkState, d as AccessLinkStatus, e as AccessLinkStatusRecord, f as ArchiveBlockedDetails, g as AssignmentBuckets, h as AssignmentDropDetails, i as AssignmentResult, B as BucketRow, C as ChannelAccessIntent, j as ChannelAccessSummary, k as ChannelAllocationPage, l as ChannelAttribution, m as ChannelAuditEntry, n as ChannelAuditPage, o as ChannelCounts, p as ChannelListResult, q as ChannelPreviewProjection, r as ChannelRecord, s as ChannelReport, t as ChannelReportLinkRecord, u as ChannelReportLinkReveal, v as ChannelReportResult, w as ChannelReportRow, x as ChannelSeatStatus, y as ChannelState, z as ChannelsCapabilities, D as ChannelsClient, E as ChannelsMode, F as ChannelsModeHost, G as ChannelsRowView, H as ChannelsSeatView, I as ControlRoomActivityEntry, J as ControlRoomSectionMetric, K as ControlRoomSnapshot, L as EventCategoryAssignmentResult, M as EventScopedManageToken, N as EventTableBookingMode, O as EventTableBookingResult, P as IntentSwitchBlockedDetails, Q as InventoryBooking, R as InventoryBookingActivity, S as InventoryBookingDetail, T as InventoryBookingObject, U as InventoryBookingState, V as InventoryBookingsPage, W as InventoryBookingsQuery, X as LogEntry, Y as LogPage, Z as ManageApi, _ as ManageApiError, $ as ReportByStatus, a0 as ReportCategoryMeta, a1 as ReportCategoryRow, a2 as ReportResult, a3 as SeatManager, a4 as SeatManagerActionResult, a5 as SeatManagerActivity, a6 as SeatManagerCapability, a7 as SeatManagerConnection, a8 as SeatManagerFilteredSection, a9 as SeatManagerMode, aa as SeatManagerOptions, ab as SeatManagerSelectionValidity, ac as SeatManagerTallies, ad as SelectionSourceRow } from './channelsMode-2z9HBOAX.cjs';
|
|
4
4
|
|
|
5
5
|
/**
|
|
6
6
|
* Buyer access context — the browser half of the Sales Channels contract
|
|
@@ -576,6 +576,8 @@ interface SeatingChartOptions {
|
|
|
576
576
|
selectableObjects?: string[] | null;
|
|
577
577
|
/** Require exactly this many seated/table guest units before the selection is valid. */
|
|
578
578
|
numberOfPlacesToSelect?: number;
|
|
579
|
+
/** Optional local selection guards, enforced again before hold. */
|
|
580
|
+
selectionValidators?: PickerSelectionValidator[];
|
|
579
581
|
/**
|
|
580
582
|
* BCP 47 language for the widget UI — `'de'`, `'es-MX'`, etc. Falls back to
|
|
581
583
|
* the browser language, then English. Built-in: en, es, de, fr. The German
|
|
@@ -613,11 +615,11 @@ interface SeatingChartOptions {
|
|
|
613
615
|
*/
|
|
614
616
|
onSeatHover?: (details: SeatHoverDetails | null) => void;
|
|
615
617
|
onSelectionChange?: (seats: SelectedSeat[]) => void;
|
|
616
|
-
/**
|
|
618
|
+
/** Selection-rule state after each selection change. */
|
|
617
619
|
onSelectionValidityChange?: (state: PickerSelectionValidity) => void;
|
|
618
|
-
/** The
|
|
620
|
+
/** The configured selection rules have just become valid. */
|
|
619
621
|
onSelectionValid?: (seats: SelectedSeat[]) => void;
|
|
620
|
-
/** The
|
|
622
|
+
/** The configured selection rules have just become invalid. */
|
|
621
623
|
onSelectionInvalid?: (state: PickerSelectionValidity) => void;
|
|
622
624
|
/** A manual or programmatic selection reached the active maximum. */
|
|
623
625
|
onSelectionLimit?: (maxSelection: number) => void;
|
|
@@ -731,7 +733,7 @@ declare class SeatingChart {
|
|
|
731
733
|
setSelectableObjects(objects: string[] | null): void;
|
|
732
734
|
/** Change the selection cap without remounting. */
|
|
733
735
|
setMaxSelection(maxSelection: number): void;
|
|
734
|
-
/** Current
|
|
736
|
+
/** Current selection-rule validity, or null when no rules were configured. */
|
|
735
737
|
getSelectionValidity(): PickerSelectionValidity | null;
|
|
736
738
|
/** Hold the current selection. Resolves the hold, or null on a 409 conflict. */
|
|
737
739
|
hold(options?: {
|
|
@@ -973,10 +975,10 @@ declare function bindSeatingChartHandle(getInstance: () => SeatingChart | null):
|
|
|
973
975
|
* two behaviours. React already treated them this way; Vue and Angular did not
|
|
974
976
|
* expose them at all.
|
|
975
977
|
*/
|
|
976
|
-
declare const SEATING_CHART_IDENTITY_PROPS: readonly ["event", "apiBase", "maxSelection", "numberOfPlacesToSelect", "publicKey", "locale", "currency", "colorblindSafe", "initialView", "errorDisplay"];
|
|
978
|
+
declare const SEATING_CHART_IDENTITY_PROPS: readonly ["event", "apiBase", "maxSelection", "numberOfPlacesToSelect", "selectionValidators", "publicKey", "locale", "currency", "colorblindSafe", "initialView", "errorDisplay"];
|
|
977
979
|
type SeatingChartIdentityProp = (typeof SEATING_CHART_IDENTITY_PROPS)[number];
|
|
978
980
|
/** Non-callback options a wrapper accepts as props/inputs and passes straight through. */
|
|
979
|
-
declare const SEATING_CHART_VALUE_PROPS: readonly ["event", "apiBase", "maxSelection", "numberOfPlacesToSelect", "publicKey", "locale", "currency", "colorblindSafe", "initialView", "errorDisplay", "selectedObjects", "selectableObjects", "messages", "seatTooltip", "buyerAccessTokenProvider", "buyerAccessToken"];
|
|
981
|
+
declare const SEATING_CHART_VALUE_PROPS: readonly ["event", "apiBase", "maxSelection", "numberOfPlacesToSelect", "selectionValidators", "publicKey", "locale", "currency", "colorblindSafe", "initialView", "errorDisplay", "selectedObjects", "selectableObjects", "messages", "seatTooltip", "buyerAccessTokenProvider", "buyerAccessToken"];
|
|
980
982
|
type SeatingChartValueProp = (typeof SEATING_CHART_VALUE_PROPS)[number];
|
|
981
983
|
/** Every callback option a wrapper wires to its own event mechanism. */
|
|
982
984
|
declare const SEATING_CHART_CALLBACK_PROPS: readonly ["onSelectionChange", "onSelectionValidityChange", "onSelectionValid", "onSelectionInvalid", "onSelectionLimit", "onHold", "onHoldRestored", "onHoldExpired", "onGAClick", "onError", "onDeckTap", "onHint", "onSeatHover", "onAccessExpired", "onAccessUnavailable", "onSelectedObjectUnavailable"];
|
|
@@ -1513,6 +1515,9 @@ interface SeatPickerOptions {
|
|
|
1513
1515
|
selectableObjects?: string[] | null;
|
|
1514
1516
|
/** Require exactly this many total seated/table/GA guest units before checkout. */
|
|
1515
1517
|
numberOfPlacesToSelect?: number;
|
|
1518
|
+
/** Optional sale guards evaluated after every change and enforced before a
|
|
1519
|
+
* hold: minimum quantity, consecutive seats, and/or no stranded singles. */
|
|
1520
|
+
selectionValidators?: PickerSelectionValidator[];
|
|
1516
1521
|
/** BCP 47 language for the widget UI. Built-in: en, es, de, fr. */
|
|
1517
1522
|
locale?: string;
|
|
1518
1523
|
/** Per-key string overrides layered over the active locale. */
|
|
@@ -1738,11 +1743,11 @@ interface SeatPickerOptions {
|
|
|
1738
1743
|
onBooked?: (handoff: CheckoutHandoff) => void;
|
|
1739
1744
|
/** Selection changed (tap or best-available). */
|
|
1740
1745
|
onSelectionChange?: (seats: PickerSeat[]) => void;
|
|
1741
|
-
/**
|
|
1746
|
+
/** Selection-rule state after each selection change. */
|
|
1742
1747
|
onSelectionValidityChange?: (state: PickerSelectionValidity) => void;
|
|
1743
|
-
/** The configured
|
|
1748
|
+
/** The configured selection rules have just become valid. */
|
|
1744
1749
|
onSelectionValid?: (seats: PickerSeat[]) => void;
|
|
1745
|
-
/** The
|
|
1750
|
+
/** The configured selection rules have just become invalid. */
|
|
1746
1751
|
onSelectionInvalid?: (state: PickerSelectionValidity) => void;
|
|
1747
1752
|
/** A selection attempt reached the active maximum. */
|
|
1748
1753
|
onSelectionLimit?: (maxSelection: number) => void;
|
|
@@ -1818,7 +1823,7 @@ declare class SeatPicker {
|
|
|
1818
1823
|
private maxTickets;
|
|
1819
1824
|
/** Exact ticket count required before checkout; null keeps ordinary 1..max behavior. */
|
|
1820
1825
|
private readonly exactTickets;
|
|
1821
|
-
private
|
|
1826
|
+
private lastSelectionValidity;
|
|
1822
1827
|
/** Original host pricing, kept separate from live server offer overrides. */
|
|
1823
1828
|
private readonly hostPricing;
|
|
1824
1829
|
private root;
|
|
@@ -2300,7 +2305,7 @@ declare class SeatPicker {
|
|
|
2300
2305
|
/** A live delta took one of OUR selected (not yet held) seats — evict + tell the buyer. */
|
|
2301
2306
|
private evictTakenSelections;
|
|
2302
2307
|
private syncTray;
|
|
2303
|
-
private
|
|
2308
|
+
private emitSelectionValidity;
|
|
2304
2309
|
/** Paint the bottom-sheet's collapsed one-liner (pickerTray.ts builds it). */
|
|
2305
2310
|
private renderPeek;
|
|
2306
2311
|
private removeHeldLabel;
|
|
@@ -2385,7 +2390,7 @@ declare class SeatPicker {
|
|
|
2385
2390
|
setSelectableObjects(objects: string[] | null): void;
|
|
2386
2391
|
/** Change the order selection cap without remounting. */
|
|
2387
2392
|
setMaxSelection(maxSelection: number): void;
|
|
2388
|
-
/** Current
|
|
2393
|
+
/** Current selection-rule validity, including held and pending GA tickets. */
|
|
2389
2394
|
getSelectionValidity(): PickerSelectionValidity | null;
|
|
2390
2395
|
/**
|
|
2391
2396
|
* Re-ink the DRAWN MAP after mount, so the canvas can follow a page palette
|
package/dist/index.d.ts
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import { PickerSeat, RendererViewMode, SeatHoverDetails, PickerSelectionValidity, PickerTransport, PickerMapTheme } from '@seatlayer/core';
|
|
2
|
-
export { ExpandedSeat, PickerMapTheme, PickerSelectionValidity, RendererViewMode, SeatHoverDetails } from '@seatlayer/core';
|
|
3
|
-
export { A as AccessIntentForbidsDetails, a as AccessLinkRecord, b as AccessLinkReveal, c as AccessLinkState, d as AccessLinkStatus, e as AccessLinkStatusRecord, f as ArchiveBlockedDetails, g as AssignmentBuckets, h as AssignmentDropDetails, i as AssignmentResult, B as BucketRow, C as ChannelAccessIntent, j as ChannelAccessSummary, k as ChannelAllocationPage, l as ChannelAttribution, m as ChannelAuditEntry, n as ChannelAuditPage, o as ChannelCounts, p as ChannelListResult, q as ChannelPreviewProjection, r as ChannelRecord, s as ChannelReport, t as ChannelReportLinkRecord, u as ChannelReportLinkReveal, v as ChannelReportResult, w as ChannelReportRow, x as ChannelSeatStatus, y as ChannelState, z as ChannelsCapabilities, D as ChannelsClient, E as ChannelsMode, F as ChannelsModeHost, G as ChannelsRowView, H as ChannelsSeatView, I as ControlRoomActivityEntry, J as ControlRoomSectionMetric, K as ControlRoomSnapshot, L as EventCategoryAssignmentResult, M as EventScopedManageToken, N as EventTableBookingMode, O as EventTableBookingResult, P as IntentSwitchBlockedDetails, Q as InventoryBooking, R as InventoryBookingActivity, S as InventoryBookingDetail, T as InventoryBookingObject, U as InventoryBookingState, V as InventoryBookingsPage, W as InventoryBookingsQuery, X as LogEntry, Y as LogPage, Z as ManageApi, _ as ManageApiError, $ as ReportByStatus, a0 as ReportCategoryMeta, a1 as ReportCategoryRow, a2 as ReportResult, a3 as SeatManager, a4 as SeatManagerActionResult, a5 as SeatManagerActivity, a6 as SeatManagerCapability, a7 as SeatManagerConnection, a8 as SeatManagerFilteredSection, a9 as SeatManagerMode, aa as SeatManagerOptions, ab as SeatManagerSelectionValidity, ac as SeatManagerTallies, ad as SelectionSourceRow } from './channelsMode-
|
|
1
|
+
import { PickerSeat, PickerSelectionValidator, RendererViewMode, SeatHoverDetails, PickerSelectionValidity, PickerTransport, PickerMapTheme } from '@seatlayer/core';
|
|
2
|
+
export { ExpandedSeat, PickerMapTheme, PickerSelectionValidator, PickerSelectionValidity, PickerSelectionViolation, RendererViewMode, SeatHoverDetails } from '@seatlayer/core';
|
|
3
|
+
export { A as AccessIntentForbidsDetails, a as AccessLinkRecord, b as AccessLinkReveal, c as AccessLinkState, d as AccessLinkStatus, e as AccessLinkStatusRecord, f as ArchiveBlockedDetails, g as AssignmentBuckets, h as AssignmentDropDetails, i as AssignmentResult, B as BucketRow, C as ChannelAccessIntent, j as ChannelAccessSummary, k as ChannelAllocationPage, l as ChannelAttribution, m as ChannelAuditEntry, n as ChannelAuditPage, o as ChannelCounts, p as ChannelListResult, q as ChannelPreviewProjection, r as ChannelRecord, s as ChannelReport, t as ChannelReportLinkRecord, u as ChannelReportLinkReveal, v as ChannelReportResult, w as ChannelReportRow, x as ChannelSeatStatus, y as ChannelState, z as ChannelsCapabilities, D as ChannelsClient, E as ChannelsMode, F as ChannelsModeHost, G as ChannelsRowView, H as ChannelsSeatView, I as ControlRoomActivityEntry, J as ControlRoomSectionMetric, K as ControlRoomSnapshot, L as EventCategoryAssignmentResult, M as EventScopedManageToken, N as EventTableBookingMode, O as EventTableBookingResult, P as IntentSwitchBlockedDetails, Q as InventoryBooking, R as InventoryBookingActivity, S as InventoryBookingDetail, T as InventoryBookingObject, U as InventoryBookingState, V as InventoryBookingsPage, W as InventoryBookingsQuery, X as LogEntry, Y as LogPage, Z as ManageApi, _ as ManageApiError, $ as ReportByStatus, a0 as ReportCategoryMeta, a1 as ReportCategoryRow, a2 as ReportResult, a3 as SeatManager, a4 as SeatManagerActionResult, a5 as SeatManagerActivity, a6 as SeatManagerCapability, a7 as SeatManagerConnection, a8 as SeatManagerFilteredSection, a9 as SeatManagerMode, aa as SeatManagerOptions, ab as SeatManagerSelectionValidity, ac as SeatManagerTallies, ad as SelectionSourceRow } from './channelsMode-2z9HBOAX.js';
|
|
4
4
|
|
|
5
5
|
/**
|
|
6
6
|
* Buyer access context — the browser half of the Sales Channels contract
|
|
@@ -576,6 +576,8 @@ interface SeatingChartOptions {
|
|
|
576
576
|
selectableObjects?: string[] | null;
|
|
577
577
|
/** Require exactly this many seated/table guest units before the selection is valid. */
|
|
578
578
|
numberOfPlacesToSelect?: number;
|
|
579
|
+
/** Optional local selection guards, enforced again before hold. */
|
|
580
|
+
selectionValidators?: PickerSelectionValidator[];
|
|
579
581
|
/**
|
|
580
582
|
* BCP 47 language for the widget UI — `'de'`, `'es-MX'`, etc. Falls back to
|
|
581
583
|
* the browser language, then English. Built-in: en, es, de, fr. The German
|
|
@@ -613,11 +615,11 @@ interface SeatingChartOptions {
|
|
|
613
615
|
*/
|
|
614
616
|
onSeatHover?: (details: SeatHoverDetails | null) => void;
|
|
615
617
|
onSelectionChange?: (seats: SelectedSeat[]) => void;
|
|
616
|
-
/**
|
|
618
|
+
/** Selection-rule state after each selection change. */
|
|
617
619
|
onSelectionValidityChange?: (state: PickerSelectionValidity) => void;
|
|
618
|
-
/** The
|
|
620
|
+
/** The configured selection rules have just become valid. */
|
|
619
621
|
onSelectionValid?: (seats: SelectedSeat[]) => void;
|
|
620
|
-
/** The
|
|
622
|
+
/** The configured selection rules have just become invalid. */
|
|
621
623
|
onSelectionInvalid?: (state: PickerSelectionValidity) => void;
|
|
622
624
|
/** A manual or programmatic selection reached the active maximum. */
|
|
623
625
|
onSelectionLimit?: (maxSelection: number) => void;
|
|
@@ -731,7 +733,7 @@ declare class SeatingChart {
|
|
|
731
733
|
setSelectableObjects(objects: string[] | null): void;
|
|
732
734
|
/** Change the selection cap without remounting. */
|
|
733
735
|
setMaxSelection(maxSelection: number): void;
|
|
734
|
-
/** Current
|
|
736
|
+
/** Current selection-rule validity, or null when no rules were configured. */
|
|
735
737
|
getSelectionValidity(): PickerSelectionValidity | null;
|
|
736
738
|
/** Hold the current selection. Resolves the hold, or null on a 409 conflict. */
|
|
737
739
|
hold(options?: {
|
|
@@ -973,10 +975,10 @@ declare function bindSeatingChartHandle(getInstance: () => SeatingChart | null):
|
|
|
973
975
|
* two behaviours. React already treated them this way; Vue and Angular did not
|
|
974
976
|
* expose them at all.
|
|
975
977
|
*/
|
|
976
|
-
declare const SEATING_CHART_IDENTITY_PROPS: readonly ["event", "apiBase", "maxSelection", "numberOfPlacesToSelect", "publicKey", "locale", "currency", "colorblindSafe", "initialView", "errorDisplay"];
|
|
978
|
+
declare const SEATING_CHART_IDENTITY_PROPS: readonly ["event", "apiBase", "maxSelection", "numberOfPlacesToSelect", "selectionValidators", "publicKey", "locale", "currency", "colorblindSafe", "initialView", "errorDisplay"];
|
|
977
979
|
type SeatingChartIdentityProp = (typeof SEATING_CHART_IDENTITY_PROPS)[number];
|
|
978
980
|
/** Non-callback options a wrapper accepts as props/inputs and passes straight through. */
|
|
979
|
-
declare const SEATING_CHART_VALUE_PROPS: readonly ["event", "apiBase", "maxSelection", "numberOfPlacesToSelect", "publicKey", "locale", "currency", "colorblindSafe", "initialView", "errorDisplay", "selectedObjects", "selectableObjects", "messages", "seatTooltip", "buyerAccessTokenProvider", "buyerAccessToken"];
|
|
981
|
+
declare const SEATING_CHART_VALUE_PROPS: readonly ["event", "apiBase", "maxSelection", "numberOfPlacesToSelect", "selectionValidators", "publicKey", "locale", "currency", "colorblindSafe", "initialView", "errorDisplay", "selectedObjects", "selectableObjects", "messages", "seatTooltip", "buyerAccessTokenProvider", "buyerAccessToken"];
|
|
980
982
|
type SeatingChartValueProp = (typeof SEATING_CHART_VALUE_PROPS)[number];
|
|
981
983
|
/** Every callback option a wrapper wires to its own event mechanism. */
|
|
982
984
|
declare const SEATING_CHART_CALLBACK_PROPS: readonly ["onSelectionChange", "onSelectionValidityChange", "onSelectionValid", "onSelectionInvalid", "onSelectionLimit", "onHold", "onHoldRestored", "onHoldExpired", "onGAClick", "onError", "onDeckTap", "onHint", "onSeatHover", "onAccessExpired", "onAccessUnavailable", "onSelectedObjectUnavailable"];
|
|
@@ -1513,6 +1515,9 @@ interface SeatPickerOptions {
|
|
|
1513
1515
|
selectableObjects?: string[] | null;
|
|
1514
1516
|
/** Require exactly this many total seated/table/GA guest units before checkout. */
|
|
1515
1517
|
numberOfPlacesToSelect?: number;
|
|
1518
|
+
/** Optional sale guards evaluated after every change and enforced before a
|
|
1519
|
+
* hold: minimum quantity, consecutive seats, and/or no stranded singles. */
|
|
1520
|
+
selectionValidators?: PickerSelectionValidator[];
|
|
1516
1521
|
/** BCP 47 language for the widget UI. Built-in: en, es, de, fr. */
|
|
1517
1522
|
locale?: string;
|
|
1518
1523
|
/** Per-key string overrides layered over the active locale. */
|
|
@@ -1738,11 +1743,11 @@ interface SeatPickerOptions {
|
|
|
1738
1743
|
onBooked?: (handoff: CheckoutHandoff) => void;
|
|
1739
1744
|
/** Selection changed (tap or best-available). */
|
|
1740
1745
|
onSelectionChange?: (seats: PickerSeat[]) => void;
|
|
1741
|
-
/**
|
|
1746
|
+
/** Selection-rule state after each selection change. */
|
|
1742
1747
|
onSelectionValidityChange?: (state: PickerSelectionValidity) => void;
|
|
1743
|
-
/** The configured
|
|
1748
|
+
/** The configured selection rules have just become valid. */
|
|
1744
1749
|
onSelectionValid?: (seats: PickerSeat[]) => void;
|
|
1745
|
-
/** The
|
|
1750
|
+
/** The configured selection rules have just become invalid. */
|
|
1746
1751
|
onSelectionInvalid?: (state: PickerSelectionValidity) => void;
|
|
1747
1752
|
/** A selection attempt reached the active maximum. */
|
|
1748
1753
|
onSelectionLimit?: (maxSelection: number) => void;
|
|
@@ -1818,7 +1823,7 @@ declare class SeatPicker {
|
|
|
1818
1823
|
private maxTickets;
|
|
1819
1824
|
/** Exact ticket count required before checkout; null keeps ordinary 1..max behavior. */
|
|
1820
1825
|
private readonly exactTickets;
|
|
1821
|
-
private
|
|
1826
|
+
private lastSelectionValidity;
|
|
1822
1827
|
/** Original host pricing, kept separate from live server offer overrides. */
|
|
1823
1828
|
private readonly hostPricing;
|
|
1824
1829
|
private root;
|
|
@@ -2300,7 +2305,7 @@ declare class SeatPicker {
|
|
|
2300
2305
|
/** A live delta took one of OUR selected (not yet held) seats — evict + tell the buyer. */
|
|
2301
2306
|
private evictTakenSelections;
|
|
2302
2307
|
private syncTray;
|
|
2303
|
-
private
|
|
2308
|
+
private emitSelectionValidity;
|
|
2304
2309
|
/** Paint the bottom-sheet's collapsed one-liner (pickerTray.ts builds it). */
|
|
2305
2310
|
private renderPeek;
|
|
2306
2311
|
private removeHeldLabel;
|
|
@@ -2385,7 +2390,7 @@ declare class SeatPicker {
|
|
|
2385
2390
|
setSelectableObjects(objects: string[] | null): void;
|
|
2386
2391
|
/** Change the order selection cap without remounting. */
|
|
2387
2392
|
setMaxSelection(maxSelection: number): void;
|
|
2388
|
-
/** Current
|
|
2393
|
+
/** Current selection-rule validity, including held and pending GA tickets. */
|
|
2389
2394
|
getSelectionValidity(): PickerSelectionValidity | null;
|
|
2390
2395
|
/**
|
|
2391
2396
|
* Re-ink the DRAWN MAP after mount, so the canvas can follow a page palette
|