@seatlayer/core 0.71.3 → 0.71.5
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.
- package/dist/ar-JP4VPYJ2.js +1 -0
- package/dist/be-ROTFZNMH.js +1 -0
- package/dist/bg-YMQ3B5NS.js +1 -0
- package/dist/ca-L2OMCHWL.js +1 -0
- package/dist/{categoryInventory-BiUDSvBt.d.ts → categoryInventory-B8CDQtH4.d.ts} +1 -1
- package/dist/{categoryInventory-DBqgM5in.d.cts → categoryInventory-r3OfIEQn.d.cts} +1 -1
- package/dist/chunk-4F7VBQCF.js +1 -0
- package/dist/{chunk-GK4ILJFB.js → chunk-7KS6TAYH.js} +1 -1
- package/dist/{chunk-A27USMF7.js → chunk-AM2LRFAY.js} +1 -1
- package/dist/chunk-KCFEFP6H.js +1 -0
- package/dist/{chunk-7OJ6SB6V.js → chunk-KPSJDH3N.js} +1 -1
- package/dist/{chunk-FBRBY6NE.js → chunk-LR7WIR5Z.js} +1 -1
- package/dist/chunk-NKYPEBW3.js +1 -0
- package/dist/{chunk-TQWKQGXF.js → chunk-NXFDYBZY.js} +1 -1
- package/dist/{chunk-AB4ALUEW.js → chunk-SKO3DCVB.js} +1 -1
- package/dist/core/chart-ops/index.cjs +1 -1
- package/dist/core/chart-ops/index.d.cts +4 -4
- package/dist/core/chart-ops/index.d.ts +4 -4
- package/dist/core/chart-ops/index.js +1 -1
- package/dist/core/inventory/index.cjs +1 -1
- package/dist/core/inventory/index.d.cts +4 -4
- package/dist/core/inventory/index.d.ts +4 -4
- package/dist/core/inventory/index.js +1 -1
- package/dist/core/layout/index.cjs +1 -1
- package/dist/core/layout/index.d.cts +5 -4
- package/dist/core/layout/index.d.ts +5 -4
- package/dist/core/layout/index.js +1 -1
- package/dist/core/quality/index.d.cts +3 -3
- package/dist/core/quality/index.d.ts +3 -3
- package/dist/core/render-assets/index.d.cts +1 -1
- package/dist/core/render-assets/index.d.ts +1 -1
- package/dist/core/seatConfidence.d.cts +1 -1
- package/dist/core/seatConfidence.d.ts +1 -1
- package/dist/core/sections/index.cjs +1 -1
- package/dist/core/sections/index.d.cts +5 -5
- package/dist/core/sections/index.d.ts +5 -5
- package/dist/core/sections/index.js +1 -1
- package/dist/cs-CHBOZAYY.js +1 -0
- package/dist/{cy-KJLPIGNL.js → cy-ZIVBYZBX.js} +1 -1
- package/dist/da-PUY5IIER.js +1 -0
- package/dist/de-ILFIEU77.js +1 -0
- package/dist/el-5EG3QS5T.js +1 -0
- package/dist/es-YXZQB5VZ.js +1 -0
- package/dist/et-FZIUC4FC.js +1 -0
- package/dist/{eventConfigurations-CA2XhDig.d.ts → eventConfigurations-0OC43JJY.d.ts} +1 -1
- package/dist/{eventConfigurations-Csdxe89O.d.cts → eventConfigurations-ByU_uPeS.d.cts} +1 -1
- package/dist/fa-KKBNUDRE.js +1 -0
- package/dist/fi-B6JSP5Z5.js +1 -0
- package/dist/fr-T5LHFRKG.js +1 -0
- package/dist/he-JF4HU75D.js +1 -0
- package/dist/hr-S5OXZ3NI.js +1 -0
- package/dist/hu-ZZDYG6ZF.js +1 -0
- package/dist/index.cjs +1 -1
- package/dist/index.d.cts +247 -36
- package/dist/index.d.ts +247 -36
- package/dist/index.js +1 -1
- package/dist/it-A5VCFTQP.js +1 -0
- package/dist/ja-PAJD5HFJ.js +1 -0
- package/dist/ku-KV2AIB6I.js +1 -0
- package/dist/{labeling-CxZWjZBN.d.ts → labeling-B05IJwd2.d.ts} +1 -1
- package/dist/{labeling-DG-Sc8VW.d.cts → labeling-DAGq3u0z.d.cts} +1 -1
- package/dist/{layout-CUiLkR8o.d.cts → layout-DkDRcXvu.d.ts} +102 -60
- package/dist/{layout-BjTtYIy8.d.ts → layout-e0Qe7jmM.d.cts} +102 -60
- package/dist/localeLoaders-VULFUGJH.js +1 -0
- package/dist/lt-OSFNYQ2L.js +1 -0
- package/dist/lv-5INNWEN5.js +1 -0
- package/dist/nl-YOLY3DXM.js +1 -0
- package/dist/no-C5MG5NPH.js +1 -0
- package/dist/pl-ERGM2HA3.js +1 -0
- package/dist/pt-S6SBTHES.js +1 -0
- package/dist/{renderedQuality-ZDPLvzcZ.d.cts → renderedQuality-BaejczsK.d.cts} +1 -1
- package/dist/{renderedQuality-DrOWtrO-.d.ts → renderedQuality-BwwrqYzX.d.ts} +1 -1
- package/dist/{renderer-DIebhcYo.d.cts → renderer-BNicx5sw.d.ts} +4 -1
- package/dist/{renderer-DtR3EaF4.d.ts → renderer-Duv1HhQg.d.cts} +4 -1
- package/dist/ro-NQ4LIATX.js +1 -0
- package/dist/ru-ICFP6U3S.js +1 -0
- package/dist/{sections-Bb0L9lDT.d.cts → sections-BjGjR21N.d.cts} +1 -1
- package/dist/{sections-87qiciyN.d.ts → sections-CrX4vq-m.d.ts} +1 -1
- package/dist/{segmentedRowModel-CEP6crcl.d.ts → segmentedRowModel-BOO8w9Ng.d.ts} +1 -1
- package/dist/{segmentedRowModel-BqiM0U65.d.cts → segmentedRowModel-UO_YIQRB.d.cts} +1 -1
- package/dist/sk-VYH6WIZ2.js +1 -0
- package/dist/sl-AA54VE5P.js +1 -0
- package/dist/sr-Z27ZL5ZE.js +1 -0
- package/dist/sv-BT4MNMB5.js +1 -0
- package/dist/{ticketRestrictions-NKWgOV-D.d.cts → ticketRestrictions-DUQrKTpS.d.cts} +2 -2
- package/dist/{ticketRestrictions-Ch3ZKeMR.d.ts → ticketRestrictions-dvlNTwem.d.ts} +2 -2
- package/dist/tr-3TSE3BBR.js +1 -0
- package/dist/{types-DNztpn7q.d.cts → types-0yruRsAj.d.cts} +30 -1
- package/dist/{types-DNztpn7q.d.ts → types-0yruRsAj.d.ts} +30 -1
- package/dist/uk-YD2PBENU.js +1 -0
- package/dist/view3d/crossfade/panorama.d.cts +1 -1
- package/dist/view3d/crossfade/panorama.d.ts +1 -1
- package/dist/view3d/index.cjs +8 -8
- package/dist/view3d/index.d.cts +3 -3
- package/dist/view3d/index.d.ts +3 -3
- package/dist/view3d/index.js +1 -1
- package/dist/view3d/scene/scene.worker.cjs +1 -1
- package/dist/view3d/scene/scene.worker.js +1 -1
- package/dist/zh-Hans-VPQE6LWU.js +1 -0
- package/dist/zh-Hant-PUKPX45I.js +1 -0
- package/package.json +1 -1
- package/dist/ar-WXDW7P4F.js +0 -1
- package/dist/be-OZ73MTYV.js +0 -1
- package/dist/bg-NXBQVQ7X.js +0 -1
- package/dist/ca-4J7PKGEP.js +0 -1
- package/dist/chunk-652LV66L.js +0 -1
- package/dist/chunk-WXWJZ5DO.js +0 -1
- package/dist/chunk-X3K36XZM.js +0 -1
- package/dist/cs-HOVL5PRG.js +0 -1
- package/dist/da-4YKKGJN6.js +0 -1
- package/dist/de-QYK4NJIH.js +0 -1
- package/dist/el-XLXQE4YH.js +0 -1
- package/dist/es-IXMCGRNZ.js +0 -1
- package/dist/et-HK6GEAPP.js +0 -1
- package/dist/fa-RZT7N54K.js +0 -1
- package/dist/fi-NQN2STMX.js +0 -1
- package/dist/fr-AK5TYGQK.js +0 -1
- package/dist/he-CMVTS5LG.js +0 -1
- package/dist/hr-LVOAM3F2.js +0 -1
- package/dist/hu-KT2PFOAI.js +0 -1
- package/dist/it-IWWDBW67.js +0 -1
- package/dist/ja-QUYO5TKQ.js +0 -1
- package/dist/ku-FVXFA2DX.js +0 -1
- package/dist/localeLoaders-SZP47JPK.js +0 -1
- package/dist/lt-O5OARGHR.js +0 -1
- package/dist/lv-D5PW436N.js +0 -1
- package/dist/nl-VDXV6VTH.js +0 -1
- package/dist/no-YS6QVD44.js +0 -1
- package/dist/pl-NP6YVWU6.js +0 -1
- package/dist/pt-YZLA6LO4.js +0 -1
- package/dist/ro-AOVPSQKL.js +0 -1
- package/dist/ru-4LGHGVZG.js +0 -1
- package/dist/sk-4FRMG7ZG.js +0 -1
- package/dist/sl-FYABQLPI.js +0 -1
- package/dist/sr-W4SGB5AT.js +0 -1
- package/dist/sv-4LK4WE4H.js +0 -1
- package/dist/tr-M5NWILAZ.js +0 -1
- package/dist/uk-REKJ4DVG.js +0 -1
- package/dist/zh-Hans-F32F3VGF.js +0 -1
- package/dist/zh-Hant-NA3TGNDP.js +0 -1
package/dist/index.d.cts
CHANGED
|
@@ -1,15 +1,15 @@
|
|
|
1
|
-
import { C as ChartDoc, P as Point, A as AccessibilityType,
|
|
2
|
-
export {
|
|
3
|
-
import { E as EventConfigurationRef, a as EventConfigurationVersion } from './eventConfigurations-
|
|
4
|
-
export { b as EVENT_CONFIGURATION_EXPORT_SCHEMA, c as EVENT_CONFIGURATION_SCHEMA, d as EventConfigurationBaseVenue, e as EventConfigurationCompatibilityIssue, f as EventConfigurationCompatibilityIssueCode, g as EventConfigurationCompatibilityResult, h as EventConfigurationExportEnvelope, i as EventConfigurationLifecycleStatus, j as EventConfigurationOcclusion, k as EventConfigurationOverlay, l as EventConfigurationParseIssue, m as EventConfigurationParseIssueCode, n as EventConfigurationParseResult, o as EventConfigurationProductionElement, p as EventConfigurationProductionElementKind, q as EventConfigurationVenueSnapshot, r as EventConfigurationVersionParseResult, s as EventConfigurationVersionSummary, L as LegacyEventConfigurationMigrationResult, t as canTransitionEventConfiguration, u as canonicalEventConfigurationJson, v as inspectEventConfigurationCompatibility, w as migrateLegacyEventConfigurations, x as parseEventConfigurationExport, y as parseEventConfigurationVersion, z as resolveEventConfigurationRollback } from './eventConfigurations-
|
|
5
|
-
export { C as ChartBoundsOptions, E as ExpandChartOptions, R as RowSeatSlot, T as TABLE_SEAT_OFFSET,
|
|
6
|
-
import { c as TicketSelectionIssue } from './ticketRestrictions-
|
|
7
|
-
export { M as MAX_EVENT_INVENTORY, a as MAX_GA_CAPACITY, g as gaAreasOf, h as gaInventorySegments, i as gaUnitLabel, j as gaUnitLabels, k as growJoinedGAInventory, l as isGaUnitLabel, v as validGAInventorySegments } from './ticketRestrictions-
|
|
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-
|
|
9
|
-
export { 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-
|
|
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-
|
|
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-
|
|
12
|
-
import './segmentedRowModel-
|
|
1
|
+
import { C as ChartDoc, F as FloorLabelStyle, P as Point, A as AccessibilityType, i as CategoryTier, S as SeatCommercialAttributes, w as ChartDeliveryPerformance } from './types-0yruRsAj.cjs';
|
|
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, l as Floor, G as GAAreaObject, h as GAInventorySegment, K as LABEL_STYLE_MAX_SIZE, M as LABEL_STYLE_MIN_SIZE, N as LabelPresentation, L as LabelStyle, O as ObjectEditorState, Q as Physical3dEvidence, U as RadialClearanceLayoutConstraint, n as RectTableSeatCounts, k as RectTableSide, V as ReferenceAccessibilitySource, W as ReferenceCalibration, X as ReferenceCategorySource, Y as ReferenceDerivedScale, Z as ReferenceEnrichmentStatus, _ as ReferenceExtractEmptyReason, $ as ReferenceExtractEnrichment, a0 as ReferenceExtractInput, a1 as ReferenceExtractProposal, a2 as ReferenceExtractRegionSeats, a3 as ReferenceInventoryExclusionSource, a4 as ReferenceInventorySource, a5 as ReferenceMatchReport, a6 as ReferenceScanProposal, a7 as ReferenceScanRowProposal, a8 as ReferenceScanSectionProposal, a9 as ReferenceSeatSeed, aa as ReferenceSectionTraceBatchInput, ab as ReferenceSectionTraceBatchProposal, ac as ReferenceSectionTraceInput, ad as ReferenceSectionTraceProposal, c as ResolvedSeatConfidenceEvidence, R as RowObject, ae as SEAT_COMMERCIAL_MARKS, af as SURROUNDINGS_SHAPE_ROLES, ag as SeatCommercialMark, ah as SeatCommercialMeta, ai as SeatConfidenceCoverage, aj as SeatConfidenceEvidence, ak as SeatConfidenceModelLevel, al as SeatConfidenceModeledTarget, am as SeatConfidenceRealityLevel, d as SeatGlyphKind, j as SeatOverride, e as SeatViewCoverage, b as SeatViewMetadata, an as SeatViewVariant, m as SectionObject, f as SectionOutlinePath, g as SectionPathSegment, ao as SelectionLayer, q as ShapeLineCap, r as ShapeLineEnding, s as ShapeLineJoin, t as ShapeObject, T as TableObject, ap as TextAlignment, aq as TextBackground, v as TextObject, ar as TicketTierApplicability, as as TicketTierEvidence, at as TicketTierRestriction, au as Venue3DMaterialPalette, av as VenueSurveyRegistrationEvidence, aw as ZoneDef, ax as accessibilityMeta, ay as accessibilityRingColor, az as layerOf, aA as seatCommercialMeta } from './types-0yruRsAj.cjs';
|
|
3
|
+
import { E as EventConfigurationRef, a as EventConfigurationVersion } from './eventConfigurations-ByU_uPeS.cjs';
|
|
4
|
+
export { b as EVENT_CONFIGURATION_EXPORT_SCHEMA, c as EVENT_CONFIGURATION_SCHEMA, d as EventConfigurationBaseVenue, e as EventConfigurationCompatibilityIssue, f as EventConfigurationCompatibilityIssueCode, g as EventConfigurationCompatibilityResult, h as EventConfigurationExportEnvelope, i as EventConfigurationLifecycleStatus, j as EventConfigurationOcclusion, k as EventConfigurationOverlay, l as EventConfigurationParseIssue, m as EventConfigurationParseIssueCode, n as EventConfigurationParseResult, o as EventConfigurationProductionElement, p as EventConfigurationProductionElementKind, q as EventConfigurationVenueSnapshot, r as EventConfigurationVersionParseResult, s as EventConfigurationVersionSummary, L as LegacyEventConfigurationMigrationResult, t as canTransitionEventConfiguration, u as canonicalEventConfigurationJson, v as inspectEventConfigurationCompatibility, w as migrateLegacyEventConfigurations, x as parseEventConfigurationExport, y as parseEventConfigurationVersion, z as resolveEventConfigurationRollback } from './eventConfigurations-ByU_uPeS.cjs';
|
|
5
|
+
export { C as ChartBoundsOptions, E as ExpandChartOptions, F as FLOOR_STACK_GAP_RATIO, a as FLOOR_STACK_MIN_SURFACE_PX, b as FloorStackOptions, c as FloorStackPlacement, R as RowSeatSlot, T as TABLE_SEAT_OFFSET, d as TableSeatSlot, e as allObjects, f as chartBounds, g as expandBooth, h as expandChart, i as expandRow, j as expandRowSlots, k as expandTable, l as expandTableSlots, m as floorObjects, n as floorStackPlacements, o as floorsOf, p as initialFloorMode, q as layoutFloorStack, r as mainFloorId, s as objectCenter, t as owningSectionForObject, u as pointInPolygon, v as pointInPolygonWithHoles, w as polygonLabelPoint, x as rowInventoryCount, y as rowSeatPositions, z as stackFloors, A as tableInventoryCount, B as tableSeatCountsBySide, D as translateObject } from './layout-e0Qe7jmM.cjs';
|
|
6
|
+
import { c as TicketSelectionIssue } from './ticketRestrictions-DUQrKTpS.cjs';
|
|
7
|
+
export { M as MAX_EVENT_INVENTORY, a as MAX_GA_CAPACITY, g as gaAreasOf, h as gaInventorySegments, i as gaUnitLabel, j as gaUnitLabels, k as growJoinedGAInventory, l as isGaUnitLabel, v as validGAInventorySegments } from './ticketRestrictions-DUQrKTpS.cjs';
|
|
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-BjGjR21N.cjs';
|
|
9
|
+
export { 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-BaejczsK.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-Duv1HhQg.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-Duv1HhQg.cjs';
|
|
12
|
+
import './segmentedRowModel-UO_YIQRB.cjs';
|
|
13
13
|
|
|
14
14
|
/**
|
|
15
15
|
* Host chrome over the canvas, and the box that leaves for camera framing.
|
|
@@ -63,6 +63,7 @@ declare class SeatmapRenderer implements ISeatmapRenderer {
|
|
|
63
63
|
private stacked;
|
|
64
64
|
/** Buyer-facing 2D overview: floors are rigidly arranged without altering topology. */
|
|
65
65
|
private floorOverview;
|
|
66
|
+
private floorLabelStyle;
|
|
66
67
|
/** Interactive node per seat/booth — a Circle for seats, a Rect for booths. */
|
|
67
68
|
private circleById;
|
|
68
69
|
/** Seats drawn as a chair glyph, and whether they are big enough to show it. */
|
|
@@ -343,6 +344,9 @@ declare class SeatmapRenderer implements ISeatmapRenderer {
|
|
|
343
344
|
* as one rigid group for clarity; its authored internal topology is exact. */
|
|
344
345
|
setFloorOverview(on: boolean): void;
|
|
345
346
|
isFloorOverview(): boolean;
|
|
347
|
+
/** How the stacked view marks a level — see floorStack.ts. */
|
|
348
|
+
setFloorLabelStyle(style: FloorLabelStyle): void;
|
|
349
|
+
getFloorLabelStyle(): FloorLabelStyle;
|
|
346
350
|
/** Switch which floor is shown (2D). Re-renders + re-fits; no-op if unchanged. */
|
|
347
351
|
setActiveFloor(floorId: string): void;
|
|
348
352
|
/** Floors for the host's switcher (single-floor charts return one synthetic floor). */
|
|
@@ -983,6 +987,173 @@ declare function createRenderer(container: HTMLDivElement, opts?: RendererOption
|
|
|
983
987
|
*/
|
|
984
988
|
declare function compactRowLabel(rowLabel: string, sectionLabel: string | undefined): string;
|
|
985
989
|
|
|
990
|
+
/**
|
|
991
|
+
* The access needs THIS chart actually offers, with live free counts.
|
|
992
|
+
*
|
|
993
|
+
* The accessibility sheet used to render the whole twelve-key taxonomy on
|
|
994
|
+
* every event, so a buyer at a venue with nothing but wheelchair bays was
|
|
995
|
+
* offered "CART live-caption view" and "Sign-language view" — chips that
|
|
996
|
+
* filter to an empty map. Offering a provision that does not exist is worse
|
|
997
|
+
* than a short list: it reads as a venue that has it and has sold out of it.
|
|
998
|
+
*
|
|
999
|
+
* So the list is derived from the seats the chart authored. A key appears
|
|
1000
|
+
* because at least one seat carries it — including a key whose seats are all
|
|
1001
|
+
* gone, which is shown at zero and disabled rather than dropped, so the
|
|
1002
|
+
* difference between "this venue has none" and "this venue's are taken" stays
|
|
1003
|
+
* visible.
|
|
1004
|
+
*
|
|
1005
|
+
* `count` is FREE seats only, and is counted exactly the way
|
|
1006
|
+
* `sectionAccessibleFreeCount` counts them (status `free`, then the seat's own
|
|
1007
|
+
* accommodation set) — one definition of "available accessible seating" across
|
|
1008
|
+
* the overview blocks, the section card and this list.
|
|
1009
|
+
*/
|
|
1010
|
+
|
|
1011
|
+
/** One provision the event offers, and how many of it are still free. */
|
|
1012
|
+
interface PickerAccessNeed {
|
|
1013
|
+
key: AccessibilityType;
|
|
1014
|
+
/** Free seats carrying this accommodation right now. May be 0. */
|
|
1015
|
+
count: number;
|
|
1016
|
+
}
|
|
1017
|
+
/**
|
|
1018
|
+
* The provisions on this chart, in the taxonomy's own order.
|
|
1019
|
+
*
|
|
1020
|
+
* Taxonomy order rather than count order on purpose: the sheet is a stable
|
|
1021
|
+
* control, and a list that reshuffles itself as other buyers take seats is one
|
|
1022
|
+
* the returning buyer has to re-read every time.
|
|
1023
|
+
*/
|
|
1024
|
+
declare function accessNeedsFor(seats: Iterable<ExpandedSeat>, statusOf: (seatId: string) => string): PickerAccessNeed[];
|
|
1025
|
+
|
|
1026
|
+
/**
|
|
1027
|
+
* What an availability refresh means for the buyer who is looking at the map.
|
|
1028
|
+
*
|
|
1029
|
+
* A refresh re-reads OTHER buyers' inventory. It is not a chance to re-decide
|
|
1030
|
+
* what this buyer has: his selection stays selected, his hold keeps its
|
|
1031
|
+
* countdown, his cart total does not move, and the camera never travels. The
|
|
1032
|
+
* only thing a refresh may take away is something that was never his.
|
|
1033
|
+
*
|
|
1034
|
+
* That distinction is the whole reason this is a module rather than three
|
|
1035
|
+
* lines inside `applySeatsMap`. The authoritative snapshot reports a seat the
|
|
1036
|
+
* buyer is holding as `held` — held BY HIM — and a naive reader would mark it
|
|
1037
|
+
* unavailable and drop it out of his own cart on every resume. So the hold's
|
|
1038
|
+
* labels are subtracted first, and only what is left can be lost.
|
|
1039
|
+
*
|
|
1040
|
+
* WHAT ENDS A HOLD IS THE CLOCK, NOT THE SEAT STATUS. `held` on the wire says
|
|
1041
|
+
* nothing about WHO holds it, so it can never prove a hold is still ours — and
|
|
1042
|
+
* reading it as proof is how a buyer kept a DEAD hold with a LIVE countdown and
|
|
1043
|
+
* only found out when checkout failed. The hold carries its own `expiresAt`;
|
|
1044
|
+
* that is authoritative and needs no ownership information at all. Once it has
|
|
1045
|
+
* passed (or the server has told us the session's hold is gone), the hold IS
|
|
1046
|
+
* lapsed whatever the seats read, and availability only decides which of those
|
|
1047
|
+
* seats can be taken back.
|
|
1048
|
+
*
|
|
1049
|
+
* Kept pure (labels and a status lookup, no renderer, no controller) so both
|
|
1050
|
+
* buyer surfaces — the native bridge picker and the web widget — reconcile
|
|
1051
|
+
* through the SAME code and cannot drift into two answers.
|
|
1052
|
+
*/
|
|
1053
|
+
/** What a refresh changed for this buyer, and what he can do about it. */
|
|
1054
|
+
interface AvailabilityRefreshOutcome {
|
|
1055
|
+
/**
|
|
1056
|
+
* Labels the buyer had SELECTED but never held, which somebody else has
|
|
1057
|
+
* since taken. The caller deselects these and surfaces them through whatever
|
|
1058
|
+
* lost-seat path it already has.
|
|
1059
|
+
*/
|
|
1060
|
+
lost: string[];
|
|
1061
|
+
/** The buyer's own hold is gone server-side — it lapsed while he was away. */
|
|
1062
|
+
holdLapsed: boolean;
|
|
1063
|
+
/** The labels that lapsed hold covered. Empty unless {@link holdLapsed}. */
|
|
1064
|
+
lapsedLabels: string[];
|
|
1065
|
+
/**
|
|
1066
|
+
* The lapsed labels that are STILL free — the exact seats a "select them
|
|
1067
|
+
* again" offer may re-take. Always a subset of {@link lapsedLabels}, and
|
|
1068
|
+
* always read from the just-refreshed statuses rather than local memory.
|
|
1069
|
+
*/
|
|
1070
|
+
recoverable: string[];
|
|
1071
|
+
}
|
|
1072
|
+
interface AvailabilityRefreshInput {
|
|
1073
|
+
/** Public labels currently selected on the map. */
|
|
1074
|
+
selection: readonly string[];
|
|
1075
|
+
/** Public labels the buyer's OWN hold covers (empty when he holds nothing). */
|
|
1076
|
+
holdLabels: readonly string[];
|
|
1077
|
+
/** Whether a hold is open locally. `false` short-circuits every hold answer. */
|
|
1078
|
+
holdActive: boolean;
|
|
1079
|
+
/** Live status of one label after the refresh has been applied. */
|
|
1080
|
+
statusOf: (label: string) => string;
|
|
1081
|
+
/**
|
|
1082
|
+
* Epoch ms at which the buyer's OWN hold expires — the authoritative end of
|
|
1083
|
+
* it. Once `now` is past this (plus {@link HOLD_CLOCK_SKEW_MS}) the hold has
|
|
1084
|
+
* lapsed no matter what the seats read. `null`/omitted only when a caller
|
|
1085
|
+
* genuinely has no expiry, and then the clock decides nothing.
|
|
1086
|
+
*/
|
|
1087
|
+
holdExpiresAt?: number | null;
|
|
1088
|
+
/**
|
|
1089
|
+
* The server's own answer to "is this session's hold still open?", for the
|
|
1090
|
+
* surfaces that have one (a snapshot carrying hold ownership, or a 404/410
|
|
1091
|
+
* on the hold id). `false` lapses the hold on its own; `undefined` means
|
|
1092
|
+
* nobody asked, which is not the same as `true`.
|
|
1093
|
+
*/
|
|
1094
|
+
serverHoldActive?: boolean;
|
|
1095
|
+
/** Injectable clock. Defaults to `Date.now()`. */
|
|
1096
|
+
now?: number;
|
|
1097
|
+
}
|
|
1098
|
+
/**
|
|
1099
|
+
* How far past `expiresAt` a hold is still given the benefit of the doubt.
|
|
1100
|
+
*
|
|
1101
|
+
* The buyer's device clock is not the server's. A few seconds of skew must not
|
|
1102
|
+
* turn a hold the server still honours into a lapse notice, and a few seconds
|
|
1103
|
+
* of delay costs a returning buyer nothing — the notice is about a hold that
|
|
1104
|
+
* ended minutes ago in every real case.
|
|
1105
|
+
*/
|
|
1106
|
+
declare const HOLD_CLOCK_SKEW_MS = 5000;
|
|
1107
|
+
declare const EMPTY_AVAILABILITY_REFRESH: AvailabilityRefreshOutcome;
|
|
1108
|
+
/**
|
|
1109
|
+
* Has the buyer's own hold ended? Answered WITHOUT looking at seat status.
|
|
1110
|
+
*
|
|
1111
|
+
* Three sufficient signals, in the order they can be trusted:
|
|
1112
|
+
*
|
|
1113
|
+
* 1. The hold's own expiry has passed (plus {@link HOLD_CLOCK_SKEW_MS}). This
|
|
1114
|
+
* needs no ownership information and is the one that closes the hole: a
|
|
1115
|
+
* lapsed hold whose seats another buyer grabbed reads `held` on every one
|
|
1116
|
+
* of its labels, which used to be read as "still ours".
|
|
1117
|
+
* 2. The server says the session has no open hold.
|
|
1118
|
+
* 3. NOT ONE of its labels still reads `held`. Kept because it is genuinely
|
|
1119
|
+
* right — nobody at all is holding these seats, so neither are we — and it
|
|
1120
|
+
* catches a hold released server-side before its expiry.
|
|
1121
|
+
*
|
|
1122
|
+
* The conservatism that survives is the one that was always correct: while the
|
|
1123
|
+
* expiry has NOT passed and the server has not said otherwise, a label reading
|
|
1124
|
+
* `held` never declares a lapse, because that `held` is most likely us.
|
|
1125
|
+
*/
|
|
1126
|
+
declare function holdHasLapsed(input: AvailabilityRefreshInput): boolean;
|
|
1127
|
+
/**
|
|
1128
|
+
* Read a freshly applied status map on the buyer's behalf.
|
|
1129
|
+
*
|
|
1130
|
+
* Whether the hold ended is {@link holdHasLapsed}'s answer, and it is decided
|
|
1131
|
+
* before a single status is consulted. Availability then only sorts the lapsed
|
|
1132
|
+
* seats: `recoverable` is what is free NOW and can honestly be offered back,
|
|
1133
|
+
* and everything else — booked, or `held` by whoever took it — is simply gone,
|
|
1134
|
+
* which is exactly the "could not be recovered" count the copy reports.
|
|
1135
|
+
*/
|
|
1136
|
+
declare function reconcileAvailability(input: AvailabilityRefreshInput): AvailabilityRefreshOutcome;
|
|
1137
|
+
/** Did anything at all change for this buyer? */
|
|
1138
|
+
declare function refreshChangedSomething(outcome: AvailabilityRefreshOutcome): boolean;
|
|
1139
|
+
/** How a lapsed hold's seats came back — what the buyer is told, in one word. */
|
|
1140
|
+
type HoldRecoveryShape = 'all' | 'partial' | 'none';
|
|
1141
|
+
declare function holdRecoveryShape(outcome: AvailabilityRefreshOutcome): HoldRecoveryShape;
|
|
1142
|
+
/**
|
|
1143
|
+
* Should an expiry poll wait another beat before declaring the hold over?
|
|
1144
|
+
*
|
|
1145
|
+
* `PickerController.expireActiveHold` fires AT the hold's expiry and re-reads
|
|
1146
|
+
* the authoritative snapshot. It used to keep polling for as long as any of
|
|
1147
|
+
* the hold's labels still read `held`, on the same "held without saying by
|
|
1148
|
+
* whom" reasoning — which meant a hold whose seats another buyer took the
|
|
1149
|
+
* instant they were released polled FOREVER, and the countdown never ended.
|
|
1150
|
+
*
|
|
1151
|
+
* Past the expiry, `held` proves nothing and stops earning a delay. All that
|
|
1152
|
+
* is left is {@link HOLD_CLOCK_SKEW_MS} of benefit of the doubt for a device
|
|
1153
|
+
* clock that runs ahead of the server's.
|
|
1154
|
+
*/
|
|
1155
|
+
declare function shouldWaitForHoldExpiry(expiresAt: number, anyStillHeld: boolean, now?: number): boolean;
|
|
1156
|
+
|
|
986
1157
|
/**
|
|
987
1158
|
* Public host contracts for the framework-agnostic buyer picker.
|
|
988
1159
|
*
|
|
@@ -1229,6 +1400,7 @@ interface PickerRealtimeConnection {
|
|
|
1229
1400
|
interface PickerTransport {
|
|
1230
1401
|
chart(key: string): Promise<{
|
|
1231
1402
|
doc: ChartDoc;
|
|
1403
|
+
chartDelivery?: ChartDeliveryPerformance;
|
|
1232
1404
|
event: {
|
|
1233
1405
|
key: string;
|
|
1234
1406
|
name: string;
|
|
@@ -1329,6 +1501,15 @@ interface PickerCallbacks extends RendererCallbacks {
|
|
|
1329
1501
|
onBook?: (bookingRef: string) => void;
|
|
1330
1502
|
/** Any live seat-status change arrived (delta or snapshot) — e.g. to recount "N left". */
|
|
1331
1503
|
onStatusChange?: () => void;
|
|
1504
|
+
/**
|
|
1505
|
+
* An availability refresh finished — what it changed for THIS buyer.
|
|
1506
|
+
*
|
|
1507
|
+
* Fires after {@link PickerController.refreshAvailability} has already
|
|
1508
|
+
* deselected anything lost and cleared a lapsed hold, so a host reads it to
|
|
1509
|
+
* decide what to SAY, never to reconcile state itself. The outcome is empty
|
|
1510
|
+
* on the common path where nothing of the buyer's changed.
|
|
1511
|
+
*/
|
|
1512
|
+
onAvailabilityRefresh?: (outcome: AvailabilityRefreshOutcome) => void;
|
|
1332
1513
|
/**
|
|
1333
1514
|
* Mouse hover moved onto a seat (null on hover-out) — the seat enriched with
|
|
1334
1515
|
* category label/color, resolved price and live status, ready for a tooltip.
|
|
@@ -1530,10 +1711,8 @@ declare class PickerController {
|
|
|
1530
1711
|
private reconnectTimer;
|
|
1531
1712
|
private attempt;
|
|
1532
1713
|
private closed;
|
|
1533
|
-
/**
|
|
1534
|
-
|
|
1535
|
-
* mounts / non-DOM environments). */
|
|
1536
|
-
private onVisibilityChange;
|
|
1714
|
+
/** Detach for the tab-regain catch-up listener; null when not attached. */
|
|
1715
|
+
private detachVisibility;
|
|
1537
1716
|
private hold_;
|
|
1538
1717
|
private liveStatuses;
|
|
1539
1718
|
/**
|
|
@@ -1548,6 +1727,7 @@ declare class PickerController {
|
|
|
1548
1727
|
private liveDefault;
|
|
1549
1728
|
private currency;
|
|
1550
1729
|
private expiryTimer;
|
|
1730
|
+
private readonly snapshots;
|
|
1551
1731
|
constructor(options: PickerOptions);
|
|
1552
1732
|
get doc(): ChartDoc | null;
|
|
1553
1733
|
/**
|
|
@@ -1646,6 +1826,7 @@ declare class PickerController {
|
|
|
1646
1826
|
locale?: string | null;
|
|
1647
1827
|
/** Absolute event-poster URL, when the server can publicly serve one. */
|
|
1648
1828
|
posterUrl?: string | null;
|
|
1829
|
+
chartDelivery?: ChartDeliveryPerformance;
|
|
1649
1830
|
performanceProfile: PickerRenderPerformanceProfile;
|
|
1650
1831
|
} | null>;
|
|
1651
1832
|
getSelection(): PickerSeat[];
|
|
@@ -1723,19 +1904,12 @@ declare class PickerController {
|
|
|
1723
1904
|
* flag — gates the buyer widget's "★ Best seats" premium quick-pick (chip is
|
|
1724
1905
|
* present-only, exactly like the accessibility filter chips). */
|
|
1725
1906
|
hasPremiumSeats(): boolean;
|
|
1726
|
-
/** Zones which still own visible buyer inventory
|
|
1907
|
+
/** Zones which still own visible buyer inventory — ./pickerPremiumBlock. */
|
|
1727
1908
|
getBestAvailableZones(): Array<{
|
|
1728
1909
|
id: string;
|
|
1729
1910
|
label: string;
|
|
1730
1911
|
}>;
|
|
1731
|
-
/**
|
|
1732
|
-
* Client-side premium pre-pass: find the best contiguous block of `qty`
|
|
1733
|
-
* PREMIUM-flagged free seats (orphan-avoiding, closest to the focal point)
|
|
1734
|
-
* using the local seat geometry + live availability, mirroring the server's
|
|
1735
|
-
* held-back exclusion via the visible (hidden-stripped) chart and current
|
|
1736
|
-
* seat status. Returns a FULL premium block of `qty`, or null when none
|
|
1737
|
-
* exists (the caller then falls back to the normal server pick).
|
|
1738
|
-
*/
|
|
1912
|
+
/** Client-side premium pre-pass — see ./pickerPremiumBlock. */
|
|
1739
1913
|
private pickPremiumBlock;
|
|
1740
1914
|
/**
|
|
1741
1915
|
* Server-picks `qty` best free seats and holds them atomically. Throws on
|
|
@@ -1973,6 +2147,7 @@ declare class PickerController {
|
|
|
1973
2147
|
/** The live status of one unit, honouring the projection's default. */
|
|
1974
2148
|
private statusOf;
|
|
1975
2149
|
private clearBookedHoldIfSettled;
|
|
2150
|
+
/** Repaint from truth. Coalesced — see snapshotCoalescer.ts. */
|
|
1976
2151
|
private resnapshot;
|
|
1977
2152
|
/**
|
|
1978
2153
|
* Re-pull the status snapshot on demand. Live surfaces rarely need this (the
|
|
@@ -1982,18 +2157,31 @@ declare class PickerController {
|
|
|
1982
2157
|
*/
|
|
1983
2158
|
refresh(): Promise<void>;
|
|
1984
2159
|
/**
|
|
1985
|
-
*
|
|
1986
|
-
* seat-status deltas that arrived over the WS mutated the scene graph but the
|
|
1987
|
-
* canvas colors never repainted. When the tab becomes visible again we (1)
|
|
1988
|
-
* resnapshot to pull authoritative state for anything the socket may have
|
|
1989
|
-
* missed while backgrounded, then (2) forceDraw() a synchronous repaint so the
|
|
1990
|
-
* seat colors are correct immediately rather than on the next incidental draw.
|
|
2160
|
+
* Re-read OTHER buyers' inventory, without disturbing this buyer's own.
|
|
1991
2161
|
*
|
|
1992
|
-
*
|
|
1993
|
-
*
|
|
2162
|
+
* The refresh a returning buyer gets: seats sold or held by someone else
|
|
2163
|
+
* while he was on the checkout screen stop looking free, so he cannot tap
|
|
2164
|
+
* one that is already gone. What is HIS is untouched — selection, hold
|
|
2165
|
+
* countdown, cart total, camera and rung all stay. His own held seats read
|
|
2166
|
+
* `held` on the wire because HE holds them — so whether HIS hold ended is
|
|
2167
|
+
* decided by its own `expiresAt`, never by a status. See ./availabilityRefresh.
|
|
2168
|
+
*
|
|
2169
|
+
* Coalesced rather than forced: it joins an availability read already in
|
|
2170
|
+
* flight, so every re-entry point a host has (app resume, route resume, tab
|
|
2171
|
+
* regain) can call it without multiplying requests.
|
|
1994
2172
|
*/
|
|
1995
|
-
|
|
1996
|
-
|
|
2173
|
+
refreshAvailability(): Promise<AvailabilityRefreshOutcome>;
|
|
2174
|
+
/** Access needs this chart offers, with live free counts — ./accessNeeds. */
|
|
2175
|
+
getAccessNeeds(): PickerAccessNeed[];
|
|
2176
|
+
/**
|
|
2177
|
+
* Buyer catch-up on tab regain — see ./pickerVisibility for the listener and
|
|
2178
|
+
* why the order (authoritative statuses, then a synchronous draw) matters.
|
|
2179
|
+
*
|
|
2180
|
+
* It goes through {@link refreshAvailability}, not a bare resnapshot, so a
|
|
2181
|
+
* seat another buyer took while the tab was hidden leaves this buyer's
|
|
2182
|
+
* selection rather than repainting under it. Attached once, detached in destroy().
|
|
2183
|
+
*/
|
|
2184
|
+
private attachVisibility;
|
|
1997
2185
|
/**
|
|
1998
2186
|
* The sink a transport-owned v1 client pushes into.
|
|
1999
2187
|
*
|
|
@@ -2016,6 +2204,29 @@ declare class PickerController {
|
|
|
2016
2204
|
private scheduleReconnect;
|
|
2017
2205
|
}
|
|
2018
2206
|
|
|
2207
|
+
/**
|
|
2208
|
+
* Tab-regain catch-up, as a listener the controller owns but does not contain.
|
|
2209
|
+
*
|
|
2210
|
+
* While a tab is hidden Chrome pauses rAF, so seat-status deltas that arrived
|
|
2211
|
+
* over the socket mutated the scene graph while the canvas never repainted.
|
|
2212
|
+
* Coming back visible therefore needs two things in order: authoritative
|
|
2213
|
+
* statuses for whatever the socket missed, then a synchronous draw so the
|
|
2214
|
+
* colours are right immediately rather than at the next incidental paint.
|
|
2215
|
+
*
|
|
2216
|
+
* Extracted from `PickerController` (2026-08-28) so the same attach/detach
|
|
2217
|
+
* discipline can be reused by the web widget's wider "regained attention"
|
|
2218
|
+
* wiring — visibility AND window focus — without a second copy of the
|
|
2219
|
+
* double-attach and non-DOM guards.
|
|
2220
|
+
*/
|
|
2221
|
+
/**
|
|
2222
|
+
* Call `onVisible` each time the document becomes visible again.
|
|
2223
|
+
*
|
|
2224
|
+
* Returns the detach function. In a non-DOM environment (tests, SSR, a native
|
|
2225
|
+
* WebView shim without `document`) nothing is attached and the returned
|
|
2226
|
+
* function is a no-op, so callers need no environment check of their own.
|
|
2227
|
+
*/
|
|
2228
|
+
declare function attachVisibilityCatchUp(onVisible: () => void): () => void;
|
|
2229
|
+
|
|
2019
2230
|
/**
|
|
2020
2231
|
* Synthetic view-from-seat panorama, generated from chart geometry alone.
|
|
2021
2232
|
*
|
|
@@ -2262,4 +2473,4 @@ declare function formatMinor(minor: number, currency?: string, locale?: string):
|
|
|
2262
2473
|
/** Bare symbol for input adornments ("€", "$", "₹"). */
|
|
2263
2474
|
declare function currencySymbol(currency?: string): string;
|
|
2264
2475
|
|
|
2265
|
-
export { AccessibilityType, CURRENCY_CHOICES, CategoryTier, ChartDoc, DEFAULT_CURRENCY, type Dict, type Direction, EventConfigurationRef, EventConfigurationVersion, ExpandedSeat, GAAreaState, type HoldConflict, type HoldInfo, type HoldSelectionRequest, type HoldServerItem, ISeatmapRenderer, LOCALE_NAMES, type Locale, LodRung, type MoneyFormatOptions, type PanoramaResult, type PickerCallbacks, PickerController, type PickerGAArea, type PickerMapTheme, type PickerOptions, type PickerRealtimeConnection, type PickerRealtimeSink, type PickerRenderPerformanceProfile, type PickerSeat, PickerSelectionError, type PickerSelectionValidator, type PickerSelectionValidity, type PickerSelectionViolation, type PickerStatusChange, type PickerTransport, Point, RendererCallbacks, RendererMinimapSnapshot, RendererOptions, RendererQualityEvidence, RendererViewMode, SUPPORTED_LOCALES, SeatCommercialAttributes, type SeatHoverDetails, SeatMark, SeatStatus, SeatmapRenderer, type SectionCategory, type SectionSummary, TRANSLATED_LOCALES, type TableSelectionDetails, compactRowLabel, createRenderer, currencyExponent, currencySymbol, formatDate, formatMinor, formatMoney, fromMinorUnits, generateSeatPanorama, generateSeatThumb, getLocale, isLocaleLoaded, loadLocale, localeDirection, resolveLocale, setLocale, setMoneyLocale, setStringOverrides, t, tCount };
|
|
2476
|
+
export { AccessibilityType, type AvailabilityRefreshInput, type AvailabilityRefreshOutcome, CURRENCY_CHOICES, CategoryTier, ChartDeliveryPerformance, ChartDoc, DEFAULT_CURRENCY, type Dict, type Direction, EMPTY_AVAILABILITY_REFRESH, EventConfigurationRef, EventConfigurationVersion, ExpandedSeat, FloorLabelStyle, GAAreaState, HOLD_CLOCK_SKEW_MS, type HoldConflict, type HoldInfo, type HoldRecoveryShape, type HoldSelectionRequest, type HoldServerItem, ISeatmapRenderer, LOCALE_NAMES, type Locale, LodRung, type MoneyFormatOptions, type PanoramaResult, type PickerAccessNeed, type PickerCallbacks, PickerController, type PickerGAArea, type PickerMapTheme, type PickerOptions, type PickerRealtimeConnection, type PickerRealtimeSink, type PickerRenderPerformanceProfile, type PickerSeat, PickerSelectionError, type PickerSelectionValidator, type PickerSelectionValidity, type PickerSelectionViolation, type PickerStatusChange, type PickerTransport, Point, RendererCallbacks, RendererMinimapSnapshot, RendererOptions, RendererQualityEvidence, RendererViewMode, SUPPORTED_LOCALES, SeatCommercialAttributes, type SeatHoverDetails, SeatMark, SeatStatus, SeatmapRenderer, type SectionCategory, type SectionSummary, TRANSLATED_LOCALES, type TableSelectionDetails, accessNeedsFor, attachVisibilityCatchUp, compactRowLabel, createRenderer, currencyExponent, currencySymbol, formatDate, formatMinor, formatMoney, fromMinorUnits, generateSeatPanorama, generateSeatThumb, getLocale, holdHasLapsed, holdRecoveryShape, isLocaleLoaded, loadLocale, localeDirection, reconcileAvailability, refreshChangedSomething, resolveLocale, setLocale, setMoneyLocale, setStringOverrides, shouldWaitForHoldExpiry, t, tCount };
|