@seatlayer/core 0.79.0 → 0.80.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/ar-4USORDJ2.js +1 -0
- package/dist/be-LVIKPY6K.js +1 -0
- package/dist/bg-7SHLJNML.js +1 -0
- package/dist/ca-BGX4KCNM.js +1 -0
- package/dist/chunk-7LMW7QTP.js +1 -0
- package/dist/chunk-C7MR6CFC.js +1 -0
- package/dist/{chunk-SGYNM3SG.js → chunk-GQLJAU75.js} +1 -1
- package/dist/{chunk-SSBMTFAV.js → chunk-SKMHD76O.js} +1 -1
- package/dist/{chunk-FGMGDTMR.js → chunk-YXOSJLK7.js} +1 -1
- package/dist/core/chart-ops/index.js +1 -1
- package/dist/core/inventory/index.cjs +1 -1
- package/dist/core/inventory/index.d.cts +2 -2
- package/dist/core/inventory/index.d.ts +2 -2
- package/dist/core/inventory/index.js +1 -1
- package/dist/core/layout/index.d.cts +2 -2
- package/dist/core/layout/index.d.ts +2 -2
- package/dist/core/quality/index.cjs +1 -1
- package/dist/core/quality/index.d.cts +34 -3
- package/dist/core/quality/index.d.ts +34 -3
- package/dist/core/quality/index.js +1 -1
- package/dist/core/sections/index.d.cts +1 -1
- package/dist/core/sections/index.d.ts +1 -1
- package/dist/cs-VW5JVFLX.js +1 -0
- package/dist/cy-USSTUCIU.js +1 -0
- package/dist/da-OGGV4WBH.js +1 -0
- package/dist/de-PLAWZKMA.js +1 -0
- package/dist/el-S5RMKQHN.js +1 -0
- package/dist/es-3CA56GCO.js +1 -0
- package/dist/et-OUZBFOII.js +1 -0
- package/dist/fa-A5T5IY5C.js +1 -0
- package/dist/fi-MXJW5KTC.js +1 -0
- package/dist/fr-24DBNPEI.js +1 -0
- package/dist/he-TBD6IXSM.js +1 -0
- package/dist/hr-YVEOBL5P.js +1 -0
- package/dist/hu-ZX7D57XA.js +1 -0
- package/dist/index.cjs +1 -1
- package/dist/index.d.cts +114 -80
- package/dist/index.d.ts +114 -80
- package/dist/index.js +1 -1
- package/dist/it-FLP5ZN7P.js +1 -0
- package/dist/ja-M75LXFE4.js +1 -0
- package/dist/ku-DMKHQWY3.js +1 -0
- package/dist/localeLoaders-JZGFG32X.js +1 -0
- package/dist/lt-5LTX5MNB.js +1 -0
- package/dist/lv-UXZX5BZI.js +1 -0
- package/dist/nl-WPC36W3G.js +1 -0
- package/dist/no-UIVMLJ4P.js +1 -0
- package/dist/pl-TUDTISCL.js +1 -0
- package/dist/pt-ACUXKL3R.js +1 -0
- package/dist/{renderedQuality-C4-5Oy6-.d.ts → renderedQuality-DpeC4FAX.d.ts} +1 -1
- package/dist/{renderedQuality-CHAf5J4i.d.cts → renderedQuality-twM7ALWT.d.cts} +1 -1
- package/dist/{renderer-CuLIU7z1.d.cts → renderer-CPiYrzQW.d.cts} +18 -4
- package/dist/{renderer-Bx0ucRf6.d.ts → renderer-sNijqlYf.d.ts} +18 -4
- package/dist/ro-NK7KQDS6.js +1 -0
- package/dist/ru-DESUHS6U.js +1 -0
- package/dist/sk-V75T3PCE.js +1 -0
- package/dist/sl-DCJMM2MY.js +1 -0
- package/dist/sr-ZJGHUZOY.js +1 -0
- package/dist/sv-DES67YAC.js +1 -0
- package/dist/{tableSizing-tDaLWj54.d.cts → tableSizing-Dcl2RqNV.d.cts} +1 -1
- package/dist/{tableSizing-Dr-ksQTq.d.ts → tableSizing-tLCqlt0I.d.ts} +1 -1
- package/dist/{ticketRestrictions-7HrT6IQM.d.ts → ticketRestrictions-Bq1uykn4.d.ts} +46 -6
- package/dist/{ticketRestrictions-B4eT6vEy.d.cts → ticketRestrictions-CgReCops.d.cts} +46 -6
- package/dist/tr-MM4XA4AF.js +1 -0
- package/dist/uk-M2OBRDMC.js +1 -0
- package/dist/view3d/index.d.cts +1 -1
- package/dist/view3d/index.d.ts +1 -1
- package/dist/view3d/index.js +1 -1
- package/dist/view3d/scene/scene.worker.js +1 -1
- package/dist/zh-Hans-NI3CSKQM.js +1 -0
- package/dist/zh-Hant-556PQY3P.js +1 -0
- package/package.json +1 -1
- package/dist/ar-MBXKQCHF.js +0 -1
- package/dist/be-ZUVYQYAI.js +0 -1
- package/dist/bg-62YMMGP4.js +0 -1
- package/dist/ca-6CX2TCFE.js +0 -1
- package/dist/chunk-O5UH442K.js +0 -1
- package/dist/chunk-XD2P4ZS4.js +0 -1
- package/dist/cs-HPMCEWCG.js +0 -1
- package/dist/cy-NF6Y2W6J.js +0 -1
- package/dist/da-22D72GSM.js +0 -1
- package/dist/de-RPFLEDOZ.js +0 -1
- package/dist/el-FUQRGODC.js +0 -1
- package/dist/es-MCE7ZWGC.js +0 -1
- package/dist/et-GS4LQD5N.js +0 -1
- package/dist/fa-5MNQP3RH.js +0 -1
- package/dist/fi-5A22IZ6C.js +0 -1
- package/dist/fr-QSMP5CON.js +0 -1
- package/dist/he-ET4VHFSC.js +0 -1
- package/dist/hr-CEQPLBXQ.js +0 -1
- package/dist/hu-NWXXZPCO.js +0 -1
- package/dist/it-LJJQ32WS.js +0 -1
- package/dist/ja-JH7SZMXQ.js +0 -1
- package/dist/ku-ZEL3JYZ3.js +0 -1
- package/dist/localeLoaders-CG4DAMUW.js +0 -1
- package/dist/lt-X4GMJWOB.js +0 -1
- package/dist/lv-OORJZFNN.js +0 -1
- package/dist/nl-EIWNKXHE.js +0 -1
- package/dist/no-KE42FJWD.js +0 -1
- package/dist/pl-ATCAGIF2.js +0 -1
- package/dist/pt-5DSXBZNH.js +0 -1
- package/dist/ro-ESUBYINR.js +0 -1
- package/dist/ru-5SYA53AZ.js +0 -1
- package/dist/sk-QHQ7T2BK.js +0 -1
- package/dist/sl-OQHYGFQ7.js +0 -1
- package/dist/sr-VOVDWZBT.js +0 -1
- package/dist/sv-II3AGEJF.js +0 -1
- package/dist/tr-EZHEWRQG.js +0 -1
- package/dist/uk-V3LWALME.js +0 -1
- package/dist/zh-Hans-WG6IMHH2.js +0 -1
- package/dist/zh-Hant-I55RLM6N.js +0 -1
package/dist/index.d.cts
CHANGED
|
@@ -2,13 +2,13 @@ import { C as ChartDoc, F as FloorLabelStyle, P as Point, A as AccessibilityType
|
|
|
2
2
|
export { x as ACCESSIBILITY_RING_COLOR, y as ACCESSIBILITY_TYPES, z as AccessibilityMeta, D as AuthoringObjectState, B as BoothObject, p as Category, E as ChartLayoutConstraint, a as ChartObject, o as ChartReferenceImage, H as ChartTheme, I as ConfidenceEvidenceScope, u as CubicPath, J as DecorImageObject, m as Floor, G as GAAreaObject, i as GAInventorySegment, K as LABEL_STYLE_MAX_SIZE, M as LABEL_STYLE_MIN_SIZE, N as LabelPresentation, L as LabelStyle, O as ObjectEditorState, Q as Physical3dEvidence, U as RadialClearanceLayoutConstraint, n as RectTableSeatCounts, l as RectTableSide, V as ReferenceAccessibilitySource, W as ReferenceCalibration, X as ReferenceCategorySource, Y as ReferenceDerivedScale, Z as ReferenceDirectAnnotationSource, _ as ReferenceDirectLandmarkCandidate, $ as ReferenceDirectLandmarkDisposition, a0 as ReferenceDirectLandmarkRole, a1 as ReferenceDirectLandmarkSource, a2 as ReferenceDirectSeatGroup, a3 as ReferenceDirectSeatImportSource, a4 as ReferenceDirectSeatPlan, a5 as ReferenceDirectStageSource, a6 as ReferenceEnrichmentStatus, a7 as ReferenceExtractEmptyReason, a8 as ReferenceExtractEnrichment, a9 as ReferenceExtractInput, aa as ReferenceExtractProposal, ab as ReferenceExtractRegionSeats, ac as ReferenceInventoryExclusionSource, ad as ReferenceInventorySource, ae as ReferenceMatchReport, af as ReferenceScanProposal, ag as ReferenceScanRowProposal, ah as ReferenceScanSectionProposal, ai as ReferenceSeatSeed, aj as ReferenceSectionTraceBatchInput, ak as ReferenceSectionTraceBatchProposal, al as ReferenceSectionTraceInput, am as ReferenceSectionTraceProposal, c as ResolvedSeatConfidenceEvidence, R as RowObject, an as SEAT_COMMERCIAL_MARKS, ao as STAGE_LABEL_STYLE_MAX_SIZE, ap as SURROUNDINGS_SHAPE_ROLES, aq as SeatCommercialMark, ar as SeatCommercialMeta, as as SeatConfidenceCoverage, at as SeatConfidenceEvidence, au as SeatConfidenceModelLevel, av as SeatConfidenceModeledTarget, aw as SeatConfidenceRealityLevel, d as SeatGlyphKind, k as SeatOverride, e as SeatViewCoverage, b as SeatViewMetadata, ax as SeatViewVariant, h as SectionObject, f as SectionOutlinePath, g as SectionPathSegment, ay as SelectionLayer, q as ShapeLineCap, r as ShapeLineEnding, s as ShapeLineJoin, t as ShapeObject, az as StageLabelStyle, T as TableObject, aA as TextAlignment, aB as TextBackground, v as TextObject, aC as TicketTierApplicability, aD as TicketTierEvidence, aE as TicketTierRestriction, aF as Venue3DMaterialPalette, aG as VenueSurveyRegistrationEvidence, aH as ZoneDef, aI as accessibilityMeta, aJ as accessibilityRingColor, aK as layerOf, aL as seatCommercialMeta } from './types-eVmh2-Yn.cjs';
|
|
3
3
|
import { c as EventConfigurationRef, b as EventConfigurationVersion } from './eventConfigurations-OVlni2ym.cjs';
|
|
4
4
|
export { d as EVENT_CONFIGURATION_EXPORT_SCHEMA, e as EVENT_CONFIGURATION_SCHEMA, f as EventConfigurationBaseVenue, g as EventConfigurationCompatibilityIssue, h as EventConfigurationCompatibilityIssueCode, i as EventConfigurationCompatibilityResult, j as EventConfigurationExportEnvelope, k as EventConfigurationLifecycleStatus, a as EventConfigurationOcclusion, l as EventConfigurationOverlay, m as EventConfigurationParseIssue, n as EventConfigurationParseIssueCode, o as EventConfigurationParseResult, p as EventConfigurationProductionElement, E as EventConfigurationProductionElementKind, q as EventConfigurationVenueSnapshot, r as EventConfigurationVersionParseResult, s as EventConfigurationVersionSummary, L as LegacyEventConfigurationMigrationResult, t as canTransitionEventConfiguration, u as canonicalEventConfigurationJson, v as inspectEventConfigurationCompatibility, w as migrateLegacyEventConfigurations, x as parseEventConfigurationExport, y as parseEventConfigurationVersion, z as resolveEventConfigurationRollback } from './eventConfigurations-OVlni2ym.cjs';
|
|
5
|
-
export { A as AUTOMATIC_ROUND_TABLE_RADIUS_MAX, a as AUTOMATIC_ROUND_TABLE_RADIUS_MIN, C as ChartBoundsOptions, E as ExpandChartOptions, F as FLOOR_STACK_GAP_RATIO, b as FLOOR_STACK_MIN_SURFACE_PX, c as FloorStackOptions, d as FloorStackPlacement, R as RowSeatSlot, T as TABLE_SEAT_OFFSET, e as TableSeatSlot, f as allObjects, g as automaticRoundTableRadius, h as chartBounds, i as expandBooth, j as expandChart, k as expandRow, l as expandRowSlots, m as expandTable, n as expandTableSlots, o as floorObjects, p as floorStackPlacements, q as floorsOf, r as initialFloorMode, s as layoutFloorStack, t as mainFloorId, u as objectCenter, v as owningSectionForObject, w as pointInPolygon, x as pointInPolygonWithHoles, y as polygonLabelPoint, z as rowInventoryCount, B as rowSeatPositions, D as stackFloors, G as tableInventoryCount, H as tableSeatCountsBySide, I as translateObject } from './tableSizing-
|
|
6
|
-
import {
|
|
7
|
-
export { M as MAX_EVENT_INVENTORY, d as MAX_GA_CAPACITY,
|
|
5
|
+
export { A as AUTOMATIC_ROUND_TABLE_RADIUS_MAX, a as AUTOMATIC_ROUND_TABLE_RADIUS_MIN, C as ChartBoundsOptions, E as ExpandChartOptions, F as FLOOR_STACK_GAP_RATIO, b as FLOOR_STACK_MIN_SURFACE_PX, c as FloorStackOptions, d as FloorStackPlacement, R as RowSeatSlot, T as TABLE_SEAT_OFFSET, e as TableSeatSlot, f as allObjects, g as automaticRoundTableRadius, h as chartBounds, i as expandBooth, j as expandChart, k as expandRow, l as expandRowSlots, m as expandTable, n as expandTableSlots, o as floorObjects, p as floorStackPlacements, q as floorsOf, r as initialFloorMode, s as layoutFloorStack, t as mainFloorId, u as objectCenter, v as owningSectionForObject, w as pointInPolygon, x as pointInPolygonWithHoles, y as polygonLabelPoint, z as rowInventoryCount, B as rowSeatPositions, D as stackFloors, G as tableInventoryCount, H as tableSeatCountsBySide, I as translateObject } from './tableSizing-Dcl2RqNV.cjs';
|
|
6
|
+
import { g as TicketSelectionIssue, b as GroupedTableInventoryUnit } from './ticketRestrictions-CgReCops.cjs';
|
|
7
|
+
export { M as MAX_EVENT_INVENTORY, d as MAX_GA_CAPACITY, l as gaAreasOf, m as gaInventorySegments, n as gaUnitLabel, o as gaUnitLabels, q as growJoinedGAInventory, s as isGaUnitLabel, x as validGAInventorySegments } from './ticketRestrictions-CgReCops.cjs';
|
|
8
8
|
export { A as AvailabilityRule, S as SectionNode, T as TIER_HEIGHT_M, U as UNGROUPED_ID, a as applyHidden, c as computeSections, h as hiddenObjectIds, i as isSectionHidden, s as sectionGeometry } from './sections-DUG5M-hF.cjs';
|
|
9
|
-
export { M as MIN_POINTER_TARGET_PX, R as RENDERED_QUALITY_REPORT_VERSION, a as RenderedEvidenceState, b as RenderedQualityFinding, c as RenderedQualityFindingCode, d as RenderedQualityReport, e as RenderedQualitySample, i as inspectRenderedQualityEvidence } from './renderedQuality-
|
|
10
|
-
import { I as ISeatmapRenderer, b as RendererOptions, S as SeatStatus, c as SeatMark, E as ExpandedSeat, G as GAAreaState, d as RendererViewMode, e as RendererMinimapSnapshot, L as LodRung, R as RendererQualityEvidence, f as RendererCallbacks } from './renderer-
|
|
11
|
-
export { C as CHART_STORAGE_KEY, g as RenderedBookableLabelEvidence, a as RenderedFreeTextEvidence, h as RenderedGAAreaEvidence, i as RenderedHierarchyLabelEvidence, j as RenderedLabelHiddenReason, k as RenderedRowLabelEvidence, l as RendererHoverDetails, m as RendererMinimapSeat, n as RendererMinimapSection, o as SeatMarkKind } from './renderer-
|
|
9
|
+
export { M as MIN_POINTER_TARGET_PX, R as RENDERED_QUALITY_REPORT_VERSION, a as RenderedEvidenceState, b as RenderedQualityFinding, c as RenderedQualityFindingCode, d as RenderedQualityReport, e as RenderedQualitySample, i as inspectRenderedQualityEvidence } from './renderedQuality-twM7ALWT.cjs';
|
|
10
|
+
import { I as ISeatmapRenderer, b as RendererOptions, S as SeatStatus, c as SeatMark, E as ExpandedSeat, G as GAAreaState, d as RendererViewMode, e as RendererMinimapSnapshot, L as LodRung, R as RendererQualityEvidence, f as RendererCallbacks } from './renderer-CPiYrzQW.cjs';
|
|
11
|
+
export { C as CHART_STORAGE_KEY, g as RenderedBookableLabelEvidence, a as RenderedFreeTextEvidence, h as RenderedGAAreaEvidence, i as RenderedHierarchyLabelEvidence, j as RenderedLabelHiddenReason, k as RenderedRowLabelEvidence, l as RendererHoverDetails, m as RendererMinimapSeat, n as RendererMinimapSection, o as SeatMarkKind } from './renderer-CPiYrzQW.cjs';
|
|
12
12
|
import './segmentedRowModel-BYSxfsqX.cjs';
|
|
13
13
|
|
|
14
14
|
/**
|
|
@@ -210,9 +210,13 @@ declare class SeatmapRenderer implements ISeatmapRenderer {
|
|
|
210
210
|
private ownedCache;
|
|
211
211
|
/** The pressable "your seats are in here" marks below the seats rung. */
|
|
212
212
|
private beaconsCache;
|
|
213
|
+
/** Desktop hover card — see render/hoverCard. Mouse only; built on attach. */
|
|
214
|
+
private hoverCardCache;
|
|
213
215
|
/** Held by this picker instance, not by another buyer. */
|
|
214
216
|
private ownedHold;
|
|
215
217
|
private seatMarks;
|
|
218
|
+
/** Built on first paint and kept for the renderer's life — see seatPaintContext. */
|
|
219
|
+
private seatPaintCache;
|
|
216
220
|
/** One selected seat being inspected before it is committed to the cart. */
|
|
217
221
|
private selectionFocusId;
|
|
218
222
|
/** Seats that keep full ink while the confirm card is open — see
|
|
@@ -273,8 +277,14 @@ declare class SeatmapRenderer implements ISeatmapRenderer {
|
|
|
273
277
|
/** Non-listening visual dim outside the focused section. One overlay replaces
|
|
274
278
|
* descendant opacity mutations across every seat in the venue. */
|
|
275
279
|
private focusDimOverlay;
|
|
276
|
-
/** Does entering a section draw the entrance dim + backdrop?
|
|
277
|
-
*
|
|
280
|
+
/** Does entering a section draw the entrance dim + backdrop?
|
|
281
|
+
*
|
|
282
|
+
* `null` — the default — means "nobody has said", and the answer is derived
|
|
283
|
+
* from the stage: a narrow (phone-sized) stage gets no dim, a wide one does.
|
|
284
|
+
* A host that calls {@link setSectionFocusDim} pins it to a boolean and its
|
|
285
|
+
* answer wins from then on. The tri-state exists because the ONLY caller was
|
|
286
|
+
* `SeatPicker`, which is never mounted on the native bridge — so every
|
|
287
|
+
* native SDK got the desktop dim on a phone-sized stage. */
|
|
278
288
|
private sectionFocusDim;
|
|
279
289
|
/** How many camera moves the BUYER has made — see {@link getCameraGestureCount}. */
|
|
280
290
|
private cameraGestures;
|
|
@@ -347,10 +357,7 @@ declare class SeatmapRenderer implements ISeatmapRenderer {
|
|
|
347
357
|
private cached;
|
|
348
358
|
private dpr;
|
|
349
359
|
/** Current chart's buyer-visible image work. Failures are retained until ready(). */
|
|
350
|
-
private
|
|
351
|
-
private assetPromises;
|
|
352
|
-
private assetErrors;
|
|
353
|
-
private assetCancels;
|
|
360
|
+
private readonly assets;
|
|
354
361
|
/**
|
|
355
362
|
* Progressive reveal: what a big chart does instead of appearing all at once.
|
|
356
363
|
*
|
|
@@ -413,6 +420,8 @@ declare class SeatmapRenderer implements ISeatmapRenderer {
|
|
|
413
420
|
* frame loop.
|
|
414
421
|
*/
|
|
415
422
|
private get breath();
|
|
423
|
+
/** The hover card. One element, reused; the camera decides what it says. */
|
|
424
|
+
private get hoverCard();
|
|
416
425
|
/**
|
|
417
426
|
* The selection beacons. Built on first use, like every other overlay family:
|
|
418
427
|
* a map nobody has picked a seat on allocates nothing and appends no DOM.
|
|
@@ -609,7 +618,13 @@ declare class SeatmapRenderer implements ISeatmapRenderer {
|
|
|
609
618
|
private framingViewport;
|
|
610
619
|
/** The visible band in world space — what "where the buyer is looking" means. */
|
|
611
620
|
private framingWorldRect;
|
|
621
|
+
/** Frame the whole venue. The fit it lands on is render/camera's `fitScale`,
|
|
622
|
+
* which every zoom bound in this renderer is read from. */
|
|
612
623
|
zoomToFit(): void;
|
|
624
|
+
/** Everything render/camera reads and writes here. Built once: `focusRegion`
|
|
625
|
+
* runs a per-frame tween, and a host per frame is a per-frame allocation. */
|
|
626
|
+
private get cameraHost();
|
|
627
|
+
private cameraHostCache;
|
|
613
628
|
/**
|
|
614
629
|
* Reframe after a host/layout resize without throwing away section context.
|
|
615
630
|
* The stage already represents the usable map area (the picker side panel is
|
|
@@ -696,8 +711,6 @@ declare class SeatmapRenderer implements ISeatmapRenderer {
|
|
|
696
711
|
getViewMode(): RendererViewMode;
|
|
697
712
|
/** Live ISO projection state handed to the `render/projection` free functions. */
|
|
698
713
|
private get isoState();
|
|
699
|
-
/** Iso angle (rad) + y-squash for the current isoT. */
|
|
700
|
-
private isoParams;
|
|
701
714
|
/** Effective vertical scale = stage scale × iso squash — legibility math uses this. */
|
|
702
715
|
private effScale;
|
|
703
716
|
/** Project a world point through the iso affine about the chart centre (→ iso-world). */
|
|
@@ -706,11 +719,6 @@ declare class SeatmapRenderer implements ISeatmapRenderer {
|
|
|
706
719
|
private isoInverse;
|
|
707
720
|
/** Precompute the Phase-C pinhole camera and every exact seat anchor. */
|
|
708
721
|
private buildPerspectiveProjection;
|
|
709
|
-
/** Apply an affine to a Konva container while keeping `pivot` fixed logically. */
|
|
710
|
-
private setContainerAffine;
|
|
711
|
-
private resetContainerTransform;
|
|
712
|
-
/** Exact raked surface height used for the bounded section tangent plane. */
|
|
713
|
-
private sectionSurfaceHeight;
|
|
714
722
|
/** Desired perspective-space point for a section surface, before Stage pan/zoom. */
|
|
715
723
|
private projectedSectionPoint;
|
|
716
724
|
/** Shared-layer local point which the ground affine paints at `projected`. */
|
|
@@ -722,13 +730,10 @@ declare class SeatmapRenderer implements ISeatmapRenderer {
|
|
|
722
730
|
* the section's resolved real height in world units (Phase B1).
|
|
723
731
|
*/
|
|
724
732
|
private isoLiftLocal;
|
|
725
|
-
/**
|
|
726
|
-
|
|
727
|
-
|
|
728
|
-
* while the semantic overview keeps that layer fully transparent. */
|
|
733
|
+
/** The scene-graph half of a projection change — see render/projectionApply. */
|
|
734
|
+
private get projectionHost();
|
|
735
|
+
private projectionHostCache;
|
|
729
736
|
private resetLayerTransforms;
|
|
730
|
-
/** Restore section-owned containers before applying another projection. */
|
|
731
|
-
private resetSectionProjection;
|
|
732
737
|
/** Node/cache context the shared seat-anchor pass reads and updates. */
|
|
733
738
|
/** Cached, unlike its siblings, because it holds only stable references and
|
|
734
739
|
* no camera reading that could go stale; setChart (which reassigns `seats`)
|
|
@@ -739,18 +744,10 @@ declare class SeatmapRenderer implements ISeatmapRenderer {
|
|
|
739
744
|
/** Move native seat/booth hit shapes to or from their exact pinhole anchors. */
|
|
740
745
|
private applyExactSeatAnchors;
|
|
741
746
|
/**
|
|
742
|
-
* Phase C projected 2.5D
|
|
743
|
-
*
|
|
744
|
-
* section. Native Konva shapes move with the anchors, so direct hit testing is
|
|
745
|
-
* the same graph that paints the buyer-visible unit.
|
|
747
|
+
* Phase C projected 2.5D, and the isometric tilt — both live in
|
|
748
|
+
* render/projectionApply, together with the resets they open with.
|
|
746
749
|
*/
|
|
747
750
|
private applyPerspective;
|
|
748
|
-
/**
|
|
749
|
-
* Apply the current isoT to the scene: the base rotate+squash as a decomposed
|
|
750
|
-
* layer transform (so seats/décor/rings project together and Konva's own
|
|
751
|
-
* hit-testing follows), upright counter-transforms on text, and the elevation
|
|
752
|
-
* lift + extruded side faces on elevated sections.
|
|
753
|
-
*/
|
|
754
751
|
private applyIso;
|
|
755
752
|
/** Counter-skew every visible label so it renders upright at its projected anchor. */
|
|
756
753
|
private applyUprightLabels;
|
|
@@ -842,7 +839,16 @@ declare class SeatmapRenderer implements ISeatmapRenderer {
|
|
|
842
839
|
/** Preserve an explicit seat-number swatch exactly; only Automatic follows
|
|
843
840
|
* the state-aware contrast fallback as seat paint changes. */
|
|
844
841
|
private seatLabelInk;
|
|
845
|
-
/**
|
|
842
|
+
/**
|
|
843
|
+
* The per-seat paint context. Built once and kept: `paintSeat` runs per seat
|
|
844
|
+
* per repaint — up to 53k times — so a host per call would be paid for on
|
|
845
|
+
* exactly the device that can least afford it. Every field is an accessor,
|
|
846
|
+
* because the maps and scalars behind them are replaced by `setChart` and by
|
|
847
|
+
* theme changes while this object stays.
|
|
848
|
+
*/
|
|
849
|
+
private get seatPaintContext();
|
|
850
|
+
/** Apply fill/stroke/opacity for a seat's current status + selection.
|
|
851
|
+
* The ordering of every rule that decides it lives in render/seatPaint. */
|
|
846
852
|
private paintSeat;
|
|
847
853
|
/** True when a seat sits in a section/zone currently marked `closed`. */
|
|
848
854
|
private seatInClosedSection;
|
|
@@ -916,6 +922,13 @@ declare class SeatmapRenderer implements ISeatmapRenderer {
|
|
|
916
922
|
* `focusedSeatOpacity` is already gated on the overlay existing, so seats and
|
|
917
923
|
* their labels simply stay at full brightness.
|
|
918
924
|
*/
|
|
925
|
+
/**
|
|
926
|
+
* The answer in force right now: an explicit {@link setSectionFocusDim} when
|
|
927
|
+
* a host gave one, otherwise the stage's own width. Narrow stages (phones,
|
|
928
|
+
* and every native WebView, which mounts no DOM chrome to call the setter)
|
|
929
|
+
* resolve to no dim.
|
|
930
|
+
*/
|
|
931
|
+
private sectionDimEnabled;
|
|
919
932
|
setSectionFocusDim(enabled: boolean): void;
|
|
920
933
|
/** Clear an AXS section focus — restore full-bowl brightness + drop the backdrop. */
|
|
921
934
|
clearSectionFocus(): void;
|
|
@@ -1001,7 +1014,6 @@ declare class SeatmapRenderer implements ISeatmapRenderer {
|
|
|
1001
1014
|
* turns the retained failures into one actionable error.
|
|
1002
1015
|
*/
|
|
1003
1016
|
private trackAssetImage;
|
|
1004
|
-
/** Cancel and release every image retained by the previous chart/export. */
|
|
1005
1017
|
private cancelAssetLoads;
|
|
1006
1018
|
/** Organizer floor-plan photo, dimmed, at the very bottom of the bg layer. */
|
|
1007
1019
|
private renderBackgroundImage;
|
|
@@ -1095,66 +1107,33 @@ declare class SeatmapRenderer implements ISeatmapRenderer {
|
|
|
1095
1107
|
*/
|
|
1096
1108
|
private sectionBounds;
|
|
1097
1109
|
private sectionFrameScale;
|
|
1098
|
-
/**
|
|
1099
|
-
* Resolve a seat tap: honour the 3D deck-drill and the AXS seat-pick gate,
|
|
1100
|
-
* then toggle. The gate (§4) redirects small on-screen seats to section-focus
|
|
1101
|
-
* to avoid blind mis-picks at overview scales — but ONLY when focusing would
|
|
1102
|
-
* zoom the seat up to a safe size. If we're already focused on the section, or
|
|
1103
|
-
* the section already fills the viewport (a narrow — OR even a wide — container
|
|
1104
|
-
* frames a big section BELOW LABEL_SCALE), redirecting is a no-op that would
|
|
1105
|
-
* leave the seat permanently unpickable (§5 `picking-gate-unreachable`), so we
|
|
1106
|
-
* fall through and PICK. This is the invariant: seats are never unpickable.
|
|
1107
|
-
*/
|
|
1108
|
-
private handleSeatTap;
|
|
1109
1110
|
/** Deck under the pointer in the 3D stacked overview — see screenPicking. */
|
|
1110
1111
|
private deckFloorAt;
|
|
1111
1112
|
/** Nearest selectable seat within `slopPx` of a screen point, or null. */
|
|
1112
1113
|
private nearestSeatToScreen;
|
|
1113
1114
|
private get screenPickingHost();
|
|
1114
1115
|
/**
|
|
1115
|
-
*
|
|
1116
|
-
*
|
|
1117
|
-
* The hover ring and the `pointer` cursor are a promise that a click does
|
|
1118
|
-
* something. Offering both over a SOLD seat and only then answering "Sold" in
|
|
1119
|
-
* the popover is a false affordance (owner, 2026-09-02), so:
|
|
1120
|
-
*
|
|
1121
|
-
* - `full` — a click can take (or give back) this seat: ring + pointer.
|
|
1122
|
-
* - `muted` — someone else's hold. It may come back, so it stays legible as
|
|
1123
|
-
* a seat: a dimmed, dashed ring, but the default cursor.
|
|
1124
|
-
* - `none` — sold, not-for-sale, closed section, filtered out: no ring, no
|
|
1125
|
-
* pointer. The tooltip still fires, so the buyer learns why.
|
|
1116
|
+
* Register the stage/seat-layer listeners. The routing they perform — and the
|
|
1117
|
+
* report behind each rung of it — lives in render/interaction/stageInteraction.
|
|
1126
1118
|
*/
|
|
1127
|
-
private hoverAffordance;
|
|
1128
1119
|
private wireInteraction;
|
|
1120
|
+
/** Resolve a seat tap — see render/interaction/stageInteraction. Kept as a
|
|
1121
|
+
* method because the tap ladder calls it through the host, which is the seam
|
|
1122
|
+
* the marker-tap tests spy on. */
|
|
1123
|
+
private handleSeatTap;
|
|
1124
|
+
private interactionHostCache;
|
|
1125
|
+
private get interactionHost();
|
|
1129
1126
|
/**
|
|
1130
1127
|
* Min is chart-relative (never lose the room); max is absolute so seats
|
|
1131
1128
|
* reach a readable size on any chart, however large the venue.
|
|
1132
1129
|
*/
|
|
1133
1130
|
private zoomBounds;
|
|
1134
|
-
/**
|
|
1135
|
-
* Zoom so `clientPoint` (stage-relative px) stays fixed under the cursor.
|
|
1136
|
-
*
|
|
1137
|
-
* `settle: 'frame'` is the wheel/trackpad path. A fling delivers dozens of
|
|
1138
|
-
* events between two paints and each one ran the whole `afterViewChange`
|
|
1139
|
-
* cascade — retarget, cull, LOD, free text, labels — for a camera the buyer
|
|
1140
|
-
* never saw. It now defers exactly the way the pinch path does: cull and draw
|
|
1141
|
-
* per event (cheap, and required for a correct frame), one settle per frame,
|
|
1142
|
-
* last event wins. The zoom maths and the onViewChange contract are unchanged
|
|
1143
|
-
* — `scheduleViewChange` was already rAF-coalesced.
|
|
1144
|
-
*/
|
|
1145
1131
|
private zoomAbout;
|
|
1146
|
-
/** One `afterViewChange` per animation frame for a burst of wheel events. */
|
|
1147
|
-
private scheduleZoomSettle;
|
|
1148
1132
|
/** Drop a wheel settle that a newer, authoritative view pass supersedes. */
|
|
1149
1133
|
private cancelZoomSettle;
|
|
1150
|
-
/** Zoom + pan so world-rect `b` fills the viewport (with a small margin). */
|
|
1151
|
-
private zoomToBounds;
|
|
1152
1134
|
/**
|
|
1153
|
-
*
|
|
1154
|
-
*
|
|
1155
|
-
* melt/LOD rides the camera every frame. `prefers-reduced-motion` (or
|
|
1156
|
-
* `opts.animate === false`) snaps via zoomToBounds. A grab (pointer-down) or a
|
|
1157
|
-
* newer glide cancels an in-flight one.
|
|
1135
|
+
* Glide the camera to frame a section (by id) or a world-space bounds rect —
|
|
1136
|
+
* the Slice 5 "glide in". See render/camera for the tween and its rules.
|
|
1158
1137
|
*/
|
|
1159
1138
|
focusRegion(target: string | {
|
|
1160
1139
|
x: number;
|
|
@@ -1188,6 +1167,8 @@ declare class SeatmapRenderer implements ISeatmapRenderer {
|
|
|
1188
1167
|
/** The camera scale every seat label needs to clear the legible floor.
|
|
1189
1168
|
* Derivation in ./render/seatLabelTargetScale. */
|
|
1190
1169
|
private seatLabelTargetScale;
|
|
1170
|
+
/** The buyer pinched back out to the venue: the section focus is over. */
|
|
1171
|
+
private releaseFocusOnPullBack;
|
|
1191
1172
|
/** Recompute LOD (cache/labels) after any pan/zoom settles. */
|
|
1192
1173
|
private afterViewChange;
|
|
1193
1174
|
/**
|
|
@@ -1768,6 +1749,28 @@ interface PickerCallbacks extends RendererCallbacks {
|
|
|
1768
1749
|
onSelectionInvalid?: (state: PickerSelectionValidity) => void;
|
|
1769
1750
|
/** A grouped table was selected and needs buyer confirmation/guest quantity. */
|
|
1770
1751
|
onTableSelectionRequest?: (table: TableSelectionDetails) => void;
|
|
1752
|
+
/**
|
|
1753
|
+
* A second tap landed on a plain seat that is ALREADY in the selection, and
|
|
1754
|
+
* {@link PickerOptions.retapKeepsSelection} kept it there.
|
|
1755
|
+
*
|
|
1756
|
+
* The renderer's own click logic toggles: it deselects and fires `onDeselect`
|
|
1757
|
+
* immediately. `SeatPicker` answers that itself — it puts the seat back and
|
|
1758
|
+
* raises its confirm card in `'remove'` mode (20c670c6) — but SeatPicker is
|
|
1759
|
+
* DOM chrome and is never mounted on the native bridge, where `startBridge`
|
|
1760
|
+
* builds a bare `SeatingChart`. So on every native SDK the second tap emptied
|
|
1761
|
+
* the cart in silence, with no card and nothing to undo (reproduced on
|
|
1762
|
+
* device, 2026-09-04).
|
|
1763
|
+
*
|
|
1764
|
+
* With the option on, the controller re-selects the seat and calls this
|
|
1765
|
+
* INSTEAD of `onDeselect`, so a host that draws its own chrome can ask the
|
|
1766
|
+
* buyer the opposite question. The seat is still selected when this fires;
|
|
1767
|
+
* removing it is the host's own `deselect([seat.id])`.
|
|
1768
|
+
*
|
|
1769
|
+
* Only plain, locally-selected seats reach here. A server-held unit, a
|
|
1770
|
+
* grouped table, and a seat that is no longer selectable all take the
|
|
1771
|
+
* unchanged `onDeselect` path.
|
|
1772
|
+
*/
|
|
1773
|
+
onSeatRetap?: (seat: PickerSeat) => void;
|
|
1771
1774
|
/** A hold opened (manual hold or best-available). */
|
|
1772
1775
|
onHold?: (hold: HoldInfo) => void;
|
|
1773
1776
|
/** A prior active hold was restored from its opaque hold id. */
|
|
@@ -1812,6 +1815,15 @@ interface PickerCallbacks extends RendererCallbacks {
|
|
|
1812
1815
|
* overview() / zoom-to-zones) so the host can show/hide the summary card.
|
|
1813
1816
|
*/
|
|
1814
1817
|
onSectionFocus?: (summary: SectionSummary | null) => void;
|
|
1818
|
+
/**
|
|
1819
|
+
* Does the HOST have its own card open about the seat under the cursor?
|
|
1820
|
+
*
|
|
1821
|
+
* The map draws one hover card. A host that keeps its own — the widget's
|
|
1822
|
+
* pinned card for a seat that cannot be taken, or its confirm card — answers
|
|
1823
|
+
* true while that card is up, and the map's card stands down rather than
|
|
1824
|
+
* saying the same thing beside it.
|
|
1825
|
+
*/
|
|
1826
|
+
hostCardOpen?: () => boolean;
|
|
1815
1827
|
/** A deck was tapped in the 3D all-floors overview — host enters that floor in 2D. */
|
|
1816
1828
|
onDeckTap?: (floorId: string) => void;
|
|
1817
1829
|
/**
|
|
@@ -1843,6 +1855,16 @@ interface PickerOptions extends PickerCallbacks {
|
|
|
1843
1855
|
selectionValidators?: PickerSelectionValidator[];
|
|
1844
1856
|
/** Renderer confirm-card mode (host shows a confirm popover instead of instant cart add). */
|
|
1845
1857
|
confirmSelection?: boolean;
|
|
1858
|
+
/**
|
|
1859
|
+
* Opt-in: a second tap on a plain seat already in the selection KEEPS it and
|
|
1860
|
+
* reports {@link PickerCallbacks.onSeatRetap} instead of dropping it.
|
|
1861
|
+
*
|
|
1862
|
+
* Default false — the toggle is unchanged, which is what `SeatPicker` needs
|
|
1863
|
+
* because it already answers the second tap with its own confirm card. Hosts
|
|
1864
|
+
* that draw their own chrome (`SeatingChart`, and through it every native
|
|
1865
|
+
* bridge surface) turn it on so a tap can never silently empty the cart.
|
|
1866
|
+
*/
|
|
1867
|
+
retapKeepsSelection?: boolean;
|
|
1846
1868
|
/** ISO 4217 currency for on-map prices (default from money.DEFAULT_CURRENCY). */
|
|
1847
1869
|
currency?: string;
|
|
1848
1870
|
/** Flash a pulse when a seat we didn't touch goes free→taken (live-activity cue). */
|
|
@@ -2384,6 +2406,9 @@ declare class PickerController {
|
|
|
2384
2406
|
/** The camera a price band took from the buyer — see
|
|
2385
2407
|
* {@link PickerFocusContext.bandReturnPose}. */
|
|
2386
2408
|
private bandReturnPose;
|
|
2409
|
+
/** The section a price band took the buyer out of — see
|
|
2410
|
+
* {@link PickerFocusContext.bandReturnSection}. */
|
|
2411
|
+
private bandReturnSection;
|
|
2387
2412
|
/**
|
|
2388
2413
|
* The state the filter-driven camera rules read and change — see
|
|
2389
2414
|
* ./pickerFocus. Rebuilt per call; the accessor pair keeps the controller
|
|
@@ -2534,6 +2559,15 @@ declare class PickerController {
|
|
|
2534
2559
|
private emitOrphanHint;
|
|
2535
2560
|
/** Toggle colorblind-safe rendering at runtime (see PickerOptions.colorblindSafe). */
|
|
2536
2561
|
setColorblindSafe(on: boolean): void;
|
|
2562
|
+
/**
|
|
2563
|
+
* Pin whether entering a section dims the rest of the venue.
|
|
2564
|
+
*
|
|
2565
|
+
* Left alone the renderer answers from its own stage width (no dim on a
|
|
2566
|
+
* phone-sized stage), which is what an embedding host with no DOM chrome of
|
|
2567
|
+
* its own — every native WebView — wants. `SeatPicker` calls this because it
|
|
2568
|
+
* knows its own layout breakpoint and wants the answer pinned to it.
|
|
2569
|
+
*/
|
|
2570
|
+
setSectionFocusDim(enabled: boolean): void;
|
|
2537
2571
|
/** @internal */ emitError(err: unknown): void;
|
|
2538
2572
|
/** @internal */ holdCovers(labels: string[]): boolean;
|
|
2539
2573
|
/** 409 conflict → deselect the taken labels and repaint them held. */
|