phoenix-ui-components 2.14.1 → 2.16.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +2 -2
- package/dist/README.md +2 -2
- package/dist/components/file-explorer/file-explorer.component.d.ts +9 -3
- package/dist/components/loader/loader.component.d.ts +1 -1
- package/dist/components/phoenix-menu/config/config-slider/config-slider.component.d.ts +1 -1
- package/dist/components/phoenix-menu/phoenix-menu-item/phoenix-menu-item.component.d.ts +1 -1
- package/dist/components/phoenix-menu/phoenix-menu.component.d.ts +1 -1
- package/dist/components/phoenix-ui.module.d.ts +62 -59
- package/dist/components/ui-menu/animate-camera/animate-camera.component.d.ts +1 -1
- package/dist/components/ui-menu/collections-info/collections-info-overlay/collections-info-overlay.component.d.ts +3 -1
- package/dist/components/ui-menu/cycle-events/cycle-events.component.d.ts +7 -2
- package/dist/components/ui-menu/event-data-explorer/event-data-explorer-dialog/event-data-explorer-dialog.component.d.ts +7 -8
- package/dist/components/ui-menu/event-data-explorer/event-data-explorer.component.d.ts +1 -1
- package/dist/components/ui-menu/experiment-info/experiment-info.component.d.ts +1 -1
- package/dist/components/ui-menu/geometry-browser/geometry-browser-overlay/geometry-browser-overlay.component.d.ts +22 -0
- package/dist/components/ui-menu/geometry-browser/geometry-browser.component.d.ts +15 -0
- package/dist/components/ui-menu/index.d.ts +3 -0
- package/dist/components/ui-menu/info-panel/info-panel-overlay/info-panel-overlay.component.d.ts +1 -1
- package/dist/components/ui-menu/io-options/io-options-dialog/io-options-dialog.component.d.ts +1 -1
- package/dist/components/ui-menu/io-options/io-options.component.d.ts +1 -1
- package/dist/components/ui-menu/make-picture/make-picture.component.d.ts +3 -0
- package/dist/components/ui-menu/menu-toggle/menu-toggle.component.d.ts +1 -1
- package/dist/components/ui-menu/object-selection/object-selection-overlay/object-selection-overlay.component.d.ts +1 -1
- package/dist/components/ui-menu/overlay/overlay.component.d.ts +1 -1
- package/dist/components/ui-menu/overlay-view/overlay-view-window/overlay-view-window.component.d.ts +1 -1
- package/dist/components/ui-menu/tree-menu/tree-menu-item/tree-menu-item.component.d.ts +1 -1
- package/dist/components/ui-menu/ui-menu.component.d.ts +1 -1
- package/dist/components/ui-menu/view-options/cartesian-grid-config/cartesian-grid-config.component.d.ts +51 -0
- package/dist/components/ui-menu/view-options/view-options.component.d.ts +21 -4
- package/dist/esm2022/components/embed-menu/embed-menu.component.mjs +22 -0
- package/dist/esm2022/components/embed-menu/experiment-link/experiment-link.component.mjs +27 -0
- package/dist/esm2022/components/file-explorer/file-explorer.component.mjs +109 -0
- package/dist/esm2022/components/loader/loader.component.mjs +71 -0
- package/dist/esm2022/components/nav/nav.component.mjs +19 -0
- package/dist/esm2022/components/phoenix-menu/config/config-slider/config-slider.component.mjs +81 -0
- package/dist/esm2022/components/phoenix-menu/phoenix-menu-item/phoenix-menu-item.component.mjs +304 -0
- package/dist/esm2022/components/phoenix-menu/phoenix-menu.component.mjs +23 -0
- package/dist/esm2022/components/phoenix-ui.module.mjs +254 -0
- package/dist/esm2022/components/ring-loader/ring-loader.component.mjs +16 -0
- package/dist/esm2022/components/ui-menu/animate-camera/animate-camera.component.mjs +120 -0
- package/dist/esm2022/components/ui-menu/animate-event/animate-event.component.mjs +33 -0
- package/dist/esm2022/components/ui-menu/ar-toggle/ar-toggle.component.mjs +83 -0
- package/dist/esm2022/components/ui-menu/auto-rotate/auto-rotate.component.mjs +29 -0
- package/dist/esm2022/components/ui-menu/collections-info/collections-info-overlay/collections-info-overlay.component.mjs +273 -0
- package/dist/esm2022/components/ui-menu/collections-info/collections-info.component.mjs +44 -0
- package/dist/esm2022/components/ui-menu/cycle-events/cycle-events.component.mjs +90 -0
- package/dist/esm2022/components/ui-menu/dark-theme/dark-theme.component.mjs +32 -0
- package/dist/esm2022/components/ui-menu/event-data-explorer/event-data-explorer-dialog/event-data-explorer-dialog.component.mjs +128 -0
- package/dist/esm2022/components/ui-menu/event-data-explorer/event-data-explorer.component.mjs +35 -0
- package/dist/esm2022/components/ui-menu/event-selector/event-selector.component.mjs +54 -0
- package/dist/esm2022/components/ui-menu/experiment-info/experiment-info.component.mjs +100 -0
- package/dist/esm2022/components/ui-menu/geometry-browser/geometry-browser-overlay/geometry-browser-overlay.component.mjs +172 -0
- package/dist/esm2022/components/ui-menu/geometry-browser/geometry-browser.component.mjs +44 -0
- package/dist/esm2022/components/ui-menu/index.mjs +40 -0
- package/dist/esm2022/components/ui-menu/info-panel/info-panel-overlay/info-panel-overlay.component.mjs +69 -0
- package/dist/esm2022/components/ui-menu/info-panel/info-panel.component.mjs +59 -0
- package/dist/esm2022/components/ui-menu/io-options/io-options-dialog/io-options-dialog.component.mjs +294 -0
- package/dist/esm2022/components/ui-menu/io-options/io-options.component.mjs +36 -0
- package/dist/esm2022/components/ui-menu/main-view-toggle/main-view-toggle.component.mjs +32 -0
- package/dist/esm2022/components/ui-menu/make-picture/make-picture.component.mjs +109 -0
- package/dist/esm2022/components/ui-menu/menu-toggle/menu-toggle.component.mjs +40 -0
- package/dist/esm2022/components/ui-menu/object-clipping/object-clipping.component.mjs +72 -0
- package/dist/esm2022/components/ui-menu/object-selection/object-selection-overlay/object-selection-overlay.component.mjs +59 -0
- package/dist/esm2022/components/ui-menu/object-selection/object-selection.component.mjs +46 -0
- package/dist/esm2022/components/ui-menu/overlay/overlay.component.mjs +197 -0
- package/dist/esm2022/components/ui-menu/overlay-view/overlay-view-window/overlay-view-window.component.mjs +83 -0
- package/dist/esm2022/components/ui-menu/overlay-view/overlay-view.component.mjs +41 -0
- package/dist/esm2022/components/ui-menu/performance-toggle/performance-toggle.component.mjs +29 -0
- package/dist/esm2022/components/ui-menu/share-link/share-link-dialog/share-link-dialog.component.mjs +165 -0
- package/dist/esm2022/components/ui-menu/share-link/share-link.component.mjs +28 -0
- package/dist/esm2022/components/ui-menu/ss-mode/ss-mode.component.mjs +46 -0
- package/dist/esm2022/components/ui-menu/tree-menu/tree-menu-item/tree-menu-item.component.mjs +94 -0
- package/dist/esm2022/components/ui-menu/tree-menu/tree-menu.component.mjs +78 -0
- package/dist/esm2022/components/ui-menu/ui-menu-wrapper/ui-menu-wrapper.component.mjs +34 -0
- package/dist/esm2022/components/ui-menu/ui-menu.component.mjs +54 -0
- package/dist/esm2022/components/ui-menu/view-options/cartesian-grid-config/cartesian-grid-config.component.mjs +247 -0
- package/dist/esm2022/components/ui-menu/view-options/view-options.component.mjs +170 -0
- package/dist/esm2022/components/ui-menu/vr-toggle/vr-toggle.component.mjs +52 -0
- package/dist/esm2022/components/ui-menu/zoom-controls/zoom-controls.component.mjs +79 -0
- package/dist/esm2022/services/error-message-service.mjs +30 -0
- package/dist/{esm2020 → esm2022}/services/event-display.service.mjs +5 -5
- package/dist/esm2022/services/extras/attribute.pipe.mjs +33 -0
- package/dist/{esm2020 → esm2022}/services/extras/event-data-import.mjs +5 -1
- package/dist/esm2022/services/file-loader.service.mjs +86 -0
- package/dist/esm2022/services/global-error-handler.mjs +30 -0
- package/dist/fesm2022/phoenix-ui-components.mjs +4302 -0
- package/dist/fesm2022/phoenix-ui-components.mjs.map +1 -0
- package/dist/services/file-loader.service.d.ts +17 -0
- package/package.json +27 -16
- package/dist/esm2020/components/embed-menu/embed-menu.component.mjs +0 -21
- package/dist/esm2020/components/embed-menu/experiment-link/experiment-link.component.mjs +0 -25
- package/dist/esm2020/components/file-explorer/file-explorer.component.mjs +0 -97
- package/dist/esm2020/components/loader/loader.component.mjs +0 -68
- package/dist/esm2020/components/nav/nav.component.mjs +0 -18
- package/dist/esm2020/components/phoenix-menu/config/config-slider/config-slider.component.mjs +0 -82
- package/dist/esm2020/components/phoenix-menu/phoenix-menu-item/phoenix-menu-item.component.mjs +0 -309
- package/dist/esm2020/components/phoenix-menu/phoenix-menu.component.mjs +0 -21
- package/dist/esm2020/components/phoenix-ui.module.mjs +0 -254
- package/dist/esm2020/components/ring-loader/ring-loader.component.mjs +0 -15
- package/dist/esm2020/components/ui-menu/animate-camera/animate-camera.component.mjs +0 -117
- package/dist/esm2020/components/ui-menu/animate-event/animate-event.component.mjs +0 -31
- package/dist/esm2020/components/ui-menu/ar-toggle/ar-toggle.component.mjs +0 -81
- package/dist/esm2020/components/ui-menu/auto-rotate/auto-rotate.component.mjs +0 -27
- package/dist/esm2020/components/ui-menu/collections-info/collections-info-overlay/collections-info-overlay.component.mjs +0 -261
- package/dist/esm2020/components/ui-menu/collections-info/collections-info.component.mjs +0 -38
- package/dist/esm2020/components/ui-menu/cycle-events/cycle-events.component.mjs +0 -42
- package/dist/esm2020/components/ui-menu/dark-theme/dark-theme.component.mjs +0 -30
- package/dist/esm2020/components/ui-menu/event-data-explorer/event-data-explorer-dialog/event-data-explorer-dialog.component.mjs +0 -176
- package/dist/esm2020/components/ui-menu/event-data-explorer/event-data-explorer.component.mjs +0 -32
- package/dist/esm2020/components/ui-menu/event-selector/event-selector.component.mjs +0 -50
- package/dist/esm2020/components/ui-menu/experiment-info/experiment-info.component.mjs +0 -96
- package/dist/esm2020/components/ui-menu/index.mjs +0 -37
- package/dist/esm2020/components/ui-menu/info-panel/info-panel-overlay/info-panel-overlay.component.mjs +0 -66
- package/dist/esm2020/components/ui-menu/info-panel/info-panel.component.mjs +0 -55
- package/dist/esm2020/components/ui-menu/io-options/io-options-dialog/io-options-dialog.component.mjs +0 -290
- package/dist/esm2020/components/ui-menu/io-options/io-options.component.mjs +0 -34
- package/dist/esm2020/components/ui-menu/main-view-toggle/main-view-toggle.component.mjs +0 -30
- package/dist/esm2020/components/ui-menu/make-picture/make-picture.component.mjs +0 -88
- package/dist/esm2020/components/ui-menu/menu-toggle/menu-toggle.component.mjs +0 -38
- package/dist/esm2020/components/ui-menu/object-clipping/object-clipping.component.mjs +0 -67
- package/dist/esm2020/components/ui-menu/object-selection/object-selection-overlay/object-selection-overlay.component.mjs +0 -55
- package/dist/esm2020/components/ui-menu/object-selection/object-selection.component.mjs +0 -42
- package/dist/esm2020/components/ui-menu/overlay/overlay.component.mjs +0 -189
- package/dist/esm2020/components/ui-menu/overlay-view/overlay-view-window/overlay-view-window.component.mjs +0 -79
- package/dist/esm2020/components/ui-menu/overlay-view/overlay-view.component.mjs +0 -38
- package/dist/esm2020/components/ui-menu/performance-toggle/performance-toggle.component.mjs +0 -27
- package/dist/esm2020/components/ui-menu/share-link/share-link-dialog/share-link-dialog.component.mjs +0 -158
- package/dist/esm2020/components/ui-menu/share-link/share-link.component.mjs +0 -26
- package/dist/esm2020/components/ui-menu/ss-mode/ss-mode.component.mjs +0 -47
- package/dist/esm2020/components/ui-menu/tree-menu/tree-menu-item/tree-menu-item.component.mjs +0 -90
- package/dist/esm2020/components/ui-menu/tree-menu/tree-menu.component.mjs +0 -78
- package/dist/esm2020/components/ui-menu/ui-menu-wrapper/ui-menu-wrapper.component.mjs +0 -35
- package/dist/esm2020/components/ui-menu/ui-menu.component.mjs +0 -54
- package/dist/esm2020/components/ui-menu/view-options/view-options.component.mjs +0 -81
- package/dist/esm2020/components/ui-menu/vr-toggle/vr-toggle.component.mjs +0 -50
- package/dist/esm2020/components/ui-menu/zoom-controls/zoom-controls.component.mjs +0 -73
- package/dist/esm2020/services/error-message-service.mjs +0 -32
- package/dist/esm2020/services/extras/attribute.pipe.mjs +0 -33
- package/dist/esm2020/services/global-error-handler.mjs +0 -29
- package/dist/fesm2015/phoenix-ui-components.mjs +0 -3994
- package/dist/fesm2015/phoenix-ui-components.mjs.map +0 -1
- package/dist/fesm2020/phoenix-ui-components.mjs +0 -3552
- package/dist/fesm2020/phoenix-ui-components.mjs.map +0 -1
- /package/dist/{esm2020 → esm2022}/components/phoenix-menu/index.mjs +0 -0
- /package/dist/{esm2020 → esm2022}/phoenix-ui-components.mjs +0 -0
- /package/dist/{esm2020 → esm2022}/public_api.mjs +0 -0
- /package/dist/{esm2020 → esm2022}/services/index.mjs +0 -0
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import { Component } from '@angular/core';
|
|
2
|
+
import * as i0 from "@angular/core";
|
|
3
|
+
import * as i1 from "../ui-menu/dark-theme/dark-theme.component";
|
|
4
|
+
import * as i2 from "../ui-menu/auto-rotate/auto-rotate.component";
|
|
5
|
+
import * as i3 from "../ui-menu/main-view-toggle/main-view-toggle.component";
|
|
6
|
+
import * as i4 from "../ui-menu/animate-camera/animate-camera.component";
|
|
7
|
+
import * as i5 from "../ui-menu/animate-event/animate-event.component";
|
|
8
|
+
import * as i6 from "./experiment-link/experiment-link.component";
|
|
9
|
+
export class EmbedMenuComponent {
|
|
10
|
+
static ɵfac = function EmbedMenuComponent_Factory(t) { return new (t || EmbedMenuComponent)(); };
|
|
11
|
+
static ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: EmbedMenuComponent, selectors: [["app-embed-menu"]], decls: 8, vars: 0, consts: [["id", "embedMenu"], ["id", "embedMenuInner"]], template: function EmbedMenuComponent_Template(rf, ctx) { if (rf & 1) {
|
|
12
|
+
i0.ɵɵelementStart(0, "div", 0)(1, "div", 1);
|
|
13
|
+
i0.ɵɵelement(2, "app-dark-theme")(3, "app-auto-rotate")(4, "app-main-view-toggle")(5, "app-animate-event")(6, "app-animate-camera")(7, "app-experiment-link");
|
|
14
|
+
i0.ɵɵelementEnd()();
|
|
15
|
+
} }, dependencies: [i1.DarkThemeComponent, i2.AutoRotateComponent, i3.MainViewToggleComponent, i4.AnimateCameraComponent, i5.AnimateEventComponent, i6.ExperimentLinkComponent], styles: ["#embedMenu[_ngcontent-%COMP%]{display:none}#embedMenu[_ngcontent-%COMP%] #embedMenuInner[_ngcontent-%COMP%]{display:flex;position:absolute;left:1rem;bottom:1rem;background:var(--phoenix-background-color-secondary);border:1px solid var(--phoenix-background-color-tertiary);box-shadow:var(--phoenix-box-shadow);border-radius:30px;padding:.25rem 0}"] });
|
|
16
|
+
}
|
|
17
|
+
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(EmbedMenuComponent, [{
|
|
18
|
+
type: Component,
|
|
19
|
+
args: [{ selector: 'app-embed-menu', template: "<div id=\"embedMenu\">\n <div id=\"embedMenuInner\">\n <app-dark-theme></app-dark-theme>\n <app-auto-rotate></app-auto-rotate>\n <app-main-view-toggle></app-main-view-toggle>\n <app-animate-event></app-animate-event>\n <app-animate-camera></app-animate-camera>\n <app-experiment-link></app-experiment-link>\n </div>\n</div>\n", styles: ["#embedMenu{display:none}#embedMenu #embedMenuInner{display:flex;position:absolute;left:1rem;bottom:1rem;background:var(--phoenix-background-color-secondary);border:1px solid var(--phoenix-background-color-tertiary);box-shadow:var(--phoenix-box-shadow);border-radius:30px;padding:.25rem 0}\n"] }]
|
|
20
|
+
}], null, null); })();
|
|
21
|
+
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(EmbedMenuComponent, { className: "EmbedMenuComponent", filePath: "components/embed-menu/embed-menu.component.ts", lineNumber: 8 }); })();
|
|
22
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZW1iZWQtbWVudS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9saWIvY29tcG9uZW50cy9lbWJlZC1tZW51L2VtYmVkLW1lbnUuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vbGliL2NvbXBvbmVudHMvZW1iZWQtbWVudS9lbWJlZC1tZW51LmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxlQUFlLENBQUM7Ozs7Ozs7O0FBTzFDLE1BQU0sT0FBTyxrQkFBa0I7NEVBQWxCLGtCQUFrQjs2REFBbEIsa0JBQWtCO1lDTjdCLEFBREYsOEJBQW9CLGFBQ087WUFNdkIsQUFEQSxBQURBLEFBREEsQUFEQSxBQURBLGlDQUFpQyxzQkFDRSwyQkFDVSx3QkFDTix5QkFDRSwwQkFDRTtZQUUvQyxBQURFLGlCQUFNLEVBQ0Y7OztpRkRGTyxrQkFBa0I7Y0FMOUIsU0FBUzsyQkFDRSxnQkFBZ0I7O2tGQUlmLGtCQUFrQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdhcHAtZW1iZWQtbWVudScsXG4gIHRlbXBsYXRlVXJsOiAnLi9lbWJlZC1tZW51LmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vZW1iZWQtbWVudS5jb21wb25lbnQuc2NzcyddLFxufSlcbmV4cG9ydCBjbGFzcyBFbWJlZE1lbnVDb21wb25lbnQge31cbiIsIjxkaXYgaWQ9XCJlbWJlZE1lbnVcIj5cbiAgPGRpdiBpZD1cImVtYmVkTWVudUlubmVyXCI+XG4gICAgPGFwcC1kYXJrLXRoZW1lPjwvYXBwLWRhcmstdGhlbWU+XG4gICAgPGFwcC1hdXRvLXJvdGF0ZT48L2FwcC1hdXRvLXJvdGF0ZT5cbiAgICA8YXBwLW1haW4tdmlldy10b2dnbGU+PC9hcHAtbWFpbi12aWV3LXRvZ2dsZT5cbiAgICA8YXBwLWFuaW1hdGUtZXZlbnQ+PC9hcHAtYW5pbWF0ZS1ldmVudD5cbiAgICA8YXBwLWFuaW1hdGUtY2FtZXJhPjwvYXBwLWFuaW1hdGUtY2FtZXJhPlxuICAgIDxhcHAtZXhwZXJpbWVudC1saW5rPjwvYXBwLWV4cGVyaW1lbnQtbGluaz5cbiAgPC9kaXY+XG48L2Rpdj5cbiJdfQ==
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
import { Component } from '@angular/core';
|
|
2
|
+
import * as i0 from "@angular/core";
|
|
3
|
+
import * as i1 from "../../ui-menu/menu-toggle/menu-toggle.component";
|
|
4
|
+
export class ExperimentLinkComponent {
|
|
5
|
+
experimentLink;
|
|
6
|
+
ngOnInit() {
|
|
7
|
+
// we just want to remove the "&embed=true" instruction here.
|
|
8
|
+
const url = new URL(window.location.href);
|
|
9
|
+
url.searchParams.delete('embed');
|
|
10
|
+
this.experimentLink = url.toString();
|
|
11
|
+
}
|
|
12
|
+
goToExperiment() {
|
|
13
|
+
window.open(this.experimentLink, '_blank');
|
|
14
|
+
}
|
|
15
|
+
static ɵfac = function ExperimentLinkComponent_Factory(t) { return new (t || ExperimentLinkComponent)(); };
|
|
16
|
+
static ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: ExperimentLinkComponent, selectors: [["app-experiment-link"]], decls: 1, vars: 0, consts: [["tooltip", "See full event display", "icon", "link", 3, "click"]], template: function ExperimentLinkComponent_Template(rf, ctx) { if (rf & 1) {
|
|
17
|
+
i0.ɵɵelementStart(0, "app-menu-toggle", 0);
|
|
18
|
+
i0.ɵɵlistener("click", function ExperimentLinkComponent_Template_app_menu_toggle_click_0_listener() { return ctx.goToExperiment(); });
|
|
19
|
+
i0.ɵɵelementEnd();
|
|
20
|
+
} }, dependencies: [i1.MenuToggleComponent] });
|
|
21
|
+
}
|
|
22
|
+
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(ExperimentLinkComponent, [{
|
|
23
|
+
type: Component,
|
|
24
|
+
args: [{ selector: 'app-experiment-link', template: "<app-menu-toggle\n tooltip=\"See full event display\"\n icon=\"link\"\n (click)=\"goToExperiment()\"\n></app-menu-toggle>\n" }]
|
|
25
|
+
}], null, null); })();
|
|
26
|
+
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(ExperimentLinkComponent, { className: "ExperimentLinkComponent", filePath: "components/embed-menu/experiment-link/experiment-link.component.ts", lineNumber: 8 }); })();
|
|
27
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXhwZXJpbWVudC1saW5rLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL2xpYi9jb21wb25lbnRzL2VtYmVkLW1lbnUvZXhwZXJpbWVudC1saW5rL2V4cGVyaW1lbnQtbGluay5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi9saWIvY29tcG9uZW50cy9lbWJlZC1tZW51L2V4cGVyaW1lbnQtbGluay9leHBlcmltZW50LWxpbmsuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBVSxNQUFNLGVBQWUsQ0FBQzs7O0FBT2xELE1BQU0sT0FBTyx1QkFBdUI7SUFDMUIsY0FBYyxDQUFTO0lBRS9CLFFBQVE7UUFDTiw2REFBNkQ7UUFDN0QsTUFBTSxHQUFHLEdBQUcsSUFBSSxHQUFHLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUMxQyxHQUFHLENBQUMsWUFBWSxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUNqQyxJQUFJLENBQUMsY0FBYyxHQUFHLEdBQUcsQ0FBQyxRQUFRLEVBQUUsQ0FBQztJQUN2QyxDQUFDO0lBRUQsY0FBYztRQUNaLE1BQU0sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLGNBQWMsRUFBRSxRQUFRLENBQUMsQ0FBQztJQUM3QyxDQUFDO2lGQVpVLHVCQUF1Qjs2REFBdkIsdUJBQXVCO1lDUHBDLDBDQUlDO1lBREMsNkdBQVMsb0JBQWdCLElBQUM7WUFDM0IsaUJBQWtCOzs7aUZER04sdUJBQXVCO2NBTG5DLFNBQVM7MkJBQ0UscUJBQXFCOztrRkFJcEIsdUJBQXVCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBPbkluaXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnYXBwLWV4cGVyaW1lbnQtbGluaycsXG4gIHRlbXBsYXRlVXJsOiAnLi9leHBlcmltZW50LWxpbmsuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9leHBlcmltZW50LWxpbmsuY29tcG9uZW50LnNjc3MnXSxcbn0pXG5leHBvcnQgY2xhc3MgRXhwZXJpbWVudExpbmtDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQge1xuICBwcml2YXRlIGV4cGVyaW1lbnRMaW5rOiBzdHJpbmc7XG5cbiAgbmdPbkluaXQoKSB7XG4gICAgLy8gd2UganVzdCB3YW50IHRvIHJlbW92ZSB0aGUgXCImZW1iZWQ9dHJ1ZVwiIGluc3RydWN0aW9uIGhlcmUuXG4gICAgY29uc3QgdXJsID0gbmV3IFVSTCh3aW5kb3cubG9jYXRpb24uaHJlZik7XG4gICAgdXJsLnNlYXJjaFBhcmFtcy5kZWxldGUoJ2VtYmVkJyk7XG4gICAgdGhpcy5leHBlcmltZW50TGluayA9IHVybC50b1N0cmluZygpO1xuICB9XG5cbiAgZ29Ub0V4cGVyaW1lbnQoKSB7XG4gICAgd2luZG93Lm9wZW4odGhpcy5leHBlcmltZW50TGluaywgJ19ibGFuaycpO1xuICB9XG59XG4iLCI8YXBwLW1lbnUtdG9nZ2xlXG4gIHRvb2x0aXA9XCJTZWUgZnVsbCBldmVudCBkaXNwbGF5XCJcbiAgaWNvbj1cImxpbmtcIlxuICAoY2xpY2spPVwiZ29Ub0V4cGVyaW1lbnQoKVwiXG4+PC9hcHAtbWVudS10b2dnbGU+XG4iXX0=
|
|
@@ -0,0 +1,109 @@
|
|
|
1
|
+
import { Component, EventEmitter, Input, Output, } from '@angular/core';
|
|
2
|
+
import { NestedTreeControl } from '@angular/cdk/tree';
|
|
3
|
+
import { MatTreeNestedDataSource } from '@angular/material/tree';
|
|
4
|
+
import * as i0 from "@angular/core";
|
|
5
|
+
import * as i1 from "@angular/material/button";
|
|
6
|
+
import * as i2 from "@angular/cdk/tree";
|
|
7
|
+
function FileExplorerComponent_cdk_tree_node_1_Template(rf, ctx) { if (rf & 1) {
|
|
8
|
+
const _r1 = i0.ɵɵgetCurrentView();
|
|
9
|
+
i0.ɵɵelementStart(0, "cdk-tree-node", 3)(1, "button", 4);
|
|
10
|
+
i0.ɵɵlistener("click", function FileExplorerComponent_cdk_tree_node_1_Template_button_click_1_listener() { const node_r2 = i0.ɵɵrestoreView(_r1).$implicit; const ctx_r2 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r2.onSelect(node_r2.url, node_r2.nocache)); });
|
|
11
|
+
i0.ɵɵnamespaceSVG();
|
|
12
|
+
i0.ɵɵelementStart(2, "svg", 5);
|
|
13
|
+
i0.ɵɵelement(3, "use", 6);
|
|
14
|
+
i0.ɵɵelementEnd();
|
|
15
|
+
i0.ɵɵtext(4);
|
|
16
|
+
i0.ɵɵelementEnd()();
|
|
17
|
+
} if (rf & 2) {
|
|
18
|
+
const node_r2 = ctx.$implicit;
|
|
19
|
+
i0.ɵɵadvance(4);
|
|
20
|
+
i0.ɵɵtextInterpolate1(" ", node_r2.name, " ");
|
|
21
|
+
} }
|
|
22
|
+
function FileExplorerComponent_cdk_nested_tree_node_2_Template(rf, ctx) { if (rf & 1) {
|
|
23
|
+
i0.ɵɵelementStart(0, "cdk-nested-tree-node", 3)(1, "button", 7);
|
|
24
|
+
i0.ɵɵnamespaceSVG();
|
|
25
|
+
i0.ɵɵelementStart(2, "svg", 5);
|
|
26
|
+
i0.ɵɵelement(3, "use", 8);
|
|
27
|
+
i0.ɵɵelementEnd();
|
|
28
|
+
i0.ɵɵtext(4);
|
|
29
|
+
i0.ɵɵelementEnd();
|
|
30
|
+
i0.ɵɵnamespaceHTML();
|
|
31
|
+
i0.ɵɵelementStart(5, "div");
|
|
32
|
+
i0.ɵɵelementContainer(6, 9);
|
|
33
|
+
i0.ɵɵelementEnd()();
|
|
34
|
+
} if (rf & 2) {
|
|
35
|
+
const node_r4 = ctx.$implicit;
|
|
36
|
+
const ctx_r2 = i0.ɵɵnextContext();
|
|
37
|
+
i0.ɵɵadvance();
|
|
38
|
+
i0.ɵɵattribute("aria-label", "Toggle " + node_r4.name);
|
|
39
|
+
i0.ɵɵadvance();
|
|
40
|
+
i0.ɵɵclassProp("node-icon-filled", !ctx_r2.treeControl.isExpanded(node_r4));
|
|
41
|
+
i0.ɵɵadvance(2);
|
|
42
|
+
i0.ɵɵtextInterpolate1(" ", node_r4.name, " ");
|
|
43
|
+
i0.ɵɵadvance();
|
|
44
|
+
i0.ɵɵclassProp("file-tree-invisible", !ctx_r2.treeControl.isExpanded(node_r4));
|
|
45
|
+
} }
|
|
46
|
+
export class FileNode {
|
|
47
|
+
name;
|
|
48
|
+
url;
|
|
49
|
+
nocache;
|
|
50
|
+
children;
|
|
51
|
+
constructor(name) {
|
|
52
|
+
this.name = name;
|
|
53
|
+
this.nocache = false;
|
|
54
|
+
}
|
|
55
|
+
}
|
|
56
|
+
export class FileEvent {
|
|
57
|
+
url;
|
|
58
|
+
nocache;
|
|
59
|
+
constructor(url, nocache) {
|
|
60
|
+
this.url = url;
|
|
61
|
+
this.nocache = nocache;
|
|
62
|
+
}
|
|
63
|
+
}
|
|
64
|
+
export class FileExplorerComponent {
|
|
65
|
+
rootFileNode;
|
|
66
|
+
onFileSelect = new EventEmitter();
|
|
67
|
+
treeControl = new NestedTreeControl(this.getSortedChildren.bind(this));
|
|
68
|
+
dataSource = new MatTreeNestedDataSource();
|
|
69
|
+
ngOnChanges(changes) {
|
|
70
|
+
if (changes.rootFileNode?.currentValue) {
|
|
71
|
+
this.dataSource.data = this.getSortedChildren(changes.rootFileNode.currentValue);
|
|
72
|
+
}
|
|
73
|
+
}
|
|
74
|
+
hasChildren = (_, node) => !!node.children && Object.keys(node.children).length > 0;
|
|
75
|
+
onSelect(url, nocache) {
|
|
76
|
+
this.onFileSelect.emit(new FileEvent(url, nocache));
|
|
77
|
+
}
|
|
78
|
+
/**
|
|
79
|
+
* Sort the FileNode's children with folders before files.
|
|
80
|
+
* @param node FileNode whose children are to be sorted.
|
|
81
|
+
* @returns An array of sorted FileNodes.
|
|
82
|
+
*/
|
|
83
|
+
getSortedChildren(node) {
|
|
84
|
+
if (!node.children) {
|
|
85
|
+
return [];
|
|
86
|
+
}
|
|
87
|
+
return Object.values(node.children).sort((a, b) => !a.url && b.url ? -1 : 1);
|
|
88
|
+
}
|
|
89
|
+
static ɵfac = function FileExplorerComponent_Factory(t) { return new (t || FileExplorerComponent)(); };
|
|
90
|
+
static ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: FileExplorerComponent, selectors: [["app-file-explorer"]], inputs: { rootFileNode: "rootFileNode" }, outputs: { onFileSelect: "onFileSelect" }, features: [i0.ɵɵNgOnChangesFeature], decls: 3, vars: 3, consts: [[3, "dataSource", "treeControl"], ["class", "tree-node", 4, "cdkTreeNodeDef"], ["class", "tree-node", 4, "cdkTreeNodeDef", "cdkTreeNodeDefWhen"], [1, "tree-node"], ["mat-button", "", "mat-stroked-button", "", 1, "tree-node-button", 3, "click"], [1, "node-icon"], ["href", "assets/icons/file.svg#file"], ["mat-button", "", "cdkTreeNodeToggle", "", 1, "tree-node-button"], ["href", "assets/icons/folder.svg#folder"], ["cdkTreeNodeOutlet", ""]], template: function FileExplorerComponent_Template(rf, ctx) { if (rf & 1) {
|
|
91
|
+
i0.ɵɵelementStart(0, "cdk-tree", 0);
|
|
92
|
+
i0.ɵɵtemplate(1, FileExplorerComponent_cdk_tree_node_1_Template, 5, 1, "cdk-tree-node", 1)(2, FileExplorerComponent_cdk_nested_tree_node_2_Template, 7, 6, "cdk-nested-tree-node", 2);
|
|
93
|
+
i0.ɵɵelementEnd();
|
|
94
|
+
} if (rf & 2) {
|
|
95
|
+
i0.ɵɵproperty("dataSource", ctx.dataSource)("treeControl", ctx.treeControl);
|
|
96
|
+
i0.ɵɵadvance(2);
|
|
97
|
+
i0.ɵɵproperty("cdkTreeNodeDefWhen", ctx.hasChildren);
|
|
98
|
+
} }, dependencies: [i1.MatButton, i2.CdkNestedTreeNode, i2.CdkTreeNodeDef, i2.CdkTreeNodeToggle, i2.CdkTree, i2.CdkTreeNode, i2.CdkTreeNodeOutlet], styles: [".file-tree-invisible[_ngcontent-%COMP%]{display:none}.tree-node[_ngcontent-%COMP%]{display:block;margin:.25rem 0}.tree-node[_ngcontent-%COMP%] .tree-node[_ngcontent-%COMP%]{padding-left:1rem}.tree-node-button[_ngcontent-%COMP%]{outline:none;padding:0 .75rem}.node-icon[_ngcontent-%COMP%]{width:1rem;height:1rem;margin-right:.25rem;margin-top:-2px}.node-icon.node-icon-filled[_ngcontent-%COMP%]{--icon-fill: var(--phoenix-options-icon-path, #fff)}"] });
|
|
99
|
+
}
|
|
100
|
+
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(FileExplorerComponent, [{
|
|
101
|
+
type: Component,
|
|
102
|
+
args: [{ selector: 'app-file-explorer', template: "<cdk-tree [dataSource]=\"dataSource\" [treeControl]=\"treeControl\">\n <!-- This is the tree node template for leaf nodes -->\n <cdk-tree-node *cdkTreeNodeDef=\"let node\" class=\"tree-node\">\n <button\n mat-button\n mat-stroked-button\n class=\"tree-node-button\"\n (click)=\"onSelect(node.url, node.nocache)\"\n >\n <svg class=\"node-icon\">\n <use href=\"assets/icons/file.svg#file\"></use>\n </svg>\n {{ node.name }}\n </button>\n </cdk-tree-node>\n <!-- This is the tree node template for expandable nodes -->\n <cdk-nested-tree-node\n *cdkTreeNodeDef=\"let node; when: hasChildren\"\n class=\"tree-node\"\n >\n <button\n mat-button\n cdkTreeNodeToggle\n class=\"tree-node-button\"\n [attr.aria-label]=\"'Toggle ' + node.name\"\n >\n <svg\n class=\"node-icon\"\n [class.node-icon-filled]=\"!treeControl.isExpanded(node)\"\n >\n <use href=\"assets/icons/folder.svg#folder\"></use>\n </svg>\n {{ node.name }}\n </button>\n <div [class.file-tree-invisible]=\"!treeControl.isExpanded(node)\">\n <ng-container cdkTreeNodeOutlet></ng-container>\n </div>\n </cdk-nested-tree-node>\n</cdk-tree>\n", styles: [".file-tree-invisible{display:none}.tree-node{display:block;margin:.25rem 0}.tree-node .tree-node{padding-left:1rem}.tree-node-button{outline:none;padding:0 .75rem}.node-icon{width:1rem;height:1rem;margin-right:.25rem;margin-top:-2px}.node-icon.node-icon-filled{--icon-fill: var(--phoenix-options-icon-path, #fff)}\n"] }]
|
|
103
|
+
}], null, { rootFileNode: [{
|
|
104
|
+
type: Input
|
|
105
|
+
}], onFileSelect: [{
|
|
106
|
+
type: Output
|
|
107
|
+
}] }); })();
|
|
108
|
+
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(FileExplorerComponent, { className: "FileExplorerComponent", filePath: "components/file-explorer/file-explorer.component.ts", lineNumber: 37 }); })();
|
|
109
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmlsZS1leHBsb3Jlci5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9saWIvY29tcG9uZW50cy9maWxlLWV4cGxvcmVyL2ZpbGUtZXhwbG9yZXIuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vbGliL2NvbXBvbmVudHMvZmlsZS1leHBsb3Jlci9maWxlLWV4cGxvcmVyLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDTCxTQUFTLEVBQ1QsWUFBWSxFQUNaLEtBQUssRUFFTCxNQUFNLEdBRVAsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFDdEQsT0FBTyxFQUFFLHVCQUF1QixFQUFFLE1BQU0sd0JBQXdCLENBQUM7Ozs7OztJQ043RCxBQURGLHdDQUE0RCxnQkFNekQ7SUFEQyxxTkFBUyw2Q0FBZ0MsS0FBQzs7SUFFMUMsOEJBQXVCO0lBQ3JCLHlCQUE2QztJQUMvQyxpQkFBTTtJQUNOLFlBQ0Y7SUFDRixBQURFLGlCQUFTLEVBQ0s7OztJQUZaLGVBQ0Y7SUFERSw2Q0FDRjs7O0lBT0EsQUFKRiwrQ0FHQyxnQkFNRTs7SUFDQyw4QkFHQztJQUNDLHlCQUFpRDtJQUNuRCxpQkFBTTtJQUNOLFlBQ0Y7SUFBQSxpQkFBUzs7SUFDVCwyQkFBaUU7SUFDL0QsMkJBQStDO0lBRW5ELEFBREUsaUJBQU0sRUFDZTs7OztJQWJuQixjQUF5Qzs7SUFJdkMsY0FBd0Q7SUFBeEQsMkVBQXdEO0lBSTFELGVBQ0Y7SUFERSw2Q0FDRjtJQUNLLGNBQTJEO0lBQTNELDhFQUEyRDs7QUR2QnBFLE1BQU0sT0FBTyxRQUFRO0lBQ25CLElBQUksQ0FBUztJQUNiLEdBQUcsQ0FBUztJQUNaLE9BQU8sQ0FBVTtJQUNqQixRQUFRLENBQThCO0lBRXRDLFlBQVksSUFBYTtRQUN2QixJQUFJLENBQUMsSUFBSSxHQUFHLElBQUksQ0FBQztRQUNqQixJQUFJLENBQUMsT0FBTyxHQUFHLEtBQUssQ0FBQztJQUN2QixDQUFDO0NBQ0Y7QUFDRCxNQUFNLE9BQU8sU0FBUztJQUNwQixHQUFHLENBQVM7SUFDWixPQUFPLENBQVU7SUFDakIsWUFBWSxHQUFXLEVBQUUsT0FBZ0I7UUFDdkMsSUFBSSxDQUFDLEdBQUcsR0FBRyxHQUFHLENBQUM7UUFDZixJQUFJLENBQUMsT0FBTyxHQUFHLE9BQU8sQ0FBQztJQUN6QixDQUFDO0NBQ0Y7QUFPRCxNQUFNLE9BQU8scUJBQXFCO0lBQ3ZCLFlBQVksQ0FBVztJQUN0QixZQUFZLEdBQ3BCLElBQUksWUFBWSxFQUFhLENBQUM7SUFFaEMsV0FBVyxHQUFHLElBQUksaUJBQWlCLENBQ2pDLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQ2xDLENBQUM7SUFDRixVQUFVLEdBQUcsSUFBSSx1QkFBdUIsRUFBWSxDQUFDO0lBRXJELFdBQVcsQ0FBQyxPQUFzQjtRQUNoQyxJQUFJLE9BQU8sQ0FBQyxZQUFZLEVBQUUsWUFBWSxFQUFFLENBQUM7WUFDdkMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLEdBQUcsSUFBSSxDQUFDLGlCQUFpQixDQUMzQyxPQUFPLENBQUMsWUFBWSxDQUFDLFlBQVksQ0FDbEMsQ0FBQztRQUNKLENBQUM7SUFDSCxDQUFDO0lBRUQsV0FBVyxHQUFHLENBQUMsQ0FBUyxFQUFFLElBQWMsRUFBRSxFQUFFLENBQzFDLENBQUMsQ0FBQyxJQUFJLENBQUMsUUFBUSxJQUFJLE1BQU0sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUM7SUFFM0QsUUFBUSxDQUFDLEdBQVcsRUFBRSxPQUFnQjtRQUNwQyxJQUFJLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxJQUFJLFNBQVMsQ0FBQyxHQUFHLEVBQUUsT0FBTyxDQUFDLENBQUMsQ0FBQztJQUN0RCxDQUFDO0lBRUQ7Ozs7T0FJRztJQUNILGlCQUFpQixDQUFDLElBQWM7UUFDOUIsSUFBSSxDQUFDLElBQUksQ0FBQyxRQUFRLEVBQUUsQ0FBQztZQUNuQixPQUFPLEVBQUUsQ0FBQztRQUNaLENBQUM7UUFFRCxPQUFPLE1BQU0sQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUNoRCxDQUFDLENBQUMsQ0FBQyxHQUFHLElBQUksQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FDekIsQ0FBQztJQUNKLENBQUM7K0VBdENVLHFCQUFxQjs2REFBckIscUJBQXFCO1lDcENsQyxtQ0FBZ0U7WUFnQjlELEFBZEEsMEZBQTRELDJGQWlCM0Q7WUFtQkgsaUJBQVc7O1lBdEN5QixBQUExQiwyQ0FBeUIsZ0NBQTRCO1lBaUJoQyxlQUFpQjtZQUFqQixvREFBaUI7OztpRkRtQm5DLHFCQUFxQjtjQUxqQyxTQUFTOzJCQUNFLG1CQUFtQjtnQkFLcEIsWUFBWTtrQkFBcEIsS0FBSztZQUNJLFlBQVk7a0JBQXJCLE1BQU07O2tGQUZJLHFCQUFxQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIENvbXBvbmVudCxcbiAgRXZlbnRFbWl0dGVyLFxuICBJbnB1dCxcbiAgT25DaGFuZ2VzLFxuICBPdXRwdXQsXG4gIFNpbXBsZUNoYW5nZXMsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgTmVzdGVkVHJlZUNvbnRyb2wgfSBmcm9tICdAYW5ndWxhci9jZGsvdHJlZSc7XG5pbXBvcnQgeyBNYXRUcmVlTmVzdGVkRGF0YVNvdXJjZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL3RyZWUnO1xuXG5leHBvcnQgY2xhc3MgRmlsZU5vZGUge1xuICBuYW1lOiBzdHJpbmc7XG4gIHVybDogc3RyaW5nO1xuICBub2NhY2hlOiBib29sZWFuO1xuICBjaGlsZHJlbjogeyBba2V5OiBzdHJpbmddOiBGaWxlTm9kZSB9O1xuXG4gIGNvbnN0cnVjdG9yKG5hbWU/OiBzdHJpbmcpIHtcbiAgICB0aGlzLm5hbWUgPSBuYW1lO1xuICAgIHRoaXMubm9jYWNoZSA9IGZhbHNlO1xuICB9XG59XG5leHBvcnQgY2xhc3MgRmlsZUV2ZW50IHtcbiAgdXJsOiBzdHJpbmc7XG4gIG5vY2FjaGU6IGJvb2xlYW47XG4gIGNvbnN0cnVjdG9yKHVybDogc3RyaW5nLCBub2NhY2hlOiBib29sZWFuKSB7XG4gICAgdGhpcy51cmwgPSB1cmw7XG4gICAgdGhpcy5ub2NhY2hlID0gbm9jYWNoZTtcbiAgfVxufVxuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdhcHAtZmlsZS1leHBsb3JlcicsXG4gIHRlbXBsYXRlVXJsOiAnLi9maWxlLWV4cGxvcmVyLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vZmlsZS1leHBsb3Jlci5jb21wb25lbnQuc2NzcyddLFxufSlcbmV4cG9ydCBjbGFzcyBGaWxlRXhwbG9yZXJDb21wb25lbnQgaW1wbGVtZW50cyBPbkNoYW5nZXMge1xuICBASW5wdXQoKSByb290RmlsZU5vZGU6IEZpbGVOb2RlO1xuICBAT3V0cHV0KCkgb25GaWxlU2VsZWN0OiBFdmVudEVtaXR0ZXI8RmlsZUV2ZW50PiA9XG4gICAgbmV3IEV2ZW50RW1pdHRlcjxGaWxlRXZlbnQ+KCk7XG5cbiAgdHJlZUNvbnRyb2wgPSBuZXcgTmVzdGVkVHJlZUNvbnRyb2w8RmlsZU5vZGU+KFxuICAgIHRoaXMuZ2V0U29ydGVkQ2hpbGRyZW4uYmluZCh0aGlzKSxcbiAgKTtcbiAgZGF0YVNvdXJjZSA9IG5ldyBNYXRUcmVlTmVzdGVkRGF0YVNvdXJjZTxGaWxlTm9kZT4oKTtcblxuICBuZ09uQ2hhbmdlcyhjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKSB7XG4gICAgaWYgKGNoYW5nZXMucm9vdEZpbGVOb2RlPy5jdXJyZW50VmFsdWUpIHtcbiAgICAgIHRoaXMuZGF0YVNvdXJjZS5kYXRhID0gdGhpcy5nZXRTb3J0ZWRDaGlsZHJlbihcbiAgICAgICAgY2hhbmdlcy5yb290RmlsZU5vZGUuY3VycmVudFZhbHVlLFxuICAgICAgKTtcbiAgICB9XG4gIH1cblxuICBoYXNDaGlsZHJlbiA9IChfOiBudW1iZXIsIG5vZGU6IEZpbGVOb2RlKSA9PlxuICAgICEhbm9kZS5jaGlsZHJlbiAmJiBPYmplY3Qua2V5cyhub2RlLmNoaWxkcmVuKS5sZW5ndGggPiAwO1xuXG4gIG9uU2VsZWN0KHVybDogc3RyaW5nLCBub2NhY2hlOiBib29sZWFuKSB7XG4gICAgdGhpcy5vbkZpbGVTZWxlY3QuZW1pdChuZXcgRmlsZUV2ZW50KHVybCwgbm9jYWNoZSkpO1xuICB9XG5cbiAgLyoqXG4gICAqIFNvcnQgdGhlIEZpbGVOb2RlJ3MgY2hpbGRyZW4gd2l0aCBmb2xkZXJzIGJlZm9yZSBmaWxlcy5cbiAgICogQHBhcmFtIG5vZGUgRmlsZU5vZGUgd2hvc2UgY2hpbGRyZW4gYXJlIHRvIGJlIHNvcnRlZC5cbiAgICogQHJldHVybnMgQW4gYXJyYXkgb2Ygc29ydGVkIEZpbGVOb2Rlcy5cbiAgICovXG4gIGdldFNvcnRlZENoaWxkcmVuKG5vZGU6IEZpbGVOb2RlKTogRmlsZU5vZGVbXSB7XG4gICAgaWYgKCFub2RlLmNoaWxkcmVuKSB7XG4gICAgICByZXR1cm4gW107XG4gICAgfVxuXG4gICAgcmV0dXJuIE9iamVjdC52YWx1ZXMobm9kZS5jaGlsZHJlbikuc29ydCgoYSwgYikgPT5cbiAgICAgICFhLnVybCAmJiBiLnVybCA/IC0xIDogMSxcbiAgICApO1xuICB9XG59XG4iLCI8Y2RrLXRyZWUgW2RhdGFTb3VyY2VdPVwiZGF0YVNvdXJjZVwiIFt0cmVlQ29udHJvbF09XCJ0cmVlQ29udHJvbFwiPlxuICA8IS0tIFRoaXMgaXMgdGhlIHRyZWUgbm9kZSB0ZW1wbGF0ZSBmb3IgbGVhZiBub2RlcyAtLT5cbiAgPGNkay10cmVlLW5vZGUgKmNka1RyZWVOb2RlRGVmPVwibGV0IG5vZGVcIiBjbGFzcz1cInRyZWUtbm9kZVwiPlxuICAgIDxidXR0b25cbiAgICAgIG1hdC1idXR0b25cbiAgICAgIG1hdC1zdHJva2VkLWJ1dHRvblxuICAgICAgY2xhc3M9XCJ0cmVlLW5vZGUtYnV0dG9uXCJcbiAgICAgIChjbGljayk9XCJvblNlbGVjdChub2RlLnVybCwgbm9kZS5ub2NhY2hlKVwiXG4gICAgPlxuICAgICAgPHN2ZyBjbGFzcz1cIm5vZGUtaWNvblwiPlxuICAgICAgICA8dXNlIGhyZWY9XCJhc3NldHMvaWNvbnMvZmlsZS5zdmcjZmlsZVwiPjwvdXNlPlxuICAgICAgPC9zdmc+XG4gICAgICB7eyBub2RlLm5hbWUgfX1cbiAgICA8L2J1dHRvbj5cbiAgPC9jZGstdHJlZS1ub2RlPlxuICA8IS0tIFRoaXMgaXMgdGhlIHRyZWUgbm9kZSB0ZW1wbGF0ZSBmb3IgZXhwYW5kYWJsZSBub2RlcyAtLT5cbiAgPGNkay1uZXN0ZWQtdHJlZS1ub2RlXG4gICAgKmNka1RyZWVOb2RlRGVmPVwibGV0IG5vZGU7IHdoZW46IGhhc0NoaWxkcmVuXCJcbiAgICBjbGFzcz1cInRyZWUtbm9kZVwiXG4gID5cbiAgICA8YnV0dG9uXG4gICAgICBtYXQtYnV0dG9uXG4gICAgICBjZGtUcmVlTm9kZVRvZ2dsZVxuICAgICAgY2xhc3M9XCJ0cmVlLW5vZGUtYnV0dG9uXCJcbiAgICAgIFthdHRyLmFyaWEtbGFiZWxdPVwiJ1RvZ2dsZSAnICsgbm9kZS5uYW1lXCJcbiAgICA+XG4gICAgICA8c3ZnXG4gICAgICAgIGNsYXNzPVwibm9kZS1pY29uXCJcbiAgICAgICAgW2NsYXNzLm5vZGUtaWNvbi1maWxsZWRdPVwiIXRyZWVDb250cm9sLmlzRXhwYW5kZWQobm9kZSlcIlxuICAgICAgPlxuICAgICAgICA8dXNlIGhyZWY9XCJhc3NldHMvaWNvbnMvZm9sZGVyLnN2ZyNmb2xkZXJcIj48L3VzZT5cbiAgICAgIDwvc3ZnPlxuICAgICAge3sgbm9kZS5uYW1lIH19XG4gICAgPC9idXR0b24+XG4gICAgPGRpdiBbY2xhc3MuZmlsZS10cmVlLWludmlzaWJsZV09XCIhdHJlZUNvbnRyb2wuaXNFeHBhbmRlZChub2RlKVwiPlxuICAgICAgPG5nLWNvbnRhaW5lciBjZGtUcmVlTm9kZU91dGxldD48L25nLWNvbnRhaW5lcj5cbiAgICA8L2Rpdj5cbiAgPC9jZGstbmVzdGVkLXRyZWUtbm9kZT5cbjwvY2RrLXRyZWU+XG4iXX0=
|
|
@@ -0,0 +1,71 @@
|
|
|
1
|
+
import { Component, Input } from '@angular/core';
|
|
2
|
+
import * as i0 from "@angular/core";
|
|
3
|
+
import * as i1 from "../../services/error-message-service";
|
|
4
|
+
import * as i2 from "@angular/common";
|
|
5
|
+
const _c0 = a0 => ({ "load-complete": a0 });
|
|
6
|
+
const _c1 = a0 => ({ width: a0 });
|
|
7
|
+
function LoaderComponent_ng_container_1_div_7_Template(rf, ctx) { if (rf & 1) {
|
|
8
|
+
i0.ɵɵelementStart(0, "div", 7);
|
|
9
|
+
i0.ɵɵelement(1, "span");
|
|
10
|
+
i0.ɵɵelementEnd();
|
|
11
|
+
} if (rf & 2) {
|
|
12
|
+
const ctx_r0 = i0.ɵɵnextContext(2);
|
|
13
|
+
i0.ɵɵadvance();
|
|
14
|
+
i0.ɵɵstyleMap(i0.ɵɵpureFunction1(2, _c1, ctx_r0.progress + "%"));
|
|
15
|
+
} }
|
|
16
|
+
function LoaderComponent_ng_container_1_Template(rf, ctx) { if (rf & 1) {
|
|
17
|
+
i0.ɵɵelementContainerStart(0);
|
|
18
|
+
i0.ɵɵelement(1, "img", 3);
|
|
19
|
+
i0.ɵɵelementStart(2, "p", 4);
|
|
20
|
+
i0.ɵɵtext(3, " Loading...");
|
|
21
|
+
i0.ɵɵelement(4, "br");
|
|
22
|
+
i0.ɵɵelementStart(5, "small", 5);
|
|
23
|
+
i0.ɵɵtext(6, "(This may take a while)");
|
|
24
|
+
i0.ɵɵelementEnd()();
|
|
25
|
+
i0.ɵɵtemplate(7, LoaderComponent_ng_container_1_div_7_Template, 2, 4, "div", 6);
|
|
26
|
+
i0.ɵɵelementContainerEnd();
|
|
27
|
+
} if (rf & 2) {
|
|
28
|
+
const ctx_r0 = i0.ɵɵnextContext();
|
|
29
|
+
i0.ɵɵadvance(7);
|
|
30
|
+
i0.ɵɵproperty("ngIf", ctx_r0.progress !== undefined);
|
|
31
|
+
} }
|
|
32
|
+
function LoaderComponent_ng_template_2_Template(rf, ctx) { if (rf & 1) {
|
|
33
|
+
i0.ɵɵelementStart(0, "p");
|
|
34
|
+
i0.ɵɵtext(1, " An error occurred while loading the application. Please try refreshing the page. ");
|
|
35
|
+
i0.ɵɵelementEnd();
|
|
36
|
+
} }
|
|
37
|
+
export class LoaderComponent {
|
|
38
|
+
errorMessageService;
|
|
39
|
+
loaded = false;
|
|
40
|
+
progress;
|
|
41
|
+
error;
|
|
42
|
+
constructor(errorMessageService) {
|
|
43
|
+
this.errorMessageService = errorMessageService;
|
|
44
|
+
this.errorMessageService.subscribeToError((error) => {
|
|
45
|
+
if (!this.loaded) {
|
|
46
|
+
this.error = error;
|
|
47
|
+
}
|
|
48
|
+
});
|
|
49
|
+
}
|
|
50
|
+
static ɵfac = function LoaderComponent_Factory(t) { return new (t || LoaderComponent)(i0.ɵɵdirectiveInject(i1.ErrorMessageService)); };
|
|
51
|
+
static ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: LoaderComponent, selectors: [["app-loader"]], inputs: { loaded: "loaded", progress: "progress" }, decls: 4, vars: 5, consts: [["errorContainer", ""], [1, "loader-wrapper", "d-flex", "position-absolute", "flex-column", "justify-content-center", "align-items-center", "w-100", "h-100", "p-5", "text-center", 3, "ngClass"], [4, "ngIf", "ngIfElse"], ["src", "assets/images/logo-small.svg", "alt", "Loader"], [1, "mt-5"], [1, "text-muted"], ["class", "loading-bar", 4, "ngIf"], [1, "loading-bar"]], template: function LoaderComponent_Template(rf, ctx) { if (rf & 1) {
|
|
52
|
+
i0.ɵɵelementStart(0, "div", 1);
|
|
53
|
+
i0.ɵɵtemplate(1, LoaderComponent_ng_container_1_Template, 8, 1, "ng-container", 2)(2, LoaderComponent_ng_template_2_Template, 2, 0, "ng-template", null, 0, i0.ɵɵtemplateRefExtractor);
|
|
54
|
+
i0.ɵɵelementEnd();
|
|
55
|
+
} if (rf & 2) {
|
|
56
|
+
const errorContainer_r2 = i0.ɵɵreference(3);
|
|
57
|
+
i0.ɵɵproperty("ngClass", i0.ɵɵpureFunction1(3, _c0, ctx.loaded));
|
|
58
|
+
i0.ɵɵadvance();
|
|
59
|
+
i0.ɵɵproperty("ngIf", ctx.error === undefined)("ngIfElse", errorContainer_r2);
|
|
60
|
+
} }, dependencies: [i2.NgClass, i2.NgIf], styles: [".loader-wrapper[_ngcontent-%COMP%]{background:var(--phoenix-background-color);z-index:9998}.loader-wrapper.load-complete[_ngcontent-%COMP%]{display:none!important}.loader-wrapper[_ngcontent-%COMP%] img[_ngcontent-%COMP%]{width:5rem;height:5rem;animation:loader 2s infinite}.loader-wrapper[_ngcontent-%COMP%] p[_ngcontent-%COMP%]{color:var(--phoenix-text-color)}.loader-wrapper[_ngcontent-%COMP%] .loading-bar[_ngcontent-%COMP%]{width:15rem;max-width:90%;height:.5rem;background:var(--phoenix-background-color-tertiary);border-radius:2.5rem;overflow:hidden}.loader-wrapper[_ngcontent-%COMP%] .loading-bar[_ngcontent-%COMP%] span[_ngcontent-%COMP%]{display:block;height:100%;border-radius:2.5rem;background:linear-gradient(to right,var(--phoenix-primary),var(--phoenix-secondary));transition:all .5s}@keyframes _ngcontent-%COMP%_app-loader_loader{0%,to{transform:scale(.1) rotate(0)}95%{transform:scale(1) rotate(15deg)}}"] });
|
|
61
|
+
}
|
|
62
|
+
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(LoaderComponent, [{
|
|
63
|
+
type: Component,
|
|
64
|
+
args: [{ selector: 'app-loader', template: "<div\n class=\"loader-wrapper d-flex position-absolute flex-column justify-content-center align-items-center w-100 h-100 p-5 text-center\"\n [ngClass]=\"{ 'load-complete': loaded }\"\n>\n <ng-container *ngIf=\"error === undefined; else errorContainer\">\n <img src=\"assets/images/logo-small.svg\" alt=\"Loader\" />\n <p class=\"mt-5\">\n Loading...<br />\n <small class=\"text-muted\">(This may take a while)</small>\n </p>\n <div class=\"loading-bar\" *ngIf=\"progress !== undefined\">\n <span [style]=\"{ width: progress + '%' }\"></span>\n </div>\n </ng-container>\n <ng-template #errorContainer>\n <p>\n An error occurred while loading the application. Please try refreshing the\n page.\n </p>\n </ng-template>\n</div>\n", styles: [".loader-wrapper{background:var(--phoenix-background-color);z-index:9998}.loader-wrapper.load-complete{display:none!important}.loader-wrapper img{width:5rem;height:5rem;animation:loader 2s infinite}.loader-wrapper p{color:var(--phoenix-text-color)}.loader-wrapper .loading-bar{width:15rem;max-width:90%;height:.5rem;background:var(--phoenix-background-color-tertiary);border-radius:2.5rem;overflow:hidden}.loader-wrapper .loading-bar span{display:block;height:100%;border-radius:2.5rem;background:linear-gradient(to right,var(--phoenix-primary),var(--phoenix-secondary));transition:all .5s}@keyframes app-loader_loader{0%,to{transform:scale(.1) rotate(0)}95%{transform:scale(1) rotate(15deg)}}\n"] }]
|
|
65
|
+
}], () => [{ type: i1.ErrorMessageService }], { loaded: [{
|
|
66
|
+
type: Input
|
|
67
|
+
}], progress: [{
|
|
68
|
+
type: Input
|
|
69
|
+
}] }); })();
|
|
70
|
+
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(LoaderComponent, { className: "LoaderComponent", filePath: "components/loader/loader.component.ts", lineNumber: 9 }); })();
|
|
71
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibG9hZGVyLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL2xpYi9jb21wb25lbnRzL2xvYWRlci9sb2FkZXIuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vbGliL2NvbXBvbmVudHMvbG9hZGVyL2xvYWRlci5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBRSxNQUFNLGVBQWUsQ0FBQzs7Ozs7OztJQ1U3Qyw4QkFBd0Q7SUFDdEQsdUJBQWlEO0lBQ25ELGlCQUFNOzs7SUFERSxjQUFtQztJQUFuQyxnRUFBbUM7OztJQVA3Qyw2QkFBK0Q7SUFDN0QseUJBQXVEO0lBQ3ZELDRCQUFnQjtJQUNkLDJCQUFVO0lBQUEscUJBQU07SUFDaEIsZ0NBQTBCO0lBQUEsdUNBQXVCO0lBQ25ELEFBRG1ELGlCQUFRLEVBQ3ZEO0lBQ0osK0VBQXdEOzs7O0lBQTlCLGVBQTRCO0lBQTVCLG9EQUE0Qjs7O0lBS3RELHlCQUFHO0lBQ0Qsa0dBRUY7SUFBQSxpQkFBSTs7QURWUixNQUFNLE9BQU8sZUFBZTtJQUtOO0lBSlgsTUFBTSxHQUFHLEtBQUssQ0FBQztJQUNmLFFBQVEsQ0FBUztJQUNuQixLQUFLLENBQVE7SUFFcEIsWUFBb0IsbUJBQXdDO1FBQXhDLHdCQUFtQixHQUFuQixtQkFBbUIsQ0FBcUI7UUFDMUQsSUFBSSxDQUFDLG1CQUFtQixDQUFDLGdCQUFnQixDQUFDLENBQUMsS0FBSyxFQUFFLEVBQUU7WUFDbEQsSUFBSSxDQUFDLElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQztnQkFDakIsSUFBSSxDQUFDLEtBQUssR0FBRyxLQUFLLENBQUM7WUFDckIsQ0FBQztRQUNILENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQzt5RUFYVSxlQUFlOzZEQUFmLGVBQWU7WUNSNUIsOEJBR0M7WUFXQyxBQVZBLGtGQUErRCxvR0FVbEM7WUFNL0IsaUJBQU07OztZQWxCSixnRUFBdUM7WUFFeEIsY0FBMkI7WUFBQSxBQUEzQiw4Q0FBMkIsK0JBQW1COzs7aUZESWxELGVBQWU7Y0FMM0IsU0FBUzsyQkFDRSxZQUFZO29EQUtiLE1BQU07a0JBQWQsS0FBSztZQUNHLFFBQVE7a0JBQWhCLEtBQUs7O2tGQUZLLGVBQWUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIElucHV0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBFcnJvck1lc3NhZ2VTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvZXJyb3ItbWVzc2FnZS1zZXJ2aWNlJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnYXBwLWxvYWRlcicsXG4gIHRlbXBsYXRlVXJsOiAnLi9sb2FkZXIuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9sb2FkZXIuY29tcG9uZW50LnNjc3MnXSxcbn0pXG5leHBvcnQgY2xhc3MgTG9hZGVyQ29tcG9uZW50IHtcbiAgQElucHV0KCkgbG9hZGVkID0gZmFsc2U7XG4gIEBJbnB1dCgpIHByb2dyZXNzOiBudW1iZXI7XG4gIHB1YmxpYyBlcnJvcjogRXJyb3I7XG5cbiAgY29uc3RydWN0b3IocHJpdmF0ZSBlcnJvck1lc3NhZ2VTZXJ2aWNlOiBFcnJvck1lc3NhZ2VTZXJ2aWNlKSB7XG4gICAgdGhpcy5lcnJvck1lc3NhZ2VTZXJ2aWNlLnN1YnNjcmliZVRvRXJyb3IoKGVycm9yKSA9PiB7XG4gICAgICBpZiAoIXRoaXMubG9hZGVkKSB7XG4gICAgICAgIHRoaXMuZXJyb3IgPSBlcnJvcjtcbiAgICAgIH1cbiAgICB9KTtcbiAgfVxufVxuIiwiPGRpdlxuICBjbGFzcz1cImxvYWRlci13cmFwcGVyIGQtZmxleCBwb3NpdGlvbi1hYnNvbHV0ZSBmbGV4LWNvbHVtbiBqdXN0aWZ5LWNvbnRlbnQtY2VudGVyIGFsaWduLWl0ZW1zLWNlbnRlciB3LTEwMCBoLTEwMCBwLTUgdGV4dC1jZW50ZXJcIlxuICBbbmdDbGFzc109XCJ7ICdsb2FkLWNvbXBsZXRlJzogbG9hZGVkIH1cIlxuPlxuICA8bmctY29udGFpbmVyICpuZ0lmPVwiZXJyb3IgPT09IHVuZGVmaW5lZDsgZWxzZSBlcnJvckNvbnRhaW5lclwiPlxuICAgIDxpbWcgc3JjPVwiYXNzZXRzL2ltYWdlcy9sb2dvLXNtYWxsLnN2Z1wiIGFsdD1cIkxvYWRlclwiIC8+XG4gICAgPHAgY2xhc3M9XCJtdC01XCI+XG4gICAgICBMb2FkaW5nLi4uPGJyIC8+XG4gICAgICA8c21hbGwgY2xhc3M9XCJ0ZXh0LW11dGVkXCI+KFRoaXMgbWF5IHRha2UgYSB3aGlsZSk8L3NtYWxsPlxuICAgIDwvcD5cbiAgICA8ZGl2IGNsYXNzPVwibG9hZGluZy1iYXJcIiAqbmdJZj1cInByb2dyZXNzICE9PSB1bmRlZmluZWRcIj5cbiAgICAgIDxzcGFuIFtzdHlsZV09XCJ7IHdpZHRoOiBwcm9ncmVzcyArICclJyB9XCI+PC9zcGFuPlxuICAgIDwvZGl2PlxuICA8L25nLWNvbnRhaW5lcj5cbiAgPG5nLXRlbXBsYXRlICNlcnJvckNvbnRhaW5lcj5cbiAgICA8cD5cbiAgICAgIEFuIGVycm9yIG9jY3VycmVkIHdoaWxlIGxvYWRpbmcgdGhlIGFwcGxpY2F0aW9uLiBQbGVhc2UgdHJ5IHJlZnJlc2hpbmcgdGhlXG4gICAgICBwYWdlLlxuICAgIDwvcD5cbiAgPC9uZy10ZW1wbGF0ZT5cbjwvZGl2PlxuIl19
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import { Component } from '@angular/core';
|
|
2
|
+
import * as i0 from "@angular/core";
|
|
3
|
+
import * as i1 from "@angular/router";
|
|
4
|
+
export class NavComponent {
|
|
5
|
+
constructor() { }
|
|
6
|
+
ngOnInit() { }
|
|
7
|
+
static ɵfac = function NavComponent_Factory(t) { return new (t || NavComponent)(); };
|
|
8
|
+
static ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: NavComponent, selectors: [["app-nav"]], decls: 2, vars: 0, consts: [["id", "mainLogo", "routerLink", "/", 1, "main-logo", "fixed-top", "p-2", "mx-auto", "mt-2"], ["src", "assets/images/logo-text.svg"]], template: function NavComponent_Template(rf, ctx) { if (rf & 1) {
|
|
9
|
+
i0.ɵɵelementStart(0, "a", 0);
|
|
10
|
+
i0.ɵɵelement(1, "img", 1);
|
|
11
|
+
i0.ɵɵelementEnd();
|
|
12
|
+
} }, dependencies: [i1.RouterLink], styles: [".main-logo[_ngcontent-%COMP%]{width:140px;z-index:9999}.main-logo[_ngcontent-%COMP%] img[_ngcontent-%COMP%]{transition:all .5s}.main-logo[_ngcontent-%COMP%]:hover img[_ngcontent-%COMP%]{filter:drop-shadow(0px 0px 10px var(--phoenix-text-color));transition:all .5s}"] });
|
|
13
|
+
}
|
|
14
|
+
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(NavComponent, [{
|
|
15
|
+
type: Component,
|
|
16
|
+
args: [{ selector: 'app-nav', template: "<a id=\"mainLogo\" class=\"main-logo fixed-top p-2 mx-auto mt-2\" routerLink=\"/\">\n <img src=\"assets/images/logo-text.svg\" />\n</a>\n", styles: [".main-logo{width:140px;z-index:9999}.main-logo img{transition:all .5s}.main-logo:hover img{filter:drop-shadow(0px 0px 10px var(--phoenix-text-color));transition:all .5s}\n"] }]
|
|
17
|
+
}], () => [], null); })();
|
|
18
|
+
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(NavComponent, { className: "NavComponent", filePath: "components/nav/nav.component.ts", lineNumber: 8 }); })();
|
|
19
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmF2LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL2xpYi9jb21wb25lbnRzL25hdi9uYXYuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vbGliL2NvbXBvbmVudHMvbmF2L25hdi5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFVLE1BQU0sZUFBZSxDQUFDOzs7QUFPbEQsTUFBTSxPQUFPLFlBQVk7SUFDdkIsZ0JBQWUsQ0FBQztJQUVoQixRQUFRLEtBQUksQ0FBQztzRUFIRixZQUFZOzZEQUFaLFlBQVk7WUNQekIsNEJBQTZFO1lBQzNFLHlCQUF5QztZQUMzQyxpQkFBSTs7O2lGREtTLFlBQVk7Y0FMeEIsU0FBUzsyQkFDRSxTQUFTOztrRkFJUixZQUFZIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBPbkluaXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnYXBwLW5hdicsXG4gIHRlbXBsYXRlVXJsOiAnLi9uYXYuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9uYXYuY29tcG9uZW50LnNjc3MnXSxcbn0pXG5leHBvcnQgY2xhc3MgTmF2Q29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcbiAgY29uc3RydWN0b3IoKSB7fVxuXG4gIG5nT25Jbml0KCkge31cbn1cbiIsIjxhIGlkPVwibWFpbkxvZ29cIiBjbGFzcz1cIm1haW4tbG9nbyBmaXhlZC10b3AgcC0yIG14LWF1dG8gbXQtMlwiIHJvdXRlckxpbms9XCIvXCI+XG4gIDxpbWcgc3JjPVwiYXNzZXRzL2ltYWdlcy9sb2dvLXRleHQuc3ZnXCIgLz5cbjwvYT5cbiJdfQ==
|
|
@@ -0,0 +1,81 @@
|
|
|
1
|
+
import { Component, Input, Output, EventEmitter } from '@angular/core';
|
|
2
|
+
import * as i0 from "@angular/core";
|
|
3
|
+
import * as i1 from "@angular/common";
|
|
4
|
+
import * as i2 from "@angular/material/slider";
|
|
5
|
+
function ConfigSliderComponent_input_3_Template(rf, ctx) { if (rf & 1) {
|
|
6
|
+
const _r1 = i0.ɵɵgetCurrentView();
|
|
7
|
+
i0.ɵɵelementStart(0, "input", 4);
|
|
8
|
+
i0.ɵɵlistener("input", function ConfigSliderComponent_input_3_Template_input_input_0_listener($event) { i0.ɵɵrestoreView(_r1); const ctx_r1 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r1.onValueChange($event.target.value)); });
|
|
9
|
+
i0.ɵɵelementEnd();
|
|
10
|
+
} if (rf & 2) {
|
|
11
|
+
const ctx_r1 = i0.ɵɵnextContext();
|
|
12
|
+
i0.ɵɵproperty("value", ctx_r1.value);
|
|
13
|
+
} }
|
|
14
|
+
export class ConfigSliderComponent {
|
|
15
|
+
value = 0;
|
|
16
|
+
min = 0;
|
|
17
|
+
oldMin = 0;
|
|
18
|
+
max = 100;
|
|
19
|
+
oldMax = 0;
|
|
20
|
+
step = 1;
|
|
21
|
+
allowCustomValue = false;
|
|
22
|
+
onChange = new EventEmitter();
|
|
23
|
+
onValueChange(value) {
|
|
24
|
+
value && this.onChange.emit(value);
|
|
25
|
+
}
|
|
26
|
+
toggleMinCut(change) {
|
|
27
|
+
const value = change.checked;
|
|
28
|
+
if (value) {
|
|
29
|
+
this.min = this.oldMin;
|
|
30
|
+
}
|
|
31
|
+
else {
|
|
32
|
+
this.oldMin = this.min;
|
|
33
|
+
this.min = Number.MIN_SAFE_INTEGER;
|
|
34
|
+
}
|
|
35
|
+
// We should probably disable the min input too, and change text to be infinity symbol or something?
|
|
36
|
+
}
|
|
37
|
+
toggleMaxCut(change) {
|
|
38
|
+
const value = change.checked;
|
|
39
|
+
if (value) {
|
|
40
|
+
this.max = this.oldMax;
|
|
41
|
+
}
|
|
42
|
+
else {
|
|
43
|
+
this.oldMax = this.max;
|
|
44
|
+
this.max = Number.MAX_SAFE_INTEGER;
|
|
45
|
+
}
|
|
46
|
+
// We should probably disable the min input too, and change text to be infinity symbol or something?
|
|
47
|
+
}
|
|
48
|
+
static ɵfac = function ConfigSliderComponent_Factory(t) { return new (t || ConfigSliderComponent)(); };
|
|
49
|
+
static ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: ConfigSliderComponent, selectors: [["app-config-slider"]], inputs: { value: "value", min: "min", max: "max", step: "step", allowCustomValue: "allowCustomValue" }, outputs: { onChange: "onChange" }, decls: 4, vars: 5, consts: [[1, "d-flex", "flex-row", "align-items-center"], ["thumbLabel", "", 1, "mx-2", 3, "min", "max", "step"], ["matSliderThumb", "", 3, "valueChange", "value"], ["class", "config-slider-input", "type", "number", 3, "value", "input", 4, "ngIf"], ["type", "number", 1, "config-slider-input", 3, "input", "value"]], template: function ConfigSliderComponent_Template(rf, ctx) { if (rf & 1) {
|
|
50
|
+
i0.ɵɵelementStart(0, "div", 0)(1, "mat-slider", 1)(2, "input", 2);
|
|
51
|
+
i0.ɵɵlistener("valueChange", function ConfigSliderComponent_Template_input_valueChange_2_listener($event) { return ctx.onValueChange($event); });
|
|
52
|
+
i0.ɵɵelementEnd()();
|
|
53
|
+
i0.ɵɵtemplate(3, ConfigSliderComponent_input_3_Template, 1, 1, "input", 3);
|
|
54
|
+
i0.ɵɵelementEnd();
|
|
55
|
+
} if (rf & 2) {
|
|
56
|
+
i0.ɵɵadvance();
|
|
57
|
+
i0.ɵɵproperty("min", ctx.min)("max", ctx.max)("step", ctx.step);
|
|
58
|
+
i0.ɵɵadvance();
|
|
59
|
+
i0.ɵɵproperty("value", ctx.value);
|
|
60
|
+
i0.ɵɵadvance();
|
|
61
|
+
i0.ɵɵproperty("ngIf", ctx.allowCustomValue);
|
|
62
|
+
} }, dependencies: [i1.NgIf, i2.MatSlider, i2.MatSliderThumb], styles: [".config-slider-input[_ngcontent-%COMP%]{background:transparent;color:var(--phoenix-text-color);border:none;border-bottom:1px solid var(--phoenix-text-color);width:25%;-moz-appearance:textfield}input[_ngcontent-%COMP%]::-webkit-outer-spin-button, input[_ngcontent-%COMP%]::-webkit-inner-spin-button{-webkit-appearance:none}"] });
|
|
63
|
+
}
|
|
64
|
+
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(ConfigSliderComponent, [{
|
|
65
|
+
type: Component,
|
|
66
|
+
args: [{ selector: 'app-config-slider', template: "<div class=\"d-flex flex-row align-items-center\">\n <mat-slider class=\"mx-2\" [min]=\"min\" [max]=\"max\" [step]=\"step\" thumbLabel>\n <input\n matSliderThumb\n [value]=\"value\"\n (valueChange)=\"onValueChange($event)\"\n />\n </mat-slider>\n <input\n *ngIf=\"allowCustomValue\"\n class=\"config-slider-input\"\n type=\"number\"\n [value]=\"value\"\n (input)=\"onValueChange($event.target.value)\"\n />\n</div>\n", styles: [".config-slider-input{background:transparent;color:var(--phoenix-text-color);border:none;border-bottom:1px solid var(--phoenix-text-color);width:25%;-moz-appearance:textfield}input::-webkit-outer-spin-button,input::-webkit-inner-spin-button{-webkit-appearance:none}\n"] }]
|
|
67
|
+
}], null, { value: [{
|
|
68
|
+
type: Input
|
|
69
|
+
}], min: [{
|
|
70
|
+
type: Input
|
|
71
|
+
}], max: [{
|
|
72
|
+
type: Input
|
|
73
|
+
}], step: [{
|
|
74
|
+
type: Input
|
|
75
|
+
}], allowCustomValue: [{
|
|
76
|
+
type: Input
|
|
77
|
+
}], onChange: [{
|
|
78
|
+
type: Output
|
|
79
|
+
}] }); })();
|
|
80
|
+
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(ConfigSliderComponent, { className: "ConfigSliderComponent", filePath: "components/phoenix-menu/config/config-slider/config-slider.component.ts", lineNumber: 9 }); })();
|
|
81
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29uZmlnLXNsaWRlci5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9saWIvY29tcG9uZW50cy9waG9lbml4LW1lbnUvY29uZmlnL2NvbmZpZy1zbGlkZXIvY29uZmlnLXNsaWRlci5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9saWIvY29tcG9uZW50cy9waG9lbml4LW1lbnUvY29uZmlnL2NvbmZpZy1zbGlkZXIvY29uZmlnLXNsaWRlci5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUUsWUFBWSxFQUFFLE1BQU0sZUFBZSxDQUFDOzs7Ozs7SUNRckUsZ0NBTUU7SUFEQSx3TEFBUyx5Q0FBa0MsS0FBQztJQUw5QyxpQkFNRTs7O0lBRkEsb0NBQWU7O0FESm5CLE1BQU0sT0FBTyxxQkFBcUI7SUFDdkIsS0FBSyxHQUFXLENBQUMsQ0FBQztJQUNsQixHQUFHLEdBQVcsQ0FBQyxDQUFDO0lBQ3pCLE1BQU0sR0FBVyxDQUFDLENBQUM7SUFDVixHQUFHLEdBQVcsR0FBRyxDQUFDO0lBQzNCLE1BQU0sR0FBVyxDQUFDLENBQUM7SUFDVixJQUFJLEdBQVcsQ0FBQyxDQUFDO0lBQ2pCLGdCQUFnQixHQUFZLEtBQUssQ0FBQztJQUNqQyxRQUFRLEdBQXlCLElBQUksWUFBWSxFQUFVLENBQUM7SUFFdEUsYUFBYSxDQUFDLEtBQWE7UUFDekIsS0FBSyxJQUFJLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQ3JDLENBQUM7SUFFRCxZQUFZLENBQUMsTUFBeUI7UUFDcEMsTUFBTSxLQUFLLEdBQUcsTUFBTSxDQUFDLE9BQU8sQ0FBQztRQUM3QixJQUFJLEtBQUssRUFBRSxDQUFDO1lBQ1YsSUFBSSxDQUFDLEdBQUcsR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDO1FBQ3pCLENBQUM7YUFBTSxDQUFDO1lBQ04sSUFBSSxDQUFDLE1BQU0sR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDO1lBQ3ZCLElBQUksQ0FBQyxHQUFHLEdBQUcsTUFBTSxDQUFDLGdCQUFnQixDQUFDO1FBQ3JDLENBQUM7UUFDRCxvR0FBb0c7SUFDdEcsQ0FBQztJQUVELFlBQVksQ0FBQyxNQUF5QjtRQUNwQyxNQUFNLEtBQUssR0FBRyxNQUFNLENBQUMsT0FBTyxDQUFDO1FBQzdCLElBQUksS0FBSyxFQUFFLENBQUM7WUFDVixJQUFJLENBQUMsR0FBRyxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUM7UUFDekIsQ0FBQzthQUFNLENBQUM7WUFDTixJQUFJLENBQUMsTUFBTSxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUM7WUFDdkIsSUFBSSxDQUFDLEdBQUcsR0FBRyxNQUFNLENBQUMsZ0JBQWdCLENBQUM7UUFDckMsQ0FBQztRQUNELG9HQUFvRztJQUN0RyxDQUFDOytFQWxDVSxxQkFBcUI7NkRBQXJCLHFCQUFxQjtZQ045QixBQURGLEFBREYsOEJBQWdELG9CQUM0QixlQUt0RTtZQURBLG1IQUFlLHlCQUFxQixJQUFDO1lBRXpDLEFBTEUsaUJBSUUsRUFDUztZQUNiLDBFQU1FO1lBQ0osaUJBQU07O1lBZHFCLGNBQVc7WUFBYSxBQUFaLEFBQVosNkJBQVcsZ0JBQVksa0JBQWM7WUFHMUQsY0FBZTtZQUFmLGlDQUFlO1lBS2hCLGNBQXNCO1lBQXRCLDJDQUFzQjs7O2lGRERkLHFCQUFxQjtjQUxqQyxTQUFTOzJCQUNFLG1CQUFtQjtnQkFLcEIsS0FBSztrQkFBYixLQUFLO1lBQ0csR0FBRztrQkFBWCxLQUFLO1lBRUcsR0FBRztrQkFBWCxLQUFLO1lBRUcsSUFBSTtrQkFBWixLQUFLO1lBQ0csZ0JBQWdCO2tCQUF4QixLQUFLO1lBQ0ksUUFBUTtrQkFBakIsTUFBTTs7a0ZBUkkscUJBQXFCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBJbnB1dCwgT3V0cHV0LCBFdmVudEVtaXR0ZXIgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IE1hdENoZWNrYm94Q2hhbmdlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvY2hlY2tib3gnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdhcHAtY29uZmlnLXNsaWRlcicsXG4gIHRlbXBsYXRlVXJsOiAnLi9jb25maWctc2xpZGVyLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vY29uZmlnLXNsaWRlci5jb21wb25lbnQuc2NzcyddLFxufSlcbmV4cG9ydCBjbGFzcyBDb25maWdTbGlkZXJDb21wb25lbnQge1xuICBASW5wdXQoKSB2YWx1ZTogbnVtYmVyID0gMDtcbiAgQElucHV0KCkgbWluOiBudW1iZXIgPSAwO1xuICBvbGRNaW46IG51bWJlciA9IDA7XG4gIEBJbnB1dCgpIG1heDogbnVtYmVyID0gMTAwO1xuICBvbGRNYXg6IG51bWJlciA9IDA7XG4gIEBJbnB1dCgpIHN0ZXA6IG51bWJlciA9IDE7XG4gIEBJbnB1dCgpIGFsbG93Q3VzdG9tVmFsdWU6IGJvb2xlYW4gPSBmYWxzZTtcbiAgQE91dHB1dCgpIG9uQ2hhbmdlOiBFdmVudEVtaXR0ZXI8bnVtYmVyPiA9IG5ldyBFdmVudEVtaXR0ZXI8bnVtYmVyPigpO1xuXG4gIG9uVmFsdWVDaGFuZ2UodmFsdWU6IG51bWJlcikge1xuICAgIHZhbHVlICYmIHRoaXMub25DaGFuZ2UuZW1pdCh2YWx1ZSk7XG4gIH1cblxuICB0b2dnbGVNaW5DdXQoY2hhbmdlOiBNYXRDaGVja2JveENoYW5nZSkge1xuICAgIGNvbnN0IHZhbHVlID0gY2hhbmdlLmNoZWNrZWQ7XG4gICAgaWYgKHZhbHVlKSB7XG4gICAgICB0aGlzLm1pbiA9IHRoaXMub2xkTWluO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLm9sZE1pbiA9IHRoaXMubWluO1xuICAgICAgdGhpcy5taW4gPSBOdW1iZXIuTUlOX1NBRkVfSU5URUdFUjtcbiAgICB9XG4gICAgLy8gV2Ugc2hvdWxkIHByb2JhYmx5IGRpc2FibGUgdGhlIG1pbiBpbnB1dCB0b28sIGFuZCBjaGFuZ2UgdGV4dCB0byBiZSBpbmZpbml0eSBzeW1ib2wgb3Igc29tZXRoaW5nP1xuICB9XG5cbiAgdG9nZ2xlTWF4Q3V0KGNoYW5nZTogTWF0Q2hlY2tib3hDaGFuZ2UpIHtcbiAgICBjb25zdCB2YWx1ZSA9IGNoYW5nZS5jaGVja2VkO1xuICAgIGlmICh2YWx1ZSkge1xuICAgICAgdGhpcy5tYXggPSB0aGlzLm9sZE1heDtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5vbGRNYXggPSB0aGlzLm1heDtcbiAgICAgIHRoaXMubWF4ID0gTnVtYmVyLk1BWF9TQUZFX0lOVEVHRVI7XG4gICAgfVxuICAgIC8vIFdlIHNob3VsZCBwcm9iYWJseSBkaXNhYmxlIHRoZSBtaW4gaW5wdXQgdG9vLCBhbmQgY2hhbmdlIHRleHQgdG8gYmUgaW5maW5pdHkgc3ltYm9sIG9yIHNvbWV0aGluZz9cbiAgfVxufVxuIiwiPGRpdiBjbGFzcz1cImQtZmxleCBmbGV4LXJvdyBhbGlnbi1pdGVtcy1jZW50ZXJcIj5cbiAgPG1hdC1zbGlkZXIgY2xhc3M9XCJteC0yXCIgW21pbl09XCJtaW5cIiBbbWF4XT1cIm1heFwiIFtzdGVwXT1cInN0ZXBcIiB0aHVtYkxhYmVsPlxuICAgIDxpbnB1dFxuICAgICAgbWF0U2xpZGVyVGh1bWJcbiAgICAgIFt2YWx1ZV09XCJ2YWx1ZVwiXG4gICAgICAodmFsdWVDaGFuZ2UpPVwib25WYWx1ZUNoYW5nZSgkZXZlbnQpXCJcbiAgICAvPlxuICA8L21hdC1zbGlkZXI+XG4gIDxpbnB1dFxuICAgICpuZ0lmPVwiYWxsb3dDdXN0b21WYWx1ZVwiXG4gICAgY2xhc3M9XCJjb25maWctc2xpZGVyLWlucHV0XCJcbiAgICB0eXBlPVwibnVtYmVyXCJcbiAgICBbdmFsdWVdPVwidmFsdWVcIlxuICAgIChpbnB1dCk9XCJvblZhbHVlQ2hhbmdlKCRldmVudC50YXJnZXQudmFsdWUpXCJcbiAgLz5cbjwvZGl2PlxuIl19
|