@seatlayer/core 0.48.2 → 0.49.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.
@@ -1,4 +1,4 @@
1
- import { C as ChartDoc, E as ExpandedSeat } from '../types-CE63BK0j.cjs';
1
+ import { C as ChartDoc, E as ExpandedSeat } from '../types-DR54nqKL.cjs';
2
2
  import { SeatView } from './crossfade/panorama.cjs';
3
3
 
4
4
  /**
@@ -158,6 +158,12 @@ interface MeshData {
158
158
  * one is the only way to look at the level you are actually booking.
159
159
  */
160
160
  floor: Float32Array;
161
+ /**
162
+ * Small renderer material class per vertex:
163
+ * 0 = ordinary structure, 1 = authored powered display,
164
+ * 2 = row riser, 3 = row tread.
165
+ */
166
+ material: Float32Array;
161
167
  /** Vertex count (position.length / 3). */
162
168
  count: number;
163
169
  }
@@ -320,6 +326,11 @@ interface SceneModel {
320
326
  radius: number;
321
327
  groundY: number;
322
328
  };
329
+ /** Exact enclosing sphere for rendered solids plus near-field seat detail. */
330
+ renderBounds: {
331
+ center: [number, number, number];
332
+ radius: number;
333
+ };
323
334
  /** 5 × vec3 flat LUT for the seat fragment shader. */
324
335
  stateColorLUT: number[];
325
336
  /** Resolved colours for this chart's authored theme (background, seat scale). */
@@ -433,6 +444,10 @@ interface Venue3DInput {
433
444
  interface Venue3DOptions {
434
445
  /** Fired on a tap that hits a seat (GPU color-pick). Not fired on empty taps. */
435
446
  onSeatPick?: (seatId: string) => void;
447
+ /** Fired when the buyer taps a visible seat that cannot currently be selected.
448
+ * The host can explain held/sold/filter state without turning inspection into
449
+ * selection or briefly painting the unavailable seat as the buyer's choice. */
450
+ onSeatInspect?: (seatId: string, state: SeatState3D) => void;
436
451
  /** Overview → section drill state. A stand tap reports its owning section;
437
452
  * Overview reports null so host navigation can stay in sync. */
438
453
  onSectionFocusChange?: (sectionId: string | null) => void;
@@ -444,6 +459,12 @@ interface Venue3DOptions {
444
459
  * Called at PICK time to pre-render, so flyToSeat has zero wait on landing.
445
460
  */
446
461
  getSeatView?: (seatId: string) => SeatView | Promise<SeatView>;
462
+ /** Buyer-facing action for entering the supplied seat view. The caller knows
463
+ * whether that source is live geometry or an authored panorama. */
464
+ seatViewActionLabel?: (seatId: string) => string;
465
+ /** Land at the modeled seated-eye pose instead of the elevated inspection
466
+ * anchor. Useful when live geometry is the primary buyer view. */
467
+ arriveAtSeatEye?: boolean;
447
468
  /**
448
469
  * Decoupled analytics sink. Emits the venue-view journey: `3d_opened`,
449
470
  * `3d_orbit_engaged` (first user gesture), `3d_seat_picked`,
@@ -1,4 +1,4 @@
1
- import { C as ChartDoc, E as ExpandedSeat } from '../types-CE63BK0j.js';
1
+ import { C as ChartDoc, E as ExpandedSeat } from '../types-DR54nqKL.js';
2
2
  import { SeatView } from './crossfade/panorama.js';
3
3
 
4
4
  /**
@@ -158,6 +158,12 @@ interface MeshData {
158
158
  * one is the only way to look at the level you are actually booking.
159
159
  */
160
160
  floor: Float32Array;
161
+ /**
162
+ * Small renderer material class per vertex:
163
+ * 0 = ordinary structure, 1 = authored powered display,
164
+ * 2 = row riser, 3 = row tread.
165
+ */
166
+ material: Float32Array;
161
167
  /** Vertex count (position.length / 3). */
162
168
  count: number;
163
169
  }
@@ -320,6 +326,11 @@ interface SceneModel {
320
326
  radius: number;
321
327
  groundY: number;
322
328
  };
329
+ /** Exact enclosing sphere for rendered solids plus near-field seat detail. */
330
+ renderBounds: {
331
+ center: [number, number, number];
332
+ radius: number;
333
+ };
323
334
  /** 5 × vec3 flat LUT for the seat fragment shader. */
324
335
  stateColorLUT: number[];
325
336
  /** Resolved colours for this chart's authored theme (background, seat scale). */
@@ -433,6 +444,10 @@ interface Venue3DInput {
433
444
  interface Venue3DOptions {
434
445
  /** Fired on a tap that hits a seat (GPU color-pick). Not fired on empty taps. */
435
446
  onSeatPick?: (seatId: string) => void;
447
+ /** Fired when the buyer taps a visible seat that cannot currently be selected.
448
+ * The host can explain held/sold/filter state without turning inspection into
449
+ * selection or briefly painting the unavailable seat as the buyer's choice. */
450
+ onSeatInspect?: (seatId: string, state: SeatState3D) => void;
436
451
  /** Overview → section drill state. A stand tap reports its owning section;
437
452
  * Overview reports null so host navigation can stay in sync. */
438
453
  onSectionFocusChange?: (sectionId: string | null) => void;
@@ -444,6 +459,12 @@ interface Venue3DOptions {
444
459
  * Called at PICK time to pre-render, so flyToSeat has zero wait on landing.
445
460
  */
446
461
  getSeatView?: (seatId: string) => SeatView | Promise<SeatView>;
462
+ /** Buyer-facing action for entering the supplied seat view. The caller knows
463
+ * whether that source is live geometry or an authored panorama. */
464
+ seatViewActionLabel?: (seatId: string) => string;
465
+ /** Land at the modeled seated-eye pose instead of the elevated inspection
466
+ * anchor. Useful when live geometry is the primary buyer view. */
467
+ arriveAtSeatEye?: boolean;
447
468
  /**
448
469
  * Decoupled analytics sink. Emits the venue-view journey: `3d_opened`,
449
470
  * `3d_orbit_engaged` (first user gesture), `3d_seat_picked`,