phoenix-ui-components 2.2.0 → 2.5.1

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 +14 -7
  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 +10 -2
  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 +5 -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 +12 -12
  100. package/dist/bundles/phoenix-ui-components.umd.js +0 -2135
  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 -46
  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 -61
  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 -36
  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 -63
  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 -45
  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 -1607
  147. package/dist/fesm2015/phoenix-ui-components.js.map +0 -1
  148. package/dist/phoenix-ui-components.metadata.json +0 -1
@@ -1 +0,0 @@
1
- {"version":3,"file":"phoenix-ui-components.umd.js","sources":["../../src/components/nav/nav.component.ts","../../src/components/phoenix-menu/config/config-slider/config-slider.component.ts","../../src/components/phoenix-menu/pheonix-menu-item/phoenix-menu-item.component.ts","../../src/components/phoenix-menu/phoenix-menu.component.ts","../../../../../../node_modules/tslib/tslib.es6.js","../../src/services/event-display.service.ts","../../src/components/ui-menu/animate-camera/animate-camera.component.ts","../../src/components/ui-menu/animate-event/animate-event.component.ts","../../src/components/ui-menu/auto-rotate/auto-rotate.component.ts","../../src/components/ui-menu/collections-info/collections-info-overlay/collections-info-overlay.component.ts","../../src/components/ui-menu/collections-info/collections-info.component.ts","../../src/components/ui-menu/dark-theme/dark-theme.component.ts","../../src/components/ui-menu/event-selector/event-selector.component.ts","../../src/components/ui-menu/experiment-info/experiment-info.component.ts","../../src/components/ui-menu/info-panel/info-panel-overlay/info-panel-overlay.component.ts","../../src/components/ui-menu/info-panel/info-panel.component.ts","../../src/services/extras/event-data-import.ts","../../src/components/ui-menu/io-options/io-options-dialog/io-options-dialog.component.ts","../../src/components/ui-menu/io-options/io-options.component.ts","../../src/components/ui-menu/main-view-toggle/main-view-toggle.component.ts","../../src/components/ui-menu/menu-toggle/menu-toggle.component.ts","../../src/components/ui-menu/object-clipping/object-clipping.component.ts","../../src/components/ui-menu/object-selection/object-selection-overlay/object-selection-overlay.component.ts","../../src/components/ui-menu/object-selection/object-selection.component.ts","../../src/components/ui-menu/overlay/overlay.component.ts","../../src/components/ui-menu/overlay-view/overlay-view-window/overlay-view-window.component.ts","../../src/components/ui-menu/overlay-view/overlay-view.component.ts","../../src/components/ui-menu/tree-menu/tree-menu.component.ts","../../src/components/ui-menu/tree-menu/tree-menu-item/tree-menu-item.component.ts","../../src/components/ui-menu/view-options/view-options.component.ts","../../src/components/ui-menu/vr-toggle/vr-toggle.component.ts","../../src/components/ui-menu/ar-toggle/ar-toggle.component.ts","../../src/components/ui-menu/zoom-controls/zoom-controls.component.ts","../../src/components/ui-menu/ss-mode/ss-mode.component.ts","../../src/components/ui-menu/performance-toggle/performance-toggle.component.ts","../../src/components/ui-menu/ui-menu.component.ts","../../src/components/ui-menu/share-link/share-link-dialog/share-link-dialog.component.ts","../../src/components/ui-menu/share-link/share-link.component.ts","../../src/components/loader/loader.component.ts","../../src/services/extras/attribute.pipe.ts","../../src/components/embed-menu/embed-menu.component.ts","../../src/components/embed-menu/experiment-link/experiment-link.component.ts","../../src/components/phoenix-ui.module.ts","../../src/phoenix-ui-components.ts"],"sourcesContent":["import { Component, OnInit } from '@angular/core';\n\n@Component({\n selector: 'app-nav',\n templateUrl: './nav.component.html',\n styleUrls: ['./nav.component.scss'],\n})\nexport class NavComponent implements OnInit {\n constructor() {}\n\n ngOnInit() {}\n}\n","import { Component, Input, Output, EventEmitter } from '@angular/core';\n\n@Component({\n selector: 'app-config-slider',\n templateUrl: './config-slider.component.html',\n styleUrls: ['./config-slider.component.scss'],\n})\nexport class ConfigSliderComponent {\n @Input() value: number = 0;\n @Input() min: number = 0;\n @Input() max: number = 100;\n @Input() step: number = 1;\n @Input() allowCustomValue: boolean = false;\n @Output() onChange: EventEmitter<number> = new EventEmitter<number>();\n\n onValueChange(value: number) {\n if (value) {\n this.onChange.emit(value);\n }\n }\n}\n","import {\n ChangeDetectorRef,\n Component,\n ElementRef,\n Input,\n ViewChild,\n ViewEncapsulation,\n} from '@angular/core';\nimport type { PhoenixMenuNode } from 'phoenix-event-display';\n\n@Component({\n selector: 'app-phoenix-menu-item',\n templateUrl: './phoenix-menu-item.component.html',\n styleUrls: ['./phoenix-menu-item.component.scss'],\n encapsulation: ViewEncapsulation.None,\n})\nexport class PhoenixMenuItemComponent {\n @Input() currentNode: PhoenixMenuNode;\n @ViewChild('phoenixMenuItem') phoenixMenuItem: ElementRef<HTMLDivElement>;\n configTop: number;\n\n constructor(private cdr: ChangeDetectorRef) {}\n\n calculateConfigTop() {\n if (this.phoenixMenuItem) {\n this.configTop =\n this.phoenixMenuItem.nativeElement.getBoundingClientRect().top;\n this.cdr.detectChanges();\n }\n }\n}\n","import { Component, Input } from '@angular/core';\nimport type { PhoenixMenuNode } from 'phoenix-event-display';\n\n@Component({\n selector: 'app-phoenix-menu',\n templateUrl: './phoenix-menu.component.html',\n styleUrls: ['./phoenix-menu.component.scss'],\n})\nexport class PhoenixMenuComponent {\n @Input() rootNode: PhoenixMenuNode;\n}\n","/*! *****************************************************************************\r\nCopyright (c) Microsoft Corporation.\r\n\r\nPermission to use, copy, modify, and/or distribute this software for any\r\npurpose with or without fee is hereby granted.\r\n\r\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\r\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\r\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\r\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\r\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\r\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\r\nPERFORMANCE OF THIS SOFTWARE.\r\n***************************************************************************** */\r\n/* global Reflect, Promise */\r\n\r\nvar extendStatics = function(d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n};\r\n\r\nexport function __extends(d, b) {\r\n if (typeof b !== \"function\" && b !== null)\r\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n}\r\n\r\nexport var __assign = function() {\r\n __assign = Object.assign || function __assign(t) {\r\n for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n s = arguments[i];\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\r\n }\r\n return t;\r\n }\r\n return __assign.apply(this, arguments);\r\n}\r\n\r\nexport function __rest(s, e) {\r\n var t = {};\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\r\n t[p] = s[p];\r\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\r\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\r\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\r\n t[p[i]] = s[p[i]];\r\n }\r\n return t;\r\n}\r\n\r\nexport function __decorate(decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n}\r\n\r\nexport function __param(paramIndex, decorator) {\r\n return function (target, key) { decorator(target, key, paramIndex); }\r\n}\r\n\r\nexport function __metadata(metadataKey, metadataValue) {\r\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\r\n}\r\n\r\nexport function __awaiter(thisArg, _arguments, P, generator) {\r\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n}\r\n\r\nexport function __generator(thisArg, body) {\r\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\r\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\r\n function verb(n) { return function (v) { return step([n, v]); }; }\r\n function step(op) {\r\n if (f) throw new TypeError(\"Generator is already executing.\");\r\n while (_) try {\r\n 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) return t;\r\n if (y = 0, t) op = [op[0] & 2, t.value];\r\n switch (op[0]) {\r\n case 0: case 1: t = op; break;\r\n case 4: _.label++; return { value: op[1], done: false };\r\n case 5: _.label++; y = op[1]; op = [0]; continue;\r\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\r\n default:\r\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\r\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\r\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\r\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\r\n if (t[2]) _.ops.pop();\r\n _.trys.pop(); continue;\r\n }\r\n op = body.call(thisArg, _);\r\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\r\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\r\n }\r\n}\r\n\r\nexport var __createBinding = Object.create ? (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });\r\n}) : (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n o[k2] = m[k];\r\n});\r\n\r\nexport function __exportStar(m, o) {\r\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(o, p)) __createBinding(o, m, p);\r\n}\r\n\r\nexport function __values(o) {\r\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\r\n if (m) return m.call(o);\r\n if (o && typeof o.length === \"number\") return {\r\n next: function () {\r\n if (o && i >= o.length) o = void 0;\r\n return { value: o && o[i++], done: !o };\r\n }\r\n };\r\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\r\n}\r\n\r\nexport function __read(o, n) {\r\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\r\n if (!m) return o;\r\n var i = m.call(o), r, ar = [], e;\r\n try {\r\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\r\n }\r\n catch (error) { e = { error: error }; }\r\n finally {\r\n try {\r\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\r\n }\r\n finally { if (e) throw e.error; }\r\n }\r\n return ar;\r\n}\r\n\r\n/** @deprecated */\r\nexport function __spread() {\r\n for (var ar = [], i = 0; i < arguments.length; i++)\r\n ar = ar.concat(__read(arguments[i]));\r\n return ar;\r\n}\r\n\r\n/** @deprecated */\r\nexport function __spreadArrays() {\r\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\r\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\r\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\r\n r[k] = a[j];\r\n return r;\r\n}\r\n\r\nexport function __spreadArray(to, from, pack) {\r\n if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {\r\n if (ar || !(i in from)) {\r\n if (!ar) ar = Array.prototype.slice.call(from, 0, i);\r\n ar[i] = from[i];\r\n }\r\n }\r\n return to.concat(ar || from);\r\n}\r\n\r\nexport function __await(v) {\r\n return this instanceof __await ? (this.v = v, this) : new __await(v);\r\n}\r\n\r\nexport function __asyncGenerator(thisArg, _arguments, generator) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var g = generator.apply(thisArg, _arguments || []), i, q = [];\r\n return i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i;\r\n function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; }\r\n function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\r\n function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\r\n function fulfill(value) { resume(\"next\", value); }\r\n function reject(value) { resume(\"throw\", value); }\r\n function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\r\n}\r\n\r\nexport function __asyncDelegator(o) {\r\n var i, p;\r\n return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\r\n 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; }\r\n}\r\n\r\nexport function __asyncValues(o) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var m = o[Symbol.asyncIterator], i;\r\n 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);\r\n 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); }); }; }\r\n function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\r\n}\r\n\r\nexport function __makeTemplateObject(cooked, raw) {\r\n if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\r\n return cooked;\r\n};\r\n\r\nvar __setModuleDefault = Object.create ? (function(o, v) {\r\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\r\n}) : function(o, v) {\r\n o[\"default\"] = v;\r\n};\r\n\r\nexport function __importStar(mod) {\r\n if (mod && mod.__esModule) return mod;\r\n var result = {};\r\n if (mod != null) for (var k in mod) if (k !== \"default\" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\r\n __setModuleDefault(result, mod);\r\n return result;\r\n}\r\n\r\nexport function __importDefault(mod) {\r\n return (mod && mod.__esModule) ? mod : { default: mod };\r\n}\r\n\r\nexport function __classPrivateFieldGet(receiver, state, kind, f) {\r\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\r\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot read private member from an object whose class did not declare it\");\r\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\r\n}\r\n\r\nexport function __classPrivateFieldSet(receiver, state, value, kind, f) {\r\n if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\r\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\r\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot write private member to an object whose class did not declare it\");\r\n return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\r\n}\r\n","import { Injectable } from '@angular/core';\nimport { EventDisplay } from 'phoenix-event-display';\n\n/**\n * Service for all event display related functions.\n */\n@Injectable({\n providedIn: 'root',\n})\nexport class EventDisplayService extends EventDisplay {\n /**\n * Instantiate the event display by calling the parent constructor.\n */\n constructor() {\n super();\n }\n}\n","import { Component, Input } from '@angular/core';\nimport { AnimationPreset, SceneManager } from 'phoenix-event-display';\nimport { EventDisplayService } from '../../../services/event-display.service';\n\nexport const defaultAnimationPresets: {\n [key: string]: AnimationPreset;\n} = {\n 'Preset 1': {\n positions: [\n {\n position: [11976, 7262, 11927],\n duration: 1000,\n },\n {\n position: [-1000, 0, 11927],\n duration: 2000,\n },\n {\n position: [2000, 500, 1000],\n duration: 3500,\n },\n {\n position: [5000, 2000, 1000],\n duration: 3000,\n },\n {\n position: [5000, 2000, 1000],\n duration: 2000,\n },\n {\n position: [11976, 7262, 11927],\n duration: 1000,\n },\n ],\n animateEventAfterInterval: 5000,\n collisionDuration: 6000,\n },\n};\n\n@Component({\n selector: 'app-animate-camera',\n templateUrl: './animate-camera.component.html',\n styleUrls: ['./animate-camera.component.scss'],\n})\nexport class AnimateCameraComponent {\n @Input() animationPresets = defaultAnimationPresets;\n animationPresetsKeys = Object.keys(this.animationPresets);\n isAnimating = false;\n\n constructor(private eventDisplay: EventDisplayService) {}\n\n animatePreset(preset: string) {\n this.setDetectorOpacity(0.2);\n this.eventDisplay.animatePreset(this.animationPresets[preset], () => {\n this.setDetectorOpacity(1);\n });\n }\n\n animateCamera() {\n if (!this.isAnimating) {\n this.isAnimating = true;\n this.eventDisplay.animateThroughEvent([11976, 7262, 11927], 3000, () => {\n this.isAnimating = false;\n });\n }\n }\n\n private setDetectorOpacity(opacity: number) {\n this.eventDisplay\n .getThreeManager()\n .getSceneManager()\n .setGeometryOpacity(SceneManager.GEOMETRIES_ID, opacity);\n }\n}\n","import { Component } from '@angular/core';\nimport { EventDisplayService } from '../../../services/event-display.service';\n\n@Component({\n selector: 'app-animate-event',\n templateUrl: './animate-event.component.html',\n styleUrls: ['./animate-event.component.scss'],\n})\nexport class AnimateEventComponent {\n isAnimating: boolean = false;\n\n constructor(private eventDisplay: EventDisplayService) {}\n\n toggleAnimateEvent() {\n if (!this.isAnimating) {\n this.isAnimating = true;\n this.eventDisplay.animateEventWithCollision(10000, () => {\n this.isAnimating = false;\n });\n }\n }\n}\n","import { Component } from '@angular/core';\nimport { EventDisplayService } from '../../../services/event-display.service';\n\n@Component({\n selector: 'app-auto-rotate',\n templateUrl: './auto-rotate.component.html',\n styleUrls: ['./auto-rotate.component.scss'],\n})\nexport class AutoRotateComponent {\n autoRotate = false;\n\n constructor(private eventDisplay: EventDisplayService) {}\n\n toggleAutoRotate() {\n this.autoRotate = !this.autoRotate;\n this.eventDisplay.getUIManager().setAutoRotate(this.autoRotate);\n }\n}\n","import { Component, OnInit, Input, ElementRef } from '@angular/core';\nimport { PrettySymbols, ActiveVariable } from 'phoenix-event-display';\nimport { EventDisplayService } from '../../../../services/event-display.service';\n\n@Component({\n selector: 'app-collections-info-overlay',\n templateUrl: './collections-info-overlay.component.html',\n styleUrls: ['./collections-info-overlay.component.scss'],\n})\nexport class CollectionsInfoOverlayComponent implements OnInit {\n @Input() showObjectsInfo: boolean;\n collections: string[];\n selectedCollection: string;\n showingCollection: any;\n collectionColumns: string[];\n activeObject: ActiveVariable<string>;\n\n constructor(\n private elementRef: ElementRef,\n private eventDisplay: EventDisplayService\n ) {}\n\n ngOnInit() {\n this.eventDisplay.listenToDisplayedEventChange(\n (event) => (this.collections = this.eventDisplay.getCollections())\n );\n this.activeObject = this.eventDisplay.getActiveObjectId();\n this.activeObject.onUpdate((value: string) => {\n if (document.getElementById(value)) {\n document.getElementById(value).scrollIntoView(false);\n }\n });\n }\n\n changeCollection(selected: any) {\n const value = selected.target.value;\n this.selectedCollection = value;\n this.showingCollection = this.eventDisplay\n .getCollection(value)\n .map(PrettySymbols.getPrettyParams);\n this.collectionColumns = Object.keys(this.showingCollection[0]).filter(\n (column) => column !== 'uuid' && column !== 'hits' // FIXME - this is an ugly hack. But currently hits from tracks make track collections unusable. Better to have exlusion list passed in.\n );\n }\n\n lookAtObject(uuid: string) {\n if (uuid) {\n this.activeObject.update(uuid);\n this.eventDisplay.lookAtObject(uuid);\n }\n }\n\n highlightObject(uuid: string) {\n if (uuid) {\n this.activeObject.update(uuid);\n this.eventDisplay.highlightObject(uuid);\n }\n }\n\n addLabel(index: number, uuid: string) {\n const labelValue = this.elementRef.nativeElement.querySelector(\n `#label${index}`\n ).value;\n if (this.selectedCollection) {\n // Empty labelValue will remove the label object\n this.eventDisplay.addLabelToObject(\n labelValue,\n this.selectedCollection,\n index,\n uuid\n );\n }\n }\n}\n","import { Component, OnInit, ComponentRef, OnDestroy } from '@angular/core';\nimport { Overlay } from '@angular/cdk/overlay';\nimport { ComponentPortal } from '@angular/cdk/portal';\nimport { CollectionsInfoOverlayComponent } from './collections-info-overlay/collections-info-overlay.component';\n\n@Component({\n selector: 'app-collections-info',\n templateUrl: './collections-info.component.html',\n styleUrls: ['./collections-info.component.scss'],\n})\nexport class CollectionsInfoComponent implements OnInit, OnDestroy {\n showObjectsInfo = false;\n overlayWindow: ComponentRef<CollectionsInfoOverlayComponent>;\n\n constructor(private overlay: Overlay) {}\n\n ngOnInit() {\n const overlayRef = this.overlay.create();\n const overlayPortal = new ComponentPortal(CollectionsInfoOverlayComponent);\n this.overlayWindow = overlayRef.attach(overlayPortal);\n this.overlayWindow.instance.showObjectsInfo = this.showObjectsInfo;\n }\n\n ngOnDestroy(): void {\n this.overlayWindow.destroy();\n }\n\n toggleOverlay() {\n this.showObjectsInfo = !this.showObjectsInfo;\n this.overlayWindow.instance.showObjectsInfo = this.showObjectsInfo;\n }\n}\n","import { Component, OnInit } from '@angular/core';\nimport { EventDisplayService } from '../../../services/event-display.service';\n\n@Component({\n selector: 'app-dark-theme',\n templateUrl: './dark-theme.component.html',\n styleUrls: ['./dark-theme.component.scss'],\n})\nexport class DarkThemeComponent implements OnInit {\n darkTheme = false;\n\n constructor(private eventDisplay: EventDisplayService) {}\n\n ngOnInit(): void {\n this.darkTheme = this.eventDisplay.getUIManager().getDarkTheme();\n }\n\n setDarkTheme() {\n this.darkTheme = !this.darkTheme;\n this.eventDisplay.getUIManager().setDarkTheme(this.darkTheme);\n }\n}\n","import { Component, OnInit } from '@angular/core';\nimport { EventDisplayService } from '../../../services/event-display.service';\n\n@Component({\n selector: 'app-event-selector',\n templateUrl: './event-selector.component.html',\n styleUrls: ['./event-selector.component.scss'],\n})\nexport class EventSelectorComponent implements OnInit {\n // Array containing the keys of the multiple loaded events\n events: string[];\n\n constructor(private eventDisplay: EventDisplayService) {}\n\n ngOnInit() {\n this.eventDisplay.listenToLoadedEventsChange(\n (events) => (this.events = events)\n );\n }\n\n changeEvent(selected: any) {\n const value = selected.target.value;\n this.eventDisplay.loadEvent(value);\n }\n}\n","import { Component, OnInit, Input } from '@angular/core';\nimport { EventDisplayService } from '../../../services/event-display.service';\n\n@Component({\n selector: 'app-experiment-info',\n templateUrl: './experiment-info.component.html',\n styleUrls: ['./experiment-info.component.scss'],\n})\nexport class ExperimentInfoComponent implements OnInit {\n experimentInfo: any[];\n @Input() experiment: string;\n @Input() experimentTagline: string;\n\n constructor(private eventDisplay: EventDisplayService) {}\n\n ngOnInit(): void {\n this.eventDisplay.listenToDisplayedEventChange(() => {\n this.experimentInfo = this.eventDisplay.getEventMetadata();\n });\n }\n}\n","import { Component, OnInit, Input } from '@angular/core';\nimport { EventDisplayService } from '../../../../services/event-display.service';\n\n/**\n * Component for displaying information from the logger\n */\n@Component({\n selector: 'app-info-panel-overlay',\n templateUrl: './info-panel-overlay.component.html',\n styleUrls: ['./info-panel-overlay.component.scss'],\n})\nexport class InfoPanelOverlayComponent implements OnInit {\n /** @ignore */\n @Input() showInfoPanel: boolean;\n /** List of actions to be displayed in the info panel */\n actionsList = [];\n\n /**\n * Create the information panel overlay\n * @param infoLogger Service containing operations related to info logs\n */\n constructor(private eventDisplay: EventDisplayService) {}\n\n /**\n * Get the list of logs from the info logger service\n */\n ngOnInit() {\n this.actionsList = this.eventDisplay.getInfoLogger().getInfoLoggerList();\n }\n}\n","import { Component, OnInit, ComponentRef, OnDestroy } from '@angular/core';\nimport { Overlay } from '@angular/cdk/overlay';\nimport { ComponentPortal } from '@angular/cdk/portal';\nimport { InfoPanelOverlayComponent } from './info-panel-overlay/info-panel-overlay.component';\n\n/**\n * Component for toggling info panel overlay\n */\n@Component({\n selector: 'app-info-panel',\n templateUrl: './info-panel.component.html',\n styleUrls: ['./info-panel.component.scss'],\n})\nexport class InfoPanelComponent implements OnInit, OnDestroy {\n /** @ignore */\n showInfoPanel = false;\n /** Information panel overlay window */\n overlayWindow: ComponentRef<InfoPanelOverlayComponent>;\n\n /**\n * Create the info panel toggle\n * @param overlay Info panel overlay containing logger data\n */\n constructor(private overlay: Overlay) {}\n\n /**\n * Create the info panel overlay\n */\n ngOnInit() {\n const overlayRef = this.overlay.create();\n const overlayPortal = new ComponentPortal(InfoPanelOverlayComponent);\n this.overlayWindow = overlayRef.attach(overlayPortal);\n this.overlayWindow.instance.showInfoPanel = this.showInfoPanel;\n }\n\n /**\n * Destroy the info panel overlay\n */\n ngOnDestroy(): void {\n this.overlayWindow.destroy();\n }\n\n /**\n * Toggle the info panel overlay\n */\n toggleOverlay() {\n this.showInfoPanel = !this.showInfoPanel;\n this.overlayWindow.instance.showInfoPanel = this.showInfoPanel;\n }\n}\n","export enum EventDataFormat {\n JSON = 'JSON',\n JIVEXML = 'JIVEXML',\n IG = 'IG',\n ZIP = 'ZIP',\n}\n\nexport type EventDataImportOption = EventDataFormat | ImportOption;\n\nexport class ImportOption {\n constructor(\n public format: string,\n public fileType: string,\n public handler: (files: FileList) => void,\n public accept?: string\n ) {}\n}\n","import { OnInit, Component, Input } from '@angular/core';\nimport { CMSLoader, JiveXMLLoader, ScriptLoader } from 'phoenix-event-display';\nimport JSZip from 'jszip';\nimport { EventDisplayService } from '../../../../services/event-display.service';\nimport { MatDialogRef } from '@angular/material/dialog';\nimport {\n EventDataFormat,\n EventDataImportOption,\n ImportOption,\n} from '../../../../services/extras/event-data-import';\n\n@Component({\n selector: 'app-io-options-dialog',\n templateUrl: './io-options-dialog.component.html',\n styleUrls: ['./io-options-dialog.component.scss'],\n})\nexport class IOOptionsDialogComponent implements OnInit {\n @Input()\n eventDataImportOptions: EventDataImportOption[] = [EventDataFormat.JSON];\n\n eventDataOptionsWithHandler: ImportOption[];\n\n private supportedEventDataFormats = [\n new ImportOption(\n EventDataFormat.JSON,\n '.json',\n this.handleJSONEventDataInput.bind(this),\n 'application/json'\n ),\n new ImportOption(\n EventDataFormat.JIVEXML,\n '.xml',\n this.handleJiveXMLDataInput.bind(this),\n 'text/xml'\n ),\n new ImportOption(\n EventDataFormat.ZIP,\n '.zip',\n this.handleZipEventDataInput.bind(this)\n ),\n new ImportOption(\n EventDataFormat.IG,\n '.ig',\n this.handleIgEventDataInput.bind(this)\n ),\n ];\n\n constructor(\n private eventDisplay: EventDisplayService,\n public dialogRef: MatDialogRef<IOOptionsDialogComponent>\n ) {}\n\n ngOnInit() {\n this.eventDataOptionsWithHandler = this.supportedEventDataFormats.filter(\n (eventDataFormat) =>\n this.eventDataImportOptions.includes(\n eventDataFormat.format as EventDataFormat\n )\n );\n\n this.eventDataImportOptions.forEach((eventDataImportOption) => {\n if (eventDataImportOption instanceof ImportOption) {\n const importHandler = eventDataImportOption.handler.bind(this);\n eventDataImportOption.handler = (files: FileList) => {\n importHandler(files);\n this.onClose();\n };\n this.eventDataOptionsWithHandler.push(eventDataImportOption);\n }\n });\n }\n\n getSupportedEventDataFormats() {\n return this.eventDataImportOptions\n .map((format) => {\n if (format instanceof ImportOption) {\n return format.format;\n }\n\n return format;\n })\n .filter((format) => format !== 'ZIP')\n .join(', ');\n }\n\n onClose(): void {\n this.dialogRef.close();\n }\n\n handleJSONEventDataInput(files: FileList) {\n const callback = (content: any) => {\n const json = typeof content === 'string' ? JSON.parse(content) : content;\n this.eventDisplay.parsePhoenixEvents(json);\n };\n this.handleFileInput(files[0], 'json', callback);\n }\n\n handleJiveXMLDataInput(files: FileList) {\n const callback = (content: any) => {\n const jiveloader = new JiveXMLLoader();\n jiveloader.process(content);\n const eventData = jiveloader.getEventData();\n this.eventDisplay.buildEventDataFromJSON(eventData);\n };\n this.handleFileInput(files[0], 'xml', callback);\n }\n\n handleOBJInput(files: FileList) {\n const callback = (content: any, name: string) => {\n this.eventDisplay.parseOBJGeometry(content, name);\n };\n this.handleFileInput(files[0], 'obj', callback);\n }\n\n handleSceneInput(files: FileList) {\n const callback = (content: any) => {\n this.eventDisplay.parsePhoenixDisplay(content);\n };\n this.handleFileInput(files[0], 'phnx', callback);\n }\n\n handleGLTFInput(files: FileList) {\n const callback = (content: any, name: string) => {\n this.eventDisplay.parseGLTFGeometry(content, name);\n };\n this.handleFileInput(files[0], 'gltf', callback);\n }\n\n handlePhoenixInput(files: FileList) {\n const callback = (content: any) => {\n this.eventDisplay.parsePhoenixDisplay(content);\n };\n this.handleFileInput(files[0], 'phnx', callback);\n }\n\n handleROOTInput(files: FileList) {\n ScriptLoader.loadJSRootScripts().then((JSROOT: any) => {\n const objectName = prompt('Enter object name in ROOT file');\n JSROOT.openFile(files[0]).then((file: any) => {\n file.readObject(objectName).then((obj: any) => {\n this.eventDisplay.loadJSONGeometry(\n JSROOT.GEO.build(obj, { dflt_colors: true }).toJSON(),\n files[0].name.split('.')[0]\n );\n });\n });\n });\n this.onClose();\n }\n\n handleRootJSONInput(files: FileList) {\n ScriptLoader.loadJSRootScripts().then((JSROOT: any) => {\n const callback = (content: any, name: string) => {\n this.eventDisplay.loadJSONGeometry(\n JSROOT.GEO.build(JSROOT.parse(content), {\n dflt_colors: true,\n }).toJSON(),\n name\n );\n };\n this.handleFileInput(files[0], 'gz', callback);\n });\n }\n\n handleIgEventDataInput(files: FileList) {\n const cmsLoader = new CMSLoader();\n cmsLoader.readIgArchive(files[0], (allEvents: any[]) => {\n const allEventsData = cmsLoader.getAllEventsData(allEvents);\n this.eventDisplay.parsePhoenixEvents(allEventsData);\n this.onClose();\n });\n }\n\n handleZipEventDataInput(files: FileList) {\n if (this.isFileOfExtension(files[0], 'zip')) {\n this.handleZipInput(files[0], (allFilesWithData) => {\n const allEventsObject = {};\n\n // JSON event data\n Object.keys(allFilesWithData)\n .filter((fileName) => fileName.endsWith('.json'))\n .forEach((fileName) => {\n Object.assign(\n allEventsObject,\n JSON.parse(allFilesWithData[fileName])\n );\n });\n\n // JiveXML event data\n const jiveloader = new JiveXMLLoader();\n Object.keys(allFilesWithData)\n .filter((fileName) => fileName.endsWith('.xml'))\n .forEach((fileName) => {\n jiveloader.process(allFilesWithData[fileName]);\n const eventData = jiveloader.getEventData();\n Object.assign(allEventsObject, { [fileName]: eventData });\n });\n\n this.eventDisplay.parsePhoenixEvents(allEventsObject);\n\n this.onClose();\n });\n } else {\n console.error('Error: Invalid file format!');\n this.eventDisplay.getInfoLogger().add('Invalid file format!', 'Error');\n }\n }\n\n async handleZipInput(\n file: File,\n callback: (allFilesWithData: { [key: string]: string }) => void\n ) {\n const allFilesWithData: { [key: string]: string } = {};\n // Using a try catch block to catch any errors in Promises\n try {\n const zipArchive = new JSZip();\n await zipArchive.loadAsync(file);\n const allFiles = Object.keys(zipArchive.files);\n for (const singleFile of allFiles) {\n const fileData = await zipArchive.file(singleFile).async('string');\n allFilesWithData[singleFile] = fileData;\n }\n callback(allFilesWithData);\n } catch (error) {\n console.error('Error while reading zip', error);\n this.eventDisplay.getInfoLogger().add('Could not read zip file', 'Error');\n }\n }\n\n handleFileInput(\n file: File,\n extension: string,\n callback: (result: string, fileName?: string) => void\n ) {\n const reader = new FileReader();\n if (this.isFileOfExtension(file, extension)) {\n reader.onload = () => {\n callback(reader.result.toString(), file.name.split('.')[0]);\n };\n reader.readAsText(file);\n } else {\n console.error('Error: Invalid file format!');\n this.eventDisplay.getInfoLogger().add('Invalid file format!', 'Error');\n }\n this.onClose();\n }\n\n private isFileOfExtension(file: File, extension: string) {\n return file.name.split('.').pop() === extension;\n }\n\n saveScene() {\n this.eventDisplay.exportPhoenixDisplay();\n }\n\n exportOBJ() {\n this.eventDisplay.exportToOBJ();\n }\n}\n","import { Component, Input } from '@angular/core';\nimport { MatDialog } from '@angular/material/dialog';\nimport {\n EventDataFormat,\n EventDataImportOption,\n} from '../../../services/extras/event-data-import';\nimport { IOOptionsDialogComponent } from './io-options-dialog/io-options-dialog.component';\n\n@Component({\n selector: 'app-io-options',\n templateUrl: './io-options.component.html',\n styleUrls: ['./io-options.component.scss'],\n})\nexport class IoOptionsComponent {\n @Input()\n eventDataImportOptions: EventDataImportOption[] =\n Object.values(EventDataFormat);\n\n constructor(private dialog: MatDialog) {}\n\n openIODialog() {\n const dialogRef = this.dialog.open(IOOptionsDialogComponent, {\n panelClass: 'dialog',\n });\n dialogRef.componentInstance.eventDataImportOptions =\n this.eventDataImportOptions;\n }\n}\n","import { Component } from '@angular/core';\nimport { EventDisplayService } from '../../../services/event-display.service';\n\n@Component({\n selector: 'app-main-view-toggle',\n templateUrl: './main-view-toggle.component.html',\n styleUrls: ['./main-view-toggle.component.scss'],\n})\nexport class MainViewToggleComponent {\n orthographicView: boolean = false;\n\n constructor(private eventDisplay: EventDisplayService) {}\n\n switchMainView() {\n this.orthographicView = !this.orthographicView;\n this.eventDisplay\n .getUIManager()\n .toggleOrthographicView(this.orthographicView);\n }\n}\n","import { Component, Input } from '@angular/core';\n\n@Component({\n selector: 'app-menu-toggle',\n templateUrl: './menu-toggle.component.html',\n styleUrls: ['./menu-toggle.component.scss'],\n})\nexport class MenuToggleComponent {\n @Input() icon: string;\n @Input() active: boolean;\n @Input() tooltip: string;\n @Input() disabled: boolean = false;\n}\n","import { Component } from '@angular/core';\nimport { MatSliderChange } from '@angular/material/slider';\nimport { MatCheckboxChange } from '@angular/material/checkbox';\nimport { EventDisplayService } from '../../../services/event-display.service';\n\n@Component({\n selector: 'app-object-clipping',\n templateUrl: './object-clipping.component.html',\n styleUrls: ['./object-clipping.component.scss'],\n})\nexport class ObjectClippingComponent {\n clippingEnabled: boolean;\n clippingAngle: number;\n\n constructor(private eventDisplay: EventDisplayService) {\n const stateManager = this.eventDisplay.getStateManager();\n stateManager.clippingEnabled.onUpdate(\n (clippingValue) => (this.clippingEnabled = clippingValue)\n );\n stateManager.clippingAngle.onUpdate(\n (value) => (this.clippingAngle = value)\n );\n }\n\n changeClippingAngle(change: MatSliderChange) {\n const angle = change.value;\n this.eventDisplay.getUIManager().rotateClipping(angle);\n }\n\n toggleClipping(change: MatCheckboxChange) {\n const value = change.checked;\n this.eventDisplay.getUIManager().setClipping(value);\n this.clippingEnabled = value;\n }\n}\n","import { Component, OnInit, Input } from '@angular/core';\nimport { EventDisplayService } from '../../../../services/event-display.service';\n\n@Component({\n selector: 'app-object-selection-overlay',\n templateUrl: './object-selection-overlay.component.html',\n styleUrls: ['./object-selection-overlay.component.scss'],\n})\nexport class ObjectSelectionOverlayComponent implements OnInit {\n // Attributes for displaying the information of selected objects\n @Input() hiddenSelectedInfo: boolean;\n selectedObject = { name: 'Object', attributes: [] };\n\n constructor(private eventDisplay: EventDisplayService) {}\n\n ngOnInit() {\n this.eventDisplay.allowSelection(this.selectedObject);\n }\n}\n","import { Component, OnInit, ComponentRef, OnDestroy } from '@angular/core';\nimport { Overlay } from '@angular/cdk/overlay';\nimport { ComponentPortal } from '@angular/cdk/portal';\nimport { ObjectSelectionOverlayComponent } from './object-selection-overlay/object-selection-overlay.component';\nimport { EventDisplayService } from '../../../services/event-display.service';\n\n@Component({\n selector: 'app-object-selection',\n templateUrl: './object-selection.component.html',\n styleUrls: ['./object-selection.component.scss'],\n})\nexport class ObjectSelectionComponent implements OnInit, OnDestroy {\n // Attributes for displaying the information of selected objects\n hiddenSelectedInfo = true;\n overlayWindow: ComponentRef<ObjectSelectionOverlayComponent>;\n\n constructor(\n private overlay: Overlay,\n private eventDisplay: EventDisplayService\n ) {}\n\n ngOnInit() {\n const overlayRef = this.overlay.create();\n const overlayPortal = new ComponentPortal(ObjectSelectionOverlayComponent);\n this.overlayWindow = overlayRef.attach(overlayPortal);\n this.overlayWindow.instance.hiddenSelectedInfo = this.hiddenSelectedInfo;\n }\n\n ngOnDestroy(): void {\n this.overlayWindow.destroy();\n }\n\n toggleOverlay() {\n this.hiddenSelectedInfo = !this.hiddenSelectedInfo;\n this.overlayWindow.instance.hiddenSelectedInfo = this.hiddenSelectedInfo;\n this.eventDisplay.enableSelecting(!this.hiddenSelectedInfo);\n }\n}\n","import {\n Component,\n Input,\n ViewChild,\n AfterViewInit,\n ViewEncapsulation,\n} from '@angular/core';\nimport type { ElementRef } from '@angular/core';\nimport { ResizeSensor } from 'css-element-queries';\n\n/**\n * Component for overlay panel.\n */\n@Component({\n selector: 'app-overlay',\n templateUrl: './overlay.component.html',\n styleUrls: ['./overlay.component.scss'],\n encapsulation: ViewEncapsulation.None,\n})\nexport class OverlayComponent implements AfterViewInit {\n /** Title of the overlay. */\n @Input() overlayTitle: string;\n /** If the overlay is open or not. */\n @Input() active: boolean = false;\n /** Icon of the overlay header. */\n @Input() icon: string;\n /** If the overlay is resizable. */\n @Input() resizable: boolean = false;\n /** If the overlay body is transparent or not. */\n @Input() transparentBody: boolean = false;\n /** If the overlay body is visible or not. */\n showBody: boolean = true;\n\n // ********************************************************************************\n // * Below code is specific to the overlay resize feature. (LOOK INTO CSS RESIZE) *\n // ********************************************************************************\n\n /** Complete overlay card containing both header and body. */\n @ViewChild('overlayCard') overlayCard: ElementRef;\n /** Handle for resizing the overlay. */\n @ViewChild('resizeHandleCorner') resizeHandleCorner: ElementRef;\n /** Minimum resizable width. */\n private MIN_RES_WIDTH: number = 300;\n /** Minimum resizable height */\n private MIN_RES_HEIGHT: number = 100;\n\n /**\n * Move the resizable handle to the bottom right after the component is created.\n */\n ngAfterViewInit() {\n if (this.resizable) {\n const resizeHandleElement = this.resizeHandleCorner.nativeElement;\n resizeHandleElement.style.bottom = '0';\n resizeHandleElement.style.right = '0';\n\n new ResizeSensor(this.overlayCard.nativeElement, () => {\n this.resetHandlePosition();\n });\n\n window.addEventListener('resize', () => {\n this.resetHandlePosition();\n });\n }\n }\n\n /**\n * Resize the overlay card when the resize handle is dragged.\n */\n onResize() {\n const resizeHandleElement = this.resizeHandleCorner.nativeElement;\n const overlayCardElement = this.overlayCard.nativeElement;\n\n const dragRect = resizeHandleElement.getBoundingClientRect();\n const overlayRect = overlayCardElement.getBoundingClientRect();\n\n const width = dragRect.left - overlayRect.left + dragRect.width;\n const height = dragRect.top - overlayRect.top + dragRect.height;\n\n this.setHandleTransform(overlayRect, dragRect);\n\n if (width > this.MIN_RES_WIDTH && height > this.MIN_RES_HEIGHT) {\n overlayCardElement.style.width = width + 'px';\n overlayCardElement.style.height = height + 'px';\n }\n }\n\n /**\n * Reset resize handle position.\n */\n resetHandlePosition() {\n const resizeHandleElement = this.resizeHandleCorner.nativeElement;\n\n this.setHandleTransform(\n this.overlayCard.nativeElement.getBoundingClientRect(),\n resizeHandleElement.getBoundingClientRect()\n );\n\n resizeHandleElement.style.bottom = null;\n resizeHandleElement.style.right = null;\n }\n\n /**\n * Set the position of the resize handle using transform3d.\n * @param overlayRect Bounding client rectangle of the overlay card.\n * @param dragRect Bounding client rectangle of the resize handle.\n */\n private setHandleTransform(overlayRect: any, dragRect: any) {\n const translateX = overlayRect.width - dragRect.width;\n const translateY = overlayRect.height - dragRect.height;\n this.resizeHandleCorner.nativeElement.style.transform = `translate3d(${translateX}px, ${translateY}px, 0)`;\n }\n}\n","import { Component, ViewChild, AfterViewInit, Input } from '@angular/core';\nimport type { ElementRef } from '@angular/core';\nimport { EventDisplayService } from '../../../../services/event-display.service';\n\n@Component({\n selector: 'app-overlay-view-window',\n templateUrl: './overlay-view-window.component.html',\n styleUrls: ['./overlay-view-window.component.scss'],\n})\nexport class OverlayViewWindowComponent implements AfterViewInit {\n @Input() showOverlay = true;\n transparentBody = false;\n orthographicView = false;\n overlayViewFixed = false;\n @ViewChild('overlayWindow') overlayWindow: ElementRef<HTMLCanvasElement>;\n\n constructor(private eventDisplay: EventDisplayService) {}\n\n ngAfterViewInit(): void {\n const canvas = this.initializeCanvas(this.overlayWindow.nativeElement);\n this.eventDisplay.setOverlayRenderer(canvas);\n }\n\n initializeCanvas(canvas: HTMLCanvasElement): HTMLCanvasElement {\n const width = window.innerWidth / 2.5;\n const height = window.innerHeight / 2.5;\n canvas.width = width;\n canvas.height = height;\n canvas.style.width = width.toString() + ' px';\n canvas.style.height = height.toString() + ' px';\n return canvas;\n }\n\n switchOverlayView() {\n this.orthographicView = !this.orthographicView;\n this.eventDisplay\n .getUIManager()\n .toggleOrthographicView(this.orthographicView);\n }\n\n fixOverlayView() {\n this.overlayViewFixed = !this.overlayViewFixed;\n this.eventDisplay.fixOverlayView(this.overlayViewFixed);\n }\n\n toggleBgTransparency() {\n this.transparentBody = !this.transparentBody;\n }\n}\n","import { Component, ComponentRef, OnDestroy, OnInit } from '@angular/core';\nimport { Overlay } from '@angular/cdk/overlay';\nimport { ComponentPortal } from '@angular/cdk/portal';\nimport { OverlayViewWindowComponent } from './overlay-view-window/overlay-view-window.component';\n\n@Component({\n selector: 'app-overlay-view',\n templateUrl: './overlay-view.component.html',\n styleUrls: ['./overlay-view.component.scss'],\n})\nexport class OverlayViewComponent implements OnInit, OnDestroy {\n overlayWindow: ComponentRef<OverlayViewWindowComponent>;\n showOverlay = false;\n\n constructor(private overlay: Overlay) {}\n\n ngOnInit() {\n const overlayRef = this.overlay.create();\n const overlayPortal = new ComponentPortal(OverlayViewWindowComponent);\n this.overlayWindow = overlayRef.attach(overlayPortal);\n this.overlayWindow.instance.showOverlay = this.showOverlay;\n }\n\n ngOnDestroy(): void {\n this.overlayWindow.destroy();\n }\n\n toggleOverlay() {\n this.showOverlay = !this.showOverlay;\n this.overlayWindow.instance.showOverlay = this.showOverlay;\n }\n}\n","import { Component, OnInit } from '@angular/core';\nimport { TreeMenuItemComponent } from './tree-menu-item/tree-menu-item.component';\n\n@Component({\n selector: 'app-tree-menu',\n templateUrl: './tree-menu.component.html',\n styleUrls: ['./tree-menu.component.scss'],\n})\nexport class TreeMenuComponent implements OnInit {\n rootNode = {\n name: 'Atlas Detector',\n geometryId: 'AtlasDetector',\n children: [\n {\n name: 'Magnet systems',\n geometryId: 'MagnetSys',\n children: [\n {\n name: 'Toroids',\n geometryId: 'Toroids',\n },\n ],\n },\n {\n name: 'Calorimeters',\n geometryId: 'CaloSys',\n children: [\n {\n name: 'LAr Barrel',\n geometryId: 'LAr Barrel',\n },\n {\n name: 'LAr EC1',\n geometryId: 'LAr EC1',\n },\n {\n name: 'LAr EC2',\n geometryId: 'LAr EC2',\n },\n {\n name: 'Tile Cal',\n geometryId: 'Tile Cal',\n },\n ],\n },\n {\n name: 'Inner detector',\n geometryId: 'InDetSys',\n children: [\n {\n name: 'Pixel',\n geometryId: 'Pixel',\n },\n {\n name: 'SCT',\n geometryId: 'SCT',\n },\n {\n name: 'TRT',\n geometryId: 'TRT',\n },\n ],\n },\n ],\n };\n\n constructor() {}\n\n ngOnInit(): void {}\n}\n","import { Component, Input, ViewChildren } from '@angular/core';\nimport type { QueryList } from '@angular/core';\nimport { EventDisplayService } from '../../../../services/event-display.service';\n\n@Component({\n selector: 'app-tree-menu-item',\n templateUrl: './tree-menu-item.component.html',\n styleUrls: ['./tree-menu-item.component.scss'],\n})\nexport class TreeMenuItemComponent {\n @ViewChildren(TreeMenuItemComponent)\n children!: QueryList<TreeMenuItemComponent>;\n @Input() node: { name: string; geometryId: string; children: [] };\n isExpanded = false;\n visible = true;\n\n constructor(private eventDisplay: EventDisplayService) {}\n\n public toggleVisibility(visible: boolean) {\n console.log(\"hi! it's \" + this.node.name);\n this.eventDisplay\n .getUIManager()\n .geometryVisibility(this.node.geometryId, visible);\n this.visible = visible;\n this.children.forEach((child) => child.toggleVisibility(visible));\n }\n}\n","import { Component, OnInit } from '@angular/core';\nimport { PresetView } from 'phoenix-event-display';\nimport { MatCheckboxChange } from '@angular/material/checkbox';\nimport { EventDisplayService } from '../../../services/event-display.service';\n\n@Component({\n selector: 'app-view-options',\n templateUrl: './view-options.component.html',\n styleUrls: ['./view-options.component.scss'],\n})\nexport class ViewOptionsComponent implements OnInit {\n views: PresetView[];\n\n constructor(private eventDisplay: EventDisplayService) {}\n\n ngOnInit(): void {\n this.views = this.eventDisplay.getUIManager().getPresetViews();\n }\n\n displayView($event: any, view: PresetView) {\n $event.stopPropagation();\n this.eventDisplay.getUIManager().displayView(view);\n }\n\n setAxis(change: MatCheckboxChange) {\n const value = change.checked;\n this.eventDisplay.getUIManager().setShowAxis(value);\n }\n\n setGrid(change: MatCheckboxChange) {\n const value = change.checked;\n this.eventDisplay.getUIManager().setShowGrid(value);\n }\n}\n","import { Component } from '@angular/core';\nimport { EventDisplayService } from '../../../services/event-display.service';\nimport { VRManager, XRSessionType } from 'phoenix-event-display';\n\n@Component({\n selector: 'app-vr-toggle',\n templateUrl: './vr-toggle.component.html',\n styleUrls: ['./vr-toggle.component.scss'],\n})\nexport class VrToggleComponent {\n vrSupported: boolean = false;\n vrActive: boolean = false;\n\n constructor(private eventDisplay: EventDisplayService) {\n // NOTE: WebXR needs secure HTTPS context\n if ('xr' in navigator) {\n (navigator as any)?.xr\n ?.isSessionSupported?.(VRManager.SESSION_TYPE)\n .then((supported: boolean) => {\n if (supported) {\n this.vrSupported = true;\n }\n });\n } // else VR not supported\n }\n\n toggleVr() {\n // If toggling VR on\n if (!this.vrActive) {\n this.eventDisplay.initXR(XRSessionType.VR, () => {\n this.vrActive = false;\n // Disable renderer XR and remove animation loop\n this.eventDisplay.endXR(XRSessionType.VR);\n });\n this.vrActive = true;\n } else {\n this.eventDisplay.endXR(XRSessionType.VR);\n this.vrActive = false;\n }\n }\n}\n","import { Component } from '@angular/core';\nimport { EventDisplayService } from '../../../services/event-display.service';\nimport { ARManager, XRSessionType } from 'phoenix-event-display';\n\n@Component({\n selector: 'app-ar-toggle',\n templateUrl: './ar-toggle.component.html',\n styleUrls: ['./ar-toggle.component.scss'],\n})\nexport class ArToggleComponent {\n arSupported: boolean = false;\n arActive: boolean = false;\n\n constructor(private eventDisplay: EventDisplayService) {\n // NOTE: WebXR needs secure HTTPS context\n if ('xr' in navigator) {\n (navigator as any).xr\n ?.isSessionSupported?.(ARManager.SESSION_TYPE)\n .then((supported: boolean) => {\n if (supported) {\n this.arSupported = true;\n }\n });\n } // else AR not supported\n }\n\n toggleAr(enableDomOverlay: boolean = true) {\n ARManager.enableDomOverlay = enableDomOverlay;\n\n // If toggling AR on\n if (!this.arActive) {\n this.eventDisplay.initXR(XRSessionType.AR, () => {\n this.arActive = false;\n // Disable renderer XR and remove animation loop\n this.eventDisplay.endXR(XRSessionType.AR);\n });\n this.arActive = true;\n } else {\n this.eventDisplay.endXR(XRSessionType.AR);\n this.arActive = false;\n }\n }\n}\n","import { Component } from '@angular/core';\nimport { EventDisplayService } from '../../../services/event-display.service';\n\n/**\n * Component for adding zoom controls for the main and overlay cameras.\n */\n@Component({\n selector: 'app-zoom-controls',\n templateUrl: './zoom-controls.component.html',\n styleUrls: ['./zoom-controls.component.scss'],\n})\nexport class ZoomControlsComponent {\n /** All camera being used by the scene. */\n allCameras: any[];\n /** Factor to zoom by. */\n private zoomFactor: number = 1.1;\n /** Timeout for clearing mouse hold. */\n private zoomTimeout: any;\n /** The speed and time of zoom. */\n private zoomTime: number = 200;\n\n constructor(private eventDisplay: EventDisplayService) {}\n\n /**\n * Zoom all the cameras by a specific zoom factor.\n * The factor may either be greater (zoom in) or smaller (zoom out) than 1.\n * @param zoomFactor The factor to zoom by.\n */\n zoomTo(zoomFactor: number) {\n this.zoomTime =\n this.zoomTime > 30 ? Math.floor(this.zoomTime / 1.1) : this.zoomTime;\n\n this.eventDisplay.zoomTo(zoomFactor, this.zoomTime);\n\n this.zoomTimeout = setTimeout(() => {\n this.zoomTo(zoomFactor);\n }, this.zoomTime);\n }\n\n /**\n * Zoom the camera in.\n * @param leftClick Whether the mouse click is left or not.\n */\n zoomIn(leftClick: boolean) {\n if (leftClick) {\n this.zoomTo(1 / this.zoomFactor);\n }\n }\n\n /**\n * Zoom the camera out.\n * @param leftClick Whether the mouse click is left or not.s\n */\n zoomOut(leftClick: boolean) {\n if (leftClick) {\n this.zoomTo(this.zoomFactor);\n }\n }\n\n /**\n * Reset the zoom time which decreases upon hold and clear the zoom timeout.\n */\n clearZoom() {\n this.zoomTime = 200;\n clearTimeout(this.zoomTimeout);\n }\n}\n","import { OnInit } from '@angular/core';\nimport { Component, ViewEncapsulation } from '@angular/core';\n\n@Component({\n selector: 'app-ss-mode',\n templateUrl: './ss-mode.component.html',\n styleUrls: ['./ss-mode.component.scss'],\n encapsulation: ViewEncapsulation.None,\n})\nexport class SSModeComponent implements OnInit {\n ssMode: boolean = false;\n\n ngOnInit() {\n document.onfullscreenchange = () => {\n if (!document.fullscreenElement) {\n this.toggleSSMode();\n }\n };\n }\n\n toggleSSMode() {\n this.ssMode = !this.ssMode;\n document.body.classList.toggle('ss-mode');\n if (this.ssMode) {\n // WORKAROUND - Adding the event listener directly somehow calls it on the first click\n setTimeout(() => {\n document.addEventListener('click', this.onDocumentClick);\n document.addEventListener('touchstart', this.onDocumentClick);\n }, 1);\n document.documentElement.requestFullscreen?.();\n } else {\n document.removeEventListener('click', this.onDocumentClick);\n document.removeEventListener('touchstart', this.onDocumentClick);\n }\n }\n\n private onDocumentClick = () => {\n document.exitFullscreen?.();\n };\n}\n","import { Component } from '@angular/core';\nimport { EventDisplayService } from '../../../services/event-display.service';\n\n@Component({\n selector: 'app-performance-toggle',\n templateUrl: './performance-toggle.component.html',\n styleUrls: ['./performance-toggle.component.scss'],\n})\nexport class PerformanceToggleComponent {\n performanceMode: boolean = false;\n\n constructor(private eventDisplay: EventDisplayService) {}\n\n togglePerformance() {\n this.performanceMode = !this.performanceMode;\n this.eventDisplay.getThreeManager().setAntialiasing(!this.performanceMode);\n }\n}\n","import { Component, Input } from '@angular/core';\nimport {\n EventDataFormat,\n EventDataImportOption,\n} from '../../services/extras/event-data-import';\nimport { defaultAnimationPresets } from './animate-camera/animate-camera.component';\n\n@Component({\n selector: 'app-ui-menu',\n templateUrl: './ui-menu.component.html',\n styleUrls: ['./ui-menu.component.scss'],\n})\nexport class UiMenuComponent {\n @Input()\n eventDataImportOptions: EventDataImportOption[] =\n Object.values(EventDataFormat);\n @Input()\n animationPresets = defaultAnimationPresets;\n\n hideUIMenu: boolean = false;\n}\n","import { Component } from '@angular/core';\nimport { MatDialogRef } from '@angular/material/dialog';\nimport { phoenixURLOptions } from 'phoenix-event-display';\n\n@Component({\n selector: 'app-share-link-dialog',\n templateUrl: './share-link-dialog.component.html',\n styleUrls: ['./share-link-dialog.component.scss'],\n})\nexport class ShareLinkDialogComponent {\n baseLink: string;\n shareLink: string;\n embedLink: string;\n urlOptions = Object.assign({}, phoenixURLOptions);\n\n constructor(private dialogRef: MatDialogRef<ShareLinkDialogComponent>) {\n const locationHref = window.location.href;\n const lastIndex =\n locationHref.lastIndexOf('?') === -1\n ? locationHref.length\n : locationHref.lastIndexOf('?');\n this.baseLink = locationHref.slice(0, lastIndex);\n this.shareLink = this.baseLink;\n this.embedLink = this.getEmbedLink();\n }\n\n onClose() {\n this.dialogRef.close();\n }\n\n getEmbedLink(urlParametersString: string = '') {\n return `<iframe src=\"${this.baseLink}?embed=true${\n urlParametersString ? '&' : ''\n }${urlParametersString}\"></iframe>`;\n }\n\n setOptionValue(option: string, value: string) {\n this.urlOptions[option] = value;\n this.onOptionsChange();\n }\n\n onOptionsChange() {\n const urlParametersString = Object.getOwnPropertyNames(this.urlOptions)\n .reduce((filteredOptions: string[], option: string) => {\n if (this.urlOptions[option]) {\n filteredOptions.push(\n `${option}=${encodeURI(this.urlOptions[option])}`\n );\n }\n return filteredOptions;\n }, [])\n .join('&');\n\n this.shareLink =\n this.baseLink + (urlParametersString ? '?' : '') + urlParametersString;\n this.embedLink = this.getEmbedLink(urlParametersString);\n }\n\n copyText(text: string, element: HTMLElement) {\n const inputElement = document.createElement('input');\n document.body.appendChild(inputElement);\n inputElement.value = text;\n inputElement.select();\n document.execCommand('copy');\n document.body.removeChild(inputElement);\n\n // Set text on copying\n element.innerText = 'COPIED';\n setTimeout(() => {\n element.innerText = 'COPY';\n }, 2000);\n }\n}\n","import { Component } from '@angular/core';\nimport { MatDialog } from '@angular/material/dialog';\nimport { ShareLinkDialogComponent } from './share-link-dialog/share-link-dialog.component';\n\n@Component({\n selector: 'app-share-link',\n templateUrl: './share-link.component.html',\n styleUrls: ['./share-link.component.scss'],\n})\nexport class ShareLinkComponent {\n constructor(private dialog: MatDialog) {}\n\n openShareLinkDialog() {\n this.dialog.open(ShareLinkDialogComponent);\n }\n}\n","import { Component, Input } from '@angular/core';\n\n@Component({\n selector: 'app-loader',\n templateUrl: './loader.component.html',\n styleUrls: ['./loader.component.scss'],\n})\nexport class LoaderComponent {\n @Input() loaded = false;\n @Input() progress: number;\n}\n","import { Pipe, PipeTransform } from '@angular/core';\n\n/**\n * Pipe for transforming selected object attributes to a better format.\n */\n@Pipe({\n name: 'attributePipe',\n})\nexport class AttributePipe implements PipeTransform {\n /**\n * Transform the attribute to a better presentable format.\n * @param value Value to be transformed.\n * @param args Additional arguments.\n * @returns The transformed value.\n */\n transform(value: any, args?: any): any {\n let transformedValue = '';\n if (Array.isArray(value)) {\n transformedValue += '\\n';\n value.forEach((v) => (transformedValue += v + '\\n'));\n } else {\n transformedValue = value.toString();\n }\n return transformedValue;\n }\n}\n","import { Component } from '@angular/core';\n\n@Component({\n selector: 'app-embed-menu',\n templateUrl: './embed-menu.component.html',\n styleUrls: ['./embed-menu.component.scss'],\n})\nexport class EmbedMenuComponent {}\n","import { Component, OnInit } from '@angular/core';\n\n@Component({\n selector: 'app-experiment-link',\n templateUrl: './experiment-link.component.html',\n styleUrls: ['./experiment-link.component.scss'],\n})\nexport class ExperimentLinkComponent implements OnInit {\n private experimentLink: string;\n\n ngOnInit() {\n this.experimentLink = window.location.href.split('?')[0];\n }\n\n goToExperiment() {\n window.open(this.experimentLink, '_blank');\n }\n}\n","import { NgModule, Type } from '@angular/core';\nimport { DragDropModule } from '@angular/cdk/drag-drop';\nimport { OverlayModule } from '@angular/cdk/overlay';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatCheckboxModule } from '@angular/material/checkbox';\nimport { MatDialogModule } from '@angular/material/dialog';\nimport { MatIconModule } from '@angular/material/icon';\nimport { MatMenuModule } from '@angular/material/menu';\nimport { MatSlideToggleModule } from '@angular/material/slide-toggle';\nimport { MatSliderModule } from '@angular/material/slider';\nimport { MatTooltipModule } from '@angular/material/tooltip';\nimport { NgxSliderModule } from '@angular-slider/ngx-slider';\nimport { NavComponent } from './nav/nav.component';\nimport {\n PhoenixMenuComponent,\n PhoenixMenuItemComponent,\n ConfigSliderComponent,\n} from './phoenix-menu';\nimport {\n UiMenuComponent,\n CollectionsInfoComponent,\n MenuToggleComponent,\n CollectionsInfoOverlayComponent,\n IoOptionsComponent,\n IOOptionsDialogComponent,\n OverlayViewComponent,\n ObjectSelectionComponent,\n ObjectSelectionOverlayComponent,\n EventSelectorComponent,\n ObjectClippingComponent,\n DarkThemeComponent,\n AutoRotateComponent,\n ViewOptionsComponent,\n OverlayViewWindowComponent,\n OverlayComponent,\n ExperimentInfoComponent,\n InfoPanelComponent,\n InfoPanelOverlayComponent,\n MainViewToggleComponent,\n ZoomControlsComponent,\n TreeMenuComponent,\n TreeMenuItemComponent,\n AnimateCameraComponent,\n AnimateEventComponent,\n VrToggleComponent,\n ArToggleComponent,\n SSModeComponent,\n PerformanceToggleComponent,\n ShareLinkComponent,\n ShareLinkDialogComponent,\n} from './ui-menu';\nimport { CommonModule } from '@angular/common';\nimport { RouterModule } from '@angular/router';\nimport { AttributePipe } from '../services/extras/attribute.pipe';\nimport { LoaderComponent } from './loader/loader.component';\nimport { EmbedMenuComponent } from './embed-menu/embed-menu.component';\nimport { ExperimentLinkComponent } from './embed-menu/experiment-link/experiment-link.component';\n\nconst PHOENIX_COMPONENTS: Type<any>[] = [\n NavComponent,\n UiMenuComponent,\n CollectionsInfoComponent,\n MenuToggleComponent,\n CollectionsInfoOverlayComponent,\n IoOptionsComponent,\n IOOptionsDialogComponent,\n OverlayViewComponent,\n AttributePipe,\n ObjectSelectionComponent,\n ObjectSelectionOverlayComponent,\n EventSelectorComponent,\n ObjectClippingComponent,\n DarkThemeComponent,\n AutoRotateComponent,\n ViewOptionsComponent,\n OverlayViewWindowComponent,\n OverlayComponent,\n ExperimentInfoComponent,\n InfoPanelComponent,\n InfoPanelOverlayComponent,\n MainViewToggleComponent,\n ZoomControlsComponent,\n TreeMenuComponent,\n TreeMenuItemComponent,\n PhoenixMenuComponent,\n PhoenixMenuItemComponent,\n ConfigSliderComponent,\n AnimateCameraComponent,\n AnimateEventComponent,\n VrToggleComponent,\n ArToggleComponent,\n SSModeComponent,\n PerformanceToggleComponent,\n LoaderComponent,\n ShareLinkComponent,\n ShareLinkDialogComponent,\n EmbedMenuComponent,\n ExperimentLinkComponent,\n];\n\n@NgModule({\n declarations: [...PHOENIX_COMPONENTS],\n imports: [\n CommonModule,\n RouterModule,\n DragDropModule,\n MatDialogModule,\n MatButtonModule,\n MatTooltipModule,\n OverlayModule,\n MatMenuModule,\n MatSliderModule,\n MatSlideToggleModule,\n MatCheckboxModule,\n MatIconModule,\n NgxSliderModule,\n ],\n entryComponents: [\n OverlayComponent,\n OverlayViewWindowComponent,\n IOOptionsDialogComponent,\n CollectionsInfoOverlayComponent,\n ObjectSelectionOverlayComponent,\n InfoPanelOverlayComponent,\n ],\n exports: [PHOENIX_COMPONENTS],\n})\nexport class PhoenixUIModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n\nexport {EmbedMenuComponent as ɵbj} from './components/embed-menu/embed-menu.component';\nexport {ExperimentLinkComponent as ɵbk} from './components/embed-menu/experiment-link/experiment-link.component';\nexport {ConfigSliderComponent as ɵba,PhoenixMenuComponent as ɵy,PhoenixMenuItemComponent as ɵz} from './components/phoenix-menu';\nexport {AnimateCameraComponent as ɵbb,AnimateEventComponent as ɵbc,ArToggleComponent as ɵbe,AutoRotateComponent as ɵn,CollectionsInfoComponent as ɵb,CollectionsInfoOverlayComponent as ɵd,DarkThemeComponent as ɵm,EventSelectorComponent as ɵk,ExperimentInfoComponent as ɵr,IOOptionsDialogComponent as ɵf,InfoPanelComponent as ɵs,InfoPanelOverlayComponent as ɵt,IoOptionsComponent as ɵe,MainViewToggleComponent as ɵu,MenuToggleComponent as ɵc,ObjectClippingComponent as ɵl,ObjectSelectionComponent as ɵi,ObjectSelectionOverlayComponent as ɵj,OverlayComponent as ɵq,OverlayViewComponent as ɵg,OverlayViewWindowComponent as ɵp,PerformanceToggleComponent as ɵbg,SSModeComponent as ɵbf,ShareLinkComponent as ɵbh,ShareLinkDialogComponent as ɵbi,TreeMenuComponent as ɵw,TreeMenuItemComponent as ɵx,UiMenuComponent as ɵa,ViewOptionsComponent as ɵo,VrToggleComponent as ɵbd,ZoomControlsComponent as ɵv} from './components/ui-menu';\nexport {AttributePipe as ɵh} from './services/extras/attribute.pipe';"],"names":["Component","EventEmitter","Input","Output","ViewEncapsulation","ChangeDetectorRef","ViewChild","EventDisplay","Injectable","SceneManager","PrettySymbols","ElementRef","ComponentPortal","Overlay","EventDataFormat","JiveXMLLoader","ScriptLoader","CMSLoader","JSZip","MatDialogRef","MatDialog","ResizeSensor","ViewChildren","VRManager","XRSessionType","ARManager","phoenixURLOptions","Pipe","NgModule","CommonModule","RouterModule","DragDropModule","MatDialogModule","MatButtonModule","MatTooltipModule","OverlayModule","MatMenuModule","MatSliderModule","MatSlideToggleModule","MatCheckboxModule","MatIconModule","NgxSliderModule"],"mappings":"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"}
@@ -1,11 +0,0 @@
1
- import { Component } from '@angular/core';
2
- export class EmbedMenuComponent {
3
- }
4
- EmbedMenuComponent.decorators = [
5
- { type: Component, args: [{
6
- selector: 'app-embed-menu',
7
- 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",
8
- 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}"]
9
- },] }
10
- ];
11
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZW1iZWQtbWVudS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvY29tcG9uZW50cy9lbWJlZC1tZW51L2VtYmVkLW1lbnUuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFPMUMsTUFBTSxPQUFPLGtCQUFrQjs7O1lBTDlCLFNBQVMsU0FBQztnQkFDVCxRQUFRLEVBQUUsZ0JBQWdCO2dCQUMxQixxV0FBMEM7O2FBRTNDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2FwcC1lbWJlZC1tZW51JyxcbiAgdGVtcGxhdGVVcmw6ICcuL2VtYmVkLW1lbnUuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9lbWJlZC1tZW51LmNvbXBvbmVudC5zY3NzJ10sXG59KVxuZXhwb3J0IGNsYXNzIEVtYmVkTWVudUNvbXBvbmVudCB7fVxuIl19
@@ -1,17 +0,0 @@
1
- import { Component } from '@angular/core';
2
- export class ExperimentLinkComponent {
3
- ngOnInit() {
4
- this.experimentLink = window.location.href.split('?')[0];
5
- }
6
- goToExperiment() {
7
- window.open(this.experimentLink, '_blank');
8
- }
9
- }
10
- ExperimentLinkComponent.decorators = [
11
- { type: Component, args: [{
12
- selector: 'app-experiment-link',
13
- template: "<app-menu-toggle\n tooltip=\"See full event display\"\n icon=\"link\"\n (click)=\"goToExperiment()\"\n></app-menu-toggle>\n",
14
- styles: [""]
15
- },] }
16
- ];
17
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXhwZXJpbWVudC1saW5rLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy9jb21wb25lbnRzL2VtYmVkLW1lbnUvZXhwZXJpbWVudC1saW5rL2V4cGVyaW1lbnQtbGluay5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBVSxNQUFNLGVBQWUsQ0FBQztBQU9sRCxNQUFNLE9BQU8sdUJBQXVCO0lBR2xDLFFBQVE7UUFDTixJQUFJLENBQUMsY0FBYyxHQUFHLE1BQU0sQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUMzRCxDQUFDO0lBRUQsY0FBYztRQUNaLE1BQU0sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLGNBQWMsRUFBRSxRQUFRLENBQUMsQ0FBQztJQUM3QyxDQUFDOzs7WUFkRixTQUFTLFNBQUM7Z0JBQ1QsUUFBUSxFQUFFLHFCQUFxQjtnQkFDL0IsMElBQStDOzthQUVoRCIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgT25Jbml0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2FwcC1leHBlcmltZW50LWxpbmsnLFxuICB0ZW1wbGF0ZVVybDogJy4vZXhwZXJpbWVudC1saW5rLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vZXhwZXJpbWVudC1saW5rLmNvbXBvbmVudC5zY3NzJ10sXG59KVxuZXhwb3J0IGNsYXNzIEV4cGVyaW1lbnRMaW5rQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcbiAgcHJpdmF0ZSBleHBlcmltZW50TGluazogc3RyaW5nO1xuXG4gIG5nT25Jbml0KCkge1xuICAgIHRoaXMuZXhwZXJpbWVudExpbmsgPSB3aW5kb3cubG9jYXRpb24uaHJlZi5zcGxpdCgnPycpWzBdO1xuICB9XG5cbiAgZ29Ub0V4cGVyaW1lbnQoKSB7XG4gICAgd2luZG93Lm9wZW4odGhpcy5leHBlcmltZW50TGluaywgJ19ibGFuaycpO1xuICB9XG59XG4iXX0=
@@ -1,18 +0,0 @@
1
- import { Component, Input } from '@angular/core';
2
- export class LoaderComponent {
3
- constructor() {
4
- this.loaded = false;
5
- }
6
- }
7
- LoaderComponent.decorators = [
8
- { type: Component, args: [{
9
- selector: 'app-loader',
10
- 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",
11
- 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(0deg)}95%{transform:scale(1) rotate(15deg)}}@keyframes loader{0%,to{transform:scale(.1) rotate(0deg)}95%{transform:scale(1) rotate(15deg)}}"]
12
- },] }
13
- ];
14
- LoaderComponent.propDecorators = {
15
- loaded: [{ type: Input }],
16
- progress: [{ type: Input }]
17
- };
18
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibG9hZGVyLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9jb21wb25lbnRzL2xvYWRlci9sb2FkZXIuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBT2pELE1BQU0sT0FBTyxlQUFlO0lBTDVCO1FBTVcsV0FBTSxHQUFHLEtBQUssQ0FBQztJQUUxQixDQUFDOzs7WUFSQSxTQUFTLFNBQUM7Z0JBQ1QsUUFBUSxFQUFFLFlBQVk7Z0JBQ3RCLHNqQkFBc0M7O2FBRXZDOzs7cUJBRUUsS0FBSzt1QkFDTCxLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBJbnB1dCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdhcHAtbG9hZGVyJyxcbiAgdGVtcGxhdGVVcmw6ICcuL2xvYWRlci5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL2xvYWRlci5jb21wb25lbnQuc2NzcyddLFxufSlcbmV4cG9ydCBjbGFzcyBMb2FkZXJDb21wb25lbnQge1xuICBASW5wdXQoKSBsb2FkZWQgPSBmYWxzZTtcbiAgQElucHV0KCkgcHJvZ3Jlc3M6IG51bWJlcjtcbn1cbiJdfQ==
@@ -1,14 +0,0 @@
1
- import { Component } from '@angular/core';
2
- export class NavComponent {
3
- constructor() { }
4
- ngOnInit() { }
5
- }
6
- NavComponent.decorators = [
7
- { type: Component, args: [{
8
- selector: 'app-nav',
9
- 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",
10
- styles: [".main-logo{width:140px;z-index:9999}.main-logo img{transition:all .5s}.main-logo:hover img{filter:drop-shadow(0 0 10px var(--phoenix-text-color));transition:all .5s}"]
11
- },] }
12
- ];
13
- NavComponent.ctorParameters = () => [];
14
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmF2LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9jb21wb25lbnRzL25hdi9uYXYuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQVUsTUFBTSxlQUFlLENBQUM7QUFPbEQsTUFBTSxPQUFPLFlBQVk7SUFDdkIsZ0JBQWUsQ0FBQztJQUVoQixRQUFRLEtBQUksQ0FBQzs7O1lBUmQsU0FBUyxTQUFDO2dCQUNULFFBQVEsRUFBRSxTQUFTO2dCQUNuQixzSkFBbUM7O2FBRXBDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBPbkluaXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnYXBwLW5hdicsXG4gIHRlbXBsYXRlVXJsOiAnLi9uYXYuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9uYXYuY29tcG9uZW50LnNjc3MnXSxcbn0pXG5leHBvcnQgY2xhc3MgTmF2Q29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcbiAgY29uc3RydWN0b3IoKSB7fVxuXG4gIG5nT25Jbml0KCkge31cbn1cbiJdfQ==
@@ -1,32 +0,0 @@
1
- import { Component, Input, Output, EventEmitter } from '@angular/core';
2
- export class ConfigSliderComponent {
3
- constructor() {
4
- this.value = 0;
5
- this.min = 0;
6
- this.max = 100;
7
- this.step = 1;
8
- this.allowCustomValue = false;
9
- this.onChange = new EventEmitter();
10
- }
11
- onValueChange(value) {
12
- if (value) {
13
- this.onChange.emit(value);
14
- }
15
- }
16
- }
17
- ConfigSliderComponent.decorators = [
18
- { type: Component, args: [{
19
- selector: 'app-config-slider',
20
- 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",
21
- 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-inner-spin-button,input::-webkit-outer-spin-button{-webkit-appearance:none}"]
22
- },] }
23
- ];
24
- ConfigSliderComponent.propDecorators = {
25
- value: [{ type: Input }],
26
- min: [{ type: Input }],
27
- max: [{ type: Input }],
28
- step: [{ type: Input }],
29
- allowCustomValue: [{ type: Input }],
30
- onChange: [{ type: Output }]
31
- };
32
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29uZmlnLXNsaWRlci5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9zcmMvY29tcG9uZW50cy9waG9lbml4LW1lbnUvY29uZmlnL2NvbmZpZy1zbGlkZXIvY29uZmlnLXNsaWRlci5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFLFlBQVksRUFBRSxNQUFNLGVBQWUsQ0FBQztBQU92RSxNQUFNLE9BQU8scUJBQXFCO0lBTGxDO1FBTVcsVUFBSyxHQUFXLENBQUMsQ0FBQztRQUNsQixRQUFHLEdBQVcsQ0FBQyxDQUFDO1FBQ2hCLFFBQUcsR0FBVyxHQUFHLENBQUM7UUFDbEIsU0FBSSxHQUFXLENBQUMsQ0FBQztRQUNqQixxQkFBZ0IsR0FBWSxLQUFLLENBQUM7UUFDakMsYUFBUSxHQUF5QixJQUFJLFlBQVksRUFBVSxDQUFDO0lBT3hFLENBQUM7SUFMQyxhQUFhLENBQUMsS0FBYTtRQUN6QixJQUFJLEtBQUssRUFBRTtZQUNULElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO1NBQzNCO0lBQ0gsQ0FBQzs7O1lBakJGLFNBQVMsU0FBQztnQkFDVCxRQUFRLEVBQUUsbUJBQW1CO2dCQUM3Qix3aEJBQTZDOzthQUU5Qzs7O29CQUVFLEtBQUs7a0JBQ0wsS0FBSztrQkFDTCxLQUFLO21CQUNMLEtBQUs7K0JBQ0wsS0FBSzt1QkFDTCxNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBJbnB1dCwgT3V0cHV0LCBFdmVudEVtaXR0ZXIgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnYXBwLWNvbmZpZy1zbGlkZXInLFxuICB0ZW1wbGF0ZVVybDogJy4vY29uZmlnLXNsaWRlci5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL2NvbmZpZy1zbGlkZXIuY29tcG9uZW50LnNjc3MnXSxcbn0pXG5leHBvcnQgY2xhc3MgQ29uZmlnU2xpZGVyQ29tcG9uZW50IHtcbiAgQElucHV0KCkgdmFsdWU6IG51bWJlciA9IDA7XG4gIEBJbnB1dCgpIG1pbjogbnVtYmVyID0gMDtcbiAgQElucHV0KCkgbWF4OiBudW1iZXIgPSAxMDA7XG4gIEBJbnB1dCgpIHN0ZXA6IG51bWJlciA9IDE7XG4gIEBJbnB1dCgpIGFsbG93Q3VzdG9tVmFsdWU6IGJvb2xlYW4gPSBmYWxzZTtcbiAgQE91dHB1dCgpIG9uQ2hhbmdlOiBFdmVudEVtaXR0ZXI8bnVtYmVyPiA9IG5ldyBFdmVudEVtaXR0ZXI8bnVtYmVyPigpO1xuXG4gIG9uVmFsdWVDaGFuZ2UodmFsdWU6IG51bWJlcikge1xuICAgIGlmICh2YWx1ZSkge1xuICAgICAgdGhpcy5vbkNoYW5nZS5lbWl0KHZhbHVlKTtcbiAgICB9XG4gIH1cbn1cbiJdfQ==
@@ -1,29 +0,0 @@
1
- import { ChangeDetectorRef, Component, Input, ViewChild, ViewEncapsulation, } from '@angular/core';
2
- export class PhoenixMenuItemComponent {
3
- constructor(cdr) {
4
- this.cdr = cdr;
5
- }
6
- calculateConfigTop() {
7
- if (this.phoenixMenuItem) {
8
- this.configTop =
9
- this.phoenixMenuItem.nativeElement.getBoundingClientRect().top;
10
- this.cdr.detectChanges();
11
- }
12
- }
13
- }
14
- PhoenixMenuItemComponent.decorators = [
15
- { type: Component, args: [{
16
- selector: 'app-phoenix-menu-item',
17
- 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 <span\n class=\"icon-wrapper icon-clickable 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 </span>\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 <span\n class=\"icon-wrapper icon-clickable 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 </span>\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",
18
- encapsulation: ViewEncapsulation.None,
19
- 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-clickable: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)}"]
20
- },] }
21
- ];
22
- PhoenixMenuItemComponent.ctorParameters = () => [
23
- { type: ChangeDetectorRef }
24
- ];
25
- PhoenixMenuItemComponent.propDecorators = {
26
- currentNode: [{ type: Input }],
27
- phoenixMenuItem: [{ type: ViewChild, args: ['phoenixMenuItem',] }]
28
- };
29
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGhvZW5peC1tZW51LWl0ZW0uY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vc3JjL2NvbXBvbmVudHMvcGhvZW5peC1tZW51L3BoZW9uaXgtbWVudS1pdGVtL3Bob2VuaXgtbWVudS1pdGVtLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0wsaUJBQWlCLEVBQ2pCLFNBQVMsRUFFVCxLQUFLLEVBQ0wsU0FBUyxFQUNULGlCQUFpQixHQUNsQixNQUFNLGVBQWUsQ0FBQztBQVN2QixNQUFNLE9BQU8sd0JBQXdCO0lBS25DLFlBQW9CLEdBQXNCO1FBQXRCLFFBQUcsR0FBSCxHQUFHLENBQW1CO0lBQUcsQ0FBQztJQUU5QyxrQkFBa0I7UUFDaEIsSUFBSSxJQUFJLENBQUMsZUFBZSxFQUFFO1lBQ3hCLElBQUksQ0FBQyxTQUFTO2dCQUNaLElBQUksQ0FBQyxlQUFlLENBQUMsYUFBYSxDQUFDLHFCQUFxQixFQUFFLENBQUMsR0FBRyxDQUFDO1lBQ2pFLElBQUksQ0FBQyxHQUFHLENBQUMsYUFBYSxFQUFFLENBQUM7U0FDMUI7SUFDSCxDQUFDOzs7WUFuQkYsU0FBUyxTQUFDO2dCQUNULFFBQVEsRUFBRSx1QkFBdUI7Z0JBQ2pDLGttTEFBaUQ7Z0JBRWpELGFBQWEsRUFBRSxpQkFBaUIsQ0FBQyxJQUFJOzthQUN0Qzs7O1lBZEMsaUJBQWlCOzs7MEJBZ0JoQixLQUFLOzhCQUNMLFNBQVMsU0FBQyxpQkFBaUIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBDaGFuZ2VEZXRlY3RvclJlZixcbiAgQ29tcG9uZW50LFxuICBFbGVtZW50UmVmLFxuICBJbnB1dCxcbiAgVmlld0NoaWxkLFxuICBWaWV3RW5jYXBzdWxhdGlvbixcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgdHlwZSB7IFBob2VuaXhNZW51Tm9kZSB9IGZyb20gJ3Bob2VuaXgtZXZlbnQtZGlzcGxheSc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2FwcC1waG9lbml4LW1lbnUtaXRlbScsXG4gIHRlbXBsYXRlVXJsOiAnLi9waG9lbml4LW1lbnUtaXRlbS5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL3Bob2VuaXgtbWVudS1pdGVtLmNvbXBvbmVudC5zY3NzJ10sXG4gIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLk5vbmUsXG59KVxuZXhwb3J0IGNsYXNzIFBob2VuaXhNZW51SXRlbUNvbXBvbmVudCB7XG4gIEBJbnB1dCgpIGN1cnJlbnROb2RlOiBQaG9lbml4TWVudU5vZGU7XG4gIEBWaWV3Q2hpbGQoJ3Bob2VuaXhNZW51SXRlbScpIHBob2VuaXhNZW51SXRlbTogRWxlbWVudFJlZjxIVE1MRGl2RWxlbWVudD47XG4gIGNvbmZpZ1RvcDogbnVtYmVyO1xuXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgY2RyOiBDaGFuZ2VEZXRlY3RvclJlZikge31cblxuICBjYWxjdWxhdGVDb25maWdUb3AoKSB7XG4gICAgaWYgKHRoaXMucGhvZW5peE1lbnVJdGVtKSB7XG4gICAgICB0aGlzLmNvbmZpZ1RvcCA9XG4gICAgICAgIHRoaXMucGhvZW5peE1lbnVJdGVtLm5hdGl2ZUVsZW1lbnQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkudG9wO1xuICAgICAgdGhpcy5jZHIuZGV0ZWN0Q2hhbmdlcygpO1xuICAgIH1cbiAgfVxufVxuIl19
@@ -1,14 +0,0 @@
1
- import { Component, Input } from '@angular/core';
2
- export class PhoenixMenuComponent {
3
- }
4
- PhoenixMenuComponent.decorators = [
5
- { type: Component, args: [{
6
- selector: 'app-phoenix-menu',
7
- template: "<div id=\"phoenixMenu\">\n <app-phoenix-menu-item [currentNode]=\"rootNode\"></app-phoenix-menu-item>\n</div>\n",
8
- 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}}"]
9
- },] }
10
- ];
11
- PhoenixMenuComponent.propDecorators = {
12
- rootNode: [{ type: Input }]
13
- };
14
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGhvZW5peC1tZW51LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9jb21wb25lbnRzL3Bob2VuaXgtbWVudS9waG9lbml4LW1lbnUuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBUWpELE1BQU0sT0FBTyxvQkFBb0I7OztZQUxoQyxTQUFTLFNBQUM7Z0JBQ1QsUUFBUSxFQUFFLGtCQUFrQjtnQkFDNUIsNEhBQTRDOzthQUU3Qzs7O3VCQUVFLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIElucHV0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgdHlwZSB7IFBob2VuaXhNZW51Tm9kZSB9IGZyb20gJ3Bob2VuaXgtZXZlbnQtZGlzcGxheSc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2FwcC1waG9lbml4LW1lbnUnLFxuICB0ZW1wbGF0ZVVybDogJy4vcGhvZW5peC1tZW51LmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vcGhvZW5peC1tZW51LmNvbXBvbmVudC5zY3NzJ10sXG59KVxuZXhwb3J0IGNsYXNzIFBob2VuaXhNZW51Q29tcG9uZW50IHtcbiAgQElucHV0KCkgcm9vdE5vZGU6IFBob2VuaXhNZW51Tm9kZTtcbn1cbiJdfQ==
@@ -1,94 +0,0 @@
1
- import { NgModule } from '@angular/core';
2
- import { DragDropModule } from '@angular/cdk/drag-drop';
3
- import { OverlayModule } from '@angular/cdk/overlay';
4
- import { MatButtonModule } from '@angular/material/button';
5
- import { MatCheckboxModule } from '@angular/material/checkbox';
6
- import { MatDialogModule } from '@angular/material/dialog';
7
- import { MatIconModule } from '@angular/material/icon';
8
- import { MatMenuModule } from '@angular/material/menu';
9
- import { MatSlideToggleModule } from '@angular/material/slide-toggle';
10
- import { MatSliderModule } from '@angular/material/slider';
11
- import { MatTooltipModule } from '@angular/material/tooltip';
12
- import { NgxSliderModule } from '@angular-slider/ngx-slider';
13
- import { NavComponent } from './nav/nav.component';
14
- import { PhoenixMenuComponent, PhoenixMenuItemComponent, ConfigSliderComponent, } from './phoenix-menu';
15
- import { UiMenuComponent, CollectionsInfoComponent, MenuToggleComponent, CollectionsInfoOverlayComponent, IoOptionsComponent, IOOptionsDialogComponent, OverlayViewComponent, ObjectSelectionComponent, ObjectSelectionOverlayComponent, EventSelectorComponent, ObjectClippingComponent, DarkThemeComponent, AutoRotateComponent, ViewOptionsComponent, OverlayViewWindowComponent, OverlayComponent, ExperimentInfoComponent, InfoPanelComponent, InfoPanelOverlayComponent, MainViewToggleComponent, ZoomControlsComponent, TreeMenuComponent, TreeMenuItemComponent, AnimateCameraComponent, AnimateEventComponent, VrToggleComponent, ArToggleComponent, SSModeComponent, PerformanceToggleComponent, ShareLinkComponent, ShareLinkDialogComponent, } from './ui-menu';
16
- import { CommonModule } from '@angular/common';
17
- import { RouterModule } from '@angular/router';
18
- import { AttributePipe } from '../services/extras/attribute.pipe';
19
- import { LoaderComponent } from './loader/loader.component';
20
- import { EmbedMenuComponent } from './embed-menu/embed-menu.component';
21
- import { ExperimentLinkComponent } from './embed-menu/experiment-link/experiment-link.component';
22
- const PHOENIX_COMPONENTS = [
23
- NavComponent,
24
- UiMenuComponent,
25
- CollectionsInfoComponent,
26
- MenuToggleComponent,
27
- CollectionsInfoOverlayComponent,
28
- IoOptionsComponent,
29
- IOOptionsDialogComponent,
30
- OverlayViewComponent,
31
- AttributePipe,
32
- ObjectSelectionComponent,
33
- ObjectSelectionOverlayComponent,
34
- EventSelectorComponent,
35
- ObjectClippingComponent,
36
- DarkThemeComponent,
37
- AutoRotateComponent,
38
- ViewOptionsComponent,
39
- OverlayViewWindowComponent,
40
- OverlayComponent,
41
- ExperimentInfoComponent,
42
- InfoPanelComponent,
43
- InfoPanelOverlayComponent,
44
- MainViewToggleComponent,
45
- ZoomControlsComponent,
46
- TreeMenuComponent,
47
- TreeMenuItemComponent,
48
- PhoenixMenuComponent,
49
- PhoenixMenuItemComponent,
50
- ConfigSliderComponent,
51
- AnimateCameraComponent,
52
- AnimateEventComponent,
53
- VrToggleComponent,
54
- ArToggleComponent,
55
- SSModeComponent,
56
- PerformanceToggleComponent,
57
- LoaderComponent,
58
- ShareLinkComponent,
59
- ShareLinkDialogComponent,
60
- EmbedMenuComponent,
61
- ExperimentLinkComponent,
62
- ];
63
- export class PhoenixUIModule {
64
- }
65
- PhoenixUIModule.decorators = [
66
- { type: NgModule, args: [{
67
- declarations: [...PHOENIX_COMPONENTS],
68
- imports: [
69
- CommonModule,
70
- RouterModule,
71
- DragDropModule,
72
- MatDialogModule,
73
- MatButtonModule,
74
- MatTooltipModule,
75
- OverlayModule,
76
- MatMenuModule,
77
- MatSliderModule,
78
- MatSlideToggleModule,
79
- MatCheckboxModule,
80
- MatIconModule,
81
- NgxSliderModule,
82
- ],
83
- entryComponents: [
84
- OverlayComponent,
85
- OverlayViewWindowComponent,
86
- IOOptionsDialogComponent,
87
- CollectionsInfoOverlayComponent,
88
- ObjectSelectionOverlayComponent,
89
- InfoPanelOverlayComponent,
90
- ],
91
- exports: [PHOENIX_COMPONENTS],
92
- },] }
93
- ];
94
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGhvZW5peC11aS5tb2R1bGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvY29tcG9uZW50cy9waG9lbml4LXVpLm1vZHVsZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsUUFBUSxFQUFRLE1BQU0sZUFBZSxDQUFDO0FBQy9DLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUN4RCxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDckQsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQzNELE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQy9ELE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUMzRCxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDdkQsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQ3ZELE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLGdDQUFnQyxDQUFDO0FBQ3RFLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUMzRCxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUM3RCxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFDN0QsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQ25ELE9BQU8sRUFDTCxvQkFBb0IsRUFDcEIsd0JBQXdCLEVBQ3hCLHFCQUFxQixHQUN0QixNQUFNLGdCQUFnQixDQUFDO0FBQ3hCLE9BQU8sRUFDTCxlQUFlLEVBQ2Ysd0JBQXdCLEVBQ3hCLG1CQUFtQixFQUNuQiwrQkFBK0IsRUFDL0Isa0JBQWtCLEVBQ2xCLHdCQUF3QixFQUN4QixvQkFBb0IsRUFDcEIsd0JBQXdCLEVBQ3hCLCtCQUErQixFQUMvQixzQkFBc0IsRUFDdEIsdUJBQXVCLEVBQ3ZCLGtCQUFrQixFQUNsQixtQkFBbUIsRUFDbkIsb0JBQW9CLEVBQ3BCLDBCQUEwQixFQUMxQixnQkFBZ0IsRUFDaEIsdUJBQXVCLEVBQ3ZCLGtCQUFrQixFQUNsQix5QkFBeUIsRUFDekIsdUJBQXVCLEVBQ3ZCLHFCQUFxQixFQUNyQixpQkFBaUIsRUFDakIscUJBQXFCLEVBQ3JCLHNCQUFzQixFQUN0QixxQkFBcUIsRUFDckIsaUJBQWlCLEVBQ2pCLGlCQUFpQixFQUNqQixlQUFlLEVBQ2YsMEJBQTBCLEVBQzFCLGtCQUFrQixFQUNsQix3QkFBd0IsR0FDekIsTUFBTSxXQUFXLENBQUM7QUFDbkIsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMvQyxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sbUNBQW1DLENBQUM7QUFDbEUsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBQzVELE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLG1DQUFtQyxDQUFDO0FBQ3ZFLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxNQUFNLHdEQUF3RCxDQUFDO0FBRWpHLE1BQU0sa0JBQWtCLEdBQWdCO0lBQ3RDLFlBQVk7SUFDWixlQUFlO0lBQ2Ysd0JBQXdCO0lBQ3hCLG1CQUFtQjtJQUNuQiwrQkFBK0I7SUFDL0Isa0JBQWtCO0lBQ2xCLHdCQUF3QjtJQUN4QixvQkFBb0I7SUFDcEIsYUFBYTtJQUNiLHdCQUF3QjtJQUN4QiwrQkFBK0I7SUFDL0Isc0JBQXNCO0lBQ3RCLHVCQUF1QjtJQUN2QixrQkFBa0I7SUFDbEIsbUJBQW1CO0lBQ25CLG9CQUFvQjtJQUNwQiwwQkFBMEI7SUFDMUIsZ0JBQWdCO0lBQ2hCLHVCQUF1QjtJQUN2QixrQkFBa0I7SUFDbEIseUJBQXlCO0lBQ3pCLHVCQUF1QjtJQUN2QixxQkFBcUI7SUFDckIsaUJBQWlCO0lBQ2pCLHFCQUFxQjtJQUNyQixvQkFBb0I7SUFDcEIsd0JBQXdCO0lBQ3hCLHFCQUFxQjtJQUNyQixzQkFBc0I7SUFDdEIscUJBQXFCO0lBQ3JCLGlCQUFpQjtJQUNqQixpQkFBaUI7SUFDakIsZUFBZTtJQUNmLDBCQUEwQjtJQUMxQixlQUFlO0lBQ2Ysa0JBQWtCO0lBQ2xCLHdCQUF3QjtJQUN4QixrQkFBa0I7SUFDbEIsdUJBQXVCO0NBQ3hCLENBQUM7QUE2QkYsTUFBTSxPQUFPLGVBQWU7OztZQTNCM0IsUUFBUSxTQUFDO2dCQUNSLFlBQVksRUFBRSxDQUFDLEdBQUcsa0JBQWtCLENBQUM7Z0JBQ3JDLE9BQU8sRUFBRTtvQkFDUCxZQUFZO29CQUNaLFlBQVk7b0JBQ1osY0FBYztvQkFDZCxlQUFlO29CQUNmLGVBQWU7b0JBQ2YsZ0JBQWdCO29CQUNoQixhQUFhO29CQUNiLGFBQWE7b0JBQ2IsZUFBZTtvQkFDZixvQkFBb0I7b0JBQ3BCLGlCQUFpQjtvQkFDakIsYUFBYTtvQkFDYixlQUFlO2lCQUNoQjtnQkFDRCxlQUFlLEVBQUU7b0JBQ2YsZ0JBQWdCO29CQUNoQiwwQkFBMEI7b0JBQzFCLHdCQUF3QjtvQkFDeEIsK0JBQStCO29CQUMvQiwrQkFBK0I7b0JBQy9CLHlCQUF5QjtpQkFDMUI7Z0JBQ0QsT0FBTyxFQUFFLENBQUMsa0JBQWtCLENBQUM7YUFDOUIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBOZ01vZHVsZSwgVHlwZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgRHJhZ0Ryb3BNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jZGsvZHJhZy1kcm9wJztcbmltcG9ydCB7IE92ZXJsYXlNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jZGsvb3ZlcmxheSc7XG5pbXBvcnQgeyBNYXRCdXR0b25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9idXR0b24nO1xuaW1wb3J0IHsgTWF0Q2hlY2tib3hNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9jaGVja2JveCc7XG5pbXBvcnQgeyBNYXREaWFsb2dNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9kaWFsb2cnO1xuaW1wb3J0IHsgTWF0SWNvbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2ljb24nO1xuaW1wb3J0IHsgTWF0TWVudU1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL21lbnUnO1xuaW1wb3J0IHsgTWF0U2xpZGVUb2dnbGVNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9zbGlkZS10b2dnbGUnO1xuaW1wb3J0IHsgTWF0U2xpZGVyTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvc2xpZGVyJztcbmltcG9ydCB7IE1hdFRvb2x0aXBNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC90b29sdGlwJztcbmltcG9ydCB7IE5neFNsaWRlck1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyLXNsaWRlci9uZ3gtc2xpZGVyJztcbmltcG9ydCB7IE5hdkNvbXBvbmVudCB9IGZyb20gJy4vbmF2L25hdi5jb21wb25lbnQnO1xuaW1wb3J0IHtcbiAgUGhvZW5peE1lbnVDb21wb25lbnQsXG4gIFBob2VuaXhNZW51SXRlbUNvbXBvbmVudCxcbiAgQ29uZmlnU2xpZGVyQ29tcG9uZW50LFxufSBmcm9tICcuL3Bob2VuaXgtbWVudSc7XG5pbXBvcnQge1xuICBVaU1lbnVDb21wb25lbnQsXG4gIENvbGxlY3Rpb25zSW5mb0NvbXBvbmVudCxcbiAgTWVudVRvZ2dsZUNvbXBvbmVudCxcbiAgQ29sbGVjdGlvbnNJbmZvT3ZlcmxheUNvbXBvbmVudCxcbiAgSW9PcHRpb25zQ29tcG9uZW50LFxuICBJT09wdGlvbnNEaWFsb2dDb21wb25lbnQsXG4gIE92ZXJsYXlWaWV3Q29tcG9uZW50LFxuICBPYmplY3RTZWxlY3Rpb25Db21wb25lbnQsXG4gIE9iamVjdFNlbGVjdGlvbk92ZXJsYXlDb21wb25lbnQsXG4gIEV2ZW50U2VsZWN0b3JDb21wb25lbnQsXG4gIE9iamVjdENsaXBwaW5nQ29tcG9uZW50LFxuICBEYXJrVGhlbWVDb21wb25lbnQsXG4gIEF1dG9Sb3RhdGVDb21wb25lbnQsXG4gIFZpZXdPcHRpb25zQ29tcG9uZW50LFxuICBPdmVybGF5Vmlld1dpbmRvd0NvbXBvbmVudCxcbiAgT3ZlcmxheUNvbXBvbmVudCxcbiAgRXhwZXJpbWVudEluZm9Db21wb25lbnQsXG4gIEluZm9QYW5lbENvbXBvbmVudCxcbiAgSW5mb1BhbmVsT3ZlcmxheUNvbXBvbmVudCxcbiAgTWFpblZpZXdUb2dnbGVDb21wb25lbnQsXG4gIFpvb21Db250cm9sc0NvbXBvbmVudCxcbiAgVHJlZU1lbnVDb21wb25lbnQsXG4gIFRyZWVNZW51SXRlbUNvbXBvbmVudCxcbiAgQW5pbWF0ZUNhbWVyYUNvbXBvbmVudCxcbiAgQW5pbWF0ZUV2ZW50Q29tcG9uZW50LFxuICBWclRvZ2dsZUNvbXBvbmVudCxcbiAgQXJUb2dnbGVDb21wb25lbnQsXG4gIFNTTW9kZUNvbXBvbmVudCxcbiAgUGVyZm9ybWFuY2VUb2dnbGVDb21wb25lbnQsXG4gIFNoYXJlTGlua0NvbXBvbmVudCxcbiAgU2hhcmVMaW5rRGlhbG9nQ29tcG9uZW50LFxufSBmcm9tICcuL3VpLW1lbnUnO1xuaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IFJvdXRlck1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XG5pbXBvcnQgeyBBdHRyaWJ1dGVQaXBlIH0gZnJvbSAnLi4vc2VydmljZXMvZXh0cmFzL2F0dHJpYnV0ZS5waXBlJztcbmltcG9ydCB7IExvYWRlckNvbXBvbmVudCB9IGZyb20gJy4vbG9hZGVyL2xvYWRlci5jb21wb25lbnQnO1xuaW1wb3J0IHsgRW1iZWRNZW51Q29tcG9uZW50IH0gZnJvbSAnLi9lbWJlZC1tZW51L2VtYmVkLW1lbnUuY29tcG9uZW50JztcbmltcG9ydCB7IEV4cGVyaW1lbnRMaW5rQ29tcG9uZW50IH0gZnJvbSAnLi9lbWJlZC1tZW51L2V4cGVyaW1lbnQtbGluay9leHBlcmltZW50LWxpbmsuY29tcG9uZW50JztcblxuY29uc3QgUEhPRU5JWF9DT01QT05FTlRTOiBUeXBlPGFueT5bXSA9IFtcbiAgTmF2Q29tcG9uZW50LFxuICBVaU1lbnVDb21wb25lbnQsXG4gIENvbGxlY3Rpb25zSW5mb0NvbXBvbmVudCxcbiAgTWVudVRvZ2dsZUNvbXBvbmVudCxcbiAgQ29sbGVjdGlvbnNJbmZvT3ZlcmxheUNvbXBvbmVudCxcbiAgSW9PcHRpb25zQ29tcG9uZW50LFxuICBJT09wdGlvbnNEaWFsb2dDb21wb25lbnQsXG4gIE92ZXJsYXlWaWV3Q29tcG9uZW50LFxuICBBdHRyaWJ1dGVQaXBlLFxuICBPYmplY3RTZWxlY3Rpb25Db21wb25lbnQsXG4gIE9iamVjdFNlbGVjdGlvbk92ZXJsYXlDb21wb25lbnQsXG4gIEV2ZW50U2VsZWN0b3JDb21wb25lbnQsXG4gIE9iamVjdENsaXBwaW5nQ29tcG9uZW50LFxuICBEYXJrVGhlbWVDb21wb25lbnQsXG4gIEF1dG9Sb3RhdGVDb21wb25lbnQsXG4gIFZpZXdPcHRpb25zQ29tcG9uZW50LFxuICBPdmVybGF5Vmlld1dpbmRvd0NvbXBvbmVudCxcbiAgT3ZlcmxheUNvbXBvbmVudCxcbiAgRXhwZXJpbWVudEluZm9Db21wb25lbnQsXG4gIEluZm9QYW5lbENvbXBvbmVudCxcbiAgSW5mb1BhbmVsT3ZlcmxheUNvbXBvbmVudCxcbiAgTWFpblZpZXdUb2dnbGVDb21wb25lbnQsXG4gIFpvb21Db250cm9sc0NvbXBvbmVudCxcbiAgVHJlZU1lbnVDb21wb25lbnQsXG4gIFRyZWVNZW51SXRlbUNvbXBvbmVudCxcbiAgUGhvZW5peE1lbnVDb21wb25lbnQsXG4gIFBob2VuaXhNZW51SXRlbUNvbXBvbmVudCxcbiAgQ29uZmlnU2xpZGVyQ29tcG9uZW50LFxuICBBbmltYXRlQ2FtZXJhQ29tcG9uZW50LFxuICBBbmltYXRlRXZlbnRDb21wb25lbnQsXG4gIFZyVG9nZ2xlQ29tcG9uZW50LFxuICBBclRvZ2dsZUNvbXBvbmVudCxcbiAgU1NNb2RlQ29tcG9uZW50LFxuICBQZXJmb3JtYW5jZVRvZ2dsZUNvbXBvbmVudCxcbiAgTG9hZGVyQ29tcG9uZW50LFxuICBTaGFyZUxpbmtDb21wb25lbnQsXG4gIFNoYXJlTGlua0RpYWxvZ0NvbXBvbmVudCxcbiAgRW1iZWRNZW51Q29tcG9uZW50LFxuICBFeHBlcmltZW50TGlua0NvbXBvbmVudCxcbl07XG5cbkBOZ01vZHVsZSh7XG4gIGRlY2xhcmF0aW9uczogWy4uLlBIT0VOSVhfQ09NUE9ORU5UU10sXG4gIGltcG9ydHM6IFtcbiAgICBDb21tb25Nb2R1bGUsXG4gICAgUm91dGVyTW9kdWxlLFxuICAgIERyYWdEcm9wTW9kdWxlLFxuICAgIE1hdERpYWxvZ01vZHVsZSxcbiAgICBNYXRCdXR0b25Nb2R1bGUsXG4gICAgTWF0VG9vbHRpcE1vZHVsZSxcbiAgICBPdmVybGF5TW9kdWxlLFxuICAgIE1hdE1lbnVNb2R1bGUsXG4gICAgTWF0U2xpZGVyTW9kdWxlLFxuICAgIE1hdFNsaWRlVG9nZ2xlTW9kdWxlLFxuICAgIE1hdENoZWNrYm94TW9kdWxlLFxuICAgIE1hdEljb25Nb2R1bGUsXG4gICAgTmd4U2xpZGVyTW9kdWxlLFxuICBdLFxuICBlbnRyeUNvbXBvbmVudHM6IFtcbiAgICBPdmVybGF5Q29tcG9uZW50LFxuICAgIE92ZXJsYXlWaWV3V2luZG93Q29tcG9uZW50LFxuICAgIElPT3B0aW9uc0RpYWxvZ0NvbXBvbmVudCxcbiAgICBDb2xsZWN0aW9uc0luZm9PdmVybGF5Q29tcG9uZW50LFxuICAgIE9iamVjdFNlbGVjdGlvbk92ZXJsYXlDb21wb25lbnQsXG4gICAgSW5mb1BhbmVsT3ZlcmxheUNvbXBvbmVudCxcbiAgXSxcbiAgZXhwb3J0czogW1BIT0VOSVhfQ09NUE9ORU5UU10sXG59KVxuZXhwb3J0IGNsYXNzIFBob2VuaXhVSU1vZHVsZSB7fVxuIl19