@seatlayer/core 0.76.0 → 0.77.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (125) hide show
  1. package/dist/ar-ESLFQEY3.js +1 -0
  2. package/dist/be-7WI4WG2B.js +1 -0
  3. package/dist/bg-KKEOOUYL.js +1 -0
  4. package/dist/ca-L36KKI76.js +1 -0
  5. package/dist/{categoryInventory-Cy5pQ0KW.d.ts → categoryInventory-C_NIm0jr.d.ts} +1 -1
  6. package/dist/{categoryInventory-CBuJy9KM.d.cts → categoryInventory-IgpsH6KG.d.cts} +1 -1
  7. package/dist/chunk-QJXSZT3H.js +1 -0
  8. package/dist/chunk-SGYNM3SG.js +1 -0
  9. package/dist/core/chart-ops/index.d.cts +5 -5
  10. package/dist/core/chart-ops/index.d.ts +5 -5
  11. package/dist/core/inventory/index.cjs +1 -1
  12. package/dist/core/inventory/index.d.cts +4 -4
  13. package/dist/core/inventory/index.d.ts +4 -4
  14. package/dist/core/layout/index.d.cts +5 -5
  15. package/dist/core/layout/index.d.ts +5 -5
  16. package/dist/core/quality/index.d.cts +3 -3
  17. package/dist/core/quality/index.d.ts +3 -3
  18. package/dist/core/render-assets/index.d.cts +1 -1
  19. package/dist/core/render-assets/index.d.ts +1 -1
  20. package/dist/core/seatConfidence.d.cts +1 -1
  21. package/dist/core/seatConfidence.d.ts +1 -1
  22. package/dist/core/sections/index.d.cts +5 -5
  23. package/dist/core/sections/index.d.ts +5 -5
  24. package/dist/cs-2IEWVOHA.js +1 -0
  25. package/dist/cy-A5YBQD5Q.js +1 -0
  26. package/dist/da-IDXUY3QI.js +1 -0
  27. package/dist/de-L5PFY4CY.js +1 -0
  28. package/dist/el-4DPNHJGB.js +1 -0
  29. package/dist/es-IMADA3UR.js +1 -0
  30. package/dist/et-G6PPK4SF.js +1 -0
  31. package/dist/{eventConfigurations-CqfrYWAb.d.cts → eventConfigurations-71rHjKl7.d.ts} +5 -5
  32. package/dist/{eventConfigurations-Dhauc9V3.d.ts → eventConfigurations-vOMFVz7c.d.cts} +5 -5
  33. package/dist/fa-3RYGYXBU.js +1 -0
  34. package/dist/fi-KRSYZSV4.js +1 -0
  35. package/dist/fr-FOSKFLMV.js +1 -0
  36. package/dist/he-RXSGTRSH.js +1 -0
  37. package/dist/hr-IMBN4Z7O.js +1 -0
  38. package/dist/hu-UYWLVBH3.js +1 -0
  39. package/dist/index.cjs +1 -1
  40. package/dist/index.d.cts +198 -148
  41. package/dist/index.d.ts +198 -148
  42. package/dist/index.js +1 -1
  43. package/dist/it-ZAWFQCOM.js +1 -0
  44. package/dist/ja-QZGXTROI.js +1 -0
  45. package/dist/ku-ZCTX4KKG.js +1 -0
  46. package/dist/{labeling-BwPEI5JN.d.ts → labeling-BnjyAEbI.d.ts} +1 -1
  47. package/dist/{labeling-B1xsmowB.d.cts → labeling-pdEv7UN1.d.cts} +1 -1
  48. package/dist/localeLoaders-BZZWN35C.js +1 -0
  49. package/dist/lt-N2OMHLDZ.js +1 -0
  50. package/dist/lv-WLIXXNIX.js +1 -0
  51. package/dist/nl-LZILGXRW.js +1 -0
  52. package/dist/no-2OJ4BSZI.js +1 -0
  53. package/dist/pl-FZUMWN56.js +1 -0
  54. package/dist/pt-R4XWF7UT.js +1 -0
  55. package/dist/{renderedQuality-1E9KuJvY.d.cts → renderedQuality-CRLkEGf8.d.cts} +1 -1
  56. package/dist/{renderedQuality-ChAZNV2N.d.ts → renderedQuality-DN8SFFjk.d.ts} +1 -1
  57. package/dist/{renderer-BRmVrITG.d.cts → renderer-B6kkgOHz.d.cts} +43 -1
  58. package/dist/{renderer-q7viZLGZ.d.ts → renderer-ByLmyQe_.d.ts} +43 -1
  59. package/dist/ro-WK3CNXGW.js +1 -0
  60. package/dist/ru-AGP7UPXQ.js +1 -0
  61. package/dist/{sections-CA-bBex5.d.cts → sections-CQ0sd37E.d.cts} +1 -1
  62. package/dist/{sections-ByTMouG8.d.ts → sections-F6wMlVqx.d.ts} +1 -1
  63. package/dist/{segmentedRowModel-DcvJVKLD.d.ts → segmentedRowModel-D-CEgxg7.d.ts} +1 -1
  64. package/dist/{segmentedRowModel-C7XOEjHk.d.cts → segmentedRowModel-DqFhb-7Q.d.cts} +1 -1
  65. package/dist/sk-LNR3ENI4.js +1 -0
  66. package/dist/sl-UG367TMJ.js +1 -0
  67. package/dist/sr-IHG5CL3F.js +1 -0
  68. package/dist/sv-RIFQBC5U.js +1 -0
  69. package/dist/{tableSizing-D8e8QAJ-.d.ts → tableSizing-B0JegL6B.d.ts} +3 -3
  70. package/dist/{tableSizing-BdCyNeqX.d.cts → tableSizing-DKygWd7z.d.cts} +3 -3
  71. package/dist/{ticketRestrictions-CorjMY49.d.ts → ticketRestrictions-Bp7ET0j4.d.ts} +2 -2
  72. package/dist/{ticketRestrictions-CPZglNvw.d.cts → ticketRestrictions-CvGDnGS8.d.cts} +2 -2
  73. package/dist/tr-LWSQYBXN.js +1 -0
  74. package/dist/{types-CqaNLbU6.d.ts → types-Dq-ipTBG.d.cts} +13 -15
  75. package/dist/{types-CqaNLbU6.d.cts → types-Dq-ipTBG.d.ts} +13 -15
  76. package/dist/uk-ZSWFWCW7.js +1 -0
  77. package/dist/view3d/crossfade/panorama.d.cts +1 -1
  78. package/dist/view3d/crossfade/panorama.d.ts +1 -1
  79. package/dist/view3d/index.cjs +27 -27
  80. package/dist/view3d/index.d.cts +3 -3
  81. package/dist/view3d/index.d.ts +3 -3
  82. package/dist/view3d/index.js +25 -25
  83. package/dist/view3d/scene/scene.worker.cjs +1 -1
  84. package/dist/view3d/scene/scene.worker.js +1 -1
  85. package/dist/zh-Hans-P4CJH4VJ.js +1 -0
  86. package/dist/zh-Hant-X7CHEXML.js +1 -0
  87. package/package.json +1 -1
  88. package/dist/ar-JOSU54ZZ.js +0 -1
  89. package/dist/be-UDIVAZGH.js +0 -1
  90. package/dist/bg-AJX2SNK4.js +0 -1
  91. package/dist/ca-MC23KMQH.js +0 -1
  92. package/dist/chunk-JQL77POQ.js +0 -1
  93. package/dist/cs-Q4OEV3NE.js +0 -1
  94. package/dist/cy-TPDRMPTK.js +0 -1
  95. package/dist/da-U6XXTCII.js +0 -1
  96. package/dist/de-ZV54ZWHR.js +0 -1
  97. package/dist/el-5VQKNNQV.js +0 -1
  98. package/dist/es-Y3BNIAEW.js +0 -1
  99. package/dist/et-HCCA6TE3.js +0 -1
  100. package/dist/fa-SZ3EAODM.js +0 -1
  101. package/dist/fi-S34TMT35.js +0 -1
  102. package/dist/fr-RQIXNHQ5.js +0 -1
  103. package/dist/he-PPNABESI.js +0 -1
  104. package/dist/hr-IZOGRWC5.js +0 -1
  105. package/dist/hu-K7EOGFAB.js +0 -1
  106. package/dist/it-PD5WJDNR.js +0 -1
  107. package/dist/ja-3CFZ2KK6.js +0 -1
  108. package/dist/ku-MQJTRLDV.js +0 -1
  109. package/dist/localeLoaders-ETY2H7H3.js +0 -1
  110. package/dist/lt-6Q5DJHXR.js +0 -1
  111. package/dist/lv-BQ3LWGW6.js +0 -1
  112. package/dist/nl-ZPVH2YGT.js +0 -1
  113. package/dist/no-R7I6YW7N.js +0 -1
  114. package/dist/pl-EU2O5DYI.js +0 -1
  115. package/dist/pt-UMSFOY5P.js +0 -1
  116. package/dist/ro-GR35LU2L.js +0 -1
  117. package/dist/ru-CXYAZQEV.js +0 -1
  118. package/dist/sk-GUB52YMC.js +0 -1
  119. package/dist/sl-J7N6LDON.js +0 -1
  120. package/dist/sr-A7GQEH7K.js +0 -1
  121. package/dist/sv-ARLHHSPZ.js +0 -1
  122. package/dist/tr-6TE3U7WM.js +0 -1
  123. package/dist/uk-RMVPSRMH.js +0 -1
  124. package/dist/zh-Hans-SNO4DA32.js +0 -1
  125. package/dist/zh-Hant-TVIKBD5S.js +0 -1
