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.
Files changed (147) hide show
  1. package/README.md +2 -2
  2. package/dist/README.md +2 -2
  3. package/dist/components/file-explorer/file-explorer.component.d.ts +9 -3
  4. package/dist/components/loader/loader.component.d.ts +1 -1
  5. package/dist/components/phoenix-menu/config/config-slider/config-slider.component.d.ts +1 -1
  6. package/dist/components/phoenix-menu/phoenix-menu-item/phoenix-menu-item.component.d.ts +1 -1
  7. package/dist/components/phoenix-menu/phoenix-menu.component.d.ts +1 -1
  8. package/dist/components/phoenix-ui.module.d.ts +62 -59
  9. package/dist/components/ui-menu/animate-camera/animate-camera.component.d.ts +1 -1
  10. package/dist/components/ui-menu/collections-info/collections-info-overlay/collections-info-overlay.component.d.ts +3 -1
  11. package/dist/components/ui-menu/cycle-events/cycle-events.component.d.ts +7 -2
  12. package/dist/components/ui-menu/event-data-explorer/event-data-explorer-dialog/event-data-explorer-dialog.component.d.ts +7 -8
  13. package/dist/components/ui-menu/event-data-explorer/event-data-explorer.component.d.ts +1 -1
  14. package/dist/components/ui-menu/experiment-info/experiment-info.component.d.ts +1 -1
  15. package/dist/components/ui-menu/geometry-browser/geometry-browser-overlay/geometry-browser-overlay.component.d.ts +22 -0
  16. package/dist/components/ui-menu/geometry-browser/geometry-browser.component.d.ts +15 -0
  17. package/dist/components/ui-menu/index.d.ts +3 -0
  18. package/dist/components/ui-menu/info-panel/info-panel-overlay/info-panel-overlay.component.d.ts +1 -1
  19. package/dist/components/ui-menu/io-options/io-options-dialog/io-options-dialog.component.d.ts +1 -1
  20. package/dist/components/ui-menu/io-options/io-options.component.d.ts +1 -1
  21. package/dist/components/ui-menu/make-picture/make-picture.component.d.ts +3 -0
  22. package/dist/components/ui-menu/menu-toggle/menu-toggle.component.d.ts +1 -1
  23. package/dist/components/ui-menu/object-selection/object-selection-overlay/object-selection-overlay.component.d.ts +1 -1
  24. package/dist/components/ui-menu/overlay/overlay.component.d.ts +1 -1
  25. package/dist/components/ui-menu/overlay-view/overlay-view-window/overlay-view-window.component.d.ts +1 -1
  26. package/dist/components/ui-menu/tree-menu/tree-menu-item/tree-menu-item.component.d.ts +1 -1
  27. package/dist/components/ui-menu/ui-menu.component.d.ts +1 -1
  28. package/dist/components/ui-menu/view-options/cartesian-grid-config/cartesian-grid-config.component.d.ts +51 -0
  29. package/dist/components/ui-menu/view-options/view-options.component.d.ts +21 -4
  30. package/dist/esm2022/components/embed-menu/embed-menu.component.mjs +22 -0
  31. package/dist/esm2022/components/embed-menu/experiment-link/experiment-link.component.mjs +27 -0
  32. package/dist/esm2022/components/file-explorer/file-explorer.component.mjs +109 -0
  33. package/dist/esm2022/components/loader/loader.component.mjs +71 -0
  34. package/dist/esm2022/components/nav/nav.component.mjs +19 -0
  35. package/dist/esm2022/components/phoenix-menu/config/config-slider/config-slider.component.mjs +81 -0
  36. package/dist/esm2022/components/phoenix-menu/phoenix-menu-item/phoenix-menu-item.component.mjs +304 -0
  37. package/dist/esm2022/components/phoenix-menu/phoenix-menu.component.mjs +23 -0
  38. package/dist/esm2022/components/phoenix-ui.module.mjs +254 -0
  39. package/dist/esm2022/components/ring-loader/ring-loader.component.mjs +16 -0
  40. package/dist/esm2022/components/ui-menu/animate-camera/animate-camera.component.mjs +120 -0
  41. package/dist/esm2022/components/ui-menu/animate-event/animate-event.component.mjs +33 -0
  42. package/dist/esm2022/components/ui-menu/ar-toggle/ar-toggle.component.mjs +83 -0
  43. package/dist/esm2022/components/ui-menu/auto-rotate/auto-rotate.component.mjs +29 -0
  44. package/dist/esm2022/components/ui-menu/collections-info/collections-info-overlay/collections-info-overlay.component.mjs +273 -0
  45. package/dist/esm2022/components/ui-menu/collections-info/collections-info.component.mjs +44 -0
  46. package/dist/esm2022/components/ui-menu/cycle-events/cycle-events.component.mjs +90 -0
  47. package/dist/esm2022/components/ui-menu/dark-theme/dark-theme.component.mjs +32 -0
  48. package/dist/esm2022/components/ui-menu/event-data-explorer/event-data-explorer-dialog/event-data-explorer-dialog.component.mjs +128 -0
  49. package/dist/esm2022/components/ui-menu/event-data-explorer/event-data-explorer.component.mjs +35 -0
  50. package/dist/esm2022/components/ui-menu/event-selector/event-selector.component.mjs +54 -0
  51. package/dist/esm2022/components/ui-menu/experiment-info/experiment-info.component.mjs +100 -0
  52. package/dist/esm2022/components/ui-menu/geometry-browser/geometry-browser-overlay/geometry-browser-overlay.component.mjs +172 -0
  53. package/dist/esm2022/components/ui-menu/geometry-browser/geometry-browser.component.mjs +44 -0
  54. package/dist/esm2022/components/ui-menu/index.mjs +40 -0
  55. package/dist/esm2022/components/ui-menu/info-panel/info-panel-overlay/info-panel-overlay.component.mjs +69 -0
  56. package/dist/esm2022/components/ui-menu/info-panel/info-panel.component.mjs +59 -0
  57. package/dist/esm2022/components/ui-menu/io-options/io-options-dialog/io-options-dialog.component.mjs +294 -0
  58. package/dist/esm2022/components/ui-menu/io-options/io-options.component.mjs +36 -0
  59. package/dist/esm2022/components/ui-menu/main-view-toggle/main-view-toggle.component.mjs +32 -0
  60. package/dist/esm2022/components/ui-menu/make-picture/make-picture.component.mjs +109 -0
  61. package/dist/esm2022/components/ui-menu/menu-toggle/menu-toggle.component.mjs +40 -0
  62. package/dist/esm2022/components/ui-menu/object-clipping/object-clipping.component.mjs +72 -0
  63. package/dist/esm2022/components/ui-menu/object-selection/object-selection-overlay/object-selection-overlay.component.mjs +59 -0
  64. package/dist/esm2022/components/ui-menu/object-selection/object-selection.component.mjs +46 -0
  65. package/dist/esm2022/components/ui-menu/overlay/overlay.component.mjs +197 -0
  66. package/dist/esm2022/components/ui-menu/overlay-view/overlay-view-window/overlay-view-window.component.mjs +83 -0
  67. package/dist/esm2022/components/ui-menu/overlay-view/overlay-view.component.mjs +41 -0
  68. package/dist/esm2022/components/ui-menu/performance-toggle/performance-toggle.component.mjs +29 -0
  69. package/dist/esm2022/components/ui-menu/share-link/share-link-dialog/share-link-dialog.component.mjs +165 -0
  70. package/dist/esm2022/components/ui-menu/share-link/share-link.component.mjs +28 -0
  71. package/dist/esm2022/components/ui-menu/ss-mode/ss-mode.component.mjs +46 -0
  72. package/dist/esm2022/components/ui-menu/tree-menu/tree-menu-item/tree-menu-item.component.mjs +94 -0
  73. package/dist/esm2022/components/ui-menu/tree-menu/tree-menu.component.mjs +78 -0
  74. package/dist/esm2022/components/ui-menu/ui-menu-wrapper/ui-menu-wrapper.component.mjs +34 -0
  75. package/dist/esm2022/components/ui-menu/ui-menu.component.mjs +54 -0
  76. package/dist/esm2022/components/ui-menu/view-options/cartesian-grid-config/cartesian-grid-config.component.mjs +247 -0
  77. package/dist/esm2022/components/ui-menu/view-options/view-options.component.mjs +170 -0
  78. package/dist/esm2022/components/ui-menu/vr-toggle/vr-toggle.component.mjs +52 -0
  79. package/dist/esm2022/components/ui-menu/zoom-controls/zoom-controls.component.mjs +79 -0
  80. package/dist/esm2022/services/error-message-service.mjs +30 -0
  81. package/dist/{esm2020 → esm2022}/services/event-display.service.mjs +5 -5
  82. package/dist/esm2022/services/extras/attribute.pipe.mjs +33 -0
  83. package/dist/{esm2020 → esm2022}/services/extras/event-data-import.mjs +5 -1
  84. package/dist/esm2022/services/file-loader.service.mjs +86 -0
  85. package/dist/esm2022/services/global-error-handler.mjs +30 -0
  86. package/dist/fesm2022/phoenix-ui-components.mjs +4302 -0
  87. package/dist/fesm2022/phoenix-ui-components.mjs.map +1 -0
  88. package/dist/services/file-loader.service.d.ts +17 -0
  89. package/package.json +27 -16
  90. package/dist/esm2020/components/embed-menu/embed-menu.component.mjs +0 -21
  91. package/dist/esm2020/components/embed-menu/experiment-link/experiment-link.component.mjs +0 -25
  92. package/dist/esm2020/components/file-explorer/file-explorer.component.mjs +0 -97
  93. package/dist/esm2020/components/loader/loader.component.mjs +0 -68
  94. package/dist/esm2020/components/nav/nav.component.mjs +0 -18
  95. package/dist/esm2020/components/phoenix-menu/config/config-slider/config-slider.component.mjs +0 -82
  96. package/dist/esm2020/components/phoenix-menu/phoenix-menu-item/phoenix-menu-item.component.mjs +0 -309
  97. package/dist/esm2020/components/phoenix-menu/phoenix-menu.component.mjs +0 -21
  98. package/dist/esm2020/components/phoenix-ui.module.mjs +0 -254
  99. package/dist/esm2020/components/ring-loader/ring-loader.component.mjs +0 -15
  100. package/dist/esm2020/components/ui-menu/animate-camera/animate-camera.component.mjs +0 -117
  101. package/dist/esm2020/components/ui-menu/animate-event/animate-event.component.mjs +0 -31
  102. package/dist/esm2020/components/ui-menu/ar-toggle/ar-toggle.component.mjs +0 -81
  103. package/dist/esm2020/components/ui-menu/auto-rotate/auto-rotate.component.mjs +0 -27
  104. package/dist/esm2020/components/ui-menu/collections-info/collections-info-overlay/collections-info-overlay.component.mjs +0 -261
  105. package/dist/esm2020/components/ui-menu/collections-info/collections-info.component.mjs +0 -38
  106. package/dist/esm2020/components/ui-menu/cycle-events/cycle-events.component.mjs +0 -42
  107. package/dist/esm2020/components/ui-menu/dark-theme/dark-theme.component.mjs +0 -30
  108. package/dist/esm2020/components/ui-menu/event-data-explorer/event-data-explorer-dialog/event-data-explorer-dialog.component.mjs +0 -176
  109. package/dist/esm2020/components/ui-menu/event-data-explorer/event-data-explorer.component.mjs +0 -32
  110. package/dist/esm2020/components/ui-menu/event-selector/event-selector.component.mjs +0 -50
  111. package/dist/esm2020/components/ui-menu/experiment-info/experiment-info.component.mjs +0 -96
  112. package/dist/esm2020/components/ui-menu/index.mjs +0 -37
  113. package/dist/esm2020/components/ui-menu/info-panel/info-panel-overlay/info-panel-overlay.component.mjs +0 -66
  114. package/dist/esm2020/components/ui-menu/info-panel/info-panel.component.mjs +0 -55
  115. package/dist/esm2020/components/ui-menu/io-options/io-options-dialog/io-options-dialog.component.mjs +0 -290
  116. package/dist/esm2020/components/ui-menu/io-options/io-options.component.mjs +0 -34
  117. package/dist/esm2020/components/ui-menu/main-view-toggle/main-view-toggle.component.mjs +0 -30
  118. package/dist/esm2020/components/ui-menu/make-picture/make-picture.component.mjs +0 -88
  119. package/dist/esm2020/components/ui-menu/menu-toggle/menu-toggle.component.mjs +0 -38
  120. package/dist/esm2020/components/ui-menu/object-clipping/object-clipping.component.mjs +0 -67
  121. package/dist/esm2020/components/ui-menu/object-selection/object-selection-overlay/object-selection-overlay.component.mjs +0 -55
  122. package/dist/esm2020/components/ui-menu/object-selection/object-selection.component.mjs +0 -42
  123. package/dist/esm2020/components/ui-menu/overlay/overlay.component.mjs +0 -189
  124. package/dist/esm2020/components/ui-menu/overlay-view/overlay-view-window/overlay-view-window.component.mjs +0 -79
  125. package/dist/esm2020/components/ui-menu/overlay-view/overlay-view.component.mjs +0 -38
  126. package/dist/esm2020/components/ui-menu/performance-toggle/performance-toggle.component.mjs +0 -27
  127. package/dist/esm2020/components/ui-menu/share-link/share-link-dialog/share-link-dialog.component.mjs +0 -158
  128. package/dist/esm2020/components/ui-menu/share-link/share-link.component.mjs +0 -26
  129. package/dist/esm2020/components/ui-menu/ss-mode/ss-mode.component.mjs +0 -47
  130. package/dist/esm2020/components/ui-menu/tree-menu/tree-menu-item/tree-menu-item.component.mjs +0 -90
  131. package/dist/esm2020/components/ui-menu/tree-menu/tree-menu.component.mjs +0 -78
  132. package/dist/esm2020/components/ui-menu/ui-menu-wrapper/ui-menu-wrapper.component.mjs +0 -35
  133. package/dist/esm2020/components/ui-menu/ui-menu.component.mjs +0 -54
  134. package/dist/esm2020/components/ui-menu/view-options/view-options.component.mjs +0 -81
  135. package/dist/esm2020/components/ui-menu/vr-toggle/vr-toggle.component.mjs +0 -50
  136. package/dist/esm2020/components/ui-menu/zoom-controls/zoom-controls.component.mjs +0 -73
  137. package/dist/esm2020/services/error-message-service.mjs +0 -32
  138. package/dist/esm2020/services/extras/attribute.pipe.mjs +0 -33
  139. package/dist/esm2020/services/global-error-handler.mjs +0 -29
  140. package/dist/fesm2015/phoenix-ui-components.mjs +0 -3994
  141. package/dist/fesm2015/phoenix-ui-components.mjs.map +0 -1
  142. package/dist/fesm2020/phoenix-ui-components.mjs +0 -3552
  143. package/dist/fesm2020/phoenix-ui-components.mjs.map +0 -1
  144. /package/dist/{esm2020 → esm2022}/components/phoenix-menu/index.mjs +0 -0
  145. /package/dist/{esm2020 → esm2022}/phoenix-ui-components.mjs +0 -0
  146. /package/dist/{esm2020 → esm2022}/public_api.mjs +0 -0
  147. /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