@seatlayer/js 0.92.5 → 0.94.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/README.md +5 -2
- package/dist/{channelsMode-B41tbE29.d.cts → channelsMode-DYwJ6sfR.d.cts} +200 -27
- package/dist/{channelsMode-B41tbE29.d.ts → channelsMode-DYwJ6sfR.d.ts} +200 -27
- package/dist/channelsMode-YJO6FOPD.js +1 -0
- package/dist/{chunk-5VGXB6GJ.js → chunk-DR5JXWLO.js} +208 -228
- package/dist/chunk-JELR6YYZ.js +1 -0
- package/dist/hostedCheckout-GQQF4XDN.js +58 -0
- package/dist/index.cjs +40 -28
- package/dist/index.d.cts +82 -26
- package/dist/index.d.ts +82 -26
- package/dist/index.js +40 -28
- package/dist/manager.cjs +516 -340
- package/dist/manager.d.cts +2 -2
- package/dist/manager.d.ts +2 -2
- package/dist/manager.js +316 -120
- package/package.json +2 -2
- package/dist/channelsMode-KZU235GN.js +0 -1
- package/dist/hostedCheckout-K6C42MCF.js +0 -58
package/dist/index.d.cts
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
import { PickerSeat, PickerGAArea, PickerMapTheme, PickerTransport, PickerSelectionValidator, RendererViewMode, PickerSelectionValidity, ChartTheme, AccessibilityType, FloorLabelStyle, LodRung, SectionSummary, PickerAccessNeed, SeatHoverDetails, AccessibleSectionStep, AvailabilityRefreshOutcome, PickerController, ExpandedSeat, TableSelectionDetails, PickerSalesState } from '@seatlayer/core';
|
|
1
|
+
import { PickerSeat, PickerGAArea, PickerMapTheme, PickerTransport, PickerSelectionValidator, RendererViewMode, PickerSelectionValidity, ChartTheme, AccessibilityType, FloorLabelStyle, LodRung, SectionSummary, PickerAccessNeed, SeatHoverDetails, AccessibleSectionStep, AvailabilityRefreshOutcome, RendererMinimapSnapshot, ISeatmapRenderer, PickerController, ExpandedSeat, TableSelectionDetails, PickerSalesState } from '@seatlayer/core';
|
|
2
2
|
export { ExpandedSeat, PickerMapTheme, PickerSelectionValidator, PickerSelectionValidity, PickerSelectionViolation, RendererViewMode, SeatHoverDetails } from '@seatlayer/core';
|
|
3
|
-
import { T as ThemeMode } from './channelsMode-
|
|
4
|
-
export { A as AccessIntentForbidsDetails, a as AccessLinkRecord, b as AccessLinkReveal, c as AccessLinkState, d as AccessLinkStatus, e as AccessLinkStatusRecord, f as ArchiveBlockedDetails, g as AssignmentBuckets, h as AssignmentDropDetails, i as AssignmentResult, B as BucketRow, C as ChannelAccessIntent, j as ChannelAccessSummary, k as ChannelAllocationPage, l as ChannelAttribution, m as ChannelAuditEntry, n as ChannelAuditPage, o as ChannelCounts, p as ChannelListResult, q as ChannelPreviewProjection, r as ChannelRecord, s as ChannelReport, t as ChannelReportLinkRecord, u as ChannelReportLinkReveal, v as ChannelReportResult, w as ChannelReportRow, x as ChannelSeatStatus, y as ChannelState, z as ChannelsCapabilities, D as ChannelsClient, E as ChannelsMode, F as ChannelsModeHost, G as ChannelsRowView, H as ChannelsSeatView, I as ControlRoomActivityEntry, J as ControlRoomSectionMetric, K as ControlRoomSnapshot, L as EventCategoryAssignmentResult, M as EventScopedManageToken, N as EventTableBookingMode, O as EventTableBookingResult, P as IntentSwitchBlockedDetails, Q as InventoryBooking, R as InventoryBookingActivity, S as InventoryBookingDetail, U as InventoryBookingObject, V as InventoryBookingState, W as InventoryBookingsPage, X as InventoryBookingsQuery, Y as LogEntry, Z as LogPage, _ as ManageApi, $ as ManageApiError, a0 as ReportByStatus, a1 as ReportCategoryMeta, a2 as ReportCategoryRow, a3 as ReportResult, a4 as SeatManager, a5 as SeatManagerActionResult, a6 as SeatManagerActivity, a7 as SeatManagerCapability, a8 as SeatManagerConnection, a9 as SeatManagerFilteredSection, aa as SeatManagerMode, ab as SeatManagerOptions, ac as SeatManagerSelectionValidity, ad as SeatManagerTallies, ae as SelectionSourceRow } from './channelsMode-
|
|
3
|
+
import { T as ThemeMode } from './channelsMode-DYwJ6sfR.cjs';
|
|
4
|
+
export { A as AccessIntentForbidsDetails, a as AccessLinkRecord, b as AccessLinkReveal, c as AccessLinkState, d as AccessLinkStatus, e as AccessLinkStatusRecord, f as ArchiveBlockedDetails, g as AssignmentBuckets, h as AssignmentDropDetails, i as AssignmentResult, B as BucketRow, C as ChannelAccessIntent, j as ChannelAccessSummary, k as ChannelAllocationPage, l as ChannelAttribution, m as ChannelAuditEntry, n as ChannelAuditPage, o as ChannelCounts, p as ChannelListResult, q as ChannelPreviewProjection, r as ChannelRecord, s as ChannelReport, t as ChannelReportLinkRecord, u as ChannelReportLinkReveal, v as ChannelReportResult, w as ChannelReportRow, x as ChannelSeatStatus, y as ChannelState, z as ChannelsCapabilities, D as ChannelsClient, E as ChannelsMode, F as ChannelsModeHost, G as ChannelsRowView, H as ChannelsSeatView, I as ControlRoomActivityEntry, J as ControlRoomSectionMetric, K as ControlRoomSnapshot, L as EventCategoryAssignmentResult, M as EventScopedManageToken, N as EventTableBookingMode, O as EventTableBookingResult, P as IntentSwitchBlockedDetails, Q as InventoryBooking, R as InventoryBookingActivity, S as InventoryBookingDetail, U as InventoryBookingObject, V as InventoryBookingState, W as InventoryBookingsPage, X as InventoryBookingsQuery, Y as LogEntry, Z as LogPage, _ as ManageApi, $ as ManageApiError, a0 as ReportByStatus, a1 as ReportCategoryMeta, a2 as ReportCategoryRow, a3 as ReportResult, a4 as SeatManager, a5 as SeatManagerActionResult, a6 as SeatManagerActivity, a7 as SeatManagerCapability, a8 as SeatManagerConnection, a9 as SeatManagerFilteredSection, aa as SeatManagerMode, ab as SeatManagerOptions, ac as SeatManagerSelectionValidity, ad as SeatManagerTallies, ae as SelectionSourceRow } from './channelsMode-DYwJ6sfR.cjs';
|
|
5
5
|
import * as _seatlayer_core_core_seatConfidence from '@seatlayer/core/core/seatConfidence';
|
|
6
6
|
import { SeatConfidenceDisclosure } from '@seatlayer/core/core/seatConfidence';
|
|
7
7
|
import { SeatViewStopName, Venue3DHandle, SeatState3D, SeatView } from '@seatlayer/core/view3d';
|
|
@@ -338,14 +338,26 @@ interface SubscribeTicket {
|
|
|
338
338
|
protocols?: string[];
|
|
339
339
|
}
|
|
340
340
|
interface BuyerRealtimeOptions {
|
|
341
|
-
/** The subscribe URL. Must never carry a credential — asserted below.
|
|
342
|
-
|
|
341
|
+
/** The subscribe URL. Must never carry a credential — asserted below. A
|
|
342
|
+
* function is read on every connection attempt, so a reconnect can carry
|
|
343
|
+
* a rotated viewer id (see `onIdleExpired`). */
|
|
344
|
+
url: string | (() => string);
|
|
343
345
|
sink: RealtimeSink;
|
|
344
346
|
/** Mint a one-use ticket for THIS connection attempt. Returns null for the
|
|
345
347
|
* anonymous public case (no ticket needed). Throwing stops the client. */
|
|
346
348
|
mintTicket?: () => Promise<SubscribeTicket | null>;
|
|
347
349
|
/** Typed terminal access states. A 4401 `access_expired` close reconnects. */
|
|
348
350
|
onAccessUnavailable?: (event: BuyerAccessUnavailableEvent) => void;
|
|
351
|
+
/**
|
|
352
|
+
* The server's idle backstop closed the socket: 4401 `idle_expired`, sent
|
|
353
|
+
* once a public socket has stood for EVENT_SOCKET_IDLE_MINUTES. The client
|
|
354
|
+
* stops — the same socket would only be refused again — and the widget
|
|
355
|
+
* decides: raise its paused card, or, when the buyer is plainly still here
|
|
356
|
+
* (a live hold, recent input), `restart()` at once behind a rotated viewer
|
|
357
|
+
* id. Absent, the close is reported through `onAccessUnavailable` as the
|
|
358
|
+
* terminal revoked state, exactly as the runtimes before 0.94 read it.
|
|
359
|
+
*/
|
|
360
|
+
onIdleExpired?: () => void;
|
|
349
361
|
/** Test seam. Defaults to the global WebSocket. */
|
|
350
362
|
socketFactory?: (url: string, protocols: string[]) => WebSocket;
|
|
351
363
|
/** Test seam for the keepalive/backoff timers. */
|
|
@@ -407,6 +419,9 @@ declare class BuyerRealtimeClient {
|
|
|
407
419
|
* Workflow step that has to replay deterministically.
|
|
408
420
|
*/
|
|
409
421
|
private scheduleReconnect;
|
|
422
|
+
/** Socket reconnects this client has made in its lifetime — for the telemetry beacon. */
|
|
423
|
+
private reconnectCount;
|
|
424
|
+
get reconnects(): number;
|
|
410
425
|
private clearPongTimer;
|
|
411
426
|
private clearTimers;
|
|
412
427
|
}
|
|
@@ -2709,7 +2724,7 @@ interface EmbeddedDesignerOptions {
|
|
|
2709
2724
|
* theme's `iframe { height: … !important }` cannot override them.
|
|
2710
2725
|
*/
|
|
2711
2726
|
height?: 'fill' | number;
|
|
2712
|
-
/** Minimum height (px) that `'fill'` mode clamps to. Defaults to `
|
|
2727
|
+
/** Minimum height (px) that `'fill'` mode clamps to. Defaults to `0` so a small host is never overrun. */
|
|
2713
2728
|
minHeight?: number;
|
|
2714
2729
|
/**
|
|
2715
2730
|
* Auto-grow the iframe to the height the Designer reports over the resize
|
|
@@ -3159,28 +3174,56 @@ interface PerformanceGroupPickerInternal {
|
|
|
3159
3174
|
type ConfirmCardMode = 'add' | 'remove';
|
|
3160
3175
|
|
|
3161
3176
|
/**
|
|
3162
|
-
*
|
|
3163
|
-
*
|
|
3164
|
-
* from it.
|
|
3165
|
-
*
|
|
3166
|
-
* Lifted out of SeatPicker.ts with the method bodies verbatim — statement for
|
|
3167
|
-
* statement, including canvas call order, which matters here because a 2D
|
|
3168
|
-
* context is a state machine and jsdom cannot exercise it. The ONLY edits are
|
|
3169
|
-
* the indirections through {@link MinimapHost}: `this.controller` →
|
|
3170
|
-
* `this.host.controller`, `this.cssVar` → `this.host.cssVar`, `this.tf` →
|
|
3171
|
-
* the module-level `tfStatic` it always delegated to, and the widget root and
|
|
3172
|
-
* focused-section label behind accessors (SeatPicker replaces both across a
|
|
3173
|
-
* re-mount, so they must be read late, not captured).
|
|
3177
|
+
* MapCamera — what a map-chrome component (minimap, zoom pills, crumb) needs
|
|
3178
|
+
* from the surface that owns the renderer (plan item 7, slice A).
|
|
3174
3179
|
*
|
|
3175
|
-
*
|
|
3176
|
-
*
|
|
3177
|
-
*
|
|
3178
|
-
*
|
|
3180
|
+
* Named so the chrome can be shared: the buyer picker's `PickerController`
|
|
3181
|
+
* satisfies it by type, and the control room's manager satisfies it over its
|
|
3182
|
+
* own renderer. Nothing here is picker-specific — it is the camera, the
|
|
3183
|
+
* floors, the focus, and the overview snapshot the renderer already keeps.
|
|
3179
3184
|
*/
|
|
3180
3185
|
|
|
3181
|
-
|
|
3186
|
+
interface MapRect {
|
|
3187
|
+
x: number;
|
|
3188
|
+
y: number;
|
|
3189
|
+
width: number;
|
|
3190
|
+
height: number;
|
|
3191
|
+
}
|
|
3192
|
+
interface MapCamera {
|
|
3193
|
+
/** World-space rect currently visible + full chart bounds; null before a chart. */
|
|
3194
|
+
getViewport(): {
|
|
3195
|
+
visible: MapRect;
|
|
3196
|
+
bounds: MapRect;
|
|
3197
|
+
} | null;
|
|
3198
|
+
getMinimapSnapshot(): RendererMinimapSnapshot;
|
|
3199
|
+
/** Pan without changing zoom so `point` becomes the viewport centre. */
|
|
3200
|
+
panToWorld(point: {
|
|
3201
|
+
x: number;
|
|
3202
|
+
y: number;
|
|
3203
|
+
}): void;
|
|
3204
|
+
/** Leave section-focus dimming without changing the current zoom. */
|
|
3205
|
+
clearSectionFocus(): void;
|
|
3206
|
+
/** Glide in on a section (the host surfaces whatever it surfaces on a tap). */
|
|
3207
|
+
focusSection(id: string, anchor?: {
|
|
3208
|
+
x: number;
|
|
3209
|
+
y: number;
|
|
3210
|
+
}): void;
|
|
3211
|
+
/** The whole venue again: focus off, fit the chart. */
|
|
3212
|
+
overview(): void;
|
|
3213
|
+
getFloors(): {
|
|
3214
|
+
id: string;
|
|
3215
|
+
name: string;
|
|
3216
|
+
}[];
|
|
3217
|
+
getActiveFloorId(): string;
|
|
3218
|
+
isFloorOverview(): boolean;
|
|
3219
|
+
/** Optional: the renderer itself, for hosts that still reach past the camera. */
|
|
3220
|
+
getRenderer?(): ISeatmapRenderer | null;
|
|
3221
|
+
}
|
|
3222
|
+
|
|
3223
|
+
/** What the minimap needs from the surface around it. */
|
|
3182
3224
|
interface MinimapHost {
|
|
3183
|
-
|
|
3225
|
+
/** The camera it reads and moves — a picker controller or a manager's map. */
|
|
3226
|
+
readonly controller: MapCamera;
|
|
3184
3227
|
/** The widget root — it carries `data-minimap-open`. A function, not a
|
|
3185
3228
|
* field: SeatPicker rebuilds its root, and a captured one goes stale. */
|
|
3186
3229
|
root(): HTMLElement | null;
|
|
@@ -3189,8 +3232,15 @@ interface MinimapHost {
|
|
|
3189
3232
|
/** Label of the last surfaced section card. Backs the minimap caption when
|
|
3190
3233
|
* the renderer snapshot reports no active section. */
|
|
3191
3234
|
focusedSectionLabel(): string | undefined;
|
|
3235
|
+
/**
|
|
3236
|
+
* The display colour of a category, for the seat-dot thumbnail of a chart
|
|
3237
|
+
* with no sections. ASKED OF THE HOST so a colourblind-safe remap reaches
|
|
3238
|
+
* the map, the legend and this thumbnail from one place. Undefined = the
|
|
3239
|
+
* flat availability colour.
|
|
3240
|
+
*/
|
|
3241
|
+
tint?(categoryKey: string): string | undefined;
|
|
3192
3242
|
}
|
|
3193
|
-
declare class
|
|
3243
|
+
declare class MapMinimap {
|
|
3194
3244
|
private readonly host;
|
|
3195
3245
|
private miniCanvas;
|
|
3196
3246
|
private miniBase;
|
|
@@ -3519,6 +3569,8 @@ declare class SeatPicker implements GaPromptPicker {
|
|
|
3519
3569
|
private readonly access;
|
|
3520
3570
|
private realtime;
|
|
3521
3571
|
private accessEl;
|
|
3572
|
+
/** The buyer's idle clock (0.94, #78; pickerIdle.ts). Null until mounted or when turned off. */
|
|
3573
|
+
private idleClock;
|
|
3522
3574
|
/** @internal */ readonly apiBase: string;
|
|
3523
3575
|
/** @internal */ controller: PickerController;
|
|
3524
3576
|
/** @internal */ maxTickets: number;
|
|
@@ -3746,7 +3798,7 @@ declare class SeatPicker implements GaPromptPicker {
|
|
|
3746
3798
|
/** The panel's price-band <select>, so the rail's reset chip can keep it in
|
|
3747
3799
|
* step. Null when the chart has fewer than two bands and none was built. */
|
|
3748
3800
|
/** @internal */ priceSelect: HTMLSelectElement | null;
|
|
3749
|
-
/** @internal */ minimap:
|
|
3801
|
+
/** @internal */ minimap: MapMinimap | null;
|
|
3750
3802
|
private pickerLayoutSize;
|
|
3751
3803
|
private fullscreenAffordanceSize;
|
|
3752
3804
|
/** @internal */ priceBandKeys: Set<string> | null;
|
|
@@ -4879,6 +4931,10 @@ declare class SeatPicker implements GaPromptPicker {
|
|
|
4879
4931
|
*/
|
|
4880
4932
|
private recoverAccess;
|
|
4881
4933
|
private dismissAccessPanel;
|
|
4934
|
+
/** The idle clock and the paused card — see pickerIdlePause.ts. */
|
|
4935
|
+
private get idlePauseHost();
|
|
4936
|
+
private startIdleClock;
|
|
4937
|
+
private resumeFromIdle;
|
|
4882
4938
|
/**
|
|
4883
4939
|
* The hold ran out under the buyer's feet — say so, and block.
|
|
4884
4940
|
*
|
package/dist/index.d.ts
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
import { PickerSeat, PickerGAArea, PickerMapTheme, PickerTransport, PickerSelectionValidator, RendererViewMode, PickerSelectionValidity, ChartTheme, AccessibilityType, FloorLabelStyle, LodRung, SectionSummary, PickerAccessNeed, SeatHoverDetails, AccessibleSectionStep, AvailabilityRefreshOutcome, PickerController, ExpandedSeat, TableSelectionDetails, PickerSalesState } from '@seatlayer/core';
|
|
1
|
+
import { PickerSeat, PickerGAArea, PickerMapTheme, PickerTransport, PickerSelectionValidator, RendererViewMode, PickerSelectionValidity, ChartTheme, AccessibilityType, FloorLabelStyle, LodRung, SectionSummary, PickerAccessNeed, SeatHoverDetails, AccessibleSectionStep, AvailabilityRefreshOutcome, RendererMinimapSnapshot, ISeatmapRenderer, PickerController, ExpandedSeat, TableSelectionDetails, PickerSalesState } from '@seatlayer/core';
|
|
2
2
|
export { ExpandedSeat, PickerMapTheme, PickerSelectionValidator, PickerSelectionValidity, PickerSelectionViolation, RendererViewMode, SeatHoverDetails } from '@seatlayer/core';
|
|
3
|
-
import { T as ThemeMode } from './channelsMode-
|
|
4
|
-
export { A as AccessIntentForbidsDetails, a as AccessLinkRecord, b as AccessLinkReveal, c as AccessLinkState, d as AccessLinkStatus, e as AccessLinkStatusRecord, f as ArchiveBlockedDetails, g as AssignmentBuckets, h as AssignmentDropDetails, i as AssignmentResult, B as BucketRow, C as ChannelAccessIntent, j as ChannelAccessSummary, k as ChannelAllocationPage, l as ChannelAttribution, m as ChannelAuditEntry, n as ChannelAuditPage, o as ChannelCounts, p as ChannelListResult, q as ChannelPreviewProjection, r as ChannelRecord, s as ChannelReport, t as ChannelReportLinkRecord, u as ChannelReportLinkReveal, v as ChannelReportResult, w as ChannelReportRow, x as ChannelSeatStatus, y as ChannelState, z as ChannelsCapabilities, D as ChannelsClient, E as ChannelsMode, F as ChannelsModeHost, G as ChannelsRowView, H as ChannelsSeatView, I as ControlRoomActivityEntry, J as ControlRoomSectionMetric, K as ControlRoomSnapshot, L as EventCategoryAssignmentResult, M as EventScopedManageToken, N as EventTableBookingMode, O as EventTableBookingResult, P as IntentSwitchBlockedDetails, Q as InventoryBooking, R as InventoryBookingActivity, S as InventoryBookingDetail, U as InventoryBookingObject, V as InventoryBookingState, W as InventoryBookingsPage, X as InventoryBookingsQuery, Y as LogEntry, Z as LogPage, _ as ManageApi, $ as ManageApiError, a0 as ReportByStatus, a1 as ReportCategoryMeta, a2 as ReportCategoryRow, a3 as ReportResult, a4 as SeatManager, a5 as SeatManagerActionResult, a6 as SeatManagerActivity, a7 as SeatManagerCapability, a8 as SeatManagerConnection, a9 as SeatManagerFilteredSection, aa as SeatManagerMode, ab as SeatManagerOptions, ac as SeatManagerSelectionValidity, ad as SeatManagerTallies, ae as SelectionSourceRow } from './channelsMode-
|
|
3
|
+
import { T as ThemeMode } from './channelsMode-DYwJ6sfR.js';
|
|
4
|
+
export { A as AccessIntentForbidsDetails, a as AccessLinkRecord, b as AccessLinkReveal, c as AccessLinkState, d as AccessLinkStatus, e as AccessLinkStatusRecord, f as ArchiveBlockedDetails, g as AssignmentBuckets, h as AssignmentDropDetails, i as AssignmentResult, B as BucketRow, C as ChannelAccessIntent, j as ChannelAccessSummary, k as ChannelAllocationPage, l as ChannelAttribution, m as ChannelAuditEntry, n as ChannelAuditPage, o as ChannelCounts, p as ChannelListResult, q as ChannelPreviewProjection, r as ChannelRecord, s as ChannelReport, t as ChannelReportLinkRecord, u as ChannelReportLinkReveal, v as ChannelReportResult, w as ChannelReportRow, x as ChannelSeatStatus, y as ChannelState, z as ChannelsCapabilities, D as ChannelsClient, E as ChannelsMode, F as ChannelsModeHost, G as ChannelsRowView, H as ChannelsSeatView, I as ControlRoomActivityEntry, J as ControlRoomSectionMetric, K as ControlRoomSnapshot, L as EventCategoryAssignmentResult, M as EventScopedManageToken, N as EventTableBookingMode, O as EventTableBookingResult, P as IntentSwitchBlockedDetails, Q as InventoryBooking, R as InventoryBookingActivity, S as InventoryBookingDetail, U as InventoryBookingObject, V as InventoryBookingState, W as InventoryBookingsPage, X as InventoryBookingsQuery, Y as LogEntry, Z as LogPage, _ as ManageApi, $ as ManageApiError, a0 as ReportByStatus, a1 as ReportCategoryMeta, a2 as ReportCategoryRow, a3 as ReportResult, a4 as SeatManager, a5 as SeatManagerActionResult, a6 as SeatManagerActivity, a7 as SeatManagerCapability, a8 as SeatManagerConnection, a9 as SeatManagerFilteredSection, aa as SeatManagerMode, ab as SeatManagerOptions, ac as SeatManagerSelectionValidity, ad as SeatManagerTallies, ae as SelectionSourceRow } from './channelsMode-DYwJ6sfR.js';
|
|
5
5
|
import * as _seatlayer_core_core_seatConfidence from '@seatlayer/core/core/seatConfidence';
|
|
6
6
|
import { SeatConfidenceDisclosure } from '@seatlayer/core/core/seatConfidence';
|
|
7
7
|
import { SeatViewStopName, Venue3DHandle, SeatState3D, SeatView } from '@seatlayer/core/view3d';
|
|
@@ -338,14 +338,26 @@ interface SubscribeTicket {
|
|
|
338
338
|
protocols?: string[];
|
|
339
339
|
}
|
|
340
340
|
interface BuyerRealtimeOptions {
|
|
341
|
-
/** The subscribe URL. Must never carry a credential — asserted below.
|
|
342
|
-
|
|
341
|
+
/** The subscribe URL. Must never carry a credential — asserted below. A
|
|
342
|
+
* function is read on every connection attempt, so a reconnect can carry
|
|
343
|
+
* a rotated viewer id (see `onIdleExpired`). */
|
|
344
|
+
url: string | (() => string);
|
|
343
345
|
sink: RealtimeSink;
|
|
344
346
|
/** Mint a one-use ticket for THIS connection attempt. Returns null for the
|
|
345
347
|
* anonymous public case (no ticket needed). Throwing stops the client. */
|
|
346
348
|
mintTicket?: () => Promise<SubscribeTicket | null>;
|
|
347
349
|
/** Typed terminal access states. A 4401 `access_expired` close reconnects. */
|
|
348
350
|
onAccessUnavailable?: (event: BuyerAccessUnavailableEvent) => void;
|
|
351
|
+
/**
|
|
352
|
+
* The server's idle backstop closed the socket: 4401 `idle_expired`, sent
|
|
353
|
+
* once a public socket has stood for EVENT_SOCKET_IDLE_MINUTES. The client
|
|
354
|
+
* stops — the same socket would only be refused again — and the widget
|
|
355
|
+
* decides: raise its paused card, or, when the buyer is plainly still here
|
|
356
|
+
* (a live hold, recent input), `restart()` at once behind a rotated viewer
|
|
357
|
+
* id. Absent, the close is reported through `onAccessUnavailable` as the
|
|
358
|
+
* terminal revoked state, exactly as the runtimes before 0.94 read it.
|
|
359
|
+
*/
|
|
360
|
+
onIdleExpired?: () => void;
|
|
349
361
|
/** Test seam. Defaults to the global WebSocket. */
|
|
350
362
|
socketFactory?: (url: string, protocols: string[]) => WebSocket;
|
|
351
363
|
/** Test seam for the keepalive/backoff timers. */
|
|
@@ -407,6 +419,9 @@ declare class BuyerRealtimeClient {
|
|
|
407
419
|
* Workflow step that has to replay deterministically.
|
|
408
420
|
*/
|
|
409
421
|
private scheduleReconnect;
|
|
422
|
+
/** Socket reconnects this client has made in its lifetime — for the telemetry beacon. */
|
|
423
|
+
private reconnectCount;
|
|
424
|
+
get reconnects(): number;
|
|
410
425
|
private clearPongTimer;
|
|
411
426
|
private clearTimers;
|
|
412
427
|
}
|
|
@@ -2709,7 +2724,7 @@ interface EmbeddedDesignerOptions {
|
|
|
2709
2724
|
* theme's `iframe { height: … !important }` cannot override them.
|
|
2710
2725
|
*/
|
|
2711
2726
|
height?: 'fill' | number;
|
|
2712
|
-
/** Minimum height (px) that `'fill'` mode clamps to. Defaults to `
|
|
2727
|
+
/** Minimum height (px) that `'fill'` mode clamps to. Defaults to `0` so a small host is never overrun. */
|
|
2713
2728
|
minHeight?: number;
|
|
2714
2729
|
/**
|
|
2715
2730
|
* Auto-grow the iframe to the height the Designer reports over the resize
|
|
@@ -3159,28 +3174,56 @@ interface PerformanceGroupPickerInternal {
|
|
|
3159
3174
|
type ConfirmCardMode = 'add' | 'remove';
|
|
3160
3175
|
|
|
3161
3176
|
/**
|
|
3162
|
-
*
|
|
3163
|
-
*
|
|
3164
|
-
* from it.
|
|
3165
|
-
*
|
|
3166
|
-
* Lifted out of SeatPicker.ts with the method bodies verbatim — statement for
|
|
3167
|
-
* statement, including canvas call order, which matters here because a 2D
|
|
3168
|
-
* context is a state machine and jsdom cannot exercise it. The ONLY edits are
|
|
3169
|
-
* the indirections through {@link MinimapHost}: `this.controller` →
|
|
3170
|
-
* `this.host.controller`, `this.cssVar` → `this.host.cssVar`, `this.tf` →
|
|
3171
|
-
* the module-level `tfStatic` it always delegated to, and the widget root and
|
|
3172
|
-
* focused-section label behind accessors (SeatPicker replaces both across a
|
|
3173
|
-
* re-mount, so they must be read late, not captured).
|
|
3177
|
+
* MapCamera — what a map-chrome component (minimap, zoom pills, crumb) needs
|
|
3178
|
+
* from the surface that owns the renderer (plan item 7, slice A).
|
|
3174
3179
|
*
|
|
3175
|
-
*
|
|
3176
|
-
*
|
|
3177
|
-
*
|
|
3178
|
-
*
|
|
3180
|
+
* Named so the chrome can be shared: the buyer picker's `PickerController`
|
|
3181
|
+
* satisfies it by type, and the control room's manager satisfies it over its
|
|
3182
|
+
* own renderer. Nothing here is picker-specific — it is the camera, the
|
|
3183
|
+
* floors, the focus, and the overview snapshot the renderer already keeps.
|
|
3179
3184
|
*/
|
|
3180
3185
|
|
|
3181
|
-
|
|
3186
|
+
interface MapRect {
|
|
3187
|
+
x: number;
|
|
3188
|
+
y: number;
|
|
3189
|
+
width: number;
|
|
3190
|
+
height: number;
|
|
3191
|
+
}
|
|
3192
|
+
interface MapCamera {
|
|
3193
|
+
/** World-space rect currently visible + full chart bounds; null before a chart. */
|
|
3194
|
+
getViewport(): {
|
|
3195
|
+
visible: MapRect;
|
|
3196
|
+
bounds: MapRect;
|
|
3197
|
+
} | null;
|
|
3198
|
+
getMinimapSnapshot(): RendererMinimapSnapshot;
|
|
3199
|
+
/** Pan without changing zoom so `point` becomes the viewport centre. */
|
|
3200
|
+
panToWorld(point: {
|
|
3201
|
+
x: number;
|
|
3202
|
+
y: number;
|
|
3203
|
+
}): void;
|
|
3204
|
+
/** Leave section-focus dimming without changing the current zoom. */
|
|
3205
|
+
clearSectionFocus(): void;
|
|
3206
|
+
/** Glide in on a section (the host surfaces whatever it surfaces on a tap). */
|
|
3207
|
+
focusSection(id: string, anchor?: {
|
|
3208
|
+
x: number;
|
|
3209
|
+
y: number;
|
|
3210
|
+
}): void;
|
|
3211
|
+
/** The whole venue again: focus off, fit the chart. */
|
|
3212
|
+
overview(): void;
|
|
3213
|
+
getFloors(): {
|
|
3214
|
+
id: string;
|
|
3215
|
+
name: string;
|
|
3216
|
+
}[];
|
|
3217
|
+
getActiveFloorId(): string;
|
|
3218
|
+
isFloorOverview(): boolean;
|
|
3219
|
+
/** Optional: the renderer itself, for hosts that still reach past the camera. */
|
|
3220
|
+
getRenderer?(): ISeatmapRenderer | null;
|
|
3221
|
+
}
|
|
3222
|
+
|
|
3223
|
+
/** What the minimap needs from the surface around it. */
|
|
3182
3224
|
interface MinimapHost {
|
|
3183
|
-
|
|
3225
|
+
/** The camera it reads and moves — a picker controller or a manager's map. */
|
|
3226
|
+
readonly controller: MapCamera;
|
|
3184
3227
|
/** The widget root — it carries `data-minimap-open`. A function, not a
|
|
3185
3228
|
* field: SeatPicker rebuilds its root, and a captured one goes stale. */
|
|
3186
3229
|
root(): HTMLElement | null;
|
|
@@ -3189,8 +3232,15 @@ interface MinimapHost {
|
|
|
3189
3232
|
/** Label of the last surfaced section card. Backs the minimap caption when
|
|
3190
3233
|
* the renderer snapshot reports no active section. */
|
|
3191
3234
|
focusedSectionLabel(): string | undefined;
|
|
3235
|
+
/**
|
|
3236
|
+
* The display colour of a category, for the seat-dot thumbnail of a chart
|
|
3237
|
+
* with no sections. ASKED OF THE HOST so a colourblind-safe remap reaches
|
|
3238
|
+
* the map, the legend and this thumbnail from one place. Undefined = the
|
|
3239
|
+
* flat availability colour.
|
|
3240
|
+
*/
|
|
3241
|
+
tint?(categoryKey: string): string | undefined;
|
|
3192
3242
|
}
|
|
3193
|
-
declare class
|
|
3243
|
+
declare class MapMinimap {
|
|
3194
3244
|
private readonly host;
|
|
3195
3245
|
private miniCanvas;
|
|
3196
3246
|
private miniBase;
|
|
@@ -3519,6 +3569,8 @@ declare class SeatPicker implements GaPromptPicker {
|
|
|
3519
3569
|
private readonly access;
|
|
3520
3570
|
private realtime;
|
|
3521
3571
|
private accessEl;
|
|
3572
|
+
/** The buyer's idle clock (0.94, #78; pickerIdle.ts). Null until mounted or when turned off. */
|
|
3573
|
+
private idleClock;
|
|
3522
3574
|
/** @internal */ readonly apiBase: string;
|
|
3523
3575
|
/** @internal */ controller: PickerController;
|
|
3524
3576
|
/** @internal */ maxTickets: number;
|
|
@@ -3746,7 +3798,7 @@ declare class SeatPicker implements GaPromptPicker {
|
|
|
3746
3798
|
/** The panel's price-band <select>, so the rail's reset chip can keep it in
|
|
3747
3799
|
* step. Null when the chart has fewer than two bands and none was built. */
|
|
3748
3800
|
/** @internal */ priceSelect: HTMLSelectElement | null;
|
|
3749
|
-
/** @internal */ minimap:
|
|
3801
|
+
/** @internal */ minimap: MapMinimap | null;
|
|
3750
3802
|
private pickerLayoutSize;
|
|
3751
3803
|
private fullscreenAffordanceSize;
|
|
3752
3804
|
/** @internal */ priceBandKeys: Set<string> | null;
|
|
@@ -4879,6 +4931,10 @@ declare class SeatPicker implements GaPromptPicker {
|
|
|
4879
4931
|
*/
|
|
4880
4932
|
private recoverAccess;
|
|
4881
4933
|
private dismissAccessPanel;
|
|
4934
|
+
/** The idle clock and the paused card — see pickerIdlePause.ts. */
|
|
4935
|
+
private get idlePauseHost();
|
|
4936
|
+
private startIdleClock;
|
|
4937
|
+
private resumeFromIdle;
|
|
4882
4938
|
/**
|
|
4883
4939
|
* The hold ran out under the buyer's feet — say so, and block.
|
|
4884
4940
|
*
|