phoenix-ui-components 4.0.1 → 4.2.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 +37 -0
- package/dist/README.md +37 -0
- package/dist/fesm2022/phoenix-ui-components.mjs +1727 -592
- package/dist/fesm2022/phoenix-ui-components.mjs.map +1 -1
- package/dist/index.d.ts +284 -101
- package/package.json +6 -6
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,47 @@ 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
|
+
/**
|
|
228
|
+
* Animate through the given preset.
|
|
229
|
+
* @returns Whether the animation was started.
|
|
230
|
+
*/
|
|
231
|
+
animatePreset(preset: string, onEnd?: () => void): boolean;
|
|
232
|
+
/**
|
|
233
|
+
* Animate the camera through the event.
|
|
234
|
+
* @returns Whether the animation was started. It is refused while another
|
|
235
|
+
* animation is already running.
|
|
236
|
+
*/
|
|
237
|
+
animateCamera(onEnd?: () => void): boolean;
|
|
112
238
|
private setDetectorOpacity;
|
|
113
239
|
static ɵfac: i0.ɵɵFactoryDeclaration<AnimateCameraComponent, never>;
|
|
114
240
|
static ɵcmp: i0.ɵɵComponentDeclaration<AnimateCameraComponent, "app-animate-camera", never, { "animationPresets": { "alias": "animationPresets"; "required": false; }; }, {}, never, never, false, never>;
|
|
115
241
|
}
|
|
116
242
|
|
|
243
|
+
declare class DownloadAnimationDialogComponent implements OnInit, OnDestroy {
|
|
244
|
+
data: {
|
|
245
|
+
progress$: Observable<number>;
|
|
246
|
+
};
|
|
247
|
+
progress: number;
|
|
248
|
+
private progressSub?;
|
|
249
|
+
constructor(data: {
|
|
250
|
+
progress$: Observable<number>;
|
|
251
|
+
});
|
|
252
|
+
ngOnInit(): void;
|
|
253
|
+
ngOnDestroy(): void;
|
|
254
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<DownloadAnimationDialogComponent, never>;
|
|
255
|
+
static ɵcmp: i0.ɵɵComponentDeclaration<DownloadAnimationDialogComponent, "app-download-animation-dialog", never, {}, {}, never, never, false, never>;
|
|
256
|
+
}
|
|
257
|
+
|
|
117
258
|
declare class AnimateEventComponent {
|
|
118
259
|
private eventDisplay;
|
|
119
260
|
isAnimating: boolean;
|
|
@@ -164,6 +305,7 @@ declare class CollectionsInfoOverlayComponent implements OnInit, OnDestroy {
|
|
|
164
305
|
enableHighlighting(): void;
|
|
165
306
|
disableHighlighting(): void;
|
|
166
307
|
toggleInvisible(checked: boolean): void;
|
|
308
|
+
formatValue(value: any): string;
|
|
167
309
|
addLabel(index: number, uuid: string): void;
|
|
168
310
|
private getEventDataGroup;
|
|
169
311
|
static ɵfac: i0.ɵɵFactoryDeclaration<CollectionsInfoOverlayComponent, never>;
|
|
@@ -276,11 +418,24 @@ declare class InfoPanelOverlayComponent implements OnInit {
|
|
|
276
418
|
static ɵcmp: i0.ɵɵComponentDeclaration<InfoPanelOverlayComponent, "app-info-panel-overlay", never, { "showInfoPanel": { "alias": "showInfoPanel"; "required": false; }; }, {}, never, never, false, never>;
|
|
277
419
|
}
|
|
278
420
|
|
|
421
|
+
declare class OverlayCascadeService {
|
|
422
|
+
private overlay;
|
|
423
|
+
private cascadeCount;
|
|
424
|
+
private topOffset;
|
|
425
|
+
private leftOffset;
|
|
426
|
+
private step;
|
|
427
|
+
constructor(overlay: Overlay);
|
|
428
|
+
getCascadePositionStrategy(): GlobalPositionStrategy;
|
|
429
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<OverlayCascadeService, never>;
|
|
430
|
+
static ɵprov: i0.ɵɵInjectableDeclaration<OverlayCascadeService>;
|
|
431
|
+
}
|
|
432
|
+
|
|
279
433
|
/**
|
|
280
434
|
* Component for toggling info panel overlay
|
|
281
435
|
*/
|
|
282
436
|
declare class InfoPanelComponent implements OnInit, OnDestroy {
|
|
283
437
|
private overlay;
|
|
438
|
+
private overlayCascade;
|
|
284
439
|
/** @ignore */
|
|
285
440
|
showInfoPanel: boolean;
|
|
286
441
|
/** Information panel overlay window */
|
|
@@ -289,7 +444,7 @@ declare class InfoPanelComponent implements OnInit, OnDestroy {
|
|
|
289
444
|
* Create the info panel toggle
|
|
290
445
|
* @param overlay Info panel overlay containing logger data
|
|
291
446
|
*/
|
|
292
|
-
constructor(overlay: Overlay);
|
|
447
|
+
constructor(overlay: Overlay, overlayCascade: OverlayCascadeService);
|
|
293
448
|
/**
|
|
294
449
|
* Create the info panel overlay
|
|
295
450
|
*/
|
|
@@ -311,6 +466,7 @@ declare enum EventDataFormat {
|
|
|
311
466
|
EDM4HEPJSON = "EDM4HEPJSON",
|
|
312
467
|
JIVEXML = "JIVEXML",
|
|
313
468
|
PHYSLITE = "PHYSLITE",
|
|
469
|
+
ATLASESD = "ATLASESD",
|
|
314
470
|
IG = "IG",
|
|
315
471
|
ZIP = "ZIP"
|
|
316
472
|
}
|
|
@@ -335,10 +491,11 @@ declare class IoOptionsComponent {
|
|
|
335
491
|
declare class IOOptionsDialogComponent implements OnInit {
|
|
336
492
|
private eventDisplay;
|
|
337
493
|
dialogRef: MatDialogRef<IOOptionsDialogComponent>;
|
|
494
|
+
private notificationService;
|
|
338
495
|
eventDataImportOptions: EventDataImportOption[];
|
|
339
496
|
eventDataOptionsWithHandler: ImportOption[];
|
|
340
497
|
private supportedEventDataFormats;
|
|
341
|
-
constructor(eventDisplay: EventDisplayService, dialogRef: MatDialogRef<IOOptionsDialogComponent
|
|
498
|
+
constructor(eventDisplay: EventDisplayService, dialogRef: MatDialogRef<IOOptionsDialogComponent>, notificationService: NotificationService);
|
|
342
499
|
ngOnInit(): void;
|
|
343
500
|
getSupportedEventDataFormats(): string;
|
|
344
501
|
onClose(): void;
|
|
@@ -353,6 +510,7 @@ declare class IOOptionsDialogComponent implements OnInit {
|
|
|
353
510
|
handleROOTInput(files: FileList): Promise<void>;
|
|
354
511
|
handleRootJSONInput(files: FileList): Promise<void>;
|
|
355
512
|
handlePHYSLITEInput(files: FileList): Promise<void>;
|
|
513
|
+
handleATLASESDInput(files: FileList): Promise<void>;
|
|
356
514
|
handleIgEventDataInput(files: FileList): void;
|
|
357
515
|
handleZipEventDataInput(files: FileList): Promise<void>;
|
|
358
516
|
handleFileInput(file: File, extensions: string, callback: (result: string, fileName?: string) => void): void;
|
|
@@ -426,12 +584,15 @@ declare class ObjectSelectionComponent implements OnInit, OnDestroy {
|
|
|
426
584
|
/**
|
|
427
585
|
* Component for overlay panel.
|
|
428
586
|
*/
|
|
429
|
-
declare class OverlayComponent implements AfterViewInit, OnDestroy {
|
|
587
|
+
declare class OverlayComponent implements OnInit, AfterViewInit, OnDestroy {
|
|
430
588
|
private eventDisplay;
|
|
589
|
+
private elementRef;
|
|
431
590
|
/** Title of the overlay. */
|
|
432
591
|
overlayTitle: string;
|
|
433
592
|
/** If the overlay is open or not. */
|
|
434
|
-
|
|
593
|
+
private _active;
|
|
594
|
+
set active(value: boolean);
|
|
595
|
+
get active(): boolean;
|
|
435
596
|
/** Icon of the overlay header. */
|
|
436
597
|
icon: string;
|
|
437
598
|
/** If the overlay is resizable. */
|
|
@@ -456,7 +617,11 @@ declare class OverlayComponent implements AfterViewInit, OnDestroy {
|
|
|
456
617
|
private MIN_RES_WIDTH;
|
|
457
618
|
/** Minimum resizable height */
|
|
458
619
|
private MIN_RES_HEIGHT;
|
|
459
|
-
constructor(eventDisplay: EventDisplayService);
|
|
620
|
+
constructor(eventDisplay: EventDisplayService, elementRef: ElementRef);
|
|
621
|
+
ngOnInit(): void;
|
|
622
|
+
toggleBodyAndEmit(): void;
|
|
623
|
+
/** Bring the overlay to the front. */
|
|
624
|
+
bringToFront(): void;
|
|
460
625
|
/**
|
|
461
626
|
* Move the resizable handle to the bottom right after the component is created.
|
|
462
627
|
*/
|
|
@@ -566,7 +731,7 @@ declare class ViewOptionsComponent implements OnInit, OnDestroy {
|
|
|
566
731
|
static ɵcmp: i0.ɵɵComponentDeclaration<ViewOptionsComponent, "app-view-options", never, {}, {}, never, never, false, never>;
|
|
567
732
|
}
|
|
568
733
|
|
|
569
|
-
declare class CartesianGridConfigComponent implements OnInit {
|
|
734
|
+
declare class CartesianGridConfigComponent implements OnInit, OnDestroy {
|
|
570
735
|
data: {
|
|
571
736
|
gridVisible: boolean;
|
|
572
737
|
scale: number;
|
|
@@ -596,6 +761,11 @@ declare class CartesianGridConfigComponent implements OnInit {
|
|
|
596
761
|
onClose(): void;
|
|
597
762
|
onSave(x: any, y: any, z: any): void;
|
|
598
763
|
shiftCartesianGridByPointer(): void;
|
|
764
|
+
/**
|
|
765
|
+
* Unsubscribe from the grid-shifting subscriptions, if any are active.
|
|
766
|
+
*/
|
|
767
|
+
private clearShiftSubscriptions;
|
|
768
|
+
ngOnDestroy(): void;
|
|
599
769
|
shiftCartesianGridByValues(position: Vector3): void;
|
|
600
770
|
translateGrid(position: Vector3): void;
|
|
601
771
|
addXYPlanes(zDistance: Event): void;
|
|
@@ -768,6 +938,8 @@ declare class ShareLinkDialogComponent implements AfterViewInit, OnDestroy {
|
|
|
768
938
|
state: string;
|
|
769
939
|
hideWidgets: boolean;
|
|
770
940
|
embed: boolean;
|
|
941
|
+
replay: string;
|
|
942
|
+
session: string;
|
|
771
943
|
};
|
|
772
944
|
qrcodeCanvas: ElementRef<HTMLCanvasElement>;
|
|
773
945
|
private unsubscribe;
|
|
@@ -1042,9 +1214,10 @@ declare class EtaPhiPanelOverlayComponent implements OnInit, OnDestroy, AfterVie
|
|
|
1042
1214
|
|
|
1043
1215
|
declare class EtaPhiPanelComponent implements OnInit, OnDestroy {
|
|
1044
1216
|
private overlay;
|
|
1217
|
+
private overlayCascade;
|
|
1045
1218
|
showPanel: boolean;
|
|
1046
1219
|
overlayWindow: ComponentRef<EtaPhiPanelOverlayComponent>;
|
|
1047
|
-
constructor(overlay: Overlay);
|
|
1220
|
+
constructor(overlay: Overlay, overlayCascade: OverlayCascadeService);
|
|
1048
1221
|
ngOnInit(): void;
|
|
1049
1222
|
ngOnDestroy(): void;
|
|
1050
1223
|
toggleOverlay(): void;
|
|
@@ -1121,10 +1294,11 @@ declare class KinematicsPanelOverlayComponent implements OnInit, OnDestroy {
|
|
|
1121
1294
|
|
|
1122
1295
|
declare class KinematicsPanelComponent implements OnInit, OnDestroy, OnChanges {
|
|
1123
1296
|
private overlay;
|
|
1297
|
+
private overlayCascade;
|
|
1124
1298
|
showKinematics: boolean;
|
|
1125
1299
|
overlayWindow: ComponentRef<KinematicsPanelOverlayComponent>;
|
|
1126
1300
|
config?: KinematicsConfig;
|
|
1127
|
-
constructor(overlay: Overlay);
|
|
1301
|
+
constructor(overlay: Overlay, overlayCascade: OverlayCascadeService);
|
|
1128
1302
|
ngOnInit(): void;
|
|
1129
1303
|
ngOnChanges(changes: SimpleChanges): void;
|
|
1130
1304
|
ngOnDestroy(): void;
|
|
@@ -1232,6 +1406,82 @@ declare class MasterclassPanelComponent implements OnInit, OnDestroy, OnChanges
|
|
|
1232
1406
|
static ɵcmp: i0.ɵɵComponentDeclaration<MasterclassPanelComponent, "app-masterclass-panel", never, { "config": { "alias": "config"; "required": false; }; }, {}, never, never, false, never>;
|
|
1233
1407
|
}
|
|
1234
1408
|
|
|
1409
|
+
/**
|
|
1410
|
+
* Floating session pill (#883). Renders only while the session manager is
|
|
1411
|
+
* recording, paused, finished, or playing a replay. Idle state hides the
|
|
1412
|
+
* pill entirely so it adds zero footprint to the toolbar.
|
|
1413
|
+
*/
|
|
1414
|
+
declare class SessionPillComponent implements OnInit, OnDestroy {
|
|
1415
|
+
private eventDisplay;
|
|
1416
|
+
private cdr;
|
|
1417
|
+
/** Current session-manager state, kept in component for template binding. */
|
|
1418
|
+
state: SessionState;
|
|
1419
|
+
/** Cached duration label for the recording elapsed clock. */
|
|
1420
|
+
durationLabel: string;
|
|
1421
|
+
/** Cached current/total label for the playback clock. */
|
|
1422
|
+
playbackLabel: string;
|
|
1423
|
+
/** Cached event count for the recording badge. */
|
|
1424
|
+
eventCount: number;
|
|
1425
|
+
/** Last computed scrub percent (0-100). */
|
|
1426
|
+
scrubPercent: number;
|
|
1427
|
+
/** Saved copy-link feedback flag (resets after a tick). */
|
|
1428
|
+
linkCopied: boolean;
|
|
1429
|
+
/** Available playback speeds for the speed selector. */
|
|
1430
|
+
speeds: readonly (1 | 2 | 4 | 0.5)[];
|
|
1431
|
+
private sessionManager;
|
|
1432
|
+
private unsubscribeState;
|
|
1433
|
+
private recordingClockId;
|
|
1434
|
+
private copiedResetTimer;
|
|
1435
|
+
constructor(eventDisplay: EventDisplayService, cdr: ChangeDetectorRef);
|
|
1436
|
+
ngOnInit(): void;
|
|
1437
|
+
ngOnDestroy(): void;
|
|
1438
|
+
/** True when the pill should be visible. Idle state hides it. */
|
|
1439
|
+
get visible(): boolean;
|
|
1440
|
+
/** Stop an active recording from the pill's stop button. */
|
|
1441
|
+
onStopRecording(): void;
|
|
1442
|
+
/** Dismiss a recorded/finished/errored state and return to idle. */
|
|
1443
|
+
onDismiss(): void;
|
|
1444
|
+
/** Start a pending (link-supplied) session after explicit user confirmation. */
|
|
1445
|
+
onPlayPending(): void;
|
|
1446
|
+
/** Source label + duration/event summary for the pending confirm prompt. */
|
|
1447
|
+
get pendingSummary(): string;
|
|
1448
|
+
/** Toggle play/pause on the active player. */
|
|
1449
|
+
onTogglePlayback(): void;
|
|
1450
|
+
/** Scrub to the playhead position the user clicked. */
|
|
1451
|
+
onScrub(value: number): void;
|
|
1452
|
+
/** Change the active player's speed. */
|
|
1453
|
+
onSpeed(speed: 0.5 | 1 | 2 | 4): void;
|
|
1454
|
+
/** Download the recorded session as a .phnxreplay JSON file. */
|
|
1455
|
+
onDownload(): void;
|
|
1456
|
+
/**
|
|
1457
|
+
* Copy a ?replay=... share link to the clipboard. The base64 is precomputed
|
|
1458
|
+
* when recording stops, so the common path writes synchronously inside the
|
|
1459
|
+
* click gesture (the async Clipboard API rejects writes that happen after an
|
|
1460
|
+
* await, which expires the user activation). Falls back to execCommand.
|
|
1461
|
+
*/
|
|
1462
|
+
onCopyLink(): void;
|
|
1463
|
+
/** Build the share URL for a base64 payload and copy it to the clipboard. */
|
|
1464
|
+
private copyShareLink;
|
|
1465
|
+
/**
|
|
1466
|
+
* Legacy clipboard copy via a temporary textarea + execCommand. Used as a
|
|
1467
|
+
* fallback when the async Clipboard API is unavailable or rejected. Mirrors
|
|
1468
|
+
* the share-link dialog's proven approach.
|
|
1469
|
+
* @param text The text to copy.
|
|
1470
|
+
* @returns True if the copy command reported success.
|
|
1471
|
+
*/
|
|
1472
|
+
private legacyCopy;
|
|
1473
|
+
/** Active player duration (ms) for the scrub bar max value. */
|
|
1474
|
+
get playerDuration(): number;
|
|
1475
|
+
/** Active player current speed for the selector highlight. */
|
|
1476
|
+
get currentSpeed(): number;
|
|
1477
|
+
private refreshDerived;
|
|
1478
|
+
private startRecordingClock;
|
|
1479
|
+
private stopRecordingClock;
|
|
1480
|
+
private updateRecordingDerived;
|
|
1481
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<SessionPillComponent, never>;
|
|
1482
|
+
static ɵcmp: i0.ɵɵComponentDeclaration<SessionPillComponent, "app-session-pill", never, {}, {}, never, never, false, never>;
|
|
1483
|
+
}
|
|
1484
|
+
|
|
1235
1485
|
declare class ErrorMessageService {
|
|
1236
1486
|
/** A variable that stores the latest error thrown. */
|
|
1237
1487
|
private error;
|
|
@@ -1297,76 +1547,9 @@ declare class AttributePipe implements PipeTransform {
|
|
|
1297
1547
|
|
|
1298
1548
|
declare class PhoenixUIModule {
|
|
1299
1549
|
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
|
|
1550
|
+
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
1551
|
static ɵinj: i0.ɵɵInjectorDeclaration<PhoenixUIModule>;
|
|
1302
1552
|
}
|
|
1303
1553
|
|
|
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 };
|
|
1554
|
+
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
1555
|
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.0
|
|
3
|
+
"version": "4.2.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": {
|
|
@@ -53,5 +53,5 @@
|
|
|
53
53
|
"sass": "./_theming.scss"
|
|
54
54
|
}
|
|
55
55
|
},
|
|
56
|
-
"gitHead": "
|
|
56
|
+
"gitHead": "64e6e89d7c5fc4a3fe013c3a65b21bdf9469233b"
|
|
57
57
|
}
|