@seatlayer/core 0.77.2 → 0.78.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 (100) hide show
  1. package/dist/ar-U7RQGDKI.js +1 -0
  2. package/dist/be-AF2KLUPU.js +1 -0
  3. package/dist/bg-KQXVZFP5.js +1 -0
  4. package/dist/ca-2Z6OXARI.js +1 -0
  5. package/dist/{chunk-BXU5D2Q5.js → chunk-SSBMTFAV.js} +1 -1
  6. package/dist/core/inventory/index.d.cts +2 -2
  7. package/dist/core/inventory/index.d.ts +2 -2
  8. package/dist/core/layout/index.d.cts +2 -2
  9. package/dist/core/layout/index.d.ts +2 -2
  10. package/dist/core/quality/index.cjs +1 -1
  11. package/dist/core/quality/index.d.cts +2 -2
  12. package/dist/core/quality/index.d.ts +2 -2
  13. package/dist/core/quality/index.js +1 -1
  14. package/dist/core/sections/index.d.cts +1 -1
  15. package/dist/core/sections/index.d.ts +1 -1
  16. package/dist/cs-OA5PNXZF.js +1 -0
  17. package/dist/cy-SEZB6CFS.js +1 -0
  18. package/dist/da-WNYFNHJW.js +1 -0
  19. package/dist/de-GZ5KABWX.js +1 -0
  20. package/dist/el-ROWVMGFA.js +1 -0
  21. package/dist/es-WDEEXPGZ.js +1 -0
  22. package/dist/et-UZ6PWBEI.js +1 -0
  23. package/dist/fa-6RECOCDS.js +1 -0
  24. package/dist/fi-W2NFGTLE.js +1 -0
  25. package/dist/fr-TGQU57AA.js +1 -0
  26. package/dist/he-GW4WHBMC.js +1 -0
  27. package/dist/hr-XYCPPQ2E.js +1 -0
  28. package/dist/hu-MXARVYEB.js +1 -0
  29. package/dist/index.cjs +1 -1
  30. package/dist/index.d.cts +100 -6
  31. package/dist/index.d.ts +100 -6
  32. package/dist/index.js +1 -1
  33. package/dist/it-AEJ2XXPK.js +1 -0
  34. package/dist/ja-GEZL7WIS.js +1 -0
  35. package/dist/ku-X2WS563F.js +1 -0
  36. package/dist/localeLoaders-YAOADFDS.js +1 -0
  37. package/dist/lt-O6WX2MFZ.js +1 -0
  38. package/dist/lv-JQH24NH4.js +1 -0
  39. package/dist/nl-OYNNCIHM.js +1 -0
  40. package/dist/no-TJCQIIDH.js +1 -0
  41. package/dist/pl-WWCEGFPX.js +1 -0
  42. package/dist/pt-FWBIZXLG.js +1 -0
  43. package/dist/{renderedQuality-DN8SFFjk.d.ts → renderedQuality-CXWlCsRS.d.ts} +1 -1
  44. package/dist/{renderedQuality-CRLkEGf8.d.cts → renderedQuality-rc4xZnIy.d.cts} +1 -1
  45. package/dist/{renderer-ByLmyQe_.d.ts → renderer-Cqd5w55S.d.ts} +26 -1
  46. package/dist/{renderer-B6kkgOHz.d.cts → renderer-DW7ejcxk.d.cts} +26 -1
  47. package/dist/ro-RHGJMFQQ.js +1 -0
  48. package/dist/ru-6IAWMJIM.js +1 -0
  49. package/dist/sk-2NHU34X2.js +1 -0
  50. package/dist/sl-O2QSGQWN.js +1 -0
  51. package/dist/sr-XK7AKCDR.js +1 -0
  52. package/dist/sv-IPA5ZBAA.js +1 -0
  53. package/dist/{tableSizing-DKygWd7z.d.cts → tableSizing-OzEvBirS.d.cts} +1 -1
  54. package/dist/{tableSizing-B0JegL6B.d.ts → tableSizing-uVEPXCUD.d.ts} +1 -1
  55. package/dist/{ticketRestrictions-Bp7ET0j4.d.ts → ticketRestrictions-BH430to6.d.ts} +1 -1
  56. package/dist/{ticketRestrictions-CvGDnGS8.d.cts → ticketRestrictions-CGD-l3if.d.cts} +1 -1
  57. package/dist/tr-TM3T5KYL.js +1 -0
  58. package/dist/uk-37NGTGA6.js +1 -0
  59. package/dist/view3d/index.d.cts +1 -1
  60. package/dist/view3d/index.d.ts +1 -1
  61. package/dist/zh-Hans-QKYGPQQE.js +1 -0
  62. package/dist/zh-Hant-AUEE5P67.js +1 -0
  63. package/package.json +1 -1
  64. package/dist/ar-ESLFQEY3.js +0 -1
  65. package/dist/be-7WI4WG2B.js +0 -1
  66. package/dist/bg-KKEOOUYL.js +0 -1
  67. package/dist/ca-L36KKI76.js +0 -1
  68. package/dist/cs-2IEWVOHA.js +0 -1
  69. package/dist/cy-A5YBQD5Q.js +0 -1
  70. package/dist/da-IDXUY3QI.js +0 -1
  71. package/dist/de-L5PFY4CY.js +0 -1
  72. package/dist/el-4DPNHJGB.js +0 -1
  73. package/dist/es-IMADA3UR.js +0 -1
  74. package/dist/et-G6PPK4SF.js +0 -1
  75. package/dist/fa-3RYGYXBU.js +0 -1
  76. package/dist/fi-KRSYZSV4.js +0 -1
  77. package/dist/fr-FOSKFLMV.js +0 -1
  78. package/dist/he-RXSGTRSH.js +0 -1
  79. package/dist/hr-IMBN4Z7O.js +0 -1
  80. package/dist/hu-UYWLVBH3.js +0 -1
  81. package/dist/it-ZAWFQCOM.js +0 -1
  82. package/dist/ja-QZGXTROI.js +0 -1
  83. package/dist/ku-ZCTX4KKG.js +0 -1
  84. package/dist/localeLoaders-BZZWN35C.js +0 -1
  85. package/dist/lt-N2OMHLDZ.js +0 -1
  86. package/dist/lv-WLIXXNIX.js +0 -1
  87. package/dist/nl-LZILGXRW.js +0 -1
  88. package/dist/no-2OJ4BSZI.js +0 -1
  89. package/dist/pl-FZUMWN56.js +0 -1
  90. package/dist/pt-R4XWF7UT.js +0 -1
  91. package/dist/ro-WK3CNXGW.js +0 -1
  92. package/dist/ru-AGP7UPXQ.js +0 -1
  93. package/dist/sk-LNR3ENI4.js +0 -1
  94. package/dist/sl-UG367TMJ.js +0 -1
  95. package/dist/sr-IHG5CL3F.js +0 -1
  96. package/dist/sv-RIFQBC5U.js +0 -1
  97. package/dist/tr-LWSQYBXN.js +0 -1
  98. package/dist/uk-ZSWFWCW7.js +0 -1
  99. package/dist/zh-Hans-P4CJH4VJ.js +0 -1
  100. package/dist/zh-Hant-X7CHEXML.js +0 -1
