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
package/dist/esm2020/components/ui-menu/io-options/io-options-dialog/io-options-dialog.component.mjs
DELETED
|
@@ -1,290 +0,0 @@
|
|
|
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 _r10 = i0.ɵɵgetCurrentView();
|
|
11
|
-
i0.ɵɵelementContainerStart(0);
|
|
12
|
-
i0.ɵɵelementStart(1, "input", 28, 29);
|
|
13
|
-
i0.ɵɵlistener("change", function IOOptionsDialogComponent_div_4_ng_container_5_Template_input_change_1_listener($event) { const restoredCtx = i0.ɵɵrestoreView(_r10); const eventDataImportOption_r7 = restoredCtx.$implicit; return i0.ɵɵresetView(eventDataImportOption_r7.handler($event.target.files)); });
|
|
14
|
-
i0.ɵɵelementEnd();
|
|
15
|
-
i0.ɵɵelementStart(3, "button", 8);
|
|
16
|
-
i0.ɵɵlistener("click", function IOOptionsDialogComponent_div_4_ng_container_5_Template_button_click_3_listener() { i0.ɵɵrestoreView(_r10); const _r8 = i0.ɵɵreference(2); return i0.ɵɵresetView(_r8.click()); });
|
|
17
|
-
i0.ɵɵelement(4, "img", 30);
|
|
18
|
-
i0.ɵɵtext(5);
|
|
19
|
-
i0.ɵɵelementEnd();
|
|
20
|
-
i0.ɵɵelementContainerEnd();
|
|
21
|
-
} if (rf & 2) {
|
|
22
|
-
const eventDataImportOption_r7 = ctx.$implicit;
|
|
23
|
-
i0.ɵɵadvance(1);
|
|
24
|
-
i0.ɵɵproperty("accept", eventDataImportOption_r7.accept);
|
|
25
|
-
i0.ɵɵadvance(4);
|
|
26
|
-
i0.ɵɵtextInterpolate1(" Load ", eventDataImportOption_r7.fileType, " ");
|
|
27
|
-
} }
|
|
28
|
-
function IOOptionsDialogComponent_div_4_Template(rf, ctx) { if (rf & 1) {
|
|
29
|
-
i0.ɵɵelementStart(0, "div")(1, "p", 4)(2, "b");
|
|
30
|
-
i0.ɵɵtext(3, "Event data");
|
|
31
|
-
i0.ɵɵelementEnd()();
|
|
32
|
-
i0.ɵɵelementStart(4, "div", 5);
|
|
33
|
-
i0.ɵɵtemplate(5, IOOptionsDialogComponent_div_4_ng_container_5_Template, 6, 2, "ng-container", 27);
|
|
34
|
-
i0.ɵɵelementEnd()();
|
|
35
|
-
} if (rf & 2) {
|
|
36
|
-
const ctx_r0 = i0.ɵɵnextContext();
|
|
37
|
-
i0.ɵɵadvance(5);
|
|
38
|
-
i0.ɵɵproperty("ngForOf", ctx_r0.eventDataOptionsWithHandler);
|
|
39
|
-
} }
|
|
40
|
-
export class IOOptionsDialogComponent {
|
|
41
|
-
constructor(eventDisplay, dialogRef) {
|
|
42
|
-
this.eventDisplay = eventDisplay;
|
|
43
|
-
this.dialogRef = dialogRef;
|
|
44
|
-
this.eventDataImportOptions = [EventDataFormat.JSON];
|
|
45
|
-
this.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
|
-
}
|
|
53
|
-
ngOnInit() {
|
|
54
|
-
this.eventDataOptionsWithHandler = this.supportedEventDataFormats.filter((eventDataFormat) => this.eventDataImportOptions.includes(eventDataFormat.format));
|
|
55
|
-
this.eventDataImportOptions.forEach((eventDataImportOption) => {
|
|
56
|
-
if (eventDataImportOption instanceof ImportOption) {
|
|
57
|
-
const importHandler = eventDataImportOption.handler.bind(this);
|
|
58
|
-
eventDataImportOption.handler = (files) => {
|
|
59
|
-
importHandler(files);
|
|
60
|
-
this.onClose();
|
|
61
|
-
};
|
|
62
|
-
this.eventDataOptionsWithHandler.push(eventDataImportOption);
|
|
63
|
-
}
|
|
64
|
-
});
|
|
65
|
-
}
|
|
66
|
-
getSupportedEventDataFormats() {
|
|
67
|
-
return this.eventDataImportOptions
|
|
68
|
-
.map((format) => {
|
|
69
|
-
if (format instanceof ImportOption) {
|
|
70
|
-
return format.format;
|
|
71
|
-
}
|
|
72
|
-
return format;
|
|
73
|
-
})
|
|
74
|
-
.filter((format) => format !== 'ZIP')
|
|
75
|
-
.join(', ');
|
|
76
|
-
}
|
|
77
|
-
onClose() {
|
|
78
|
-
this.dialogRef.close();
|
|
79
|
-
}
|
|
80
|
-
handleJSONEventDataInput(files) {
|
|
81
|
-
const callback = (content) => {
|
|
82
|
-
const json = typeof content === 'string' ? JSON.parse(content) : content;
|
|
83
|
-
this.eventDisplay.parsePhoenixEvents(json);
|
|
84
|
-
};
|
|
85
|
-
this.handleFileInput(files[0], 'json', callback);
|
|
86
|
-
}
|
|
87
|
-
handleEDM4HEPJSONEventDataInput(files) {
|
|
88
|
-
const callback = (content) => {
|
|
89
|
-
const json = typeof content === 'string' ? JSON.parse(content) : content;
|
|
90
|
-
const edm4hepJsonLoader = new Edm4hepJsonLoader();
|
|
91
|
-
edm4hepJsonLoader.setRawEventData(json);
|
|
92
|
-
edm4hepJsonLoader.processEventData();
|
|
93
|
-
this.eventDisplay.parsePhoenixEvents(edm4hepJsonLoader.getEventData());
|
|
94
|
-
};
|
|
95
|
-
this.handleFileInput(files[0], 'json', callback);
|
|
96
|
-
}
|
|
97
|
-
handleJiveXMLDataInput(files) {
|
|
98
|
-
const callback = (content) => {
|
|
99
|
-
const jiveloader = new JiveXMLLoader();
|
|
100
|
-
jiveloader.process(content);
|
|
101
|
-
const eventData = jiveloader.getEventData();
|
|
102
|
-
this.eventDisplay.buildEventDataFromJSON(eventData);
|
|
103
|
-
};
|
|
104
|
-
this.handleFileInput(files[0], 'xml', callback);
|
|
105
|
-
}
|
|
106
|
-
handleOBJInput(files) {
|
|
107
|
-
const callback = (content, name) => {
|
|
108
|
-
this.eventDisplay.parseOBJGeometry(content, name);
|
|
109
|
-
};
|
|
110
|
-
this.handleFileInput(files[0], 'obj', callback);
|
|
111
|
-
}
|
|
112
|
-
handleSceneInput(files) {
|
|
113
|
-
const callback = (content) => {
|
|
114
|
-
this.eventDisplay.parsePhoenixDisplay(content);
|
|
115
|
-
};
|
|
116
|
-
this.handleFileInput(files[0], 'phnx', callback);
|
|
117
|
-
}
|
|
118
|
-
handleGLTFInput(files) {
|
|
119
|
-
const callback = (content, name) => {
|
|
120
|
-
this.eventDisplay.parseGLTFGeometry(content, name);
|
|
121
|
-
};
|
|
122
|
-
this.handleFileInput(files[0], 'gltf', callback);
|
|
123
|
-
}
|
|
124
|
-
handlePhoenixInput(files) {
|
|
125
|
-
const callback = (content) => {
|
|
126
|
-
this.eventDisplay.parsePhoenixDisplay(content);
|
|
127
|
-
};
|
|
128
|
-
this.handleFileInput(files[0], 'phnx', callback);
|
|
129
|
-
}
|
|
130
|
-
async handleROOTInput(files) {
|
|
131
|
-
const rootObjectName = prompt('Enter object name in ROOT file');
|
|
132
|
-
await this.eventDisplay.loadRootGeometry(URL.createObjectURL(files[0]), rootObjectName, files[0].name.split('.')[0]);
|
|
133
|
-
this.onClose();
|
|
134
|
-
}
|
|
135
|
-
async handleRootJSONInput(files) {
|
|
136
|
-
if (!this.isFileOfExtension(files[0], 'gz')) {
|
|
137
|
-
return;
|
|
138
|
-
}
|
|
139
|
-
const name = files[0].name.split('.')[0];
|
|
140
|
-
await this.eventDisplay.loadRootJSONGeometry(URL.createObjectURL(files[0]), name);
|
|
141
|
-
this.onClose();
|
|
142
|
-
}
|
|
143
|
-
handleIgEventDataInput(files) {
|
|
144
|
-
const cmsLoader = new CMSLoader();
|
|
145
|
-
cmsLoader.readIgArchive(files[0], (allEvents) => {
|
|
146
|
-
const allEventsData = cmsLoader.getAllEventsData(allEvents);
|
|
147
|
-
this.eventDisplay.parsePhoenixEvents(allEventsData);
|
|
148
|
-
this.onClose();
|
|
149
|
-
});
|
|
150
|
-
}
|
|
151
|
-
async handleZipEventDataInput(files) {
|
|
152
|
-
if (!this.isFileOfExtension(files[0], 'zip')) {
|
|
153
|
-
return;
|
|
154
|
-
}
|
|
155
|
-
const allEventsObject = {};
|
|
156
|
-
let filesWithData;
|
|
157
|
-
// Using a try catch block to catch any errors in Promises
|
|
158
|
-
try {
|
|
159
|
-
filesWithData = await readZipFile(files[0]);
|
|
160
|
-
}
|
|
161
|
-
catch (error) {
|
|
162
|
-
console.error('Error while reading zip', error);
|
|
163
|
-
this.eventDisplay.getInfoLogger().add('Could not read zip file', 'Error');
|
|
164
|
-
return;
|
|
165
|
-
}
|
|
166
|
-
// JSON event data
|
|
167
|
-
Object.keys(filesWithData)
|
|
168
|
-
.filter((fileName) => fileName.endsWith('.json'))
|
|
169
|
-
.forEach((fileName) => {
|
|
170
|
-
Object.assign(allEventsObject, JSON.parse(filesWithData[fileName]));
|
|
171
|
-
});
|
|
172
|
-
// JiveXML event data
|
|
173
|
-
const jiveloader = new JiveXMLLoader();
|
|
174
|
-
Object.keys(filesWithData)
|
|
175
|
-
.filter((fileName) => {
|
|
176
|
-
return fileName.endsWith('.xml') || fileName.startsWith('JiveXML');
|
|
177
|
-
})
|
|
178
|
-
.forEach((fileName) => {
|
|
179
|
-
jiveloader.process(filesWithData[fileName]);
|
|
180
|
-
const eventData = jiveloader.getEventData();
|
|
181
|
-
Object.assign(allEventsObject, { [fileName]: eventData });
|
|
182
|
-
});
|
|
183
|
-
// For some reason the above doesn't pick up JiveXML_XXX_YYY.zip
|
|
184
|
-
this.eventDisplay.parsePhoenixEvents(allEventsObject);
|
|
185
|
-
this.onClose();
|
|
186
|
-
}
|
|
187
|
-
handleFileInput(file, extension, callback) {
|
|
188
|
-
const reader = new FileReader();
|
|
189
|
-
if (this.isFileOfExtension(file, extension)) {
|
|
190
|
-
reader.onload = () => {
|
|
191
|
-
callback(reader.result.toString(), file.name.split('.')[0]);
|
|
192
|
-
};
|
|
193
|
-
reader.readAsText(file);
|
|
194
|
-
}
|
|
195
|
-
this.onClose();
|
|
196
|
-
}
|
|
197
|
-
isFileOfExtension(file, extension) {
|
|
198
|
-
if (file.name.split('.').pop() === extension) {
|
|
199
|
-
return true;
|
|
200
|
-
}
|
|
201
|
-
console.error('Error: Invalid file format!');
|
|
202
|
-
this.eventDisplay.getInfoLogger().add('Invalid file format!', 'Error');
|
|
203
|
-
return false;
|
|
204
|
-
}
|
|
205
|
-
saveScene() {
|
|
206
|
-
this.eventDisplay.exportPhoenixDisplay();
|
|
207
|
-
}
|
|
208
|
-
exportOBJ() {
|
|
209
|
-
this.eventDisplay.exportToOBJ();
|
|
210
|
-
}
|
|
211
|
-
}
|
|
212
|
-
IOOptionsDialogComponent.ɵfac = function IOOptionsDialogComponent_Factory(t) { return new (t || IOOptionsDialogComponent)(i0.ɵɵdirectiveInject(i1.EventDisplayService), i0.ɵɵdirectiveInject(i2.MatDialogRef)); };
|
|
213
|
-
IOOptionsDialogComponent.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: IOOptionsDialogComponent, selectors: [["app-io-options-dialog"]], inputs: { eventDataImportOptions: "eventDataImportOptions" }, decls: 47, vars: 1, consts: [[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"], ["objFileInput", ""], [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"], ["gltfFileInput", ""], ["src", "assets/icons/gltf.svg", "alt", ""], ["type", "file", "tabindex", "-1", "accept", ".root", 1, "file-input", 3, "change"], ["rootFileInput", ""], ["src", "assets/icons/file-import.svg", "alt", ""], ["type", "file", "tabindex", "-1", "accept", ".json.gz", 1, "file-input", 3, "change"], ["rootJSONFileInput", ""], ["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"], ["loadSceneInput", ""], ["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, "accept", "change"], ["eventDataFileInput", ""], ["src", "assets/icons/eventData.svg", "alt", "Event data icon"]], template: function IOOptionsDialogComponent_Template(rf, ctx) { if (rf & 1) {
|
|
214
|
-
const _r12 = i0.ɵɵgetCurrentView();
|
|
215
|
-
i0.ɵɵelementStart(0, "div", 0)(1, "h1", 1);
|
|
216
|
-
i0.ɵɵtext(2, "Import and export");
|
|
217
|
-
i0.ɵɵelementEnd();
|
|
218
|
-
i0.ɵɵelementStart(3, "div", 2);
|
|
219
|
-
i0.ɵɵtemplate(4, IOOptionsDialogComponent_div_4_Template, 6, 1, "div", 3);
|
|
220
|
-
i0.ɵɵelementStart(5, "p", 4)(6, "b");
|
|
221
|
-
i0.ɵɵtext(7, "Geometries");
|
|
222
|
-
i0.ɵɵelementEnd()();
|
|
223
|
-
i0.ɵɵelementStart(8, "div", 5)(9, "input", 6, 7);
|
|
224
|
-
i0.ɵɵlistener("change", function IOOptionsDialogComponent_Template_input_change_9_listener($event) { return ctx.handleOBJInput($event.target.files); });
|
|
225
|
-
i0.ɵɵelementEnd();
|
|
226
|
-
i0.ɵɵelementStart(11, "button", 8);
|
|
227
|
-
i0.ɵɵlistener("click", function IOOptionsDialogComponent_Template_button_click_11_listener() { i0.ɵɵrestoreView(_r12); const _r1 = i0.ɵɵreference(10); return i0.ɵɵresetView(_r1.click()); });
|
|
228
|
-
i0.ɵɵelement(12, "img", 9);
|
|
229
|
-
i0.ɵɵtext(13, " Load .obj ");
|
|
230
|
-
i0.ɵɵelementEnd();
|
|
231
|
-
i0.ɵɵelementStart(14, "input", 10, 11);
|
|
232
|
-
i0.ɵɵlistener("change", function IOOptionsDialogComponent_Template_input_change_14_listener($event) { return ctx.handleGLTFInput($event.target.files); });
|
|
233
|
-
i0.ɵɵelementEnd();
|
|
234
|
-
i0.ɵɵelementStart(16, "button", 8);
|
|
235
|
-
i0.ɵɵlistener("click", function IOOptionsDialogComponent_Template_button_click_16_listener() { i0.ɵɵrestoreView(_r12); const _r2 = i0.ɵɵreference(15); return i0.ɵɵresetView(_r2.click()); });
|
|
236
|
-
i0.ɵɵelement(17, "img", 12);
|
|
237
|
-
i0.ɵɵtext(18, " Load .gltf ");
|
|
238
|
-
i0.ɵɵelementEnd();
|
|
239
|
-
i0.ɵɵelementStart(19, "input", 13, 14);
|
|
240
|
-
i0.ɵɵlistener("change", function IOOptionsDialogComponent_Template_input_change_19_listener($event) { return ctx.handleROOTInput($event.target.files); });
|
|
241
|
-
i0.ɵɵelementEnd();
|
|
242
|
-
i0.ɵɵelementStart(21, "button", 8);
|
|
243
|
-
i0.ɵɵlistener("click", function IOOptionsDialogComponent_Template_button_click_21_listener() { i0.ɵɵrestoreView(_r12); const _r3 = i0.ɵɵreference(20); return i0.ɵɵresetView(_r3.click()); });
|
|
244
|
-
i0.ɵɵelement(22, "img", 15);
|
|
245
|
-
i0.ɵɵtext(23, " Load .root ");
|
|
246
|
-
i0.ɵɵelementEnd();
|
|
247
|
-
i0.ɵɵelementStart(24, "input", 16, 17);
|
|
248
|
-
i0.ɵɵlistener("change", function IOOptionsDialogComponent_Template_input_change_24_listener($event) { return ctx.handleRootJSONInput($event.target.files); });
|
|
249
|
-
i0.ɵɵelementEnd();
|
|
250
|
-
i0.ɵɵelementStart(26, "button", 8);
|
|
251
|
-
i0.ɵɵlistener("click", function IOOptionsDialogComponent_Template_button_click_26_listener() { i0.ɵɵrestoreView(_r12); const _r4 = i0.ɵɵreference(25); return i0.ɵɵresetView(_r4.click()); });
|
|
252
|
-
i0.ɵɵelement(27, "img", 15);
|
|
253
|
-
i0.ɵɵtext(28, " Load .json.gz ");
|
|
254
|
-
i0.ɵɵelementEnd()();
|
|
255
|
-
i0.ɵɵelementStart(29, "p", 4)(30, "b");
|
|
256
|
-
i0.ɵɵtext(31, "Scene");
|
|
257
|
-
i0.ɵɵelementEnd()();
|
|
258
|
-
i0.ɵɵelementStart(32, "div", 5)(33, "button", 18);
|
|
259
|
-
i0.ɵɵlistener("click", function IOOptionsDialogComponent_Template_button_click_33_listener() { return ctx.saveScene(); });
|
|
260
|
-
i0.ɵɵelement(34, "img", 19);
|
|
261
|
-
i0.ɵɵtext(35, " Save scene ");
|
|
262
|
-
i0.ɵɵelementEnd();
|
|
263
|
-
i0.ɵɵelementStart(36, "input", 20, 21);
|
|
264
|
-
i0.ɵɵlistener("change", function IOOptionsDialogComponent_Template_input_change_36_listener($event) { return ctx.handlePhoenixInput($event.target.files); });
|
|
265
|
-
i0.ɵɵelementEnd();
|
|
266
|
-
i0.ɵɵelementStart(38, "button", 22);
|
|
267
|
-
i0.ɵɵlistener("click", function IOOptionsDialogComponent_Template_button_click_38_listener() { i0.ɵɵrestoreView(_r12); const _r5 = i0.ɵɵreference(37); return i0.ɵɵresetView(_r5.click()); });
|
|
268
|
-
i0.ɵɵelement(39, "img", 23);
|
|
269
|
-
i0.ɵɵtext(40, " Load scene ");
|
|
270
|
-
i0.ɵɵelementEnd();
|
|
271
|
-
i0.ɵɵelementStart(41, "button", 24);
|
|
272
|
-
i0.ɵɵlistener("click", function IOOptionsDialogComponent_Template_button_click_41_listener() { return ctx.exportOBJ(); });
|
|
273
|
-
i0.ɵɵelement(42, "img", 9);
|
|
274
|
-
i0.ɵɵtext(43, " Save OBJ ");
|
|
275
|
-
i0.ɵɵelementEnd()()();
|
|
276
|
-
i0.ɵɵelementStart(44, "div", 25)(45, "button", 26);
|
|
277
|
-
i0.ɵɵlistener("click", function IOOptionsDialogComponent_Template_button_click_45_listener() { return ctx.onClose(); });
|
|
278
|
-
i0.ɵɵtext(46, " Close ");
|
|
279
|
-
i0.ɵɵelementEnd()()();
|
|
280
|
-
} if (rf & 2) {
|
|
281
|
-
i0.ɵɵadvance(4);
|
|
282
|
-
i0.ɵɵproperty("ngIf", ctx.eventDataImportOptions.length > 0);
|
|
283
|
-
} }, dependencies: [i3.NgForOf, i3.NgIf, i2.MatDialogTitle, i2.MatDialogContent, i2.MatDialogActions, 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}"] });
|
|
284
|
-
(function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(IOOptionsDialogComponent, [{
|
|
285
|
-
type: Component,
|
|
286
|
-
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"] }]
|
|
287
|
-
}], function () { return [{ type: i1.EventDisplayService }, { type: i2.MatDialogRef }]; }, { eventDataImportOptions: [{
|
|
288
|
-
type: Input
|
|
289
|
-
}] }); })();
|
|
290
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW8tb3B0aW9ucy1kaWFsb2cuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vbGliL2NvbXBvbmVudHMvdWktbWVudS9pby1vcHRpb25zL2lvLW9wdGlvbnMtZGlhbG9nL2lvLW9wdGlvbnMtZGlhbG9nLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL2xpYi9jb21wb25lbnRzL3VpLW1lbnUvaW8tb3B0aW9ucy9pby1vcHRpb25zLWRpYWxvZy9pby1vcHRpb25zLWRpYWxvZy5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQVUsU0FBUyxFQUFFLEtBQUssRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN6RCxPQUFPLEVBQ0wsU0FBUyxFQUNULGFBQWEsRUFDYixXQUFXLEVBQ1gsaUJBQWlCLEdBQ2xCLE1BQU0sdUJBQXVCLENBQUM7QUFHL0IsT0FBTyxFQUNMLGVBQWUsRUFFZixZQUFZLEdBQ2IsTUFBTSwrQ0FBK0MsQ0FBQzs7Ozs7Ozs7SUNOL0MsNkJBRUM7SUFDQyxxQ0FPRTtJQURBLHFPQUFVLGVBQUEscURBQWtELENBQUEsSUFBQztJQU4vRCxpQkFPRTtJQUNGLGlDQUdDO0lBREMsaUxBQVMsZUFBQSxXQUEwQixDQUFBLElBQUM7SUFFcEMsMEJBQThEO0lBQzlELFlBQ0Y7SUFBQSxpQkFBUztJQUNYLDBCQUFlOzs7SUFWWCxlQUF1QztJQUF2Qyx3REFBdUM7SUFRdkMsZUFDRjtJQURFLHVFQUNGOzs7SUFyQk4sMkJBQStDLFdBQUEsUUFBQTtJQUNuQiwwQkFBVTtJQUFBLGlCQUFJLEVBQUE7SUFFeEMsOEJBQTBCO0lBQ3hCLGtHQWtCZTtJQUNqQixpQkFBTSxFQUFBOzs7SUFsQmdDLGVBQThCO0lBQTlCLDREQUE4Qjs7QURZMUUsTUFBTSxPQUFPLHdCQUF3QjtJQXVDbkMsWUFDVSxZQUFpQyxFQUNsQyxTQUFpRDtRQURoRCxpQkFBWSxHQUFaLFlB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NkJBQ3BEO1FBQUEsaUJBQVM7UUFFVCxzQ0FPRTtRQURBLDZHQUFVLDRDQUF3QyxJQUFDO1FBTnJELGlCQU9FO1FBQ0Ysa0NBQXNFO1FBQXBDLDhKQUFTLGVBQUEsV0FBeUIsQ0FBQSxJQUFDO1FBQ25FLDJCQUFpRDtRQUFDLGdDQUNwRDtRQUFBLGlCQUFTLEVBQUE7UUFHWCw2QkFBdUIsU0FBQTtRQUFHLHNCQUFLO1FBQUEsaUJBQUksRUFBQTtRQUVuQywrQkFBMEIsa0JBQUE7UUFJdEIsc0dBQVMsZUFBVyxJQUFDO1FBRXJCLDJCQUEwQztRQUFDLDZCQUM3QztRQUFBLGlCQUFTO1FBRVQsc0NBUUU7UUFEQSw2R0FBVSwyQ0FBdUMsSUFBQztRQVBwRCxpQkFRRTtRQUNGLG1DQUlDO1FBREMsOEpBQVMsZUFBQSxXQUFzQixDQUFBLElBQUM7UUFFaEMsMkJBQTRDO1FBQUMsNkJBQy9DO1FBQUEsaUJBQVM7UUFFVCxtQ0FJQztRQURDLHNHQUFTLGVBQVcsSUFBQztRQUVyQiwwQkFBeUM7UUFBQywyQkFDNUM7UUFBQSxpQkFBUyxFQUFBLEVBQUE7UUFJYixnQ0FBb0Msa0JBQUE7UUFDTSxzR0FBUyxhQUFTLElBQUM7UUFDekQsd0JBQ0Y7UUFBQSxpQkFBUyxFQUFBLEVBQUE7O1FBekhILGVBQXVDO1FBQXZDLDREQUF1Qzs7dUZEaUJwQyx3QkFBd0I7Y0FMcEMsU0FBUzsyQkFDRSx1QkFBdUI7aUdBTWpDLHNCQUFzQjtrQkFEckIsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IE9uSW5pdCwgQ29tcG9uZW50LCBJbnB1dCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtcbiAgQ01TTG9hZGVyLFxuICBKaXZlWE1MTG9hZGVyLFxuICByZWFkWmlwRmlsZSxcbiAgRWRtNGhlcEpzb25Mb2FkZXIsXG59IGZyb20gJ3Bob2VuaXgtZXZlbnQtZGlzcGxheSc7XG5pbXBvcnQgeyBFdmVudERpc3BsYXlTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vLi4vc2VydmljZXMvZXZlbnQtZGlzcGxheS5zZXJ2aWNlJztcbmltcG9ydCB7IE1hdERpYWxvZ1JlZiB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2RpYWxvZyc7XG5pbXBvcnQge1xuICBFdmVudERhdGFGb3JtYXQsXG4gIEV2ZW50RGF0YUltcG9ydE9wdGlvbixcbiAgSW1wb3J0T3B0aW9uLFxufSBmcm9tICcuLi8uLi8uLi8uLi9zZXJ2aWNlcy9leHRyYXMvZXZlbnQtZGF0YS1pbXBvcnQnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdhcHAtaW8tb3B0aW9ucy1kaWFsb2cnLFxuICB0ZW1wbGF0ZVVybDogJy4vaW8tb3B0aW9ucy1kaWFsb2cuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9pby1vcHRpb25zLWRpYWxvZy5jb21wb25lbnQuc2NzcyddLFxufSlcbmV4cG9ydCBjbGFzcyBJT09wdGlvbnNEaWFsb2dDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQge1xuICBASW5wdXQoKVxuICBldmVudERhdGFJbXBvcnRPcHRpb25zOiBFdmVudERhdGFJbXBvcnRPcHRpb25bXSA9IFtFdmVudERhdGFGb3JtYXQuSlNPTl07XG5cbiAgZXZlbnREYXRhT3B0aW9uc1dpdGhIYW5kbGVyOiBJbXBvcnRPcHRpb25bXTtcblxuICBwcml2YXRlIHN1cHBvcnRlZEV2ZW50RGF0YUZvcm1hdHMgPSBbXG4gICAgbmV3IEltcG9ydE9wdGlvbihcbiAgICAgIEV2ZW50RGF0YUZvcm1hdC5KU09OLFxuICAgICAgJy5qc29uJyxcbiAgICAgIHRoaXMuaGFuZGxlSlNPTkV2ZW50RGF0YUlucHV0LmJpbmQodGhpcyksXG4gICAgICAnYXBwbGljYXRpb24vanNvbidcbiAgICApLFxuICAgIG5ldyBJbXBvcnRPcHRpb24oXG4gICAgICBFdmVudERhdGFGb3JtYXQuRURNNEhFUEpTT04sXG4gICAgICAnLmVkbTRoZXAuanNvbicsXG4gICAgICB0aGlzLmhhbmRsZUVETTRIRVBKU09ORXZlbnREYXRhSW5wdXQuYmluZCh0aGlzKSxcbiAgICAgICdhcHBsaWNhdGlvbi9qc29uJ1xuICAgICksXG4gICAgbmV3IEltcG9ydE9wdGlvbihcbiAgICAgIEV2ZW50RGF0YUZvcm1hdC5KSVZFWE1MLFxuICAgICAgJy54bWwnLFxuICAgICAgdGhpcy5oYW5kbGVKaXZlWE1MRGF0YUlucHV0LmJpbmQodGhpcyksXG4gICAgICAndGV4dC94bWwnXG4gICAgKSxcbiAgICBuZXcgSW1wb3J0T3B0aW9uKFxuICAgICAgRXZlbnREYXRhRm9ybWF0LlpJUCxcbiAgICAgICcuemlwJyxcbiAgICAgIHRoaXMuaGFuZGxlWmlwRXZlbnREYXRhSW5wdXQuYmluZCh0aGlzKSxcbiAgICAgICcuemlwJ1xuICAgICksXG4gICAgbmV3IEltcG9ydE9wdGlvbihcbiAgICAgIEV2ZW50RGF0YUZvcm1hdC5JRyxcbiAgICAgICcuaWcnLFxuICAgICAgdGhpcy5oYW5kbGVJZ0V2ZW50RGF0YUlucHV0LmJpbmQodGhpcyksXG4gICAgICAnLmlnJ1xuICAgICksXG4gIF07XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSBldmVudERpc3BsYXk6IEV2ZW50RGlzcGxheVNlcnZpY2UsXG4gICAgcHVibGljIGRpYWxvZ1JlZjogTWF0RGlhbG9nUmVmPElPT3B0aW9uc0RpYWxvZ0NvbXBvbmVudD5cbiAgKSB7fVxuXG4gIG5nT25Jbml0KCkge1xuICAgIHRoaXMuZXZlbnREYXRhT3B0aW9uc1dpdGhIYW5kbGVyID0gdGhpcy5zdXBwb3J0ZWRFdmVudERhdGFGb3JtYXRzLmZpbHRlcihcbiAgICAgIChldmVudERhdGFGb3JtYXQpID0+XG4gICAgICAgIHRoaXMuZXZlbnREYXRhSW1wb3J0T3B0aW9ucy5pbmNsdWRlcyhcbiAgICAgICAgICBldmVudERhdGFGb3JtYXQuZm9ybWF0IGFzIEV2ZW50RGF0YUZvcm1hdFxuICAgICAgICApXG4gICAgKTtcblxuICAgIHRoaXMuZXZlbnREYXRhSW1wb3J0T3B0aW9ucy5mb3JFYWNoKChldmVudERhdGFJbXBvcnRPcHRpb24pID0+IHtcbiAgICAgIGlmIChldmVudERhdGFJbXBvcnRPcHRpb24gaW5zdGFuY2VvZiBJbXBvcnRPcHRpb24pIHtcbiAgICAgICAgY29uc3QgaW1wb3J0SGFuZGxlciA9IGV2ZW50RGF0YUltcG9ydE9wdGlvbi5oYW5kbGVyLmJpbmQodGhpcyk7XG4gICAgICAgIGV2ZW50RGF0YUltcG9ydE9wdGlvbi5oYW5kbGVyID0gKGZpbGVzOiBGaWxlTGlzdCkgPT4ge1xuICAgICAgICAgIGltcG9ydEhhbmRsZXIoZmlsZXMpO1xuICAgICAgICAgIHRoaXMub25DbG9zZSgpO1xuICAgICAgICB9O1xuXG4gICAgICAgIHRoaXMuZXZlbnREYXRhT3B0aW9uc1dpdGhIYW5kbGVyLnB1c2goZXZlbnREYXRhSW1wb3J0T3B0aW9uKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfVxuXG4gIGdldFN1cHBvcnRlZEV2ZW50RGF0YUZvcm1hdHMoKSB7XG4gICAgcmV0dXJuIHRoaXMuZXZlbnREYXRhSW1wb3J0T3B0aW9uc1xuICAgICAgLm1hcCgoZm9ybWF0KSA9PiB7XG4gICAgICAgIGlmIChmb3JtYXQgaW5zdGFuY2VvZiBJbXBvcnRPcHRpb24pIHtcbiAgICAgICAgICByZXR1cm4gZm9ybWF0LmZvcm1hdDtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBmb3JtYXQ7XG4gICAgICB9KVxuICAgICAgLmZpbHRlcigoZm9ybWF0KSA9PiBmb3JtYXQgIT09ICdaSVAnKVxuICAgICAgLmpvaW4oJywgJyk7XG4gIH1cblxuICBvbkNsb3NlKCk6IHZvaWQge1xuICAgIHRoaXMuZGlhbG9nUmVmLmNsb3NlKCk7XG4gIH1cblxuICBoYW5kbGVKU09ORXZlbnREYXRhSW5wdXQoZmlsZXM6IEZpbGVMaXN0KSB7XG4gICAgY29uc3QgY2FsbGJhY2sgPSAoY29udGVudDogYW55KSA9PiB7XG4gICAgICBjb25zdCBqc29uID0gdHlwZW9mIGNvbnRlbnQgPT09ICdzdHJpbmcnID8gSlNPTi5wYXJzZShjb250ZW50KSA6IGNvbnRlbnQ7XG4gICAgICB0aGlzLmV2ZW50RGlzcGxheS5wYXJzZVBob2VuaXhFdmVudHMoanNvbik7XG4gICAgfTtcbiAgICB0aGlzLmhhbmRsZUZpbGVJbnB1dChmaWxlc1swXSwgJ2pzb24nLCBjYWxsYmFjayk7XG4gIH1cblxuICBoYW5kbGVFRE00SEVQSlNPTkV2ZW50RGF0YUlucHV0KGZpbGVzOiBGaWxlTGlzdCkge1xuICAgIGNvbnN0IGNhbGxiYWNrID0gKGNvbnRlbnQ6IGFueSkgPT4ge1xuICAgICAgY29uc3QganNvbiA9IHR5cGVvZiBjb250ZW50ID09PSAnc3RyaW5nJyA/IEpTT04ucGFyc2UoY29udGVudCkgOiBjb250ZW50O1xuICAgICAgY29uc3QgZWRtNGhlcEpzb25Mb2FkZXIgPSBuZXcgRWRtNGhlcEpzb25Mb2FkZXIoKTtcbiAgICAgIGVkbTRoZXBKc29uTG9hZGVyLnNldFJhd0V2ZW50RGF0YShqc29uKTtcbiAgICAgIGVkbTRoZXBKc29uTG9hZGVyLnByb2Nlc3NFdmVudERhdGEoKTtcbiAgICAgIHRoaXMuZXZlbnREaXNwbGF5LnBhcnNlUGhvZW5peEV2ZW50cyhlZG00aGVwSnNvbkxvYWRlci5nZXRFdmVudERhdGEoKSk7XG4gICAgfTtcbiAgICB0aGlzLmhhbmRsZUZpbGVJbnB1dChmaWxlc1swXSwgJ2pzb24nLCBjYWxsYmFjayk7XG4gIH1cblxuICBoYW5kbGVKaXZlWE1MRGF0YUlucHV0KGZpbGVzOiBGaWxlTGlzdCkge1xuICAgIGNvbnN0IGNhbGxiYWNrID0gKGNvbnRlbnQ6IGFueSkgPT4ge1xuICAgICAgY29uc3Qgaml2ZWxvYWRlciA9IG5ldyBKaXZlWE1MTG9hZGVyKCk7XG4gICAgICBqaXZlbG9hZGVyLnByb2Nlc3MoY29udGVudCk7XG4gICAgICBjb25zdCBldmVudERhdGEgPSBqaXZlbG9hZGVyLmdldEV2ZW50RGF0YSgpO1xuICAgICAgdGhpcy5ldmVudERpc3BsYXkuYnVpbGRFdmVudERhdGFGcm9tSlNPTihldmVudERhdGEpO1xuICAgIH07XG4gICAgdGhpcy5oYW5kbGVGaWxlSW5wdXQoZmlsZXNbMF0sICd4bWwnLCBjYWxsYmFjayk7XG4gIH1cblxuICBoYW5kbGVPQkpJbnB1dChmaWxlczogRmlsZUxpc3QpIHtcbiAgICBjb25zdCBjYWxsYmFjayA9IChjb250ZW50OiBhbnksIG5hbWU6IHN0cmluZykgPT4ge1xuICAgICAgdGhpcy5ldmVudERpc3BsYXkucGFyc2VPQkpHZW9tZXRyeShjb250ZW50LCBuYW1lKTtcbiAgICB9O1xuICAgIHRoaXMuaGFuZGxlRmlsZUlucHV0KGZpbGVzWzBdLCAnb2JqJywgY2FsbGJhY2spO1xuICB9XG5cbiAgaGFuZGxlU2NlbmVJbnB1dChmaWxlczogRmlsZUxpc3QpIHtcbiAgICBjb25zdCBjYWxsYmFjayA9IChjb250ZW50OiBhbnkpID0+IHtcbiAgICAgIHRoaXMuZXZlbnREaXNwbGF5LnBhcnNlUGhvZW5peERpc3BsYXkoY29udGVudCk7XG4gICAgfTtcbiAgICB0aGlzLmhhbmRsZUZpbGVJbnB1dChmaWxlc1swXSwgJ3BobngnLCBjYWxsYmFjayk7XG4gIH1cblxuICBoYW5kbGVHTFRGSW5wdXQoZmlsZXM6IEZpbGVMaXN0KSB7XG4gICAgY29uc3QgY2FsbGJhY2sgPSAoY29udGVudDogYW55LCBuYW1lOiBzdHJpbmcpID0+IHtcbiAgICAgIHRoaXMuZXZlbnREaXNwbGF5LnBhcnNlR0xURkdlb21ldHJ5KGNvbnRlbnQsIG5hbWUpO1xuICAgIH07XG4gICAgdGhpcy5oYW5kbGVGaWxlSW5wdXQoZmlsZXNbMF0sICdnbHRmJywgY2FsbGJhY2spO1xuICB9XG5cbiAgaGFuZGxlUGhvZW5peElucHV0KGZpbGVzOiBGaWxlTGlzdCkge1xuICAgIGNvbnN0IGNhbGxiYWNrID0gKGNvbnRlbnQ6IGFueSkgPT4ge1xuICAgICAgdGhpcy5ldmVudERpc3BsYXkucGFyc2VQaG9lbml4RGlzcGxheShjb250ZW50KTtcbiAgICB9O1xuICAgIHRoaXMuaGFuZGxlRmlsZUlucHV0KGZpbGVzWzBdLCAncGhueCcsIGNhbGxiYWNrKTtcbiAgfVxuXG4gIGFzeW5jIGhhbmRsZVJPT1RJbnB1dChmaWxlczogRmlsZUxpc3QpIHtcbiAgICBjb25zdCByb290T2JqZWN0TmFtZSA9IHByb21wdCgnRW50ZXIgb2JqZWN0IG5hbWUgaW4gUk9PVCBmaWxlJyk7XG5cbiAgICBhd2FpdCB0aGlzLmV2ZW50RGlzcGxheS5sb2FkUm9vdEdlb21ldHJ5KFxuICAgICAgVVJMLmNyZWF0ZU9iamVjdFVSTChmaWxlc1swXSksXG4gICAgICByb290T2JqZWN0TmFtZSxcbiAgICAgIGZpbGVzWzBdLm5hbWUuc3BsaXQoJy4nKVswXVxuICAgICk7XG5cbiAgICB0aGlzLm9uQ2xvc2UoKTtcbiAgfVxuXG4gIGFzeW5jIGhhbmRsZVJvb3RKU09OSW5wdXQoZmlsZXM6IEZpbGVMaXN0KSB7XG4gICAgaWYgKCF0aGlzLmlzRmlsZU9mRXh0ZW5zaW9uKGZpbGVzWzBdLCAnZ3onKSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGNvbnN0IG5hbWUgPSBmaWxlc1swXS5uYW1lLnNwbGl0KCcuJylbMF07XG4gICAgYXdhaXQgdGhpcy5ldmVudERpc3BsYXkubG9hZFJvb3RKU09OR2VvbWV0cnkoXG4gICAgICBVUkwuY3JlYXRlT2JqZWN0VVJMKGZpbGVzWzBdKSxcbiAgICAgIG5hbWVcbiAgICApO1xuXG4gICAgdGhpcy5vbkNsb3NlKCk7XG4gIH1cblxuICBoYW5kbGVJZ0V2ZW50RGF0YUlucHV0KGZpbGVzOiBGaWxlTGlzdCkge1xuICAgIGNvbnN0IGNtc0xvYWRlciA9IG5ldyBDTVNMb2FkZXIoKTtcbiAgICBjbXNMb2FkZXIucmVhZElnQXJjaGl2ZShmaWxlc1swXSwgKGFsbEV2ZW50czogYW55W10pID0+IHtcbiAgICAgIGNvbnN0IGFsbEV2ZW50c0RhdGEgPSBjbXNMb2FkZXIuZ2V0QWxsRXZlbnRzRGF0YShhbGxFdmVudHMpO1xuICAgICAgdGhpcy5ldmVudERpc3BsYXkucGFyc2VQaG9lbml4RXZlbnRzKGFsbEV2ZW50c0RhdGEpO1xuICAgICAgdGhpcy5vbkNsb3NlKCk7XG4gICAgfSk7XG4gIH1cblxuICBhc3luYyBoYW5kbGVaaXBFdmVudERhdGFJbnB1dChmaWxlczogRmlsZUxpc3QpIHtcbiAgICBpZiAoIXRoaXMuaXNGaWxlT2ZFeHRlbnNpb24oZmlsZXNbMF0sICd6aXAnKSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGNvbnN0IGFsbEV2ZW50c09iamVjdCA9IHt9O1xuICAgIGxldCBmaWxlc1dpdGhEYXRhOiB7IFtmaWxlTmFtZTogc3RyaW5nXTogc3RyaW5nIH07XG5cbiAgICAvLyBVc2luZyBhIHRyeSBjYXRjaCBibG9jayB0byBjYXRjaCBhbnkgZXJyb3JzIGluIFByb21pc2VzXG4gICAgdHJ5IHtcbiAgICAgIGZpbGVzV2l0aERhdGEgPSBhd2FpdCByZWFkWmlwRmlsZShmaWxlc1swXSk7XG4gICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgIGNvbnNvbGUuZXJyb3IoJ0Vycm9yIHdoaWxlIHJlYWRpbmcgemlwJywgZXJyb3IpO1xuICAgICAgdGhpcy5ldmVudERpc3BsYXkuZ2V0SW5mb0xvZ2dlcigpLmFkZCgnQ291bGQgbm90IHJlYWQgemlwIGZpbGUnLCAnRXJyb3InKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICAvLyBKU09OIGV2ZW50IGRhdGFcbiAgICBPYmplY3Qua2V5cyhmaWxlc1dpdGhEYXRhKVxuICAgICAgLmZpbHRlcigoZmlsZU5hbWUpID0+IGZpbGVOYW1lLmVuZHNXaXRoKCcuanNvbicpKVxuICAgICAgLmZvckVhY2goKGZpbGVOYW1lKSA9PiB7XG4gICAgICAgIE9iamVjdC5hc3NpZ24oYWxsRXZlbnRzT2JqZWN0LCBKU09OLnBhcnNlKGZpbGVzV2l0aERhdGFbZmlsZU5hbWVdKSk7XG4gICAgICB9KTtcblxuICAgIC8vIEppdmVYTUwgZXZlbnQgZGF0YVxuICAgIGNvbnN0IGppdmVsb2FkZXIgPSBuZXcgSml2ZVhNTExvYWRlcigpO1xuICAgIE9iamVjdC5rZXlzKGZpbGVzV2l0aERhdGEpXG4gICAgICAuZmlsdGVyKChmaWxlTmFtZSkgPT4ge1xuICAgICAgICByZXR1cm4gZmlsZU5hbWUuZW5kc1dpdGgoJy54bWwnKSB8fCBmaWxlTmFtZS5zdGFydHNXaXRoKCdKaXZlWE1MJyk7XG4gICAgICB9KVxuICAgICAgLmZvckVhY2goKGZpbGVOYW1lKSA9PiB7XG4gICAgICAgIGppdmVsb2FkZXIucHJvY2VzcyhmaWxlc1dpdGhEYXRhW2ZpbGVOYW1lXSk7XG4gICAgICAgIGNvbnN0IGV2ZW50RGF0YSA9IGppdmVsb2FkZXIuZ2V0RXZlbnREYXRhKCk7XG4gICAgICAgIE9iamVjdC5hc3NpZ24oYWxsRXZlbnRzT2JqZWN0LCB7IFtmaWxlTmFtZV06IGV2ZW50RGF0YSB9KTtcbiAgICAgIH0pO1xuICAgIC8vIEZvciBzb21lIHJlYXNvbiB0aGUgYWJvdmUgZG9lc24ndCBwaWNrIHVwIEppdmVYTUxfWFhYX1lZWS56aXBcblxuICAgIHRoaXMuZXZlbnREaXNwbGF5LnBhcnNlUGhvZW5peEV2ZW50cyhhbGxFdmVudHNPYmplY3QpO1xuXG4gICAgdGhpcy5vbkNsb3NlKCk7XG4gIH1cblxuICBoYW5kbGVGaWxlSW5wdXQoXG4gICAgZmlsZTogRmlsZSxcbiAgICBleHRlbnNpb246IHN0cmluZyxcbiAgICBjYWxsYmFjazogKHJlc3VsdDogc3RyaW5nLCBmaWxlTmFtZT86IHN0cmluZykgPT4gdm9pZFxuICApIHtcbiAgICBjb25zdCByZWFkZXIgPSBuZXcgRmlsZVJlYWRlcigpO1xuXG4gICAgaWYgKHRoaXMuaXNGaWxlT2ZFeHRlbnNpb24oZmlsZSwgZXh0ZW5zaW9uKSkge1xuICAgICAgcmVhZGVyLm9ubG9hZCA9ICgpID0+IHtcbiAgICAgICAgY2FsbGJhY2socmVhZGVyLnJlc3VsdC50b1N0cmluZygpLCBmaWxlLm5hbWUuc3BsaXQoJy4nKVswXSk7XG4gICAgICB9O1xuICAgICAgcmVhZGVyLnJlYWRBc1RleHQoZmlsZSk7XG4gICAgfVxuXG4gICAgdGhpcy5vbkNsb3NlKCk7XG4gIH1cblxuICBwcml2YXRlIGlzRmlsZU9mRXh0ZW5zaW9uKGZpbGU6IEZpbGUsIGV4dGVuc2lvbjogc3RyaW5nKTogYm9vbGVhbiB7XG4gICAgaWYgKGZpbGUubmFtZS5zcGxpdCgnLicpLnBvcCgpID09PSBleHRlbnNpb24pIHtcbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cblxuICAgIGNvbnNvbGUuZXJyb3IoJ0Vycm9yOiBJbnZhbGlkIGZpbGUgZm9ybWF0IScpO1xuICAgIHRoaXMuZXZlbnREaXNwbGF5LmdldEluZm9Mb2dnZXIoKS5hZGQoJ0ludmFsaWQgZmlsZSBmb3JtYXQhJywgJ0Vycm9yJyk7XG5cbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cblxuICBzYXZlU2NlbmUoKSB7XG4gICAgdGhpcy5ldmVudERpc3BsYXkuZXhwb3J0UGhvZW5peERpc3BsYXkoKTtcbiAgfVxuXG4gIGV4cG9ydE9CSigpIHtcbiAgICB0aGlzLmV2ZW50RGlzcGxheS5leHBvcnRUb09CSigpO1xuICB9XG59XG4iLCI8ZGl2IGNsYXNzPVwiZGlhbG9nXCI+XG4gIDxoMSBtYXQtZGlhbG9nLXRpdGxlPkltcG9ydCBhbmQgZXhwb3J0PC9oMT5cbiAgPGRpdiBtYXQtZGlhbG9nLWNvbnRlbnQgY2xhc3M9XCJkaWFsb2ctY29udGVudFwiPlxuICAgIDxkaXYgKm5nSWY9XCJldmVudERhdGFJbXBvcnRPcHRpb25zLmxlbmd0aCA+IDBcIj5cbiAgICAgIDxwIGNsYXNzPVwidGV4dC1jZW50ZXJcIj48Yj5FdmVudCBkYXRhPC9iPjwvcD5cblxuICAgICAgPGRpdiBjbGFzcz1cInJvdyBjZW50ZXJlZFwiPlxuICAgICAgICA8bmctY29udGFpbmVyXG4gICAgICAgICAgKm5nRm9yPVwibGV0IGV2ZW50RGF0YUltcG9ydE9wdGlvbiBvZiBldmVudERhdGFPcHRpb25zV2l0aEhhbmRsZXJcIlxuICAgICAgICA+XG4gICAgICAgICAgPGlucHV0XG4gICAgICAgICAgICAjZXZlbnREYXRhRmlsZUlucHV0XG4gICAgICAgICAgICB0eXBlPVwiZmlsZVwiXG4gICAgICAgICAgICB0YWJpbmRleD1cIi0xXCJcbiAgICAgICAgICAgIGNsYXNzPVwiZmlsZS1pbnB1dFwiXG4gICAgICAgICAgICBbYWNjZXB0XT1cImV2ZW50RGF0YUltcG9ydE9wdGlvbi5hY2NlcHRcIlxuICAgICAgICAgICAgKGNoYW5nZSk9XCJldmVudERhdGFJbXBvcnRPcHRpb24uaGFuZGxlcigkZXZlbnQudGFyZ2V0LmZpbGVzKVwiXG4gICAgICAgICAgLz5cbiAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICBjbGFzcz1cImZpbGUtaW5wdXQtYnV0dG9uXCJcbiAgICAgICAgICAgIChjbGljayk9XCJldmVudERhdGFGaWxlSW5wdXQuY2xpY2soKVwiXG4gICAgICAgICAgPlxuICAgICAgICAgICAgPGltZyBzcmM9XCJhc3NldHMvaWNvbnMvZXZlbnREYXRhLnN2Z1wiIGFsdD1cIkV2ZW50IGRhdGEgaWNvblwiIC8+XG4gICAgICAgICAgICBMb2FkIHt7IGV2ZW50RGF0YUltcG9ydE9wdGlvbi5maWxlVHlwZSB9fVxuICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuXG4gICAgPHAgY2xhc3M9XCJ0ZXh0LWNlbnRlclwiPjxiPkdlb21ldHJpZXM8L2I+PC9wPlxuXG4gICAgPGRpdiBjbGFzcz1cInJvdyBjZW50ZXJlZFwiPlxuICAgICAgPGlucHV0XG4gICAgICAgICNvYmpGaWxlSW5wdXRcbiAgICAgICAgdHlwZT1cImZpbGVcIlxuICAgICAgICB0YWJpbmRleD1cIi0xXCJcbiAgICAgICAgY2xhc3M9XCJmaWxlLWlucHV0XCJcbiAgICAgICAgYWNjZXB0PVwiLm9ialwiXG4gICAgICAgIG5hbWU9XCJpbWFnZVwiXG4gICAgICAgIChjaGFuZ2UpPVwiaGFuZGxlT0JKSW5wdXQoJGV2ZW50LnRhcmdldC5maWxlcylcIlxuICAgICAgLz5cbiAgICAgIDxidXR0b24gY2xhc3M9XCJmaWxlLWlucHV0LWJ1dHRvblwiIChjbGljayk9XCJvYmpGaWxlSW5wdXQuY2xpY2soKVwiPlxuICAgICAgICA8aW1nIHNyYz1cImFzc2V0cy9pY29ucy9vYmouc3ZnXCIgYWx0PVwiXCIgLz4gTG9hZCAub2JqXG4gICAgICA8L2J1dHRvbj5cblxuICAgICAgPGlucHV0XG4gICAgICAgICNnbHRmRmlsZUlucHV0XG4gICAgICAgIHR5cGU9XCJmaWxlXCJcbiAgICAgICAgdGFiaW5kZXg9XCItMVwiXG4gICAgICAgIGNsYXNzPVwiZmlsZS1pbnB1dFwiXG4gICAgICAgIGFjY2VwdD1cIi5nbHRmXCJcbiAgICAgICAgbmFtZT1cImltYWdlXCJcbiAgICAgICAgKGNoYW5nZSk9XCJoYW5kbGVHTFRGSW5wdXQoJGV2ZW50LnRhcmdldC5maWxlcylcIlxuICAgICAgLz5cbiAgICAgIDxidXR0b24gY2xhc3M9XCJmaWxlLWlucHV0LWJ1dHRvblwiIChjbGljayk9XCJnbHRmRmlsZUlucHV0LmNsaWNrKClcIj5cbiAgICAgICAgPGltZyBzcmM9XCJhc3NldHMvaWNvbnMvZ2x0Zi5zdmdcIiBhbHQ9XCJcIiAvPiBMb2FkIC5nbHRmXG4gICAgICA8L2J1dHRvbj5cblxuICAgICAgPGlucHV0XG4gICAgICAgICNyb290RmlsZUlucHV0XG4gICAgICAgIHR5cGU9XCJmaWxlXCJcbiAgICAgICAgdGFiaW5kZXg9XCItMVwiXG4gICAgICAgIGNsYXNzPVwiZmlsZS1pbnB1dFwiXG4gICAgICAgIGFjY2VwdD1cIi5yb290XCJcbiAgICAgICAgKGNoYW5nZSk9XCJoYW5kbGVST09USW5wdXQoJGV2ZW50LnRhcmdldC5maWxlcylcIlxuICAgICAgLz5cbiAgICAgIDxidXR0b24gY2xhc3M9XCJmaWxlLWlucHV0LWJ1dHRvblwiIChjbGljayk9XCJyb290RmlsZUlucHV0LmNsaWNrKClcIj5cbiAgICAgICAgPGltZyBzcmM9XCJhc3NldHMvaWNvbnMvZmlsZS1pbXBvcnQuc3ZnXCIgYWx0PVwiXCIgLz4gTG9hZCAucm9vdFxuICAgICAgPC9idXR0b24+XG5cbiAgICAgIDxpbnB1dFxuICAgICAgICAjcm9vdEpTT05GaWxlSW5wdXRcbiAgICAgICAgdHlwZT1cImZpbGVcIlxuICAgICAgICB0YWJpbmRleD1cIi0xXCJcbiAgICAgICAgY2xhc3M9XCJmaWxlLWlucHV0XCJcbiAgICAgICAgYWNjZXB0PVwiLmpzb24uZ3pcIlxuICAgICAgICAoY2hhbmdlKT1cImhhbmRsZVJvb3RKU09OSW5wdXQoJGV2ZW50LnRhcmdldC5maWxlcylcIlxuICAgICAgLz5cbiAgICAgIDxidXR0b24gY2xhc3M9XCJmaWxlLWlucHV0LWJ1dHRvblwiIChjbGljayk9XCJyb290SlNPTkZpbGVJbnB1dC5jbGljaygpXCI+XG4gICAgICAgIDxpbWcgc3JjPVwiYXNzZXRzL2ljb25zL2ZpbGUtaW1wb3J0LnN2Z1wiIGFsdD1cIlwiIC8+IExvYWQgLmpzb24uZ3pcbiAgICAgIDwvYnV0dG9uPlxuICAgIDwvZGl2PlxuXG4gICAgPHAgY2xhc3M9XCJ0ZXh0LWNlbnRlclwiPjxiPlNjZW5lPC9iPjwvcD5cblxuICAgIDxkaXYgY2xhc3M9XCJyb3cgY2VudGVyZWRcIj5cbiAgICAgIDxidXR0b25cbiAgICAgICAgY2xhc3M9XCJmaWxlLWlucHV0LWJ1dHRvbiBsb2FkLWV4cG9ydFwiXG4gICAgICAgIGlkPVwiZXhwb3J0U2NlbmVcIlxuICAgICAgICAoY2xpY2spPVwic2F2ZVNjZW5lKClcIlxuICAgICAgPlxuICAgICAgICA8aW1nIHNyYz1cImFzc2V0cy9pY29ucy9zYXZlLnN2Z1wiIGFsdD1cIlwiIC8+IFNhdmUgc2NlbmVcbiAgICAgIDwvYnV0dG9uPlxuXG4gICAgICA8aW5wdXRcbiAgICAgICAgI2xvYWRTY2VuZUlucHV0XG4gICAgICAgIHR5cGU9XCJmaWxlXCJcbiAgICAgICAgdGFiaW5kZXg9XCItMVwiXG4gICAgICAgIGNsYXNzPVwiZmlsZS1pbnB1dFwiXG4gICAgICAgIGFjY2VwdD1cIi5waG54XCJcbiAgICAgICAgbmFtZT1cImltYWdlXCJcbiAgICAgICAgKGNoYW5nZSk9XCJoYW5kbGVQaG9lbml4SW5wdXQoJGV2ZW50LnRhcmdldC5maWxlcylcIlxuICAgICAgLz5cbiAgICAgIDxidXR0b25cbiAgICAgICAgY2xhc3M9XCJmaWxlLWlucHV0LWJ1dHRvbiBsb2FkLWV4cG9ydFwiXG4gICAgICAgIGlkPVwiaW1wb3J0U2NlbmVcIlxuICAgICAgICAoY2xpY2spPVwibG9hZFNjZW5lSW5wdXQuY2xpY2soKVwiXG4gICAgICA+XG4gICAgICAgIDxpbWcgc3JjPVwiYXNzZXRzL2ljb25zL3VwbG9hZC5zdmdcIiBhbHQ9XCJcIiAvPiBMb2FkIHNjZW5lXG4gICAgICA8L2J1dHRvbj5cblxuICAgICAgPGJ1dHRvblxuICAgICAgICBjbGFzcz1cImZpbGUtaW5wdXQtYnV0dG9uIGV4cG9ydC1idXR0b25cIlxuICAgICAgICBpZD1cImV4cG9ydE9CSlwiXG4gICAgICAgIChjbGljayk9XCJleHBvcnRPQkooKVwiXG4gICAgICA+XG4gICAgICAgIDxpbWcgc3JjPVwiYXNzZXRzL2ljb25zL29iai5zdmdcIiBhbHQ9XCJcIiAvPiBTYXZlIE9CSlxuICAgICAgPC9idXR0b24+XG4gICAgPC9kaXY+XG4gIDwvZGl2PlxuXG4gIDxkaXYgbWF0LWRpYWxvZy1hY3Rpb25zIGFsaWduPVwiZW5kXCI+XG4gICAgPGJ1dHRvbiBtYXQtZmxhdC1idXR0b24gY29sb3I9XCJwcmltYXJ5XCIgKGNsaWNrKT1cIm9uQ2xvc2UoKVwiIGNka0ZvY3VzSW5pdGlhbD5cbiAgICAgIENsb3NlXG4gICAgPC9idXR0b24+XG4gIDwvZGl2PlxuPC9kaXY+XG4iXX0=
|
|
@@ -1,34 +0,0 @@
|
|
|
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 = function IoOptionsComponent_Factory(t) { return new (t || IoOptionsComponent)(i0.ɵɵdirectiveInject(i1.MatDialog)); };
|
|
21
|
-
IoOptionsComponent.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: IoOptionsComponent, selectors: [["app-io-options"]], inputs: { eventDataImportOptions: "eventDataImportOptions" }, decls: 1, vars: 1, consts: [["tooltip", "Import and export options", "icon", "import", 3, "active", "click"]], template: function IoOptionsComponent_Template(rf, ctx) { if (rf & 1) {
|
|
22
|
-
i0.ɵɵelementStart(0, "app-menu-toggle", 0);
|
|
23
|
-
i0.ɵɵlistener("click", function IoOptionsComponent_Template_app_menu_toggle_click_0_listener() { return ctx.openIODialog(); });
|
|
24
|
-
i0.ɵɵelementEnd();
|
|
25
|
-
} if (rf & 2) {
|
|
26
|
-
i0.ɵɵproperty("active", false);
|
|
27
|
-
} }, dependencies: [i2.MenuToggleComponent] });
|
|
28
|
-
(function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(IoOptionsComponent, [{
|
|
29
|
-
type: Component,
|
|
30
|
-
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" }]
|
|
31
|
-
}], function () { return [{ type: i1.MatDialog }]; }, { eventDataImportOptions: [{
|
|
32
|
-
type: Input
|
|
33
|
-
}] }); })();
|
|
34
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW8tb3B0aW9ucy5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9saWIvY29tcG9uZW50cy91aS1tZW51L2lvLW9wdGlvbnMvaW8tb3B0aW9ucy5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi9saWIvY29tcG9uZW50cy91aS1tZW51L2lvLW9wdGlvbnMvaW8tb3B0aW9ucy5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUVqRCxPQUFPLEVBQ0wsZUFBZSxHQUVoQixNQUFNLDRDQUE0QyxDQUFDO0FBQ3BELE9BQU8sRUFBRSx3QkFBd0IsRUFBRSxNQUFNLGlEQUFpRCxDQUFDOzs7O0FBTzNGLE1BQU0sT0FBTyxrQkFBa0I7SUFLN0IsWUFBb0IsTUFBaUI7UUFBakIsV0FBTSxHQUFOLE1BQU0sQ0FBVztRQUhyQywyQkFBc0IsR0FDcEIsTUFBTSxDQUFDLE1BQU0sQ0FBQyxlQUFlLENBQUMsQ0FBQztJQUVPLENBQUM7SUFFekMsWUFBWTtRQUNWLE1BQU0sU0FBUyxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLHdCQUF3QixFQUFFO1lBQzNELFVBQVUsRUFBRSxRQUFRO1NBQ3JCLENBQUMsQ0FBQztRQUNILFNBQVMsQ0FBQyxpQkFBaUIsQ0FBQyxzQkFBc0I7WUFDaEQsSUFBSSxDQUFDLHNCQUFzQixDQUFDO0lBQ2hDLENBQUM7O29GQWJVLGtCQUFrQjtxRUFBbEIsa0JBQWtCO1FDYi9CLDBDQUtDO1FBREMsd0dBQVMsa0JBQWMsSUFBQztRQUUxQixpQkFBa0I7O1FBSGhCLDhCQUFnQjs7dUZEVUwsa0JBQWtCO2NBTDlCLFNBQVM7MkJBQ0UsZ0JBQWdCOzREQU0xQixzQkFBc0I7a0JBRHJCLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIElucHV0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBNYXREaWFsb2cgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9kaWFsb2cnO1xuaW1wb3J0IHtcbiAgRXZlbnREYXRhRm9ybWF0LFxuICBFdmVudERhdGFJbXBvcnRPcHRpb24sXG59IGZyb20gJy4uLy4uLy4uL3NlcnZpY2VzL2V4dHJhcy9ldmVudC1kYXRhLWltcG9ydCc7XG5pbXBvcnQgeyBJT09wdGlvbnNEaWFsb2dDb21wb25lbnQgfSBmcm9tICcuL2lvLW9wdGlvbnMtZGlhbG9nL2lvLW9wdGlvbnMtZGlhbG9nLmNvbXBvbmVudCc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2FwcC1pby1vcHRpb25zJyxcbiAgdGVtcGxhdGVVcmw6ICcuL2lvLW9wdGlvbnMuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9pby1vcHRpb25zLmNvbXBvbmVudC5zY3NzJ10sXG59KVxuZXhwb3J0IGNsYXNzIElvT3B0aW9uc0NvbXBvbmVudCB7XG4gIEBJbnB1dCgpXG4gIGV2ZW50RGF0YUltcG9ydE9wdGlvbnM6IEV2ZW50RGF0YUltcG9ydE9wdGlvbltdID1cbiAgICBPYmplY3QudmFsdWVzKEV2ZW50RGF0YUZvcm1hdCk7XG5cbiAgY29uc3RydWN0b3IocHJpdmF0ZSBkaWFsb2c6IE1hdERpYWxvZykge31cblxuICBvcGVuSU9EaWFsb2coKSB7XG4gICAgY29uc3QgZGlhbG9nUmVmID0gdGhpcy5kaWFsb2cub3BlbihJT09wdGlvbnNEaWFsb2dDb21wb25lbnQsIHtcbiAgICAgIHBhbmVsQ2xhc3M6ICdkaWFsb2cnLFxuICAgIH0pO1xuICAgIGRpYWxvZ1JlZi5jb21wb25lbnRJbnN0YW5jZS5ldmVudERhdGFJbXBvcnRPcHRpb25zID1cbiAgICAgIHRoaXMuZXZlbnREYXRhSW1wb3J0T3B0aW9ucztcbiAgfVxufVxuIiwiPGFwcC1tZW51LXRvZ2dsZVxuICB0b29sdGlwPVwiSW1wb3J0IGFuZCBleHBvcnQgb3B0aW9uc1wiXG4gIGljb249XCJpbXBvcnRcIlxuICBbYWN0aXZlXT1cImZhbHNlXCJcbiAgKGNsaWNrKT1cIm9wZW5JT0RpYWxvZygpXCJcbj5cbjwvYXBwLW1lbnUtdG9nZ2xlPlxuIl19
|
|
@@ -1,30 +0,0 @@
|
|
|
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/tooltip";
|
|
5
|
-
import * as i3 from "../menu-toggle/menu-toggle.component";
|
|
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 = function MainViewToggleComponent_Factory(t) { return new (t || MainViewToggleComponent)(i0.ɵɵdirectiveInject(i1.EventDisplayService)); };
|
|
19
|
-
MainViewToggleComponent.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: MainViewToggleComponent, selectors: [["app-main-view-toggle"]], decls: 1, vars: 2, consts: [[3, "icon", "matTooltip", "click"]], template: function MainViewToggleComponent_Template(rf, ctx) { if (rf & 1) {
|
|
20
|
-
i0.ɵɵelementStart(0, "app-menu-toggle", 0);
|
|
21
|
-
i0.ɵɵlistener("click", function MainViewToggleComponent_Template_app_menu_toggle_click_0_listener() { return ctx.switchMainView(); });
|
|
22
|
-
i0.ɵɵelementEnd();
|
|
23
|
-
} if (rf & 2) {
|
|
24
|
-
i0.ɵɵproperty("icon", ctx.orthographicView ? "perspective" : "orthographic")("matTooltip", "Switch to " + (ctx.orthographicView ? "perspective" : "orthographic") + " view");
|
|
25
|
-
} }, dependencies: [i2.MatTooltip, i3.MenuToggleComponent] });
|
|
26
|
-
(function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(MainViewToggleComponent, [{
|
|
27
|
-
type: Component,
|
|
28
|
-
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" }]
|
|
29
|
-
}], function () { return [{ type: i1.EventDisplayService }]; }, null); })();
|
|
30
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWFpbi12aWV3LXRvZ2dsZS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9saWIvY29tcG9uZW50cy91aS1tZW51L21haW4tdmlldy10b2dnbGUvbWFpbi12aWV3LXRvZ2dsZS5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi9saWIvY29tcG9uZW50cy91aS1tZW51L21haW4tdmlldy10b2dnbGUvbWFpbi12aWV3LXRvZ2dsZS5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sZUFBZSxDQUFDOzs7OztBQVExQyxNQUFNLE9BQU8sdUJBQXVCO0lBR2xDLFlBQW9CLFlBQWlDO1FBQWpDLGlCQUFZLEdBQVosWUFBWSxDQUFxQjtRQUZyRCxxQkFBZ0IsR0FBWSxLQUFLLENBQUM7SUFFc0IsQ0FBQztJQUV6RCxjQUFjO1FBQ1osSUFBSSxDQUFDLGdCQUFnQixHQUFHLENBQUMsSUFBSSxDQUFDLGdCQUFnQixDQUFDO1FBQy9DLElBQUksQ0FBQyxZQUFZO2FBQ2QsWUFBWSxFQUFFO2FBQ2Qsc0JBQXNCLENBQUMsSUFBSSxDQUFDLGdCQUFnQixDQUFDLENBQUM7SUFDbkQsQ0FBQzs7OEZBVlUsdUJBQXVCOzBFQUF2Qix1QkFBdUI7UUNScEMsMENBTUM7UUFEQyw2R0FBUyxvQkFBZ0IsSUFBQztRQUU1QixpQkFBa0I7O1FBTmhCLDRFQUEwRCxnR0FBQTs7dUZETy9DLHVCQUF1QjtjQUxuQyxTQUFTOzJCQUNFLHNCQUFzQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgRXZlbnREaXNwbGF5U2VydmljZSB9IGZyb20gJy4uLy4uLy4uL3NlcnZpY2VzL2V2ZW50LWRpc3BsYXkuc2VydmljZSc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2FwcC1tYWluLXZpZXctdG9nZ2xlJyxcbiAgdGVtcGxhdGVVcmw6ICcuL21haW4tdmlldy10b2dnbGUuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9tYWluLXZpZXctdG9nZ2xlLmNvbXBvbmVudC5zY3NzJ10sXG59KVxuZXhwb3J0IGNsYXNzIE1haW5WaWV3VG9nZ2xlQ29tcG9uZW50IHtcbiAgb3J0aG9ncmFwaGljVmlldzogYm9vbGVhbiA9IGZhbHNlO1xuXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgZXZlbnREaXNwbGF5OiBFdmVudERpc3BsYXlTZXJ2aWNlKSB7fVxuXG4gIHN3aXRjaE1haW5WaWV3KCkge1xuICAgIHRoaXMub3J0aG9ncmFwaGljVmlldyA9ICF0aGlzLm9ydGhvZ3JhcGhpY1ZpZXc7XG4gICAgdGhpcy5ldmVudERpc3BsYXlcbiAgICAgIC5nZXRVSU1hbmFnZXIoKVxuICAgICAgLnRvZ2dsZU9ydGhvZ3JhcGhpY1ZpZXcodGhpcy5vcnRob2dyYXBoaWNWaWV3KTtcbiAgfVxufVxuIiwiPGFwcC1tZW51LXRvZ2dsZVxuICBbaWNvbl09XCJvcnRob2dyYXBoaWNWaWV3ID8gJ3BlcnNwZWN0aXZlJyA6ICdvcnRob2dyYXBoaWMnXCJcbiAgW21hdFRvb2x0aXBdPVwiXG4gICAgJ1N3aXRjaCB0byAnICsgKG9ydGhvZ3JhcGhpY1ZpZXcgPyAncGVyc3BlY3RpdmUnIDogJ29ydGhvZ3JhcGhpYycpICsgJyB2aWV3J1xuICBcIlxuICAoY2xpY2spPVwic3dpdGNoTWFpblZpZXcoKVwiXG4+XG48L2FwcC1tZW51LXRvZ2dsZT5cbiJdfQ==
|
|
@@ -1,88 +0,0 @@
|
|
|
1
|
-
import { Component, ViewEncapsulation } 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/common";
|
|
5
|
-
import * as i3 from "@angular/forms";
|
|
6
|
-
import * as i4 from "@angular/material/menu";
|
|
7
|
-
import * as i5 from "@angular/material/radio";
|
|
8
|
-
import * as i6 from "../menu-toggle/menu-toggle.component";
|
|
9
|
-
function MakePictureComponent_mat_radio_button_14_Template(rf, ctx) { if (rf & 1) {
|
|
10
|
-
i0.ɵɵelementStart(0, "mat-radio-button", 12);
|
|
11
|
-
i0.ɵɵtext(1);
|
|
12
|
-
i0.ɵɵelementEnd();
|
|
13
|
-
} if (rf & 2) {
|
|
14
|
-
const fitting_r4 = ctx.$implicit;
|
|
15
|
-
i0.ɵɵproperty("value", fitting_r4);
|
|
16
|
-
i0.ɵɵadvance(1);
|
|
17
|
-
i0.ɵɵtextInterpolate1("", fitting_r4, " ");
|
|
18
|
-
} }
|
|
19
|
-
export class MakePictureComponent {
|
|
20
|
-
constructor(eventDisplay) {
|
|
21
|
-
this.eventDisplay = eventDisplay;
|
|
22
|
-
this.fittings = ['Crop', 'Stretch'];
|
|
23
|
-
this.fitting = 'Crop';
|
|
24
|
-
this.width = 3840;
|
|
25
|
-
this.height = 2160;
|
|
26
|
-
}
|
|
27
|
-
ngOnInit() { }
|
|
28
|
-
setWidth(value) {
|
|
29
|
-
this.width = value;
|
|
30
|
-
}
|
|
31
|
-
setHeight(value) {
|
|
32
|
-
this.height = value;
|
|
33
|
-
}
|
|
34
|
-
makePicture() {
|
|
35
|
-
this.eventDisplay.makeScreenShot(this.width, this.height, this.fitting);
|
|
36
|
-
}
|
|
37
|
-
}
|
|
38
|
-
MakePictureComponent.ɵfac = function MakePictureComponent_Factory(t) { return new (t || MakePictureComponent)(i0.ɵɵdirectiveInject(i1.EventDisplayService)); };
|
|
39
|
-
MakePictureComponent.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: MakePictureComponent, selectors: [["app-make-picture"]], decls: 20, vars: 5, consts: [[1, "mat-menu"], ["menu", ""], ["mat-menu-item", "", 1, "size-input", 3, "click"], ["mapInput", "", "type", "number", 3, "value", "change", "click"], ["width", ""], ["height", ""], ["mat-menu-item", "", 3, "click"], [1, "fitting-radios", 3, "ngModel", "ngModelChange"], [3, "value", 4, "ngFor", "ngForOf"], ["mat-menu-item", "", 1, "make-picture", 3, "click"], ["tooltip", "Creates a picture from the current view: directly saves a png of arbitrary size from the current view", "icon", "png", 3, "matMenuTriggerFor"], ["hidden", "", "id", "screenshotCanvas"], [3, "value"]], template: function MakePictureComponent_Template(rf, ctx) { if (rf & 1) {
|
|
40
|
-
const _r5 = i0.ɵɵgetCurrentView();
|
|
41
|
-
i0.ɵɵelementStart(0, "mat-menu", 0, 1)(2, "button", 2);
|
|
42
|
-
i0.ɵɵlistener("click", function MakePictureComponent_Template_button_click_2_listener($event) { return $event.stopPropagation(); });
|
|
43
|
-
i0.ɵɵelementStart(3, "label");
|
|
44
|
-
i0.ɵɵtext(4, "width");
|
|
45
|
-
i0.ɵɵelementEnd();
|
|
46
|
-
i0.ɵɵelementStart(5, "input", 3, 4);
|
|
47
|
-
i0.ɵɵlistener("change", function MakePictureComponent_Template_input_change_5_listener() { i0.ɵɵrestoreView(_r5); const _r1 = i0.ɵɵreference(6); return i0.ɵɵresetView(ctx.setWidth(_r1.value)); })("click", function MakePictureComponent_Template_input_click_5_listener($event) { return $event.stopPropagation(); });
|
|
48
|
-
i0.ɵɵelementEnd()();
|
|
49
|
-
i0.ɵɵelementStart(7, "button", 2);
|
|
50
|
-
i0.ɵɵlistener("click", function MakePictureComponent_Template_button_click_7_listener($event) { return $event.stopPropagation(); });
|
|
51
|
-
i0.ɵɵelementStart(8, "label");
|
|
52
|
-
i0.ɵɵtext(9, "height");
|
|
53
|
-
i0.ɵɵelementEnd();
|
|
54
|
-
i0.ɵɵelementStart(10, "input", 3, 5);
|
|
55
|
-
i0.ɵɵlistener("change", function MakePictureComponent_Template_input_change_10_listener() { i0.ɵɵrestoreView(_r5); const _r2 = i0.ɵɵreference(11); return i0.ɵɵresetView(ctx.setHeight(_r2.value)); })("click", function MakePictureComponent_Template_input_click_10_listener($event) { return $event.stopPropagation(); });
|
|
56
|
-
i0.ɵɵelementEnd()();
|
|
57
|
-
i0.ɵɵelementStart(12, "button", 6);
|
|
58
|
-
i0.ɵɵlistener("click", function MakePictureComponent_Template_button_click_12_listener($event) { return $event.stopPropagation(); });
|
|
59
|
-
i0.ɵɵelementStart(13, "mat-radio-group", 7);
|
|
60
|
-
i0.ɵɵlistener("ngModelChange", function MakePictureComponent_Template_mat_radio_group_ngModelChange_13_listener($event) { return ctx.fitting = $event; });
|
|
61
|
-
i0.ɵɵtemplate(14, MakePictureComponent_mat_radio_button_14_Template, 2, 2, "mat-radio-button", 8);
|
|
62
|
-
i0.ɵɵelementEnd()();
|
|
63
|
-
i0.ɵɵelementStart(15, "button", 9);
|
|
64
|
-
i0.ɵɵlistener("click", function MakePictureComponent_Template_button_click_15_listener() { return ctx.makePicture(); });
|
|
65
|
-
i0.ɵɵtext(16, " Create picture ");
|
|
66
|
-
i0.ɵɵelementEnd()();
|
|
67
|
-
i0.ɵɵelement(17, "app-menu-toggle", 10);
|
|
68
|
-
i0.ɵɵelementStart(18, "div");
|
|
69
|
-
i0.ɵɵelement(19, "canvas", 11);
|
|
70
|
-
i0.ɵɵelementEnd();
|
|
71
|
-
} if (rf & 2) {
|
|
72
|
-
const _r0 = i0.ɵɵreference(1);
|
|
73
|
-
i0.ɵɵadvance(5);
|
|
74
|
-
i0.ɵɵproperty("value", 3840);
|
|
75
|
-
i0.ɵɵadvance(5);
|
|
76
|
-
i0.ɵɵproperty("value", 2610);
|
|
77
|
-
i0.ɵɵadvance(3);
|
|
78
|
-
i0.ɵɵproperty("ngModel", ctx.fitting);
|
|
79
|
-
i0.ɵɵadvance(1);
|
|
80
|
-
i0.ɵɵproperty("ngForOf", ctx.fittings);
|
|
81
|
-
i0.ɵɵadvance(3);
|
|
82
|
-
i0.ɵɵproperty("matMenuTriggerFor", _r0);
|
|
83
|
-
} }, dependencies: [i2.NgForOf, i3.NgControlStatus, i3.NgModel, i4.MatMenu, i4.MatMenuItem, i4.MatMenuTrigger, i5.MatRadioGroup, i5.MatRadioButton, i6.MenuToggleComponent], styles: [".size-input{background:transparent;color:var(--phoenix-text-color);text-align:center}.size-input label{width:60px}.size-input input{background:transparent;color:var(--phoenix-text-color);width:80px}.make-picture{text-align:center;display:block}.make-picture span{padding:5px 25px;border:2px solid var(--phoenix-text-color);border-radius:8px}\n"], encapsulation: 2 });
|
|
84
|
-
(function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(MakePictureComponent, [{
|
|
85
|
-
type: Component,
|
|
86
|
-
args: [{ selector: 'app-make-picture', encapsulation: ViewEncapsulation.None, template: "<mat-menu class=\"mat-menu\" #menu>\n <button mat-menu-item (click)=\"$event.stopPropagation()\" class=\"size-input\">\n <label>width</label>\n <input\n #width\n mapInput\n type=\"number\"\n [value]=\"3840\"\n (change)=\"setWidth(width.value)\"\n (click)=\"$event.stopPropagation()\"\n />\n </button>\n <button mat-menu-item (click)=\"$event.stopPropagation()\" class=\"size-input\">\n <label>height</label>\n <input\n #height\n mapInput\n type=\"number\"\n [value]=\"2610\"\n (change)=\"setHeight(height.value)\"\n (click)=\"$event.stopPropagation()\"\n />\n </button>\n <button mat-menu-item (click)=\"$event.stopPropagation()\">\n <mat-radio-group [(ngModel)]=\"fitting\" class=\"fitting-radios\">\n <mat-radio-button *ngFor=\"let fitting of fittings\" [value]=\"fitting\"\n >{{ fitting }}\n </mat-radio-button>\n </mat-radio-group>\n </button>\n <button mat-menu-item class=\"make-picture\" (click)=\"makePicture()\">\n Create picture\n </button>\n</mat-menu>\n<app-menu-toggle\n [matMenuTriggerFor]=\"menu\"\n tooltip=\"Creates a picture from the current view: directly saves a png of arbitrary size from the current view\"\n icon=\"png\"\n>\n</app-menu-toggle>\n<div>\n <canvas hidden id=\"screenshotCanvas\"></canvas>\n</div>\n", styles: [".size-input{background:transparent;color:var(--phoenix-text-color);text-align:center}.size-input label{width:60px}.size-input input{background:transparent;color:var(--phoenix-text-color);width:80px}.make-picture{text-align:center;display:block}.make-picture span{padding:5px 25px;border:2px solid var(--phoenix-text-color);border-radius:8px}\n"] }]
|
|
87
|
-
}], function () { return [{ type: i1.EventDisplayService }]; }, null); })();
|
|
88
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWFrZS1waWN0dXJlLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL2xpYi9jb21wb25lbnRzL3VpLW1lbnUvbWFrZS1waWN0dXJlL21ha2UtcGljdHVyZS5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi9saWIvY29tcG9uZW50cy91aS1tZW51L21ha2UtcGljdHVyZS9tYWtlLXBpY3R1cmUuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBaUIsaUJBQWlCLEVBQUUsTUFBTSxlQUFlLENBQUM7Ozs7Ozs7OztJQ3lCdEUsNENBQ0c7SUFBQSxZQUNIO0lBQUEsaUJBQW1COzs7SUFGZ0Msa0NBQWlCO0lBQ2pFLGVBQ0g7SUFERywwQ0FDSDs7QURqQk4sTUFBTSxPQUFPLG9CQUFvQjtJQUsvQixZQUFvQixZQUFpQztRQUFqQyxpQkFBWSxHQUFaLFlBQVksQ0FBcUI7UUFKckQsYUFBUSxHQUFhLENBQUMsTUFBTSxFQUFFLFNBQVMsQ0FBQyxDQUFDO1FBQ3pDLFlBQU8sR0FBVyxNQUFNLENBQUM7UUFDekIsVUFBSyxHQUFXLElBQUksQ0FBQztRQUNyQixXQUFNLEdBQVcsSUFBSSxDQUFDO0lBQ2tDLENBQUM7SUFDekQsUUFBUSxLQUFJLENBQUM7SUFDYixRQUFRLENBQUMsS0FBSztRQUNaLElBQUksQ0FBQyxLQUFLLEdBQUcsS0FBSyxDQUFDO0lBQ3JCLENBQUM7SUFDRCxTQUFTLENBQUMsS0FBSztRQUNiLElBQUksQ0FBQyxNQUFNLEdBQUcsS0FBSyxDQUFDO0lBQ3RCLENBQUM7SUFFRCxXQUFXO1FBQ1QsSUFBSSxDQUFDLFlBQVksQ0FBQyxjQUFjLENBQUMsSUFBSSxDQUFDLEtBQUssRUFBRSxJQUFJLENBQUMsTUFBTSxFQUFFLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQztJQUMxRSxDQUFDOzt3RkFoQlUsb0JBQW9CO3VFQUFwQixvQkFBb0I7O1FDVmpDLHNDQUFpQyxnQkFBQTtRQUNULHVHQUFTLHdCQUF3QixJQUFDO1FBQ3RELDZCQUFPO1FBQUEscUJBQUs7UUFBQSxpQkFBUTtRQUNwQixtQ0FPRTtRQUZBLHdKQUFVLGVBQUEsdUJBQXFCLENBQUEsSUFBQyx5RkFDdkIsd0JBQXdCLElBREQ7UUFMbEMsaUJBT0UsRUFBQTtRQUVKLGlDQUE0RTtRQUF0RCx1R0FBUyx3QkFBd0IsSUFBQztRQUN0RCw2QkFBTztRQUFBLHNCQUFNO1FBQUEsaUJBQVE7UUFDckIsb0NBT0U7UUFGQSwwSkFBVSxlQUFBLHdCQUF1QixDQUFBLElBQUMsMEZBQ3pCLHdCQUF3QixJQURDO1FBTHBDLGlCQU9FLEVBQUE7UUFFSixrQ0FBeUQ7UUFBbkMsd0dBQVMsd0JBQXdCLElBQUM7UUFDdEQsMkNBQThEO1FBQTdDLHlKQUFxQjtRQUNwQyxpR0FFbUI7UUFDckIsaUJBQWtCLEVBQUE7UUFFcEIsa0NBQW1FO1FBQXhCLGtHQUFTLGlCQUFhLElBQUM7UUFDaEUsaUNBQ0Y7UUFBQSxpQkFBUyxFQUFBO1FBRVgsdUNBS2tCO1FBQ2xCLDRCQUFLO1FBQ0gsOEJBQThDO1FBQ2hELGlCQUFNOzs7UUFuQ0EsZUFBYztRQUFkLDRCQUFjO1FBV2QsZUFBYztRQUFkLDRCQUFjO1FBTUMsZUFBcUI7UUFBckIscUNBQXFCO1FBQ0UsZUFBVztRQUFYLHNDQUFXO1FBVXJELGVBQTBCO1FBQTFCLHVDQUEwQjs7dUZEekJmLG9CQUFvQjtjQU5oQyxTQUFTOzJCQUNFLGtCQUFrQixpQkFHYixpQkFBaUIsQ0FBQyxJQUFJIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBJbnB1dCwgT25Jbml0LCBWaWV3RW5jYXBzdWxhdGlvbiB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgRm9ybUNvbnRyb2wsIFZhbGlkYXRvcnMgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyBFdmVudERpc3BsYXlTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vc2VydmljZXMvZXZlbnQtZGlzcGxheS5zZXJ2aWNlJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnYXBwLW1ha2UtcGljdHVyZScsXG4gIHRlbXBsYXRlVXJsOiAnLi9tYWtlLXBpY3R1cmUuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9tYWtlLXBpY3R1cmUuY29tcG9uZW50LnNjc3MnXSxcbiAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZSxcbn0pXG5leHBvcnQgY2xhc3MgTWFrZVBpY3R1cmVDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQge1xuICBmaXR0aW5nczogc3RyaW5nW10gPSBbJ0Nyb3AnLCAnU3RyZXRjaCddO1xuICBmaXR0aW5nOiBzdHJpbmcgPSAnQ3JvcCc7XG4gIHdpZHRoOiBudW1iZXIgPSAzODQwO1xuICBoZWlnaHQ6IG51bWJlciA9IDIxNjA7XG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgZXZlbnREaXNwbGF5OiBFdmVudERpc3BsYXlTZXJ2aWNlKSB7fVxuICBuZ09uSW5pdCgpIHt9XG4gIHNldFdpZHRoKHZhbHVlKSB7XG4gICAgdGhpcy53aWR0aCA9IHZhbHVlO1xuICB9XG4gIHNldEhlaWdodCh2YWx1ZSkge1xuICAgIHRoaXMuaGVpZ2h0ID0gdmFsdWU7XG4gIH1cblxuICBtYWtlUGljdHVyZSgpIHtcbiAgICB0aGlzLmV2ZW50RGlzcGxheS5tYWtlU2NyZWVuU2hvdCh0aGlzLndpZHRoLCB0aGlzLmhlaWdodCwgdGhpcy5maXR0aW5nKTtcbiAgfVxufVxuIiwiPG1hdC1tZW51IGNsYXNzPVwibWF0LW1lbnVcIiAjbWVudT5cbiAgPGJ1dHRvbiBtYXQtbWVudS1pdGVtIChjbGljayk9XCIkZXZlbnQuc3RvcFByb3BhZ2F0aW9uKClcIiBjbGFzcz1cInNpemUtaW5wdXRcIj5cbiAgICA8bGFiZWw+d2lkdGg8L2xhYmVsPlxuICAgIDxpbnB1dFxuICAgICAgI3dpZHRoXG4gICAgICBtYXBJbnB1dFxuICAgICAgdHlwZT1cIm51bWJlclwiXG4gICAgICBbdmFsdWVdPVwiMzg0MFwiXG4gICAgICAoY2hhbmdlKT1cInNldFdpZHRoKHdpZHRoLnZhbHVlKVwiXG4gICAgICAoY2xpY2spPVwiJGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpXCJcbiAgICAvPlxuICA8L2J1dHRvbj5cbiAgPGJ1dHRvbiBtYXQtbWVudS1pdGVtIChjbGljayk9XCIkZXZlbnQuc3RvcFByb3BhZ2F0aW9uKClcIiBjbGFzcz1cInNpemUtaW5wdXRcIj5cbiAgICA8bGFiZWw+aGVpZ2h0PC9sYWJlbD5cbiAgICA8aW5wdXRcbiAgICAgICNoZWlnaHRcbiAgICAgIG1hcElucHV0XG4gICAgICB0eXBlPVwibnVtYmVyXCJcbiAgICAgIFt2YWx1ZV09XCIyNjEwXCJcbiAgICAgIChjaGFuZ2UpPVwic2V0SGVpZ2h0KGhlaWdodC52YWx1ZSlcIlxuICAgICAgKGNsaWNrKT1cIiRldmVudC5zdG9wUHJvcGFnYXRpb24oKVwiXG4gICAgLz5cbiAgPC9idXR0b24+XG4gIDxidXR0b24gbWF0LW1lbnUtaXRlbSAoY2xpY2spPVwiJGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpXCI+XG4gICAgPG1hdC1yYWRpby1ncm91cCBbKG5nTW9kZWwpXT1cImZpdHRpbmdcIiBjbGFzcz1cImZpdHRpbmctcmFkaW9zXCI+XG4gICAgICA8bWF0LXJhZGlvLWJ1dHRvbiAqbmdGb3I9XCJsZXQgZml0dGluZyBvZiBmaXR0aW5nc1wiIFt2YWx1ZV09XCJmaXR0aW5nXCJcbiAgICAgICAgPnt7IGZpdHRpbmcgfX1cbiAgICAgIDwvbWF0LXJhZGlvLWJ1dHRvbj5cbiAgICA8L21hdC1yYWRpby1ncm91cD5cbiAgPC9idXR0b24+XG4gIDxidXR0b24gbWF0LW1lbnUtaXRlbSBjbGFzcz1cIm1ha2UtcGljdHVyZVwiIChjbGljayk9XCJtYWtlUGljdHVyZSgpXCI+XG4gICAgQ3JlYXRlIHBpY3R1cmVcbiAgPC9idXR0b24+XG48L21hdC1tZW51PlxuPGFwcC1tZW51LXRvZ2dsZVxuICBbbWF0TWVudVRyaWdnZXJGb3JdPVwibWVudVwiXG4gIHRvb2x0aXA9XCJDcmVhdGVzIGEgcGljdHVyZSBmcm9tIHRoZSBjdXJyZW50IHZpZXc6IGRpcmVjdGx5IHNhdmVzIGEgcG5nIG9mIGFyYml0cmFyeSBzaXplIGZyb20gdGhlIGN1cnJlbnQgdmlld1wiXG4gIGljb249XCJwbmdcIlxuPlxuPC9hcHAtbWVudS10b2dnbGU+XG48ZGl2PlxuICA8Y2FudmFzIGhpZGRlbiBpZD1cInNjcmVlbnNob3RDYW52YXNcIj48L2NhbnZhcz5cbjwvZGl2PlxuIl19
|
|
@@ -1,38 +0,0 @@
|
|
|
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
|
-
const _c0 = function (a0) { return { disabled: a0 }; };
|
|
6
|
-
const _c1 = function (a0) { return { "active-icon": a0 }; };
|
|
7
|
-
export class MenuToggleComponent {
|
|
8
|
-
constructor() {
|
|
9
|
-
this.disabled = false;
|
|
10
|
-
}
|
|
11
|
-
}
|
|
12
|
-
MenuToggleComponent.ɵfac = function MenuToggleComponent_Factory(t) { return new (t || MenuToggleComponent)(); };
|
|
13
|
-
MenuToggleComponent.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: MenuToggleComponent, selectors: [["app-menu-toggle"]], inputs: { icon: "icon", active: "active", tooltip: "tooltip", disabled: "disabled" }, decls: 3, vars: 9, consts: [["matTooltipPosition", "above", "matTooltipTouchGestures", "off", 1, "menu-toggle", 3, "ngClass", "matTooltip"], [1, "menu-toggle-icon", 3, "ngClass"]], template: function MenuToggleComponent_Template(rf, ctx) { if (rf & 1) {
|
|
14
|
-
i0.ɵɵelementStart(0, "button", 0);
|
|
15
|
-
i0.ɵɵnamespaceSVG();
|
|
16
|
-
i0.ɵɵelementStart(1, "svg", 1);
|
|
17
|
-
i0.ɵɵelement(2, "use");
|
|
18
|
-
i0.ɵɵelementEnd()();
|
|
19
|
-
} if (rf & 2) {
|
|
20
|
-
i0.ɵɵproperty("ngClass", i0.ɵɵpureFunction1(5, _c0, ctx.disabled))("matTooltip", ctx.tooltip);
|
|
21
|
-
i0.ɵɵadvance(1);
|
|
22
|
-
i0.ɵɵproperty("ngClass", i0.ɵɵpureFunction1(7, _c1, ctx.active));
|
|
23
|
-
i0.ɵɵadvance(1);
|
|
24
|
-
i0.ɵɵattributeInterpolate2("href", "assets/icons/", ctx.icon, ".svg#", ctx.icon, "");
|
|
25
|
-
} }, dependencies: [i1.NgClass, i2.MatTooltip], styles: ["[_nghost-%COMP%]{display:flex;margin:0 .6rem}[_nghost-%COMP%] .menu-toggle[_ngcontent-%COMP%]{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}[_nghost-%COMP%] .menu-toggle-icon[_ngcontent-%COMP%]{width:100%;height:100%}[_nghost-%COMP%] .menu-toggle-icon.active-icon[_ngcontent-%COMP%]{--phoenix-options-icon-path: #00bcd4}[_nghost-%COMP%] .menu-toggle[_ngcontent-%COMP%]:hover{background-color:var(--phoenix-options-icon-bg);border-radius:40%;transition:all .4s}[_nghost-%COMP%] .menu-toggle.disabled[_ngcontent-%COMP%]{cursor:not-allowed;opacity:.4}"] });
|
|
26
|
-
(function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(MenuToggleComponent, [{
|
|
27
|
-
type: Component,
|
|
28
|
-
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"] }]
|
|
29
|
-
}], null, { icon: [{
|
|
30
|
-
type: Input
|
|
31
|
-
}], active: [{
|
|
32
|
-
type: Input
|
|
33
|
-
}], tooltip: [{
|
|
34
|
-
type: Input
|
|
35
|
-
}], disabled: [{
|
|
36
|
-
type: Input
|
|
37
|
-
}] }); })();
|
|
38
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWVudS10b2dnbGUuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vbGliL2NvbXBvbmVudHMvdWktbWVudS9tZW51LXRvZ2dsZS9tZW51LXRvZ2dsZS5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi9saWIvY29tcG9uZW50cy91aS1tZW51L21lbnUtdG9nZ2xlL21lbnUtdG9nZ2xlLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFFLE1BQU0sZUFBZSxDQUFDOzs7Ozs7QUFPakQsTUFBTSxPQUFPLG1CQUFtQjtJQUxoQztRQVNXLGFBQVEsR0FBWSxLQUFLLENBQUM7S0FDcEM7O3NGQUxZLG1CQUFtQjtzRUFBbkIsbUJBQW1CO1FDUGhDLGlDQU1DO1FBQ0MsbUJBQW9FO1FBQXBFLDhCQUFvRTtRQUNsRSxzQkFBOEQ7UUFDaEUsaUJBQU0sRUFBQTs7UUFQTixrRUFBa0MsMkJBQUE7UUFLSixlQUFxQztRQUFyQyxnRUFBcUM7UUFDNUQsZUFBa0Q7UUFBbEQsb0ZBQWtEOzt1RkREOUMsbUJBQW1CO2NBTC9CLFNBQVM7MkJBQ0UsaUJBQWlCO2dCQUtsQixJQUFJO2tCQUFaLEtBQUs7WUFDRyxNQUFNO2tCQUFkLEtBQUs7WUFDRyxPQUFPO2tCQUFmLEtBQUs7WUFDRyxRQUFRO2tCQUFoQixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBJbnB1dCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdhcHAtbWVudS10b2dnbGUnLFxuICB0ZW1wbGF0ZVVybDogJy4vbWVudS10b2dnbGUuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9tZW51LXRvZ2dsZS5jb21wb25lbnQuc2NzcyddLFxufSlcbmV4cG9ydCBjbGFzcyBNZW51VG9nZ2xlQ29tcG9uZW50IHtcbiAgQElucHV0KCkgaWNvbjogc3RyaW5nO1xuICBASW5wdXQoKSBhY3RpdmU6IGJvb2xlYW47XG4gIEBJbnB1dCgpIHRvb2x0aXA6IHN0cmluZztcbiAgQElucHV0KCkgZGlzYWJsZWQ6IGJvb2xlYW4gPSBmYWxzZTtcbn1cbiIsIjxidXR0b25cbiAgY2xhc3M9XCJtZW51LXRvZ2dsZVwiXG4gIFtuZ0NsYXNzXT1cInsgZGlzYWJsZWQ6IGRpc2FibGVkIH1cIlxuICBbbWF0VG9vbHRpcF09XCJ0b29sdGlwXCJcbiAgbWF0VG9vbHRpcFBvc2l0aW9uPVwiYWJvdmVcIlxuICBtYXRUb29sdGlwVG91Y2hHZXN0dXJlcz1cIm9mZlwiXG4+XG4gIDxzdmcgY2xhc3M9XCJtZW51LXRvZ2dsZS1pY29uXCIgW25nQ2xhc3NdPVwieyAnYWN0aXZlLWljb24nOiBhY3RpdmUgfVwiPlxuICAgIDx1c2UgYXR0ci5ocmVmPVwiYXNzZXRzL2ljb25zL3t7IGljb24gfX0uc3ZnI3t7IGljb24gfX1cIj48L3VzZT5cbiAgPC9zdmc+XG48L2J1dHRvbj5cbiJdfQ==
|