@seatlayer/js 0.67.15 → 0.68.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
@@ -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;
@@ -746,9 +756,11 @@ interface SeatingChartOptions {
746
756
  event: string;
747
757
  /** API origin. Defaults to https://api.seatlayer.io. */
748
758
  apiBase?: string;
749
- /** Reserved for future authenticated rendering — accepted + stored, not yet sent.
750
- * NOT the channel-access credential: a buyer access session is a different
751
- * thing with different authority, and uses the two options below. */
759
+ /**
760
+ * Publishable account key for direct Public-sale bootstrap of a Platform/SDK
761
+ * Event. It is never buyer identity and cannot request private inventory.
762
+ * An explicit buyer-access provider/token below always takes precedence.
763
+ */
752
764
  publicKey?: string;
753
765
  /**
754
766
  * Buyer access session provider — the recommended way to render private
@@ -818,6 +830,12 @@ interface SeatingChartOptions {
818
830
  * real 3D venue view (`setBuyerView('venue3d')`); they remain accepted for
819
831
  * source compatibility and will be removed in the next major. Use `'flat'`. */
820
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;
821
839
  /**
822
840
  * Built-in seat tooltip on mouse hover (seat · category · price · status).
823
841
  * Rendered inside the widget so every host gets it; default true. Turn off
@@ -904,8 +922,13 @@ interface SeatingChartOptions {
904
922
  onSalesClosed?: () => void;
905
923
  /** A programmatic/native map-control action changed serializable map state. */
906
924
  onMapStateChange?: () => void;
907
- /** Pan/zoom/resize settled; useful for host overlays and native map controls. */
925
+ /** rAF-coalesced camera-frame signal for in-page overlays; not native state. */
908
926
  onViewChange?: () => void;
927
+ /** Real buyer-view transitions and 3D camera targets. */
928
+ onBuyerViewChange?: (state: {
929
+ view: SeatingChartBuyerView;
930
+ seatId?: string;
931
+ }) => void;
909
932
  /**
910
933
  * Non-blocking, localized selection advice — currently the orphan-seat hint
911
934
  * (the selection would strand a single free seat between taken neighbors).
@@ -916,10 +939,17 @@ interface SeatingChartOptions {
916
939
  declare class SeatingChart {
917
940
  private readonly opts;
918
941
  private readonly controller;
919
- /** Reserved for future authenticated rendering stored, not yet sent on any request. */
942
+ /** Publishable key used only by the public-only direct bootstrap path. */
920
943
  readonly publicKey?: string;
921
944
  private mount;
922
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_;
923
953
  /** The organizer's language for this event, learned when the chart resolves. */
924
954
  private eventLocale;
925
955
  private rendered;
@@ -931,6 +961,8 @@ declare class SeatingChart {
931
961
  private accessibilityFilter_;
932
962
  private hideLimitedView_;
933
963
  private focusedSection_;
964
+ /** Last rung already exposed to native chrome; raw camera frames stay in-canvas. */
965
+ private lastReportedViewRung_;
934
966
  private accessState_;
935
967
  private tipEl;
936
968
  private tipPos;
@@ -938,8 +970,18 @@ declare class SeatingChart {
938
970
  /** Null for the ordinary public chart — the tokenless path is untouched. */
939
971
  private readonly access;
940
972
  private readonly api;
973
+ private readonly buyerAssetUrls;
974
+ private readonly immersive;
941
975
  private realtime;
942
976
  constructor(options: SeatingChartOptions);
977
+ /**
978
+ * Camera x/y/scale is renderer-local and deliberately absent from the native
979
+ * picker snapshot. Keep pan and pinch frames on the canvas; only a semantic
980
+ * rung transition needs to wake native chrome.
981
+ */
982
+ private handleViewChange;
983
+ /** Record the current rung before publishing an explicit state mutation. */
984
+ private notifyMapStateChange;
943
985
  /** Fetch the chart, mount the renderer, seed statuses and go live. Idempotent. */
944
986
  render(): Promise<this>;
945
987
  /**
@@ -1123,6 +1165,28 @@ declare class SeatingChart {
1123
1165
  zoomOut(): void;
1124
1166
  /** Reset the camera so the whole chart fits the container. */
1125
1167
  zoomToFit(): void;
1168
+ /** Enter or leave the same real lazy-loaded venue scene as SeatPicker. */
1169
+ setBuyerView(view: SeatingChartBuyerView, options?: {
1170
+ flyToSeatId?: string;
1171
+ resetView?: boolean;
1172
+ }): Promise<void>;
1173
+ getBuyerView(): SeatingChartBuyerView;
1174
+ /** Open an authored or chart-derived 360° view for one physical seat. */
1175
+ openSeatView(seatId: string): Promise<void>;
1176
+ /** Explicit Rotate / Move control for native and custom picker chrome. */
1177
+ setVenue3DNavigationMode(mode: SeatingChartNavigationMode): void;
1178
+ /**
1179
+ * Enable or suppress all buyer input inside this chart without unmounting it.
1180
+ *
1181
+ * Native SDKs use this while a native confirmation, quantity prompt, loading
1182
+ * surface or error surface owns the chart area. Disabling input in the DOM is
1183
+ * intentional: an iOS WKWebView can receive the same physical tap beneath a
1184
+ * Flutter overlay even when the Flutter widget is wrapped in IgnorePointer.
1185
+ * Programmatic bridge commands continue to work, so a prompt can still open
1186
+ * view-from-seat or 3D and then re-enable interaction after the handoff.
1187
+ */
1188
+ setInteractionEnabled(enabled: boolean): void;
1189
+ private applyInteractionState;
1126
1190
  /** Release the current hold (if any). No-op when nothing is held. */
1127
1191
  release(): Promise<void>;
1128
1192
  /** Release selected labels from the current hold while keeping the remainder. */
@@ -1776,9 +1840,16 @@ interface SeatPickerOptions {
1776
1840
  * SeatLayer dashboard's own transport) or a fully local mock (demos).
1777
1841
  */
1778
1842
  transport?: PickerTransport;
1779
- /** Reserved for future authenticated rendering. NOT the channel-access
1780
- * credential a buyer access session is a different thing with different
1781
- * authority, and uses the two options below. */
1843
+ /**
1844
+ * Publishable account key (`pk_live_…` / `pk_test_…`) for a public
1845
+ * Platform/SDK Event. With no explicit buyer-access token/provider, the SDK
1846
+ * uses it to bootstrap one origin-bound, Public-sale-only session directly
1847
+ * from SeatLayer and receives chart + inventory in the same request.
1848
+ *
1849
+ * This is not buyer identity and cannot request private channels. An explicit
1850
+ * `buyerAccessTokenProvider` or `buyerAccessToken` below always takes
1851
+ * precedence for login, presale, partner or other scoped inventory.
1852
+ */
1782
1853
  publicKey?: string;
1783
1854
  /**
1784
1855
  * Buyer access session provider — the recommended way to show private channel
@@ -2232,6 +2303,7 @@ declare class SeatPicker implements GaPromptPicker {
2232
2303
  private tipPos;
2233
2304
  /** True while a TAPPED seat card is held open (touch has no hover to lose). */
2234
2305
  private tipPinned;
2306
+ private tipMarkedHoverLabel;
2235
2307
  private lastPointerType;
2236
2308
  private confirmEl;
2237
2309
  private confirmSeat;
@@ -2742,6 +2814,8 @@ declare class SeatPicker implements GaPromptPicker {
2742
2814
  private nightStripFor;
2743
2815
  /** Close a tapped-open card. Safe to call when nothing is pinned. */
2744
2816
  private unpinTooltip;
2817
+ /** A press outside the card dismisses it; its own controls must reach click. */
2818
+ private handleMapPointerDown;
2745
2819
  private updateTooltip;
2746
2820
  /**
2747
2821
  * Push the wrapper's current seat marks at the renderer.
@@ -2999,6 +3073,7 @@ interface PerformanceGroupDescriptor {
2999
3073
  venue: string;
3000
3074
  timezone: string | null;
3001
3075
  inventoryModelVersion: 2;
3076
+ inclusionMode?: 'fixed' | 'flexible_dates';
3002
3077
  performanceCount: number;
3003
3078
  /** Present when the server versions the inclusion set. See {@link PerformanceGroupAvailability}. */
3004
3079
  revision?: string;
@@ -3094,6 +3169,8 @@ interface PerformanceGroupCheckoutHandoff {
3094
3169
  expiresAt: number;
3095
3170
  performanceGroup: PerformanceGroupDescriptor;
3096
3171
  selectionMode: PerformanceGroupSelectionMode;
3172
+ /** Performances actually included in this hold (all members for fixed groups). */
3173
+ performanceKeys: string[];
3097
3174
  /** Logical booking identities only. Re-inspect the opaque hold on your server. */
3098
3175
  seatLabels: string[];
3099
3176
  /** Present for per-performance selection. Prices and child hold IDs remain server-only. */
@@ -3212,6 +3289,9 @@ declare class PerformanceGroupPicker {
3212
3289
  private progressHost;
3213
3290
  private legendHost;
3214
3291
  private paneHost;
3292
+ private datesSummaryHost;
3293
+ private datesCardsHost;
3294
+ private resettingFlexibleSelection;
3215
3295
  /** Labels pushed at the renderer on the last pull, so departures clear. */
3216
3296
  private markedLabels;
3217
3297
  private holdTicker;
@@ -3306,6 +3386,11 @@ declare class PerformanceGroupPicker {
3306
3386
  * the buyer could reasonably hold us to.
3307
3387
  */
3308
3388
  private heldTotal;
3389
+ private includedPerformances;
3390
+ /** Keep the persistent date promise aligned with the subset used by HOLD. */
3391
+ private syncIncludedDates;
3392
+ /** Turn one two-tone seat into a normal selection without changing charts. */
3393
+ private selectPartialSeat;
3309
3394
  /** One tick a second while a hold is live, so the countdown line is true. */
3310
3395
  private syncHoldTicker;
3311
3396
  /**
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;
@@ -746,9 +756,11 @@ interface SeatingChartOptions {
746
756
  event: string;
747
757
  /** API origin. Defaults to https://api.seatlayer.io. */
748
758
  apiBase?: string;
749
- /** Reserved for future authenticated rendering — accepted + stored, not yet sent.
750
- * NOT the channel-access credential: a buyer access session is a different
751
- * thing with different authority, and uses the two options below. */
759
+ /**
760
+ * Publishable account key for direct Public-sale bootstrap of a Platform/SDK
761
+ * Event. It is never buyer identity and cannot request private inventory.
762
+ * An explicit buyer-access provider/token below always takes precedence.
763
+ */
752
764
  publicKey?: string;
753
765
  /**
754
766
  * Buyer access session provider — the recommended way to render private
@@ -818,6 +830,12 @@ interface SeatingChartOptions {
818
830
  * real 3D venue view (`setBuyerView('venue3d')`); they remain accepted for
819
831
  * source compatibility and will be removed in the next major. Use `'flat'`. */
820
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;
821
839
  /**
822
840
  * Built-in seat tooltip on mouse hover (seat · category · price · status).
823
841
  * Rendered inside the widget so every host gets it; default true. Turn off
@@ -904,8 +922,13 @@ interface SeatingChartOptions {
904
922
  onSalesClosed?: () => void;
905
923
  /** A programmatic/native map-control action changed serializable map state. */
906
924
  onMapStateChange?: () => void;
907
- /** Pan/zoom/resize settled; useful for host overlays and native map controls. */
925
+ /** rAF-coalesced camera-frame signal for in-page overlays; not native state. */
908
926
  onViewChange?: () => void;
927
+ /** Real buyer-view transitions and 3D camera targets. */
928
+ onBuyerViewChange?: (state: {
929
+ view: SeatingChartBuyerView;
930
+ seatId?: string;
931
+ }) => void;
909
932
  /**
910
933
  * Non-blocking, localized selection advice — currently the orphan-seat hint
911
934
  * (the selection would strand a single free seat between taken neighbors).
@@ -916,10 +939,17 @@ interface SeatingChartOptions {
916
939
  declare class SeatingChart {
917
940
  private readonly opts;
918
941
  private readonly controller;
919
- /** Reserved for future authenticated rendering stored, not yet sent on any request. */
942
+ /** Publishable key used only by the public-only direct bootstrap path. */
920
943
  readonly publicKey?: string;
921
944
  private mount;
922
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_;
923
953
  /** The organizer's language for this event, learned when the chart resolves. */
924
954
  private eventLocale;
925
955
  private rendered;
@@ -931,6 +961,8 @@ declare class SeatingChart {
931
961
  private accessibilityFilter_;
932
962
  private hideLimitedView_;
933
963
  private focusedSection_;
964
+ /** Last rung already exposed to native chrome; raw camera frames stay in-canvas. */
965
+ private lastReportedViewRung_;
934
966
  private accessState_;
935
967
  private tipEl;
936
968
  private tipPos;
@@ -938,8 +970,18 @@ declare class SeatingChart {
938
970
  /** Null for the ordinary public chart — the tokenless path is untouched. */
939
971
  private readonly access;
940
972
  private readonly api;
973
+ private readonly buyerAssetUrls;
974
+ private readonly immersive;
941
975
  private realtime;
942
976
  constructor(options: SeatingChartOptions);
977
+ /**
978
+ * Camera x/y/scale is renderer-local and deliberately absent from the native
979
+ * picker snapshot. Keep pan and pinch frames on the canvas; only a semantic
980
+ * rung transition needs to wake native chrome.
981
+ */
982
+ private handleViewChange;
983
+ /** Record the current rung before publishing an explicit state mutation. */
984
+ private notifyMapStateChange;
943
985
  /** Fetch the chart, mount the renderer, seed statuses and go live. Idempotent. */
944
986
  render(): Promise<this>;
945
987
  /**
@@ -1123,6 +1165,28 @@ declare class SeatingChart {
1123
1165
  zoomOut(): void;
1124
1166
  /** Reset the camera so the whole chart fits the container. */
1125
1167
  zoomToFit(): void;
1168
+ /** Enter or leave the same real lazy-loaded venue scene as SeatPicker. */
1169
+ setBuyerView(view: SeatingChartBuyerView, options?: {
1170
+ flyToSeatId?: string;
1171
+ resetView?: boolean;
1172
+ }): Promise<void>;
1173
+ getBuyerView(): SeatingChartBuyerView;
1174
+ /** Open an authored or chart-derived 360° view for one physical seat. */
1175
+ openSeatView(seatId: string): Promise<void>;
1176
+ /** Explicit Rotate / Move control for native and custom picker chrome. */
1177
+ setVenue3DNavigationMode(mode: SeatingChartNavigationMode): void;
1178
+ /**
1179
+ * Enable or suppress all buyer input inside this chart without unmounting it.
1180
+ *
1181
+ * Native SDKs use this while a native confirmation, quantity prompt, loading
1182
+ * surface or error surface owns the chart area. Disabling input in the DOM is
1183
+ * intentional: an iOS WKWebView can receive the same physical tap beneath a
1184
+ * Flutter overlay even when the Flutter widget is wrapped in IgnorePointer.
1185
+ * Programmatic bridge commands continue to work, so a prompt can still open
1186
+ * view-from-seat or 3D and then re-enable interaction after the handoff.
1187
+ */
1188
+ setInteractionEnabled(enabled: boolean): void;
1189
+ private applyInteractionState;
1126
1190
  /** Release the current hold (if any). No-op when nothing is held. */
1127
1191
  release(): Promise<void>;
1128
1192
  /** Release selected labels from the current hold while keeping the remainder. */
@@ -1776,9 +1840,16 @@ interface SeatPickerOptions {
1776
1840
  * SeatLayer dashboard's own transport) or a fully local mock (demos).
1777
1841
  */
1778
1842
  transport?: PickerTransport;
1779
- /** Reserved for future authenticated rendering. NOT the channel-access
1780
- * credential a buyer access session is a different thing with different
1781
- * authority, and uses the two options below. */
1843
+ /**
1844
+ * Publishable account key (`pk_live_…` / `pk_test_…`) for a public
1845
+ * Platform/SDK Event. With no explicit buyer-access token/provider, the SDK
1846
+ * uses it to bootstrap one origin-bound, Public-sale-only session directly
1847
+ * from SeatLayer and receives chart + inventory in the same request.
1848
+ *
1849
+ * This is not buyer identity and cannot request private channels. An explicit
1850
+ * `buyerAccessTokenProvider` or `buyerAccessToken` below always takes
1851
+ * precedence for login, presale, partner or other scoped inventory.
1852
+ */
1782
1853
  publicKey?: string;
1783
1854
  /**
1784
1855
  * Buyer access session provider — the recommended way to show private channel
@@ -2232,6 +2303,7 @@ declare class SeatPicker implements GaPromptPicker {
2232
2303
  private tipPos;
2233
2304
  /** True while a TAPPED seat card is held open (touch has no hover to lose). */
2234
2305
  private tipPinned;
2306
+ private tipMarkedHoverLabel;
2235
2307
  private lastPointerType;
2236
2308
  private confirmEl;
2237
2309
  private confirmSeat;
@@ -2742,6 +2814,8 @@ declare class SeatPicker implements GaPromptPicker {
2742
2814
  private nightStripFor;
2743
2815
  /** Close a tapped-open card. Safe to call when nothing is pinned. */
2744
2816
  private unpinTooltip;
2817
+ /** A press outside the card dismisses it; its own controls must reach click. */
2818
+ private handleMapPointerDown;
2745
2819
  private updateTooltip;
2746
2820
  /**
2747
2821
  * Push the wrapper's current seat marks at the renderer.
@@ -2999,6 +3073,7 @@ interface PerformanceGroupDescriptor {
2999
3073
  venue: string;
3000
3074
  timezone: string | null;
3001
3075
  inventoryModelVersion: 2;
3076
+ inclusionMode?: 'fixed' | 'flexible_dates';
3002
3077
  performanceCount: number;
3003
3078
  /** Present when the server versions the inclusion set. See {@link PerformanceGroupAvailability}. */
3004
3079
  revision?: string;
@@ -3094,6 +3169,8 @@ interface PerformanceGroupCheckoutHandoff {
3094
3169
  expiresAt: number;
3095
3170
  performanceGroup: PerformanceGroupDescriptor;
3096
3171
  selectionMode: PerformanceGroupSelectionMode;
3172
+ /** Performances actually included in this hold (all members for fixed groups). */
3173
+ performanceKeys: string[];
3097
3174
  /** Logical booking identities only. Re-inspect the opaque hold on your server. */
3098
3175
  seatLabels: string[];
3099
3176
  /** Present for per-performance selection. Prices and child hold IDs remain server-only. */
@@ -3212,6 +3289,9 @@ declare class PerformanceGroupPicker {
3212
3289
  private progressHost;
3213
3290
  private legendHost;
3214
3291
  private paneHost;
3292
+ private datesSummaryHost;
3293
+ private datesCardsHost;
3294
+ private resettingFlexibleSelection;
3215
3295
  /** Labels pushed at the renderer on the last pull, so departures clear. */
3216
3296
  private markedLabels;
3217
3297
  private holdTicker;
@@ -3306,6 +3386,11 @@ declare class PerformanceGroupPicker {
3306
3386
  * the buyer could reasonably hold us to.
3307
3387
  */
3308
3388
  private heldTotal;
3389
+ private includedPerformances;
3390
+ /** Keep the persistent date promise aligned with the subset used by HOLD. */
3391
+ private syncIncludedDates;
3392
+ /** Turn one two-tone seat into a normal selection without changing charts. */
3393
+ private selectPartialSeat;
3309
3394
  /** One tick a second while a hold is live, so the countdown line is true. */
3310
3395
  private syncHoldTicker;
3311
3396
  /**