package/dist/index.d.ts CHANGED
@@ -1,15 +1,15 @@
1
- import { C as ChartDoc, F as FloorLabelStyle, P as Point, A as AccessibilityType, i as CategoryTier, S as SeatCommercialAttributes, w as ChartDeliveryPerformance } from './types-CqaNLbU6.js';
2
- export { x as ACCESSIBILITY_RING_COLOR, y as ACCESSIBILITY_TYPES, z as AccessibilityMeta, D as AuthoringObjectState, B as BoothObject, p as Category, E as ChartLayoutConstraint, a as ChartObject, o as ChartReferenceImage, H as ChartTheme, I as ConfidenceEvidenceScope, u as CubicPath, J as DecorImageObject, m as Floor, G as GAAreaObject, h as GAInventorySegment, K as LABEL_STYLE_MAX_SIZE, M as LABEL_STYLE_MIN_SIZE, N as LabelPresentation, L as LabelStyle, O as ObjectEditorState, Q as Physical3dEvidence, U as RadialClearanceLayoutConstraint, n as RectTableSeatCounts, l as RectTableSide, V as ReferenceAccessibilitySource, W as ReferenceCalibration, X as ReferenceCategorySource, Y as ReferenceDerivedScale, Z as ReferenceDirectAnnotationSource, _ as ReferenceDirectLandmarkCandidate, $ as ReferenceDirectLandmarkDisposition, a0 as ReferenceDirectLandmarkRole, a1 as ReferenceDirectLandmarkSource, a2 as ReferenceDirectSeatGroup, a3 as ReferenceDirectSeatImportSource, a4 as ReferenceDirectSeatPlan, a5 as ReferenceDirectStageSource, a6 as ReferenceEnrichmentStatus, a7 as ReferenceExtractEmptyReason, a8 as ReferenceExtractEnrichment, a9 as ReferenceExtractInput, aa as ReferenceExtractProposal, ab as ReferenceExtractRegionSeats, ac as ReferenceInventoryExclusionSource, ad as ReferenceInventorySource, ae as ReferenceMatchReport, af as ReferenceScanProposal, ag as ReferenceScanRowProposal, ah as ReferenceScanSectionProposal, ai as ReferenceSeatSeed, aj as ReferenceSectionTraceBatchInput, ak as ReferenceSectionTraceBatchProposal, al as ReferenceSectionTraceInput, am as ReferenceSectionTraceProposal, c as ResolvedSeatConfidenceEvidence, R as RowObject, an as SEAT_COMMERCIAL_MARKS, ao as STAGE_LABEL_STYLE_MAX_SIZE, ap as SURROUNDINGS_SHAPE_ROLES, aq as SeatCommercialMark, ar as SeatCommercialMeta, as as SeatConfidenceCoverage, at as SeatConfidenceEvidence, au as SeatConfidenceModelLevel, av as SeatConfidenceModeledTarget, aw as SeatConfidenceRealityLevel, d as SeatGlyphKind, k as SeatOverride, e as SeatViewCoverage, b as SeatViewMetadata, ax as SeatViewVariant, j as SectionObject, f as SectionOutlinePath, g as SectionPathSegment, ay as SelectionLayer, q as ShapeLineCap, r as ShapeLineEnding, s as ShapeLineJoin, t as ShapeObject, az as StageLabelStyle, T as TableObject, aA as TextAlignment, aB as TextBackground, v as TextObject, aC as TicketTierApplicability, aD as TicketTierEvidence, aE as TicketTierRestriction, aF as Venue3DMaterialPalette, aG as VenueSurveyRegistrationEvidence, aH as ZoneDef, aI as accessibilityMeta, aJ as accessibilityRingColor, aK as layerOf, aL as seatCommercialMeta } from './types-CqaNLbU6.js';
3
- import { E as EventConfigurationRef, a as EventConfigurationVersion } from './eventConfigurations-Dhauc9V3.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-Dhauc9V3.js';
5
- export { A as AUTOMATIC_ROUND_TABLE_RADIUS_MAX, a as AUTOMATIC_ROUND_TABLE_RADIUS_MIN, C as ChartBoundsOptions, E as ExpandChartOptions, F as FLOOR_STACK_GAP_RATIO, b as FLOOR_STACK_MIN_SURFACE_PX, c as FloorStackOptions, d as FloorStackPlacement, R as RowSeatSlot, T as TABLE_SEAT_OFFSET, e as TableSeatSlot, f as allObjects, g as automaticRoundTableRadius, h as chartBounds, i as expandBooth, j as expandChart, k as expandRow, l as expandRowSlots, m as expandTable, n as expandTableSlots, o as floorObjects, p as floorStackPlacements, q as floorsOf, r as initialFloorMode, s as layoutFloorStack, t as mainFloorId, u as objectCenter, v as owningSectionForObject, w as pointInPolygon, x as pointInPolygonWithHoles, y as polygonLabelPoint, z as rowInventoryCount, B as rowSeatPositions, D as stackFloors, G as tableInventoryCount, H as tableSeatCountsBySide, I as translateObject } from './tableSizing-D8e8QAJ-.js';
6
- import { c as TicketSelectionIssue } from './ticketRestrictions-CorjMY49.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-CorjMY49.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-ByTMouG8.js';
9
- export { M as MIN_POINTER_TARGET_PX, R as RENDERED_QUALITY_REPORT_VERSION, a as RenderedEvidenceState, b as RenderedQualityFinding, c as RenderedQualityFindingCode, d as RenderedQualityReport, e as RenderedQualitySample, i as inspectRenderedQualityEvidence } from './renderedQuality-ChAZNV2N.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-q7viZLGZ.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-q7viZLGZ.js';
12
- import './segmentedRowModel-DcvJVKLD.js';
1
+ import { C as ChartDoc, F as FloorLabelStyle, P as Point, A as AccessibilityType, i as CategoryTier, S as SeatCommercialAttributes, w as ChartDeliveryPerformance } from './types-Dq-ipTBG.js';
2
+ export { x as ACCESSIBILITY_RING_COLOR, y as ACCESSIBILITY_TYPES, z as AccessibilityMeta, D as AuthoringObjectState, B as BoothObject, p as Category, E as ChartLayoutConstraint, a as ChartObject, o as ChartReferenceImage, H as ChartTheme, I as ConfidenceEvidenceScope, u as CubicPath, J as DecorImageObject, m as Floor, G as GAAreaObject, h as GAInventorySegment, K as LABEL_STYLE_MAX_SIZE, M as LABEL_STYLE_MIN_SIZE, N as LabelPresentation, L as LabelStyle, O as ObjectEditorState, Q as Physical3dEvidence, U as RadialClearanceLayoutConstraint, n as RectTableSeatCounts, l as RectTableSide, V as ReferenceAccessibilitySource, W as ReferenceCalibration, X as ReferenceCategorySource, Y as ReferenceDerivedScale, Z as ReferenceDirectAnnotationSource, _ as ReferenceDirectLandmarkCandidate, $ as ReferenceDirectLandmarkDisposition, a0 as ReferenceDirectLandmarkRole, a1 as ReferenceDirectLandmarkSource, a2 as ReferenceDirectSeatGroup, a3 as ReferenceDirectSeatImportSource, a4 as ReferenceDirectSeatPlan, a5 as ReferenceDirectStageSource, a6 as ReferenceEnrichmentStatus, a7 as ReferenceExtractEmptyReason, a8 as ReferenceExtractEnrichment, a9 as ReferenceExtractInput, aa as ReferenceExtractProposal, ab as ReferenceExtractRegionSeats, ac as ReferenceInventoryExclusionSource, ad as ReferenceInventorySource, ae as ReferenceMatchReport, af as ReferenceScanProposal, ag as ReferenceScanRowProposal, ah as ReferenceScanSectionProposal, ai as ReferenceSeatSeed, aj as ReferenceSectionTraceBatchInput, ak as ReferenceSectionTraceBatchProposal, al as ReferenceSectionTraceInput, am as ReferenceSectionTraceProposal, c as ResolvedSeatConfidenceEvidence, R as RowObject, an as SEAT_COMMERCIAL_MARKS, ao as STAGE_LABEL_STYLE_MAX_SIZE, ap as SURROUNDINGS_SHAPE_ROLES, aq as SeatCommercialMark, ar as SeatCommercialMeta, as as SeatConfidenceCoverage, at as SeatConfidenceEvidence, au as SeatConfidenceModelLevel, av as SeatConfidenceModeledTarget, aw as SeatConfidenceRealityLevel, d as SeatGlyphKind, k as SeatOverride, e as SeatViewCoverage, b as SeatViewMetadata, ax as SeatViewVariant, j as SectionObject, f as SectionOutlinePath, g as SectionPathSegment, ay as SelectionLayer, q as ShapeLineCap, r as ShapeLineEnding, s as ShapeLineJoin, t as ShapeObject, az as StageLabelStyle, T as TableObject, aA as TextAlignment, aB as TextBackground, v as TextObject, aC as TicketTierApplicability, aD as TicketTierEvidence, aE as TicketTierRestriction, aF as Venue3DMaterialPalette, aG as VenueSurveyRegistrationEvidence, aH as ZoneDef, aI as accessibilityMeta, aJ as accessibilityRingColor, aK as layerOf, aL as seatCommercialMeta } from './types-Dq-ipTBG.js';
3
+ import { c as EventConfigurationRef, b as EventConfigurationVersion } from './eventConfigurations-71rHjKl7.js';
4
+ export { d as EVENT_CONFIGURATION_EXPORT_SCHEMA, e as EVENT_CONFIGURATION_SCHEMA, f as EventConfigurationBaseVenue, g as EventConfigurationCompatibilityIssue, h as EventConfigurationCompatibilityIssueCode, i as EventConfigurationCompatibilityResult, j as EventConfigurationExportEnvelope, k as EventConfigurationLifecycleStatus, a as EventConfigurationOcclusion, l as EventConfigurationOverlay, m as EventConfigurationParseIssue, n as EventConfigurationParseIssueCode, o as EventConfigurationParseResult, p as EventConfigurationProductionElement, E as EventConfigurationProductionElementKind, q as EventConfigurationVenueSnapshot, r as EventConfigurationVersionParseResult, s as EventConfigurationVersionSummary, L as LegacyEventConfigurationMigrationResult, t as canTransitionEventConfiguration, u as canonicalEventConfigurationJson, v as inspectEventConfigurationCompatibility, w as migrateLegacyEventConfigurations, x as parseEventConfigurationExport, y as parseEventConfigurationVersion, z as resolveEventConfigurationRollback } from './eventConfigurations-71rHjKl7.js';
5
+ export { A as AUTOMATIC_ROUND_TABLE_RADIUS_MAX, a as AUTOMATIC_ROUND_TABLE_RADIUS_MIN, C as ChartBoundsOptions, E as ExpandChartOptions, F as FLOOR_STACK_GAP_RATIO, b as FLOOR_STACK_MIN_SURFACE_PX, c as FloorStackOptions, d as FloorStackPlacement, R as RowSeatSlot, T as TABLE_SEAT_OFFSET, e as TableSeatSlot, f as allObjects, g as automaticRoundTableRadius, h as chartBounds, i as expandBooth, j as expandChart, k as expandRow, l as expandRowSlots, m as expandTable, n as expandTableSlots, o as floorObjects, p as floorStackPlacements, q as floorsOf, r as initialFloorMode, s as layoutFloorStack, t as mainFloorId, u as objectCenter, v as owningSectionForObject, w as pointInPolygon, x as pointInPolygonWithHoles, y as polygonLabelPoint, z as rowInventoryCount, B as rowSeatPositions, D as stackFloors, G as tableInventoryCount, H as tableSeatCountsBySide, I as translateObject } from './tableSizing-B0JegL6B.js';
6
+ import { c as TicketSelectionIssue } from './ticketRestrictions-Bp7ET0j4.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-Bp7ET0j4.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-F6wMlVqx.js';
9
+ export { M as MIN_POINTER_TARGET_PX, R as RENDERED_QUALITY_REPORT_VERSION, a as RenderedEvidenceState, b as RenderedQualityFinding, c as RenderedQualityFindingCode, d as RenderedQualityReport, e as RenderedQualitySample, i as inspectRenderedQualityEvidence } from './renderedQuality-DN8SFFjk.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-ByLmyQe_.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-ByLmyQe_.js';
12
+ import './segmentedRowModel-D-CEgxg7.js';
13
13
 
