@seatlayer/core 0.51.0 → 0.52.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.
Files changed (37) hide show
  1. package/dist/{chunk-GD267BFB.js → chunk-UID7KN44.js} +75 -2
  2. package/dist/chunk-UID7KN44.js.map +1 -0
  3. package/dist/core/seatConfidence.d.cts +1 -1
  4. package/dist/core/seatConfidence.d.ts +1 -1
  5. package/dist/{de-V53JPFHN.js → de-YGODYJ3E.js} +3 -3
  6. package/dist/de-YGODYJ3E.js.map +1 -0
  7. package/dist/{es-37ISLCZA.js → es-VMBTGVFQ.js} +3 -3
  8. package/dist/es-VMBTGVFQ.js.map +1 -0
  9. package/dist/{fr-QKK2T64Q.js → fr-SLBE2ULB.js} +3 -3
  10. package/dist/fr-SLBE2ULB.js.map +1 -0
  11. package/dist/index.cjs +647 -60
  12. package/dist/index.cjs.map +1 -1
  13. package/dist/index.d.cts +131 -17
  14. package/dist/index.d.ts +131 -17
  15. package/dist/index.js +575 -58
  16. package/dist/index.js.map +1 -1
  17. package/dist/picker/minimapGeometry.cjs +80 -0
  18. package/dist/picker/minimapGeometry.cjs.map +1 -0
  19. package/dist/picker/minimapGeometry.d.cts +37 -0
  20. package/dist/picker/minimapGeometry.d.ts +37 -0
  21. package/dist/picker/minimapGeometry.js +52 -0
  22. package/dist/picker/minimapGeometry.js.map +1 -0
  23. package/dist/{types-DR54nqKL.d.cts → types-tLOunI-B.d.cts} +131 -1
  24. package/dist/{types-DR54nqKL.d.ts → types-tLOunI-B.d.ts} +131 -1
  25. package/dist/view3d/crossfade/panorama.d.cts +1 -1
  26. package/dist/view3d/crossfade/panorama.d.ts +1 -1
  27. package/dist/view3d/index.cjs +1158 -123
  28. package/dist/view3d/index.cjs.map +1 -1
  29. package/dist/view3d/index.d.cts +20 -12
  30. package/dist/view3d/index.d.ts +20 -12
  31. package/dist/view3d/index.js +1158 -122
  32. package/dist/view3d/index.js.map +1 -1
  33. package/package.json +14 -1
  34. package/dist/chunk-GD267BFB.js.map +0 -1
  35. package/dist/de-V53JPFHN.js.map +0 -1
  36. package/dist/es-37ISLCZA.js.map +0 -1
  37. package/dist/fr-QKK2T64Q.js.map +0 -1
@@ -1,4 +1,4 @@
1
- import { C as ChartDoc, E as ExpandedSeat } from '../types-DR54nqKL.cjs';
1
+ import { C as ChartDoc, E as ExpandedSeat } from '../types-tLOunI-B.cjs';
2
2
  import { SeatView } from './crossfade/panorama.cjs';
3
3
 
4
4
  /**
@@ -119,7 +119,7 @@ interface Theme3D {
119
119
  * unreadable confetti.
120
120
  */
121
121
 
