phoenix-ui-components 2.14.1 → 2.16.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 +2 -2
- package/dist/README.md +2 -2
- package/dist/components/file-explorer/file-explorer.component.d.ts +9 -3
- package/dist/components/loader/loader.component.d.ts +1 -1
- package/dist/components/phoenix-menu/config/config-slider/config-slider.component.d.ts +1 -1
- package/dist/components/phoenix-menu/phoenix-menu-item/phoenix-menu-item.component.d.ts +1 -1
- package/dist/components/phoenix-menu/phoenix-menu.component.d.ts +1 -1
- package/dist/components/phoenix-ui.module.d.ts +62 -59
- package/dist/components/ui-menu/animate-camera/animate-camera.component.d.ts +1 -1
- package/dist/components/ui-menu/collections-info/collections-info-overlay/collections-info-overlay.component.d.ts +3 -1
- package/dist/components/ui-menu/cycle-events/cycle-events.component.d.ts +7 -2
- package/dist/components/ui-menu/event-data-explorer/event-data-explorer-dialog/event-data-explorer-dialog.component.d.ts +7 -8
- package/dist/components/ui-menu/event-data-explorer/event-data-explorer.component.d.ts +1 -1
- package/dist/components/ui-menu/experiment-info/experiment-info.component.d.ts +1 -1
- package/dist/components/ui-menu/geometry-browser/geometry-browser-overlay/geometry-browser-overlay.component.d.ts +22 -0
- package/dist/components/ui-menu/geometry-browser/geometry-browser.component.d.ts +15 -0
- package/dist/components/ui-menu/index.d.ts +3 -0
- package/dist/components/ui-menu/info-panel/info-panel-overlay/info-panel-overlay.component.d.ts +1 -1
- package/dist/components/ui-menu/io-options/io-options-dialog/io-options-dialog.component.d.ts +1 -1
- package/dist/components/ui-menu/io-options/io-options.component.d.ts +1 -1
- package/dist/components/ui-menu/make-picture/make-picture.component.d.ts +3 -0
- package/dist/components/ui-menu/menu-toggle/menu-toggle.component.d.ts +1 -1
- package/dist/components/ui-menu/object-selection/object-selection-overlay/object-selection-overlay.component.d.ts +1 -1
- package/dist/components/ui-menu/overlay/overlay.component.d.ts +1 -1
- package/dist/components/ui-menu/overlay-view/overlay-view-window/overlay-view-window.component.d.ts +1 -1
- package/dist/components/ui-menu/tree-menu/tree-menu-item/tree-menu-item.component.d.ts +1 -1
- package/dist/components/ui-menu/ui-menu.component.d.ts +1 -1
- package/dist/components/ui-menu/view-options/cartesian-grid-config/cartesian-grid-config.component.d.ts +51 -0
- package/dist/components/ui-menu/view-options/view-options.component.d.ts +21 -4
- package/dist/esm2022/components/embed-menu/embed-menu.component.mjs +22 -0
- package/dist/esm2022/components/embed-menu/experiment-link/experiment-link.component.mjs +27 -0
- package/dist/esm2022/components/file-explorer/file-explorer.component.mjs +109 -0
- package/dist/esm2022/components/loader/loader.component.mjs +71 -0
- package/dist/esm2022/components/nav/nav.component.mjs +19 -0
- package/dist/esm2022/components/phoenix-menu/config/config-slider/config-slider.component.mjs +81 -0
- package/dist/esm2022/components/phoenix-menu/phoenix-menu-item/phoenix-menu-item.component.mjs +304 -0
- package/dist/esm2022/components/phoenix-menu/phoenix-menu.component.mjs +23 -0
- package/dist/esm2022/components/phoenix-ui.module.mjs +254 -0
- package/dist/esm2022/components/ring-loader/ring-loader.component.mjs +16 -0
- package/dist/esm2022/components/ui-menu/animate-camera/animate-camera.component.mjs +120 -0
- package/dist/esm2022/components/ui-menu/animate-event/animate-event.component.mjs +33 -0
- package/dist/esm2022/components/ui-menu/ar-toggle/ar-toggle.component.mjs +83 -0
- package/dist/esm2022/components/ui-menu/auto-rotate/auto-rotate.component.mjs +29 -0
- package/dist/esm2022/components/ui-menu/collections-info/collections-info-overlay/collections-info-overlay.component.mjs +273 -0
- package/dist/esm2022/components/ui-menu/collections-info/collections-info.component.mjs +44 -0
- package/dist/esm2022/components/ui-menu/cycle-events/cycle-events.component.mjs +90 -0
- package/dist/esm2022/components/ui-menu/dark-theme/dark-theme.component.mjs +32 -0
- package/dist/esm2022/components/ui-menu/event-data-explorer/event-data-explorer-dialog/event-data-explorer-dialog.component.mjs +128 -0
- package/dist/esm2022/components/ui-menu/event-data-explorer/event-data-explorer.component.mjs +35 -0
- package/dist/esm2022/components/ui-menu/event-selector/event-selector.component.mjs +54 -0
- package/dist/esm2022/components/ui-menu/experiment-info/experiment-info.component.mjs +100 -0
- package/dist/esm2022/components/ui-menu/geometry-browser/geometry-browser-overlay/geometry-browser-overlay.component.mjs +172 -0
- package/dist/esm2022/components/ui-menu/geometry-browser/geometry-browser.component.mjs +44 -0
- package/dist/esm2022/components/ui-menu/index.mjs +40 -0
- package/dist/esm2022/components/ui-menu/info-panel/info-panel-overlay/info-panel-overlay.component.mjs +69 -0
- package/dist/esm2022/components/ui-menu/info-panel/info-panel.component.mjs +59 -0
- package/dist/esm2022/components/ui-menu/io-options/io-options-dialog/io-options-dialog.component.mjs +294 -0
- package/dist/esm2022/components/ui-menu/io-options/io-options.component.mjs +36 -0
- package/dist/esm2022/components/ui-menu/main-view-toggle/main-view-toggle.component.mjs +32 -0
- package/dist/esm2022/components/ui-menu/make-picture/make-picture.component.mjs +109 -0
- package/dist/esm2022/components/ui-menu/menu-toggle/menu-toggle.component.mjs +40 -0
- package/dist/esm2022/components/ui-menu/object-clipping/object-clipping.component.mjs +72 -0
- package/dist/esm2022/components/ui-menu/object-selection/object-selection-overlay/object-selection-overlay.component.mjs +59 -0
- package/dist/esm2022/components/ui-menu/object-selection/object-selection.component.mjs +46 -0
- package/dist/esm2022/components/ui-menu/overlay/overlay.component.mjs +197 -0
- package/dist/esm2022/components/ui-menu/overlay-view/overlay-view-window/overlay-view-window.component.mjs +83 -0
- package/dist/esm2022/components/ui-menu/overlay-view/overlay-view.component.mjs +41 -0
- package/dist/esm2022/components/ui-menu/performance-toggle/performance-toggle.component.mjs +29 -0
- package/dist/esm2022/components/ui-menu/share-link/share-link-dialog/share-link-dialog.component.mjs +165 -0
- package/dist/esm2022/components/ui-menu/share-link/share-link.component.mjs +28 -0
- package/dist/esm2022/components/ui-menu/ss-mode/ss-mode.component.mjs +46 -0
- package/dist/esm2022/components/ui-menu/tree-menu/tree-menu-item/tree-menu-item.component.mjs +94 -0
- package/dist/esm2022/components/ui-menu/tree-menu/tree-menu.component.mjs +78 -0
- package/dist/esm2022/components/ui-menu/ui-menu-wrapper/ui-menu-wrapper.component.mjs +34 -0
- package/dist/esm2022/components/ui-menu/ui-menu.component.mjs +54 -0
- package/dist/esm2022/components/ui-menu/view-options/cartesian-grid-config/cartesian-grid-config.component.mjs +247 -0
- package/dist/esm2022/components/ui-menu/view-options/view-options.component.mjs +170 -0
- package/dist/esm2022/components/ui-menu/vr-toggle/vr-toggle.component.mjs +52 -0
- package/dist/esm2022/components/ui-menu/zoom-controls/zoom-controls.component.mjs +79 -0
- package/dist/esm2022/services/error-message-service.mjs +30 -0
- package/dist/{esm2020 → esm2022}/services/event-display.service.mjs +5 -5
- package/dist/esm2022/services/extras/attribute.pipe.mjs +33 -0
- package/dist/{esm2020 → esm2022}/services/extras/event-data-import.mjs +5 -1
- package/dist/esm2022/services/file-loader.service.mjs +86 -0
- package/dist/esm2022/services/global-error-handler.mjs +30 -0
- package/dist/fesm2022/phoenix-ui-components.mjs +4302 -0
- package/dist/fesm2022/phoenix-ui-components.mjs.map +1 -0
- package/dist/services/file-loader.service.d.ts +17 -0
- package/package.json +27 -16
- package/dist/esm2020/components/embed-menu/embed-menu.component.mjs +0 -21
- package/dist/esm2020/components/embed-menu/experiment-link/experiment-link.component.mjs +0 -25
- package/dist/esm2020/components/file-explorer/file-explorer.component.mjs +0 -97
- package/dist/esm2020/components/loader/loader.component.mjs +0 -68
- package/dist/esm2020/components/nav/nav.component.mjs +0 -18
- package/dist/esm2020/components/phoenix-menu/config/config-slider/config-slider.component.mjs +0 -82
- package/dist/esm2020/components/phoenix-menu/phoenix-menu-item/phoenix-menu-item.component.mjs +0 -309
- package/dist/esm2020/components/phoenix-menu/phoenix-menu.component.mjs +0 -21
- package/dist/esm2020/components/phoenix-ui.module.mjs +0 -254
- package/dist/esm2020/components/ring-loader/ring-loader.component.mjs +0 -15
- package/dist/esm2020/components/ui-menu/animate-camera/animate-camera.component.mjs +0 -117
- package/dist/esm2020/components/ui-menu/animate-event/animate-event.component.mjs +0 -31
- package/dist/esm2020/components/ui-menu/ar-toggle/ar-toggle.component.mjs +0 -81
- package/dist/esm2020/components/ui-menu/auto-rotate/auto-rotate.component.mjs +0 -27
- package/dist/esm2020/components/ui-menu/collections-info/collections-info-overlay/collections-info-overlay.component.mjs +0 -261
- package/dist/esm2020/components/ui-menu/collections-info/collections-info.component.mjs +0 -38
- package/dist/esm2020/components/ui-menu/cycle-events/cycle-events.component.mjs +0 -42
- package/dist/esm2020/components/ui-menu/dark-theme/dark-theme.component.mjs +0 -30
- package/dist/esm2020/components/ui-menu/event-data-explorer/event-data-explorer-dialog/event-data-explorer-dialog.component.mjs +0 -176
- package/dist/esm2020/components/ui-menu/event-data-explorer/event-data-explorer.component.mjs +0 -32
- package/dist/esm2020/components/ui-menu/event-selector/event-selector.component.mjs +0 -50
- package/dist/esm2020/components/ui-menu/experiment-info/experiment-info.component.mjs +0 -96
- package/dist/esm2020/components/ui-menu/index.mjs +0 -37
- package/dist/esm2020/components/ui-menu/info-panel/info-panel-overlay/info-panel-overlay.component.mjs +0 -66
- package/dist/esm2020/components/ui-menu/info-panel/info-panel.component.mjs +0 -55
- package/dist/esm2020/components/ui-menu/io-options/io-options-dialog/io-options-dialog.component.mjs +0 -290
- package/dist/esm2020/components/ui-menu/io-options/io-options.component.mjs +0 -34
- package/dist/esm2020/components/ui-menu/main-view-toggle/main-view-toggle.component.mjs +0 -30
- package/dist/esm2020/components/ui-menu/make-picture/make-picture.component.mjs +0 -88
- package/dist/esm2020/components/ui-menu/menu-toggle/menu-toggle.component.mjs +0 -38
- package/dist/esm2020/components/ui-menu/object-clipping/object-clipping.component.mjs +0 -67
- package/dist/esm2020/components/ui-menu/object-selection/object-selection-overlay/object-selection-overlay.component.mjs +0 -55
- package/dist/esm2020/components/ui-menu/object-selection/object-selection.component.mjs +0 -42
- package/dist/esm2020/components/ui-menu/overlay/overlay.component.mjs +0 -189
- package/dist/esm2020/components/ui-menu/overlay-view/overlay-view-window/overlay-view-window.component.mjs +0 -79
- package/dist/esm2020/components/ui-menu/overlay-view/overlay-view.component.mjs +0 -38
- package/dist/esm2020/components/ui-menu/performance-toggle/performance-toggle.component.mjs +0 -27
- package/dist/esm2020/components/ui-menu/share-link/share-link-dialog/share-link-dialog.component.mjs +0 -158
- package/dist/esm2020/components/ui-menu/share-link/share-link.component.mjs +0 -26
- package/dist/esm2020/components/ui-menu/ss-mode/ss-mode.component.mjs +0 -47
- package/dist/esm2020/components/ui-menu/tree-menu/tree-menu-item/tree-menu-item.component.mjs +0 -90
- package/dist/esm2020/components/ui-menu/tree-menu/tree-menu.component.mjs +0 -78
- package/dist/esm2020/components/ui-menu/ui-menu-wrapper/ui-menu-wrapper.component.mjs +0 -35
- package/dist/esm2020/components/ui-menu/ui-menu.component.mjs +0 -54
- package/dist/esm2020/components/ui-menu/view-options/view-options.component.mjs +0 -81
- package/dist/esm2020/components/ui-menu/vr-toggle/vr-toggle.component.mjs +0 -50
- package/dist/esm2020/components/ui-menu/zoom-controls/zoom-controls.component.mjs +0 -73
- package/dist/esm2020/services/error-message-service.mjs +0 -32
- package/dist/esm2020/services/extras/attribute.pipe.mjs +0 -33
- package/dist/esm2020/services/global-error-handler.mjs +0 -29
- package/dist/fesm2015/phoenix-ui-components.mjs +0 -3994
- package/dist/fesm2015/phoenix-ui-components.mjs.map +0 -1
- package/dist/fesm2020/phoenix-ui-components.mjs +0 -3552
- package/dist/fesm2020/phoenix-ui-components.mjs.map +0 -1
- /package/dist/{esm2020 → esm2022}/components/phoenix-menu/index.mjs +0 -0
- /package/dist/{esm2020 → esm2022}/phoenix-ui-components.mjs +0 -0
- /package/dist/{esm2020 → esm2022}/public_api.mjs +0 -0
- /package/dist/{esm2020 → esm2022}/services/index.mjs +0 -0
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
import { GeometryBrowserOverlayComponent } from './geometry-browser-overlay/geometry-browser-overlay.component';
|
|
2
|
+
import { Component } from '@angular/core';
|
|
3
|
+
import { ComponentPortal } from '@angular/cdk/portal';
|
|
4
|
+
import * as i0 from "@angular/core";
|
|
5
|
+
import * as i1 from "@angular/cdk/overlay";
|
|
6
|
+
import * as i2 from "../menu-toggle/menu-toggle.component";
|
|
7
|
+
export class GeometryBrowserComponent {
|
|
8
|
+
overlay;
|
|
9
|
+
browseDetectorParts = false;
|
|
10
|
+
overlayWindow;
|
|
11
|
+
constructor(overlay) {
|
|
12
|
+
this.overlay = overlay;
|
|
13
|
+
}
|
|
14
|
+
ngOnInit() {
|
|
15
|
+
const overlayRef = this.overlay.create();
|
|
16
|
+
const overlayPortal = new ComponentPortal(GeometryBrowserOverlayComponent);
|
|
17
|
+
this.overlayWindow = overlayRef.attach(overlayPortal);
|
|
18
|
+
this.overlayWindow.instance.browseDetectorParts = this.browseDetectorParts;
|
|
19
|
+
}
|
|
20
|
+
ngOnDestroy() {
|
|
21
|
+
this.overlayWindow.destroy();
|
|
22
|
+
}
|
|
23
|
+
toggleOverlay() {
|
|
24
|
+
this.browseDetectorParts = !this.browseDetectorParts;
|
|
25
|
+
this.overlayWindow.instance.browseDetectorParts = this.browseDetectorParts;
|
|
26
|
+
this.browseDetectorParts
|
|
27
|
+
? this.overlayWindow.instance.enableHighlighting()
|
|
28
|
+
: this.overlayWindow.instance.disableHighlighting();
|
|
29
|
+
}
|
|
30
|
+
static ɵfac = function GeometryBrowserComponent_Factory(t) { return new (t || GeometryBrowserComponent)(i0.ɵɵdirectiveInject(i1.Overlay)); };
|
|
31
|
+
static ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: GeometryBrowserComponent, selectors: [["app-geometry-browser"]], decls: 1, vars: 1, consts: [["tooltip", "Browse geometry", "icon", "info", 3, "click", "active"]], template: function GeometryBrowserComponent_Template(rf, ctx) { if (rf & 1) {
|
|
32
|
+
i0.ɵɵelementStart(0, "app-menu-toggle", 0);
|
|
33
|
+
i0.ɵɵlistener("click", function GeometryBrowserComponent_Template_app_menu_toggle_click_0_listener() { return ctx.toggleOverlay(); });
|
|
34
|
+
i0.ɵɵelementEnd();
|
|
35
|
+
} if (rf & 2) {
|
|
36
|
+
i0.ɵɵproperty("active", ctx.browseDetectorParts);
|
|
37
|
+
} }, dependencies: [i2.MenuToggleComponent] });
|
|
38
|
+
}
|
|
39
|
+
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(GeometryBrowserComponent, [{
|
|
40
|
+
type: Component,
|
|
41
|
+
args: [{ selector: 'app-geometry-browser', template: "<app-menu-toggle\n tooltip=\"Browse geometry\"\n icon=\"info\"\n [active]=\"browseDetectorParts\"\n (click)=\"toggleOverlay()\"\n>\n</app-menu-toggle>\n" }]
|
|
42
|
+
}], () => [{ type: i1.Overlay }], null); })();
|
|
43
|
+
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(GeometryBrowserComponent, { className: "GeometryBrowserComponent", filePath: "components/ui-menu/geometry-browser/geometry-browser.component.ts", lineNumber: 11 }); })();
|
|
44
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2VvbWV0cnktYnJvd3Nlci5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9saWIvY29tcG9uZW50cy91aS1tZW51L2dlb21ldHJ5LWJyb3dzZXIvZ2VvbWV0cnktYnJvd3Nlci5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi9saWIvY29tcG9uZW50cy91aS1tZW51L2dlb21ldHJ5LWJyb3dzZXIvZ2VvbWV0cnktYnJvd3Nlci5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsK0JBQStCLEVBQUUsTUFBTSwrREFBK0QsQ0FBQztBQUNoSCxPQUFPLEVBQUUsU0FBUyxFQUFtQyxNQUFNLGVBQWUsQ0FBQztBQUUzRSxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0scUJBQXFCLENBQUM7Ozs7QUFPdEQsTUFBTSxPQUFPLHdCQUF3QjtJQUlmO0lBSHBCLG1CQUFtQixHQUFZLEtBQUssQ0FBQztJQUNyQyxhQUFhLENBQWdEO0lBRTdELFlBQW9CLE9BQWdCO1FBQWhCLFlBQU8sR0FBUCxPQUFPLENBQVM7SUFBRyxDQUFDO0lBRXhDLFFBQVE7UUFDTixNQUFNLFVBQVUsR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLE1BQU0sRUFBRSxDQUFDO1FBQ3pDLE1BQU0sYUFBYSxHQUFHLElBQUksZUFBZSxDQUFDLCtCQUErQixDQUFDLENBQUM7UUFDM0UsSUFBSSxDQUFDLGFBQWEsR0FBRyxVQUFVLENBQUMsTUFBTSxDQUFDLGFBQWEsQ0FBQyxDQUFDO1FBQ3RELElBQUksQ0FBQyxhQUFhLENBQUMsUUFBUSxDQUFDLG1CQUFtQixHQUFHLElBQUksQ0FBQyxtQkFBbUIsQ0FBQztJQUM3RSxDQUFDO0lBRUQsV0FBVztRQUNULElBQUksQ0FBQyxhQUFhLENBQUMsT0FBTyxFQUFFLENBQUM7SUFDL0IsQ0FBQztJQUVELGFBQWE7UUFDWCxJQUFJLENBQUMsbUJBQW1CLEdBQUcsQ0FBQyxJQUFJLENBQUMsbUJBQW1CLENBQUM7UUFDckQsSUFBSSxDQUFDLGFBQWEsQ0FBQyxRQUFRLENBQUMsbUJBQW1CLEdBQUcsSUFBSSxDQUFDLG1CQUFtQixDQUFDO1FBQzNFLElBQUksQ0FBQyxtQkFBbUI7WUFDdEIsQ0FBQyxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsUUFBUSxDQUFDLGtCQUFrQixFQUFFO1lBQ2xELENBQUMsQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDLFFBQVEsQ0FBQyxtQkFBbUIsRUFBRSxDQUFDO0lBQ3hELENBQUM7a0ZBdkJVLHdCQUF3Qjs2REFBeEIsd0JBQXdCO1lDVnJDLDBDQUtDO1lBREMsOEdBQVMsbUJBQWUsSUFBQztZQUUzQixpQkFBa0I7O1lBSGhCLGdEQUE4Qjs7O2lGRE9uQix3QkFBd0I7Y0FMcEMsU0FBUzsyQkFDRSxzQkFBc0I7O2tGQUlyQix3QkFBd0IiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBHZW9tZXRyeUJyb3dzZXJPdmVybGF5Q29tcG9uZW50IH0gZnJvbSAnLi9nZW9tZXRyeS1icm93c2VyLW92ZXJsYXkvZ2VvbWV0cnktYnJvd3Nlci1vdmVybGF5LmNvbXBvbmVudCc7XG5pbXBvcnQgeyBDb21wb25lbnQsIE9uSW5pdCwgQ29tcG9uZW50UmVmLCBPbkRlc3Ryb3kgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IE92ZXJsYXkgfSBmcm9tICdAYW5ndWxhci9jZGsvb3ZlcmxheSc7XG5pbXBvcnQgeyBDb21wb25lbnRQb3J0YWwgfSBmcm9tICdAYW5ndWxhci9jZGsvcG9ydGFsJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnYXBwLWdlb21ldHJ5LWJyb3dzZXInLFxuICB0ZW1wbGF0ZVVybDogJy4vZ2VvbWV0cnktYnJvd3Nlci5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL2dlb21ldHJ5LWJyb3dzZXIuY29tcG9uZW50LnNjc3MnXSxcbn0pXG5leHBvcnQgY2xhc3MgR2VvbWV0cnlCcm93c2VyQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBPbkRlc3Ryb3kge1xuICBicm93c2VEZXRlY3RvclBhcnRzOiBib29sZWFuID0gZmFsc2U7XG4gIG92ZXJsYXlXaW5kb3c6IENvbXBvbmVudFJlZjxHZW9tZXRyeUJyb3dzZXJPdmVybGF5Q29tcG9uZW50PjtcblxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIG92ZXJsYXk6IE92ZXJsYXkpIHt9XG5cbiAgbmdPbkluaXQoKSB7XG4gICAgY29uc3Qgb3ZlcmxheVJlZiA9IHRoaXMub3ZlcmxheS5jcmVhdGUoKTtcbiAgICBjb25zdCBvdmVybGF5UG9ydGFsID0gbmV3IENvbXBvbmVudFBvcnRhbChHZW9tZXRyeUJyb3dzZXJPdmVybGF5Q29tcG9uZW50KTtcbiAgICB0aGlzLm92ZXJsYXlXaW5kb3cgPSBvdmVybGF5UmVmLmF0dGFjaChvdmVybGF5UG9ydGFsKTtcbiAgICB0aGlzLm92ZXJsYXlXaW5kb3cuaW5zdGFuY2UuYnJvd3NlRGV0ZWN0b3JQYXJ0cyA9IHRoaXMuYnJvd3NlRGV0ZWN0b3JQYXJ0cztcbiAgfVxuXG4gIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgIHRoaXMub3ZlcmxheVdpbmRvdy5kZXN0cm95KCk7XG4gIH1cblxuICB0b2dnbGVPdmVybGF5KCkge1xuICAgIHRoaXMuYnJvd3NlRGV0ZWN0b3JQYXJ0cyA9ICF0aGlzLmJyb3dzZURldGVjdG9yUGFydHM7XG4gICAgdGhpcy5vdmVybGF5V2luZG93Lmluc3RhbmNlLmJyb3dzZURldGVjdG9yUGFydHMgPSB0aGlzLmJyb3dzZURldGVjdG9yUGFydHM7XG4gICAgdGhpcy5icm93c2VEZXRlY3RvclBhcnRzXG4gICAgICA/IHRoaXMub3ZlcmxheVdpbmRvdy5pbnN0YW5jZS5lbmFibGVIaWdobGlnaHRpbmcoKVxuICAgICAgOiB0aGlzLm92ZXJsYXlXaW5kb3cuaW5zdGFuY2UuZGlzYWJsZUhpZ2hsaWdodGluZygpO1xuICB9XG59XG4iLCI8YXBwLW1lbnUtdG9nZ2xlXG4gIHRvb2x0aXA9XCJCcm93c2UgZ2VvbWV0cnlcIlxuICBpY29uPVwiaW5mb1wiXG4gIFthY3RpdmVdPVwiYnJvd3NlRGV0ZWN0b3JQYXJ0c1wiXG4gIChjbGljayk9XCJ0b2dnbGVPdmVybGF5KClcIlxuPlxuPC9hcHAtbWVudS10b2dnbGU+XG4iXX0=
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
export * from './animate-camera/animate-camera.component';
|
|
2
|
+
export * from './animate-event/animate-event.component';
|
|
3
|
+
export * from './auto-rotate/auto-rotate.component';
|
|
4
|
+
export * from './collections-info/collections-info.component';
|
|
5
|
+
export * from './collections-info/collections-info-overlay/collections-info-overlay.component';
|
|
6
|
+
export * from './geometry-browser/geometry-browser.component';
|
|
7
|
+
export * from './geometry-browser/geometry-browser-overlay/geometry-browser-overlay.component';
|
|
8
|
+
export * from './dark-theme/dark-theme.component';
|
|
9
|
+
export * from './event-selector/event-selector.component';
|
|
10
|
+
export * from './experiment-info/experiment-info.component';
|
|
11
|
+
export * from './info-panel/info-panel.component';
|
|
12
|
+
export * from './info-panel/info-panel-overlay/info-panel-overlay.component';
|
|
13
|
+
export * from './io-options/io-options.component';
|
|
14
|
+
export * from './io-options/io-options-dialog/io-options-dialog.component';
|
|
15
|
+
export * from './main-view-toggle/main-view-toggle.component';
|
|
16
|
+
export * from './menu-toggle/menu-toggle.component';
|
|
17
|
+
export * from './object-clipping/object-clipping.component';
|
|
18
|
+
export * from './object-selection/object-selection.component';
|
|
19
|
+
export * from './object-selection/object-selection-overlay/object-selection-overlay.component';
|
|
20
|
+
export * from './overlay/overlay.component';
|
|
21
|
+
export * from './overlay-view/overlay-view.component';
|
|
22
|
+
export * from './overlay-view/overlay-view-window/overlay-view-window.component';
|
|
23
|
+
export * from './tree-menu/tree-menu.component';
|
|
24
|
+
export * from './tree-menu/tree-menu-item/tree-menu-item.component';
|
|
25
|
+
export * from './view-options/view-options.component';
|
|
26
|
+
export * from './view-options/cartesian-grid-config/cartesian-grid-config.component';
|
|
27
|
+
export * from './vr-toggle/vr-toggle.component';
|
|
28
|
+
export * from './ar-toggle/ar-toggle.component';
|
|
29
|
+
export * from './zoom-controls/zoom-controls.component';
|
|
30
|
+
export * from './ss-mode/ss-mode.component';
|
|
31
|
+
export * from './make-picture/make-picture.component';
|
|
32
|
+
export * from './performance-toggle/performance-toggle.component';
|
|
33
|
+
export * from './ui-menu.component';
|
|
34
|
+
export * from './share-link/share-link.component';
|
|
35
|
+
export * from './share-link/share-link-dialog/share-link-dialog.component';
|
|
36
|
+
export * from './event-data-explorer/event-data-explorer.component';
|
|
37
|
+
export * from './event-data-explorer/event-data-explorer-dialog/event-data-explorer-dialog.component';
|
|
38
|
+
export * from './cycle-events/cycle-events.component';
|
|
39
|
+
export * from './ui-menu-wrapper/ui-menu-wrapper.component';
|
|
40
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9saWIvY29tcG9uZW50cy91aS1tZW51L2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLGNBQWMsMkNBQTJDLENBQUM7QUFDMUQsY0FBYyx5Q0FBeUMsQ0FBQztBQUN4RCxjQUFjLHFDQUFxQyxDQUFDO0FBQ3BELGNBQWMsK0NBQStDLENBQUM7QUFDOUQsY0FBYyxnRkFBZ0YsQ0FBQztBQUMvRixjQUFjLCtDQUErQyxDQUFDO0FBQzlELGNBQWMsZ0ZBQWdGLENBQUM7QUFDL0YsY0FBYyxtQ0FBbUMsQ0FBQztBQUNsRCxjQUFjLDJDQUEyQyxDQUFDO0FBQzFELGNBQWMsNkNBQTZDLENBQUM7QUFDNUQsY0FBYyxtQ0FBbUMsQ0FBQztBQUNsRCxjQUFjLDhEQUE4RCxDQUFDO0FBQzdFLGNBQWMsbUNBQW1DLENBQUM7QUFDbEQsY0FBYyw0REFBNEQsQ0FBQztBQUMzRSxjQUFjLCtDQUErQyxDQUFDO0FBQzlELGNBQWMscUNBQXFDLENBQUM7QUFDcEQsY0FBYyw2Q0FBNkMsQ0FBQztBQUM1RCxjQUFjLCtDQUErQyxDQUFDO0FBQzlELGNBQWMsZ0ZBQWdGLENBQUM7QUFDL0YsY0FBYyw2QkFBNkIsQ0FBQztBQUM1QyxjQUFjLHVDQUF1QyxDQUFDO0FBQ3RELGNBQWMsa0VBQWtFLENBQUM7QUFDakYsY0FBYyxpQ0FBaUMsQ0FBQztBQUNoRCxjQUFjLHFEQUFxRCxDQUFDO0FBQ3BFLGNBQWMsdUNBQXVDLENBQUM7QUFDdEQsY0FBYyxzRUFBc0UsQ0FBQztBQUNyRixjQUFjLGlDQUFpQyxDQUFDO0FBQ2hELGNBQWMsaUNBQWlDLENBQUM7QUFDaEQsY0FBYyx5Q0FBeUMsQ0FBQztBQUN4RCxjQUFjLDZCQUE2QixDQUFDO0FBQzVDLGNBQWMsdUNBQXVDLENBQUM7QUFDdEQsY0FBYyxtREFBbUQsQ0FBQztBQUNsRSxjQUFjLHFCQUFxQixDQUFDO0FBQ3BDLGNBQWMsbUNBQW1DLENBQUM7QUFDbEQsY0FBYyw0REFBNEQsQ0FBQztBQUMzRSxjQUFjLHFEQUFxRCxDQUFDO0FBQ3BFLGNBQWMsdUZBQXVGLENBQUM7QUFDdEcsY0FBYyx1Q0FBdUMsQ0FBQztBQUN0RCxjQUFjLDZDQUE2QyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0ICogZnJvbSAnLi9hbmltYXRlLWNhbWVyYS9hbmltYXRlLWNhbWVyYS5jb21wb25lbnQnO1xuZXhwb3J0ICogZnJvbSAnLi9hbmltYXRlLWV2ZW50L2FuaW1hdGUtZXZlbnQuY29tcG9uZW50JztcbmV4cG9ydCAqIGZyb20gJy4vYXV0by1yb3RhdGUvYXV0by1yb3RhdGUuY29tcG9uZW50JztcbmV4cG9ydCAqIGZyb20gJy4vY29sbGVjdGlvbnMtaW5mby9jb2xsZWN0aW9ucy1pbmZvLmNvbXBvbmVudCc7XG5leHBvcnQgKiBmcm9tICcuL2NvbGxlY3Rpb25zLWluZm8vY29sbGVjdGlvbnMtaW5mby1vdmVybGF5L2NvbGxlY3Rpb25zLWluZm8tb3ZlcmxheS5jb21wb25lbnQnO1xuZXhwb3J0ICogZnJvbSAnLi9nZW9tZXRyeS1icm93c2VyL2dlb21ldHJ5LWJyb3dzZXIuY29tcG9uZW50JztcbmV4cG9ydCAqIGZyb20gJy4vZ2VvbWV0cnktYnJvd3Nlci9nZW9tZXRyeS1icm93c2VyLW92ZXJsYXkvZ2VvbWV0cnktYnJvd3Nlci1vdmVybGF5LmNvbXBvbmVudCc7XG5leHBvcnQgKiBmcm9tICcuL2RhcmstdGhlbWUvZGFyay10aGVtZS5jb21wb25lbnQnO1xuZXhwb3J0ICogZnJvbSAnLi9ldmVudC1zZWxlY3Rvci9ldmVudC1zZWxlY3Rvci5jb21wb25lbnQnO1xuZXhwb3J0ICogZnJvbSAnLi9leHBlcmltZW50LWluZm8vZXhwZXJpbWVudC1pbmZvLmNvbXBvbmVudCc7XG5leHBvcnQgKiBmcm9tICcuL2luZm8tcGFuZWwvaW5mby1wYW5lbC5jb21wb25lbnQnO1xuZXhwb3J0ICogZnJvbSAnLi9pbmZvLXBhbmVsL2luZm8tcGFuZWwtb3ZlcmxheS9pbmZvLXBhbmVsLW92ZXJsYXkuY29tcG9uZW50JztcbmV4cG9ydCAqIGZyb20gJy4vaW8tb3B0aW9ucy9pby1vcHRpb25zLmNvbXBvbmVudCc7XG5leHBvcnQgKiBmcm9tICcuL2lvLW9wdGlvbnMvaW8tb3B0aW9ucy1kaWFsb2cvaW8tb3B0aW9ucy1kaWFsb2cuY29tcG9uZW50JztcbmV4cG9ydCAqIGZyb20gJy4vbWFpbi12aWV3LXRvZ2dsZS9tYWluLXZpZXctdG9nZ2xlLmNvbXBvbmVudCc7XG5leHBvcnQgKiBmcm9tICcuL21lbnUtdG9nZ2xlL21lbnUtdG9nZ2xlLmNvbXBvbmVudCc7XG5leHBvcnQgKiBmcm9tICcuL29iamVjdC1jbGlwcGluZy9vYmplY3QtY2xpcHBpbmcuY29tcG9uZW50JztcbmV4cG9ydCAqIGZyb20gJy4vb2JqZWN0LXNlbGVjdGlvbi9vYmplY3Qtc2VsZWN0aW9uLmNvbXBvbmVudCc7XG5leHBvcnQgKiBmcm9tICcuL29iamVjdC1zZWxlY3Rpb24vb2JqZWN0LXNlbGVjdGlvbi1vdmVybGF5L29iamVjdC1zZWxlY3Rpb24tb3ZlcmxheS5jb21wb25lbnQnO1xuZXhwb3J0ICogZnJvbSAnLi9vdmVybGF5L292ZXJsYXkuY29tcG9uZW50JztcbmV4cG9ydCAqIGZyb20gJy4vb3ZlcmxheS12aWV3L292ZXJsYXktdmlldy5jb21wb25lbnQnO1xuZXhwb3J0ICogZnJvbSAnLi9vdmVybGF5LXZpZXcvb3ZlcmxheS12aWV3LXdpbmRvdy9vdmVybGF5LXZpZXctd2luZG93LmNvbXBvbmVudCc7XG5leHBvcnQgKiBmcm9tICcuL3RyZWUtbWVudS90cmVlLW1lbnUuY29tcG9uZW50JztcbmV4cG9ydCAqIGZyb20gJy4vdHJlZS1tZW51L3RyZWUtbWVudS1pdGVtL3RyZWUtbWVudS1pdGVtLmNvbXBvbmVudCc7XG5leHBvcnQgKiBmcm9tICcuL3ZpZXctb3B0aW9ucy92aWV3LW9wdGlvbnMuY29tcG9uZW50JztcbmV4cG9ydCAqIGZyb20gJy4vdmlldy1vcHRpb25zL2NhcnRlc2lhbi1ncmlkLWNvbmZpZy9jYXJ0ZXNpYW4tZ3JpZC1jb25maWcuY29tcG9uZW50JztcbmV4cG9ydCAqIGZyb20gJy4vdnItdG9nZ2xlL3ZyLXRvZ2dsZS5jb21wb25lbnQnO1xuZXhwb3J0ICogZnJvbSAnLi9hci10b2dnbGUvYXItdG9nZ2xlLmNvbXBvbmVudCc7XG5leHBvcnQgKiBmcm9tICcuL3pvb20tY29udHJvbHMvem9vbS1jb250cm9scy5jb21wb25lbnQnO1xuZXhwb3J0ICogZnJvbSAnLi9zcy1tb2RlL3NzLW1vZGUuY29tcG9uZW50JztcbmV4cG9ydCAqIGZyb20gJy4vbWFrZS1waWN0dXJlL21ha2UtcGljdHVyZS5jb21wb25lbnQnO1xuZXhwb3J0ICogZnJvbSAnLi9wZXJmb3JtYW5jZS10b2dnbGUvcGVyZm9ybWFuY2UtdG9nZ2xlLmNvbXBvbmVudCc7XG5leHBvcnQgKiBmcm9tICcuL3VpLW1lbnUuY29tcG9uZW50JztcbmV4cG9ydCAqIGZyb20gJy4vc2hhcmUtbGluay9zaGFyZS1saW5rLmNvbXBvbmVudCc7XG5leHBvcnQgKiBmcm9tICcuL3NoYXJlLWxpbmsvc2hhcmUtbGluay1kaWFsb2cvc2hhcmUtbGluay1kaWFsb2cuY29tcG9uZW50JztcbmV4cG9ydCAqIGZyb20gJy4vZXZlbnQtZGF0YS1leHBsb3Jlci9ldmVudC1kYXRhLWV4cGxvcmVyLmNvbXBvbmVudCc7XG5leHBvcnQgKiBmcm9tICcuL2V2ZW50LWRhdGEtZXhwbG9yZXIvZXZlbnQtZGF0YS1leHBsb3Jlci1kaWFsb2cvZXZlbnQtZGF0YS1leHBsb3Jlci1kaWFsb2cuY29tcG9uZW50JztcbmV4cG9ydCAqIGZyb20gJy4vY3ljbGUtZXZlbnRzL2N5Y2xlLWV2ZW50cy5jb21wb25lbnQnO1xuZXhwb3J0ICogZnJvbSAnLi91aS1tZW51LXdyYXBwZXIvdWktbWVudS13cmFwcGVyLmNvbXBvbmVudCc7XG4iXX0=
|
|
@@ -0,0 +1,69 @@
|
|
|
1
|
+
import { Component, Input } from '@angular/core';
|
|
2
|
+
import packageJson from 'phoenix-event-display/package.json';
|
|
3
|
+
import * as i0 from "@angular/core";
|
|
4
|
+
import * as i1 from "../../../../services/event-display.service";
|
|
5
|
+
import * as i2 from "@angular/common";
|
|
6
|
+
import * as i3 from "../../overlay/overlay.component";
|
|
7
|
+
function InfoPanelOverlayComponent_li_4_Template(rf, ctx) { if (rf & 1) {
|
|
8
|
+
i0.ɵɵelementStart(0, "li", 2);
|
|
9
|
+
i0.ɵɵtext(1, " No actions. ");
|
|
10
|
+
i0.ɵɵelementEnd();
|
|
11
|
+
} }
|
|
12
|
+
function InfoPanelOverlayComponent_li_5_Template(rf, ctx) { if (rf & 1) {
|
|
13
|
+
i0.ɵɵelementStart(0, "li", 2);
|
|
14
|
+
i0.ɵɵtext(1);
|
|
15
|
+
i0.ɵɵelementEnd();
|
|
16
|
+
} if (rf & 2) {
|
|
17
|
+
const action_r1 = ctx.$implicit;
|
|
18
|
+
i0.ɵɵadvance();
|
|
19
|
+
i0.ɵɵtextInterpolate1(" ", action_r1, " ");
|
|
20
|
+
} }
|
|
21
|
+
/**
|
|
22
|
+
* Component for displaying information from the logger
|
|
23
|
+
*/
|
|
24
|
+
export class InfoPanelOverlayComponent {
|
|
25
|
+
eventDisplay;
|
|
26
|
+
/** @ignore */
|
|
27
|
+
showInfoPanel;
|
|
28
|
+
/** List of actions to be displayed in the info panel */
|
|
29
|
+
actionsList = [];
|
|
30
|
+
/** Get Phoenix Version */
|
|
31
|
+
version = packageJson.version;
|
|
32
|
+
/**
|
|
33
|
+
* Create the information panel overlay
|
|
34
|
+
* @param infoLogger Service containing operations related to info logs
|
|
35
|
+
*/
|
|
36
|
+
constructor(eventDisplay) {
|
|
37
|
+
this.eventDisplay = eventDisplay;
|
|
38
|
+
}
|
|
39
|
+
/**
|
|
40
|
+
* Get the list of logs from the info logger service
|
|
41
|
+
*/
|
|
42
|
+
ngOnInit() {
|
|
43
|
+
this.actionsList = this.eventDisplay.getInfoLogger().getInfoLoggerList();
|
|
44
|
+
}
|
|
45
|
+
static ɵfac = function InfoPanelOverlayComponent_Factory(t) { return new (t || InfoPanelOverlayComponent)(i0.ɵɵdirectiveInject(i1.EventDisplayService)); };
|
|
46
|
+
static ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: InfoPanelOverlayComponent, selectors: [["app-info-panel-overlay"]], inputs: { showInfoPanel: "showInfoPanel" }, decls: 6, vars: 5, consts: [["overlayTitle", "Info Panel", "icon", "info-panel", 3, "resizable", "active"], [1, "list-group", "list-group-flush"], [1, "list-group-item"], ["class", "list-group-item", 4, "ngIf"], ["class", "list-group-item", 4, "ngFor", "ngForOf"]], template: function InfoPanelOverlayComponent_Template(rf, ctx) { if (rf & 1) {
|
|
47
|
+
i0.ɵɵelementStart(0, "app-overlay", 0)(1, "ul", 1)(2, "li", 2);
|
|
48
|
+
i0.ɵɵtext(3);
|
|
49
|
+
i0.ɵɵelementEnd();
|
|
50
|
+
i0.ɵɵtemplate(4, InfoPanelOverlayComponent_li_4_Template, 2, 0, "li", 3)(5, InfoPanelOverlayComponent_li_5_Template, 2, 1, "li", 4);
|
|
51
|
+
i0.ɵɵelementEnd()();
|
|
52
|
+
} if (rf & 2) {
|
|
53
|
+
i0.ɵɵproperty("resizable", true)("active", ctx.showInfoPanel);
|
|
54
|
+
i0.ɵɵadvance(3);
|
|
55
|
+
i0.ɵɵtextInterpolate1(" Phoenix Version: ", ctx.version, " ");
|
|
56
|
+
i0.ɵɵadvance();
|
|
57
|
+
i0.ɵɵproperty("ngIf", ctx.actionsList.length === 0);
|
|
58
|
+
i0.ɵɵadvance();
|
|
59
|
+
i0.ɵɵproperty("ngForOf", ctx.actionsList);
|
|
60
|
+
} }, dependencies: [i2.NgForOf, i2.NgIf, i3.OverlayComponent], styles: [".list-group-item[_ngcontent-%COMP%]{font-size:.8rem;padding:.5rem 1rem}"] });
|
|
61
|
+
}
|
|
62
|
+
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(InfoPanelOverlayComponent, [{
|
|
63
|
+
type: Component,
|
|
64
|
+
args: [{ selector: 'app-info-panel-overlay', template: "<app-overlay\n overlayTitle=\"Info Panel\"\n icon=\"info-panel\"\n [resizable]=\"true\"\n [active]=\"showInfoPanel\"\n>\n <ul class=\"list-group list-group-flush\">\n <li class=\"list-group-item\">\n <!-- Show Phoenix Current Version (ON by Default) -->\n Phoenix Version: {{ version }}\n </li>\n <li class=\"list-group-item\" *ngIf=\"actionsList.length === 0\">\n No actions.\n </li>\n <li class=\"list-group-item\" *ngFor=\"let action of actionsList\">\n {{ action }}\n </li>\n </ul>\n</app-overlay>\n", styles: [".list-group-item{font-size:.8rem;padding:.5rem 1rem}\n"] }]
|
|
65
|
+
}], () => [{ type: i1.EventDisplayService }], { showInfoPanel: [{
|
|
66
|
+
type: Input
|
|
67
|
+
}] }); })();
|
|
68
|
+
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(InfoPanelOverlayComponent, { className: "InfoPanelOverlayComponent", filePath: "components/ui-menu/info-panel/info-panel-overlay/info-panel-overlay.component.ts", lineNumber: 13 }); })();
|
|
69
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5mby1wYW5lbC1vdmVybGF5LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL2xpYi9jb21wb25lbnRzL3VpLW1lbnUvaW5mby1wYW5lbC9pbmZvLXBhbmVsLW92ZXJsYXkvaW5mby1wYW5lbC1vdmVybGF5LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL2xpYi9jb21wb25lbnRzL3VpLW1lbnUvaW5mby1wYW5lbC9pbmZvLXBhbmVsLW92ZXJsYXkvaW5mby1wYW5lbC1vdmVybGF5LmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQVUsS0FBSyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRXpELE9BQU8sV0FBVyxNQUFNLG9DQUFvQyxDQUFDOzs7Ozs7SUNTekQsNkJBQTZEO0lBQzNELDZCQUNGO0lBQUEsaUJBQUs7OztJQUNMLDZCQUErRDtJQUM3RCxZQUNGO0lBQUEsaUJBQUs7OztJQURILGNBQ0Y7SUFERSwwQ0FDRjs7QURaSjs7R0FFRztBQU1ILE1BQU0sT0FBTyx5QkFBeUI7SUFZaEI7SUFYcEIsY0FBYztJQUNMLGFBQWEsQ0FBVTtJQUNoQyx3REFBd0Q7SUFDeEQsV0FBVyxHQUFHLEVBQUUsQ0FBQztJQUNqQiwwQkFBMEI7SUFDMUIsT0FBTyxHQUFHLFdBQVcsQ0FBQyxPQUFPLENBQUM7SUFFOUI7OztPQUdHO0lBQ0gsWUFBb0IsWUFBaUM7UUFBakMsaUJBQVksR0FBWixZQUFZLENBQXFCO0lBQUcsQ0FBQztJQUV6RDs7T0FFRztJQUNILFFBQVE7UUFDTixJQUFJLENBQUMsV0FBVyxHQUFHLElBQUksQ0FBQyxZQUFZLENBQUMsYUFBYSxFQUFFLENBQUMsaUJBQWlCLEVBQUUsQ0FBQztJQUMzRSxDQUFDO21GQW5CVSx5QkFBeUI7NkRBQXpCLHlCQUF5QjtZQ0xsQyxBQURGLEFBTkYsc0NBS0MsWUFDeUMsWUFDVjtZQUUxQixZQUNGO1lBQUEsaUJBQUs7WUFJTCxBQUhBLHdFQUE2RCwyREFHRTtZQUluRSxBQURFLGlCQUFLLEVBQ087O1lBZFosQUFEQSxnQ0FBa0IsNkJBQ007WUFLcEIsZUFDRjtZQURFLDZEQUNGO1lBQzZCLGNBQThCO1lBQTlCLG1EQUE4QjtZQUdaLGNBQWM7WUFBZCx5Q0FBYzs7O2lGREZwRCx5QkFBeUI7Y0FMckMsU0FBUzsyQkFDRSx3QkFBd0I7b0RBTXpCLGFBQWE7a0JBQXJCLEtBQUs7O2tGQUZLLHlCQUF5QiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgT25Jbml0LCBJbnB1dCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgRXZlbnREaXNwbGF5U2VydmljZSB9IGZyb20gJy4uLy4uLy4uLy4uL3NlcnZpY2VzL2V2ZW50LWRpc3BsYXkuc2VydmljZSc7XG5pbXBvcnQgcGFja2FnZUpzb24gZnJvbSAncGhvZW5peC1ldmVudC1kaXNwbGF5L3BhY2thZ2UuanNvbic7XG5cbi8qKlxuICogQ29tcG9uZW50IGZvciBkaXNwbGF5aW5nIGluZm9ybWF0aW9uIGZyb20gdGhlIGxvZ2dlclxuICovXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdhcHAtaW5mby1wYW5lbC1vdmVybGF5JyxcbiAgdGVtcGxhdGVVcmw6ICcuL2luZm8tcGFuZWwtb3ZlcmxheS5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL2luZm8tcGFuZWwtb3ZlcmxheS5jb21wb25lbnQuc2NzcyddLFxufSlcbmV4cG9ydCBjbGFzcyBJbmZvUGFuZWxPdmVybGF5Q29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcbiAgLyoqIEBpZ25vcmUgKi9cbiAgQElucHV0KCkgc2hvd0luZm9QYW5lbDogYm9vbGVhbjtcbiAgLyoqIExpc3Qgb2YgYWN0aW9ucyB0byBiZSBkaXNwbGF5ZWQgaW4gdGhlIGluZm8gcGFuZWwgKi9cbiAgYWN0aW9uc0xpc3QgPSBbXTtcbiAgLyoqIEdldCBQaG9lbml4IFZlcnNpb24gKi9cbiAgdmVyc2lvbiA9IHBhY2thZ2VKc29uLnZlcnNpb247XG5cbiAgLyoqXG4gICAqIENyZWF0ZSB0aGUgaW5mb3JtYXRpb24gcGFuZWwgb3ZlcmxheVxuICAgKiBAcGFyYW0gaW5mb0xvZ2dlciBTZXJ2aWNlIGNvbnRhaW5pbmcgb3BlcmF0aW9ucyByZWxhdGVkIHRvIGluZm8gbG9nc1xuICAgKi9cbiAgY29uc3RydWN0b3IocHJpdmF0ZSBldmVudERpc3BsYXk6IEV2ZW50RGlzcGxheVNlcnZpY2UpIHt9XG5cbiAgLyoqXG4gICAqIEdldCB0aGUgbGlzdCBvZiBsb2dzIGZyb20gdGhlIGluZm8gbG9nZ2VyIHNlcnZpY2VcbiAgICovXG4gIG5nT25Jbml0KCkge1xuICAgIHRoaXMuYWN0aW9uc0xpc3QgPSB0aGlzLmV2ZW50RGlzcGxheS5nZXRJbmZvTG9nZ2VyKCkuZ2V0SW5mb0xvZ2dlckxpc3QoKTtcbiAgfVxufVxuIiwiPGFwcC1vdmVybGF5XG4gIG92ZXJsYXlUaXRsZT1cIkluZm8gUGFuZWxcIlxuICBpY29uPVwiaW5mby1wYW5lbFwiXG4gIFtyZXNpemFibGVdPVwidHJ1ZVwiXG4gIFthY3RpdmVdPVwic2hvd0luZm9QYW5lbFwiXG4+XG4gIDx1bCBjbGFzcz1cImxpc3QtZ3JvdXAgbGlzdC1ncm91cC1mbHVzaFwiPlxuICAgIDxsaSBjbGFzcz1cImxpc3QtZ3JvdXAtaXRlbVwiPlxuICAgICAgPCEtLSBTaG93IFBob2VuaXggQ3VycmVudCBWZXJzaW9uIChPTiBieSBEZWZhdWx0KSAtLT5cbiAgICAgIFBob2VuaXggVmVyc2lvbjoge3sgdmVyc2lvbiB9fVxuICAgIDwvbGk+XG4gICAgPGxpIGNsYXNzPVwibGlzdC1ncm91cC1pdGVtXCIgKm5nSWY9XCJhY3Rpb25zTGlzdC5sZW5ndGggPT09IDBcIj5cbiAgICAgIE5vIGFjdGlvbnMuXG4gICAgPC9saT5cbiAgICA8bGkgY2xhc3M9XCJsaXN0LWdyb3VwLWl0ZW1cIiAqbmdGb3I9XCJsZXQgYWN0aW9uIG9mIGFjdGlvbnNMaXN0XCI+XG4gICAgICB7eyBhY3Rpb24gfX1cbiAgICA8L2xpPlxuICA8L3VsPlxuPC9hcHAtb3ZlcmxheT5cbiJdfQ==
|
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
import { Component } from '@angular/core';
|
|
2
|
+
import { ComponentPortal } from '@angular/cdk/portal';
|
|
3
|
+
import { InfoPanelOverlayComponent } from './info-panel-overlay/info-panel-overlay.component';
|
|
4
|
+
import * as i0 from "@angular/core";
|
|
5
|
+
import * as i1 from "@angular/cdk/overlay";
|
|
6
|
+
import * as i2 from "../menu-toggle/menu-toggle.component";
|
|
7
|
+
/**
|
|
8
|
+
* Component for toggling info panel overlay
|
|
9
|
+
*/
|
|
10
|
+
export class InfoPanelComponent {
|
|
11
|
+
overlay;
|
|
12
|
+
/** @ignore */
|
|
13
|
+
showInfoPanel = false;
|
|
14
|
+
/** Information panel overlay window */
|
|
15
|
+
overlayWindow;
|
|
16
|
+
/**
|
|
17
|
+
* Create the info panel toggle
|
|
18
|
+
* @param overlay Info panel overlay containing logger data
|
|
19
|
+
*/
|
|
20
|
+
constructor(overlay) {
|
|
21
|
+
this.overlay = overlay;
|
|
22
|
+
}
|
|
23
|
+
/**
|
|
24
|
+
* Create the info panel overlay
|
|
25
|
+
*/
|
|
26
|
+
ngOnInit() {
|
|
27
|
+
const overlayRef = this.overlay.create();
|
|
28
|
+
const overlayPortal = new ComponentPortal(InfoPanelOverlayComponent);
|
|
29
|
+
this.overlayWindow = overlayRef.attach(overlayPortal);
|
|
30
|
+
this.overlayWindow.instance.showInfoPanel = this.showInfoPanel;
|
|
31
|
+
}
|
|
32
|
+
/**
|
|
33
|
+
* Destroy the info panel overlay
|
|
34
|
+
*/
|
|
35
|
+
ngOnDestroy() {
|
|
36
|
+
this.overlayWindow.destroy();
|
|
37
|
+
}
|
|
38
|
+
/**
|
|
39
|
+
* Toggle the info panel overlay
|
|
40
|
+
*/
|
|
41
|
+
toggleOverlay() {
|
|
42
|
+
this.showInfoPanel = !this.showInfoPanel;
|
|
43
|
+
this.overlayWindow.instance.showInfoPanel = this.showInfoPanel;
|
|
44
|
+
}
|
|
45
|
+
static ɵfac = function InfoPanelComponent_Factory(t) { return new (t || InfoPanelComponent)(i0.ɵɵdirectiveInject(i1.Overlay)); };
|
|
46
|
+
static ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: InfoPanelComponent, selectors: [["app-info-panel"]], decls: 1, vars: 1, consts: [["tooltip", "Info panel", "icon", "info-panel", 3, "click", "active"]], template: function InfoPanelComponent_Template(rf, ctx) { if (rf & 1) {
|
|
47
|
+
i0.ɵɵelementStart(0, "app-menu-toggle", 0);
|
|
48
|
+
i0.ɵɵlistener("click", function InfoPanelComponent_Template_app_menu_toggle_click_0_listener() { return ctx.toggleOverlay(); });
|
|
49
|
+
i0.ɵɵelementEnd();
|
|
50
|
+
} if (rf & 2) {
|
|
51
|
+
i0.ɵɵproperty("active", ctx.showInfoPanel);
|
|
52
|
+
} }, dependencies: [i2.MenuToggleComponent] });
|
|
53
|
+
}
|
|
54
|
+
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(InfoPanelComponent, [{
|
|
55
|
+
type: Component,
|
|
56
|
+
args: [{ selector: 'app-info-panel', template: "<app-menu-toggle\n tooltip=\"Info panel\"\n icon=\"info-panel\"\n [active]=\"showInfoPanel\"\n (click)=\"toggleOverlay()\"\n>\n</app-menu-toggle>\n" }]
|
|
57
|
+
}], () => [{ type: i1.Overlay }], null); })();
|
|
58
|
+
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(InfoPanelComponent, { className: "InfoPanelComponent", filePath: "components/ui-menu/info-panel/info-panel.component.ts", lineNumber: 14 }); })();
|
|
59
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5mby1wYW5lbC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9saWIvY29tcG9uZW50cy91aS1tZW51L2luZm8tcGFuZWwvaW5mby1wYW5lbC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi9saWIvY29tcG9uZW50cy91aS1tZW51L2luZm8tcGFuZWwvaW5mby1wYW5lbC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFtQyxNQUFNLGVBQWUsQ0FBQztBQUUzRSxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDdEQsT0FBTyxFQUFFLHlCQUF5QixFQUFFLE1BQU0sbURBQW1ELENBQUM7Ozs7QUFFOUY7O0dBRUc7QUFNSCxNQUFNLE9BQU8sa0JBQWtCO0lBVVQ7SUFUcEIsY0FBYztJQUNkLGFBQWEsR0FBRyxLQUFLLENBQUM7SUFDdEIsdUNBQXVDO0lBQ3ZDLGFBQWEsQ0FBMEM7SUFFdkQ7OztPQUdHO0lBQ0gsWUFBb0IsT0FBZ0I7UUFBaEIsWUFBTyxHQUFQLE9BQU8sQ0FBUztJQUFHLENBQUM7SUFFeEM7O09BRUc7SUFDSCxRQUFRO1FBQ04sTUFBTSxVQUFVLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxNQUFNLEVBQUUsQ0FBQztRQUN6QyxNQUFNLGFBQWEsR0FBRyxJQUFJLGVBQWUsQ0FBQyx5QkFBeUIsQ0FBQyxDQUFDO1FBQ3JFLElBQUksQ0FBQyxhQUFhLEdBQUcsVUFBVSxDQUFDLE1BQU0sQ0FBQyxhQUFhLENBQUMsQ0FBQztRQUN0RCxJQUFJLENBQUMsYUFBYSxDQUFDLFFBQVEsQ0FBQyxhQUFhLEdBQUcsSUFBSSxDQUFDLGFBQWEsQ0FBQztJQUNqRSxDQUFDO0lBRUQ7O09BRUc7SUFDSCxXQUFXO1FBQ1QsSUFBSSxDQUFDLGFBQWEsQ0FBQyxPQUFPLEVBQUUsQ0FBQztJQUMvQixDQUFDO0lBRUQ7O09BRUc7SUFDSCxhQUFhO1FBQ1gsSUFBSSxDQUFDLGFBQWEsR0FBRyxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUM7UUFDekMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxRQUFRLENBQUMsYUFBYSxHQUFHLElBQUksQ0FBQyxhQUFhLENBQUM7SUFDakUsQ0FBQzs0RUFuQ1Usa0JBQWtCOzZEQUFsQixrQkFBa0I7WUNiL0IsMENBS0M7WUFEQyx3R0FBUyxtQkFBZSxJQUFDO1lBRTNCLGlCQUFrQjs7WUFIaEIsMENBQXdCOzs7aUZEVWIsa0JBQWtCO2NBTDlCLFNBQVM7MkJBQ0UsZ0JBQWdCOztrRkFJZixrQkFBa0IiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIE9uSW5pdCwgQ29tcG9uZW50UmVmLCBPbkRlc3Ryb3kgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IE92ZXJsYXkgfSBmcm9tICdAYW5ndWxhci9jZGsvb3ZlcmxheSc7XG5pbXBvcnQgeyBDb21wb25lbnRQb3J0YWwgfSBmcm9tICdAYW5ndWxhci9jZGsvcG9ydGFsJztcbmltcG9ydCB7IEluZm9QYW5lbE92ZXJsYXlDb21wb25lbnQgfSBmcm9tICcuL2luZm8tcGFuZWwtb3ZlcmxheS9pbmZvLXBhbmVsLW92ZXJsYXkuY29tcG9uZW50JztcblxuLyoqXG4gKiBDb21wb25lbnQgZm9yIHRvZ2dsaW5nIGluZm8gcGFuZWwgb3ZlcmxheVxuICovXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdhcHAtaW5mby1wYW5lbCcsXG4gIHRlbXBsYXRlVXJsOiAnLi9pbmZvLXBhbmVsLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vaW5mby1wYW5lbC5jb21wb25lbnQuc2NzcyddLFxufSlcbmV4cG9ydCBjbGFzcyBJbmZvUGFuZWxDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIE9uRGVzdHJveSB7XG4gIC8qKiBAaWdub3JlICovXG4gIHNob3dJbmZvUGFuZWwgPSBmYWxzZTtcbiAgLyoqIEluZm9ybWF0aW9uIHBhbmVsIG92ZXJsYXkgd2luZG93ICovXG4gIG92ZXJsYXlXaW5kb3c6IENvbXBvbmVudFJlZjxJbmZvUGFuZWxPdmVybGF5Q29tcG9uZW50PjtcblxuICAvKipcbiAgICogQ3JlYXRlIHRoZSBpbmZvIHBhbmVsIHRvZ2dsZVxuICAgKiBAcGFyYW0gb3ZlcmxheSBJbmZvIHBhbmVsIG92ZXJsYXkgY29udGFpbmluZyBsb2dnZXIgZGF0YVxuICAgKi9cbiAgY29uc3RydWN0b3IocHJpdmF0ZSBvdmVybGF5OiBPdmVybGF5KSB7fVxuXG4gIC8qKlxuICAgKiBDcmVhdGUgdGhlIGluZm8gcGFuZWwgb3ZlcmxheVxuICAgKi9cbiAgbmdPbkluaXQoKSB7XG4gICAgY29uc3Qgb3ZlcmxheVJlZiA9IHRoaXMub3ZlcmxheS5jcmVhdGUoKTtcbiAgICBjb25zdCBvdmVybGF5UG9ydGFsID0gbmV3IENvbXBvbmVudFBvcnRhbChJbmZvUGFuZWxPdmVybGF5Q29tcG9uZW50KTtcbiAgICB0aGlzLm92ZXJsYXlXaW5kb3cgPSBvdmVybGF5UmVmLmF0dGFjaChvdmVybGF5UG9ydGFsKTtcbiAgICB0aGlzLm92ZXJsYXlXaW5kb3cuaW5zdGFuY2Uuc2hvd0luZm9QYW5lbCA9IHRoaXMuc2hvd0luZm9QYW5lbDtcbiAgfVxuXG4gIC8qKlxuICAgKiBEZXN0cm95IHRoZSBpbmZvIHBhbmVsIG92ZXJsYXlcbiAgICovXG4gIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgIHRoaXMub3ZlcmxheVdpbmRvdy5kZXN0cm95KCk7XG4gIH1cblxuICAvKipcbiAgICogVG9nZ2xlIHRoZSBpbmZvIHBhbmVsIG92ZXJsYXlcbiAgICovXG4gIHRvZ2dsZU92ZXJsYXkoKSB7XG4gICAgdGhpcy5zaG93SW5mb1BhbmVsID0gIXRoaXMuc2hvd0luZm9QYW5lbDtcbiAgICB0aGlzLm92ZXJsYXlXaW5kb3cuaW5zdGFuY2Uuc2hvd0luZm9QYW5lbCA9IHRoaXMuc2hvd0luZm9QYW5lbDtcbiAgfVxufVxuIiwiPGFwcC1tZW51LXRvZ2dsZVxuICB0b29sdGlwPVwiSW5mbyBwYW5lbFwiXG4gIGljb249XCJpbmZvLXBhbmVsXCJcbiAgW2FjdGl2ZV09XCJzaG93SW5mb1BhbmVsXCJcbiAgKGNsaWNrKT1cInRvZ2dsZU92ZXJsYXkoKVwiXG4+XG48L2FwcC1tZW51LXRvZ2dsZT5cbiJdfQ==
|
package/dist/esm2022/components/ui-menu/io-options/io-options-dialog/io-options-dialog.component.mjs
ADDED
|
@@ -0,0 +1,294 @@
|
|
|
1
|
+
import { Component, Input } from '@angular/core';
|
|
2
|
+
import { CMSLoader, JiveXMLLoader, readZipFile, Edm4hepJsonLoader, } from 'phoenix-event-display';
|
|
3
|
+
import { EventDataFormat, ImportOption, } from '../../../../services/extras/event-data-import';
|
|
4
|
+
import * as i0 from "@angular/core";
|
|
5
|
+
import * as i1 from "../../../../services/event-display.service";
|
|
6
|
+
import * as i2 from "@angular/material/dialog";
|
|
7
|
+
import * as i3 from "@angular/common";
|
|
8
|
+
import * as i4 from "@angular/material/button";
|
|
9
|
+
function IOOptionsDialogComponent_div_4_ng_container_5_Template(rf, ctx) { if (rf & 1) {
|
|
10
|
+
const _r2 = i0.ɵɵgetCurrentView();
|
|
11
|
+
i0.ɵɵelementContainerStart(0);
|
|
12
|
+
i0.ɵɵelementStart(1, "input", 29, 5);
|
|
13
|
+
i0.ɵɵlistener("change", function IOOptionsDialogComponent_div_4_ng_container_5_Template_input_change_1_listener($event) { const eventDataImportOption_r3 = i0.ɵɵrestoreView(_r2).$implicit; return i0.ɵɵresetView(eventDataImportOption_r3.handler($event.target.files)); });
|
|
14
|
+
i0.ɵɵelementEnd();
|
|
15
|
+
i0.ɵɵelementStart(3, "button", 13);
|
|
16
|
+
i0.ɵɵlistener("click", function IOOptionsDialogComponent_div_4_ng_container_5_Template_button_click_3_listener() { i0.ɵɵrestoreView(_r2); const eventDataFileInput_r4 = i0.ɵɵreference(2); return i0.ɵɵresetView(eventDataFileInput_r4.click()); });
|
|
17
|
+
i0.ɵɵelement(4, "img", 30);
|
|
18
|
+
i0.ɵɵtext(5);
|
|
19
|
+
i0.ɵɵelementEnd();
|
|
20
|
+
i0.ɵɵelementContainerEnd();
|
|
21
|
+
} if (rf & 2) {
|
|
22
|
+
const eventDataImportOption_r3 = ctx.$implicit;
|
|
23
|
+
i0.ɵɵadvance();
|
|
24
|
+
i0.ɵɵproperty("accept", eventDataImportOption_r3.accept);
|
|
25
|
+
i0.ɵɵadvance(4);
|
|
26
|
+
i0.ɵɵtextInterpolate1(" Load ", eventDataImportOption_r3.fileType, " ");
|
|
27
|
+
} }
|
|
28
|
+
function IOOptionsDialogComponent_div_4_Template(rf, ctx) { if (rf & 1) {
|
|
29
|
+
i0.ɵɵelementStart(0, "div")(1, "p", 10)(2, "b");
|
|
30
|
+
i0.ɵɵtext(3, "Event data");
|
|
31
|
+
i0.ɵɵelementEnd()();
|
|
32
|
+
i0.ɵɵelementStart(4, "div", 11);
|
|
33
|
+
i0.ɵɵtemplate(5, IOOptionsDialogComponent_div_4_ng_container_5_Template, 6, 2, "ng-container", 28);
|
|
34
|
+
i0.ɵɵelementEnd()();
|
|
35
|
+
} if (rf & 2) {
|
|
36
|
+
const ctx_r4 = i0.ɵɵnextContext();
|
|
37
|
+
i0.ɵɵadvance(5);
|
|
38
|
+
i0.ɵɵproperty("ngForOf", ctx_r4.eventDataOptionsWithHandler);
|
|
39
|
+
} }
|
|
40
|
+
export class IOOptionsDialogComponent {
|
|
41
|
+
eventDisplay;
|
|
42
|
+
dialogRef;
|
|
43
|
+
eventDataImportOptions = [EventDataFormat.JSON];
|
|
44
|
+
eventDataOptionsWithHandler;
|
|
45
|
+
supportedEventDataFormats = [
|
|
46
|
+
new ImportOption(EventDataFormat.JSON, '.json', this.handleJSONEventDataInput.bind(this), 'application/json'),
|
|
47
|
+
new ImportOption(EventDataFormat.EDM4HEPJSON, '.edm4hep.json', this.handleEDM4HEPJSONEventDataInput.bind(this), 'application/json'),
|
|
48
|
+
new ImportOption(EventDataFormat.JIVEXML, '.xml', this.handleJiveXMLDataInput.bind(this), 'text/xml'),
|
|
49
|
+
new ImportOption(EventDataFormat.ZIP, '.zip', this.handleZipEventDataInput.bind(this), '.zip'),
|
|
50
|
+
new ImportOption(EventDataFormat.IG, '.ig', this.handleIgEventDataInput.bind(this), '.ig'),
|
|
51
|
+
];
|
|
52
|
+
constructor(eventDisplay, dialogRef) {
|
|
53
|
+
this.eventDisplay = eventDisplay;
|
|
54
|
+
this.dialogRef = dialogRef;
|
|
55
|
+
}
|
|
56
|
+
ngOnInit() {
|
|
57
|
+
this.eventDataOptionsWithHandler = this.supportedEventDataFormats.filter((eventDataFormat) => this.eventDataImportOptions.includes(eventDataFormat.format));
|
|
58
|
+
this.eventDataImportOptions.forEach((eventDataImportOption) => {
|
|
59
|
+
if (eventDataImportOption instanceof ImportOption) {
|
|
60
|
+
const importHandler = eventDataImportOption.handler.bind(this);
|
|
61
|
+
eventDataImportOption.handler = (files) => {
|
|
62
|
+
importHandler(files);
|
|
63
|
+
this.onClose();
|
|
64
|
+
};
|
|
65
|
+
this.eventDataOptionsWithHandler.push(eventDataImportOption);
|
|
66
|
+
}
|
|
67
|
+
});
|
|
68
|
+
}
|
|
69
|
+
getSupportedEventDataFormats() {
|
|
70
|
+
return this.eventDataImportOptions
|
|
71
|
+
.map((format) => {
|
|
72
|
+
if (format instanceof ImportOption) {
|
|
73
|
+
return format.format;
|
|
74
|
+
}
|
|
75
|
+
return format;
|
|
76
|
+
})
|
|
77
|
+
.filter((format) => format !== 'ZIP')
|
|
78
|
+
.join(', ');
|
|
79
|
+
}
|
|
80
|
+
onClose() {
|
|
81
|
+
this.dialogRef.close();
|
|
82
|
+
}
|
|
83
|
+
handleJSONEventDataInput(files) {
|
|
84
|
+
const callback = (content) => {
|
|
85
|
+
const json = typeof content === 'string' ? JSON.parse(content) : content;
|
|
86
|
+
this.eventDisplay.parsePhoenixEvents(json);
|
|
87
|
+
};
|
|
88
|
+
this.handleFileInput(files[0], 'json', callback);
|
|
89
|
+
}
|
|
90
|
+
handleEDM4HEPJSONEventDataInput(files) {
|
|
91
|
+
const callback = (content) => {
|
|
92
|
+
const json = typeof content === 'string' ? JSON.parse(content) : content;
|
|
93
|
+
const edm4hepJsonLoader = new Edm4hepJsonLoader();
|
|
94
|
+
edm4hepJsonLoader.setRawEventData(json);
|
|
95
|
+
edm4hepJsonLoader.processEventData();
|
|
96
|
+
this.eventDisplay.parsePhoenixEvents(edm4hepJsonLoader.getEventData());
|
|
97
|
+
};
|
|
98
|
+
this.handleFileInput(files[0], 'json', callback);
|
|
99
|
+
}
|
|
100
|
+
handleJiveXMLDataInput(files) {
|
|
101
|
+
const callback = (content) => {
|
|
102
|
+
const jiveloader = new JiveXMLLoader();
|
|
103
|
+
jiveloader.process(content);
|
|
104
|
+
const eventData = jiveloader.getEventData();
|
|
105
|
+
this.eventDisplay.buildEventDataFromJSON(eventData);
|
|
106
|
+
};
|
|
107
|
+
this.handleFileInput(files[0], 'xml', callback);
|
|
108
|
+
}
|
|
109
|
+
handleOBJInput(files) {
|
|
110
|
+
const callback = (content, name) => {
|
|
111
|
+
this.eventDisplay.parseOBJGeometry(content, name);
|
|
112
|
+
};
|
|
113
|
+
this.handleFileInput(files[0], 'obj', callback);
|
|
114
|
+
}
|
|
115
|
+
handleSceneInput(files) {
|
|
116
|
+
const callback = (content) => {
|
|
117
|
+
this.eventDisplay.parsePhoenixDisplay(content);
|
|
118
|
+
};
|
|
119
|
+
this.handleFileInput(files[0], 'phnx', callback);
|
|
120
|
+
}
|
|
121
|
+
handleGLTFInput(files) {
|
|
122
|
+
const callback = (content, name) => {
|
|
123
|
+
this.eventDisplay.parseGLTFGeometry(content, name);
|
|
124
|
+
};
|
|
125
|
+
this.handleFileInput(files[0], 'gltf', callback);
|
|
126
|
+
}
|
|
127
|
+
handlePhoenixInput(files) {
|
|
128
|
+
const callback = (content) => {
|
|
129
|
+
this.eventDisplay.parsePhoenixDisplay(content);
|
|
130
|
+
};
|
|
131
|
+
this.handleFileInput(files[0], 'phnx', callback);
|
|
132
|
+
}
|
|
133
|
+
async handleROOTInput(files) {
|
|
134
|
+
const rootObjectName = prompt('Enter object name in ROOT file');
|
|
135
|
+
await this.eventDisplay.loadRootGeometry(URL.createObjectURL(files[0]), rootObjectName, files[0].name.split('.')[0]);
|
|
136
|
+
this.onClose();
|
|
137
|
+
}
|
|
138
|
+
async handleRootJSONInput(files) {
|
|
139
|
+
if (!this.isFileOfExtension(files[0], 'gz')) {
|
|
140
|
+
return;
|
|
141
|
+
}
|
|
142
|
+
const name = files[0].name.split('.')[0];
|
|
143
|
+
await this.eventDisplay.loadRootJSONGeometry(URL.createObjectURL(files[0]), name);
|
|
144
|
+
this.onClose();
|
|
145
|
+
}
|
|
146
|
+
handleIgEventDataInput(files) {
|
|
147
|
+
const cmsLoader = new CMSLoader();
|
|
148
|
+
cmsLoader.readIgArchive(files[0], (allEvents) => {
|
|
149
|
+
const allEventsData = cmsLoader.getAllEventsData(allEvents);
|
|
150
|
+
this.eventDisplay.parsePhoenixEvents(allEventsData);
|
|
151
|
+
this.onClose();
|
|
152
|
+
});
|
|
153
|
+
}
|
|
154
|
+
async handleZipEventDataInput(files) {
|
|
155
|
+
if (!this.isFileOfExtension(files[0], 'zip')) {
|
|
156
|
+
return;
|
|
157
|
+
}
|
|
158
|
+
const allEventsObject = {};
|
|
159
|
+
let filesWithData;
|
|
160
|
+
// Using a try catch block to catch any errors in Promises
|
|
161
|
+
try {
|
|
162
|
+
filesWithData = await readZipFile(files[0]);
|
|
163
|
+
}
|
|
164
|
+
catch (error) {
|
|
165
|
+
console.error('Error while reading zip', error);
|
|
166
|
+
this.eventDisplay.getInfoLogger().add('Could not read zip file', 'Error');
|
|
167
|
+
return;
|
|
168
|
+
}
|
|
169
|
+
// JSON event data
|
|
170
|
+
Object.keys(filesWithData)
|
|
171
|
+
.filter((fileName) => fileName.endsWith('.json'))
|
|
172
|
+
.forEach((fileName) => {
|
|
173
|
+
Object.assign(allEventsObject, JSON.parse(filesWithData[fileName]));
|
|
174
|
+
});
|
|
175
|
+
// JiveXML event data
|
|
176
|
+
const jiveloader = new JiveXMLLoader();
|
|
177
|
+
Object.keys(filesWithData)
|
|
178
|
+
.filter((fileName) => {
|
|
179
|
+
return fileName.endsWith('.xml') || fileName.startsWith('JiveXML');
|
|
180
|
+
})
|
|
181
|
+
.forEach((fileName) => {
|
|
182
|
+
jiveloader.process(filesWithData[fileName]);
|
|
183
|
+
const eventData = jiveloader.getEventData();
|
|
184
|
+
Object.assign(allEventsObject, { [fileName]: eventData });
|
|
185
|
+
});
|
|
186
|
+
// For some reason the above doesn't pick up JiveXML_XXX_YYY.zip
|
|
187
|
+
this.eventDisplay.parsePhoenixEvents(allEventsObject);
|
|
188
|
+
this.onClose();
|
|
189
|
+
}
|
|
190
|
+
handleFileInput(file, extension, callback) {
|
|
191
|
+
const reader = new FileReader();
|
|
192
|
+
if (this.isFileOfExtension(file, extension)) {
|
|
193
|
+
reader.onload = () => {
|
|
194
|
+
callback(reader.result.toString(), file.name.split('.')[0]);
|
|
195
|
+
};
|
|
196
|
+
reader.readAsText(file);
|
|
197
|
+
}
|
|
198
|
+
this.onClose();
|
|
199
|
+
}
|
|
200
|
+
isFileOfExtension(file, extension) {
|
|
201
|
+
if (file.name.split('.').pop() === extension) {
|
|
202
|
+
return true;
|
|
203
|
+
}
|
|
204
|
+
console.error('Error: Invalid file format!');
|
|
205
|
+
this.eventDisplay.getInfoLogger().add('Invalid file format!', 'Error');
|
|
206
|
+
return false;
|
|
207
|
+
}
|
|
208
|
+
saveScene() {
|
|
209
|
+
this.eventDisplay.exportPhoenixDisplay();
|
|
210
|
+
}
|
|
211
|
+
exportOBJ() {
|
|
212
|
+
this.eventDisplay.exportToOBJ();
|
|
213
|
+
}
|
|
214
|
+
static ɵfac = function IOOptionsDialogComponent_Factory(t) { return new (t || IOOptionsDialogComponent)(i0.ɵɵdirectiveInject(i1.EventDisplayService), i0.ɵɵdirectiveInject(i2.MatDialogRef)); };
|
|
215
|
+
static ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: IOOptionsDialogComponent, selectors: [["app-io-options-dialog"]], inputs: { eventDataImportOptions: "eventDataImportOptions" }, decls: 47, vars: 1, consts: [["objFileInput", ""], ["gltfFileInput", ""], ["rootFileInput", ""], ["rootJSONFileInput", ""], ["loadSceneInput", ""], ["eventDataFileInput", ""], [1, "dialog"], ["mat-dialog-title", ""], ["mat-dialog-content", "", 1, "dialog-content"], [4, "ngIf"], [1, "text-center"], [1, "row", "centered"], ["type", "file", "tabindex", "-1", "accept", ".obj", "name", "image", 1, "file-input", 3, "change"], [1, "file-input-button", 3, "click"], ["src", "assets/icons/obj.svg", "alt", ""], ["type", "file", "tabindex", "-1", "accept", ".gltf", "name", "image", 1, "file-input", 3, "change"], ["src", "assets/icons/gltf.svg", "alt", ""], ["type", "file", "tabindex", "-1", "accept", ".root", 1, "file-input", 3, "change"], ["src", "assets/icons/file-import.svg", "alt", ""], ["type", "file", "tabindex", "-1", "accept", ".json.gz", 1, "file-input", 3, "change"], ["id", "exportScene", 1, "file-input-button", "load-export", 3, "click"], ["src", "assets/icons/save.svg", "alt", ""], ["type", "file", "tabindex", "-1", "accept", ".phnx", "name", "image", 1, "file-input", 3, "change"], ["id", "importScene", 1, "file-input-button", "load-export", 3, "click"], ["src", "assets/icons/upload.svg", "alt", ""], ["id", "exportOBJ", 1, "file-input-button", "export-button", 3, "click"], ["mat-dialog-actions", "", "align", "end"], ["mat-flat-button", "", "color", "primary", "cdkFocusInitial", "", 3, "click"], [4, "ngFor", "ngForOf"], ["type", "file", "tabindex", "-1", 1, "file-input", 3, "change", "accept"], ["src", "assets/icons/eventData.svg", "alt", "Event data icon"]], template: function IOOptionsDialogComponent_Template(rf, ctx) { if (rf & 1) {
|
|
216
|
+
const _r1 = i0.ɵɵgetCurrentView();
|
|
217
|
+
i0.ɵɵelementStart(0, "div", 6)(1, "h1", 7);
|
|
218
|
+
i0.ɵɵtext(2, "Import and export");
|
|
219
|
+
i0.ɵɵelementEnd();
|
|
220
|
+
i0.ɵɵelementStart(3, "div", 8);
|
|
221
|
+
i0.ɵɵtemplate(4, IOOptionsDialogComponent_div_4_Template, 6, 1, "div", 9);
|
|
222
|
+
i0.ɵɵelementStart(5, "p", 10)(6, "b");
|
|
223
|
+
i0.ɵɵtext(7, "Geometries");
|
|
224
|
+
i0.ɵɵelementEnd()();
|
|
225
|
+
i0.ɵɵelementStart(8, "div", 11)(9, "input", 12, 0);
|
|
226
|
+
i0.ɵɵlistener("change", function IOOptionsDialogComponent_Template_input_change_9_listener($event) { i0.ɵɵrestoreView(_r1); return i0.ɵɵresetView(ctx.handleOBJInput($event.target.files)); });
|
|
227
|
+
i0.ɵɵelementEnd();
|
|
228
|
+
i0.ɵɵelementStart(11, "button", 13);
|
|
229
|
+
i0.ɵɵlistener("click", function IOOptionsDialogComponent_Template_button_click_11_listener() { i0.ɵɵrestoreView(_r1); const objFileInput_r6 = i0.ɵɵreference(10); return i0.ɵɵresetView(objFileInput_r6.click()); });
|
|
230
|
+
i0.ɵɵelement(12, "img", 14);
|
|
231
|
+
i0.ɵɵtext(13, " Load .obj ");
|
|
232
|
+
i0.ɵɵelementEnd();
|
|
233
|
+
i0.ɵɵelementStart(14, "input", 15, 1);
|
|
234
|
+
i0.ɵɵlistener("change", function IOOptionsDialogComponent_Template_input_change_14_listener($event) { i0.ɵɵrestoreView(_r1); return i0.ɵɵresetView(ctx.handleGLTFInput($event.target.files)); });
|
|
235
|
+
i0.ɵɵelementEnd();
|
|
236
|
+
i0.ɵɵelementStart(16, "button", 13);
|
|
237
|
+
i0.ɵɵlistener("click", function IOOptionsDialogComponent_Template_button_click_16_listener() { i0.ɵɵrestoreView(_r1); const gltfFileInput_r7 = i0.ɵɵreference(15); return i0.ɵɵresetView(gltfFileInput_r7.click()); });
|
|
238
|
+
i0.ɵɵelement(17, "img", 16);
|
|
239
|
+
i0.ɵɵtext(18, " Load .gltf ");
|
|
240
|
+
i0.ɵɵelementEnd();
|
|
241
|
+
i0.ɵɵelementStart(19, "input", 17, 2);
|
|
242
|
+
i0.ɵɵlistener("change", function IOOptionsDialogComponent_Template_input_change_19_listener($event) { i0.ɵɵrestoreView(_r1); return i0.ɵɵresetView(ctx.handleROOTInput($event.target.files)); });
|
|
243
|
+
i0.ɵɵelementEnd();
|
|
244
|
+
i0.ɵɵelementStart(21, "button", 13);
|
|
245
|
+
i0.ɵɵlistener("click", function IOOptionsDialogComponent_Template_button_click_21_listener() { i0.ɵɵrestoreView(_r1); const rootFileInput_r8 = i0.ɵɵreference(20); return i0.ɵɵresetView(rootFileInput_r8.click()); });
|
|
246
|
+
i0.ɵɵelement(22, "img", 18);
|
|
247
|
+
i0.ɵɵtext(23, " Load .root ");
|
|
248
|
+
i0.ɵɵelementEnd();
|
|
249
|
+
i0.ɵɵelementStart(24, "input", 19, 3);
|
|
250
|
+
i0.ɵɵlistener("change", function IOOptionsDialogComponent_Template_input_change_24_listener($event) { i0.ɵɵrestoreView(_r1); return i0.ɵɵresetView(ctx.handleRootJSONInput($event.target.files)); });
|
|
251
|
+
i0.ɵɵelementEnd();
|
|
252
|
+
i0.ɵɵelementStart(26, "button", 13);
|
|
253
|
+
i0.ɵɵlistener("click", function IOOptionsDialogComponent_Template_button_click_26_listener() { i0.ɵɵrestoreView(_r1); const rootJSONFileInput_r9 = i0.ɵɵreference(25); return i0.ɵɵresetView(rootJSONFileInput_r9.click()); });
|
|
254
|
+
i0.ɵɵelement(27, "img", 18);
|
|
255
|
+
i0.ɵɵtext(28, " Load .json.gz ");
|
|
256
|
+
i0.ɵɵelementEnd()();
|
|
257
|
+
i0.ɵɵelementStart(29, "p", 10)(30, "b");
|
|
258
|
+
i0.ɵɵtext(31, "Scene");
|
|
259
|
+
i0.ɵɵelementEnd()();
|
|
260
|
+
i0.ɵɵelementStart(32, "div", 11)(33, "button", 20);
|
|
261
|
+
i0.ɵɵlistener("click", function IOOptionsDialogComponent_Template_button_click_33_listener() { i0.ɵɵrestoreView(_r1); return i0.ɵɵresetView(ctx.saveScene()); });
|
|
262
|
+
i0.ɵɵelement(34, "img", 21);
|
|
263
|
+
i0.ɵɵtext(35, " Save scene ");
|
|
264
|
+
i0.ɵɵelementEnd();
|
|
265
|
+
i0.ɵɵelementStart(36, "input", 22, 4);
|
|
266
|
+
i0.ɵɵlistener("change", function IOOptionsDialogComponent_Template_input_change_36_listener($event) { i0.ɵɵrestoreView(_r1); return i0.ɵɵresetView(ctx.handlePhoenixInput($event.target.files)); });
|
|
267
|
+
i0.ɵɵelementEnd();
|
|
268
|
+
i0.ɵɵelementStart(38, "button", 23);
|
|
269
|
+
i0.ɵɵlistener("click", function IOOptionsDialogComponent_Template_button_click_38_listener() { i0.ɵɵrestoreView(_r1); const loadSceneInput_r10 = i0.ɵɵreference(37); return i0.ɵɵresetView(loadSceneInput_r10.click()); });
|
|
270
|
+
i0.ɵɵelement(39, "img", 24);
|
|
271
|
+
i0.ɵɵtext(40, " Load scene ");
|
|
272
|
+
i0.ɵɵelementEnd();
|
|
273
|
+
i0.ɵɵelementStart(41, "button", 25);
|
|
274
|
+
i0.ɵɵlistener("click", function IOOptionsDialogComponent_Template_button_click_41_listener() { i0.ɵɵrestoreView(_r1); return i0.ɵɵresetView(ctx.exportOBJ()); });
|
|
275
|
+
i0.ɵɵelement(42, "img", 14);
|
|
276
|
+
i0.ɵɵtext(43, " Save OBJ ");
|
|
277
|
+
i0.ɵɵelementEnd()()();
|
|
278
|
+
i0.ɵɵelementStart(44, "div", 26)(45, "button", 27);
|
|
279
|
+
i0.ɵɵlistener("click", function IOOptionsDialogComponent_Template_button_click_45_listener() { i0.ɵɵrestoreView(_r1); return i0.ɵɵresetView(ctx.onClose()); });
|
|
280
|
+
i0.ɵɵtext(46, " Close ");
|
|
281
|
+
i0.ɵɵelementEnd()()();
|
|
282
|
+
} if (rf & 2) {
|
|
283
|
+
i0.ɵɵadvance(4);
|
|
284
|
+
i0.ɵɵproperty("ngIf", ctx.eventDataImportOptions.length > 0);
|
|
285
|
+
} }, dependencies: [i3.NgForOf, i3.NgIf, i2.MatDialogTitle, i2.MatDialogActions, i2.MatDialogContent, i4.MatButton], styles: [".row[_ngcontent-%COMP%]{justify-content:center;margin:1rem 0}.file-input[_ngcontent-%COMP%]{width:.1px;height:.1px;opacity:0;overflow:hidden;position:absolute;z-index:-1}.file-input-button[_ngcontent-%COMP%]{font-size:1em;font-weight:700;color:#fff;background-color:#6eaece;padding:1em .5em;border:none;border-radius:10px;width:8rem;margin:0 .4rem}.file-input-button.load-export[_ngcontent-%COMP%]{padding:.8em .2em;width:7rem}.file-input-button.load-export[_ngcontent-%COMP%] img[_ngcontent-%COMP%]{max-height:1.2em}.file-input-button.export-button[_ngcontent-%COMP%]{background-color:#cb7133}.file-input-button.export-button[_ngcontent-%COMP%]:hover{background-color:#ad5b2d}.file-input-button[_ngcontent-%COMP%] img[_ngcontent-%COMP%]{max-height:2em;display:block;width:100%}.file-input-button[_ngcontent-%COMP%]:hover{background-color:#118ab2}#exportScene[_ngcontent-%COMP%]{background-color:#5bd99e}#exportScene[_ngcontent-%COMP%]:hover{background-color:#05c292}#importScene[_ngcontent-%COMP%]{background-color:#ecc25e}#importScene[_ngcontent-%COMP%]:hover{background-color:#d6b44d}"] });
|
|
286
|
+
}
|
|
287
|
+
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(IOOptionsDialogComponent, [{
|
|
288
|
+
type: Component,
|
|
289
|
+
args: [{ selector: 'app-io-options-dialog', template: "<div class=\"dialog\">\n <h1 mat-dialog-title>Import and export</h1>\n <div mat-dialog-content class=\"dialog-content\">\n <div *ngIf=\"eventDataImportOptions.length > 0\">\n <p class=\"text-center\"><b>Event data</b></p>\n\n <div class=\"row centered\">\n <ng-container\n *ngFor=\"let eventDataImportOption of eventDataOptionsWithHandler\"\n >\n <input\n #eventDataFileInput\n type=\"file\"\n tabindex=\"-1\"\n class=\"file-input\"\n [accept]=\"eventDataImportOption.accept\"\n (change)=\"eventDataImportOption.handler($event.target.files)\"\n />\n <button\n class=\"file-input-button\"\n (click)=\"eventDataFileInput.click()\"\n >\n <img src=\"assets/icons/eventData.svg\" alt=\"Event data icon\" />\n Load {{ eventDataImportOption.fileType }}\n </button>\n </ng-container>\n </div>\n </div>\n\n <p class=\"text-center\"><b>Geometries</b></p>\n\n <div class=\"row centered\">\n <input\n #objFileInput\n type=\"file\"\n tabindex=\"-1\"\n class=\"file-input\"\n accept=\".obj\"\n name=\"image\"\n (change)=\"handleOBJInput($event.target.files)\"\n />\n <button class=\"file-input-button\" (click)=\"objFileInput.click()\">\n <img src=\"assets/icons/obj.svg\" alt=\"\" /> Load .obj\n </button>\n\n <input\n #gltfFileInput\n type=\"file\"\n tabindex=\"-1\"\n class=\"file-input\"\n accept=\".gltf\"\n name=\"image\"\n (change)=\"handleGLTFInput($event.target.files)\"\n />\n <button class=\"file-input-button\" (click)=\"gltfFileInput.click()\">\n <img src=\"assets/icons/gltf.svg\" alt=\"\" /> Load .gltf\n </button>\n\n <input\n #rootFileInput\n type=\"file\"\n tabindex=\"-1\"\n class=\"file-input\"\n accept=\".root\"\n (change)=\"handleROOTInput($event.target.files)\"\n />\n <button class=\"file-input-button\" (click)=\"rootFileInput.click()\">\n <img src=\"assets/icons/file-import.svg\" alt=\"\" /> Load .root\n </button>\n\n <input\n #rootJSONFileInput\n type=\"file\"\n tabindex=\"-1\"\n class=\"file-input\"\n accept=\".json.gz\"\n (change)=\"handleRootJSONInput($event.target.files)\"\n />\n <button class=\"file-input-button\" (click)=\"rootJSONFileInput.click()\">\n <img src=\"assets/icons/file-import.svg\" alt=\"\" /> Load .json.gz\n </button>\n </div>\n\n <p class=\"text-center\"><b>Scene</b></p>\n\n <div class=\"row centered\">\n <button\n class=\"file-input-button load-export\"\n id=\"exportScene\"\n (click)=\"saveScene()\"\n >\n <img src=\"assets/icons/save.svg\" alt=\"\" /> Save scene\n </button>\n\n <input\n #loadSceneInput\n type=\"file\"\n tabindex=\"-1\"\n class=\"file-input\"\n accept=\".phnx\"\n name=\"image\"\n (change)=\"handlePhoenixInput($event.target.files)\"\n />\n <button\n class=\"file-input-button load-export\"\n id=\"importScene\"\n (click)=\"loadSceneInput.click()\"\n >\n <img src=\"assets/icons/upload.svg\" alt=\"\" /> Load scene\n </button>\n\n <button\n class=\"file-input-button export-button\"\n id=\"exportOBJ\"\n (click)=\"exportOBJ()\"\n >\n <img src=\"assets/icons/obj.svg\" alt=\"\" /> Save OBJ\n </button>\n </div>\n </div>\n\n <div mat-dialog-actions align=\"end\">\n <button mat-flat-button color=\"primary\" (click)=\"onClose()\" cdkFocusInitial>\n Close\n </button>\n </div>\n</div>\n", styles: [".row{justify-content:center;margin:1rem 0}.file-input{width:.1px;height:.1px;opacity:0;overflow:hidden;position:absolute;z-index:-1}.file-input-button{font-size:1em;font-weight:700;color:#fff;background-color:#6eaece;padding:1em .5em;border:none;border-radius:10px;width:8rem;margin:0 .4rem}.file-input-button.load-export{padding:.8em .2em;width:7rem}.file-input-button.load-export img{max-height:1.2em}.file-input-button.export-button{background-color:#cb7133}.file-input-button.export-button:hover{background-color:#ad5b2d}.file-input-button img{max-height:2em;display:block;width:100%}.file-input-button:hover{background-color:#118ab2}#exportScene{background-color:#5bd99e}#exportScene:hover{background-color:#05c292}#importScene{background-color:#ecc25e}#importScene:hover{background-color:#d6b44d}\n"] }]
|
|
290
|
+
}], () => [{ type: i1.EventDisplayService }, { type: i2.MatDialogRef }], { eventDataImportOptions: [{
|
|
291
|
+
type: Input
|
|
292
|
+
}] }); })();
|
|
293
|
+
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(IOOptionsDialogComponent, { className: "IOOptionsDialogComponent", filePath: "components/ui-menu/io-options/io-options-dialog/io-options-dialog.component.ts", lineNumber: 21 }); })();
|
|
294
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW8tb3B0aW9ucy1kaWFsb2cuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vbGliL2NvbXBvbmVudHMvdWktbWVudS9pby1vcHRpb25zL2lvLW9wdGlvbnMtZGlhbG9nL2lvLW9wdGlvbnMtZGlhbG9nLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL2xpYi9jb21wb25lbnRzL3VpLW1lbnUvaW8tb3B0aW9ucy9pby1vcHRpb25zLWRpYWxvZy9pby1vcHRpb25zLWRpYWxvZy5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQVUsU0FBUyxFQUFFLEtBQUssRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN6RCxPQUFPLEVBQ0wsU0FBUyxFQUNULGFBQWEsRUFDYixXQUFXLEVBQ1gsaUJBQWlCLEdBQ2xCLE1BQU0sdUJBQXVCLENBQUM7QUFHL0IsT0FBTyxFQUNMLGVBQWUsRUFFZixZQUFZLEdBQ2IsTUFBTSwrQ0FBK0MsQ0FBQzs7Ozs7Ozs7SUNOL0MsNkJBRUM7SUFDQyxvQ0FPRTtJQURBLGtOQUFVLHFEQUFrRCxLQUFDO0lBTi9ELGlCQU9FO0lBQ0Ysa0NBR0M7SUFEQyxpTkFBUyw2QkFBMEIsS0FBQztJQUVwQywwQkFBOEQ7SUFDOUQsWUFDRjtJQUFBLGlCQUFTOzs7O0lBVFAsY0FBdUM7SUFBdkMsd0RBQXVDO0lBUXZDLGVBQ0Y7SUFERSx1RUFDRjs7O0lBcEJtQixBQUF2QixBQURGLDJCQUErQyxZQUN0QixRQUFHO0lBQUEsMEJBQVU7SUFBSSxBQUFKLGlCQUFJLEVBQUk7SUFFNUMsK0JBQTBCO0lBQ3hCLGtHQUVDO0lBa0JMLEFBREUsaUJBQU0sRUFDRjs7O0lBbkJrQyxlQUE4QjtJQUE5Qiw0REFBOEI7O0FEWTFFLE1BQU0sT0FBTyx3QkFBd0I7SUF3Q3pCO0lBQ0Q7SUF2Q1Qsc0JBQXNCLEdBQTRCLENBQUMsZUFBZSxDQUFDLElBQUksQ0FBQyxD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LHFDQU9FO1lBREEsbUpBQVUsd0NBQW9DLEtBQUM7WUFOakQsaUJBT0U7WUFDRixtQ0FBa0U7WUFBaEMseUxBQVMsd0JBQXFCLEtBQUM7WUFDL0QsMkJBQWlEO1lBQUMsNkJBQ3BEO1lBQUEsaUJBQVM7WUFFVCxxQ0FPRTtZQURBLG1KQUFVLDRDQUF3QyxLQUFDO1lBTnJELGlCQU9FO1lBQ0YsbUNBQXNFO1lBQXBDLDZMQUFTLDRCQUF5QixLQUFDO1lBQ25FLDJCQUFpRDtZQUFDLGdDQUNwRDtZQUNGLEFBREUsaUJBQVMsRUFDTDtZQUVpQixBQUF2Qiw4QkFBdUIsU0FBRztZQUFBLHNCQUFLO1lBQUksQUFBSixpQkFBSSxFQUFJO1lBR3JDLEFBREYsZ0NBQTBCLGtCQUt2QjtZQURDLDRJQUFTLGVBQVcsS0FBQztZQUVyQiwyQkFBMEM7WUFBQyw2QkFDN0M7WUFBQSxpQkFBUztZQUVULHFDQVFFO1lBREEsbUpBQVUsMkNBQXVDLEtBQUM7WUFQcEQsaUJBUUU7WUFDRixtQ0FJQztZQURDLDJMQUFTLDBCQUFzQixLQUFDO1lBRWhDLDJCQUE0QztZQUFDLDZCQUMvQztZQUFBLGlCQUFTO1lBRVQsbUNBSUM7WUFEQyw0SUFBUyxlQUFXLEtBQUM7WUFFckIsMkJBQXlDO1lBQUMsMkJBQzVDO1lBRUosQUFERSxBQURFLGlCQUFTLEVBQ0wsRUFDRjtZQUdKLEFBREYsZ0NBQW9DLGtCQUMwQztZQUFwQyw0SUFBUyxhQUFTLEtBQUM7WUFDekQsd0JBQ0Y7WUFFSixBQURFLEFBREUsaUJBQVMsRUFDTCxFQUNGOztZQTNISSxlQUF1QztZQUF2Qyw0REFBdUM7OztpRkRpQnBDLHdCQUF3QjtjQUxwQyxTQUFTOzJCQUNFLHVCQUF1QjsrRUFNakMsc0JBQXNCO2tCQURyQixLQUFLOztrRkFESyx3QkFBd0IiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBPbkluaXQsIENvbXBvbmVudCwgSW5wdXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7XG4gIENNU0xvYWRlcixcbiAgSml2ZVhNTExvYWRlcixcbiAgcmVhZFppcEZpbGUsXG4gIEVkbTRoZXBKc29uTG9hZGVyLFxufSBmcm9tICdwaG9lbml4LWV2ZW50LWRpc3BsYXknO1xuaW1wb3J0IHsgRXZlbnREaXNwbGF5U2VydmljZSB9IGZyb20gJy4uLy4uLy4uLy4uL3NlcnZpY2VzL2V2ZW50LWRpc3BsYXkuc2VydmljZSc7XG5pbXBvcnQgeyBNYXREaWFsb2dSZWYgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9kaWFsb2cnO1xuaW1wb3J0IHtcbiAgRXZlbnREYXRhRm9ybWF0LFxuICBFdmVudERhdGFJbXBvcnRPcHRpb24sXG4gIEltcG9ydE9wdGlvbixcbn0gZnJvbSAnLi4vLi4vLi4vLi4vc2VydmljZXMvZXh0cmFzL2V2ZW50LWRhdGEtaW1wb3J0JztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnYXBwLWlvLW9wdGlvbnMtZGlhbG9nJyxcbiAgdGVtcGxhdGVVcmw6ICcuL2lvLW9wdGlvbnMtZGlhbG9nLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vaW8tb3B0aW9ucy1kaWFsb2cuY29tcG9uZW50LnNjc3MnXSxcbn0pXG5leHBvcnQgY2xhc3MgSU9PcHRpb25zRGlhbG9nQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcbiAgQElucHV0KClcbiAgZXZlbnREYXRhSW1wb3J0T3B0aW9uczogRXZlbnREYXRhSW1wb3J0T3B0aW9uW10gPSBbRXZlbnREYXRhRm9ybWF0LkpTT05dO1xuXG4gIGV2ZW50RGF0YU9wdGlvbnNXaXRoSGFuZGxlcjogSW1wb3J0T3B0aW9uW107XG5cbiAgcHJpdmF0ZSBzdXBwb3J0ZWRFdmVudERhdGFGb3JtYXRzID0gW1xuICAgIG5ldyBJbXBvcnRPcHRpb24oXG4gICAgICBFdmVudERhdGFGb3JtYXQuSlNPTixcbiAgICAgICcuanNvbicsXG4gICAgICB0aGlzLmhhbmRsZUpTT05FdmVudERhdGFJbnB1dC5iaW5kKHRoaXMpLFxuICAgICAgJ2FwcGxpY2F0aW9uL2pzb24nLFxuICAgICksXG4gICAgbmV3IEltcG9ydE9wdGlvbihcbiAgICAgIEV2ZW50RGF0YUZvcm1hdC5FRE00SEVQSlNPTixcbiAgICAgICcuZWRtNGhlcC5qc29uJyxcbiAgICAgIHRoaXMuaGFuZGxlRURNNEhFUEpTT05FdmVudERhdGFJbnB1dC5iaW5kKHRoaXMpLFxuICAgICAgJ2FwcGxpY2F0aW9uL2pzb24nLFxuICAgICksXG4gICAgbmV3IEltcG9ydE9wdGlvbihcbiAgICAgIEV2ZW50RGF0YUZvcm1hdC5KSVZFWE1MLFxuICAgICAgJy54bWwnLFxuICAgICAgdGhpcy5oYW5kbGVKaXZlWE1MRGF0YUlucHV0LmJpbmQodGhpcyksXG4gICAgICAndGV4dC94bWwnLFxuICAgICksXG4gICAgbmV3IEltcG9ydE9wdGlvbihcbiAgICAgIEV2ZW50RGF0YUZvcm1hdC5aSVAsXG4gICAgICAnLnppcCcsXG4gICAgICB0aGlzLmhhbmRsZVppcEV2ZW50RGF0YUlucHV0LmJpbmQodGhpcyksXG4gICAgICAnLnppcCcsXG4gICAgKSxcbiAgICBuZXcgSW1wb3J0T3B0aW9uKFxuICAgICAgRXZlbnREYXRhRm9ybWF0LklHLFxuICAgICAgJy5pZycsXG4gICAgICB0aGlzLmhhbmRsZUlnRXZlbnREYXRhSW5wdXQuYmluZCh0aGlzKSxcbiAgICAgICcuaWcnLFxuICAgICksXG4gIF07XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSBldmVudERpc3BsYXk6IEV2ZW50RGlzcGxheVNlcnZpY2UsXG4gICAgcHVibGljIGRpYWxvZ1JlZjogTWF0RGlhbG9nUmVmPElPT3B0aW9uc0RpYWxvZ0NvbXBvbmVudD4sXG4gICkge31cblxuICBuZ09uSW5pdCgpIHtcbiAgICB0aGlzLmV2ZW50RGF0YU9wdGlvbnNXaXRoSGFuZGxlciA9IHRoaXMuc3VwcG9ydGVkRXZlbnREYXRhRm9ybWF0cy5maWx0ZXIoXG4gICAgICAoZXZlbnREYXRhRm9ybWF0KSA9PlxuICAgICAgICB0aGlzLmV2ZW50RGF0YUltcG9ydE9wdGlvbnMuaW5jbHVkZXMoXG4gICAgICAgICAgZXZlbnREYXRhRm9ybWF0LmZvcm1hdCBhcyBFdmVudERhdGFGb3JtYXQsXG4gICAgICAgICksXG4gICAgKTtcblxuICAgIHRoaXMuZXZlbnREYXRhSW1wb3J0T3B0aW9ucy5mb3JFYWNoKChldmVudERhdGFJbXBvcnRPcHRpb24pID0+IHtcbiAgICAgIGlmIChldmVudERhdGFJbXBvcnRPcHRpb24gaW5zdGFuY2VvZiBJbXBvcnRPcHRpb24pIHtcbiAgICAgICAgY29uc3QgaW1wb3J0SGFuZGxlciA9IGV2ZW50RGF0YUltcG9ydE9wdGlvbi5oYW5kbGVyLmJpbmQodGhpcyk7XG4gICAgICAgIGV2ZW50RGF0YUltcG9ydE9wdGlvbi5oYW5kbGVyID0gKGZpbGVzOiBGaWxlTGlzdCkgPT4ge1xuICAgICAgICAgIGltcG9ydEhhbmRsZXIoZmlsZXMpO1xuICAgICAgICAgIHRoaXMub25DbG9zZSgpO1xuICAgICAgICB9O1xuXG4gICAgICAgIHRoaXMuZXZlbnREYXRhT3B0aW9uc1dpdGhIYW5kbGVyLnB1c2goZXZlbnREYXRhSW1wb3J0T3B0aW9uKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfVxuXG4gIGdldFN1cHBvcnRlZEV2ZW50RGF0YUZvcm1hdHMoKSB7XG4gICAgcmV0dXJuIHRoaXMuZXZlbnREYXRhSW1wb3J0T3B0aW9uc1xuICAgICAgLm1hcCgoZm9ybWF0KSA9PiB7XG4gICAgICAgIGlmIChmb3JtYXQgaW5zdGFuY2VvZiBJbXBvcnRPcHRpb24pIHtcbiAgICAgICAgICByZXR1cm4gZm9ybWF0LmZvcm1hdDtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBmb3JtYXQ7XG4gICAgICB9KVxuICAgICAgLmZpbHRlcigoZm9ybWF0KSA9PiBmb3JtYXQgIT09ICdaSVAnKVxuICAgICAgLmpvaW4oJywgJyk7XG4gIH1cblxuICBvbkNsb3NlKCk6IHZvaWQge1xuICAgIHRoaXMuZGlhbG9nUmVmLmNsb3NlKCk7XG4gIH1cblxuICBoYW5kbGVKU09ORXZlbnREYXRhSW5wdXQoZmlsZXM6IEZpbGVMaXN0KSB7XG4gICAgY29uc3QgY2FsbGJhY2sgPSAoY29udGVudDogYW55KSA9PiB7XG4gICAgICBjb25zdCBqc29uID0gdHlwZW9mIGNvbnRlbnQgPT09ICdzdHJpbmcnID8gSlNPTi5wYXJzZShjb250ZW50KSA6IGNvbnRlbnQ7XG4gICAgICB0aGlzLmV2ZW50RGlzcGxheS5wYXJzZVBob2VuaXhFdmVudHMoanNvbik7XG4gICAgfTtcbiAgICB0aGlzLmhhbmRsZUZpbGVJbnB1dChmaWxlc1swXSwgJ2pzb24nLCBjYWxsYmFjayk7XG4gIH1cblxuICBoYW5kbGVFRE00SEVQSlNPTkV2ZW50RGF0YUlucHV0KGZpbGVzOiBGaWxlTGlzdCkge1xuICAgIGNvbnN0IGNhbGxiYWNrID0gKGNvbnRlbnQ6IGFueSkgPT4ge1xuICAgICAgY29uc3QganNvbiA9IHR5cGVvZiBjb250ZW50ID09PSAnc3RyaW5nJyA/IEpTT04ucGFyc2UoY29udGVudCkgOiBjb250ZW50O1xuICAgICAgY29uc3QgZWRtNGhlcEpzb25Mb2FkZXIgPSBuZXcgRWRtNGhlcEpzb25Mb2FkZXIoKTtcbiAgICAgIGVkbTRoZXBKc29uTG9hZGVyLnNldFJhd0V2ZW50RGF0YShqc29uKTtcbiAgICAgIGVkbTRoZXBKc29uTG9hZGVyLnByb2Nlc3NFdmVudERhdGEoKTtcbiAgICAgIHRoaXMuZXZlbnREaXNwbGF5LnBhcnNlUGhvZW5peEV2ZW50cyhlZG00aGVwSnNvbkxvYWRlci5nZXRFdmVudERhdGEoKSk7XG4gICAgfTtcbiAgICB0aGlzLmhhbmRsZUZpbGVJbnB1dChmaWxlc1swXSwgJ2pzb24nLCBjYWxsYmFjayk7XG4gIH1cblxuICBoYW5kbGVKaXZlWE1MRGF0YUlucHV0KGZpbGVzOiBGaWxlTGlzdCkge1xuICAgIGNvbnN0IGNhbGxiYWNrID0gKGNvbnRlbnQ6IGFueSkgPT4ge1xuICAgICAgY29uc3Qgaml2ZWxvYWRlciA9IG5ldyBKaXZlWE1MTG9hZGVyKCk7XG4gICAgICBqaXZlbG9hZGVyLnByb2Nlc3MoY29udGVudCk7XG4gICAgICBjb25zdCBldmVudERhdGEgPSBqaXZlbG9hZGVyLmdldEV2ZW50RGF0YSgpO1xuICAgICAgdGhpcy5ldmVudERpc3BsYXkuYnVpbGRFdmVudERhdGFGcm9tSlNPTihldmVudERhdGEpO1xuICAgIH07XG4gICAgdGhpcy5oYW5kbGVGaWxlSW5wdXQoZmlsZXNbMF0sICd4bWwnLCBjYWxsYmFjayk7XG4gIH1cblxuICBoYW5kbGVPQkpJbnB1dChmaWxlczogRmlsZUxpc3QpIHtcbiAgICBjb25zdCBjYWxsYmFjayA9IChjb250ZW50OiBhbnksIG5hbWU6IHN0cmluZykgPT4ge1xuICAgICAgdGhpcy5ldmVudERpc3BsYXkucGFyc2VPQkpHZW9tZXRyeShjb250ZW50LCBuYW1lKTtcbiAgICB9O1xuICAgIHRoaXMuaGFuZGxlRmlsZUlucHV0KGZpbGVzWzBdLCAnb2JqJywgY2FsbGJhY2spO1xuICB9XG5cbiAgaGFuZGxlU2NlbmVJbnB1dChmaWxlczogRmlsZUxpc3QpIHtcbiAgICBjb25zdCBjYWxsYmFjayA9IChjb250ZW50OiBhbnkpID0+IHtcbiAgICAgIHRoaXMuZXZlbnREaXNwbGF5LnBhcnNlUGhvZW5peERpc3BsYXkoY29udGVudCk7XG4gICAgfTtcbiAgICB0aGlzLmhhbmRsZUZpbGVJbnB1dChmaWxlc1swXSwgJ3BobngnLCBjYWxsYmFjayk7XG4gIH1cblxuICBoYW5kbGVHTFRGSW5wdXQoZmlsZXM6IEZpbGVMaXN0KSB7XG4gICAgY29uc3QgY2FsbGJhY2sgPSAoY29udGVudDogYW55LCBuYW1lOiBzdHJpbmcpID0+IHtcbiAgICAgIHRoaXMuZXZlbnREaXNwbGF5LnBhcnNlR0xURkdlb21ldHJ5KGNvbnRlbnQsIG5hbWUpO1xuICAgIH07XG4gICAgdGhpcy5oYW5kbGVGaWxlSW5wdXQoZmlsZXNbMF0sICdnbHRmJywgY2FsbGJhY2spO1xuICB9XG5cbiAgaGFuZGxlUGhvZW5peElucHV0KGZpbGVzOiBGaWxlTGlzdCkge1xuICAgIGNvbnN0IGNhbGxiYWNrID0gKGNvbnRlbnQ6IGFueSkgPT4ge1xuICAgICAgdGhpcy5ldmVudERpc3BsYXkucGFyc2VQaG9lbml4RGlzcGxheShjb250ZW50KTtcbiAgICB9O1xuICAgIHRoaXMuaGFuZGxlRmlsZUlucHV0KGZpbGVzWzBdLCAncGhueCcsIGNhbGxiYWNrKTtcbiAgfVxuXG4gIGFzeW5jIGhhbmRsZVJPT1RJbnB1dChmaWxlczogRmlsZUxpc3QpIHtcbiAgICBjb25zdCByb290T2JqZWN0TmFtZSA9IHByb21wdCgnRW50ZXIgb2JqZWN0IG5hbWUgaW4gUk9PVCBmaWxlJyk7XG5cbiAgICBhd2FpdCB0aGlzLmV2ZW50RGlzcGxheS5sb2FkUm9vdEdlb21ldHJ5KFxuICAgICAgVVJMLmNyZWF0ZU9iamVjdFVSTChmaWxlc1swXSksXG4gICAgICByb290T2JqZWN0TmFtZSxcbiAgICAgIGZpbGVzWzBdLm5hbWUuc3BsaXQoJy4nKVswXSxcbiAgICApO1xuXG4gICAgdGhpcy5vbkNsb3NlKCk7XG4gIH1cblxuICBhc3luYyBoYW5kbGVSb290SlNPTklucHV0KGZpbGVzOiBGaWxlTGlzdCkge1xuICAgIGlmICghdGhpcy5pc0ZpbGVPZkV4dGVuc2lvbihmaWxlc1swXSwgJ2d6JykpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBjb25zdCBuYW1lID0gZmlsZXNbMF0ubmFtZS5zcGxpdCgnLicpWzBdO1xuICAgIGF3YWl0IHRoaXMuZXZlbnREaXNwbGF5LmxvYWRSb290SlNPTkdlb21ldHJ5KFxuICAgICAgVVJMLmNyZWF0ZU9iamVjdFVSTChmaWxlc1swXSksXG4gICAgICBuYW1lLFxuICAgICk7XG5cbiAgICB0aGlzLm9uQ2xvc2UoKTtcbiAgfVxuXG4gIGhhbmRsZUlnRXZlbnREYXRhSW5wdXQoZmlsZXM6IEZpbGVMaXN0KSB7XG4gICAgY29uc3QgY21zTG9hZGVyID0gbmV3IENNU0xvYWRlcigpO1xuICAgIGNtc0xvYWRlci5yZWFkSWdBcmNoaXZlKGZpbGVzWzBdLCAoYWxsRXZlbnRzOiBhbnlbXSkgPT4ge1xuICAgICAgY29uc3QgYWxsRXZlbnRzRGF0YSA9IGNtc0xvYWRlci5nZXRBbGxFdmVudHNEYXRhKGFsbEV2ZW50cyk7XG4gICAgICB0aGlzLmV2ZW50RGlzcGxheS5wYXJzZVBob2VuaXhFdmVudHMoYWxsRXZlbnRzRGF0YSk7XG4gICAgICB0aGlzLm9uQ2xvc2UoKTtcbiAgICB9KTtcbiAgfVxuXG4gIGFzeW5jIGhhbmRsZVppcEV2ZW50RGF0YUlucHV0KGZpbGVzOiBGaWxlTGlzdCkge1xuICAgIGlmICghdGhpcy5pc0ZpbGVPZkV4dGVuc2lvbihmaWxlc1swXSwgJ3ppcCcpKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgY29uc3QgYWxsRXZlbnRzT2JqZWN0ID0ge307XG4gICAgbGV0IGZpbGVzV2l0aERhdGE6IHsgW2ZpbGVOYW1lOiBzdHJpbmddOiBzdHJpbmcgfTtcblxuICAgIC8vIFVzaW5nIGEgdHJ5IGNhdGNoIGJsb2NrIHRvIGNhdGNoIGFueSBlcnJvcnMgaW4gUHJvbWlzZXNcbiAgICB0cnkge1xuICAgICAgZmlsZXNXaXRoRGF0YSA9IGF3YWl0IHJlYWRaaXBGaWxlKGZpbGVzWzBdKTtcbiAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgY29uc29sZS5lcnJvcignRXJyb3Igd2hpbGUgcmVhZGluZyB6aXAnLCBlcnJvcik7XG4gICAgICB0aGlzLmV2ZW50RGlzcGxheS5nZXRJbmZvTG9nZ2VyKCkuYWRkKCdDb3VsZCBub3QgcmVhZCB6aXAgZmlsZScsICdFcnJvcicpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIC8vIEpTT04gZXZlbnQgZGF0YVxuICAgIE9iamVjdC5rZXlzKGZpbGVzV2l0aERhdGEpXG4gICAgICAuZmlsdGVyKChmaWxlTmFtZSkgPT4gZmlsZU5hbWUuZW5kc1dpdGgoJy5qc29uJykpXG4gICAgICAuZm9yRWFjaCgoZmlsZU5hbWUpID0+IHtcbiAgICAgICAgT2JqZWN0LmFzc2lnbihhbGxFdmVudHNPYmplY3QsIEpTT04ucGFyc2UoZmlsZXNXaXRoRGF0YVtmaWxlTmFtZV0pKTtcbiAgICAgIH0pO1xuXG4gICAgLy8gSml2ZVhNTCBldmVudCBkYXRhXG4gICAgY29uc3Qgaml2ZWxvYWRlciA9IG5ldyBKaXZlWE1MTG9hZGVyKCk7XG4gICAgT2JqZWN0LmtleXMoZmlsZXNXaXRoRGF0YSlcbiAgICAgIC5maWx0ZXIoKGZpbGVOYW1lKSA9PiB7XG4gICAgICAgIHJldHVybiBmaWxlTmFtZS5lbmRzV2l0aCgnLnhtbCcpIHx8IGZpbGVOYW1lLnN0YXJ0c1dpdGgoJ0ppdmVYTUwnKTtcbiAgICAgIH0pXG4gICAgICAuZm9yRWFjaCgoZmlsZU5hbWUpID0+IHtcbiAgICAgICAgaml2ZWxvYWRlci5wcm9jZXNzKGZpbGVzV2l0aERhdGFbZmlsZU5hbWVdKTtcbiAgICAgICAgY29uc3QgZXZlbnREYXRhID0gaml2ZWxvYWRlci5nZXRFdmVudERhdGEoKTtcbiAgICAgICAgT2JqZWN0LmFzc2lnbihhbGxFdmVudHNPYmplY3QsIHsgW2ZpbGVOYW1lXTogZXZlbnREYXRhIH0pO1xuICAgICAgfSk7XG4gICAgLy8gRm9yIHNvbWUgcmVhc29uIHRoZSBhYm92ZSBkb2Vzbid0IHBpY2sgdXAgSml2ZVhNTF9YWFhfWVlZLnppcFxuXG4gICAgdGhpcy5ldmVudERpc3BsYXkucGFyc2VQaG9lbml4RXZlbnRzKGFsbEV2ZW50c09iamVjdCk7XG5cbiAgICB0aGlzLm9uQ2xvc2UoKTtcbiAgfVxuXG4gIGhhbmRsZUZpbGVJbnB1dChcbiAgICBmaWxlOiBGaWxlLFxuICAgIGV4dGVuc2lvbjogc3RyaW5nLFxuICAgIGNhbGxiYWNrOiAocmVzdWx0OiBzdHJpbmcsIGZpbGVOYW1lPzogc3RyaW5nKSA9PiB2b2lkLFxuICApIHtcbiAgICBjb25zdCByZWFkZXIgPSBuZXcgRmlsZVJlYWRlcigpO1xuXG4gICAgaWYgKHRoaXMuaXNGaWxlT2ZFeHRlbnNpb24oZmlsZSwgZXh0ZW5zaW9uKSkge1xuICAgICAgcmVhZGVyLm9ubG9hZCA9ICgpID0+IHtcbiAgICAgICAgY2FsbGJhY2socmVhZGVyLnJlc3VsdC50b1N0cmluZygpLCBmaWxlLm5hbWUuc3BsaXQoJy4nKVswXSk7XG4gICAgICB9O1xuICAgICAgcmVhZGVyLnJlYWRBc1RleHQoZmlsZSk7XG4gICAgfVxuXG4gICAgdGhpcy5vbkNsb3NlKCk7XG4gIH1cblxuICBwcml2YXRlIGlzRmlsZU9mRXh0ZW5zaW9uKGZpbGU6IEZpbGUsIGV4dGVuc2lvbjogc3RyaW5nKTogYm9vbGVhbiB7XG4gICAgaWYgKGZpbGUubmFtZS5zcGxpdCgnLicpLnBvcCgpID09PSBleHRlbnNpb24pIHtcbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cblxuICAgIGNvbnNvbGUuZXJyb3IoJ0Vycm9yOiBJbnZhbGlkIGZpbGUgZm9ybWF0IScpO1xuICAgIHRoaXMuZXZlbnREaXNwbGF5LmdldEluZm9Mb2dnZXIoKS5hZGQoJ0ludmFsaWQgZmlsZSBmb3JtYXQhJywgJ0Vycm9yJyk7XG5cbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cblxuICBzYXZlU2NlbmUoKSB7XG4gICAgdGhpcy5ldmVudERpc3BsYXkuZXhwb3J0UGhvZW5peERpc3BsYXkoKTtcbiAgfVxuXG4gIGV4cG9ydE9CSigpIHtcbiAgICB0aGlzLmV2ZW50RGlzcGxheS5leHBvcnRUb09CSigpO1xuICB9XG59XG4iLCI8ZGl2IGNsYXNzPVwiZGlhbG9nXCI+XG4gIDxoMSBtYXQtZGlhbG9nLXRpdGxlPkltcG9ydCBhbmQgZXhwb3J0PC9oMT5cbiAgPGRpdiBtYXQtZGlhbG9nLWNvbnRlbnQgY2xhc3M9XCJkaWFsb2ctY29udGVudFwiPlxuICAgIDxkaXYgKm5nSWY9XCJldmVudERhdGFJbXBvcnRPcHRpb25zLmxlbmd0aCA+IDBcIj5cbiAgICAgIDxwIGNsYXNzPVwidGV4dC1jZW50ZXJcIj48Yj5FdmVudCBkYXRhPC9iPjwvcD5cblxuICAgICAgPGRpdiBjbGFzcz1cInJvdyBjZW50ZXJlZFwiPlxuICAgICAgICA8bmctY29udGFpbmVyXG4gICAgICAgICAgKm5nRm9yPVwibGV0IGV2ZW50RGF0YUltcG9ydE9wdGlvbiBvZiBldmVudERhdGFPcHRpb25zV2l0aEhhbmRsZXJcIlxuICAgICAgICA+XG4gICAgICAgICAgPGlucHV0XG4gICAgICAgICAgICAjZXZlbnREYXRhRmlsZUlucHV0XG4gICAgICAgICAgICB0eXBlPVwiZmlsZVwiXG4gICAgICAgICAgICB0YWJpbmRleD1cIi0xXCJcbiAgICAgICAgICAgIGNsYXNzPVwiZmlsZS1pbnB1dFwiXG4gICAgICAgICAgICBbYWNjZXB0XT1cImV2ZW50RGF0YUltcG9ydE9wdGlvbi5hY2NlcHRcIlxuICAgICAgICAgICAgKGNoYW5nZSk9XCJldmVudERhdGFJbXBvcnRPcHRpb24uaGFuZGxlcigkZXZlbnQudGFyZ2V0LmZpbGVzKVwiXG4gICAgICAgICAgLz5cbiAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICBjbGFzcz1cImZpbGUtaW5wdXQtYnV0dG9uXCJcbiAgICAgICAgICAgIChjbGljayk9XCJldmVudERhdGFGaWxlSW5wdXQuY2xpY2soKVwiXG4gICAgICAgICAgPlxuICAgICAgICAgICAgPGltZyBzcmM9XCJhc3NldHMvaWNvbnMvZXZlbnREYXRhLnN2Z1wiIGFsdD1cIkV2ZW50IGRhdGEgaWNvblwiIC8+XG4gICAgICAgICAgICBMb2FkIHt7IGV2ZW50RGF0YUltcG9ydE9wdGlvbi5maWxlVHlwZSB9fVxuICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuXG4gICAgPHAgY2xhc3M9XCJ0ZXh0LWNlbnRlclwiPjxiPkdlb21ldHJpZXM8L2I+PC9wPlxuXG4gICAgPGRpdiBjbGFzcz1cInJvdyBjZW50ZXJlZFwiPlxuICAgICAgPGlucHV0XG4gICAgICAgICNvYmpGaWxlSW5wdXRcbiAgICAgICAgdHlwZT1cImZpbGVcIlxuICAgICAgICB0YWJpbmRleD1cIi0xXCJcbiAgICAgICAgY2xhc3M9XCJmaWxlLWlucHV0XCJcbiAgICAgICAgYWNjZXB0PVwiLm9ialwiXG4gICAgICAgIG5hbWU9XCJpbWFnZVwiXG4gICAgICAgIChjaGFuZ2UpPVwiaGFuZGxlT0JKSW5wdXQoJGV2ZW50LnRhcmdldC5maWxlcylcIlxuICAgICAgLz5cbiAgICAgIDxidXR0b24gY2xhc3M9XCJmaWxlLWlucHV0LWJ1dHRvblwiIChjbGljayk9XCJvYmpGaWxlSW5wdXQuY2xpY2soKVwiPlxuICAgICAgICA8aW1nIHNyYz1cImFzc2V0cy9pY29ucy9vYmouc3ZnXCIgYWx0PVwiXCIgLz4gTG9hZCAub2JqXG4gICAgICA8L2J1dHRvbj5cblxuICAgICAgPGlucHV0XG4gICAgICAgICNnbHRmRmlsZUlucHV0XG4gICAgICAgIHR5cGU9XCJmaWxlXCJcbiAgICAgICAgdGFiaW5kZXg9XCItMVwiXG4gICAgICAgIGNsYXNzPVwiZmlsZS1pbnB1dFwiXG4gICAgICAgIGFjY2VwdD1cIi5nbHRmXCJcbiAgICAgICAgbmFtZT1cImltYWdlXCJcbiAgICAgICAgKGNoYW5nZSk9XCJoYW5kbGVHTFRGSW5wdXQoJGV2ZW50LnRhcmdldC5maWxlcylcIlxuICAgICAgLz5cbiAgICAgIDxidXR0b24gY2xhc3M9XCJmaWxlLWlucHV0LWJ1dHRvblwiIChjbGljayk9XCJnbHRmRmlsZUlucHV0LmNsaWNrKClcIj5cbiAgICAgICAgPGltZyBzcmM9XCJhc3NldHMvaWNvbnMvZ2x0Zi5zdmdcIiBhbHQ9XCJcIiAvPiBMb2FkIC5nbHRmXG4gICAgICA8L2J1dHRvbj5cblxuICAgICAgPGlucHV0XG4gICAgICAgICNyb290RmlsZUlucHV0XG4gICAgICAgIHR5cGU9XCJmaWxlXCJcbiAgICAgICAgdGFiaW5kZXg9XCItMVwiXG4gICAgICAgIGNsYXNzPVwiZmlsZS1pbnB1dFwiXG4gICAgICAgIGFjY2VwdD1cIi5yb290XCJcbiAgICAgICAgKGNoYW5nZSk9XCJoYW5kbGVST09USW5wdXQoJGV2ZW50LnRhcmdldC5maWxlcylcIlxuICAgICAgLz5cbiAgICAgIDxidXR0b24gY2xhc3M9XCJmaWxlLWlucHV0LWJ1dHRvblwiIChjbGljayk9XCJyb290RmlsZUlucHV0LmNsaWNrKClcIj5cbiAgICAgICAgPGltZyBzcmM9XCJhc3NldHMvaWNvbnMvZmlsZS1pbXBvcnQuc3ZnXCIgYWx0PVwiXCIgLz4gTG9hZCAucm9vdFxuICAgICAgPC9idXR0b24+XG5cbiAgICAgIDxpbnB1dFxuICAgICAgICAjcm9vdEpTT05GaWxlSW5wdXRcbiAgICAgICAgdHlwZT1cImZpbGVcIlxuICAgICAgICB0YWJpbmRleD1cIi0xXCJcbiAgICAgICAgY2xhc3M9XCJmaWxlLWlucHV0XCJcbiAgICAgICAgYWNjZXB0PVwiLmpzb24uZ3pcIlxuICAgICAgICAoY2hhbmdlKT1cImhhbmRsZVJvb3RKU09OSW5wdXQoJGV2ZW50LnRhcmdldC5maWxlcylcIlxuICAgICAgLz5cbiAgICAgIDxidXR0b24gY2xhc3M9XCJmaWxlLWlucHV0LWJ1dHRvblwiIChjbGljayk9XCJyb290SlNPTkZpbGVJbnB1dC5jbGljaygpXCI+XG4gICAgICAgIDxpbWcgc3JjPVwiYXNzZXRzL2ljb25zL2ZpbGUtaW1wb3J0LnN2Z1wiIGFsdD1cIlwiIC8+IExvYWQgLmpzb24uZ3pcbiAgICAgIDwvYnV0dG9uPlxuICAgIDwvZGl2PlxuXG4gICAgPHAgY2xhc3M9XCJ0ZXh0LWNlbnRlclwiPjxiPlNjZW5lPC9iPjwvcD5cblxuICAgIDxkaXYgY2xhc3M9XCJyb3cgY2VudGVyZWRcIj5cbiAgICAgIDxidXR0b25cbiAgICAgICAgY2xhc3M9XCJmaWxlLWlucHV0LWJ1dHRvbiBsb2FkLWV4cG9ydFwiXG4gICAgICAgIGlkPVwiZXhwb3J0U2NlbmVcIlxuICAgICAgICAoY2xpY2spPVwic2F2ZVNjZW5lKClcIlxuICAgICAgPlxuICAgICAgICA8aW1nIHNyYz1cImFzc2V0cy9pY29ucy9zYXZlLnN2Z1wiIGFsdD1cIlwiIC8+IFNhdmUgc2NlbmVcbiAgICAgIDwvYnV0dG9uPlxuXG4gICAgICA8aW5wdXRcbiAgICAgICAgI2xvYWRTY2VuZUlucHV0XG4gICAgICAgIHR5cGU9XCJmaWxlXCJcbiAgICAgICAgdGFiaW5kZXg9XCItMVwiXG4gICAgICAgIGNsYXNzPVwiZmlsZS1pbnB1dFwiXG4gICAgICAgIGFjY2VwdD1cIi5waG54XCJcbiAgICAgICAgbmFtZT1cImltYWdlXCJcbiAgICAgICAgKGNoYW5nZSk9XCJoYW5kbGVQaG9lbml4SW5wdXQoJGV2ZW50LnRhcmdldC5maWxlcylcIlxuICAgICAgLz5cbiAgICAgIDxidXR0b25cbiAgICAgICAgY2xhc3M9XCJmaWxlLWlucHV0LWJ1dHRvbiBsb2FkLWV4cG9ydFwiXG4gICAgICAgIGlkPVwiaW1wb3J0U2NlbmVcIlxuICAgICAgICAoY2xpY2spPVwibG9hZFNjZW5lSW5wdXQuY2xpY2soKVwiXG4gICAgICA+XG4gICAgICAgIDxpbWcgc3JjPVwiYXNzZXRzL2ljb25zL3VwbG9hZC5zdmdcIiBhbHQ9XCJcIiAvPiBMb2FkIHNjZW5lXG4gICAgICA8L2J1dHRvbj5cblxuICAgICAgPGJ1dHRvblxuICAgICAgICBjbGFzcz1cImZpbGUtaW5wdXQtYnV0dG9uIGV4cG9ydC1idXR0b25cIlxuICAgICAgICBpZD1cImV4cG9ydE9CSlwiXG4gICAgICAgIChjbGljayk9XCJleHBvcnRPQkooKVwiXG4gICAgICA+XG4gICAgICAgIDxpbWcgc3JjPVwiYXNzZXRzL2ljb25zL29iai5zdmdcIiBhbHQ9XCJcIiAvPiBTYXZlIE9CSlxuICAgICAgPC9idXR0b24+XG4gICAgPC9kaXY+XG4gIDwvZGl2PlxuXG4gIDxkaXYgbWF0LWRpYWxvZy1hY3Rpb25zIGFsaWduPVwiZW5kXCI+XG4gICAgPGJ1dHRvbiBtYXQtZmxhdC1idXR0b24gY29sb3I9XCJwcmltYXJ5XCIgKGNsaWNrKT1cIm9uQ2xvc2UoKVwiIGNka0ZvY3VzSW5pdGlhbD5cbiAgICAgIENsb3NlXG4gICAgPC9idXR0b24+XG4gIDwvZGl2PlxuPC9kaXY+XG4iXX0=
|