@seatlayer/core 0.46.0 → 0.47.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 (40) hide show
  1. package/dist/chunk-AZODENEL.js +97 -0
  2. package/dist/chunk-AZODENEL.js.map +1 -0
  3. package/dist/chunk-FVCOOLJO.js +335 -0
  4. package/dist/chunk-FVCOOLJO.js.map +1 -0
  5. package/dist/{chunk-5MRJCIZP.js → chunk-TCTAS4Z2.js} +88 -14
  6. package/dist/chunk-TCTAS4Z2.js.map +1 -0
  7. package/dist/{de-UHAOVDS3.js → de-ST4H423D.js} +6 -3
  8. package/dist/{de-UHAOVDS3.js.map → de-ST4H423D.js.map} +1 -1
  9. package/dist/{es-6TJS2L7S.js → es-WEC5NHRT.js} +6 -3
  10. package/dist/{es-6TJS2L7S.js.map → es-WEC5NHRT.js.map} +1 -1
  11. package/dist/{fr-MMSY7FPE.js → fr-SGBFNAQV.js} +6 -3
  12. package/dist/{fr-MMSY7FPE.js.map → fr-SGBFNAQV.js.map} +1 -1
  13. package/dist/index.cjs +251 -39
  14. package/dist/index.cjs.map +1 -1
  15. package/dist/index.d.cts +119 -4
  16. package/dist/index.d.ts +119 -4
  17. package/dist/index.js +152 -24
  18. package/dist/index.js.map +1 -1
  19. package/dist/{types-DBnRO2hX.d.cts → types-CE63BK0j.d.cts} +88 -10
  20. package/dist/{types-DBnRO2hX.d.ts → types-CE63BK0j.d.ts} +88 -10
  21. package/dist/view/panoramaDelivery.cjs +126 -0
  22. package/dist/view/panoramaDelivery.cjs.map +1 -0
  23. package/dist/view/panoramaDelivery.d.cts +34 -0
  24. package/dist/view/panoramaDelivery.d.ts +34 -0
  25. package/dist/view/panoramaDelivery.js +17 -0
  26. package/dist/view/panoramaDelivery.js.map +1 -0
  27. package/dist/view3d/crossfade/panorama.cjs +453 -0
  28. package/dist/view3d/crossfade/panorama.cjs.map +1 -0
  29. package/dist/view3d/crossfade/panorama.d.cts +110 -0
  30. package/dist/view3d/crossfade/panorama.d.ts +110 -0
  31. package/dist/view3d/crossfade/panorama.js +30 -0
  32. package/dist/view3d/crossfade/panorama.js.map +1 -0
  33. package/dist/view3d/index.cjs +1161 -128
  34. package/dist/view3d/index.cjs.map +1 -1
  35. package/dist/view3d/index.d.cts +60 -35
  36. package/dist/view3d/index.d.ts +60 -35
  37. package/dist/view3d/index.js +945 -300
  38. package/dist/view3d/index.js.map +1 -1
  39. package/package.json +28 -1
  40. package/dist/chunk-5MRJCIZP.js.map +0 -1
package/dist/index.d.cts CHANGED
@@ -1,5 +1,5 @@
1
- import { R as RowObject, A as AccessibilityType, S as SeatOverride, L as LabelStyle, a as RectTableSide, C as ChartDoc, b as ChartObject, B as BoothObject, E as ExpandedSeat, T as TableObject, F as Floor, P as Point, c as SectionObject, d as RectTableSeatCounts, G as GAAreaObject, e as GAInventorySegment, f as RendererQualityEvidence, g as RenderedFreeTextEvidence, I as ISeatmapRenderer, h as RendererOptions, i as SeatStatus, j as RendererViewMode, k as LodRung, l as CategoryTier, m as SeatCommercialAttributes, n as RendererCallbacks } from './types-DBnRO2hX.cjs';
2
- export { o as ACCESSIBILITY_RING_COLOR, p as ACCESSIBILITY_TYPES, q as AccessibilityMeta, r as CHART_STORAGE_KEY, s as Category, t as ChartReferenceImage, u as ChartTheme, v as CubicPath, D as DecorImageObject, w as LABEL_STYLE_MAX_SIZE, x as LABEL_STYLE_MIN_SIZE, y as LabelPresentation, z as ReferenceAccessibilitySource, H as ReferenceCalibration, J as ReferenceCategorySource, K as ReferenceDerivedScale, M as ReferenceInventoryExclusionSource, N as ReferenceInventorySource, O as ReferenceScanProposal, Q as ReferenceScanRowProposal, U as ReferenceScanSectionProposal, V as ReferenceSeatSeed, W as ReferenceSectionTraceBatchInput, X as ReferenceSectionTraceBatchProposal, Y as ReferenceSectionTraceInput, Z as ReferenceSectionTraceProposal, _ as RenderedBookableLabelEvidence, $ as RenderedGAAreaEvidence, a0 as RenderedHierarchyLabelEvidence, a1 as RenderedLabelHiddenReason, a2 as SEAT_COMMERCIAL_MARKS, a3 as SURROUNDINGS_SHAPE_ROLES, a4 as SeatCommercialMark, a5 as SeatCommercialMeta, a6 as SectionOutlinePath, a7 as SectionPathSegment, a8 as SelectionLayer, a9 as ShapeLineCap, aa as ShapeLineEnding, ab as ShapeLineJoin, ac as ShapeObject, ad as TextObject, ae as ZoneDef, af as accessibilityMeta, ag as accessibilityRingColor, ah as layerOf, ai as seatCommercialMeta } from './types-DBnRO2hX.cjs';
1
+ import { R as RowObject, A as AccessibilityType, S as SeatOverride, a as SeatViewMetadata, L as LabelStyle, b as RectTableSide, C as ChartDoc, c as ChartObject, B as BoothObject, E as ExpandedSeat, T as TableObject, F as Floor, P as Point, d as SectionObject, e as RectTableSeatCounts, G as GAAreaObject, f as GAInventorySegment, g as RendererQualityEvidence, h as RenderedFreeTextEvidence, I as ISeatmapRenderer, i as RendererOptions, j as SeatStatus, k as RendererViewMode, l as LodRung, m as CategoryTier, n as SeatCommercialAttributes, o as RendererCallbacks } from './types-CE63BK0j.cjs';
2
+ export { p as ACCESSIBILITY_RING_COLOR, q as ACCESSIBILITY_TYPES, r as AccessibilityMeta, s as AuthoringObjectState, t as CHART_STORAGE_KEY, u as Category, v as ChartReferenceImage, w as ChartTheme, x as CubicPath, D as DecorImageObject, y as LABEL_STYLE_MAX_SIZE, z as LABEL_STYLE_MIN_SIZE, H as LabelPresentation, O as ObjectEditorState, J as ReferenceAccessibilitySource, K as ReferenceCalibration, M as ReferenceCategorySource, N as ReferenceDerivedScale, Q as ReferenceInventoryExclusionSource, U as ReferenceInventorySource, V as ReferenceScanProposal, W as ReferenceScanRowProposal, X as ReferenceScanSectionProposal, Y as ReferenceSeatSeed, Z as ReferenceSectionTraceBatchInput, _ as ReferenceSectionTraceBatchProposal, $ as ReferenceSectionTraceInput, a0 as ReferenceSectionTraceProposal, a1 as RenderedBookableLabelEvidence, a2 as RenderedGAAreaEvidence, a3 as RenderedHierarchyLabelEvidence, a4 as RenderedLabelHiddenReason, a5 as SEAT_COMMERCIAL_MARKS, a6 as SURROUNDINGS_SHAPE_ROLES, a7 as SeatCommercialMark, a8 as SeatCommercialMeta, a9 as SeatViewCoverage, aa as SectionOutlinePath, ab as SectionPathSegment, ac as SelectionLayer, ad as ShapeLineCap, ae as ShapeLineEnding, af as ShapeLineJoin, ag as ShapeObject, ah as TextAlignment, ai as TextBackground, aj as TextObject, ak as ZoneDef, al as accessibilityMeta, am as accessibilityRingColor, an as layerOf, ao as seatCommercialMeta } from './types-CE63BK0j.cjs';
3
3
 