14
14
  /**
15
15
  * Half-width of the band around a legibility threshold, in rendered pixels.
@@ -91,6 +91,31 @@ interface CameraPose {
91
91
  scale: number;
92
92
  }
93
93
 
94
+ /** One named section a buyer's accessibility filter can actually send them to. */
95
+ interface AccessibleSectionSummary {
96
+ /** The logical section id — what `focusSection` and the dock bar both use. */
97
+ id: string;
98
+ /** The section's own name, as painted on the block. */
99
+ label: string;
100
+ /** Free seats in it that match the filter. */
101
+ free: number;
102
+ }
103
+ /** What the filter matched, and the SHAPE of it — see {@link accessibleSpread}. */
104
+ interface AccessibleSpread {
105
+ /** Free matching seats anywhere on the active floor. */
106
+ spaces: number;
107
+ /** The named sections holding them. */
108
+ sections: AccessibleSectionSummary[];
109
+ /**
110
+ * The matches are scattered across (nearly) the whole venue.
111
+ *
112
+ * The camera answer and the words the widget says both hang off this: a tight
113
+ * cluster is dived into and needs no explanation, a bowl-wide scatter is
114
+ * already on screen and needs to be told apart from "nothing happened".
115
+ */
116
+ wholeVenue: boolean;
117
+ }
118
+
94
119
  declare class SeatmapRenderer implements ISeatmapRenderer {
95
120
  private container;
96
121
  private opts;
@@ -206,6 +231,8 @@ declare class SeatmapRenderer implements ISeatmapRenderer {
206
231
  * a type list = dim free seats lacking any of those accommodations.
207
232
  */
208
233
  private accessFilter;
234
+ /** Memoised free-matching-space counts, keyed by SectionRender id. */
235
+ private readonly accessFreeBySection;
209
236
  /** Category highlight (legend hover): dims free seats NOT of this category. */
210
237
  private categoryHighlight;
211
238
  /** Price-band filter (F4): dim free seats whose category is NOT in this set. */
@@ -624,48 +651,22 @@ declare class SeatmapRenderer implements ISeatmapRenderer {
624
651
  setGAStates(states: Record<string, GAAreaState>): void;
625
652
  setGAState(areaId: string, state: GAAreaState): void;
626
653
  /**
627
- * Take the buyer to the seats a price band left them (owner rule, 2026-09-03).
628
- *
629
- * Cluster the matches, then answer the question their SHAPE asks:
630
- *
631
- * - **One contiguous block** (and, on a sectioned chart, one section) — dive
632
- * into it, to the depth where its seats are both pickable and numbered.
633
- * Nothing to choose between, so showing it from far away only costs a tap.
634
- * This also closes the dead zone the validator found: a 30-seat band framed
635
- * at ~1.35 has 24px markers and NOT ONE number, the chart's authored 7-unit
636
- * font rendering at 9.5px against a 12px floor — `minScale` re-asks that.
637
- * - **Several blocks** — frame the union so every block is on screen, diving
638
- * into none. Mobile audit finding 6: a phone price chip teleported into a
639
- * close-up of the dominant block, answering "where are the $42 seats?" with
640
- * a handful and no sign there were more. The buyer picks; the tap dives.
641
- *
642
- * `null`/empty keeps the camera exactly where it is: clearing a band removes
643
- * a constraint, and re-fitting the venue threw away the buyer's own zoom.
654
+ * The state the framing rules read rebuilt per call so camera, filter and
655
+ * status changes are always seen fresh. See ./render/focusFraming.
644
656
  */
657
+ private get focusFramingContext();
658
+ /** Take the buyer to a price band's seats — see ./render/focusFraming. */
645
659
  focusCategories(keys: string[] | null, opts?: {
646
660
  animate?: boolean;
647
661
  }): void;
648
- /**
649
- * Frame every seat matching the accessibility filter — ALL of them.
650
- *
651
- * Deliberately NOT {@link focusCategories}. A price band is thousands of
652
- * seats forming blocks, so that path clusters them and, on a phone, dives
653
- * into a seat-detail window showing the dominant block. An accessibility
654
- * filter is a handful of spaces scattered around the venue: the phone
655
- * validator's uber-arena has TWELVE, one or two per tier. Diving into a
656
- * detail window there shows the buyer none of them, and jumping to the seats
657
- * rung — which is what the widget did before this existed — put all twelve
658
- * off-screen in the middle of a 14k arena.
659
- *
660
- * So the rule is the union, always: bounding box of the matching seats plus a
661
- * margin, clamped to the zoom bounds. When that box fits at a scale where the
662
- * seats are already tappable, the buyer lands on tappable seats; when it does
663
- * not, they still SEE all twelve and can zoom into the one they want. Framing
664
- * fewer than all of them is never the answer.
665
- *
666
- * Returns false when there is nothing to frame, so a caller can fall back.
667
- */
662
+ /** The ceiling for a camera move the ENGINE decided to make. */
663
+ private diveCeiling;
664
+ /** Frame every seat matching the accessibility filter — ALL of them. */
668
665
  focusAccessibleSeats(types?: AccessibilityType[] | null): boolean;
666
+ /** Take the camera to the free matching spaces INSIDE one section. */
667
+ focusAccessibleSection(sectionId: string, types?: AccessibilityType[] | null): boolean;
668
+ /** What the filter matched, and how it is spread over the venue. */
669
+ accessibleSpread(types?: AccessibilityType[] | null): AccessibleSpread | null;
669
670
  /**
670
671
  * Switch the projection between flat top-down and the isometric "3D" view
671
672
  * (rotate + y-squash about the chart centre, plus per-elevation lift). Tweens
@@ -853,6 +854,20 @@ declare class SeatmapRenderer implements ISeatmapRenderer {
853
854
  focusSection(id: string, opts?: {
854
855
  anchor?: Point;
855
856
  }): void;
857
+ /**
858
+ * Enter a section's focus state WITHOUT moving the camera.
859
+ *
860
+ * Split out because "which section is the buyer in" and "what is the camera
861
+ * framing" are not always the same answer: a best-available pick frames the
862
+ * SEATS it found, which may be a corner of the section, while the dock bar,
863
+ * the dim and the backdrop still have to belong to the section around them.
864
+ * Returns false for an id this chart has no section for.
865
+ */
866
+ private markSectionFocus;
867
+ /** Frame THESE seats, close enough to take one — see ./render/focusFraming. */
868
+ focusSeats(ids: readonly string[], opts?: {
869
+ animate?: boolean;
870
+ }): boolean;
856
871
  private focusSectionCamera;
857
872
  /**
858
873
  * Release only the focus dim + backdrop, keeping the focused-section state
@@ -939,23 +954,22 @@ declare class SeatmapRenderer implements ISeatmapRenderer {
939
954
  private renderShape;
940
955
  private renderGA;
941
956
  /**
942
- * A section renders in three coordinated layers driven by the LOD melt:
943
- * a faint outline (the existing near-zoom look, untouched),
944
- * a neutral solid shell that fades in at the overview rung, and
945
- * • one readable, contained section name.
946
- * Category, row, seat, and availability detail belongs to section focus/zoom.
947
- * Membership and category mix are still precomputed for the detailed state.
957
+ * Build one section's scene nodes (see ./render/sectionBuild), then register
958
+ * it: seat→section membership, the memoised unsectioned partition it
959
+ * invalidates, its first fill/heat paint, and the section list itself.
948
960
  */
949
961
  private renderSection;
962
+ private get sectionBuildContext();
950
963
  private refreshSectionHeat;
951
964
  private refreshSectionFill;
952
965
  private isSectionClosed;
953
966
  /**
954
967
  * The hue an overview block is tinted with; see ./render/overviewPalette. */
955
968
  private dominantSellableColor;
956
- /**
957
- * Free seats here matching the accessibility filter; see ./render/sectionLod. */
969
+ /** Free matching seats in this section — memoised; see ./render/focusFraming. */
958
970
  private sectionAccessibleFree;
971
+ /** The named sections holding a FREE matching space — see ./render/focusFraming. */
972
+ accessibleSections(types?: AccessibilityType[] | null): AccessibleSectionSummary[];
959
973
  private get sectionLodPaintContext();
960
974
  /** Build the zone pills (name + FROM price) — see render/zoneScene.ts. */
961
975
  private renderZones;
@@ -1084,6 +1098,7 @@ declare class SeatmapRenderer implements ISeatmapRenderer {
1084
1098
  }, opts?: {
1085
1099
  animate?: boolean;
1086
1100
  minScale?: number;
1101
+ maxScale?: number;
1087
1102
  durationMs?: number;
1088
1103
  }): void;
1089
1104
  /**
@@ -1183,16 +1198,6 @@ declare class SeatmapRenderer implements ISeatmapRenderer {
1183
1198
  }
1184
1199
  declare function createRenderer(container: HTMLDivElement, opts?: RendererOptions): ISeatmapRenderer;
1185
1200
 
1186
- /**
1187
- * Automatic row-letter label planning: where each authored row label wants to
1188
- * sit in world space, and how an automatic start/end label steps out of the way
1189
- * of seats and already-painted text.
1190
- *
1191
- * Moved verbatim out of SeatmapRenderer (2026-08-15 refactor, Phase 2B pass B);
1192
- * `this.` became either a `ctx` field or an explicit parameter, and
1193
- * `buildRowLabelPlan` returns the plan instead of assigning `this.rowLabelPlan`.
1194
- */
1195
-
1196
1201
  /**
1197
1202
  * Reduce a globally-unique authored row name to the local identity a buyer
1198
1203
  * needs, given the section that already names itself on screen.
@@ -1217,42 +1222,6 @@ declare function createRenderer(container: HTMLDivElement, opts?: RendererOption
1217
1222
  */
1218
1223
  declare function compactRowLabel(rowLabel: string, sectionLabel: string | undefined): string;
1219
1224
 
1220
- /**
1221
- * The access needs THIS chart actually offers, with live free counts.
1222
- *
1223
- * The accessibility sheet used to render the whole twelve-key taxonomy on
1224
- * every event, so a buyer at a venue with nothing but wheelchair bays was
1225
- * offered "CART live-caption view" and "Sign-language view" — chips that
1226
- * filter to an empty map. Offering a provision that does not exist is worse
1227
- * than a short list: it reads as a venue that has it and has sold out of it.
1228
- *
1229
- * So the list is derived from the seats the chart authored. A key appears
1230
- * because at least one seat carries it — including a key whose seats are all
1231
- * gone, which is shown at zero and disabled rather than dropped, so the
1232
- * difference between "this venue has none" and "this venue's are taken" stays
1233
- * visible.
1234
- *
1235
- * `count` is FREE seats only, and is counted exactly the way
1236
- * `sectionAccessibleFreeCount` counts them (status `free`, then the seat's own
1237
- * accommodation set) — one definition of "available accessible seating" across
1238
- * the overview blocks, the section card and this list.
1239
- */
1240
-
1241
- /** One provision the event offers, and how many of it are still free. */
1242
- interface PickerAccessNeed {
1243
- key: AccessibilityType;
1244
- /** Free seats carrying this accommodation right now. May be 0. */
1245
- count: number;
1246
- }
1247
- /**
1248
- * The provisions on this chart, in the taxonomy's own order.
1249
- *
1250
- * Taxonomy order rather than count order on purpose: the sheet is a stable
1251
- * control, and a list that reshuffles itself as other buyers take seats is one
1252
- * the returning buyer has to re-read every time.
1253
- */
1254
- declare function accessNeedsFor(seats: Iterable<ExpandedSeat>, statusOf: (seatId: string) => string): PickerAccessNeed[];
1255
-
1256
1225
  /**
1257
1226
  * What an availability refresh means for the buyer who is looking at the map.
1258
1227
  *
@@ -1611,8 +1580,20 @@ interface PickerRealtimeSink {
1611
1580
  default: string;
1612
1581
  exceptions: Record<string, string>;
1613
1582
  }): void;
1614
- /** Re-pull authoritative state over HTTP (a frame that cannot be diffed). */
1615
- resync(): void | Promise<void>;
1583
+ /**
1584
+ * Re-pull authoritative state over HTTP (a frame that cannot be diffed).
1585
+ *
1586
+ * `reason: 'connect'` marks the pull a fresh socket makes for parity rather
1587
+ * than because anything said the map is stale. A sink that has just booted
1588
+ * from an authoritative read is entitled to skip that one — the connection
1589
+ * itself is not evidence of a change, and on a real event page the boot read
1590
+ * and the connect read were landing 400ms apart, both of them full snapshots.
1591
+ * Any other reason (an undiffable frame, a resume the server never answered)
1592
+ * is a real "I do not know the state" and is never skipped.
1593
+ */
1594
+ resync(opts?: {
1595
+ reason?: 'connect' | 'frame';
1596
+ }): void | Promise<void>;
1616
1597
  /** Section availability changed (hidden = stripped, closed = greyed). */
1617
1598
  onSections?(hidden: string[], closed: string[]): void;
1618
1599
  /** Scope-projected presence counters. Unused by the picker today. */
@@ -1729,8 +1710,19 @@ interface PickerCallbacks extends RendererCallbacks {
1729
1710
  onHoldExpired?: () => void;
1730
1711
  /** A booking completed with this ref. */
1731
1712
  onBook?: (bookingRef: string) => void;
1732
- /** Any live seat-status change arrived (delta or snapshot) — e.g. to recount "N left". */
1733
- onStatusChange?: () => void;
1713
+ /**
1714
+ * A seat-status batch was painted (delta or snapshot) e.g. to recount "N left".
1715
+ *
1716
+ * `changed` says whether that batch moved anything. A re-stated snapshot —
1717
+ * what a fresh socket, a resume answer or a section rebuild produces — paints
1718
+ * the identical map, and a listener that treats every paint as news does real
1719
+ * work for it: the buyer widget was pulling live offer availability over the
1720
+ * network once per repaint. Absent on an older engine, so read it as
1721
+ * "assume changed" when it is not there.
1722
+ */
1723
+ onStatusChange?: (info?: {
1724
+ changed: boolean;
1725
+ }) => void;
1734
1726
  /**
1735
1727
  * An availability refresh finished — what it changed for THIS buyer.
1736
1728
  *
@@ -1893,6 +1885,62 @@ interface PickerMapTheme {
1893
1885
  selectionColor?: string;
1894
1886
  }
1895
1887
 
1888
+ /**
1889
+ * The buyer picker's FILTER-DRIVEN camera rules.
1890
+ *
1891
+ * Two filters — accessibility and price band — each answer "take me to what I
1892
+ * asked for", and both have to solve the same multi-floor trap first: the
1893
+ * renderer only knows the active floor's seats, so a match on another deck is
1894
+ * a silent no-op unless the floor is switched before the camera is asked to
1895
+ * move. Those decisions moved out of PickerController verbatim behind an
1896
+ * explicit context; they own no state and touch the renderer only through the
1897
+ * interface the controller already used.
1898
+ */
1899
+
1900
+ /** One step of the accessibility section tour — see {@link focusNextAccessibleSection}. */
1901
+ interface AccessibleSectionStep extends AccessibleSectionSummary {
1902
+ /** 0-based position in the tour. */
1903
+ index: number;
1904
+ /** How many sections the tour has. */
1905
+ total: number;
1906
+ }
1907
+
1908
+ /**
1909
+ * The access needs THIS chart actually offers, with live free counts.
1910
+ *
1911
+ * The accessibility sheet used to render the whole twelve-key taxonomy on
1912
+ * every event, so a buyer at a venue with nothing but wheelchair bays was
1913
+ * offered "CART live-caption view" and "Sign-language view" — chips that
1914
+ * filter to an empty map. Offering a provision that does not exist is worse
1915
+ * than a short list: it reads as a venue that has it and has sold out of it.
1916
+ *
1917
+ * So the list is derived from the seats the chart authored. A key appears
1918
+ * because at least one seat carries it — including a key whose seats are all
1919
+ * gone, which is shown at zero and disabled rather than dropped, so the
1920
+ * difference between "this venue has none" and "this venue's are taken" stays
1921
+ * visible.
1922
+ *
1923
+ * `count` is FREE seats only, and is counted exactly the way
1924
+ * `sectionAccessibleFreeCount` counts them (status `free`, then the seat's own
1925
+ * accommodation set) — one definition of "available accessible seating" across
1926
+ * the overview blocks, the section card and this list.
1927
+ */
1928
+
1929
+ /** One provision the event offers, and how many of it are still free. */
1930
+ interface PickerAccessNeed {
1931
+ key: AccessibilityType;
1932
+ /** Free seats carrying this accommodation right now. May be 0. */
1933
+ count: number;
1934
+ }
1935
+ /**
1936
+ * The provisions on this chart, in the taxonomy's own order.
1937
+ *
1938
+ * Taxonomy order rather than count order on purpose: the sheet is a stable
1939
+ * control, and a list that reshuffles itself as other buyers take seats is one
1940
+ * the returning buyer has to re-read every time.
1941
+ */
1942
+ declare function accessNeedsFor(seats: Iterable<ExpandedSeat>, statusOf: (seatId: string) => string): PickerAccessNeed[];
1943
+
1896
1944
  declare class PickerController {
1897
1945
  private readonly opts;
1898
1946
  private readonly api;
@@ -1936,6 +1984,8 @@ declare class PickerController {
1936
1984
  private confirmedVariableTables;
1937
1985
  private groupedSelectionOverhead;
1938
1986
  private ws;
1987
+ /** Standby snapshot pull for a socket that connected and then said nothing. */
1988
+ private connectFallback;
1939
1989
  /** Transport-owned v1 client; mutually exclusive with `ws`. */
1940
1990
  private realtime;
1941
1991
  private reconnectTimer;
@@ -2227,41 +2277,21 @@ declare class PickerController {
2227
2277
  setAccessibilityFilter(types: string[] | null): void;
2228
2278
  /** The buyer's active accessibility filter, or null. */
2229
2279
  getAccessibilityFilter(): AccessibilityType[] | null;
2280
+ /** Where {@link focusNextAccessibleSection} last stopped. */
2281
+ private accessStepAt;
2230
2282
  /**
2231
- * Take the buyer to the seats their accessibility filter matched.
2232
- *
2233
- * The mirror of {@link focusCategoryFilter}, and deliberately a different
2234
- * camera rule (see the renderer's `focusAccessibleSeats`). Switching the
2235
- * filter on used to jump to the seats rung, which on the validator's
2236
- * uber-arena — twelve wheelchair spaces spread over a 14k-seat venue — put
2237
- * every single match off-screen: the buyer asked "where can I sit?" and got
2238
- * a close-up of a block with no accessible seats in it.
2239
- *
2240
- * Frames the union of the matches instead, so all twelve are on screen. No-op
2241
- * when the filter is off or matched nothing; returns whether it moved, so a
2242
- * host can keep its old behaviour as a fallback.
2283
+ * The state the filter-driven camera rules read and change see
2284
+ * ./pickerFocus. Rebuilt per call; the accessor pair keeps the controller
2285
+ * the owner of the filter and of the section-tour cursor.
2243
2286
  */
2287
+ private get pickerFocusContext();
2288
+ /** Take the buyer to the seats their accessibility filter matched. */
2244
2289
  focusAccessibilityFilter(types?: AccessibilityType[] | null): boolean;
2245
- /**
2246
- * The floor a buyer means when filtering for accessibility: the active floor
2247
- * when it carries a matching seat, else the first floor that does (null =
2248
- * stay put). Row overrides count — accessibility is authored per seat.
2249
- */
2250
- private floorForAccessibility;
2251
- /**
2252
- * Does the active accessibility filter RECEDE this seat?
2253
- *
2254
- * The 2D map answers this with Konva opacity, which the GL view never sees —
2255
- * so a buyer who filtered for wheelchair spaces and then switched to 3D got
2256
- * the unfiltered venue back, every zone in normal colour, with no sign the
2257
- * filter was still on. The widget's 3D snapshot builder already asks the same
2258
- * question of the price band and the limited-view toggle; this is the third,
2259
- * and it is answered HERE rather than in the widget so the rule cannot drift
2260
- * from the one the canvas paints (renderer `hiddenByAccessFilter`).
2261
- *
2262
- * Presentation only, exactly as in 2D: a dimmed seat is not an unselectable
2263
- * one.
2264
- */
2290
+ /** What the accessibility filter matched, and how it is spread. */
2291
+ accessibilitySpread(types?: AccessibilityType[] | null): AccessibleSpread | null;
2292
+ /** Step to the next section holding a free matching space. */
2293
+ focusNextAccessibleSection(types?: AccessibilityType[] | null): AccessibleSectionStep | null;
2294
+ /** Does the active accessibility filter RECEDE this seat? See ./pickerFocus. */
2265
2295
  accessibilityFilterDims(seat: ExpandedSeat): boolean;
2266
2296
  /**
2267
2297
  * "Hide limited-view seats" toggle — dims free seats flagged
@@ -2304,15 +2334,8 @@ declare class PickerController {
2304
2334
  /** Price-band filter (F4): dim free seats whose category is outside `keys`
2305
2335
  * (null clears). The widget resolves which categories fall in the band. */
2306
2336
  setCategoryFilter(keys: string[] | null): void;
2307
- /** An explicit buyer price-filter action should not only dim the rest of the
2308
- * chart: clear any older section drill-in and guide the camera to the seats
2309
- * that remain relevant. Clearing the filter glides back to the full chart. */
2337
+ /** Guide the camera to the seats a price band left see ./pickerFocus. */
2310
2338
  focusCategoryFilter(keys: string[] | null): void;
2311
- /** The floor a buyer means when filtering to `keys`: the active floor when it
2312
- * carries any of those categories, else the first floor that does (null =
2313
- * stay put). Row overrides and GA areas count — a category can exist on a
2314
- * floor only via a per-seat override. */
2315
- private floorForCategories;
2316
2339
  /** World-space rect currently visible + full chart bounds (F3 minimap frame). */
2317
2340
  getViewport(): {
2318
2341
  visible: {
@@ -2343,6 +2366,19 @@ declare class PickerController {
2343
2366
  x: number;
2344
2367
  y: number;
2345
2368
  }): void;
2369
+ /**
2370
+ * Take the camera to seats the ENGINE picked, and name the section they are in.
2371
+ *
2372
+ * Best-available's arrival used to frame the section of the first seat found,
2373
+ * which on a large stand showed the buyer everything except which seats they
2374
+ * had been given. The renderer frames the seats themselves; the summary
2375
+ * emitted here is what renames the dock bar, so the two halves of "you are
2376
+ * here" still agree. False when the renderer could not frame them — the
2377
+ * caller falls back to the section.
2378
+ */
2379
+ focusSeats(ids: readonly string[], opts?: {
2380
+ animate?: boolean;
2381
+ }): boolean;
2346
2382
  /** Live seat membership count used by buyer section-navigation controls. */
2347
2383
  getSectionSeatCount(id: string): number;
2348
2384
  /** Zoom back out to the whole chart and clear the section-summary card + focus. */
@@ -2357,6 +2393,7 @@ declare class PickerController {
2357
2393
  * object owns beyond four values, and this file is at its size cap.
2358
2394
  */
2359
2395
  private sectionSummary;
2396
+ private clearConnectFallback;
2360
2397
  destroy(): void;
2361
2398
  private toSeat;
2362
2399
  private toTableSeat;
@@ -2410,6 +2447,17 @@ declare class PickerController {
2410
2447
  * a parameter rather than a constant.
2411
2448
  */
2412
2449
  private applySeatsMap;
2450
+ /**
2451
+ * When an authoritative map was last painted, and whether one is recent.
2452
+ *
2453
+ * A socket opening is not news. The boot read and the connect read were
2454
+ * landing within half a second of each other on a real event page — two full
2455
+ * snapshots of the same venue, the second answering a question nobody asked.
2456
+ * Five seconds is comfortably longer than a boot takes and far shorter than
2457
+ * any window in which a silent server could leave the map wrong.
2458
+ */
2459
+ private lastSnapshotAt;
2460
+ private snapshotIsFresh;
2413
2461
  /** The live status of one unit, honouring the projection's default. */
2414
2462
  private statusOf;
2415
2463
  private clearBookedHoldIfSettled;
@@ -2459,6 +2507,8 @@ declare class PickerController {
2459
2507
  * callbacks in the same order whichever path is live.
2460
2508
  */
2461
2509
  private realtimeSink;
2510
+ /** Does this authoritative map say anything the last one did not? */
2511
+ private seatsMapDiffers;
2462
2512
  /** Paint one delta batch. Shared by the v1 sink and the plain-socket handler. */
2463
2513
  private applyStatusChanges;
2464
2514
  private connect;
@@ -2739,4 +2789,4 @@ declare function formatMinor(minor: number, currency?: string, locale?: string):
2739
2789
  /** Bare symbol for input adornments ("€", "$", "₹"). */
2740
2790
  declare function currencySymbol(currency?: string): string;
2741
2791
 
2742
- export { AccessibilityType, type AvailabilityRefreshInput, type AvailabilityRefreshOutcome, CURRENCY_CHOICES, CategoryTier, ChartDeliveryPerformance, ChartDoc, DEFAULT_CURRENCY, type Dict, type Direction, EMPTY_AVAILABILITY_REFRESH, EventConfigurationRef, EventConfigurationVersion, ExpandedSeat, FloorLabelStyle, GAAreaState, HOLD_CLOCK_SKEW_MS, type HoldConflict, type HoldInfo, type HoldRecoveryShape, type HoldSelectionRequest, type HoldServerItem, ISeatmapRenderer, LABEL_FADE_MS, LEGIBILITY_HYSTERESIS_PX, LOCALE_NAMES, type Locale, LodRung, type MoneyFormatOptions, type PanoramaResult, type PickerAccessNeed, type PickerCallbacks, PickerController, type PickerGAArea, type PickerMapTheme, type PickerOptions, type PickerRealtimeConnection, type PickerRealtimeSink, type PickerRenderPerformanceProfile, type PickerSeat, PickerSelectionError, type PickerSelectionValidator, type PickerSelectionValidity, type PickerSelectionViolation, type PickerStatusChange, type PickerTransport, Point, RendererCallbacks, RendererMinimapSnapshot, RendererOptions, RendererQualityEvidence, RendererViewMode, SUPPORTED_LOCALES, SeatCommercialAttributes, type SeatHoverDetails, SeatMark, SeatStatus, SeatmapRenderer, type SectionCategory, type SectionSummary, TRANSLATED_LOCALES, type TableSelectionDetails, accessNeedsFor, attachVisibilityCatchUp, compactRowLabel, createRenderer, crossesThreshold, currencyExponent, currencySymbol, formatDate, formatMinor, formatMoney, fromMinorUnits, generateSeatPanorama, generateSeatThumb, getLocale, holdHasLapsed, holdRecoveryShape, hysteresisScale, isLocaleLoaded, loadLocale, localeDirection, reconcileAvailability, refreshChangedSomething, renderedPx, resolveLocale, setLocale, setMoneyLocale, setStringOverrides, shouldWaitForHoldExpiry, t, tCount, zoomTowardPoint };
2792
+ export { AccessibilityType, type AccessibleSectionStep, type AccessibleSectionSummary, type AccessibleSpread, type AvailabilityRefreshInput, type AvailabilityRefreshOutcome, CURRENCY_CHOICES, CategoryTier, ChartDeliveryPerformance, ChartDoc, DEFAULT_CURRENCY, type Dict, type Direction, EMPTY_AVAILABILITY_REFRESH, EventConfigurationRef, EventConfigurationVersion, ExpandedSeat, FloorLabelStyle, GAAreaState, HOLD_CLOCK_SKEW_MS, type HoldConflict, type HoldInfo, type HoldRecoveryShape, type HoldSelectionRequest, type HoldServerItem, ISeatmapRenderer, LABEL_FADE_MS, LEGIBILITY_HYSTERESIS_PX, LOCALE_NAMES, type Locale, LodRung, type MoneyFormatOptions, type PanoramaResult, type PickerAccessNeed, type PickerCallbacks, PickerController, type PickerGAArea, type PickerMapTheme, type PickerOptions, type PickerRealtimeConnection, type PickerRealtimeSink, type PickerRenderPerformanceProfile, type PickerSeat, PickerSelectionError, type PickerSelectionValidator, type PickerSelectionValidity, type PickerSelectionViolation, type PickerStatusChange, type PickerTransport, Point, RendererCallbacks, RendererMinimapSnapshot, RendererOptions, RendererQualityEvidence, RendererViewMode, SUPPORTED_LOCALES, SeatCommercialAttributes, type SeatHoverDetails, SeatMark, SeatStatus, SeatmapRenderer, type SectionCategory, type SectionSummary, TRANSLATED_LOCALES, type TableSelectionDetails, accessNeedsFor, attachVisibilityCatchUp, compactRowLabel, createRenderer, crossesThreshold, currencyExponent, currencySymbol, formatDate, formatMinor, formatMoney, fromMinorUnits, generateSeatPanorama, generateSeatThumb, getLocale, holdHasLapsed, holdRecoveryShape, hysteresisScale, isLocaleLoaded, loadLocale, localeDirection, reconcileAvailability, refreshChangedSomething, renderedPx, resolveLocale, setLocale, setMoneyLocale, setStringOverrides, shouldWaitForHoldExpiry, t, tCount, zoomTowardPoint };