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,36 @@
1
+ import { Component, Input } from '@angular/core';
2
+ import { EventDataFormat, } from '../../../services/extras/event-data-import';
3
+ import { IOOptionsDialogComponent } from './io-options-dialog/io-options-dialog.component';
4
+ import * as i0 from "@angular/core";
5
+ import * as i1 from "@angular/material/dialog";
6
+ import * as i2 from "../menu-toggle/menu-toggle.component";
7
+ export class IoOptionsComponent {
8
+ dialog;
9
+ eventDataImportOptions = Object.values(EventDataFormat);
10
+ constructor(dialog) {
11
+ this.dialog = dialog;
12
+ }
13
+ openIODialog() {
14
+ const dialogRef = this.dialog.open(IOOptionsDialogComponent, {
15
+ panelClass: 'dialog',
16
+ });
17
+ dialogRef.componentInstance.eventDataImportOptions =
18
+ this.eventDataImportOptions;
19
+ }
20
+ static ɵfac = function IoOptionsComponent_Factory(t) { return new (t || IoOptionsComponent)(i0.ɵɵdirectiveInject(i1.MatDialog)); };
21
+ static ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: IoOptionsComponent, selectors: [["app-io-options"]], inputs: { eventDataImportOptions: "eventDataImportOptions" }, decls: 1, vars: 1, consts: [["tooltip", "Import and export options", "icon", "import", 3, "click", "active"]], template: function IoOptionsComponent_Template(rf, ctx) { if (rf & 1) {
22
+ i0.ɵɵelementStart(0, "app-menu-toggle", 0);
23
+ i0.ɵɵlistener("click", function IoOptionsComponent_Template_app_menu_toggle_click_0_listener() { return ctx.openIODialog(); });
24
+ i0.ɵɵelementEnd();
25
+ } if (rf & 2) {
26
+ i0.ɵɵproperty("active", false);
27
+ } }, dependencies: [i2.MenuToggleComponent] });
28
+ }
29
+ (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(IoOptionsComponent, [{
30
+ type: Component,
31
+ args: [{ selector: 'app-io-options', template: "<app-menu-toggle\n tooltip=\"Import and export options\"\n icon=\"import\"\n [active]=\"false\"\n (click)=\"openIODialog()\"\n>\n</app-menu-toggle>\n" }]
32
+ }], () => [{ type: i1.MatDialog }], { eventDataImportOptions: [{
33
+ type: Input
34
+ }] }); })();
35
+ (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(IoOptionsComponent, { className: "IoOptionsComponent", filePath: "components/ui-menu/io-options/io-options.component.ts", lineNumber: 14 }); })();
36
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW8tb3B0aW9ucy5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9saWIvY29tcG9uZW50cy91aS1tZW51L2lvLW9wdGlvbnMvaW8tb3B0aW9ucy5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi9saWIvY29tcG9uZW50cy91aS1tZW51L2lvLW9wdGlvbnMvaW8tb3B0aW9ucy5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUVqRCxPQUFPLEVBQ0wsZUFBZSxHQUVoQixNQUFNLDRDQUE0QyxDQUFDO0FBQ3BELE9BQU8sRUFBRSx3QkFBd0IsRUFBRSxNQUFNLGlEQUFpRCxDQUFDOzs7O0FBTzNGLE1BQU0sT0FBTyxrQkFBa0I7SUFLVDtJQUhwQixzQkFBc0IsR0FDcEIsTUFBTSxDQUFDLE1BQU0sQ0FBQyxlQUFlLENBQUMsQ0FBQztJQUVqQyxZQUFvQixNQUFpQjtRQUFqQixXQUFNLEdBQU4sTUFBTSxDQUFXO0lBQUcsQ0FBQztJQUV6QyxZQUFZO1FBQ1YsTUFBTSxTQUFTLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsd0JBQXdCLEVBQUU7WUFDM0QsVUFBVSxFQUFFLFFBQVE7U0FDckIsQ0FBQyxDQUFDO1FBQ0gsU0FBUyxDQUFDLGlCQUFpQixDQUFDLHNCQUFzQjtZQUNoRCxJQUFJLENBQUMsc0JBQXNCLENBQUM7SUFDaEMsQ0FBQzs0RUFiVSxrQkFBa0I7NkRBQWxCLGtCQUFrQjtZQ2IvQiwwQ0FLQztZQURDLHdHQUFTLGtCQUFjLElBQUM7WUFFMUIsaUJBQWtCOztZQUhoQiw4QkFBZ0I7OztpRkRVTCxrQkFBa0I7Y0FMOUIsU0FBUzsyQkFDRSxnQkFBZ0I7MENBTTFCLHNCQUFzQjtrQkFEckIsS0FBSzs7a0ZBREssa0JBQWtCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBJbnB1dCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgTWF0RGlhbG9nIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvZGlhbG9nJztcbmltcG9ydCB7XG4gIEV2ZW50RGF0YUZvcm1hdCxcbiAgRXZlbnREYXRhSW1wb3J0T3B0aW9uLFxufSBmcm9tICcuLi8uLi8uLi9zZXJ2aWNlcy9leHRyYXMvZXZlbnQtZGF0YS1pbXBvcnQnO1xuaW1wb3J0IHsgSU9PcHRpb25zRGlhbG9nQ29tcG9uZW50IH0gZnJvbSAnLi9pby1vcHRpb25zLWRpYWxvZy9pby1vcHRpb25zLWRpYWxvZy5jb21wb25lbnQnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdhcHAtaW8tb3B0aW9ucycsXG4gIHRlbXBsYXRlVXJsOiAnLi9pby1vcHRpb25zLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vaW8tb3B0aW9ucy5jb21wb25lbnQuc2NzcyddLFxufSlcbmV4cG9ydCBjbGFzcyBJb09wdGlvbnNDb21wb25lbnQge1xuICBASW5wdXQoKVxuICBldmVudERhdGFJbXBvcnRPcHRpb25zOiBFdmVudERhdGFJbXBvcnRPcHRpb25bXSA9XG4gICAgT2JqZWN0LnZhbHVlcyhFdmVudERhdGFGb3JtYXQpO1xuXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgZGlhbG9nOiBNYXREaWFsb2cpIHt9XG5cbiAgb3BlbklPRGlhbG9nKCkge1xuICAgIGNvbnN0IGRpYWxvZ1JlZiA9IHRoaXMuZGlhbG9nLm9wZW4oSU9PcHRpb25zRGlhbG9nQ29tcG9uZW50LCB7XG4gICAgICBwYW5lbENsYXNzOiAnZGlhbG9nJyxcbiAgICB9KTtcbiAgICBkaWFsb2dSZWYuY29tcG9uZW50SW5zdGFuY2UuZXZlbnREYXRhSW1wb3J0T3B0aW9ucyA9XG4gICAgICB0aGlzLmV2ZW50RGF0YUltcG9ydE9wdGlvbnM7XG4gIH1cbn1cbiIsIjxhcHAtbWVudS10b2dnbGVcbiAgdG9vbHRpcD1cIkltcG9ydCBhbmQgZXhwb3J0IG9wdGlvbnNcIlxuICBpY29uPVwiaW1wb3J0XCJcbiAgW2FjdGl2ZV09XCJmYWxzZVwiXG4gIChjbGljayk9XCJvcGVuSU9EaWFsb2coKVwiXG4+XG48L2FwcC1tZW51LXRvZ2dsZT5cbiJdfQ==
@@ -0,0 +1,32 @@
1
+ import { Component } from '@angular/core';
2
+ import * as i0 from "@angular/core";
3
+ import * as i1 from "../../../services/event-display.service";
4
+ import * as i2 from "@angular/material/tooltip";
5
+ import * as i3 from "../menu-toggle/menu-toggle.component";
6
+ export class MainViewToggleComponent {
7
+ eventDisplay;
8
+ orthographicView = false;
9
+ constructor(eventDisplay) {
10
+ this.eventDisplay = eventDisplay;
11
+ }
12
+ switchMainView() {
13
+ this.orthographicView = !this.orthographicView;
14
+ this.eventDisplay
15
+ .getUIManager()
16
+ .toggleOrthographicView(this.orthographicView);
17
+ }
18
+ static ɵfac = function MainViewToggleComponent_Factory(t) { return new (t || MainViewToggleComponent)(i0.ɵɵdirectiveInject(i1.EventDisplayService)); };
19
+ static ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: MainViewToggleComponent, selectors: [["app-main-view-toggle"]], decls: 1, vars: 2, consts: [[3, "click", "icon", "matTooltip"]], template: function MainViewToggleComponent_Template(rf, ctx) { if (rf & 1) {
20
+ i0.ɵɵelementStart(0, "app-menu-toggle", 0);
21
+ i0.ɵɵlistener("click", function MainViewToggleComponent_Template_app_menu_toggle_click_0_listener() { return ctx.switchMainView(); });
22
+ i0.ɵɵelementEnd();
23
+ } if (rf & 2) {
24
+ i0.ɵɵproperty("icon", ctx.orthographicView ? "perspective" : "orthographic")("matTooltip", "Switch to " + (ctx.orthographicView ? "perspective" : "orthographic") + " view");
25
+ } }, dependencies: [i2.MatTooltip, i3.MenuToggleComponent] });
26
+ }
27
+ (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(MainViewToggleComponent, [{
28
+ type: Component,
29
+ args: [{ selector: 'app-main-view-toggle', template: "<app-menu-toggle\n [icon]=\"orthographicView ? 'perspective' : 'orthographic'\"\n [matTooltip]=\"\n 'Switch to ' + (orthographicView ? 'perspective' : 'orthographic') + ' view'\n \"\n (click)=\"switchMainView()\"\n>\n</app-menu-toggle>\n" }]
30
+ }], () => [{ type: i1.EventDisplayService }], null); })();
31
+ (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(MainViewToggleComponent, { className: "MainViewToggleComponent", filePath: "components/ui-menu/main-view-toggle/main-view-toggle.component.ts", lineNumber: 9 }); })();
32
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWFpbi12aWV3LXRvZ2dsZS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9saWIvY29tcG9uZW50cy91aS1tZW51L21haW4tdmlldy10b2dnbGUvbWFpbi12aWV3LXRvZ2dsZS5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi9saWIvY29tcG9uZW50cy91aS1tZW51L21haW4tdmlldy10b2dnbGUvbWFpbi12aWV3LXRvZ2dsZS5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sZUFBZSxDQUFDOzs7OztBQVExQyxNQUFNLE9BQU8sdUJBQXVCO0lBR2Q7SUFGcEIsZ0JBQWdCLEdBQVksS0FBSyxDQUFDO0lBRWxDLFlBQW9CLFlBQWlDO1FBQWpDLGlCQUFZLEdBQVosWUFBWSxDQUFxQjtJQUFHLENBQUM7SUFFekQsY0FBYztRQUNaLElBQUksQ0FBQyxnQkFBZ0IsR0FBRyxDQUFDLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQztRQUMvQyxJQUFJLENBQUMsWUFBWTthQUNkLFlBQVksRUFBRTthQUNkLHNCQUFzQixDQUFDLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDO0lBQ25ELENBQUM7aUZBVlUsdUJBQXVCOzZEQUF2Qix1QkFBdUI7WUNScEMsMENBTUM7WUFEQyw2R0FBUyxvQkFBZ0IsSUFBQztZQUU1QixpQkFBa0I7O1lBTGhCLEFBREEsNEVBQTBELGdHQUd6RDs7O2lGRElVLHVCQUF1QjtjQUxuQyxTQUFTOzJCQUNFLHNCQUFzQjs7a0ZBSXJCLHVCQUF1QiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgRXZlbnREaXNwbGF5U2VydmljZSB9IGZyb20gJy4uLy4uLy4uL3NlcnZpY2VzL2V2ZW50LWRpc3BsYXkuc2VydmljZSc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2FwcC1tYWluLXZpZXctdG9nZ2xlJyxcbiAgdGVtcGxhdGVVcmw6ICcuL21haW4tdmlldy10b2dnbGUuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9tYWluLXZpZXctdG9nZ2xlLmNvbXBvbmVudC5zY3NzJ10sXG59KVxuZXhwb3J0IGNsYXNzIE1haW5WaWV3VG9nZ2xlQ29tcG9uZW50IHtcbiAgb3J0aG9ncmFwaGljVmlldzogYm9vbGVhbiA9IGZhbHNlO1xuXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgZXZlbnREaXNwbGF5OiBFdmVudERpc3BsYXlTZXJ2aWNlKSB7fVxuXG4gIHN3aXRjaE1haW5WaWV3KCkge1xuICAgIHRoaXMub3J0aG9ncmFwaGljVmlldyA9ICF0aGlzLm9ydGhvZ3JhcGhpY1ZpZXc7XG4gICAgdGhpcy5ldmVudERpc3BsYXlcbiAgICAgIC5nZXRVSU1hbmFnZXIoKVxuICAgICAgLnRvZ2dsZU9ydGhvZ3JhcGhpY1ZpZXcodGhpcy5vcnRob2dyYXBoaWNWaWV3KTtcbiAgfVxufVxuIiwiPGFwcC1tZW51LXRvZ2dsZVxuICBbaWNvbl09XCJvcnRob2dyYXBoaWNWaWV3ID8gJ3BlcnNwZWN0aXZlJyA6ICdvcnRob2dyYXBoaWMnXCJcbiAgW21hdFRvb2x0aXBdPVwiXG4gICAgJ1N3aXRjaCB0byAnICsgKG9ydGhvZ3JhcGhpY1ZpZXcgPyAncGVyc3BlY3RpdmUnIDogJ29ydGhvZ3JhcGhpYycpICsgJyB2aWV3J1xuICBcIlxuICAoY2xpY2spPVwic3dpdGNoTWFpblZpZXcoKVwiXG4+XG48L2FwcC1tZW51LXRvZ2dsZT5cbiJdfQ==
@@ -0,0 +1,109 @@
1
+ import { Component, ViewEncapsulation } from '@angular/core';
2
+ import * as i0 from "@angular/core";
3
+ import * as i1 from "../../../services/event-display.service";
4
+ import * as i2 from "@angular/common";
5
+ import * as i3 from "@angular/forms";
6
+ import * as i4 from "@angular/material/menu";
7
+ import * as i5 from "@angular/material/radio";
8
+ import * as i6 from "../menu-toggle/menu-toggle.component";
9
+ function MakePictureComponent_mat_radio_button_14_Template(rf, ctx) { if (rf & 1) {
10
+ i0.ɵɵelementStart(0, "mat-radio-button", 12);
11
+ i0.ɵɵtext(1);
12
+ i0.ɵɵelementEnd();
13
+ } if (rf & 2) {
14
+ const fitting_r4 = ctx.$implicit;
15
+ i0.ɵɵproperty("value", fitting_r4);
16
+ i0.ɵɵadvance();
17
+ i0.ɵɵtextInterpolate1("", fitting_r4, " ");
18
+ } }
19
+ export class MakePictureComponent {
20
+ eventDisplay;
21
+ fittings = ['Crop', 'Stretch'];
22
+ fitting = 'Crop';
23
+ width = 3840;
24
+ height = 2160;
25
+ disabled = false;
26
+ constructor(eventDisplay) {
27
+ this.eventDisplay = eventDisplay;
28
+ }
29
+ ngOnInit() { }
30
+ checkSize() {
31
+ return this.eventDisplay
32
+ .getThreeManager()
33
+ .checkScreenShotCanvasSize(this.width, this.height, this.fitting);
34
+ }
35
+ setWidth(value) {
36
+ this.width = value;
37
+ this.disabled = !this.checkSize();
38
+ }
39
+ setHeight(value) {
40
+ this.height = value;
41
+ this.disabled = !this.checkSize();
42
+ }
43
+ buttonText() {
44
+ return this.disabled ? 'Size too large' : 'Create picture';
45
+ }
46
+ makePicture() {
47
+ this.eventDisplay
48
+ .getThreeManager()
49
+ .makeScreenShot(this.width, this.height, this.fitting);
50
+ }
51
+ static ɵfac = function MakePictureComponent_Factory(t) { return new (t || MakePictureComponent)(i0.ɵɵdirectiveInject(i1.EventDisplayService)); };
52
+ static ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: MakePictureComponent, selectors: [["app-make-picture"]], decls: 20, vars: 11, consts: [["menu", ""], ["width", ""], ["height", ""], [1, "mat-menu"], ["mat-menu-item", "", 1, "size-input", 3, "click"], ["mapInput", "", "type", "number", 3, "change", "click", "value"], ["mat-menu-item", "", 3, "click"], [1, "fitting-radios", 3, "ngModelChange", "ngModel"], [3, "value", 4, "ngFor", "ngForOf"], ["mat-menu-item", "", 1, "make-picture", 3, "click", "disabled"], ["tooltip", "Creates a picture from the current view: directly saves a png of arbitrary size from the current view", "icon", "png", 3, "matMenuTriggerFor"], ["hidden", "", "id", "screenshotCanvas"], [3, "value"]], template: function MakePictureComponent_Template(rf, ctx) { if (rf & 1) {
53
+ const _r1 = i0.ɵɵgetCurrentView();
54
+ i0.ɵɵelementStart(0, "mat-menu", 3, 0)(2, "button", 4);
55
+ i0.ɵɵlistener("click", function MakePictureComponent_Template_button_click_2_listener($event) { i0.ɵɵrestoreView(_r1); return i0.ɵɵresetView($event.stopPropagation()); });
56
+ i0.ɵɵelementStart(3, "label");
57
+ i0.ɵɵtext(4, "width");
58
+ i0.ɵɵelementEnd();
59
+ i0.ɵɵelementStart(5, "input", 5, 1);
60
+ i0.ɵɵlistener("change", function MakePictureComponent_Template_input_change_5_listener() { i0.ɵɵrestoreView(_r1); const width_r2 = i0.ɵɵreference(6); return i0.ɵɵresetView(ctx.setWidth(width_r2.value)); })("click", function MakePictureComponent_Template_input_click_5_listener($event) { i0.ɵɵrestoreView(_r1); return i0.ɵɵresetView($event.stopPropagation()); });
61
+ i0.ɵɵelementEnd()();
62
+ i0.ɵɵelementStart(7, "button", 4);
63
+ i0.ɵɵlistener("click", function MakePictureComponent_Template_button_click_7_listener($event) { i0.ɵɵrestoreView(_r1); return i0.ɵɵresetView($event.stopPropagation()); });
64
+ i0.ɵɵelementStart(8, "label");
65
+ i0.ɵɵtext(9, "height");
66
+ i0.ɵɵelementEnd();
67
+ i0.ɵɵelementStart(10, "input", 5, 2);
68
+ i0.ɵɵlistener("change", function MakePictureComponent_Template_input_change_10_listener() { i0.ɵɵrestoreView(_r1); const height_r3 = i0.ɵɵreference(11); return i0.ɵɵresetView(ctx.setHeight(height_r3.value)); })("click", function MakePictureComponent_Template_input_click_10_listener($event) { i0.ɵɵrestoreView(_r1); return i0.ɵɵresetView($event.stopPropagation()); });
69
+ i0.ɵɵelementEnd()();
70
+ i0.ɵɵelementStart(12, "button", 6);
71
+ i0.ɵɵlistener("click", function MakePictureComponent_Template_button_click_12_listener($event) { i0.ɵɵrestoreView(_r1); return i0.ɵɵresetView($event.stopPropagation()); });
72
+ i0.ɵɵelementStart(13, "mat-radio-group", 7);
73
+ i0.ɵɵtwoWayListener("ngModelChange", function MakePictureComponent_Template_mat_radio_group_ngModelChange_13_listener($event) { i0.ɵɵrestoreView(_r1); i0.ɵɵtwoWayBindingSet(ctx.fitting, $event) || (ctx.fitting = $event); return i0.ɵɵresetView($event); });
74
+ i0.ɵɵtemplate(14, MakePictureComponent_mat_radio_button_14_Template, 2, 2, "mat-radio-button", 8);
75
+ i0.ɵɵelementEnd()();
76
+ i0.ɵɵelementStart(15, "button", 9);
77
+ i0.ɵɵlistener("click", function MakePictureComponent_Template_button_click_15_listener() { i0.ɵɵrestoreView(_r1); return i0.ɵɵresetView(ctx.makePicture()); });
78
+ i0.ɵɵtext(16);
79
+ i0.ɵɵelementEnd()();
80
+ i0.ɵɵelement(17, "app-menu-toggle", 10);
81
+ i0.ɵɵelementStart(18, "div");
82
+ i0.ɵɵelement(19, "canvas", 11);
83
+ i0.ɵɵelementEnd();
84
+ } if (rf & 2) {
85
+ const menu_r5 = i0.ɵɵreference(1);
86
+ i0.ɵɵadvance(5);
87
+ i0.ɵɵclassProp("badSize", ctx.disabled);
88
+ i0.ɵɵproperty("value", 3840);
89
+ i0.ɵɵadvance(5);
90
+ i0.ɵɵclassProp("badSize", ctx.disabled);
91
+ i0.ɵɵproperty("value", 2610);
92
+ i0.ɵɵadvance(3);
93
+ i0.ɵɵtwoWayProperty("ngModel", ctx.fitting);
94
+ i0.ɵɵadvance();
95
+ i0.ɵɵproperty("ngForOf", ctx.fittings);
96
+ i0.ɵɵadvance();
97
+ i0.ɵɵproperty("disabled", ctx.disabled);
98
+ i0.ɵɵadvance();
99
+ i0.ɵɵtextInterpolate1(" ", ctx.buttonText(), " ");
100
+ i0.ɵɵadvance();
101
+ i0.ɵɵproperty("matMenuTriggerFor", menu_r5);
102
+ } }, dependencies: [i2.NgForOf, i3.NgControlStatus, i3.NgModel, i4.MatMenu, i4.MatMenuItem, i4.MatMenuTrigger, i5.MatRadioGroup, i5.MatRadioButton, i6.MenuToggleComponent], styles: [".size-input{background:transparent;color:var(--phoenix-text-color);text-align:center}.size-input label{width:60px}.size-input input{background:transparent;color:var(--phoenix-text-color);width:80px}.badSize{border-color:red}.make-picture{text-align:center;display:block}.make-picture span{padding:5px 25px;border:2px solid var(--phoenix-text-color);border-radius:8px}\n"], encapsulation: 2 });
103
+ }
104
+ (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(MakePictureComponent, [{
105
+ type: Component,
106
+ args: [{ selector: 'app-make-picture', encapsulation: ViewEncapsulation.None, template: "<mat-menu class=\"mat-menu\" #menu>\n <button mat-menu-item (click)=\"$event.stopPropagation()\" class=\"size-input\">\n <label>width</label>\n <input\n #width\n mapInput\n type=\"number\"\n [value]=\"3840\"\n (change)=\"setWidth(width.value)\"\n (click)=\"$event.stopPropagation()\"\n [class.badSize]=\"disabled\"\n />\n </button>\n <button mat-menu-item (click)=\"$event.stopPropagation()\" class=\"size-input\">\n <label>height</label>\n <input\n #height\n mapInput\n type=\"number\"\n [value]=\"2610\"\n (change)=\"setHeight(height.value)\"\n (click)=\"$event.stopPropagation()\"\n [class.badSize]=\"disabled\"\n />\n </button>\n <button mat-menu-item (click)=\"$event.stopPropagation()\">\n <mat-radio-group [(ngModel)]=\"fitting\" class=\"fitting-radios\">\n <mat-radio-button *ngFor=\"let fitting of fittings\" [value]=\"fitting\"\n >{{ fitting }}\n </mat-radio-button>\n </mat-radio-group>\n </button>\n <button\n mat-menu-item\n [disabled]=\"disabled\"\n class=\"make-picture\"\n (click)=\"makePicture()\"\n >\n {{ buttonText() }}\n </button>\n</mat-menu>\n<app-menu-toggle\n [matMenuTriggerFor]=\"menu\"\n tooltip=\"Creates a picture from the current view: directly saves a png of arbitrary size from the current view\"\n icon=\"png\"\n>\n</app-menu-toggle>\n<div>\n <canvas hidden id=\"screenshotCanvas\"></canvas>\n</div>\n", styles: [".size-input{background:transparent;color:var(--phoenix-text-color);text-align:center}.size-input label{width:60px}.size-input input{background:transparent;color:var(--phoenix-text-color);width:80px}.badSize{border-color:red}.make-picture{text-align:center;display:block}.make-picture span{padding:5px 25px;border:2px solid var(--phoenix-text-color);border-radius:8px}\n"] }]
107
+ }], () => [{ type: i1.EventDisplayService }], null); })();
108
+ (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(MakePictureComponent, { className: "MakePictureComponent", filePath: "components/ui-menu/make-picture/make-picture.component.ts", lineNumber: 11 }); })();
109
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWFrZS1waWN0dXJlLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL2xpYi9jb21wb25lbnRzL3VpLW1lbnUvbWFrZS1waWN0dXJlL21ha2UtcGljdHVyZS5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi9saWIvY29tcG9uZW50cy91aS1tZW51L21ha2UtcGljdHVyZS9tYWtlLXBpY3R1cmUuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBaUIsaUJBQWlCLEVBQUUsTUFBTSxlQUFlLENBQUM7Ozs7Ozs7OztJQzJCdEUsNENBQ0c7SUFBQSxZQUNIO0lBQUEsaUJBQW1COzs7SUFGZ0Msa0NBQWlCO0lBQ2pFLGNBQ0g7SUFERywwQ0FDSDs7QURuQk4sTUFBTSxPQUFPLG9CQUFvQjtJQU1YO0lBTHBCLFFBQVEsR0FBYSxDQUFDLE1BQU0sRUFBRSxTQUFTLENBQUMsQ0FBQztJQUN6QyxPQUFPLEdBQVcsTUFBTSxDQUFDO0lBQ3pCLEtBQUssR0FBVyxJQUFJLENBQUM7SUFDckIsTUFBTSxHQUFXLElBQUksQ0FBQztJQUN0QixRQUFRLEdBQVksS0FBSyxDQUFDO0lBQzFCLFlBQW9CLFlBQWlDO1FBQWpDLGlCQUFZLEdBQVosWUFBWSxDQUFxQjtJQUFHLENBQUM7SUFDekQsUUFBUSxLQUFJLENBQUM7SUFDTCxTQUFTO1FBQ2YsT0FBTyxJQUFJLENBQUMsWUFBWTthQUNyQixlQUFlLEVBQUU7YUFDakIseUJBQXlCLENBQUMsSUFBSSxDQUFDLEtBQUssRUFBRSxJQUFJLENBQUMsTUFBTSxFQUFFLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQztJQUN0RSxDQUFDO0lBQ0QsUUFBUSxDQUFDLEtBQUs7UUFDWixJQUFJLENBQUMsS0FBSyxHQUFHLEtBQUssQ0FBQztRQUNuQixJQUFJLENBQUMsUUFBUSxHQUFHLENBQUMsSUFBSSxDQUFDLFNBQVMsRUFBRSxDQUFDO0lBQ3BDLENBQUM7SUFDRCxTQUFTLENBQUMsS0FBSztRQUNiLElBQUksQ0FBQyxNQUFNLEdBQUcsS0FBSyxDQUFDO1FBQ3BCLElBQUksQ0FBQyxRQUFRLEdBQUcsQ0FBQyxJQUFJLENBQUMsU0FBUyxFQUFFLENBQUM7SUFDcEMsQ0FBQztJQUNELFVBQVU7UUFDUixPQUFPLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLGdCQUFnQixDQUFDLENBQUMsQ0FBQyxnQkFBZ0IsQ0FBQztJQUM3RCxDQUFDO0lBQ0QsV0FBVztRQUNULElBQUksQ0FBQyxZQUFZO2FBQ2QsZUFBZSxFQUFFO2FBQ2pCLGNBQWMsQ0FBQyxJQUFJLENBQUMsS0FBSyxFQUFFLElBQUksQ0FBQyxNQUFNLEVBQUUsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDO0lBQzNELENBQUM7OEVBNUJVLG9CQUFvQjs2REFBcEIsb0JBQW9COztZQ1QvQixBQURGLHNDQUFpQyxnQkFDNkM7WUFBdEQsNklBQVMsd0JBQXdCLEtBQUM7WUFDdEQsNkJBQU87WUFBQSxxQkFBSztZQUFBLGlCQUFRO1lBQ3BCLG1DQVFFO1lBRkEsQUFEQSw0S0FBVSw0QkFBcUIsS0FBQywrSEFDdkIsd0JBQXdCLEtBQUM7WUFHdEMsQUFURSxpQkFRRSxFQUNLO1lBQ1QsaUNBQTRFO1lBQXRELDZJQUFTLHdCQUF3QixLQUFDO1lBQ3RELDZCQUFPO1lBQUEsc0JBQU07WUFBQSxpQkFBUTtZQUNyQixvQ0FRRTtZQUZBLEFBREEsK0tBQVUsOEJBQXVCLEtBQUMsZ0lBQ3pCLHdCQUF3QixLQUFDO1lBR3RDLEFBVEUsaUJBUUUsRUFDSztZQUNULGtDQUF5RDtZQUFuQyw4SUFBUyx3QkFBd0IsS0FBQztZQUN0RCwyQ0FBOEQ7WUFBN0MsOFBBQXFCO1lBQ3BDLGlHQUNHO1lBR1AsQUFERSxpQkFBa0IsRUFDWDtZQUNULGtDQUtDO1lBREMsd0lBQVMsaUJBQWEsS0FBQztZQUV2QixhQUNGO1lBQ0YsQUFERSxpQkFBUyxFQUNBO1lBQ1gsdUNBS2tCO1lBQ2xCLDRCQUFLO1lBQ0gsOEJBQThDO1lBQ2hELGlCQUFNOzs7WUF2Q0EsZUFBMEI7WUFBMUIsdUNBQTBCO1lBSDFCLDRCQUFjO1lBZWQsZUFBMEI7WUFBMUIsdUNBQTBCO1lBSDFCLDRCQUFjO1lBT0MsZUFBcUI7WUFBckIsMkNBQXFCO1lBQ0UsY0FBVztZQUFYLHNDQUFXO1lBT25ELGNBQXFCO1lBQXJCLHVDQUFxQjtZQUlyQixjQUNGO1lBREUsaURBQ0Y7WUFHQSxjQUEwQjtZQUExQiwyQ0FBMEI7OztpRkRoQ2Ysb0JBQW9CO2NBTmhDLFNBQVM7MkJBQ0Usa0JBQWtCLGlCQUdiLGlCQUFpQixDQUFDLElBQUk7O2tGQUUxQixvQkFBb0IiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIElucHV0LCBPbkluaXQsIFZpZXdFbmNhcHN1bGF0aW9uIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBGb3JtQ29udHJvbCwgVmFsaWRhdG9ycyB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IEV2ZW50RGlzcGxheVNlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi9zZXJ2aWNlcy9ldmVudC1kaXNwbGF5LnNlcnZpY2UnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdhcHAtbWFrZS1waWN0dXJlJyxcbiAgdGVtcGxhdGVVcmw6ICcuL21ha2UtcGljdHVyZS5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL21ha2UtcGljdHVyZS5jb21wb25lbnQuc2NzcyddLFxuICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lLFxufSlcbmV4cG9ydCBjbGFzcyBNYWtlUGljdHVyZUNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XG4gIGZpdHRpbmdzOiBzdHJpbmdbXSA9IFsnQ3JvcCcsICdTdHJldGNoJ107XG4gIGZpdHRpbmc6IHN0cmluZyA9ICdDcm9wJztcbiAgd2lkdGg6IG51bWJlciA9IDM4NDA7XG4gIGhlaWdodDogbnVtYmVyID0gMjE2MDtcbiAgZGlzYWJsZWQ6IGJvb2xlYW4gPSBmYWxzZTtcbiAgY29uc3RydWN0b3IocHJpdmF0ZSBldmVudERpc3BsYXk6IEV2ZW50RGlzcGxheVNlcnZpY2UpIHt9XG4gIG5nT25Jbml0KCkge31cbiAgcHJpdmF0ZSBjaGVja1NpemUoKSB7XG4gICAgcmV0dXJuIHRoaXMuZXZlbnREaXNwbGF5XG4gICAgICAuZ2V0VGhyZWVNYW5hZ2VyKClcbiAgICAgIC5jaGVja1NjcmVlblNob3RDYW52YXNTaXplKHRoaXMud2lkdGgsIHRoaXMuaGVpZ2h0LCB0aGlzLmZpdHRpbmcpO1xuICB9XG4gIHNldFdpZHRoKHZhbHVlKSB7XG4gICAgdGhpcy53aWR0aCA9IHZhbHVlO1xuICAgIHRoaXMuZGlzYWJsZWQgPSAhdGhpcy5jaGVja1NpemUoKTtcbiAgfVxuICBzZXRIZWlnaHQodmFsdWUpIHtcbiAgICB0aGlzLmhlaWdodCA9IHZhbHVlO1xuICAgIHRoaXMuZGlzYWJsZWQgPSAhdGhpcy5jaGVja1NpemUoKTtcbiAgfVxuICBidXR0b25UZXh0KCkge1xuICAgIHJldHVybiB0aGlzLmRpc2FibGVkID8gJ1NpemUgdG9vIGxhcmdlJyA6ICdDcmVhdGUgcGljdHVyZSc7XG4gIH1cbiAgbWFrZVBpY3R1cmUoKSB7XG4gICAgdGhpcy5ldmVudERpc3BsYXlcbiAgICAgIC5nZXRUaHJlZU1hbmFnZXIoKVxuICAgICAgLm1ha2VTY3JlZW5TaG90KHRoaXMud2lkdGgsIHRoaXMuaGVpZ2h0LCB0aGlzLmZpdHRpbmcpO1xuICB9XG59XG4iLCI8bWF0LW1lbnUgY2xhc3M9XCJtYXQtbWVudVwiICNtZW51PlxuICA8YnV0dG9uIG1hdC1tZW51LWl0ZW0gKGNsaWNrKT1cIiRldmVudC5zdG9wUHJvcGFnYXRpb24oKVwiIGNsYXNzPVwic2l6ZS1pbnB1dFwiPlxuICAgIDxsYWJlbD53aWR0aDwvbGFiZWw+XG4gICAgPGlucHV0XG4gICAgICAjd2lkdGhcbiAgICAgIG1hcElucHV0XG4gICAgICB0eXBlPVwibnVtYmVyXCJcbiAgICAgIFt2YWx1ZV09XCIzODQwXCJcbiAgICAgIChjaGFuZ2UpPVwic2V0V2lkdGgod2lkdGgudmFsdWUpXCJcbiAgICAgIChjbGljayk9XCIkZXZlbnQuc3RvcFByb3BhZ2F0aW9uKClcIlxuICAgICAgW2NsYXNzLmJhZFNpemVdPVwiZGlzYWJsZWRcIlxuICAgIC8+XG4gIDwvYnV0dG9uPlxuICA8YnV0dG9uIG1hdC1tZW51LWl0ZW0gKGNsaWNrKT1cIiRldmVudC5zdG9wUHJvcGFnYXRpb24oKVwiIGNsYXNzPVwic2l6ZS1pbnB1dFwiPlxuICAgIDxsYWJlbD5oZWlnaHQ8L2xhYmVsPlxuICAgIDxpbnB1dFxuICAgICAgI2hlaWdodFxuICAgICAgbWFwSW5wdXRcbiAgICAgIHR5cGU9XCJudW1iZXJcIlxuICAgICAgW3ZhbHVlXT1cIjI2MTBcIlxuICAgICAgKGNoYW5nZSk9XCJzZXRIZWlnaHQoaGVpZ2h0LnZhbHVlKVwiXG4gICAgICAoY2xpY2spPVwiJGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpXCJcbiAgICAgIFtjbGFzcy5iYWRTaXplXT1cImRpc2FibGVkXCJcbiAgICAvPlxuICA8L2J1dHRvbj5cbiAgPGJ1dHRvbiBtYXQtbWVudS1pdGVtIChjbGljayk9XCIkZXZlbnQuc3RvcFByb3BhZ2F0aW9uKClcIj5cbiAgICA8bWF0LXJhZGlvLWdyb3VwIFsobmdNb2RlbCldPVwiZml0dGluZ1wiIGNsYXNzPVwiZml0dGluZy1yYWRpb3NcIj5cbiAgICAgIDxtYXQtcmFkaW8tYnV0dG9uICpuZ0Zvcj1cImxldCBmaXR0aW5nIG9mIGZpdHRpbmdzXCIgW3ZhbHVlXT1cImZpdHRpbmdcIlxuICAgICAgICA+e3sgZml0dGluZyB9fVxuICAgICAgPC9tYXQtcmFkaW8tYnV0dG9uPlxuICAgIDwvbWF0LXJhZGlvLWdyb3VwPlxuICA8L2J1dHRvbj5cbiAgPGJ1dHRvblxuICAgIG1hdC1tZW51LWl0ZW1cbiAgICBbZGlzYWJsZWRdPVwiZGlzYWJsZWRcIlxuICAgIGNsYXNzPVwibWFrZS1waWN0dXJlXCJcbiAgICAoY2xpY2spPVwibWFrZVBpY3R1cmUoKVwiXG4gID5cbiAgICB7eyBidXR0b25UZXh0KCkgfX1cbiAgPC9idXR0b24+XG48L21hdC1tZW51PlxuPGFwcC1tZW51LXRvZ2dsZVxuICBbbWF0TWVudVRyaWdnZXJGb3JdPVwibWVudVwiXG4gIHRvb2x0aXA9XCJDcmVhdGVzIGEgcGljdHVyZSBmcm9tIHRoZSBjdXJyZW50IHZpZXc6IGRpcmVjdGx5IHNhdmVzIGEgcG5nIG9mIGFyYml0cmFyeSBzaXplIGZyb20gdGhlIGN1cnJlbnQgdmlld1wiXG4gIGljb249XCJwbmdcIlxuPlxuPC9hcHAtbWVudS10b2dnbGU+XG48ZGl2PlxuICA8Y2FudmFzIGhpZGRlbiBpZD1cInNjcmVlbnNob3RDYW52YXNcIj48L2NhbnZhcz5cbjwvZGl2PlxuIl19
@@ -0,0 +1,40 @@
1
+ import { Component, Input } from '@angular/core';
2
+ import * as i0 from "@angular/core";
3
+ import * as i1 from "@angular/common";
4
+ import * as i2 from "@angular/material/tooltip";
5
+ const _c0 = a0 => ({ disabled: a0 });
6
+ const _c1 = a0 => ({ "active-icon": a0 });
7
+ export class MenuToggleComponent {
8
+ icon;
9
+ active;
10
+ tooltip;
11
+ disabled = false;
12
+ static ɵfac = function MenuToggleComponent_Factory(t) { return new (t || MenuToggleComponent)(); };
13
+ static ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: MenuToggleComponent, selectors: [["app-menu-toggle"]], inputs: { icon: "icon", active: "active", tooltip: "tooltip", disabled: "disabled" }, decls: 3, vars: 10, consts: [["matTooltipPosition", "above", "matTooltipTouchGestures", "off", 1, "menu-toggle", 3, "ngClass", "matTooltip"], [1, "menu-toggle-icon", 3, "ngClass"]], template: function MenuToggleComponent_Template(rf, ctx) { if (rf & 1) {
14
+ i0.ɵɵelementStart(0, "button", 0);
15
+ i0.ɵɵnamespaceSVG();
16
+ i0.ɵɵelementStart(1, "svg", 1);
17
+ i0.ɵɵelement(2, "use");
18
+ i0.ɵɵelementEnd()();
19
+ } if (rf & 2) {
20
+ i0.ɵɵproperty("ngClass", i0.ɵɵpureFunction1(6, _c0, ctx.disabled))("matTooltip", ctx.tooltip);
21
+ i0.ɵɵadvance();
22
+ i0.ɵɵproperty("ngClass", i0.ɵɵpureFunction1(8, _c1, ctx.active));
23
+ i0.ɵɵadvance();
24
+ i0.ɵɵattributeInterpolate2("href", "assets/icons/", ctx.icon, ".svg#", ctx.icon, "");
25
+ } }, dependencies: [i1.NgClass, i2.MatTooltip], styles: ["[_nghost-%COMP%]{display:flex;margin:0 .6rem}[_nghost-%COMP%] .menu-toggle[_ngcontent-%COMP%]{display:flex;background:unset;border:none;height:2.5rem;width:2.5rem;min-height:2.5rem;min-width:2.5rem;padding:.65rem;cursor:pointer;align-self:center;transition:all .4s}[_nghost-%COMP%] .menu-toggle-icon[_ngcontent-%COMP%]{width:100%;height:100%}[_nghost-%COMP%] .menu-toggle-icon.active-icon[_ngcontent-%COMP%]{--phoenix-options-icon-path: #00bcd4}[_nghost-%COMP%] .menu-toggle[_ngcontent-%COMP%]:hover{background-color:var(--phoenix-options-icon-bg);border-radius:40%;transition:all .4s}[_nghost-%COMP%] .menu-toggle.disabled[_ngcontent-%COMP%]{cursor:not-allowed;opacity:.4}"] });
26
+ }
27
+ (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(MenuToggleComponent, [{
28
+ type: Component,
29
+ args: [{ selector: 'app-menu-toggle', template: "<button\n class=\"menu-toggle\"\n [ngClass]=\"{ disabled: disabled }\"\n [matTooltip]=\"tooltip\"\n matTooltipPosition=\"above\"\n matTooltipTouchGestures=\"off\"\n>\n <svg class=\"menu-toggle-icon\" [ngClass]=\"{ 'active-icon': active }\">\n <use attr.href=\"assets/icons/{{ icon }}.svg#{{ icon }}\"></use>\n </svg>\n</button>\n", styles: [":host{display:flex;margin:0 .6rem}:host .menu-toggle{display:flex;background:unset;border:none;height:2.5rem;width:2.5rem;min-height:2.5rem;min-width:2.5rem;padding:.65rem;cursor:pointer;align-self:center;transition:all .4s}:host .menu-toggle-icon{width:100%;height:100%}:host .menu-toggle-icon.active-icon{--phoenix-options-icon-path: #00bcd4}:host .menu-toggle:hover{background-color:var(--phoenix-options-icon-bg);border-radius:40%;transition:all .4s}:host .menu-toggle.disabled{cursor:not-allowed;opacity:.4}\n"] }]
30
+ }], null, { icon: [{
31
+ type: Input
32
+ }], active: [{
33
+ type: Input
34
+ }], tooltip: [{
35
+ type: Input
36
+ }], disabled: [{
37
+ type: Input
38
+ }] }); })();
39
+ (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(MenuToggleComponent, { className: "MenuToggleComponent", filePath: "components/ui-menu/menu-toggle/menu-toggle.component.ts", lineNumber: 8 }); })();
40
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWVudS10b2dnbGUuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vbGliL2NvbXBvbmVudHMvdWktbWVudS9tZW51LXRvZ2dsZS9tZW51LXRvZ2dsZS5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi9saWIvY29tcG9uZW50cy91aS1tZW51L21lbnUtdG9nZ2xlL21lbnUtdG9nZ2xlLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFFLE1BQU0sZUFBZSxDQUFDOzs7Ozs7QUFPakQsTUFBTSxPQUFPLG1CQUFtQjtJQUNyQixJQUFJLENBQVM7SUFDYixNQUFNLENBQVU7SUFDaEIsT0FBTyxDQUFTO0lBQ2hCLFFBQVEsR0FBWSxLQUFLLENBQUM7NkVBSnhCLG1CQUFtQjs2REFBbkIsbUJBQW1CO1lDUGhDLGlDQU1DOztZQUNDLDhCQUFvRTtZQUNsRSxzQkFBOEQ7WUFFbEUsQUFERSxpQkFBTSxFQUNDOztZQVBQLEFBREEsa0VBQWtDLDJCQUNaO1lBSVEsY0FBcUM7WUFBckMsZ0VBQXFDO1lBQzVELGNBQWtEO1lBQWxELG9GQUFrRDs7O2lGREQ5QyxtQkFBbUI7Y0FML0IsU0FBUzsyQkFDRSxpQkFBaUI7Z0JBS2xCLElBQUk7a0JBQVosS0FBSztZQUNHLE1BQU07a0JBQWQsS0FBSztZQUNHLE9BQU87a0JBQWYsS0FBSztZQUNHLFFBQVE7a0JBQWhCLEtBQUs7O2tGQUpLLG1CQUFtQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgSW5wdXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnYXBwLW1lbnUtdG9nZ2xlJyxcbiAgdGVtcGxhdGVVcmw6ICcuL21lbnUtdG9nZ2xlLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vbWVudS10b2dnbGUuY29tcG9uZW50LnNjc3MnXSxcbn0pXG5leHBvcnQgY2xhc3MgTWVudVRvZ2dsZUNvbXBvbmVudCB7XG4gIEBJbnB1dCgpIGljb246IHN0cmluZztcbiAgQElucHV0KCkgYWN0aXZlOiBib29sZWFuO1xuICBASW5wdXQoKSB0b29sdGlwOiBzdHJpbmc7XG4gIEBJbnB1dCgpIGRpc2FibGVkOiBib29sZWFuID0gZmFsc2U7XG59XG4iLCI8YnV0dG9uXG4gIGNsYXNzPVwibWVudS10b2dnbGVcIlxuICBbbmdDbGFzc109XCJ7IGRpc2FibGVkOiBkaXNhYmxlZCB9XCJcbiAgW21hdFRvb2x0aXBdPVwidG9vbHRpcFwiXG4gIG1hdFRvb2x0aXBQb3NpdGlvbj1cImFib3ZlXCJcbiAgbWF0VG9vbHRpcFRvdWNoR2VzdHVyZXM9XCJvZmZcIlxuPlxuICA8c3ZnIGNsYXNzPVwibWVudS10b2dnbGUtaWNvblwiIFtuZ0NsYXNzXT1cInsgJ2FjdGl2ZS1pY29uJzogYWN0aXZlIH1cIj5cbiAgICA8dXNlIGF0dHIuaHJlZj1cImFzc2V0cy9pY29ucy97eyBpY29uIH19LnN2ZyN7eyBpY29uIH19XCI+PC91c2U+XG4gIDwvc3ZnPlxuPC9idXR0b24+XG4iXX0=
@@ -0,0 +1,72 @@
1
+ import { Component } from '@angular/core';
2
+ import * as i0 from "@angular/core";
3
+ import * as i1 from "../../../services/event-display.service";
4
+ import * as i2 from "@angular/material/menu";
5
+ import * as i3 from "@angular/material/slider";
6
+ import * as i4 from "@angular/material/checkbox";
7
+ import * as i5 from "../menu-toggle/menu-toggle.component";
8
+ export class ObjectClippingComponent {
9
+ eventDisplay;
10
+ clippingEnabled;
11
+ startClippingAngle;
12
+ openingClippingAngle;
13
+ constructor(eventDisplay) {
14
+ this.eventDisplay = eventDisplay;
15
+ const stateManager = this.eventDisplay.getStateManager();
16
+ stateManager.clippingEnabled.onUpdate((clippingValue) => (this.clippingEnabled = clippingValue));
17
+ stateManager.startClippingAngle.onUpdate((value) => (this.startClippingAngle = value));
18
+ stateManager.openingClippingAngle.onUpdate((value) => (this.openingClippingAngle = value));
19
+ }
20
+ changeStartClippingAngle(startingAngle) {
21
+ this.eventDisplay.getUIManager().rotateStartAngleClipping(startingAngle);
22
+ }
23
+ changeOpeningClippingAngle(openingAngle) {
24
+ this.eventDisplay.getUIManager().rotateOpeningAngleClipping(openingAngle);
25
+ }
26
+ toggleClipping(change) {
27
+ const value = change.checked;
28
+ this.eventDisplay.getUIManager().setClipping(value);
29
+ this.clippingEnabled = value;
30
+ }
31
+ static ɵfac = function ObjectClippingComponent_Factory(t) { return new (t || ObjectClippingComponent)(i0.ɵɵdirectiveInject(i1.EventDisplayService)); };
32
+ static ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: ObjectClippingComponent, selectors: [["app-object-clipping"]], decls: 17, vars: 5, consts: [["menu", ""], ["clippingCheckbox", ""], ["startingAngleSlider", ""], ["openingAngleSlider", ""], [1, "mat-menu"], ["mat-menu-item", "", 3, "click"], [3, "click", "change", "checked"], ["mat-menu-item", "", 1, "slider-btn", 3, "focus"], ["min", "0", "max", "360", "step", "1", "thumbLabel", ""], ["matSliderThumb", "", 3, "valueChange", "value"], ["tooltip", "Geometry clipping", "icon", "clipping", 3, "matMenuTriggerFor", "active"]], template: function ObjectClippingComponent_Template(rf, ctx) { if (rf & 1) {
33
+ const _r1 = i0.ɵɵgetCurrentView();
34
+ i0.ɵɵelementStart(0, "mat-menu", 4, 0)(2, "button", 5);
35
+ i0.ɵɵlistener("click", function ObjectClippingComponent_Template_button_click_2_listener($event) { i0.ɵɵrestoreView(_r1); const clippingCheckbox_r2 = i0.ɵɵreference(4); $event.stopPropagation(); return i0.ɵɵresetView(clippingCheckbox_r2._inputElement.nativeElement.click()); });
36
+ i0.ɵɵelementStart(3, "mat-checkbox", 6, 1);
37
+ i0.ɵɵlistener("click", function ObjectClippingComponent_Template_mat_checkbox_click_3_listener($event) { i0.ɵɵrestoreView(_r1); return i0.ɵɵresetView($event.stopPropagation()); })("change", function ObjectClippingComponent_Template_mat_checkbox_change_3_listener($event) { i0.ɵɵrestoreView(_r1); return i0.ɵɵresetView(ctx.toggleClipping($event)); });
38
+ i0.ɵɵtext(5, " Clipping ");
39
+ i0.ɵɵelementEnd()();
40
+ i0.ɵɵelementStart(6, "button", 7);
41
+ i0.ɵɵlistener("focus", function ObjectClippingComponent_Template_button_focus_6_listener() { i0.ɵɵrestoreView(_r1); const startingAngleSlider_r3 = i0.ɵɵreference(9); return i0.ɵɵresetView(startingAngleSlider_r3.focus()); });
42
+ i0.ɵɵelementStart(7, "mat-slider", 8)(8, "input", 9, 2);
43
+ i0.ɵɵlistener("valueChange", function ObjectClippingComponent_Template_input_valueChange_8_listener($event) { i0.ɵɵrestoreView(_r1); return i0.ɵɵresetView(ctx.changeStartClippingAngle($event)); });
44
+ i0.ɵɵelementEnd()();
45
+ i0.ɵɵtext(10, " Start Angle ");
46
+ i0.ɵɵelementEnd();
47
+ i0.ɵɵelementStart(11, "button", 7);
48
+ i0.ɵɵlistener("focus", function ObjectClippingComponent_Template_button_focus_11_listener() { i0.ɵɵrestoreView(_r1); const openingAngleSlider_r4 = i0.ɵɵreference(14); return i0.ɵɵresetView(openingAngleSlider_r4.focus()); });
49
+ i0.ɵɵelementStart(12, "mat-slider", 8)(13, "input", 9, 3);
50
+ i0.ɵɵlistener("valueChange", function ObjectClippingComponent_Template_input_valueChange_13_listener($event) { i0.ɵɵrestoreView(_r1); return i0.ɵɵresetView(ctx.changeOpeningClippingAngle($event)); });
51
+ i0.ɵɵelementEnd()();
52
+ i0.ɵɵtext(15, " Opening Angle ");
53
+ i0.ɵɵelementEnd()();
54
+ i0.ɵɵelement(16, "app-menu-toggle", 10);
55
+ } if (rf & 2) {
56
+ const menu_r5 = i0.ɵɵreference(1);
57
+ i0.ɵɵadvance(3);
58
+ i0.ɵɵproperty("checked", ctx.clippingEnabled);
59
+ i0.ɵɵadvance(5);
60
+ i0.ɵɵproperty("value", ctx.startClippingAngle);
61
+ i0.ɵɵadvance(5);
62
+ i0.ɵɵproperty("value", ctx.openingClippingAngle);
63
+ i0.ɵɵadvance(3);
64
+ i0.ɵɵproperty("matMenuTriggerFor", menu_r5)("active", ctx.clippingEnabled);
65
+ } }, dependencies: [i2.MatMenu, i2.MatMenuItem, i2.MatMenuTrigger, i3.MatSlider, i3.MatSliderThumb, i4.MatCheckbox, i5.MenuToggleComponent], styles: [".slider-btn[_ngcontent-%COMP%]{overflow:visible}mat-slider[_ngcontent-%COMP%]{margin-left:.75rem;margin-right:.75rem}"] });
66
+ }
67
+ (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(ObjectClippingComponent, [{
68
+ type: Component,
69
+ args: [{ selector: 'app-object-clipping', template: "<mat-menu class=\"mat-menu\" #menu>\n <button\n mat-menu-item\n (click)=\"\n $event.stopPropagation();\n clippingCheckbox._inputElement.nativeElement.click()\n \"\n >\n <mat-checkbox\n #clippingCheckbox\n [checked]=\"clippingEnabled\"\n (click)=\"$event.stopPropagation()\"\n (change)=\"toggleClipping($event)\"\n >\n Clipping\n </mat-checkbox>\n </button>\n <button\n class=\"slider-btn\"\n mat-menu-item\n (focus)=\"startingAngleSlider.focus()\"\n >\n <mat-slider min=\"0\" max=\"360\" step=\"1\" thumbLabel>\n <input\n #startingAngleSlider\n matSliderThumb\n [value]=\"startClippingAngle\"\n (valueChange)=\"changeStartClippingAngle($event)\"\n />\n </mat-slider>\n Start Angle\n </button>\n <button class=\"slider-btn\" mat-menu-item (focus)=\"openingAngleSlider.focus()\">\n <mat-slider min=\"0\" max=\"360\" step=\"1\" thumbLabel>\n <input\n #openingAngleSlider\n matSliderThumb\n [value]=\"openingClippingAngle\"\n (valueChange)=\"changeOpeningClippingAngle($event)\"\n />\n </mat-slider>\n Opening Angle\n </button>\n</mat-menu>\n\n<app-menu-toggle\n [matMenuTriggerFor]=\"menu\"\n tooltip=\"Geometry clipping\"\n icon=\"clipping\"\n [active]=\"clippingEnabled\"\n>\n</app-menu-toggle>\n", styles: [".slider-btn{overflow:visible}mat-slider{margin-left:.75rem;margin-right:.75rem}\n"] }]
70
+ }], () => [{ type: i1.EventDisplayService }], null); })();
71
+ (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(ObjectClippingComponent, { className: "ObjectClippingComponent", filePath: "components/ui-menu/object-clipping/object-clipping.component.ts", lineNumber: 10 }); })();
72
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib2JqZWN0LWNsaXBwaW5nLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL2xpYi9jb21wb25lbnRzL3VpLW1lbnUvb2JqZWN0LWNsaXBwaW5nL29iamVjdC1jbGlwcGluZy5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi9saWIvY29tcG9uZW50cy91aS1tZW51L29iamVjdC1jbGlwcGluZy9vYmplY3QtY2xpcHBpbmcuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLGVBQWUsQ0FBQzs7Ozs7OztBQVMxQyxNQUFNLE9BQU8sdUJBQXVCO0lBS2Q7SUFKcEIsZUFBZSxDQUFVO0lBQ3pCLGtCQUFrQixDQUFTO0lBQzNCLG9CQUFvQixDQUFTO0lBRTdCLFlBQW9CLFlBQWlDO1FBQWpDLGlCQUFZLEdBQVosWUFBWSxDQUFxQjtRQUNuRCxNQUFNLFlBQVksR0FBRyxJQUFJLENBQUMsWUFBWSxDQUFDLGVBQWUsRUFBRSxDQUFDO1FBQ3pELFlBQVksQ0FBQyxlQUFlLENBQUMsUUFBUSxDQUNuQyxDQUFDLGFBQWEsRUFBRSxFQUFFLENBQUMsQ0FBQyxJQUFJLENBQUMsZUFBZSxHQUFHLGFBQWEsQ0FBQyxDQUMxRCxDQUFDO1FBQ0YsWUFBWSxDQUFDLGtCQUFrQixDQUFDLFFBQVEsQ0FDdEMsQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUFDLENBQUMsSUFBSSxDQUFDLGtCQUFrQixHQUFHLEtBQUssQ0FBQyxDQUM3QyxDQUFDO1FBQ0YsWUFBWSxDQUFDLG9CQUFvQixDQUFDLFFBQVEsQ0FDeEMsQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUFDLENBQUMsSUFBSSxDQUFDLG9CQUFvQixHQUFHLEtBQUssQ0FBQyxDQUMvQyxDQUFDO0lBQ0osQ0FBQztJQUVELHdCQUF3QixDQUFDLGFBQXFCO1FBQzVDLElBQUksQ0FBQyxZQUFZLENBQUMsWUFBWSxFQUFFLENBQUMsd0JBQXdCLENBQUMsYUFBYSxDQUFDLENBQUM7SUFDM0UsQ0FBQztJQUVELDBCQUEwQixDQUFDLFlBQW9CO1FBQzdDLElBQUksQ0FBQyxZQUFZLENBQUMsWUFBWSxFQUFFLENBQUMsMEJBQTBCLENBQUMsWUFBWSxDQUFDLENBQUM7SUFDNUUsQ0FBQztJQUVELGNBQWMsQ0FBQyxNQUF5QjtRQUN0QyxNQUFNLEtBQUssR0FBRyxNQUFNLENBQUMsT0FBTyxDQUFDO1FBQzdCLElBQUksQ0FBQyxZQUFZLENBQUMsWUFBWSxFQUFFLENBQUMsV0FBVyxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQ3BELElBQUksQ0FBQyxlQUFlLEdBQUcsS0FBSyxDQUFDO0lBQy9CLENBQUM7aUZBOUJVLHVCQUF1Qjs2REFBdkIsdUJBQXVCOztZQ1JsQyxBQURGLHNDQUFpQyxnQkFPOUI7WUFKQyx5S0FDUyx3QkFDUix3QkFBUSx1REFFYixLQURLO1lBRUQsMENBS0M7WUFEQyxBQURBLHNKQUFTLHdCQUF3QixLQUFDLDJJQUN4QiwwQkFBc0IsS0FBQztZQUVqQywwQkFDRjtZQUNGLEFBREUsaUJBQWUsRUFDUjtZQUNULGlDQUlDO1lBREMsNExBQVMsOEJBQTJCLEtBQUM7WUFHbkMsQUFERixxQ0FBa0Qsa0JBTTlDO1lBREEsMkpBQWUsb0NBQWdDLEtBQUM7WUFFcEQsQUFORSxpQkFLRSxFQUNTO1lBQ2IsOEJBQ0Y7WUFBQSxpQkFBUztZQUNULGtDQUE4RTtZQUFyQyw2TEFBUyw2QkFBMEIsS0FBQztZQUV6RSxBQURGLHNDQUFrRCxtQkFNOUM7WUFEQSw0SkFBZSxzQ0FBa0MsS0FBQztZQUV0RCxBQU5FLGlCQUtFLEVBQ1M7WUFDYixnQ0FDRjtZQUNGLEFBREUsaUJBQVMsRUFDQTtZQUVYLHVDQU1rQjs7O1lBekNaLGVBQTJCO1lBQTNCLDZDQUEyQjtZQWdCekIsZUFBNEI7WUFBNUIsOENBQTRCO1lBVzVCLGVBQThCO1lBQTlCLGdEQUE4QjtZQVNwQyxlQUEwQjtZQUcxQixBQUhBLDJDQUEwQiwrQkFHQTs7O2lGRHhDZix1QkFBdUI7Y0FMbkMsU0FBUzsyQkFDRSxxQkFBcUI7O2tGQUlwQix1QkFBdUIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IE1hdENoZWNrYm94Q2hhbmdlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvY2hlY2tib3gnO1xuaW1wb3J0IHsgRXZlbnREaXNwbGF5U2VydmljZSB9IGZyb20gJy4uLy4uLy4uL3NlcnZpY2VzL2V2ZW50LWRpc3BsYXkuc2VydmljZSc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2FwcC1vYmplY3QtY2xpcHBpbmcnLFxuICB0ZW1wbGF0ZVVybDogJy4vb2JqZWN0LWNsaXBwaW5nLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vb2JqZWN0LWNsaXBwaW5nLmNvbXBvbmVudC5zY3NzJ10sXG59KVxuZXhwb3J0IGNsYXNzIE9iamVjdENsaXBwaW5nQ29tcG9uZW50IHtcbiAgY2xpcHBpbmdFbmFibGVkOiBib29sZWFuO1xuICBzdGFydENsaXBwaW5nQW5nbGU6IG51bWJlcjtcbiAgb3BlbmluZ0NsaXBwaW5nQW5nbGU6IG51bWJlcjtcblxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIGV2ZW50RGlzcGxheTogRXZlbnREaXNwbGF5U2VydmljZSkge1xuICAgIGNvbnN0IHN0YXRlTWFuYWdlciA9IHRoaXMuZXZlbnREaXNwbGF5LmdldFN0YXRlTWFuYWdlcigpO1xuICAgIHN0YXRlTWFuYWdlci5jbGlwcGluZ0VuYWJsZWQub25VcGRhdGUoXG4gICAgICAoY2xpcHBpbmdWYWx1ZSkgPT4gKHRoaXMuY2xpcHBpbmdFbmFibGVkID0gY2xpcHBpbmdWYWx1ZSksXG4gICAgKTtcbiAgICBzdGF0ZU1hbmFnZXIuc3RhcnRDbGlwcGluZ0FuZ2xlLm9uVXBkYXRlKFxuICAgICAgKHZhbHVlKSA9PiAodGhpcy5zdGFydENsaXBwaW5nQW5nbGUgPSB2YWx1ZSksXG4gICAgKTtcbiAgICBzdGF0ZU1hbmFnZXIub3BlbmluZ0NsaXBwaW5nQW5nbGUub25VcGRhdGUoXG4gICAgICAodmFsdWUpID0+ICh0aGlzLm9wZW5pbmdDbGlwcGluZ0FuZ2xlID0gdmFsdWUpLFxuICAgICk7XG4gIH1cblxuICBjaGFuZ2VTdGFydENsaXBwaW5nQW5nbGUoc3RhcnRpbmdBbmdsZTogbnVtYmVyKSB7XG4gICAgdGhpcy5ldmVudERpc3BsYXkuZ2V0VUlNYW5hZ2VyKCkucm90YXRlU3RhcnRBbmdsZUNsaXBwaW5nKHN0YXJ0aW5nQW5nbGUpO1xuICB9XG5cbiAgY2hhbmdlT3BlbmluZ0NsaXBwaW5nQW5nbGUob3BlbmluZ0FuZ2xlOiBudW1iZXIpIHtcbiAgICB0aGlzLmV2ZW50RGlzcGxheS5nZXRVSU1hbmFnZXIoKS5yb3RhdGVPcGVuaW5nQW5nbGVDbGlwcGluZyhvcGVuaW5nQW5nbGUpO1xuICB9XG5cbiAgdG9nZ2xlQ2xpcHBpbmcoY2hhbmdlOiBNYXRDaGVja2JveENoYW5nZSkge1xuICAgIGNvbnN0IHZhbHVlID0gY2hhbmdlLmNoZWNrZWQ7XG4gICAgdGhpcy5ldmVudERpc3BsYXkuZ2V0VUlNYW5hZ2VyKCkuc2V0Q2xpcHBpbmcodmFsdWUpO1xuICAgIHRoaXMuY2xpcHBpbmdFbmFibGVkID0gdmFsdWU7XG4gIH1cbn1cbiIsIjxtYXQtbWVudSBjbGFzcz1cIm1hdC1tZW51XCIgI21lbnU+XG4gIDxidXR0b25cbiAgICBtYXQtbWVudS1pdGVtXG4gICAgKGNsaWNrKT1cIlxuICAgICAgJGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xuICAgICAgY2xpcHBpbmdDaGVja2JveC5faW5wdXRFbGVtZW50Lm5hdGl2ZUVsZW1lbnQuY2xpY2soKVxuICAgIFwiXG4gID5cbiAgICA8bWF0LWNoZWNrYm94XG4gICAgICAjY2xpcHBpbmdDaGVja2JveFxuICAgICAgW2NoZWNrZWRdPVwiY2xpcHBpbmdFbmFibGVkXCJcbiAgICAgIChjbGljayk9XCIkZXZlbnQuc3RvcFByb3BhZ2F0aW9uKClcIlxuICAgICAgKGNoYW5nZSk9XCJ0b2dnbGVDbGlwcGluZygkZXZlbnQpXCJcbiAgICA+XG4gICAgICBDbGlwcGluZ1xuICAgIDwvbWF0LWNoZWNrYm94PlxuICA8L2J1dHRvbj5cbiAgPGJ1dHRvblxuICAgIGNsYXNzPVwic2xpZGVyLWJ0blwiXG4gICAgbWF0LW1lbnUtaXRlbVxuICAgIChmb2N1cyk9XCJzdGFydGluZ0FuZ2xlU2xpZGVyLmZvY3VzKClcIlxuICA+XG4gICAgPG1hdC1zbGlkZXIgbWluPVwiMFwiIG1heD1cIjM2MFwiIHN0ZXA9XCIxXCIgdGh1bWJMYWJlbD5cbiAgICAgIDxpbnB1dFxuICAgICAgICAjc3RhcnRpbmdBbmdsZVNsaWRlclxuICAgICAgICBtYXRTbGlkZXJUaHVtYlxuICAgICAgICBbdmFsdWVdPVwic3RhcnRDbGlwcGluZ0FuZ2xlXCJcbiAgICAgICAgKHZhbHVlQ2hhbmdlKT1cImNoYW5nZVN0YXJ0Q2xpcHBpbmdBbmdsZSgkZXZlbnQpXCJcbiAgICAgIC8+XG4gICAgPC9tYXQtc2xpZGVyPlxuICAgIFN0YXJ0IEFuZ2xlXG4gIDwvYnV0dG9uPlxuICA8YnV0dG9uIGNsYXNzPVwic2xpZGVyLWJ0blwiIG1hdC1tZW51LWl0ZW0gKGZvY3VzKT1cIm9wZW5pbmdBbmdsZVNsaWRlci5mb2N1cygpXCI+XG4gICAgPG1hdC1zbGlkZXIgbWluPVwiMFwiIG1heD1cIjM2MFwiIHN0ZXA9XCIxXCIgdGh1bWJMYWJlbD5cbiAgICAgIDxpbnB1dFxuICAgICAgICAjb3BlbmluZ0FuZ2xlU2xpZGVyXG4gICAgICAgIG1hdFNsaWRlclRodW1iXG4gICAgICAgIFt2YWx1ZV09XCJvcGVuaW5nQ2xpcHBpbmdBbmdsZVwiXG4gICAgICAgICh2YWx1ZUNoYW5nZSk9XCJjaGFuZ2VPcGVuaW5nQ2xpcHBpbmdBbmdsZSgkZXZlbnQpXCJcbiAgICAgIC8+XG4gICAgPC9tYXQtc2xpZGVyPlxuICAgIE9wZW5pbmcgQW5nbGVcbiAgPC9idXR0b24+XG48L21hdC1tZW51PlxuXG48YXBwLW1lbnUtdG9nZ2xlXG4gIFttYXRNZW51VHJpZ2dlckZvcl09XCJtZW51XCJcbiAgdG9vbHRpcD1cIkdlb21ldHJ5IGNsaXBwaW5nXCJcbiAgaWNvbj1cImNsaXBwaW5nXCJcbiAgW2FjdGl2ZV09XCJjbGlwcGluZ0VuYWJsZWRcIlxuPlxuPC9hcHAtbWVudS10b2dnbGU+XG4iXX0=
@@ -0,0 +1,59 @@
1
+ import { Component, Input } from '@angular/core';
2
+ import * as i0 from "@angular/core";
3
+ import * as i1 from "../../../../services/event-display.service";
4
+ import * as i2 from "@angular/common";
5
+ import * as i3 from "../../overlay/overlay.component";
6
+ import * as i4 from "../../../../services/extras/attribute.pipe";
7
+ function ObjectSelectionOverlayComponent_div_1_div_1_Template(rf, ctx) { if (rf & 1) {
8
+ i0.ɵɵelementStart(0, "div", 4)(1, "strong");
9
+ i0.ɵɵtext(2);
10
+ i0.ɵɵelementEnd();
11
+ i0.ɵɵtext(3);
12
+ i0.ɵɵpipe(4, "attributePipe");
13
+ i0.ɵɵelementEnd();
14
+ } if (rf & 2) {
15
+ const attribute_r1 = ctx.$implicit;
16
+ i0.ɵɵadvance(2);
17
+ i0.ɵɵtextInterpolate(attribute_r1.attributeName);
18
+ i0.ɵɵadvance();
19
+ i0.ɵɵtextInterpolate1(" : ", i0.ɵɵpipeBind1(4, 2, attribute_r1.attributeValue), " ");
20
+ } }
21
+ function ObjectSelectionOverlayComponent_div_1_Template(rf, ctx) { if (rf & 1) {
22
+ i0.ɵɵelementStart(0, "div", 2);
23
+ i0.ɵɵtemplate(1, ObjectSelectionOverlayComponent_div_1_div_1_Template, 5, 4, "div", 3);
24
+ i0.ɵɵelementEnd();
25
+ } if (rf & 2) {
26
+ const ctx_r1 = i0.ɵɵnextContext();
27
+ i0.ɵɵadvance();
28
+ i0.ɵɵproperty("ngForOf", ctx_r1.selectedObject.attributes);
29
+ } }
30
+ export class ObjectSelectionOverlayComponent {
31
+ eventDisplay;
32
+ // Attributes for displaying the information of selected objects
33
+ hiddenSelectedInfo;
34
+ selectedObject = { name: 'Object', attributes: [] };
35
+ constructor(eventDisplay) {
36
+ this.eventDisplay = eventDisplay;
37
+ }
38
+ ngOnInit() {
39
+ this.eventDisplay.allowSelection(this.selectedObject);
40
+ }
41
+ static ɵfac = function ObjectSelectionOverlayComponent_Factory(t) { return new (t || ObjectSelectionOverlayComponent)(i0.ɵɵdirectiveInject(i1.EventDisplayService)); };
42
+ static ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: ObjectSelectionOverlayComponent, selectors: [["app-object-selection-overlay"]], inputs: { hiddenSelectedInfo: "hiddenSelectedInfo" }, decls: 2, vars: 3, consts: [["icon", "cursor", 3, "overlayTitle", "active"], ["id", "selectedObjectPanelBody", "class", "m-1", 4, "ngIf"], ["id", "selectedObjectPanelBody", 1, "m-1"], ["class", "attributeField", 4, "ngFor", "ngForOf"], [1, "attributeField"]], template: function ObjectSelectionOverlayComponent_Template(rf, ctx) { if (rf & 1) {
43
+ i0.ɵɵelementStart(0, "app-overlay", 0);
44
+ i0.ɵɵtemplate(1, ObjectSelectionOverlayComponent_div_1_Template, 2, 1, "div", 1);
45
+ i0.ɵɵelementEnd();
46
+ } if (rf & 2) {
47
+ i0.ɵɵproperty("overlayTitle", ctx.selectedObject.name)("active", !ctx.hiddenSelectedInfo);
48
+ i0.ɵɵadvance();
49
+ i0.ɵɵproperty("ngIf", ctx.selectedObject.attributes.length > 0);
50
+ } }, dependencies: [i2.NgForOf, i2.NgIf, i3.OverlayComponent, i4.AttributePipe], styles: ["#selectedObjectPanelBody[_ngcontent-%COMP%]{padding:0 .8em;overflow:auto;max-width:300px;max-height:16rem;min-width:7rem}"] });
51
+ }
52
+ (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(ObjectSelectionOverlayComponent, [{
53
+ type: Component,
54
+ args: [{ selector: 'app-object-selection-overlay', template: "<app-overlay\n icon=\"cursor\"\n [overlayTitle]=\"selectedObject.name\"\n [active]=\"!hiddenSelectedInfo\"\n>\n <div\n id=\"selectedObjectPanelBody\"\n class=\"m-1\"\n *ngIf=\"selectedObject.attributes.length > 0\"\n >\n <div\n *ngFor=\"let attribute of selectedObject.attributes\"\n class=\"attributeField\"\n >\n <strong>{{ attribute.attributeName }}</strong>\n : {{ attribute.attributeValue | attributePipe }}\n </div>\n </div>\n</app-overlay>\n", styles: ["#selectedObjectPanelBody{padding:0 .8em;overflow:auto;max-width:300px;max-height:16rem;min-width:7rem}\n"] }]
55
+ }], () => [{ type: i1.EventDisplayService }], { hiddenSelectedInfo: [{
56
+ type: Input
57
+ }] }); })();
58
+ (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(ObjectSelectionOverlayComponent, { className: "ObjectSelectionOverlayComponent", filePath: "components/ui-menu/object-selection/object-selection-overlay/object-selection-overlay.component.ts", lineNumber: 9 }); })();
59
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib2JqZWN0LXNlbGVjdGlvbi1vdmVybGF5LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL2xpYi9jb21wb25lbnRzL3VpLW1lbnUvb2JqZWN0LXNlbGVjdGlvbi9vYmplY3Qtc2VsZWN0aW9uLW92ZXJsYXkvb2JqZWN0LXNlbGVjdGlvbi1vdmVybGF5LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL2xpYi9jb21wb25lbnRzL3VpLW1lbnUvb2JqZWN0LXNlbGVjdGlvbi9vYmplY3Qtc2VsZWN0aW9uLW92ZXJsYXkvb2JqZWN0LXNlbGVjdGlvbi1vdmVybGF5LmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQVUsS0FBSyxFQUFFLE1BQU0sZUFBZSxDQUFDOzs7Ozs7O0lDY25ELEFBSkYsOEJBR0MsYUFDUztJQUFBLFlBQTZCO0lBQUEsaUJBQVM7SUFDOUMsWUFDRjs7SUFBQSxpQkFBTTs7O0lBRkksZUFBNkI7SUFBN0IsZ0RBQTZCO0lBQ3JDLGNBQ0Y7SUFERSxvRkFDRjs7O0lBWEYsOEJBSUM7SUFDQyxzRkFHQztJQUlILGlCQUFNOzs7SUFOb0IsY0FBNEI7SUFBNUIsMERBQTRCOztBREh4RCxNQUFNLE9BQU8sK0JBQStCO0lBS3RCO0lBSnBCLGdFQUFnRTtJQUN2RCxrQkFBa0IsQ0FBVTtJQUNyQyxjQUFjLEdBQUcsRUFBRSxJQUFJLEVBQUUsUUFBUSxFQUFFLFVBQVUsRUFBRSxFQUFFLEVBQUUsQ0FBQztJQUVwRCxZQUFvQixZQUFpQztRQUFqQyxpQkFBWSxHQUFaLFlBQVksQ0FBcUI7SUFBRyxDQUFDO0lBRXpELFFBQVE7UUFDTixJQUFJLENBQUMsWUFBWSxDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQUMsY0FBYyxDQUFDLENBQUM7SUFDeEQsQ0FBQzt5RkFUVSwrQkFBK0I7NkRBQS9CLCtCQUErQjtZQ1I1QyxzQ0FJQztZQUNDLGdGQUlDO1lBU0gsaUJBQWM7O1lBZlosQUFEQSxzREFBb0MsbUNBQ047WUFLM0IsY0FBMEM7WUFBMUMsK0RBQTBDOzs7aUZEQWxDLCtCQUErQjtjQUwzQyxTQUFTOzJCQUNFLDhCQUE4QjtvREFNL0Isa0JBQWtCO2tCQUExQixLQUFLOztrRkFGSywrQkFBK0IiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIE9uSW5pdCwgSW5wdXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEV2ZW50RGlzcGxheVNlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi8uLi9zZXJ2aWNlcy9ldmVudC1kaXNwbGF5LnNlcnZpY2UnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdhcHAtb2JqZWN0LXNlbGVjdGlvbi1vdmVybGF5JyxcbiAgdGVtcGxhdGVVcmw6ICcuL29iamVjdC1zZWxlY3Rpb24tb3ZlcmxheS5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL29iamVjdC1zZWxlY3Rpb24tb3ZlcmxheS5jb21wb25lbnQuc2NzcyddLFxufSlcbmV4cG9ydCBjbGFzcyBPYmplY3RTZWxlY3Rpb25PdmVybGF5Q29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcbiAgLy8gQXR0cmlidXRlcyBmb3IgZGlzcGxheWluZyB0aGUgaW5mb3JtYXRpb24gb2Ygc2VsZWN0ZWQgb2JqZWN0c1xuICBASW5wdXQoKSBoaWRkZW5TZWxlY3RlZEluZm86IGJvb2xlYW47XG4gIHNlbGVjdGVkT2JqZWN0ID0geyBuYW1lOiAnT2JqZWN0JywgYXR0cmlidXRlczogW10gfTtcblxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIGV2ZW50RGlzcGxheTogRXZlbnREaXNwbGF5U2VydmljZSkge31cblxuICBuZ09uSW5pdCgpIHtcbiAgICB0aGlzLmV2ZW50RGlzcGxheS5hbGxvd1NlbGVjdGlvbih0aGlzLnNlbGVjdGVkT2JqZWN0KTtcbiAgfVxufVxuIiwiPGFwcC1vdmVybGF5XG4gIGljb249XCJjdXJzb3JcIlxuICBbb3ZlcmxheVRpdGxlXT1cInNlbGVjdGVkT2JqZWN0Lm5hbWVcIlxuICBbYWN0aXZlXT1cIiFoaWRkZW5TZWxlY3RlZEluZm9cIlxuPlxuICA8ZGl2XG4gICAgaWQ9XCJzZWxlY3RlZE9iamVjdFBhbmVsQm9keVwiXG4gICAgY2xhc3M9XCJtLTFcIlxuICAgICpuZ0lmPVwic2VsZWN0ZWRPYmplY3QuYXR0cmlidXRlcy5sZW5ndGggPiAwXCJcbiAgPlxuICAgIDxkaXZcbiAgICAgICpuZ0Zvcj1cImxldCBhdHRyaWJ1dGUgb2Ygc2VsZWN0ZWRPYmplY3QuYXR0cmlidXRlc1wiXG4gICAgICBjbGFzcz1cImF0dHJpYnV0ZUZpZWxkXCJcbiAgICA+XG4gICAgICA8c3Ryb25nPnt7IGF0dHJpYnV0ZS5hdHRyaWJ1dGVOYW1lIH19PC9zdHJvbmc+XG4gICAgICA6IHt7IGF0dHJpYnV0ZS5hdHRyaWJ1dGVWYWx1ZSB8IGF0dHJpYnV0ZVBpcGUgfX1cbiAgICA8L2Rpdj5cbiAgPC9kaXY+XG48L2FwcC1vdmVybGF5PlxuIl19
@@ -0,0 +1,46 @@
1
+ import { Component } from '@angular/core';
2
+ import { ComponentPortal } from '@angular/cdk/portal';
3
+ import { ObjectSelectionOverlayComponent } from './object-selection-overlay/object-selection-overlay.component';
4
+ import * as i0 from "@angular/core";
5
+ import * as i1 from "@angular/cdk/overlay";
6
+ import * as i2 from "../../../services/event-display.service";
7
+ import * as i3 from "../menu-toggle/menu-toggle.component";
8
+ export class ObjectSelectionComponent {
9
+ overlay;
10
+ eventDisplay;
11
+ // Attributes for displaying the information of selected objects
12
+ hiddenSelectedInfo = true;
13
+ overlayWindow;
14
+ constructor(overlay, eventDisplay) {
15
+ this.overlay = overlay;
16
+ this.eventDisplay = eventDisplay;
17
+ }
18
+ ngOnInit() {
19
+ const overlayRef = this.overlay.create();
20
+ const overlayPortal = new ComponentPortal(ObjectSelectionOverlayComponent);
21
+ this.overlayWindow = overlayRef.attach(overlayPortal);
22
+ this.overlayWindow.instance.hiddenSelectedInfo = this.hiddenSelectedInfo;
23
+ }
24
+ ngOnDestroy() {
25
+ this.overlayWindow.destroy();
26
+ }
27
+ toggleOverlay() {
28
+ this.hiddenSelectedInfo = !this.hiddenSelectedInfo;
29
+ this.overlayWindow.instance.hiddenSelectedInfo = this.hiddenSelectedInfo;
30
+ this.eventDisplay.enableSelecting(!this.hiddenSelectedInfo);
31
+ }
32
+ static ɵfac = function ObjectSelectionComponent_Factory(t) { return new (t || ObjectSelectionComponent)(i0.ɵɵdirectiveInject(i1.Overlay), i0.ɵɵdirectiveInject(i2.EventDisplayService)); };
33
+ static ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: ObjectSelectionComponent, selectors: [["app-object-selection"]], decls: 1, vars: 1, consts: [["tooltip", "Object selection", "icon", "cursor", 3, "click", "active"]], template: function ObjectSelectionComponent_Template(rf, ctx) { if (rf & 1) {
34
+ i0.ɵɵelementStart(0, "app-menu-toggle", 0);
35
+ i0.ɵɵlistener("click", function ObjectSelectionComponent_Template_app_menu_toggle_click_0_listener() { return ctx.toggleOverlay(); });
36
+ i0.ɵɵelementEnd();
37
+ } if (rf & 2) {
38
+ i0.ɵɵproperty("active", !ctx.hiddenSelectedInfo);
39
+ } }, dependencies: [i3.MenuToggleComponent] });
40
+ }
41
+ (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(ObjectSelectionComponent, [{
42
+ type: Component,
43
+ args: [{ selector: 'app-object-selection', template: "<app-menu-toggle\n tooltip=\"Object selection\"\n icon=\"cursor\"\n [active]=\"!hiddenSelectedInfo\"\n (click)=\"toggleOverlay()\"\n>\n</app-menu-toggle>\n" }]
44
+ }], () => [{ type: i1.Overlay }, { type: i2.EventDisplayService }], null); })();
45
+ (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(ObjectSelectionComponent, { className: "ObjectSelectionComponent", filePath: "components/ui-menu/object-selection/object-selection.component.ts", lineNumber: 12 }); })();
46
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib2JqZWN0LXNlbGVjdGlvbi5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9saWIvY29tcG9uZW50cy91aS1tZW51L29iamVjdC1zZWxlY3Rpb24vb2JqZWN0LXNlbGVjdGlvbi5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi9saWIvY29tcG9uZW50cy91aS1tZW51L29iamVjdC1zZWxlY3Rpb24vb2JqZWN0LXNlbGVjdGlvbi5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFtQyxNQUFNLGVBQWUsQ0FBQztBQUUzRSxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDdEQsT0FBTyxFQUFFLCtCQUErQixFQUFFLE1BQU0sK0RBQStELENBQUM7Ozs7O0FBUWhILE1BQU0sT0FBTyx3QkFBd0I7SUFNekI7SUFDQTtJQU5WLGdFQUFnRTtJQUNoRSxrQkFBa0IsR0FBRyxJQUFJLENBQUM7SUFDMUIsYUFBYSxDQUFnRDtJQUU3RCxZQUNVLE9BQWdCLEVBQ2hCLFlBQWlDO1FBRGpDLFlBQU8sR0FBUCxPQUFPLENBQVM7UUFDaEIsaUJBQVksR0FBWixZQUFZLENBQXFCO0lBQ3hDLENBQUM7SUFFSixRQUFRO1FBQ04sTUFBTSxVQUFVLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxNQUFNLEVBQUUsQ0FBQztRQUN6QyxNQUFNLGFBQWEsR0FBRyxJQUFJLGVBQWUsQ0FBQywrQkFBK0IsQ0FBQyxDQUFDO1FBQzNFLElBQUksQ0FBQyxhQUFhLEdBQUcsVUFBVSxDQUFDLE1BQU0sQ0FBQyxhQUFhLENBQUMsQ0FBQztRQUN0RCxJQUFJLENBQUMsYUFBYSxDQUFDLFFBQVEsQ0FBQyxrQkFBa0IsR0FBRyxJQUFJLENBQUMsa0JBQWtCLENBQUM7SUFDM0UsQ0FBQztJQUVELFdBQVc7UUFDVCxJQUFJLENBQUMsYUFBYSxDQUFDLE9BQU8sRUFBRSxDQUFDO0lBQy9CLENBQUM7SUFFRCxhQUFhO1FBQ1gsSUFBSSxDQUFDLGtCQUFrQixHQUFHLENBQUMsSUFBSSxDQUFDLGtCQUFrQixDQUFDO1FBQ25ELElBQUksQ0FBQyxhQUFhLENBQUMsUUFBUSxDQUFDLGtCQUFrQixHQUFHLElBQUksQ0FBQyxrQkFBa0IsQ0FBQztRQUN6RSxJQUFJLENBQUMsWUFBWSxDQUFDLGVBQWUsQ0FBQyxDQUFDLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxDQUFDO0lBQzlELENBQUM7a0ZBekJVLHdCQUF3Qjs2REFBeEIsd0JBQXdCO1lDWHJDLDBDQUtDO1lBREMsOEdBQVMsbUJBQWUsSUFBQztZQUUzQixpQkFBa0I7O1lBSGhCLGdEQUE4Qjs7O2lGRFFuQix3QkFBd0I7Y0FMcEMsU0FBUzsyQkFDRSxzQkFBc0I7O2tGQUlyQix3QkFBd0IiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIE9uSW5pdCwgQ29tcG9uZW50UmVmLCBPbkRlc3Ryb3kgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IE92ZXJsYXkgfSBmcm9tICdAYW5ndWxhci9jZGsvb3ZlcmxheSc7XG5pbXBvcnQgeyBDb21wb25lbnRQb3J0YWwgfSBmcm9tICdAYW5ndWxhci9jZGsvcG9ydGFsJztcbmltcG9ydCB7IE9iamVjdFNlbGVjdGlvbk92ZXJsYXlDb21wb25lbnQgfSBmcm9tICcuL29iamVjdC1zZWxlY3Rpb24tb3ZlcmxheS9vYmplY3Qtc2VsZWN0aW9uLW92ZXJsYXkuY29tcG9uZW50JztcbmltcG9ydCB7IEV2ZW50RGlzcGxheVNlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi9zZXJ2aWNlcy9ldmVudC1kaXNwbGF5LnNlcnZpY2UnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdhcHAtb2JqZWN0LXNlbGVjdGlvbicsXG4gIHRlbXBsYXRlVXJsOiAnLi9vYmplY3Qtc2VsZWN0aW9uLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vb2JqZWN0LXNlbGVjdGlvbi5jb21wb25lbnQuc2NzcyddLFxufSlcbmV4cG9ydCBjbGFzcyBPYmplY3RTZWxlY3Rpb25Db21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIE9uRGVzdHJveSB7XG4gIC8vIEF0dHJpYnV0ZXMgZm9yIGRpc3BsYXlpbmcgdGhlIGluZm9ybWF0aW9uIG9mIHNlbGVjdGVkIG9iamVjdHNcbiAgaGlkZGVuU2VsZWN0ZWRJbmZvID0gdHJ1ZTtcbiAgb3ZlcmxheVdpbmRvdzogQ29tcG9uZW50UmVmPE9iamVjdFNlbGVjdGlvbk92ZXJsYXlDb21wb25lbnQ+O1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgb3ZlcmxheTogT3ZlcmxheSxcbiAgICBwcml2YXRlIGV2ZW50RGlzcGxheTogRXZlbnREaXNwbGF5U2VydmljZSxcbiAgKSB7fVxuXG4gIG5nT25Jbml0KCkge1xuICAgIGNvbnN0IG92ZXJsYXlSZWYgPSB0aGlzLm92ZXJsYXkuY3JlYXRlKCk7XG4gICAgY29uc3Qgb3ZlcmxheVBvcnRhbCA9IG5ldyBDb21wb25lbnRQb3J0YWwoT2JqZWN0U2VsZWN0aW9uT3ZlcmxheUNvbXBvbmVudCk7XG4gICAgdGhpcy5vdmVybGF5V2luZG93ID0gb3ZlcmxheVJlZi5hdHRhY2gob3ZlcmxheVBvcnRhbCk7XG4gICAgdGhpcy5vdmVybGF5V2luZG93Lmluc3RhbmNlLmhpZGRlblNlbGVjdGVkSW5mbyA9IHRoaXMuaGlkZGVuU2VsZWN0ZWRJbmZvO1xuICB9XG5cbiAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgdGhpcy5vdmVybGF5V2luZG93LmRlc3Ryb3koKTtcbiAgfVxuXG4gIHRvZ2dsZU92ZXJsYXkoKSB7XG4gICAgdGhpcy5oaWRkZW5TZWxlY3RlZEluZm8gPSAhdGhpcy5oaWRkZW5TZWxlY3RlZEluZm87XG4gICAgdGhpcy5vdmVybGF5V2luZG93Lmluc3RhbmNlLmhpZGRlblNlbGVjdGVkSW5mbyA9IHRoaXMuaGlkZGVuU2VsZWN0ZWRJbmZvO1xuICAgIHRoaXMuZXZlbnREaXNwbGF5LmVuYWJsZVNlbGVjdGluZyghdGhpcy5oaWRkZW5TZWxlY3RlZEluZm8pO1xuICB9XG59XG4iLCI8YXBwLW1lbnUtdG9nZ2xlXG4gIHRvb2x0aXA9XCJPYmplY3Qgc2VsZWN0aW9uXCJcbiAgaWNvbj1cImN1cnNvclwiXG4gIFthY3RpdmVdPVwiIWhpZGRlblNlbGVjdGVkSW5mb1wiXG4gIChjbGljayk9XCJ0b2dnbGVPdmVybGF5KClcIlxuPlxuPC9hcHAtbWVudS10b2dnbGU+XG4iXX0=