@seatlayer/js 0.46.0 → 0.47.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/{hostedCheckout-PLHKPT6W.js → hostedCheckout-SHQCWN5Y.js} +27 -4
- package/dist/hostedCheckout-SHQCWN5Y.js.map +1 -0
- package/dist/index.cjs +420 -56
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +97 -11
- package/dist/index.d.ts +97 -11
- package/dist/index.js +400 -54
- package/dist/index.js.map +1 -1
- package/package.json +2 -2
- package/dist/hostedCheckout-PLHKPT6W.js.map +0 -1
package/dist/index.d.cts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { PickerSeat, RendererViewMode, SeatHoverDetails, PickerTransport } from '@seatlayer/core';
|
|
1
|
+
import { PickerSeat, RendererViewMode, SeatHoverDetails, PickerTransport, PickerMapTheme } from '@seatlayer/core';
|
|
2
2
|
export { ExpandedSeat, SeatHoverDetails } from '@seatlayer/core';
|
|
3
3
|
import { C as ChannelListResult, a as ChannelAllocationPage, b as ChannelRecord, A as AssignmentResult, c as ChannelPreviewProjection, d as ChannelAccessIntent, e as AccessLinkReveal, f as AccessLinkStatusRecord, g as ChannelSeatStatus, B as BucketRow } from './manager-CAIPkUYl.cjs';
|
|
4
4
|
export { h as ACCESS_LINK_DEFAULTS, i as AccessIntentForbidsDetails, j as AccessLinkRecord, k as AccessLinkState, l as AccessLinkStatus, m as ArchiveBlockedDetails, n as AssignmentBuckets, o as AssignmentDropDetails, p as ChannelAccessSummary, q as ChannelAuditEntry, r as ChannelAuditPage, s as ChannelCounts, t as ChannelState, u as ControlRoomActivityEntry, v as ControlRoomSectionMetric, w as ControlRoomSnapshot, I as IntentSwitchBlockedDetails, L as LogEntry, x as LogPage, M as ManageApi, y as ManageApiError, P as PUBLIC_CHANNEL_ID, z as PUBLIC_CHANNEL_NAME, R as ReportByStatus, D as ReportCategoryMeta, E as ReportCategoryRow, F as ReportResult, S as SeatManager, G as SeatManagerActionResult, H as SeatManagerActivity, J as SeatManagerCapability, K as SeatManagerConnection, N as SeatManagerMode, O as SeatManagerOptions, Q as SeatManagerTallies, T as SelectionSourceRow, U as accessIntentDescription, V as accessIntentLabel, W as accessLine, X as accessLinkBadge, Y as accessLinkErrorCopy, Z as accessLinkIsLive, _ as accessLinkPolicyLines, $ as bucketRows, a0 as dropReviewRows, a1 as intentForbidsCopy, a2 as intentSwitchBlockedCopy, a3 as isPublicChannelId, a4 as markerLetter, a5 as markerOf, a6 as mutationCount, a7 as needsMoveConfirmation, a8 as planAssignment, a9 as retryAfterCopy, aa as selectionSources, ab as stateBadge, ac as suggestMarker } from './manager-CAIPkUYl.cjs';
|
|
@@ -232,10 +232,21 @@ interface RealtimeSink {
|
|
|
232
232
|
/** Apply a batch of label→status changes. Implementations must paint this as
|
|
233
233
|
* ONE pass, not one pass per label (motion system §4 rule 2). */
|
|
234
234
|
applyStatuses(changes: StatusChange[]): void;
|
|
235
|
+
/**
|
|
236
|
+
* Paint a COMPLETE projection — the default plus the units that differ.
|
|
237
|
+
*
|
|
238
|
+
* Every case that cannot be expressed as a bounded diff (the first snapshot,
|
|
239
|
+
* or a changed default) still arrives as a whole authoritative projection: the
|
|
240
|
+
* client holds it, it just has no way to hand it over. This is that way, and
|
|
241
|
+
* where a sink provides it the {@link resync} round trip is skipped entirely.
|
|
242
|
+
*
|
|
243
|
+
* Optional, so an older sink keeps working unchanged.
|
|
244
|
+
*/
|
|
245
|
+
applyProjection?(projection: Projection): void;
|
|
235
246
|
/** Re-pull authoritative state over the scoped HTTP route. Used when a frame
|
|
236
247
|
* cannot be diffed against what we hold (first snapshot, or the scope's
|
|
237
248
|
* default itself changed, which redefines every unit we were never told
|
|
238
|
-
* about). */
|
|
249
|
+
* about), and the sink cannot take a whole projection. */
|
|
239
250
|
resync(): void | Promise<void>;
|
|
240
251
|
/** Section availability changed (channel-agnostic; identical for every scope). */
|
|
241
252
|
onSections?(hidden: string[], closed: string[]): void;
|
|
@@ -464,6 +475,19 @@ interface OrderStatusResult {
|
|
|
464
475
|
currency: string;
|
|
465
476
|
amountFormatted: string;
|
|
466
477
|
seatCount: number;
|
|
478
|
+
eventName?: string | null;
|
|
479
|
+
venue?: string | null;
|
|
480
|
+
startsAt?: number | null;
|
|
481
|
+
tickets?: Array<{
|
|
482
|
+
label: string;
|
|
483
|
+
token: string;
|
|
484
|
+
status: 'issued' | 'checked_in' | 'void';
|
|
485
|
+
checkedInAt: number | null;
|
|
486
|
+
}>;
|
|
487
|
+
/** Hosted ticket page — the durable re-entry point after the modal closes. */
|
|
488
|
+
ticketUrl?: string;
|
|
489
|
+
/** Printable PDF, one page per ticket. */
|
|
490
|
+
pdfUrl?: string;
|
|
467
491
|
}
|
|
468
492
|
interface PubApiOptions {
|
|
469
493
|
/**
|
|
@@ -641,7 +665,6 @@ declare class SeatingChart {
|
|
|
641
665
|
private mount;
|
|
642
666
|
private hostEl;
|
|
643
667
|
private rendered;
|
|
644
|
-
private retryBtn;
|
|
645
668
|
private mode_;
|
|
646
669
|
private tipEl;
|
|
647
670
|
private tipPos;
|
|
@@ -1146,6 +1169,24 @@ interface SeatPickerTheme {
|
|
|
1146
1169
|
logoUrl?: string;
|
|
1147
1170
|
/** Brand/event fallback name for the monogram. */
|
|
1148
1171
|
brandName?: string;
|
|
1172
|
+
/**
|
|
1173
|
+
* The DRAWN MAP, which the tokens above deliberately do not reach.
|
|
1174
|
+
*
|
|
1175
|
+
* Everything else on this interface is CSS: it re-inks panels, buttons and
|
|
1176
|
+
* the sidebar. The seat map is a canvas, painted from the chart document's
|
|
1177
|
+
* own `ChartTheme`, so a host could re-ink the whole widget and still be
|
|
1178
|
+
* looking at somebody else's dark venue in the middle of it (which is exactly
|
|
1179
|
+
* what SeatLayer's own light event-page palettes did, found 2026-08-07).
|
|
1180
|
+
*
|
|
1181
|
+
* Nested rather than flattened because `background` already means the
|
|
1182
|
+
* WIDGET's background here and the canvas ground is a different surface —
|
|
1183
|
+
* two things one word cannot carry.
|
|
1184
|
+
*
|
|
1185
|
+
* Set it only when you can vouch for the result: these colours are drawn
|
|
1186
|
+
* behind and beside live seat statuses (held, sold, selected), and the map is
|
|
1187
|
+
* the one part of this widget a buyer has to be able to read.
|
|
1188
|
+
*/
|
|
1189
|
+
map?: PickerMapTheme;
|
|
1149
1190
|
}
|
|
1150
1191
|
interface SeatPickerOptions {
|
|
1151
1192
|
/** CSS selector or element to mount into. Omit when using SeatPicker.open(). */
|
|
@@ -1224,10 +1265,19 @@ interface SeatPickerOptions {
|
|
|
1224
1265
|
* on a phone. Offering 3D there is offering a stall. A host that knows its
|
|
1225
1266
|
* audience can raise this; the ceiling goes away when seat streaming lands. */
|
|
1226
1267
|
max3DSeats?: number;
|
|
1268
|
+
/**
|
|
1269
|
+
* Fires when the buyer enters/leaves 3D or targets a seat there. Hosts can
|
|
1270
|
+
* mirror this small, non-sensitive state into a shareable URL.
|
|
1271
|
+
*/
|
|
1272
|
+
onBuyerViewChange?: (state: {
|
|
1273
|
+
view: 'map' | 'venue3d';
|
|
1274
|
+
seatId?: string;
|
|
1275
|
+
}) => void;
|
|
1227
1276
|
/**
|
|
1228
1277
|
* Optional analytics sink for the widget's own journey events. Currently emits
|
|
1229
1278
|
* the 3D venue-view journey (`3d_opened`, `3d_orbit_engaged`, `3d_seat_picked`,
|
|
1230
|
-
* `3d_cinematic_played`/`_skipped`/`_cancelled`,
|
|
1279
|
+
* `3d_cinematic_played`/`_skipped`/`_cancelled`, panorama outcomes, and WebGL
|
|
1280
|
+
* context loss/recovery)
|
|
1231
1281
|
* with `{ surface: 'buyer' }` merged into the props. A throwing sink never
|
|
1232
1282
|
* breaks the widget. Route it to your product analytics (e.g. PostHog). */
|
|
1233
1283
|
onAnalytics?: (event: string, props: Record<string, unknown>) => void;
|
|
@@ -1538,8 +1588,8 @@ declare class SeatPicker {
|
|
|
1538
1588
|
/**
|
|
1539
1589
|
* Eager sightline preview for the confirm card: the organizer's real view
|
|
1540
1590
|
* photo, or — only when the chart has an actual stage to look at — a generated
|
|
1541
|
-
* forward view plus an
|
|
1542
|
-
* chart both the distance
|
|
1591
|
+
* forward view plus an approximate distance-to-stage line. On a stageless
|
|
1592
|
+
* chart both the distance claim and the generic stage silhouette are
|
|
1543
1593
|
* invented promises, so we suppress them; a real attached photo always shows.
|
|
1544
1594
|
* (OV-52)
|
|
1545
1595
|
*/
|
|
@@ -1591,6 +1641,7 @@ declare class SeatPicker {
|
|
|
1591
1641
|
private reportFramedHeight;
|
|
1592
1642
|
/** Full screen via the native API, falling back to a fixed-position overlay (iOS Safari). */
|
|
1593
1643
|
private toggleFullscreen;
|
|
1644
|
+
private syncFullscreenButtons;
|
|
1594
1645
|
/**
|
|
1595
1646
|
* Native element-fullscreen was unavailable or rejected. When framed, a CSS
|
|
1596
1647
|
* `.sl-fs` overlay can't escape the iframe, so we ask the host page to pin us
|
|
@@ -1899,6 +1950,43 @@ declare class SeatPicker {
|
|
|
1899
1950
|
private rowShort;
|
|
1900
1951
|
private updateTooltip;
|
|
1901
1952
|
getSelection(): PickerSeat[];
|
|
1953
|
+
/**
|
|
1954
|
+
* Re-ink the DRAWN MAP after mount, so the canvas can follow a page palette
|
|
1955
|
+
* the host did not know at construction time.
|
|
1956
|
+
*
|
|
1957
|
+
* Deliberately narrower than the `theme` option: it takes only the map half.
|
|
1958
|
+
* The chrome half is CSS custom properties, which a host restyles from its
|
|
1959
|
+
* own stylesheet without asking the widget for anything — and a host that
|
|
1960
|
+
* used both mechanisms at once would have two things writing one token. This
|
|
1961
|
+
* method exists for the half CSS genuinely cannot reach: pixels Konva draws.
|
|
1962
|
+
*
|
|
1963
|
+
* The rebuild is the controller's (`setMapTheme`), which repaints statuses
|
|
1964
|
+
* from the map already in memory and restores the selection, so a buyer
|
|
1965
|
+
* mid-pick keeps their seats and no round trip is spent. A no-op when the
|
|
1966
|
+
* colours have not changed; safe to call on every render.
|
|
1967
|
+
*/
|
|
1968
|
+
setMapTheme(map: PickerMapTheme | null): void;
|
|
1969
|
+
/**
|
|
1970
|
+
* Replace the host pricing override AFTER mount, and repaint everything that
|
|
1971
|
+
* shows a price.
|
|
1972
|
+
*
|
|
1973
|
+
* WHY IT CANNOT JUST BE A MOUNT OPTION. The prices a host knows are often not
|
|
1974
|
+
* the prices it knows AT MOUNT: SeatLayer's own event page learns them from
|
|
1975
|
+
* `GET /pub/events/:key/availability`, a separate cached read that lands a
|
|
1976
|
+
* round trip after the map does — deliberately, because the map is not
|
|
1977
|
+
* allowed to wait on it. Remounting the widget to hand it new options would
|
|
1978
|
+
* tear down a live hold, so the override is settable in place.
|
|
1979
|
+
*
|
|
1980
|
+
* The prices themselves are still the SERVER'S. This method takes an answer;
|
|
1981
|
+
* it never derives one. Nothing here re-reads a release, a window or a quota
|
|
1982
|
+
* — see `paidPrice`, the one funnel every displayed price flows through, and
|
|
1983
|
+
* note that the checkout handoff's line items do not come from here at all:
|
|
1984
|
+
* they are priced by the worker from its own hold. So the worst a wrong call
|
|
1985
|
+
* to this method can do is misprint a price, never mischarge one.
|
|
1986
|
+
*
|
|
1987
|
+
* A no-op when the map is unchanged, so a host may call it on every poll.
|
|
1988
|
+
*/
|
|
1989
|
+
setPricing(pricing: SeatPickerPricing | undefined): void;
|
|
1902
1990
|
/** Current colorblind-safe render state, resolved from the stored buyer
|
|
1903
1991
|
* preference at mount. Host chrome (e.g. the Designer preview) reads this to
|
|
1904
1992
|
* surface the state rather than rendering colorblind colors silently. */
|
|
@@ -1925,10 +2013,7 @@ declare class SeatPicker {
|
|
|
1925
2013
|
*
|
|
1926
2014
|
* Entering `'venue3d'` with `opts.flyToSeatId` runs the cinematic tour: the
|
|
1927
2015
|
* camera flies to the seat and holds in the live scene (a chip offers the
|
|
1928
|
-
* 360° view-from-seat)
|
|
1929
|
-
* the widget enters 3D and auto-flies the camera to that seat, dissolving into
|
|
1930
|
-
* its view-from-seat panorama (the same chain as tapping "See the view from
|
|
1931
|
-
* here" on a seat's confirm card). When the widget is **already** in the 3D
|
|
2016
|
+
* 360° view-from-seat). When the widget is **already** in the 3D
|
|
1932
2017
|
* view, the camera simply flies to the requested seat — the GL scene is not
|
|
1933
2018
|
* torn down or rebuilt, so there is no flash or re-entry.
|
|
1934
2019
|
*
|
|
@@ -1937,7 +2022,7 @@ declare class SeatPicker {
|
|
|
1937
2022
|
*
|
|
1938
2023
|
* @param view `'map'` for the flat picker, `'venue3d'` for the 3D venue.
|
|
1939
2024
|
* @param opts.flyToSeatId When entering (or already in) `'venue3d'`, the seat
|
|
1940
|
-
* id to fly the camera to — cinematic →
|
|
2025
|
+
* id to fly the camera to — cinematic → live seat view.
|
|
1941
2026
|
* Ignored when `view` is `'map'`.
|
|
1942
2027
|
*
|
|
1943
2028
|
* @example
|
|
@@ -1946,6 +2031,7 @@ declare class SeatPicker {
|
|
|
1946
2031
|
*/
|
|
1947
2032
|
setBuyerView(view: 'map' | 'venue3d', opts?: {
|
|
1948
2033
|
flyToSeatId?: string;
|
|
2034
|
+
resetView?: boolean;
|
|
1949
2035
|
}): void;
|
|
1950
2036
|
/** SeatStatus → the view3d palette state. Selection is layered separately. */
|
|
1951
2037
|
private seatState3dFor;
|
package/dist/index.d.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { PickerSeat, RendererViewMode, SeatHoverDetails, PickerTransport } from '@seatlayer/core';
|
|
1
|
+
import { PickerSeat, RendererViewMode, SeatHoverDetails, PickerTransport, PickerMapTheme } from '@seatlayer/core';
|
|
2
2
|
export { ExpandedSeat, SeatHoverDetails } from '@seatlayer/core';
|
|
3
3
|
import { C as ChannelListResult, a as ChannelAllocationPage, b as ChannelRecord, A as AssignmentResult, c as ChannelPreviewProjection, d as ChannelAccessIntent, e as AccessLinkReveal, f as AccessLinkStatusRecord, g as ChannelSeatStatus, B as BucketRow } from './manager-CAIPkUYl.js';
|
|
4
4
|
export { h as ACCESS_LINK_DEFAULTS, i as AccessIntentForbidsDetails, j as AccessLinkRecord, k as AccessLinkState, l as AccessLinkStatus, m as ArchiveBlockedDetails, n as AssignmentBuckets, o as AssignmentDropDetails, p as ChannelAccessSummary, q as ChannelAuditEntry, r as ChannelAuditPage, s as ChannelCounts, t as ChannelState, u as ControlRoomActivityEntry, v as ControlRoomSectionMetric, w as ControlRoomSnapshot, I as IntentSwitchBlockedDetails, L as LogEntry, x as LogPage, M as ManageApi, y as ManageApiError, P as PUBLIC_CHANNEL_ID, z as PUBLIC_CHANNEL_NAME, R as ReportByStatus, D as ReportCategoryMeta, E as ReportCategoryRow, F as ReportResult, S as SeatManager, G as SeatManagerActionResult, H as SeatManagerActivity, J as SeatManagerCapability, K as SeatManagerConnection, N as SeatManagerMode, O as SeatManagerOptions, Q as SeatManagerTallies, T as SelectionSourceRow, U as accessIntentDescription, V as accessIntentLabel, W as accessLine, X as accessLinkBadge, Y as accessLinkErrorCopy, Z as accessLinkIsLive, _ as accessLinkPolicyLines, $ as bucketRows, a0 as dropReviewRows, a1 as intentForbidsCopy, a2 as intentSwitchBlockedCopy, a3 as isPublicChannelId, a4 as markerLetter, a5 as markerOf, a6 as mutationCount, a7 as needsMoveConfirmation, a8 as planAssignment, a9 as retryAfterCopy, aa as selectionSources, ab as stateBadge, ac as suggestMarker } from './manager-CAIPkUYl.js';
|
|
@@ -232,10 +232,21 @@ interface RealtimeSink {
|
|
|
232
232
|
/** Apply a batch of label→status changes. Implementations must paint this as
|
|
233
233
|
* ONE pass, not one pass per label (motion system §4 rule 2). */
|
|
234
234
|
applyStatuses(changes: StatusChange[]): void;
|
|
235
|
+
/**
|
|
236
|
+
* Paint a COMPLETE projection — the default plus the units that differ.
|
|
237
|
+
*
|
|
238
|
+
* Every case that cannot be expressed as a bounded diff (the first snapshot,
|
|
239
|
+
* or a changed default) still arrives as a whole authoritative projection: the
|
|
240
|
+
* client holds it, it just has no way to hand it over. This is that way, and
|
|
241
|
+
* where a sink provides it the {@link resync} round trip is skipped entirely.
|
|
242
|
+
*
|
|
243
|
+
* Optional, so an older sink keeps working unchanged.
|
|
244
|
+
*/
|
|
245
|
+
applyProjection?(projection: Projection): void;
|
|
235
246
|
/** Re-pull authoritative state over the scoped HTTP route. Used when a frame
|
|
236
247
|
* cannot be diffed against what we hold (first snapshot, or the scope's
|
|
237
248
|
* default itself changed, which redefines every unit we were never told
|
|
238
|
-
* about). */
|
|
249
|
+
* about), and the sink cannot take a whole projection. */
|
|
239
250
|
resync(): void | Promise<void>;
|
|
240
251
|
/** Section availability changed (channel-agnostic; identical for every scope). */
|
|
241
252
|
onSections?(hidden: string[], closed: string[]): void;
|
|
@@ -464,6 +475,19 @@ interface OrderStatusResult {
|
|
|
464
475
|
currency: string;
|
|
465
476
|
amountFormatted: string;
|
|
466
477
|
seatCount: number;
|
|
478
|
+
eventName?: string | null;
|
|
479
|
+
venue?: string | null;
|
|
480
|
+
startsAt?: number | null;
|
|
481
|
+
tickets?: Array<{
|
|
482
|
+
label: string;
|
|
483
|
+
token: string;
|
|
484
|
+
status: 'issued' | 'checked_in' | 'void';
|
|
485
|
+
checkedInAt: number | null;
|
|
486
|
+
}>;
|
|
487
|
+
/** Hosted ticket page — the durable re-entry point after the modal closes. */
|
|
488
|
+
ticketUrl?: string;
|
|
489
|
+
/** Printable PDF, one page per ticket. */
|
|
490
|
+
pdfUrl?: string;
|
|
467
491
|
}
|
|
468
492
|
interface PubApiOptions {
|
|
469
493
|
/**
|
|
@@ -641,7 +665,6 @@ declare class SeatingChart {
|
|
|
641
665
|
private mount;
|
|
642
666
|
private hostEl;
|
|
643
667
|
private rendered;
|
|
644
|
-
private retryBtn;
|
|
645
668
|
private mode_;
|
|
646
669
|
private tipEl;
|
|
647
670
|
private tipPos;
|
|
@@ -1146,6 +1169,24 @@ interface SeatPickerTheme {
|
|
|
1146
1169
|
logoUrl?: string;
|
|
1147
1170
|
/** Brand/event fallback name for the monogram. */
|
|
1148
1171
|
brandName?: string;
|
|
1172
|
+
/**
|
|
1173
|
+
* The DRAWN MAP, which the tokens above deliberately do not reach.
|
|
1174
|
+
*
|
|
1175
|
+
* Everything else on this interface is CSS: it re-inks panels, buttons and
|
|
1176
|
+
* the sidebar. The seat map is a canvas, painted from the chart document's
|
|
1177
|
+
* own `ChartTheme`, so a host could re-ink the whole widget and still be
|
|
1178
|
+
* looking at somebody else's dark venue in the middle of it (which is exactly
|
|
1179
|
+
* what SeatLayer's own light event-page palettes did, found 2026-08-07).
|
|
1180
|
+
*
|
|
1181
|
+
* Nested rather than flattened because `background` already means the
|
|
1182
|
+
* WIDGET's background here and the canvas ground is a different surface —
|
|
1183
|
+
* two things one word cannot carry.
|
|
1184
|
+
*
|
|
1185
|
+
* Set it only when you can vouch for the result: these colours are drawn
|
|
1186
|
+
* behind and beside live seat statuses (held, sold, selected), and the map is
|
|
1187
|
+
* the one part of this widget a buyer has to be able to read.
|
|
1188
|
+
*/
|
|
1189
|
+
map?: PickerMapTheme;
|
|
1149
1190
|
}
|
|
1150
1191
|
interface SeatPickerOptions {
|
|
1151
1192
|
/** CSS selector or element to mount into. Omit when using SeatPicker.open(). */
|
|
@@ -1224,10 +1265,19 @@ interface SeatPickerOptions {
|
|
|
1224
1265
|
* on a phone. Offering 3D there is offering a stall. A host that knows its
|
|
1225
1266
|
* audience can raise this; the ceiling goes away when seat streaming lands. */
|
|
1226
1267
|
max3DSeats?: number;
|
|
1268
|
+
/**
|
|
1269
|
+
* Fires when the buyer enters/leaves 3D or targets a seat there. Hosts can
|
|
1270
|
+
* mirror this small, non-sensitive state into a shareable URL.
|
|
1271
|
+
*/
|
|
1272
|
+
onBuyerViewChange?: (state: {
|
|
1273
|
+
view: 'map' | 'venue3d';
|
|
1274
|
+
seatId?: string;
|
|
1275
|
+
}) => void;
|
|
1227
1276
|
/**
|
|
1228
1277
|
* Optional analytics sink for the widget's own journey events. Currently emits
|
|
1229
1278
|
* the 3D venue-view journey (`3d_opened`, `3d_orbit_engaged`, `3d_seat_picked`,
|
|
1230
|
-
* `3d_cinematic_played`/`_skipped`/`_cancelled`,
|
|
1279
|
+
* `3d_cinematic_played`/`_skipped`/`_cancelled`, panorama outcomes, and WebGL
|
|
1280
|
+
* context loss/recovery)
|
|
1231
1281
|
* with `{ surface: 'buyer' }` merged into the props. A throwing sink never
|
|
1232
1282
|
* breaks the widget. Route it to your product analytics (e.g. PostHog). */
|
|
1233
1283
|
onAnalytics?: (event: string, props: Record<string, unknown>) => void;
|
|
@@ -1538,8 +1588,8 @@ declare class SeatPicker {
|
|
|
1538
1588
|
/**
|
|
1539
1589
|
* Eager sightline preview for the confirm card: the organizer's real view
|
|
1540
1590
|
* photo, or — only when the chart has an actual stage to look at — a generated
|
|
1541
|
-
* forward view plus an
|
|
1542
|
-
* chart both the distance
|
|
1591
|
+
* forward view plus an approximate distance-to-stage line. On a stageless
|
|
1592
|
+
* chart both the distance claim and the generic stage silhouette are
|
|
1543
1593
|
* invented promises, so we suppress them; a real attached photo always shows.
|
|
1544
1594
|
* (OV-52)
|
|
1545
1595
|
*/
|
|
@@ -1591,6 +1641,7 @@ declare class SeatPicker {
|
|
|
1591
1641
|
private reportFramedHeight;
|
|
1592
1642
|
/** Full screen via the native API, falling back to a fixed-position overlay (iOS Safari). */
|
|
1593
1643
|
private toggleFullscreen;
|
|
1644
|
+
private syncFullscreenButtons;
|
|
1594
1645
|
/**
|
|
1595
1646
|
* Native element-fullscreen was unavailable or rejected. When framed, a CSS
|
|
1596
1647
|
* `.sl-fs` overlay can't escape the iframe, so we ask the host page to pin us
|
|
@@ -1899,6 +1950,43 @@ declare class SeatPicker {
|
|
|
1899
1950
|
private rowShort;
|
|
1900
1951
|
private updateTooltip;
|
|
1901
1952
|
getSelection(): PickerSeat[];
|
|
1953
|
+
/**
|
|
1954
|
+
* Re-ink the DRAWN MAP after mount, so the canvas can follow a page palette
|
|
1955
|
+
* the host did not know at construction time.
|
|
1956
|
+
*
|
|
1957
|
+
* Deliberately narrower than the `theme` option: it takes only the map half.
|
|
1958
|
+
* The chrome half is CSS custom properties, which a host restyles from its
|
|
1959
|
+
* own stylesheet without asking the widget for anything — and a host that
|
|
1960
|
+
* used both mechanisms at once would have two things writing one token. This
|
|
1961
|
+
* method exists for the half CSS genuinely cannot reach: pixels Konva draws.
|
|
1962
|
+
*
|
|
1963
|
+
* The rebuild is the controller's (`setMapTheme`), which repaints statuses
|
|
1964
|
+
* from the map already in memory and restores the selection, so a buyer
|
|
1965
|
+
* mid-pick keeps their seats and no round trip is spent. A no-op when the
|
|
1966
|
+
* colours have not changed; safe to call on every render.
|
|
1967
|
+
*/
|
|
1968
|
+
setMapTheme(map: PickerMapTheme | null): void;
|
|
1969
|
+
/**
|
|
1970
|
+
* Replace the host pricing override AFTER mount, and repaint everything that
|
|
1971
|
+
* shows a price.
|
|
1972
|
+
*
|
|
1973
|
+
* WHY IT CANNOT JUST BE A MOUNT OPTION. The prices a host knows are often not
|
|
1974
|
+
* the prices it knows AT MOUNT: SeatLayer's own event page learns them from
|
|
1975
|
+
* `GET /pub/events/:key/availability`, a separate cached read that lands a
|
|
1976
|
+
* round trip after the map does — deliberately, because the map is not
|
|
1977
|
+
* allowed to wait on it. Remounting the widget to hand it new options would
|
|
1978
|
+
* tear down a live hold, so the override is settable in place.
|
|
1979
|
+
*
|
|
1980
|
+
* The prices themselves are still the SERVER'S. This method takes an answer;
|
|
1981
|
+
* it never derives one. Nothing here re-reads a release, a window or a quota
|
|
1982
|
+
* — see `paidPrice`, the one funnel every displayed price flows through, and
|
|
1983
|
+
* note that the checkout handoff's line items do not come from here at all:
|
|
1984
|
+
* they are priced by the worker from its own hold. So the worst a wrong call
|
|
1985
|
+
* to this method can do is misprint a price, never mischarge one.
|
|
1986
|
+
*
|
|
1987
|
+
* A no-op when the map is unchanged, so a host may call it on every poll.
|
|
1988
|
+
*/
|
|
1989
|
+
setPricing(pricing: SeatPickerPricing | undefined): void;
|
|
1902
1990
|
/** Current colorblind-safe render state, resolved from the stored buyer
|
|
1903
1991
|
* preference at mount. Host chrome (e.g. the Designer preview) reads this to
|
|
1904
1992
|
* surface the state rather than rendering colorblind colors silently. */
|
|
@@ -1925,10 +2013,7 @@ declare class SeatPicker {
|
|
|
1925
2013
|
*
|
|
1926
2014
|
* Entering `'venue3d'` with `opts.flyToSeatId` runs the cinematic tour: the
|
|
1927
2015
|
* camera flies to the seat and holds in the live scene (a chip offers the
|
|
1928
|
-
* 360° view-from-seat)
|
|
1929
|
-
* the widget enters 3D and auto-flies the camera to that seat, dissolving into
|
|
1930
|
-
* its view-from-seat panorama (the same chain as tapping "See the view from
|
|
1931
|
-
* here" on a seat's confirm card). When the widget is **already** in the 3D
|
|
2016
|
+
* 360° view-from-seat). When the widget is **already** in the 3D
|
|
1932
2017
|
* view, the camera simply flies to the requested seat — the GL scene is not
|
|
1933
2018
|
* torn down or rebuilt, so there is no flash or re-entry.
|
|
1934
2019
|
*
|
|
@@ -1937,7 +2022,7 @@ declare class SeatPicker {
|
|
|
1937
2022
|
*
|
|
1938
2023
|
* @param view `'map'` for the flat picker, `'venue3d'` for the 3D venue.
|
|
1939
2024
|
* @param opts.flyToSeatId When entering (or already in) `'venue3d'`, the seat
|
|
1940
|
-
* id to fly the camera to — cinematic →
|
|
2025
|
+
* id to fly the camera to — cinematic → live seat view.
|
|
1941
2026
|
* Ignored when `view` is `'map'`.
|
|
1942
2027
|
*
|
|
1943
2028
|
* @example
|
|
@@ -1946,6 +2031,7 @@ declare class SeatPicker {
|
|
|
1946
2031
|
*/
|
|
1947
2032
|
setBuyerView(view: 'map' | 'venue3d', opts?: {
|
|
1948
2033
|
flyToSeatId?: string;
|
|
2034
|
+
resetView?: boolean;
|
|
1949
2035
|
}): void;
|
|
1950
2036
|
/** SeatStatus → the view3d palette state. Selection is layered separately. */
|
|
1951
2037
|
private seatState3dFor;
|