@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/index.d.ts
CHANGED
|
@@ -1,15 +1,15 @@
|
|
|
1
|
-
import { C as ChartDoc, P as Point, A as AccessibilityType, m as CategoryTier, g as SeatCommercialAttributes } from './types-
|
|
2
|
-
export { v as ACCESSIBILITY_RING_COLOR, w as ACCESSIBILITY_TYPES, x as AccessibilityMeta, y as AuthoringObjectState, B as BoothObject, o as Category, z as ChartLayoutConstraint, d as ChartObject, n as ChartReferenceImage, D as ChartTheme, E as ConfidenceEvidenceScope, t as CubicPath, H as DecorImageObject, F as Floor, G as GAAreaObject, l as GAInventorySegment, I as LABEL_STYLE_MAX_SIZE, J as LABEL_STYLE_MIN_SIZE, K as LabelPresentation, L as LabelStyle, O as ObjectEditorState, M as Physical3dEvidence, N as RadialClearanceLayoutConstraint, f as RectTableSeatCounts, c as RectTableSide, Q as ReferenceAccessibilitySource, U as ReferenceCalibration, V as ReferenceCategorySource, W as ReferenceDerivedScale, X as ReferenceEnrichmentStatus, Y as ReferenceExtractEmptyReason, Z as ReferenceExtractEnrichment, _ as ReferenceExtractInput, $ as ReferenceExtractProposal, a0 as ReferenceExtractRegionSeats, a1 as ReferenceInventoryExclusionSource, a2 as ReferenceInventorySource, a3 as ReferenceMatchReport, a4 as ReferenceScanProposal, a5 as ReferenceScanRowProposal, a6 as ReferenceScanSectionProposal, a7 as ReferenceSeatSeed, a8 as ReferenceSectionTraceBatchInput, a9 as ReferenceSectionTraceBatchProposal, aa as ReferenceSectionTraceInput, ab as ReferenceSectionTraceProposal, h as ResolvedSeatConfidenceEvidence, R as RowObject, ac as SEAT_COMMERCIAL_MARKS, ad as SURROUNDINGS_SHAPE_ROLES, ae as SeatCommercialMark, af as SeatCommercialMeta, ag as SeatConfidenceCoverage, ah as SeatConfidenceEvidence, ai as SeatConfidenceModelLevel, aj as SeatConfidenceModeledTarget, ak as SeatConfidenceRealityLevel, a as SeatGlyphKind, S as SeatOverride, i as SeatViewCoverage, b as SeatViewMetadata, al as SeatViewVariant, e as SectionObject, j as SectionOutlinePath, k as SectionPathSegment, am as SelectionLayer, p as ShapeLineCap, q as ShapeLineEnding, r as ShapeLineJoin, s as ShapeObject, T as TableObject, an as TextAlignment, ao as TextBackground, u as TextObject, ap as TicketTierApplicability, aq as TicketTierEvidence, ar as TicketTierRestriction, as as Venue3DMaterialPalette, at as VenueSurveyRegistrationEvidence, au as ZoneDef, av as accessibilityMeta, aw as accessibilityRingColor, ax as layerOf, ay as seatCommercialMeta } from './types-
|
|
3
|
-
import { E as EventConfigurationRef, a as EventConfigurationVersion } from './eventConfigurations-
|
|
4
|
-
export { b as EVENT_CONFIGURATION_EXPORT_SCHEMA, c as EVENT_CONFIGURATION_SCHEMA, d as EventConfigurationBaseVenue, e as EventConfigurationCompatibilityIssue, f as EventConfigurationCompatibilityIssueCode, g as EventConfigurationCompatibilityResult, h as EventConfigurationExportEnvelope, i as EventConfigurationLifecycleStatus, j as EventConfigurationOcclusion, k as EventConfigurationOverlay, l as EventConfigurationParseIssue, m as EventConfigurationParseIssueCode, n as EventConfigurationParseResult, o as EventConfigurationProductionElement, p 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-
|
|
5
|
-
export { E as ExpandChartOptions, R as RowSeatSlot, T as TABLE_SEAT_OFFSET, a as TableSeatSlot, b as allObjects, c as chartBounds, e as expandBooth, d as expandChart, f as expandRow, g as expandRowSlots, h as expandTable, i as expandTableSlots, j as floorObjects, k as floorOverviewTranslations, l as floorsOf, m as floorsShareFootprint, n as layoutFloorOverview, o as layoutFloorRings, p as objectCenter, q as owningSectionForObject, r as pointInPolygon, s as pointInPolygonWithHoles, t as polygonLabelPoint, u as rowInventoryCount, v as rowSeatPositions, w as stackFloors, x as tableInventoryCount, y as tableSeatCountsBySide, z as translateObject } from './layout-
|
|
6
|
-
import { c as TicketSelectionIssue } from './ticketRestrictions-
|
|
7
|
-
export { M as MAX_EVENT_INVENTORY, a as MAX_GA_CAPACITY, g as gaAreasOf, h as gaInventorySegments, i as gaUnitLabel, j as gaUnitLabels, k as growJoinedGAInventory, l as isGaUnitLabel, v as validGAInventorySegments } from './ticketRestrictions-
|
|
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-
|
|
9
|
-
export { 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-
|
|
12
|
-
import './segmentedRowModel-
|
|
1
|
+
import { C as ChartDoc, P as Point, A as AccessibilityType, m as CategoryTier, g as SeatCommercialAttributes } from './types-DNztpn7q.js';
|
|
2
|
+
export { v as ACCESSIBILITY_RING_COLOR, w as ACCESSIBILITY_TYPES, x as AccessibilityMeta, y as AuthoringObjectState, B as BoothObject, o as Category, z as ChartLayoutConstraint, d as ChartObject, n as ChartReferenceImage, D as ChartTheme, E as ConfidenceEvidenceScope, t as CubicPath, H as DecorImageObject, F as Floor, G as GAAreaObject, l as GAInventorySegment, I as LABEL_STYLE_MAX_SIZE, J as LABEL_STYLE_MIN_SIZE, K as LabelPresentation, L as LabelStyle, O as ObjectEditorState, M as Physical3dEvidence, N as RadialClearanceLayoutConstraint, f as RectTableSeatCounts, c as RectTableSide, Q as ReferenceAccessibilitySource, U as ReferenceCalibration, V as ReferenceCategorySource, W as ReferenceDerivedScale, X as ReferenceEnrichmentStatus, Y as ReferenceExtractEmptyReason, Z as ReferenceExtractEnrichment, _ as ReferenceExtractInput, $ as ReferenceExtractProposal, a0 as ReferenceExtractRegionSeats, a1 as ReferenceInventoryExclusionSource, a2 as ReferenceInventorySource, a3 as ReferenceMatchReport, a4 as ReferenceScanProposal, a5 as ReferenceScanRowProposal, a6 as ReferenceScanSectionProposal, a7 as ReferenceSeatSeed, a8 as ReferenceSectionTraceBatchInput, a9 as ReferenceSectionTraceBatchProposal, aa as ReferenceSectionTraceInput, ab as ReferenceSectionTraceProposal, h as ResolvedSeatConfidenceEvidence, R as RowObject, ac as SEAT_COMMERCIAL_MARKS, ad as SURROUNDINGS_SHAPE_ROLES, ae as SeatCommercialMark, af as SeatCommercialMeta, ag as SeatConfidenceCoverage, ah as SeatConfidenceEvidence, ai as SeatConfidenceModelLevel, aj as SeatConfidenceModeledTarget, ak as SeatConfidenceRealityLevel, a as SeatGlyphKind, S as SeatOverride, i as SeatViewCoverage, b as SeatViewMetadata, al as SeatViewVariant, e as SectionObject, j as SectionOutlinePath, k as SectionPathSegment, am as SelectionLayer, p as ShapeLineCap, q as ShapeLineEnding, r as ShapeLineJoin, s as ShapeObject, T as TableObject, an as TextAlignment, ao as TextBackground, u as TextObject, ap as TicketTierApplicability, aq as TicketTierEvidence, ar as TicketTierRestriction, as as Venue3DMaterialPalette, at as VenueSurveyRegistrationEvidence, au as ZoneDef, av as accessibilityMeta, aw as accessibilityRingColor, ax as layerOf, ay as seatCommercialMeta } from './types-DNztpn7q.js';
|
|
3
|
+
import { E as EventConfigurationRef, a as EventConfigurationVersion } from './eventConfigurations-CA2XhDig.js';
|
|
4
|
+
export { b as EVENT_CONFIGURATION_EXPORT_SCHEMA, c as EVENT_CONFIGURATION_SCHEMA, d as EventConfigurationBaseVenue, e as EventConfigurationCompatibilityIssue, f as EventConfigurationCompatibilityIssueCode, g as EventConfigurationCompatibilityResult, h as EventConfigurationExportEnvelope, i as EventConfigurationLifecycleStatus, j as EventConfigurationOcclusion, k as EventConfigurationOverlay, l as EventConfigurationParseIssue, m as EventConfigurationParseIssueCode, n as EventConfigurationParseResult, o as EventConfigurationProductionElement, p 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-CA2XhDig.js';
|
|
5
|
+
export { C as ChartBoundsOptions, E as ExpandChartOptions, R as RowSeatSlot, T as TABLE_SEAT_OFFSET, a as TableSeatSlot, b as allObjects, c as chartBounds, e as expandBooth, d as expandChart, f as expandRow, g as expandRowSlots, h as expandTable, i as expandTableSlots, j as floorObjects, k as floorOverviewTranslations, l as floorsOf, m as floorsShareFootprint, n as layoutFloorOverview, o as layoutFloorRings, p as objectCenter, q as owningSectionForObject, r as pointInPolygon, s as pointInPolygonWithHoles, t as polygonLabelPoint, u as rowInventoryCount, v as rowSeatPositions, w as stackFloors, x as tableInventoryCount, y as tableSeatCountsBySide, z as translateObject } from './layout-C6YaCOnZ.js';
|
|
6
|
+
import { c as TicketSelectionIssue } from './ticketRestrictions-B_qXQobd.js';
|
|
7
|
+
export { M as MAX_EVENT_INVENTORY, a as MAX_GA_CAPACITY, g as gaAreasOf, h as gaInventorySegments, i as gaUnitLabel, j as gaUnitLabels, k as growJoinedGAInventory, l as isGaUnitLabel, v as validGAInventorySegments } from './ticketRestrictions-B_qXQobd.js';
|
|
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-87qiciyN.js';
|
|
9
|
+
export { 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-CWwy14lb.js';
|
|
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-DIcDImOu.js';
|
|
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-DIcDImOu.js';
|
|
12
|
+
import './segmentedRowModel-CEP6crcl.js';
|
|
13
13
|
|
|
14
14
|
declare class SeatmapRenderer implements ISeatmapRenderer {
|
|
15
15
|
private container;
|
|
@@ -85,6 +85,10 @@ declare class SeatmapRenderer implements ISeatmapRenderer {
|
|
|
85
85
|
private selection;
|
|
86
86
|
/** Seat-contained selection markers: outline + non-colour check cue. */
|
|
87
87
|
private selectionMarkers;
|
|
88
|
+
/** Selection markers, the pick moment and the touch loupe — see seatMoments. */
|
|
89
|
+
private momentsCache;
|
|
90
|
+
/** Overview marks for the sections the buyer holds seats in — see ownedSections. */
|
|
91
|
+
private ownedCache;
|
|
88
92
|
/** Held by this picker instance, not by another buyer. */
|
|
89
93
|
private ownedHold;
|
|
90
94
|
private seatMarks;
|
|
@@ -110,6 +114,8 @@ declare class SeatmapRenderer implements ISeatmapRenderer {
|
|
|
110
114
|
private commercialLimitedFilter;
|
|
111
115
|
private sections;
|
|
112
116
|
private zones;
|
|
117
|
+
/** World boxes of the fixed landmarks hierarchy chips must not sit on. */
|
|
118
|
+
private landmarkBoxes;
|
|
113
119
|
private seatSection;
|
|
114
120
|
/** Seats outside every authored section retain the legacy path in one group. */
|
|
115
121
|
private unsectionedSeatGroup;
|
|
@@ -125,6 +131,10 @@ declare class SeatmapRenderer implements ISeatmapRenderer {
|
|
|
125
131
|
private closedSections;
|
|
126
132
|
/** AXS section-focus: the currently-focused section id (others dim), or null. */
|
|
127
133
|
private focusedSectionId;
|
|
134
|
+
/** Tap point the focus was entered on (replayed on a resize refit), and
|
|
135
|
+
* whether a manual pan has since put the locator on the buyer's camera. */
|
|
136
|
+
private focusAnchor;
|
|
137
|
+
private focusRoams;
|
|
128
138
|
/** Light backdrop panel drawn behind the focused section (removed on clear). */
|
|
129
139
|
private focusBackdrop;
|
|
130
140
|
/** Non-listening visual dim outside the focused section. One overlay replaces
|
|
@@ -174,9 +184,10 @@ declare class SeatmapRenderer implements ISeatmapRenderer {
|
|
|
174
184
|
private lodScale;
|
|
175
185
|
/** prefers-reduced-motion → hard-swap rungs instead of cross-fading. */
|
|
176
186
|
private reducedMotion;
|
|
177
|
-
/** Touch camera travel follows native mobile timing; desktop keeps the calmer glide. */
|
|
178
187
|
private readonly cameraGlideMs;
|
|
179
188
|
private fitScale;
|
|
189
|
+
/** Stage pose the last overview fit landed on — see zoomToFit. */
|
|
190
|
+
private fitPose;
|
|
180
191
|
/** Effective seat radius (base × theme.seatScale), set per chart in setChart. */
|
|
181
192
|
private seatR;
|
|
182
193
|
private bounds;
|
|
@@ -187,10 +198,40 @@ declare class SeatmapRenderer implements ISeatmapRenderer {
|
|
|
187
198
|
private assetPromises;
|
|
188
199
|
private assetErrors;
|
|
189
200
|
private assetCancels;
|
|
201
|
+
/**
|
|
202
|
+
* Progressive reveal: what a big chart does instead of appearing all at once.
|
|
203
|
+
*
|
|
204
|
+
* Section shells paint with the chart doc; the seats then build a section at
|
|
205
|
+
* a time in idle slices, nearest the viewport first. Non-null only while that
|
|
206
|
+
* is in flight — every path that needs a complete scene right now (an export,
|
|
207
|
+
* a chart replacement, teardown) finishes or cancels it first.
|
|
208
|
+
*/
|
|
209
|
+
private seatReveal;
|
|
210
|
+
/**
|
|
211
|
+
* True from the moment `setChart` decides to defer the seats until the last
|
|
212
|
+
* one has landed — which starts BEFORE `seatReveal` exists, because the
|
|
213
|
+
* schedule is only created after the fit, and the fit itself runs the LOD
|
|
214
|
+
* pass that would otherwise bake an empty seat layer into the overview.
|
|
215
|
+
*/
|
|
216
|
+
private seatRevealPending;
|
|
217
|
+
/** Below this the whole scene is cheap enough to build in one step. */
|
|
218
|
+
private readonly progressiveSeatFloor;
|
|
219
|
+
private readonly loadingReveal;
|
|
220
|
+
/** Host callback for the moment the last section's seats finish arriving. */
|
|
221
|
+
private readonly onSeatsRevealed;
|
|
190
222
|
private rafId;
|
|
191
|
-
private frames;
|
|
192
|
-
private lastFpsAt;
|
|
193
223
|
private recacheTimer;
|
|
224
|
+
/**
|
|
225
|
+
* True between `setChart()` and the first overview bake of that chart.
|
|
226
|
+
*
|
|
227
|
+
* `setChart` → `zoomToFit` → `updateLOD` reaches the bake BEFORE the host has
|
|
228
|
+
* applied inventory; the picker then applies statuses and calls `forceDraw()`
|
|
229
|
+
* in the same task, throwing that bitmap away and building it again. Two full
|
|
230
|
+
* rasterizations of one chart for one paint — 19ms where 10 will do at 760
|
|
231
|
+
* seats. So the mount bake waits a tick: `forceDraw()` flushes it, and a host
|
|
232
|
+
* that never calls it bakes on the next tick instead.
|
|
233
|
+
*/
|
|
234
|
+
private mountCachePending;
|
|
194
235
|
private resizeObs;
|
|
195
236
|
/** Coalesces bursty view-change sources (pointermove, wheel) into ≤1 callback/frame. */
|
|
196
237
|
private viewChangeRaf;
|
|
@@ -205,6 +246,21 @@ declare class SeatmapRenderer implements ISeatmapRenderer {
|
|
|
205
246
|
private get moved();
|
|
206
247
|
private isGhostClick;
|
|
207
248
|
/** Behavioural surface the gesture machine calls back into. */
|
|
249
|
+
/**
|
|
250
|
+
* The overlay-layer moments (marker, pop/pulse, loupe). Built once and kept:
|
|
251
|
+
* a pointermove drives the loupe, and allocating a host per frame would be
|
|
252
|
+
* paid for on exactly the device that can least afford it.
|
|
253
|
+
*/
|
|
254
|
+
private get moments();
|
|
255
|
+
/** The buyer's seats, still visible once the seats have melted into blocks. */
|
|
256
|
+
private get owned();
|
|
257
|
+
/**
|
|
258
|
+
* Where a tap on this section should land the camera: on the buyer's own
|
|
259
|
+
* seats when they have some in there, otherwise on the point they touched.
|
|
260
|
+
*/
|
|
261
|
+
private sectionTapAnchor;
|
|
262
|
+
/** World points of the seats in this section the buyer has taken or holds. */
|
|
263
|
+
private ownedSeatPoints;
|
|
208
264
|
private get pointerHost();
|
|
209
265
|
/**
|
|
210
266
|
* Manage-mode rubber-band marquee (option-gated). `start`/`cur` are WORLD-space
|
|
@@ -217,6 +273,36 @@ declare class SeatmapRenderer implements ISeatmapRenderer {
|
|
|
217
273
|
setChart(doc: ChartDoc, opts?: {
|
|
218
274
|
floorId?: string;
|
|
219
275
|
}): void;
|
|
276
|
+
/**
|
|
277
|
+
* Should this chart's seats arrive a section at a time?
|
|
278
|
+
*
|
|
279
|
+
* Only when there are enough of them to be worth it, the host asked for it,
|
|
280
|
+
* and the scene is one a buyer will look at. An export renders once to a
|
|
281
|
+
* file: a reveal there would either be captured half-built or have to be
|
|
282
|
+
* finished synchronously anyway, which is the plain path with extra steps.
|
|
283
|
+
*/
|
|
284
|
+
private seatRevealWanted;
|
|
285
|
+
/**
|
|
286
|
+
* Build the seats a section at a time, nearest the buyer first.
|
|
287
|
+
*
|
|
288
|
+
* Every seat's STATUS is already in `statusById` (setChart seeds it, and the
|
|
289
|
+
* controller's inventory apply writes it whether or not a node exists yet),
|
|
290
|
+
* and node construction paints from it — so a section built late arrives with
|
|
291
|
+
* the right colours and never needs a second pass. That is the whole reason
|
|
292
|
+
* inventory can land during the build without re-rasterizing anything.
|
|
293
|
+
*/
|
|
294
|
+
private startSeatReveal;
|
|
295
|
+
/** Centre of what the buyer can currently see, in chart coordinates. */
|
|
296
|
+
private viewportCentreInChartSpace;
|
|
297
|
+
/**
|
|
298
|
+
* Complete an in-flight reveal NOW, synchronously.
|
|
299
|
+
*
|
|
300
|
+
* Anything that reads or replaces the whole scene — a chart swap, an export,
|
|
301
|
+
* quality evidence, teardown — must see every seat. The reveal is a way of
|
|
302
|
+
* spreading construction over time, never a scene that is allowed to stay
|
|
303
|
+
* incomplete.
|
|
304
|
+
*/
|
|
305
|
+
private cancelSeatReveal;
|
|
220
306
|
/** The chart to render: authored-coordinate overview, stacked 3D overview,
|
|
221
307
|
* the active floor, or the whole chart for single-floor charts. */
|
|
222
308
|
private floorView;
|
|
@@ -290,13 +376,15 @@ declare class SeatmapRenderer implements ISeatmapRenderer {
|
|
|
290
376
|
* fire `onMarquee`. A near-zero drag reads as a click: clear the selection.
|
|
291
377
|
*/
|
|
292
378
|
private finishMarquee;
|
|
379
|
+
/** Throw a ring off one seat — "this is the one" without moving the camera. */
|
|
293
380
|
flashSeat(seatId: string, color?: string): void;
|
|
294
381
|
/**
|
|
295
382
|
* Pulse a section outline without moving the camera or mutating the authored
|
|
296
|
-
* geometry. The
|
|
297
|
-
*
|
|
383
|
+
* geometry. The halo lives in the non-listening overlay layer, so its
|
|
384
|
+
* apparent 4% lift never changes hit testing or selection bounds.
|
|
298
385
|
*/
|
|
299
386
|
flashSection(sectionId: string, color?: string): void;
|
|
387
|
+
private get flashHost();
|
|
300
388
|
private onKeyDown;
|
|
301
389
|
/** Nearest seat from `fromId` in a cardinal direction (aligned + close wins). */
|
|
302
390
|
private nearestSeat;
|
|
@@ -351,12 +439,7 @@ declare class SeatmapRenderer implements ISeatmapRenderer {
|
|
|
351
439
|
/** Host-pushed GA availability / pending quantity — see {@link paintGAState}. */
|
|
352
440
|
setGAStates(states: Record<string, GAAreaState>): void;
|
|
353
441
|
setGAState(areaId: string, state: GAAreaState): void;
|
|
354
|
-
/** Frame
|
|
355
|
-
* filter. A category may span most of a venue, so framing only its bounds
|
|
356
|
-
* can leave a phone at the section overview and make the price control look
|
|
357
|
-
* inert. Narrow maps enter seat detail around an actual matching seat;
|
|
358
|
-
* desktop retains the complete category frame. Clearing the filter glides
|
|
359
|
-
* back to the full venue. */
|
|
442
|
+
/** Frame available inventory; narrow maps enter usable seat detail. */
|
|
360
443
|
focusCategories(keys: string[] | null, opts?: {
|
|
361
444
|
animate?: boolean;
|
|
362
445
|
}): void;
|
|
@@ -406,6 +489,11 @@ declare class SeatmapRenderer implements ISeatmapRenderer {
|
|
|
406
489
|
/** Restore section-owned containers before applying another projection. */
|
|
407
490
|
private resetSectionProjection;
|
|
408
491
|
/** Node/cache context the shared seat-anchor pass reads and updates. */
|
|
492
|
+
/** Cached, unlike its siblings, because it holds only stable references and
|
|
493
|
+
* no camera reading that could go stale; setChart (which reassigns `seats`)
|
|
494
|
+
* drops it. It is also the hot one — `updateSeatGroupVisibility` builds it
|
|
495
|
+
* per visible section on every pointermove of a perspective pan. */
|
|
496
|
+
private seatAnchorContextCache;
|
|
409
497
|
private get seatAnchorContext();
|
|
410
498
|
/** Move native seat/booth hit shapes to or from their exact pinhole anchors. */
|
|
411
499
|
private applyExactSeatAnchors;
|
|
@@ -437,11 +525,18 @@ declare class SeatmapRenderer implements ISeatmapRenderer {
|
|
|
437
525
|
private seatContainer;
|
|
438
526
|
/** True when a section belongs to the active logical section/zone focus. */
|
|
439
527
|
private sectionMatchesFocus;
|
|
440
|
-
/**
|
|
528
|
+
/**
|
|
529
|
+
* Visual opacity after the section-focus overlay is composed.
|
|
530
|
+
*
|
|
531
|
+
* Gated on the dim ACTUALLY BEING ON SCREEN, not merely on a focus existing.
|
|
532
|
+
* releaseSectionFocusDim drops the overlay on the buyer's first pan — free
|
|
533
|
+
* roaming across sections is the product behaviour, the glide is only an
|
|
534
|
+
* entrance — and reporting a stale 0.16 after that told the label pass that
|
|
535
|
+
* every neighbouring seat was invisible. Pan from a focused Stalls F to
|
|
536
|
+
* Grand Circle and its seats lost their numbers (owner report 2026-08-27),
|
|
537
|
+
* at a zoom where they were fully bright on screen.
|
|
538
|
+
*/
|
|
441
539
|
private focusedSeatOpacity;
|
|
442
|
-
/** Project a section outline through elevation + the active affine view and
|
|
443
|
-
* then into viewport pixels. The result is conservative (AABB), so a visible
|
|
444
|
-
* section is never clipped even for rotated or isometric outlines. */
|
|
445
540
|
private sectionScreenBounds;
|
|
446
541
|
/** Hide only section groups wholly outside a padded viewport at the live-seat
|
|
447
542
|
* rung. Overview caching always restores all groups first, so panning a
|
|
@@ -461,9 +556,8 @@ declare class SeatmapRenderer implements ISeatmapRenderer {
|
|
|
461
556
|
* the small transient set aligned explicitly. Selection is capped in buyer
|
|
462
557
|
* mode, making this constant-sized work during the iso tween. */
|
|
463
558
|
private syncSeatOverlayPositions;
|
|
559
|
+
/** Build every seat + booth node — see render/seatScene.ts. */
|
|
464
560
|
private renderSeats;
|
|
465
|
-
/** A booth renders as a click-selectable rounded block (dims from the doc). */
|
|
466
|
-
private renderBoothUnit;
|
|
467
561
|
/**
|
|
468
562
|
* Build the centred accessibility glyph for a seat. Sized relative to the seat
|
|
469
563
|
* radius (so it always fills the marker at any zoom) and given a contrast-aware
|
|
@@ -521,15 +615,13 @@ declare class SeatmapRenderer implements ISeatmapRenderer {
|
|
|
521
615
|
*/
|
|
522
616
|
setClosedSections(ids: string[] | null): void;
|
|
523
617
|
/**
|
|
524
|
-
*
|
|
525
|
-
*
|
|
526
|
-
*
|
|
527
|
-
* a section that cannot reach seat detail as a whole, anchoring the entrance
|
|
528
|
-
* on a real available seat so the first tap exposes usable inventory.
|
|
618
|
+
* Focus one section; narrow phones enter at usable seat detail. `opts.anchor`
|
|
619
|
+
* is the world point the buyer tapped — when the phone entrance has to crop
|
|
620
|
+
* the section, it crops around THAT point instead of the viewport centre.
|
|
529
621
|
*/
|
|
530
|
-
focusSection(id: string
|
|
531
|
-
|
|
532
|
-
|
|
622
|
+
focusSection(id: string, opts?: {
|
|
623
|
+
anchor?: Point;
|
|
624
|
+
}): void;
|
|
533
625
|
private focusSectionCamera;
|
|
534
626
|
/**
|
|
535
627
|
* Release only the focus dim + backdrop, keeping the focused-section state
|
|
@@ -544,13 +636,19 @@ declare class SeatmapRenderer implements ISeatmapRenderer {
|
|
|
544
636
|
clearSectionFocus(): void;
|
|
545
637
|
/** The currently AXS-focused section id, or null. */
|
|
546
638
|
getFocusedSection(): string | null;
|
|
547
|
-
/**
|
|
639
|
+
/**
|
|
640
|
+
* Are seats what the buyer SEES (and therefore taps)? True inside a section
|
|
641
|
+
* focus and on a floor overview (the melt is forced off there), otherwise
|
|
642
|
+
* once the camera passes the half-melt point. The cache flag is a rendering
|
|
643
|
+
* strategy, not a visual state — never use it to route a tap.
|
|
644
|
+
*/
|
|
645
|
+
seatsRevealed(): boolean;
|
|
646
|
+
/**
|
|
647
|
+
* Draw (or replace) the focus treatment: the light backdrop panel behind the
|
|
648
|
+
* focused section, and the dim that pushes the rest of the venue back.
|
|
649
|
+
*/
|
|
548
650
|
private drawFocusBackdrop;
|
|
549
|
-
|
|
550
|
-
* opacity would make Konva recursively invalidate absolute-opacity caches on
|
|
551
|
-
* all 14k descendants. The cut-out follows the live elevation offset and is
|
|
552
|
-
* non-listening, so direct seat hit-testing is unchanged. */
|
|
553
|
-
private drawFocusDimOverlay;
|
|
651
|
+
private get focusBackdropHost();
|
|
554
652
|
/** Repaint every seat + section block to reflect closed/focus state, then redraw. */
|
|
555
653
|
private repaintSectionsAndSeats;
|
|
556
654
|
/** The world-space rectangle currently visible in the viewport (minimap F3). */
|
|
@@ -612,14 +710,25 @@ declare class SeatmapRenderer implements ISeatmapRenderer {
|
|
|
612
710
|
private refreshSectionHeat;
|
|
613
711
|
private refreshSectionFill;
|
|
614
712
|
private isSectionClosed;
|
|
615
|
-
private sectionAvailabilityState;
|
|
616
|
-
private sectionBlockFill;
|
|
617
|
-
private get sectionLodPaintContext();
|
|
618
713
|
/**
|
|
619
|
-
*
|
|
620
|
-
*
|
|
621
|
-
*
|
|
714
|
+
* Display colour of the dominant SELLABLE category across these seats — the
|
|
715
|
+
* hue an overview block is tinted with. Ties break on the stable category key
|
|
716
|
+
* so the same chart always tints the same way. Null when nothing here is for
|
|
717
|
+
* sale: a block with no price keeps the neutral treatment.
|
|
622
718
|
*/
|
|
719
|
+
private dominantSellableColor;
|
|
720
|
+
/**
|
|
721
|
+
* Free seats in this section that satisfy the active accessibility filter.
|
|
722
|
+
*
|
|
723
|
+
* The count, not a boolean, because the block rung has two jobs for it: mark
|
|
724
|
+
* the sections that have anything at all, and tell the buyer how much. Zero
|
|
725
|
+
* when no filter is on — nothing at that rung asks the question then, and
|
|
726
|
+
* walking every section's members on every paint to answer an unasked
|
|
727
|
+
* question is exactly the per-frame cost this rung exists to avoid.
|
|
728
|
+
*/
|
|
729
|
+
private sectionAccessibleFree;
|
|
730
|
+
private get sectionLodPaintContext();
|
|
731
|
+
/** Build the zone pills (name + FROM price) — see render/zoneScene.ts. */
|
|
623
732
|
private renderZones;
|
|
624
733
|
/**
|
|
625
734
|
* Map a container-relative screen point back to world coords. Inverts the
|
|
@@ -635,6 +744,20 @@ declare class SeatmapRenderer implements ISeatmapRenderer {
|
|
|
635
744
|
/** Seat ids belonging to a section (Slice 5 section-summary card). */
|
|
636
745
|
sectionMembers(id: string): string[];
|
|
637
746
|
private isSelectable;
|
|
747
|
+
/**
|
|
748
|
+
* Is this seat out of the sale purely because the accessibility filter is on?
|
|
749
|
+
*
|
|
750
|
+
* The filter used to be paint only: non-matching seats dimmed to 25% and were
|
|
751
|
+
* still selectable, so a buyer who turned on "wheelchair-accessible seats"
|
|
752
|
+
* could — and did — pick a faded ordinary seat and never learn why the map
|
|
753
|
+
* looked odd. A filter that does not filter is a lie about the inventory.
|
|
754
|
+
*
|
|
755
|
+
* Kept separate from {@link isSelectable} because the answer is also the
|
|
756
|
+
* REASON: everything downstream (the tap explanation, the toast, best-seats)
|
|
757
|
+
* needs to distinguish "sold" from "you filtered this out", which is
|
|
758
|
+
* reversible by one tap.
|
|
759
|
+
*/
|
|
760
|
+
private hiddenByAccessFilter;
|
|
638
761
|
private toggleSeat;
|
|
639
762
|
/**
|
|
640
763
|
* Selection/hover ring color. An explicit theme.selectionColor always wins;
|
|
@@ -648,14 +771,16 @@ declare class SeatmapRenderer implements ISeatmapRenderer {
|
|
|
648
771
|
private resolveCanvasBackground;
|
|
649
772
|
private resolveSelectionColor;
|
|
650
773
|
private setSelected;
|
|
651
|
-
/** Rebuild one marker after selected/held/candidate state changes. */
|
|
774
|
+
/** Rebuild one seat's marker after selected/held/candidate state changes. */
|
|
652
775
|
private syncSelectionMarker;
|
|
776
|
+
/** The buyer's own pick: pop the marker and throw a pulse ring out of it. */
|
|
777
|
+
private playSeatPickMoment;
|
|
778
|
+
/** A finger is on a seat — lift it out from under the fingertip, and back. */
|
|
779
|
+
private showTouchLoupe;
|
|
780
|
+
private hideTouchLoupe;
|
|
653
781
|
/**
|
|
654
|
-
* The
|
|
655
|
-
*
|
|
656
|
-
* redirecting a seat tap to section-focus would actually zoom in FURTHER, or
|
|
657
|
-
* whether the section already fills the viewport (small container) so the tap
|
|
658
|
-
* must fall through and pick.
|
|
782
|
+
* The world rect that frames one whole section — outline, member seats,
|
|
783
|
+
* annotations, icons and placed row labels. See sectionCameraBounds.
|
|
659
784
|
*/
|
|
660
785
|
private sectionBounds;
|
|
661
786
|
private sectionFrameScale;
|
|
@@ -670,22 +795,12 @@ declare class SeatmapRenderer implements ISeatmapRenderer {
|
|
|
670
795
|
* fall through and PICK. This is the invariant: seats are never unpickable.
|
|
671
796
|
*/
|
|
672
797
|
private handleSeatTap;
|
|
673
|
-
/**
|
|
674
|
-
|
|
675
|
-
|
|
676
|
-
* so a near-miss on mobile still lands on the intended seat, without ever
|
|
677
|
-
* hijacking a clean tap on empty space beyond the slop.
|
|
678
|
-
*/
|
|
798
|
+
/** Deck under the pointer in the 3D stacked overview — see screenPicking. */
|
|
799
|
+
private deckFloorAt;
|
|
800
|
+
/** Nearest selectable seat within `slopPx` of a screen point, or null. */
|
|
679
801
|
private nearestSeatToScreen;
|
|
802
|
+
private get screenPickingHost();
|
|
680
803
|
private wireInteraction;
|
|
681
|
-
/**
|
|
682
|
-
* Which deck (floor) a screen tap landed on in the 3D stacked overview. The
|
|
683
|
-
* seat layer is melt-cached at that zoom so individual seat nodes aren't
|
|
684
|
-
* hit-testable; instead we invert the iso+stage transform via the layer's
|
|
685
|
-
* relative pointer and take the nearest seat's floor. Only the floor matters,
|
|
686
|
-
* so within-floor elevation offsets don't affect the result. Null if none.
|
|
687
|
-
*/
|
|
688
|
-
private deckFloorAt;
|
|
689
804
|
/**
|
|
690
805
|
* Min is chart-relative (never lose the room); max is absolute so seats
|
|
691
806
|
* reach a readable size on any chart, however large the venue.
|
|
@@ -719,13 +834,8 @@ declare class SeatmapRenderer implements ISeatmapRenderer {
|
|
|
719
834
|
/** Explicit view of this renderer as the evidence pass's declared surface. */
|
|
720
835
|
private get renderedQualityContext();
|
|
721
836
|
getRenderedQualityEvidence(): RendererQualityEvidence;
|
|
722
|
-
/** Jump the camera to a rung's zoom band (glided). */
|
|
723
837
|
setRung(rung: LodRung): void;
|
|
724
|
-
/** Minimum zoom at which seat markers and their labels are genuinely usable. */
|
|
725
838
|
private seatRungScale;
|
|
726
|
-
/** On a phone, a wide ring/section can fit completely while its seats remain
|
|
727
|
-
* tiny. Crop that automatic entrance around a real matching seat; desktop
|
|
728
|
-
* keeps the full authored frame and manual pan/zoom remains unchanged. */
|
|
729
839
|
private narrowSeatDetailFocus;
|
|
730
840
|
/**
|
|
731
841
|
* The seat rung must account for labels that auto-fit inside a seat circle.
|
|
@@ -737,6 +847,18 @@ declare class SeatmapRenderer implements ISeatmapRenderer {
|
|
|
737
847
|
private seatLabelTargetScale;
|
|
738
848
|
/** Recompute LOD (cache/labels) after any pan/zoom settles. */
|
|
739
849
|
private afterViewChange;
|
|
850
|
+
/**
|
|
851
|
+
* A camera move has FINISHED: drop any onViewChange scheduled from a frame
|
|
852
|
+
* the camera was merely passing through, and schedule exactly one from the
|
|
853
|
+
* settled state. Without it a backdrop tap (clearSectionFocus + zoomToFit)
|
|
854
|
+
* left the widget's deep state on the pre-settle reading — the map back at
|
|
855
|
+
* the overview, the chrome still saying the buyer was inside a section.
|
|
856
|
+
*/
|
|
857
|
+
private settleView;
|
|
858
|
+
/** Once the buyer is roaming, the locator names what is ON SCREEN rather than
|
|
859
|
+
* what they tapped — WITHOUT moving the camera. Retargeting is a
|
|
860
|
+
* relabelling; a glide here would fight the pan that caused it. */
|
|
861
|
+
private retargetRoamingFocus;
|
|
740
862
|
/** rAF-coalesced `onViewChange` — at most one host callback per animation frame. */
|
|
741
863
|
private scheduleViewChange;
|
|
742
864
|
/** Keep focal labels centred while their world font size tracks camera scale. */
|
|
@@ -746,21 +868,7 @@ declare class SeatmapRenderer implements ISeatmapRenderer {
|
|
|
746
868
|
* debounced cacheSeatLayer() and the synchronous forceDraw() catch-up. */
|
|
747
869
|
private rebuildSeatCache;
|
|
748
870
|
private cacheSeatLayer;
|
|
749
|
-
/**
|
|
750
|
-
* Drop the seat-layer overview bitmap while PRESERVING every descendant's
|
|
751
|
-
* cached local transform + clientRect.
|
|
752
|
-
*
|
|
753
|
-
* Konva's public `Layer.clearCache()` releases the bitmap and then runs a deep
|
|
754
|
-
* `_clearSelfAndDescendantCache()` that clears those caches on all 14k seat
|
|
755
|
-
* nodes. Recomputing them on the single frame the melt first reveals a section's
|
|
756
|
-
* live seats is the ~480ms first-drill stall (OV-80). A camera glide only marks
|
|
757
|
-
* each seat's ABSOLUTE_TRANSFORM dirty (recomputed lazily at ordinary pan cost)
|
|
758
|
-
* and never moves a seat's LOCAL transform, so the local caches stay valid —
|
|
759
|
-
* keeping them lets the first melt paint at pan cost, matching the ~17ms of
|
|
760
|
-
* every subsequent glide on the same section. Any edit that actually moves a
|
|
761
|
-
* seat invalidates its own transform cache through the attr setter, so only
|
|
762
|
-
* still-valid caches survive here.
|
|
763
|
-
*/
|
|
871
|
+
/** See `render/seatLayerBitmap.releaseLayerBitmap` — NOT `clearCache()`. */
|
|
764
872
|
private releaseSeatLayerBitmap;
|
|
765
873
|
/**
|
|
766
874
|
* SYNCHRONOUS repaint that bypasses requestAnimationFrame — see the
|
|
@@ -805,7 +913,6 @@ declare class SeatmapRenderer implements ISeatmapRenderer {
|
|
|
805
913
|
private updateLabels;
|
|
806
914
|
private get viewportLabelContext();
|
|
807
915
|
private handleResize;
|
|
808
|
-
private startFpsLoop;
|
|
809
916
|
}
|
|
810
917
|
declare function createRenderer(container: HTMLDivElement, opts?: RendererOptions): ISeatmapRenderer;
|
|
811
918
|
|
|
@@ -883,6 +990,17 @@ interface SeatHoverDetails extends PickerSeat {
|
|
|
883
990
|
currency: string;
|
|
884
991
|
/** Renderer mark (e.g. partly available across performances), when set. */
|
|
885
992
|
mark?: SeatMark | null;
|
|
993
|
+
/** A deliberate press pins interactive details; hover remains preview-only. */
|
|
994
|
+
interaction?: 'hover' | 'press';
|
|
995
|
+
/**
|
|
996
|
+
* The press landed on a seat that cannot be taken (held by another buyer,
|
|
997
|
+
* sold, not for sale, filtered out). Touch has no hover, so this is how a
|
|
998
|
+
* finger gets the explanation a mouse gets for free.
|
|
999
|
+
*/
|
|
1000
|
+
unavailable?: boolean;
|
|
1001
|
+
/** Unavailable ONLY because the buyer's accessibility filter is on — one tap
|
|
1002
|
+
* from being takeable again, so the host prompts rather than refuses. */
|
|
1003
|
+
filteredOut?: boolean;
|
|
886
1004
|
}
|
|
887
1005
|
interface PickerGAArea {
|
|
888
1006
|
id: string;
|
|
@@ -949,6 +1067,12 @@ interface SectionSummary {
|
|
|
949
1067
|
color: string;
|
|
950
1068
|
/** Free member seats right now. */
|
|
951
1069
|
seatsLeft: number;
|
|
1070
|
+
/**
|
|
1071
|
+
* Free member seats matching the buyer's accessibility filter. Present ONLY
|
|
1072
|
+
* while a filter is on — a card that always said "0 accessible" would report
|
|
1073
|
+
* the filter's absence as an absence of provision.
|
|
1074
|
+
*/
|
|
1075
|
+
accessibleLeft?: number;
|
|
952
1076
|
priceMin: number;
|
|
953
1077
|
priceMax: number;
|
|
954
1078
|
/** Per-category breakdown, cheapest first. */
|
|
@@ -1182,6 +1306,15 @@ interface PickerOptions extends PickerCallbacks {
|
|
|
1182
1306
|
flashOnLiveChange?: boolean;
|
|
1183
1307
|
/** Start in colorblind-safe rendering (Okabe-Ito hues + hollow booked seats). */
|
|
1184
1308
|
colorblindSafe?: boolean;
|
|
1309
|
+
/**
|
|
1310
|
+
* How a big chart's seats arrive: 'progressive' (default) shows the venue's
|
|
1311
|
+
* sections as soon as the chart doc lands and fills the seats in a section at
|
|
1312
|
+
* a time, nearest the viewport first; 'plain' builds the whole scene in one
|
|
1313
|
+
* step, as every chart used to.
|
|
1314
|
+
*/
|
|
1315
|
+
loadingReveal?: 'progressive' | 'plain';
|
|
1316
|
+
/** Every seat of a progressively revealed chart is now on screen. */
|
|
1317
|
+
onSeatsRevealed?: () => void;
|
|
1185
1318
|
/**
|
|
1186
1319
|
* Keep painting seat-status deltas even while the tab is hidden/backgrounded.
|
|
1187
1320
|
*
|
|
@@ -1235,6 +1368,19 @@ interface PickerRenderPerformanceProfile {
|
|
|
1235
1368
|
firstPaint: number;
|
|
1236
1369
|
startRealtime: number;
|
|
1237
1370
|
controllerTotal: number;
|
|
1371
|
+
/** Buyer chrome up with the loading skeleton in the map host. Widget-owned. */
|
|
1372
|
+
skeletonPaint?: number;
|
|
1373
|
+
/** Section shells on screen — the first frame that shows the actual venue. */
|
|
1374
|
+
shellsPaint?: number;
|
|
1375
|
+
/**
|
|
1376
|
+
* Every seat on screen, measured from the same start as the rest.
|
|
1377
|
+
*
|
|
1378
|
+
* Filled in AFTER `render()` resolves, on the profile object it returned:
|
|
1379
|
+
* a progressive reveal is by definition still finishing when the chart is
|
|
1380
|
+
* usable, and pretending otherwise would be the number this whole change
|
|
1381
|
+
* exists to stop reporting.
|
|
1382
|
+
*/
|
|
1383
|
+
seatsComplete?: number;
|
|
1238
1384
|
}
|
|
1239
1385
|
/**
|
|
1240
1386
|
* The subset of `ChartTheme` a HOST may override on the drawn canvas.
|
|
@@ -1573,7 +1719,19 @@ declare class PickerController {
|
|
|
1573
1719
|
y: number;
|
|
1574
1720
|
};
|
|
1575
1721
|
setSelectionFocus(seatId: string | null): void;
|
|
1722
|
+
/**
|
|
1723
|
+
* The buyer's accessibility filter, remembered here as well as pushed at the
|
|
1724
|
+
* renderer.
|
|
1725
|
+
*
|
|
1726
|
+
* The renderer owns the paint; the controller owns everything the paint is
|
|
1727
|
+
* not — the section summaries the dock bar reads, best-available, and the
|
|
1728
|
+
* host's own queries. Keeping a copy is what lets those answer the filter
|
|
1729
|
+
* without reaching into the canvas for it.
|
|
1730
|
+
*/
|
|
1731
|
+
private accessFilter;
|
|
1576
1732
|
setAccessibilityFilter(types: string[] | null): void;
|
|
1733
|
+
/** The buyer's active accessibility filter, or null. */
|
|
1734
|
+
getAccessibilityFilter(): AccessibilityType[] | null;
|
|
1577
1735
|
/**
|
|
1578
1736
|
* "Hide limited-view seats" toggle — dims free seats flagged
|
|
1579
1737
|
* restricted/obstructed view. Additive commercial parallel to the
|
|
@@ -1606,6 +1764,10 @@ declare class PickerController {
|
|
|
1606
1764
|
/** The AXS-focused section id, or null — the widget shows its "−" (back a
|
|
1607
1765
|
* level) control whenever a focus is active, not only at the seats rung. */
|
|
1608
1766
|
getFocusedSection(): string | null;
|
|
1767
|
+
/** Seats are the visible, tappable layer (focus, floor overview, or past the
|
|
1768
|
+
* half-melt scale). Drives the widget's "deep" state — the cache-based seats
|
|
1769
|
+
* rung flips at a scale where the chart still reads as section blocks. */
|
|
1770
|
+
seatsRevealed(): boolean;
|
|
1609
1771
|
/** Jump to a rung; ZONES clears any focused summary (back to overview). */
|
|
1610
1772
|
setRung(rung: LodRung): void;
|
|
1611
1773
|
/** Price-band filter (F4): dim free seats whose category is outside `keys`
|
|
@@ -1646,7 +1808,10 @@ declare class PickerController {
|
|
|
1646
1808
|
/** Read-only browser-render evidence for parity/performance audit tooling. */
|
|
1647
1809
|
getRenderedQualityEvidence(): RendererQualityEvidence | null;
|
|
1648
1810
|
/** Glide in on a section and surface its summary (same path as a section tap). */
|
|
1649
|
-
focusSection(id: string
|
|
1811
|
+
focusSection(id: string, anchor?: {
|
|
1812
|
+
x: number;
|
|
1813
|
+
y: number;
|
|
1814
|
+
}): void;
|
|
1650
1815
|
/** Live seat membership count used by buyer section-navigation controls. */
|
|
1651
1816
|
getSectionSeatCount(id: string): number;
|
|
1652
1817
|
/** Zoom back out to the whole chart and clear the section-summary card + focus. */
|
|
@@ -1656,14 +1821,14 @@ declare class PickerController {
|
|
|
1656
1821
|
* closed section is framed but never opens a buyer card. */
|
|
1657
1822
|
private handleSectionTap;
|
|
1658
1823
|
/**
|
|
1659
|
-
* Build a section summary from the renderer's spatial membership
|
|
1660
|
-
*
|
|
1824
|
+
* Build a section summary from the renderer's spatial membership. The
|
|
1825
|
+
* derivation itself lives in pickerSectionSummary.ts — it reads nothing this
|
|
1826
|
+
* object owns beyond four values, and this file is at its size cap.
|
|
1661
1827
|
*/
|
|
1662
1828
|
private sectionSummary;
|
|
1663
1829
|
destroy(): void;
|
|
1664
1830
|
private toSeat;
|
|
1665
1831
|
private toTableSeat;
|
|
1666
|
-
/** Tooltip payload for a hovered seat — see PickerCallbacks.onSeatHover. */
|
|
1667
1832
|
private describeSeat;
|
|
1668
1833
|
private priceFor;
|
|
1669
1834
|
private tiersFor;
|