@seatlayer/js 0.36.3 → 0.37.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/dist/index.cjs +343 -46
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +94 -8
- package/dist/index.d.ts +94 -8
- package/dist/index.js +343 -46
- package/dist/index.js.map +1 -1
- package/package.json +2 -2
package/dist/index.d.cts
CHANGED
|
@@ -2725,8 +2725,31 @@ interface SeatManagerOptions {
|
|
|
2725
2725
|
onSelectionChange?: (seats: ExpandedSeat[]) => void;
|
|
2726
2726
|
/** A block/unblock/cancel action completed successfully. */
|
|
2727
2727
|
onActionComplete?: (result: SeatManagerActionResult) => void;
|
|
2728
|
+
/**
|
|
2729
|
+
* The realtime link connected or dropped, with the moment the numbers on
|
|
2730
|
+
* screen were last known good.
|
|
2731
|
+
*
|
|
2732
|
+
* A host embedding this cockpit renders its own chrome around it, and until
|
|
2733
|
+
* now had no way to know the board had gone stale: the manager tracked the
|
|
2734
|
+
* drop internally (its own LIVE/RECONNECTING pill) and told nobody. A host
|
|
2735
|
+
* that polls on a timer and pauses while the tab is hidden therefore showed
|
|
2736
|
+
* arbitrarily old numbers that looked exactly like fresh ones.
|
|
2737
|
+
*/
|
|
2738
|
+
onConnectionChange?: (state: SeatManagerConnection) => void;
|
|
2728
2739
|
onError?: (err: unknown) => void;
|
|
2729
2740
|
}
|
|
2741
|
+
/** Realtime link state, as reported to the embedding host. */
|
|
2742
|
+
interface SeatManagerConnection {
|
|
2743
|
+
/** `live` while the socket is open; `reconnecting` from drop until reopen. */
|
|
2744
|
+
status: 'live' | 'reconnecting';
|
|
2745
|
+
/**
|
|
2746
|
+
* `Date.now()` of the last snapshot or delta accepted from the server, or
|
|
2747
|
+
* null before the first one. This is the honest "as of" for whatever the host
|
|
2748
|
+
* is displaying — NOT the time the connection dropped, which is later and
|
|
2749
|
+
* would overstate freshness.
|
|
2750
|
+
*/
|
|
2751
|
+
lastMessageAt: number | null;
|
|
2752
|
+
}
|
|
2730
2753
|
declare class SeatManager {
|
|
2731
2754
|
private readonly opts;
|
|
2732
2755
|
private readonly api;
|
|
@@ -2758,6 +2781,11 @@ declare class SeatManager {
|
|
|
2758
2781
|
private reconnectTimer;
|
|
2759
2782
|
private attempt;
|
|
2760
2783
|
private closed;
|
|
2784
|
+
/** Mirrors the `live` root class, so the getter never has to read the DOM. */
|
|
2785
|
+
private connectionStatus;
|
|
2786
|
+
/** When the server last told us something. Stamped on accepted traffic only —
|
|
2787
|
+
* a socket that opens and says nothing has not refreshed anything. */
|
|
2788
|
+
private lastMessageAt;
|
|
2761
2789
|
private ready;
|
|
2762
2790
|
private feed;
|
|
2763
2791
|
private feedTimer;
|
|
@@ -2804,8 +2832,10 @@ declare class SeatManager {
|
|
|
2804
2832
|
private resolveChannelCapabilities;
|
|
2805
2833
|
/** The adapter between the cockpit's internals and Channels mode. */
|
|
2806
2834
|
private buildChannelsHost;
|
|
2807
|
-
/**
|
|
2808
|
-
*
|
|
2835
|
+
/** Actual on-screen seat diameter, for the channel overlay's marks. The
|
|
2836
|
+
* renderer's base seat radius is 9 chart units; retaining the camera scale
|
|
2837
|
+
* (rather than capping it) keeps every preview paint aligned with the real
|
|
2838
|
+
* chart geometry at deep zoom. */
|
|
2809
2839
|
private seatPixelSize;
|
|
2810
2840
|
/** Toggle the normalized sales-velocity outline overlay without changing seat colors. */
|
|
2811
2841
|
setHeatOverlay(enabled: boolean): void;
|
|
@@ -2837,6 +2867,14 @@ declare class SeatManager {
|
|
|
2837
2867
|
getSelection(): ExpandedSeat[];
|
|
2838
2868
|
getReport(): Promise<ReportResult>;
|
|
2839
2869
|
getControlRoomSnapshot(windowMinutes?: number): Promise<ControlRoomSnapshot>;
|
|
2870
|
+
/**
|
|
2871
|
+
* The realtime link's current state and the "as of" behind it.
|
|
2872
|
+
*
|
|
2873
|
+
* Pair with `onConnectionChange` for the edges: a host that mounts after a
|
|
2874
|
+
* drop, or re-reads on tab focus, needs to be able to ASK rather than wait
|
|
2875
|
+
* for the next transition that may never come.
|
|
2876
|
+
*/
|
|
2877
|
+
getConnection(): SeatManagerConnection;
|
|
2840
2878
|
getLog(opts?: {
|
|
2841
2879
|
limit?: number;
|
|
2842
2880
|
before?: number;
|
|
@@ -2850,8 +2888,9 @@ declare class SeatManager {
|
|
|
2850
2888
|
zoomToFit(): void;
|
|
2851
2889
|
destroy(): void;
|
|
2852
2890
|
private buildRenderer;
|
|
2853
|
-
/** Block
|
|
2854
|
-
*
|
|
2891
|
+
/** Block always uses a marquee. Channels only enables its marquee after the
|
|
2892
|
+
* organizer deliberately chooses Assign seats; Pan map keeps desktop drag
|
|
2893
|
+
* available for large charts. */
|
|
2855
2894
|
private isBulkSelectMode;
|
|
2856
2895
|
/**
|
|
2857
2896
|
* Block never touches held or booked inventory, so it cannot select it.
|
|
@@ -3131,6 +3170,12 @@ interface ChannelsModeHost {
|
|
|
3131
3170
|
} | null;
|
|
3132
3171
|
/** Approximate on-screen seat size in CSS pixels, for the overlay marks. */
|
|
3133
3172
|
seatPixelSize(): number;
|
|
3173
|
+
/** Whether the live renderer is currently showing individual seats. */
|
|
3174
|
+
isSeatDetail(): boolean;
|
|
3175
|
+
/** Return a sectional venue to its section-only overview. */
|
|
3176
|
+
showSectionOverview(): void;
|
|
3177
|
+
/** Focus one section using the renderer's real camera transition. */
|
|
3178
|
+
focusSection(sectionId: string): void;
|
|
3134
3179
|
isCompact(): boolean;
|
|
3135
3180
|
/** Make the canvas non-interactive behind a full-detent sheet (§13). */
|
|
3136
3181
|
setMapInert(inert: boolean): void;
|
|
@@ -3157,6 +3202,10 @@ declare class ChannelsMode {
|
|
|
3157
3202
|
private loadError;
|
|
3158
3203
|
private loading;
|
|
3159
3204
|
private view;
|
|
3205
|
+
/** Pan is intentionally the initial desktop interaction. Assignment's
|
|
3206
|
+
* marquee is powerful, but must never make an organizer lose map navigation. */
|
|
3207
|
+
private mapIntent;
|
|
3208
|
+
private focusedSectionId;
|
|
3160
3209
|
private showArchived;
|
|
3161
3210
|
private detailChannelId;
|
|
3162
3211
|
private targetChannelId;
|
|
@@ -3173,6 +3222,15 @@ declare class ChannelsMode {
|
|
|
3173
3222
|
private links;
|
|
3174
3223
|
private linksChannelId;
|
|
3175
3224
|
private linksState;
|
|
3225
|
+
/**
|
|
3226
|
+
* Monotonic read generations — one for the channel list + allocation, one for
|
|
3227
|
+
* the open channel's links. Reads are concurrent (a 10s poll versus a
|
|
3228
|
+
* mutation's own reload), and the network does not promise to answer them in
|
|
3229
|
+
* order. Only the NEWEST read of each kind may write to state; an older
|
|
3230
|
+
* answer that arrives late is dropped, never painted.
|
|
3231
|
+
*/
|
|
3232
|
+
private listSeq;
|
|
3233
|
+
private linksSeq;
|
|
3176
3234
|
private previewAudience;
|
|
3177
3235
|
private previewIncludePublic;
|
|
3178
3236
|
private previewProjection;
|
|
@@ -3207,6 +3265,11 @@ declare class ChannelsMode {
|
|
|
3207
3265
|
* all rather than collect a selection nothing can act on.
|
|
3208
3266
|
*/
|
|
3209
3267
|
canSelect(): boolean;
|
|
3268
|
+
/** Bulk seat assignment is explicit. In Pan map, clicks can still inspect a
|
|
3269
|
+
* single seat, while a primary-button drag always moves the camera. */
|
|
3270
|
+
usesMarqueeSelection(): boolean;
|
|
3271
|
+
/** The renderer calls this when the organizer opens a section from overview. */
|
|
3272
|
+
handleSectionFocus(sectionId: string): void;
|
|
3210
3273
|
/**
|
|
3211
3274
|
* Organizer realtime integration point. M5 ships a per-scope socket for
|
|
3212
3275
|
* buyers; the organizer channel-count stream is a later milestone. When it
|
|
@@ -3235,11 +3298,22 @@ declare class ChannelsMode {
|
|
|
3235
3298
|
* Repaint the allocation (or preview) overlay in ONE canvas pass.
|
|
3236
3299
|
*
|
|
3237
3300
|
* Channel identity on the map is a fill in the administrative color PLUS the
|
|
3238
|
-
* letter flags below — never color alone.
|
|
3239
|
-
*
|
|
3240
|
-
*
|
|
3301
|
+
* letter flags below — never color alone. In buyer preview the map instead
|
|
3302
|
+
* uses two explicit, channel-neutral access states. Physical status keeps its
|
|
3303
|
+
* own cue: only FREE units are repainted, so sold/held/blocked seats still
|
|
3304
|
+
* read exactly as they do in every other tool.
|
|
3241
3305
|
*/
|
|
3242
3306
|
private paintOverlay;
|
|
3307
|
+
/** Draw an eligible seat's actual chart label without inventing a new buyer
|
|
3308
|
+
* identifier. Long labels scale down and are omitted rather than overflowing
|
|
3309
|
+
* into an adjacent seat. */
|
|
3310
|
+
private paintPreviewSeatLabel;
|
|
3311
|
+
/** A section overview is a navigation map. These transparent, keyboardable
|
|
3312
|
+
* hit areas sit over the renderer's section shells so both mouse and keyboard
|
|
3313
|
+
* always take the organizer into the real focused-section camera state. */
|
|
3314
|
+
private paintSectionTargets;
|
|
3315
|
+
/** Keep renderer section names legible over a dense, zoomed-out preview. */
|
|
3316
|
+
private paintPreviewSectionLabels;
|
|
3243
3317
|
/** Letter flags at each channel's centroid — the non-color identity cue. */
|
|
3244
3318
|
private paintFlags;
|
|
3245
3319
|
private setStaged;
|
|
@@ -3251,6 +3325,7 @@ declare class ChannelsMode {
|
|
|
3251
3325
|
private loadPreview;
|
|
3252
3326
|
paintRail(): void;
|
|
3253
3327
|
private viewSegmentHtml;
|
|
3328
|
+
private mapNavigationHtml;
|
|
3254
3329
|
private countsHtml;
|
|
3255
3330
|
private channelRowHtml;
|
|
3256
3331
|
private listRailHtml;
|
|
@@ -3314,6 +3389,17 @@ declare class ChannelsMode {
|
|
|
3314
3389
|
*/
|
|
3315
3390
|
private renderSeatListDialog;
|
|
3316
3391
|
private reloadLinks;
|
|
3392
|
+
/**
|
|
3393
|
+
* The reload EVERY link mutation owes the panel.
|
|
3394
|
+
*
|
|
3395
|
+
* A create/rotate/revoke changes two things the detail panel renders: the
|
|
3396
|
+
* channel's access line (the server sets `access.intent` on create, and clears
|
|
3397
|
+
* it when the last live link goes) and the link status list. Both are re-read
|
|
3398
|
+
* here and the rail repainted, so the panel the organizer is already looking
|
|
3399
|
+
* at is current the moment the mutation lands — no reload, and no dependence
|
|
3400
|
+
* on HOW the one-time reveal was dismissed (the button, Escape, or never).
|
|
3401
|
+
*/
|
|
3402
|
+
private reloadAfterLinkChange;
|
|
3317
3403
|
private linkById;
|
|
3318
3404
|
/**
|
|
3319
3405
|
* Create. The three policy fields carry the owner's defaults and every one of
|
|
@@ -3357,4 +3443,4 @@ declare class ChannelsMode {
|
|
|
3357
3443
|
handleBack(): boolean;
|
|
3358
3444
|
}
|
|
3359
3445
|
|
|
3360
|
-
export { ACCESS_LINK_DEFAULTS, type AccessLinkRecord, type AccessLinkReveal, type AccessLinkState, type AccessLinkStatus, type AccessLinkStatusRecord, ApiError, type ArchiveBlockedDetails, type AssignmentBuckets, type AssignmentDropDetails, type AssignmentResult, type AttachPickerFrameOptions, type BestAvailableResult, type BucketRow, BuyerAccessContext, type BuyerAccessExpiredEvent, type BuyerAccessRefreshReason, type BuyerAccessToken, type BuyerAccessTokenProvider, BuyerAccessUnavailableError, type BuyerAccessUnavailableEvent, type BuyerAccessUnavailableReason, BuyerRealtimeClient, type BuyerRealtimeOptions, type ChannelAccessIntent, type ChannelAccessSummary, type ChannelAllocationPage, type ChannelAuditEntry, type ChannelAuditPage, type ChannelCounts, type ChannelListResult, type ChannelPreviewProjection, type ChannelRecord, type ChannelSeatStatus, type ChannelState, type ChannelsCapabilities, type ChannelsClient, ChannelsMode, type ChannelsModeHost, type ChannelsSeatView, type CheckoutHandoff, type CheckoutLineItem, type ControlRoomActivityEntry, type ControlRoomSectionMetric, type ControlRoomSnapshot, EmbeddedDesigner, type EmbeddedDesignerEventType, type EmbeddedDesignerMessage, type EmbeddedDesignerOptions, type GAAreaAvailability, type HoldConflict, type HoldLineItem, type HoldResult, type LogEntry, type LogPage, ManageApi, ManageApiError, PUBLIC_CHANNEL_ID, PUBLIC_CHANNEL_NAME, type Projection, type PubApiOptions, type RealtimeSink, type ReportByStatus, type ReportCategoryMeta, type ReportCategoryRow, type ReportResult, type ResumedHoldResult, SeatManager, type SeatManagerActionResult, type SeatManagerActivity, type SeatManagerCapability, type SeatManagerMode, type SeatManagerOptions, type SeatManagerTallies, SeatPicker, type SeatPickerOptions, type SeatPickerTheme, SeatingChart, type SeatingChartOptions, type SelectedObjectUnavailableEvent, type SelectedSeat, type SelectionSourceRow, type StatusChange, type SubscribeTicket$1 as SubscribeTicket, accessIntentLabel, accessLine, accessLinkBadge, accessLinkErrorCopy, accessLinkIsLive, accessLinkPolicyLines, attachPickerFrame, bucketRows, bucketRowsHtml, createBuyerAccessContext, createControllerSink, dropReviewRows, isPublicChannelId, markerLetter, markerOf, mutationCount, needsMoveConfirmation, planAssignment, retryAfterCopy, selectionSources, stateBadge, suggestMarker };
|
|
3446
|
+
export { ACCESS_LINK_DEFAULTS, type AccessLinkRecord, type AccessLinkReveal, type AccessLinkState, type AccessLinkStatus, type AccessLinkStatusRecord, ApiError, type ArchiveBlockedDetails, type AssignmentBuckets, type AssignmentDropDetails, type AssignmentResult, type AttachPickerFrameOptions, type BestAvailableResult, type BucketRow, BuyerAccessContext, type BuyerAccessExpiredEvent, type BuyerAccessRefreshReason, type BuyerAccessToken, type BuyerAccessTokenProvider, BuyerAccessUnavailableError, type BuyerAccessUnavailableEvent, type BuyerAccessUnavailableReason, BuyerRealtimeClient, type BuyerRealtimeOptions, type ChannelAccessIntent, type ChannelAccessSummary, type ChannelAllocationPage, type ChannelAuditEntry, type ChannelAuditPage, type ChannelCounts, type ChannelListResult, type ChannelPreviewProjection, type ChannelRecord, type ChannelSeatStatus, type ChannelState, type ChannelsCapabilities, type ChannelsClient, ChannelsMode, type ChannelsModeHost, type ChannelsSeatView, type CheckoutHandoff, type CheckoutLineItem, type ControlRoomActivityEntry, type ControlRoomSectionMetric, type ControlRoomSnapshot, EmbeddedDesigner, type EmbeddedDesignerEventType, type EmbeddedDesignerMessage, type EmbeddedDesignerOptions, type GAAreaAvailability, type HoldConflict, type HoldLineItem, type HoldResult, type LogEntry, type LogPage, ManageApi, ManageApiError, PUBLIC_CHANNEL_ID, PUBLIC_CHANNEL_NAME, type Projection, type PubApiOptions, type RealtimeSink, type ReportByStatus, type ReportCategoryMeta, type ReportCategoryRow, type ReportResult, type ResumedHoldResult, SeatManager, type SeatManagerActionResult, type SeatManagerActivity, type SeatManagerCapability, type SeatManagerConnection, type SeatManagerMode, type SeatManagerOptions, type SeatManagerTallies, SeatPicker, type SeatPickerOptions, type SeatPickerTheme, SeatingChart, type SeatingChartOptions, type SelectedObjectUnavailableEvent, type SelectedSeat, type SelectionSourceRow, type StatusChange, type SubscribeTicket$1 as SubscribeTicket, accessIntentLabel, accessLine, accessLinkBadge, accessLinkErrorCopy, accessLinkIsLive, accessLinkPolicyLines, attachPickerFrame, bucketRows, bucketRowsHtml, createBuyerAccessContext, createControllerSink, dropReviewRows, isPublicChannelId, markerLetter, markerOf, mutationCount, needsMoveConfirmation, planAssignment, retryAfterCopy, selectionSources, stateBadge, suggestMarker };
|
package/dist/index.d.ts
CHANGED
|
@@ -2725,8 +2725,31 @@ interface SeatManagerOptions {
|
|
|
2725
2725
|
onSelectionChange?: (seats: ExpandedSeat[]) => void;
|
|
2726
2726
|
/** A block/unblock/cancel action completed successfully. */
|
|
2727
2727
|
onActionComplete?: (result: SeatManagerActionResult) => void;
|
|
2728
|
+
/**
|
|
2729
|
+
* The realtime link connected or dropped, with the moment the numbers on
|
|
2730
|
+
* screen were last known good.
|
|
2731
|
+
*
|
|
2732
|
+
* A host embedding this cockpit renders its own chrome around it, and until
|
|
2733
|
+
* now had no way to know the board had gone stale: the manager tracked the
|
|
2734
|
+
* drop internally (its own LIVE/RECONNECTING pill) and told nobody. A host
|
|
2735
|
+
* that polls on a timer and pauses while the tab is hidden therefore showed
|
|
2736
|
+
* arbitrarily old numbers that looked exactly like fresh ones.
|
|
2737
|
+
*/
|
|
2738
|
+
onConnectionChange?: (state: SeatManagerConnection) => void;
|
|
2728
2739
|
onError?: (err: unknown) => void;
|
|
2729
2740
|
}
|
|
2741
|
+
/** Realtime link state, as reported to the embedding host. */
|
|
2742
|
+
interface SeatManagerConnection {
|
|
2743
|
+
/** `live` while the socket is open; `reconnecting` from drop until reopen. */
|
|
2744
|
+
status: 'live' | 'reconnecting';
|
|
2745
|
+
/**
|
|
2746
|
+
* `Date.now()` of the last snapshot or delta accepted from the server, or
|
|
2747
|
+
* null before the first one. This is the honest "as of" for whatever the host
|
|
2748
|
+
* is displaying — NOT the time the connection dropped, which is later and
|
|
2749
|
+
* would overstate freshness.
|
|
2750
|
+
*/
|
|
2751
|
+
lastMessageAt: number | null;
|
|
2752
|
+
}
|
|
2730
2753
|
declare class SeatManager {
|
|
2731
2754
|
private readonly opts;
|
|
2732
2755
|
private readonly api;
|
|
@@ -2758,6 +2781,11 @@ declare class SeatManager {
|
|
|
2758
2781
|
private reconnectTimer;
|
|
2759
2782
|
private attempt;
|
|
2760
2783
|
private closed;
|
|
2784
|
+
/** Mirrors the `live` root class, so the getter never has to read the DOM. */
|
|
2785
|
+
private connectionStatus;
|
|
2786
|
+
/** When the server last told us something. Stamped on accepted traffic only —
|
|
2787
|
+
* a socket that opens and says nothing has not refreshed anything. */
|
|
2788
|
+
private lastMessageAt;
|
|
2761
2789
|
private ready;
|
|
2762
2790
|
private feed;
|
|
2763
2791
|
private feedTimer;
|
|
@@ -2804,8 +2832,10 @@ declare class SeatManager {
|
|
|
2804
2832
|
private resolveChannelCapabilities;
|
|
2805
2833
|
/** The adapter between the cockpit's internals and Channels mode. */
|
|
2806
2834
|
private buildChannelsHost;
|
|
2807
|
-
/**
|
|
2808
|
-
*
|
|
2835
|
+
/** Actual on-screen seat diameter, for the channel overlay's marks. The
|
|
2836
|
+
* renderer's base seat radius is 9 chart units; retaining the camera scale
|
|
2837
|
+
* (rather than capping it) keeps every preview paint aligned with the real
|
|
2838
|
+
* chart geometry at deep zoom. */
|
|
2809
2839
|
private seatPixelSize;
|
|
2810
2840
|
/** Toggle the normalized sales-velocity outline overlay without changing seat colors. */
|
|
2811
2841
|
setHeatOverlay(enabled: boolean): void;
|
|
@@ -2837,6 +2867,14 @@ declare class SeatManager {
|
|
|
2837
2867
|
getSelection(): ExpandedSeat[];
|
|
2838
2868
|
getReport(): Promise<ReportResult>;
|
|
2839
2869
|
getControlRoomSnapshot(windowMinutes?: number): Promise<ControlRoomSnapshot>;
|
|
2870
|
+
/**
|
|
2871
|
+
* The realtime link's current state and the "as of" behind it.
|
|
2872
|
+
*
|
|
2873
|
+
* Pair with `onConnectionChange` for the edges: a host that mounts after a
|
|
2874
|
+
* drop, or re-reads on tab focus, needs to be able to ASK rather than wait
|
|
2875
|
+
* for the next transition that may never come.
|
|
2876
|
+
*/
|
|
2877
|
+
getConnection(): SeatManagerConnection;
|
|
2840
2878
|
getLog(opts?: {
|
|
2841
2879
|
limit?: number;
|
|
2842
2880
|
before?: number;
|
|
@@ -2850,8 +2888,9 @@ declare class SeatManager {
|
|
|
2850
2888
|
zoomToFit(): void;
|
|
2851
2889
|
destroy(): void;
|
|
2852
2890
|
private buildRenderer;
|
|
2853
|
-
/** Block
|
|
2854
|
-
*
|
|
2891
|
+
/** Block always uses a marquee. Channels only enables its marquee after the
|
|
2892
|
+
* organizer deliberately chooses Assign seats; Pan map keeps desktop drag
|
|
2893
|
+
* available for large charts. */
|
|
2855
2894
|
private isBulkSelectMode;
|
|
2856
2895
|
/**
|
|
2857
2896
|
* Block never touches held or booked inventory, so it cannot select it.
|
|
@@ -3131,6 +3170,12 @@ interface ChannelsModeHost {
|
|
|
3131
3170
|
} | null;
|
|
3132
3171
|
/** Approximate on-screen seat size in CSS pixels, for the overlay marks. */
|
|
3133
3172
|
seatPixelSize(): number;
|
|
3173
|
+
/** Whether the live renderer is currently showing individual seats. */
|
|
3174
|
+
isSeatDetail(): boolean;
|
|
3175
|
+
/** Return a sectional venue to its section-only overview. */
|
|
3176
|
+
showSectionOverview(): void;
|
|
3177
|
+
/** Focus one section using the renderer's real camera transition. */
|
|
3178
|
+
focusSection(sectionId: string): void;
|
|
3134
3179
|
isCompact(): boolean;
|
|
3135
3180
|
/** Make the canvas non-interactive behind a full-detent sheet (§13). */
|
|
3136
3181
|
setMapInert(inert: boolean): void;
|
|
@@ -3157,6 +3202,10 @@ declare class ChannelsMode {
|
|
|
3157
3202
|
private loadError;
|
|
3158
3203
|
private loading;
|
|
3159
3204
|
private view;
|
|
3205
|
+
/** Pan is intentionally the initial desktop interaction. Assignment's
|
|
3206
|
+
* marquee is powerful, but must never make an organizer lose map navigation. */
|
|
3207
|
+
private mapIntent;
|
|
3208
|
+
private focusedSectionId;
|
|
3160
3209
|
private showArchived;
|
|
3161
3210
|
private detailChannelId;
|
|
3162
3211
|
private targetChannelId;
|
|
@@ -3173,6 +3222,15 @@ declare class ChannelsMode {
|
|
|
3173
3222
|
private links;
|
|
3174
3223
|
private linksChannelId;
|
|
3175
3224
|
private linksState;
|
|
3225
|
+
/**
|
|
3226
|
+
* Monotonic read generations — one for the channel list + allocation, one for
|
|
3227
|
+
* the open channel's links. Reads are concurrent (a 10s poll versus a
|
|
3228
|
+
* mutation's own reload), and the network does not promise to answer them in
|
|
3229
|
+
* order. Only the NEWEST read of each kind may write to state; an older
|
|
3230
|
+
* answer that arrives late is dropped, never painted.
|
|
3231
|
+
*/
|
|
3232
|
+
private listSeq;
|
|
3233
|
+
private linksSeq;
|
|
3176
3234
|
private previewAudience;
|
|
3177
3235
|
private previewIncludePublic;
|
|
3178
3236
|
private previewProjection;
|
|
@@ -3207,6 +3265,11 @@ declare class ChannelsMode {
|
|
|
3207
3265
|
* all rather than collect a selection nothing can act on.
|
|
3208
3266
|
*/
|
|
3209
3267
|
canSelect(): boolean;
|
|
3268
|
+
/** Bulk seat assignment is explicit. In Pan map, clicks can still inspect a
|
|
3269
|
+
* single seat, while a primary-button drag always moves the camera. */
|
|
3270
|
+
usesMarqueeSelection(): boolean;
|
|
3271
|
+
/** The renderer calls this when the organizer opens a section from overview. */
|
|
3272
|
+
handleSectionFocus(sectionId: string): void;
|
|
3210
3273
|
/**
|
|
3211
3274
|
* Organizer realtime integration point. M5 ships a per-scope socket for
|
|
3212
3275
|
* buyers; the organizer channel-count stream is a later milestone. When it
|
|
@@ -3235,11 +3298,22 @@ declare class ChannelsMode {
|
|
|
3235
3298
|
* Repaint the allocation (or preview) overlay in ONE canvas pass.
|
|
3236
3299
|
*
|
|
3237
3300
|
* Channel identity on the map is a fill in the administrative color PLUS the
|
|
3238
|
-
* letter flags below — never color alone.
|
|
3239
|
-
*
|
|
3240
|
-
*
|
|
3301
|
+
* letter flags below — never color alone. In buyer preview the map instead
|
|
3302
|
+
* uses two explicit, channel-neutral access states. Physical status keeps its
|
|
3303
|
+
* own cue: only FREE units are repainted, so sold/held/blocked seats still
|
|
3304
|
+
* read exactly as they do in every other tool.
|
|
3241
3305
|
*/
|
|
3242
3306
|
private paintOverlay;
|
|
3307
|
+
/** Draw an eligible seat's actual chart label without inventing a new buyer
|
|
3308
|
+
* identifier. Long labels scale down and are omitted rather than overflowing
|
|
3309
|
+
* into an adjacent seat. */
|
|
3310
|
+
private paintPreviewSeatLabel;
|
|
3311
|
+
/** A section overview is a navigation map. These transparent, keyboardable
|
|
3312
|
+
* hit areas sit over the renderer's section shells so both mouse and keyboard
|
|
3313
|
+
* always take the organizer into the real focused-section camera state. */
|
|
3314
|
+
private paintSectionTargets;
|
|
3315
|
+
/** Keep renderer section names legible over a dense, zoomed-out preview. */
|
|
3316
|
+
private paintPreviewSectionLabels;
|
|
3243
3317
|
/** Letter flags at each channel's centroid — the non-color identity cue. */
|
|
3244
3318
|
private paintFlags;
|
|
3245
3319
|
private setStaged;
|
|
@@ -3251,6 +3325,7 @@ declare class ChannelsMode {
|
|
|
3251
3325
|
private loadPreview;
|
|
3252
3326
|
paintRail(): void;
|
|
3253
3327
|
private viewSegmentHtml;
|
|
3328
|
+
private mapNavigationHtml;
|
|
3254
3329
|
private countsHtml;
|
|
3255
3330
|
private channelRowHtml;
|
|
3256
3331
|
private listRailHtml;
|
|
@@ -3314,6 +3389,17 @@ declare class ChannelsMode {
|
|
|
3314
3389
|
*/
|
|
3315
3390
|
private renderSeatListDialog;
|
|
3316
3391
|
private reloadLinks;
|
|
3392
|
+
/**
|
|
3393
|
+
* The reload EVERY link mutation owes the panel.
|
|
3394
|
+
*
|
|
3395
|
+
* A create/rotate/revoke changes two things the detail panel renders: the
|
|
3396
|
+
* channel's access line (the server sets `access.intent` on create, and clears
|
|
3397
|
+
* it when the last live link goes) and the link status list. Both are re-read
|
|
3398
|
+
* here and the rail repainted, so the panel the organizer is already looking
|
|
3399
|
+
* at is current the moment the mutation lands — no reload, and no dependence
|
|
3400
|
+
* on HOW the one-time reveal was dismissed (the button, Escape, or never).
|
|
3401
|
+
*/
|
|
3402
|
+
private reloadAfterLinkChange;
|
|
3317
3403
|
private linkById;
|
|
3318
3404
|
/**
|
|
3319
3405
|
* Create. The three policy fields carry the owner's defaults and every one of
|
|
@@ -3357,4 +3443,4 @@ declare class ChannelsMode {
|
|
|
3357
3443
|
handleBack(): boolean;
|
|
3358
3444
|
}
|
|
3359
3445
|
|
|
3360
|
-
export { ACCESS_LINK_DEFAULTS, type AccessLinkRecord, type AccessLinkReveal, type AccessLinkState, type AccessLinkStatus, type AccessLinkStatusRecord, ApiError, type ArchiveBlockedDetails, type AssignmentBuckets, type AssignmentDropDetails, type AssignmentResult, type AttachPickerFrameOptions, type BestAvailableResult, type BucketRow, BuyerAccessContext, type BuyerAccessExpiredEvent, type BuyerAccessRefreshReason, type BuyerAccessToken, type BuyerAccessTokenProvider, BuyerAccessUnavailableError, type BuyerAccessUnavailableEvent, type BuyerAccessUnavailableReason, BuyerRealtimeClient, type BuyerRealtimeOptions, type ChannelAccessIntent, type ChannelAccessSummary, type ChannelAllocationPage, type ChannelAuditEntry, type ChannelAuditPage, type ChannelCounts, type ChannelListResult, type ChannelPreviewProjection, type ChannelRecord, type ChannelSeatStatus, type ChannelState, type ChannelsCapabilities, type ChannelsClient, ChannelsMode, type ChannelsModeHost, type ChannelsSeatView, type CheckoutHandoff, type CheckoutLineItem, type ControlRoomActivityEntry, type ControlRoomSectionMetric, type ControlRoomSnapshot, EmbeddedDesigner, type EmbeddedDesignerEventType, type EmbeddedDesignerMessage, type EmbeddedDesignerOptions, type GAAreaAvailability, type HoldConflict, type HoldLineItem, type HoldResult, type LogEntry, type LogPage, ManageApi, ManageApiError, PUBLIC_CHANNEL_ID, PUBLIC_CHANNEL_NAME, type Projection, type PubApiOptions, type RealtimeSink, type ReportByStatus, type ReportCategoryMeta, type ReportCategoryRow, type ReportResult, type ResumedHoldResult, SeatManager, type SeatManagerActionResult, type SeatManagerActivity, type SeatManagerCapability, type SeatManagerMode, type SeatManagerOptions, type SeatManagerTallies, SeatPicker, type SeatPickerOptions, type SeatPickerTheme, SeatingChart, type SeatingChartOptions, type SelectedObjectUnavailableEvent, type SelectedSeat, type SelectionSourceRow, type StatusChange, type SubscribeTicket$1 as SubscribeTicket, accessIntentLabel, accessLine, accessLinkBadge, accessLinkErrorCopy, accessLinkIsLive, accessLinkPolicyLines, attachPickerFrame, bucketRows, bucketRowsHtml, createBuyerAccessContext, createControllerSink, dropReviewRows, isPublicChannelId, markerLetter, markerOf, mutationCount, needsMoveConfirmation, planAssignment, retryAfterCopy, selectionSources, stateBadge, suggestMarker };
|
|
3446
|
+
export { ACCESS_LINK_DEFAULTS, type AccessLinkRecord, type AccessLinkReveal, type AccessLinkState, type AccessLinkStatus, type AccessLinkStatusRecord, ApiError, type ArchiveBlockedDetails, type AssignmentBuckets, type AssignmentDropDetails, type AssignmentResult, type AttachPickerFrameOptions, type BestAvailableResult, type BucketRow, BuyerAccessContext, type BuyerAccessExpiredEvent, type BuyerAccessRefreshReason, type BuyerAccessToken, type BuyerAccessTokenProvider, BuyerAccessUnavailableError, type BuyerAccessUnavailableEvent, type BuyerAccessUnavailableReason, BuyerRealtimeClient, type BuyerRealtimeOptions, type ChannelAccessIntent, type ChannelAccessSummary, type ChannelAllocationPage, type ChannelAuditEntry, type ChannelAuditPage, type ChannelCounts, type ChannelListResult, type ChannelPreviewProjection, type ChannelRecord, type ChannelSeatStatus, type ChannelState, type ChannelsCapabilities, type ChannelsClient, ChannelsMode, type ChannelsModeHost, type ChannelsSeatView, type CheckoutHandoff, type CheckoutLineItem, type ControlRoomActivityEntry, type ControlRoomSectionMetric, type ControlRoomSnapshot, EmbeddedDesigner, type EmbeddedDesignerEventType, type EmbeddedDesignerMessage, type EmbeddedDesignerOptions, type GAAreaAvailability, type HoldConflict, type HoldLineItem, type HoldResult, type LogEntry, type LogPage, ManageApi, ManageApiError, PUBLIC_CHANNEL_ID, PUBLIC_CHANNEL_NAME, type Projection, type PubApiOptions, type RealtimeSink, type ReportByStatus, type ReportCategoryMeta, type ReportCategoryRow, type ReportResult, type ResumedHoldResult, SeatManager, type SeatManagerActionResult, type SeatManagerActivity, type SeatManagerCapability, type SeatManagerConnection, type SeatManagerMode, type SeatManagerOptions, type SeatManagerTallies, SeatPicker, type SeatPickerOptions, type SeatPickerTheme, SeatingChart, type SeatingChartOptions, type SelectedObjectUnavailableEvent, type SelectedSeat, type SelectionSourceRow, type StatusChange, type SubscribeTicket$1 as SubscribeTicket, accessIntentLabel, accessLine, accessLinkBadge, accessLinkErrorCopy, accessLinkIsLive, accessLinkPolicyLines, attachPickerFrame, bucketRows, bucketRowsHtml, createBuyerAccessContext, createControllerSink, dropReviewRows, isPublicChannelId, markerLetter, markerOf, mutationCount, needsMoveConfirmation, planAssignment, retryAfterCopy, selectionSources, stateBadge, suggestMarker };
|