@seatlayer/core 0.68.1 → 0.70.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/dist/ar-R52D47QC.js +1 -0
- package/dist/be-P34NRZPF.js +1 -0
- package/dist/bg-4TEE6DSQ.js +1 -0
- package/dist/ca-V4A6DRPR.js +1 -0
- package/dist/{categoryInventory-DLDU-RSw.d.ts → categoryInventory-BiUDSvBt.d.ts} +1 -1
- package/dist/{categoryInventory-DZapeGK6.d.cts → categoryInventory-DBqgM5in.d.cts} +1 -1
- package/dist/{chunk-6JWYLLWU.js → chunk-5AHUGRHH.js} +1 -1
- package/dist/{chunk-RMNTGICO.js → chunk-652LV66L.js} +1 -1
- package/dist/{chunk-BV6FHURE.js → chunk-7OJ6SB6V.js} +1 -1
- package/dist/{chunk-HZT2U5IY.js → chunk-A27USMF7.js} +1 -1
- package/dist/{chunk-YYRUKI7A.js → chunk-AWPHGLTU.js} +1 -1
- package/dist/{chunk-WZ6ZNPNT.js → chunk-UHPX2P7O.js} +1 -1
- package/dist/{chunk-QYZ3P5L6.js → chunk-WXWJZ5DO.js} +1 -1
- package/dist/chunk-X3K36XZM.js +1 -0
- package/dist/core/chart-ops/index.cjs +1 -1
- package/dist/core/chart-ops/index.d.cts +4 -4
- package/dist/core/chart-ops/index.d.ts +4 -4
- package/dist/core/chart-ops/index.js +1 -1
- package/dist/core/inventory/index.d.cts +4 -4
- package/dist/core/inventory/index.d.ts +4 -4
- package/dist/core/inventory/index.js +1 -1
- package/dist/core/layout/index.cjs +1 -1
- package/dist/core/layout/index.d.cts +4 -4
- package/dist/core/layout/index.d.ts +4 -4
- package/dist/core/layout/index.js +1 -1
- package/dist/core/quality/index.d.cts +3 -3
- package/dist/core/quality/index.d.ts +3 -3
- package/dist/core/render-assets/index.d.cts +1 -1
- package/dist/core/render-assets/index.d.ts +1 -1
- package/dist/core/render-assets/index.js +1 -1
- package/dist/core/seatConfidence.d.cts +1 -1
- package/dist/core/seatConfidence.d.ts +1 -1
- package/dist/core/sections/index.d.cts +5 -5
- package/dist/core/sections/index.d.ts +5 -5
- package/dist/core/sections/index.js +1 -1
- package/dist/cs-GR5H3ZRU.js +1 -0
- package/dist/cy-XWYNMRNE.js +1 -0
- package/dist/da-NOYMEVP6.js +1 -0
- package/dist/de-LFHFC2XO.js +1 -0
- package/dist/el-AS3436E6.js +1 -0
- package/dist/es-IWBWYUHH.js +1 -0
- package/dist/et-VV7YGFEV.js +1 -0
- package/dist/{eventConfigurations-kZpADDdx.d.ts → eventConfigurations-CA2XhDig.d.ts} +1 -1
- package/dist/{eventConfigurations-C_dst7Ro.d.cts → eventConfigurations-Csdxe89O.d.cts} +1 -1
- package/dist/fa-JYLN4BIM.js +1 -0
- package/dist/fi-TXRN726I.js +1 -0
- package/dist/fr-PKEU6NKI.js +1 -0
- package/dist/he-H53ZPEAF.js +1 -0
- package/dist/hr-AIG6RMUY.js +1 -0
- package/dist/hu-KE64252D.js +1 -0
- package/dist/index.cjs +1 -1
- package/dist/index.d.cts +259 -94
- package/dist/index.d.ts +259 -94
- package/dist/index.js +1 -1
- package/dist/it-GVT7VIKV.js +1 -0
- package/dist/ja-WMRRUDVD.js +1 -0
- package/dist/ku-77V6NTW7.js +1 -0
- package/dist/{labeling-Br0U7E-5.d.ts → labeling-CxZWjZBN.d.ts} +1 -1
- package/dist/{labeling-B07AFOvn.d.cts → labeling-DG-Sc8VW.d.cts} +1 -1
- package/dist/{layout-BjkVhn52.d.cts → layout-BxJIZjPm.d.cts} +19 -5
- package/dist/{layout-BdeBpWf8.d.ts → layout-C6YaCOnZ.d.ts} +19 -5
- package/dist/localeLoaders-2KZHFEV7.js +1 -0
- package/dist/lt-7ICKT4ED.js +1 -0
- package/dist/lv-NTO2456Y.js +1 -0
- package/dist/nl-IYEEWC4A.js +1 -0
- package/dist/no-CKH6R5N2.js +1 -0
- package/dist/pl-ALK57HKB.js +1 -0
- package/dist/pt-EYFSXBVZ.js +1 -0
- package/dist/{renderedQuality-Dn6GyPPj.d.ts → renderedQuality-CWwy14lb.d.ts} +1 -1
- package/dist/{renderedQuality-C-L_RuPB.d.cts → renderedQuality-CgBQYezj.d.cts} +1 -1
- package/dist/{renderer-BGmZn_bq.d.ts → renderer-DIcDImOu.d.ts} +85 -4
- package/dist/{renderer-BHInJ52w.d.cts → renderer-DmG3C8vD.d.cts} +85 -4
- package/dist/ro-EUFVCBVY.js +1 -0
- package/dist/ru-XAIYWENX.js +1 -0
- package/dist/{sections-DCRfHaw4.d.ts → sections-87qiciyN.d.ts} +1 -1
- package/dist/{sections-BjzyfqGZ.d.cts → sections-Bb0L9lDT.d.cts} +1 -1
- package/dist/{segmentedRowModel-jfYcGWPd.d.cts → segmentedRowModel-BqiM0U65.d.cts} +1 -1
- package/dist/{segmentedRowModel-DQggl3UO.d.ts → segmentedRowModel-CEP6crcl.d.ts} +1 -1
- package/dist/sk-QIOFO4TV.js +1 -0
- package/dist/sl-37I57K2X.js +1 -0
- package/dist/sr-HE5DILFD.js +1 -0
- package/dist/sv-7SVBFLY3.js +1 -0
- package/dist/{ticketRestrictions-CtgOd-2p.d.ts → ticketRestrictions-B_qXQobd.d.ts} +2 -2
- package/dist/{ticketRestrictions-mnICaF5t.d.cts → ticketRestrictions-Bj8PBX_x.d.cts} +2 -2
- package/dist/tr-JNA4YJEJ.js +1 -0
- package/dist/{types-BjTzKc2D.d.cts → types-DNztpn7q.d.cts} +9 -0
- package/dist/{types-BjTzKc2D.d.ts → types-DNztpn7q.d.ts} +9 -0
- package/dist/uk-2723G7DI.js +1 -0
- package/dist/view3d/crossfade/panorama.d.cts +1 -1
- package/dist/view3d/crossfade/panorama.d.ts +1 -1
- package/dist/view3d/index.cjs +31 -31
- package/dist/view3d/index.d.cts +86 -4
- package/dist/view3d/index.d.ts +86 -4
- package/dist/view3d/index.js +29 -29
- package/dist/zh-Hans-ONBXTDHV.js +1 -0
- package/dist/zh-Hant-LVTMHA6P.js +1 -0
- package/package.json +1 -1
- package/dist/ar-QWMSVFMH.js +0 -1
- package/dist/be-3GMEVW5Q.js +0 -1
- package/dist/bg-W46PKTS7.js +0 -1
- package/dist/ca-FS3NR6VL.js +0 -1
- package/dist/chunk-I6DNJFRF.js +0 -1
- package/dist/cs-I4AKSFRV.js +0 -1
- package/dist/cy-ABRR65RX.js +0 -1
- package/dist/da-HNKK3PNG.js +0 -1
- package/dist/de-QUOPPJF7.js +0 -1
- package/dist/el-DUXSH2LY.js +0 -1
- package/dist/es-57EA3CTI.js +0 -1
- package/dist/et-RBSHG6OS.js +0 -1
- package/dist/fa-MJIJUBSS.js +0 -1
- package/dist/fi-HKF3AVOV.js +0 -1
- package/dist/fr-4U5K5VNS.js +0 -1
- package/dist/he-MIVDM6KS.js +0 -1
- package/dist/hr-G7RZP6DQ.js +0 -1
- package/dist/hu-QZE26B6N.js +0 -1
- package/dist/it-L2XL6VR7.js +0 -1
- package/dist/ja-Q64SRIIE.js +0 -1
- package/dist/ku-OG466MA5.js +0 -1
- package/dist/localeLoaders-V5HTIO2J.js +0 -1
- package/dist/lt-P2CZWZZL.js +0 -1
- package/dist/lv-IRHTS7ME.js +0 -1
- package/dist/nl-6WSAK5IB.js +0 -1
- package/dist/no-3G67YZZR.js +0 -1
- package/dist/pl-DUYWY7BZ.js +0 -1
- package/dist/pt-FNIRQMIZ.js +0 -1
- package/dist/ro-BBYEYZIK.js +0 -1
- package/dist/ru-NMG7W5QE.js +0 -1
- package/dist/sk-HI2H44DR.js +0 -1
- package/dist/sl-RBLBICUL.js +0 -1
- package/dist/sr-SNARC3RS.js +0 -1
- package/dist/sv-R7ZWBQIL.js +0 -1
- package/dist/tr-2JJXM4IM.js +0 -1
- package/dist/uk-GTBKSNLF.js +0 -1
- package/dist/zh-Hans-4V7ZG3GP.js +0 -1
- package/dist/zh-Hant-XWV277CF.js +0 -1
package/dist/view3d/index.d.cts
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import { C as ChartDoc } from '../types-
|
|
2
|
-
import { p as EventConfigurationProductionElementKind, j as EventConfigurationOcclusion, a as EventConfigurationVersion } from '../eventConfigurations-
|
|
3
|
-
import { E as ExpandedSeat } from '../renderer-
|
|
1
|
+
import { C as ChartDoc } from '../types-DNztpn7q.cjs';
|
|
2
|
+
import { p as EventConfigurationProductionElementKind, j as EventConfigurationOcclusion, a as EventConfigurationVersion } from '../eventConfigurations-Csdxe89O.cjs';
|
|
3
|
+
import { E as ExpandedSeat } from '../renderer-DmG3C8vD.cjs';
|
|
4
4
|
import { SeatView } from './crossfade/panorama.cjs';
|
|
5
5
|
|
|
6
6
|
/**
|
|
@@ -504,6 +504,45 @@ interface RenderLoopStats {
|
|
|
504
504
|
idle: boolean;
|
|
505
505
|
}
|
|
506
506
|
|
|
507
|
+
/**
|
|
508
|
+
* What a buyer must actually SEE from their seat, and the ladder of poses they
|
|
509
|
+
* can pull back through.
|
|
510
|
+
*
|
|
511
|
+
* `seatViewPose` answers "where is the buyer's eye" truthfully. That is not the
|
|
512
|
+
* same question as "what does the arrival frame show". On a phone the seat-eye
|
|
513
|
+
* pose was landing with a fixed 65°/90° FOV pointed at a focal point that could
|
|
514
|
+
* be a metre of stage lip filling a hundredth of the frame — or, from a pit or
|
|
515
|
+
* front-stalls seat whose eye sits BELOW the stage deck, nothing but the stage's
|
|
516
|
+
* front wall and the backdrop above it. The frame was truthful and useless.
|
|
517
|
+
*
|
|
518
|
+
* This module is the framing guarantee, and it is pure: given the seat eye, the
|
|
519
|
+
* stage box and the viewport aspect it returns the pose and FOV to arrive at.
|
|
520
|
+
*
|
|
521
|
+
* 1. Aim at the stage — the box centre, at performer height above its deck.
|
|
522
|
+
* 2. Clear the deck. An eye at or below `stage.max[1]` sees the stage's face,
|
|
523
|
+
* not its surface, so lift to just above the lip and step back along the
|
|
524
|
+
* seat→stage axis so the lift reads as a view rather than a nosedive.
|
|
525
|
+
* 3. Choose the WIDEST field of view in [45°, 80°] that leaves the stage box
|
|
526
|
+
* covering at least a quarter of the frame's WIDTH, and the PERFORMANCE
|
|
527
|
+
* VOLUME — the deck plus a performer's height, which is what the buyer
|
|
528
|
+
* came to see — covering at least an eighth of its HEIGHT. Wide is the honest
|
|
529
|
+
* seat feeling (you see your neighbours); the width floor stops "wide"
|
|
530
|
+
* from turning the stage into a speck, and the height floor stops it
|
|
531
|
+
* turning the stage into a line at the horizon. Where the two conflict,
|
|
532
|
+
* width wins, because the height floor is never worth a step off the
|
|
533
|
+
* buyer's own seat.
|
|
534
|
+
* 4. If the box still overflows the frame, keep stepping back along the same
|
|
535
|
+
* axis until it fits. That also resolves the degenerate cases — an eye
|
|
536
|
+
* inside or level with the stage box — where corners fall behind the eye.
|
|
537
|
+
*
|
|
538
|
+
* The stops (`buildSeatViewStops`) are the same axis, further out: your seat →
|
|
539
|
+
* your row → your section → the venue. Every stop is a pose, so pulling back
|
|
540
|
+
* and pinching in are the same reversible gesture; nothing hands the camera
|
|
541
|
+
* away irrecoverably.
|
|
542
|
+
*/
|
|
543
|
+
|
|
544
|
+
type SeatViewStopName = 'seat' | 'row' | 'section' | 'venue';
|
|
545
|
+
|
|
507
546
|
declare const VENUE3D_QUALITY_REPORT_VERSION = 1;
|
|
508
547
|
interface Venue3DLabelEvidence {
|
|
509
548
|
id: string;
|
|
@@ -562,6 +601,19 @@ interface Venue3DQualityEvidence {
|
|
|
562
601
|
labels: Venue3DLabelEvidence[];
|
|
563
602
|
/** Measured for review; promotion thresholds remain an owner decision. */
|
|
564
603
|
framing?: Venue3DFramingEvidence;
|
|
604
|
+
/**
|
|
605
|
+
* The seat view's LIVE state, when the buyer is sitting in a seat.
|
|
606
|
+
*
|
|
607
|
+
* `camera.verticalFovDeg` above is the ORBIT rig's field of view, which the
|
|
608
|
+
* seat-view controller does not own: pulling back through the named stops
|
|
609
|
+
* animates the camera's own fov, and reading the orbit value there reports a
|
|
610
|
+
* framing nobody is looking through. Verification needs the number that is
|
|
611
|
+
* actually on the glass, next to the stop it belongs to.
|
|
612
|
+
*/
|
|
613
|
+
seatView?: {
|
|
614
|
+
fovDeg: number;
|
|
615
|
+
stop: SeatViewStopName | null;
|
|
616
|
+
};
|
|
565
617
|
}
|
|
566
618
|
type Venue3DQualityFindingCode = 'webgl2-unavailable' | 'context-lost' | 'frame-not-stable' | 'viewport-empty' | 'camera-invalid' | 'authored-relief-not-visible' | 'hierarchy-label-missing' | 'hierarchy-label-undersized' | 'hierarchy-label-contrast-low' | 'hierarchy-label-collision';
|
|
567
619
|
interface Venue3DQualityFinding {
|
|
@@ -649,9 +701,26 @@ interface Venue3DOptions {
|
|
|
649
701
|
/** Buyer-facing action for entering the supplied seat view. The caller knows
|
|
650
702
|
* whether that source is live geometry or an authored panorama. */
|
|
651
703
|
seatViewActionLabel?: (seatId: string) => string;
|
|
704
|
+
/**
|
|
705
|
+
* The caption naming where the camera has landed, e.g.
|
|
706
|
+
* "Stalls D · Row C · Seat 6 · view from your seat". The engine ships an
|
|
707
|
+
* English default; hosts that translate their chrome supply the localized
|
|
708
|
+
* string here rather than having the engine carry a second copy of i18n.
|
|
709
|
+
*/
|
|
710
|
+
seatViewCaption?: (seatId: string) => string;
|
|
652
711
|
/** Land at the modeled seated-eye pose instead of the elevated inspection
|
|
653
712
|
* anchor. Useful when live geometry is the primary buyer view. */
|
|
654
713
|
arriveAtSeatEye?: boolean;
|
|
714
|
+
/**
|
|
715
|
+
* Give a seat-eye arrival the named pull-back stops — your seat, your row,
|
|
716
|
+
* your section, the venue — reachable by pinch/wheel, with drag looking
|
|
717
|
+
* around from the seat. Default true; pass false for the old pinned pose.
|
|
718
|
+
* Ignored unless `arriveAtSeatEye` is set.
|
|
719
|
+
*/
|
|
720
|
+
seatViewStops?: boolean;
|
|
721
|
+
/** Fired when the seat view settles on (or nears) a different stop, and with
|
|
722
|
+
* null when the seat view ends. Lets host chrome caption where the buyer is. */
|
|
723
|
+
onSeatViewStopChange?: (stop: SeatViewStopName | null) => void;
|
|
655
724
|
/**
|
|
656
725
|
* Decoupled analytics sink. Emits the venue-view journey: `3d_opened`,
|
|
657
726
|
* `3d_orbit_engaged` (first user gesture), `3d_seat_picked`,
|
|
@@ -671,6 +740,7 @@ interface Venue3DOptions {
|
|
|
671
740
|
* Intended for deterministic rendered review and screenshot capture. */
|
|
672
741
|
skipInitialOverviewAnimation?: boolean;
|
|
673
742
|
}
|
|
743
|
+
|
|
674
744
|
interface Venue3DStats extends RenderLoopStats {
|
|
675
745
|
drawCalls: number;
|
|
676
746
|
seatCount: number;
|
|
@@ -695,6 +765,18 @@ interface Venue3DHandle {
|
|
|
695
765
|
flyToSeat(seatId: string): Promise<void>;
|
|
696
766
|
/** Cancel a seat flight/panorama and fit the active floor or complete venue. */
|
|
697
767
|
focusOverview(): void;
|
|
768
|
+
/**
|
|
769
|
+
* Which named stop the seat view is at — 'seat', 'row', 'section', 'venue' —
|
|
770
|
+
* or null when the buyer is not in a seat view. Host chrome captions this;
|
|
771
|
+
* it is read-only because the stops belong to the gesture, not the host.
|
|
772
|
+
*/
|
|
773
|
+
seatViewStop(): SeatViewStopName | null;
|
|
774
|
+
/**
|
|
775
|
+
* Turn the seat view's aim back to the stage without leaving the seat — the
|
|
776
|
+
* recover action for a buyer who has looked away. False when the buyer is
|
|
777
|
+
* not in a seat view (nothing to recentre).
|
|
778
|
+
*/
|
|
779
|
+
recentreSeatView(): boolean;
|
|
698
780
|
resize(): void;
|
|
699
781
|
stats(): Venue3DStats;
|
|
700
782
|
/** Machine-readable evidence from the exact parked WebGL frame and DOM labels. */
|
|
@@ -761,4 +843,4 @@ interface Venue3DHandle {
|
|
|
761
843
|
|
|
762
844
|
declare function mountVenue3D(container: HTMLElement, input: Venue3DInput, opts?: Venue3DOptions): Venue3DHandle;
|
|
763
845
|
|
|
764
|
-
export { type Analytics3DCallback, type Scene3DPrepSource, type SeatState3D, SeatView, VENUE3D_QUALITY_REPORT_VERSION, type Venue3DHandle, type Venue3DInput, type Venue3DOptions, type Venue3DQualityEvidence, type Venue3DQualityReport, type Venue3DStats, buildSceneModel, inspectVenue3DQualityEvidence, mountVenue3D, prepareVenue3D };
|
|
846
|
+
export { type Analytics3DCallback, type Scene3DPrepSource, type SeatState3D, SeatView, type SeatViewStopName, VENUE3D_QUALITY_REPORT_VERSION, type Venue3DHandle, type Venue3DInput, type Venue3DOptions, type Venue3DQualityEvidence, type Venue3DQualityReport, type Venue3DStats, buildSceneModel, inspectVenue3DQualityEvidence, mountVenue3D, prepareVenue3D };
|
package/dist/view3d/index.d.ts
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import { C as ChartDoc } from '../types-
|
|
2
|
-
import { p as EventConfigurationProductionElementKind, j as EventConfigurationOcclusion, a as EventConfigurationVersion } from '../eventConfigurations-
|
|
3
|
-
import { E as ExpandedSeat } from '../renderer-
|
|
1
|
+
import { C as ChartDoc } from '../types-DNztpn7q.js';
|
|
2
|
+
import { p as EventConfigurationProductionElementKind, j as EventConfigurationOcclusion, a as EventConfigurationVersion } from '../eventConfigurations-CA2XhDig.js';
|
|
3
|
+
import { E as ExpandedSeat } from '../renderer-DIcDImOu.js';
|
|
4
4
|
import { SeatView } from './crossfade/panorama.js';
|
|
5
5
|
|
|
6
6
|
/**
|
|
@@ -504,6 +504,45 @@ interface RenderLoopStats {
|
|
|
504
504
|
idle: boolean;
|
|
505
505
|
}
|
|
506
506
|
|
|
507
|
+
/**
|
|
508
|
+
* What a buyer must actually SEE from their seat, and the ladder of poses they
|
|
509
|
+
* can pull back through.
|
|
510
|
+
*
|
|
511
|
+
* `seatViewPose` answers "where is the buyer's eye" truthfully. That is not the
|
|
512
|
+
* same question as "what does the arrival frame show". On a phone the seat-eye
|
|
513
|
+
* pose was landing with a fixed 65°/90° FOV pointed at a focal point that could
|
|
514
|
+
* be a metre of stage lip filling a hundredth of the frame — or, from a pit or
|
|
515
|
+
* front-stalls seat whose eye sits BELOW the stage deck, nothing but the stage's
|
|
516
|
+
* front wall and the backdrop above it. The frame was truthful and useless.
|
|
517
|
+
*
|
|
518
|
+
* This module is the framing guarantee, and it is pure: given the seat eye, the
|
|
519
|
+
* stage box and the viewport aspect it returns the pose and FOV to arrive at.
|
|
520
|
+
*
|
|
521
|
+
* 1. Aim at the stage — the box centre, at performer height above its deck.
|
|
522
|
+
* 2. Clear the deck. An eye at or below `stage.max[1]` sees the stage's face,
|
|
523
|
+
* not its surface, so lift to just above the lip and step back along the
|
|
524
|
+
* seat→stage axis so the lift reads as a view rather than a nosedive.
|
|
525
|
+
* 3. Choose the WIDEST field of view in [45°, 80°] that leaves the stage box
|
|
526
|
+
* covering at least a quarter of the frame's WIDTH, and the PERFORMANCE
|
|
527
|
+
* VOLUME — the deck plus a performer's height, which is what the buyer
|
|
528
|
+
* came to see — covering at least an eighth of its HEIGHT. Wide is the honest
|
|
529
|
+
* seat feeling (you see your neighbours); the width floor stops "wide"
|
|
530
|
+
* from turning the stage into a speck, and the height floor stops it
|
|
531
|
+
* turning the stage into a line at the horizon. Where the two conflict,
|
|
532
|
+
* width wins, because the height floor is never worth a step off the
|
|
533
|
+
* buyer's own seat.
|
|
534
|
+
* 4. If the box still overflows the frame, keep stepping back along the same
|
|
535
|
+
* axis until it fits. That also resolves the degenerate cases — an eye
|
|
536
|
+
* inside or level with the stage box — where corners fall behind the eye.
|
|
537
|
+
*
|
|
538
|
+
* The stops (`buildSeatViewStops`) are the same axis, further out: your seat →
|
|
539
|
+
* your row → your section → the venue. Every stop is a pose, so pulling back
|
|
540
|
+
* and pinching in are the same reversible gesture; nothing hands the camera
|
|
541
|
+
* away irrecoverably.
|
|
542
|
+
*/
|
|
543
|
+
|
|
544
|
+
type SeatViewStopName = 'seat' | 'row' | 'section' | 'venue';
|
|
545
|
+
|
|
507
546
|
declare const VENUE3D_QUALITY_REPORT_VERSION = 1;
|
|
508
547
|
interface Venue3DLabelEvidence {
|
|
509
548
|
id: string;
|
|
@@ -562,6 +601,19 @@ interface Venue3DQualityEvidence {
|
|
|
562
601
|
labels: Venue3DLabelEvidence[];
|
|
563
602
|
/** Measured for review; promotion thresholds remain an owner decision. */
|
|
564
603
|
framing?: Venue3DFramingEvidence;
|
|
604
|
+
/**
|
|
605
|
+
* The seat view's LIVE state, when the buyer is sitting in a seat.
|
|
606
|
+
*
|
|
607
|
+
* `camera.verticalFovDeg` above is the ORBIT rig's field of view, which the
|
|
608
|
+
* seat-view controller does not own: pulling back through the named stops
|
|
609
|
+
* animates the camera's own fov, and reading the orbit value there reports a
|
|
610
|
+
* framing nobody is looking through. Verification needs the number that is
|
|
611
|
+
* actually on the glass, next to the stop it belongs to.
|
|
612
|
+
*/
|
|
613
|
+
seatView?: {
|
|
614
|
+
fovDeg: number;
|
|
615
|
+
stop: SeatViewStopName | null;
|
|
616
|
+
};
|
|
565
617
|
}
|
|
566
618
|
type Venue3DQualityFindingCode = 'webgl2-unavailable' | 'context-lost' | 'frame-not-stable' | 'viewport-empty' | 'camera-invalid' | 'authored-relief-not-visible' | 'hierarchy-label-missing' | 'hierarchy-label-undersized' | 'hierarchy-label-contrast-low' | 'hierarchy-label-collision';
|
|
567
619
|
interface Venue3DQualityFinding {
|
|
@@ -649,9 +701,26 @@ interface Venue3DOptions {
|
|
|
649
701
|
/** Buyer-facing action for entering the supplied seat view. The caller knows
|
|
650
702
|
* whether that source is live geometry or an authored panorama. */
|
|
651
703
|
seatViewActionLabel?: (seatId: string) => string;
|
|
704
|
+
/**
|
|
705
|
+
* The caption naming where the camera has landed, e.g.
|
|
706
|
+
* "Stalls D · Row C · Seat 6 · view from your seat". The engine ships an
|
|
707
|
+
* English default; hosts that translate their chrome supply the localized
|
|
708
|
+
* string here rather than having the engine carry a second copy of i18n.
|
|
709
|
+
*/
|
|
710
|
+
seatViewCaption?: (seatId: string) => string;
|
|
652
711
|
/** Land at the modeled seated-eye pose instead of the elevated inspection
|
|
653
712
|
* anchor. Useful when live geometry is the primary buyer view. */
|
|
654
713
|
arriveAtSeatEye?: boolean;
|
|
714
|
+
/**
|
|
715
|
+
* Give a seat-eye arrival the named pull-back stops — your seat, your row,
|
|
716
|
+
* your section, the venue — reachable by pinch/wheel, with drag looking
|
|
717
|
+
* around from the seat. Default true; pass false for the old pinned pose.
|
|
718
|
+
* Ignored unless `arriveAtSeatEye` is set.
|
|
719
|
+
*/
|
|
720
|
+
seatViewStops?: boolean;
|
|
721
|
+
/** Fired when the seat view settles on (or nears) a different stop, and with
|
|
722
|
+
* null when the seat view ends. Lets host chrome caption where the buyer is. */
|
|
723
|
+
onSeatViewStopChange?: (stop: SeatViewStopName | null) => void;
|
|
655
724
|
/**
|
|
656
725
|
* Decoupled analytics sink. Emits the venue-view journey: `3d_opened`,
|
|
657
726
|
* `3d_orbit_engaged` (first user gesture), `3d_seat_picked`,
|
|
@@ -671,6 +740,7 @@ interface Venue3DOptions {
|
|
|
671
740
|
* Intended for deterministic rendered review and screenshot capture. */
|
|
672
741
|
skipInitialOverviewAnimation?: boolean;
|
|
673
742
|
}
|
|
743
|
+
|
|
674
744
|
interface Venue3DStats extends RenderLoopStats {
|
|
675
745
|
drawCalls: number;
|
|
676
746
|
seatCount: number;
|
|
@@ -695,6 +765,18 @@ interface Venue3DHandle {
|
|
|
695
765
|
flyToSeat(seatId: string): Promise<void>;
|
|
696
766
|
/** Cancel a seat flight/panorama and fit the active floor or complete venue. */
|
|
697
767
|
focusOverview(): void;
|
|
768
|
+
/**
|
|
769
|
+
* Which named stop the seat view is at — 'seat', 'row', 'section', 'venue' —
|
|
770
|
+
* or null when the buyer is not in a seat view. Host chrome captions this;
|
|
771
|
+
* it is read-only because the stops belong to the gesture, not the host.
|
|
772
|
+
*/
|
|
773
|
+
seatViewStop(): SeatViewStopName | null;
|
|
774
|
+
/**
|
|
775
|
+
* Turn the seat view's aim back to the stage without leaving the seat — the
|
|
776
|
+
* recover action for a buyer who has looked away. False when the buyer is
|
|
777
|
+
* not in a seat view (nothing to recentre).
|
|
778
|
+
*/
|
|
779
|
+
recentreSeatView(): boolean;
|
|
698
780
|
resize(): void;
|
|
699
781
|
stats(): Venue3DStats;
|
|
700
782
|
/** Machine-readable evidence from the exact parked WebGL frame and DOM labels. */
|
|
@@ -761,4 +843,4 @@ interface Venue3DHandle {
|
|
|
761
843
|
|
|
762
844
|
declare function mountVenue3D(container: HTMLElement, input: Venue3DInput, opts?: Venue3DOptions): Venue3DHandle;
|
|
763
845
|
|
|
764
|
-
export { type Analytics3DCallback, type Scene3DPrepSource, type SeatState3D, SeatView, VENUE3D_QUALITY_REPORT_VERSION, type Venue3DHandle, type Venue3DInput, type Venue3DOptions, type Venue3DQualityEvidence, type Venue3DQualityReport, type Venue3DStats, buildSceneModel, inspectVenue3DQualityEvidence, mountVenue3D, prepareVenue3D };
|
|
846
|
+
export { type Analytics3DCallback, type Scene3DPrepSource, type SeatState3D, SeatView, type SeatViewStopName, VENUE3D_QUALITY_REPORT_VERSION, type Venue3DHandle, type Venue3DInput, type Venue3DOptions, type Venue3DQualityEvidence, type Venue3DQualityReport, type Venue3DStats, buildSceneModel, inspectVenue3DQualityEvidence, mountVenue3D, prepareVenue3D };
|