@seatlayer/core 0.80.0 → 0.80.2

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 (97) hide show
  1. package/dist/ar-4USORDJ2.js +1 -0
  2. package/dist/be-LVIKPY6K.js +1 -0
  3. package/dist/bg-7SHLJNML.js +1 -0
  4. package/dist/ca-BGX4KCNM.js +1 -0
  5. package/dist/core/inventory/index.d.cts +2 -2
  6. package/dist/core/inventory/index.d.ts +2 -2
  7. package/dist/core/layout/index.d.cts +2 -2
  8. package/dist/core/layout/index.d.ts +2 -2
  9. package/dist/core/quality/index.d.cts +2 -2
  10. package/dist/core/quality/index.d.ts +2 -2
  11. package/dist/core/sections/index.d.cts +1 -1
  12. package/dist/core/sections/index.d.ts +1 -1
  13. package/dist/cs-VW5JVFLX.js +1 -0
  14. package/dist/cy-USSTUCIU.js +1 -0
  15. package/dist/da-OGGV4WBH.js +1 -0
  16. package/dist/de-PLAWZKMA.js +1 -0
  17. package/dist/el-S5RMKQHN.js +1 -0
  18. package/dist/es-3CA56GCO.js +1 -0
  19. package/dist/et-OUZBFOII.js +1 -0
  20. package/dist/fa-A5T5IY5C.js +1 -0
  21. package/dist/fi-MXJW5KTC.js +1 -0
  22. package/dist/fr-24DBNPEI.js +1 -0
  23. package/dist/he-TBD6IXSM.js +1 -0
  24. package/dist/hr-YVEOBL5P.js +1 -0
  25. package/dist/hu-ZX7D57XA.js +1 -0
  26. package/dist/index.cjs +1 -1
  27. package/dist/index.d.cts +72 -8
  28. package/dist/index.d.ts +72 -8
  29. package/dist/index.js +1 -1
  30. package/dist/it-FLP5ZN7P.js +1 -0
  31. package/dist/ja-M75LXFE4.js +1 -0
  32. package/dist/ku-DMKHQWY3.js +1 -0
  33. package/dist/localeLoaders-JZGFG32X.js +1 -0
  34. package/dist/lt-5LTX5MNB.js +1 -0
  35. package/dist/lv-UXZX5BZI.js +1 -0
  36. package/dist/nl-WPC36W3G.js +1 -0
  37. package/dist/no-UIVMLJ4P.js +1 -0
  38. package/dist/pl-TUDTISCL.js +1 -0
  39. package/dist/pt-ACUXKL3R.js +1 -0
  40. package/dist/{renderedQuality-DObXwisG.d.ts → renderedQuality-DpeC4FAX.d.ts} +1 -1
  41. package/dist/{renderedQuality-Dz-WTrRc.d.cts → renderedQuality-twM7ALWT.d.cts} +1 -1
  42. package/dist/{renderer-BjuHQ0bx.d.cts → renderer-CPiYrzQW.d.cts} +7 -3
  43. package/dist/{renderer-i_mthe5Z.d.ts → renderer-sNijqlYf.d.ts} +7 -3
  44. package/dist/ro-NK7KQDS6.js +1 -0
  45. package/dist/ru-DESUHS6U.js +1 -0
  46. package/dist/sk-V75T3PCE.js +1 -0
  47. package/dist/sl-DCJMM2MY.js +1 -0
  48. package/dist/sr-ZJGHUZOY.js +1 -0
  49. package/dist/sv-DES67YAC.js +1 -0
  50. package/dist/{tableSizing-DnSAiaXL.d.cts → tableSizing-Dcl2RqNV.d.cts} +1 -1
  51. package/dist/{tableSizing-BpRvVdXK.d.ts → tableSizing-tLCqlt0I.d.ts} +1 -1
  52. package/dist/{ticketRestrictions-BijtF-Lw.d.ts → ticketRestrictions-Bq1uykn4.d.ts} +1 -1
  53. package/dist/{ticketRestrictions-CvaHRHti.d.cts → ticketRestrictions-CgReCops.d.cts} +1 -1
  54. package/dist/tr-MM4XA4AF.js +1 -0
  55. package/dist/uk-M2OBRDMC.js +1 -0
  56. package/dist/view3d/index.d.cts +1 -1
  57. package/dist/view3d/index.d.ts +1 -1
  58. package/dist/zh-Hans-NI3CSKQM.js +1 -0
  59. package/dist/zh-Hant-556PQY3P.js +1 -0
  60. package/package.json +1 -1
  61. package/dist/ar-EZLC3TID.js +0 -1
  62. package/dist/be-PNW4HSCT.js +0 -1
  63. package/dist/bg-WWTVMKHN.js +0 -1
  64. package/dist/ca-7CQTBZHV.js +0 -1
  65. package/dist/cs-CO6IPOND.js +0 -1
  66. package/dist/cy-JSKIEF7V.js +0 -1
  67. package/dist/da-XNN2TLET.js +0 -1
  68. package/dist/de-T7S7DY4P.js +0 -1
  69. package/dist/el-SQNQJ6N5.js +0 -1
  70. package/dist/es-WIEMVIPM.js +0 -1
  71. package/dist/et-AJ666JLF.js +0 -1
  72. package/dist/fa-PA22MNZD.js +0 -1
  73. package/dist/fi-OIKV7BZB.js +0 -1
  74. package/dist/fr-K2BPY3ZG.js +0 -1
  75. package/dist/he-NB5S5QOD.js +0 -1
  76. package/dist/hr-HB2ZBWCL.js +0 -1
  77. package/dist/hu-DXONGHET.js +0 -1
  78. package/dist/it-7YYWICOD.js +0 -1
  79. package/dist/ja-ROSYSJVY.js +0 -1
  80. package/dist/ku-3VHLRVJY.js +0 -1
  81. package/dist/localeLoaders-42CYOXB5.js +0 -1
  82. package/dist/lt-KOUZG2YJ.js +0 -1
  83. package/dist/lv-JOK7LYAH.js +0 -1
  84. package/dist/nl-H7NAUHTK.js +0 -1
  85. package/dist/no-OJ35WOND.js +0 -1
  86. package/dist/pl-FD5NFT6Y.js +0 -1
  87. package/dist/pt-BOCUN4SZ.js +0 -1
  88. package/dist/ro-Z44LTOXH.js +0 -1
  89. package/dist/ru-J4XWPJR6.js +0 -1
  90. package/dist/sk-4O4XNGR6.js +0 -1
  91. package/dist/sl-AHDPSHB6.js +0 -1
  92. package/dist/sr-B5PADXMB.js +0 -1
  93. package/dist/sv-KZCOVO3R.js +0 -1
  94. package/dist/tr-E5X266RM.js +0 -1
  95. package/dist/uk-6RR5RHIY.js +0 -1
  96. package/dist/zh-Hans-GQWICG2Q.js +0 -1
  97. package/dist/zh-Hant-DTRJKLTS.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, i 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, h 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-eVmh2-Yn.cjs';
