phoenix-ui-components 2.4.0 → 2.5.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (148) hide show
  1. package/README.md +1 -1
  2. package/_theming.scss +5 -1
  3. package/dist/README.md +1 -1
  4. package/dist/components/embed-menu/embed-menu.component.d.ts +3 -0
  5. package/dist/components/embed-menu/experiment-link/experiment-link.component.d.ts +3 -0
  6. package/dist/components/loader/loader.component.d.ts +3 -0
  7. package/dist/components/nav/nav.component.d.ts +3 -0
  8. package/dist/components/phoenix-menu/config/config-slider/config-slider.component.d.ts +3 -0
  9. package/dist/components/phoenix-menu/pheonix-menu-item/phoenix-menu-item.component.d.ts +3 -0
  10. package/dist/components/phoenix-menu/phoenix-menu.component.d.ts +3 -0
  11. package/dist/components/phoenix-ui.module.d.ts +56 -0
  12. package/dist/components/ui-menu/animate-camera/animate-camera.component.d.ts +3 -0
  13. package/dist/components/ui-menu/animate-event/animate-event.component.d.ts +3 -0
  14. package/dist/components/ui-menu/ar-toggle/ar-toggle.component.d.ts +3 -0
  15. package/dist/components/ui-menu/auto-rotate/auto-rotate.component.d.ts +3 -0
  16. package/dist/components/ui-menu/collections-info/collections-info-overlay/collections-info-overlay.component.d.ts +6 -0
  17. package/dist/components/ui-menu/collections-info/collections-info.component.d.ts +3 -0
  18. package/dist/components/ui-menu/dark-theme/dark-theme.component.d.ts +3 -0
  19. package/dist/components/ui-menu/event-selector/event-selector.component.d.ts +3 -0
  20. package/dist/components/ui-menu/experiment-info/experiment-info.component.d.ts +3 -0
  21. package/dist/components/ui-menu/info-panel/info-panel-overlay/info-panel-overlay.component.d.ts +3 -0
  22. package/dist/components/ui-menu/info-panel/info-panel.component.d.ts +3 -0
  23. package/dist/components/ui-menu/io-options/io-options-dialog/io-options-dialog.component.d.ts +3 -0
  24. package/dist/components/ui-menu/io-options/io-options.component.d.ts +3 -0
  25. package/dist/components/ui-menu/main-view-toggle/main-view-toggle.component.d.ts +3 -0
  26. package/dist/components/ui-menu/menu-toggle/menu-toggle.component.d.ts +3 -0
  27. package/dist/components/ui-menu/object-clipping/object-clipping.component.d.ts +3 -0
  28. package/dist/components/ui-menu/object-selection/object-selection-overlay/object-selection-overlay.component.d.ts +3 -0
  29. package/dist/components/ui-menu/object-selection/object-selection.component.d.ts +3 -0
  30. package/dist/components/ui-menu/overlay/overlay.component.d.ts +3 -0
  31. package/dist/components/ui-menu/overlay-view/overlay-view-window/overlay-view-window.component.d.ts +3 -0
  32. package/dist/components/ui-menu/overlay-view/overlay-view.component.d.ts +3 -0
  33. package/dist/components/ui-menu/performance-toggle/performance-toggle.component.d.ts +3 -0
  34. package/dist/components/ui-menu/share-link/share-link-dialog/share-link-dialog.component.d.ts +10 -2
  35. package/dist/components/ui-menu/share-link/share-link.component.d.ts +3 -0
  36. package/dist/components/ui-menu/ss-mode/ss-mode.component.d.ts +3 -0
  37. package/dist/components/ui-menu/tree-menu/tree-menu-item/tree-menu-item.component.d.ts +3 -0
  38. package/dist/components/ui-menu/tree-menu/tree-menu.component.d.ts +3 -0
  39. package/dist/components/ui-menu/ui-menu.component.d.ts +3 -0
  40. package/dist/components/ui-menu/view-options/view-options.component.d.ts +3 -0
  41. package/dist/components/ui-menu/vr-toggle/vr-toggle.component.d.ts +3 -0
  42. package/dist/components/ui-menu/zoom-controls/zoom-controls.component.d.ts +3 -0
  43. package/dist/esm2020/components/embed-menu/embed-menu.component.mjs +17 -0
  44. package/dist/esm2020/components/embed-menu/experiment-link/experiment-link.component.mjs +18 -0
  45. package/dist/esm2020/components/loader/loader.component.mjs +19 -0
  46. package/dist/esm2020/components/nav/nav.component.mjs +14 -0
  47. package/dist/esm2020/components/phoenix-menu/config/config-slider/config-slider.component.mjs +38 -0
  48. package/dist/{esm2015/components/phoenix-menu/index.js → esm2020/components/phoenix-menu/index.mjs} +1 -1
  49. package/dist/esm2020/components/phoenix-menu/pheonix-menu-item/phoenix-menu-item.component.mjs +32 -0
  50. package/dist/esm2020/components/phoenix-menu/phoenix-menu.component.mjs +14 -0
  51. package/dist/esm2020/components/phoenix-ui.module.mjs +201 -0
  52. package/dist/esm2020/components/ui-menu/animate-camera/animate-camera.component.mjs +76 -0
  53. package/dist/esm2020/components/ui-menu/animate-event/animate-event.component.mjs +25 -0
  54. package/dist/esm2020/components/ui-menu/ar-toggle/ar-toggle.component.mjs +47 -0
  55. package/dist/esm2020/components/ui-menu/auto-rotate/auto-rotate.component.mjs +21 -0
  56. package/dist/esm2020/components/ui-menu/collections-info/collections-info-overlay/collections-info-overlay.component.mjs +81 -0
  57. package/dist/esm2020/components/ui-menu/collections-info/collections-info.component.mjs +32 -0
  58. package/dist/esm2020/components/ui-menu/dark-theme/dark-theme.component.mjs +24 -0
  59. package/dist/esm2020/components/ui-menu/event-selector/event-selector.component.mjs +24 -0
  60. package/dist/esm2020/components/ui-menu/experiment-info/experiment-info.component.mjs +26 -0
  61. package/dist/{esm2015/components/ui-menu/index.js → esm2020/components/ui-menu/index.mjs} +1 -1
  62. package/dist/esm2020/components/ui-menu/info-panel/info-panel-overlay/info-panel-overlay.component.mjs +37 -0
  63. package/dist/esm2020/components/ui-menu/info-panel/info-panel.component.mjs +49 -0
  64. package/dist/esm2020/components/ui-menu/io-options/io-options-dialog/io-options-dialog.component.mjs +196 -0
  65. package/dist/esm2020/components/ui-menu/io-options/io-options.component.mjs +28 -0
  66. package/dist/esm2020/components/ui-menu/main-view-toggle/main-view-toggle.component.mjs +24 -0
  67. package/dist/esm2020/components/ui-menu/menu-toggle/menu-toggle.component.mjs +24 -0
  68. package/dist/esm2020/components/ui-menu/object-clipping/object-clipping.component.mjs +31 -0
  69. package/dist/esm2020/components/ui-menu/object-selection/object-selection-overlay/object-selection-overlay.component.mjs +24 -0
  70. package/dist/esm2020/components/ui-menu/object-selection/object-selection.component.mjs +36 -0
  71. package/dist/esm2020/components/ui-menu/overlay/overlay.component.mjs +99 -0
  72. package/dist/esm2020/components/ui-menu/overlay-view/overlay-view-window/overlay-view-window.component.mjs +53 -0
  73. package/dist/esm2020/components/ui-menu/overlay-view/overlay-view.component.mjs +32 -0
  74. package/dist/esm2020/components/ui-menu/performance-toggle/performance-toggle.component.mjs +21 -0
  75. package/dist/esm2020/components/ui-menu/share-link/share-link-dialog/share-link-dialog.component.mjs +73 -0
  76. package/dist/esm2020/components/ui-menu/share-link/share-link.component.mjs +20 -0
  77. package/dist/esm2020/components/ui-menu/ss-mode/ss-mode.component.mjs +41 -0
  78. package/dist/esm2020/components/ui-menu/tree-menu/tree-menu-item/tree-menu-item.component.mjs +33 -0
  79. package/dist/esm2020/components/ui-menu/tree-menu/tree-menu.component.mjs +71 -0
  80. package/dist/esm2020/components/ui-menu/ui-menu.component.mjs +43 -0
  81. package/dist/esm2020/components/ui-menu/view-options/view-options.component.mjs +34 -0
  82. package/dist/esm2020/components/ui-menu/vr-toggle/vr-toggle.component.mjs +44 -0
  83. package/dist/esm2020/components/ui-menu/zoom-controls/zoom-controls.component.mjs +61 -0
  84. package/dist/esm2020/phoenix-ui-components.mjs +5 -0
  85. package/dist/esm2020/public_api.mjs +9 -0
  86. package/dist/esm2020/services/event-display.service.mjs +23 -0
  87. package/dist/esm2020/services/extras/attribute.pipe.mjs +33 -0
  88. package/dist/{esm2015/services/extras/event-data-import.js → esm2020/services/extras/event-data-import.mjs} +1 -1
  89. package/dist/esm2020/services/index.mjs +4 -0
  90. package/dist/fesm2015/phoenix-ui-components.mjs +1644 -0
  91. package/dist/fesm2015/phoenix-ui-components.mjs.map +1 -0
  92. package/dist/fesm2020/phoenix-ui-components.mjs +1644 -0
  93. package/dist/fesm2020/phoenix-ui-components.mjs.map +1 -0
  94. package/dist/phoenix-ui-components.d.ts +2 -6
  95. package/dist/{index.d.ts → public_api.d.ts} +2 -0
  96. package/dist/services/event-display.service.d.ts +3 -0
  97. package/dist/services/extras/attribute.pipe.d.ts +3 -0
  98. package/dist/services/index.d.ts +1 -0
  99. package/package.json +6 -5
  100. package/dist/bundles/phoenix-ui-components.umd.js +0 -2148
  101. package/dist/bundles/phoenix-ui-components.umd.js.map +0 -1
  102. package/dist/esm2015/components/embed-menu/embed-menu.component.js +0 -11
  103. package/dist/esm2015/components/embed-menu/experiment-link/experiment-link.component.js +0 -17
  104. package/dist/esm2015/components/loader/loader.component.js +0 -18
  105. package/dist/esm2015/components/nav/nav.component.js +0 -14
  106. package/dist/esm2015/components/phoenix-menu/config/config-slider/config-slider.component.js +0 -32
  107. package/dist/esm2015/components/phoenix-menu/pheonix-menu-item/phoenix-menu-item.component.js +0 -29
  108. package/dist/esm2015/components/phoenix-menu/phoenix-menu.component.js +0 -14
  109. package/dist/esm2015/components/phoenix-ui.module.js +0 -94
  110. package/dist/esm2015/components/ui-menu/animate-camera/animate-camera.component.js +0 -77
  111. package/dist/esm2015/components/ui-menu/animate-event/animate-event.component.js +0 -27
  112. package/dist/esm2015/components/ui-menu/ar-toggle/ar-toggle.component.js +0 -45
  113. package/dist/esm2015/components/ui-menu/auto-rotate/auto-rotate.component.js +0 -23
  114. package/dist/esm2015/components/ui-menu/collections-info/collections-info-overlay/collections-info-overlay.component.js +0 -72
  115. package/dist/esm2015/components/ui-menu/collections-info/collections-info.component.js +0 -34
  116. package/dist/esm2015/components/ui-menu/dark-theme/dark-theme.component.js +0 -26
  117. package/dist/esm2015/components/ui-menu/event-selector/event-selector.component.js +0 -25
  118. package/dist/esm2015/components/ui-menu/experiment-info/experiment-info.component.js +0 -27
  119. package/dist/esm2015/components/ui-menu/info-panel/info-panel-overlay/info-panel-overlay.component.js +0 -39
  120. package/dist/esm2015/components/ui-menu/info-panel/info-panel.component.js +0 -51
  121. package/dist/esm2015/components/ui-menu/io-options/io-options-dialog/io-options-dialog.component.js +0 -202
  122. package/dist/esm2015/components/ui-menu/io-options/io-options.component.js +0 -31
  123. package/dist/esm2015/components/ui-menu/main-view-toggle/main-view-toggle.component.js +0 -25
  124. package/dist/esm2015/components/ui-menu/menu-toggle/menu-toggle.component.js +0 -20
  125. package/dist/esm2015/components/ui-menu/object-clipping/object-clipping.component.js +0 -30
  126. package/dist/esm2015/components/ui-menu/object-selection/object-selection-overlay/object-selection-overlay.component.js +0 -25
  127. package/dist/esm2015/components/ui-menu/object-selection/object-selection.component.js +0 -39
  128. package/dist/esm2015/components/ui-menu/overlay/overlay.component.js +0 -90
  129. package/dist/esm2015/components/ui-menu/overlay-view/overlay-view-window/overlay-view-window.component.js +0 -52
  130. package/dist/esm2015/components/ui-menu/overlay-view/overlay-view.component.js +0 -34
  131. package/dist/esm2015/components/ui-menu/performance-toggle/performance-toggle.component.js +0 -23
  132. package/dist/esm2015/components/ui-menu/share-link/share-link-dialog/share-link-dialog.component.js +0 -64
  133. package/dist/esm2015/components/ui-menu/share-link/share-link.component.js +0 -22
  134. package/dist/esm2015/components/ui-menu/ss-mode/ss-mode.component.js +0 -43
  135. package/dist/esm2015/components/ui-menu/tree-menu/tree-menu-item/tree-menu-item.component.js +0 -32
  136. package/dist/esm2015/components/ui-menu/tree-menu/tree-menu.component.js +0 -71
  137. package/dist/esm2015/components/ui-menu/ui-menu.component.js +0 -22
  138. package/dist/esm2015/components/ui-menu/view-options/view-options.component.js +0 -33
  139. package/dist/esm2015/components/ui-menu/vr-toggle/vr-toggle.component.js +0 -44
  140. package/dist/esm2015/components/ui-menu/zoom-controls/zoom-controls.component.js +0 -63
  141. package/dist/esm2015/index.js +0 -7
  142. package/dist/esm2015/phoenix-ui-components.js +0 -10
  143. package/dist/esm2015/services/event-display.service.js +0 -22
  144. package/dist/esm2015/services/extras/attribute.pipe.js +0 -29
  145. package/dist/esm2015/services/index.js +0 -3
  146. package/dist/fesm2015/phoenix-ui-components.js +0 -1620
  147. package/dist/fesm2015/phoenix-ui-components.js.map +0 -1
  148. package/dist/phoenix-ui-components.metadata.json +0 -1
