@seatlayer/core 0.51.0 → 0.53.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/LICENSE +16 -17
- package/README.md +8 -18
- package/dist/chunk-54A7LIL5.js +1 -0
- package/dist/chunk-IJI4WU57.js +1 -0
- package/dist/chunk-XPPT3OGQ.js +1 -0
- package/dist/core/seatConfidence.cjs +1 -76
- package/dist/core/seatConfidence.d.cts +1 -1
- package/dist/core/seatConfidence.d.ts +1 -1
- package/dist/core/seatConfidence.js +1 -51
- package/dist/de-75NWRKC5.js +1 -0
- package/dist/es-BM7EJ7PW.js +1 -0
- package/dist/fr-HPXQHIB4.js +1 -0
- package/dist/index.cjs +1 -12130
- package/dist/index.d.cts +169 -70
- package/dist/index.d.ts +169 -70
- package/dist/index.js +1 -9718
- package/dist/picker/minimapGeometry.cjs +1 -0
- package/dist/picker/minimapGeometry.d.cts +37 -0
- package/dist/picker/minimapGeometry.d.ts +37 -0
- package/dist/picker/minimapGeometry.js +1 -0
- package/dist/{types-DR54nqKL.d.cts → types-tLOunI-B.d.cts} +131 -1
- package/dist/{types-DR54nqKL.d.ts → types-tLOunI-B.d.ts} +131 -1
- package/dist/view/panoramaDelivery.cjs +1 -126
- package/dist/view/panoramaDelivery.js +1 -17
- package/dist/view3d/crossfade/panorama.cjs +1 -459
- package/dist/view3d/crossfade/panorama.d.cts +2 -4
- package/dist/view3d/crossfade/panorama.d.ts +2 -4
- package/dist/view3d/crossfade/panorama.js +1 -30
- package/dist/view3d/index.cjs +63 -6930
- package/dist/view3d/index.d.cts +82 -33
- package/dist/view3d/index.d.ts +82 -33
- package/dist/view3d/index.js +63 -6062
- package/package.json +15 -7
- package/dist/chunk-AZODENEL.js +0 -97
- package/dist/chunk-AZODENEL.js.map +0 -1
- package/dist/chunk-BE3F7CT3.js +0 -341
- package/dist/chunk-BE3F7CT3.js.map +0 -1
- package/dist/chunk-GD267BFB.js +0 -1496
- package/dist/chunk-GD267BFB.js.map +0 -1
- package/dist/core/seatConfidence.cjs.map +0 -1
- package/dist/core/seatConfidence.js.map +0 -1
- package/dist/de-V53JPFHN.js +0 -292
- package/dist/de-V53JPFHN.js.map +0 -1
- package/dist/es-37ISLCZA.js +0 -292
- package/dist/es-37ISLCZA.js.map +0 -1
- package/dist/fr-QKK2T64Q.js +0 -292
- package/dist/fr-QKK2T64Q.js.map +0 -1
- package/dist/index.cjs.map +0 -1
- package/dist/index.js.map +0 -1
- package/dist/view/panoramaDelivery.cjs.map +0 -1
- package/dist/view/panoramaDelivery.js.map +0 -1
- package/dist/view3d/crossfade/panorama.cjs.map +0 -1
- package/dist/view3d/crossfade/panorama.js.map +0 -1
- package/dist/view3d/index.cjs.map +0 -1
- package/dist/view3d/index.js.map +0 -1
package/dist/index.d.cts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { a as RowObject, A as AccessibilityType, S as SeatOverride, b as SeatViewMetadata, L as LabelStyle, c as RectTableSide, C as ChartDoc, d as ChartObject, B as BoothObject, E as ExpandedSeat, T as TableObject,
|
|
2
|
-
export {
|
|
1
|
+
import { a as RowObject, A as AccessibilityType, S as SeatOverride, b as SeatViewMetadata, L as LabelStyle, c as RectTableSide, C as ChartDoc, d as ChartObject, B as BoothObject, E as ExpandedSeat, T as TableObject, P as Point, F as Floor, e as SectionObject, f as RectTableSeatCounts, G as GAAreaObject, g as GAInventorySegment, h as RendererQualityEvidence, i as RenderedFreeTextEvidence, I as ISeatmapRenderer, j as RendererOptions, k as SeatStatus, l as RendererViewMode, m as RendererMinimapSnapshot, n as LodRung, o as CategoryTier, p as SeatCommercialAttributes, q as RendererCallbacks } from './types-tLOunI-B.cjs';
|
|
2
|
+
export { r as ACCESSIBILITY_RING_COLOR, s as ACCESSIBILITY_TYPES, t as AccessibilityMeta, u as AuthoringObjectState, v as CHART_STORAGE_KEY, w as Category, x as ChartLayoutConstraint, y as ChartReferenceImage, z as ChartTheme, D as CubicPath, H as DecorImageObject, J as LABEL_STYLE_MAX_SIZE, K as LABEL_STYLE_MIN_SIZE, M as LabelPresentation, O as ObjectEditorState, N as Physical3dEvidence, Q as RadialClearanceLayoutConstraint, U as ReferenceAccessibilitySource, V as ReferenceCalibration, W as ReferenceCategorySource, X as ReferenceDerivedScale, Y as ReferenceInventoryExclusionSource, Z as ReferenceInventorySource, _ as ReferenceScanProposal, $ as ReferenceScanRowProposal, a0 as ReferenceScanSectionProposal, a1 as ReferenceSeatSeed, a2 as ReferenceSectionTraceBatchInput, a3 as ReferenceSectionTraceBatchProposal, a4 as ReferenceSectionTraceInput, a5 as ReferenceSectionTraceProposal, a6 as RenderedBookableLabelEvidence, a7 as RenderedGAAreaEvidence, a8 as RenderedHierarchyLabelEvidence, a9 as RenderedLabelHiddenReason, aa as RenderedRowLabelEvidence, ab as RendererMinimapSeat, ac as RendererMinimapSection, R as ResolvedSeatConfidenceEvidence, ad as SEAT_COMMERCIAL_MARKS, ae as SURROUNDINGS_SHAPE_ROLES, af as SeatCommercialMark, ag as SeatCommercialMeta, ah as SeatConfidenceCoverage, ai as SeatConfidenceEvidence, aj as SeatConfidenceModelLevel, ak as SeatConfidenceModeledTarget, al as SeatConfidenceRealityLevel, am as SeatViewCoverage, an as SectionOutlinePath, ao as SectionPathSegment, ap as SelectionLayer, aq as ShapeLineCap, ar as ShapeLineEnding, as as ShapeLineJoin, at as ShapeObject, au as TextAlignment, av as TextBackground, aw as TextObject, ax as TicketTierApplicability, ay as TicketTierEvidence, az as TicketTierRestriction, aA as ZoneDef, aB as accessibilityMeta, aC as accessibilityRingColor, aD as layerOf, aE as seatCommercialMeta } from './types-tLOunI-B.cjs';
|
|
3
3
|
|
|
4
4
|
/**
|
|
5
5
|
* The segmented-row model — one logical row made of several physical rows.
|
|
@@ -165,6 +165,8 @@ declare function floorsOf(doc: ChartDoc): Floor[];
|
|
|
165
165
|
declare function floorObjects(doc: ChartDoc, floorId?: string): ChartObject[];
|
|
166
166
|
/** Every object across ALL floors — the whole venue (single-floor = `doc.objects`). */
|
|
167
167
|
declare function allObjects(doc: ChartDoc): ChartObject[];
|
|
168
|
+
/** A copy of an object translated by (dx, dy) — every coordinate field shifted. */
|
|
169
|
+
declare function translateObject(o: ChartObject, dx: number, dy: number): ChartObject;
|
|
168
170
|
/**
|
|
169
171
|
* Multi-floor 3D stack (Batch 5): flatten every floor into ONE doc with floor `i`
|
|
170
172
|
* lifted by `i * spread` in −y, so the isometric view shows the floors as stacked
|
|
@@ -172,6 +174,26 @@ declare function allObjects(doc: ChartDoc): ChartObject[];
|
|
|
172
174
|
* only for the 3D overview render — 2D still shows one floor via `floorObjects`.
|
|
173
175
|
*/
|
|
174
176
|
declare function stackFloors(doc: ChartDoc, spread?: number): ChartDoc;
|
|
177
|
+
/**
|
|
178
|
+
* Build the buyer-facing 2D overview of a multi-floor chart.
|
|
179
|
+
*
|
|
180
|
+
* Floors commonly reuse the same drawing origin (a balcony is authored over
|
|
181
|
+
* the stalls it overlooks). Flattening those source coordinates makes a valid
|
|
182
|
+
* import look corrupt because every level is painted on top of every other
|
|
183
|
+
* level. This projection packs complete floors into a compact, content-aware
|
|
184
|
+
* grid. Each floor receives one rigid translation: no seat, row, section,
|
|
185
|
+
* annotation, gap, or rotation changes, and the canonical document is never
|
|
186
|
+
* mutated.
|
|
187
|
+
*/
|
|
188
|
+
declare function layoutFloorOverview(doc: ChartDoc): ChartDoc;
|
|
189
|
+
/**
|
|
190
|
+
* Rigid per-floor translations used by the buyer's complete-venue overview.
|
|
191
|
+
*
|
|
192
|
+
* Kept as a pure public helper so 2D and 3D can present the same non-overlapping
|
|
193
|
+
* level arrangement without either renderer rewriting the authored chart. A
|
|
194
|
+
* zero translation is returned for a single-floor document.
|
|
195
|
+
*/
|
|
196
|
+
declare function floorOverviewTranslations(doc: ChartDoc): Point[];
|
|
175
197
|
interface ExpandChartOptions {
|
|
176
198
|
/** Physical height for a single-floor projection extracted from a multi-floor
|
|
177
199
|
* document. Full multi-floor documents resolve each floor directly. */
|
|
@@ -437,16 +459,6 @@ interface RenderedQualityReport {
|
|
|
437
459
|
*/
|
|
438
460
|
declare function inspectRenderedQualityEvidence(evidence: RendererQualityEvidence, state?: RenderedEvidenceState, targetCategoryKey?: string | null): RenderedQualityReport;
|
|
439
461
|
|
|
440
|
-
/**
|
|
441
|
-
* SeatmapRenderer — the shared canvas rendering core (buyer picker shell).
|
|
442
|
-
*
|
|
443
|
-
* Uses Konva directly with per-module imports to keep the bundle lean. The
|
|
444
|
-
* whole point of the spike is staying smooth at ~5,000 seats on mobile, so the
|
|
445
|
-
* hot paths lean on: layer bitmap caching + listening(false) when zoomed out,
|
|
446
|
-
* per-seat fill updates (never full rebuilds) on status change, and viewport-
|
|
447
|
-
* only label rendering rebuilt on interaction-end rather than per frame.
|
|
448
|
-
*/
|
|
449
|
-
|
|
450
462
|
declare class SeatmapRenderer implements ISeatmapRenderer {
|
|
451
463
|
private container;
|
|
452
464
|
private opts;
|
|
@@ -472,6 +484,8 @@ declare class SeatmapRenderer implements ISeatmapRenderer {
|
|
|
472
484
|
private activeFloorId;
|
|
473
485
|
/** When true on a multi-floor chart, render ALL floors stacked (3D overview). */
|
|
474
486
|
private stacked;
|
|
487
|
+
/** Buyer-facing 2D overview: floors are rigidly arranged without altering topology. */
|
|
488
|
+
private floorOverview;
|
|
475
489
|
/** Interactive node per seat/booth — a Circle for seats, a Rect for booths. */
|
|
476
490
|
private circleById;
|
|
477
491
|
/** Booth block geometry, keyed by booth id (= the unit's rowId). */
|
|
@@ -621,35 +635,18 @@ declare class SeatmapRenderer implements ISeatmapRenderer {
|
|
|
621
635
|
private resizeObs;
|
|
622
636
|
/** Coalesces bursty view-change sources (pointermove, wheel) into ≤1 callback/frame. */
|
|
623
637
|
private viewChangeRaf;
|
|
624
|
-
|
|
625
|
-
|
|
626
|
-
|
|
627
|
-
|
|
628
|
-
|
|
629
|
-
/** Maximum displacement from gesture start — suppress taps only after a real pan/pinch. */
|
|
630
|
-
private moved;
|
|
631
|
-
/**
|
|
632
|
-
* Ghost-click guard. Konva binds `_pointerup` to mouseup, touchend AND
|
|
633
|
-
* pointerup, so `on('click tap')` is two handlers for one finger tap unless
|
|
634
|
-
* the browser's synthesized compatibility click is suppressed. Konva only
|
|
635
|
-
* suppresses it when the touch lands on a LISTENING SHAPE (Stage.js returns
|
|
636
|
-
* early before its preventDefault() when `!shape || !shape.isListening()`),
|
|
637
|
-
* so a near-miss rescued by nearestSeatToScreen used to fire `tap` (select)
|
|
638
|
-
* then `click` (deselect) 1-3ms apart and net to nothing. With
|
|
639
|
-
* SEAT_TAP_SLOP_PX=14 against a ~12px seat radius, that broken annulus is
|
|
640
|
-
* ~3.7x the area of the seat itself — i.e. most successful mobile taps.
|
|
641
|
-
* `touch-action: none` does NOT suppress compatibility mouse events.
|
|
642
|
-
*/
|
|
643
|
-
private lastTapAt;
|
|
644
|
-
/**
|
|
645
|
-
* True when this is the browser's synthesized compatibility click following a
|
|
646
|
-
* finger tap we already handled. Discriminates on `e.type` deliberately —
|
|
647
|
-
* `PointerEvent extends MouseEvent`, so an `instanceof MouseEvent` test
|
|
648
|
-
* matches genuine pointer taps too. One shared timestamp across the layer and
|
|
649
|
-
* stage handlers: a tap consumed at the layer must also suppress the ghost at
|
|
650
|
-
* the stage, and only `click` is ever rejected, so bubbling stays intact.
|
|
638
|
+
/**
|
|
639
|
+
* Pan/pinch state machine (`render/interaction/pointer`). Raw pointer events
|
|
640
|
+
* on the container, not Konva stage dragging — its touch pipeline proved
|
|
641
|
+
* unreliable for multi-touch on real devices. Also owns the ghost-click
|
|
642
|
+
* timestamp shared by the layer and stage tap handlers.
|
|
651
643
|
*/
|
|
644
|
+
private gestures;
|
|
645
|
+
/** Displacement of the current gesture — a tap must stay under the slop. */
|
|
646
|
+
private get moved();
|
|
652
647
|
private isGhostClick;
|
|
648
|
+
/** Behavioural surface the gesture machine calls back into. */
|
|
649
|
+
private get pointerHost();
|
|
653
650
|
/**
|
|
654
651
|
* Manage-mode rubber-band marquee (option-gated). `start`/`cur` are WORLD-space
|
|
655
652
|
* points (overlayLayer rides the stage transform); `rect` is the on-canvas
|
|
@@ -661,8 +658,8 @@ declare class SeatmapRenderer implements ISeatmapRenderer {
|
|
|
661
658
|
setChart(doc: ChartDoc, opts?: {
|
|
662
659
|
floorId?: string;
|
|
663
660
|
}): void;
|
|
664
|
-
/** The chart to render:
|
|
665
|
-
* the whole chart for single-floor charts. */
|
|
661
|
+
/** The chart to render: authored-coordinate overview, stacked 3D overview,
|
|
662
|
+
* the active floor, or the whole chart for single-floor charts. */
|
|
666
663
|
private floorView;
|
|
667
664
|
/** Physical floor height is authored data; the 900-unit stacked overview
|
|
668
665
|
* spread is presentation-only and must never leak into real 3D geometry. */
|
|
@@ -671,6 +668,10 @@ declare class SeatmapRenderer implements ISeatmapRenderer {
|
|
|
671
668
|
* single-floor charts. The caller re-applies statuses + animates the iso view. */
|
|
672
669
|
setStacked(on: boolean): void;
|
|
673
670
|
isStacked(): boolean;
|
|
671
|
+
/** Toggle the buyer's combined 2D floor overview. Every floor is translated
|
|
672
|
+
* as one rigid group for clarity; its authored internal topology is exact. */
|
|
673
|
+
setFloorOverview(on: boolean): void;
|
|
674
|
+
isFloorOverview(): boolean;
|
|
674
675
|
/** Switch which floor is shown (2D). Re-renders + re-fits; no-op if unchanged. */
|
|
675
676
|
setActiveFloor(floorId: string): void;
|
|
676
677
|
/** Floors for the host's switcher (single-floor charts return one synthetic floor). */
|
|
@@ -740,6 +741,12 @@ declare class SeatmapRenderer implements ISeatmapRenderer {
|
|
|
740
741
|
/** Pan/zoom so a seat sits on-screen at a legible scale (for keyboard focus). */
|
|
741
742
|
private ensureVisible;
|
|
742
743
|
zoomToFit(): void;
|
|
744
|
+
/**
|
|
745
|
+
* Reframe after a host/layout resize without throwing away section context.
|
|
746
|
+
* The stage already represents the usable map area (the picker side panel is
|
|
747
|
+
* a sibling), so measuring it here naturally respects open/closed panels.
|
|
748
|
+
*/
|
|
749
|
+
refitCurrentView(): void;
|
|
743
750
|
/** Step factor for the on-screen +/− buttons (B1) — same clamp path as pinch/wheel. */
|
|
744
751
|
private static readonly ZOOM_STEP;
|
|
745
752
|
zoomIn(): void;
|
|
@@ -782,6 +789,8 @@ declare class SeatmapRenderer implements ISeatmapRenderer {
|
|
|
782
789
|
setViewMode(mode: RendererViewMode): void;
|
|
783
790
|
/** Current projection — reflects the tween target, not the mid-tween isoT. */
|
|
784
791
|
getViewMode(): RendererViewMode;
|
|
792
|
+
/** Live ISO projection state handed to the `render/projection` free functions. */
|
|
793
|
+
private get isoState();
|
|
785
794
|
/** Iso angle (rad) + y-squash for the current isoT. */
|
|
786
795
|
private isoParams;
|
|
787
796
|
/** Effective vertical scale = stage scale × iso squash — legibility math uses this. */
|
|
@@ -815,6 +824,8 @@ declare class SeatmapRenderer implements ISeatmapRenderer {
|
|
|
815
824
|
private resetLayerTransforms;
|
|
816
825
|
/** Restore section-owned containers before applying another projection. */
|
|
817
826
|
private resetSectionProjection;
|
|
827
|
+
/** Node/cache context the shared seat-anchor pass reads and updates. */
|
|
828
|
+
private get seatAnchorContext();
|
|
818
829
|
/** Move native seat/booth hit shapes to or from their exact pinhole anchors. */
|
|
819
830
|
private applyExactSeatAnchors;
|
|
820
831
|
/**
|
|
@@ -929,10 +940,20 @@ declare class SeatmapRenderer implements ISeatmapRenderer {
|
|
|
929
940
|
setClosedSections(ids: string[] | null): void;
|
|
930
941
|
/**
|
|
931
942
|
* AXS section-focus: dim + desaturate every other section, draw a calm backdrop
|
|
932
|
-
* panel behind this section's seats, and glide the camera
|
|
933
|
-
*
|
|
943
|
+
* panel behind this section's seats, and glide the camera to a padded fit of
|
|
944
|
+
* the whole section. A large section may therefore use smaller seat markers,
|
|
945
|
+
* but it never clips its outer rows merely to meet a fixed detail scale.
|
|
934
946
|
*/
|
|
935
947
|
focusSection(id: string): void;
|
|
948
|
+
/**
|
|
949
|
+
* Release only the focus dim + backdrop, keeping the focused-section state
|
|
950
|
+
* (summary card, adjacent-section navigation, LOD) intact. Called on the
|
|
951
|
+
* buyer's first manual pan/pinch/wheel after a section glide: the dim reads
|
|
952
|
+
* as "everything else is disabled", but every seat outside the focus was
|
|
953
|
+
* always hit-testable — free roaming across sections is the product
|
|
954
|
+
* behaviour, the glide is only an entrance.
|
|
955
|
+
*/
|
|
956
|
+
private releaseSectionFocusDim;
|
|
936
957
|
/** Clear an AXS section focus — restore full-bowl brightness + drop the backdrop. */
|
|
937
958
|
clearSectionFocus(): void;
|
|
938
959
|
/** The currently AXS-focused section id, or null. */
|
|
@@ -960,6 +981,12 @@ declare class SeatmapRenderer implements ISeatmapRenderer {
|
|
|
960
981
|
width: number;
|
|
961
982
|
height: number;
|
|
962
983
|
};
|
|
984
|
+
/** Live minimap geometry comes from the rendered scene, so a content-aware
|
|
985
|
+
* all-floor layout cannot collapse back onto the source coordinate stack. */
|
|
986
|
+
getMinimapSnapshot(): RendererMinimapSnapshot;
|
|
987
|
+
/** Minimap drag/click navigation: preserve zoom and move one world point to
|
|
988
|
+
* the viewport centre. Works for flat and projected views via worldToScreen. */
|
|
989
|
+
panToWorld(point: Point): void;
|
|
963
990
|
/** Legend hover: highlight one category (dim the rest), or null to clear. */
|
|
964
991
|
setCategoryHighlight(key: string | null): void;
|
|
965
992
|
private renderBackground;
|
|
@@ -980,12 +1007,12 @@ declare class SeatmapRenderer implements ISeatmapRenderer {
|
|
|
980
1007
|
* single drawImage per frame, and it rides the same layer cache — effectively
|
|
981
1008
|
* zero per-frame cost. Never listens, so it can't intercept a seat click.
|
|
982
1009
|
*/
|
|
1010
|
+
/** Node/registry surface the `render/objectDrawing` factories draw into. */
|
|
1011
|
+
private get objectDrawContext();
|
|
983
1012
|
private renderDecorImage;
|
|
984
1013
|
private renderTable;
|
|
985
1014
|
private renderText;
|
|
986
1015
|
private renderShape;
|
|
987
|
-
/** Prominent stage caption: uppercase, letter-spaced, larger, softly dimmed. */
|
|
988
|
-
private addStageLabel;
|
|
989
1016
|
private renderGA;
|
|
990
1017
|
/**
|
|
991
1018
|
* A section renders in three coordinated layers driven by the LOD melt:
|
|
@@ -1066,7 +1093,6 @@ declare class SeatmapRenderer implements ISeatmapRenderer {
|
|
|
1066
1093
|
}): string | null;
|
|
1067
1094
|
/** Seat ids belonging to a section (Slice 5 section-summary card). */
|
|
1068
1095
|
sectionMembers(id: string): string[];
|
|
1069
|
-
private addCentredLabel;
|
|
1070
1096
|
private isSelectable;
|
|
1071
1097
|
private toggleSeat;
|
|
1072
1098
|
/**
|
|
@@ -1119,10 +1145,6 @@ declare class SeatmapRenderer implements ISeatmapRenderer {
|
|
|
1119
1145
|
* so within-floor elevation offsets don't affect the result. Null if none.
|
|
1120
1146
|
*/
|
|
1121
1147
|
private deckFloorAt;
|
|
1122
|
-
private toLocal;
|
|
1123
|
-
private onPointerDown;
|
|
1124
|
-
private onPointerMove;
|
|
1125
|
-
private onPointerEnd;
|
|
1126
1148
|
/**
|
|
1127
1149
|
* Min is chart-relative (never lose the room); max is absolute so seats
|
|
1128
1150
|
* reach a readable size on any chart, however large the venue.
|
|
@@ -1153,6 +1175,8 @@ declare class SeatmapRenderer implements ISeatmapRenderer {
|
|
|
1153
1175
|
private cancelGlide;
|
|
1154
1176
|
/** Current LOD rung derived from effective zoom — drives the ZONES/SECTIONS/SEATS pill. */
|
|
1155
1177
|
getRung(): LodRung;
|
|
1178
|
+
/** Explicit view of this renderer as the evidence pass's declared surface. */
|
|
1179
|
+
private get renderedQualityContext();
|
|
1156
1180
|
getRenderedQualityEvidence(): RendererQualityEvidence;
|
|
1157
1181
|
/** Jump the camera to a rung's zoom band (glided). */
|
|
1158
1182
|
setRung(rung: LodRung): void;
|
|
@@ -1217,21 +1241,14 @@ declare class SeatmapRenderer implements ISeatmapRenderer {
|
|
|
1217
1241
|
*/
|
|
1218
1242
|
captureCanvas(): HTMLCanvasElement;
|
|
1219
1243
|
private updateFreeTextVisibility;
|
|
1244
|
+
/** Geometric association only: importer data remains unchanged. */
|
|
1245
|
+
private nodeBelongsToFocusedSection;
|
|
1220
1246
|
/** OV-45(a): resolve authored row-letter labels for the buyer/preview map, in
|
|
1221
|
-
* world space
|
|
1222
|
-
* preset, a free-drag `position` that wins over the preset, rotation, and
|
|
1223
|
-
* labelStyle colour/size fed through the same auto-contrast guard). Segmented
|
|
1224
|
-
* rows keep their own logical-label handling and are resolved by their owner. */
|
|
1247
|
+
* world space (see `render/rowLabelPlan`). */
|
|
1225
1248
|
private buildRowLabelPlan;
|
|
1226
1249
|
/** Axis-aligned world bounds of a centred, potentially rotated row label. */
|
|
1227
1250
|
private rowLabelBox;
|
|
1228
|
-
/**
|
|
1229
|
-
* Keep an automatic start/end label out of seat markers and already-painted
|
|
1230
|
-
* text. The authored point is never altered. Candidates are deliberately
|
|
1231
|
-
* bounded and deterministic: the closest clear offset wins; if a chart is so
|
|
1232
|
-
* dense that none is clear, the least-colliding candidate wins so the required
|
|
1233
|
-
* row label remains present rather than being silently dropped.
|
|
1234
|
-
*/
|
|
1251
|
+
/** Keep an automatic start/end label out of seats and already-painted text. */
|
|
1235
1252
|
private resolveAutomaticRowLabelPosition;
|
|
1236
1253
|
/** Row labels never carry status; the buyer just dims them under the same
|
|
1237
1254
|
* category/price filters that dim their seats. */
|
|
@@ -1242,6 +1259,23 @@ declare class SeatmapRenderer implements ISeatmapRenderer {
|
|
|
1242
1259
|
}
|
|
1243
1260
|
declare function createRenderer(container: HTMLDivElement, opts?: RendererOptions): ISeatmapRenderer;
|
|
1244
1261
|
|
|
1262
|
+
interface CompanionSelectionIssue {
|
|
1263
|
+
code: 'companion_pair_required';
|
|
1264
|
+
labels: string[];
|
|
1265
|
+
message: string;
|
|
1266
|
+
}
|
|
1267
|
+
interface TicketOptionApplicabilityIssue {
|
|
1268
|
+
code: 'ticket_option_not_applicable';
|
|
1269
|
+
labels: string[];
|
|
1270
|
+
message: string;
|
|
1271
|
+
}
|
|
1272
|
+
interface NotForSaleSelectionIssue {
|
|
1273
|
+
code: 'not_for_sale';
|
|
1274
|
+
labels: string[];
|
|
1275
|
+
message: string;
|
|
1276
|
+
}
|
|
1277
|
+
type TicketSelectionIssue = CompanionSelectionIssue | TicketOptionApplicabilityIssue | NotForSaleSelectionIssue;
|
|
1278
|
+
|
|
1245
1279
|
interface PickerSeat {
|
|
1246
1280
|
id: string;
|
|
1247
1281
|
label: string;
|
|
@@ -1261,6 +1295,8 @@ interface PickerSeat {
|
|
|
1261
1295
|
categoryKey: string;
|
|
1262
1296
|
/** Price for the chosen tier when the category has tiers, else the base price. */
|
|
1263
1297
|
price: number;
|
|
1298
|
+
/** ISO-4217 event currency carried with SDK selection callbacks. */
|
|
1299
|
+
currency: string;
|
|
1264
1300
|
/** Ticket tiers the seat's category offers (Adult/Child/…); absent when none. */
|
|
1265
1301
|
tiers?: CategoryTier[];
|
|
1266
1302
|
/** The chosen tier's id — defaults to the first tier; absent when no tiers. */
|
|
@@ -1322,6 +1358,14 @@ interface HoldConflict {
|
|
|
1322
1358
|
label: string;
|
|
1323
1359
|
status: string;
|
|
1324
1360
|
}
|
|
1361
|
+
/** A locally detected selection-rule failure. Its public shape mirrors API
|
|
1362
|
+
* problems so SDK hosts can handle client and server enforcement identically. */
|
|
1363
|
+
declare class PickerSelectionError extends Error {
|
|
1364
|
+
readonly status = 422;
|
|
1365
|
+
readonly reason: TicketSelectionIssue['code'];
|
|
1366
|
+
readonly labels: string[];
|
|
1367
|
+
constructor(issue: TicketSelectionIssue);
|
|
1368
|
+
}
|
|
1325
1369
|
/** An open hold — its id, the labels it covers, and the server's expiry time (ms epoch). */
|
|
1326
1370
|
interface HoldInfo {
|
|
1327
1371
|
holdId: string;
|
|
@@ -1337,7 +1381,11 @@ interface SectionCategory {
|
|
|
1337
1381
|
key: string;
|
|
1338
1382
|
label: string;
|
|
1339
1383
|
color: string;
|
|
1384
|
+
/** Cheapest ticket choice in this category. `price` remains this value for
|
|
1385
|
+
* source compatibility with existing SDK hosts. */
|
|
1340
1386
|
price: number;
|
|
1387
|
+
priceMin: number;
|
|
1388
|
+
priceMax: number;
|
|
1341
1389
|
count: number;
|
|
1342
1390
|
}
|
|
1343
1391
|
/**
|
|
@@ -1568,6 +1616,20 @@ interface PickerOptions extends PickerCallbacks {
|
|
|
1568
1616
|
*/
|
|
1569
1617
|
mapTheme?: PickerMapTheme | null;
|
|
1570
1618
|
}
|
|
1619
|
+
/** Privacy-safe timings for one buyer-map load. Values are milliseconds and
|
|
1620
|
+
* contain no chart, seat, hold, buyer, or URL data. Hosts may aggregate these
|
|
1621
|
+
* with coarse chart-size/device dimensions supplied by the widget. */
|
|
1622
|
+
interface PickerRenderPerformanceProfile {
|
|
1623
|
+
loadChart: number;
|
|
1624
|
+
normalizeBuyerModel: number;
|
|
1625
|
+
createRenderer: number;
|
|
1626
|
+
loadStatuses: number;
|
|
1627
|
+
buildScene: number;
|
|
1628
|
+
applyInitialState: number;
|
|
1629
|
+
firstPaint: number;
|
|
1630
|
+
startRealtime: number;
|
|
1631
|
+
controllerTotal: number;
|
|
1632
|
+
}
|
|
1571
1633
|
/**
|
|
1572
1634
|
* The subset of `ChartTheme` a HOST may override on the drawn canvas.
|
|
1573
1635
|
*
|
|
@@ -1729,6 +1791,7 @@ declare class PickerController {
|
|
|
1729
1791
|
mode?: string;
|
|
1730
1792
|
/** Absolute event-poster URL, when the server can publicly serve one. */
|
|
1731
1793
|
posterUrl?: string | null;
|
|
1794
|
+
performanceProfile: PickerRenderPerformanceProfile;
|
|
1732
1795
|
} | null>;
|
|
1733
1796
|
getSelection(): PickerSeat[];
|
|
1734
1797
|
/** Enriched metadata for a seat confirmation card or tooltip. */
|
|
@@ -1839,10 +1902,14 @@ declare class PickerController {
|
|
|
1839
1902
|
private releaseConfirmed;
|
|
1840
1903
|
setStatus(ids: string[], status: SeatStatus): void;
|
|
1841
1904
|
getStatus(id: string): SeatStatus | undefined;
|
|
1905
|
+
/** Seat ids whose category the author marked not-for-sale. */
|
|
1906
|
+
private notForSaleCategorySeatIds;
|
|
1842
1907
|
flashSeat(id: string, color?: string): void;
|
|
1843
1908
|
zoomIn(): void;
|
|
1844
1909
|
zoomOut(): void;
|
|
1845
1910
|
zoomToFit(): void;
|
|
1911
|
+
/** Preserve section focus while the usable map viewport changes. */
|
|
1912
|
+
refitCurrentView(): void;
|
|
1846
1913
|
worldToScreen(p: {
|
|
1847
1914
|
x: number;
|
|
1848
1915
|
y: number;
|
|
@@ -1870,6 +1937,9 @@ declare class PickerController {
|
|
|
1870
1937
|
/** 3D all-floors stacked overview ⇄ active floor. Re-applies statuses after. */
|
|
1871
1938
|
setStacked(on: boolean): void;
|
|
1872
1939
|
isMultiFloor(): boolean;
|
|
1940
|
+
/** Enter/leave the source-coordinate all-floor buyer overview. */
|
|
1941
|
+
setFloorOverview(on: boolean): void;
|
|
1942
|
+
isFloorOverview(): boolean;
|
|
1873
1943
|
/** Tap-a-deck-to-enter: leave the 3D stack, drop to flat 2D on `floorId`, and
|
|
1874
1944
|
* tell the host so it can sync its 2D/3D toggle + floor-switcher state. */
|
|
1875
1945
|
private handleDeckTap;
|
|
@@ -1907,8 +1977,20 @@ declare class PickerController {
|
|
|
1907
1977
|
height: number;
|
|
1908
1978
|
};
|
|
1909
1979
|
} | null;
|
|
1980
|
+
getMinimapSnapshot(): RendererMinimapSnapshot;
|
|
1981
|
+
panToWorld(point: {
|
|
1982
|
+
x: number;
|
|
1983
|
+
y: number;
|
|
1984
|
+
}): void;
|
|
1985
|
+
/** Leave section-focus dimming without changing the current zoom. Used when
|
|
1986
|
+
* the minimap viewport itself is dragged to a different part of the venue. */
|
|
1987
|
+
clearSectionFocus(): void;
|
|
1988
|
+
/** Read-only browser-render evidence for parity/performance audit tooling. */
|
|
1989
|
+
getRenderedQualityEvidence(): RendererQualityEvidence | null;
|
|
1910
1990
|
/** Glide in on a section and surface its summary (same path as a section tap). */
|
|
1911
1991
|
focusSection(id: string): void;
|
|
1992
|
+
/** Live seat membership count used by buyer section-navigation controls. */
|
|
1993
|
+
getSectionSeatCount(id: string): number;
|
|
1912
1994
|
/** Zoom back out to the whole chart and clear the section-summary card + focus. */
|
|
1913
1995
|
overview(): void;
|
|
1914
1996
|
/** Glide the camera into a tapped section and emit its computed summary. Uses
|
|
@@ -1927,6 +2009,10 @@ declare class PickerController {
|
|
|
1927
2009
|
private describeSeat;
|
|
1928
2010
|
private priceFor;
|
|
1929
2011
|
private tiersFor;
|
|
2012
|
+
private tiersForSeat;
|
|
2013
|
+
private seatTierResolution;
|
|
2014
|
+
private tableTierSeat;
|
|
2015
|
+
private tableTierResolution;
|
|
1930
2016
|
/**
|
|
1931
2017
|
* Choose a ticket tier for a selected seat (e.g. Adult → Child). Re-emits the
|
|
1932
2018
|
* selection so the host's cart + the eventual hold carry the new tier + price.
|
|
@@ -1937,6 +2023,9 @@ declare class PickerController {
|
|
|
1937
2023
|
/** PickerSeats (with chosen tier) for a set of held labels. */
|
|
1938
2024
|
private seatsForLabels;
|
|
1939
2025
|
private emitSelectionChange;
|
|
2026
|
+
/** Check explicit tier applicability and companion relationships for the
|
|
2027
|
+
* current (or supplied) seats. Ticket display names are never semantic input. */
|
|
2028
|
+
ticketIssue(labels?: string[]): TicketSelectionIssue | null;
|
|
1940
2029
|
/** Whether the last emitted hint was non-null (avoids clearing repeatedly). */
|
|
1941
2030
|
private hintShown;
|
|
1942
2031
|
/**
|
|
@@ -2006,11 +2095,8 @@ declare class PickerController {
|
|
|
2006
2095
|
private connect;
|
|
2007
2096
|
/**
|
|
2008
2097
|
* Backoff for the PLAIN-socket fallback (a transport with no v1 client of its
|
|
2009
|
-
* own). Full jitter, for the same reason BuyerRealtimeClient uses it
|
|
2010
|
-
*
|
|
2011
|
-
* socket back in the same millisecond, and an on-sale crowd reconnecting in
|
|
2012
|
-
* lockstep turns one blip into a thundering herd. The ceiling still doubles,
|
|
2013
|
-
* so a sustained outage still backs off.
|
|
2098
|
+
* own). Full jitter, for the same reason BuyerRealtimeClient uses it — see
|
|
2099
|
+
* `core/backoff`, which now owns that rationale and the schedule.
|
|
2014
2100
|
*/
|
|
2015
2101
|
private scheduleReconnect;
|
|
2016
2102
|
}
|
|
@@ -2098,6 +2184,14 @@ declare function setStringOverrides(next: Dict): void;
|
|
|
2098
2184
|
declare function t(key: string, vars?: Record<string, string | number>): string;
|
|
2099
2185
|
/** "1 seat" / "3 seats" without hand-rolled concatenation. */
|
|
2100
2186
|
declare function tCount(key: string, count: number, vars?: Record<string, string | number>): string;
|
|
2187
|
+
/**
|
|
2188
|
+
* Kept for the SDK surface that imports dates from here. It is a thin pass to
|
|
2189
|
+
* `core/datetime`, which owns every date shape in the app and caches its
|
|
2190
|
+
* formatters per (locale, shape) — the defaults below are the same ones it
|
|
2191
|
+
* uses, so the two were already interchangeable and are now literally the same
|
|
2192
|
+
* code. `active` is passed explicitly so this cannot drift from `t()` even if
|
|
2193
|
+
* something calls `setDateTimeLocale` on its own.
|
|
2194
|
+
*/
|
|
2101
2195
|
declare function formatDate(value: number | Date, opts?: Intl.DateTimeFormatOptions): string;
|
|
2102
2196
|
|
|
2103
2197
|
/**
|
|
@@ -2141,9 +2235,14 @@ declare function setMoneyLocale(locale: string | undefined): void;
|
|
|
2141
2235
|
/**
|
|
2142
2236
|
* "€45" / "$1,500" / "45 €" (locale-dependent placement).
|
|
2143
2237
|
* Whole amounts render without ".00" (design shows "$45", "$120"); pass
|
|
2144
|
-
* `fractionDigits` for fixed precision (e.g. 3 for "$0.045 / credit"
|
|
2238
|
+
* `fractionDigits` for fixed precision (e.g. 3 for "$0.045 / credit", or `0`
|
|
2239
|
+
* for a report column that rounds to whole units).
|
|
2240
|
+
*
|
|
2241
|
+
* `locale` overrides the app locale for one call — the buyer-facing website
|
|
2242
|
+
* templates render in the VISITOR's language, which is not necessarily the
|
|
2243
|
+
* dashboard's. Mirrors `DateFormatOptions.locale` in `core/datetime`.
|
|
2145
2244
|
*/
|
|
2146
|
-
declare function formatMoney(amount: number, currency?: string, fractionDigits?: number): string;
|
|
2245
|
+
declare function formatMoney(amount: number, currency?: string, fractionDigits?: number, locale?: string): string;
|
|
2147
2246
|
/**
|
|
2148
2247
|
* How many decimal places a currency has — 2 for USD/EUR, 0 for JPY/KRW/VND,
|
|
2149
2248
|
* 3 for KWD/BHD/JOD.
|
|
@@ -2167,8 +2266,8 @@ declare function currencyExponent(currency?: string): number;
|
|
|
2167
2266
|
*/
|
|
2168
2267
|
declare function fromMinorUnits(minor: number, currency?: string): number;
|
|
2169
2268
|
/** "$90" / "¥9,000" — a minor-unit integer rendered for display. */
|
|
2170
|
-
declare function formatMinor(minor: number, currency?: string): string;
|
|
2269
|
+
declare function formatMinor(minor: number, currency?: string, locale?: string): string;
|
|
2171
2270
|
/** Bare symbol for input adornments ("€", "$", "₹"). */
|
|
2172
2271
|
declare function currencySymbol(currency?: string): string;
|
|
2173
2272
|
|
|
2174
|
-
export { AccessibilityType, type AvailabilityRule, BoothObject, CURRENCY_CHOICES, CategoryTier, ChartDoc, ChartObject, DEFAULT_CURRENCY, type Dict, type ExpandChartOptions, ExpandedSeat, Floor, GAAreaObject, GAInventorySegment, type HoldConflict, type HoldInfo, type HoldSelectionRequest, type HoldServerItem, ISeatmapRenderer, LabelStyle, type Locale, LodRung, MAX_EVENT_INVENTORY, MAX_GA_CAPACITY, type PanoramaResult, type PickerCallbacks, PickerController, type PickerGAArea, type PickerMapTheme, type PickerOptions, type PickerRealtimeConnection, type PickerRealtimeSink, type PickerSeat, type PickerStatusChange, type PickerTransport, Point, RENDERED_QUALITY_REPORT_VERSION, RectTableSeatCounts, RectTableSide, type RenderedEvidenceState, RenderedFreeTextEvidence, type RenderedQualityFinding, type RenderedQualityFindingCode, type RenderedQualityReport, type RenderedQualitySample, RendererCallbacks, RendererOptions, RendererQualityEvidence, RendererViewMode, RowObject, type RowSeatSlot, SUPPORTED_LOCALES, SeatCommercialAttributes, type SeatHoverDetails, SeatOverride, SeatStatus, SeatViewMetadata, SeatmapRenderer, type SectionCategory, type SectionNode, SectionObject, type SectionSummary, TIER_HEIGHT_M, TableObject, type TableSeatSlot, type TableSelectionDetails, UNGROUPED_ID, allObjects, applyHidden, chartBounds, computeSections, createRenderer, currencyExponent, currencySymbol, expandBooth, expandChart, expandRow, expandRowSlots, expandTable, expandTableSlots, floorObjects, floorsOf, formatDate, formatMinor, formatMoney, fromMinorUnits, gaAreasOf, gaInventorySegments, gaUnitLabel, gaUnitLabels, generateSeatPanorama, generateSeatThumb, getLocale, growJoinedGAInventory, hiddenObjectIds, inspectRenderedQualityEvidence, isGaUnitLabel, isSectionHidden, loadLocale, objectCenter, owningSectionForObject, pointInPolygon, pointInPolygonWithHoles, polygonLabelPoint, resolveLocale, rowInventoryCount, rowSeatPositions, sectionGeometry, setLocale, setMoneyLocale, setStringOverrides, stackFloors, t, tCount, tableInventoryCount, tableSeatCountsBySide, validGAInventorySegments };
|
|
2273
|
+
export { AccessibilityType, type AvailabilityRule, BoothObject, CURRENCY_CHOICES, CategoryTier, ChartDoc, ChartObject, DEFAULT_CURRENCY, type Dict, type ExpandChartOptions, ExpandedSeat, Floor, GAAreaObject, GAInventorySegment, type HoldConflict, type HoldInfo, type HoldSelectionRequest, type HoldServerItem, ISeatmapRenderer, LabelStyle, type Locale, LodRung, MAX_EVENT_INVENTORY, MAX_GA_CAPACITY, type PanoramaResult, type PickerCallbacks, PickerController, type PickerGAArea, type PickerMapTheme, type PickerOptions, type PickerRealtimeConnection, type PickerRealtimeSink, type PickerRenderPerformanceProfile, type PickerSeat, PickerSelectionError, type PickerStatusChange, type PickerTransport, Point, RENDERED_QUALITY_REPORT_VERSION, RectTableSeatCounts, RectTableSide, type RenderedEvidenceState, RenderedFreeTextEvidence, type RenderedQualityFinding, type RenderedQualityFindingCode, type RenderedQualityReport, type RenderedQualitySample, RendererCallbacks, RendererMinimapSnapshot, RendererOptions, RendererQualityEvidence, RendererViewMode, RowObject, type RowSeatSlot, SUPPORTED_LOCALES, SeatCommercialAttributes, type SeatHoverDetails, SeatOverride, SeatStatus, SeatViewMetadata, SeatmapRenderer, type SectionCategory, type SectionNode, SectionObject, type SectionSummary, TIER_HEIGHT_M, TableObject, type TableSeatSlot, type TableSelectionDetails, UNGROUPED_ID, allObjects, applyHidden, chartBounds, computeSections, createRenderer, currencyExponent, currencySymbol, expandBooth, expandChart, expandRow, expandRowSlots, expandTable, expandTableSlots, floorObjects, floorOverviewTranslations, floorsOf, formatDate, formatMinor, formatMoney, fromMinorUnits, gaAreasOf, gaInventorySegments, gaUnitLabel, gaUnitLabels, generateSeatPanorama, generateSeatThumb, getLocale, growJoinedGAInventory, hiddenObjectIds, inspectRenderedQualityEvidence, isGaUnitLabel, isSectionHidden, layoutFloorOverview, loadLocale, objectCenter, owningSectionForObject, pointInPolygon, pointInPolygonWithHoles, polygonLabelPoint, resolveLocale, rowInventoryCount, rowSeatPositions, sectionGeometry, setLocale, setMoneyLocale, setStringOverrides, stackFloors, t, tCount, tableInventoryCount, tableSeatCountsBySide, translateObject, validGAInventorySegments };
|