phoenix-ui-components 4.0.0 → 4.1.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/CHANGELOG.md +639 -0
- package/README.md +37 -0
- package/dist/README.md +37 -0
- package/dist/fesm2022/phoenix-ui-components.mjs +1650 -581
- package/dist/fesm2022/phoenix-ui-components.mjs.map +1 -1
- package/dist/index.d.ts +267 -100
- package/package.json +12 -8
package/dist/index.d.ts
CHANGED
|
@@ -1,31 +1,34 @@
|
|
|
1
1
|
import * as i0 from '@angular/core';
|
|
2
|
-
import { OnInit, EventEmitter, ElementRef, ChangeDetectorRef,
|
|
3
|
-
import * as
|
|
2
|
+
import { OnInit, EventEmitter, ElementRef, ChangeDetectorRef, OnDestroy, NgZone, ComponentRef, AfterViewInit, QueryList, OnChanges, SimpleChanges, PipeTransform } from '@angular/core';
|
|
3
|
+
import * as i76 from '@angular/material/checkbox';
|
|
4
4
|
import { MatCheckboxChange } from '@angular/material/checkbox';
|
|
5
5
|
import * as phoenix_event_display from 'phoenix-event-display';
|
|
6
|
-
import { PhoenixMenuNode, EventDisplay, Configuration, AnimationPreset, PrettySymbols, ActiveVariable, PresetView, KinematicsConfig, MasterclassConfig, EventSummary, KinematicsColumn, TaggedParticle, ParticleTagDef } from 'phoenix-event-display';
|
|
7
|
-
import * as
|
|
8
|
-
import { Overlay } from '@angular/cdk/overlay';
|
|
9
|
-
import { Object3D, Object3DEventMap, Vector3 } from 'three';
|
|
10
|
-
import * as i62 from '@angular/material/dialog';
|
|
6
|
+
import { PhoenixMenuNode, EventDisplay, Configuration, AnimationPreset, PrettySymbols, ActiveVariable, PresetView, KinematicsConfig, MasterclassConfig, EventSummary, KinematicsColumn, TaggedParticle, ParticleTagDef, SessionState } from 'phoenix-event-display';
|
|
7
|
+
import * as i67 from '@angular/material/dialog';
|
|
11
8
|
import { MatDialog, MatDialogRef } from '@angular/material/dialog';
|
|
12
|
-
import
|
|
13
|
-
import
|
|
9
|
+
import * as i62 from '@angular/material/snack-bar';
|
|
10
|
+
import { MatSnackBar } from '@angular/material/snack-bar';
|
|
11
|
+
import { Observable, Subscription } from 'rxjs';
|
|
12
|
+
import * as i70 from '@angular/cdk/overlay';
|
|
13
|
+
import { Overlay, GlobalPositionStrategy } from '@angular/cdk/overlay';
|
|
14
|
+
import { Object3D, Object3DEventMap, Vector3 } from 'three';
|
|
15
|
+
import * as i72 from '@angular/material/menu';
|
|
14
16
|
import { MatMenuTrigger } from '@angular/material/menu';
|
|
15
|
-
import * as
|
|
17
|
+
import * as i78 from '@angular/cdk/tree';
|
|
16
18
|
import { NestedTreeControl } from '@angular/cdk/tree';
|
|
17
19
|
import { MatTreeNestedDataSource } from '@angular/material/tree';
|
|
18
|
-
import * as
|
|
19
|
-
import * as
|
|
20
|
-
import * as
|
|
21
|
-
import * as
|
|
22
|
-
import * as
|
|
23
|
-
import * as
|
|
24
|
-
import * as
|
|
25
|
-
import * as
|
|
26
|
-
import * as
|
|
27
|
-
import * as
|
|
28
|
-
import * as
|
|
20
|
+
import * as i64 from '@angular/common';
|
|
21
|
+
import * as i65 from '@angular/router';
|
|
22
|
+
import * as i66 from '@angular/cdk/drag-drop';
|
|
23
|
+
import * as i68 from '@angular/material/button';
|
|
24
|
+
import * as i69 from '@angular/material/tooltip';
|
|
25
|
+
import * as i71 from '@angular/forms';
|
|
26
|
+
import * as i73 from '@angular/material/radio';
|
|
27
|
+
import * as i74 from '@angular/material/slider';
|
|
28
|
+
import * as i75 from '@angular/material/slide-toggle';
|
|
29
|
+
import * as i77 from '@angular/material/icon';
|
|
30
|
+
import * as i79 from '@angular/material/tabs';
|
|
31
|
+
import * as i80 from '@angular/material/progress-bar';
|
|
29
32
|
|
|
30
33
|
declare class NavComponent implements OnInit {
|
|
31
34
|
constructor();
|
|
@@ -56,6 +59,17 @@ declare class PhoenixMenuItemComponent {
|
|
|
56
59
|
phoenixMenuItem: ElementRef<HTMLDivElement>;
|
|
57
60
|
configTop: number;
|
|
58
61
|
constructor(cdr: ChangeDetectorRef);
|
|
62
|
+
/**
|
|
63
|
+
* Whether a node is a leaf holding only configs (like the collections'
|
|
64
|
+
* "Draw/Cut/Color Options"), which is displayed as a compact icon button
|
|
65
|
+
* in a toolbar instead of a full menu row.
|
|
66
|
+
*/
|
|
67
|
+
isCompactOptionsNode(node: PhoenixMenuNode): boolean;
|
|
68
|
+
get isCompact(): boolean;
|
|
69
|
+
/** Label for the compact icon button, e.g. "Draw Options" -> "Draw". */
|
|
70
|
+
get compactLabel(): string;
|
|
71
|
+
get compactChildren(): PhoenixMenuNode[];
|
|
72
|
+
get regularChildren(): PhoenixMenuNode[];
|
|
59
73
|
calculateConfigTop(): void;
|
|
60
74
|
castConfigsToAny(configs: PhoenixMenuNode['configs']): any[];
|
|
61
75
|
static ɵfac: i0.ɵɵFactoryDeclaration<PhoenixMenuItemComponent, never>;
|
|
@@ -63,11 +77,110 @@ declare class PhoenixMenuItemComponent {
|
|
|
63
77
|
}
|
|
64
78
|
|
|
65
79
|
declare class PhoenixMenuComponent {
|
|
80
|
+
private dialog;
|
|
66
81
|
rootNode: PhoenixMenuNode;
|
|
82
|
+
constructor(dialog: MatDialog);
|
|
83
|
+
openShortcutsDialog(): void;
|
|
67
84
|
static ɵfac: i0.ɵɵFactoryDeclaration<PhoenixMenuComponent, never>;
|
|
68
85
|
static ɵcmp: i0.ɵɵComponentDeclaration<PhoenixMenuComponent, "app-phoenix-menu", never, { "rootNode": { "alias": "rootNode"; "required": false; }; }, {}, never, never, false, never>;
|
|
69
86
|
}
|
|
70
87
|
|
|
88
|
+
declare class ShortcutsDialogComponent {
|
|
89
|
+
dialogRef: MatDialogRef<ShortcutsDialogComponent>;
|
|
90
|
+
constructor(dialogRef: MatDialogRef<ShortcutsDialogComponent>);
|
|
91
|
+
onClose(): void;
|
|
92
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<ShortcutsDialogComponent, never>;
|
|
93
|
+
static ɵcmp: i0.ɵɵComponentDeclaration<ShortcutsDialogComponent, "app-shortcuts-dialog", never, {}, {}, never, never, false, never>;
|
|
94
|
+
}
|
|
95
|
+
|
|
96
|
+
/** Severity levels for notifications. */
|
|
97
|
+
type NotificationSeverity = 'success' | 'info' | 'warning' | 'error';
|
|
98
|
+
/** A notification message with severity and content. */
|
|
99
|
+
interface Notification {
|
|
100
|
+
/** The message to display to the user. */
|
|
101
|
+
message: string;
|
|
102
|
+
/** The severity level of the notification. */
|
|
103
|
+
severity: NotificationSeverity;
|
|
104
|
+
/** Duration in milliseconds before auto-dismiss. 0 means no auto-dismiss. */
|
|
105
|
+
duration: number;
|
|
106
|
+
}
|
|
107
|
+
/**
|
|
108
|
+
* Service for displaying user-facing notifications with severity levels.
|
|
109
|
+
* Provides success, info, warning, and error notifications with
|
|
110
|
+
* configurable auto-dismiss durations. Replaces silent console errors
|
|
111
|
+
* with actionable user feedback across all Phoenix components.
|
|
112
|
+
*/
|
|
113
|
+
declare class NotificationService {
|
|
114
|
+
/** Default auto-dismiss durations in milliseconds per severity level. */
|
|
115
|
+
private readonly defaultDurations;
|
|
116
|
+
/** Active variable that stores the latest notification. */
|
|
117
|
+
private notification;
|
|
118
|
+
/**
|
|
119
|
+
* Subscribe to incoming notifications.
|
|
120
|
+
* @param callback Function called when a notification is emitted.
|
|
121
|
+
* @returns A function that can be called to unsubscribe.
|
|
122
|
+
*/
|
|
123
|
+
subscribeToNotifications(callback: (notification: Notification) => void): () => void;
|
|
124
|
+
/**
|
|
125
|
+
* Display a success notification.
|
|
126
|
+
* Auto-dismisses after 5 seconds by default.
|
|
127
|
+
* @param message The message to display.
|
|
128
|
+
* @param duration Optional custom duration in ms. 0 means no auto-dismiss.
|
|
129
|
+
*/
|
|
130
|
+
success(message: string, duration?: number): void;
|
|
131
|
+
/**
|
|
132
|
+
* Display an info notification.
|
|
133
|
+
* Auto-dismisses after 5 seconds by default.
|
|
134
|
+
* @param message The message to display.
|
|
135
|
+
* @param duration Optional custom duration in ms. 0 means no auto-dismiss.
|
|
136
|
+
*/
|
|
137
|
+
info(message: string, duration?: number): void;
|
|
138
|
+
/**
|
|
139
|
+
* Display a warning notification.
|
|
140
|
+
* Auto-dismisses after 8 seconds by default.
|
|
141
|
+
* @param message The message to display.
|
|
142
|
+
* @param duration Optional custom duration in ms. 0 means no auto-dismiss.
|
|
143
|
+
*/
|
|
144
|
+
warning(message: string, duration?: number): void;
|
|
145
|
+
/**
|
|
146
|
+
* Display an error notification.
|
|
147
|
+
* Does not auto-dismiss by default — requires manual dismissal.
|
|
148
|
+
* @param message The message to display.
|
|
149
|
+
* @param duration Optional custom duration in ms. 0 means no auto-dismiss.
|
|
150
|
+
*/
|
|
151
|
+
error(message: string, duration?: number): void;
|
|
152
|
+
/**
|
|
153
|
+
* Internal method to emit a notification.
|
|
154
|
+
* @param message The message to display.
|
|
155
|
+
* @param severity The severity level.
|
|
156
|
+
* @param duration Optional custom duration override.
|
|
157
|
+
*/
|
|
158
|
+
private notify;
|
|
159
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<NotificationService, never>;
|
|
160
|
+
static ɵprov: i0.ɵɵInjectableDeclaration<NotificationService>;
|
|
161
|
+
}
|
|
162
|
+
|
|
163
|
+
/**
|
|
164
|
+
* Component that subscribes to NotificationService and displays
|
|
165
|
+
* transient toast notifications via MatSnackBar.
|
|
166
|
+
*
|
|
167
|
+
* Severity levels map to CSS panel classes:
|
|
168
|
+
* - success → notification-success
|
|
169
|
+
* - info → notification-info
|
|
170
|
+
* - warning → notification-warning
|
|
171
|
+
* - error → notification-error
|
|
172
|
+
*/
|
|
173
|
+
declare class NotificationToastComponent implements OnInit, OnDestroy {
|
|
174
|
+
private notificationService;
|
|
175
|
+
private snackBar;
|
|
176
|
+
private unsubscribe;
|
|
177
|
+
constructor(notificationService: NotificationService, snackBar: MatSnackBar);
|
|
178
|
+
ngOnInit(): void;
|
|
179
|
+
ngOnDestroy(): void;
|
|
180
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<NotificationToastComponent, never>;
|
|
181
|
+
static ɵcmp: i0.ɵɵComponentDeclaration<NotificationToastComponent, "app-notification-toast", never, {}, {}, never, never, false, never>;
|
|
182
|
+
}
|
|
183
|
+
|
|
71
184
|
/**
|
|
72
185
|
* Service for all event display related functions.
|
|
73
186
|
*/
|
|
@@ -101,19 +214,36 @@ declare const defaultAnimationPresets: {
|
|
|
101
214
|
};
|
|
102
215
|
declare class AnimateCameraComponent {
|
|
103
216
|
private eventDisplay;
|
|
217
|
+
private dialog;
|
|
104
218
|
animationPresets: {
|
|
105
219
|
[key: string]: AnimationPreset;
|
|
106
220
|
};
|
|
107
221
|
animationPresetsKeys: string[];
|
|
108
222
|
isAnimating: boolean;
|
|
109
|
-
constructor(eventDisplay: EventDisplayService);
|
|
110
|
-
|
|
111
|
-
|
|
223
|
+
constructor(eventDisplay: EventDisplayService, dialog: MatDialog);
|
|
224
|
+
playPreset(preset: string): void;
|
|
225
|
+
playAnimateCamera(): void;
|
|
226
|
+
downloadAnimation(preset?: string): void;
|
|
227
|
+
animatePreset(preset: string, onEnd?: () => void): void;
|
|
228
|
+
animateCamera(onEnd?: () => void): void;
|
|
112
229
|
private setDetectorOpacity;
|
|
113
230
|
static ɵfac: i0.ɵɵFactoryDeclaration<AnimateCameraComponent, never>;
|
|
114
231
|
static ɵcmp: i0.ɵɵComponentDeclaration<AnimateCameraComponent, "app-animate-camera", never, { "animationPresets": { "alias": "animationPresets"; "required": false; }; }, {}, never, never, false, never>;
|
|
115
232
|
}
|
|
116
233
|
|
|
234
|
+
declare class DownloadAnimationDialogComponent implements OnInit {
|
|
235
|
+
data: {
|
|
236
|
+
progress$: Observable<number>;
|
|
237
|
+
};
|
|
238
|
+
progress: number;
|
|
239
|
+
constructor(data: {
|
|
240
|
+
progress$: Observable<number>;
|
|
241
|
+
});
|
|
242
|
+
ngOnInit(): void;
|
|
243
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<DownloadAnimationDialogComponent, never>;
|
|
244
|
+
static ɵcmp: i0.ɵɵComponentDeclaration<DownloadAnimationDialogComponent, "app-download-animation-dialog", never, {}, {}, never, never, false, never>;
|
|
245
|
+
}
|
|
246
|
+
|
|
117
247
|
declare class AnimateEventComponent {
|
|
118
248
|
private eventDisplay;
|
|
119
249
|
isAnimating: boolean;
|
|
@@ -164,6 +294,7 @@ declare class CollectionsInfoOverlayComponent implements OnInit, OnDestroy {
|
|
|
164
294
|
enableHighlighting(): void;
|
|
165
295
|
disableHighlighting(): void;
|
|
166
296
|
toggleInvisible(checked: boolean): void;
|
|
297
|
+
formatValue(value: any): string;
|
|
167
298
|
addLabel(index: number, uuid: string): void;
|
|
168
299
|
private getEventDataGroup;
|
|
169
300
|
static ɵfac: i0.ɵɵFactoryDeclaration<CollectionsInfoOverlayComponent, never>;
|
|
@@ -276,11 +407,24 @@ declare class InfoPanelOverlayComponent implements OnInit {
|
|
|
276
407
|
static ɵcmp: i0.ɵɵComponentDeclaration<InfoPanelOverlayComponent, "app-info-panel-overlay", never, { "showInfoPanel": { "alias": "showInfoPanel"; "required": false; }; }, {}, never, never, false, never>;
|
|
277
408
|
}
|
|
278
409
|
|
|
410
|
+
declare class OverlayCascadeService {
|
|
411
|
+
private overlay;
|
|
412
|
+
private cascadeCount;
|
|
413
|
+
private topOffset;
|
|
414
|
+
private leftOffset;
|
|
415
|
+
private step;
|
|
416
|
+
constructor(overlay: Overlay);
|
|
417
|
+
getCascadePositionStrategy(): GlobalPositionStrategy;
|
|
418
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<OverlayCascadeService, never>;
|
|
419
|
+
static ɵprov: i0.ɵɵInjectableDeclaration<OverlayCascadeService>;
|
|
420
|
+
}
|
|
421
|
+
|
|
279
422
|
/**
|
|
280
423
|
* Component for toggling info panel overlay
|
|
281
424
|
*/
|
|
282
425
|
declare class InfoPanelComponent implements OnInit, OnDestroy {
|
|
283
426
|
private overlay;
|
|
427
|
+
private overlayCascade;
|
|
284
428
|
/** @ignore */
|
|
285
429
|
showInfoPanel: boolean;
|
|
286
430
|
/** Information panel overlay window */
|
|
@@ -289,7 +433,7 @@ declare class InfoPanelComponent implements OnInit, OnDestroy {
|
|
|
289
433
|
* Create the info panel toggle
|
|
290
434
|
* @param overlay Info panel overlay containing logger data
|
|
291
435
|
*/
|
|
292
|
-
constructor(overlay: Overlay);
|
|
436
|
+
constructor(overlay: Overlay, overlayCascade: OverlayCascadeService);
|
|
293
437
|
/**
|
|
294
438
|
* Create the info panel overlay
|
|
295
439
|
*/
|
|
@@ -311,6 +455,7 @@ declare enum EventDataFormat {
|
|
|
311
455
|
EDM4HEPJSON = "EDM4HEPJSON",
|
|
312
456
|
JIVEXML = "JIVEXML",
|
|
313
457
|
PHYSLITE = "PHYSLITE",
|
|
458
|
+
ATLASESD = "ATLASESD",
|
|
314
459
|
IG = "IG",
|
|
315
460
|
ZIP = "ZIP"
|
|
316
461
|
}
|
|
@@ -335,10 +480,11 @@ declare class IoOptionsComponent {
|
|
|
335
480
|
declare class IOOptionsDialogComponent implements OnInit {
|
|
336
481
|
private eventDisplay;
|
|
337
482
|
dialogRef: MatDialogRef<IOOptionsDialogComponent>;
|
|
483
|
+
private notificationService;
|
|
338
484
|
eventDataImportOptions: EventDataImportOption[];
|
|
339
485
|
eventDataOptionsWithHandler: ImportOption[];
|
|
340
486
|
private supportedEventDataFormats;
|
|
341
|
-
constructor(eventDisplay: EventDisplayService, dialogRef: MatDialogRef<IOOptionsDialogComponent
|
|
487
|
+
constructor(eventDisplay: EventDisplayService, dialogRef: MatDialogRef<IOOptionsDialogComponent>, notificationService: NotificationService);
|
|
342
488
|
ngOnInit(): void;
|
|
343
489
|
getSupportedEventDataFormats(): string;
|
|
344
490
|
onClose(): void;
|
|
@@ -353,6 +499,7 @@ declare class IOOptionsDialogComponent implements OnInit {
|
|
|
353
499
|
handleROOTInput(files: FileList): Promise<void>;
|
|
354
500
|
handleRootJSONInput(files: FileList): Promise<void>;
|
|
355
501
|
handlePHYSLITEInput(files: FileList): Promise<void>;
|
|
502
|
+
handleATLASESDInput(files: FileList): Promise<void>;
|
|
356
503
|
handleIgEventDataInput(files: FileList): void;
|
|
357
504
|
handleZipEventDataInput(files: FileList): Promise<void>;
|
|
358
505
|
handleFileInput(file: File, extensions: string, callback: (result: string, fileName?: string) => void): void;
|
|
@@ -426,12 +573,15 @@ declare class ObjectSelectionComponent implements OnInit, OnDestroy {
|
|
|
426
573
|
/**
|
|
427
574
|
* Component for overlay panel.
|
|
428
575
|
*/
|
|
429
|
-
declare class OverlayComponent implements AfterViewInit, OnDestroy {
|
|
576
|
+
declare class OverlayComponent implements OnInit, AfterViewInit, OnDestroy {
|
|
430
577
|
private eventDisplay;
|
|
578
|
+
private elementRef;
|
|
431
579
|
/** Title of the overlay. */
|
|
432
580
|
overlayTitle: string;
|
|
433
581
|
/** If the overlay is open or not. */
|
|
434
|
-
|
|
582
|
+
private _active;
|
|
583
|
+
set active(value: boolean);
|
|
584
|
+
get active(): boolean;
|
|
435
585
|
/** Icon of the overlay header. */
|
|
436
586
|
icon: string;
|
|
437
587
|
/** If the overlay is resizable. */
|
|
@@ -456,7 +606,11 @@ declare class OverlayComponent implements AfterViewInit, OnDestroy {
|
|
|
456
606
|
private MIN_RES_WIDTH;
|
|
457
607
|
/** Minimum resizable height */
|
|
458
608
|
private MIN_RES_HEIGHT;
|
|
459
|
-
constructor(eventDisplay: EventDisplayService);
|
|
609
|
+
constructor(eventDisplay: EventDisplayService, elementRef: ElementRef);
|
|
610
|
+
ngOnInit(): void;
|
|
611
|
+
toggleBodyAndEmit(): void;
|
|
612
|
+
/** Bring the overlay to the front. */
|
|
613
|
+
bringToFront(): void;
|
|
460
614
|
/**
|
|
461
615
|
* Move the resizable handle to the bottom right after the component is created.
|
|
462
616
|
*/
|
|
@@ -768,6 +922,8 @@ declare class ShareLinkDialogComponent implements AfterViewInit, OnDestroy {
|
|
|
768
922
|
state: string;
|
|
769
923
|
hideWidgets: boolean;
|
|
770
924
|
embed: boolean;
|
|
925
|
+
replay: string;
|
|
926
|
+
session: string;
|
|
771
927
|
};
|
|
772
928
|
qrcodeCanvas: ElementRef<HTMLCanvasElement>;
|
|
773
929
|
private unsubscribe;
|
|
@@ -1042,9 +1198,10 @@ declare class EtaPhiPanelOverlayComponent implements OnInit, OnDestroy, AfterVie
|
|
|
1042
1198
|
|
|
1043
1199
|
declare class EtaPhiPanelComponent implements OnInit, OnDestroy {
|
|
1044
1200
|
private overlay;
|
|
1201
|
+
private overlayCascade;
|
|
1045
1202
|
showPanel: boolean;
|
|
1046
1203
|
overlayWindow: ComponentRef<EtaPhiPanelOverlayComponent>;
|
|
1047
|
-
constructor(overlay: Overlay);
|
|
1204
|
+
constructor(overlay: Overlay, overlayCascade: OverlayCascadeService);
|
|
1048
1205
|
ngOnInit(): void;
|
|
1049
1206
|
ngOnDestroy(): void;
|
|
1050
1207
|
toggleOverlay(): void;
|
|
@@ -1121,10 +1278,11 @@ declare class KinematicsPanelOverlayComponent implements OnInit, OnDestroy {
|
|
|
1121
1278
|
|
|
1122
1279
|
declare class KinematicsPanelComponent implements OnInit, OnDestroy, OnChanges {
|
|
1123
1280
|
private overlay;
|
|
1281
|
+
private overlayCascade;
|
|
1124
1282
|
showKinematics: boolean;
|
|
1125
1283
|
overlayWindow: ComponentRef<KinematicsPanelOverlayComponent>;
|
|
1126
1284
|
config?: KinematicsConfig;
|
|
1127
|
-
constructor(overlay: Overlay);
|
|
1285
|
+
constructor(overlay: Overlay, overlayCascade: OverlayCascadeService);
|
|
1128
1286
|
ngOnInit(): void;
|
|
1129
1287
|
ngOnChanges(changes: SimpleChanges): void;
|
|
1130
1288
|
ngOnDestroy(): void;
|
|
@@ -1232,6 +1390,82 @@ declare class MasterclassPanelComponent implements OnInit, OnDestroy, OnChanges
|
|
|
1232
1390
|
static ɵcmp: i0.ɵɵComponentDeclaration<MasterclassPanelComponent, "app-masterclass-panel", never, { "config": { "alias": "config"; "required": false; }; }, {}, never, never, false, never>;
|
|
1233
1391
|
}
|
|
1234
1392
|
|
|
1393
|
+
/**
|
|
1394
|
+
* Floating session pill (#883). Renders only while the session manager is
|
|
1395
|
+
* recording, paused, finished, or playing a replay. Idle state hides the
|
|
1396
|
+
* pill entirely so it adds zero footprint to the toolbar.
|
|
1397
|
+
*/
|
|
1398
|
+
declare class SessionPillComponent implements OnInit, OnDestroy {
|
|
1399
|
+
private eventDisplay;
|
|
1400
|
+
private cdr;
|
|
1401
|
+
/** Current session-manager state, kept in component for template binding. */
|
|
1402
|
+
state: SessionState;
|
|
1403
|
+
/** Cached duration label for the recording elapsed clock. */
|
|
1404
|
+
durationLabel: string;
|
|
1405
|
+
/** Cached current/total label for the playback clock. */
|
|
1406
|
+
playbackLabel: string;
|
|
1407
|
+
/** Cached event count for the recording badge. */
|
|
1408
|
+
eventCount: number;
|
|
1409
|
+
/** Last computed scrub percent (0-100). */
|
|
1410
|
+
scrubPercent: number;
|
|
1411
|
+
/** Saved copy-link feedback flag (resets after a tick). */
|
|
1412
|
+
linkCopied: boolean;
|
|
1413
|
+
/** Available playback speeds for the speed selector. */
|
|
1414
|
+
speeds: readonly (1 | 2 | 4 | 0.5)[];
|
|
1415
|
+
private sessionManager;
|
|
1416
|
+
private unsubscribeState;
|
|
1417
|
+
private recordingClockId;
|
|
1418
|
+
private copiedResetTimer;
|
|
1419
|
+
constructor(eventDisplay: EventDisplayService, cdr: ChangeDetectorRef);
|
|
1420
|
+
ngOnInit(): void;
|
|
1421
|
+
ngOnDestroy(): void;
|
|
1422
|
+
/** True when the pill should be visible. Idle state hides it. */
|
|
1423
|
+
get visible(): boolean;
|
|
1424
|
+
/** Stop an active recording from the pill's stop button. */
|
|
1425
|
+
onStopRecording(): void;
|
|
1426
|
+
/** Dismiss a recorded/finished/errored state and return to idle. */
|
|
1427
|
+
onDismiss(): void;
|
|
1428
|
+
/** Start a pending (link-supplied) session after explicit user confirmation. */
|
|
1429
|
+
onPlayPending(): void;
|
|
1430
|
+
/** Source label + duration/event summary for the pending confirm prompt. */
|
|
1431
|
+
get pendingSummary(): string;
|
|
1432
|
+
/** Toggle play/pause on the active player. */
|
|
1433
|
+
onTogglePlayback(): void;
|
|
1434
|
+
/** Scrub to the playhead position the user clicked. */
|
|
1435
|
+
onScrub(value: number): void;
|
|
1436
|
+
/** Change the active player's speed. */
|
|
1437
|
+
onSpeed(speed: 0.5 | 1 | 2 | 4): void;
|
|
1438
|
+
/** Download the recorded session as a .phnxreplay JSON file. */
|
|
1439
|
+
onDownload(): void;
|
|
1440
|
+
/**
|
|
1441
|
+
* Copy a ?replay=... share link to the clipboard. The base64 is precomputed
|
|
1442
|
+
* when recording stops, so the common path writes synchronously inside the
|
|
1443
|
+
* click gesture (the async Clipboard API rejects writes that happen after an
|
|
1444
|
+
* await, which expires the user activation). Falls back to execCommand.
|
|
1445
|
+
*/
|
|
1446
|
+
onCopyLink(): void;
|
|
1447
|
+
/** Build the share URL for a base64 payload and copy it to the clipboard. */
|
|
1448
|
+
private copyShareLink;
|
|
1449
|
+
/**
|
|
1450
|
+
* Legacy clipboard copy via a temporary textarea + execCommand. Used as a
|
|
1451
|
+
* fallback when the async Clipboard API is unavailable or rejected. Mirrors
|
|
1452
|
+
* the share-link dialog's proven approach.
|
|
1453
|
+
* @param text The text to copy.
|
|
1454
|
+
* @returns True if the copy command reported success.
|
|
1455
|
+
*/
|
|
1456
|
+
private legacyCopy;
|
|
1457
|
+
/** Active player duration (ms) for the scrub bar max value. */
|
|
1458
|
+
get playerDuration(): number;
|
|
1459
|
+
/** Active player current speed for the selector highlight. */
|
|
1460
|
+
get currentSpeed(): number;
|
|
1461
|
+
private refreshDerived;
|
|
1462
|
+
private startRecordingClock;
|
|
1463
|
+
private stopRecordingClock;
|
|
1464
|
+
private updateRecordingDerived;
|
|
1465
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<SessionPillComponent, never>;
|
|
1466
|
+
static ɵcmp: i0.ɵɵComponentDeclaration<SessionPillComponent, "app-session-pill", never, {}, {}, never, never, false, never>;
|
|
1467
|
+
}
|
|
1468
|
+
|
|
1235
1469
|
declare class ErrorMessageService {
|
|
1236
1470
|
/** A variable that stores the latest error thrown. */
|
|
1237
1471
|
private error;
|
|
@@ -1297,76 +1531,9 @@ declare class AttributePipe implements PipeTransform {
|
|
|
1297
1531
|
|
|
1298
1532
|
declare class PhoenixUIModule {
|
|
1299
1533
|
static ɵfac: i0.ɵɵFactoryDeclaration<PhoenixUIModule, never>;
|
|
1300
|
-
static ɵmod: i0.ɵɵNgModuleDeclaration<PhoenixUIModule, [typeof NavComponent, typeof UiMenuWrapperComponent, typeof UiMenuComponent, typeof MoreInfoComponent, typeof CollectionsInfoComponent, typeof GeometryBrowserComponent, typeof GeometryBrowserOverlayComponent, typeof MenuToggleComponent, typeof CollectionsInfoOverlayComponent, typeof IoOptionsComponent, typeof IOOptionsDialogComponent, typeof OverlayViewComponent, typeof ObjectSelectionComponent, typeof ObjectSelectionOverlayComponent, typeof EventSelectorComponent, typeof ObjectClippingComponent, typeof DarkThemeComponent, typeof AutoRotateComponent, typeof ViewOptionsComponent, typeof CartesianGridConfigComponent, typeof OverlayViewWindowComponent, typeof OverlayComponent, typeof ExperimentInfoComponent, typeof InfoPanelComponent, typeof InfoPanelOverlayComponent, typeof MainViewToggleComponent, typeof ZoomControlsComponent, typeof TreeMenuComponent, typeof TreeMenuItemComponent, typeof PhoenixMenuComponent, typeof PhoenixMenuItemComponent, typeof ConfigSliderComponent, typeof AnimateCameraComponent, typeof AnimateEventComponent, typeof VrToggleComponent, typeof ArToggleComponent, typeof SSModeComponent, typeof MakePictureComponent, typeof PerformanceToggleComponent, typeof LoaderComponent, typeof ShareLinkComponent, typeof ShareLinkDialogComponent, typeof EmbedMenuComponent, typeof ExperimentLinkComponent, typeof EventDataExplorerComponent, typeof EventDataExplorerDialogComponent, typeof FileExplorerComponent, typeof RingLoaderComponent, typeof CycleEventsComponent, typeof EventBrowserComponent, typeof EventBrowserOverlayComponent, typeof EtaPhiPanelComponent, typeof EtaPhiPanelOverlayComponent, typeof KinematicsPanelComponent, typeof KinematicsPanelOverlayComponent, typeof MasterclassPanelComponent, typeof MasterclassPanelOverlayComponent], [typeof AttributePipe, typeof
|
|
1534
|
+
static ɵmod: i0.ɵɵNgModuleDeclaration<PhoenixUIModule, [typeof NotificationToastComponent, typeof NavComponent, typeof UiMenuWrapperComponent, typeof UiMenuComponent, typeof MoreInfoComponent, typeof CollectionsInfoComponent, typeof GeometryBrowserComponent, typeof GeometryBrowserOverlayComponent, typeof MenuToggleComponent, typeof CollectionsInfoOverlayComponent, typeof IoOptionsComponent, typeof IOOptionsDialogComponent, typeof OverlayViewComponent, typeof ObjectSelectionComponent, typeof ObjectSelectionOverlayComponent, typeof EventSelectorComponent, typeof ObjectClippingComponent, typeof DarkThemeComponent, typeof AutoRotateComponent, typeof ViewOptionsComponent, typeof CartesianGridConfigComponent, typeof OverlayViewWindowComponent, typeof OverlayComponent, typeof ExperimentInfoComponent, typeof InfoPanelComponent, typeof InfoPanelOverlayComponent, typeof MainViewToggleComponent, typeof ZoomControlsComponent, typeof TreeMenuComponent, typeof TreeMenuItemComponent, typeof PhoenixMenuComponent, typeof PhoenixMenuItemComponent, typeof ConfigSliderComponent, typeof AnimateCameraComponent, typeof DownloadAnimationDialogComponent, typeof AnimateEventComponent, typeof VrToggleComponent, typeof ArToggleComponent, typeof SSModeComponent, typeof MakePictureComponent, typeof PerformanceToggleComponent, typeof LoaderComponent, typeof ShareLinkComponent, typeof ShareLinkDialogComponent, typeof EmbedMenuComponent, typeof ExperimentLinkComponent, typeof EventDataExplorerComponent, typeof EventDataExplorerDialogComponent, typeof FileExplorerComponent, typeof RingLoaderComponent, typeof CycleEventsComponent, typeof EventBrowserComponent, typeof EventBrowserOverlayComponent, typeof EtaPhiPanelComponent, typeof EtaPhiPanelOverlayComponent, typeof KinematicsPanelComponent, typeof KinematicsPanelOverlayComponent, typeof MasterclassPanelComponent, typeof MasterclassPanelOverlayComponent, typeof SessionPillComponent, typeof ShortcutsDialogComponent], [typeof i62.MatSnackBarModule, typeof AttributePipe, typeof i64.CommonModule, typeof i65.RouterModule, typeof i66.DragDropModule, typeof i67.MatDialogModule, typeof i68.MatButtonModule, typeof i69.MatTooltipModule, typeof i70.OverlayModule, typeof i71.FormsModule, typeof i71.ReactiveFormsModule, typeof i72.MatMenuModule, typeof i73.MatRadioModule, typeof i74.MatSliderModule, typeof i75.MatSlideToggleModule, typeof i76.MatCheckboxModule, typeof i77.MatIconModule, typeof i78.CdkTreeModule, typeof i79.MatTabsModule, typeof i80.MatProgressBarModule], [typeof NotificationToastComponent, typeof NavComponent, typeof UiMenuWrapperComponent, typeof UiMenuComponent, typeof MoreInfoComponent, typeof CollectionsInfoComponent, typeof GeometryBrowserComponent, typeof GeometryBrowserOverlayComponent, typeof MenuToggleComponent, typeof CollectionsInfoOverlayComponent, typeof IoOptionsComponent, typeof IOOptionsDialogComponent, typeof OverlayViewComponent, typeof ObjectSelectionComponent, typeof ObjectSelectionOverlayComponent, typeof EventSelectorComponent, typeof ObjectClippingComponent, typeof DarkThemeComponent, typeof AutoRotateComponent, typeof ViewOptionsComponent, typeof CartesianGridConfigComponent, typeof OverlayViewWindowComponent, typeof OverlayComponent, typeof ExperimentInfoComponent, typeof InfoPanelComponent, typeof InfoPanelOverlayComponent, typeof MainViewToggleComponent, typeof ZoomControlsComponent, typeof TreeMenuComponent, typeof TreeMenuItemComponent, typeof PhoenixMenuComponent, typeof PhoenixMenuItemComponent, typeof ConfigSliderComponent, typeof AnimateCameraComponent, typeof DownloadAnimationDialogComponent, typeof AnimateEventComponent, typeof VrToggleComponent, typeof ArToggleComponent, typeof SSModeComponent, typeof MakePictureComponent, typeof PerformanceToggleComponent, typeof LoaderComponent, typeof ShareLinkComponent, typeof ShareLinkDialogComponent, typeof EmbedMenuComponent, typeof ExperimentLinkComponent, typeof EventDataExplorerComponent, typeof EventDataExplorerDialogComponent, typeof FileExplorerComponent, typeof RingLoaderComponent, typeof CycleEventsComponent, typeof EventBrowserComponent, typeof EventBrowserOverlayComponent, typeof EtaPhiPanelComponent, typeof EtaPhiPanelOverlayComponent, typeof KinematicsPanelComponent, typeof KinematicsPanelOverlayComponent, typeof MasterclassPanelComponent, typeof MasterclassPanelOverlayComponent, typeof SessionPillComponent, typeof ShortcutsDialogComponent, typeof AttributePipe]>;
|
|
1301
1535
|
static ɵinj: i0.ɵɵInjectorDeclaration<PhoenixUIModule>;
|
|
1302
1536
|
}
|
|
1303
1537
|
|
|
1304
|
-
|
|
1305
|
-
type NotificationSeverity = 'success' | 'info' | 'warning' | 'error';
|
|
1306
|
-
/** A notification message with severity and content. */
|
|
1307
|
-
interface Notification {
|
|
1308
|
-
/** The message to display to the user. */
|
|
1309
|
-
message: string;
|
|
1310
|
-
/** The severity level of the notification. */
|
|
1311
|
-
severity: NotificationSeverity;
|
|
1312
|
-
/** Duration in milliseconds before auto-dismiss. 0 means no auto-dismiss. */
|
|
1313
|
-
duration: number;
|
|
1314
|
-
}
|
|
1315
|
-
/**
|
|
1316
|
-
* Service for displaying user-facing notifications with severity levels.
|
|
1317
|
-
* Provides success, info, warning, and error notifications with
|
|
1318
|
-
* configurable auto-dismiss durations. Replaces silent console errors
|
|
1319
|
-
* with actionable user feedback across all Phoenix components.
|
|
1320
|
-
*/
|
|
1321
|
-
declare class NotificationService {
|
|
1322
|
-
/** Default auto-dismiss durations in milliseconds per severity level. */
|
|
1323
|
-
private readonly defaultDurations;
|
|
1324
|
-
/** Active variable that stores the latest notification. */
|
|
1325
|
-
private notification;
|
|
1326
|
-
/**
|
|
1327
|
-
* Subscribe to incoming notifications.
|
|
1328
|
-
* @param callback Function called when a notification is emitted.
|
|
1329
|
-
* @returns A function that can be called to unsubscribe.
|
|
1330
|
-
*/
|
|
1331
|
-
subscribeToNotifications(callback: (notification: Notification) => void): () => void;
|
|
1332
|
-
/**
|
|
1333
|
-
* Display a success notification.
|
|
1334
|
-
* Auto-dismisses after 5 seconds by default.
|
|
1335
|
-
* @param message The message to display.
|
|
1336
|
-
* @param duration Optional custom duration in ms. 0 means no auto-dismiss.
|
|
1337
|
-
*/
|
|
1338
|
-
success(message: string, duration?: number): void;
|
|
1339
|
-
/**
|
|
1340
|
-
* Display an info notification.
|
|
1341
|
-
* Auto-dismisses after 5 seconds by default.
|
|
1342
|
-
* @param message The message to display.
|
|
1343
|
-
* @param duration Optional custom duration in ms. 0 means no auto-dismiss.
|
|
1344
|
-
*/
|
|
1345
|
-
info(message: string, duration?: number): void;
|
|
1346
|
-
/**
|
|
1347
|
-
* Display a warning notification.
|
|
1348
|
-
* Auto-dismisses after 8 seconds by default.
|
|
1349
|
-
* @param message The message to display.
|
|
1350
|
-
* @param duration Optional custom duration in ms. 0 means no auto-dismiss.
|
|
1351
|
-
*/
|
|
1352
|
-
warning(message: string, duration?: number): void;
|
|
1353
|
-
/**
|
|
1354
|
-
* Display an error notification.
|
|
1355
|
-
* Does not auto-dismiss by default — requires manual dismissal.
|
|
1356
|
-
* @param message The message to display.
|
|
1357
|
-
* @param duration Optional custom duration in ms. 0 means no auto-dismiss.
|
|
1358
|
-
*/
|
|
1359
|
-
error(message: string, duration?: number): void;
|
|
1360
|
-
/**
|
|
1361
|
-
* Internal method to emit a notification.
|
|
1362
|
-
* @param message The message to display.
|
|
1363
|
-
* @param severity The severity level.
|
|
1364
|
-
* @param duration Optional custom duration override.
|
|
1365
|
-
*/
|
|
1366
|
-
private notify;
|
|
1367
|
-
static ɵfac: i0.ɵɵFactoryDeclaration<NotificationService, never>;
|
|
1368
|
-
static ɵprov: i0.ɵɵInjectableDeclaration<NotificationService>;
|
|
1369
|
-
}
|
|
1370
|
-
|
|
1371
|
-
export { AnimateCameraComponent, AnimateEventComponent, ArToggleComponent, AttributePipe, AutoRotateComponent, CartesianGridConfigComponent, CollectionsInfoComponent, CollectionsInfoOverlayComponent, ConfigSliderComponent, CycleEventsComponent, DarkThemeComponent, EmbedMenuComponent, EtaPhiPanelComponent, EtaPhiPanelOverlayComponent, EventBrowserComponent, EventBrowserOverlayComponent, EventDataExplorerComponent, EventDataExplorerDialogComponent, EventDataFormat, EventDisplayService, EventSelectorComponent, ExperimentInfoComponent, ExperimentLinkComponent, FileEvent, FileExplorerComponent, FileNode, GeometryBrowserComponent, GeometryBrowserOverlayComponent, IOOptionsDialogComponent, ImportOption, InfoPanelComponent, InfoPanelOverlayComponent, IoOptionsComponent, KinematicsPanelComponent, KinematicsPanelOverlayComponent, LoaderComponent, MainViewToggleComponent, MakePictureComponent, MasterclassPanelComponent, MasterclassPanelOverlayComponent, MenuToggleComponent, MoreInfoComponent, NavComponent, NotificationService, ObjectClippingComponent, ObjectSelectionComponent, ObjectSelectionOverlayComponent, OverlayComponent, OverlayViewComponent, OverlayViewWindowComponent, PerformanceToggleComponent, PhoenixMenuComponent, PhoenixMenuItemComponent, PhoenixUIModule, RingLoaderComponent, SSModeComponent, ShareLinkComponent, ShareLinkDialogComponent, TreeMenuComponent, TreeMenuItemComponent, UiMenuComponent, UiMenuWrapperComponent, ViewOptionsComponent, VrToggleComponent, ZoomControlsComponent, defaultAnimationPresets, defaultUIMenuConfig };
|
|
1538
|
+
export { AnimateCameraComponent, AnimateEventComponent, ArToggleComponent, AttributePipe, AutoRotateComponent, CartesianGridConfigComponent, CollectionsInfoComponent, CollectionsInfoOverlayComponent, ConfigSliderComponent, CycleEventsComponent, DarkThemeComponent, DownloadAnimationDialogComponent, EmbedMenuComponent, EtaPhiPanelComponent, EtaPhiPanelOverlayComponent, EventBrowserComponent, EventBrowserOverlayComponent, EventDataExplorerComponent, EventDataExplorerDialogComponent, EventDataFormat, EventDisplayService, EventSelectorComponent, ExperimentInfoComponent, ExperimentLinkComponent, FileEvent, FileExplorerComponent, FileNode, GeometryBrowserComponent, GeometryBrowserOverlayComponent, IOOptionsDialogComponent, ImportOption, InfoPanelComponent, InfoPanelOverlayComponent, IoOptionsComponent, KinematicsPanelComponent, KinematicsPanelOverlayComponent, LoaderComponent, MainViewToggleComponent, MakePictureComponent, MasterclassPanelComponent, MasterclassPanelOverlayComponent, MenuToggleComponent, MoreInfoComponent, NavComponent, NotificationService, NotificationToastComponent, ObjectClippingComponent, ObjectSelectionComponent, ObjectSelectionOverlayComponent, OverlayCascadeService, OverlayComponent, OverlayViewComponent, OverlayViewWindowComponent, PerformanceToggleComponent, PhoenixMenuComponent, PhoenixMenuItemComponent, PhoenixUIModule, RingLoaderComponent, SSModeComponent, SessionPillComponent, ShareLinkComponent, ShareLinkDialogComponent, ShortcutsDialogComponent, TreeMenuComponent, TreeMenuItemComponent, UiMenuComponent, UiMenuWrapperComponent, ViewOptionsComponent, VrToggleComponent, ZoomControlsComponent, defaultAnimationPresets, defaultUIMenuConfig };
|
|
1372
1539
|
export type { EventDataExplorerDialogData, EventDataImportOption, FileResponse, Notification, NotificationSeverity, TreeMenuNode, UIMenuConfig };
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "phoenix-ui-components",
|
|
3
|
-
"version": "4.
|
|
3
|
+
"version": "4.1.0",
|
|
4
4
|
"description": "Reusable Angular components of the Phoenix event display application.",
|
|
5
5
|
"author": "Phoenix contributors (https://github.com/HSF/phoenix/graphs/contributors)",
|
|
6
6
|
"license": "Apache-2.0",
|
|
@@ -25,15 +25,15 @@
|
|
|
25
25
|
"zone.js": "*"
|
|
26
26
|
},
|
|
27
27
|
"dependencies": {
|
|
28
|
-
"@angular/animations": "^20.3.
|
|
28
|
+
"@angular/animations": "^20.3.28",
|
|
29
29
|
"@angular/cdk": "^20.2.14",
|
|
30
|
-
"@angular/forms": "^20.3.
|
|
30
|
+
"@angular/forms": "^20.3.28",
|
|
31
31
|
"@angular/material": "^20.2.14",
|
|
32
|
-
"@angular/platform-browser": "^20.3.
|
|
32
|
+
"@angular/platform-browser": "^20.3.28",
|
|
33
33
|
"css-element-queries": "^1.2.3",
|
|
34
34
|
"qrcode": "1.5.4",
|
|
35
35
|
"rxjs": "^7.8.2",
|
|
36
|
-
"three": "~0.
|
|
36
|
+
"three": "~0.184.0",
|
|
37
37
|
"tslib": "^2.8.1"
|
|
38
38
|
},
|
|
39
39
|
"devDependencies": {
|
|
@@ -44,9 +44,13 @@
|
|
|
44
44
|
"typings": "dist/index.d.ts",
|
|
45
45
|
"sideEffects": false,
|
|
46
46
|
"exports": {
|
|
47
|
+
".": {
|
|
48
|
+
"types": "./dist/index.d.ts",
|
|
49
|
+
"import": "./dist/fesm2022/phoenix-ui-components.mjs",
|
|
50
|
+
"default": "./dist/fesm2022/phoenix-ui-components.mjs"
|
|
51
|
+
},
|
|
47
52
|
"./theming": {
|
|
48
53
|
"sass": "./_theming.scss"
|
|
49
54
|
}
|
|
50
|
-
}
|
|
51
|
-
|
|
52
|
-
}
|
|
55
|
+
}
|
|
56
|
+
}
|