@seatlayer/core 0.85.2 → 0.86.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 (35) hide show
  1. package/dist/{chunk-HEYENCES.js → chunk-D5M3SNMM.js} +1 -1
  2. package/dist/chunk-GI7ZTQ7C.js +1 -0
  3. package/dist/chunk-W53J4FJS.js +1 -0
  4. package/dist/core/chart-ops/index.js +1 -1
  5. package/dist/core/inventory/index.cjs +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/inventory/index.js +1 -1
  9. package/dist/core/layout/index.d.cts +2 -2
  10. package/dist/core/layout/index.d.ts +2 -2
  11. package/dist/core/quality/index.cjs +1 -1
  12. package/dist/core/quality/index.d.cts +11 -3
  13. package/dist/core/quality/index.d.ts +11 -3
  14. package/dist/core/quality/index.js +1 -1
  15. package/dist/core/sections/index.d.cts +1 -1
  16. package/dist/core/sections/index.d.ts +1 -1
  17. package/dist/index.cjs +1 -1
  18. package/dist/index.d.cts +66 -7
  19. package/dist/index.d.ts +66 -7
  20. package/dist/index.js +1 -1
  21. package/dist/{renderedQuality-CkrbA7iV.d.ts → renderedQuality-Dy7LBzNF.d.ts} +1 -1
  22. package/dist/{renderedQuality-DL9Nfka1.d.cts → renderedQuality-yRjbcxVe.d.cts} +1 -1
  23. package/dist/{renderer-D9kIJYmd.d.cts → renderer-DbDQtwIH.d.cts} +2 -0
  24. package/dist/{renderer-DUko-vky.d.ts → renderer-xE1rZCGy.d.ts} +2 -0
  25. package/dist/{tableSizing-BGl1e6Bi.d.ts → tableSizing-B3SHwhya.d.ts} +1 -1
  26. package/dist/{tableSizing-CJbozzMS.d.cts → tableSizing-sUnI2XGD.d.cts} +1 -1
  27. package/dist/{ticketRestrictions-BD5hvqtL.d.ts → ticketRestrictions-7N9PC4Q6.d.ts} +1 -1
  28. package/dist/{ticketRestrictions-BEkiPPYg.d.cts → ticketRestrictions-Dtybkrpp.d.cts} +1 -1
  29. package/dist/view3d/index.cjs +21 -21
  30. package/dist/view3d/index.d.cts +1 -1
  31. package/dist/view3d/index.d.ts +1 -1
  32. package/dist/view3d/index.js +19 -19
  33. package/package.json +1 -1
  34. package/dist/chunk-APMDM2YC.js +0 -1
  35. package/dist/chunk-FQ2MMJMH.js +0 -1