4
4
  /**
5
5
  * The segmented-row model — one logical row made of several physical rows.
@@ -34,6 +34,7 @@ interface SegmentedRowPlacement {
34
34
  totalSeats: number;
35
35
  canonical: RowObject;
36
36
  viewFromSeatUrl?: string;
37
+ viewFromSeatMeta?: RowObject['viewFromSeatMeta'];
37
38
  }
38
39
 
39
40
  /**
@@ -80,6 +81,7 @@ interface RowSeatSlot {
80
81
  wheelchairSpaceType?: SeatOverride['wheelchairSpaceType'];
81
82
  commercial?: RowObject['commercial'];
82
83
  viewUrl?: string;
84
+ viewMeta?: SeatViewMetadata;
83
85
  labelStyle?: LabelStyle;
84
86
  }
85
87
  /** Every authored table-chair slot, including skipped inventory. This mirrors
@@ -173,6 +175,9 @@ interface ExpandChartOptions {
173
175
  /** Physical height for a single-floor projection extracted from a multi-floor
174
176
  * document. Full multi-floor documents resolve each floor directly. */
175
177
  floorBaseHeightM?: number;
178
+ /** Resolve per-seat 3D eye heights (default true). Two-dimensional consumers
179
+ * such as thumbnails can disable this expensive stand-structure pass. */
180
+ resolveEyeHeights?: boolean;
176
181
  }
177
182
  /** Expand every seat-bearing object across all floors (rows, tables, booths).
178
183
  * Multi-floor ownership is resolved one floor at a time: local coordinates may
@@ -1392,6 +1397,21 @@ interface PickerStatusChange {
1392
1397
  interface PickerRealtimeSink {
1393
1398
  /** Apply a batch of label→status changes as ONE paint pass, not one per label. */
1394
1399
  applyStatuses(changes: PickerStatusChange[]): void;
1400
+ /**
1401
+ * Paint a COMPLETE projection: the default every unnamed unit takes, plus the
1402
+ * units that differ from it.
1403
+ *
1404
+ * Optional so a host implementing an older sink keeps working — a client that
1405
+ * finds it missing falls back to {@link resync}. Where it exists it replaces
1406
+ * that HTTP round trip entirely, because the frame that triggered the resync
1407
+ * already carried the whole authoritative state. On a 52k venue that is the
1408
+ * difference between a ~960 KiB verbose fetch and painting what already
1409
+ * arrived in a ~200 KiB socket frame.
1410
+ */
1411
+ applyProjection?(projection: {
1412
+ default: string;
1413
+ exceptions: Record<string, string>;
1414
+ }): void;
1395
1415
  /** Re-pull authoritative state over HTTP (a frame that cannot be diffed). */
1396
1416
  resync(): void | Promise<void>;
1397
1417
  /** Section availability changed (hidden = stripped, closed = greyed). */
@@ -1417,13 +1437,17 @@ interface PickerTransport {
1417
1437
  salesClosed?: boolean;
1418
1438
  venue?: string | null;
1419
1439
  startsAt?: number | null;
1440
+ timezone?: string | null;
1420
1441
  currency?: string;
1421
1442
  mode?: string;
1422
1443
  inventoryModelVersion?: 1 | 2;
1423
1444
  };
1424
1445
  }>;
1446
+ /** `default` is the status of every seat NOT in `seats`; absent means `free`
1447
+ * (an older server names every seat). Never assume it. */
1425
1448
  objects(key: string): Promise<{
1426
1449
  seats: Record<string, string>;
1450
+ default?: string;
1427
1451
  hidden?: string[];
1428
1452
  closed?: string[];
1429
1453
  }>;