3
3
  import { c as EventConfigurationRef, b as EventConfigurationVersion } from './eventConfigurations-OVlni2ym.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-OVlni2ym.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-DnSAiaXL.cjs';
6
- import { g as TicketSelectionIssue, b as GroupedTableInventoryUnit } from './ticketRestrictions-CvaHRHti.cjs';
7
- export { M as MAX_EVENT_INVENTORY, d as MAX_GA_CAPACITY, l as gaAreasOf, m as gaInventorySegments, n as gaUnitLabel, o as gaUnitLabels, q as growJoinedGAInventory, s as isGaUnitLabel, x as validGAInventorySegments } from './ticketRestrictions-CvaHRHti.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-Dcl2RqNV.cjs';
6
+ import { g as TicketSelectionIssue, b as GroupedTableInventoryUnit } from './ticketRestrictions-CgReCops.cjs';
7
+ export { M as MAX_EVENT_INVENTORY, d as MAX_GA_CAPACITY, l as gaAreasOf, m as gaInventorySegments, n as gaUnitLabel, o as gaUnitLabels, q as growJoinedGAInventory, s as isGaUnitLabel, x as validGAInventorySegments } from './ticketRestrictions-CgReCops.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-DUG5M-hF.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-Dz-WTrRc.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-BjuHQ0bx.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-BjuHQ0bx.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-twM7ALWT.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-CPiYrzQW.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-CPiYrzQW.cjs';
12
12
  import './segmentedRowModel-BYSxfsqX.cjs';
