@seatlayer/core 0.17.0 → 0.18.1
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/index.cjs +94 -41
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +122 -6
- package/dist/index.d.ts +122 -6
- package/dist/index.js +90 -41
- package/dist/index.js.map +1 -1
- package/package.json +1 -1
package/dist/index.d.cts
CHANGED
|
@@ -109,6 +109,14 @@ interface AccessibilityMeta {
|
|
|
109
109
|
declare const ACCESSIBILITY_TYPES: AccessibilityMeta[];
|
|
110
110
|
/** Metadata for one accessibility key (undefined for unknown keys). */
|
|
111
111
|
declare function accessibilityMeta(key: AccessibilityType): AccessibilityMeta | undefined;
|
|
112
|
+
/**
|
|
113
|
+
* Outer-ring colour per accommodation. Shared by the buyer picker and the
|
|
114
|
+
* designer canvas so an accessible seat reads with the same hue in both — the
|
|
115
|
+
* seat's first-listed type wins. `wheelchair` blue is the default fallback.
|
|
116
|
+
*/
|
|
117
|
+
declare const ACCESSIBILITY_RING_COLOR: Record<AccessibilityType, string>;
|
|
118
|
+
/** Ring colour for a seat's accessibility set (first-listed type wins). */
|
|
119
|
+
declare function accessibilityRingColor(types: AccessibilityType[] | undefined): string;
|
|
112
120
|
interface SeatOverride {
|
|
113
121
|
/** 0-based seat index within the row. */
|
|
114
122
|
index: number;
|
|
@@ -119,25 +127,70 @@ interface SeatOverride {
|
|
|
119
127
|
dy?: number;
|
|
120
128
|
/** Replace the computed label entirely. */
|
|
121
129
|
label?: string;
|
|
130
|
+
/** Buyer-facing copy only. Booking/API identity remains row id + slot index
|
|
131
|
+
* internally and the legacy `label` externally for backwards compatibility. */
|
|
132
|
+
displayLabel?: string;
|
|
122
133
|
categoryKey?: string;
|
|
123
134
|
/** @deprecated legacy flag — read as `['wheelchair']`; write `accessibility`. */
|
|
124
135
|
accessible?: boolean;
|
|
125
136
|
/** Accessibility accommodations of this seat (empty/absent = none). */
|
|
126
137
|
accessibility?: AccessibilityType[];
|
|
138
|
+
/** Commercial selling/view attributes are deliberately not accessibility. */
|
|
139
|
+
commercial?: SeatCommercialAttributes;
|
|
140
|
+
/** Seat-specific view photo; falls back to the row photo. */
|
|
141
|
+
viewFromSeatUrl?: string;
|
|
142
|
+
/** Per-seat label size/color override; falls back to the row/theme default.
|
|
143
|
+
* Size is clamped to LABEL_STYLE_MIN_SIZE..MAX_SIZE; color is passed through
|
|
144
|
+
* the shared auto-contrast rule at paint time (see {@link LabelStyle}). */
|
|
145
|
+
labelStyle?: LabelStyle;
|
|
146
|
+
}
|
|
147
|
+
interface SeatCommercialAttributes {
|
|
148
|
+
restrictedView?: boolean;
|
|
149
|
+
obstructedView?: boolean;
|
|
150
|
+
premium?: boolean;
|
|
151
|
+
note?: string;
|
|
152
|
+
}
|
|
153
|
+
/**
|
|
154
|
+
* Per-object label ink + size overrides layered on top of the chart-wide Theme
|
|
155
|
+
* defaults (rowLabelColor / textColor for rows, the section-name ink for
|
|
156
|
+
* sections). Both fields are optional: an absent field means "inherit the theme
|
|
157
|
+
* default". `color` is a preferred hex — renderers still pass it through the
|
|
158
|
+
* shared auto-contrast rule (`stateAwareBookableLabelInk`), so a choice that
|
|
159
|
+
* would be illegible over the seat/section background is switched to black or
|
|
160
|
+
* white at paint time. `size` is a font size in chart units, clamped to
|
|
161
|
+
* LABEL_STYLE_MIN_SIZE..LABEL_STYLE_MAX_SIZE by the shared ops.
|
|
162
|
+
*/
|
|
163
|
+
interface LabelStyle {
|
|
164
|
+
size?: number;
|
|
165
|
+
color?: string;
|
|
166
|
+
}
|
|
167
|
+
/** Clamp bounds for a per-object label `size`, shared by ops, MCP, and UI. */
|
|
168
|
+
declare const LABEL_STYLE_MIN_SIZE = 8;
|
|
169
|
+
declare const LABEL_STYLE_MAX_SIZE = 24;
|
|
170
|
+
interface LabelPresentation {
|
|
171
|
+
visible?: boolean;
|
|
172
|
+
/** Exact Designer-owned label anchor; public semantic MCP schemas omit it. */
|
|
173
|
+
position?: Point;
|
|
174
|
+
rotation?: number;
|
|
175
|
+
style?: 'plain' | 'pill';
|
|
176
|
+
/** Per-object size/color override for this row's or section's label. */
|
|
177
|
+
labelStyle?: LabelStyle;
|
|
127
178
|
}
|
|
128
179
|
/** Brand/venue theming — applied by the renderer in both designer and picker. */
|
|
129
180
|
interface ChartTheme {
|
|
130
181
|
/** Canvas background color (default dark: #0e1117-ish radial). */
|
|
131
182
|
background?: string;
|
|
132
|
-
/**
|
|
183
|
+
/** Preferred text color for the numbers inside seat markers. */
|
|
133
184
|
seatLabelColor?: string;
|
|
185
|
+
/** Preferred color for row identifiers such as A, B, C. Falls back to textColor. */
|
|
186
|
+
rowLabelColor?: string;
|
|
134
187
|
/** Selection ring / accent color (default white ring + brand accent). */
|
|
135
188
|
selectionColor?: string;
|
|
136
189
|
/** Décor (stage/shape) default fill. */
|
|
137
190
|
decorFill?: string;
|
|
138
191
|
/** Free-text color default. */
|
|
139
192
|
textColor?: string;
|
|
140
|
-
/** Font family (CSS stack) for all rendered text —
|
|
193
|
+
/** Font family (CSS stack) for all rendered text — row labels, seat numbers, sections, décor text. */
|
|
141
194
|
fontFamily?: string;
|
|
142
195
|
/** Seat size multiplier on the base radius (0.7–1.6, default 1) — bigger seats fit longer labels. */
|
|
143
196
|
seatScale?: number;
|
|
@@ -157,6 +210,9 @@ interface RowObject {
|
|
|
157
210
|
id: string;
|
|
158
211
|
/** Row label, e.g. "A". Seat labels are `${label}-${n}`. */
|
|
159
212
|
label: string;
|
|
213
|
+
/** Buyer-facing row name. `label` remains the legacy inventory prefix. */
|
|
214
|
+
displayLabel?: string;
|
|
215
|
+
labelPresentation?: LabelPresentation;
|
|
160
216
|
/** Position of the FIRST seat. */
|
|
161
217
|
origin: Point;
|
|
162
218
|
/** Degrees, clockwise. 0 = seats laid out along +x. */
|
|
@@ -178,6 +234,35 @@ interface RowObject {
|
|
|
178
234
|
* inventory. It enables revision-safe replacement without touching manually
|
|
179
235
|
* authored rows or accepting client coordinates. */
|
|
180
236
|
referenceInventorySource?: ReferenceInventorySource;
|
|
237
|
+
/** Semantic parameters for a row produced by the shared Arc/Fan operation.
|
|
238
|
+
* Designer can reopen these parameters while every segment in the group
|
|
239
|
+
* still carries the same generation signature. Public MCP tools never accept
|
|
240
|
+
* the stored center/angles as arbitrary model-authored coordinates. */
|
|
241
|
+
arcFanGeneration?: {
|
|
242
|
+
kind: 'arc-fan-v1';
|
|
243
|
+
groupId: string;
|
|
244
|
+
center: Point;
|
|
245
|
+
innerRadius: number;
|
|
246
|
+
rowCount: number;
|
|
247
|
+
rowGap: number;
|
|
248
|
+
startAngle: number;
|
|
249
|
+
endAngle: number;
|
|
250
|
+
seatPitch: number;
|
|
251
|
+
fit: 'seat-pitch' | 'fixed-count';
|
|
252
|
+
seatsPerRow?: number;
|
|
253
|
+
facing: 'inward' | 'outward';
|
|
254
|
+
taperDegrees: number;
|
|
255
|
+
skewDegrees: number;
|
|
256
|
+
aisleGaps: {
|
|
257
|
+
left: number;
|
|
258
|
+
center: number;
|
|
259
|
+
right: number;
|
|
260
|
+
};
|
|
261
|
+
rowLabelStart: number;
|
|
262
|
+
seatLabelStart: number;
|
|
263
|
+
rowIndex: number;
|
|
264
|
+
segmentIndex: number;
|
|
265
|
+
};
|
|
181
266
|
/** First seat number (default 1). */
|
|
182
267
|
seatLabelStart?: number;
|
|
183
268
|
/** Seat numbering within the row (default ltr, step 1). */
|
|
@@ -200,6 +285,8 @@ interface RowObject {
|
|
|
200
285
|
* generates a synthetic panorama from chart geometry.
|
|
201
286
|
*/
|
|
202
287
|
viewFromSeatUrl?: string;
|
|
288
|
+
/** Default commercial attributes inherited by seats without an override. */
|
|
289
|
+
commercial?: SeatCommercialAttributes;
|
|
203
290
|
}
|
|
204
291
|
interface GAAreaObject {
|
|
205
292
|
type: 'gaArea';
|
|
@@ -340,6 +427,9 @@ interface SectionObject {
|
|
|
340
427
|
type: 'section';
|
|
341
428
|
id: string;
|
|
342
429
|
label: string;
|
|
430
|
+
/** Buyer-facing section name; logical/id fields remain stable. */
|
|
431
|
+
displayLabel?: string;
|
|
432
|
+
labelPresentation?: LabelPresentation;
|
|
343
433
|
/**
|
|
344
434
|
* Stable management/inventory identity shared by disconnected visual
|
|
345
435
|
* components of one logical section. When absent, `id` is the logical id.
|
|
@@ -347,6 +437,9 @@ interface SectionObject {
|
|
|
347
437
|
* editing, measured diffs, and source restoration remain exact.
|
|
348
438
|
*/
|
|
349
439
|
logicalSectionId?: string;
|
|
440
|
+
/** Shared semantic Arc/Fan group wrapped by this section. The section id is
|
|
441
|
+
* preserved when the fan parameters are reopened and regenerated. */
|
|
442
|
+
arcFanGroupId?: string;
|
|
350
443
|
/** Closed polygon, chart units. */
|
|
351
444
|
outline: Point[];
|
|
352
445
|
/** Optional true line/arc/cubic boundary. `outline` is a deterministic sample
|
|
@@ -536,6 +629,8 @@ interface ExpandedSeat {
|
|
|
536
629
|
id: string;
|
|
537
630
|
/** Public label: `${rowLabel}-${seatNumber}` */
|
|
538
631
|
label: string;
|
|
632
|
+
/** Buyer-facing copy; absent on legacy charts, where `label` is displayed. */
|
|
633
|
+
displayLabel?: string;
|
|
539
634
|
x: number;
|
|
540
635
|
y: number;
|
|
541
636
|
rowId: string;
|
|
@@ -546,8 +641,11 @@ interface ExpandedSeat {
|
|
|
546
641
|
accessible?: boolean;
|
|
547
642
|
/** Specific accessibility accommodations (absent = none) — picker badges/filters these. */
|
|
548
643
|
accessibility?: AccessibilityType[];
|
|
644
|
+
commercial?: SeatCommercialAttributes;
|
|
549
645
|
/** Organizer-supplied view-from-seat image (inherited from the row). */
|
|
550
646
|
viewUrl?: string;
|
|
647
|
+
/** Per-seat label size/color override; absent = inherit the row/theme default. */
|
|
648
|
+
labelStyle?: LabelStyle;
|
|
551
649
|
}
|
|
552
650
|
type SeatStatus = 'free' | 'held' | 'booked' | 'not_for_sale';
|
|
553
651
|
interface RendererCallbacks {
|
|
@@ -964,10 +1062,14 @@ interface RowSeatSlot {
|
|
|
964
1062
|
x: number;
|
|
965
1063
|
y: number;
|
|
966
1064
|
label: string;
|
|
1065
|
+
displayLabel: string;
|
|
967
1066
|
categoryKey: string;
|
|
968
1067
|
skipped: boolean;
|
|
969
1068
|
accessible: boolean;
|
|
970
1069
|
accessibility: AccessibilityType[];
|
|
1070
|
+
commercial?: RowObject['commercial'];
|
|
1071
|
+
viewUrl?: string;
|
|
1072
|
+
labelStyle?: LabelStyle;
|
|
971
1073
|
}
|
|
972
1074
|
declare function expandRowSlots(row: RowObject): RowSeatSlot[];
|
|
973
1075
|
declare function expandRow(row: RowObject): ExpandedSeat[];
|
|
@@ -1394,9 +1496,16 @@ declare class SeatmapRenderer implements ISeatmapRenderer {
|
|
|
1394
1496
|
private renderBoothUnit;
|
|
1395
1497
|
/** The category's display color — Okabe-Ito hue when colorblind-safe is on. */
|
|
1396
1498
|
private seatBaseColor;
|
|
1397
|
-
/**
|
|
1398
|
-
*
|
|
1399
|
-
|
|
1499
|
+
/** Per-seat authored label size relative to the neutral default (1 = default),
|
|
1500
|
+
* mirroring the section convention (labelStyle.size ?? 18) / 18. Only real
|
|
1501
|
+
* seats carry labelStyle, so booths and unstyled seats resolve to 1. */
|
|
1502
|
+
private seatLabelScale;
|
|
1503
|
+
/** Preferred label ink for a seat: the authored per-seat colour when set,
|
|
1504
|
+
* otherwise today's theme default. Fed through auto-contrast by seatLabelInk. */
|
|
1505
|
+
private seatPreferredLabelInk;
|
|
1506
|
+
/** Resolve a seat's label ink against the paint actually visible, honouring an
|
|
1507
|
+
* authored per-seat colour through the same auto-contrast rule as sections. */
|
|
1508
|
+
private seatLabelInk;
|
|
1400
1509
|
/** Apply fill/stroke/opacity for a seat's current status + selection. */
|
|
1401
1510
|
private paintSeat;
|
|
1402
1511
|
/** True when a seat sits in a section/zone currently marked `closed`. */
|
|
@@ -2073,6 +2182,13 @@ declare class PickerController {
|
|
|
2073
2182
|
private applySeatsMap;
|
|
2074
2183
|
private clearBookedHoldIfSettled;
|
|
2075
2184
|
private resnapshot;
|
|
2185
|
+
/**
|
|
2186
|
+
* Re-pull the status snapshot on demand. Live surfaces rarely need this (the
|
|
2187
|
+
* socket keeps them fresh); local/mock transports with no socket call it
|
|
2188
|
+
* after they mutate state (e.g. the demo books a hold) so the renderer and
|
|
2189
|
+
* every onStatusChange consumer repaint from the new truth.
|
|
2190
|
+
*/
|
|
2191
|
+
refresh(): Promise<void>;
|
|
2076
2192
|
/**
|
|
2077
2193
|
* Buyer catch-up on tab regain. While a tab is hidden Chrome pauses rAF, so
|
|
2078
2194
|
* seat-status deltas that arrived over the WS mutated the scene graph but the
|
|
@@ -2183,4 +2299,4 @@ declare function formatMoney(amount: number, currency?: string, fractionDigits?:
|
|
|
2183
2299
|
/** Bare symbol for input adornments ("€", "$", "₹"). */
|
|
2184
2300
|
declare function currencySymbol(currency?: string): string;
|
|
2185
2301
|
|
|
2186
|
-
export { ACCESSIBILITY_TYPES, type AccessibilityMeta, type AccessibilityType, type AvailabilityRule, type BoothObject, CHART_STORAGE_KEY, type Category, type CategoryTier, type ChartDoc, type ChartObject, type ChartReferenceImage, type ChartTheme, type CubicPath, DEFAULT_CURRENCY, type DecorImageObject, type Dict, type ExpandedSeat, type Floor, type GAAreaObject, type HoldConflict, type HoldInfo, type HoldSelectionRequest, type HoldServerItem, type ISeatmapRenderer, type Locale, type LodRung, MAX_EVENT_INVENTORY, MAX_GA_CAPACITY, type PanoramaResult, type PickerCallbacks, PickerController, type PickerOptions, type PickerSeat, type PickerTransport, type Point, type ReferenceAccessibilitySource, type ReferenceCalibration, type ReferenceCategorySource, type ReferenceDerivedScale, type ReferenceInventoryExclusionSource, type ReferenceInventorySource, type RenderedBookableLabelEvidence, type RenderedFreeTextEvidence, type RenderedGAAreaEvidence, type RenderedHierarchyLabelEvidence, type RenderedLabelHiddenReason, type RendererCallbacks, type RendererOptions, type RendererQualityEvidence, type RowObject, type RowSeatSlot, SUPPORTED_LOCALES, type SeatHoverDetails, type SeatOverride, type SeatStatus, SeatmapRenderer, type SectionCategory, type SectionNode, type SectionObject, type SectionOutlinePath, type SectionPathSegment, type SectionSummary, type SelectionLayer, type ShapeObject, type TableObject, type TextObject, UNGROUPED_ID, type ZoneDef, accessibilityMeta, allObjects, applyHidden, chartBounds, computeSections, createRenderer, currencySymbol, expandBooth, expandChart, expandRow, expandRowSlots, expandTable, floorObjects, floorsOf, formatDate, formatMoney, gaAreasOf, gaUnitLabel, gaUnitLabels, generateSeatPanorama, generateSeatThumb, getLocale, hiddenObjectIds, isGaUnitLabel, isSectionHidden, layerOf, loadLocale, objectCenter, pointInPolygon, pointInPolygonWithHoles, polygonLabelPoint, resolveLocale, setLocale, setMoneyLocale, setStringOverrides, stackFloors, t, tCount };
|
|
2302
|
+
export { ACCESSIBILITY_RING_COLOR, ACCESSIBILITY_TYPES, type AccessibilityMeta, type AccessibilityType, type AvailabilityRule, type BoothObject, CHART_STORAGE_KEY, type Category, type CategoryTier, type ChartDoc, type ChartObject, type ChartReferenceImage, type ChartTheme, type CubicPath, DEFAULT_CURRENCY, type DecorImageObject, type Dict, type ExpandedSeat, type Floor, type GAAreaObject, type HoldConflict, type HoldInfo, type HoldSelectionRequest, type HoldServerItem, type ISeatmapRenderer, LABEL_STYLE_MAX_SIZE, LABEL_STYLE_MIN_SIZE, type LabelPresentation, type LabelStyle, type Locale, type LodRung, MAX_EVENT_INVENTORY, MAX_GA_CAPACITY, type PanoramaResult, type PickerCallbacks, PickerController, type PickerOptions, type PickerSeat, type PickerTransport, type Point, type ReferenceAccessibilitySource, type ReferenceCalibration, type ReferenceCategorySource, type ReferenceDerivedScale, type ReferenceInventoryExclusionSource, type ReferenceInventorySource, type RenderedBookableLabelEvidence, type RenderedFreeTextEvidence, type RenderedGAAreaEvidence, type RenderedHierarchyLabelEvidence, type RenderedLabelHiddenReason, type RendererCallbacks, type RendererOptions, type RendererQualityEvidence, type RowObject, type RowSeatSlot, SUPPORTED_LOCALES, type SeatCommercialAttributes, type SeatHoverDetails, type SeatOverride, type SeatStatus, SeatmapRenderer, type SectionCategory, type SectionNode, type SectionObject, type SectionOutlinePath, type SectionPathSegment, type SectionSummary, type SelectionLayer, type ShapeObject, type TableObject, type TextObject, UNGROUPED_ID, type ZoneDef, accessibilityMeta, accessibilityRingColor, allObjects, applyHidden, chartBounds, computeSections, createRenderer, currencySymbol, expandBooth, expandChart, expandRow, expandRowSlots, expandTable, floorObjects, floorsOf, formatDate, formatMoney, gaAreasOf, gaUnitLabel, gaUnitLabels, generateSeatPanorama, generateSeatThumb, getLocale, hiddenObjectIds, isGaUnitLabel, isSectionHidden, layerOf, loadLocale, objectCenter, pointInPolygon, pointInPolygonWithHoles, polygonLabelPoint, resolveLocale, setLocale, setMoneyLocale, setStringOverrides, stackFloors, t, tCount };
|
package/dist/index.d.ts
CHANGED
|
@@ -109,6 +109,14 @@ interface AccessibilityMeta {
|
|
|
109
109
|
declare const ACCESSIBILITY_TYPES: AccessibilityMeta[];
|
|
110
110
|
/** Metadata for one accessibility key (undefined for unknown keys). */
|
|
111
111
|
declare function accessibilityMeta(key: AccessibilityType): AccessibilityMeta | undefined;
|
|
112
|
+
/**
|
|
113
|
+
* Outer-ring colour per accommodation. Shared by the buyer picker and the
|
|
114
|
+
* designer canvas so an accessible seat reads with the same hue in both — the
|
|
115
|
+
* seat's first-listed type wins. `wheelchair` blue is the default fallback.
|
|
116
|
+
*/
|
|
117
|
+
declare const ACCESSIBILITY_RING_COLOR: Record<AccessibilityType, string>;
|
|
118
|
+
/** Ring colour for a seat's accessibility set (first-listed type wins). */
|
|
119
|
+
declare function accessibilityRingColor(types: AccessibilityType[] | undefined): string;
|
|
112
120
|
interface SeatOverride {
|
|
113
121
|
/** 0-based seat index within the row. */
|
|
114
122
|
index: number;
|
|
@@ -119,25 +127,70 @@ interface SeatOverride {
|
|
|
119
127
|
dy?: number;
|
|
120
128
|
/** Replace the computed label entirely. */
|
|
121
129
|
label?: string;
|
|
130
|
+
/** Buyer-facing copy only. Booking/API identity remains row id + slot index
|
|
131
|
+
* internally and the legacy `label` externally for backwards compatibility. */
|
|
132
|
+
displayLabel?: string;
|
|
122
133
|
categoryKey?: string;
|
|
123
134
|
/** @deprecated legacy flag — read as `['wheelchair']`; write `accessibility`. */
|
|
124
135
|
accessible?: boolean;
|
|
125
136
|
/** Accessibility accommodations of this seat (empty/absent = none). */
|
|
126
137
|
accessibility?: AccessibilityType[];
|
|
138
|
+
/** Commercial selling/view attributes are deliberately not accessibility. */
|
|
139
|
+
commercial?: SeatCommercialAttributes;
|
|
140
|
+
/** Seat-specific view photo; falls back to the row photo. */
|
|
141
|
+
viewFromSeatUrl?: string;
|
|
142
|
+
/** Per-seat label size/color override; falls back to the row/theme default.
|
|
143
|
+
* Size is clamped to LABEL_STYLE_MIN_SIZE..MAX_SIZE; color is passed through
|
|
144
|
+
* the shared auto-contrast rule at paint time (see {@link LabelStyle}). */
|
|
145
|
+
labelStyle?: LabelStyle;
|
|
146
|
+
}
|
|
147
|
+
interface SeatCommercialAttributes {
|
|
148
|
+
restrictedView?: boolean;
|
|
149
|
+
obstructedView?: boolean;
|
|
150
|
+
premium?: boolean;
|
|
151
|
+
note?: string;
|
|
152
|
+
}
|
|
153
|
+
/**
|
|
154
|
+
* Per-object label ink + size overrides layered on top of the chart-wide Theme
|
|
155
|
+
* defaults (rowLabelColor / textColor for rows, the section-name ink for
|
|
156
|
+
* sections). Both fields are optional: an absent field means "inherit the theme
|
|
157
|
+
* default". `color` is a preferred hex — renderers still pass it through the
|
|
158
|
+
* shared auto-contrast rule (`stateAwareBookableLabelInk`), so a choice that
|
|
159
|
+
* would be illegible over the seat/section background is switched to black or
|
|
160
|
+
* white at paint time. `size` is a font size in chart units, clamped to
|
|
161
|
+
* LABEL_STYLE_MIN_SIZE..LABEL_STYLE_MAX_SIZE by the shared ops.
|
|
162
|
+
*/
|
|
163
|
+
interface LabelStyle {
|
|
164
|
+
size?: number;
|
|
165
|
+
color?: string;
|
|
166
|
+
}
|
|
167
|
+
/** Clamp bounds for a per-object label `size`, shared by ops, MCP, and UI. */
|
|
168
|
+
declare const LABEL_STYLE_MIN_SIZE = 8;
|
|
169
|
+
declare const LABEL_STYLE_MAX_SIZE = 24;
|
|
170
|
+
interface LabelPresentation {
|
|
171
|
+
visible?: boolean;
|
|
172
|
+
/** Exact Designer-owned label anchor; public semantic MCP schemas omit it. */
|
|
173
|
+
position?: Point;
|
|
174
|
+
rotation?: number;
|
|
175
|
+
style?: 'plain' | 'pill';
|
|
176
|
+
/** Per-object size/color override for this row's or section's label. */
|
|
177
|
+
labelStyle?: LabelStyle;
|
|
127
178
|
}
|
|
128
179
|
/** Brand/venue theming — applied by the renderer in both designer and picker. */
|
|
129
180
|
interface ChartTheme {
|
|
130
181
|
/** Canvas background color (default dark: #0e1117-ish radial). */
|
|
131
182
|
background?: string;
|
|
132
|
-
/**
|
|
183
|
+
/** Preferred text color for the numbers inside seat markers. */
|
|
133
184
|
seatLabelColor?: string;
|
|
185
|
+
/** Preferred color for row identifiers such as A, B, C. Falls back to textColor. */
|
|
186
|
+
rowLabelColor?: string;
|
|
134
187
|
/** Selection ring / accent color (default white ring + brand accent). */
|
|
135
188
|
selectionColor?: string;
|
|
136
189
|
/** Décor (stage/shape) default fill. */
|
|
137
190
|
decorFill?: string;
|
|
138
191
|
/** Free-text color default. */
|
|
139
192
|
textColor?: string;
|
|
140
|
-
/** Font family (CSS stack) for all rendered text —
|
|
193
|
+
/** Font family (CSS stack) for all rendered text — row labels, seat numbers, sections, décor text. */
|
|
141
194
|
fontFamily?: string;
|
|
142
195
|
/** Seat size multiplier on the base radius (0.7–1.6, default 1) — bigger seats fit longer labels. */
|
|
143
196
|
seatScale?: number;
|
|
@@ -157,6 +210,9 @@ interface RowObject {
|
|
|
157
210
|
id: string;
|
|
158
211
|
/** Row label, e.g. "A". Seat labels are `${label}-${n}`. */
|
|
159
212
|
label: string;
|
|
213
|
+
/** Buyer-facing row name. `label` remains the legacy inventory prefix. */
|
|
214
|
+
displayLabel?: string;
|
|
215
|
+
labelPresentation?: LabelPresentation;
|
|
160
216
|
/** Position of the FIRST seat. */
|
|
161
217
|
origin: Point;
|
|
162
218
|
/** Degrees, clockwise. 0 = seats laid out along +x. */
|
|
@@ -178,6 +234,35 @@ interface RowObject {
|
|
|
178
234
|
* inventory. It enables revision-safe replacement without touching manually
|
|
179
235
|
* authored rows or accepting client coordinates. */
|
|
180
236
|
referenceInventorySource?: ReferenceInventorySource;
|
|
237
|
+
/** Semantic parameters for a row produced by the shared Arc/Fan operation.
|
|
238
|
+
* Designer can reopen these parameters while every segment in the group
|
|
239
|
+
* still carries the same generation signature. Public MCP tools never accept
|
|
240
|
+
* the stored center/angles as arbitrary model-authored coordinates. */
|
|
241
|
+
arcFanGeneration?: {
|
|
242
|
+
kind: 'arc-fan-v1';
|
|
243
|
+
groupId: string;
|
|
244
|
+
center: Point;
|
|
245
|
+
innerRadius: number;
|
|
246
|
+
rowCount: number;
|
|
247
|
+
rowGap: number;
|
|
248
|
+
startAngle: number;
|
|
249
|
+
endAngle: number;
|
|
250
|
+
seatPitch: number;
|
|
251
|
+
fit: 'seat-pitch' | 'fixed-count';
|
|
252
|
+
seatsPerRow?: number;
|
|
253
|
+
facing: 'inward' | 'outward';
|
|
254
|
+
taperDegrees: number;
|
|
255
|
+
skewDegrees: number;
|
|
256
|
+
aisleGaps: {
|
|
257
|
+
left: number;
|
|
258
|
+
center: number;
|
|
259
|
+
right: number;
|
|
260
|
+
};
|
|
261
|
+
rowLabelStart: number;
|
|
262
|
+
seatLabelStart: number;
|
|
263
|
+
rowIndex: number;
|
|
264
|
+
segmentIndex: number;
|
|
265
|
+
};
|
|
181
266
|
/** First seat number (default 1). */
|
|
182
267
|
seatLabelStart?: number;
|
|
183
268
|
/** Seat numbering within the row (default ltr, step 1). */
|
|
@@ -200,6 +285,8 @@ interface RowObject {
|
|
|
200
285
|
* generates a synthetic panorama from chart geometry.
|
|
201
286
|
*/
|
|
202
287
|
viewFromSeatUrl?: string;
|
|
288
|
+
/** Default commercial attributes inherited by seats without an override. */
|
|
289
|
+
commercial?: SeatCommercialAttributes;
|
|
203
290
|
}
|
|
204
291
|
interface GAAreaObject {
|
|
205
292
|
type: 'gaArea';
|
|
@@ -340,6 +427,9 @@ interface SectionObject {
|
|
|
340
427
|
type: 'section';
|
|
341
428
|
id: string;
|
|
342
429
|
label: string;
|
|
430
|
+
/** Buyer-facing section name; logical/id fields remain stable. */
|
|
431
|
+
displayLabel?: string;
|
|
432
|
+
labelPresentation?: LabelPresentation;
|
|
343
433
|
/**
|
|
344
434
|
* Stable management/inventory identity shared by disconnected visual
|
|
345
435
|
* components of one logical section. When absent, `id` is the logical id.
|
|
@@ -347,6 +437,9 @@ interface SectionObject {
|
|
|
347
437
|
* editing, measured diffs, and source restoration remain exact.
|
|
348
438
|
*/
|
|
349
439
|
logicalSectionId?: string;
|
|
440
|
+
/** Shared semantic Arc/Fan group wrapped by this section. The section id is
|
|
441
|
+
* preserved when the fan parameters are reopened and regenerated. */
|
|
442
|
+
arcFanGroupId?: string;
|
|
350
443
|
/** Closed polygon, chart units. */
|
|
351
444
|
outline: Point[];
|
|
352
445
|
/** Optional true line/arc/cubic boundary. `outline` is a deterministic sample
|
|
@@ -536,6 +629,8 @@ interface ExpandedSeat {
|
|
|
536
629
|
id: string;
|
|
537
630
|
/** Public label: `${rowLabel}-${seatNumber}` */
|
|
538
631
|
label: string;
|
|
632
|
+
/** Buyer-facing copy; absent on legacy charts, where `label` is displayed. */
|
|
633
|
+
displayLabel?: string;
|
|
539
634
|
x: number;
|
|
540
635
|
y: number;
|
|
541
636
|
rowId: string;
|
|
@@ -546,8 +641,11 @@ interface ExpandedSeat {
|
|
|
546
641
|
accessible?: boolean;
|
|
547
642
|
/** Specific accessibility accommodations (absent = none) — picker badges/filters these. */
|
|
548
643
|
accessibility?: AccessibilityType[];
|
|
644
|
+
commercial?: SeatCommercialAttributes;
|
|
549
645
|
/** Organizer-supplied view-from-seat image (inherited from the row). */
|
|
550
646
|
viewUrl?: string;
|
|
647
|
+
/** Per-seat label size/color override; absent = inherit the row/theme default. */
|
|
648
|
+
labelStyle?: LabelStyle;
|
|
551
649
|
}
|
|
552
650
|
type SeatStatus = 'free' | 'held' | 'booked' | 'not_for_sale';
|
|
553
651
|
interface RendererCallbacks {
|
|
@@ -964,10 +1062,14 @@ interface RowSeatSlot {
|
|
|
964
1062
|
x: number;
|
|
965
1063
|
y: number;
|
|
966
1064
|
label: string;
|
|
1065
|
+
displayLabel: string;
|
|
967
1066
|
categoryKey: string;
|
|
968
1067
|
skipped: boolean;
|
|
969
1068
|
accessible: boolean;
|
|
970
1069
|
accessibility: AccessibilityType[];
|
|
1070
|
+
commercial?: RowObject['commercial'];
|
|
1071
|
+
viewUrl?: string;
|
|
1072
|
+
labelStyle?: LabelStyle;
|
|
971
1073
|
}
|
|
972
1074
|
declare function expandRowSlots(row: RowObject): RowSeatSlot[];
|
|
973
1075
|
declare function expandRow(row: RowObject): ExpandedSeat[];
|
|
@@ -1394,9 +1496,16 @@ declare class SeatmapRenderer implements ISeatmapRenderer {
|
|
|
1394
1496
|
private renderBoothUnit;
|
|
1395
1497
|
/** The category's display color — Okabe-Ito hue when colorblind-safe is on. */
|
|
1396
1498
|
private seatBaseColor;
|
|
1397
|
-
/**
|
|
1398
|
-
*
|
|
1399
|
-
|
|
1499
|
+
/** Per-seat authored label size relative to the neutral default (1 = default),
|
|
1500
|
+
* mirroring the section convention (labelStyle.size ?? 18) / 18. Only real
|
|
1501
|
+
* seats carry labelStyle, so booths and unstyled seats resolve to 1. */
|
|
1502
|
+
private seatLabelScale;
|
|
1503
|
+
/** Preferred label ink for a seat: the authored per-seat colour when set,
|
|
1504
|
+
* otherwise today's theme default. Fed through auto-contrast by seatLabelInk. */
|
|
1505
|
+
private seatPreferredLabelInk;
|
|
1506
|
+
/** Resolve a seat's label ink against the paint actually visible, honouring an
|
|
1507
|
+
* authored per-seat colour through the same auto-contrast rule as sections. */
|
|
1508
|
+
private seatLabelInk;
|
|
1400
1509
|
/** Apply fill/stroke/opacity for a seat's current status + selection. */
|
|
1401
1510
|
private paintSeat;
|
|
1402
1511
|
/** True when a seat sits in a section/zone currently marked `closed`. */
|
|
@@ -2073,6 +2182,13 @@ declare class PickerController {
|
|
|
2073
2182
|
private applySeatsMap;
|
|
2074
2183
|
private clearBookedHoldIfSettled;
|
|
2075
2184
|
private resnapshot;
|
|
2185
|
+
/**
|
|
2186
|
+
* Re-pull the status snapshot on demand. Live surfaces rarely need this (the
|
|
2187
|
+
* socket keeps them fresh); local/mock transports with no socket call it
|
|
2188
|
+
* after they mutate state (e.g. the demo books a hold) so the renderer and
|
|
2189
|
+
* every onStatusChange consumer repaint from the new truth.
|
|
2190
|
+
*/
|
|
2191
|
+
refresh(): Promise<void>;
|
|
2076
2192
|
/**
|
|
2077
2193
|
* Buyer catch-up on tab regain. While a tab is hidden Chrome pauses rAF, so
|
|
2078
2194
|
* seat-status deltas that arrived over the WS mutated the scene graph but the
|
|
@@ -2183,4 +2299,4 @@ declare function formatMoney(amount: number, currency?: string, fractionDigits?:
|
|
|
2183
2299
|
/** Bare symbol for input adornments ("€", "$", "₹"). */
|
|
2184
2300
|
declare function currencySymbol(currency?: string): string;
|
|
2185
2301
|
|
|
2186
|
-
export { ACCESSIBILITY_TYPES, type AccessibilityMeta, type AccessibilityType, type AvailabilityRule, type BoothObject, CHART_STORAGE_KEY, type Category, type CategoryTier, type ChartDoc, type ChartObject, type ChartReferenceImage, type ChartTheme, type CubicPath, DEFAULT_CURRENCY, type DecorImageObject, type Dict, type ExpandedSeat, type Floor, type GAAreaObject, type HoldConflict, type HoldInfo, type HoldSelectionRequest, type HoldServerItem, type ISeatmapRenderer, type Locale, type LodRung, MAX_EVENT_INVENTORY, MAX_GA_CAPACITY, type PanoramaResult, type PickerCallbacks, PickerController, type PickerOptions, type PickerSeat, type PickerTransport, type Point, type ReferenceAccessibilitySource, type ReferenceCalibration, type ReferenceCategorySource, type ReferenceDerivedScale, type ReferenceInventoryExclusionSource, type ReferenceInventorySource, type RenderedBookableLabelEvidence, type RenderedFreeTextEvidence, type RenderedGAAreaEvidence, type RenderedHierarchyLabelEvidence, type RenderedLabelHiddenReason, type RendererCallbacks, type RendererOptions, type RendererQualityEvidence, type RowObject, type RowSeatSlot, SUPPORTED_LOCALES, type SeatHoverDetails, type SeatOverride, type SeatStatus, SeatmapRenderer, type SectionCategory, type SectionNode, type SectionObject, type SectionOutlinePath, type SectionPathSegment, type SectionSummary, type SelectionLayer, type ShapeObject, type TableObject, type TextObject, UNGROUPED_ID, type ZoneDef, accessibilityMeta, allObjects, applyHidden, chartBounds, computeSections, createRenderer, currencySymbol, expandBooth, expandChart, expandRow, expandRowSlots, expandTable, floorObjects, floorsOf, formatDate, formatMoney, gaAreasOf, gaUnitLabel, gaUnitLabels, generateSeatPanorama, generateSeatThumb, getLocale, hiddenObjectIds, isGaUnitLabel, isSectionHidden, layerOf, loadLocale, objectCenter, pointInPolygon, pointInPolygonWithHoles, polygonLabelPoint, resolveLocale, setLocale, setMoneyLocale, setStringOverrides, stackFloors, t, tCount };
|
|
2302
|
+
export { ACCESSIBILITY_RING_COLOR, ACCESSIBILITY_TYPES, type AccessibilityMeta, type AccessibilityType, type AvailabilityRule, type BoothObject, CHART_STORAGE_KEY, type Category, type CategoryTier, type ChartDoc, type ChartObject, type ChartReferenceImage, type ChartTheme, type CubicPath, DEFAULT_CURRENCY, type DecorImageObject, type Dict, type ExpandedSeat, type Floor, type GAAreaObject, type HoldConflict, type HoldInfo, type HoldSelectionRequest, type HoldServerItem, type ISeatmapRenderer, LABEL_STYLE_MAX_SIZE, LABEL_STYLE_MIN_SIZE, type LabelPresentation, type LabelStyle, type Locale, type LodRung, MAX_EVENT_INVENTORY, MAX_GA_CAPACITY, type PanoramaResult, type PickerCallbacks, PickerController, type PickerOptions, type PickerSeat, type PickerTransport, type Point, type ReferenceAccessibilitySource, type ReferenceCalibration, type ReferenceCategorySource, type ReferenceDerivedScale, type ReferenceInventoryExclusionSource, type ReferenceInventorySource, type RenderedBookableLabelEvidence, type RenderedFreeTextEvidence, type RenderedGAAreaEvidence, type RenderedHierarchyLabelEvidence, type RenderedLabelHiddenReason, type RendererCallbacks, type RendererOptions, type RendererQualityEvidence, type RowObject, type RowSeatSlot, SUPPORTED_LOCALES, type SeatCommercialAttributes, type SeatHoverDetails, type SeatOverride, type SeatStatus, SeatmapRenderer, type SectionCategory, type SectionNode, type SectionObject, type SectionOutlinePath, type SectionPathSegment, type SectionSummary, type SelectionLayer, type ShapeObject, type TableObject, type TextObject, UNGROUPED_ID, type ZoneDef, accessibilityMeta, accessibilityRingColor, allObjects, applyHidden, chartBounds, computeSections, createRenderer, currencySymbol, expandBooth, expandChart, expandRow, expandRowSlots, expandTable, floorObjects, floorsOf, formatDate, formatMoney, gaAreasOf, gaUnitLabel, gaUnitLabels, generateSeatPanorama, generateSeatThumb, getLocale, hiddenObjectIds, isGaUnitLabel, isSectionHidden, layerOf, loadLocale, objectCenter, pointInPolygon, pointInPolygonWithHoles, polygonLabelPoint, resolveLocale, setLocale, setMoneyLocale, setStringOverrides, stackFloors, t, tCount };
|