@seatlayer/js 0.11.0 → 0.12.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 +26 -0
- package/dist/index.cjs +449 -61
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +114 -7
- package/dist/index.d.ts +114 -7
- package/dist/index.js +449 -61
- package/dist/index.js.map +1 -1
- package/package.json +2 -2
package/dist/index.d.cts
CHANGED
|
@@ -622,6 +622,8 @@ interface ReportCategoryRow {
|
|
|
622
622
|
held: number;
|
|
623
623
|
booked: number;
|
|
624
624
|
not_for_sale: number;
|
|
625
|
+
/** Exact sum of booked unit_price snapshots, in major currency units. */
|
|
626
|
+
bookedRevenue: number;
|
|
625
627
|
}
|
|
626
628
|
interface ReportCategoryMeta {
|
|
627
629
|
key: string;
|
|
@@ -633,6 +635,7 @@ interface ReportResult {
|
|
|
633
635
|
report: {
|
|
634
636
|
byStatus: ReportByStatus;
|
|
635
637
|
byCategory: ReportCategoryRow[];
|
|
638
|
+
bySection?: ControlRoomSectionMetric[];
|
|
636
639
|
};
|
|
637
640
|
event: {
|
|
638
641
|
key: string;
|
|
@@ -642,6 +645,51 @@ interface ReportResult {
|
|
|
642
645
|
};
|
|
643
646
|
categories: ReportCategoryMeta[];
|
|
644
647
|
}
|
|
648
|
+
interface ControlRoomSectionMetric {
|
|
649
|
+
sectionId: string;
|
|
650
|
+
sectionLabel: string;
|
|
651
|
+
zoneId: string | null;
|
|
652
|
+
total: number;
|
|
653
|
+
free: number;
|
|
654
|
+
held: number;
|
|
655
|
+
booked: number;
|
|
656
|
+
not_for_sale: number;
|
|
657
|
+
bookedRevenue: number;
|
|
658
|
+
}
|
|
659
|
+
interface ControlRoomSnapshot {
|
|
660
|
+
version: number;
|
|
661
|
+
currency: string;
|
|
662
|
+
totals: {
|
|
663
|
+
free: number;
|
|
664
|
+
held: number;
|
|
665
|
+
booked: number;
|
|
666
|
+
blocked: number;
|
|
667
|
+
};
|
|
668
|
+
revenue: {
|
|
669
|
+
gross: number;
|
|
670
|
+
bySection: ControlRoomSectionMetric[];
|
|
671
|
+
};
|
|
672
|
+
velocity: {
|
|
673
|
+
windowMinutes: number;
|
|
674
|
+
bySection: Array<{
|
|
675
|
+
sectionId: string;
|
|
676
|
+
netBooked: number;
|
|
677
|
+
grossRevenue: number;
|
|
678
|
+
previousNetBooked: number;
|
|
679
|
+
trend: 'rising' | 'steady' | 'cooling';
|
|
680
|
+
}>;
|
|
681
|
+
};
|
|
682
|
+
presence: {
|
|
683
|
+
shoppingSessions: number;
|
|
684
|
+
activeHolds: number;
|
|
685
|
+
};
|
|
686
|
+
event: {
|
|
687
|
+
key: string;
|
|
688
|
+
name: string;
|
|
689
|
+
seatTotal: number;
|
|
690
|
+
currency?: string;
|
|
691
|
+
};
|
|
692
|
+
}
|
|
645
693
|
interface LogEntry {
|
|
646
694
|
id: number;
|
|
647
695
|
at: number;
|
|
@@ -719,6 +767,7 @@ declare class ManageApi {
|
|
|
719
767
|
holdTtlMs: number | null;
|
|
720
768
|
}>;
|
|
721
769
|
report(key: string): Promise<ReportResult>;
|
|
770
|
+
controlRoom(key: string, windowMinutes?: number): Promise<ControlRoomSnapshot>;
|
|
722
771
|
log(key: string, opts?: {
|
|
723
772
|
limit?: number;
|
|
724
773
|
before?: number;
|
|
@@ -734,22 +783,23 @@ declare class ManageApi {
|
|
|
734
783
|
* Productizes the SeatLayer dashboard's ManageEventPage into a framework-
|
|
735
784
|
* agnostic class (mirrors how SeatPicker productized the buyer flow). It mounts
|
|
736
785
|
* the shared engine in `manageMode`, subscribes to the event's realtime channel
|
|
737
|
-
* and drives
|
|
786
|
+
* and drives three control-room tools on one persistent canvas:
|
|
738
787
|
*
|
|
739
788
|
* - **view** — a live board: realtime seat repaint (flash on hold/book),
|
|
740
789
|
* live KPI tallies + gross revenue, and a streaming activity
|
|
741
790
|
* feed derived from the delta stream + audit log. Read-only.
|
|
791
|
+
* - **inspect** — select one seat to read its live inventory context.
|
|
742
792
|
* - **block** — bulk-first block/unblock: marquee-drag, ⌘A select-all,
|
|
743
793
|
* whole-category / whole-section select, single-seat fallback →
|
|
744
794
|
* one batched block/unblock (optimistic, reconciled by the WS),
|
|
745
|
-
* timed auto-release
|
|
795
|
+
* and timed auto-release.
|
|
746
796
|
*
|
|
747
797
|
* Auth: reads (chart/objects/WS) are public; writes/reports carry a Bearer
|
|
748
798
|
* event-scoped manage token (`mse_…`) or a tenant secret key (`sk_…`) via
|
|
749
799
|
* {@link ManageApi}. Box office + Sections + full Reports UI are M2/M3.
|
|
750
800
|
*/
|
|
751
801
|
|
|
752
|
-
type SeatManagerMode = 'view' | 'block';
|
|
802
|
+
type SeatManagerMode = 'view' | 'inspect' | 'block';
|
|
753
803
|
/** DO seat status — 'blocked' has no engine analogue (→ 'not_for_sale'). */
|
|
754
804
|
type DoStatus = 'free' | 'held' | 'booked' | 'blocked';
|
|
755
805
|
/** Live KPI snapshot pushed to `onTallies` on every state change. */
|
|
@@ -764,8 +814,10 @@ interface SeatManagerTallies {
|
|
|
764
814
|
capacityPct: number;
|
|
765
815
|
/** booked / (total − blocked), 0–100 — sell-through of sellable inventory. */
|
|
766
816
|
sellThroughPct: number;
|
|
767
|
-
/** Σ
|
|
817
|
+
/** Exact Σ booked unit_price snapshots from the authenticated report. */
|
|
768
818
|
grossRevenue: number;
|
|
819
|
+
/** Revenue is never reconstructed from chart list price. */
|
|
820
|
+
revenueStatus: 'loading' | 'current' | 'stale';
|
|
769
821
|
/** ISO-4217 currency for grossRevenue. */
|
|
770
822
|
currency: string;
|
|
771
823
|
}
|
|
@@ -774,6 +826,9 @@ interface SeatManagerActivity {
|
|
|
774
826
|
id: string;
|
|
775
827
|
at: number;
|
|
776
828
|
label: string;
|
|
829
|
+
/** Full labels affected by this one backend/realtime operation. */
|
|
830
|
+
labels: string[];
|
|
831
|
+
count: number;
|
|
777
832
|
/** Human verb: held / booked / released / blocked / unblocked. */
|
|
778
833
|
verb: string;
|
|
779
834
|
status: DoStatus;
|
|
@@ -793,6 +848,8 @@ interface SeatManagerOptions {
|
|
|
793
848
|
eventKey: string;
|
|
794
849
|
/** Bearer manage token — event-scoped `mse_…` or a tenant secret `sk_…`. */
|
|
795
850
|
token: string;
|
|
851
|
+
/** Absolute token expiry (epoch ms). Enables proactive in-place rotation. */
|
|
852
|
+
tokenExpiresAt?: number;
|
|
796
853
|
/** Initial mode. Default 'view'. */
|
|
797
854
|
mode?: SeatManagerMode;
|
|
798
855
|
/** ISO-4217 fallback currency for revenue (chart/event currency wins). */
|
|
@@ -809,6 +866,17 @@ interface SeatManagerOptions {
|
|
|
809
866
|
onReady?: () => void;
|
|
810
867
|
/** Live KPI tallies changed. */
|
|
811
868
|
onTallies?: (tallies: SeatManagerTallies) => void;
|
|
869
|
+
/** A grouped live/audit activity item arrived. */
|
|
870
|
+
onActivity?: (activity: SeatManagerActivity) => void;
|
|
871
|
+
/** Exact private control-room projection changed. */
|
|
872
|
+
onControlRoom?: (snapshot: ControlRoomSnapshot) => void;
|
|
873
|
+
/** Called before token expiry. The manager swaps the result without remounting. */
|
|
874
|
+
onTokenRefresh?: () => Promise<{
|
|
875
|
+
token: string;
|
|
876
|
+
expiresAt: number;
|
|
877
|
+
}>;
|
|
878
|
+
/** Tool/mode changed from inside the shared cockpit. */
|
|
879
|
+
onModeChange?: (mode: SeatManagerMode) => void;
|
|
812
880
|
/** Block-mode selection changed (marquee / ⌘A / category / section / tap). */
|
|
813
881
|
onSelectionChange?: (seats: ExpandedSeat[]) => void;
|
|
814
882
|
/** A block/unblock/cancel action completed successfully. */
|
|
@@ -831,8 +899,14 @@ declare class SeatManager {
|
|
|
831
899
|
private labelToSeat;
|
|
832
900
|
private allIds;
|
|
833
901
|
private status;
|
|
834
|
-
private priceByCat;
|
|
835
902
|
private currency;
|
|
903
|
+
private authoritativeGrossRevenue;
|
|
904
|
+
private revenueStatus;
|
|
905
|
+
private revenueRequest;
|
|
906
|
+
private revenueRefreshTimer;
|
|
907
|
+
private controlRoomSnapshot;
|
|
908
|
+
private trendWindowMinutes;
|
|
909
|
+
private heatEnabled;
|
|
836
910
|
private ws;
|
|
837
911
|
private reconnectTimer;
|
|
838
912
|
private attempt;
|
|
@@ -842,10 +916,31 @@ declare class SeatManager {
|
|
|
842
916
|
private feedTimer;
|
|
843
917
|
private toastTimer;
|
|
844
918
|
private releaseAt;
|
|
919
|
+
private layoutObserver;
|
|
920
|
+
private tokenExpiresAt;
|
|
921
|
+
private tokenRefreshTimer;
|
|
922
|
+
private tokenRefreshInFlight;
|
|
923
|
+
private sectionByObject;
|
|
924
|
+
private sectionLabelById;
|
|
925
|
+
private lastSyncedAt;
|
|
926
|
+
private readonly onFullscreenChange;
|
|
927
|
+
private readonly onKeyDown;
|
|
845
928
|
constructor(options: SeatManagerOptions);
|
|
846
929
|
/** Build the DOM, load the chart, subscribe to realtime, mount the board. */
|
|
847
930
|
render(): Promise<this>;
|
|
848
931
|
setMode(mode: SeatManagerMode): void;
|
|
932
|
+
/** Toggle the normalized sales-velocity outline overlay without changing seat colors. */
|
|
933
|
+
setHeatOverlay(enabled: boolean): void;
|
|
934
|
+
/** Change the current-vs-previous sales window and refresh the private projection. */
|
|
935
|
+
setTrendWindow(windowMinutes: number): Promise<ControlRoomSnapshot>;
|
|
936
|
+
enterFullscreen(): Promise<void>;
|
|
937
|
+
exitFullscreen(): Promise<void>;
|
|
938
|
+
isFullscreen(): boolean;
|
|
939
|
+
private toggleFullscreen;
|
|
940
|
+
/** Rotate the delegated credential without rebuilding DOM, canvas or socket. */
|
|
941
|
+
setToken(token: string, expiresAt?: number): void;
|
|
942
|
+
private scheduleTokenRefresh;
|
|
943
|
+
private rotateToken;
|
|
849
944
|
/** Bulk block the given labels (or the current selection when omitted). */
|
|
850
945
|
block(labels?: string[], opts?: {
|
|
851
946
|
releaseAt?: number;
|
|
@@ -861,6 +956,7 @@ declare class SeatManager {
|
|
|
861
956
|
clearSelection(): void;
|
|
862
957
|
getSelection(): ExpandedSeat[];
|
|
863
958
|
getReport(): Promise<ReportResult>;
|
|
959
|
+
getControlRoomSnapshot(windowMinutes?: number): Promise<ControlRoomSnapshot>;
|
|
864
960
|
getLog(opts?: {
|
|
865
961
|
limit?: number;
|
|
866
962
|
before?: number;
|
|
@@ -874,6 +970,8 @@ declare class SeatManager {
|
|
|
874
970
|
zoomToFit(): void;
|
|
875
971
|
destroy(): void;
|
|
876
972
|
private buildRenderer;
|
|
973
|
+
private updateRendererInteraction;
|
|
974
|
+
private handleSeatSelect;
|
|
877
975
|
private repaintAll;
|
|
878
976
|
private connect;
|
|
879
977
|
private scheduleReconnect;
|
|
@@ -885,6 +983,9 @@ declare class SeatManager {
|
|
|
885
983
|
/** Keep the canvas painting on hidden/occluded tabs (war-room second monitor). */
|
|
886
984
|
private afterPaint;
|
|
887
985
|
private flash;
|
|
986
|
+
private applyReportRevenue;
|
|
987
|
+
private refreshControlRoom;
|
|
988
|
+
private scheduleRevenueRefresh;
|
|
888
989
|
private recomputeTallies;
|
|
889
990
|
private verbFor;
|
|
890
991
|
private pushActivity;
|
|
@@ -893,19 +994,25 @@ declare class SeatManager {
|
|
|
893
994
|
private selectionLabels;
|
|
894
995
|
private syncSelection;
|
|
895
996
|
private buildChrome;
|
|
997
|
+
private updateContainerLayout;
|
|
896
998
|
private sectionOptions;
|
|
897
999
|
private buildSectionOptions;
|
|
898
1000
|
private paintModeTabs;
|
|
1001
|
+
private paintHeatButton;
|
|
1002
|
+
private paintFullscreenButton;
|
|
1003
|
+
private paintTrendWindow;
|
|
899
1004
|
private setLive;
|
|
900
1005
|
private updateZoomHint;
|
|
901
1006
|
private paintKpis;
|
|
902
1007
|
private paintRail;
|
|
903
1008
|
private renderViewRail;
|
|
1009
|
+
private paintMonitorInsights;
|
|
1010
|
+
private applyHeatOverlay;
|
|
1011
|
+
private renderInspectRail;
|
|
904
1012
|
private paintLegend;
|
|
905
1013
|
private paintFeed;
|
|
906
1014
|
private renderBlockRail;
|
|
907
1015
|
private selectCategory;
|
|
908
|
-
private promptCancel;
|
|
909
1016
|
private paintSelBar;
|
|
910
1017
|
private done;
|
|
911
1018
|
private toastOk;
|
|
@@ -914,4 +1021,4 @@ declare class SeatManager {
|
|
|
914
1021
|
private fail;
|
|
915
1022
|
}
|
|
916
1023
|
|
|
917
|
-
export { ApiError, type BestAvailableResult, type CheckoutHandoff, type CheckoutLineItem, EmbeddedDesigner, type EmbeddedDesignerEventType, type EmbeddedDesignerMessage, type EmbeddedDesignerOptions, type GAAreaAvailability, type HoldConflict, type HoldLineItem, type HoldResult, type LogEntry, type LogPage, ManageApi, ManageApiError, type ReportByStatus, type ReportCategoryMeta, type ReportCategoryRow, type ReportResult, SeatManager, type SeatManagerActionResult, type SeatManagerActivity, type SeatManagerMode, type SeatManagerOptions, type SeatManagerTallies, SeatPicker, type SeatPickerOptions, type SeatPickerTheme, SeatingChart, type SeatingChartOptions, type SelectedSeat };
|
|
1024
|
+
export { ApiError, type BestAvailableResult, type CheckoutHandoff, type CheckoutLineItem, 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, type ReportByStatus, type ReportCategoryMeta, type ReportCategoryRow, type ReportResult, SeatManager, type SeatManagerActionResult, type SeatManagerActivity, type SeatManagerMode, type SeatManagerOptions, type SeatManagerTallies, SeatPicker, type SeatPickerOptions, type SeatPickerTheme, SeatingChart, type SeatingChartOptions, type SelectedSeat };
|
package/dist/index.d.ts
CHANGED
|
@@ -622,6 +622,8 @@ interface ReportCategoryRow {
|
|
|
622
622
|
held: number;
|
|
623
623
|
booked: number;
|
|
624
624
|
not_for_sale: number;
|
|
625
|
+
/** Exact sum of booked unit_price snapshots, in major currency units. */
|
|
626
|
+
bookedRevenue: number;
|
|
625
627
|
}
|
|
626
628
|
interface ReportCategoryMeta {
|
|
627
629
|
key: string;
|
|
@@ -633,6 +635,7 @@ interface ReportResult {
|
|
|
633
635
|
report: {
|
|
634
636
|
byStatus: ReportByStatus;
|
|
635
637
|
byCategory: ReportCategoryRow[];
|
|
638
|
+
bySection?: ControlRoomSectionMetric[];
|
|
636
639
|
};
|
|
637
640
|
event: {
|
|
638
641
|
key: string;
|
|
@@ -642,6 +645,51 @@ interface ReportResult {
|
|
|
642
645
|
};
|
|
643
646
|
categories: ReportCategoryMeta[];
|
|
644
647
|
}
|
|
648
|
+
interface ControlRoomSectionMetric {
|
|
649
|
+
sectionId: string;
|
|
650
|
+
sectionLabel: string;
|
|
651
|
+
zoneId: string | null;
|
|
652
|
+
total: number;
|
|
653
|
+
free: number;
|
|
654
|
+
held: number;
|
|
655
|
+
booked: number;
|
|
656
|
+
not_for_sale: number;
|
|
657
|
+
bookedRevenue: number;
|
|
658
|
+
}
|
|
659
|
+
interface ControlRoomSnapshot {
|
|
660
|
+
version: number;
|
|
661
|
+
currency: string;
|
|
662
|
+
totals: {
|
|
663
|
+
free: number;
|
|
664
|
+
held: number;
|
|
665
|
+
booked: number;
|
|
666
|
+
blocked: number;
|
|
667
|
+
};
|
|
668
|
+
revenue: {
|
|
669
|
+
gross: number;
|
|
670
|
+
bySection: ControlRoomSectionMetric[];
|
|
671
|
+
};
|
|
672
|
+
velocity: {
|
|
673
|
+
windowMinutes: number;
|
|
674
|
+
bySection: Array<{
|
|
675
|
+
sectionId: string;
|
|
676
|
+
netBooked: number;
|
|
677
|
+
grossRevenue: number;
|
|
678
|
+
previousNetBooked: number;
|
|
679
|
+
trend: 'rising' | 'steady' | 'cooling';
|
|
680
|
+
}>;
|
|
681
|
+
};
|
|
682
|
+
presence: {
|
|
683
|
+
shoppingSessions: number;
|
|
684
|
+
activeHolds: number;
|
|
685
|
+
};
|
|
686
|
+
event: {
|
|
687
|
+
key: string;
|
|
688
|
+
name: string;
|
|
689
|
+
seatTotal: number;
|
|
690
|
+
currency?: string;
|
|
691
|
+
};
|
|
692
|
+
}
|
|
645
693
|
interface LogEntry {
|
|
646
694
|
id: number;
|
|
647
695
|
at: number;
|
|
@@ -719,6 +767,7 @@ declare class ManageApi {
|
|
|
719
767
|
holdTtlMs: number | null;
|
|
720
768
|
}>;
|
|
721
769
|
report(key: string): Promise<ReportResult>;
|
|
770
|
+
controlRoom(key: string, windowMinutes?: number): Promise<ControlRoomSnapshot>;
|
|
722
771
|
log(key: string, opts?: {
|
|
723
772
|
limit?: number;
|
|
724
773
|
before?: number;
|
|
@@ -734,22 +783,23 @@ declare class ManageApi {
|
|
|
734
783
|
* Productizes the SeatLayer dashboard's ManageEventPage into a framework-
|
|
735
784
|
* agnostic class (mirrors how SeatPicker productized the buyer flow). It mounts
|
|
736
785
|
* the shared engine in `manageMode`, subscribes to the event's realtime channel
|
|
737
|
-
* and drives
|
|
786
|
+
* and drives three control-room tools on one persistent canvas:
|
|
738
787
|
*
|
|
739
788
|
* - **view** — a live board: realtime seat repaint (flash on hold/book),
|
|
740
789
|
* live KPI tallies + gross revenue, and a streaming activity
|
|
741
790
|
* feed derived from the delta stream + audit log. Read-only.
|
|
791
|
+
* - **inspect** — select one seat to read its live inventory context.
|
|
742
792
|
* - **block** — bulk-first block/unblock: marquee-drag, ⌘A select-all,
|
|
743
793
|
* whole-category / whole-section select, single-seat fallback →
|
|
744
794
|
* one batched block/unblock (optimistic, reconciled by the WS),
|
|
745
|
-
* timed auto-release
|
|
795
|
+
* and timed auto-release.
|
|
746
796
|
*
|
|
747
797
|
* Auth: reads (chart/objects/WS) are public; writes/reports carry a Bearer
|
|
748
798
|
* event-scoped manage token (`mse_…`) or a tenant secret key (`sk_…`) via
|
|
749
799
|
* {@link ManageApi}. Box office + Sections + full Reports UI are M2/M3.
|
|
750
800
|
*/
|
|
751
801
|
|
|
752
|
-
type SeatManagerMode = 'view' | 'block';
|
|
802
|
+
type SeatManagerMode = 'view' | 'inspect' | 'block';
|
|
753
803
|
/** DO seat status — 'blocked' has no engine analogue (→ 'not_for_sale'). */
|
|
754
804
|
type DoStatus = 'free' | 'held' | 'booked' | 'blocked';
|
|
755
805
|
/** Live KPI snapshot pushed to `onTallies` on every state change. */
|
|
@@ -764,8 +814,10 @@ interface SeatManagerTallies {
|
|
|
764
814
|
capacityPct: number;
|
|
765
815
|
/** booked / (total − blocked), 0–100 — sell-through of sellable inventory. */
|
|
766
816
|
sellThroughPct: number;
|
|
767
|
-
/** Σ
|
|
817
|
+
/** Exact Σ booked unit_price snapshots from the authenticated report. */
|
|
768
818
|
grossRevenue: number;
|
|
819
|
+
/** Revenue is never reconstructed from chart list price. */
|
|
820
|
+
revenueStatus: 'loading' | 'current' | 'stale';
|
|
769
821
|
/** ISO-4217 currency for grossRevenue. */
|
|
770
822
|
currency: string;
|
|
771
823
|
}
|
|
@@ -774,6 +826,9 @@ interface SeatManagerActivity {
|
|
|
774
826
|
id: string;
|
|
775
827
|
at: number;
|
|
776
828
|
label: string;
|
|
829
|
+
/** Full labels affected by this one backend/realtime operation. */
|
|
830
|
+
labels: string[];
|
|
831
|
+
count: number;
|
|
777
832
|
/** Human verb: held / booked / released / blocked / unblocked. */
|
|
778
833
|
verb: string;
|
|
779
834
|
status: DoStatus;
|
|
@@ -793,6 +848,8 @@ interface SeatManagerOptions {
|
|
|
793
848
|
eventKey: string;
|
|
794
849
|
/** Bearer manage token — event-scoped `mse_…` or a tenant secret `sk_…`. */
|
|
795
850
|
token: string;
|
|
851
|
+
/** Absolute token expiry (epoch ms). Enables proactive in-place rotation. */
|
|
852
|
+
tokenExpiresAt?: number;
|
|
796
853
|
/** Initial mode. Default 'view'. */
|
|
797
854
|
mode?: SeatManagerMode;
|
|
798
855
|
/** ISO-4217 fallback currency for revenue (chart/event currency wins). */
|
|
@@ -809,6 +866,17 @@ interface SeatManagerOptions {
|
|
|
809
866
|
onReady?: () => void;
|
|
810
867
|
/** Live KPI tallies changed. */
|
|
811
868
|
onTallies?: (tallies: SeatManagerTallies) => void;
|
|
869
|
+
/** A grouped live/audit activity item arrived. */
|
|
870
|
+
onActivity?: (activity: SeatManagerActivity) => void;
|
|
871
|
+
/** Exact private control-room projection changed. */
|
|
872
|
+
onControlRoom?: (snapshot: ControlRoomSnapshot) => void;
|
|
873
|
+
/** Called before token expiry. The manager swaps the result without remounting. */
|
|
874
|
+
onTokenRefresh?: () => Promise<{
|
|
875
|
+
token: string;
|
|
876
|
+
expiresAt: number;
|
|
877
|
+
}>;
|
|
878
|
+
/** Tool/mode changed from inside the shared cockpit. */
|
|
879
|
+
onModeChange?: (mode: SeatManagerMode) => void;
|
|
812
880
|
/** Block-mode selection changed (marquee / ⌘A / category / section / tap). */
|
|
813
881
|
onSelectionChange?: (seats: ExpandedSeat[]) => void;
|
|
814
882
|
/** A block/unblock/cancel action completed successfully. */
|
|
@@ -831,8 +899,14 @@ declare class SeatManager {
|
|
|
831
899
|
private labelToSeat;
|
|
832
900
|
private allIds;
|
|
833
901
|
private status;
|
|
834
|
-
private priceByCat;
|
|
835
902
|
private currency;
|
|
903
|
+
private authoritativeGrossRevenue;
|
|
904
|
+
private revenueStatus;
|
|
905
|
+
private revenueRequest;
|
|
906
|
+
private revenueRefreshTimer;
|
|
907
|
+
private controlRoomSnapshot;
|
|
908
|
+
private trendWindowMinutes;
|
|
909
|
+
private heatEnabled;
|
|
836
910
|
private ws;
|
|
837
911
|
private reconnectTimer;
|
|
838
912
|
private attempt;
|
|
@@ -842,10 +916,31 @@ declare class SeatManager {
|
|
|
842
916
|
private feedTimer;
|
|
843
917
|
private toastTimer;
|
|
844
918
|
private releaseAt;
|
|
919
|
+
private layoutObserver;
|
|
920
|
+
private tokenExpiresAt;
|
|
921
|
+
private tokenRefreshTimer;
|
|
922
|
+
private tokenRefreshInFlight;
|
|
923
|
+
private sectionByObject;
|
|
924
|
+
private sectionLabelById;
|
|
925
|
+
private lastSyncedAt;
|
|
926
|
+
private readonly onFullscreenChange;
|
|
927
|
+
private readonly onKeyDown;
|
|
845
928
|
constructor(options: SeatManagerOptions);
|
|
846
929
|
/** Build the DOM, load the chart, subscribe to realtime, mount the board. */
|
|
847
930
|
render(): Promise<this>;
|
|
848
931
|
setMode(mode: SeatManagerMode): void;
|
|
932
|
+
/** Toggle the normalized sales-velocity outline overlay without changing seat colors. */
|
|
933
|
+
setHeatOverlay(enabled: boolean): void;
|
|
934
|
+
/** Change the current-vs-previous sales window and refresh the private projection. */
|
|
935
|
+
setTrendWindow(windowMinutes: number): Promise<ControlRoomSnapshot>;
|
|
936
|
+
enterFullscreen(): Promise<void>;
|
|
937
|
+
exitFullscreen(): Promise<void>;
|
|
938
|
+
isFullscreen(): boolean;
|
|
939
|
+
private toggleFullscreen;
|
|
940
|
+
/** Rotate the delegated credential without rebuilding DOM, canvas or socket. */
|
|
941
|
+
setToken(token: string, expiresAt?: number): void;
|
|
942
|
+
private scheduleTokenRefresh;
|
|
943
|
+
private rotateToken;
|
|
849
944
|
/** Bulk block the given labels (or the current selection when omitted). */
|
|
850
945
|
block(labels?: string[], opts?: {
|
|
851
946
|
releaseAt?: number;
|
|
@@ -861,6 +956,7 @@ declare class SeatManager {
|
|
|
861
956
|
clearSelection(): void;
|
|
862
957
|
getSelection(): ExpandedSeat[];
|
|
863
958
|
getReport(): Promise<ReportResult>;
|
|
959
|
+
getControlRoomSnapshot(windowMinutes?: number): Promise<ControlRoomSnapshot>;
|
|
864
960
|
getLog(opts?: {
|
|
865
961
|
limit?: number;
|
|
866
962
|
before?: number;
|
|
@@ -874,6 +970,8 @@ declare class SeatManager {
|
|
|
874
970
|
zoomToFit(): void;
|
|
875
971
|
destroy(): void;
|
|
876
972
|
private buildRenderer;
|
|
973
|
+
private updateRendererInteraction;
|
|
974
|
+
private handleSeatSelect;
|
|
877
975
|
private repaintAll;
|
|
878
976
|
private connect;
|
|
879
977
|
private scheduleReconnect;
|
|
@@ -885,6 +983,9 @@ declare class SeatManager {
|
|
|
885
983
|
/** Keep the canvas painting on hidden/occluded tabs (war-room second monitor). */
|
|
886
984
|
private afterPaint;
|
|
887
985
|
private flash;
|
|
986
|
+
private applyReportRevenue;
|
|
987
|
+
private refreshControlRoom;
|
|
988
|
+
private scheduleRevenueRefresh;
|
|
888
989
|
private recomputeTallies;
|
|
889
990
|
private verbFor;
|
|
890
991
|
private pushActivity;
|
|
@@ -893,19 +994,25 @@ declare class SeatManager {
|
|
|
893
994
|
private selectionLabels;
|
|
894
995
|
private syncSelection;
|
|
895
996
|
private buildChrome;
|
|
997
|
+
private updateContainerLayout;
|
|
896
998
|
private sectionOptions;
|
|
897
999
|
private buildSectionOptions;
|
|
898
1000
|
private paintModeTabs;
|
|
1001
|
+
private paintHeatButton;
|
|
1002
|
+
private paintFullscreenButton;
|
|
1003
|
+
private paintTrendWindow;
|
|
899
1004
|
private setLive;
|
|
900
1005
|
private updateZoomHint;
|
|
901
1006
|
private paintKpis;
|
|
902
1007
|
private paintRail;
|
|
903
1008
|
private renderViewRail;
|
|
1009
|
+
private paintMonitorInsights;
|
|
1010
|
+
private applyHeatOverlay;
|
|
1011
|
+
private renderInspectRail;
|
|
904
1012
|
private paintLegend;
|
|
905
1013
|
private paintFeed;
|
|
906
1014
|
private renderBlockRail;
|
|
907
1015
|
private selectCategory;
|
|
908
|
-
private promptCancel;
|
|
909
1016
|
private paintSelBar;
|
|
910
1017
|
private done;
|
|
911
1018
|
private toastOk;
|
|
@@ -914,4 +1021,4 @@ declare class SeatManager {
|
|
|
914
1021
|
private fail;
|
|
915
1022
|
}
|
|
916
1023
|
|
|
917
|
-
export { ApiError, type BestAvailableResult, type CheckoutHandoff, type CheckoutLineItem, EmbeddedDesigner, type EmbeddedDesignerEventType, type EmbeddedDesignerMessage, type EmbeddedDesignerOptions, type GAAreaAvailability, type HoldConflict, type HoldLineItem, type HoldResult, type LogEntry, type LogPage, ManageApi, ManageApiError, type ReportByStatus, type ReportCategoryMeta, type ReportCategoryRow, type ReportResult, SeatManager, type SeatManagerActionResult, type SeatManagerActivity, type SeatManagerMode, type SeatManagerOptions, type SeatManagerTallies, SeatPicker, type SeatPickerOptions, type SeatPickerTheme, SeatingChart, type SeatingChartOptions, type SelectedSeat };
|
|
1024
|
+
export { ApiError, type BestAvailableResult, type CheckoutHandoff, type CheckoutLineItem, 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, type ReportByStatus, type ReportCategoryMeta, type ReportCategoryRow, type ReportResult, SeatManager, type SeatManagerActionResult, type SeatManagerActivity, type SeatManagerMode, type SeatManagerOptions, type SeatManagerTallies, SeatPicker, type SeatPickerOptions, type SeatPickerTheme, SeatingChart, type SeatingChartOptions, type SelectedSeat };
|