122
- type LabelKind = 'zone' | 'section' | 'ga' | 'annotation' | 'booth' | 'row' | 'seat';
122
+ type LabelKind = 'floor' | 'zone' | 'section' | 'ga' | 'annotation' | 'booth' | 'row' | 'seat';
123
123
  interface SceneLabel {
124
124
  id: string;
125
125
  kind: LabelKind;
@@ -130,6 +130,8 @@ interface SceneLabel {
130
130
  color?: string;
131
131
  /** Authored rotation in degrees, for annotations that specify one. */
132
132
  rotation?: number;
133
+ /** Owning physical level, so a focused floor never keeps another level's text. */
134
+ floorIndex?: number;
133
135
  }
134
136
 
135
137
  /**
@@ -287,6 +289,7 @@ interface SceneZone {
287
289
  */
288
290
  interface SceneSection {
289
291
  id: string;
292
+ floorIndex: number;
290
293
  /** Buyer-facing name, matching the section label. */
291
294
  label: string;
292
295
  seatCount: number;
@@ -314,6 +317,13 @@ interface SceneFloor {
314
317
  seatCount: number;
315
318
  center: [number, number, number];
316
319
  radius: number;
320
+ /** Complete active-level fit, including its inferred physical relief. */
321
+ box: {
322
+ min: [number, number, number];
323
+ max: [number, number, number];
324
+ };
325
+ /** Presentation-adjusted focal point used by section and seat views. */
326
+ focalWorld: [number, number, number];
317
327
  }
318
328
  interface SceneModel {
319
329
  /** Every non-seat surface merged into one triangle soup (1 draw call). */
@@ -368,10 +378,9 @@ interface SceneModel {
368
378
  /**
369
379
  * The venue's floors, in authored order. A single-floor chart reports one.
370
380
  *
371
- * Every shipped multi-floor template puts all its floors at baseHeightM 0 and
372
- * takes height from the sections instead, so floors are a logical grouping,
373
- * not a physical stack. What they need is ISOLATION: draw all three of an
374
- * opera house at once and the balcony sits over the parterre.
381
+ * Multi-floor scenes retain the authored x/z registration and the
382
+ * authored/inferred baseHeightM relief. Selecting a floor isolates it without
383
+ * changing the canonical chart.
375
384
  */
376
385
  floors: SceneFloor[];
377
386
  /**
@@ -507,7 +516,7 @@ interface Venue3DHandle {
507
516
  * view-from-seat panorama. Resolves at flight end; a drag cancels it, a second
508
517
  * call retargets, dispose resolves early. Reduced-motion → a short fade. */
509
518
  flyToSeat(seatId: string): Promise<void>;
510
- /** Cancel a seat flight/panorama and frame the complete venue. */
519
+ /** Cancel a seat flight/panorama and fit the active floor or complete venue. */
511
520
  focusOverview(): void;
512
521
  resize(): void;
513
522
  stats(): Venue3DStats;
@@ -549,11 +558,10 @@ interface Venue3DHandle {
549
558
  /**
550
559
  * Isolate one floor, or pass null to show the whole venue.
551
560
  *
552
- * Every shipped multi-floor chart puts its floors at the same base height and
553
- * takes relief from the sections, so all three of an opera house draw at once
554
- * and the balcony sits over the parterre. Unfocused floors are DIMMED rather
555
- * than hidden, so the buyer keeps the venue as context while looking at the
556
- * level they are booking. Returns false for an unknown index.
561
+ * The complete venue uses a rigid, non-overlapping level composition derived
562
+ * from the same native 2D geometry. Entering a level hides the other levels so
563
+ * opaque decks cannot cover the seats being inspected. Returns false for an
564
+ * unknown index.
557
565
  */
558
566
  focusFloor(index: number | null): boolean;
559
567
  }
@@ -1,4 +1,4 @@
1
- import { C as ChartDoc, E as ExpandedSeat } from '../types-DR54nqKL.js';
1
+ import { C as ChartDoc, E as ExpandedSeat } from '../types-tLOunI-B.js';
2
2
  import { SeatView } from './crossfade/panorama.js';
3
3
 
4
4
  /**
@@ -119,7 +119,7 @@ interface Theme3D {
119
119
  * unreadable confetti.
120
120
  */
121
121
 
122
- type LabelKind = 'zone' | 'section' | 'ga' | 'annotation' | 'booth' | 'row' | 'seat';
122
+ type LabelKind = 'floor' | 'zone' | 'section' | 'ga' | 'annotation' | 'booth' | 'row' | 'seat';
123
123
  interface SceneLabel {
124
124
  id: string;
125
125
  kind: LabelKind;
@@ -130,6 +130,8 @@ interface SceneLabel {
130
130
  color?: string;
131
131
  /** Authored rotation in degrees, for annotations that specify one. */
132
132
  rotation?: number;
133
+ /** Owning physical level, so a focused floor never keeps another level's text. */
134
+ floorIndex?: number;
133
135
  }
134
136
 
135
137
  /**
@@ -287,6 +289,7 @@ interface SceneZone {
287
289
  */
288
290
  interface SceneSection {
289
291
  id: string;
292
+ floorIndex: number;
290
293
  /** Buyer-facing name, matching the section label. */
291
294
  label: string;
292
295
  seatCount: number;
@@ -314,6 +317,13 @@ interface SceneFloor {
314
317
  seatCount: number;
315
318
  center: [number, number, number];
316
319
  radius: number;
320
+ /** Complete active-level fit, including its inferred physical relief. */
321
+ box: {
322
+ min: [number, number, number];
323
+ max: [number, number, number];
324
+ };
325
+ /** Presentation-adjusted focal point used by section and seat views. */
326
+ focalWorld: [number, number, number];
317
327
  }
318
328
  interface SceneModel {
319
329
  /** Every non-seat surface merged into one triangle soup (1 draw call). */
@@ -368,10 +378,9 @@ interface SceneModel {
368
378
  /**
369
379
  * The venue's floors, in authored order. A single-floor chart reports one.
370
380
  *
371
- * Every shipped multi-floor template puts all its floors at baseHeightM 0 and
372
- * takes height from the sections instead, so floors are a logical grouping,
373
- * not a physical stack. What they need is ISOLATION: draw all three of an
374
- * opera house at once and the balcony sits over the parterre.
381
+ * Multi-floor scenes retain the authored x/z registration and the
382
+ * authored/inferred baseHeightM relief. Selecting a floor isolates it without
383
+ * changing the canonical chart.
375
384
  */
376
385
  floors: SceneFloor[];
377
386
  /**
@@ -507,7 +516,7 @@ interface Venue3DHandle {
507
516
  * view-from-seat panorama. Resolves at flight end; a drag cancels it, a second
508
517
  * call retargets, dispose resolves early. Reduced-motion → a short fade. */
509
518
  flyToSeat(seatId: string): Promise<void>;
510
- /** Cancel a seat flight/panorama and frame the complete venue. */
519
+ /** Cancel a seat flight/panorama and fit the active floor or complete venue. */
511
520
  focusOverview(): void;
512
521
  resize(): void;
513
522
  stats(): Venue3DStats;
@@ -549,11 +558,10 @@ interface Venue3DHandle {
549
558
  /**
550
559
  * Isolate one floor, or pass null to show the whole venue.
551
560
  *
552
- * Every shipped multi-floor chart puts its floors at the same base height and
553
- * takes relief from the sections, so all three of an opera house draw at once
554
- * and the balcony sits over the parterre. Unfocused floors are DIMMED rather
555
- * than hidden, so the buyer keeps the venue as context while looking at the
556
- * level they are booking. Returns false for an unknown index.
561
+ * The complete venue uses a rigid, non-overlapping level composition derived
562
+ * from the same native 2D geometry. Entering a level hides the other levels so
563
+ * opaque decks cannot cover the seats being inspected. Returns false for an
564
+ * unknown index.
557
565
  */
558
566
  focusFloor(index: number | null): boolean;
559
567
  }