package/dist/index.d.cts CHANGED
@@ -2,14 +2,14 @@ import { A as AccessibilityType, b as SeatCommercialAttributes, C as ChartDoc, F
2
2
  export { y as ACCESSIBILITY_RING_COLOR, z as ACCESSIBILITY_TYPES, D as AccessibilityMeta, E as AuthoringObjectState, B as BoothObject, q as Category, H as ChartLayoutConstraint, a as ChartObject, p as ChartReferenceImage, I as ChartTheme, J as ConfidenceEvidenceScope, v as CubicPath, K as DecorImageObject, n as Floor, G as GAAreaObject, j as GAInventorySegment, M as LABEL_STYLE_MAX_SIZE, N as LABEL_STYLE_MIN_SIZE, O as LabelPresentation, L as LabelStyle, Q as ObjectEditorState, U as Physical3dEvidence, V as RadialClearanceLayoutConstraint, o as RectTableSeatCounts, m as RectTableSide, W as ReferenceAccessibilitySource, X as ReferenceCalibration, Y as ReferenceCategorySource, Z as ReferenceDerivedScale, _ as ReferenceDirectAnnotationSource, $ as ReferenceDirectLandmarkCandidate, a0 as ReferenceDirectLandmarkDisposition, a1 as ReferenceDirectLandmarkRole, a2 as ReferenceDirectLandmarkSource, a3 as ReferenceDirectSeatGroup, a4 as ReferenceDirectSeatImportSource, a5 as ReferenceDirectSeatPlan, a6 as ReferenceDirectStageSource, a7 as ReferenceEnrichmentStatus, a8 as ReferenceExtractEmptyReason, a9 as ReferenceExtractEnrichment, aa as ReferenceExtractInput, ab as ReferenceExtractProposal, ac as ReferenceExtractRegionSeats, ad as ReferenceInventoryExclusionSource, ae as ReferenceInventorySource, af as ReferenceMatchReport, ag as ReferenceScanProposal, ah as ReferenceScanRowProposal, ai as ReferenceScanSectionProposal, aj as ReferenceSeatSeed, ak as ReferenceSectionTraceBatchInput, al as ReferenceSectionTraceBatchProposal, am as ReferenceSectionTraceInput, an as ReferenceSectionTraceProposal, d as ResolvedSeatConfidenceEvidence, R as RowObject, ao as SEAT_COMMERCIAL_MARKS, ap as STAGE_LABEL_STYLE_MAX_SIZE, aq as SURROUNDINGS_SHAPE_ROLES, S as SeatCommercialMark, ar as SeatCommercialMeta, as as SeatConfidenceCoverage, at as SeatConfidenceEvidence, au as SeatConfidenceModelLevel, av as SeatConfidenceModeledTarget, aw as SeatConfidenceRealityLevel, e as SeatGlyphKind, l as SeatOverride, f as SeatViewCoverage, c as SeatViewMetadata, ax as SeatViewVariant, i as SectionObject, g as SectionOutlinePath, h as SectionPathSegment, ay as SelectionLayer, r as ShapeLineCap, s as ShapeLineEnding, t as ShapeLineJoin, u as ShapeObject, az as StageLabelStyle, T as TableObject, aA as TextAlignment, aB as TextBackground, w 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-B97dNRwl.cjs';
3
3
  import { c as EventConfigurationRef, b as EventConfigurationVersion } from './eventConfigurations-C-LVnEGg.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-C-LVnEGg.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 combinedFloorZoneId, j as expandBooth, k as expandChart, l as expandRow, m as expandRowSlots, n as expandTable, o as expandTableSlots, p as floorObjects, q as floorStackPlacements, r as floorsOf, s as initialFloorMode, t as layoutCombinedFloorPlan, u as layoutFloorStack, v as mainFloorId, w as objectCenter, x as owningSectionForObject, y as pointInPolygon, z as pointInPolygonWithHoles, B as polygonLabelPoint, D as rowInventoryCount, G as rowSeatPositions, H as stackFloors, I as tableInventoryCount, J as tableSeatCountsBySide, K as translateObject } from './tableSizing-CJbozzMS.cjs';
6
- import { g as TicketSelectionIssue, b as GroupedTableInventoryUnit } from './ticketRestrictions-BEkiPPYg.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-BEkiPPYg.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 combinedFloorZoneId, j as expandBooth, k as expandChart, l as expandRow, m as expandRowSlots, n as expandTable, o as expandTableSlots, p as floorObjects, q as floorStackPlacements, r as floorsOf, s as initialFloorMode, t as layoutCombinedFloorPlan, u as layoutFloorStack, v as mainFloorId, w as objectCenter, x as owningSectionForObject, y as pointInPolygon, z as pointInPolygonWithHoles, B as polygonLabelPoint, D as rowInventoryCount, G as rowSeatPositions, H as stackFloors, I as tableInventoryCount, J as tableSeatCountsBySide, K as translateObject } from './tableSizing-sUnI2XGD.cjs';
6
+ import { g as TicketSelectionIssue, b as GroupedTableInventoryUnit } from './ticketRestrictions-Dtybkrpp.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-Dtybkrpp.cjs';
8
8
  export { S as SEAT_TYPE_ICON_BODY, a as SEAT_TYPE_ICON_VIEWBOX, b as SeatTypeIconKey, c as SeatTypeIconOptions, s as seatTypeIconBody, d as seatTypeIconSvg } from './seatTypeIcons-Bv2xK0xp.cjs';
9
9
  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-B1DzCiqs.cjs';
10
- 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-DL9Nfka1.cjs';
11
- 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-D9kIJYmd.cjs';
12
- 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-D9kIJYmd.cjs';
10
+ 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-yRjbcxVe.cjs';
11
+ 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-DbDQtwIH.cjs';
12
+ 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-DbDQtwIH.cjs';
13
13
  import './segmentedRowModel-uu0WfRIz.cjs';
14
14
 
15
15
  /**
@@ -418,6 +418,8 @@ declare class SeatmapRenderer implements ISeatmapRenderer {
418
418
  /** Stage pose the last overview fit landed on — see zoomToFit. */
419
419
  private fitPose;
420
420
  private viewportInsets;
421
+ /** Bottom chrome the fit keeps clear when it can — see camera.clearFitChrome. */
422
+ private fitClearanceBottom;
421
423
  /** Effective seat radius (base × theme.seatScale), set per chart in setChart. */
422
424
  private seatR;
423
425
  /** The radius a marker is actually DRAWN at — the authored radius capped by
@@ -514,6 +516,8 @@ declare class SeatmapRenderer implements ISeatmapRenderer {
514
516
  * be overwritten by its next frame.
515
517
  */
516
518
  private activateBeacon;
519
+ /** Dive to the buyer's own seats in this section; false when it holds none. */
520
+ private focusOwnedSeatsIn;
517
521
  /** Rebuild the beacons for this camera, and hand their rings to the breath. */
518
522
  private syncBeacons;
519
523
  /** The buyer's own seats in a section, in chart order. */
@@ -705,6 +709,7 @@ declare class SeatmapRenderer implements ISeatmapRenderer {
705
709
  } | null): void;
706
710
  /** In force now; all zero when the host set none. */
707
711
  getViewportInsets(): ViewportInsets;
712
+ setFitClearance(bottom: number): void;
708
713
  private framingViewport;
709
714
  /** Keep a buyer-driven camera move over the venue — see engine/panBounds. */
710
715
  private constrainPan;
@@ -722,7 +727,7 @@ declare class SeatmapRenderer implements ISeatmapRenderer {
722
727
  * The stage already represents the usable map area (the picker side panel is
723
728
  * a sibling), so measuring it here naturally respects open/closed panels.
724
729
  */
725
- refitCurrentView(): void;
730
+ refitCurrentView(keepBuyerCamera?: boolean): void;
726
731
  /** Step factor for the on-screen +/− buttons (B1) — same clamp path as pinch/wheel. */
727
732
  private static readonly ZOOM_STEP;
728
733
  /** The camera as it stands, for a caller rebuilding the scene under a buyer
@@ -1214,6 +1219,26 @@ declare class SeatmapRenderer implements ISeatmapRenderer {
1214
1219
  x: number;
1215
1220
  y: number;
1216
1221
  }): boolean;
1222
+ /**
1223
+ * May a press or a hover on this logical section DO anything?
1224
+ *
1225
+ * False for a block the buyer cannot buy into: one the operator closed for
1226
+ * this event, and one with no free seat left. Owner report 2026-09-07 — the
1227
+ * two closed strips beside the stage on the Ahoy Rotterdam chart (Fb, Fc)
1228
+ * opened a section card and dived the camera exactly like a sellable block,
1229
+ * so the buyer was taken somewhere there was nothing to take.
1230
+ *
1231
+ * The predicate is the minimap's `inactive` one (see getMinimapSnapshot), so
1232
+ * "inert" and "painted as unavailable" can never drift apart. Asked per
1233
+ * LOGICAL section, because that is what a tap resolves to and an arena
1234
+ * section drawn as several polygons is one place: interactive when ANY of
1235
+ * its components still has something.
1236
+ *
1237
+ * The buyer's OWN seats win over both: a block they hold every remaining
1238
+ * seat in reads as sold out, and it must still be possible to get back to
1239
+ * it. That is also the badge-tap path's destination.
1240
+ */
1241
+ sectionInteractive(sectionId: string): boolean;
1217
1242
  /** Seat ids belonging to a section (Slice 5 section-summary card). */
1218
1243
  sectionMembers(id: string): string[];
1219
1244
  private isSelectable;
@@ -1342,6 +1367,16 @@ declare class SeatmapRenderer implements ISeatmapRenderer {
1342
1367
  private retargetRoamingFocus;
1343
1368
  /** rAF-coalesced `onViewChange` — at most one host callback per animation frame. */
1344
1369
  private scheduleViewChange;
1370
+ /**
1371
+ * Labels follow the finger, not the lift. The label pass used to run only in
1372
+ * afterViewChange, i.e. when the gesture ended: every seat number and row
1373
+ * letter panned into view stayed blank until the buyer let go, and a slow
1374
+ * drag across a block read as the map struggling (owner, 2026-09-07, phone).
1375
+ * A throttled pass during the move keeps the newly revealed labels coming;
1376
+ * the settle still runs the full pass.
1377
+ */
1378
+ private movingLabelTimer;
1379
+ private refreshLabelsWhileMoving;
1345
1380
  /** Keep focal labels centred while their world font size tracks camera scale. */
1346
1381
  private sizeLabel;
1347
1382
  private updateLOD;
@@ -2422,6 +2457,26 @@ declare class PickerController {
2422
2457
  * a guest-count change silently re-based the countdown on the server default.
2423
2458
  */
2424
2459
  replaceTableQuantity(label: string, quantity: number, ttlMs?: number): Promise<HoldInfo | null>;
2460
+ /** Narrow (phone) layout, as reported by the host widget; see setNarrowLayout. */
2461
+ private narrowLayout;
2462
+ /**
2463
+ * The host tells the controller which layout it is in. The row-band rung
2464
+ * (rows drawn as category-coloured lines before the seats appear) is a
2465
+ * desktop treatment (owner call, 2026-09-07): on a phone the lines did not
2466
+ * read as rows, and a section tap should land straight on solid seats.
2467
+ * Optional on older hosts — a widget that never calls this keeps bands on.
2468
+ */
2469
+ setNarrowLayout(narrow: boolean): void;
2470
+ /**
2471
+ * Bands are wanted where the host asked, the chart allows, and the rung is
2472
+ * switched on at all. The layout gate exists (`ROW_BANDS_ON_NARROW`): the
2473
+ * owner first wanted the lines desktop-only, then, the same evening
2474
+ * (2026-09-07), on the phone as well — so a phone section tap lands on the
2475
+ * category lines like desktop. Flip the constant to make the rung
2476
+ * desktop-only again; the `sectionDetail` theme knob turns it off per chart.
2477
+ */
2478
+ private rowBandsWanted;
2479
+ private applyRowBandPreview;
2425
2480
  private rendererSelectionCap;
2426
2481
  private selectionGuestCount;
2427
2482
  private handleRendererSelect;
@@ -2532,6 +2587,10 @@ declare class PickerController {
2532
2587
  bottom?: number;
2533
2588
  left?: number;
2534
2589
  } | null): void;
2590
+ private fitClearance;
2591
+ /** Bottom chrome (the phone zoom column) the fit lifts the venue above when
2592
+ * there is room — a soft inset that never shrinks the venue. */
2593
+ setFitClearance(bottom: number): void;
2535
2594
  /** In force now; all zero when the host set none. */
2536
2595
  getViewportInsets(): {
2537
2596
  top: number;
package/dist/index.d.ts CHANGED
@@ -2,14 +2,14 @@ import { A as AccessibilityType, b as SeatCommercialAttributes, C as ChartDoc, F
2
2
  export { y as ACCESSIBILITY_RING_COLOR, z as ACCESSIBILITY_TYPES, D as AccessibilityMeta, E as AuthoringObjectState, B as BoothObject, q as Category, H as ChartLayoutConstraint, a as ChartObject, p as ChartReferenceImage, I as ChartTheme, J as ConfidenceEvidenceScope, v as CubicPath, K as DecorImageObject, n as Floor, G as GAAreaObject, j as GAInventorySegment, M as LABEL_STYLE_MAX_SIZE, N as LABEL_STYLE_MIN_SIZE, O as LabelPresentation, L as LabelStyle, Q as ObjectEditorState, U as Physical3dEvidence, V as RadialClearanceLayoutConstraint, o as RectTableSeatCounts, m as RectTableSide, W as ReferenceAccessibilitySource, X as ReferenceCalibration, Y as ReferenceCategorySource, Z as ReferenceDerivedScale, _ as ReferenceDirectAnnotationSource, $ as ReferenceDirectLandmarkCandidate, a0 as ReferenceDirectLandmarkDisposition, a1 as ReferenceDirectLandmarkRole, a2 as ReferenceDirectLandmarkSource, a3 as ReferenceDirectSeatGroup, a4 as ReferenceDirectSeatImportSource, a5 as ReferenceDirectSeatPlan, a6 as ReferenceDirectStageSource, a7 as ReferenceEnrichmentStatus, a8 as ReferenceExtractEmptyReason, a9 as ReferenceExtractEnrichment, aa as ReferenceExtractInput, ab as ReferenceExtractProposal, ac as ReferenceExtractRegionSeats, ad as ReferenceInventoryExclusionSource, ae as ReferenceInventorySource, af as ReferenceMatchReport, ag as ReferenceScanProposal, ah as ReferenceScanRowProposal, ai as ReferenceScanSectionProposal, aj as ReferenceSeatSeed, ak as ReferenceSectionTraceBatchInput, al as ReferenceSectionTraceBatchProposal, am as ReferenceSectionTraceInput, an as ReferenceSectionTraceProposal, d as ResolvedSeatConfidenceEvidence, R as RowObject, ao as SEAT_COMMERCIAL_MARKS, ap as STAGE_LABEL_STYLE_MAX_SIZE, aq as SURROUNDINGS_SHAPE_ROLES, S as SeatCommercialMark, ar as SeatCommercialMeta, as as SeatConfidenceCoverage, at as SeatConfidenceEvidence, au as SeatConfidenceModelLevel, av as SeatConfidenceModeledTarget, aw as SeatConfidenceRealityLevel, e as SeatGlyphKind, l as SeatOverride, f as SeatViewCoverage, c as SeatViewMetadata, ax as SeatViewVariant, i as SectionObject, g as SectionOutlinePath, h as SectionPathSegment, ay as SelectionLayer, r as ShapeLineCap, s as ShapeLineEnding, t as ShapeLineJoin, u as ShapeObject, az as StageLabelStyle, T as TableObject, aA as TextAlignment, aB as TextBackground, w 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-B97dNRwl.js';
3
3
  import { c as EventConfigurationRef, b as EventConfigurationVersion } from './eventConfigurations-CSuSanij.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-CSuSanij.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 combinedFloorZoneId, j as expandBooth, k as expandChart, l as expandRow, m as expandRowSlots, n as expandTable, o as expandTableSlots, p as floorObjects, q as floorStackPlacements, r as floorsOf, s as initialFloorMode, t as layoutCombinedFloorPlan, u as layoutFloorStack, v as mainFloorId, w as objectCenter, x as owningSectionForObject, y as pointInPolygon, z as pointInPolygonWithHoles, B as polygonLabelPoint, D as rowInventoryCount, G as rowSeatPositions, H as stackFloors, I as tableInventoryCount, J as tableSeatCountsBySide, K as translateObject } from './tableSizing-BGl1e6Bi.js';
6
- import { g as TicketSelectionIssue, b as GroupedTableInventoryUnit } from './ticketRestrictions-BD5hvqtL.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-BD5hvqtL.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 combinedFloorZoneId, j as expandBooth, k as expandChart, l as expandRow, m as expandRowSlots, n as expandTable, o as expandTableSlots, p as floorObjects, q as floorStackPlacements, r as floorsOf, s as initialFloorMode, t as layoutCombinedFloorPlan, u as layoutFloorStack, v as mainFloorId, w as objectCenter, x as owningSectionForObject, y as pointInPolygon, z as pointInPolygonWithHoles, B as polygonLabelPoint, D as rowInventoryCount, G as rowSeatPositions, H as stackFloors, I as tableInventoryCount, J as tableSeatCountsBySide, K as translateObject } from './tableSizing-B3SHwhya.js';
6
+ import { g as TicketSelectionIssue, b as GroupedTableInventoryUnit } from './ticketRestrictions-7N9PC4Q6.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-7N9PC4Q6.js';
8
8
  export { S as SEAT_TYPE_ICON_BODY, a as SEAT_TYPE_ICON_VIEWBOX, b as SeatTypeIconKey, c as SeatTypeIconOptions, s as seatTypeIconBody, d as seatTypeIconSvg } from './seatTypeIcons-DUEZapsF.js';
9
9
  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-DcD6uNuO.js';
10
- 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-CkrbA7iV.js';
11
- 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-DUko-vky.js';
12
- 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-DUko-vky.js';
10
+ 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-Dy7LBzNF.js';
11
+ 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-xE1rZCGy.js';
12
+ 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-xE1rZCGy.js';
13
13
  import './segmentedRowModel-NH_qhgic.js';
14
14
 
15
15
  /**
@@ -418,6 +418,8 @@ declare class SeatmapRenderer implements ISeatmapRenderer {
418
418
  /** Stage pose the last overview fit landed on — see zoomToFit. */
419
419
  private fitPose;
420
420
  private viewportInsets;
421
+ /** Bottom chrome the fit keeps clear when it can — see camera.clearFitChrome. */
422
+ private fitClearanceBottom;
421
423
  /** Effective seat radius (base × theme.seatScale), set per chart in setChart. */
422
424
  private seatR;
423
425
  /** The radius a marker is actually DRAWN at — the authored radius capped by
@@ -514,6 +516,8 @@ declare class SeatmapRenderer implements ISeatmapRenderer {
514
516
  * be overwritten by its next frame.
515
517
  */
516
518
  private activateBeacon;
519
+ /** Dive to the buyer's own seats in this section; false when it holds none. */
520
+ private focusOwnedSeatsIn;
517
521
  /** Rebuild the beacons for this camera, and hand their rings to the breath. */
518
522
  private syncBeacons;
519
523
  /** The buyer's own seats in a section, in chart order. */
@@ -705,6 +709,7 @@ declare class SeatmapRenderer implements ISeatmapRenderer {
705
709
  } | null): void;
706
710
  /** In force now; all zero when the host set none. */
707
711
  getViewportInsets(): ViewportInsets;
712
+ setFitClearance(bottom: number): void;
708
713
  private framingViewport;
709
714
  /** Keep a buyer-driven camera move over the venue — see engine/panBounds. */
710
715
  private constrainPan;
@@ -722,7 +727,7 @@ declare class SeatmapRenderer implements ISeatmapRenderer {
722
727
  * The stage already represents the usable map area (the picker side panel is
723
728
  * a sibling), so measuring it here naturally respects open/closed panels.
724
729
  */
725
- refitCurrentView(): void;
730
+ refitCurrentView(keepBuyerCamera?: boolean): void;
726
731
  /** Step factor for the on-screen +/− buttons (B1) — same clamp path as pinch/wheel. */
727
732
  private static readonly ZOOM_STEP;
728
733
  /** The camera as it stands, for a caller rebuilding the scene under a buyer
@@ -1214,6 +1219,26 @@ declare class SeatmapRenderer implements ISeatmapRenderer {
1214
1219
  x: number;
1215
1220
  y: number;
1216
1221
  }): boolean;
1222
+ /**
1223
+ * May a press or a hover on this logical section DO anything?
1224
+ *
1225
+ * False for a block the buyer cannot buy into: one the operator closed for
1226
+ * this event, and one with no free seat left. Owner report 2026-09-07 — the
1227
+ * two closed strips beside the stage on the Ahoy Rotterdam chart (Fb, Fc)
1228
+ * opened a section card and dived the camera exactly like a sellable block,
1229
+ * so the buyer was taken somewhere there was nothing to take.
1230
+ *
1231
+ * The predicate is the minimap's `inactive` one (see getMinimapSnapshot), so
1232
+ * "inert" and "painted as unavailable" can never drift apart. Asked per
1233
+ * LOGICAL section, because that is what a tap resolves to and an arena
1234
+ * section drawn as several polygons is one place: interactive when ANY of
1235
+ * its components still has something.
1236
+ *
1237
+ * The buyer's OWN seats win over both: a block they hold every remaining
1238
+ * seat in reads as sold out, and it must still be possible to get back to
1239
+ * it. That is also the badge-tap path's destination.
1240
+ */
1241
+ sectionInteractive(sectionId: string): boolean;
1217
1242
  /** Seat ids belonging to a section (Slice 5 section-summary card). */
1218
1243
  sectionMembers(id: string): string[];
1219
1244
  private isSelectable;
@@ -1342,6 +1367,16 @@ declare class SeatmapRenderer implements ISeatmapRenderer {
1342
1367
  private retargetRoamingFocus;
1343
1368
  /** rAF-coalesced `onViewChange` — at most one host callback per animation frame. */
1344
1369
  private scheduleViewChange;
1370
+ /**
1371
+ * Labels follow the finger, not the lift. The label pass used to run only in
1372
+ * afterViewChange, i.e. when the gesture ended: every seat number and row
1373
+ * letter panned into view stayed blank until the buyer let go, and a slow
1374
+ * drag across a block read as the map struggling (owner, 2026-09-07, phone).
1375
+ * A throttled pass during the move keeps the newly revealed labels coming;
1376
+ * the settle still runs the full pass.
1377
+ */
1378
+ private movingLabelTimer;
1379
+ private refreshLabelsWhileMoving;
1345
1380
  /** Keep focal labels centred while their world font size tracks camera scale. */
1346
1381
  private sizeLabel;
1347
1382
  private updateLOD;
@@ -2422,6 +2457,26 @@ declare class PickerController {
2422
2457
  * a guest-count change silently re-based the countdown on the server default.
2423
2458
  */
2424
2459
  replaceTableQuantity(label: string, quantity: number, ttlMs?: number): Promise<HoldInfo | null>;
2460
+ /** Narrow (phone) layout, as reported by the host widget; see setNarrowLayout. */
2461
+ private narrowLayout;
2462
+ /**
2463
+ * The host tells the controller which layout it is in. The row-band rung
2464
+ * (rows drawn as category-coloured lines before the seats appear) is a
2465
+ * desktop treatment (owner call, 2026-09-07): on a phone the lines did not
2466
+ * read as rows, and a section tap should land straight on solid seats.
2467
+ * Optional on older hosts — a widget that never calls this keeps bands on.
2468
+ */
2469
+ setNarrowLayout(narrow: boolean): void;
2470
+ /**
2471
+ * Bands are wanted where the host asked, the chart allows, and the rung is
2472
+ * switched on at all. The layout gate exists (`ROW_BANDS_ON_NARROW`): the
2473
+ * owner first wanted the lines desktop-only, then, the same evening
2474
+ * (2026-09-07), on the phone as well — so a phone section tap lands on the
2475
+ * category lines like desktop. Flip the constant to make the rung
2476
+ * desktop-only again; the `sectionDetail` theme knob turns it off per chart.
2477
+ */
2478
+ private rowBandsWanted;
2479
+ private applyRowBandPreview;
2425
2480
  private rendererSelectionCap;
2426
2481
  private selectionGuestCount;
2427
2482
  private handleRendererSelect;
@@ -2532,6 +2587,10 @@ declare class PickerController {
2532
2587
  bottom?: number;
2533
2588
  left?: number;
2534
2589
  } | null): void;
2590
+ private fitClearance;
2591
+ /** Bottom chrome (the phone zoom column) the fit lifts the venue above when
2592
+ * there is room — a soft inset that never shrinks the venue. */
2593
+ setFitClearance(bottom: number): void;
2535
2594
  /** In force now; all zero when the host set none. */
2536
2595
  getViewportInsets(): {
2537
2596
  top: number;