@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.
Files changed (135) hide show
  1. package/dist/ar-R52D47QC.js +1 -0
  2. package/dist/be-P34NRZPF.js +1 -0
  3. package/dist/bg-4TEE6DSQ.js +1 -0
  4. package/dist/ca-V4A6DRPR.js +1 -0
  5. package/dist/{categoryInventory-DLDU-RSw.d.ts → categoryInventory-BiUDSvBt.d.ts} +1 -1
  6. package/dist/{categoryInventory-DZapeGK6.d.cts → categoryInventory-DBqgM5in.d.cts} +1 -1
  7. package/dist/{chunk-6JWYLLWU.js → chunk-5AHUGRHH.js} +1 -1
  8. package/dist/{chunk-RMNTGICO.js → chunk-652LV66L.js} +1 -1
  9. package/dist/{chunk-BV6FHURE.js → chunk-7OJ6SB6V.js} +1 -1
  10. package/dist/{chunk-HZT2U5IY.js → chunk-A27USMF7.js} +1 -1
  11. package/dist/{chunk-YYRUKI7A.js → chunk-AWPHGLTU.js} +1 -1
  12. package/dist/{chunk-WZ6ZNPNT.js → chunk-UHPX2P7O.js} +1 -1
  13. package/dist/{chunk-QYZ3P5L6.js → chunk-WXWJZ5DO.js} +1 -1
  14. package/dist/chunk-X3K36XZM.js +1 -0
  15. package/dist/core/chart-ops/index.cjs +1 -1
  16. package/dist/core/chart-ops/index.d.cts +4 -4
  17. package/dist/core/chart-ops/index.d.ts +4 -4
  18. package/dist/core/chart-ops/index.js +1 -1
  19. package/dist/core/inventory/index.d.cts +4 -4
  20. package/dist/core/inventory/index.d.ts +4 -4
  21. package/dist/core/inventory/index.js +1 -1
  22. package/dist/core/layout/index.cjs +1 -1
  23. package/dist/core/layout/index.d.cts +4 -4
  24. package/dist/core/layout/index.d.ts +4 -4
  25. package/dist/core/layout/index.js +1 -1
  26. package/dist/core/quality/index.d.cts +3 -3
  27. package/dist/core/quality/index.d.ts +3 -3
  28. package/dist/core/render-assets/index.d.cts +1 -1
  29. package/dist/core/render-assets/index.d.ts +1 -1
  30. package/dist/core/render-assets/index.js +1 -1
  31. package/dist/core/seatConfidence.d.cts +1 -1
  32. package/dist/core/seatConfidence.d.ts +1 -1
  33. package/dist/core/sections/index.d.cts +5 -5
  34. package/dist/core/sections/index.d.ts +5 -5
  35. package/dist/core/sections/index.js +1 -1
  36. package/dist/cs-GR5H3ZRU.js +1 -0
  37. package/dist/cy-XWYNMRNE.js +1 -0
  38. package/dist/da-NOYMEVP6.js +1 -0
  39. package/dist/de-LFHFC2XO.js +1 -0
  40. package/dist/el-AS3436E6.js +1 -0
  41. package/dist/es-IWBWYUHH.js +1 -0
  42. package/dist/et-VV7YGFEV.js +1 -0
  43. package/dist/{eventConfigurations-kZpADDdx.d.ts → eventConfigurations-CA2XhDig.d.ts} +1 -1
  44. package/dist/{eventConfigurations-C_dst7Ro.d.cts → eventConfigurations-Csdxe89O.d.cts} +1 -1
  45. package/dist/fa-JYLN4BIM.js +1 -0
  46. package/dist/fi-TXRN726I.js +1 -0
  47. package/dist/fr-PKEU6NKI.js +1 -0
  48. package/dist/he-H53ZPEAF.js +1 -0
  49. package/dist/hr-AIG6RMUY.js +1 -0
  50. package/dist/hu-KE64252D.js +1 -0
  51. package/dist/index.cjs +1 -1
  52. package/dist/index.d.cts +259 -94
  53. package/dist/index.d.ts +259 -94
  54. package/dist/index.js +1 -1
  55. package/dist/it-GVT7VIKV.js +1 -0
  56. package/dist/ja-WMRRUDVD.js +1 -0
  57. package/dist/ku-77V6NTW7.js +1 -0
  58. package/dist/{labeling-Br0U7E-5.d.ts → labeling-CxZWjZBN.d.ts} +1 -1
  59. package/dist/{labeling-B07AFOvn.d.cts → labeling-DG-Sc8VW.d.cts} +1 -1
  60. package/dist/{layout-BjkVhn52.d.cts → layout-BxJIZjPm.d.cts} +19 -5
  61. package/dist/{layout-BdeBpWf8.d.ts → layout-C6YaCOnZ.d.ts} +19 -5
  62. package/dist/localeLoaders-2KZHFEV7.js +1 -0
  63. package/dist/lt-7ICKT4ED.js +1 -0
  64. package/dist/lv-NTO2456Y.js +1 -0
  65. package/dist/nl-IYEEWC4A.js +1 -0
  66. package/dist/no-CKH6R5N2.js +1 -0
  67. package/dist/pl-ALK57HKB.js +1 -0
  68. package/dist/pt-EYFSXBVZ.js +1 -0
  69. package/dist/{renderedQuality-Dn6GyPPj.d.ts → renderedQuality-CWwy14lb.d.ts} +1 -1
  70. package/dist/{renderedQuality-C-L_RuPB.d.cts → renderedQuality-CgBQYezj.d.cts} +1 -1
  71. package/dist/{renderer-BGmZn_bq.d.ts → renderer-DIcDImOu.d.ts} +85 -4
  72. package/dist/{renderer-BHInJ52w.d.cts → renderer-DmG3C8vD.d.cts} +85 -4
  73. package/dist/ro-EUFVCBVY.js +1 -0
  74. package/dist/ru-XAIYWENX.js +1 -0
  75. package/dist/{sections-DCRfHaw4.d.ts → sections-87qiciyN.d.ts} +1 -1
  76. package/dist/{sections-BjzyfqGZ.d.cts → sections-Bb0L9lDT.d.cts} +1 -1
  77. package/dist/{segmentedRowModel-jfYcGWPd.d.cts → segmentedRowModel-BqiM0U65.d.cts} +1 -1
  78. package/dist/{segmentedRowModel-DQggl3UO.d.ts → segmentedRowModel-CEP6crcl.d.ts} +1 -1
  79. package/dist/sk-QIOFO4TV.js +1 -0
  80. package/dist/sl-37I57K2X.js +1 -0
  81. package/dist/sr-HE5DILFD.js +1 -0
  82. package/dist/sv-7SVBFLY3.js +1 -0
  83. package/dist/{ticketRestrictions-CtgOd-2p.d.ts → ticketRestrictions-B_qXQobd.d.ts} +2 -2
  84. package/dist/{ticketRestrictions-mnICaF5t.d.cts → ticketRestrictions-Bj8PBX_x.d.cts} +2 -2
  85. package/dist/tr-JNA4YJEJ.js +1 -0
  86. package/dist/{types-BjTzKc2D.d.cts → types-DNztpn7q.d.cts} +9 -0
  87. package/dist/{types-BjTzKc2D.d.ts → types-DNztpn7q.d.ts} +9 -0
  88. package/dist/uk-2723G7DI.js +1 -0
  89. package/dist/view3d/crossfade/panorama.d.cts +1 -1
  90. package/dist/view3d/crossfade/panorama.d.ts +1 -1
  91. package/dist/view3d/index.cjs +31 -31
  92. package/dist/view3d/index.d.cts +86 -4
  93. package/dist/view3d/index.d.ts +86 -4
  94. package/dist/view3d/index.js +29 -29
  95. package/dist/zh-Hans-ONBXTDHV.js +1 -0
  96. package/dist/zh-Hant-LVTMHA6P.js +1 -0
  97. package/package.json +1 -1
  98. package/dist/ar-QWMSVFMH.js +0 -1
  99. package/dist/be-3GMEVW5Q.js +0 -1
  100. package/dist/bg-W46PKTS7.js +0 -1
  101. package/dist/ca-FS3NR6VL.js +0 -1
  102. package/dist/chunk-I6DNJFRF.js +0 -1
  103. package/dist/cs-I4AKSFRV.js +0 -1
  104. package/dist/cy-ABRR65RX.js +0 -1
  105. package/dist/da-HNKK3PNG.js +0 -1
  106. package/dist/de-QUOPPJF7.js +0 -1
  107. package/dist/el-DUXSH2LY.js +0 -1
  108. package/dist/es-57EA3CTI.js +0 -1
  109. package/dist/et-RBSHG6OS.js +0 -1
  110. package/dist/fa-MJIJUBSS.js +0 -1
  111. package/dist/fi-HKF3AVOV.js +0 -1
  112. package/dist/fr-4U5K5VNS.js +0 -1
  113. package/dist/he-MIVDM6KS.js +0 -1
  114. package/dist/hr-G7RZP6DQ.js +0 -1
  115. package/dist/hu-QZE26B6N.js +0 -1
  116. package/dist/it-L2XL6VR7.js +0 -1
  117. package/dist/ja-Q64SRIIE.js +0 -1
  118. package/dist/ku-OG466MA5.js +0 -1
  119. package/dist/localeLoaders-V5HTIO2J.js +0 -1
  120. package/dist/lt-P2CZWZZL.js +0 -1
  121. package/dist/lv-IRHTS7ME.js +0 -1
  122. package/dist/nl-6WSAK5IB.js +0 -1
  123. package/dist/no-3G67YZZR.js +0 -1
  124. package/dist/pl-DUYWY7BZ.js +0 -1
  125. package/dist/pt-FNIRQMIZ.js +0 -1
  126. package/dist/ro-BBYEYZIK.js +0 -1
  127. package/dist/ru-NMG7W5QE.js +0 -1
  128. package/dist/sk-HI2H44DR.js +0 -1
  129. package/dist/sl-RBLBICUL.js +0 -1
  130. package/dist/sr-SNARC3RS.js +0 -1
  131. package/dist/sv-R7ZWBQIL.js +0 -1
  132. package/dist/tr-2JJXM4IM.js +0 -1
  133. package/dist/uk-GTBKSNLF.js +0 -1
  134. package/dist/zh-Hans-4V7ZG3GP.js +0 -1
  135. package/dist/zh-Hant-XWV277CF.js +0 -1
