@seatlayer/core 0.52.0 → 0.53.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.
- package/LICENSE +16 -17
- package/README.md +8 -18
- package/dist/chunk-54A7LIL5.js +1 -0
- package/dist/chunk-IJI4WU57.js +1 -0
- package/dist/chunk-XPPT3OGQ.js +1 -0
- package/dist/core/seatConfidence.cjs +1 -76
- package/dist/core/seatConfidence.js +1 -51
- package/dist/de-75NWRKC5.js +1 -0
- package/dist/es-BM7EJ7PW.js +1 -0
- package/dist/fr-HPXQHIB4.js +1 -0
- package/dist/index.cjs +1 -12717
- package/dist/index.d.cts +38 -53
- package/dist/index.d.ts +38 -53
- package/dist/index.js +1 -10235
- package/dist/picker/minimapGeometry.cjs +1 -80
- package/dist/picker/minimapGeometry.js +1 -52
- package/dist/view/panoramaDelivery.cjs +1 -126
- package/dist/view/panoramaDelivery.js +1 -17
- package/dist/view3d/crossfade/panorama.cjs +1 -459
- package/dist/view3d/crossfade/panorama.d.cts +1 -3
- package/dist/view3d/crossfade/panorama.d.ts +1 -3
- package/dist/view3d/crossfade/panorama.js +1 -30
- package/dist/view3d/index.cjs +27 -7929
- package/dist/view3d/index.d.cts +62 -21
- package/dist/view3d/index.d.ts +62 -21
- package/dist/view3d/index.js +27 -7062
- package/package.json +2 -7
- package/dist/chunk-AZODENEL.js +0 -97
- package/dist/chunk-AZODENEL.js.map +0 -1
- package/dist/chunk-BE3F7CT3.js +0 -341
- package/dist/chunk-BE3F7CT3.js.map +0 -1
- package/dist/chunk-UID7KN44.js +0 -1569
- package/dist/chunk-UID7KN44.js.map +0 -1
- package/dist/core/seatConfidence.cjs.map +0 -1
- package/dist/core/seatConfidence.js.map +0 -1
- package/dist/de-YGODYJ3E.js +0 -292
- package/dist/de-YGODYJ3E.js.map +0 -1
- package/dist/es-VMBTGVFQ.js +0 -292
- package/dist/es-VMBTGVFQ.js.map +0 -1
- package/dist/fr-SLBE2ULB.js +0 -292
- package/dist/fr-SLBE2ULB.js.map +0 -1
- package/dist/index.cjs.map +0 -1
- package/dist/index.js.map +0 -1
- package/dist/picker/minimapGeometry.cjs.map +0 -1
- package/dist/picker/minimapGeometry.js.map +0 -1
- package/dist/view/panoramaDelivery.cjs.map +0 -1
- package/dist/view/panoramaDelivery.js.map +0 -1
- package/dist/view3d/crossfade/panorama.cjs.map +0 -1
- package/dist/view3d/crossfade/panorama.js.map +0 -1
- package/dist/view3d/index.cjs.map +0 -1
- package/dist/view3d/index.js.map +0 -1
package/dist/index.d.cts
CHANGED
|
@@ -635,35 +635,18 @@ declare class SeatmapRenderer implements ISeatmapRenderer {
|
|
|
635
635
|
private resizeObs;
|
|
636
636
|
/** Coalesces bursty view-change sources (pointermove, wheel) into ≤1 callback/frame. */
|
|
637
637
|
private viewChangeRaf;
|
|
638
|
-
|
|
639
|
-
|
|
640
|
-
|
|
641
|
-
|
|
642
|
-
|
|
643
|
-
/** Maximum displacement from gesture start — suppress taps only after a real pan/pinch. */
|
|
644
|
-
private moved;
|
|
645
|
-
/**
|
|
646
|
-
* Ghost-click guard. Konva binds `_pointerup` to mouseup, touchend AND
|
|
647
|
-
* pointerup, so `on('click tap')` is two handlers for one finger tap unless
|
|
648
|
-
* the browser's synthesized compatibility click is suppressed. Konva only
|
|
649
|
-
* suppresses it when the touch lands on a LISTENING SHAPE (Stage.js returns
|
|
650
|
-
* early before its preventDefault() when `!shape || !shape.isListening()`),
|
|
651
|
-
* so a near-miss rescued by nearestSeatToScreen used to fire `tap` (select)
|
|
652
|
-
* then `click` (deselect) 1-3ms apart and net to nothing. With
|
|
653
|
-
* SEAT_TAP_SLOP_PX=14 against a ~12px seat radius, that broken annulus is
|
|
654
|
-
* ~3.7x the area of the seat itself — i.e. most successful mobile taps.
|
|
655
|
-
* `touch-action: none` does NOT suppress compatibility mouse events.
|
|
656
|
-
*/
|
|
657
|
-
private lastTapAt;
|
|
658
|
-
/**
|
|
659
|
-
* True when this is the browser's synthesized compatibility click following a
|
|
660
|
-
* finger tap we already handled. Discriminates on `e.type` deliberately —
|
|
661
|
-
* `PointerEvent extends MouseEvent`, so an `instanceof MouseEvent` test
|
|
662
|
-
* matches genuine pointer taps too. One shared timestamp across the layer and
|
|
663
|
-
* stage handlers: a tap consumed at the layer must also suppress the ghost at
|
|
664
|
-
* the stage, and only `click` is ever rejected, so bubbling stays intact.
|
|
638
|
+
/**
|
|
639
|
+
* Pan/pinch state machine (`render/interaction/pointer`). Raw pointer events
|
|
640
|
+
* on the container, not Konva stage dragging — its touch pipeline proved
|
|
641
|
+
* unreliable for multi-touch on real devices. Also owns the ghost-click
|
|
642
|
+
* timestamp shared by the layer and stage tap handlers.
|
|
665
643
|
*/
|
|
644
|
+
private gestures;
|
|
645
|
+
/** Displacement of the current gesture — a tap must stay under the slop. */
|
|
646
|
+
private get moved();
|
|
666
647
|
private isGhostClick;
|
|
648
|
+
/** Behavioural surface the gesture machine calls back into. */
|
|
649
|
+
private get pointerHost();
|
|
667
650
|
/**
|
|
668
651
|
* Manage-mode rubber-band marquee (option-gated). `start`/`cur` are WORLD-space
|
|
669
652
|
* points (overlayLayer rides the stage transform); `rect` is the on-canvas
|
|
@@ -806,6 +789,8 @@ declare class SeatmapRenderer implements ISeatmapRenderer {
|
|
|
806
789
|
setViewMode(mode: RendererViewMode): void;
|
|
807
790
|
/** Current projection — reflects the tween target, not the mid-tween isoT. */
|
|
808
791
|
getViewMode(): RendererViewMode;
|
|
792
|
+
/** Live ISO projection state handed to the `render/projection` free functions. */
|
|
793
|
+
private get isoState();
|
|
809
794
|
/** Iso angle (rad) + y-squash for the current isoT. */
|
|
810
795
|
private isoParams;
|
|
811
796
|
/** Effective vertical scale = stage scale × iso squash — legibility math uses this. */
|
|
@@ -839,6 +824,8 @@ declare class SeatmapRenderer implements ISeatmapRenderer {
|
|
|
839
824
|
private resetLayerTransforms;
|
|
840
825
|
/** Restore section-owned containers before applying another projection. */
|
|
841
826
|
private resetSectionProjection;
|
|
827
|
+
/** Node/cache context the shared seat-anchor pass reads and updates. */
|
|
828
|
+
private get seatAnchorContext();
|
|
842
829
|
/** Move native seat/booth hit shapes to or from their exact pinhole anchors. */
|
|
843
830
|
private applyExactSeatAnchors;
|
|
844
831
|
/**
|
|
@@ -1020,12 +1007,12 @@ declare class SeatmapRenderer implements ISeatmapRenderer {
|
|
|
1020
1007
|
* single drawImage per frame, and it rides the same layer cache — effectively
|
|
1021
1008
|
* zero per-frame cost. Never listens, so it can't intercept a seat click.
|
|
1022
1009
|
*/
|
|
1010
|
+
/** Node/registry surface the `render/objectDrawing` factories draw into. */
|
|
1011
|
+
private get objectDrawContext();
|
|
1023
1012
|
private renderDecorImage;
|
|
1024
1013
|
private renderTable;
|
|
1025
1014
|
private renderText;
|
|
1026
1015
|
private renderShape;
|
|
1027
|
-
/** Prominent stage caption: uppercase, letter-spaced, larger, softly dimmed. */
|
|
1028
|
-
private addStageLabel;
|
|
1029
1016
|
private renderGA;
|
|
1030
1017
|
/**
|
|
1031
1018
|
* A section renders in three coordinated layers driven by the LOD melt:
|
|
@@ -1106,7 +1093,6 @@ declare class SeatmapRenderer implements ISeatmapRenderer {
|
|
|
1106
1093
|
}): string | null;
|
|
1107
1094
|
/** Seat ids belonging to a section (Slice 5 section-summary card). */
|
|
1108
1095
|
sectionMembers(id: string): string[];
|
|
1109
|
-
private addCentredLabel;
|
|
1110
1096
|
private isSelectable;
|
|
1111
1097
|
private toggleSeat;
|
|
1112
1098
|
/**
|
|
@@ -1159,10 +1145,6 @@ declare class SeatmapRenderer implements ISeatmapRenderer {
|
|
|
1159
1145
|
* so within-floor elevation offsets don't affect the result. Null if none.
|
|
1160
1146
|
*/
|
|
1161
1147
|
private deckFloorAt;
|
|
1162
|
-
private toLocal;
|
|
1163
|
-
private onPointerDown;
|
|
1164
|
-
private onPointerMove;
|
|
1165
|
-
private onPointerEnd;
|
|
1166
1148
|
/**
|
|
1167
1149
|
* Min is chart-relative (never lose the room); max is absolute so seats
|
|
1168
1150
|
* reach a readable size on any chart, however large the venue.
|
|
@@ -1193,6 +1175,8 @@ declare class SeatmapRenderer implements ISeatmapRenderer {
|
|
|
1193
1175
|
private cancelGlide;
|
|
1194
1176
|
/** Current LOD rung derived from effective zoom — drives the ZONES/SECTIONS/SEATS pill. */
|
|
1195
1177
|
getRung(): LodRung;
|
|
1178
|
+
/** Explicit view of this renderer as the evidence pass's declared surface. */
|
|
1179
|
+
private get renderedQualityContext();
|
|
1196
1180
|
getRenderedQualityEvidence(): RendererQualityEvidence;
|
|
1197
1181
|
/** Jump the camera to a rung's zoom band (glided). */
|
|
1198
1182
|
setRung(rung: LodRung): void;
|
|
@@ -1260,20 +1244,11 @@ declare class SeatmapRenderer implements ISeatmapRenderer {
|
|
|
1260
1244
|
/** Geometric association only: importer data remains unchanged. */
|
|
1261
1245
|
private nodeBelongsToFocusedSection;
|
|
1262
1246
|
/** OV-45(a): resolve authored row-letter labels for the buyer/preview map, in
|
|
1263
|
-
* world space
|
|
1264
|
-
* preset, a free-drag `position` that wins over the preset, rotation, and
|
|
1265
|
-
* labelStyle colour/size fed through the same auto-contrast guard). Segmented
|
|
1266
|
-
* rows keep their own logical-label handling and are resolved by their owner. */
|
|
1247
|
+
* world space (see `render/rowLabelPlan`). */
|
|
1267
1248
|
private buildRowLabelPlan;
|
|
1268
1249
|
/** Axis-aligned world bounds of a centred, potentially rotated row label. */
|
|
1269
1250
|
private rowLabelBox;
|
|
1270
|
-
/**
|
|
1271
|
-
* Keep an automatic start/end label out of seat markers and already-painted
|
|
1272
|
-
* text. The authored point is never altered. Candidates are deliberately
|
|
1273
|
-
* bounded and deterministic: the closest clear offset wins; if a chart is so
|
|
1274
|
-
* dense that none is clear, the least-colliding candidate wins so the required
|
|
1275
|
-
* row label remains present rather than being silently dropped.
|
|
1276
|
-
*/
|
|
1251
|
+
/** Keep an automatic start/end label out of seats and already-painted text. */
|
|
1277
1252
|
private resolveAutomaticRowLabelPosition;
|
|
1278
1253
|
/** Row labels never carry status; the buyer just dims them under the same
|
|
1279
1254
|
* category/price filters that dim their seats. */
|
|
@@ -2120,11 +2095,8 @@ declare class PickerController {
|
|
|
2120
2095
|
private connect;
|
|
2121
2096
|
/**
|
|
2122
2097
|
* Backoff for the PLAIN-socket fallback (a transport with no v1 client of its
|
|
2123
|
-
* own). Full jitter, for the same reason BuyerRealtimeClient uses it
|
|
2124
|
-
*
|
|
2125
|
-
* socket back in the same millisecond, and an on-sale crowd reconnecting in
|
|
2126
|
-
* lockstep turns one blip into a thundering herd. The ceiling still doubles,
|
|
2127
|
-
* so a sustained outage still backs off.
|
|
2098
|
+
* own). Full jitter, for the same reason BuyerRealtimeClient uses it — see
|
|
2099
|
+
* `core/backoff`, which now owns that rationale and the schedule.
|
|
2128
2100
|
*/
|
|
2129
2101
|
private scheduleReconnect;
|
|
2130
2102
|
}
|
|
@@ -2212,6 +2184,14 @@ declare function setStringOverrides(next: Dict): void;
|
|
|
2212
2184
|
declare function t(key: string, vars?: Record<string, string | number>): string;
|
|
2213
2185
|
/** "1 seat" / "3 seats" without hand-rolled concatenation. */
|
|
2214
2186
|
declare function tCount(key: string, count: number, vars?: Record<string, string | number>): string;
|
|
2187
|
+
/**
|
|
2188
|
+
* Kept for the SDK surface that imports dates from here. It is a thin pass to
|
|
2189
|
+
* `core/datetime`, which owns every date shape in the app and caches its
|
|
2190
|
+
* formatters per (locale, shape) — the defaults below are the same ones it
|
|
2191
|
+
* uses, so the two were already interchangeable and are now literally the same
|
|
2192
|
+
* code. `active` is passed explicitly so this cannot drift from `t()` even if
|
|
2193
|
+
* something calls `setDateTimeLocale` on its own.
|
|
2194
|
+
*/
|
|
2215
2195
|
declare function formatDate(value: number | Date, opts?: Intl.DateTimeFormatOptions): string;
|
|
2216
2196
|
|
|
2217
2197
|
/**
|
|
@@ -2255,9 +2235,14 @@ declare function setMoneyLocale(locale: string | undefined): void;
|
|
|
2255
2235
|
/**
|
|
2256
2236
|
* "€45" / "$1,500" / "45 €" (locale-dependent placement).
|
|
2257
2237
|
* Whole amounts render without ".00" (design shows "$45", "$120"); pass
|
|
2258
|
-
* `fractionDigits` for fixed precision (e.g. 3 for "$0.045 / credit"
|
|
2238
|
+
* `fractionDigits` for fixed precision (e.g. 3 for "$0.045 / credit", or `0`
|
|
2239
|
+
* for a report column that rounds to whole units).
|
|
2240
|
+
*
|
|
2241
|
+
* `locale` overrides the app locale for one call — the buyer-facing website
|
|
2242
|
+
* templates render in the VISITOR's language, which is not necessarily the
|
|
2243
|
+
* dashboard's. Mirrors `DateFormatOptions.locale` in `core/datetime`.
|
|
2259
2244
|
*/
|
|
2260
|
-
declare function formatMoney(amount: number, currency?: string, fractionDigits?: number): string;
|
|
2245
|
+
declare function formatMoney(amount: number, currency?: string, fractionDigits?: number, locale?: string): string;
|
|
2261
2246
|
/**
|
|
2262
2247
|
* How many decimal places a currency has — 2 for USD/EUR, 0 for JPY/KRW/VND,
|
|
2263
2248
|
* 3 for KWD/BHD/JOD.
|
|
@@ -2281,7 +2266,7 @@ declare function currencyExponent(currency?: string): number;
|
|
|
2281
2266
|
*/
|
|
2282
2267
|
declare function fromMinorUnits(minor: number, currency?: string): number;
|
|
2283
2268
|
/** "$90" / "¥9,000" — a minor-unit integer rendered for display. */
|
|
2284
|
-
declare function formatMinor(minor: number, currency?: string): string;
|
|
2269
|
+
declare function formatMinor(minor: number, currency?: string, locale?: string): string;
|
|
2285
2270
|
/** Bare symbol for input adornments ("€", "$", "₹"). */
|
|
2286
2271
|
declare function currencySymbol(currency?: string): string;
|
|
2287
2272
|
|
package/dist/index.d.ts
CHANGED
|
@@ -635,35 +635,18 @@ declare class SeatmapRenderer implements ISeatmapRenderer {
|
|
|
635
635
|
private resizeObs;
|
|
636
636
|
/** Coalesces bursty view-change sources (pointermove, wheel) into ≤1 callback/frame. */
|
|
637
637
|
private viewChangeRaf;
|
|
638
|
-
|
|
639
|
-
|
|
640
|
-
|
|
641
|
-
|
|
642
|
-
|
|
643
|
-
/** Maximum displacement from gesture start — suppress taps only after a real pan/pinch. */
|
|
644
|
-
private moved;
|
|
645
|
-
/**
|
|
646
|
-
* Ghost-click guard. Konva binds `_pointerup` to mouseup, touchend AND
|
|
647
|
-
* pointerup, so `on('click tap')` is two handlers for one finger tap unless
|
|
648
|
-
* the browser's synthesized compatibility click is suppressed. Konva only
|
|
649
|
-
* suppresses it when the touch lands on a LISTENING SHAPE (Stage.js returns
|
|
650
|
-
* early before its preventDefault() when `!shape || !shape.isListening()`),
|
|
651
|
-
* so a near-miss rescued by nearestSeatToScreen used to fire `tap` (select)
|
|
652
|
-
* then `click` (deselect) 1-3ms apart and net to nothing. With
|
|
653
|
-
* SEAT_TAP_SLOP_PX=14 against a ~12px seat radius, that broken annulus is
|
|
654
|
-
* ~3.7x the area of the seat itself — i.e. most successful mobile taps.
|
|
655
|
-
* `touch-action: none` does NOT suppress compatibility mouse events.
|
|
656
|
-
*/
|
|
657
|
-
private lastTapAt;
|
|
658
|
-
/**
|
|
659
|
-
* True when this is the browser's synthesized compatibility click following a
|
|
660
|
-
* finger tap we already handled. Discriminates on `e.type` deliberately —
|
|
661
|
-
* `PointerEvent extends MouseEvent`, so an `instanceof MouseEvent` test
|
|
662
|
-
* matches genuine pointer taps too. One shared timestamp across the layer and
|
|
663
|
-
* stage handlers: a tap consumed at the layer must also suppress the ghost at
|
|
664
|
-
* the stage, and only `click` is ever rejected, so bubbling stays intact.
|
|
638
|
+
/**
|
|
639
|
+
* Pan/pinch state machine (`render/interaction/pointer`). Raw pointer events
|
|
640
|
+
* on the container, not Konva stage dragging — its touch pipeline proved
|
|
641
|
+
* unreliable for multi-touch on real devices. Also owns the ghost-click
|
|
642
|
+
* timestamp shared by the layer and stage tap handlers.
|
|
665
643
|
*/
|
|
644
|
+
private gestures;
|
|
645
|
+
/** Displacement of the current gesture — a tap must stay under the slop. */
|
|
646
|
+
private get moved();
|
|
666
647
|
private isGhostClick;
|
|
648
|
+
/** Behavioural surface the gesture machine calls back into. */
|
|
649
|
+
private get pointerHost();
|
|
667
650
|
/**
|
|
668
651
|
* Manage-mode rubber-band marquee (option-gated). `start`/`cur` are WORLD-space
|
|
669
652
|
* points (overlayLayer rides the stage transform); `rect` is the on-canvas
|
|
@@ -806,6 +789,8 @@ declare class SeatmapRenderer implements ISeatmapRenderer {
|
|
|
806
789
|
setViewMode(mode: RendererViewMode): void;
|
|
807
790
|
/** Current projection — reflects the tween target, not the mid-tween isoT. */
|
|
808
791
|
getViewMode(): RendererViewMode;
|
|
792
|
+
/** Live ISO projection state handed to the `render/projection` free functions. */
|
|
793
|
+
private get isoState();
|
|
809
794
|
/** Iso angle (rad) + y-squash for the current isoT. */
|
|
810
795
|
private isoParams;
|
|
811
796
|
/** Effective vertical scale = stage scale × iso squash — legibility math uses this. */
|
|
@@ -839,6 +824,8 @@ declare class SeatmapRenderer implements ISeatmapRenderer {
|
|
|
839
824
|
private resetLayerTransforms;
|
|
840
825
|
/** Restore section-owned containers before applying another projection. */
|
|
841
826
|
private resetSectionProjection;
|
|
827
|
+
/** Node/cache context the shared seat-anchor pass reads and updates. */
|
|
828
|
+
private get seatAnchorContext();
|
|
842
829
|
/** Move native seat/booth hit shapes to or from their exact pinhole anchors. */
|
|
843
830
|
private applyExactSeatAnchors;
|
|
844
831
|
/**
|
|
@@ -1020,12 +1007,12 @@ declare class SeatmapRenderer implements ISeatmapRenderer {
|
|
|
1020
1007
|
* single drawImage per frame, and it rides the same layer cache — effectively
|
|
1021
1008
|
* zero per-frame cost. Never listens, so it can't intercept a seat click.
|
|
1022
1009
|
*/
|
|
1010
|
+
/** Node/registry surface the `render/objectDrawing` factories draw into. */
|
|
1011
|
+
private get objectDrawContext();
|
|
1023
1012
|
private renderDecorImage;
|
|
1024
1013
|
private renderTable;
|
|
1025
1014
|
private renderText;
|
|
1026
1015
|
private renderShape;
|
|
1027
|
-
/** Prominent stage caption: uppercase, letter-spaced, larger, softly dimmed. */
|
|
1028
|
-
private addStageLabel;
|
|
1029
1016
|
private renderGA;
|
|
1030
1017
|
/**
|
|
1031
1018
|
* A section renders in three coordinated layers driven by the LOD melt:
|
|
@@ -1106,7 +1093,6 @@ declare class SeatmapRenderer implements ISeatmapRenderer {
|
|
|
1106
1093
|
}): string | null;
|
|
1107
1094
|
/** Seat ids belonging to a section (Slice 5 section-summary card). */
|
|
1108
1095
|
sectionMembers(id: string): string[];
|
|
1109
|
-
private addCentredLabel;
|
|
1110
1096
|
private isSelectable;
|
|
1111
1097
|
private toggleSeat;
|
|
1112
1098
|
/**
|
|
@@ -1159,10 +1145,6 @@ declare class SeatmapRenderer implements ISeatmapRenderer {
|
|
|
1159
1145
|
* so within-floor elevation offsets don't affect the result. Null if none.
|
|
1160
1146
|
*/
|
|
1161
1147
|
private deckFloorAt;
|
|
1162
|
-
private toLocal;
|
|
1163
|
-
private onPointerDown;
|
|
1164
|
-
private onPointerMove;
|
|
1165
|
-
private onPointerEnd;
|
|
1166
1148
|
/**
|
|
1167
1149
|
* Min is chart-relative (never lose the room); max is absolute so seats
|
|
1168
1150
|
* reach a readable size on any chart, however large the venue.
|
|
@@ -1193,6 +1175,8 @@ declare class SeatmapRenderer implements ISeatmapRenderer {
|
|
|
1193
1175
|
private cancelGlide;
|
|
1194
1176
|
/** Current LOD rung derived from effective zoom — drives the ZONES/SECTIONS/SEATS pill. */
|
|
1195
1177
|
getRung(): LodRung;
|
|
1178
|
+
/** Explicit view of this renderer as the evidence pass's declared surface. */
|
|
1179
|
+
private get renderedQualityContext();
|
|
1196
1180
|
getRenderedQualityEvidence(): RendererQualityEvidence;
|
|
1197
1181
|
/** Jump the camera to a rung's zoom band (glided). */
|
|
1198
1182
|
setRung(rung: LodRung): void;
|
|
@@ -1260,20 +1244,11 @@ declare class SeatmapRenderer implements ISeatmapRenderer {
|
|
|
1260
1244
|
/** Geometric association only: importer data remains unchanged. */
|
|
1261
1245
|
private nodeBelongsToFocusedSection;
|
|
1262
1246
|
/** OV-45(a): resolve authored row-letter labels for the buyer/preview map, in
|
|
1263
|
-
* world space
|
|
1264
|
-
* preset, a free-drag `position` that wins over the preset, rotation, and
|
|
1265
|
-
* labelStyle colour/size fed through the same auto-contrast guard). Segmented
|
|
1266
|
-
* rows keep their own logical-label handling and are resolved by their owner. */
|
|
1247
|
+
* world space (see `render/rowLabelPlan`). */
|
|
1267
1248
|
private buildRowLabelPlan;
|
|
1268
1249
|
/** Axis-aligned world bounds of a centred, potentially rotated row label. */
|
|
1269
1250
|
private rowLabelBox;
|
|
1270
|
-
/**
|
|
1271
|
-
* Keep an automatic start/end label out of seat markers and already-painted
|
|
1272
|
-
* text. The authored point is never altered. Candidates are deliberately
|
|
1273
|
-
* bounded and deterministic: the closest clear offset wins; if a chart is so
|
|
1274
|
-
* dense that none is clear, the least-colliding candidate wins so the required
|
|
1275
|
-
* row label remains present rather than being silently dropped.
|
|
1276
|
-
*/
|
|
1251
|
+
/** Keep an automatic start/end label out of seats and already-painted text. */
|
|
1277
1252
|
private resolveAutomaticRowLabelPosition;
|
|
1278
1253
|
/** Row labels never carry status; the buyer just dims them under the same
|
|
1279
1254
|
* category/price filters that dim their seats. */
|
|
@@ -2120,11 +2095,8 @@ declare class PickerController {
|
|
|
2120
2095
|
private connect;
|
|
2121
2096
|
/**
|
|
2122
2097
|
* Backoff for the PLAIN-socket fallback (a transport with no v1 client of its
|
|
2123
|
-
* own). Full jitter, for the same reason BuyerRealtimeClient uses it
|
|
2124
|
-
*
|
|
2125
|
-
* socket back in the same millisecond, and an on-sale crowd reconnecting in
|
|
2126
|
-
* lockstep turns one blip into a thundering herd. The ceiling still doubles,
|
|
2127
|
-
* so a sustained outage still backs off.
|
|
2098
|
+
* own). Full jitter, for the same reason BuyerRealtimeClient uses it — see
|
|
2099
|
+
* `core/backoff`, which now owns that rationale and the schedule.
|
|
2128
2100
|
*/
|
|
2129
2101
|
private scheduleReconnect;
|
|
2130
2102
|
}
|
|
@@ -2212,6 +2184,14 @@ declare function setStringOverrides(next: Dict): void;
|
|
|
2212
2184
|
declare function t(key: string, vars?: Record<string, string | number>): string;
|
|
2213
2185
|
/** "1 seat" / "3 seats" without hand-rolled concatenation. */
|
|
2214
2186
|
declare function tCount(key: string, count: number, vars?: Record<string, string | number>): string;
|
|
2187
|
+
/**
|
|
2188
|
+
* Kept for the SDK surface that imports dates from here. It is a thin pass to
|
|
2189
|
+
* `core/datetime`, which owns every date shape in the app and caches its
|
|
2190
|
+
* formatters per (locale, shape) — the defaults below are the same ones it
|
|
2191
|
+
* uses, so the two were already interchangeable and are now literally the same
|
|
2192
|
+
* code. `active` is passed explicitly so this cannot drift from `t()` even if
|
|
2193
|
+
* something calls `setDateTimeLocale` on its own.
|
|
2194
|
+
*/
|
|
2215
2195
|
declare function formatDate(value: number | Date, opts?: Intl.DateTimeFormatOptions): string;
|
|
2216
2196
|
|
|
2217
2197
|
/**
|
|
@@ -2255,9 +2235,14 @@ declare function setMoneyLocale(locale: string | undefined): void;
|
|
|
2255
2235
|
/**
|
|
2256
2236
|
* "€45" / "$1,500" / "45 €" (locale-dependent placement).
|
|
2257
2237
|
* Whole amounts render without ".00" (design shows "$45", "$120"); pass
|
|
2258
|
-
* `fractionDigits` for fixed precision (e.g. 3 for "$0.045 / credit"
|
|
2238
|
+
* `fractionDigits` for fixed precision (e.g. 3 for "$0.045 / credit", or `0`
|
|
2239
|
+
* for a report column that rounds to whole units).
|
|
2240
|
+
*
|
|
2241
|
+
* `locale` overrides the app locale for one call — the buyer-facing website
|
|
2242
|
+
* templates render in the VISITOR's language, which is not necessarily the
|
|
2243
|
+
* dashboard's. Mirrors `DateFormatOptions.locale` in `core/datetime`.
|
|
2259
2244
|
*/
|
|
2260
|
-
declare function formatMoney(amount: number, currency?: string, fractionDigits?: number): string;
|
|
2245
|
+
declare function formatMoney(amount: number, currency?: string, fractionDigits?: number, locale?: string): string;
|
|
2261
2246
|
/**
|
|
2262
2247
|
* How many decimal places a currency has — 2 for USD/EUR, 0 for JPY/KRW/VND,
|
|
2263
2248
|
* 3 for KWD/BHD/JOD.
|
|
@@ -2281,7 +2266,7 @@ declare function currencyExponent(currency?: string): number;
|
|
|
2281
2266
|
*/
|
|
2282
2267
|
declare function fromMinorUnits(minor: number, currency?: string): number;
|
|
2283
2268
|
/** "$90" / "¥9,000" — a minor-unit integer rendered for display. */
|
|
2284
|
-
declare function formatMinor(minor: number, currency?: string): string;
|
|
2269
|
+
declare function formatMinor(minor: number, currency?: string, locale?: string): string;
|
|
2285
2270
|
/** Bare symbol for input adornments ("€", "$", "₹"). */
|
|
2286
2271
|
declare function currencySymbol(currency?: string): string;
|
|
2287
2272
|
|