13
13
 
14
14
  /**
@@ -277,8 +277,14 @@ declare class SeatmapRenderer implements ISeatmapRenderer {
277
277
  /** Non-listening visual dim outside the focused section. One overlay replaces
278
278
  * descendant opacity mutations across every seat in the venue. */
279
279
  private focusDimOverlay;
280
- /** Does entering a section draw the entrance dim + backdrop? Off for narrow
281
- * (phone) layouts — see {@link setSectionFocusDim}. */
280
+ /** Does entering a section draw the entrance dim + backdrop?
281
+ *
282
+ * `null` — the default — means "nobody has said", and the answer is derived
283
+ * from the stage: a narrow (phone-sized) stage gets no dim, a wide one does.
284
+ * A host that calls {@link setSectionFocusDim} pins it to a boolean and its
285
+ * answer wins from then on. The tri-state exists because the ONLY caller was
286
+ * `SeatPicker`, which is never mounted on the native bridge — so every
287
+ * native SDK got the desktop dim on a phone-sized stage. */
282
288
  private sectionFocusDim;
283
289
  /** How many camera moves the BUYER has made — see {@link getCameraGestureCount}. */
284
290
  private cameraGestures;
@@ -916,6 +922,13 @@ declare class SeatmapRenderer implements ISeatmapRenderer {
916
922
  * `focusedSeatOpacity` is already gated on the overlay existing, so seats and
917
923
  * their labels simply stay at full brightness.
918
924
  */
925
+ /**
926
+ * The answer in force right now: an explicit {@link setSectionFocusDim} when
927
+ * a host gave one, otherwise the stage's own width. Narrow stages (phones,
928
+ * and every native WebView, which mounts no DOM chrome to call the setter)
929
+ * resolve to no dim.
930
+ */
931
+ private sectionDimEnabled;
919
932
  setSectionFocusDim(enabled: boolean): void;
920
933
  /** Clear an AXS section focus — restore full-bowl brightness + drop the backdrop. */
921
934
  clearSectionFocus(): void;
@@ -1736,6 +1749,28 @@ interface PickerCallbacks extends RendererCallbacks {
1736
1749
  onSelectionInvalid?: (state: PickerSelectionValidity) => void;
1737
1750
  /** A grouped table was selected and needs buyer confirmation/guest quantity. */
1738
1751
  onTableSelectionRequest?: (table: TableSelectionDetails) => void;
1752
+ /**
1753
+ * A second tap landed on a plain seat that is ALREADY in the selection, and
1754
+ * {@link PickerOptions.retapKeepsSelection} kept it there.
1755
+ *
1756
+ * The renderer's own click logic toggles: it deselects and fires `onDeselect`
1757
+ * immediately. `SeatPicker` answers that itself — it puts the seat back and
1758
+ * raises its confirm card in `'remove'` mode (20c670c6) — but SeatPicker is
1759
+ * DOM chrome and is never mounted on the native bridge, where `startBridge`
1760
+ * builds a bare `SeatingChart`. So on every native SDK the second tap emptied
1761
+ * the cart in silence, with no card and nothing to undo (reproduced on
1762
+ * device, 2026-09-04).
1763
+ *
1764
+ * With the option on, the controller re-selects the seat and calls this
1765
+ * INSTEAD of `onDeselect`, so a host that draws its own chrome can ask the
1766
+ * buyer the opposite question. The seat is still selected when this fires;
1767
+ * removing it is the host's own `deselect([seat.id])`.
1768
+ *
1769
+ * Only plain, locally-selected seats reach here. A server-held unit, a
1770
+ * grouped table, and a seat that is no longer selectable all take the
1771
+ * unchanged `onDeselect` path.
1772
+ */
1773
+ onSeatRetap?: (seat: PickerSeat) => void;
1739
1774
  /** A hold opened (manual hold or best-available). */
1740
1775
  onHold?: (hold: HoldInfo) => void;
1741
1776
  /** A prior active hold was restored from its opaque hold id. */
@@ -1820,6 +1855,16 @@ interface PickerOptions extends PickerCallbacks {
1820
1855
  selectionValidators?: PickerSelectionValidator[];
1821
1856
  /** Renderer confirm-card mode (host shows a confirm popover instead of instant cart add). */
1822
1857
  confirmSelection?: boolean;
1858
+ /**
1859
+ * Opt-in: a second tap on a plain seat already in the selection KEEPS it and
1860
+ * reports {@link PickerCallbacks.onSeatRetap} instead of dropping it.
1861
+ *
1862
+ * Default false — the toggle is unchanged, which is what `SeatPicker` needs
1863
+ * because it already answers the second tap with its own confirm card. Hosts
1864
+ * that draw their own chrome (`SeatingChart`, and through it every native
1865
+ * bridge surface) turn it on so a tap can never silently empty the cart.
1866
+ */
1867
+ retapKeepsSelection?: boolean;
1823
1868
  /** ISO 4217 currency for on-map prices (default from money.DEFAULT_CURRENCY). */
1824
1869
  currency?: string;
1825
1870
  /** Flash a pulse when a seat we didn't touch goes free→taken (live-activity cue). */
@@ -2334,6 +2379,16 @@ declare class PickerController {
2334
2379
  bottom: number;
2335
2380
  left: number;
2336
2381
  };
2382
+ /**
2383
+ * The radius of one seat disc in SCREEN pixels at the current zoom.
2384
+ *
2385
+ * A card anchored to a seat has to clear the seat, and the seat is not a
2386
+ * point: at the seats rung a disc can be 30px across before its selected
2387
+ * ring is counted. The renderer scales the theme's seat size by the camera,
2388
+ * so the answer is the same product — `SEAT_RADIUS` × the chart's seatScale
2389
+ * × the camera scale — read off the live pose. 0 before a renderer exists.
2390
+ */
2391
+ seatScreenRadius(): number;
2337
2392
  worldToScreen(p: {
2338
2393
  x: number;
2339
2394
  y: number;
@@ -2514,6 +2569,15 @@ declare class PickerController {
2514
2569
  private emitOrphanHint;
2515
2570
  /** Toggle colorblind-safe rendering at runtime (see PickerOptions.colorblindSafe). */
2516
2571
  setColorblindSafe(on: boolean): void;
2572
+ /**
2573
+ * Pin whether entering a section dims the rest of the venue.
2574
+ *
2575
+ * Left alone the renderer answers from its own stage width (no dim on a
2576
+ * phone-sized stage), which is what an embedding host with no DOM chrome of
2577
+ * its own — every native WebView — wants. `SeatPicker` calls this because it
2578
+ * knows its own layout breakpoint and wants the answer pinned to it.
2579
+ */
2580
+ setSectionFocusDim(enabled: boolean): void;
2517
2581
  /** @internal */ emitError(err: unknown): void;
2518
2582
  /** @internal */ holdCovers(labels: string[]): boolean;
2519
2583
  /** 409 conflict → deselect the taken labels and repaint them held. */
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, i 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, h 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-eVmh2-Yn.js';
3
3
  import { c as EventConfigurationRef, b as EventConfigurationVersion } from './eventConfigurations-DhGEe6fT.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-DhGEe6fT.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-BpRvVdXK.js';
6
- import { g as TicketSelectionIssue, b as GroupedTableInventoryUnit } from './ticketRestrictions-BijtF-Lw.js';
7
- export { M as MAX_EVENT_INVENTORY, d as MAX_GA_CAPACITY, l as gaAreasOf, m as gaInventorySegments, n as gaUnitLabel, o as gaUnitLabels, q as growJoinedGAInventory, s as isGaUnitLabel, x as validGAInventorySegments } from './ticketRestrictions-BijtF-Lw.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-tLCqlt0I.js';
6
+ import { g as TicketSelectionIssue, b as GroupedTableInventoryUnit } from './ticketRestrictions-Bq1uykn4.js';
7
+ export { M as MAX_EVENT_INVENTORY, d as MAX_GA_CAPACITY, l as gaAreasOf, m as gaInventorySegments, n as gaUnitLabel, o as gaUnitLabels, q as growJoinedGAInventory, s as isGaUnitLabel, x as validGAInventorySegments } from './ticketRestrictions-Bq1uykn4.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-Du9QkrCf.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-DObXwisG.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-i_mthe5Z.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-i_mthe5Z.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-DpeC4FAX.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-sNijqlYf.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-sNijqlYf.js';
12
12
  import './segmentedRowModel-N9Z0rnKY.js';
13
13
 
14
14
  /**
@@ -277,8 +277,14 @@ declare class SeatmapRenderer implements ISeatmapRenderer {
277
277
  /** Non-listening visual dim outside the focused section. One overlay replaces
278
278
  * descendant opacity mutations across every seat in the venue. */
279
279
  private focusDimOverlay;
280
- /** Does entering a section draw the entrance dim + backdrop? Off for narrow
281
- * (phone) layouts — see {@link setSectionFocusDim}. */
280
+ /** Does entering a section draw the entrance dim + backdrop?
281
+ *
282
+ * `null` — the default — means "nobody has said", and the answer is derived
283
+ * from the stage: a narrow (phone-sized) stage gets no dim, a wide one does.
284
+ * A host that calls {@link setSectionFocusDim} pins it to a boolean and its
285
+ * answer wins from then on. The tri-state exists because the ONLY caller was
286
+ * `SeatPicker`, which is never mounted on the native bridge — so every
287
+ * native SDK got the desktop dim on a phone-sized stage. */
282
288
  private sectionFocusDim;
283
289
  /** How many camera moves the BUYER has made — see {@link getCameraGestureCount}. */
284
290
  private cameraGestures;
@@ -916,6 +922,13 @@ declare class SeatmapRenderer implements ISeatmapRenderer {
916
922
  * `focusedSeatOpacity` is already gated on the overlay existing, so seats and
917
923
  * their labels simply stay at full brightness.
918
924
  */
925
+ /**
926
+ * The answer in force right now: an explicit {@link setSectionFocusDim} when
927
+ * a host gave one, otherwise the stage's own width. Narrow stages (phones,
928
+ * and every native WebView, which mounts no DOM chrome to call the setter)
929
+ * resolve to no dim.
930
+ */
931
+ private sectionDimEnabled;
919
932
  setSectionFocusDim(enabled: boolean): void;
920
933
  /** Clear an AXS section focus — restore full-bowl brightness + drop the backdrop. */
921
934
  clearSectionFocus(): void;
@@ -1736,6 +1749,28 @@ interface PickerCallbacks extends RendererCallbacks {
1736
1749
  onSelectionInvalid?: (state: PickerSelectionValidity) => void;
1737
1750
  /** A grouped table was selected and needs buyer confirmation/guest quantity. */
1738
1751
  onTableSelectionRequest?: (table: TableSelectionDetails) => void;
1752
+ /**
1753
+ * A second tap landed on a plain seat that is ALREADY in the selection, and
1754
+ * {@link PickerOptions.retapKeepsSelection} kept it there.
1755
+ *
1756
+ * The renderer's own click logic toggles: it deselects and fires `onDeselect`
1757
+ * immediately. `SeatPicker` answers that itself — it puts the seat back and
1758
+ * raises its confirm card in `'remove'` mode (20c670c6) — but SeatPicker is
1759
+ * DOM chrome and is never mounted on the native bridge, where `startBridge`
1760
+ * builds a bare `SeatingChart`. So on every native SDK the second tap emptied
1761
+ * the cart in silence, with no card and nothing to undo (reproduced on
1762
+ * device, 2026-09-04).
1763
+ *
1764
+ * With the option on, the controller re-selects the seat and calls this
1765
+ * INSTEAD of `onDeselect`, so a host that draws its own chrome can ask the
1766
+ * buyer the opposite question. The seat is still selected when this fires;
1767
+ * removing it is the host's own `deselect([seat.id])`.
1768
+ *
1769
+ * Only plain, locally-selected seats reach here. A server-held unit, a
1770
+ * grouped table, and a seat that is no longer selectable all take the
1771
+ * unchanged `onDeselect` path.
1772
+ */
1773
+ onSeatRetap?: (seat: PickerSeat) => void;
1739
1774
  /** A hold opened (manual hold or best-available). */
1740
1775
  onHold?: (hold: HoldInfo) => void;
1741
1776
  /** A prior active hold was restored from its opaque hold id. */
@@ -1820,6 +1855,16 @@ interface PickerOptions extends PickerCallbacks {
1820
1855
  selectionValidators?: PickerSelectionValidator[];
1821
1856
  /** Renderer confirm-card mode (host shows a confirm popover instead of instant cart add). */
1822
1857
  confirmSelection?: boolean;
1858
+ /**
1859
+ * Opt-in: a second tap on a plain seat already in the selection KEEPS it and
1860
+ * reports {@link PickerCallbacks.onSeatRetap} instead of dropping it.
1861
+ *
1862
+ * Default false — the toggle is unchanged, which is what `SeatPicker` needs
1863
+ * because it already answers the second tap with its own confirm card. Hosts
1864
+ * that draw their own chrome (`SeatingChart`, and through it every native
1865
+ * bridge surface) turn it on so a tap can never silently empty the cart.
1866
+ */
1867
+ retapKeepsSelection?: boolean;
1823
1868
  /** ISO 4217 currency for on-map prices (default from money.DEFAULT_CURRENCY). */
1824
1869
  currency?: string;
1825
1870
  /** Flash a pulse when a seat we didn't touch goes free→taken (live-activity cue). */
@@ -2334,6 +2379,16 @@ declare class PickerController {
2334
2379
  bottom: number;
2335
2380
  left: number;
2336
2381
  };
2382
+ /**
2383
+ * The radius of one seat disc in SCREEN pixels at the current zoom.
2384
+ *
2385
+ * A card anchored to a seat has to clear the seat, and the seat is not a
2386
+ * point: at the seats rung a disc can be 30px across before its selected
2387
+ * ring is counted. The renderer scales the theme's seat size by the camera,
2388
+ * so the answer is the same product — `SEAT_RADIUS` × the chart's seatScale
2389
+ * × the camera scale — read off the live pose. 0 before a renderer exists.
2390
+ */
2391
+ seatScreenRadius(): number;
2337
2392
  worldToScreen(p: {
2338
2393
  x: number;
2339
2394
  y: number;
@@ -2514,6 +2569,15 @@ declare class PickerController {
2514
2569
  private emitOrphanHint;
2515
2570
  /** Toggle colorblind-safe rendering at runtime (see PickerOptions.colorblindSafe). */
2516
2571
  setColorblindSafe(on: boolean): void;
2572
+ /**
2573
+ * Pin whether entering a section dims the rest of the venue.
2574
+ *
2575
+ * Left alone the renderer answers from its own stage width (no dim on a
2576
+ * phone-sized stage), which is what an embedding host with no DOM chrome of
2577
+ * its own — every native WebView — wants. `SeatPicker` calls this because it
2578
+ * knows its own layout breakpoint and wants the answer pinned to it.
2579
+ */
2580
+ setSectionFocusDim(enabled: boolean): void;
2517
2581
  /** @internal */ emitError(err: unknown): void;
2518
2582
  /** @internal */ holdCovers(labels: string[]): boolean;
2519
2583
  /** 409 conflict → deselect the taken labels and repaint them held. */