package/dist/index.d.cts CHANGED
@@ -1,15 +1,15 @@
1
- import { C as ChartDoc, P as Point, A as AccessibilityType, m as CategoryTier, g as SeatCommercialAttributes } from './types-BjTzKc2D.cjs';
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-BjTzKc2D.cjs';
3
- import { E as EventConfigurationRef, a as EventConfigurationVersion } from './eventConfigurations-C_dst7Ro.cjs';
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-C_dst7Ro.cjs';
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-BjkVhn52.cjs';
6
- import { c as TicketSelectionIssue } from './ticketRestrictions-mnICaF5t.cjs';
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-mnICaF5t.cjs';
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-BjzyfqGZ.cjs';
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-C-L_RuPB.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-BHInJ52w.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-BHInJ52w.cjs';
12
- import './segmentedRowModel-jfYcGWPd.cjs';
1
+ import { C as ChartDoc, P as Point, A as AccessibilityType, m as CategoryTier, g as SeatCommercialAttributes } from './types-DNztpn7q.cjs';
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.cjs';
3
+ import { E as EventConfigurationRef, a as EventConfigurationVersion } from './eventConfigurations-Csdxe89O.cjs';
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-Csdxe89O.cjs';
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-BxJIZjPm.cjs';
6
+ import { c as TicketSelectionIssue } from './ticketRestrictions-Bj8PBX_x.cjs';
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-Bj8PBX_x.cjs';
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-Bb0L9lDT.cjs';
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-CgBQYezj.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-DmG3C8vD.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-DmG3C8vD.cjs';
12
+ import './segmentedRowModel-BqiM0U65.cjs';
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 temporary halo is drawn in the non-listening overlay layer,
297
- * so the apparent 4% lift never changes hit testing or selection bounds.
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 the currently available inventory that survived a buyer price
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
- /** Visual opacity after the section-focus overlay is composed. */
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
- * AXS section-focus: dim + desaturate every other section, draw a calm backdrop
525
- * panel behind this section's seats, and glide the camera to a padded fit.
526
- * Wide desktop maps retain the complete-section frame. A narrow phone crops
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): void;
531
- /** Preserve the section-focus camera contract across the initial tap and a
532
- * later host resize (for example when native ticket chrome expands). */
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
- /** Draw (or replace) the light backdrop panel behind the focused section. */
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
- /** Dim everything outside the active section with one paint-only shape. Group
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
- * Zone rung: one giant screen-constant label per zone (+ optional "FROM $n"),
620
- * shown at the farthest zoom in place of per-section detail. Skipped entirely
621
- * when the doc declares no zones sections then stay the far rung (graceful).
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 stage scale `focusRegion(id)` would settle ati.e. the zoom that
655
- * frames this section in the current viewport. Used to decide whether
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
- * Nearest SELECTABLE seat whose centre is within `slopPx` (screen space) of a
675
- * seat circle edge, or null. Enlarges the effective tap target for small seats
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): void;
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: section +
1660
- * zone labels, live seats-left, price range, and the per-category breakdown.
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;