@seatlayer/core 0.75.2 → 0.77.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 (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 +226 -133
  41. package/dist/index.d.ts +226 -133
  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;
@@ -100,6 +125,13 @@ declare class SeatmapRenderer implements ISeatmapRenderer {
100
125
  private seatLayer;
101
126
  private overlayLayer;
102
127
  private labelGroup;
128
+ /** Row letters live in their own child of {@link labelGroup}: they are
129
+ * rebuilt every settle, while the seat numbers beside them are reused. */
130
+ private rowLabelGroup;
131
+ /** Live seat-number / status-cue nodes, kept across settles — see
132
+ * render/viewportLabels `seatLabelPool`. */
133
+ private seatLabelPool;
134
+ private statusCuePool;
103
135
  /** Per-elevated-section label containers. Keeping the labels grouped lets the
104
136
  * Phase-B lift move thousands of seat labels with one transform per section
105
137
  * instead of rewriting every label on every tween frame. */
@@ -183,6 +215,11 @@ declare class SeatmapRenderer implements ISeatmapRenderer {
183
215
  private seatMarks;
184
216
  /** One selected seat being inspected before it is committed to the cart. */
185
217
  private selectionFocusId;
218
+ /** Seats that keep full ink while the confirm card is open — see
219
+ * render/selectionNeighbourhood. Null whenever there is no focus. */
220
+ private selectionFocusKeep;
221
+ /** The camera as it stood when the host hid the map — see render/hostResize. */
222
+ private hiddenPose;
186
223
  private hoverRing;
187
224
  /** Seat currently owning the shared hover ring (null while not hovering). */
188
225
  private hoveredId;
@@ -194,6 +231,8 @@ declare class SeatmapRenderer implements ISeatmapRenderer {
194
231
  * a type list = dim free seats lacking any of those accommodations.
195
232
  */
196
233
  private accessFilter;
234
+ /** Memoised free-matching-space counts, keyed by SectionRender id. */
235
+ private readonly accessFreeBySection;
197
236
  /** Category highlight (legend hover): dims free seats NOT of this category. */
198
237
  private categoryHighlight;
199
238
  /** Price-band filter (F4): dim free seats whose category is NOT in this set. */
@@ -297,6 +336,8 @@ declare class SeatmapRenderer implements ISeatmapRenderer {
297
336
  * half the chart's seat pitch. Depth/ceiling maths read this, never seatR:
298
337
  * a traced plan leaves the radius at its default and packs the seats. */
299
338
  private markerR;
339
+ /** Median in-row seat spacing, world units — the section-less neighbourhood's unit. */
340
+ private seatPitch;
300
341
  private bounds;
301
342
  private cached;
302
343
  private dpr;
@@ -609,31 +650,23 @@ declare class SeatmapRenderer implements ISeatmapRenderer {
609
650
  /** Host-pushed GA availability / pending quantity — see {@link paintGAState}. */
610
651
  setGAStates(states: Record<string, GAAreaState>): void;
611
652
  setGAState(areaId: string, state: GAAreaState): void;
612
- /** Frame available inventory; narrow maps enter usable seat detail. */
653
+ /**
654
+ * The state the framing rules read — rebuilt per call so camera, filter and
655
+ * status changes are always seen fresh. See ./render/focusFraming.
656
+ */
657
+ private get focusFramingContext();
658
+ /** Take the buyer to a price band's seats — see ./render/focusFraming. */
613
659
  focusCategories(keys: string[] | null, opts?: {
614
660
  animate?: boolean;
615
661
  }): void;
616
- /**
617
- * Frame every seat matching the accessibility filter — ALL of them.
618
- *
619
- * Deliberately NOT {@link focusCategories}. A price band is thousands of
620
- * seats forming blocks, so that path clusters them and, on a phone, dives
621
- * into a seat-detail window showing the dominant block. An accessibility
622
- * filter is a handful of spaces scattered around the venue: the phone
623
- * validator's uber-arena has TWELVE, one or two per tier. Diving into a
624
- * detail window there shows the buyer none of them, and jumping to the seats
625
- * rung — which is what the widget did before this existed — put all twelve
626
- * off-screen in the middle of a 14k arena.
627
- *
628
- * So the rule is the union, always: bounding box of the matching seats plus a
629
- * margin, clamped to the zoom bounds. When that box fits at a scale where the
630
- * seats are already tappable, the buyer lands on tappable seats; when it does
631
- * not, they still SEE all twelve and can zoom into the one they want. Framing
632
- * fewer than all of them is never the answer.
633
- *
634
- * Returns false when there is nothing to frame, so a caller can fall back.
635
- */
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. */
636
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;
637
670
  /**
638
671
  * Switch the projection between flat top-down and the isometric "3D" view
639
672
  * (rotate + y-squash about the chart centre, plus per-elevation lift). Tweens
@@ -727,6 +760,10 @@ declare class SeatmapRenderer implements ISeatmapRenderer {
727
760
  * Grand Circle and its seats lost their numbers (owner report 2026-08-27),
728
761
  * at a zoom where they were fully bright on screen.
729
762
  */
763
+ /** Is the confirm-card focus receding THIS seat? False with no focus, false
764
+ * for the candidate, and false for its neighbourhood — see
765
+ * render/selectionNeighbourhood for how the neighbourhood is drawn. */
766
+ private selectionFocusDims;
730
767
  private focusedSeatOpacity;
731
768
  private sectionScreenBounds;
732
769
  /** Hide only section groups wholly outside a padded viewport at the live-seat
@@ -817,6 +854,20 @@ declare class SeatmapRenderer implements ISeatmapRenderer {
817
854
  focusSection(id: string, opts?: {
818
855
  anchor?: Point;
819
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;
820
871
  private focusSectionCamera;
821
872
  /**
822
873
  * Release only the focus dim + backdrop, keeping the focused-section state
@@ -903,23 +954,22 @@ declare class SeatmapRenderer implements ISeatmapRenderer {
903
954
  private renderShape;
904
955
  private renderGA;
905
956
  /**
906
- * A section renders in three coordinated layers driven by the LOD melt:
907
- * a faint outline (the existing near-zoom look, untouched),
908
- * a neutral solid shell that fades in at the overview rung, and
909
- * • one readable, contained section name.
910
- * Category, row, seat, and availability detail belongs to section focus/zoom.
911
- * 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.
912
960
  */
913
961
  private renderSection;
962
+ private get sectionBuildContext();
914
963
  private refreshSectionHeat;
915
964
  private refreshSectionFill;
916
965
  private isSectionClosed;
917
966
  /**
918
967
  * The hue an overview block is tinted with; see ./render/overviewPalette. */
919
968
  private dominantSellableColor;
920
- /**
921
- * Free seats here matching the accessibility filter; see ./render/sectionLod. */
969
+ /** Free matching seats in this section — memoised; see ./render/focusFraming. */
922
970
  private sectionAccessibleFree;
971
+ /** The named sections holding a FREE matching space — see ./render/focusFraming. */
972
+ accessibleSections(types?: AccessibilityType[] | null): AccessibleSectionSummary[];
923
973
  private get sectionLodPaintContext();
924
974
  /** Build the zone pills (name + FROM price) — see render/zoneScene.ts. */
925
975
  private renderZones;
@@ -937,6 +987,8 @@ declare class SeatmapRenderer implements ISeatmapRenderer {
937
987
  /** Seat ids belonging to a section (Slice 5 section-summary card). */
938
988
  sectionMembers(id: string): string[];
939
989
  private isSelectable;
990
+ /** One question for the one excluded treatment — see render/filterExclusion. */
991
+ private filterExcludesSeat;
940
992
  /**
941
993
  * Is this seat out of the sale purely because the accessibility filter is on?
942
994
  *
@@ -1046,6 +1098,7 @@ declare class SeatmapRenderer implements ISeatmapRenderer {
1046
1098
  }, opts?: {
1047
1099
  animate?: boolean;
1048
1100
  minScale?: number;
1101
+ maxScale?: number;
1049
1102
  durationMs?: number;
1050
1103
  }): void;
1051
1104
  /**
@@ -1077,8 +1130,12 @@ declare class SeatmapRenderer implements ISeatmapRenderer {
1077
1130
  * settled state. Without it a backdrop tap (clearSectionFocus + zoomToFit)
1078
1131
  * left the widget's deep state on the pre-settle reading — the map back at
1079
1132
  * the overview, the chrome still saying the buyer was inside a section.
1133
+ *
1134
+ * Public because a HOST rebuild owes one too: `setChart` empties the label
1135
+ * and status-cue pools, and restoring an identical camera pose after it runs
1136
+ * no pass of its own. See PickerController.rebuildPreservingState.
1080
1137
  */
1081
- private settleView;
1138
+ settleView(): void;
1082
1139
  /** Once the buyer is roaming, the locator names what is ON SCREEN rather than
1083
1140
  * what they tapped — WITHOUT moving the camera. Retargeting is a
1084
1141
  * relabelling; a glide here would fight the pan that caused it. */
@@ -1136,20 +1193,11 @@ declare class SeatmapRenderer implements ISeatmapRenderer {
1136
1193
  private objectFilteredOut;
1137
1194
  private updateLabels;
1138
1195
  private get viewportLabelContext();
1196
+ /** See render/hostResize for the rule; this is the part that touches state. */
1139
1197
  private handleResize;
1140
1198
  }
1141
1199
  declare function createRenderer(container: HTMLDivElement, opts?: RendererOptions): ISeatmapRenderer;
1142
1200
 
1143
- /**
1144
- * Automatic row-letter label planning: where each authored row label wants to
1145
- * sit in world space, and how an automatic start/end label steps out of the way
1146
- * of seats and already-painted text.
1147
- *
1148
- * Moved verbatim out of SeatmapRenderer (2026-08-15 refactor, Phase 2B pass B);
1149
- * `this.` became either a `ctx` field or an explicit parameter, and
1150
- * `buildRowLabelPlan` returns the plan instead of assigning `this.rowLabelPlan`.
1151
- */
1152
-
1153
1201
  /**
1154
1202
  * Reduce a globally-unique authored row name to the local identity a buyer
1155
1203
  * needs, given the section that already names itself on screen.
@@ -1174,42 +1222,6 @@ declare function createRenderer(container: HTMLDivElement, opts?: RendererOption
1174
1222
  */
1175
1223
  declare function compactRowLabel(rowLabel: string, sectionLabel: string | undefined): string;
1176
1224
 
1177
- /**
1178
- * The access needs THIS chart actually offers, with live free counts.
1179
- *
1180
- * The accessibility sheet used to render the whole twelve-key taxonomy on
1181
- * every event, so a buyer at a venue with nothing but wheelchair bays was
1182
- * offered "CART live-caption view" and "Sign-language view" — chips that
1183
- * filter to an empty map. Offering a provision that does not exist is worse
1184
- * than a short list: it reads as a venue that has it and has sold out of it.
1185
- *
1186
- * So the list is derived from the seats the chart authored. A key appears
1187
- * because at least one seat carries it — including a key whose seats are all
1188
- * gone, which is shown at zero and disabled rather than dropped, so the
1189
- * difference between "this venue has none" and "this venue's are taken" stays
1190
- * visible.
1191
- *
1192
- * `count` is FREE seats only, and is counted exactly the way
1193
- * `sectionAccessibleFreeCount` counts them (status `free`, then the seat's own
1194
- * accommodation set) — one definition of "available accessible seating" across
1195
- * the overview blocks, the section card and this list.
1196
- */
1197
-
1198
- /** One provision the event offers, and how many of it are still free. */
1199
- interface PickerAccessNeed {
1200
- key: AccessibilityType;
1201
- /** Free seats carrying this accommodation right now. May be 0. */
1202
- count: number;
1203
- }
1204
- /**
1205
- * The provisions on this chart, in the taxonomy's own order.
1206
- *
1207
- * Taxonomy order rather than count order on purpose: the sheet is a stable
1208
- * control, and a list that reshuffles itself as other buyers take seats is one
1209
- * the returning buyer has to re-read every time.
1210
- */
1211
- declare function accessNeedsFor(seats: Iterable<ExpandedSeat>, statusOf: (seatId: string) => string): PickerAccessNeed[];
1212
-
1213
1225
  /**
1214
1226
  * What an availability refresh means for the buyer who is looking at the map.
1215
1227
  *
@@ -1568,8 +1580,20 @@ interface PickerRealtimeSink {
1568
1580
  default: string;
1569
1581
  exceptions: Record<string, string>;
1570
1582
  }): void;
1571
- /** Re-pull authoritative state over HTTP (a frame that cannot be diffed). */
1572
- 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>;
1573
1597
  /** Section availability changed (hidden = stripped, closed = greyed). */
1574
1598
  onSections?(hidden: string[], closed: string[]): void;
1575
1599
  /** Scope-projected presence counters. Unused by the picker today. */
@@ -1686,8 +1710,19 @@ interface PickerCallbacks extends RendererCallbacks {
1686
1710
  onHoldExpired?: () => void;
1687
1711
  /** A booking completed with this ref. */
1688
1712
  onBook?: (bookingRef: string) => void;
1689
- /** Any live seat-status change arrived (delta or snapshot) — e.g. to recount "N left". */
1690
- 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;
1691
1726
  /**
1692
1727
  * An availability refresh finished — what it changed for THIS buyer.
1693
1728
  *
@@ -1850,6 +1885,62 @@ interface PickerMapTheme {
1850
1885
  selectionColor?: string;
1851
1886
  }
1852
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
+
1853
1944
  declare class PickerController {
1854
1945
  private readonly opts;
1855
1946
  private readonly api;
@@ -1893,6 +1984,8 @@ declare class PickerController {
1893
1984
  private confirmedVariableTables;
1894
1985
  private groupedSelectionOverhead;
1895
1986
  private ws;
1987
+ /** Standby snapshot pull for a socket that connected and then said nothing. */
1988
+ private connectFallback;
1896
1989
  /** Transport-owned v1 client; mutually exclusive with `ws`. */
1897
1990
  private realtime;
1898
1991
  private reconnectTimer;
@@ -2184,41 +2277,21 @@ declare class PickerController {
2184
2277
  setAccessibilityFilter(types: string[] | null): void;
2185
2278
  /** The buyer's active accessibility filter, or null. */
2186
2279
  getAccessibilityFilter(): AccessibilityType[] | null;
2280
+ /** Where {@link focusNextAccessibleSection} last stopped. */
2281
+ private accessStepAt;
2187
2282
  /**
2188
- * Take the buyer to the seats their accessibility filter matched.
2189
- *
2190
- * The mirror of {@link focusCategoryFilter}, and deliberately a different
2191
- * camera rule (see the renderer's `focusAccessibleSeats`). Switching the
2192
- * filter on used to jump to the seats rung, which on the validator's
2193
- * uber-arena — twelve wheelchair spaces spread over a 14k-seat venue — put
2194
- * every single match off-screen: the buyer asked "where can I sit?" and got
2195
- * a close-up of a block with no accessible seats in it.
2196
- *
2197
- * Frames the union of the matches instead, so all twelve are on screen. No-op
2198
- * when the filter is off or matched nothing; returns whether it moved, so a
2199
- * 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.
2200
2286
  */
2287
+ private get pickerFocusContext();
2288
+ /** Take the buyer to the seats their accessibility filter matched. */
2201
2289
  focusAccessibilityFilter(types?: AccessibilityType[] | null): boolean;
2202
- /**
2203
- * The floor a buyer means when filtering for accessibility: the active floor
2204
- * when it carries a matching seat, else the first floor that does (null =
2205
- * stay put). Row overrides count — accessibility is authored per seat.
2206
- */
2207
- private floorForAccessibility;
2208
- /**
2209
- * Does the active accessibility filter RECEDE this seat?
2210
- *
2211
- * The 2D map answers this with Konva opacity, which the GL view never sees —
2212
- * so a buyer who filtered for wheelchair spaces and then switched to 3D got
2213
- * the unfiltered venue back, every zone in normal colour, with no sign the
2214
- * filter was still on. The widget's 3D snapshot builder already asks the same
2215
- * question of the price band and the limited-view toggle; this is the third,
2216
- * and it is answered HERE rather than in the widget so the rule cannot drift
2217
- * from the one the canvas paints (renderer `hiddenByAccessFilter`).
2218
- *
2219
- * Presentation only, exactly as in 2D: a dimmed seat is not an unselectable
2220
- * one.
2221
- */
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. */
2222
2295
  accessibilityFilterDims(seat: ExpandedSeat): boolean;
2223
2296
  /**
2224
2297
  * "Hide limited-view seats" toggle — dims free seats flagged
@@ -2261,15 +2334,8 @@ declare class PickerController {
2261
2334
  /** Price-band filter (F4): dim free seats whose category is outside `keys`
2262
2335
  * (null clears). The widget resolves which categories fall in the band. */
2263
2336
  setCategoryFilter(keys: string[] | null): void;
2264
- /** An explicit buyer price-filter action should not only dim the rest of the
2265
- * chart: clear any older section drill-in and guide the camera to the seats
2266
- * 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. */
2267
2338
  focusCategoryFilter(keys: string[] | null): void;
2268
- /** The floor a buyer means when filtering to `keys`: the active floor when it
2269
- * carries any of those categories, else the first floor that does (null =
2270
- * stay put). Row overrides and GA areas count — a category can exist on a
2271
- * floor only via a per-seat override. */
2272
- private floorForCategories;
2273
2339
  /** World-space rect currently visible + full chart bounds (F3 minimap frame). */
2274
2340
  getViewport(): {
2275
2341
  visible: {
@@ -2300,6 +2366,19 @@ declare class PickerController {
2300
2366
  x: number;
2301
2367
  y: number;
2302
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;
2303
2382
  /** Live seat membership count used by buyer section-navigation controls. */
2304
2383
  getSectionSeatCount(id: string): number;
2305
2384
  /** Zoom back out to the whole chart and clear the section-summary card + focus. */
@@ -2314,6 +2393,7 @@ declare class PickerController {
2314
2393
  * object owns beyond four values, and this file is at its size cap.
2315
2394
  */
2316
2395
  private sectionSummary;
2396
+ private clearConnectFallback;
2317
2397
  destroy(): void;
2318
2398
  private toSeat;
2319
2399
  private toTableSeat;
@@ -2367,6 +2447,17 @@ declare class PickerController {
2367
2447
  * a parameter rather than a constant.
2368
2448
  */
2369
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;
2370
2461
  /** The live status of one unit, honouring the projection's default. */
2371
2462
  private statusOf;
2372
2463
  private clearBookedHoldIfSettled;
@@ -2416,6 +2507,8 @@ declare class PickerController {
2416
2507
  * callbacks in the same order whichever path is live.
2417
2508
  */
2418
2509
  private realtimeSink;
2510
+ /** Does this authoritative map say anything the last one did not? */
2511
+ private seatsMapDiffers;
2419
2512
  /** Paint one delta batch. Shared by the v1 sink and the plain-socket handler. */
2420
2513
  private applyStatusChanges;
2421
2514
  private connect;
@@ -2696,4 +2789,4 @@ declare function formatMinor(minor: number, currency?: string, locale?: string):
2696
2789
  /** Bare symbol for input adornments ("€", "$", "₹"). */
2697
2790
  declare function currencySymbol(currency?: string): string;
2698
2791
 
2699
- 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 };