@@ -1,2148 +0,0 @@
1
- (function (global, factory) {
2
- typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports, require('@angular/core'), require('phoenix-event-display'), require('@angular/cdk/overlay'), require('@angular/cdk/portal'), require('phoenix-event-display/package.json'), require('@angular/material/dialog'), require('jszip'), require('css-element-queries'), require('@angular/cdk/drag-drop'), require('@angular/material/button'), require('@angular/material/checkbox'), require('@angular/material/icon'), require('@angular/material/menu'), require('@angular/material/slide-toggle'), require('@angular/material/slider'), require('@angular/material/tooltip'), require('@angular-slider/ngx-slider'), require('@angular/common'), require('@angular/router')) :
3
- typeof define === 'function' && define.amd ? define('phoenix-ui-components', ['exports', '@angular/core', 'phoenix-event-display', '@angular/cdk/overlay', '@angular/cdk/portal', 'phoenix-event-display/package.json', '@angular/material/dialog', 'jszip', 'css-element-queries', '@angular/cdk/drag-drop', '@angular/material/button', '@angular/material/checkbox', '@angular/material/icon', '@angular/material/menu', '@angular/material/slide-toggle', '@angular/material/slider', '@angular/material/tooltip', '@angular-slider/ngx-slider', '@angular/common', '@angular/router'], factory) :
4
- (global = typeof globalThis !== 'undefined' ? globalThis : global || self, factory(global['phoenix-ui-components'] = {}, global.ng.core, global.phoenixEventDisplay, global.ng.cdk.overlay, global.ng.cdk.portal, global.packageJson, global.ng.material.dialog, global.JSZip, global.cssElementQueries, global.ng.cdk.dragDrop, global.ng.material.button, global.ng.material.checkbox, global.ng.material.icon, global.ng.material.menu, global.ng.material.slideToggle, global.ng.material.slider, global.ng.material.tooltip, global.ngxSlider, global.ng.common, global.ng.router));
5
- }(this, (function (exports, i0, phoenixEventDisplay, overlay, portal, packageJson, dialog, JSZip, cssElementQueries, dragDrop, button, checkbox, icon, menu, slideToggle, slider, tooltip, ngxSlider, common, router) { 'use strict';
6
-
7
- function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; }
8
-
9
- function _interopNamespace(e) {
10
- if (e && e.__esModule) return e;
11
- var n = Object.create(null);
12
- if (e) {
13
- Object.keys(e).forEach(function (k) {
14
- if (k !== 'default') {
15
- var d = Object.getOwnPropertyDescriptor(e, k);
16
- Object.defineProperty(n, k, d.get ? d : {
17
- enumerable: true,
18
- get: function () {
19
- return e[k];
20
- }
21
- });
22
- }
23
- });
24
- }
25
- n['default'] = e;
26
- return Object.freeze(n);
27
- }
28
-
29
- var i0__namespace = /*#__PURE__*/_interopNamespace(i0);
30
- var packageJson__default = /*#__PURE__*/_interopDefaultLegacy(packageJson);
31
- var JSZip__default = /*#__PURE__*/_interopDefaultLegacy(JSZip);
32
-
33
- var NavComponent = /** @class */ (function () {
34
- function NavComponent() {
35
- }
36
- NavComponent.prototype.ngOnInit = function () { };
37
- return NavComponent;
38
- }());
39
- NavComponent.decorators = [
40
- { type: i0.Component, args: [{
41
- selector: 'app-nav',
42
- 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",
43
- 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"]
44
- },] }
45
- ];
46
- NavComponent.ctorParameters = function () { return []; };
47
-
48
- var ConfigSliderComponent = /** @class */ (function () {
49
- function ConfigSliderComponent() {
50
- this.value = 0;
51
- this.min = 0;
52
- this.max = 100;
53
- this.step = 1;
54
- this.allowCustomValue = false;
55
- this.onChange = new i0.EventEmitter();
56
- }
57
- ConfigSliderComponent.prototype.onValueChange = function (value) {
58
- if (value) {
59
- this.onChange.emit(value);
60
- }
61
- };
62
- return ConfigSliderComponent;
63
- }());
64
- ConfigSliderComponent.decorators = [
65
- { type: i0.Component, args: [{
66
- selector: 'app-config-slider',
67
- template: "<div class=\"d-flex flex-row align-items-center\">\n <mat-slider\n #configSlider\n class=\"mx-2\"\n [value]=\"value\"\n [min]=\"min\"\n [max]=\"max\"\n [step]=\"step\"\n thumbLabel\n (click)=\"$event.stopPropagation()\"\n (input)=\"onValueChange($event.value)\"\n >\n </mat-slider>\n <input\n #configSliderInput\n *ngIf=\"allowCustomValue\"\n class=\"config-slider-input\"\n type=\"number\"\n [value]=\"value\"\n (input)=\"onValueChange($event.target.value)\"\n />\n</div>\n",
68
- 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"]
69
- },] }
70
- ];
71
- ConfigSliderComponent.propDecorators = {
72
- value: [{ type: i0.Input }],
73
- min: [{ type: i0.Input }],
74
- max: [{ type: i0.Input }],
75
- step: [{ type: i0.Input }],
76
- allowCustomValue: [{ type: i0.Input }],
77
- onChange: [{ type: i0.Output }]
78
- };
79
-
80
- var PhoenixMenuItemComponent = /** @class */ (function () {
81
- function PhoenixMenuItemComponent(cdr) {
82
- this.cdr = cdr;
83
- }
84
- PhoenixMenuItemComponent.prototype.calculateConfigTop = function () {
85
- if (this.phoenixMenuItem) {
86
- this.configTop =
87
- this.phoenixMenuItem.nativeElement.getBoundingClientRect().top;
88
- this.cdr.detectChanges();
89
- }
90
- };
91
- return PhoenixMenuItemComponent;
92
- }());
93
- PhoenixMenuItemComponent.decorators = [
94
- { type: i0.Component, args: [{
95
- selector: 'app-phoenix-menu-item',
96
- template: "<div class=\"phoenix-menu-item\" #phoenixMenuItem>\n <div class=\"phoenix-menu-item-left align-items-center\">\n <!-- If the item has some toggle function -->\n <ng-container *ngIf=\"currentNode.onToggle; else nodeName\">\n <mat-slide-toggle\n [checked]=\"currentNode.toggleState\"\n (change)=\"currentNode.toggleSelfAndDescendants($event.checked)\"\n >\n <ng-container *ngTemplateOutlet=\"nodeName\"></ng-container>\n </mat-slide-toggle>\n </ng-container>\n <!-- If the item has no toggle function -->\n <ng-template #nodeName>\n <span class=\"d-flex w-100 align-items-center\">\n <span *ngIf=\"currentNode.icon\" class=\"icon-wrapper item-icon\">\n <svg>\n <use\n attr.href=\"assets/icons/{{ currentNode.icon }}.svg#{{\n currentNode.icon\n }}\"\n ></use>\n </svg>\n </span>\n <span class=\"item-name\" [title]=\"currentNode.name\">{{\n currentNode.name\n }}</span>\n </span>\n </ng-template>\n </div>\n <div class=\"phoenix-menu-item-right\">\n <div *ngIf=\"currentNode.configs.length > 0\">\n <button\n class=\"icon-wrapper icon-button btn-blank item-settings\"\n (click)=\"\n calculateConfigTop();\n currentNode.configActive = !currentNode.configActive\n \"\n >\n <svg>\n <use href=\"assets/icons/gear.svg#gear\"></use>\n </svg>\n </button>\n <div\n class=\"item-config-backdrop\"\n *ngIf=\"currentNode.configActive\"\n (click)=\"currentNode.configActive = false\"\n ></div>\n <div\n class=\"item-config\"\n [hidden]=\"!currentNode.configActive\"\n [ngStyle]=\"{ 'top.px': configTop }\"\n >\n <ng-container\n *ngFor=\"let config of currentNode.configs\"\n [ngSwitch]=\"config.type\"\n >\n <!-- Config types -->\n <label class=\"item-config-single\" *ngIf=\"!config.hidden\">\n <span\n class=\"item-config-label\"\n *ngIf=\"config.type !== 'button'\"\n [ngClass]=\"{ 'font-weight-bold w-100': config.type === 'label' }\"\n >\n {{ config.label }}\n </span>\n <div\n class=\"item-config-data\"\n [ngClass]=\"{ 'p-0': config.type === 'button' }\"\n *ngIf=\"config.type !== 'label'\"\n >\n <mat-checkbox\n *ngSwitchCase=\"'checkbox'\"\n [checked]=\"config.isChecked\"\n (change)=\"\n config.onChange($event.checked);\n config.isChecked = $event.checked\n \"\n ></mat-checkbox>\n\n <app-config-slider\n *ngSwitchCase=\"'slider'\"\n [value]=\"config.value\"\n (onChange)=\"config.onChange($event); config.value = $event\"\n [min]=\"config.min\"\n [max]=\"config.max\"\n [step]=\"config.step\"\n [allowCustomValue]=\"config.allowCustomValue\"\n >\n </app-config-slider>\n\n <button\n *ngSwitchCase=\"'button'\"\n class=\"w-100\"\n (click)=\"config.onClick()\"\n mat-button\n mat-stroked-button\n >\n {{ config.label }}\n </button>\n\n <input\n *ngSwitchCase=\"'color'\"\n type=\"color\"\n [value]=\"config.color\"\n (input)=\"\n config.onChange($event.target.value);\n config.color = $event.target.value\n \"\n />\n\n <ngx-slider\n *ngSwitchCase=\"'rangeSlider'\"\n class=\"range-slider\"\n [value]=\"config.value ? config.value : config.min\"\n [highValue]=\"config.highValue ? config.highValue : config.max\"\n (userChange)=\"\n config.onChange($event);\n config.value = $event.value;\n config.highValue = $event.highValue\n \"\n [options]=\"{\n floor: config.min,\n ceil: config.max,\n step: config.step,\n animate: false\n }\"\n ></ngx-slider>\n\n <select\n *ngSwitchCase=\"'select'\"\n class=\"w-100\"\n (change)=\"config.onChange($event.target.value)\"\n >\n <option\n *ngFor=\"let singleOption of config.options\"\n [value]=\"singleOption\"\n >\n {{ singleOption }}\n </option>\n </select>\n </div>\n </label>\n <!-- Config types END -->\n </ng-container>\n </div>\n </div>\n <button\n class=\"icon-wrapper icon-button btn-blank item-expand\"\n *ngIf=\"currentNode.children.length > 0\"\n (click)=\"currentNode.childrenActive = !currentNode.childrenActive\"\n [ngClass]=\"{ expanded: currentNode.childrenActive }\"\n >\n <svg>\n <use href=\"assets/icons/expand.svg#expand\"></use>\n </svg>\n </button>\n </div>\n</div>\n<div class=\"phoenix-menu-children\" *ngIf=\"currentNode.childrenActive\">\n <app-phoenix-menu-item\n *ngFor=\"let childNode of currentNode.children\"\n [currentNode]=\"childNode\"\n >\n </app-phoenix-menu-item>\n</div>\n",
97
- encapsulation: i0.ViewEncapsulation.None,
98
- styles: [".phoenix-menu-item{width:100%;padding:.6rem;background:var(--phoenix-background-color-secondary);color:var(--phoenix-text-color);font-size:.8rem;transition:all .5s;display:flex;justify-content:space-between;align-items:center}.phoenix-menu-item-left{display:flex;justify-content:flex-start;min-width:0;padding-right:.5rem;overflow:hidden}.phoenix-menu-item-left .item-name{flex:1;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.phoenix-menu-item-left .item-icon{margin-right:.2rem}.phoenix-menu-item-right{display:flex;justify-content:flex-end}.phoenix-menu-item-right .item-expand.expanded{transform:scaleY(-1)}.phoenix-menu-item-right .item-settings{margin-right:.2rem}.phoenix-menu-item-right .item-config-backdrop{position:fixed;top:0;left:0;width:100vw;height:100vh;z-index:110}.phoenix-menu-item-right .item-config{position:absolute;margin-top:-5rem;right:100%;width:14rem;padding:.5rem;background:var(--phoenix-background-color-secondary);color:var(--phoenix-text-color-secondary);box-shadow:var(--phoenix-box-shadow);display:flex;flex-direction:column;z-index:120}.phoenix-menu-item-right .item-config>*{margin-bottom:.4rem}.phoenix-menu-item-right .item-config>*:last-child{margin-bottom:0}.phoenix-menu-item-right .item-config .item-config-single{display:flex;flex-direction:row}.phoenix-menu-item-right .item-config .item-config-single .item-config-label{width:30%}.phoenix-menu-item-right .item-config .item-config-single .item-config-data{flex-grow:1;padding-left:.5rem}.phoenix-menu-item .icon-wrapper{display:inline-block;width:1.3rem;height:1.3rem;padding:.23rem;transition:all .4s}.phoenix-menu-item .icon-wrapper.icon-button:hover{background:var(--phoenix-options-icon-bg);border-radius:40%;cursor:pointer}.phoenix-menu-item .icon-wrapper svg{width:100%;height:100%;vertical-align:top}.phoenix-menu-item .mat-slide-toggle-bar{width:30px!important}.phoenix-menu-item .mat-slide-toggle-thumb{width:15px!important;height:15px!important;position:absolute;top:2px}.phoenix-menu-item .mat-slider-horizontal{min-width:0;width:100%;height:20px}.phoenix-menu-item .mat-slider-horizontal .mat-slider-wrapper{top:10px}.phoenix-menu-item label.mat-checkbox-layout{margin:0}@media screen and (max-width: 768px){.phoenix-menu-item{font-size:.75rem;padding:.5rem}.phoenix-menu-item .icon-wrapper{width:1rem;height:1rem;padding:.15rem}}.phoenix-menu-children{margin-left:.5rem;border-left:1px solid var(--phoenix-accent)}.range-slider.ngx-slider .ngx-slider-bar{background:var(--phoenix-text-color-secondary);height:.2rem}.range-slider.ngx-slider .ngx-slider-selection{background:var(--phoenix-accent)}.range-slider.ngx-slider .ngx-slider-pointer{width:1rem;height:1rem;top:-.45rem;bottom:0;background-color:var(--phoenix-accent)}.range-slider.ngx-slider .ngx-slider-pointer:after{display:none}.range-slider.ngx-slider .ngx-slider-bubble{color:var(--phoenix-text-color);font-size:.8rem}.range-slider.ngx-slider .ngx-slider-bubble.ngx-slider-limit{color:var(--phoenix-text-color-secondary)}\n"]
99
- },] }
100
- ];
101
- PhoenixMenuItemComponent.ctorParameters = function () { return [
102
- { type: i0.ChangeDetectorRef }
103
- ]; };
104
- PhoenixMenuItemComponent.propDecorators = {
105
- currentNode: [{ type: i0.Input }],
106
- phoenixMenuItem: [{ type: i0.ViewChild, args: ['phoenixMenuItem',] }]
107
- };
108
-
109
- var PhoenixMenuComponent = /** @class */ (function () {
110
- function PhoenixMenuComponent() {
111
- }
112
- return PhoenixMenuComponent;
113
- }());
114
- PhoenixMenuComponent.decorators = [
115
- { type: i0.Component, args: [{
116
- selector: 'app-phoenix-menu',
117
- template: "<div id=\"phoenixMenu\">\n <app-phoenix-menu-item [currentNode]=\"rootNode\"></app-phoenix-menu-item>\n</div>\n",
118
- styles: [":host{width:15rem;max-width:45%;position:absolute;top:5rem;right:1rem}#phoenixMenu{background:var(--phoenix-background-color-secondary);max-height:75vh;overflow-y:auto;box-shadow:var(--phoenix-box-shadow);z-index:100}@media screen and (max-width: 768px){#phoenixMenu{top:4rem}}\n"]
119
- },] }
120
- ];
121
- PhoenixMenuComponent.propDecorators = {
122
- rootNode: [{ type: i0.Input }]
123
- };
124
-
125
- /*! *****************************************************************************
126
- Copyright (c) Microsoft Corporation.
127
-
128
- Permission to use, copy, modify, and/or distribute this software for any
129
- purpose with or without fee is hereby granted.
130
-
131
- THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH
132
- REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
133
- AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,
134
- INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM
135
- LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR
136
- OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
137
- PERFORMANCE OF THIS SOFTWARE.
138
- ***************************************************************************** */
139
- /* global Reflect, Promise */
140
- var extendStatics = function (d, b) {
141
- extendStatics = Object.setPrototypeOf ||
142
- ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
143
- function (d, b) { for (var p in b)
144
- if (Object.prototype.hasOwnProperty.call(b, p))
145
- d[p] = b[p]; };
146
- return extendStatics(d, b);
147
- };
148
- function __extends(d, b) {
149
- if (typeof b !== "function" && b !== null)
150
- throw new TypeError("Class extends value " + String(b) + " is not a constructor or null");
151
- extendStatics(d, b);
152
- function __() { this.constructor = d; }
153
- d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
154
- }
155
- var __assign = function () {
156
- __assign = Object.assign || function __assign(t) {
157
- for (var s, i = 1, n = arguments.length; i < n; i++) {
158
- s = arguments[i];
159
- for (var p in s)
160
- if (Object.prototype.hasOwnProperty.call(s, p))
161
- t[p] = s[p];
162
- }
163
- return t;
164
- };
165
- return __assign.apply(this, arguments);
166
- };
167
- function __rest(s, e) {
168
- var t = {};
169
- for (var p in s)
170
- if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)
171
- t[p] = s[p];
172
- if (s != null && typeof Object.getOwnPropertySymbols === "function")
173
- for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {
174
- if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))
175
- t[p[i]] = s[p[i]];
176
- }
177
- return t;
178
- }
179
- function __decorate(decorators, target, key, desc) {
180
- var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
181
- if (typeof Reflect === "object" && typeof Reflect.decorate === "function")
182
- r = Reflect.decorate(decorators, target, key, desc);
183
- else
184
- for (var i = decorators.length - 1; i >= 0; i--)
185
- if (d = decorators[i])
186
- r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
187
- return c > 3 && r && Object.defineProperty(target, key, r), r;
188
- }
189
- function __param(paramIndex, decorator) {
190
- return function (target, key) { decorator(target, key, paramIndex); };
191
- }
192
- function __metadata(metadataKey, metadataValue) {
193
- if (typeof Reflect === "object" && typeof Reflect.metadata === "function")
194
- return Reflect.metadata(metadataKey, metadataValue);
195
- }
196
- function __awaiter(thisArg, _arguments, P, generator) {
197
- function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
198
- return new (P || (P = Promise))(function (resolve, reject) {
199
- function fulfilled(value) { try {
200
- step(generator.next(value));
201
- }
202
- catch (e) {
203
- reject(e);
204
- } }
205
- function rejected(value) { try {
206
- step(generator["throw"](value));
207
- }
208
- catch (e) {
209
- reject(e);
210
- } }
211
- function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
212
- step((generator = generator.apply(thisArg, _arguments || [])).next());
213
- });
214
- }
215
- function __generator(thisArg, body) {
216
- var _ = { label: 0, sent: function () { if (t[0] & 1)
217
- throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;
218
- return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function () { return this; }), g;
219
- function verb(n) { return function (v) { return step([n, v]); }; }
220
- function step(op) {
221
- if (f)
222
- throw new TypeError("Generator is already executing.");
223
- while (_)
224
- try {
225
- if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done)
226
- return t;
227
- if (y = 0, t)
228
- op = [op[0] & 2, t.value];
229
- switch (op[0]) {
230
- case 0:
231
- case 1:
232
- t = op;
233
- break;
234
- case 4:
235
- _.label++;
236
- return { value: op[1], done: false };
237
- case 5:
238
- _.label++;
239
- y = op[1];
240
- op = [0];
241
- continue;
242
- case 7:
243
- op = _.ops.pop();
244
- _.trys.pop();
245
- continue;
246
- default:
247
- if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) {
248
- _ = 0;
249
- continue;
250
- }
251
- if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) {
252
- _.label = op[1];
253
- break;
254
- }
255
- if (op[0] === 6 && _.label < t[1]) {
256
- _.label = t[1];
257
- t = op;
258
- break;
259
- }
260
- if (t && _.label < t[2]) {
261
- _.label = t[2];
262
- _.ops.push(op);
263
- break;
264
- }
265
- if (t[2])
266
- _.ops.pop();
267
- _.trys.pop();
268
- continue;
269
- }
270
- op = body.call(thisArg, _);
271
- }
272
- catch (e) {
273
- op = [6, e];
274
- y = 0;
275
- }
276
- finally {
277
- f = t = 0;
278
- }
279
- if (op[0] & 5)
280
- throw op[1];
281
- return { value: op[0] ? op[1] : void 0, done: true };
282
- }
283
- }
284
- var __createBinding = Object.create ? (function (o, m, k, k2) {
285
- if (k2 === undefined)
286
- k2 = k;
287
- Object.defineProperty(o, k2, { enumerable: true, get: function () { return m[k]; } });
288
- }) : (function (o, m, k, k2) {
289
- if (k2 === undefined)
290
- k2 = k;
291
- o[k2] = m[k];
292
- });
293
- function __exportStar(m, o) {
294
- for (var p in m)
295
- if (p !== "default" && !Object.prototype.hasOwnProperty.call(o, p))
296
- __createBinding(o, m, p);
297
- }
298
- function __values(o) {
299
- var s = typeof Symbol === "function" && Symbol.iterator, m = s && o[s], i = 0;
300
- if (m)
301
- return m.call(o);
302
- if (o && typeof o.length === "number")
303
- return {
304
- next: function () {
305
- if (o && i >= o.length)
306
- o = void 0;
307
- return { value: o && o[i++], done: !o };
308
- }
309
- };
310
- throw new TypeError(s ? "Object is not iterable." : "Symbol.iterator is not defined.");
311
- }
312
- function __read(o, n) {
313
- var m = typeof Symbol === "function" && o[Symbol.iterator];
314
- if (!m)
315
- return o;
316
- var i = m.call(o), r, ar = [], e;
317
- try {
318
- while ((n === void 0 || n-- > 0) && !(r = i.next()).done)
319
- ar.push(r.value);
320
- }
321
- catch (error) {
322
- e = { error: error };
323
- }
324
- finally {
325
- try {
326
- if (r && !r.done && (m = i["return"]))
327
- m.call(i);
328
- }
329
- finally {
330
- if (e)
331
- throw e.error;
332
- }
333
- }
334
- return ar;
335
- }
336
- /** @deprecated */
337
- function __spread() {
338
- for (var ar = [], i = 0; i < arguments.length; i++)
339
- ar = ar.concat(__read(arguments[i]));
340
- return ar;
341
- }
342
- /** @deprecated */
343
- function __spreadArrays() {
344
- for (var s = 0, i = 0, il = arguments.length; i < il; i++)
345
- s += arguments[i].length;
346
- for (var r = Array(s), k = 0, i = 0; i < il; i++)
347
- for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)
348
- r[k] = a[j];
349
- return r;
350
- }
351
- function __spreadArray(to, from, pack) {
352
- if (pack || arguments.length === 2)
353
- for (var i = 0, l = from.length, ar; i < l; i++) {
354
- if (ar || !(i in from)) {
355
- if (!ar)
356
- ar = Array.prototype.slice.call(from, 0, i);
357
- ar[i] = from[i];
358
- }
359
- }
360
- return to.concat(ar || Array.prototype.slice.call(from));
361
- }
362
- function __await(v) {
363
- return this instanceof __await ? (this.v = v, this) : new __await(v);
364
- }
365
- function __asyncGenerator(thisArg, _arguments, generator) {
366
- if (!Symbol.asyncIterator)
367
- throw new TypeError("Symbol.asyncIterator is not defined.");
368
- var g = generator.apply(thisArg, _arguments || []), i, q = [];
369
- return i = {}, verb("next"), verb("throw"), verb("return"), i[Symbol.asyncIterator] = function () { return this; }, i;
370
- function verb(n) { if (g[n])
371
- i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; }
372
- function resume(n, v) { try {
373
- step(g[n](v));
374
- }
375
- catch (e) {
376
- settle(q[0][3], e);
377
- } }
378
- function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }
379
- function fulfill(value) { resume("next", value); }
380
- function reject(value) { resume("throw", value); }
381
- function settle(f, v) { if (f(v), q.shift(), q.length)
382
- resume(q[0][0], q[0][1]); }
383
- }
384
- function __asyncDelegator(o) {
385
- var i, p;
386
- return i = {}, verb("next"), verb("throw", function (e) { throw e; }), verb("return"), i[Symbol.iterator] = function () { return this; }, i;
387
- function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: n === "return" } : f ? f(v) : v; } : f; }
388
- }
389
- function __asyncValues(o) {
390
- if (!Symbol.asyncIterator)
391
- throw new TypeError("Symbol.asyncIterator is not defined.");
392
- var m = o[Symbol.asyncIterator], i;
393
- return m ? m.call(o) : (o = typeof __values === "function" ? __values(o) : o[Symbol.iterator](), i = {}, verb("next"), verb("throw"), verb("return"), i[Symbol.asyncIterator] = function () { return this; }, i);
394
- function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }
395
- function settle(resolve, reject, d, v) { Promise.resolve(v).then(function (v) { resolve({ value: v, done: d }); }, reject); }
396
- }
397
- function __makeTemplateObject(cooked, raw) {
398
- if (Object.defineProperty) {
399
- Object.defineProperty(cooked, "raw", { value: raw });
400
- }
401
- else {
402
- cooked.raw = raw;
403
- }
404
- return cooked;
405
- }
406
- ;
407
- var __setModuleDefault = Object.create ? (function (o, v) {
408
- Object.defineProperty(o, "default", { enumerable: true, value: v });
409
- }) : function (o, v) {
410
- o["default"] = v;
411
- };
412
- function __importStar(mod) {
413
- if (mod && mod.__esModule)
414
- return mod;
415
- var result = {};
416
- if (mod != null)
417
- for (var k in mod)
418
- if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k))
419
- __createBinding(result, mod, k);
420
- __setModuleDefault(result, mod);
421
- return result;
422
- }
423
- function __importDefault(mod) {
424
- return (mod && mod.__esModule) ? mod : { default: mod };
425
- }
426
- function __classPrivateFieldGet(receiver, state, kind, f) {
427
- if (kind === "a" && !f)
428
- throw new TypeError("Private accessor was defined without a getter");
429
- if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver))
430
- throw new TypeError("Cannot read private member from an object whose class did not declare it");
431
- return kind === "m" ? f : kind === "a" ? f.call(receiver) : f ? f.value : state.get(receiver);
432
- }
433
- function __classPrivateFieldSet(receiver, state, value, kind, f) {
434
- if (kind === "m")
435
- throw new TypeError("Private method is not writable");
436
- if (kind === "a" && !f)
437
- throw new TypeError("Private accessor was defined without a setter");
438
- if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver))
439
- throw new TypeError("Cannot write private member to an object whose class did not declare it");
440
- return (kind === "a" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;
441
- }
442
-
443
- /**
444
- * Service for all event display related functions.
445
- */
446
- var EventDisplayService = /** @class */ (function (_super) {
447
- __extends(EventDisplayService, _super);
448
- /**
449
- * Instantiate the event display by calling the parent constructor.
450
- */
451
- function EventDisplayService() {
452
- return _super.call(this) || this;
453
- }
454
- return EventDisplayService;
455
- }(phoenixEventDisplay.EventDisplay));
456
- EventDisplayService.ɵprov = i0__namespace.ɵɵdefineInjectable({ factory: function EventDisplayService_Factory() { return new EventDisplayService(); }, token: EventDisplayService, providedIn: "root" });
457
- EventDisplayService.decorators = [
458
- { type: i0.Injectable, args: [{
459
- providedIn: 'root',
460
- },] }
461
- ];
462
- EventDisplayService.ctorParameters = function () { return []; };
463
-
464
- var defaultAnimationPresets = {
465
- 'Preset 1': {
466
- positions: [
467
- {
468
- position: [11976, 7262, 11927],
469
- duration: 1000,
470
- },
471
- {
472
- position: [-1000, 0, 11927],
473
- duration: 2000,
474
- },
475
- {
476
- position: [2000, 500, 1000],
477
- duration: 3500,
478
- },
479
- {
480
- position: [5000, 2000, 1000],
481
- duration: 3000,
482
- },
483
- {
484
- position: [5000, 2000, 1000],
485
- duration: 2000,
486
- },
487
- {
488
- position: [11976, 7262, 11927],
489
- duration: 1000,
490
- },
491
- ],
492
- animateEventAfterInterval: 5000,
493
- collisionDuration: 6000,
494
- },
495
- };
496
- var AnimateCameraComponent = /** @class */ (function () {
497
- function AnimateCameraComponent(eventDisplay) {
498
- this.eventDisplay = eventDisplay;
499
- this.animationPresets = defaultAnimationPresets;
500
- this.animationPresetsKeys = Object.keys(this.animationPresets);
501
- this.isAnimating = false;
502
- }
503
- AnimateCameraComponent.prototype.animatePreset = function (preset) {
504
- var _this = this;
505
- this.setDetectorOpacity(0.2);
506
- this.eventDisplay.animatePreset(this.animationPresets[preset], function () {
507
- _this.setDetectorOpacity(1);
508
- });
509
- };
510
- AnimateCameraComponent.prototype.animateCamera = function () {
511
- var _this = this;
512
- if (!this.isAnimating) {
513
- this.isAnimating = true;
514
- this.eventDisplay.animateThroughEvent([11976, 7262, 11927], 3000, function () {
515
- _this.isAnimating = false;
516
- });
517
- }
518
- };
519
- AnimateCameraComponent.prototype.setDetectorOpacity = function (opacity) {
520
- this.eventDisplay
521
- .getThreeManager()
522
- .getSceneManager()
523
- .setGeometryOpacity(phoenixEventDisplay.SceneManager.GEOMETRIES_ID, opacity);
524
- };
525
- return AnimateCameraComponent;
526
- }());
527
- AnimateCameraComponent.decorators = [
528
- { type: i0.Component, args: [{
529
- selector: 'app-animate-camera',
530
- template: "<mat-menu #animationPresets>\n <button\n mat-menu-item\n *ngFor=\"let preset of animationPresetsKeys\"\n (click)=\"animatePreset(preset)\"\n >\n {{ preset }}\n </button>\n <button mat-menu-item (click)=\"animateCamera()\">Animate camera</button>\n</mat-menu>\n\n<app-menu-toggle\n [matMenuTriggerFor]=\"animationPresets\"\n tooltip=\"Preset animations\"\n icon=\"animate-camera\"\n>\n</app-menu-toggle>\n",
531
- styles: [""]
532
- },] }
533
- ];
534
- AnimateCameraComponent.ctorParameters = function () { return [
535
- { type: EventDisplayService }
536
- ]; };
537
- AnimateCameraComponent.propDecorators = {
538
- animationPresets: [{ type: i0.Input }]
539
- };
540
-
541
- var AnimateEventComponent = /** @class */ (function () {
542
- function AnimateEventComponent(eventDisplay) {
543
- this.eventDisplay = eventDisplay;
544
- this.isAnimating = false;
545
- }
546
- AnimateEventComponent.prototype.toggleAnimateEvent = function () {
547
- var _this = this;
548
- if (!this.isAnimating) {
549
- this.isAnimating = true;
550
- this.eventDisplay.animateEventWithCollision(10000, function () {
551
- _this.isAnimating = false;
552
- });
553
- }
554
- };
555
- return AnimateEventComponent;
556
- }());
557
- AnimateEventComponent.decorators = [
558
- { type: i0.Component, args: [{
559
- selector: 'app-animate-event',
560
- template: "<app-menu-toggle\n tooltip=\"Animate event\"\n icon=\"event-folder\"\n [active]=\"isAnimating\"\n (click)=\"toggleAnimateEvent()\"\n>\n</app-menu-toggle>\n",
561
- styles: [""]
562
- },] }
563
- ];
564
- AnimateEventComponent.ctorParameters = function () { return [
565
- { type: EventDisplayService }
566
- ]; };
567
-
568
- var AutoRotateComponent = /** @class */ (function () {
569
- function AutoRotateComponent(eventDisplay) {
570
- this.eventDisplay = eventDisplay;
571
- this.autoRotate = false;
572
- }
573
- AutoRotateComponent.prototype.toggleAutoRotate = function () {
574
- this.autoRotate = !this.autoRotate;
575
- this.eventDisplay.getUIManager().setAutoRotate(this.autoRotate);
576
- };
577
- return AutoRotateComponent;
578
- }());
579
- AutoRotateComponent.decorators = [
580
- { type: i0.Component, args: [{
581
- selector: 'app-auto-rotate',
582
- template: "<app-menu-toggle\n tooltip=\"Auto rotate\"\n icon=\"rotate\"\n [active]=\"autoRotate\"\n (click)=\"toggleAutoRotate()\"\n>\n</app-menu-toggle>\n",
583
- styles: [""]
584
- },] }
585
- ];
586
- AutoRotateComponent.ctorParameters = function () { return [
587
- { type: EventDisplayService }
588
- ]; };
589
-
590
- var CollectionsInfoOverlayComponent = /** @class */ (function () {
591
- function CollectionsInfoOverlayComponent(elementRef, eventDisplay) {
592
- this.elementRef = elementRef;
593
- this.eventDisplay = eventDisplay;
594
- this.getPrettySymbol = phoenixEventDisplay.PrettySymbols.getPrettySymbol;
595
- }
596
- CollectionsInfoOverlayComponent.prototype.ngOnInit = function () {
597
- var _this = this;
598
- this.eventDisplay.listenToDisplayedEventChange(function (_event) { return (_this.collections = _this.eventDisplay.getCollections()); });
599
- this.activeObject = this.eventDisplay.getActiveObjectId();
600
- this.activeObject.onUpdate(function (value) {
601
- if (document.getElementById(value)) {
602
- document.getElementById(value).scrollIntoView(false);
603
- }
604
- });
605
- };
606
- CollectionsInfoOverlayComponent.prototype.changeCollection = function (selectedCollection) {
607
- var eventDataGroup = this.getEventDataGroup();
608
- this.selectedCollection = selectedCollection;
609
- this.showingCollection = this.eventDisplay
610
- .getCollection(selectedCollection)
611
- .map(function (object) {
612
- var _a;
613
- return (Object.assign(Object.assign({}, object), { isCut: !((_a = eventDataGroup.getObjectByProperty('uuid', object.uuid)) === null || _a === void 0 ? void 0 : _a.visible) }));
614
- });
615
- this.collectionColumns = Object.keys(this.showingCollection[0]).filter(function (column) { return !['uuid', 'hits', 'isCut'].includes(column); } // FIXME - this is an ugly hack. But currently hits from tracks make track collections unusable. Better to have exlusion list passed in.
616
- );
617
- };
618
- CollectionsInfoOverlayComponent.prototype.lookAtObject = function (uuid) {
619
- if (uuid) {
620
- this.activeObject.update(uuid);
621
- this.eventDisplay.lookAtObject(uuid);
622
- }
623
- };
624
- CollectionsInfoOverlayComponent.prototype.highlightObject = function (uuid) {
625
- if (uuid) {
626
- this.activeObject.update(uuid);
627
- this.eventDisplay.highlightObject(uuid);
628
- }
629
- };
630
- CollectionsInfoOverlayComponent.prototype.addLabel = function (index, uuid) {
631
- var labelValue = this.elementRef.nativeElement.querySelector("#label" + index).value;
632
- if (this.selectedCollection) {
633
- // Empty labelValue will remove the label object
634
- this.eventDisplay.addLabelToObject(labelValue, this.selectedCollection, index, uuid);
635
- }
636
- };
637
- CollectionsInfoOverlayComponent.prototype.getEventDataGroup = function () {
638
- return this.eventDisplay
639
- .getThreeManager()
640
- .getSceneManager()
641
- .getScene()
642
- .getObjectByName(phoenixEventDisplay.SceneManager.EVENT_DATA_ID);
643
- };
644
- return CollectionsInfoOverlayComponent;
645
- }());
646
- CollectionsInfoOverlayComponent.decorators = [
647
- { type: i0.Component, args: [{
648
- selector: 'app-collections-info-overlay',
649
- template: "<!-- Show objects -->\n<app-overlay\n overlayTitle=\"Collections Info\"\n icon=\"info\"\n [resizable]=\"true\"\n [active]=\"showObjectsInfo\"\n>\n <!-- Using ngIf to remove it from DOM since this panel requires heavy computing -->\n <div *ngIf=\"showObjectsInfo\" class=\"collectionsInfo m-2\">\n <div\n class=\"collectionSelector mb-2 d-flex align-items-center\"\n *ngIf=\"collections != null\"\n >\n <span>Choose a collection: </span>\n <div class=\"eventSelector\">\n <label for=\"event\">Event</label>\n <select\n id=\"collection\"\n name=\"collection\"\n (change)=\"changeCollection($event.target.value)\"\n >\n <option value=\"\" selected disabled hidden>Choose Collection</option>\n <option *ngFor=\"let collection of collections\" [value]=\"collection\">\n {{ collection }}\n </option>\n </select>\n </div>\n </div>\n\n <div class=\"boxBody table-responsive\">\n <table\n id=\"collectionTable\"\n class=\"table table-borderless table-sm\"\n *ngIf=\"showingCollection\"\n >\n <thead>\n <tr>\n <th>No.</th>\n <th>Selection</th>\n <th>Label</th>\n <th *ngFor=\"let column of collectionColumns\">\n {{ getPrettySymbol(column) }}\n </th>\n </tr>\n </thead>\n <tbody>\n <tr\n *ngFor=\"let object of showingCollection; index as i\"\n [attr.id]=\"object.uuid\"\n [ngClass]=\"{\n 'active-object':\n activeObject && activeObject.value === object.uuid,\n 'is-cut': object.isCut\n }\"\n >\n <td>#{{ i }}</td>\n <td>\n <div\n *ngIf=\"object.uuid\"\n class=\"row justify-content-center icon-wrapper\"\n >\n <button\n class=\"object-select btn-blank\"\n matTooltip=\"Move camera to object\"\n (click)=\"lookAtObject(object.uuid)\"\n >\n <svg>\n <use href=\"assets/icons/views.svg#views\"></use>\n </svg>\n </button>\n <button\n class=\"object-select btn-blank\"\n matTooltip=\"Highlight object\"\n (click)=\"highlightObject(object.uuid)\"\n >\n <svg>\n <use href=\"assets/icons/cursor.svg#cursor\"></use>\n </svg>\n </button>\n </div>\n </td>\n <td>\n <div class=\"row m-0 add-label\">\n <div class=\"col-10 p-0\">\n <input\n class=\"form-control form-control-sm\"\n type=\"text\"\n [id]=\"'label' + i\"\n />\n </div>\n <div class=\"col-2 p-0 pl-2 text-center icon-wrapper\">\n <button\n class=\"object-select btn-blank\"\n matTooltip=\"Add, update or remove object label\"\n (click)=\"addLabel(i, object.uuid)\"\n >\n <svg>\n <use href=\"assets/icons/update.svg#update\"></use>\n </svg>\n </button>\n </div>\n </div>\n </td>\n <td *ngFor=\"let column of collectionColumns\">\n {{ object[column] }}\n </td>\n </tr>\n </tbody>\n </table>\n <p class=\"emptyBox\" *ngIf=\"!collections\">\n Load event data to be able to display information about the collections\n here.\n </p>\n </div>\n </div>\n</app-overlay>\n",
650
- styles: [".collectionsInfo{height:95%}.collectionsInfo .collectionSelector{height:15%;min-height:2rem}.collectionsInfo .collectionSelector span{color:var(--phoenix-text-color-secondary);margin-right:1rem}.boxBody{height:85%;overflow:scroll}.boxBody p.emptyBox{max-width:21em}.boxBody .add-label{min-width:8rem}.boxBody .add-label input{padding:.1rem .3rem;font-size:.75rem}#collectionTable{position:relative;color:var(--phoenix-text-color-secondary)}#collectionTable thead tr th{position:sticky;top:0;z-index:100;background:var(--phoenix-background-color-secondary)}#collectionTable tr *{padding-right:1.2rem}#collectionTable tr *:last-child{padding-right:0}#collectionTable tr.is-cut{opacity:.5}#collectionTable tr.active-object{color:var(--phoenix-background-color);background:var(--phoenix-text-color);box-shadow:0 0 15px var(--phoenix-text-color)}#collectionTable tr.active-object div.icon-wrapper{--phoenix-options-icon-path: var(--phoenix-background-color);--phoenix-options-icon-bg: var(--phoenix-text-color-hover)}#collectionTable tr.active-object .add-label input{--phoenix-text-color: var(--phoenix-background-color);--phoenix-background-color-tertiary: var( --phoenix-text-color-secondary );--phoenix-border: var(--phoenix-background-color)}#collectionTable td .object-select{position:relative;width:1.6rem;height:1.6rem;margin-right:.4em;text-align:center;background-color:var(--phoenix-options-icon-bg);border-radius:10px;cursor:pointer}#collectionTable td .object-select:last-child{margin-right:0}#collectionTable td .object-select:hover{border:1px solid var(--phoenix-options-icon-path)}#collectionTable td .object-select svg{position:absolute;top:0;left:0;padding:.4rem;width:100%;height:100%;vertical-align:top}.eventSelector{display:flex}.eventSelector label{display:none;color:var(--phoenix-text-color-secondary)}.eventSelector select{width:9rem;padding:5px 10px;font-size:12px;border:1px solid rgba(88,88,88,.08);box-shadow:var(--phoenix-icon-shadow);background-color:var(--phoenix-background-color-tertiary);color:var(--phoenix-text-color-secondary)}\n"]
651
- },] }
652
- ];
653
- CollectionsInfoOverlayComponent.ctorParameters = function () { return [
654
- { type: i0.ElementRef },
655
- { type: EventDisplayService }
656
- ]; };
657
- CollectionsInfoOverlayComponent.propDecorators = {
658
- showObjectsInfo: [{ type: i0.Input }]
659
- };
660
-
661
- var CollectionsInfoComponent = /** @class */ (function () {
662
- function CollectionsInfoComponent(overlay) {
663
- this.overlay = overlay;
664
- this.showObjectsInfo = false;
665
- }
666
- CollectionsInfoComponent.prototype.ngOnInit = function () {
667
- var overlayRef = this.overlay.create();
668
- var overlayPortal = new portal.ComponentPortal(CollectionsInfoOverlayComponent);
669
- this.overlayWindow = overlayRef.attach(overlayPortal);
670
- this.overlayWindow.instance.showObjectsInfo = this.showObjectsInfo;
671
- };
672
- CollectionsInfoComponent.prototype.ngOnDestroy = function () {
673
- this.overlayWindow.destroy();
674
- };
675
- CollectionsInfoComponent.prototype.toggleOverlay = function () {
676
- this.showObjectsInfo = !this.showObjectsInfo;
677
- this.overlayWindow.instance.showObjectsInfo = this.showObjectsInfo;
678
- };
679
- return CollectionsInfoComponent;
680
- }());
681
- CollectionsInfoComponent.decorators = [
682
- { type: i0.Component, args: [{
683
- selector: 'app-collections-info',
684
- template: "<app-menu-toggle\n tooltip=\"Event data collections info\"\n icon=\"info\"\n [active]=\"showObjectsInfo\"\n (click)=\"toggleOverlay()\"\n>\n</app-menu-toggle>\n",
685
- styles: [""]
686
- },] }
687
- ];
688
- CollectionsInfoComponent.ctorParameters = function () { return [
689
- { type: overlay.Overlay }
690
- ]; };
691
-
692
- var DarkThemeComponent = /** @class */ (function () {
693
- function DarkThemeComponent(eventDisplay) {
694
- this.eventDisplay = eventDisplay;
695
- this.darkTheme = false;
696
- }
697
- DarkThemeComponent.prototype.ngOnInit = function () {
698
- this.darkTheme = this.eventDisplay.getUIManager().getDarkTheme();
699
- };
700
- DarkThemeComponent.prototype.setDarkTheme = function () {
701
- this.darkTheme = !this.darkTheme;
702
- this.eventDisplay.getUIManager().setDarkTheme(this.darkTheme);
703
- };
704
- return DarkThemeComponent;
705
- }());
706
- DarkThemeComponent.decorators = [
707
- { type: i0.Component, args: [{
708
- selector: 'app-dark-theme',
709
- template: "<app-menu-toggle\n tooltip=\"Dark theme\"\n [active]=\"darkTheme\"\n icon=\"dark\"\n (click)=\"setDarkTheme()\"\n>\n</app-menu-toggle>\n",
710
- styles: [""]
711
- },] }
712
- ];
713
- DarkThemeComponent.ctorParameters = function () { return [
714
- { type: EventDisplayService }
715
- ]; };
716
-
717
- var EventSelectorComponent = /** @class */ (function () {
718
- function EventSelectorComponent(eventDisplay) {
719
- this.eventDisplay = eventDisplay;
720
- }
721
- EventSelectorComponent.prototype.ngOnInit = function () {
722
- var _this = this;
723
- this.eventDisplay.listenToLoadedEventsChange(function (events) { return (_this.events = events); });
724
- };
725
- EventSelectorComponent.prototype.changeEvent = function (selected) {
726
- var value = selected.target.value;
727
- this.eventDisplay.loadEvent(value);
728
- };
729
- return EventSelectorComponent;
730
- }());
731
- EventSelectorComponent.decorators = [
732
- { type: i0.Component, args: [{
733
- selector: 'app-event-selector',
734
- template: "<div\n class=\"eventSelector mx-2\"\n *ngIf=\"events != null\"\n matTooltip=\"Event selector\"\n matTooltipPosition=\"above\"\n>\n <select name=\"event\" (change)=\"changeEvent($event)\">\n <option *ngFor=\"let event of events\" [value]=\"event\">\n {{ event }}\n </option>\n </select>\n</div>\n",
735
- styles: [".eventSelector select{width:9rem;padding:5px 10px;font-size:12px;border:1px solid rgba(88,88,88,.08);box-shadow:var(--phoenix-icon-shadow);background-color:var(--phoenix-background-color-tertiary);color:var(--phoenix-text-color-secondary)}\n"]
736
- },] }
737
- ];
738
- EventSelectorComponent.ctorParameters = function () { return [
739
- { type: EventDisplayService }
740
- ]; };
741
-
742
- var ExperimentInfoComponent = /** @class */ (function () {
743
- function ExperimentInfoComponent(eventDisplay) {
744
- this.eventDisplay = eventDisplay;
745
- }
746
- ExperimentInfoComponent.prototype.ngOnInit = function () {
747
- var _this = this;
748
- this.eventDisplay.listenToDisplayedEventChange(function () {
749
- _this.experimentInfo = _this.eventDisplay.getEventMetadata();
750
- });
751
- };
752
- return ExperimentInfoComponent;
753
- }());
754
- ExperimentInfoComponent.decorators = [
755
- { type: i0.Component, args: [{
756
- selector: 'app-experiment-info',
757
- template: "<div id=\"experimentInfo\" class=\"experimentInfo\" cdkDrag cdkDragBoundary=\"body\">\n <a\n class=\"experimentLogoWrapper\"\n target=\"_blank\"\n rel=\"noopener noreferrer\"\n *ngIf=\"experiment\"\n href=\"https://home.cern/science/experiments/{{ experiment }}\"\n >\n <img\n class=\"experimentLogo\"\n src=\"assets/images/{{ experiment }}.svg\"\n alt=\"\"\n />\n </a>\n <div class=\"textInfo\">\n <p *ngIf=\"experimentTagline\">\n <b>{{ experimentTagline }}</b>\n </p>\n <p *ngFor=\"let infoField of experimentInfo\">\n <ng-container *ngIf=\"infoField.label\">\n <b>{{ infoField.label }}: </b>{{ infoField.value }}\n </ng-container>\n <ng-container *ngIf=\"!infoField.label\">\n {{ infoField }}\n </ng-container>\n </p>\n </div>\n</div>\n",
758
- styles: [".experimentInfo{position:absolute;top:5rem;left:1rem;display:flex;flex-direction:row;justify-items:flex-end;justify-content:flex-end;align-items:center;align-content:center;cursor:move}.experimentLogoWrapper{width:6rem}.experimentLogoWrapper .experimentLogo{width:100%;height:100%}.textInfo{margin-left:1rem}.textInfo p{color:var(--phoenix-text-color-secondary);font-size:.8rem;margin-bottom:.5rem;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}@media screen and (max-width: 768px){.experimentInfo{top:4rem;max-width:40%}.experimentLogoWrapper{height:4rem}.textInfo{display:none}}\n"]
759
- },] }
760
- ];
761
- ExperimentInfoComponent.ctorParameters = function () { return [
762
- { type: EventDisplayService }
763
- ]; };
764
- ExperimentInfoComponent.propDecorators = {
765
- experiment: [{ type: i0.Input }],
766
- experimentTagline: [{ type: i0.Input }]
767
- };
768
-
769
- /**
770
- * Component for displaying information from the logger
771
- */
772
- var InfoPanelOverlayComponent = /** @class */ (function () {
773
- /**
774
- * Create the information panel overlay
775
- * @param infoLogger Service containing operations related to info logs
776
- */
777
- function InfoPanelOverlayComponent(eventDisplay) {
778
- this.eventDisplay = eventDisplay;
779
- /** List of actions to be displayed in the info panel */
780
- this.actionsList = [];
781
- /** Get Phoenix Version */
782
- this.version = packageJson__default['default'].version;
783
- }
784
- /**
785
- * Get the list of logs from the info logger service
786
- */
787
- InfoPanelOverlayComponent.prototype.ngOnInit = function () {
788
- this.actionsList = this.eventDisplay.getInfoLogger().getInfoLoggerList();
789
- };
790
- return InfoPanelOverlayComponent;
791
- }());
792
- InfoPanelOverlayComponent.decorators = [
793
- { type: i0.Component, args: [{
794
- selector: 'app-info-panel-overlay',
795
- template: "<app-overlay\n overlayTitle=\"Info Panel\"\n icon=\"info-panel\"\n [resizable]=\"true\"\n [active]=\"showInfoPanel\"\n>\n <ul class=\"list-group list-group-flush\">\n <li class=\"list-group-item\">\n <!-- Show Phoenix Current Version (ON by Default) -->\n Phoenix Version: {{ version }}\n </li>\n <li class=\"list-group-item\" *ngIf=\"actionsList.length === 0\">\n No actions.\n </li>\n <li class=\"list-group-item\" *ngFor=\"let action of actionsList\">\n {{ action }}\n </li>\n </ul>\n</app-overlay>\n",
796
- styles: [".list-group-item{font-size:.8rem;padding:.5rem 1rem}\n"]
797
- },] }
798
- ];
799
- InfoPanelOverlayComponent.ctorParameters = function () { return [
800
- { type: EventDisplayService }
801
- ]; };
802
- InfoPanelOverlayComponent.propDecorators = {
803
- showInfoPanel: [{ type: i0.Input }]
804
- };
805
-
806
- /**
807
- * Component for toggling info panel overlay
808
- */
809
- var InfoPanelComponent = /** @class */ (function () {
810
- /**
811
- * Create the info panel toggle
812
- * @param overlay Info panel overlay containing logger data
813
- */
814
- function InfoPanelComponent(overlay) {
815
- this.overlay = overlay;
816
- /** @ignore */
817
- this.showInfoPanel = false;
818
- }
819
- /**
820
- * Create the info panel overlay
821
- */
822
- InfoPanelComponent.prototype.ngOnInit = function () {
823
- var overlayRef = this.overlay.create();
824
- var overlayPortal = new portal.ComponentPortal(InfoPanelOverlayComponent);
825
- this.overlayWindow = overlayRef.attach(overlayPortal);
826
- this.overlayWindow.instance.showInfoPanel = this.showInfoPanel;
827
- };
828
- /**
829
- * Destroy the info panel overlay
830
- */
831
- InfoPanelComponent.prototype.ngOnDestroy = function () {
832
- this.overlayWindow.destroy();
833
- };
834
- /**
835
- * Toggle the info panel overlay
836
- */
837
- InfoPanelComponent.prototype.toggleOverlay = function () {
838
- this.showInfoPanel = !this.showInfoPanel;
839
- this.overlayWindow.instance.showInfoPanel = this.showInfoPanel;
840
- };
841
- return InfoPanelComponent;
842
- }());
843
- InfoPanelComponent.decorators = [
844
- { type: i0.Component, args: [{
845
- selector: 'app-info-panel',
846
- template: "<app-menu-toggle\n tooltip=\"Info panel\"\n icon=\"info-panel\"\n [active]=\"showInfoPanel\"\n (click)=\"toggleOverlay()\"\n>\n</app-menu-toggle>\n",
847
- styles: [""]
848
- },] }
849
- ];
850
- InfoPanelComponent.ctorParameters = function () { return [
851
- { type: overlay.Overlay }
852
- ]; };
853
-
854
- exports.EventDataFormat = void 0;
855
- (function (EventDataFormat) {
856
- EventDataFormat["JSON"] = "JSON";
857
- EventDataFormat["JIVEXML"] = "JIVEXML";
858
- EventDataFormat["IG"] = "IG";
859
- EventDataFormat["ZIP"] = "ZIP";
860
- })(exports.EventDataFormat || (exports.EventDataFormat = {}));
861
- var ImportOption = /** @class */ (function () {
862
- function ImportOption(format, fileType, handler, accept) {
863
- this.format = format;
864
- this.fileType = fileType;
865
- this.handler = handler;
866
- this.accept = accept;
867
- }
868
- return ImportOption;
869
- }());
870
-
871
- var IOOptionsDialogComponent = /** @class */ (function () {
872
- function IOOptionsDialogComponent(eventDisplay, dialogRef) {
873
- this.eventDisplay = eventDisplay;
874
- this.dialogRef = dialogRef;
875
- this.eventDataImportOptions = [exports.EventDataFormat.JSON];
876
- this.supportedEventDataFormats = [
877
- new ImportOption(exports.EventDataFormat.JSON, '.json', this.handleJSONEventDataInput.bind(this), 'application/json'),
878
- new ImportOption(exports.EventDataFormat.JIVEXML, '.xml', this.handleJiveXMLDataInput.bind(this), 'text/xml'),
879
- new ImportOption(exports.EventDataFormat.ZIP, '.zip', this.handleZipEventDataInput.bind(this), '.zip'),
880
- new ImportOption(exports.EventDataFormat.IG, '.ig', this.handleIgEventDataInput.bind(this), '.ig'),
881
- ];
882
- }
883
- IOOptionsDialogComponent.prototype.ngOnInit = function () {
884
- var _this = this;
885
- this.eventDataOptionsWithHandler = this.supportedEventDataFormats.filter(function (eventDataFormat) { return _this.eventDataImportOptions.includes(eventDataFormat.format); });
886
- this.eventDataImportOptions.forEach(function (eventDataImportOption) {
887
- if (eventDataImportOption instanceof ImportOption) {
888
- var importHandler_1 = eventDataImportOption.handler.bind(_this);
889
- eventDataImportOption.handler = function (files) {
890
- importHandler_1(files);
891
- _this.onClose();
892
- };
893
- _this.eventDataOptionsWithHandler.push(eventDataImportOption);
894
- }
895
- });
896
- };
897
- IOOptionsDialogComponent.prototype.getSupportedEventDataFormats = function () {
898
- return this.eventDataImportOptions
899
- .map(function (format) {
900
- if (format instanceof ImportOption) {
901
- return format.format;
902
- }
903
- return format;
904
- })
905
- .filter(function (format) { return format !== 'ZIP'; })
906
- .join(', ');
907
- };
908
- IOOptionsDialogComponent.prototype.onClose = function () {
909
- this.dialogRef.close();
910
- };
911
- IOOptionsDialogComponent.prototype.handleJSONEventDataInput = function (files) {
912
- var _this = this;
913
- var callback = function (content) {
914
- var json = typeof content === 'string' ? JSON.parse(content) : content;
915
- _this.eventDisplay.parsePhoenixEvents(json);
916
- };
917
- this.handleFileInput(files[0], 'json', callback);
918
- };
919
- IOOptionsDialogComponent.prototype.handleJiveXMLDataInput = function (files) {
920
- var _this = this;
921
- var callback = function (content) {
922
- var jiveloader = new phoenixEventDisplay.JiveXMLLoader();
923
- jiveloader.process(content);
924
- var eventData = jiveloader.getEventData();
925
- _this.eventDisplay.buildEventDataFromJSON(eventData);
926
- };
927
- this.handleFileInput(files[0], 'xml', callback);
928
- };
929
- IOOptionsDialogComponent.prototype.handleOBJInput = function (files) {
930
- var _this = this;
931
- var callback = function (content, name) {
932
- _this.eventDisplay.parseOBJGeometry(content, name);
933
- };
934
- this.handleFileInput(files[0], 'obj', callback);
935
- };
936
- IOOptionsDialogComponent.prototype.handleSceneInput = function (files) {
937
- var _this = this;
938
- var callback = function (content) {
939
- _this.eventDisplay.parsePhoenixDisplay(content);
940
- };
941
- this.handleFileInput(files[0], 'phnx', callback);
942
- };
943
- IOOptionsDialogComponent.prototype.handleGLTFInput = function (files) {
944
- var _this = this;
945
- var callback = function (content, name) {
946
- _this.eventDisplay.parseGLTFGeometry(content, name);
947
- };
948
- this.handleFileInput(files[0], 'gltf', callback);
949
- };
950
- IOOptionsDialogComponent.prototype.handlePhoenixInput = function (files) {
951
- var _this = this;
952
- var callback = function (content) {
953
- _this.eventDisplay.parsePhoenixDisplay(content);
954
- };
955
- this.handleFileInput(files[0], 'phnx', callback);
956
- };
957
- IOOptionsDialogComponent.prototype.handleROOTInput = function (files) {
958
- var _this = this;
959
- phoenixEventDisplay.ScriptLoader.loadJSRootScripts().then(function (JSROOT) {
960
- var objectName = prompt('Enter object name in ROOT file');
961
- JSROOT.openFile(files[0]).then(function (file) {
962
- file.readObject(objectName).then(function (obj) {
963
- _this.eventDisplay.loadJSONGeometry(JSROOT.GEO.build(obj, { dflt_colors: true }).toJSON(), files[0].name.split('.')[0]);
964
- });
965
- });
966
- });
967
- this.onClose();
968
- };
969
- IOOptionsDialogComponent.prototype.handleRootJSONInput = function (files) {
970
- var _this = this;
971
- phoenixEventDisplay.ScriptLoader.loadJSRootScripts().then(function (JSROOT) {
972
- var callback = function (content, name) {
973
- _this.eventDisplay.loadJSONGeometry(JSROOT.GEO.build(JSROOT.parse(content), {
974
- dflt_colors: true,
975
- }).toJSON(), name);
976
- };
977
- _this.handleFileInput(files[0], 'gz', callback);
978
- });
979
- };
980
- IOOptionsDialogComponent.prototype.handleIgEventDataInput = function (files) {
981
- var _this = this;
982
- var cmsLoader = new phoenixEventDisplay.CMSLoader();
983
- cmsLoader.readIgArchive(files[0], function (allEvents) {
984
- var allEventsData = cmsLoader.getAllEventsData(allEvents);
985
- _this.eventDisplay.parsePhoenixEvents(allEventsData);
986
- _this.onClose();
987
- });
988
- };
989
- IOOptionsDialogComponent.prototype.handleZipEventDataInput = function (files) {
990
- var _this = this;
991
- if (this.isFileOfExtension(files[0], 'zip')) {
992
- this.handleZipInput(files[0], function (allFilesWithData) {
993
- var allEventsObject = {};
994
- // JSON event data
995
- Object.keys(allFilesWithData)
996
- .filter(function (fileName) { return fileName.endsWith('.json'); })
997
- .forEach(function (fileName) {
998
- Object.assign(allEventsObject, JSON.parse(allFilesWithData[fileName]));
999
- });
1000
- // JiveXML event data
1001
- var jiveloader = new phoenixEventDisplay.JiveXMLLoader();
1002
- Object.keys(allFilesWithData)
1003
- .filter(function (fileName) { return fileName.endsWith('.xml'); })
1004
- .forEach(function (fileName) {
1005
- var _a;
1006
- jiveloader.process(allFilesWithData[fileName]);
1007
- var eventData = jiveloader.getEventData();
1008
- Object.assign(allEventsObject, (_a = {}, _a[fileName] = eventData, _a));
1009
- });
1010
- _this.eventDisplay.parsePhoenixEvents(allEventsObject);
1011
- _this.onClose();
1012
- });
1013
- }
1014
- else {
1015
- console.error('Error: Invalid file format!');
1016
- this.eventDisplay.getInfoLogger().add('Invalid file format!', 'Error');
1017
- }
1018
- };
1019
- IOOptionsDialogComponent.prototype.handleZipInput = function (file, callback) {
1020
- return __awaiter(this, void 0, void 0, function () {
1021
- var allFilesWithData, zipArchive, allFiles, allFiles_1, allFiles_1_1, singleFile, fileData, e_1_1, error_1;
1022
- var e_1, _a;
1023
- return __generator(this, function (_b) {
1024
- switch (_b.label) {
1025
- case 0:
1026
- allFilesWithData = {};
1027
- _b.label = 1;
1028
- case 1:
1029
- _b.trys.push([1, 11, , 12]);
1030
- zipArchive = new JSZip__default['default']();
1031
- return [4 /*yield*/, zipArchive.loadAsync(file)];
1032
- case 2:
1033
- _b.sent();
1034
- allFiles = Object.keys(zipArchive.files);
1035
- _b.label = 3;
1036
- case 3:
1037
- _b.trys.push([3, 8, 9, 10]);
1038
- allFiles_1 = __values(allFiles), allFiles_1_1 = allFiles_1.next();
1039
- _b.label = 4;
1040
- case 4:
1041
- if (!!allFiles_1_1.done) return [3 /*break*/, 7];
1042
- singleFile = allFiles_1_1.value;
1043
- return [4 /*yield*/, zipArchive.file(singleFile).async('string')];
1044
- case 5:
1045
- fileData = _b.sent();
1046
- allFilesWithData[singleFile] = fileData;
1047
- _b.label = 6;
1048
- case 6:
1049
- allFiles_1_1 = allFiles_1.next();
1050
- return [3 /*break*/, 4];
1051
- case 7: return [3 /*break*/, 10];
1052
- case 8:
1053
- e_1_1 = _b.sent();
1054
- e_1 = { error: e_1_1 };
1055
- return [3 /*break*/, 10];
1056
- case 9:
1057
- try {
1058
- if (allFiles_1_1 && !allFiles_1_1.done && (_a = allFiles_1.return)) _a.call(allFiles_1);
1059
- }
1060
- finally { if (e_1) throw e_1.error; }
1061
- return [7 /*endfinally*/];
1062
- case 10:
1063
- callback(allFilesWithData);
1064
- return [3 /*break*/, 12];
1065
- case 11:
1066
- error_1 = _b.sent();
1067
- console.error('Error while reading zip', error_1);
1068
- this.eventDisplay.getInfoLogger().add('Could not read zip file', 'Error');
1069
- return [3 /*break*/, 12];
1070
- case 12: return [2 /*return*/];
1071
- }
1072
- });
1073
- });
1074
- };
1075
- IOOptionsDialogComponent.prototype.handleFileInput = function (file, extension, callback) {
1076
- var reader = new FileReader();
1077
- if (this.isFileOfExtension(file, extension)) {
1078
- reader.onload = function () {
1079
- callback(reader.result.toString(), file.name.split('.')[0]);
1080
- };
1081
- reader.readAsText(file);
1082
- }
1083
- else {
1084
- console.error('Error: Invalid file format!');
1085
- this.eventDisplay.getInfoLogger().add('Invalid file format!', 'Error');
1086
- }
1087
- this.onClose();
1088
- };
1089
- IOOptionsDialogComponent.prototype.isFileOfExtension = function (file, extension) {
1090
- return file.name.split('.').pop() === extension;
1091
- };
1092
- IOOptionsDialogComponent.prototype.saveScene = function () {
1093
- this.eventDisplay.exportPhoenixDisplay();
1094
- };
1095
- IOOptionsDialogComponent.prototype.exportOBJ = function () {
1096
- this.eventDisplay.exportToOBJ();
1097
- };
1098
- return IOOptionsDialogComponent;
1099
- }());
1100
- IOOptionsDialogComponent.decorators = [
1101
- { type: i0.Component, args: [{
1102
- selector: 'app-io-options-dialog',
1103
- template: "<div class=\"dialog\">\n <h1 mat-dialog-title>Import and export options</h1>\n <div mat-dialog-content class=\"dialog-content\">\n <div *ngIf=\"eventDataImportOptions.length > 0\">\n <h5>Import</h5>\n\n <h6 class=\"text-center\">Event data</h6>\n\n <div class=\"row centered\">\n <ng-container\n *ngFor=\"let eventDataImportOption of eventDataOptionsWithHandler\"\n >\n <input\n #eventDataFileInput\n type=\"file\"\n tabindex=\"-1\"\n class=\"file-input\"\n [accept]=\"eventDataImportOption.accept\"\n (change)=\"eventDataImportOption.handler($event.target.files)\"\n />\n <button\n class=\"file-input-button\"\n (click)=\"eventDataFileInput.click()\"\n >\n <img src=\"assets/icons/eventData.svg\" alt=\"Event data icon\" />\n Load {{ eventDataImportOption.fileType }}\n </button>\n </ng-container>\n </div>\n\n <p class=\"text-center\">\n Supported formats: {{ getSupportedEventDataFormats() }}\n </p>\n </div>\n\n <h6 class=\"text-center\">Geometries</h6>\n\n <div class=\"row centered\">\n <input\n #objFileInput\n type=\"file\"\n tabindex=\"-1\"\n class=\"file-input\"\n accept=\".obj\"\n name=\"image\"\n (change)=\"handleOBJInput($event.target.files)\"\n />\n <button class=\"file-input-button\" (click)=\"objFileInput.click()\">\n <img src=\"assets/icons/obj.svg\" alt=\"\" /> Load .obj\n </button>\n\n <input\n #gltfFileInput\n type=\"file\"\n tabindex=\"-1\"\n class=\"file-input\"\n accept=\".gltf\"\n name=\"image\"\n (change)=\"handleGLTFInput($event.target.files)\"\n />\n <button class=\"file-input-button\" (click)=\"gltfFileInput.click()\">\n <img src=\"assets/icons/gltf.svg\" alt=\"\" /> Load .gltf\n </button>\n\n <input\n #rootFileInput\n type=\"file\"\n tabindex=\"-1\"\n class=\"file-input\"\n accept=\".root\"\n (change)=\"handleROOTInput($event.target.files)\"\n />\n <button class=\"file-input-button\" (click)=\"rootFileInput.click()\">\n <img src=\"assets/icons/file-import.svg\" alt=\"\" /> Load .root\n </button>\n\n <input\n #rootJSONFileInput\n type=\"file\"\n tabindex=\"-1\"\n class=\"file-input\"\n accept=\".json.gz\"\n (change)=\"handleRootJSONInput($event.target.files)\"\n />\n <button class=\"file-input-button\" (click)=\"rootJSONFileInput.click()\">\n <img src=\"assets/icons/file-import.svg\" alt=\"\" /> Load .json.gz\n </button>\n </div>\n\n <p class=\"text-center\">Supported formats: OBJ, GLTF, ROOT, ROOT JSON</p>\n\n <h5>Import / export scene</h5>\n\n <div class=\"row centered\">\n <button\n class=\"file-input-button load-export\"\n id=\"exportScene\"\n (click)=\"saveScene()\"\n >\n <img src=\"assets/icons/save.svg\" alt=\"\" /> Save scene\n </button>\n\n <input\n #loadSceneInput\n type=\"file\"\n tabindex=\"-1\"\n class=\"file-input\"\n accept=\".phnx\"\n name=\"image\"\n (change)=\"handlePhoenixInput($event.target.files)\"\n />\n <button\n class=\"file-input-button load-export\"\n id=\"importScene\"\n (click)=\"loadSceneInput.click()\"\n >\n <img src=\"assets/icons/upload.svg\" alt=\"\" /> Load scene\n </button>\n\n <button\n class=\"file-input-button export-button\"\n id=\"exportOBJ\"\n (click)=\"exportOBJ()\"\n >\n <img src=\"assets/icons/obj.svg\" alt=\"\" /> Save OBJ\n </button>\n </div>\n </div>\n <div mat-dialog-actions>\n <button mat-button (click)=\"onClose()\" cdkFocusInitial>Close</button>\n </div>\n</div>\n",
1104
- styles: [".row{justify-content:center;margin:1rem 0}.file-input{width:.1px;height:.1px;opacity:0;overflow:hidden;position:absolute;z-index:-1}.file-input-button{font-size:1em;font-weight:700;color:#fff;background-color:#6eaece;padding:1em .5em;border:none;border-radius:10px;width:8rem;margin:0 .4rem}.file-input-button.load-export{padding:.8em .2em;width:7rem}.file-input-button.load-export img{max-height:1.2em}.file-input-button.export-button{background-color:#cb7133}.file-input-button.export-button:hover{background-color:#ad5b2d}.file-input-button img{max-height:2em;display:block;width:100%}.file-input-button:hover{background-color:#118ab2}#exportScene{background-color:#5bd99e}#exportScene:hover{background-color:#05c292}#importScene{background-color:#ecc25e}#importScene:hover{background-color:#d6b44d}\n"]
1105
- },] }
1106
- ];
1107
- IOOptionsDialogComponent.ctorParameters = function () { return [
1108
- { type: EventDisplayService },
1109
- { type: dialog.MatDialogRef }
1110
- ]; };
1111
- IOOptionsDialogComponent.propDecorators = {
1112
- eventDataImportOptions: [{ type: i0.Input }]
1113
- };
1114
-
1115
- var IoOptionsComponent = /** @class */ (function () {
1116
- function IoOptionsComponent(dialog) {
1117
- this.dialog = dialog;
1118
- this.eventDataImportOptions = Object.values(exports.EventDataFormat);
1119
- }
1120
- IoOptionsComponent.prototype.openIODialog = function () {
1121
- var dialogRef = this.dialog.open(IOOptionsDialogComponent, {
1122
- panelClass: 'dialog',
1123
- });
1124
- dialogRef.componentInstance.eventDataImportOptions =
1125
- this.eventDataImportOptions;
1126
- };
1127
- return IoOptionsComponent;
1128
- }());
1129
- IoOptionsComponent.decorators = [
1130
- { type: i0.Component, args: [{
1131
- selector: 'app-io-options',
1132
- 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",
1133
- styles: [""]
1134
- },] }
1135
- ];
1136
- IoOptionsComponent.ctorParameters = function () { return [
1137
- { type: dialog.MatDialog }
1138
- ]; };
1139
- IoOptionsComponent.propDecorators = {
1140
- eventDataImportOptions: [{ type: i0.Input }]
1141
- };
1142
-
1143
- var MainViewToggleComponent = /** @class */ (function () {
1144
- function MainViewToggleComponent(eventDisplay) {
1145
- this.eventDisplay = eventDisplay;
1146
- this.orthographicView = false;
1147
- }
1148
- MainViewToggleComponent.prototype.switchMainView = function () {
1149
- this.orthographicView = !this.orthographicView;
1150
- this.eventDisplay
1151
- .getUIManager()
1152
- .toggleOrthographicView(this.orthographicView);
1153
- };
1154
- return MainViewToggleComponent;
1155
- }());
1156
- MainViewToggleComponent.decorators = [
1157
- { type: i0.Component, args: [{
1158
- selector: 'app-main-view-toggle',
1159
- 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",
1160
- styles: [""]
1161
- },] }
1162
- ];
1163
- MainViewToggleComponent.ctorParameters = function () { return [
1164
- { type: EventDisplayService }
1165
- ]; };
1166
-
1167
- var MenuToggleComponent = /** @class */ (function () {
1168
- function MenuToggleComponent() {
1169
- this.disabled = false;
1170
- }
1171
- return MenuToggleComponent;
1172
- }());
1173
- MenuToggleComponent.decorators = [
1174
- { type: i0.Component, args: [{
1175
- selector: 'app-menu-toggle',
1176
- 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",
1177
- 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"]
1178
- },] }
1179
- ];
1180
- MenuToggleComponent.propDecorators = {
1181
- icon: [{ type: i0.Input }],
1182
- active: [{ type: i0.Input }],
1183
- tooltip: [{ type: i0.Input }],
1184
- disabled: [{ type: i0.Input }]
1185
- };
1186
-
1187
- var ObjectClippingComponent = /** @class */ (function () {
1188
- function ObjectClippingComponent(eventDisplay) {
1189
- var _this = this;
1190
- this.eventDisplay = eventDisplay;
1191
- var stateManager = this.eventDisplay.getStateManager();
1192
- stateManager.clippingEnabled.onUpdate(function (clippingValue) { return (_this.clippingEnabled = clippingValue); });
1193
- stateManager.clippingAngle.onUpdate(function (value) { return (_this.clippingAngle = value); });
1194
- }
1195
- ObjectClippingComponent.prototype.changeClippingAngle = function (change) {
1196
- var angle = change.value;
1197
- this.eventDisplay.getUIManager().rotateClipping(angle);
1198
- };
1199
- ObjectClippingComponent.prototype.toggleClipping = function (change) {
1200
- var value = change.checked;
1201
- this.eventDisplay.getUIManager().setClipping(value);
1202
- this.clippingEnabled = value;
1203
- };
1204
- return ObjectClippingComponent;
1205
- }());
1206
- ObjectClippingComponent.decorators = [
1207
- { type: i0.Component, args: [{
1208
- selector: 'app-object-clipping',
1209
- template: "<mat-menu class=\"mat-menu\" #menu>\n <button\n mat-menu-item\n (click)=\"\n $event.stopPropagation();\n clippingCheckbox._inputElement.nativeElement.click()\n \"\n >\n <mat-checkbox\n #clippingCheckbox\n [checked]=\"clippingEnabled\"\n (click)=\"$event.stopPropagation()\"\n (change)=\"toggleClipping($event)\"\n >Clipping\n </mat-checkbox>\n </button>\n <button class=\"slider-btn\" mat-menu-item (focus)=\"clippingSlider.focus()\">\n <mat-slider\n #clippingSlider\n min=\"0\"\n max=\"180\"\n step=\"1\"\n thumbLabel\n [value]=\"clippingAngle\"\n (click)=\"$event.stopPropagation()\"\n (input)=\"changeClippingAngle($event)\"\n >\n </mat-slider>\n </button>\n</mat-menu>\n\n<app-menu-toggle\n [matMenuTriggerFor]=\"menu\"\n tooltip=\"Geometry clipping\"\n icon=\"clipping\"\n [active]=\"clippingEnabled\"\n>\n</app-menu-toggle>\n",
1210
- styles: [".slider-btn{overflow:visible}mat-slider{margin-left:.75rem;margin-right:.75rem}\n"]
1211
- },] }
1212
- ];
1213
- ObjectClippingComponent.ctorParameters = function () { return [
1214
- { type: EventDisplayService }
1215
- ]; };
1216
-
1217
- var ObjectSelectionOverlayComponent = /** @class */ (function () {
1218
- function ObjectSelectionOverlayComponent(eventDisplay) {
1219
- this.eventDisplay = eventDisplay;
1220
- this.selectedObject = { name: 'Object', attributes: [] };
1221
- }
1222
- ObjectSelectionOverlayComponent.prototype.ngOnInit = function () {
1223
- this.eventDisplay.allowSelection(this.selectedObject);
1224
- };
1225
- return ObjectSelectionOverlayComponent;
1226
- }());
1227
- ObjectSelectionOverlayComponent.decorators = [
1228
- { type: i0.Component, args: [{
1229
- selector: 'app-object-selection-overlay',
1230
- 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",
1231
- styles: ["#selectedObjectPanelBody{padding:0 .8em;overflow:auto;max-width:300px;max-height:16rem;min-width:7rem}\n"]
1232
- },] }
1233
- ];
1234
- ObjectSelectionOverlayComponent.ctorParameters = function () { return [
1235
- { type: EventDisplayService }
1236
- ]; };
1237
- ObjectSelectionOverlayComponent.propDecorators = {
1238
- hiddenSelectedInfo: [{ type: i0.Input }]
1239
- };
1240
-
1241
- var ObjectSelectionComponent = /** @class */ (function () {
1242
- function ObjectSelectionComponent(overlay, eventDisplay) {
1243
- this.overlay = overlay;
1244
- this.eventDisplay = eventDisplay;
1245
- // Attributes for displaying the information of selected objects
1246
- this.hiddenSelectedInfo = true;
1247
- }
1248
- ObjectSelectionComponent.prototype.ngOnInit = function () {
1249
- var overlayRef = this.overlay.create();
1250
- var overlayPortal = new portal.ComponentPortal(ObjectSelectionOverlayComponent);
1251
- this.overlayWindow = overlayRef.attach(overlayPortal);
1252
- this.overlayWindow.instance.hiddenSelectedInfo = this.hiddenSelectedInfo;
1253
- };
1254
- ObjectSelectionComponent.prototype.ngOnDestroy = function () {
1255
- this.overlayWindow.destroy();
1256
- };
1257
- ObjectSelectionComponent.prototype.toggleOverlay = function () {
1258
- this.hiddenSelectedInfo = !this.hiddenSelectedInfo;
1259
- this.overlayWindow.instance.hiddenSelectedInfo = this.hiddenSelectedInfo;
1260
- this.eventDisplay.enableSelecting(!this.hiddenSelectedInfo);
1261
- };
1262
- return ObjectSelectionComponent;
1263
- }());
1264
- ObjectSelectionComponent.decorators = [
1265
- { type: i0.Component, args: [{
1266
- selector: 'app-object-selection',
1267
- template: "<app-menu-toggle\n tooltip=\"Object selection\"\n icon=\"cursor\"\n [active]=\"!hiddenSelectedInfo\"\n (click)=\"toggleOverlay()\"\n>\n</app-menu-toggle>\n",
1268
- styles: [""]
1269
- },] }
1270
- ];
1271
- ObjectSelectionComponent.ctorParameters = function () { return [
1272
- { type: overlay.Overlay },
1273
- { type: EventDisplayService }
1274
- ]; };
1275
-
1276
- /**
1277
- * Component for overlay panel.
1278
- */
1279
- var OverlayComponent = /** @class */ (function () {
1280
- function OverlayComponent() {
1281
- /** If the overlay is open or not. */
1282
- this.active = false;
1283
- /** If the overlay is resizable. */
1284
- this.resizable = false;
1285
- /** If the overlay body is transparent or not. */
1286
- this.transparentBody = false;
1287
- /** If the overlay body is visible or not. */
1288
- this.showBody = true;
1289
- /** Minimum resizable width. */
1290
- this.MIN_RES_WIDTH = 300;
1291
- /** Minimum resizable height */
1292
- this.MIN_RES_HEIGHT = 100;
1293
- }
1294
- /**
1295
- * Move the resizable handle to the bottom right after the component is created.
1296
- */
1297
- OverlayComponent.prototype.ngAfterViewInit = function () {
1298
- var _this = this;
1299
- if (this.resizable) {
1300
- var resizeHandleElement = this.resizeHandleCorner.nativeElement;
1301
- resizeHandleElement.style.bottom = '0';
1302
- resizeHandleElement.style.right = '0';
1303
- new cssElementQueries.ResizeSensor(this.overlayCard.nativeElement, function () {
1304
- _this.resetHandlePosition();
1305
- });
1306
- window.addEventListener('resize', function () {
1307
- _this.resetHandlePosition();
1308
- });
1309
- }
1310
- };
1311
- /**
1312
- * Resize the overlay card when the resize handle is dragged.
1313
- */
1314
- OverlayComponent.prototype.onResize = function () {
1315
- var resizeHandleElement = this.resizeHandleCorner.nativeElement;
1316
- var overlayCardElement = this.overlayCard.nativeElement;
1317
- var dragRect = resizeHandleElement.getBoundingClientRect();
1318
- var overlayRect = overlayCardElement.getBoundingClientRect();
1319
- var width = dragRect.left - overlayRect.left + dragRect.width;
1320
- var height = dragRect.top - overlayRect.top + dragRect.height;
1321
- this.setHandleTransform(overlayRect, dragRect);
1322
- if (width > this.MIN_RES_WIDTH && height > this.MIN_RES_HEIGHT) {
1323
- overlayCardElement.style.width = width + 'px';
1324
- overlayCardElement.style.height = height + 'px';
1325
- }
1326
- };
1327
- /**
1328
- * Reset resize handle position.
1329
- */
1330
- OverlayComponent.prototype.resetHandlePosition = function () {
1331
- var resizeHandleElement = this.resizeHandleCorner.nativeElement;
1332
- this.setHandleTransform(this.overlayCard.nativeElement.getBoundingClientRect(), resizeHandleElement.getBoundingClientRect());
1333
- resizeHandleElement.style.bottom = null;
1334
- resizeHandleElement.style.right = null;
1335
- };
1336
- /**
1337
- * Set the position of the resize handle using transform3d.
1338
- * @param overlayRect Bounding client rectangle of the overlay card.
1339
- * @param dragRect Bounding client rectangle of the resize handle.
1340
- */
1341
- OverlayComponent.prototype.setHandleTransform = function (overlayRect, dragRect) {
1342
- var translateX = overlayRect.width - dragRect.width;
1343
- var translateY = overlayRect.height - dragRect.height;
1344
- this.resizeHandleCorner.nativeElement.style.transform = "translate3d(" + translateX + "px, " + translateY + "px, 0)";
1345
- };
1346
- return OverlayComponent;
1347
- }());
1348
- OverlayComponent.decorators = [
1349
- { type: i0.Component, args: [{
1350
- selector: 'app-overlay',
1351
- template: "<div\n #overlayCard\n class=\"overlay-card card\"\n [hidden]=\"!active\"\n cdkDrag\n cdkDragBoundary=\"body\"\n>\n <div\n class=\"card-header d-flex justify-content-between\"\n [ngClass]=\"{ 'with-body': showBody }\"\n cdkDragHandle\n *ngIf=\"overlayTitle\"\n >\n <div class=\"align-self-center card-icon\" *ngIf=\"icon\">\n <svg>\n <use attr.href=\"assets/icons/{{ icon }}.svg#{{ icon }}\"></use>\n </svg>\n </div>\n <h5 class=\"align-self-center m-0 px-2\">{{ overlayTitle }}</h5>\n <button\n class=\"align-self-center card-icon btn-blank expandCollapse\"\n matTooltip=\"Expand / Collapse\"\n matTooltipPosition=\"right\"\n [ngClass]=\"{ expand: showBody }\"\n (click)=\"showBody = !showBody\"\n >\n <svg>\n <use href=\"assets/icons/expand.svg#expand\"></use>\n </svg>\n </button>\n </div>\n <div\n class=\"overlay-card-content\"\n *ngIf=\"showBody\"\n [ngClass]=\"{ 'transparent-bg': transparentBody }\"\n >\n <ng-content></ng-content>\n </div>\n <!-- Making the overlay resizable -->\n <span\n #resizeHandleCorner\n class=\"resize-handle corner\"\n *ngIf=\"resizable\"\n [hidden]=\"!showBody\"\n cdkDrag\n (cdkDragMoved)=\"onResize()\"\n ></span>\n</div>\n",
1352
- encapsulation: i0.ViewEncapsulation.None,
1353
- styles: [".overlay-card.card{color:var(--phoenix-text-color);background:none;max-width:100vw;font-size:12px;min-width:300px;height:100%;max-height:70vh;box-shadow:none;border:none;position:relative;z-index:200}.overlay-card.card .card-header{width:12rem;background:var(--phoenix-background-color-secondary);box-shadow:var(--phoenix-box-shadow);padding:.4rem .8rem;border-radius:10px;border:none;cursor:move;text-align:center;transition:all .2s}.overlay-card.card .card-header.with-body{border-bottom-left-radius:0;border-bottom-right-radius:0}.overlay-card.card .card-header .card-icon{display:flex;height:.7rem;width:.7rem}.overlay-card.card .card-header h5{font-size:.9rem}.overlay-card.card .card-header .expandCollapse{cursor:pointer;transition:all .2s}.overlay-card.card .card-header .expandCollapse.expand{transform:scaleY(-1)}.overlay-card.card .card-header .expandCollapse svg{width:100%;height:100%}.overlay-card.card .overlay-card-content{background:var(--phoenix-background-color-secondary);box-shadow:var(--phoenix-box-shadow);border-radius:0 10px 10px;overflow:auto;height:100%}.overlay-card.card .overlay-card-content.transparent-bg{background:none}.overlay-card.card .list-group{color:var(--phoenix-text-color-secondary);background:var(--phoenix-background-color-secondary);max-height:40vh;overflow:auto}.overlay-card.card .list-group .list-group-item{background-color:var(--phoenix-background-color-secondary);border-color:var(--phoenix-border)}.overlay-card.card .resize-handle{width:1rem;height:1rem;cursor:nwse-resize;position:absolute}.overlay-card.card .resize-handle.corner{border-right:.2rem solid var(--phoenix-text-color);border-bottom:.2rem solid var(--phoenix-text-color)}\n"]
1354
- },] }
1355
- ];
1356
- OverlayComponent.propDecorators = {
1357
- overlayTitle: [{ type: i0.Input }],
1358
- active: [{ type: i0.Input }],
1359
- icon: [{ type: i0.Input }],
1360
- resizable: [{ type: i0.Input }],
1361
- transparentBody: [{ type: i0.Input }],
1362
- overlayCard: [{ type: i0.ViewChild, args: ['overlayCard',] }],
1363
- resizeHandleCorner: [{ type: i0.ViewChild, args: ['resizeHandleCorner',] }]
1364
- };
1365
-
1366
- var OverlayViewWindowComponent = /** @class */ (function () {
1367
- function OverlayViewWindowComponent(eventDisplay) {
1368
- this.eventDisplay = eventDisplay;
1369
- this.showOverlay = true;
1370
- this.transparentBody = false;
1371
- this.orthographicView = false;
1372
- this.overlayViewFixed = false;
1373
- }
1374
- OverlayViewWindowComponent.prototype.ngAfterViewInit = function () {
1375
- var canvas = this.initializeCanvas(this.overlayWindow.nativeElement);
1376
- this.eventDisplay.setOverlayRenderer(canvas);
1377
- };
1378
- OverlayViewWindowComponent.prototype.initializeCanvas = function (canvas) {
1379
- var width = window.innerWidth / 2.5;
1380
- var height = window.innerHeight / 2.5;
1381
- canvas.width = width;
1382
- canvas.height = height;
1383
- canvas.style.width = width.toString() + ' px';
1384
- canvas.style.height = height.toString() + ' px';
1385
- return canvas;
1386
- };
1387
- OverlayViewWindowComponent.prototype.switchOverlayView = function () {
1388
- this.orthographicView = !this.orthographicView;
1389
- this.eventDisplay
1390
- .getUIManager()
1391
- .toggleOrthographicView(this.orthographicView);
1392
- };
1393
- OverlayViewWindowComponent.prototype.fixOverlayView = function () {
1394
- this.overlayViewFixed = !this.overlayViewFixed;
1395
- this.eventDisplay.fixOverlayView(this.overlayViewFixed);
1396
- };
1397
- OverlayViewWindowComponent.prototype.toggleBgTransparency = function () {
1398
- this.transparentBody = !this.transparentBody;
1399
- };
1400
- return OverlayViewWindowComponent;
1401
- }());
1402
- OverlayViewWindowComponent.decorators = [
1403
- { type: i0.Component, args: [{
1404
- selector: 'app-overlay-view-window',
1405
- template: "<app-overlay\n overlayTitle=\"Overlay View\"\n icon=\"overlay\"\n [resizable]=\"true\"\n [transparentBody]=\"transparentBody\"\n [active]=\"showOverlay\"\n>\n <div class=\"overlay-view-wrapper\">\n <canvas #overlayWindow id=\"overlay-canvas\" [hidden]=\"!showOverlay\">\n </canvas>\n <div class=\"overlay-view-controls position-absolute d-flex flex-row\">\n <app-menu-toggle\n class=\"overlay-view-control\"\n icon=\"transparent\"\n matTooltip=\"Toggle background transparency\"\n (click)=\"toggleBgTransparency()\"\n >\n </app-menu-toggle>\n <app-menu-toggle\n class=\"overlay-view-control\"\n icon=\"move-lock\"\n [matTooltip]=\"(overlayViewFixed ? 'Restore' : 'Fix') + ' overlay view'\"\n [active]=\"overlayViewFixed\"\n (click)=\"fixOverlayView()\"\n >\n </app-menu-toggle>\n <app-menu-toggle\n class=\"overlay-view-control\"\n [icon]=\"orthographicView ? 'orthographic' : 'perspective'\"\n [matTooltip]=\"\n 'Switch to ' +\n (orthographicView ? 'orthographic' : 'perspective') +\n ' view'\n \"\n (click)=\"switchOverlayView()\"\n >\n </app-menu-toggle>\n </div>\n </div>\n</app-overlay>\n",
1406
- styles: ["#overlay-canvas{background-color:#0000001a;width:100%}.overlay-view-controls{bottom:1em;right:1em;opacity:0;transition:opacity .2s}.overlay-view-controls .overlay-view-control{background:var(--phoenix-background-color-secondary);box-shadow:var(--phoenix-box-shadow);overflow:hidden;width:2.5rem;height:2.5rem;border-radius:50%;display:flex;justify-content:center;align-items:center}.overlay-view-wrapper:hover .overlay-view-controls{opacity:1;transition:opacity .2s}\n"]
1407
- },] }
1408
- ];
1409
- OverlayViewWindowComponent.ctorParameters = function () { return [
1410
- { type: EventDisplayService }
1411
- ]; };
1412
- OverlayViewWindowComponent.propDecorators = {
1413
- showOverlay: [{ type: i0.Input }],
1414
- overlayWindow: [{ type: i0.ViewChild, args: ['overlayWindow',] }]
1415
- };
1416
-
1417
- var OverlayViewComponent = /** @class */ (function () {
1418
- function OverlayViewComponent(overlay) {
1419
- this.overlay = overlay;
1420
- this.showOverlay = false;
1421
- }
1422
- OverlayViewComponent.prototype.ngOnInit = function () {
1423
- var overlayRef = this.overlay.create();
1424
- var overlayPortal = new portal.ComponentPortal(OverlayViewWindowComponent);
1425
- this.overlayWindow = overlayRef.attach(overlayPortal);
1426
- this.overlayWindow.instance.showOverlay = this.showOverlay;
1427
- };
1428
- OverlayViewComponent.prototype.ngOnDestroy = function () {
1429
- this.overlayWindow.destroy();
1430
- };
1431
- OverlayViewComponent.prototype.toggleOverlay = function () {
1432
- this.showOverlay = !this.showOverlay;
1433
- this.overlayWindow.instance.showOverlay = this.showOverlay;
1434
- };
1435
- return OverlayViewComponent;
1436
- }());
1437
- OverlayViewComponent.decorators = [
1438
- { type: i0.Component, args: [{
1439
- selector: 'app-overlay-view',
1440
- template: "<app-menu-toggle\n tooltip=\"Overlay view\"\n icon=\"overlay\"\n [active]=\"showOverlay\"\n (click)=\"toggleOverlay()\"\n>\n</app-menu-toggle>\n",
1441
- styles: [""]
1442
- },] }
1443
- ];
1444
- OverlayViewComponent.ctorParameters = function () { return [
1445
- { type: overlay.Overlay }
1446
- ]; };
1447
-
1448
- var TreeMenuComponent = /** @class */ (function () {
1449
- function TreeMenuComponent() {
1450
- this.rootNode = {
1451
- name: 'Atlas Detector',
1452
- geometryId: 'AtlasDetector',
1453
- children: [
1454
- {
1455
- name: 'Magnet systems',
1456
- geometryId: 'MagnetSys',
1457
- children: [
1458
- {
1459
- name: 'Toroids',
1460
- geometryId: 'Toroids',
1461
- },
1462
- ],
1463
- },
1464
- {
1465
- name: 'Calorimeters',
1466
- geometryId: 'CaloSys',
1467
- children: [
1468
- {
1469
- name: 'LAr Barrel',
1470
- geometryId: 'LAr Barrel',
1471
- },
1472
- {
1473
- name: 'LAr EC1',
1474
- geometryId: 'LAr EC1',
1475
- },
1476
- {
1477
- name: 'LAr EC2',
1478
- geometryId: 'LAr EC2',
1479
- },
1480
- {
1481
- name: 'Tile Cal',
1482
- geometryId: 'Tile Cal',
1483
- },
1484
- ],
1485
- },
1486
- {
1487
- name: 'Inner detector',
1488
- geometryId: 'InDetSys',
1489
- children: [
1490
- {
1491
- name: 'Pixel',
1492
- geometryId: 'Pixel',
1493
- },
1494
- {
1495
- name: 'SCT',
1496
- geometryId: 'SCT',
1497
- },
1498
- {
1499
- name: 'TRT',
1500
- geometryId: 'TRT',
1501
- },
1502
- ],
1503
- },
1504
- ],
1505
- };
1506
- }
1507
- TreeMenuComponent.prototype.ngOnInit = function () { };
1508
- return TreeMenuComponent;
1509
- }());
1510
- TreeMenuComponent.decorators = [
1511
- { type: i0.Component, args: [{
1512
- selector: 'app-tree-menu',
1513
- template: "<div class=\"tree-wrapper\">\n <div class=\"tree-menu\">\n <app-tree-menu-item [node]=\"rootNode\"></app-tree-menu-item>\n </div>\n</div>\n",
1514
- styles: [".tree-wrapper{position:absolute;top:0;bottom:0;left:0;display:flex;flex-direction:column;justify-content:center;align-items:center;align-content:center}.tree-menu{display:flex;flex-direction:column;justify-content:center;align-items:center;align-content:center;max-height:70vh;overflow-y:scroll}.example-tree-invisible{display:none}.example-tree ul,.example-tree li{margin-top:0;margin-bottom:0;list-style-type:none}\n"]
1515
- },] }
1516
- ];
1517
- TreeMenuComponent.ctorParameters = function () { return []; };
1518
-
1519
- var TreeMenuItemComponent = /** @class */ (function () {
1520
- function TreeMenuItemComponent(eventDisplay) {
1521
- this.eventDisplay = eventDisplay;
1522
- this.isExpanded = false;
1523
- this.visible = true;
1524
- }
1525
- TreeMenuItemComponent.prototype.toggleVisibility = function (visible) {
1526
- console.log("hi! it's " + this.node.name);
1527
- this.eventDisplay
1528
- .getUIManager()
1529
- .geometryVisibility(this.node.geometryId, visible);
1530
- this.visible = visible;
1531
- this.children.forEach(function (child) { return child.toggleVisibility(visible); });
1532
- };
1533
- return TreeMenuItemComponent;
1534
- }());
1535
- TreeMenuItemComponent.decorators = [
1536
- { type: i0.Component, args: [{
1537
- selector: 'app-tree-menu-item',
1538
- template: "<ng-container *ngIf=\"node\">\n <div class=\"header\" [ngClass]=\"{ visible: visible }\">\n <button\n *ngIf=\"node.children\"\n mat-icon-button\n matTreeNodeToggle\n (click)=\"isExpanded = !isExpanded\"\n >\n <mat-icon class=\"mat-icon-rtl-mirror\">\n {{ isExpanded ? 'expand_more' : 'chevron_right' }}\n </mat-icon>\n </button>\n <div (click)=\"toggleVisibility(!visible)\" class=\"node-name\">\n {{ node.name }}\n </div>\n </div>\n <ul [hidden]=\"!isExpanded\" hid>\n <div class=\"children\">\n <li *ngFor=\"let node of node.children\">\n <app-tree-menu-item [node]=\"node\"></app-tree-menu-item>\n </li>\n </div>\n </ul>\n</ng-container>\n",
1539
- styles: [".header{cursor:pointer;user-select:none;-webkit-user-select:none;-khtml-user-select:none;-moz-user-select:none;-ms-user-select:none;display:flex;flex-direction:row;align-items:center}.header .node-name,.header .mat-icon-rtl-mirror{color:var(--phoenix-text-color-secondary)}.header.visible .node-name,.header.visible .mat-icon-rtl-mirror{color:var(--phoenix-accent)}.children li{list-style-type:none}\n"]
1540
- },] }
1541
- ];
1542
- TreeMenuItemComponent.ctorParameters = function () { return [
1543
- { type: EventDisplayService }
1544
- ]; };
1545
- TreeMenuItemComponent.propDecorators = {
1546
- children: [{ type: i0.ViewChildren, args: [TreeMenuItemComponent,] }],
1547
- node: [{ type: i0.Input }]
1548
- };
1549
-
1550
- var ViewOptionsComponent = /** @class */ (function () {
1551
- function ViewOptionsComponent(eventDisplay) {
1552
- this.eventDisplay = eventDisplay;
1553
- }
1554
- ViewOptionsComponent.prototype.ngOnInit = function () {
1555
- this.views = this.eventDisplay.getUIManager().getPresetViews();
1556
- };
1557
- ViewOptionsComponent.prototype.displayView = function ($event, view) {
1558
- $event.stopPropagation();
1559
- this.eventDisplay.getUIManager().displayView(view);
1560
- };
1561
- ViewOptionsComponent.prototype.setAxis = function (change) {
1562
- var value = change.checked;
1563
- this.eventDisplay.getUIManager().setShowAxis(value);
1564
- };
1565
- ViewOptionsComponent.prototype.setGrid = function (change) {
1566
- var value = change.checked;
1567
- this.eventDisplay.getUIManager().setShowGrid(value);
1568
- };
1569
- return ViewOptionsComponent;
1570
- }());
1571
- ViewOptionsComponent.decorators = [
1572
- { type: i0.Component, args: [{
1573
- selector: 'app-view-options',
1574
- template: "<mat-menu #viewOptions>\n <button\n mat-menu-item\n (click)=\"\n $event.stopPropagation();\n showGridCheckbox._inputElement.nativeElement.click()\n \"\n >\n <mat-checkbox\n #showGridCheckbox\n (click)=\"$event.stopPropagation()\"\n (change)=\"setGrid($event)\"\n >Show Grid\n </mat-checkbox>\n </button>\n <button\n mat-menu-item\n (click)=\"\n $event.stopPropagation();\n showAxisCheckbox._inputElement.nativeElement.click()\n \"\n >\n <mat-checkbox\n #showAxisCheckbox\n (click)=\"$event.stopPropagation()\"\n (change)=\"setAxis($event)\"\n >Show axis\n </mat-checkbox>\n </button>\n <button\n mat-menu-item\n *ngFor=\"let view of views\"\n (click)=\"displayView($event, view)\"\n >\n <svg class=\"view-icon\" *ngIf=\"view.icon\">\n <use attr.href=\"assets/icons/{{ view.icon }}.svg#{{ view.icon }}\"></use>\n </svg>\n {{ view.name }}\n </button>\n</mat-menu>\n\n<app-menu-toggle\n [matMenuTriggerFor]=\"viewOptions\"\n tooltip=\"View options\"\n icon=\"views\"\n [active]=\"false\"\n>\n</app-menu-toggle>\n",
1575
- styles: [".view-icon{width:1.2rem;height:1.2rem;margin-right:.5rem}\n"]
1576
- },] }
1577
- ];
1578
- ViewOptionsComponent.ctorParameters = function () { return [
1579
- { type: EventDisplayService }
1580
- ]; };
1581
-
1582
- var VrToggleComponent = /** @class */ (function () {
1583
- function VrToggleComponent(eventDisplay) {
1584
- var _this = this;
1585
- var _a, _b, _c;
1586
- this.eventDisplay = eventDisplay;
1587
- this.vrSupported = false;
1588
- this.vrActive = false;
1589
- // NOTE: WebXR needs secure HTTPS context
1590
- // Query for permissions of XR before using it (not supported by browsers yet). See https://developer.mozilla.org/en-US/docs/Web/API/Permissions/query
1591
- (_c = (_b = (_a = navigator) === null || _a === void 0 ? void 0 : _a.xr) === null || _b === void 0 ? void 0 : _b.isSessionSupported) === null || _c === void 0 ? void 0 : _c.call(_b, phoenixEventDisplay.VRManager.SESSION_TYPE).then(function (supported) {
1592
- if (supported) {
1593
- _this.vrSupported = true;
1594
- }
1595
- }).catch(function (err) { return console.warn('Error in VR', err); });
1596
- }
1597
- VrToggleComponent.prototype.toggleVr = function () {
1598
- var _this = this;
1599
- // If toggling VR on
1600
- if (!this.vrActive) {
1601
- this.eventDisplay.initXR(phoenixEventDisplay.XRSessionType.VR, function () {
1602
- _this.vrActive = false;
1603
- // Disable renderer XR and remove animation loop
1604
- _this.eventDisplay.endXR(phoenixEventDisplay.XRSessionType.VR);
1605
- });
1606
- this.vrActive = true;
1607
- }
1608
- else {
1609
- this.eventDisplay.endXR(phoenixEventDisplay.XRSessionType.VR);
1610
- this.vrActive = false;
1611
- }
1612
- };
1613
- return VrToggleComponent;
1614
- }());
1615
- VrToggleComponent.decorators = [
1616
- { type: i0.Component, args: [{
1617
- selector: 'app-vr-toggle',
1618
- template: "<app-menu-toggle\n [disabled]=\"!vrSupported\"\n [active]=\"vrActive\"\n icon=\"vr\"\n (click)=\"vrSupported && toggleVr()\"\n [tooltip]=\"\n vrSupported ? (vrActive ? 'Exit VR' : 'Enter VR') : 'VR not supported'\n \"\n>\n</app-menu-toggle>\n",
1619
- styles: [""]
1620
- },] }
1621
- ];
1622
- VrToggleComponent.ctorParameters = function () { return [
1623
- { type: EventDisplayService }
1624
- ]; };
1625
-
1626
- var ArToggleComponent = /** @class */ (function () {
1627
- function ArToggleComponent(eventDisplay) {
1628
- var _this = this;
1629
- var _a, _b;
1630
- this.eventDisplay = eventDisplay;
1631
- this.arSupported = false;
1632
- this.arActive = false;
1633
- // NOTE: WebXR needs secure HTTPS context
1634
- // Query for permissions of XR before using it (not supported by browsers yet). See https://developer.mozilla.org/en-US/docs/Web/API/Permissions/query
1635
- (_b = (_a = navigator.xr) === null || _a === void 0 ? void 0 : _a.isSessionSupported) === null || _b === void 0 ? void 0 : _b.call(_a, phoenixEventDisplay.ARManager.SESSION_TYPE).then(function (supported) {
1636
- if (supported) {
1637
- _this.arSupported = true;
1638
- }
1639
- }).catch(function (err) { return console.warn('Error in AR', err); });
1640
- }
1641
- ArToggleComponent.prototype.toggleAr = function (enableDomOverlay) {
1642
- var _this = this;
1643
- if (enableDomOverlay === void 0) { enableDomOverlay = true; }
1644
- phoenixEventDisplay.ARManager.enableDomOverlay = enableDomOverlay;
1645
- // If toggling AR on
1646
- if (!this.arActive) {
1647
- this.eventDisplay.initXR(phoenixEventDisplay.XRSessionType.AR, function () {
1648
- _this.arActive = false;
1649
- // Disable renderer XR and remove animation loop
1650
- _this.eventDisplay.endXR(phoenixEventDisplay.XRSessionType.AR);
1651
- });
1652
- this.arActive = true;
1653
- }
1654
- else {
1655
- this.eventDisplay.endXR(phoenixEventDisplay.XRSessionType.AR);
1656
- this.arActive = false;
1657
- }
1658
- };
1659
- return ArToggleComponent;
1660
- }());
1661
- ArToggleComponent.decorators = [
1662
- { type: i0.Component, args: [{
1663
- selector: 'app-ar-toggle',
1664
- template: "<mat-menu #arToggleOptions>\n <ng-container *ngIf=\"arSupported\">\n <button mat-menu-item (click)=\"toggleAr(true)\">AR with overlays</button>\n <button mat-menu-item (click)=\"toggleAr(false)\">AR without overlays</button>\n </ng-container>\n <button *ngIf=\"!arSupported\" mat-menu-item disabled>AR not supported</button>\n</mat-menu>\n\n<app-menu-toggle\n [matMenuTriggerFor]=\"arToggleOptions\"\n (click)=\"arSupported && (arActive ? toggleAr() : null)\"\n [disabled]=\"!arSupported\"\n [active]=\"arActive\"\n icon=\"ar\"\n [tooltip]=\"\n arSupported ? (arActive ? 'Exit AR' : 'Enter AR') : 'AR not supported'\n \"\n>\n</app-menu-toggle>\n",
1665
- styles: [""]
1666
- },] }
1667
- ];
1668
- ArToggleComponent.ctorParameters = function () { return [
1669
- { type: EventDisplayService }
1670
- ]; };
1671
-
1672
- /**
1673
- * Component for adding zoom controls for the main and overlay cameras.
1674
- */
1675
- var ZoomControlsComponent = /** @class */ (function () {
1676
- function ZoomControlsComponent(eventDisplay) {
1677
- this.eventDisplay = eventDisplay;
1678
- /** Factor to zoom by. */
1679
- this.zoomFactor = 1.1;
1680
- /** The speed and time of zoom. */
1681
- this.zoomTime = 200;
1682
- }
1683
- /**
1684
- * Zoom all the cameras by a specific zoom factor.
1685
- * The factor may either be greater (zoom in) or smaller (zoom out) than 1.
1686
- * @param zoomFactor The factor to zoom by.
1687
- */
1688
- ZoomControlsComponent.prototype.zoomTo = function (zoomFactor) {
1689
- var _this = this;
1690
- this.zoomTime =
1691
- this.zoomTime > 30 ? Math.floor(this.zoomTime / 1.1) : this.zoomTime;
1692
- this.eventDisplay.zoomTo(zoomFactor, this.zoomTime);
1693
- this.zoomTimeout = setTimeout(function () {
1694
- _this.zoomTo(zoomFactor);
1695
- }, this.zoomTime);
1696
- };
1697
- /**
1698
- * Zoom the camera in.
1699
- * @param leftClick Whether the mouse click is left or not.
1700
- */
1701
- ZoomControlsComponent.prototype.zoomIn = function (leftClick) {
1702
- if (leftClick) {
1703
- this.zoomTo(1 / this.zoomFactor);
1704
- }
1705
- };
1706
- /**
1707
- * Zoom the camera out.
1708
- * @param leftClick Whether the mouse click is left or not.s
1709
- */
1710
- ZoomControlsComponent.prototype.zoomOut = function (leftClick) {
1711
- if (leftClick) {
1712
- this.zoomTo(this.zoomFactor);
1713
- }
1714
- };
1715
- /**
1716
- * Reset the zoom time which decreases upon hold and clear the zoom timeout.
1717
- */
1718
- ZoomControlsComponent.prototype.clearZoom = function () {
1719
- this.zoomTime = 200;
1720
- clearTimeout(this.zoomTimeout);
1721
- };
1722
- return ZoomControlsComponent;
1723
- }());
1724
- ZoomControlsComponent.decorators = [
1725
- { type: i0.Component, args: [{
1726
- selector: 'app-zoom-controls',
1727
- template: "<div class=\"d-flex\">\n <app-menu-toggle\n tooltip=\"Zoom out (hold)\"\n icon=\"zoom-out\"\n [active]=\"false\"\n (click)=\"zoomOut(true); clearZoom()\"\n (touchstart)=\"zoomOut(true)\"\n (mousedown)=\"zoomOut($event.button === 0)\"\n (mouseup)=\"clearZoom()\"\n (mouseleave)=\"clearZoom()\"\n (touchend)=\"clearZoom()\"\n (touchcancel)=\"clearZoom()\"\n (touchmove)=\"clearZoom()\"\n >\n </app-menu-toggle>\n <app-menu-toggle\n tooltip=\"Zoom in (hold)\"\n icon=\"zoom-in\"\n [active]=\"false\"\n (click)=\"zoomIn(true); clearZoom()\"\n (touchstart)=\"zoomIn(true)\"\n (mousedown)=\"zoomIn($event.button === 0)\"\n (mouseup)=\"clearZoom()\"\n (mouseleave)=\"clearZoom()\"\n (touchend)=\"clearZoom()\"\n (touchcancel)=\"clearZoom()\"\n (touchmove)=\"clearZoom()\"\n >\n </app-menu-toggle>\n</div>\n",
1728
- styles: [""]
1729
- },] }
1730
- ];
1731
- ZoomControlsComponent.ctorParameters = function () { return [
1732
- { type: EventDisplayService }
1733
- ]; };
1734
-
1735
- var SSModeComponent = /** @class */ (function () {
1736
- function SSModeComponent() {
1737
- this.ssMode = false;
1738
- this.onDocumentClick = function () {
1739
- var _a;
1740
- (_a = document.exitFullscreen) === null || _a === void 0 ? void 0 : _a.call(document);
1741
- };
1742
- }
1743
- SSModeComponent.prototype.ngOnInit = function () {
1744
- var _this = this;
1745
- document.onfullscreenchange = function () {
1746
- if (!document.fullscreenElement) {
1747
- _this.toggleSSMode();
1748
- }
1749
- };
1750
- };
1751
- SSModeComponent.prototype.toggleSSMode = function () {
1752
- var _this = this;
1753
- var _a, _b;
1754
- this.ssMode = !this.ssMode;
1755
- document.body.classList.toggle('ss-mode');
1756
- if (this.ssMode) {
1757
- // WORKAROUND - Adding the event listener directly somehow calls it on the first click
1758
- setTimeout(function () {
1759
- document.addEventListener('click', _this.onDocumentClick);
1760
- document.addEventListener('touchstart', _this.onDocumentClick);
1761
- }, 1);
1762
- (_b = (_a = document.documentElement).requestFullscreen) === null || _b === void 0 ? void 0 : _b.call(_a);
1763
- }
1764
- else {
1765
- document.removeEventListener('click', this.onDocumentClick);
1766
- document.removeEventListener('touchstart', this.onDocumentClick);
1767
- }
1768
- };
1769
- return SSModeComponent;
1770
- }());
1771
- SSModeComponent.decorators = [
1772
- { type: i0.Component, args: [{
1773
- selector: 'app-ss-mode',
1774
- template: "<app-menu-toggle\n tooltip=\"Screenshot mode\"\n [active]=\"ssMode\"\n icon=\"ss-mode\"\n (click)=\"toggleSSMode()\"\n>\n</app-menu-toggle>\n",
1775
- encapsulation: i0.ViewEncapsulation.None,
1776
- styles: ["app-ui-menu #uiMenu,app-phoenix-menu #phoenixMenu,app-nav #mainLogo,#statsElement{visibility:visible;opacity:1;transition:opacity .4s}.ss-mode app-ui-menu #uiMenu,.ss-mode app-phoenix-menu #phoenixMenu,.ss-mode app-nav #mainLogo,.ss-mode #statsElement{visibility:hidden;opacity:0}\n"]
1777
- },] }
1778
- ];
1779
-
1780
- var PerformanceToggleComponent = /** @class */ (function () {
1781
- function PerformanceToggleComponent(eventDisplay) {
1782
- this.eventDisplay = eventDisplay;
1783
- this.performanceMode = false;
1784
- }
1785
- PerformanceToggleComponent.prototype.togglePerformance = function () {
1786
- this.performanceMode = !this.performanceMode;
1787
- this.eventDisplay.getThreeManager().setAntialiasing(!this.performanceMode);
1788
- };
1789
- return PerformanceToggleComponent;
1790
- }());
1791
- PerformanceToggleComponent.decorators = [
1792
- { type: i0.Component, args: [{
1793
- selector: 'app-performance-toggle',
1794
- template: "<app-menu-toggle\n tooltip=\"Performance mode\"\n [active]=\"performanceMode\"\n icon=\"performance\"\n (click)=\"togglePerformance()\"\n>\n</app-menu-toggle>\n",
1795
- styles: [""]
1796
- },] }
1797
- ];
1798
- PerformanceToggleComponent.ctorParameters = function () { return [
1799
- { type: EventDisplayService }
1800
- ]; };
1801
-
1802
- var UiMenuComponent = /** @class */ (function () {
1803
- function UiMenuComponent() {
1804
- this.eventDataImportOptions = Object.values(exports.EventDataFormat);
1805
- this.animationPresets = defaultAnimationPresets;
1806
- this.hideUIMenu = false;
1807
- }
1808
- return UiMenuComponent;
1809
- }());
1810
- UiMenuComponent.decorators = [
1811
- { type: i0.Component, args: [{
1812
- selector: 'app-ui-menu',
1813
- template: "<div id=\"uiMenu\">\n <button\n id=\"hide-ui-menu\"\n [matTooltip]=\"hideUIMenu ? 'Show toolbar' : 'Hide toolbar'\"\n matTooltipPosition=\"above\"\n (click)=\"hideUIMenu = !hideUIMenu\"\n [ngClass]=\"{ 'ui-menu-hidden': hideUIMenu }\"\n >\n <svg>\n <use href=\"assets/icons/expand.svg#expand\"></use>\n </svg>\n </button>\n <div id=\"optionsPanel\" [hidden]=\"hideUIMenu\">\n <!-- Event selector -->\n <app-event-selector></app-event-selector>\n\n <!-- Zoom in and zoom out controls -->\n <app-zoom-controls></app-zoom-controls>\n\n <app-view-options></app-view-options>\n\n <app-auto-rotate></app-auto-rotate>\n\n <!-- Dark theme toggle -->\n <app-dark-theme></app-dark-theme>\n\n <!-- Toggle for clipping geometries -->\n <app-object-clipping></app-object-clipping>\n\n <!-- Main view toggle -->\n <app-main-view-toggle></app-main-view-toggle>\n\n <!-- Toggle for overlay panel -->\n <app-overlay-view></app-overlay-view>\n\n <!-- Toggle for selected object panel -->\n <app-object-selection></app-object-selection>\n\n <!-- Info panel -->\n <app-info-panel></app-info-panel>\n\n <!-- Toggle for animating the event data -->\n <app-animate-event></app-animate-event>\n\n <!-- Toggle for animating camera through event -->\n <app-animate-camera\n [animationPresets]=\"animationPresets\"\n ></app-animate-camera>\n\n <!-- Toggle for collections info -->\n <app-collections-info></app-collections-info>\n\n <!-- Toggle for performance -->\n <app-performance-toggle></app-performance-toggle>\n\n <!-- Toggle for VR -->\n <app-vr-toggle></app-vr-toggle>\n\n <!-- Toggle for AR -->\n <app-ar-toggle></app-ar-toggle>\n\n <!-- Toggle for screenshot mode -->\n <app-ss-mode></app-ss-mode>\n\n <!-- Toggle for loading geometries modal-->\n <app-io-options\n [eventDataImportOptions]=\"eventDataImportOptions\"\n ></app-io-options>\n\n <!-- Toggle for shareable link constructor modal-->\n <app-share-link></app-share-link>\n\n <!-- Extra options -->\n <ng-content></ng-content>\n </div>\n</div>\n",
1814
- styles: ["#uiMenu{position:absolute;bottom:1rem;width:100%;box-sizing:border-box;display:flex;flex-direction:column;align-items:center}#optionsPanel{display:flex;align-items:center;background:var(--phoenix-background-color-secondary);border:1px solid var(--phoenix-background-color-tertiary);box-shadow:var(--phoenix-box-shadow);border-radius:30px;max-width:95%;padding:.3rem 1rem;overflow-x:scroll;z-index:90}#hide-ui-menu{background:var(--phoenix-background-color-secondary);height:1.2rem;width:3rem;border:1px solid var(--phoenix-border);border-bottom:none;box-shadow:var(--phoenix-box-shadow);border-top-left-radius:15px;border-top-right-radius:15px;padding:3px}#hide-ui-menu svg{height:100%;width:100%;vertical-align:top;transition:all .3s}#hide-ui-menu.ui-menu-hidden svg{transform:scaleY(-1);transition:all .3s}\n"]
1815
- },] }
1816
- ];
1817
- UiMenuComponent.propDecorators = {
1818
- eventDataImportOptions: [{ type: i0.Input }],
1819
- animationPresets: [{ type: i0.Input }]
1820
- };
1821
-
1822
- var ShareLinkDialogComponent = /** @class */ (function () {
1823
- function ShareLinkDialogComponent(dialogRef) {
1824
- this.dialogRef = dialogRef;
1825
- this.urlOptions = Object.assign({}, phoenixEventDisplay.phoenixURLOptions);
1826
- var locationHref = window.location.href;
1827
- var lastIndex = locationHref.lastIndexOf('?') === -1
1828
- ? locationHref.length
1829
- : locationHref.lastIndexOf('?');
1830
- this.baseLink = locationHref.slice(0, lastIndex);
1831
- this.shareLink = this.baseLink;
1832
- this.embedLink = this.getEmbedLink();
1833
- }
1834
- ShareLinkDialogComponent.prototype.onClose = function () {
1835
- this.dialogRef.close();
1836
- };
1837
- ShareLinkDialogComponent.prototype.getEmbedLink = function (urlParametersString) {
1838
- if (urlParametersString === void 0) { urlParametersString = ''; }
1839
- return "<iframe src=\"" + this.baseLink + "?embed=true" + (urlParametersString ? '&' : '') + urlParametersString + "\"></iframe>";
1840
- };
1841
- ShareLinkDialogComponent.prototype.setOptionValue = function (option, value) {
1842
- this.urlOptions[option] = value;
1843
- this.onOptionsChange();
1844
- };
1845
- ShareLinkDialogComponent.prototype.onOptionsChange = function () {
1846
- var _this = this;
1847
- var urlParametersString = Object.getOwnPropertyNames(this.urlOptions)
1848
- .reduce(function (filteredOptions, option) {
1849
- if (_this.urlOptions[option]) {
1850
- filteredOptions.push(option + "=" + encodeURI(_this.urlOptions[option]));
1851
- }
1852
- return filteredOptions;
1853
- }, [])
1854
- .join('&');
1855
- this.shareLink =
1856
- this.baseLink + (urlParametersString ? '?' : '') + urlParametersString;
1857
- this.embedLink = this.getEmbedLink(urlParametersString);
1858
- };
1859
- ShareLinkDialogComponent.prototype.copyText = function (text, element) {
1860
- var inputElement = document.createElement('input');
1861
- document.body.appendChild(inputElement);
1862
- inputElement.value = text;
1863
- inputElement.select();
1864
- document.execCommand('copy');
1865
- document.body.removeChild(inputElement);
1866
- element.focus();
1867
- // Set text on copying
1868
- element.innerText = 'COPIED';
1869
- setTimeout(function () {
1870
- element.innerText = 'COPY';
1871
- }, 2000);
1872
- };
1873
- return ShareLinkDialogComponent;
1874
- }());
1875
- ShareLinkDialogComponent.decorators = [
1876
- { type: i0.Component, args: [{
1877
- selector: 'app-share-link-dialog',
1878
- template: "<div class=\"dialog\">\n <h1 mat-dialog-title>Create shareable link</h1>\n <div mat-dialog-content class=\"dialog-content\">\n <h5>URL options</h5>\n <div class=\"form-group mt-2\">\n <label for=\"eventDataFile\">Event data file (URL or path)</label>\n <input\n type=\"text\"\n class=\"form-control\"\n id=\"eventDataFile\"\n placeholder=\"assets/files/event_data/atlaseventdump2.json\"\n [value]=\"urlOptions.file\"\n (input)=\"setOptionValue('file', $event.target.value)\"\n />\n </div>\n <div class=\"form-group\">\n <label for=\"eventDataType\">Event data type</label>\n <select\n class=\"form-control\"\n id=\"eventDataType\"\n (input)=\"setOptionValue('type', $event.target.value)\"\n >\n <option selected value=\"\">Select</option>\n <option value=\"jivexml\">JiveXML</option>\n <option value=\"json\">JSON</option>\n </select>\n </div>\n <div class=\"form-group\">\n <label for=\"configuration\">Configuration (URL or path)</label>\n <input\n type=\"text\"\n class=\"form-control\"\n id=\"configuration\"\n placeholder=\"assets/files/config/phoenix-config.json\"\n [value]=\"urlOptions.config\"\n (input)=\"setOptionValue('config', $event.target.value)\"\n />\n </div>\n <div class=\"form-group\">\n <mat-checkbox\n [checked]=\"urlOptions.hideWidgets\"\n (change)=\"setOptionValue('hideWidgets', $event.checked)\"\n >\n Hide all widgets\n </mat-checkbox>\n </div>\n\n <h5>Share</h5>\n <div class=\"share-box my-2\">\n <span>{{ shareLink }}</span>\n <button\n class=\"share-box-copy\"\n (click)=\"copyText(shareLink, $event.target)\"\n >\n COPY\n </button>\n </div>\n <h5>Embed</h5>\n <div class=\"share-box my-2\">\n <span>{{ embedLink }}</span>\n <button\n class=\"share-box-copy\"\n (click)=\"copyText(embedLink, $event.target)\"\n >\n COPY\n </button>\n </div>\n </div>\n <div mat-dialog-actions>\n <button mat-button (click)=\"onClose()\" cdkFocusInitial>Close</button>\n </div>\n</div>\n",
1879
- styles: [".share-box{width:30rem;max-width:100%;position:relative;background:var(--phoenix-background-color-tertiary);border:1px solid var(--phoenix-border);border-radius:.5rem;padding:1.25rem;word-wrap:break-word}.share-box .share-box-copy{position:absolute;top:-1px;right:-1px;background:transparent;color:inherit;cursor:pointer;padding:.25rem .5rem;font-size:.75rem;border:1px solid var(--phoenix-border);border-radius:.5rem}.share-box .share-box-copy:hover{background:var(--phoenix-border)}\n"]
1880
- },] }
1881
- ];
1882
- ShareLinkDialogComponent.ctorParameters = function () { return [
1883
- { type: dialog.MatDialogRef }
1884
- ]; };
1885
-
1886
- var ShareLinkComponent = /** @class */ (function () {
1887
- function ShareLinkComponent(dialog) {
1888
- this.dialog = dialog;
1889
- }
1890
- ShareLinkComponent.prototype.openShareLinkDialog = function () {
1891
- this.dialog.open(ShareLinkDialogComponent);
1892
- };
1893
- return ShareLinkComponent;
1894
- }());
1895
- ShareLinkComponent.decorators = [
1896
- { type: i0.Component, args: [{
1897
- selector: 'app-share-link',
1898
- template: "<app-menu-toggle\n tooltip=\"Create shareable link\"\n icon=\"share\"\n [active]=\"false\"\n (click)=\"openShareLinkDialog()\"\n>\n</app-menu-toggle>\n",
1899
- styles: [""]
1900
- },] }
1901
- ];
1902
- ShareLinkComponent.ctorParameters = function () { return [
1903
- { type: dialog.MatDialog }
1904
- ]; };
1905
-
1906
- var LoaderComponent = /** @class */ (function () {
1907
- function LoaderComponent() {
1908
- this.loaded = false;
1909
- }
1910
- return LoaderComponent;
1911
- }());
1912
- LoaderComponent.decorators = [
1913
- { type: i0.Component, args: [{
1914
- selector: 'app-loader',
1915
- template: "<div\n class=\"\n loader-wrapper\n d-flex\n position-absolute\n flex-column\n justify-content-center\n align-items-center\n w-100\n h-100\n text-center\n \"\n [ngClass]=\"{ 'load-complete': loaded }\"\n>\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</div>\n",
1916
- 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;-webkit-animation:loader 2s infinite;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}@-webkit-keyframes loader{0%,to{transform:scale(.1) rotate(0)}95%{transform:scale(1) rotate(15deg)}}@keyframes loader{0%,to{transform:scale(.1) rotate(0)}95%{transform:scale(1) rotate(15deg)}}\n"]
1917
- },] }
1918
- ];
1919
- LoaderComponent.propDecorators = {
1920
- loaded: [{ type: i0.Input }],
1921
- progress: [{ type: i0.Input }]
1922
- };
1923
-
1924
- /**
1925
- * Pipe for transforming selected object attributes to a better format.
1926
- */
1927
- var AttributePipe = /** @class */ (function () {
1928
- function AttributePipe() {
1929
- }
1930
- /**
1931
- * Transform the attribute to a better presentable format.
1932
- * @param value Value to be transformed.
1933
- * @param args Additional arguments.
1934
- * @returns The transformed value.
1935
- */
1936
- AttributePipe.prototype.transform = function (value, args) {
1937
- var transformedValue = '';
1938
- if (Array.isArray(value)) {
1939
- transformedValue += '\n';
1940
- value.forEach(function (v) { return (transformedValue += v + '\n'); });
1941
- }
1942
- else {
1943
- transformedValue = value.toString();
1944
- }
1945
- return transformedValue;
1946
- };
1947
- return AttributePipe;
1948
- }());
1949
- AttributePipe.decorators = [
1950
- { type: i0.Pipe, args: [{
1951
- name: 'attributePipe',
1952
- },] }
1953
- ];
1954
-
1955
- var EmbedMenuComponent = /** @class */ (function () {
1956
- function EmbedMenuComponent() {
1957
- }
1958
- return EmbedMenuComponent;
1959
- }());
1960
- EmbedMenuComponent.decorators = [
1961
- { type: i0.Component, args: [{
1962
- selector: 'app-embed-menu',
1963
- 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",
1964
- 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"]
1965
- },] }
1966
- ];
1967
-
1968
- var ExperimentLinkComponent = /** @class */ (function () {
1969
- function ExperimentLinkComponent() {
1970
- }
1971
- ExperimentLinkComponent.prototype.ngOnInit = function () {
1972
- this.experimentLink = window.location.href.split('?')[0];
1973
- };
1974
- ExperimentLinkComponent.prototype.goToExperiment = function () {
1975
- window.open(this.experimentLink, '_blank');
1976
- };
1977
- return ExperimentLinkComponent;
1978
- }());
1979
- ExperimentLinkComponent.decorators = [
1980
- { type: i0.Component, args: [{
1981
- selector: 'app-experiment-link',
1982
- template: "<app-menu-toggle\n tooltip=\"See full event display\"\n icon=\"link\"\n (click)=\"goToExperiment()\"\n></app-menu-toggle>\n",
1983
- styles: [""]
1984
- },] }
1985
- ];
1986
-
1987
- var PHOENIX_COMPONENTS = [
1988
- NavComponent,
1989
- UiMenuComponent,
1990
- CollectionsInfoComponent,
1991
- MenuToggleComponent,
1992
- CollectionsInfoOverlayComponent,
1993
- IoOptionsComponent,
1994
- IOOptionsDialogComponent,
1995
- OverlayViewComponent,
1996
- AttributePipe,
1997
- ObjectSelectionComponent,
1998
- ObjectSelectionOverlayComponent,
1999
- EventSelectorComponent,
2000
- ObjectClippingComponent,
2001
- DarkThemeComponent,
2002
- AutoRotateComponent,
2003
- ViewOptionsComponent,
2004
- OverlayViewWindowComponent,
2005
- OverlayComponent,
2006
- ExperimentInfoComponent,
2007
- InfoPanelComponent,
2008
- InfoPanelOverlayComponent,
2009
- MainViewToggleComponent,
2010
- ZoomControlsComponent,
2011
- TreeMenuComponent,
2012
- TreeMenuItemComponent,
2013
- PhoenixMenuComponent,
2014
- PhoenixMenuItemComponent,
2015
- ConfigSliderComponent,
2016
- AnimateCameraComponent,
2017
- AnimateEventComponent,
2018
- VrToggleComponent,
2019
- ArToggleComponent,
2020
- SSModeComponent,
2021
- PerformanceToggleComponent,
2022
- LoaderComponent,
2023
- ShareLinkComponent,
2024
- ShareLinkDialogComponent,
2025
- EmbedMenuComponent,
2026
- ExperimentLinkComponent,
2027
- ];
2028
- var PhoenixUIModule = /** @class */ (function () {
2029
- function PhoenixUIModule() {
2030
- }
2031
- return PhoenixUIModule;
2032
- }());
2033
- PhoenixUIModule.decorators = [
2034
- { type: i0.NgModule, args: [{
2035
- declarations: __spreadArray([], __read(PHOENIX_COMPONENTS)),
2036
- imports: [
2037
- common.CommonModule,
2038
- router.RouterModule,
2039
- dragDrop.DragDropModule,
2040
- dialog.MatDialogModule,
2041
- button.MatButtonModule,
2042
- tooltip.MatTooltipModule,
2043
- overlay.OverlayModule,
2044
- menu.MatMenuModule,
2045
- slider.MatSliderModule,
2046
- slideToggle.MatSlideToggleModule,
2047
- checkbox.MatCheckboxModule,
2048
- icon.MatIconModule,
2049
- ngxSlider.NgxSliderModule,
2050
- ],
2051
- entryComponents: [
2052
- OverlayComponent,
2053
- OverlayViewWindowComponent,
2054
- IOOptionsDialogComponent,
2055
- CollectionsInfoOverlayComponent,
2056
- ObjectSelectionOverlayComponent,
2057
- InfoPanelOverlayComponent,
2058
- ],
2059
- exports: [PHOENIX_COMPONENTS],
2060
- },] }
2061
- ];
2062
-
2063
- /**
2064
- * Generated bundle index. Do not edit.
2065
- */
2066
-
2067
- exports.AnimateCameraComponent = AnimateCameraComponent;
2068
- exports.AnimateEventComponent = AnimateEventComponent;
2069
- exports.ArToggleComponent = ArToggleComponent;
2070
- exports.AutoRotateComponent = AutoRotateComponent;
2071
- exports.CollectionsInfoComponent = CollectionsInfoComponent;
2072
- exports.CollectionsInfoOverlayComponent = CollectionsInfoOverlayComponent;
2073
- exports.ConfigSliderComponent = ConfigSliderComponent;
2074
- exports.DarkThemeComponent = DarkThemeComponent;
2075
- exports.EventDisplayService = EventDisplayService;
2076
- exports.EventSelectorComponent = EventSelectorComponent;
2077
- exports.ExperimentInfoComponent = ExperimentInfoComponent;
2078
- exports.IOOptionsDialogComponent = IOOptionsDialogComponent;
2079
- exports.ImportOption = ImportOption;
2080
- exports.InfoPanelComponent = InfoPanelComponent;
2081
- exports.InfoPanelOverlayComponent = InfoPanelOverlayComponent;
2082
- exports.IoOptionsComponent = IoOptionsComponent;
2083
- exports.LoaderComponent = LoaderComponent;
2084
- exports.MainViewToggleComponent = MainViewToggleComponent;
2085
- exports.MenuToggleComponent = MenuToggleComponent;
2086
- exports.NavComponent = NavComponent;
2087
- exports.ObjectClippingComponent = ObjectClippingComponent;
2088
- exports.ObjectSelectionComponent = ObjectSelectionComponent;
2089
- exports.ObjectSelectionOverlayComponent = ObjectSelectionOverlayComponent;
2090
- exports.OverlayComponent = OverlayComponent;
2091
- exports.OverlayViewComponent = OverlayViewComponent;
2092
- exports.OverlayViewWindowComponent = OverlayViewWindowComponent;
2093
- exports.PerformanceToggleComponent = PerformanceToggleComponent;
2094
- exports.PhoenixMenuComponent = PhoenixMenuComponent;
2095
- exports.PhoenixMenuItemComponent = PhoenixMenuItemComponent;
2096
- exports.PhoenixUIModule = PhoenixUIModule;
2097
- exports.SSModeComponent = SSModeComponent;
2098
- exports.ShareLinkComponent = ShareLinkComponent;
2099
- exports.ShareLinkDialogComponent = ShareLinkDialogComponent;
2100
- exports.TreeMenuComponent = TreeMenuComponent;
2101
- exports.TreeMenuItemComponent = TreeMenuItemComponent;
2102
- exports.UiMenuComponent = UiMenuComponent;
2103
- exports.ViewOptionsComponent = ViewOptionsComponent;
2104
- exports.VrToggleComponent = VrToggleComponent;
2105
- exports.ZoomControlsComponent = ZoomControlsComponent;
2106
- exports.defaultAnimationPresets = defaultAnimationPresets;
2107
- exports.ɵa = UiMenuComponent;
2108
- exports.ɵb = CollectionsInfoComponent;
2109
- exports.ɵba = ConfigSliderComponent;
2110
- exports.ɵbb = AnimateCameraComponent;
2111
- exports.ɵbc = AnimateEventComponent;
2112
- exports.ɵbd = VrToggleComponent;
2113
- exports.ɵbe = ArToggleComponent;
2114
- exports.ɵbf = SSModeComponent;
2115
- exports.ɵbg = PerformanceToggleComponent;
2116
- exports.ɵbh = ShareLinkComponent;
2117
- exports.ɵbi = ShareLinkDialogComponent;
2118
- exports.ɵbj = EmbedMenuComponent;
2119
- exports.ɵbk = ExperimentLinkComponent;
2120
- exports.ɵc = MenuToggleComponent;
2121
- exports.ɵd = CollectionsInfoOverlayComponent;
2122
- exports.ɵe = IoOptionsComponent;
2123
- exports.ɵf = IOOptionsDialogComponent;
2124
- exports.ɵg = OverlayViewComponent;
2125
- exports.ɵh = AttributePipe;
2126
- exports.ɵi = ObjectSelectionComponent;
2127
- exports.ɵj = ObjectSelectionOverlayComponent;
2128
- exports.ɵk = EventSelectorComponent;
2129
- exports.ɵl = ObjectClippingComponent;
2130
- exports.ɵm = DarkThemeComponent;
2131
- exports.ɵn = AutoRotateComponent;
2132
- exports.ɵo = ViewOptionsComponent;
2133
- exports.ɵp = OverlayViewWindowComponent;
2134
- exports.ɵq = OverlayComponent;
2135
- exports.ɵr = ExperimentInfoComponent;
2136
- exports.ɵs = InfoPanelComponent;
2137
- exports.ɵt = InfoPanelOverlayComponent;
2138
- exports.ɵu = MainViewToggleComponent;
2139
- exports.ɵv = ZoomControlsComponent;
2140
- exports.ɵw = TreeMenuComponent;
2141
- exports.ɵx = TreeMenuItemComponent;
2142
- exports.ɵy = PhoenixMenuComponent;
2143
- exports.ɵz = PhoenixMenuItemComponent;
2144
-
2145
- Object.defineProperty(exports, '__esModule', { value: true });
2146
-
2147
- })));
2148
- //# sourceMappingURL=phoenix-ui-components.umd.js.map