@@ -1520,6 +1544,36 @@ interface PickerOptions extends PickerCallbacks {
1520
1544
  * and the WS protocol are identical either way.
1521
1545
  */
1522
1546
  keepLiveWhileHidden?: boolean;
1547
+ /**
1548
+ * Host overrides for the DRAWN map — see {@link PickerMapTheme}. Absent (the
1549
+ * default, and every embed) leaves the chart document's own theme untouched.
1550
+ */
1551
+ mapTheme?: PickerMapTheme | null;
1552
+ }
1553
+ /**
1554
+ * The subset of `ChartTheme` a HOST may override on the drawn canvas.
1555
+ *
1556
+ * WHY A SUBSET, AND WHY THESE FOUR. Everything here paints directly ON the
1557
+ * ground this same object sets, so a caller supplying it can be held to a
1558
+ * contrast contract over its own values (the event-page palettes are). The
1559
+ * fields deliberately left out — `seatLabelColor`, `decorFill` — paint on top
1560
+ * of CHART-authored colours instead: a category's fill, an authored décor fill.
1561
+ * A page palette knows nothing about those, so an override there would be an
1562
+ * unverifiable guess about legibility, and the chart keeps them.
1563
+ *
1564
+ * `seatScale`, `fontFamily` and the white-label branding fields are not here
1565
+ * either: they are the ORGANIZER's, authored once with the chart, and a page
1566
+ * theme is not the place to resize a venue.
1567
+ */
1568
+ interface PickerMapTheme {
1569
+ /** The canvas ground behind the seats. */
1570
+ background?: string;
1571
+ /** Row identifiers (A, B, C) drawn beside the rows. */
1572
+ rowLabelColor?: string;
1573
+ /** Default ink for free text drawn on the canvas. */
1574
+ textColor?: string;
1575
+ /** Selection / hover ring. */
1576
+ selectionColor?: string;
1523
1577
  }
