phoenix-ui-components 2.1.0 → 2.5.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 +1 -1
- package/_theming.scss +14 -7
- package/dist/README.md +1 -1
- package/dist/components/embed-menu/embed-menu.component.d.ts +3 -0
- package/dist/components/embed-menu/experiment-link/experiment-link.component.d.ts +3 -0
- package/dist/components/loader/loader.component.d.ts +3 -0
- package/dist/components/nav/nav.component.d.ts +3 -0
- package/dist/components/phoenix-menu/config/config-slider/config-slider.component.d.ts +3 -0
- package/dist/components/phoenix-menu/pheonix-menu-item/phoenix-menu-item.component.d.ts +3 -0
- package/dist/components/phoenix-menu/phoenix-menu.component.d.ts +3 -0
- package/dist/components/phoenix-ui.module.d.ts +56 -0
- package/dist/components/ui-menu/animate-camera/animate-camera.component.d.ts +3 -0
- package/dist/components/ui-menu/animate-event/animate-event.component.d.ts +3 -0
- package/dist/components/ui-menu/ar-toggle/ar-toggle.component.d.ts +4 -1
- package/dist/components/ui-menu/auto-rotate/auto-rotate.component.d.ts +3 -0
- package/dist/components/ui-menu/collections-info/collections-info-overlay/collections-info-overlay.component.d.ts +10 -2
- package/dist/components/ui-menu/collections-info/collections-info.component.d.ts +3 -0
- package/dist/components/ui-menu/dark-theme/dark-theme.component.d.ts +3 -0
- package/dist/components/ui-menu/event-selector/event-selector.component.d.ts +3 -0
- package/dist/components/ui-menu/experiment-info/experiment-info.component.d.ts +3 -0
- package/dist/components/ui-menu/info-panel/info-panel-overlay/info-panel-overlay.component.d.ts +5 -0
- package/dist/components/ui-menu/info-panel/info-panel.component.d.ts +3 -0
- package/dist/components/ui-menu/io-options/io-options-dialog/io-options-dialog.component.d.ts +3 -0
- package/dist/components/ui-menu/io-options/io-options.component.d.ts +3 -0
- package/dist/components/ui-menu/main-view-toggle/main-view-toggle.component.d.ts +3 -0
- package/dist/components/ui-menu/menu-toggle/menu-toggle.component.d.ts +3 -0
- package/dist/components/ui-menu/object-clipping/object-clipping.component.d.ts +3 -0
- package/dist/components/ui-menu/object-selection/object-selection-overlay/object-selection-overlay.component.d.ts +3 -0
- package/dist/components/ui-menu/object-selection/object-selection.component.d.ts +3 -0
- package/dist/components/ui-menu/overlay/overlay.component.d.ts +3 -0
- package/dist/components/ui-menu/overlay-view/overlay-view-window/overlay-view-window.component.d.ts +3 -0
- package/dist/components/ui-menu/overlay-view/overlay-view.component.d.ts +3 -0
- package/dist/components/ui-menu/performance-toggle/performance-toggle.component.d.ts +3 -0
- package/dist/components/ui-menu/share-link/share-link-dialog/share-link-dialog.component.d.ts +10 -2
- package/dist/components/ui-menu/share-link/share-link.component.d.ts +3 -0
- package/dist/components/ui-menu/ss-mode/ss-mode.component.d.ts +3 -0
- package/dist/components/ui-menu/tree-menu/tree-menu-item/tree-menu-item.component.d.ts +3 -0
- package/dist/components/ui-menu/tree-menu/tree-menu.component.d.ts +3 -0
- package/dist/components/ui-menu/ui-menu.component.d.ts +3 -0
- package/dist/components/ui-menu/view-options/view-options.component.d.ts +3 -0
- package/dist/components/ui-menu/vr-toggle/vr-toggle.component.d.ts +3 -0
- package/dist/components/ui-menu/zoom-controls/zoom-controls.component.d.ts +3 -0
- package/dist/esm2020/components/embed-menu/embed-menu.component.mjs +17 -0
- package/dist/esm2020/components/embed-menu/experiment-link/experiment-link.component.mjs +18 -0
- package/dist/esm2020/components/loader/loader.component.mjs +19 -0
- package/dist/esm2020/components/nav/nav.component.mjs +14 -0
- package/dist/esm2020/components/phoenix-menu/config/config-slider/config-slider.component.mjs +38 -0
- package/dist/{esm2015/components/phoenix-menu/index.js → esm2020/components/phoenix-menu/index.mjs} +1 -1
- package/dist/esm2020/components/phoenix-menu/pheonix-menu-item/phoenix-menu-item.component.mjs +32 -0
- package/dist/esm2020/components/phoenix-menu/phoenix-menu.component.mjs +14 -0
- package/dist/esm2020/components/phoenix-ui.module.mjs +201 -0
- package/dist/esm2020/components/ui-menu/animate-camera/animate-camera.component.mjs +76 -0
- package/dist/esm2020/components/ui-menu/animate-event/animate-event.component.mjs +25 -0
- package/dist/esm2020/components/ui-menu/ar-toggle/ar-toggle.component.mjs +47 -0
- package/dist/esm2020/components/ui-menu/auto-rotate/auto-rotate.component.mjs +21 -0
- package/dist/esm2020/components/ui-menu/collections-info/collections-info-overlay/collections-info-overlay.component.mjs +81 -0
- package/dist/esm2020/components/ui-menu/collections-info/collections-info.component.mjs +32 -0
- package/dist/esm2020/components/ui-menu/dark-theme/dark-theme.component.mjs +24 -0
- package/dist/esm2020/components/ui-menu/event-selector/event-selector.component.mjs +24 -0
- package/dist/esm2020/components/ui-menu/experiment-info/experiment-info.component.mjs +26 -0
- package/dist/{esm2015/components/ui-menu/index.js → esm2020/components/ui-menu/index.mjs} +1 -1
- package/dist/esm2020/components/ui-menu/info-panel/info-panel-overlay/info-panel-overlay.component.mjs +37 -0
- package/dist/esm2020/components/ui-menu/info-panel/info-panel.component.mjs +49 -0
- package/dist/esm2020/components/ui-menu/io-options/io-options-dialog/io-options-dialog.component.mjs +196 -0
- package/dist/esm2020/components/ui-menu/io-options/io-options.component.mjs +28 -0
- package/dist/esm2020/components/ui-menu/main-view-toggle/main-view-toggle.component.mjs +24 -0
- package/dist/esm2020/components/ui-menu/menu-toggle/menu-toggle.component.mjs +24 -0
- package/dist/esm2020/components/ui-menu/object-clipping/object-clipping.component.mjs +31 -0
- package/dist/esm2020/components/ui-menu/object-selection/object-selection-overlay/object-selection-overlay.component.mjs +24 -0
- package/dist/esm2020/components/ui-menu/object-selection/object-selection.component.mjs +36 -0
- package/dist/esm2020/components/ui-menu/overlay/overlay.component.mjs +99 -0
- package/dist/esm2020/components/ui-menu/overlay-view/overlay-view-window/overlay-view-window.component.mjs +53 -0
- package/dist/esm2020/components/ui-menu/overlay-view/overlay-view.component.mjs +32 -0
- package/dist/esm2020/components/ui-menu/performance-toggle/performance-toggle.component.mjs +21 -0
- package/dist/esm2020/components/ui-menu/share-link/share-link-dialog/share-link-dialog.component.mjs +73 -0
- package/dist/esm2020/components/ui-menu/share-link/share-link.component.mjs +20 -0
- package/dist/esm2020/components/ui-menu/ss-mode/ss-mode.component.mjs +41 -0
- package/dist/esm2020/components/ui-menu/tree-menu/tree-menu-item/tree-menu-item.component.mjs +33 -0
- package/dist/esm2020/components/ui-menu/tree-menu/tree-menu.component.mjs +71 -0
- package/dist/esm2020/components/ui-menu/ui-menu.component.mjs +43 -0
- package/dist/esm2020/components/ui-menu/view-options/view-options.component.mjs +34 -0
- package/dist/esm2020/components/ui-menu/vr-toggle/vr-toggle.component.mjs +44 -0
- package/dist/esm2020/components/ui-menu/zoom-controls/zoom-controls.component.mjs +61 -0
- package/dist/esm2020/phoenix-ui-components.mjs +5 -0
- package/dist/esm2020/public_api.mjs +9 -0
- package/dist/esm2020/services/event-display.service.mjs +23 -0
- package/dist/esm2020/services/extras/attribute.pipe.mjs +33 -0
- package/dist/{esm2015/services/extras/event-data-import.js → esm2020/services/extras/event-data-import.mjs} +1 -1
- package/dist/esm2020/services/index.mjs +4 -0
- package/dist/fesm2015/phoenix-ui-components.mjs +1644 -0
- package/dist/fesm2015/phoenix-ui-components.mjs.map +1 -0
- package/dist/fesm2020/phoenix-ui-components.mjs +1644 -0
- package/dist/fesm2020/phoenix-ui-components.mjs.map +1 -0
- package/dist/phoenix-ui-components.d.ts +2 -6
- package/dist/{index.d.ts → public_api.d.ts} +2 -0
- package/dist/services/event-display.service.d.ts +3 -0
- package/dist/services/extras/attribute.pipe.d.ts +3 -0
- package/dist/services/index.d.ts +1 -0
- package/package.json +7 -6
- package/dist/bundles/phoenix-ui-components.umd.js +0 -2133
- package/dist/bundles/phoenix-ui-components.umd.js.map +0 -1
- package/dist/esm2015/components/embed-menu/embed-menu.component.js +0 -11
- package/dist/esm2015/components/embed-menu/experiment-link/experiment-link.component.js +0 -17
- package/dist/esm2015/components/loader/loader.component.js +0 -18
- package/dist/esm2015/components/nav/nav.component.js +0 -14
- package/dist/esm2015/components/phoenix-menu/config/config-slider/config-slider.component.js +0 -32
- package/dist/esm2015/components/phoenix-menu/pheonix-menu-item/phoenix-menu-item.component.js +0 -29
- package/dist/esm2015/components/phoenix-menu/phoenix-menu.component.js +0 -14
- package/dist/esm2015/components/phoenix-ui.module.js +0 -94
- package/dist/esm2015/components/ui-menu/animate-camera/animate-camera.component.js +0 -77
- package/dist/esm2015/components/ui-menu/animate-event/animate-event.component.js +0 -27
- package/dist/esm2015/components/ui-menu/ar-toggle/ar-toggle.component.js +0 -45
- package/dist/esm2015/components/ui-menu/auto-rotate/auto-rotate.component.js +0 -23
- package/dist/esm2015/components/ui-menu/collections-info/collections-info-overlay/collections-info-overlay.component.js +0 -61
- package/dist/esm2015/components/ui-menu/collections-info/collections-info.component.js +0 -34
- package/dist/esm2015/components/ui-menu/dark-theme/dark-theme.component.js +0 -26
- package/dist/esm2015/components/ui-menu/event-selector/event-selector.component.js +0 -25
- package/dist/esm2015/components/ui-menu/experiment-info/experiment-info.component.js +0 -27
- package/dist/esm2015/components/ui-menu/info-panel/info-panel-overlay/info-panel-overlay.component.js +0 -36
- package/dist/esm2015/components/ui-menu/info-panel/info-panel.component.js +0 -51
- package/dist/esm2015/components/ui-menu/io-options/io-options-dialog/io-options-dialog.component.js +0 -202
- package/dist/esm2015/components/ui-menu/io-options/io-options.component.js +0 -31
- package/dist/esm2015/components/ui-menu/main-view-toggle/main-view-toggle.component.js +0 -25
- package/dist/esm2015/components/ui-menu/menu-toggle/menu-toggle.component.js +0 -20
- package/dist/esm2015/components/ui-menu/object-clipping/object-clipping.component.js +0 -30
- package/dist/esm2015/components/ui-menu/object-selection/object-selection-overlay/object-selection-overlay.component.js +0 -25
- package/dist/esm2015/components/ui-menu/object-selection/object-selection.component.js +0 -39
- package/dist/esm2015/components/ui-menu/overlay/overlay.component.js +0 -90
- package/dist/esm2015/components/ui-menu/overlay-view/overlay-view-window/overlay-view-window.component.js +0 -52
- package/dist/esm2015/components/ui-menu/overlay-view/overlay-view.component.js +0 -34
- package/dist/esm2015/components/ui-menu/performance-toggle/performance-toggle.component.js +0 -23
- package/dist/esm2015/components/ui-menu/share-link/share-link-dialog/share-link-dialog.component.js +0 -63
- package/dist/esm2015/components/ui-menu/share-link/share-link.component.js +0 -22
- package/dist/esm2015/components/ui-menu/ss-mode/ss-mode.component.js +0 -43
- package/dist/esm2015/components/ui-menu/tree-menu/tree-menu-item/tree-menu-item.component.js +0 -32
- package/dist/esm2015/components/ui-menu/tree-menu/tree-menu.component.js +0 -71
- package/dist/esm2015/components/ui-menu/ui-menu.component.js +0 -22
- package/dist/esm2015/components/ui-menu/view-options/view-options.component.js +0 -33
- package/dist/esm2015/components/ui-menu/vr-toggle/vr-toggle.component.js +0 -45
- package/dist/esm2015/components/ui-menu/zoom-controls/zoom-controls.component.js +0 -63
- package/dist/esm2015/index.js +0 -7
- package/dist/esm2015/phoenix-ui-components.js +0 -10
- package/dist/esm2015/services/event-display.service.js +0 -22
- package/dist/esm2015/services/extras/attribute.pipe.js +0 -29
- package/dist/esm2015/services/index.js +0 -3
- package/dist/fesm2015/phoenix-ui-components.js +0 -1606
- package/dist/fesm2015/phoenix-ui-components.js.map +0 -1
- package/dist/phoenix-ui-components.metadata.json +0 -1
|
@@ -0,0 +1,49 @@
|
|
|
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
|
+
/**
|
|
12
|
+
* Create the info panel toggle
|
|
13
|
+
* @param overlay Info panel overlay containing logger data
|
|
14
|
+
*/
|
|
15
|
+
constructor(overlay) {
|
|
16
|
+
this.overlay = overlay;
|
|
17
|
+
/** @ignore */
|
|
18
|
+
this.showInfoPanel = false;
|
|
19
|
+
}
|
|
20
|
+
/**
|
|
21
|
+
* Create the info panel overlay
|
|
22
|
+
*/
|
|
23
|
+
ngOnInit() {
|
|
24
|
+
const overlayRef = this.overlay.create();
|
|
25
|
+
const overlayPortal = new ComponentPortal(InfoPanelOverlayComponent);
|
|
26
|
+
this.overlayWindow = overlayRef.attach(overlayPortal);
|
|
27
|
+
this.overlayWindow.instance.showInfoPanel = this.showInfoPanel;
|
|
28
|
+
}
|
|
29
|
+
/**
|
|
30
|
+
* Destroy the info panel overlay
|
|
31
|
+
*/
|
|
32
|
+
ngOnDestroy() {
|
|
33
|
+
this.overlayWindow.destroy();
|
|
34
|
+
}
|
|
35
|
+
/**
|
|
36
|
+
* Toggle the info panel overlay
|
|
37
|
+
*/
|
|
38
|
+
toggleOverlay() {
|
|
39
|
+
this.showInfoPanel = !this.showInfoPanel;
|
|
40
|
+
this.overlayWindow.instance.showInfoPanel = this.showInfoPanel;
|
|
41
|
+
}
|
|
42
|
+
}
|
|
43
|
+
InfoPanelComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.3", ngImport: i0, type: InfoPanelComponent, deps: [{ token: i1.Overlay }], target: i0.ɵɵFactoryTarget.Component });
|
|
44
|
+
InfoPanelComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.0.3", type: InfoPanelComponent, selector: "app-info-panel", ngImport: i0, template: "<app-menu-toggle\n tooltip=\"Info panel\"\n icon=\"info-panel\"\n [active]=\"showInfoPanel\"\n (click)=\"toggleOverlay()\"\n>\n</app-menu-toggle>\n", styles: [""], components: [{ type: i2.MenuToggleComponent, selector: "app-menu-toggle", inputs: ["icon", "active", "tooltip", "disabled"] }] });
|
|
45
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.3", ngImport: i0, type: InfoPanelComponent, decorators: [{
|
|
46
|
+
type: Component,
|
|
47
|
+
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", styles: [""] }]
|
|
48
|
+
}], ctorParameters: function () { return [{ type: i1.Overlay }]; } });
|
|
49
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5mby1wYW5lbC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9saWIvY29tcG9uZW50cy91aS1tZW51L2luZm8tcGFuZWwvaW5mby1wYW5lbC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi9saWIvY29tcG9uZW50cy91aS1tZW51L2luZm8tcGFuZWwvaW5mby1wYW5lbC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFtQyxNQUFNLGVBQWUsQ0FBQztBQUUzRSxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDdEQsT0FBTyxFQUFFLHlCQUF5QixFQUFFLE1BQU0sbURBQW1ELENBQUM7Ozs7QUFFOUY7O0dBRUc7QUFNSCxNQUFNLE9BQU8sa0JBQWtCO0lBTTdCOzs7T0FHRztJQUNILFlBQW9CLE9BQWdCO1FBQWhCLFlBQU8sR0FBUCxPQUFPLENBQVM7UUFUcEMsY0FBYztRQUNkLGtCQUFhLEdBQUcsS0FBSyxDQUFDO0lBUWlCLENBQUM7SUFFeEM7O09BRUc7SUFDSCxRQUFRO1FBQ04sTUFBTSxVQUFVLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxNQUFNLEVBQUUsQ0FBQztRQUN6QyxNQUFNLGFBQWEsR0FBRyxJQUFJLGVBQWUsQ0FBQyx5QkFBeUIsQ0FBQyxDQUFDO1FBQ3JFLElBQUksQ0FBQyxhQUFhLEdBQUcsVUFBVSxDQUFDLE1BQU0sQ0FBQyxhQUFhLENBQUMsQ0FBQztRQUN0RCxJQUFJLENBQUMsYUFBYSxDQUFDLFFBQVEsQ0FBQyxhQUFhLEdBQUcsSUFBSSxDQUFDLGFBQWEsQ0FBQztJQUNqRSxDQUFDO0lBRUQ7O09BRUc7SUFDSCxXQUFXO1FBQ1QsSUFBSSxDQUFDLGFBQWEsQ0FBQyxPQUFPLEVBQUUsQ0FBQztJQUMvQixDQUFDO0lBRUQ7O09BRUc7SUFDSCxhQUFhO1FBQ1gsSUFBSSxDQUFDLGFBQWEsR0FBRyxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUM7UUFDekMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxRQUFRLENBQUMsYUFBYSxHQUFHLElBQUksQ0FBQyxhQUFhLENBQUM7SUFDakUsQ0FBQzs7K0dBbkNVLGtCQUFrQjttR0FBbEIsa0JBQWtCLHNEQ2IvQix5SkFPQTsyRkRNYSxrQkFBa0I7a0JBTDlCLFNBQVM7K0JBQ0UsZ0JBQWdCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBPbkluaXQsIENvbXBvbmVudFJlZiwgT25EZXN0cm95IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBPdmVybGF5IH0gZnJvbSAnQGFuZ3VsYXIvY2RrL292ZXJsYXknO1xuaW1wb3J0IHsgQ29tcG9uZW50UG9ydGFsIH0gZnJvbSAnQGFuZ3VsYXIvY2RrL3BvcnRhbCc7XG5pbXBvcnQgeyBJbmZvUGFuZWxPdmVybGF5Q29tcG9uZW50IH0gZnJvbSAnLi9pbmZvLXBhbmVsLW92ZXJsYXkvaW5mby1wYW5lbC1vdmVybGF5LmNvbXBvbmVudCc7XG5cbi8qKlxuICogQ29tcG9uZW50IGZvciB0b2dnbGluZyBpbmZvIHBhbmVsIG92ZXJsYXlcbiAqL1xuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnYXBwLWluZm8tcGFuZWwnLFxuICB0ZW1wbGF0ZVVybDogJy4vaW5mby1wYW5lbC5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL2luZm8tcGFuZWwuY29tcG9uZW50LnNjc3MnXSxcbn0pXG5leHBvcnQgY2xhc3MgSW5mb1BhbmVsQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBPbkRlc3Ryb3kge1xuICAvKiogQGlnbm9yZSAqL1xuICBzaG93SW5mb1BhbmVsID0gZmFsc2U7XG4gIC8qKiBJbmZvcm1hdGlvbiBwYW5lbCBvdmVybGF5IHdpbmRvdyAqL1xuICBvdmVybGF5V2luZG93OiBDb21wb25lbnRSZWY8SW5mb1BhbmVsT3ZlcmxheUNvbXBvbmVudD47XG5cbiAgLyoqXG4gICAqIENyZWF0ZSB0aGUgaW5mbyBwYW5lbCB0b2dnbGVcbiAgICogQHBhcmFtIG92ZXJsYXkgSW5mbyBwYW5lbCBvdmVybGF5IGNvbnRhaW5pbmcgbG9nZ2VyIGRhdGFcbiAgICovXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgb3ZlcmxheTogT3ZlcmxheSkge31cblxuICAvKipcbiAgICogQ3JlYXRlIHRoZSBpbmZvIHBhbmVsIG92ZXJsYXlcbiAgICovXG4gIG5nT25Jbml0KCkge1xuICAgIGNvbnN0IG92ZXJsYXlSZWYgPSB0aGlzLm92ZXJsYXkuY3JlYXRlKCk7XG4gICAgY29uc3Qgb3ZlcmxheVBvcnRhbCA9IG5ldyBDb21wb25lbnRQb3J0YWwoSW5mb1BhbmVsT3ZlcmxheUNvbXBvbmVudCk7XG4gICAgdGhpcy5vdmVybGF5V2luZG93ID0gb3ZlcmxheVJlZi5hdHRhY2gob3ZlcmxheVBvcnRhbCk7XG4gICAgdGhpcy5vdmVybGF5V2luZG93Lmluc3RhbmNlLnNob3dJbmZvUGFuZWwgPSB0aGlzLnNob3dJbmZvUGFuZWw7XG4gIH1cblxuICAvKipcbiAgICogRGVzdHJveSB0aGUgaW5mbyBwYW5lbCBvdmVybGF5XG4gICAqL1xuICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICB0aGlzLm92ZXJsYXlXaW5kb3cuZGVzdHJveSgpO1xuICB9XG5cbiAgLyoqXG4gICAqIFRvZ2dsZSB0aGUgaW5mbyBwYW5lbCBvdmVybGF5XG4gICAqL1xuICB0b2dnbGVPdmVybGF5KCkge1xuICAgIHRoaXMuc2hvd0luZm9QYW5lbCA9ICF0aGlzLnNob3dJbmZvUGFuZWw7XG4gICAgdGhpcy5vdmVybGF5V2luZG93Lmluc3RhbmNlLnNob3dJbmZvUGFuZWwgPSB0aGlzLnNob3dJbmZvUGFuZWw7XG4gIH1cbn1cbiIsIjxhcHAtbWVudS10b2dnbGVcbiAgdG9vbHRpcD1cIkluZm8gcGFuZWxcIlxuICBpY29uPVwiaW5mby1wYW5lbFwiXG4gIFthY3RpdmVdPVwic2hvd0luZm9QYW5lbFwiXG4gIChjbGljayk9XCJ0b2dnbGVPdmVybGF5KClcIlxuPlxuPC9hcHAtbWVudS10b2dnbGU+XG4iXX0=
|
package/dist/esm2020/components/ui-menu/io-options/io-options-dialog/io-options-dialog.component.mjs
ADDED
|
@@ -0,0 +1,196 @@
|
|
|
1
|
+
import { Component, Input } from '@angular/core';
|
|
2
|
+
import { CMSLoader, JiveXMLLoader, ScriptLoader } from 'phoenix-event-display';
|
|
3
|
+
import JSZip from 'jszip';
|
|
4
|
+
import { EventDataFormat, ImportOption, } from '../../../../services/extras/event-data-import';
|
|
5
|
+
import * as i0 from "@angular/core";
|
|
6
|
+
import * as i1 from "../../../../services/event-display.service";
|
|
7
|
+
import * as i2 from "@angular/material/dialog";
|
|
8
|
+
import * as i3 from "@angular/material/button";
|
|
9
|
+
import * as i4 from "@angular/common";
|
|
10
|
+
export class IOOptionsDialogComponent {
|
|
11
|
+
constructor(eventDisplay, dialogRef) {
|
|
12
|
+
this.eventDisplay = eventDisplay;
|
|
13
|
+
this.dialogRef = dialogRef;
|
|
14
|
+
this.eventDataImportOptions = [EventDataFormat.JSON];
|
|
15
|
+
this.supportedEventDataFormats = [
|
|
16
|
+
new ImportOption(EventDataFormat.JSON, '.json', this.handleJSONEventDataInput.bind(this), 'application/json'),
|
|
17
|
+
new ImportOption(EventDataFormat.JIVEXML, '.xml', this.handleJiveXMLDataInput.bind(this), 'text/xml'),
|
|
18
|
+
new ImportOption(EventDataFormat.ZIP, '.zip', this.handleZipEventDataInput.bind(this), '.zip'),
|
|
19
|
+
new ImportOption(EventDataFormat.IG, '.ig', this.handleIgEventDataInput.bind(this), '.ig'),
|
|
20
|
+
];
|
|
21
|
+
}
|
|
22
|
+
ngOnInit() {
|
|
23
|
+
this.eventDataOptionsWithHandler = this.supportedEventDataFormats.filter((eventDataFormat) => this.eventDataImportOptions.includes(eventDataFormat.format));
|
|
24
|
+
this.eventDataImportOptions.forEach((eventDataImportOption) => {
|
|
25
|
+
if (eventDataImportOption instanceof ImportOption) {
|
|
26
|
+
const importHandler = eventDataImportOption.handler.bind(this);
|
|
27
|
+
eventDataImportOption.handler = (files) => {
|
|
28
|
+
importHandler(files);
|
|
29
|
+
this.onClose();
|
|
30
|
+
};
|
|
31
|
+
this.eventDataOptionsWithHandler.push(eventDataImportOption);
|
|
32
|
+
}
|
|
33
|
+
});
|
|
34
|
+
}
|
|
35
|
+
getSupportedEventDataFormats() {
|
|
36
|
+
return this.eventDataImportOptions
|
|
37
|
+
.map((format) => {
|
|
38
|
+
if (format instanceof ImportOption) {
|
|
39
|
+
return format.format;
|
|
40
|
+
}
|
|
41
|
+
return format;
|
|
42
|
+
})
|
|
43
|
+
.filter((format) => format !== 'ZIP')
|
|
44
|
+
.join(', ');
|
|
45
|
+
}
|
|
46
|
+
onClose() {
|
|
47
|
+
this.dialogRef.close();
|
|
48
|
+
}
|
|
49
|
+
handleJSONEventDataInput(files) {
|
|
50
|
+
const callback = (content) => {
|
|
51
|
+
const json = typeof content === 'string' ? JSON.parse(content) : content;
|
|
52
|
+
this.eventDisplay.parsePhoenixEvents(json);
|
|
53
|
+
};
|
|
54
|
+
this.handleFileInput(files[0], 'json', callback);
|
|
55
|
+
}
|
|
56
|
+
handleJiveXMLDataInput(files) {
|
|
57
|
+
const callback = (content) => {
|
|
58
|
+
const jiveloader = new JiveXMLLoader();
|
|
59
|
+
jiveloader.process(content);
|
|
60
|
+
const eventData = jiveloader.getEventData();
|
|
61
|
+
this.eventDisplay.buildEventDataFromJSON(eventData);
|
|
62
|
+
};
|
|
63
|
+
this.handleFileInput(files[0], 'xml', callback);
|
|
64
|
+
}
|
|
65
|
+
handleOBJInput(files) {
|
|
66
|
+
const callback = (content, name) => {
|
|
67
|
+
this.eventDisplay.parseOBJGeometry(content, name);
|
|
68
|
+
};
|
|
69
|
+
this.handleFileInput(files[0], 'obj', callback);
|
|
70
|
+
}
|
|
71
|
+
handleSceneInput(files) {
|
|
72
|
+
const callback = (content) => {
|
|
73
|
+
this.eventDisplay.parsePhoenixDisplay(content);
|
|
74
|
+
};
|
|
75
|
+
this.handleFileInput(files[0], 'phnx', callback);
|
|
76
|
+
}
|
|
77
|
+
handleGLTFInput(files) {
|
|
78
|
+
const callback = (content, name) => {
|
|
79
|
+
this.eventDisplay.parseGLTFGeometry(content, name);
|
|
80
|
+
};
|
|
81
|
+
this.handleFileInput(files[0], 'gltf', callback);
|
|
82
|
+
}
|
|
83
|
+
handlePhoenixInput(files) {
|
|
84
|
+
const callback = (content) => {
|
|
85
|
+
this.eventDisplay.parsePhoenixDisplay(content);
|
|
86
|
+
};
|
|
87
|
+
this.handleFileInput(files[0], 'phnx', callback);
|
|
88
|
+
}
|
|
89
|
+
handleROOTInput(files) {
|
|
90
|
+
ScriptLoader.loadJSRootScripts().then((JSROOT) => {
|
|
91
|
+
const objectName = prompt('Enter object name in ROOT file');
|
|
92
|
+
JSROOT.openFile(files[0]).then((file) => {
|
|
93
|
+
file.readObject(objectName).then((obj) => {
|
|
94
|
+
this.eventDisplay.loadJSONGeometry(JSROOT.GEO.build(obj, { dflt_colors: true }).toJSON(), files[0].name.split('.')[0]);
|
|
95
|
+
});
|
|
96
|
+
});
|
|
97
|
+
});
|
|
98
|
+
this.onClose();
|
|
99
|
+
}
|
|
100
|
+
handleRootJSONInput(files) {
|
|
101
|
+
ScriptLoader.loadJSRootScripts().then((JSROOT) => {
|
|
102
|
+
const callback = (content, name) => {
|
|
103
|
+
this.eventDisplay.loadJSONGeometry(JSROOT.GEO.build(JSROOT.parse(content), {
|
|
104
|
+
dflt_colors: true,
|
|
105
|
+
}).toJSON(), name);
|
|
106
|
+
};
|
|
107
|
+
this.handleFileInput(files[0], 'gz', callback);
|
|
108
|
+
});
|
|
109
|
+
}
|
|
110
|
+
handleIgEventDataInput(files) {
|
|
111
|
+
const cmsLoader = new CMSLoader();
|
|
112
|
+
cmsLoader.readIgArchive(files[0], (allEvents) => {
|
|
113
|
+
const allEventsData = cmsLoader.getAllEventsData(allEvents);
|
|
114
|
+
this.eventDisplay.parsePhoenixEvents(allEventsData);
|
|
115
|
+
this.onClose();
|
|
116
|
+
});
|
|
117
|
+
}
|
|
118
|
+
handleZipEventDataInput(files) {
|
|
119
|
+
if (this.isFileOfExtension(files[0], 'zip')) {
|
|
120
|
+
this.handleZipInput(files[0], (allFilesWithData) => {
|
|
121
|
+
const allEventsObject = {};
|
|
122
|
+
// JSON event data
|
|
123
|
+
Object.keys(allFilesWithData)
|
|
124
|
+
.filter((fileName) => fileName.endsWith('.json'))
|
|
125
|
+
.forEach((fileName) => {
|
|
126
|
+
Object.assign(allEventsObject, JSON.parse(allFilesWithData[fileName]));
|
|
127
|
+
});
|
|
128
|
+
// JiveXML event data
|
|
129
|
+
const jiveloader = new JiveXMLLoader();
|
|
130
|
+
Object.keys(allFilesWithData)
|
|
131
|
+
.filter((fileName) => fileName.endsWith('.xml'))
|
|
132
|
+
.forEach((fileName) => {
|
|
133
|
+
jiveloader.process(allFilesWithData[fileName]);
|
|
134
|
+
const eventData = jiveloader.getEventData();
|
|
135
|
+
Object.assign(allEventsObject, { [fileName]: eventData });
|
|
136
|
+
});
|
|
137
|
+
this.eventDisplay.parsePhoenixEvents(allEventsObject);
|
|
138
|
+
this.onClose();
|
|
139
|
+
});
|
|
140
|
+
}
|
|
141
|
+
else {
|
|
142
|
+
console.error('Error: Invalid file format!');
|
|
143
|
+
this.eventDisplay.getInfoLogger().add('Invalid file format!', 'Error');
|
|
144
|
+
}
|
|
145
|
+
}
|
|
146
|
+
async handleZipInput(file, callback) {
|
|
147
|
+
const allFilesWithData = {};
|
|
148
|
+
// Using a try catch block to catch any errors in Promises
|
|
149
|
+
try {
|
|
150
|
+
const zipArchive = new JSZip();
|
|
151
|
+
await zipArchive.loadAsync(file);
|
|
152
|
+
const allFiles = Object.keys(zipArchive.files);
|
|
153
|
+
for (const singleFile of allFiles) {
|
|
154
|
+
const fileData = await zipArchive.file(singleFile).async('string');
|
|
155
|
+
allFilesWithData[singleFile] = fileData;
|
|
156
|
+
}
|
|
157
|
+
callback(allFilesWithData);
|
|
158
|
+
}
|
|
159
|
+
catch (error) {
|
|
160
|
+
console.error('Error while reading zip', error);
|
|
161
|
+
this.eventDisplay.getInfoLogger().add('Could not read zip file', 'Error');
|
|
162
|
+
}
|
|
163
|
+
}
|
|
164
|
+
handleFileInput(file, extension, callback) {
|
|
165
|
+
const reader = new FileReader();
|
|
166
|
+
if (this.isFileOfExtension(file, extension)) {
|
|
167
|
+
reader.onload = () => {
|
|
168
|
+
callback(reader.result.toString(), file.name.split('.')[0]);
|
|
169
|
+
};
|
|
170
|
+
reader.readAsText(file);
|
|
171
|
+
}
|
|
172
|
+
else {
|
|
173
|
+
console.error('Error: Invalid file format!');
|
|
174
|
+
this.eventDisplay.getInfoLogger().add('Invalid file format!', 'Error');
|
|
175
|
+
}
|
|
176
|
+
this.onClose();
|
|
177
|
+
}
|
|
178
|
+
isFileOfExtension(file, extension) {
|
|
179
|
+
return file.name.split('.').pop() === extension;
|
|
180
|
+
}
|
|
181
|
+
saveScene() {
|
|
182
|
+
this.eventDisplay.exportPhoenixDisplay();
|
|
183
|
+
}
|
|
184
|
+
exportOBJ() {
|
|
185
|
+
this.eventDisplay.exportToOBJ();
|
|
186
|
+
}
|
|
187
|
+
}
|
|
188
|
+
IOOptionsDialogComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.3", ngImport: i0, type: IOOptionsDialogComponent, deps: [{ token: i1.EventDisplayService }, { token: i2.MatDialogRef }], target: i0.ɵɵFactoryTarget.Component });
|
|
189
|
+
IOOptionsDialogComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.0.3", type: IOOptionsDialogComponent, selector: "app-io-options-dialog", inputs: { eventDataImportOptions: "eventDataImportOptions" }, ngImport: i0, template: "<div class=\"dialog\">\n <h1 mat-dialog-title>Import and export options</h1>\n <div mat-dialog-content class=\"dialog-content\">\n <div *ngIf=\"eventDataImportOptions.length > 0\">\n <h5>Import</h5>\n\n <h6 class=\"text-center\">Event data</h6>\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\n <p class=\"text-center\">\n Supported formats: {{ getSupportedEventDataFormats() }}\n </p>\n </div>\n\n <h6 class=\"text-center\">Geometries</h6>\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\">Supported formats: OBJ, GLTF, ROOT, ROOT JSON</p>\n\n <h5>Import / export scene</h5>\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 <div mat-dialog-actions>\n <button mat-button (click)=\"onClose()\" cdkFocusInitial>Close</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"], components: [{ type: i3.MatButton, selector: "button[mat-button], button[mat-raised-button], button[mat-icon-button], button[mat-fab], button[mat-mini-fab], button[mat-stroked-button], button[mat-flat-button]", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }], directives: [{ type: i2.MatDialogTitle, selector: "[mat-dialog-title], [matDialogTitle]", inputs: ["id"], exportAs: ["matDialogTitle"] }, { type: i2.MatDialogContent, selector: "[mat-dialog-content], mat-dialog-content, [matDialogContent]" }, { type: i4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i4.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: i2.MatDialogActions, selector: "[mat-dialog-actions], mat-dialog-actions, [matDialogActions]" }] });
|
|
190
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.3", ngImport: i0, type: IOOptionsDialogComponent, decorators: [{
|
|
191
|
+
type: Component,
|
|
192
|
+
args: [{ selector: 'app-io-options-dialog', template: "<div class=\"dialog\">\n <h1 mat-dialog-title>Import and export options</h1>\n <div mat-dialog-content class=\"dialog-content\">\n <div *ngIf=\"eventDataImportOptions.length > 0\">\n <h5>Import</h5>\n\n <h6 class=\"text-center\">Event data</h6>\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\n <p class=\"text-center\">\n Supported formats: {{ getSupportedEventDataFormats() }}\n </p>\n </div>\n\n <h6 class=\"text-center\">Geometries</h6>\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\">Supported formats: OBJ, GLTF, ROOT, ROOT JSON</p>\n\n <h5>Import / export scene</h5>\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 <div mat-dialog-actions>\n <button mat-button (click)=\"onClose()\" cdkFocusInitial>Close</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"] }]
|
|
193
|
+
}], ctorParameters: function () { return [{ type: i1.EventDisplayService }, { type: i2.MatDialogRef }]; }, propDecorators: { eventDataImportOptions: [{
|
|
194
|
+
type: Input
|
|
195
|
+
}] } });
|
|
196
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW8tb3B0aW9ucy1kaWFsb2cuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vbGliL2NvbXBvbmVudHMvdWktbWVudS9pby1vcHRpb25zL2lvLW9wdGlvbnMtZGlhbG9nL2lvLW9wdGlvbnMtZGlhbG9nLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL2xpYi9jb21wb25lbnRzL3VpLW1lbnUvaW8tb3B0aW9ucy9pby1vcHRpb25zLWRpYWxvZy9pby1vcHRpb25zLWRpYWxvZy5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQVUsU0FBUyxFQUFFLEtBQUssRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN6RCxPQUFPLEVBQUUsU0FBUyxFQUFFLGFBQWEsRUFBRSxZQUFZLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUMvRSxPQUFPLEtBQUssTUFBTSxPQUFPLENBQUM7QUFHMUIsT0FBTyxFQUNMLGVBQWUsRUFFZixZQUFZLEdBQ2IsTUFBTSwrQ0FBK0MsQ0FBQzs7Ozs7O0FBT3ZELE1BQU0sT0FBTyx3QkFBd0I7SUFpQ25DLFlBQ1UsWUFBaUMsRUFDbEMsU0FBaUQ7UUFEaEQsaUJBQVksR0FBWixZQUFZLENBQXFCO1FBQ2xDLGNBQVMsR0FBVCxTQUFTLENBQXdDO1FBakMxRCwyQkFBc0IsR0FBNEIsQ0FBQyxlQUFlLENBQUMsSUFBSSxDQUFDLENBQUM7UUFJakUsOEJBQXlCLEdBQUc7WUFDbEMsSUFBSSxZQUFZLENBQ2QsZUFBZSxDQUFDLElBQUksRUFDcEIsT0FBTyxFQUNQLElBQUksQ0FBQyx3QkFBd0IsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEVBQ3hDLGtCQUFrQixDQUNuQjtZQUNELElBQUksWUFBWSxDQUNkLGVBQWUsQ0FBQyxPQUFPLEVBQ3ZCLE1BQU0sRUFDTixJQUFJLENBQUMsc0JBQXNCLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxFQUN0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QUFzQixFQUFFLE9BQU8sQ0FBQyxDQUFDO1NBQ3hFO1FBQ0QsSUFBSSxDQUFDLE9BQU8sRUFBRSxDQUFDO0lBQ2pCLENBQUM7SUFFTyxpQkFBaUIsQ0FBQyxJQUFVLEVBQUUsU0FBaUI7UUFDckQsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxHQUFHLEVBQUUsS0FBSyxTQUFTLENBQUM7SUFDbEQsQ0FBQztJQUVELFNBQVM7UUFDUCxJQUFJLENBQUMsWUFBWSxDQUFDLG9CQUFvQixFQUFFLENBQUM7SUFDM0MsQ0FBQztJQUVELFNBQVM7UUFDUCxJQUFJLENBQUMsWUFBWSxDQUFDLFdBQVcsRUFBRSxDQUFDO0lBQ2xDLENBQUM7O3FIQW5QVSx3QkFBd0I7eUdBQXhCLHdCQUF3QiwySENoQnJDLHM3SEFvSUE7MkZEcEhhLHdCQUF3QjtrQkFMcEMsU0FBUzsrQkFDRSx1QkFBdUI7cUlBTWpDLHNCQUFzQjtzQkFEckIsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IE9uSW5pdCwgQ29tcG9uZW50LCBJbnB1dCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQ01TTG9hZGVyLCBKaXZlWE1MTG9hZGVyLCBTY3JpcHRMb2FkZXIgfSBmcm9tICdwaG9lbml4LWV2ZW50LWRpc3BsYXknO1xuaW1wb3J0IEpTWmlwIGZyb20gJ2pzemlwJztcbmltcG9ydCB7IEV2ZW50RGlzcGxheVNlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi8uLi9zZXJ2aWNlcy9ldmVudC1kaXNwbGF5LnNlcnZpY2UnO1xuaW1wb3J0IHsgTWF0RGlhbG9nUmVmIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvZGlhbG9nJztcbmltcG9ydCB7XG4gIEV2ZW50RGF0YUZvcm1hdCxcbiAgRXZlbnREYXRhSW1wb3J0T3B0aW9uLFxuICBJbXBvcnRPcHRpb24sXG59IGZyb20gJy4uLy4uLy4uLy4uL3NlcnZpY2VzL2V4dHJhcy9ldmVudC1kYXRhLWltcG9ydCc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2FwcC1pby1vcHRpb25zLWRpYWxvZycsXG4gIHRlbXBsYXRlVXJsOiAnLi9pby1vcHRpb25zLWRpYWxvZy5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL2lvLW9wdGlvbnMtZGlhbG9nLmNvbXBvbmVudC5zY3NzJ10sXG59KVxuZXhwb3J0IGNsYXNzIElPT3B0aW9uc0RpYWxvZ0NvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XG4gIEBJbnB1dCgpXG4gIGV2ZW50RGF0YUltcG9ydE9wdGlvbnM6IEV2ZW50RGF0YUltcG9ydE9wdGlvbltdID0gW0V2ZW50RGF0YUZvcm1hdC5KU09OXTtcblxuICBldmVudERhdGFPcHRpb25zV2l0aEhhbmRsZXI6IEltcG9ydE9wdGlvbltdO1xuXG4gIHByaXZhdGUgc3VwcG9ydGVkRXZlbnREYXRhRm9ybWF0cyA9IFtcbiAgICBuZXcgSW1wb3J0T3B0aW9uKFxuICAgICAgRXZlbnREYXRhRm9ybWF0LkpTT04sXG4gICAgICAnLmpzb24nLFxuICAgICAgdGhpcy5oYW5kbGVKU09ORXZlbnREYXRhSW5wdXQuYmluZCh0aGlzKSxcbiAgICAgICdhcHBsaWNhdGlvbi9qc29uJ1xuICAgICksXG4gICAgbmV3IEltcG9ydE9wdGlvbihcbiAgICAgIEV2ZW50RGF0YUZvcm1hdC5KSVZFWE1MLFxuICAgICAgJy54bWwnLFxuICAgICAgdGhpcy5oYW5kbGVKaXZlWE1MRGF0YUlucHV0LmJpbmQodGhpcyksXG4gICAgICAndGV4dC94bWwnXG4gICAgKSxcbiAgICBuZXcgSW1wb3J0T3B0aW9uKFxuICAgICAgRXZlbnREYXRhRm9ybWF0LlpJUCxcbiAgICAgICcuemlwJyxcbiAgICAgIHRoaXMuaGFuZGxlWmlwRXZlbnREYXRhSW5wdXQuYmluZCh0aGlzKSxcbiAgICAgICcuemlwJ1xuICAgICksXG4gICAgbmV3IEltcG9ydE9wdGlvbihcbiAgICAgIEV2ZW50RGF0YUZvcm1hdC5JRyxcbiAgICAgICcuaWcnLFxuICAgICAgdGhpcy5oYW5kbGVJZ0V2ZW50RGF0YUlucHV0LmJpbmQodGhpcyksXG4gICAgICAnLmlnJ1xuICAgICksXG4gIF07XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSBldmVudERpc3BsYXk6IEV2ZW50RGlzcGxheVNlcnZpY2UsXG4gICAgcHVibGljIGRpYWxvZ1JlZjogTWF0RGlhbG9nUmVmPElPT3B0aW9uc0RpYWxvZ0NvbXBvbmVudD5cbiAgKSB7fVxuXG4gIG5nT25Jbml0KCkge1xuICAgIHRoaXMuZXZlbnREYXRhT3B0aW9uc1dpdGhIYW5kbGVyID0gdGhpcy5zdXBwb3J0ZWRFdmVudERhdGFGb3JtYXRzLmZpbHRlcihcbiAgICAgIChldmVudERhdGFGb3JtYXQpID0+XG4gICAgICAgIHRoaXMuZXZlbnREYXRhSW1wb3J0T3B0aW9ucy5pbmNsdWRlcyhcbiAgICAgICAgICBldmVudERhdGFGb3JtYXQuZm9ybWF0IGFzIEV2ZW50RGF0YUZvcm1hdFxuICAgICAgICApXG4gICAgKTtcblxuICAgIHRoaXMuZXZlbnREYXRhSW1wb3J0T3B0aW9ucy5mb3JFYWNoKChldmVudERhdGFJbXBvcnRPcHRpb24pID0+IHtcbiAgICAgIGlmIChldmVudERhdGFJbXBvcnRPcHRpb24gaW5zdGFuY2VvZiBJbXBvcnRPcHRpb24pIHtcbiAgICAgICAgY29uc3QgaW1wb3J0SGFuZGxlciA9IGV2ZW50RGF0YUltcG9ydE9wdGlvbi5oYW5kbGVyLmJpbmQodGhpcyk7XG4gICAgICAgIGV2ZW50RGF0YUltcG9ydE9wdGlvbi5oYW5kbGVyID0gKGZpbGVzOiBGaWxlTGlzdCkgPT4ge1xuICAgICAgICAgIGltcG9ydEhhbmRsZXIoZmlsZXMpO1xuICAgICAgICAgIHRoaXMub25DbG9zZSgpO1xuICAgICAgICB9O1xuICAgICAgICB0aGlzLmV2ZW50RGF0YU9wdGlvbnNXaXRoSGFuZGxlci5wdXNoKGV2ZW50RGF0YUltcG9ydE9wdGlvbik7XG4gICAgICB9XG4gICAgfSk7XG4gIH1cblxuICBnZXRTdXBwb3J0ZWRFdmVudERhdGFGb3JtYXRzKCkge1xuICAgIHJldHVybiB0aGlzLmV2ZW50RGF0YUltcG9ydE9wdGlvbnNcbiAgICAgIC5tYXAoKGZvcm1hdCkgPT4ge1xuICAgICAgICBpZiAoZm9ybWF0IGluc3RhbmNlb2YgSW1wb3J0T3B0aW9uKSB7XG4gICAgICAgICAgcmV0dXJuIGZvcm1hdC5mb3JtYXQ7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gZm9ybWF0O1xuICAgICAgfSlcbiAgICAgIC5maWx0ZXIoKGZvcm1hdCkgPT4gZm9ybWF0ICE9PSAnWklQJylcbiAgICAgIC5qb2luKCcsICcpO1xuICB9XG5cbiAgb25DbG9zZSgpOiB2b2lkIHtcbiAgICB0aGlzLmRpYWxvZ1JlZi5jbG9zZSgpO1xuICB9XG5cbiAgaGFuZGxlSlNPTkV2ZW50RGF0YUlucHV0KGZpbGVzOiBGaWxlTGlzdCkge1xuICAgIGNvbnN0IGNhbGxiYWNrID0gKGNvbnRlbnQ6IGFueSkgPT4ge1xuICAgICAgY29uc3QganNvbiA9IHR5cGVvZiBjb250ZW50ID09PSAnc3RyaW5nJyA/IEpTT04ucGFyc2UoY29udGVudCkgOiBjb250ZW50O1xuICAgICAgdGhpcy5ldmVudERpc3BsYXkucGFyc2VQaG9lbml4RXZlbnRzKGpzb24pO1xuICAgIH07XG4gICAgdGhpcy5oYW5kbGVGaWxlSW5wdXQoZmlsZXNbMF0sICdqc29uJywgY2FsbGJhY2spO1xuICB9XG5cbiAgaGFuZGxlSml2ZVhNTERhdGFJbnB1dChmaWxlczogRmlsZUxpc3QpIHtcbiAgICBjb25zdCBjYWxsYmFjayA9IChjb250ZW50OiBhbnkpID0+IHtcbiAgICAgIGNvbnN0IGppdmVsb2FkZXIgPSBuZXcgSml2ZVhNTExvYWRlcigpO1xuICAgICAgaml2ZWxvYWRlci5wcm9jZXNzKGNvbnRlbnQpO1xuICAgICAgY29uc3QgZXZlbnREYXRhID0gaml2ZWxvYWRlci5nZXRFdmVudERhdGEoKTtcbiAgICAgIHRoaXMuZXZlbnREaXNwbGF5LmJ1aWxkRXZlbnREYXRhRnJvbUpTT04oZXZlbnREYXRhKTtcbiAgICB9O1xuICAgIHRoaXMuaGFuZGxlRmlsZUlucHV0KGZpbGVzWzBdLCAneG1sJywgY2FsbGJhY2spO1xuICB9XG5cbiAgaGFuZGxlT0JKSW5wdXQoZmlsZXM6IEZpbGVMaXN0KSB7XG4gICAgY29uc3QgY2FsbGJhY2sgPSAoY29udGVudDogYW55LCBuYW1lOiBzdHJpbmcpID0+IHtcbiAgICAgIHRoaXMuZXZlbnREaXNwbGF5LnBhcnNlT0JKR2VvbWV0cnkoY29udGVudCwgbmFtZSk7XG4gICAgfTtcbiAgICB0aGlzLmhhbmRsZUZpbGVJbnB1dChmaWxlc1swXSwgJ29iaicsIGNhbGxiYWNrKTtcbiAgfVxuXG4gIGhhbmRsZVNjZW5lSW5wdXQoZmlsZXM6IEZpbGVMaXN0KSB7XG4gICAgY29uc3QgY2FsbGJhY2sgPSAoY29udGVudDogYW55KSA9PiB7XG4gICAgICB0aGlzLmV2ZW50RGlzcGxheS5wYXJzZVBob2VuaXhEaXNwbGF5KGNvbnRlbnQpO1xuICAgIH07XG4gICAgdGhpcy5oYW5kbGVGaWxlSW5wdXQoZmlsZXNbMF0sICdwaG54JywgY2FsbGJhY2spO1xuICB9XG5cbiAgaGFuZGxlR0xURklucHV0KGZpbGVzOiBGaWxlTGlzdCkge1xuICAgIGNvbnN0IGNhbGxiYWNrID0gKGNvbnRlbnQ6IGFueSwgbmFtZTogc3RyaW5nKSA9PiB7XG4gICAgICB0aGlzLmV2ZW50RGlzcGxheS5wYXJzZUdMVEZHZW9tZXRyeShjb250ZW50LCBuYW1lKTtcbiAgICB9O1xuICAgIHRoaXMuaGFuZGxlRmlsZUlucHV0KGZpbGVzWzBdLCAnZ2x0ZicsIGNhbGxiYWNrKTtcbiAgfVxuXG4gIGhhbmRsZVBob2VuaXhJbnB1dChmaWxlczogRmlsZUxpc3QpIHtcbiAgICBjb25zdCBjYWxsYmFjayA9IChjb250ZW50OiBhbnkpID0+IHtcbiAgICAgIHRoaXMuZXZlbnREaXNwbGF5LnBhcnNlUGhvZW5peERpc3BsYXkoY29udGVudCk7XG4gICAgfTtcbiAgICB0aGlzLmhhbmRsZUZpbGVJbnB1dChmaWxlc1swXSwgJ3BobngnLCBjYWxsYmFjayk7XG4gIH1cblxuICBoYW5kbGVST09USW5wdXQoZmlsZXM6IEZpbGVMaXN0KSB7XG4gICAgU2NyaXB0TG9hZGVyLmxvYWRKU1Jvb3RTY3JpcHRzKCkudGhlbigoSlNST09UOiBhbnkpID0+IHtcbiAgICAgIGNvbnN0IG9iamVjdE5hbWUgPSBwcm9tcHQoJ0VudGVyIG9iamVjdCBuYW1lIGluIFJPT1QgZmlsZScpO1xuICAgICAgSlNST09ULm9wZW5GaWxlKGZpbGVzWzBdKS50aGVuKChmaWxlOiBhbnkpID0+IHtcbiAgICAgICAgZmlsZS5yZWFkT2JqZWN0KG9iamVjdE5hbWUpLnRoZW4oKG9iajogYW55KSA9PiB7XG4gICAgICAgICAgdGhpcy5ldmVudERpc3BsYXkubG9hZEpTT05HZW9tZXRyeShcbiAgICAgICAgICAgIEpTUk9PVC5HRU8uYnVpbGQob2JqLCB7IGRmbHRfY29sb3JzOiB0cnVlIH0pLnRvSlNPTigpLFxuICAgICAgICAgICAgZmlsZXNbMF0ubmFtZS5zcGxpdCgnLicpWzBdXG4gICAgICAgICAgKTtcbiAgICAgICAgfSk7XG4gICAgICB9KTtcbiAgICB9KTtcbiAgICB0aGlzLm9uQ2xvc2UoKTtcbiAgfVxuXG4gIGhhbmRsZVJvb3RKU09OSW5wdXQoZmlsZXM6IEZpbGVMaXN0KSB7XG4gICAgU2NyaXB0TG9hZGVyLmxvYWRKU1Jvb3RTY3JpcHRzKCkudGhlbigoSlNST09UOiBhbnkpID0+IHtcbiAgICAgIGNvbnN0IGNhbGxiYWNrID0gKGNvbnRlbnQ6IGFueSwgbmFtZTogc3RyaW5nKSA9PiB7XG4gICAgICAgIHRoaXMuZXZlbnREaXNwbGF5LmxvYWRKU09OR2VvbWV0cnkoXG4gICAgICAgICAgSlNST09ULkdFTy5idWlsZChKU1JPT1QucGFyc2UoY29udGVudCksIHtcbiAgICAgICAgICAgIGRmbHRfY29sb3JzOiB0cnVlLFxuICAgICAgICAgIH0pLnRvSlNPTigpLFxuICAgICAgICAgIG5hbWVcbiAgICAgICAgKTtcbiAgICAgIH07XG4gICAgICB0aGlzLmhhbmRsZUZpbGVJbnB1dChmaWxlc1swXSwgJ2d6JywgY2FsbGJhY2spO1xuICAgIH0pO1xuICB9XG5cbiAgaGFuZGxlSWdFdmVudERhdGFJbnB1dChmaWxlczogRmlsZUxpc3QpIHtcbiAgICBjb25zdCBjbXNMb2FkZXIgPSBuZXcgQ01TTG9hZGVyKCk7XG4gICAgY21zTG9hZGVyLnJlYWRJZ0FyY2hpdmUoZmlsZXNbMF0sIChhbGxFdmVudHM6IGFueVtdKSA9PiB7XG4gICAgICBjb25zdCBhbGxFdmVudHNEYXRhID0gY21zTG9hZGVyLmdldEFsbEV2ZW50c0RhdGEoYWxsRXZlbnRzKTtcbiAgICAgIHRoaXMuZXZlbnREaXNwbGF5LnBhcnNlUGhvZW5peEV2ZW50cyhhbGxFdmVudHNEYXRhKTtcbiAgICAgIHRoaXMub25DbG9zZSgpO1xuICAgIH0pO1xuICB9XG5cbiAgaGFuZGxlWmlwRXZlbnREYXRhSW5wdXQoZmlsZXM6IEZpbGVMaXN0KSB7XG4gICAgaWYgKHRoaXMuaXNGaWxlT2ZFeHRlbnNpb24oZmlsZXNbMF0sICd6aXAnKSkge1xuICAgICAgdGhpcy5oYW5kbGVaaXBJbnB1dChmaWxlc1swXSwgKGFsbEZpbGVzV2l0aERhdGEpID0+IHtcbiAgICAgICAgY29uc3QgYWxsRXZlbnRzT2JqZWN0ID0ge307XG5cbiAgICAgICAgLy8gSlNPTiBldmVudCBkYXRhXG4gICAgICAgIE9iamVjdC5rZXlzKGFsbEZpbGVzV2l0aERhdGEpXG4gICAgICAgICAgLmZpbHRlcigoZmlsZU5hbWUpID0+IGZpbGVOYW1lLmVuZHNXaXRoKCcuanNvbicpKVxuICAgICAgICAgIC5mb3JFYWNoKChmaWxlTmFtZSkgPT4ge1xuICAgICAgICAgICAgT2JqZWN0LmFzc2lnbihcbiAgICAgICAgICAgICAgYWxsRXZlbnRzT2JqZWN0LFxuICAgICAgICAgICAgICBKU09OLnBhcnNlKGFsbEZpbGVzV2l0aERhdGFbZmlsZU5hbWVdKVxuICAgICAgICAgICAgKTtcbiAgICAgICAgICB9KTtcblxuICAgICAgICAvLyBKaXZlWE1MIGV2ZW50IGRhdGFcbiAgICAgICAgY29uc3Qgaml2ZWxvYWRlciA9IG5ldyBKaXZlWE1MTG9hZGVyKCk7XG4gICAgICAgIE9iamVjdC5rZXlzKGFsbEZpbGVzV2l0aERhdGEpXG4gICAgICAgICAgLmZpbHRlcigoZmlsZU5hbWUpID0+IGZpbGVOYW1lLmVuZHNXaXRoKCcueG1sJykpXG4gICAgICAgICAgLmZvckVhY2goKGZpbGVOYW1lKSA9PiB7XG4gICAgICAgICAgICBqaXZlbG9hZGVyLnByb2Nlc3MoYWxsRmlsZXNXaXRoRGF0YVtmaWxlTmFtZV0pO1xuICAgICAgICAgICAgY29uc3QgZXZlbnREYXRhID0gaml2ZWxvYWRlci5nZXRFdmVudERhdGEoKTtcbiAgICAgICAgICAgIE9iamVjdC5hc3NpZ24oYWxsRXZlbnRzT2JqZWN0LCB7IFtmaWxlTmFtZV06IGV2ZW50RGF0YSB9KTtcbiAgICAgICAgICB9KTtcblxuICAgICAgICB0aGlzLmV2ZW50RGlzcGxheS5wYXJzZVBob2VuaXhFdmVudHMoYWxsRXZlbnRzT2JqZWN0KTtcblxuICAgICAgICB0aGlzLm9uQ2xvc2UoKTtcbiAgICAgIH0pO1xuICAgIH0gZWxzZSB7XG4gICAgICBjb25zb2xlLmVycm9yKCdFcnJvcjogSW52YWxpZCBmaWxlIGZvcm1hdCEnKTtcbiAgICAgIHRoaXMuZXZlbnREaXNwbGF5LmdldEluZm9Mb2dnZXIoKS5hZGQoJ0ludmFsaWQgZmlsZSBmb3JtYXQhJywgJ0Vycm9yJyk7XG4gICAgfVxuICB9XG5cbiAgYXN5bmMgaGFuZGxlWmlwSW5wdXQoXG4gICAgZmlsZTogRmlsZSxcbiAgICBjYWxsYmFjazogKGFsbEZpbGVzV2l0aERhdGE6IHsgW2tleTogc3RyaW5nXTogc3RyaW5nIH0pID0+IHZvaWRcbiAgKSB7XG4gICAgY29uc3QgYWxsRmlsZXNXaXRoRGF0YTogeyBba2V5OiBzdHJpbmddOiBzdHJpbmcgfSA9IHt9O1xuICAgIC8vIFVzaW5nIGEgdHJ5IGNhdGNoIGJsb2NrIHRvIGNhdGNoIGFueSBlcnJvcnMgaW4gUHJvbWlzZXNcbiAgICB0cnkge1xuICAgICAgY29uc3QgemlwQXJjaGl2ZSA9IG5ldyBKU1ppcCgpO1xuICAgICAgYXdhaXQgemlwQXJjaGl2ZS5sb2FkQXN5bmMoZmlsZSk7XG4gICAgICBjb25zdCBhbGxGaWxlcyA9IE9iamVjdC5rZXlzKHppcEFyY2hpdmUuZmlsZXMpO1xuICAgICAgZm9yIChjb25zdCBzaW5nbGVGaWxlIG9mIGFsbEZpbGVzKSB7XG4gICAgICAgIGNvbnN0IGZpbGVEYXRhID0gYXdhaXQgemlwQXJjaGl2ZS5maWxlKHNpbmdsZUZpbGUpLmFzeW5jKCdzdHJpbmcnKTtcbiAgICAgICAgYWxsRmlsZXNXaXRoRGF0YVtzaW5nbGVGaWxlXSA9IGZpbGVEYXRhO1xuICAgICAgfVxuICAgICAgY2FsbGJhY2soYWxsRmlsZXNXaXRoRGF0YSk7XG4gICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgIGNvbnNvbGUuZXJyb3IoJ0Vycm9yIHdoaWxlIHJlYWRpbmcgemlwJywgZXJyb3IpO1xuICAgICAgdGhpcy5ldmVudERpc3BsYXkuZ2V0SW5mb0xvZ2dlcigpLmFkZCgnQ291bGQgbm90IHJlYWQgemlwIGZpbGUnLCAnRXJyb3InKTtcbiAgICB9XG4gIH1cblxuICBoYW5kbGVGaWxlSW5wdXQoXG4gICAgZmlsZTogRmlsZSxcbiAgICBleHRlbnNpb246IHN0cmluZyxcbiAgICBjYWxsYmFjazogKHJlc3VsdDogc3RyaW5nLCBmaWxlTmFtZT86IHN0cmluZykgPT4gdm9pZFxuICApIHtcbiAgICBjb25zdCByZWFkZXIgPSBuZXcgRmlsZVJlYWRlcigpO1xuICAgIGlmICh0aGlzLmlzRmlsZU9mRXh0ZW5zaW9uKGZpbGUsIGV4dGVuc2lvbikpIHtcbiAgICAgIHJlYWRlci5vbmxvYWQgPSAoKSA9PiB7XG4gICAgICAgIGNhbGxiYWNrKHJlYWRlci5yZXN1bHQudG9TdHJpbmcoKSwgZmlsZS5uYW1lLnNwbGl0KCcuJylbMF0pO1xuICAgICAgfTtcbiAgICAgIHJlYWRlci5yZWFkQXNUZXh0KGZpbGUpO1xuICAgIH0gZWxzZSB7XG4gICAgICBjb25zb2xlLmVycm9yKCdFcnJvcjogSW52YWxpZCBmaWxlIGZvcm1hdCEnKTtcbiAgICAgIHRoaXMuZXZlbnREaXNwbGF5LmdldEluZm9Mb2dnZXIoKS5hZGQoJ0ludmFsaWQgZmlsZSBmb3JtYXQhJywgJ0Vycm9yJyk7XG4gICAgfVxuICAgIHRoaXMub25DbG9zZSgpO1xuICB9XG5cbiAgcHJpdmF0ZSBpc0ZpbGVPZkV4dGVuc2lvbihmaWxlOiBGaWxlLCBleHRlbnNpb246IHN0cmluZykge1xuICAgIHJldHVybiBmaWxlLm5hbWUuc3BsaXQoJy4nKS5wb3AoKSA9PT0gZXh0ZW5zaW9uO1xuICB9XG5cbiAgc2F2ZVNjZW5lKCkge1xuICAgIHRoaXMuZXZlbnREaXNwbGF5LmV4cG9ydFBob2VuaXhEaXNwbGF5KCk7XG4gIH1cblxuICBleHBvcnRPQkooKSB7XG4gICAgdGhpcy5ldmVudERpc3BsYXkuZXhwb3J0VG9PQkooKTtcbiAgfVxufVxuIiwiPGRpdiBjbGFzcz1cImRpYWxvZ1wiPlxuICA8aDEgbWF0LWRpYWxvZy10aXRsZT5JbXBvcnQgYW5kIGV4cG9ydCBvcHRpb25zPC9oMT5cbiAgPGRpdiBtYXQtZGlhbG9nLWNvbnRlbnQgY2xhc3M9XCJkaWFsb2ctY29udGVudFwiPlxuICAgIDxkaXYgKm5nSWY9XCJldmVudERhdGFJbXBvcnRPcHRpb25zLmxlbmd0aCA+IDBcIj5cbiAgICAgIDxoNT5JbXBvcnQ8L2g1PlxuXG4gICAgICA8aDYgY2xhc3M9XCJ0ZXh0LWNlbnRlclwiPkV2ZW50IGRhdGE8L2g2PlxuXG4gICAgICA8ZGl2IGNsYXNzPVwicm93IGNlbnRlcmVkXCI+XG4gICAgICAgIDxuZy1jb250YWluZXJcbiAgICAgICAgICAqbmdGb3I9XCJsZXQgZXZlbnREYXRhSW1wb3J0T3B0aW9uIG9mIGV2ZW50RGF0YU9wdGlvbnNXaXRoSGFuZGxlclwiXG4gICAgICAgID5cbiAgICAgICAgICA8aW5wdXRcbiAgICAgICAgICAgICNldmVudERhdGFGaWxlSW5wdXRcbiAgICAgICAgICAgIHR5cGU9XCJmaWxlXCJcbiAgICAgICAgICAgIHRhYmluZGV4PVwiLTFcIlxuICAgICAgICAgICAgY2xhc3M9XCJmaWxlLWlucHV0XCJcbiAgICAgICAgICAgIFthY2NlcHRdPVwiZXZlbnREYXRhSW1wb3J0T3B0aW9uLmFjY2VwdFwiXG4gICAgICAgICAgICAoY2hhbmdlKT1cImV2ZW50RGF0YUltcG9ydE9wdGlvbi5oYW5kbGVyKCRldmVudC50YXJnZXQuZmlsZXMpXCJcbiAgICAgICAgICAvPlxuICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgIGNsYXNzPVwiZmlsZS1pbnB1dC1idXR0b25cIlxuICAgICAgICAgICAgKGNsaWNrKT1cImV2ZW50RGF0YUZpbGVJbnB1dC5jbGljaygpXCJcbiAgICAgICAgICA+XG4gICAgICAgICAgICA8aW1nIHNyYz1cImFzc2V0cy9pY29ucy9ldmVudERhdGEuc3ZnXCIgYWx0PVwiRXZlbnQgZGF0YSBpY29uXCIgLz5cbiAgICAgICAgICAgIExvYWQge3sgZXZlbnREYXRhSW1wb3J0T3B0aW9uLmZpbGVUeXBlIH19XG4gICAgICAgICAgPC9idXR0b24+XG4gICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgPC9kaXY+XG5cbiAgICAgIDxwIGNsYXNzPVwidGV4dC1jZW50ZXJcIj5cbiAgICAgICAgU3VwcG9ydGVkIGZvcm1hdHM6IHt7IGdldFN1cHBvcnRlZEV2ZW50RGF0YUZvcm1hdHMoKSB9fVxuICAgICAgPC9wPlxuICAgIDwvZGl2PlxuXG4gICAgPGg2IGNsYXNzPVwidGV4dC1jZW50ZXJcIj5HZW9tZXRyaWVzPC9oNj5cblxuICAgIDxkaXYgY2xhc3M9XCJyb3cgY2VudGVyZWRcIj5cbiAgICAgIDxpbnB1dFxuICAgICAgICAjb2JqRmlsZUlucHV0XG4gICAgICAgIHR5cGU9XCJmaWxlXCJcbiAgICAgICAgdGFiaW5kZXg9XCItMVwiXG4gICAgICAgIGNsYXNzPVwiZmlsZS1pbnB1dFwiXG4gICAgICAgIGFjY2VwdD1cIi5vYmpcIlxuICAgICAgICBuYW1lPVwiaW1hZ2VcIlxuICAgICAgICAoY2hhbmdlKT1cImhhbmRsZU9CSklucHV0KCRldmVudC50YXJnZXQuZmlsZXMpXCJcbiAgICAgIC8+XG4gICAgICA8YnV0dG9uIGNsYXNzPVwiZmlsZS1pbnB1dC1idXR0b25cIiAoY2xpY2spPVwib2JqRmlsZUlucHV0LmNsaWNrKClcIj5cbiAgICAgICAgPGltZyBzcmM9XCJhc3NldHMvaWNvbnMvb2JqLnN2Z1wiIGFsdD1cIlwiIC8+IExvYWQgLm9ialxuICAgICAgPC9idXR0b24+XG5cbiAgICAgIDxpbnB1dFxuICAgICAgICAjZ2x0ZkZpbGVJbnB1dFxuICAgICAgICB0eXBlPVwiZmlsZVwiXG4gICAgICAgIHRhYmluZGV4PVwiLTFcIlxuICAgICAgICBjbGFzcz1cImZpbGUtaW5wdXRcIlxuICAgICAgICBhY2NlcHQ9XCIuZ2x0ZlwiXG4gICAgICAgIG5hbWU9XCJpbWFnZVwiXG4gICAgICAgIChjaGFuZ2UpPVwiaGFuZGxlR0xURklucHV0KCRldmVudC50YXJnZXQuZmlsZXMpXCJcbiAgICAgIC8+XG4gICAgICA8YnV0dG9uIGNsYXNzPVwiZmlsZS1pbnB1dC1idXR0b25cIiAoY2xpY2spPVwiZ2x0ZkZpbGVJbnB1dC5jbGljaygpXCI+XG4gICAgICAgIDxpbWcgc3JjPVwiYXNzZXRzL2ljb25zL2dsdGYuc3ZnXCIgYWx0PVwiXCIgLz4gTG9hZCAuZ2x0ZlxuICAgICAgPC9idXR0b24+XG5cbiAgICAgIDxpbnB1dFxuICAgICAgICAjcm9vdEZpbGVJbnB1dFxuICAgICAgICB0eXBlPVwiZmlsZVwiXG4gICAgICAgIHRhYmluZGV4PVwiLTFcIlxuICAgICAgICBjbGFzcz1cImZpbGUtaW5wdXRcIlxuICAgICAgICBhY2NlcHQ9XCIucm9vdFwiXG4gICAgICAgIChjaGFuZ2UpPVwiaGFuZGxlUk9PVElucHV0KCRldmVudC50YXJnZXQuZmlsZXMpXCJcbiAgICAgIC8+XG4gICAgICA8YnV0dG9uIGNsYXNzPVwiZmlsZS1pbnB1dC1idXR0b25cIiAoY2xpY2spPVwicm9vdEZpbGVJbnB1dC5jbGljaygpXCI+XG4gICAgICAgIDxpbWcgc3JjPVwiYXNzZXRzL2ljb25zL2ZpbGUtaW1wb3J0LnN2Z1wiIGFsdD1cIlwiIC8+IExvYWQgLnJvb3RcbiAgICAgIDwvYnV0dG9uPlxuXG4gICAgICA8aW5wdXRcbiAgICAgICAgI3Jvb3RKU09ORmlsZUlucHV0XG4gICAgICAgIHR5cGU9XCJmaWxlXCJcbiAgICAgICAgdGFiaW5kZXg9XCItMVwiXG4gICAgICAgIGNsYXNzPVwiZmlsZS1pbnB1dFwiXG4gICAgICAgIGFjY2VwdD1cIi5qc29uLmd6XCJcbiAgICAgICAgKGNoYW5nZSk9XCJoYW5kbGVSb290SlNPTklucHV0KCRldmVudC50YXJnZXQuZmlsZXMpXCJcbiAgICAgIC8+XG4gICAgICA8YnV0dG9uIGNsYXNzPVwiZmlsZS1pbnB1dC1idXR0b25cIiAoY2xpY2spPVwicm9vdEpTT05GaWxlSW5wdXQuY2xpY2soKVwiPlxuICAgICAgICA8aW1nIHNyYz1cImFzc2V0cy9pY29ucy9maWxlLWltcG9ydC5zdmdcIiBhbHQ9XCJcIiAvPiBMb2FkIC5qc29uLmd6XG4gICAgICA8L2J1dHRvbj5cbiAgICA8L2Rpdj5cblxuICAgIDxwIGNsYXNzPVwidGV4dC1jZW50ZXJcIj5TdXBwb3J0ZWQgZm9ybWF0czogT0JKLCBHTFRGLCBST09ULCBST09UIEpTT048L3A+XG5cbiAgICA8aDU+SW1wb3J0IC8gZXhwb3J0IHNjZW5lPC9oNT5cblxuICAgIDxkaXYgY2xhc3M9XCJyb3cgY2VudGVyZWRcIj5cbiAgICAgIDxidXR0b25cbiAgICAgICAgY2xhc3M9XCJmaWxlLWlucHV0LWJ1dHRvbiBsb2FkLWV4cG9ydFwiXG4gICAgICAgIGlkPVwiZXhwb3J0U2NlbmVcIlxuICAgICAgICAoY2xpY2spPVwic2F2ZVNjZW5lKClcIlxuICAgICAgPlxuICAgICAgICA8aW1nIHNyYz1cImFzc2V0cy9pY29ucy9zYXZlLnN2Z1wiIGFsdD1cIlwiIC8+IFNhdmUgc2NlbmVcbiAgICAgIDwvYnV0dG9uPlxuXG4gICAgICA8aW5wdXRcbiAgICAgICAgI2xvYWRTY2VuZUlucHV0XG4gICAgICAgIHR5cGU9XCJmaWxlXCJcbiAgICAgICAgdGFiaW5kZXg9XCItMVwiXG4gICAgICAgIGNsYXNzPVwiZmlsZS1pbnB1dFwiXG4gICAgICAgIGFjY2VwdD1cIi5waG54XCJcbiAgICAgICAgbmFtZT1cImltYWdlXCJcbiAgICAgICAgKGNoYW5nZSk9XCJoYW5kbGVQaG9lbml4SW5wdXQoJGV2ZW50LnRhcmdldC5maWxlcylcIlxuICAgICAgLz5cbiAgICAgIDxidXR0b25cbiAgICAgICAgY2xhc3M9XCJmaWxlLWlucHV0LWJ1dHRvbiBsb2FkLWV4cG9ydFwiXG4gICAgICAgIGlkPVwiaW1wb3J0U2NlbmVcIlxuICAgICAgICAoY2xpY2spPVwibG9hZFNjZW5lSW5wdXQuY2xpY2soKVwiXG4gICAgICA+XG4gICAgICAgIDxpbWcgc3JjPVwiYXNzZXRzL2ljb25zL3VwbG9hZC5zdmdcIiBhbHQ9XCJcIiAvPiBMb2FkIHNjZW5lXG4gICAgICA8L2J1dHRvbj5cblxuICAgICAgPGJ1dHRvblxuICAgICAgICBjbGFzcz1cImZpbGUtaW5wdXQtYnV0dG9uIGV4cG9ydC1idXR0b25cIlxuICAgICAgICBpZD1cImV4cG9ydE9CSlwiXG4gICAgICAgIChjbGljayk9XCJleHBvcnRPQkooKVwiXG4gICAgICA+XG4gICAgICAgIDxpbWcgc3JjPVwiYXNzZXRzL2ljb25zL29iai5zdmdcIiBhbHQ9XCJcIiAvPiBTYXZlIE9CSlxuICAgICAgPC9idXR0b24+XG4gICAgPC9kaXY+XG4gIDwvZGl2PlxuICA8ZGl2IG1hdC1kaWFsb2ctYWN0aW9ucz5cbiAgICA8YnV0dG9uIG1hdC1idXR0b24gKGNsaWNrKT1cIm9uQ2xvc2UoKVwiIGNka0ZvY3VzSW5pdGlhbD5DbG9zZTwvYnV0dG9uPlxuICA8L2Rpdj5cbjwvZGl2PlxuIl19
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
import { Component, Input } from '@angular/core';
|
|
2
|
+
import { EventDataFormat, } from '../../../services/extras/event-data-import';
|
|
3
|
+
import { IOOptionsDialogComponent } from './io-options-dialog/io-options-dialog.component';
|
|
4
|
+
import * as i0 from "@angular/core";
|
|
5
|
+
import * as i1 from "@angular/material/dialog";
|
|
6
|
+
import * as i2 from "../menu-toggle/menu-toggle.component";
|
|
7
|
+
export class IoOptionsComponent {
|
|
8
|
+
constructor(dialog) {
|
|
9
|
+
this.dialog = dialog;
|
|
10
|
+
this.eventDataImportOptions = Object.values(EventDataFormat);
|
|
11
|
+
}
|
|
12
|
+
openIODialog() {
|
|
13
|
+
const dialogRef = this.dialog.open(IOOptionsDialogComponent, {
|
|
14
|
+
panelClass: 'dialog',
|
|
15
|
+
});
|
|
16
|
+
dialogRef.componentInstance.eventDataImportOptions =
|
|
17
|
+
this.eventDataImportOptions;
|
|
18
|
+
}
|
|
19
|
+
}
|
|
20
|
+
IoOptionsComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.3", ngImport: i0, type: IoOptionsComponent, deps: [{ token: i1.MatDialog }], target: i0.ɵɵFactoryTarget.Component });
|
|
21
|
+
IoOptionsComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.0.3", type: IoOptionsComponent, selector: "app-io-options", inputs: { eventDataImportOptions: "eventDataImportOptions" }, ngImport: i0, template: "<app-menu-toggle\n tooltip=\"Import and export options\"\n icon=\"import\"\n [active]=\"false\"\n (click)=\"openIODialog()\"\n>\n</app-menu-toggle>\n", styles: [""], components: [{ type: i2.MenuToggleComponent, selector: "app-menu-toggle", inputs: ["icon", "active", "tooltip", "disabled"] }] });
|
|
22
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.3", ngImport: i0, type: IoOptionsComponent, decorators: [{
|
|
23
|
+
type: Component,
|
|
24
|
+
args: [{ selector: 'app-io-options', template: "<app-menu-toggle\n tooltip=\"Import and export options\"\n icon=\"import\"\n [active]=\"false\"\n (click)=\"openIODialog()\"\n>\n</app-menu-toggle>\n", styles: [""] }]
|
|
25
|
+
}], ctorParameters: function () { return [{ type: i1.MatDialog }]; }, propDecorators: { eventDataImportOptions: [{
|
|
26
|
+
type: Input
|
|
27
|
+
}] } });
|
|
28
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW8tb3B0aW9ucy5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9saWIvY29tcG9uZW50cy91aS1tZW51L2lvLW9wdGlvbnMvaW8tb3B0aW9ucy5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi9saWIvY29tcG9uZW50cy91aS1tZW51L2lvLW9wdGlvbnMvaW8tb3B0aW9ucy5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUVqRCxPQUFPLEVBQ0wsZUFBZSxHQUVoQixNQUFNLDRDQUE0QyxDQUFDO0FBQ3BELE9BQU8sRUFBRSx3QkFBd0IsRUFBRSxNQUFNLGlEQUFpRCxDQUFDOzs7O0FBTzNGLE1BQU0sT0FBTyxrQkFBa0I7SUFLN0IsWUFBb0IsTUFBaUI7UUFBakIsV0FBTSxHQUFOLE1BQU0sQ0FBVztRQUhyQywyQkFBc0IsR0FDcEIsTUFBTSxDQUFDLE1BQU0sQ0FBQyxlQUFlLENBQUMsQ0FBQztJQUVPLENBQUM7SUFFekMsWUFBWTtRQUNWLE1BQU0sU0FBUyxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLHdCQUF3QixFQUFFO1lBQzNELFVBQVUsRUFBRSxRQUFRO1NBQ3JCLENBQUMsQ0FBQztRQUNILFNBQVMsQ0FBQyxpQkFBaUIsQ0FBQyxzQkFBc0I7WUFDaEQsSUFBSSxDQUFDLHNCQUFzQixDQUFDO0lBQ2hDLENBQUM7OytHQWJVLGtCQUFrQjttR0FBbEIsa0JBQWtCLG9IQ2IvQiwySkFPQTsyRkRNYSxrQkFBa0I7a0JBTDlCLFNBQVM7K0JBQ0UsZ0JBQWdCO2dHQU0xQixzQkFBc0I7c0JBRHJCLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIElucHV0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBNYXREaWFsb2cgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9kaWFsb2cnO1xuaW1wb3J0IHtcbiAgRXZlbnREYXRhRm9ybWF0LFxuICBFdmVudERhdGFJbXBvcnRPcHRpb24sXG59IGZyb20gJy4uLy4uLy4uL3NlcnZpY2VzL2V4dHJhcy9ldmVudC1kYXRhLWltcG9ydCc7XG5pbXBvcnQgeyBJT09wdGlvbnNEaWFsb2dDb21wb25lbnQgfSBmcm9tICcuL2lvLW9wdGlvbnMtZGlhbG9nL2lvLW9wdGlvbnMtZGlhbG9nLmNvbXBvbmVudCc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2FwcC1pby1vcHRpb25zJyxcbiAgdGVtcGxhdGVVcmw6ICcuL2lvLW9wdGlvbnMuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9pby1vcHRpb25zLmNvbXBvbmVudC5zY3NzJ10sXG59KVxuZXhwb3J0IGNsYXNzIElvT3B0aW9uc0NvbXBvbmVudCB7XG4gIEBJbnB1dCgpXG4gIGV2ZW50RGF0YUltcG9ydE9wdGlvbnM6IEV2ZW50RGF0YUltcG9ydE9wdGlvbltdID1cbiAgICBPYmplY3QudmFsdWVzKEV2ZW50RGF0YUZvcm1hdCk7XG5cbiAgY29uc3RydWN0b3IocHJpdmF0ZSBkaWFsb2c6IE1hdERpYWxvZykge31cblxuICBvcGVuSU9EaWFsb2coKSB7XG4gICAgY29uc3QgZGlhbG9nUmVmID0gdGhpcy5kaWFsb2cub3BlbihJT09wdGlvbnNEaWFsb2dDb21wb25lbnQsIHtcbiAgICAgIHBhbmVsQ2xhc3M6ICdkaWFsb2cnLFxuICAgIH0pO1xuICAgIGRpYWxvZ1JlZi5jb21wb25lbnRJbnN0YW5jZS5ldmVudERhdGFJbXBvcnRPcHRpb25zID1cbiAgICAgIHRoaXMuZXZlbnREYXRhSW1wb3J0T3B0aW9ucztcbiAgfVxufVxuIiwiPGFwcC1tZW51LXRvZ2dsZVxuICB0b29sdGlwPVwiSW1wb3J0IGFuZCBleHBvcnQgb3B0aW9uc1wiXG4gIGljb249XCJpbXBvcnRcIlxuICBbYWN0aXZlXT1cImZhbHNlXCJcbiAgKGNsaWNrKT1cIm9wZW5JT0RpYWxvZygpXCJcbj5cbjwvYXBwLW1lbnUtdG9nZ2xlPlxuIl19
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
import { Component } from '@angular/core';
|
|
2
|
+
import * as i0 from "@angular/core";
|
|
3
|
+
import * as i1 from "../../../services/event-display.service";
|
|
4
|
+
import * as i2 from "../menu-toggle/menu-toggle.component";
|
|
5
|
+
import * as i3 from "@angular/material/tooltip";
|
|
6
|
+
export class MainViewToggleComponent {
|
|
7
|
+
constructor(eventDisplay) {
|
|
8
|
+
this.eventDisplay = eventDisplay;
|
|
9
|
+
this.orthographicView = false;
|
|
10
|
+
}
|
|
11
|
+
switchMainView() {
|
|
12
|
+
this.orthographicView = !this.orthographicView;
|
|
13
|
+
this.eventDisplay
|
|
14
|
+
.getUIManager()
|
|
15
|
+
.toggleOrthographicView(this.orthographicView);
|
|
16
|
+
}
|
|
17
|
+
}
|
|
18
|
+
MainViewToggleComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.3", ngImport: i0, type: MainViewToggleComponent, deps: [{ token: i1.EventDisplayService }], target: i0.ɵɵFactoryTarget.Component });
|
|
19
|
+
MainViewToggleComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.0.3", type: MainViewToggleComponent, selector: "app-main-view-toggle", ngImport: i0, template: "<app-menu-toggle\n [icon]=\"orthographicView ? 'perspective' : 'orthographic'\"\n [matTooltip]=\"\n 'Switch to ' + (orthographicView ? 'perspective' : 'orthographic') + ' view'\n \"\n (click)=\"switchMainView()\"\n>\n</app-menu-toggle>\n", styles: [""], components: [{ type: i2.MenuToggleComponent, selector: "app-menu-toggle", inputs: ["icon", "active", "tooltip", "disabled"] }], directives: [{ type: i3.MatTooltip, selector: "[matTooltip]", exportAs: ["matTooltip"] }] });
|
|
20
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.3", ngImport: i0, type: MainViewToggleComponent, decorators: [{
|
|
21
|
+
type: Component,
|
|
22
|
+
args: [{ selector: 'app-main-view-toggle', template: "<app-menu-toggle\n [icon]=\"orthographicView ? 'perspective' : 'orthographic'\"\n [matTooltip]=\"\n 'Switch to ' + (orthographicView ? 'perspective' : 'orthographic') + ' view'\n \"\n (click)=\"switchMainView()\"\n>\n</app-menu-toggle>\n", styles: [""] }]
|
|
23
|
+
}], ctorParameters: function () { return [{ type: i1.EventDisplayService }]; } });
|
|
24
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWFpbi12aWV3LXRvZ2dsZS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9saWIvY29tcG9uZW50cy91aS1tZW51L21haW4tdmlldy10b2dnbGUvbWFpbi12aWV3LXRvZ2dsZS5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi9saWIvY29tcG9uZW50cy91aS1tZW51L21haW4tdmlldy10b2dnbGUvbWFpbi12aWV3LXRvZ2dsZS5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sZUFBZSxDQUFDOzs7OztBQVExQyxNQUFNLE9BQU8sdUJBQXVCO0lBR2xDLFlBQW9CLFlBQWlDO1FBQWpDLGlCQUFZLEdBQVosWUFBWSxDQUFxQjtRQUZyRCxxQkFBZ0IsR0FBWSxLQUFLLENBQUM7SUFFc0IsQ0FBQztJQUV6RCxjQUFjO1FBQ1osSUFBSSxDQUFDLGdCQUFnQixHQUFHLENBQUMsSUFBSSxDQUFDLGdCQUFnQixDQUFDO1FBQy9DLElBQUksQ0FBQyxZQUFZO2FBQ2QsWUFBWSxFQUFFO2FBQ2Qsc0JBQXNCLENBQUMsSUFBSSxDQUFDLGdCQUFnQixDQUFDLENBQUM7SUFDbkQsQ0FBQzs7b0hBVlUsdUJBQXVCO3dHQUF2Qix1QkFBdUIsNERDUnBDLHNQQVFBOzJGREFhLHVCQUF1QjtrQkFMbkMsU0FBUzsrQkFDRSxzQkFBc0IiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEV2ZW50RGlzcGxheVNlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi9zZXJ2aWNlcy9ldmVudC1kaXNwbGF5LnNlcnZpY2UnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdhcHAtbWFpbi12aWV3LXRvZ2dsZScsXG4gIHRlbXBsYXRlVXJsOiAnLi9tYWluLXZpZXctdG9nZ2xlLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vbWFpbi12aWV3LXRvZ2dsZS5jb21wb25lbnQuc2NzcyddLFxufSlcbmV4cG9ydCBjbGFzcyBNYWluVmlld1RvZ2dsZUNvbXBvbmVudCB7XG4gIG9ydGhvZ3JhcGhpY1ZpZXc6IGJvb2xlYW4gPSBmYWxzZTtcblxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIGV2ZW50RGlzcGxheTogRXZlbnREaXNwbGF5U2VydmljZSkge31cblxuICBzd2l0Y2hNYWluVmlldygpIHtcbiAgICB0aGlzLm9ydGhvZ3JhcGhpY1ZpZXcgPSAhdGhpcy5vcnRob2dyYXBoaWNWaWV3O1xuICAgIHRoaXMuZXZlbnREaXNwbGF5XG4gICAgICAuZ2V0VUlNYW5hZ2VyKClcbiAgICAgIC50b2dnbGVPcnRob2dyYXBoaWNWaWV3KHRoaXMub3J0aG9ncmFwaGljVmlldyk7XG4gIH1cbn1cbiIsIjxhcHAtbWVudS10b2dnbGVcbiAgW2ljb25dPVwib3J0aG9ncmFwaGljVmlldyA/ICdwZXJzcGVjdGl2ZScgOiAnb3J0aG9ncmFwaGljJ1wiXG4gIFttYXRUb29sdGlwXT1cIlxuICAgICdTd2l0Y2ggdG8gJyArIChvcnRob2dyYXBoaWNWaWV3ID8gJ3BlcnNwZWN0aXZlJyA6ICdvcnRob2dyYXBoaWMnKSArICcgdmlldydcbiAgXCJcbiAgKGNsaWNrKT1cInN3aXRjaE1haW5WaWV3KClcIlxuPlxuPC9hcHAtbWVudS10b2dnbGU+XG4iXX0=
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
import { Component, Input } from '@angular/core';
|
|
2
|
+
import * as i0 from "@angular/core";
|
|
3
|
+
import * as i1 from "@angular/common";
|
|
4
|
+
import * as i2 from "@angular/material/tooltip";
|
|
5
|
+
export class MenuToggleComponent {
|
|
6
|
+
constructor() {
|
|
7
|
+
this.disabled = false;
|
|
8
|
+
}
|
|
9
|
+
}
|
|
10
|
+
MenuToggleComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.3", ngImport: i0, type: MenuToggleComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
11
|
+
MenuToggleComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.0.3", type: MenuToggleComponent, selector: "app-menu-toggle", inputs: { icon: "icon", active: "active", tooltip: "tooltip", disabled: "disabled" }, ngImport: i0, template: "<button\n class=\"menu-toggle\"\n [ngClass]=\"{ disabled: disabled }\"\n [matTooltip]=\"tooltip\"\n matTooltipPosition=\"above\"\n matTooltipTouchGestures=\"off\"\n>\n <svg class=\"menu-toggle-icon\" [ngClass]=\"{ 'active-icon': active }\">\n <use attr.href=\"assets/icons/{{ icon }}.svg#{{ icon }}\"></use>\n </svg>\n</button>\n", styles: [":host{display:flex;margin:0 .6rem}:host .menu-toggle{display:flex;background:unset;border:none;height:2.5rem;width:2.5rem;min-height:2.5rem;min-width:2.5rem;padding:.65rem;cursor:pointer;align-self:center;transition:all .4s}:host .menu-toggle-icon{width:100%;height:100%}:host .menu-toggle-icon.active-icon{--phoenix-options-icon-path: #00bcd4}:host .menu-toggle:hover{background-color:var(--phoenix-options-icon-bg);border-radius:40%;transition:all .4s}:host .menu-toggle.disabled{cursor:not-allowed;opacity:.4}\n"], directives: [{ type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { type: i2.MatTooltip, selector: "[matTooltip]", exportAs: ["matTooltip"] }] });
|
|
12
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.3", ngImport: i0, type: MenuToggleComponent, decorators: [{
|
|
13
|
+
type: Component,
|
|
14
|
+
args: [{ selector: 'app-menu-toggle', template: "<button\n class=\"menu-toggle\"\n [ngClass]=\"{ disabled: disabled }\"\n [matTooltip]=\"tooltip\"\n matTooltipPosition=\"above\"\n matTooltipTouchGestures=\"off\"\n>\n <svg class=\"menu-toggle-icon\" [ngClass]=\"{ 'active-icon': active }\">\n <use attr.href=\"assets/icons/{{ icon }}.svg#{{ icon }}\"></use>\n </svg>\n</button>\n", styles: [":host{display:flex;margin:0 .6rem}:host .menu-toggle{display:flex;background:unset;border:none;height:2.5rem;width:2.5rem;min-height:2.5rem;min-width:2.5rem;padding:.65rem;cursor:pointer;align-self:center;transition:all .4s}:host .menu-toggle-icon{width:100%;height:100%}:host .menu-toggle-icon.active-icon{--phoenix-options-icon-path: #00bcd4}:host .menu-toggle:hover{background-color:var(--phoenix-options-icon-bg);border-radius:40%;transition:all .4s}:host .menu-toggle.disabled{cursor:not-allowed;opacity:.4}\n"] }]
|
|
15
|
+
}], propDecorators: { icon: [{
|
|
16
|
+
type: Input
|
|
17
|
+
}], active: [{
|
|
18
|
+
type: Input
|
|
19
|
+
}], tooltip: [{
|
|
20
|
+
type: Input
|
|
21
|
+
}], disabled: [{
|
|
22
|
+
type: Input
|
|
23
|
+
}] } });
|
|
24
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWVudS10b2dnbGUuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vbGliL2NvbXBvbmVudHMvdWktbWVudS9tZW51LXRvZ2dsZS9tZW51LXRvZ2dsZS5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi9saWIvY29tcG9uZW50cy91aS1tZW51L21lbnUtdG9nZ2xlL21lbnUtdG9nZ2xlLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFFLE1BQU0sZUFBZSxDQUFDOzs7O0FBT2pELE1BQU0sT0FBTyxtQkFBbUI7SUFMaEM7UUFTVyxhQUFRLEdBQVksS0FBSyxDQUFDO0tBQ3BDOztnSEFMWSxtQkFBbUI7b0dBQW5CLG1CQUFtQiw2SUNQaEMscVZBV0E7MkZESmEsbUJBQW1CO2tCQUwvQixTQUFTOytCQUNFLGlCQUFpQjs4QkFLbEIsSUFBSTtzQkFBWixLQUFLO2dCQUNHLE1BQU07c0JBQWQsS0FBSztnQkFDRyxPQUFPO3NCQUFmLEtBQUs7Z0JBQ0csUUFBUTtzQkFBaEIsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgSW5wdXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnYXBwLW1lbnUtdG9nZ2xlJyxcbiAgdGVtcGxhdGVVcmw6ICcuL21lbnUtdG9nZ2xlLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vbWVudS10b2dnbGUuY29tcG9uZW50LnNjc3MnXSxcbn0pXG5leHBvcnQgY2xhc3MgTWVudVRvZ2dsZUNvbXBvbmVudCB7XG4gIEBJbnB1dCgpIGljb246IHN0cmluZztcbiAgQElucHV0KCkgYWN0aXZlOiBib29sZWFuO1xuICBASW5wdXQoKSB0b29sdGlwOiBzdHJpbmc7XG4gIEBJbnB1dCgpIGRpc2FibGVkOiBib29sZWFuID0gZmFsc2U7XG59XG4iLCI8YnV0dG9uXG4gIGNsYXNzPVwibWVudS10b2dnbGVcIlxuICBbbmdDbGFzc109XCJ7IGRpc2FibGVkOiBkaXNhYmxlZCB9XCJcbiAgW21hdFRvb2x0aXBdPVwidG9vbHRpcFwiXG4gIG1hdFRvb2x0aXBQb3NpdGlvbj1cImFib3ZlXCJcbiAgbWF0VG9vbHRpcFRvdWNoR2VzdHVyZXM9XCJvZmZcIlxuPlxuICA8c3ZnIGNsYXNzPVwibWVudS10b2dnbGUtaWNvblwiIFtuZ0NsYXNzXT1cInsgJ2FjdGl2ZS1pY29uJzogYWN0aXZlIH1cIj5cbiAgICA8dXNlIGF0dHIuaHJlZj1cImFzc2V0cy9pY29ucy97eyBpY29uIH19LnN2ZyN7eyBpY29uIH19XCI+PC91c2U+XG4gIDwvc3ZnPlxuPC9idXR0b24+XG4iXX0=
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
import { Component } from '@angular/core';
|
|
2
|
+
import * as i0 from "@angular/core";
|
|
3
|
+
import * as i1 from "../../../services/event-display.service";
|
|
4
|
+
import * as i2 from "@angular/material/menu";
|
|
5
|
+
import * as i3 from "@angular/material/checkbox";
|
|
6
|
+
import * as i4 from "@angular/material/slider";
|
|
7
|
+
import * as i5 from "../menu-toggle/menu-toggle.component";
|
|
8
|
+
export class ObjectClippingComponent {
|
|
9
|
+
constructor(eventDisplay) {
|
|
10
|
+
this.eventDisplay = eventDisplay;
|
|
11
|
+
const stateManager = this.eventDisplay.getStateManager();
|
|
12
|
+
stateManager.clippingEnabled.onUpdate((clippingValue) => (this.clippingEnabled = clippingValue));
|
|
13
|
+
stateManager.clippingAngle.onUpdate((value) => (this.clippingAngle = value));
|
|
14
|
+
}
|
|
15
|
+
changeClippingAngle(change) {
|
|
16
|
+
const angle = change.value;
|
|
17
|
+
this.eventDisplay.getUIManager().rotateClipping(angle);
|
|
18
|
+
}
|
|
19
|
+
toggleClipping(change) {
|
|
20
|
+
const value = change.checked;
|
|
21
|
+
this.eventDisplay.getUIManager().setClipping(value);
|
|
22
|
+
this.clippingEnabled = value;
|
|
23
|
+
}
|
|
24
|
+
}
|
|
25
|
+
ObjectClippingComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.3", ngImport: i0, type: ObjectClippingComponent, deps: [{ token: i1.EventDisplayService }], target: i0.ɵɵFactoryTarget.Component });
|
|
26
|
+
ObjectClippingComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.0.3", type: ObjectClippingComponent, selector: "app-object-clipping", ngImport: i0, template: "<mat-menu class=\"mat-menu\" #menu>\n <button\n mat-menu-item\n (click)=\"\n $event.stopPropagation();\n clippingCheckbox._inputElement.nativeElement.click()\n \"\n >\n <mat-checkbox\n #clippingCheckbox\n [checked]=\"clippingEnabled\"\n (click)=\"$event.stopPropagation()\"\n (change)=\"toggleClipping($event)\"\n >Clipping\n </mat-checkbox>\n </button>\n <button class=\"slider-btn\" mat-menu-item (focus)=\"clippingSlider.focus()\">\n <mat-slider\n #clippingSlider\n min=\"0\"\n max=\"180\"\n step=\"1\"\n thumbLabel\n [value]=\"clippingAngle\"\n (click)=\"$event.stopPropagation()\"\n (input)=\"changeClippingAngle($event)\"\n >\n </mat-slider>\n </button>\n</mat-menu>\n\n<app-menu-toggle\n [matMenuTriggerFor]=\"menu\"\n tooltip=\"Geometry clipping\"\n icon=\"clipping\"\n [active]=\"clippingEnabled\"\n>\n</app-menu-toggle>\n", styles: [".slider-btn{overflow:visible}mat-slider{margin-left:.75rem;margin-right:.75rem}\n"], components: [{ type: i2.MatMenu, selector: "mat-menu", exportAs: ["matMenu"] }, { type: i2.MatMenuItem, selector: "[mat-menu-item]", inputs: ["disabled", "disableRipple", "role"], exportAs: ["matMenuItem"] }, { type: i3.MatCheckbox, selector: "mat-checkbox", inputs: ["disableRipple", "color", "tabIndex", "aria-label", "aria-labelledby", "aria-describedby", "id", "required", "labelPosition", "name", "value", "checked", "disabled", "indeterminate"], outputs: ["change", "indeterminateChange"], exportAs: ["matCheckbox"] }, { type: i4.MatSlider, selector: "mat-slider", inputs: ["disabled", "color", "tabIndex", "invert", "max", "min", "step", "thumbLabel", "tickInterval", "value", "displayWith", "valueText", "vertical"], outputs: ["change", "input", "valueChange"], exportAs: ["matSlider"] }, { type: i5.MenuToggleComponent, selector: "app-menu-toggle", inputs: ["icon", "active", "tooltip", "disabled"] }], directives: [{ type: i2.MatMenuTrigger, selector: "[mat-menu-trigger-for], [matMenuTriggerFor]", exportAs: ["matMenuTrigger"] }] });
|
|
27
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.3", ngImport: i0, type: ObjectClippingComponent, decorators: [{
|
|
28
|
+
type: Component,
|
|
29
|
+
args: [{ selector: 'app-object-clipping', template: "<mat-menu class=\"mat-menu\" #menu>\n <button\n mat-menu-item\n (click)=\"\n $event.stopPropagation();\n clippingCheckbox._inputElement.nativeElement.click()\n \"\n >\n <mat-checkbox\n #clippingCheckbox\n [checked]=\"clippingEnabled\"\n (click)=\"$event.stopPropagation()\"\n (change)=\"toggleClipping($event)\"\n >Clipping\n </mat-checkbox>\n </button>\n <button class=\"slider-btn\" mat-menu-item (focus)=\"clippingSlider.focus()\">\n <mat-slider\n #clippingSlider\n min=\"0\"\n max=\"180\"\n step=\"1\"\n thumbLabel\n [value]=\"clippingAngle\"\n (click)=\"$event.stopPropagation()\"\n (input)=\"changeClippingAngle($event)\"\n >\n </mat-slider>\n </button>\n</mat-menu>\n\n<app-menu-toggle\n [matMenuTriggerFor]=\"menu\"\n tooltip=\"Geometry clipping\"\n icon=\"clipping\"\n [active]=\"clippingEnabled\"\n>\n</app-menu-toggle>\n", styles: [".slider-btn{overflow:visible}mat-slider{margin-left:.75rem;margin-right:.75rem}\n"] }]
|
|
30
|
+
}], ctorParameters: function () { return [{ type: i1.EventDisplayService }]; } });
|
|
31
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib2JqZWN0LWNsaXBwaW5nLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL2xpYi9jb21wb25lbnRzL3VpLW1lbnUvb2JqZWN0LWNsaXBwaW5nL29iamVjdC1jbGlwcGluZy5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi9saWIvY29tcG9uZW50cy91aS1tZW51L29iamVjdC1jbGlwcGluZy9vYmplY3QtY2xpcHBpbmcuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLGVBQWUsQ0FBQzs7Ozs7OztBQVUxQyxNQUFNLE9BQU8sdUJBQXVCO0lBSWxDLFlBQW9CLFlBQWlDO1FBQWpDLGlCQUFZLEdBQVosWUFBWSxDQUFxQjtRQUNuRCxNQUFNLFlBQVksR0FBRyxJQUFJLENBQUMsWUFBWSxDQUFDLGVBQWUsRUFBRSxDQUFDO1FBQ3pELFlBQVksQ0FBQyxlQUFlLENBQUMsUUFBUSxDQUNuQyxDQUFDLGFBQWEsRUFBRSxFQUFFLENBQUMsQ0FBQyxJQUFJLENBQUMsZUFBZSxHQUFHLGFBQWEsQ0FBQyxDQUMxRCxDQUFDO1FBQ0YsWUFBWSxDQUFDLGFBQWEsQ0FBQyxRQUFRLENBQ2pDLENBQUMsS0FBSyxFQUFFLEVBQUUsQ0FBQyxDQUFDLElBQUksQ0FBQyxhQUFhLEdBQUcsS0FBSyxDQUFDLENBQ3hDLENBQUM7SUFDSixDQUFDO0lBRUQsbUJBQW1CLENBQUMsTUFBdUI7UUFDekMsTUFBTSxLQUFLLEdBQUcsTUFBTSxDQUFDLEtBQUssQ0FBQztRQUMzQixJQUFJLENBQUMsWUFBWSxDQUFDLFlBQVksRUFBRSxDQUFDLGNBQWMsQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUN6RCxDQUFDO0lBRUQsY0FBYyxDQUFDLE1BQXlCO1FBQ3RDLE1BQU0sS0FBSyxHQUFHLE1BQU0sQ0FBQyxPQUFPLENBQUM7UUFDN0IsSUFBSSxDQUFDLFlBQVksQ0FBQyxZQUFZLEVBQUUsQ0FBQyxXQUFXLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDcEQsSUFBSSxDQUFDLGVBQWUsR0FBRyxLQUFLLENBQUM7SUFDL0IsQ0FBQzs7b0hBdkJVLHVCQUF1Qjt3R0FBdkIsdUJBQXVCLDJEQ1ZwQyw2NkJBc0NBOzJGRDVCYSx1QkFBdUI7a0JBTG5DLFNBQVM7K0JBQ0UscUJBQXFCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBNYXRTbGlkZXJDaGFuZ2UgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9zbGlkZXInO1xuaW1wb3J0IHsgTWF0Q2hlY2tib3hDaGFuZ2UgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9jaGVja2JveCc7XG5pbXBvcnQgeyBFdmVudERpc3BsYXlTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vc2VydmljZXMvZXZlbnQtZGlzcGxheS5zZXJ2aWNlJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnYXBwLW9iamVjdC1jbGlwcGluZycsXG4gIHRlbXBsYXRlVXJsOiAnLi9vYmplY3QtY2xpcHBpbmcuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9vYmplY3QtY2xpcHBpbmcuY29tcG9uZW50LnNjc3MnXSxcbn0pXG5leHBvcnQgY2xhc3MgT2JqZWN0Q2xpcHBpbmdDb21wb25lbnQge1xuICBjbGlwcGluZ0VuYWJsZWQ6IGJvb2xlYW47XG4gIGNsaXBwaW5nQW5nbGU6IG51bWJlcjtcblxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIGV2ZW50RGlzcGxheTogRXZlbnREaXNwbGF5U2VydmljZSkge1xuICAgIGNvbnN0IHN0YXRlTWFuYWdlciA9IHRoaXMuZXZlbnREaXNwbGF5LmdldFN0YXRlTWFuYWdlcigpO1xuICAgIHN0YXRlTWFuYWdlci5jbGlwcGluZ0VuYWJsZWQub25VcGRhdGUoXG4gICAgICAoY2xpcHBpbmdWYWx1ZSkgPT4gKHRoaXMuY2xpcHBpbmdFbmFibGVkID0gY2xpcHBpbmdWYWx1ZSlcbiAgICApO1xuICAgIHN0YXRlTWFuYWdlci5jbGlwcGluZ0FuZ2xlLm9uVXBkYXRlKFxuICAgICAgKHZhbHVlKSA9PiAodGhpcy5jbGlwcGluZ0FuZ2xlID0gdmFsdWUpXG4gICAgKTtcbiAgfVxuXG4gIGNoYW5nZUNsaXBwaW5nQW5nbGUoY2hhbmdlOiBNYXRTbGlkZXJDaGFuZ2UpIHtcbiAgICBjb25zdCBhbmdsZSA9IGNoYW5nZS52YWx1ZTtcbiAgICB0aGlzLmV2ZW50RGlzcGxheS5nZXRVSU1hbmFnZXIoKS5yb3RhdGVDbGlwcGluZyhhbmdsZSk7XG4gIH1cblxuICB0b2dnbGVDbGlwcGluZyhjaGFuZ2U6IE1hdENoZWNrYm94Q2hhbmdlKSB7XG4gICAgY29uc3QgdmFsdWUgPSBjaGFuZ2UuY2hlY2tlZDtcbiAgICB0aGlzLmV2ZW50RGlzcGxheS5nZXRVSU1hbmFnZXIoKS5zZXRDbGlwcGluZyh2YWx1ZSk7XG4gICAgdGhpcy5jbGlwcGluZ0VuYWJsZWQgPSB2YWx1ZTtcbiAgfVxufVxuIiwiPG1hdC1tZW51IGNsYXNzPVwibWF0LW1lbnVcIiAjbWVudT5cbiAgPGJ1dHRvblxuICAgIG1hdC1tZW51LWl0ZW1cbiAgICAoY2xpY2spPVwiXG4gICAgICAkZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgICBjbGlwcGluZ0NoZWNrYm94Ll9pbnB1dEVsZW1lbnQubmF0aXZlRWxlbWVudC5jbGljaygpXG4gICAgXCJcbiAgPlxuICAgIDxtYXQtY2hlY2tib3hcbiAgICAgICNjbGlwcGluZ0NoZWNrYm94XG4gICAgICBbY2hlY2tlZF09XCJjbGlwcGluZ0VuYWJsZWRcIlxuICAgICAgKGNsaWNrKT1cIiRldmVudC5zdG9wUHJvcGFnYXRpb24oKVwiXG4gICAgICAoY2hhbmdlKT1cInRvZ2dsZUNsaXBwaW5nKCRldmVudClcIlxuICAgICAgPkNsaXBwaW5nXG4gICAgPC9tYXQtY2hlY2tib3g+XG4gIDwvYnV0dG9uPlxuICA8YnV0dG9uIGNsYXNzPVwic2xpZGVyLWJ0blwiIG1hdC1tZW51LWl0ZW0gKGZvY3VzKT1cImNsaXBwaW5nU2xpZGVyLmZvY3VzKClcIj5cbiAgICA8bWF0LXNsaWRlclxuICAgICAgI2NsaXBwaW5nU2xpZGVyXG4gICAgICBtaW49XCIwXCJcbiAgICAgIG1heD1cIjE4MFwiXG4gICAgICBzdGVwPVwiMVwiXG4gICAgICB0aHVtYkxhYmVsXG4gICAgICBbdmFsdWVdPVwiY2xpcHBpbmdBbmdsZVwiXG4gICAgICAoY2xpY2spPVwiJGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpXCJcbiAgICAgIChpbnB1dCk9XCJjaGFuZ2VDbGlwcGluZ0FuZ2xlKCRldmVudClcIlxuICAgID5cbiAgICA8L21hdC1zbGlkZXI+XG4gIDwvYnV0dG9uPlxuPC9tYXQtbWVudT5cblxuPGFwcC1tZW51LXRvZ2dsZVxuICBbbWF0TWVudVRyaWdnZXJGb3JdPVwibWVudVwiXG4gIHRvb2x0aXA9XCJHZW9tZXRyeSBjbGlwcGluZ1wiXG4gIGljb249XCJjbGlwcGluZ1wiXG4gIFthY3RpdmVdPVwiY2xpcHBpbmdFbmFibGVkXCJcbj5cbjwvYXBwLW1lbnUtdG9nZ2xlPlxuIl19
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
import { Component, Input } from '@angular/core';
|
|
2
|
+
import * as i0 from "@angular/core";
|
|
3
|
+
import * as i1 from "../../../../services/event-display.service";
|
|
4
|
+
import * as i2 from "../../overlay/overlay.component";
|
|
5
|
+
import * as i3 from "@angular/common";
|
|
6
|
+
import * as i4 from "../../../../services/extras/attribute.pipe";
|
|
7
|
+
export class ObjectSelectionOverlayComponent {
|
|
8
|
+
constructor(eventDisplay) {
|
|
9
|
+
this.eventDisplay = eventDisplay;
|
|
10
|
+
this.selectedObject = { name: 'Object', attributes: [] };
|
|
11
|
+
}
|
|
12
|
+
ngOnInit() {
|
|
13
|
+
this.eventDisplay.allowSelection(this.selectedObject);
|
|
14
|
+
}
|
|
15
|
+
}
|
|
16
|
+
ObjectSelectionOverlayComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.3", ngImport: i0, type: ObjectSelectionOverlayComponent, deps: [{ token: i1.EventDisplayService }], target: i0.ɵɵFactoryTarget.Component });
|
|
17
|
+
ObjectSelectionOverlayComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.0.3", type: ObjectSelectionOverlayComponent, selector: "app-object-selection-overlay", inputs: { hiddenSelectedInfo: "hiddenSelectedInfo" }, ngImport: i0, template: "<app-overlay\n icon=\"cursor\"\n [overlayTitle]=\"selectedObject.name\"\n [active]=\"!hiddenSelectedInfo\"\n>\n <div\n id=\"selectedObjectPanelBody\"\n class=\"m-1\"\n *ngIf=\"selectedObject.attributes.length > 0\"\n >\n <div\n *ngFor=\"let attribute of selectedObject.attributes\"\n class=\"attributeField\"\n >\n <strong>{{ attribute.attributeName }}</strong>\n : {{ attribute.attributeValue | attributePipe }}\n </div>\n </div>\n</app-overlay>\n", styles: ["#selectedObjectPanelBody{padding:0 .8em;overflow:auto;max-width:300px;max-height:16rem;min-width:7rem}\n"], components: [{ type: i2.OverlayComponent, selector: "app-overlay", inputs: ["overlayTitle", "active", "icon", "resizable", "transparentBody"] }], directives: [{ type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i3.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }], pipes: { "attributePipe": i4.AttributePipe } });
|
|
18
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.3", ngImport: i0, type: ObjectSelectionOverlayComponent, decorators: [{
|
|
19
|
+
type: Component,
|
|
20
|
+
args: [{ selector: 'app-object-selection-overlay', template: "<app-overlay\n icon=\"cursor\"\n [overlayTitle]=\"selectedObject.name\"\n [active]=\"!hiddenSelectedInfo\"\n>\n <div\n id=\"selectedObjectPanelBody\"\n class=\"m-1\"\n *ngIf=\"selectedObject.attributes.length > 0\"\n >\n <div\n *ngFor=\"let attribute of selectedObject.attributes\"\n class=\"attributeField\"\n >\n <strong>{{ attribute.attributeName }}</strong>\n : {{ attribute.attributeValue | attributePipe }}\n </div>\n </div>\n</app-overlay>\n", styles: ["#selectedObjectPanelBody{padding:0 .8em;overflow:auto;max-width:300px;max-height:16rem;min-width:7rem}\n"] }]
|
|
21
|
+
}], ctorParameters: function () { return [{ type: i1.EventDisplayService }]; }, propDecorators: { hiddenSelectedInfo: [{
|
|
22
|
+
type: Input
|
|
23
|
+
}] } });
|
|
24
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib2JqZWN0LXNlbGVjdGlvbi1vdmVybGF5LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL2xpYi9jb21wb25lbnRzL3VpLW1lbnUvb2JqZWN0LXNlbGVjdGlvbi9vYmplY3Qtc2VsZWN0aW9uLW92ZXJsYXkvb2JqZWN0LXNlbGVjdGlvbi1vdmVybGF5LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL2xpYi9jb21wb25lbnRzL3VpLW1lbnUvb2JqZWN0LXNlbGVjdGlvbi9vYmplY3Qtc2VsZWN0aW9uLW92ZXJsYXkvb2JqZWN0LXNlbGVjdGlvbi1vdmVybGF5LmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQVUsS0FBSyxFQUFFLE1BQU0sZUFBZSxDQUFDOzs7Ozs7QUFRekQsTUFBTSxPQUFPLCtCQUErQjtJQUsxQyxZQUFvQixZQUFpQztRQUFqQyxpQkFBWSxHQUFaLFlBQVksQ0FBcUI7UUFGckQsbUJBQWMsR0FBRyxFQUFFLElBQUksRUFBRSxRQUFRLEVBQUUsVUFBVSxFQUFFLEVBQUUsRUFBRSxDQUFDO0lBRUksQ0FBQztJQUV6RCxRQUFRO1FBQ04sSUFBSSxDQUFDLFlBQVksQ0FBQyxjQUFjLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxDQUFDO0lBQ3hELENBQUM7OzRIQVRVLCtCQUErQjtnSEFBL0IsK0JBQStCLDBIQ1I1Qyw4ZUFtQkE7MkZEWGEsK0JBQStCO2tCQUwzQyxTQUFTOytCQUNFLDhCQUE4QjswR0FNL0Isa0JBQWtCO3NCQUExQixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBPbkluaXQsIElucHV0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBFdmVudERpc3BsYXlTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vLi4vc2VydmljZXMvZXZlbnQtZGlzcGxheS5zZXJ2aWNlJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnYXBwLW9iamVjdC1zZWxlY3Rpb24tb3ZlcmxheScsXG4gIHRlbXBsYXRlVXJsOiAnLi9vYmplY3Qtc2VsZWN0aW9uLW92ZXJsYXkuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9vYmplY3Qtc2VsZWN0aW9uLW92ZXJsYXkuY29tcG9uZW50LnNjc3MnXSxcbn0pXG5leHBvcnQgY2xhc3MgT2JqZWN0U2VsZWN0aW9uT3ZlcmxheUNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XG4gIC8vIEF0dHJpYnV0ZXMgZm9yIGRpc3BsYXlpbmcgdGhlIGluZm9ybWF0aW9uIG9mIHNlbGVjdGVkIG9iamVjdHNcbiAgQElucHV0KCkgaGlkZGVuU2VsZWN0ZWRJbmZvOiBib29sZWFuO1xuICBzZWxlY3RlZE9iamVjdCA9IHsgbmFtZTogJ09iamVjdCcsIGF0dHJpYnV0ZXM6IFtdIH07XG5cbiAgY29uc3RydWN0b3IocHJpdmF0ZSBldmVudERpc3BsYXk6IEV2ZW50RGlzcGxheVNlcnZpY2UpIHt9XG5cbiAgbmdPbkluaXQoKSB7XG4gICAgdGhpcy5ldmVudERpc3BsYXkuYWxsb3dTZWxlY3Rpb24odGhpcy5zZWxlY3RlZE9iamVjdCk7XG4gIH1cbn1cbiIsIjxhcHAtb3ZlcmxheVxuICBpY29uPVwiY3Vyc29yXCJcbiAgW292ZXJsYXlUaXRsZV09XCJzZWxlY3RlZE9iamVjdC5uYW1lXCJcbiAgW2FjdGl2ZV09XCIhaGlkZGVuU2VsZWN0ZWRJbmZvXCJcbj5cbiAgPGRpdlxuICAgIGlkPVwic2VsZWN0ZWRPYmplY3RQYW5lbEJvZHlcIlxuICAgIGNsYXNzPVwibS0xXCJcbiAgICAqbmdJZj1cInNlbGVjdGVkT2JqZWN0LmF0dHJpYnV0ZXMubGVuZ3RoID4gMFwiXG4gID5cbiAgICA8ZGl2XG4gICAgICAqbmdGb3I9XCJsZXQgYXR0cmlidXRlIG9mIHNlbGVjdGVkT2JqZWN0LmF0dHJpYnV0ZXNcIlxuICAgICAgY2xhc3M9XCJhdHRyaWJ1dGVGaWVsZFwiXG4gICAgPlxuICAgICAgPHN0cm9uZz57eyBhdHRyaWJ1dGUuYXR0cmlidXRlTmFtZSB9fTwvc3Ryb25nPlxuICAgICAgOiB7eyBhdHRyaWJ1dGUuYXR0cmlidXRlVmFsdWUgfCBhdHRyaWJ1dGVQaXBlIH19XG4gICAgPC9kaXY+XG4gIDwvZGl2PlxuPC9hcHAtb3ZlcmxheT5cbiJdfQ==
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
import { Component } from '@angular/core';
|
|
2
|
+
import { ComponentPortal } from '@angular/cdk/portal';
|
|
3
|
+
import { ObjectSelectionOverlayComponent } from './object-selection-overlay/object-selection-overlay.component';
|
|
4
|
+
import * as i0 from "@angular/core";
|
|
5
|
+
import * as i1 from "@angular/cdk/overlay";
|
|
6
|
+
import * as i2 from "../../../services/event-display.service";
|
|
7
|
+
import * as i3 from "../menu-toggle/menu-toggle.component";
|
|
8
|
+
export class ObjectSelectionComponent {
|
|
9
|
+
constructor(overlay, eventDisplay) {
|
|
10
|
+
this.overlay = overlay;
|
|
11
|
+
this.eventDisplay = eventDisplay;
|
|
12
|
+
// Attributes for displaying the information of selected objects
|
|
13
|
+
this.hiddenSelectedInfo = true;
|
|
14
|
+
}
|
|
15
|
+
ngOnInit() {
|
|
16
|
+
const overlayRef = this.overlay.create();
|
|
17
|
+
const overlayPortal = new ComponentPortal(ObjectSelectionOverlayComponent);
|
|
18
|
+
this.overlayWindow = overlayRef.attach(overlayPortal);
|
|
19
|
+
this.overlayWindow.instance.hiddenSelectedInfo = this.hiddenSelectedInfo;
|
|
20
|
+
}
|
|
21
|
+
ngOnDestroy() {
|
|
22
|
+
this.overlayWindow.destroy();
|
|
23
|
+
}
|
|
24
|
+
toggleOverlay() {
|
|
25
|
+
this.hiddenSelectedInfo = !this.hiddenSelectedInfo;
|
|
26
|
+
this.overlayWindow.instance.hiddenSelectedInfo = this.hiddenSelectedInfo;
|
|
27
|
+
this.eventDisplay.enableSelecting(!this.hiddenSelectedInfo);
|
|
28
|
+
}
|
|
29
|
+
}
|
|
30
|
+
ObjectSelectionComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.3", ngImport: i0, type: ObjectSelectionComponent, deps: [{ token: i1.Overlay }, { token: i2.EventDisplayService }], target: i0.ɵɵFactoryTarget.Component });
|
|
31
|
+
ObjectSelectionComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.0.3", type: ObjectSelectionComponent, selector: "app-object-selection", ngImport: i0, template: "<app-menu-toggle\n tooltip=\"Object selection\"\n icon=\"cursor\"\n [active]=\"!hiddenSelectedInfo\"\n (click)=\"toggleOverlay()\"\n>\n</app-menu-toggle>\n", styles: [""], components: [{ type: i3.MenuToggleComponent, selector: "app-menu-toggle", inputs: ["icon", "active", "tooltip", "disabled"] }] });
|
|
32
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.3", ngImport: i0, type: ObjectSelectionComponent, decorators: [{
|
|
33
|
+
type: Component,
|
|
34
|
+
args: [{ selector: 'app-object-selection', template: "<app-menu-toggle\n tooltip=\"Object selection\"\n icon=\"cursor\"\n [active]=\"!hiddenSelectedInfo\"\n (click)=\"toggleOverlay()\"\n>\n</app-menu-toggle>\n", styles: [""] }]
|
|
35
|
+
}], ctorParameters: function () { return [{ type: i1.Overlay }, { type: i2.EventDisplayService }]; } });
|
|
36
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib2JqZWN0LXNlbGVjdGlvbi5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9saWIvY29tcG9uZW50cy91aS1tZW51L29iamVjdC1zZWxlY3Rpb24vb2JqZWN0LXNlbGVjdGlvbi5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi9saWIvY29tcG9uZW50cy91aS1tZW51L29iamVjdC1zZWxlY3Rpb24vb2JqZWN0LXNlbGVjdGlvbi5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFtQyxNQUFNLGVBQWUsQ0FBQztBQUUzRSxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDdEQsT0FBTyxFQUFFLCtCQUErQixFQUFFLE1BQU0sK0RBQStELENBQUM7Ozs7O0FBUWhILE1BQU0sT0FBTyx3QkFBd0I7SUFLbkMsWUFDVSxPQUFnQixFQUNoQixZQUFpQztRQURqQyxZQUFPLEdBQVAsT0FBTyxDQUFTO1FBQ2hCLGlCQUFZLEdBQVosWUFBWSxDQUFxQjtRQU4zQyxnRUFBZ0U7UUFDaEUsdUJBQWtCLEdBQUcsSUFBSSxDQUFDO0lBTXZCLENBQUM7SUFFSixRQUFRO1FBQ04sTUFBTSxVQUFVLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxNQUFNLEVBQUUsQ0FBQztRQUN6QyxNQUFNLGFBQWEsR0FBRyxJQUFJLGVBQWUsQ0FBQywrQkFBK0IsQ0FBQyxDQUFDO1FBQzNFLElBQUksQ0FBQyxhQUFhLEdBQUcsVUFBVSxDQUFDLE1BQU0sQ0FBQyxhQUFhLENBQUMsQ0FBQztRQUN0RCxJQUFJLENBQUMsYUFBYSxDQUFDLFFBQVEsQ0FBQyxrQkFBa0IsR0FBRyxJQUFJLENBQUMsa0JBQWtCLENBQUM7SUFDM0UsQ0FBQztJQUVELFdBQVc7UUFDVCxJQUFJLENBQUMsYUFBYSxDQUFDLE9BQU8sRUFBRSxDQUFDO0lBQy9CLENBQUM7SUFFRCxhQUFhO1FBQ1gsSUFBSSxDQUFDLGtCQUFrQixHQUFHLENBQUMsSUFBSSxDQUFDLGtCQUFrQixDQUFDO1FBQ25ELElBQUksQ0FBQyxhQUFhLENBQUMsUUFBUSxDQUFDLGtCQUFrQixHQUFHLElBQUksQ0FBQyxrQkFBa0IsQ0FBQztRQUN6RSxJQUFJLENBQUMsWUFBWSxDQUFDLGVBQWUsQ0FBQyxDQUFDLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxDQUFDO0lBQzlELENBQUM7O3FIQXpCVSx3QkFBd0I7eUdBQXhCLHdCQUF3Qiw0RENYckMsaUtBT0E7MkZESWEsd0JBQXdCO2tCQUxwQyxTQUFTOytCQUNFLHNCQUFzQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgT25Jbml0LCBDb21wb25lbnRSZWYsIE9uRGVzdHJveSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgT3ZlcmxheSB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9vdmVybGF5JztcbmltcG9ydCB7IENvbXBvbmVudFBvcnRhbCB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9wb3J0YWwnO1xuaW1wb3J0IHsgT2JqZWN0U2VsZWN0aW9uT3ZlcmxheUNvbXBvbmVudCB9IGZyb20gJy4vb2JqZWN0LXNlbGVjdGlvbi1vdmVybGF5L29iamVjdC1zZWxlY3Rpb24tb3ZlcmxheS5jb21wb25lbnQnO1xuaW1wb3J0IHsgRXZlbnREaXNwbGF5U2VydmljZSB9IGZyb20gJy4uLy4uLy4uL3NlcnZpY2VzL2V2ZW50LWRpc3BsYXkuc2VydmljZSc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2FwcC1vYmplY3Qtc2VsZWN0aW9uJyxcbiAgdGVtcGxhdGVVcmw6ICcuL29iamVjdC1zZWxlY3Rpb24uY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9vYmplY3Qtc2VsZWN0aW9uLmNvbXBvbmVudC5zY3NzJ10sXG59KVxuZXhwb3J0IGNsYXNzIE9iamVjdFNlbGVjdGlvbkNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgT25EZXN0cm95IHtcbiAgLy8gQXR0cmlidXRlcyBmb3IgZGlzcGxheWluZyB0aGUgaW5mb3JtYXRpb24gb2Ygc2VsZWN0ZWQgb2JqZWN0c1xuICBoaWRkZW5TZWxlY3RlZEluZm8gPSB0cnVlO1xuICBvdmVybGF5V2luZG93OiBDb21wb25lbnRSZWY8T2JqZWN0U2VsZWN0aW9uT3ZlcmxheUNvbXBvbmVudD47XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSBvdmVybGF5OiBPdmVybGF5LFxuICAgIHByaXZhdGUgZXZlbnREaXNwbGF5OiBFdmVudERpc3BsYXlTZXJ2aWNlXG4gICkge31cblxuICBuZ09uSW5pdCgpIHtcbiAgICBjb25zdCBvdmVybGF5UmVmID0gdGhpcy5vdmVybGF5LmNyZWF0ZSgpO1xuICAgIGNvbnN0IG92ZXJsYXlQb3J0YWwgPSBuZXcgQ29tcG9uZW50UG9ydGFsKE9iamVjdFNlbGVjdGlvbk92ZXJsYXlDb21wb25lbnQpO1xuICAgIHRoaXMub3ZlcmxheVdpbmRvdyA9IG92ZXJsYXlSZWYuYXR0YWNoKG92ZXJsYXlQb3J0YWwpO1xuICAgIHRoaXMub3ZlcmxheVdpbmRvdy5pbnN0YW5jZS5oaWRkZW5TZWxlY3RlZEluZm8gPSB0aGlzLmhpZGRlblNlbGVjdGVkSW5mbztcbiAgfVxuXG4gIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgIHRoaXMub3ZlcmxheVdpbmRvdy5kZXN0cm95KCk7XG4gIH1cblxuICB0b2dnbGVPdmVybGF5KCkge1xuICAgIHRoaXMuaGlkZGVuU2VsZWN0ZWRJbmZvID0gIXRoaXMuaGlkZGVuU2VsZWN0ZWRJbmZvO1xuICAgIHRoaXMub3ZlcmxheVdpbmRvdy5pbnN0YW5jZS5oaWRkZW5TZWxlY3RlZEluZm8gPSB0aGlzLmhpZGRlblNlbGVjdGVkSW5mbztcbiAgICB0aGlzLmV2ZW50RGlzcGxheS5lbmFibGVTZWxlY3RpbmcoIXRoaXMuaGlkZGVuU2VsZWN0ZWRJbmZvKTtcbiAgfVxufVxuIiwiPGFwcC1tZW51LXRvZ2dsZVxuICB0b29sdGlwPVwiT2JqZWN0IHNlbGVjdGlvblwiXG4gIGljb249XCJjdXJzb3JcIlxuICBbYWN0aXZlXT1cIiFoaWRkZW5TZWxlY3RlZEluZm9cIlxuICAoY2xpY2spPVwidG9nZ2xlT3ZlcmxheSgpXCJcbj5cbjwvYXBwLW1lbnUtdG9nZ2xlPlxuIl19
|