package/dist/index.d.cts CHANGED
@@ -2,13 +2,13 @@ import { C as ChartDoc, F as FloorLabelStyle, P as Point, A as AccessibilityType
2
2
  export { x as ACCESSIBILITY_RING_COLOR, y as ACCESSIBILITY_TYPES, z as AccessibilityMeta, D as AuthoringObjectState, B as BoothObject, p as Category, E as ChartLayoutConstraint, a as ChartObject, o as ChartReferenceImage, H as ChartTheme, I as ConfidenceEvidenceScope, u as CubicPath, J as DecorImageObject, m as Floor, G as GAAreaObject, 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.cjs';
3
3
  import { c as EventConfigurationRef, b as EventConfigurationVersion } from './eventConfigurations-vOMFVz7c.cjs';
4
4
  export { d as EVENT_CONFIGURATION_EXPORT_SCHEMA, e as EVENT_CONFIGURATION_SCHEMA, f as EventConfigurationBaseVenue, g as EventConfigurationCompatibilityIssue, h as EventConfigurationCompatibilityIssueCode, i as EventConfigurationCompatibilityResult, j as EventConfigurationExportEnvelope, k as EventConfigurationLifecycleStatus, a as EventConfigurationOcclusion, l as EventConfigurationOverlay, m as EventConfigurationParseIssue, n as EventConfigurationParseIssueCode, o as EventConfigurationParseResult, p as EventConfigurationProductionElement, E as EventConfigurationProductionElementKind, q as EventConfigurationVenueSnapshot, r as EventConfigurationVersionParseResult, s as EventConfigurationVersionSummary, L as LegacyEventConfigurationMigrationResult, t as canTransitionEventConfiguration, u as canonicalEventConfigurationJson, v as inspectEventConfigurationCompatibility, w as migrateLegacyEventConfigurations, x as parseEventConfigurationExport, y as parseEventConfigurationVersion, z as resolveEventConfigurationRollback } from './eventConfigurations-vOMFVz7c.cjs';
5
- export { A as AUTOMATIC_ROUND_TABLE_RADIUS_MAX, a as AUTOMATIC_ROUND_TABLE_RADIUS_MIN, C as ChartBoundsOptions, E as ExpandChartOptions, F as FLOOR_STACK_GAP_RATIO, b as FLOOR_STACK_MIN_SURFACE_PX, c as FloorStackOptions, d as FloorStackPlacement, R as RowSeatSlot, T as TABLE_SEAT_OFFSET, e as TableSeatSlot, f as allObjects, g as automaticRoundTableRadius, h as chartBounds, i as expandBooth, j as expandChart, k as expandRow, l as expandRowSlots, m as expandTable, n as expandTableSlots, o as floorObjects, p as floorStackPlacements, q as floorsOf, r as initialFloorMode, s as layoutFloorStack, t as mainFloorId, u as objectCenter, v as owningSectionForObject, w as pointInPolygon, x as pointInPolygonWithHoles, y as polygonLabelPoint, z as rowInventoryCount, B as rowSeatPositions, D as stackFloors, G as tableInventoryCount, H as tableSeatCountsBySide, I as translateObject } from './tableSizing-DKygWd7z.cjs';
6
- import { c as TicketSelectionIssue } from './ticketRestrictions-CvGDnGS8.cjs';
7
- export { M as MAX_EVENT_INVENTORY, a as MAX_GA_CAPACITY, g as gaAreasOf, h as gaInventorySegments, i as gaUnitLabel, j as gaUnitLabels, k as growJoinedGAInventory, l as isGaUnitLabel, v as validGAInventorySegments } from './ticketRestrictions-CvGDnGS8.cjs';
5
+ export { A as AUTOMATIC_ROUND_TABLE_RADIUS_MAX, a as AUTOMATIC_ROUND_TABLE_RADIUS_MIN, C as ChartBoundsOptions, E as ExpandChartOptions, F as FLOOR_STACK_GAP_RATIO, b as FLOOR_STACK_MIN_SURFACE_PX, c as FloorStackOptions, d as FloorStackPlacement, R as RowSeatSlot, T as TABLE_SEAT_OFFSET, e as TableSeatSlot, f as allObjects, g as automaticRoundTableRadius, h as chartBounds, i as expandBooth, j as expandChart, k as expandRow, l as expandRowSlots, m as expandTable, n as expandTableSlots, o as floorObjects, p as floorStackPlacements, q as floorsOf, r as initialFloorMode, s as layoutFloorStack, t as mainFloorId, u as objectCenter, v as owningSectionForObject, w as pointInPolygon, x as pointInPolygonWithHoles, y as polygonLabelPoint, z as rowInventoryCount, B as rowSeatPositions, D as stackFloors, G as tableInventoryCount, H as tableSeatCountsBySide, I as translateObject } from './tableSizing-OzEvBirS.cjs';
6
+ import { c as TicketSelectionIssue } from './ticketRestrictions-CGD-l3if.cjs';
7
+ export { M as MAX_EVENT_INVENTORY, a as MAX_GA_CAPACITY, g as gaAreasOf, h as gaInventorySegments, i as gaUnitLabel, j as gaUnitLabels, k as growJoinedGAInventory, l as isGaUnitLabel, v as validGAInventorySegments } from './ticketRestrictions-CGD-l3if.cjs';
8
8
  export { A as AvailabilityRule, S as SectionNode, T as TIER_HEIGHT_M, U as UNGROUPED_ID, a as applyHidden, c as computeSections, h as hiddenObjectIds, i as isSectionHidden, s as sectionGeometry } from './sections-CQ0sd37E.cjs';
9
- export { M as MIN_POINTER_TARGET_PX, R as RENDERED_QUALITY_REPORT_VERSION, a as RenderedEvidenceState, b as RenderedQualityFinding, c as RenderedQualityFindingCode, d as RenderedQualityReport, e as RenderedQualitySample, i as inspectRenderedQualityEvidence } from './renderedQuality-CRLkEGf8.cjs';
10
- import { I as ISeatmapRenderer, b as RendererOptions, S as SeatStatus, c as SeatMark, E as ExpandedSeat, G as GAAreaState, d as RendererViewMode, e as RendererMinimapSnapshot, L as LodRung, R as RendererQualityEvidence, f as RendererCallbacks } from './renderer-B6kkgOHz.cjs';
11
- export { C as CHART_STORAGE_KEY, g as RenderedBookableLabelEvidence, a as RenderedFreeTextEvidence, h as RenderedGAAreaEvidence, i as RenderedHierarchyLabelEvidence, j as RenderedLabelHiddenReason, k as RenderedRowLabelEvidence, l as RendererHoverDetails, m as RendererMinimapSeat, n as RendererMinimapSection, o as SeatMarkKind } from './renderer-B6kkgOHz.cjs';
9
+ export { M as MIN_POINTER_TARGET_PX, R as RENDERED_QUALITY_REPORT_VERSION, a as RenderedEvidenceState, b as RenderedQualityFinding, c as RenderedQualityFindingCode, d as RenderedQualityReport, e as RenderedQualitySample, i as inspectRenderedQualityEvidence } from './renderedQuality-rc4xZnIy.cjs';
10
+ import { I as ISeatmapRenderer, b as RendererOptions, S as SeatStatus, c as SeatMark, E as ExpandedSeat, G as GAAreaState, d as RendererViewMode, e as RendererMinimapSnapshot, L as LodRung, R as RendererQualityEvidence, f as RendererCallbacks } from './renderer-DW7ejcxk.cjs';
11
+ export { C as CHART_STORAGE_KEY, g as RenderedBookableLabelEvidence, a as RenderedFreeTextEvidence, h as RenderedGAAreaEvidence, i as RenderedHierarchyLabelEvidence, j as RenderedLabelHiddenReason, k as RenderedRowLabelEvidence, l as RendererHoverDetails, m as RendererMinimapSeat, n as RendererMinimapSection, o as SeatMarkKind } from './renderer-DW7ejcxk.cjs';
12
12
  import './segmentedRowModel-DqFhb-7Q.cjs';
13
13
 
14
14
  /**
@@ -273,6 +273,11 @@ declare class SeatmapRenderer implements ISeatmapRenderer {
273
273
  /** Non-listening visual dim outside the focused section. One overlay replaces
274
274
  * descendant opacity mutations across every seat in the venue. */
275
275
  private focusDimOverlay;
276
+ /** Does entering a section draw the entrance dim + backdrop? Off for narrow
277
+ * (phone) layouts — see {@link setSectionFocusDim}. */
278
+ private sectionFocusDim;
279
+ /** How many camera moves the BUYER has made — see {@link getCameraGestureCount}. */
280
+ private cameraGestures;
276
281
  /** Object id → floor id (multi-floor only) — resolves a deck tap in the 3D stack. */
277
282
  private objectFloor;
278
283
  /** Seats with no owning section, computed once per chart — see
@@ -890,6 +895,28 @@ declare class SeatmapRenderer implements ISeatmapRenderer {
890
895
  * behaviour, the glide is only an entrance.
891
896
  */
892
897
  private releaseSectionFocusDim;
898
+ /**
899
+ * Take the entrance dim + backdrop down, leaving every other part of the
900
+ * focus (id, anchor, LOD, camera) alone. Shared by the buyer's first pan and
901
+ * by {@link setSectionFocusDim} switching the treatment off mid-focus.
902
+ */
903
+ private dropFocusDim;
904
+ /**
905
+ * Should entering a section dim the rest of the venue?
906
+ *
907
+ * On a desktop map the entrance dim says "this is the section you are in"
908
+ * against a bowl that is still mostly on screen. On a phone the focused
909
+ * section fills the viewport, so the same treatment only blackens the strip
910
+ * of edges around it — cost without the message (client report, narrow
911
+ * layout). The picker turns it off for `data-layout="narrow"` and back on
912
+ * for wide.
913
+ *
914
+ * Everything else about a focus is untouched: focusedSectionId, focusAnchor,
915
+ * the LOD pass and the camera glide are the same either way, and
916
+ * `focusedSeatOpacity` is already gated on the overlay existing, so seats and
917
+ * their labels simply stay at full brightness.
918
+ */
919
+ setSectionFocusDim(enabled: boolean): void;
893
920
  /** Clear an AXS section focus — restore full-bowl brightness + drop the backdrop. */
894
921
  clearSectionFocus(): void;
895
922
  /** The currently AXS-focused section id, or null. */
@@ -938,6 +965,33 @@ declare class SeatmapRenderer implements ISeatmapRenderer {
938
965
  /** Minimap drag/click navigation: preserve zoom and move one world point to
939
966
  * the viewport centre. Works for flat and projected views via worldToScreen. */
940
967
  panToWorld(point: Point): void;
968
+ /**
969
+ * Pan by a screen-space delta — zoom untouched, nothing reframed.
970
+ *
971
+ * `panToWorld` centres a point, which is the wrong instrument when only ONE
972
+ * axis matters: the phone confirm card is a resting bottom sheet, and a seat
973
+ * tapped under it has to be lifted into the clear band above the sheet with
974
+ * its x exactly where the buyer left it. Centring would slide the map
975
+ * sideways as well, which reads as the map running away from the tap.
976
+ *
977
+ * Animated by default with the camera glide's own easing, so the lift is
978
+ * read as the map moving rather than as a cut; `animate: false` and reduced
979
+ * motion both snap.
980
+ */
981
+ panScreenBy(delta: Point, opts?: {
982
+ animate?: boolean;
983
+ }): void;
984
+ /**
985
+ * How many camera moves the buyer has made with their own hands — a drag, a
986
+ * pinch or a wheel. Monotonic, and it counts GESTURES, not frames: one drag
987
+ * of any length is one.
988
+ *
989
+ * For a host that moved the camera itself and wants to put it back only if
990
+ * the buyer has not since taken over. Comparing camera positions cannot
991
+ * answer that — a programmatic glide is still in flight, and a pan that ends
992
+ * where it started is indistinguishable from no pan at all.
993
+ */
994
+ getCameraGestureCount(): number;
941
995
  /** Legend hover: highlight one category (dim the rest), or null to clear. */
942
996
  setCategoryHighlight(key: string | null): void;
943
997
  private renderBackground;
@@ -2291,6 +2345,9 @@ declare class PickerController {
2291
2345
  getAccessibilityFilter(): AccessibilityType[] | null;
2292
2346
  /** Where {@link focusNextAccessibleSection} last stopped. */
2293
2347
  private accessStepAt;
2348
+ /** The camera a price band took from the buyer — see
2349
+ * {@link PickerFocusContext.bandReturnPose}. */
2350
+ private bandReturnPose;
2294
2351
  /**
2295
2352
  * The state the filter-driven camera rules read and change — see
2296
2353
  * ./pickerFocus. Rebuilt per call; the accessor pair keeps the controller
@@ -2469,12 +2526,49 @@ declare class PickerController {
2469
2526
  * any window in which a silent server could leave the map wrong.
2470
2527
  */
2471
2528
  private lastSnapshotAt;
2529
+ /**
2530
+ * Has `renderer.setChart()` run? `this.renderer` is NOT that answer — it is
2531
+ * assigned the moment the stage is created, which is before the chart fetch
2532
+ * is awaited, so a snapshot can reach a renderer that holds no seats.
2533
+ */
2534
+ private seatsBuilt;
2535
+ /** The authoritative map that arrived before the chart. See ./snapshotOrdering. */
2536
+ private pendingSnapshot;
2537
+ /** Bumped by every LIVE frame applied here. See ./snapshotOrdering. */
2538
+ private socketVersion;
2472
2539
  private snapshotIsFresh;
2473
2540
  /** The live status of one unit, honouring the projection's default. */
2474
2541
  private statusOf;
2475
2542
  private clearBookedHoldIfSettled;
2476
2543
  /** Repaint from truth. Coalesced — see snapshotCoalescer.ts. */
2477
2544
  private resnapshot;
2545
+ /**
2546
+ * Repaint from truth on a realtime client's behalf — coalesced, never forced.
2547
+ *
2548
+ * The public entry point for a transport-owned socket (the widget's
2549
+ * `BuyerRealtimeClient` and its `createControllerSink`). It used to reach for
2550
+ * `refresh()`, which is the FORCED read, so every connect and every section
2551
+ * frame bypassed the coalescer and issued its own `/objects?compact=1` —
2552
+ * two full snapshots per open on the measured DesiPass boot.
2553
+ *
2554
+ * A socket opening is not evidence that anything changed, so a boot snapshot
2555
+ * this young answers for it. `refresh()` stays the forced call for a caller
2556
+ * that just mutated state and needs the server's answer to its own write.
2557
+ */
2558
+ resync(opts?: {
2559
+ reason?: 'connect' | 'frame';
2560
+ }): Promise<void>;
2561
+ /**
2562
+ * Paint a COMPLETE authoritative projection handed over by a live socket.
2563
+ *
2564
+ * The frame the server volunteers on connect already contains everything an
2565
+ * `/objects` read would return, so a sink that can take it never needs the
2566
+ * round trip. Public because the widget's socket lives outside this class.
2567
+ */
2568
+ applyProjection(projection: {
2569
+ default: string;
2570
+ exceptions: Record<string, string>;
2571
+ }): void;
2478
2572
  /**
2479
2573
  * Re-pull the status snapshot on demand. Live surfaces rarely need this (the
2480
2574
  * socket keeps them fresh); local/mock transports with no socket call it
package/dist/index.d.ts CHANGED
@@ -2,13 +2,13 @@ import { C as ChartDoc, F as FloorLabelStyle, P as Point, A as AccessibilityType
2
2
  export { x as ACCESSIBILITY_RING_COLOR, y as ACCESSIBILITY_TYPES, z as AccessibilityMeta, D as AuthoringObjectState, B as BoothObject, p as Category, E as ChartLayoutConstraint, a as ChartObject, o as ChartReferenceImage, H as ChartTheme, I as ConfidenceEvidenceScope, u as CubicPath, J as DecorImageObject, m as Floor, G as GAAreaObject, 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
3
  import { c as EventConfigurationRef, b as EventConfigurationVersion } from './eventConfigurations-71rHjKl7.js';
4
4
  export { d as EVENT_CONFIGURATION_EXPORT_SCHEMA, e as EVENT_CONFIGURATION_SCHEMA, f as EventConfigurationBaseVenue, g as EventConfigurationCompatibilityIssue, h as EventConfigurationCompatibilityIssueCode, i as EventConfigurationCompatibilityResult, j as EventConfigurationExportEnvelope, k as EventConfigurationLifecycleStatus, a as EventConfigurationOcclusion, l as EventConfigurationOverlay, m as EventConfigurationParseIssue, n as EventConfigurationParseIssueCode, o as EventConfigurationParseResult, p as EventConfigurationProductionElement, E as EventConfigurationProductionElementKind, q as EventConfigurationVenueSnapshot, r as EventConfigurationVersionParseResult, s as EventConfigurationVersionSummary, L as LegacyEventConfigurationMigrationResult, t as canTransitionEventConfiguration, u as canonicalEventConfigurationJson, v as inspectEventConfigurationCompatibility, w as migrateLegacyEventConfigurations, x as parseEventConfigurationExport, y as parseEventConfigurationVersion, z as resolveEventConfigurationRollback } from './eventConfigurations-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';
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-uVEPXCUD.js';
6
+ import { c as TicketSelectionIssue } from './ticketRestrictions-BH430to6.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-BH430to6.js';
8
8
  export { A as AvailabilityRule, S as SectionNode, T as TIER_HEIGHT_M, U as UNGROUPED_ID, a as applyHidden, c as computeSections, h as hiddenObjectIds, i as isSectionHidden, s as sectionGeometry } from './sections-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';
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-CXWlCsRS.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-Cqd5w55S.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-Cqd5w55S.js';
12
12
  import './segmentedRowModel-D-CEgxg7.js';
13
13
 
14
14
  /**
@@ -273,6 +273,11 @@ declare class SeatmapRenderer implements ISeatmapRenderer {
273
273
  /** Non-listening visual dim outside the focused section. One overlay replaces
274
274
  * descendant opacity mutations across every seat in the venue. */
275
275
  private focusDimOverlay;
276
+ /** Does entering a section draw the entrance dim + backdrop? Off for narrow
277
+ * (phone) layouts — see {@link setSectionFocusDim}. */
278
+ private sectionFocusDim;
279
+ /** How many camera moves the BUYER has made — see {@link getCameraGestureCount}. */
280
+ private cameraGestures;
276
281
  /** Object id → floor id (multi-floor only) — resolves a deck tap in the 3D stack. */
277
282
  private objectFloor;
278
283
  /** Seats with no owning section, computed once per chart — see
@@ -890,6 +895,28 @@ declare class SeatmapRenderer implements ISeatmapRenderer {
890
895
  * behaviour, the glide is only an entrance.
891
896
  */
892
897
  private releaseSectionFocusDim;
898
+ /**
899
+ * Take the entrance dim + backdrop down, leaving every other part of the
900
+ * focus (id, anchor, LOD, camera) alone. Shared by the buyer's first pan and
901
+ * by {@link setSectionFocusDim} switching the treatment off mid-focus.
902
+ */
903
+ private dropFocusDim;
904
+ /**
905
+ * Should entering a section dim the rest of the venue?
906
+ *
907
+ * On a desktop map the entrance dim says "this is the section you are in"
908
+ * against a bowl that is still mostly on screen. On a phone the focused
909
+ * section fills the viewport, so the same treatment only blackens the strip
910
+ * of edges around it — cost without the message (client report, narrow
911
+ * layout). The picker turns it off for `data-layout="narrow"` and back on
912
+ * for wide.
913
+ *
914
+ * Everything else about a focus is untouched: focusedSectionId, focusAnchor,
915
+ * the LOD pass and the camera glide are the same either way, and
916
+ * `focusedSeatOpacity` is already gated on the overlay existing, so seats and
917
+ * their labels simply stay at full brightness.
918
+ */
919
+ setSectionFocusDim(enabled: boolean): void;
893
920
  /** Clear an AXS section focus — restore full-bowl brightness + drop the backdrop. */
894
921
  clearSectionFocus(): void;
895
922
  /** The currently AXS-focused section id, or null. */
@@ -938,6 +965,33 @@ declare class SeatmapRenderer implements ISeatmapRenderer {
938
965
  /** Minimap drag/click navigation: preserve zoom and move one world point to
939
966
  * the viewport centre. Works for flat and projected views via worldToScreen. */
940
967
  panToWorld(point: Point): void;
968
+ /**
969
+ * Pan by a screen-space delta — zoom untouched, nothing reframed.
970
+ *
971
+ * `panToWorld` centres a point, which is the wrong instrument when only ONE
972
+ * axis matters: the phone confirm card is a resting bottom sheet, and a seat
973
+ * tapped under it has to be lifted into the clear band above the sheet with
974
+ * its x exactly where the buyer left it. Centring would slide the map
975
+ * sideways as well, which reads as the map running away from the tap.
976
+ *
977
+ * Animated by default with the camera glide's own easing, so the lift is
978
+ * read as the map moving rather than as a cut; `animate: false` and reduced
979
+ * motion both snap.
980
+ */
981
+ panScreenBy(delta: Point, opts?: {
982
+ animate?: boolean;
983
+ }): void;
984
+ /**
985
+ * How many camera moves the buyer has made with their own hands — a drag, a
986
+ * pinch or a wheel. Monotonic, and it counts GESTURES, not frames: one drag
987
+ * of any length is one.
988
+ *
989
+ * For a host that moved the camera itself and wants to put it back only if
990
+ * the buyer has not since taken over. Comparing camera positions cannot
991
+ * answer that — a programmatic glide is still in flight, and a pan that ends
992
+ * where it started is indistinguishable from no pan at all.
993
+ */
994
+ getCameraGestureCount(): number;
941
995
  /** Legend hover: highlight one category (dim the rest), or null to clear. */
942
996
  setCategoryHighlight(key: string | null): void;
943
997
  private renderBackground;
@@ -2291,6 +2345,9 @@ declare class PickerController {
2291
2345
  getAccessibilityFilter(): AccessibilityType[] | null;
2292
2346
  /** Where {@link focusNextAccessibleSection} last stopped. */
2293
2347
  private accessStepAt;
2348
+ /** The camera a price band took from the buyer — see
2349
+ * {@link PickerFocusContext.bandReturnPose}. */
2350
+ private bandReturnPose;
2294
2351
  /**
2295
2352
  * The state the filter-driven camera rules read and change — see
2296
2353
  * ./pickerFocus. Rebuilt per call; the accessor pair keeps the controller
@@ -2469,12 +2526,49 @@ declare class PickerController {
2469
2526
  * any window in which a silent server could leave the map wrong.
2470
2527
  */
2471
2528
  private lastSnapshotAt;
2529
+ /**
2530
+ * Has `renderer.setChart()` run? `this.renderer` is NOT that answer — it is
2531
+ * assigned the moment the stage is created, which is before the chart fetch
2532
+ * is awaited, so a snapshot can reach a renderer that holds no seats.
2533
+ */
2534
+ private seatsBuilt;
2535
+ /** The authoritative map that arrived before the chart. See ./snapshotOrdering. */
2536
+ private pendingSnapshot;
2537
+ /** Bumped by every LIVE frame applied here. See ./snapshotOrdering. */
2538
+ private socketVersion;
2472
2539
  private snapshotIsFresh;
2473
2540
  /** The live status of one unit, honouring the projection's default. */
2474
2541
  private statusOf;
2475
2542
  private clearBookedHoldIfSettled;
2476
2543
  /** Repaint from truth. Coalesced — see snapshotCoalescer.ts. */
2477
2544
  private resnapshot;
2545
+ /**
2546
+ * Repaint from truth on a realtime client's behalf — coalesced, never forced.
2547
+ *
2548
+ * The public entry point for a transport-owned socket (the widget's
2549
+ * `BuyerRealtimeClient` and its `createControllerSink`). It used to reach for
2550
+ * `refresh()`, which is the FORCED read, so every connect and every section
2551
+ * frame bypassed the coalescer and issued its own `/objects?compact=1` —
2552
+ * two full snapshots per open on the measured DesiPass boot.
2553
+ *
2554
+ * A socket opening is not evidence that anything changed, so a boot snapshot
2555
+ * this young answers for it. `refresh()` stays the forced call for a caller
2556
+ * that just mutated state and needs the server's answer to its own write.
2557
+ */
2558
+ resync(opts?: {
2559
+ reason?: 'connect' | 'frame';
2560
+ }): Promise<void>;
2561
+ /**
2562
+ * Paint a COMPLETE authoritative projection handed over by a live socket.
2563
+ *
2564
+ * The frame the server volunteers on connect already contains everything an
2565
+ * `/objects` read would return, so a sink that can take it never needs the
2566
+ * round trip. Public because the widget's socket lives outside this class.
2567
+ */
2568
+ applyProjection(projection: {
2569
+ default: string;
2570
+ exceptions: Record<string, string>;
2571
+ }): void;
2478
2572
  /**
2479
2573
  * Re-pull the status snapshot on demand. Live surfaces rarely need this (the
2480
2574
  * socket keeps them fresh); local/mock transports with no socket call it