1524
1578
  declare class PickerController {
1525
1579
  private readonly opts;
@@ -1530,6 +1584,8 @@ declare class PickerController {
1530
1584
  private _doc;
1531
1585
  /** Section/zone ids hidden from buyers this event (3.3) — seats vanish, not grey. */
1532
1586
  private hidden;
1587
+ /** Host overrides folded over the chart's own theme in `visibleDoc()`. */
1588
+ private mapTheme;
1533
1589
  /** Section/zone ids in the `closed` event-state (Phase 2) — seats stay, greyed
1534
1590
  * + not pickable. Kept separate from `hidden` (which strips them). */
1535
1591
  private closedSections;
@@ -1563,12 +1619,53 @@ declare class PickerController {
1563
1619
  private onVisibilityChange;
1564
1620
  private hold_;
1565
1621
  private liveStatuses;
1622
+ /**
1623
+ * What a label absent from `liveStatuses` is.
1624
+ *
1625
+ * `free` while the verbose HTTP map is the source (it names every unit), but a
1626
+ * compact realtime frame names only its exceptions — so on a mostly-sold event
1627
+ * the seats NOT listed are the booked ones. Read through {@link statusOf};
1628
+ * a bare `liveStatuses.get()` silently answers `undefined` for the majority of
1629
+ * a sold-out venue.
1630
+ */
1631
+ private liveDefault;
1566
1632
  private currency;
1567
1633
  private expiryTimer;
1568
1634
  constructor(options: PickerOptions);
1569
1635
  get doc(): ChartDoc | null;
1570
- /** The chart with hidden sections' seats removed — what buyers actually see. */
1636
+ /**
1637
+ * The chart with hidden sections' seats removed, and the host's map theme
1638
+ * folded over the chart's own — what buyers actually see.
1639
+ *
1640
+ * THE THEME IS MERGED HERE rather than pushed at the renderer separately
1641
+ * because the renderer reads its theme out of the document it is given. One
1642
+ * merge point means every rebuild — a hidden section arriving mid-sale, a
1643
+ * floor switch, a theme change — repaints from the same resolved theme
1644
+ * instead of from whichever of two sources ran last.
1645
+ *
1646
+ * The chart's theme is the BASE and only named keys are overwritten, so a
1647
+ * host that overrides the ground does not thereby erase the organizer's
1648
+ * `seatScale`, `fontFamily`, logo or badge entitlement.
1649
+ */
1571
1650
  private visibleDoc;
1651
+ /**
1652
+ * Re-ink the drawn map, in place, without losing the buyer's place in it.
1653
+ *
1654
+ * WHY THIS IS A SETTER AND NOT A MOUNT OPTION. On a templated event page the
1655
+ * palette is not known when the map mounts: the page config is a separate
1656
+ * cached read and the map is explicitly not allowed to wait for it. The
1657
+ * alternative — remounting the widget once the palette lands — would destroy
1658
+ * a hold the buyer may already be holding.
1659
+ *
1660
+ * The rebuild is the SAME recipe `render()` uses (setChart → colorblind →
1661
+ * closed sections → statuses), because setChart resets all four; the one
1662
+ * addition is restoring the selection, which `render()` has no need to do.
1663
+ * Statuses are repainted from the map already in memory rather than re-read,
1664
+ * so this costs no round trip and cannot flash a stale seat.
1665
+ *
1666
+ * Returns whether anything actually changed, so a caller may call it freely.
1667
+ */
1668
+ setMapTheme(theme: PickerMapTheme | null): boolean;
1572
1669
  /** Adopt a new hidden set; rebuild the visible chart only if it differs. */
1573
1670
  private syncHidden;
1574
1671
  /** Adopt a new closed-section set; restyle (grey + non-pickable) if it differs.
@@ -1606,6 +1703,9 @@ declare class PickerController {
1606
1703
  eventName: string;
1607
1704
  venue?: string | null;
1608
1705
  startsAt?: number | null;
1706
+ /** The EVENT's IANA zone. Every surface that prints `startsAt` must format
1707
+ * in it — see the note in pub.ts's chart route. */
1708
+ timezone?: string | null;
1609
1709
  currency?: string;
1610
1710
  /** 'test' ⇒ sandbox event (hosts show a TEST MODE ribbon). */
1611
1711
  mode?: string;
@@ -1835,7 +1935,19 @@ declare class PickerController {
1835
1935
  private setHold;
1836
1936
  private clearHold;
1837
1937
  private expireActiveHold;
1938
+ /**
1939
+ * Repaint from an authoritative map of unit statuses.
1940
+ *
1941
+ * `defaultStatus` is what every unit NOT named in `seats` is. The verbose HTTP
1942
+ * route names every unit and leaves it at `free`; the compact realtime frame
1943
+ * names only the exceptions and states its own default, which on a mostly-sold
1944
+ * event is `booked` rather than `free`. Applying a compact map while assuming
1945
+ * `free` would paint a sold-out stadium as fully available, so the default is
1946
+ * a parameter rather than a constant.
1947
+ */
1838
1948
  private applySeatsMap;
1949
+ /** The live status of one unit, honouring the projection's default. */
1950
+ private statusOf;
1839
1951
  private clearBookedHoldIfSettled;
1840
1952
  private resnapshot;
1841
1953
  /**
@@ -2000,6 +2112,9 @@ declare function loadLocale(code?: string | null): Promise<Locale>;
2000
2112
  * convert at the API boundary, not here.
2001
2113
  */
2002
2114
  declare const DEFAULT_CURRENCY = "USD";
2115
+ /** Currencies offered in event create/edit selects — shared by the plain and
2116
+ * express create forms so the two can never offer different lists. */
2117
+ declare const CURRENCY_CHOICES: string[];
2003
2118
  declare function setMoneyLocale(locale: string | undefined): void;
2004
2119
  /**
2005
2120
  * "€45" / "$1,500" / "45 €" (locale-dependent placement).
@@ -2034,4 +2149,4 @@ declare function formatMinor(minor: number, currency?: string): string;
2034
2149
  /** Bare symbol for input adornments ("€", "$", "₹"). */
2035
2150
  declare function currencySymbol(currency?: string): string;
2036
2151
 
2037
- export { AccessibilityType, type AvailabilityRule, BoothObject, CategoryTier, ChartDoc, ChartObject, DEFAULT_CURRENCY, type Dict, type ExpandChartOptions, ExpandedSeat, Floor, GAAreaObject, GAInventorySegment, type HoldConflict, type HoldInfo, type HoldSelectionRequest, type HoldServerItem, ISeatmapRenderer, LabelStyle, type Locale, LodRung, MAX_EVENT_INVENTORY, MAX_GA_CAPACITY, type PanoramaResult, type PickerCallbacks, PickerController, type PickerGAArea, type PickerOptions, type PickerRealtimeConnection, type PickerRealtimeSink, type PickerSeat, type PickerStatusChange, type PickerTransport, Point, RENDERED_QUALITY_REPORT_VERSION, RectTableSeatCounts, RectTableSide, type RenderedEvidenceState, RenderedFreeTextEvidence, type RenderedQualityFinding, type RenderedQualityFindingCode, type RenderedQualityReport, type RenderedQualitySample, RendererCallbacks, RendererOptions, RendererQualityEvidence, RendererViewMode, RowObject, type RowSeatSlot, SUPPORTED_LOCALES, SeatCommercialAttributes, type SeatHoverDetails, SeatOverride, SeatStatus, SeatmapRenderer, type SectionCategory, type SectionNode, SectionObject, type SectionSummary, TIER_HEIGHT_M, TableObject, type TableSeatSlot, type TableSelectionDetails, UNGROUPED_ID, allObjects, applyHidden, chartBounds, computeSections, createRenderer, currencyExponent, currencySymbol, expandBooth, expandChart, expandRow, expandRowSlots, expandTable, expandTableSlots, floorObjects, floorsOf, formatDate, formatMinor, formatMoney, fromMinorUnits, gaAreasOf, gaInventorySegments, gaUnitLabel, gaUnitLabels, generateSeatPanorama, generateSeatThumb, getLocale, growJoinedGAInventory, hiddenObjectIds, inspectRenderedQualityEvidence, isGaUnitLabel, isSectionHidden, loadLocale, objectCenter, owningSectionForObject, pointInPolygon, pointInPolygonWithHoles, polygonLabelPoint, resolveLocale, rowInventoryCount, rowSeatPositions, sectionGeometry, setLocale, setMoneyLocale, setStringOverrides, stackFloors, t, tCount, tableInventoryCount, tableSeatCountsBySide, validGAInventorySegments };
2152
+ export { AccessibilityType, type AvailabilityRule, BoothObject, CURRENCY_CHOICES, CategoryTier, ChartDoc, ChartObject, DEFAULT_CURRENCY, type Dict, type ExpandChartOptions, ExpandedSeat, Floor, GAAreaObject, GAInventorySegment, type HoldConflict, type HoldInfo, type HoldSelectionRequest, type HoldServerItem, ISeatmapRenderer, LabelStyle, type Locale, LodRung, MAX_EVENT_INVENTORY, MAX_GA_CAPACITY, type PanoramaResult, type PickerCallbacks, PickerController, type PickerGAArea, type PickerMapTheme, type PickerOptions, type PickerRealtimeConnection, type PickerRealtimeSink, type PickerSeat, type PickerStatusChange, type PickerTransport, Point, RENDERED_QUALITY_REPORT_VERSION, RectTableSeatCounts, RectTableSide, type RenderedEvidenceState, RenderedFreeTextEvidence, type RenderedQualityFinding, type RenderedQualityFindingCode, type RenderedQualityReport, type RenderedQualitySample, RendererCallbacks, RendererOptions, RendererQualityEvidence, RendererViewMode, RowObject, type RowSeatSlot, SUPPORTED_LOCALES, SeatCommercialAttributes, type SeatHoverDetails, SeatOverride, SeatStatus, SeatViewMetadata, SeatmapRenderer, type SectionCategory, type SectionNode, SectionObject, type SectionSummary, TIER_HEIGHT_M, TableObject, type TableSeatSlot, type TableSelectionDetails, UNGROUPED_ID, allObjects, applyHidden, chartBounds, computeSections, createRenderer, currencyExponent, currencySymbol, expandBooth, expandChart, expandRow, expandRowSlots, expandTable, expandTableSlots, floorObjects, floorsOf, formatDate, formatMinor, formatMoney, fromMinorUnits, gaAreasOf, gaInventorySegments, gaUnitLabel, gaUnitLabels, generateSeatPanorama, generateSeatThumb, getLocale, growJoinedGAInventory, hiddenObjectIds, inspectRenderedQualityEvidence, isGaUnitLabel, isSectionHidden, loadLocale, objectCenter, owningSectionForObject, pointInPolygon, pointInPolygonWithHoles, polygonLabelPoint, resolveLocale, rowInventoryCount, rowSeatPositions, sectionGeometry, setLocale, setMoneyLocale, setStringOverrides, stackFloors, t, tCount, tableInventoryCount, tableSeatCountsBySide, validGAInventorySegments };
package/dist/index.d.ts CHANGED
@@ -1,5 +1,5 @@
1
- import { R as RowObject, A as AccessibilityType, S as SeatOverride, L as LabelStyle, a as RectTableSide, C as ChartDoc, b as ChartObject, B as BoothObject, E as ExpandedSeat, T as TableObject, F as Floor, P as Point, c as SectionObject, d as RectTableSeatCounts, G as GAAreaObject, e as GAInventorySegment, f as RendererQualityEvidence, g as RenderedFreeTextEvidence, I as ISeatmapRenderer, h as RendererOptions, i as SeatStatus, j as RendererViewMode, k as LodRung, l as CategoryTier, m as SeatCommercialAttributes, n as RendererCallbacks } from './types-DBnRO2hX.js';
2
- export { o as ACCESSIBILITY_RING_COLOR, p as ACCESSIBILITY_TYPES, q as AccessibilityMeta, r as CHART_STORAGE_KEY, s as Category, t as ChartReferenceImage, u as ChartTheme, v as CubicPath, D as DecorImageObject, w as LABEL_STYLE_MAX_SIZE, x as LABEL_STYLE_MIN_SIZE, y as LabelPresentation, z as ReferenceAccessibilitySource, H as ReferenceCalibration, J as ReferenceCategorySource, K as ReferenceDerivedScale, M as ReferenceInventoryExclusionSource, N as ReferenceInventorySource, O as ReferenceScanProposal, Q as ReferenceScanRowProposal, U as ReferenceScanSectionProposal, V as ReferenceSeatSeed, W as ReferenceSectionTraceBatchInput, X as ReferenceSectionTraceBatchProposal, Y as ReferenceSectionTraceInput, Z as ReferenceSectionTraceProposal, _ as RenderedBookableLabelEvidence, $ as RenderedGAAreaEvidence, a0 as RenderedHierarchyLabelEvidence, a1 as RenderedLabelHiddenReason, a2 as SEAT_COMMERCIAL_MARKS, a3 as SURROUNDINGS_SHAPE_ROLES, a4 as SeatCommercialMark, a5 as SeatCommercialMeta, a6 as SectionOutlinePath, a7 as SectionPathSegment, a8 as SelectionLayer, a9 as ShapeLineCap, aa as ShapeLineEnding, ab as ShapeLineJoin, ac as ShapeObject, ad as TextObject, ae as ZoneDef, af as accessibilityMeta, ag as accessibilityRingColor, ah as layerOf, ai as seatCommercialMeta } from './types-DBnRO2hX.js';
1
+ import { R as RowObject, A as AccessibilityType, S as SeatOverride, a as SeatViewMetadata, L as LabelStyle, b as RectTableSide, C as ChartDoc, c as ChartObject, B as BoothObject, E as ExpandedSeat, T as TableObject, F as Floor, P as Point, d as SectionObject, e as RectTableSeatCounts, G as GAAreaObject, f as GAInventorySegment, g as RendererQualityEvidence, h as RenderedFreeTextEvidence, I as ISeatmapRenderer, i as RendererOptions, j as SeatStatus, k as RendererViewMode, l as LodRung, m as CategoryTier, n as SeatCommercialAttributes, o as RendererCallbacks } from './types-CE63BK0j.js';
2
+ export { p as ACCESSIBILITY_RING_COLOR, q as ACCESSIBILITY_TYPES, r as AccessibilityMeta, s as AuthoringObjectState, t as CHART_STORAGE_KEY, u as Category, v as ChartReferenceImage, w as ChartTheme, x as CubicPath, D as DecorImageObject, y as LABEL_STYLE_MAX_SIZE, z as LABEL_STYLE_MIN_SIZE, H as LabelPresentation, O as ObjectEditorState, J as ReferenceAccessibilitySource, K as ReferenceCalibration, M as ReferenceCategorySource, N as ReferenceDerivedScale, Q as ReferenceInventoryExclusionSource, U as ReferenceInventorySource, V as ReferenceScanProposal, W as ReferenceScanRowProposal, X as ReferenceScanSectionProposal, Y as ReferenceSeatSeed, Z as ReferenceSectionTraceBatchInput, _ as ReferenceSectionTraceBatchProposal, $ as ReferenceSectionTraceInput, a0 as ReferenceSectionTraceProposal, a1 as RenderedBookableLabelEvidence, a2 as RenderedGAAreaEvidence, a3 as RenderedHierarchyLabelEvidence, a4 as RenderedLabelHiddenReason, a5 as SEAT_COMMERCIAL_MARKS, a6 as SURROUNDINGS_SHAPE_ROLES, a7 as SeatCommercialMark, a8 as SeatCommercialMeta, a9 as SeatViewCoverage, aa as SectionOutlinePath, ab as SectionPathSegment, ac as SelectionLayer, ad as ShapeLineCap, ae as ShapeLineEnding, af as ShapeLineJoin, ag as ShapeObject, ah as TextAlignment, ai as TextBackground, aj as TextObject, ak as ZoneDef, al as accessibilityMeta, am as accessibilityRingColor, an as layerOf, ao as seatCommercialMeta } from './types-CE63BK0j.js';
3
3
 
4
4
  /**
5
5
  * The segmented-row model — one logical row made of several physical rows.
@@ -34,6 +34,7 @@ interface SegmentedRowPlacement {
34
34
  totalSeats: number;
35
35
  canonical: RowObject;
36
36
  viewFromSeatUrl?: string;
37
+ viewFromSeatMeta?: RowObject['viewFromSeatMeta'];
37
38
  }
38
39
 
39
40
  /**
@@ -80,6 +81,7 @@ interface RowSeatSlot {
80
81
  wheelchairSpaceType?: SeatOverride['wheelchairSpaceType'];
81
82
  commercial?: RowObject['commercial'];
82
83
  viewUrl?: string;
84
+ viewMeta?: SeatViewMetadata;
83
85
  labelStyle?: LabelStyle;
84
86
  }
85
87
  /** Every authored table-chair slot, including skipped inventory. This mirrors
@@ -173,6 +175,9 @@ interface ExpandChartOptions {
173
175
  /** Physical height for a single-floor projection extracted from a multi-floor
174
176
  * document. Full multi-floor documents resolve each floor directly. */
175
177
  floorBaseHeightM?: number;
178
+ /** Resolve per-seat 3D eye heights (default true). Two-dimensional consumers
179
+ * such as thumbnails can disable this expensive stand-structure pass. */
180
+ resolveEyeHeights?: boolean;
176
181
  }
177
182
  /** Expand every seat-bearing object across all floors (rows, tables, booths).
178
183
  * Multi-floor ownership is resolved one floor at a time: local coordinates may
@@ -1392,6 +1397,21 @@ interface PickerStatusChange {
1392
1397
  interface PickerRealtimeSink {
1393
1398
  /** Apply a batch of label→status changes as ONE paint pass, not one per label. */
1394
1399
  applyStatuses(changes: PickerStatusChange[]): void;
1400
+ /**
1401
+ * Paint a COMPLETE projection: the default every unnamed unit takes, plus the
1402
+ * units that differ from it.
1403
+ *
1404
+ * Optional so a host implementing an older sink keeps working — a client that
1405
+ * finds it missing falls back to {@link resync}. Where it exists it replaces
1406
+ * that HTTP round trip entirely, because the frame that triggered the resync
1407
+ * already carried the whole authoritative state. On a 52k venue that is the
1408
+ * difference between a ~960 KiB verbose fetch and painting what already
1409
+ * arrived in a ~200 KiB socket frame.
1410
+ */
1411
+ applyProjection?(projection: {
1412
+ default: string;
1413
+ exceptions: Record<string, string>;
1414
+ }): void;
1395
1415
  /** Re-pull authoritative state over HTTP (a frame that cannot be diffed). */
1396
1416
  resync(): void | Promise<void>;
1397
1417
  /** Section availability changed (hidden = stripped, closed = greyed). */
@@ -1417,13 +1437,17 @@ interface PickerTransport {
1417
1437
  salesClosed?: boolean;
1418
1438
  venue?: string | null;
1419
1439
  startsAt?: number | null;
1440
+ timezone?: string | null;
1420
1441
  currency?: string;
1421
1442
  mode?: string;
1422
1443
  inventoryModelVersion?: 1 | 2;
1423
1444
  };
1424
1445
  }>;
1446
+ /** `default` is the status of every seat NOT in `seats`; absent means `free`
1447
+ * (an older server names every seat). Never assume it. */
1425
1448
  objects(key: string): Promise<{
1426
1449
  seats: Record<string, string>;
1450
+ default?: string;
1427
1451
  hidden?: string[];
1428
1452
  closed?: string[];
1429
1453
  }>;
@@ -1520,6 +1544,36 @@ interface PickerOptions extends PickerCallbacks {
1520
1544
  * and the WS protocol are identical either way.
1521
1545
  */
1522
1546
  keepLiveWhileHidden?: boolean;
1547
+ /**
1548
+ * Host overrides for the DRAWN map — see {@link PickerMapTheme}. Absent (the
1549
+ * default, and every embed) leaves the chart document's own theme untouched.
1550
+ */
1551
+ mapTheme?: PickerMapTheme | null;
1552
+ }
1553
+ /**
1554
+ * The subset of `ChartTheme` a HOST may override on the drawn canvas.
1555
+ *
1556
+ * WHY A SUBSET, AND WHY THESE FOUR. Everything here paints directly ON the
1557
+ * ground this same object sets, so a caller supplying it can be held to a
1558
+ * contrast contract over its own values (the event-page palettes are). The
1559
+ * fields deliberately left out — `seatLabelColor`, `decorFill` — paint on top
1560
+ * of CHART-authored colours instead: a category's fill, an authored décor fill.
1561
+ * A page palette knows nothing about those, so an override there would be an
1562
+ * unverifiable guess about legibility, and the chart keeps them.
1563
+ *
1564
+ * `seatScale`, `fontFamily` and the white-label branding fields are not here
1565
+ * either: they are the ORGANIZER's, authored once with the chart, and a page
1566
+ * theme is not the place to resize a venue.
1567
+ */
1568
+ interface PickerMapTheme {
1569
+ /** The canvas ground behind the seats. */
1570
+ background?: string;
1571
+ /** Row identifiers (A, B, C) drawn beside the rows. */
1572
+ rowLabelColor?: string;
1573
+ /** Default ink for free text drawn on the canvas. */
1574
+ textColor?: string;
1575
+ /** Selection / hover ring. */
1576
+ selectionColor?: string;
1523
1577
  }
1524
1578
  declare class PickerController {
1525
1579
  private readonly opts;
@@ -1530,6 +1584,8 @@ declare class PickerController {
1530
1584
  private _doc;
1531
1585
  /** Section/zone ids hidden from buyers this event (3.3) — seats vanish, not grey. */
1532
1586
  private hidden;
1587
+ /** Host overrides folded over the chart's own theme in `visibleDoc()`. */
1588
+ private mapTheme;
1533
1589
  /** Section/zone ids in the `closed` event-state (Phase 2) — seats stay, greyed
1534
1590
  * + not pickable. Kept separate from `hidden` (which strips them). */
1535
1591
  private closedSections;
@@ -1563,12 +1619,53 @@ declare class PickerController {
1563
1619
  private onVisibilityChange;
1564
1620
  private hold_;
1565
1621
  private liveStatuses;
1622
+ /**
1623
+ * What a label absent from `liveStatuses` is.
1624
+ *
1625
+ * `free` while the verbose HTTP map is the source (it names every unit), but a
1626
+ * compact realtime frame names only its exceptions — so on a mostly-sold event
1627
+ * the seats NOT listed are the booked ones. Read through {@link statusOf};
1628
+ * a bare `liveStatuses.get()` silently answers `undefined` for the majority of
1629
+ * a sold-out venue.
1630
+ */
1631
+ private liveDefault;
1566
1632
  private currency;
1567
1633
  private expiryTimer;
1568
1634
  constructor(options: PickerOptions);
1569
1635
  get doc(): ChartDoc | null;
1570
- /** The chart with hidden sections' seats removed — what buyers actually see. */
1636
+ /**
1637
+ * The chart with hidden sections' seats removed, and the host's map theme
1638
+ * folded over the chart's own — what buyers actually see.
1639
+ *
1640
+ * THE THEME IS MERGED HERE rather than pushed at the renderer separately
1641
+ * because the renderer reads its theme out of the document it is given. One
1642
+ * merge point means every rebuild — a hidden section arriving mid-sale, a
1643
+ * floor switch, a theme change — repaints from the same resolved theme
1644
+ * instead of from whichever of two sources ran last.
1645
+ *
1646
+ * The chart's theme is the BASE and only named keys are overwritten, so a
1647
+ * host that overrides the ground does not thereby erase the organizer's
1648
+ * `seatScale`, `fontFamily`, logo or badge entitlement.
1649
+ */
1571
1650
  private visibleDoc;
1651
+ /**
1652
+ * Re-ink the drawn map, in place, without losing the buyer's place in it.
1653
+ *
1654
+ * WHY THIS IS A SETTER AND NOT A MOUNT OPTION. On a templated event page the
1655
+ * palette is not known when the map mounts: the page config is a separate
1656
+ * cached read and the map is explicitly not allowed to wait for it. The
1657
+ * alternative — remounting the widget once the palette lands — would destroy
1658
+ * a hold the buyer may already be holding.
1659
+ *
1660
+ * The rebuild is the SAME recipe `render()` uses (setChart → colorblind →
1661
+ * closed sections → statuses), because setChart resets all four; the one
1662
+ * addition is restoring the selection, which `render()` has no need to do.
1663
+ * Statuses are repainted from the map already in memory rather than re-read,
1664
+ * so this costs no round trip and cannot flash a stale seat.
1665
+ *
1666
+ * Returns whether anything actually changed, so a caller may call it freely.
1667
+ */
1668
+ setMapTheme(theme: PickerMapTheme | null): boolean;
1572
1669
  /** Adopt a new hidden set; rebuild the visible chart only if it differs. */
1573
1670
  private syncHidden;
1574
1671
  /** Adopt a new closed-section set; restyle (grey + non-pickable) if it differs.
@@ -1606,6 +1703,9 @@ declare class PickerController {
1606
1703
  eventName: string;
1607
1704
  venue?: string | null;
1608
1705
  startsAt?: number | null;
1706
+ /** The EVENT's IANA zone. Every surface that prints `startsAt` must format
1707
+ * in it — see the note in pub.ts's chart route. */
1708
+ timezone?: string | null;
1609
1709
  currency?: string;
1610
1710
  /** 'test' ⇒ sandbox event (hosts show a TEST MODE ribbon). */
1611
1711
  mode?: string;
@@ -1835,7 +1935,19 @@ declare class PickerController {
1835
1935
  private setHold;
1836
1936
  private clearHold;
1837
1937
  private expireActiveHold;
1938
+ /**
1939
+ * Repaint from an authoritative map of unit statuses.
1940
+ *
1941
+ * `defaultStatus` is what every unit NOT named in `seats` is. The verbose HTTP
1942
+ * route names every unit and leaves it at `free`; the compact realtime frame
1943
+ * names only the exceptions and states its own default, which on a mostly-sold
1944
+ * event is `booked` rather than `free`. Applying a compact map while assuming
1945
+ * `free` would paint a sold-out stadium as fully available, so the default is
1946
+ * a parameter rather than a constant.
1947
+ */
1838
1948
  private applySeatsMap;
1949
+ /** The live status of one unit, honouring the projection's default. */
1950
+ private statusOf;
1839
1951
  private clearBookedHoldIfSettled;
1840
1952
  private resnapshot;
1841
1953
  /**
@@ -2000,6 +2112,9 @@ declare function loadLocale(code?: string | null): Promise<Locale>;
2000
2112
  * convert at the API boundary, not here.
2001
2113
  */
2002
2114
  declare const DEFAULT_CURRENCY = "USD";
2115
+ /** Currencies offered in event create/edit selects — shared by the plain and
2116
+ * express create forms so the two can never offer different lists. */
2117
+ declare const CURRENCY_CHOICES: string[];
2003
2118
  declare function setMoneyLocale(locale: string | undefined): void;
2004
2119
  /**
2005
2120
  * "€45" / "$1,500" / "45 €" (locale-dependent placement).
@@ -2034,4 +2149,4 @@ declare function formatMinor(minor: number, currency?: string): string;
2034
2149
  /** Bare symbol for input adornments ("€", "$", "₹"). */
2035
2150
  declare function currencySymbol(currency?: string): string;
2036
2151
 
2037
- export { AccessibilityType, type AvailabilityRule, BoothObject, CategoryTier, ChartDoc, ChartObject, DEFAULT_CURRENCY, type Dict, type ExpandChartOptions, ExpandedSeat, Floor, GAAreaObject, GAInventorySegment, type HoldConflict, type HoldInfo, type HoldSelectionRequest, type HoldServerItem, ISeatmapRenderer, LabelStyle, type Locale, LodRung, MAX_EVENT_INVENTORY, MAX_GA_CAPACITY, type PanoramaResult, type PickerCallbacks, PickerController, type PickerGAArea, type PickerOptions, type PickerRealtimeConnection, type PickerRealtimeSink, type PickerSeat, type PickerStatusChange, type PickerTransport, Point, RENDERED_QUALITY_REPORT_VERSION, RectTableSeatCounts, RectTableSide, type RenderedEvidenceState, RenderedFreeTextEvidence, type RenderedQualityFinding, type RenderedQualityFindingCode, type RenderedQualityReport, type RenderedQualitySample, RendererCallbacks, RendererOptions, RendererQualityEvidence, RendererViewMode, RowObject, type RowSeatSlot, SUPPORTED_LOCALES, SeatCommercialAttributes, type SeatHoverDetails, SeatOverride, SeatStatus, SeatmapRenderer, type SectionCategory, type SectionNode, SectionObject, type SectionSummary, TIER_HEIGHT_M, TableObject, type TableSeatSlot, type TableSelectionDetails, UNGROUPED_ID, allObjects, applyHidden, chartBounds, computeSections, createRenderer, currencyExponent, currencySymbol, expandBooth, expandChart, expandRow, expandRowSlots, expandTable, expandTableSlots, floorObjects, floorsOf, formatDate, formatMinor, formatMoney, fromMinorUnits, gaAreasOf, gaInventorySegments, gaUnitLabel, gaUnitLabels, generateSeatPanorama, generateSeatThumb, getLocale, growJoinedGAInventory, hiddenObjectIds, inspectRenderedQualityEvidence, isGaUnitLabel, isSectionHidden, loadLocale, objectCenter, owningSectionForObject, pointInPolygon, pointInPolygonWithHoles, polygonLabelPoint, resolveLocale, rowInventoryCount, rowSeatPositions, sectionGeometry, setLocale, setMoneyLocale, setStringOverrides, stackFloors, t, tCount, tableInventoryCount, tableSeatCountsBySide, validGAInventorySegments };
2152
+ export { AccessibilityType, type AvailabilityRule, BoothObject, CURRENCY_CHOICES, CategoryTier, ChartDoc, ChartObject, DEFAULT_CURRENCY, type Dict, type ExpandChartOptions, ExpandedSeat, Floor, GAAreaObject, GAInventorySegment, type HoldConflict, type HoldInfo, type HoldSelectionRequest, type HoldServerItem, ISeatmapRenderer, LabelStyle, type Locale, LodRung, MAX_EVENT_INVENTORY, MAX_GA_CAPACITY, type PanoramaResult, type PickerCallbacks, PickerController, type PickerGAArea, type PickerMapTheme, type PickerOptions, type PickerRealtimeConnection, type PickerRealtimeSink, type PickerSeat, type PickerStatusChange, type PickerTransport, Point, RENDERED_QUALITY_REPORT_VERSION, RectTableSeatCounts, RectTableSide, type RenderedEvidenceState, RenderedFreeTextEvidence, type RenderedQualityFinding, type RenderedQualityFindingCode, type RenderedQualityReport, type RenderedQualitySample, RendererCallbacks, RendererOptions, RendererQualityEvidence, RendererViewMode, RowObject, type RowSeatSlot, SUPPORTED_LOCALES, SeatCommercialAttributes, type SeatHoverDetails, SeatOverride, SeatStatus, SeatViewMetadata, SeatmapRenderer, type SectionCategory, type SectionNode, SectionObject, type SectionSummary, TIER_HEIGHT_M, TableObject, type TableSeatSlot, type TableSelectionDetails, UNGROUPED_ID, allObjects, applyHidden, chartBounds, computeSections, createRenderer, currencyExponent, currencySymbol, expandBooth, expandChart, expandRow, expandRowSlots, expandTable, expandTableSlots, floorObjects, floorsOf, formatDate, formatMinor, formatMoney, fromMinorUnits, gaAreasOf, gaInventorySegments, gaUnitLabel, gaUnitLabels, generateSeatPanorama, generateSeatThumb, getLocale, growJoinedGAInventory, hiddenObjectIds, inspectRenderedQualityEvidence, isGaUnitLabel, isSectionHidden, loadLocale, objectCenter, owningSectionForObject, pointInPolygon, pointInPolygonWithHoles, polygonLabelPoint, resolveLocale, rowInventoryCount, rowSeatPositions, sectionGeometry, setLocale, setMoneyLocale, setStringOverrides, stackFloors, t, tCount, tableInventoryCount, tableSeatCountsBySide, validGAInventorySegments };