@rocketshow/designer 1.31.0 → 1.33.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (339) hide show
  1. package/esm2022/lib/array-sort-pipe.mjs +30 -0
  2. package/esm2022/lib/designer.component.mjs +605 -0
  3. package/esm2022/lib/designer.module.mjs +183 -0
  4. package/esm2022/lib/designer.service.mjs +14 -0
  5. package/esm2022/lib/effect/effect-curve/effect-curve.component.mjs +569 -0
  6. package/esm2022/lib/effect/effect-pan-tilt/effect-pan-tilt.component.mjs +36 -0
  7. package/esm2022/lib/effect/effect.component.mjs +174 -0
  8. package/esm2022/lib/error-dialog/error-dialog.component.mjs +75 -0
  9. package/esm2022/lib/fixture/fixture-capability/fixture-capability-channel/fixture-capability-channel.component.mjs +222 -0
  10. package/esm2022/lib/fixture/fixture-capability/fixture-capability-color/fixture-capability-color.component.mjs +147 -0
  11. package/esm2022/lib/fixture/fixture-capability/fixture-capability-color-wheel/fixture-capability-color-wheel.component.mjs +213 -0
  12. package/esm2022/lib/fixture/fixture-capability/fixture-capability-dimmer/fixture-capability-dimmer.component.mjs +78 -0
  13. package/esm2022/lib/fixture/fixture-capability/fixture-capability-pan-tilt/fixture-capability-pan-tilt.component.mjs +119 -0
  14. package/esm2022/lib/fixture/fixture-capability/fixture-capability.component.mjs +169 -0
  15. package/esm2022/lib/fixture/fixture-channel/fixture-channel.component.mjs +160 -0
  16. package/esm2022/lib/fixture/fixture-settings/fixture-settings-position/fixture-settings-position.component.mjs +365 -0
  17. package/esm2022/lib/fixture/fixture-settings/fixture-settings-stage/fixture-settings-stage.component.mjs +151 -0
  18. package/esm2022/lib/fixture/fixture-settings/fixture-settings.component.mjs +46 -0
  19. package/esm2022/lib/fixture/fixture.component.mjs +138 -0
  20. package/esm2022/lib/fixture-pool/fixture-pool-create-from-file/fixture-pool-create-from-file.component.mjs +145 -0
  21. package/esm2022/lib/fixture-pool/fixture-pool.component.mjs +589 -0
  22. package/esm2022/lib/intro/intro.component.mjs +95 -0
  23. package/esm2022/lib/master-dimmer/master-dimmer.component.mjs +66 -0
  24. package/esm2022/lib/models/cached-fixture-capability.mjs +9 -0
  25. package/esm2022/lib/models/cached-fixture-channel.mjs +7 -0
  26. package/esm2022/lib/models/cached-fixture.mjs +6 -0
  27. package/esm2022/lib/models/color.mjs +8 -0
  28. package/esm2022/lib/models/composition.mjs +46 -0
  29. package/esm2022/lib/models/effect-curve-profile-channel.mjs +15 -0
  30. package/esm2022/lib/models/effect-curve.mjs +69 -0
  31. package/esm2022/lib/models/effect-pan-tilt.mjs +19 -0
  32. package/esm2022/lib/models/effect.mjs +12 -0
  33. package/esm2022/lib/models/fixture-capability-value.mjs +15 -0
  34. package/esm2022/lib/models/fixture-capability.mjs +84 -0
  35. package/esm2022/lib/models/fixture-channel-value.mjs +11 -0
  36. package/esm2022/lib/models/fixture-channel.mjs +24 -0
  37. package/esm2022/lib/models/fixture-mode.mjs +14 -0
  38. package/esm2022/lib/models/fixture-profile.mjs +70 -0
  39. package/esm2022/lib/models/fixture-wheel-slot.mjs +26 -0
  40. package/esm2022/lib/models/fixture-wheel.mjs +15 -0
  41. package/esm2022/lib/models/fixture.mjs +40 -0
  42. package/esm2022/lib/models/preset-region-scene.mjs +8 -0
  43. package/esm2022/lib/models/preset.mjs +56 -0
  44. package/esm2022/lib/models/project.mjs +68 -0
  45. package/esm2022/lib/models/scene-playback-region.mjs +11 -0
  46. package/esm2022/lib/models/scene.mjs +27 -0
  47. package/esm2022/lib/models/universe.mjs +11 -0
  48. package/esm2022/lib/preset/preset-settings/preset-settings.component.mjs +194 -0
  49. package/esm2022/lib/preset/preset.component.mjs +131 -0
  50. package/esm2022/lib/preview/models/color-changer-3d.mjs +167 -0
  51. package/esm2022/lib/preview/models/fixture-3d.mjs +150 -0
  52. package/esm2022/lib/preview/models/moving-head-3d.mjs +243 -0
  53. package/esm2022/lib/preview/preview.component.mjs +212 -0
  54. package/esm2022/lib/project/project-browser/project-browser.component.mjs +143 -0
  55. package/esm2022/lib/project/project-import/project-import.component.mjs +107 -0
  56. package/esm2022/lib/project/project-save/project-save.component.mjs +178 -0
  57. package/esm2022/lib/project/project-share/project-share.component.mjs +71 -0
  58. package/esm2022/lib/scene/scene-settings/scene-settings.component.mjs +146 -0
  59. package/esm2022/lib/scene/scene.component.mjs +110 -0
  60. package/esm2022/lib/services/animation.service.mjs +16 -0
  61. package/esm2022/lib/services/config.service.mjs +27 -0
  62. package/esm2022/lib/services/effect.service.mjs +14 -0
  63. package/esm2022/lib/services/error-dialog.service.mjs +39 -0
  64. package/esm2022/lib/services/fixture-pool.service.mjs +30 -0
  65. package/esm2022/lib/services/fixture.service.mjs +431 -0
  66. package/esm2022/lib/services/hotkey-target-exclude.service.mjs +24 -0
  67. package/esm2022/lib/services/intro.service.mjs +140 -0
  68. package/esm2022/lib/services/preset.service.mjs +400 -0
  69. package/esm2022/lib/services/preview-mesh.service.mjs +57 -0
  70. package/esm2022/lib/services/preview.service.mjs +496 -0
  71. package/esm2022/lib/services/project-load.service.mjs +149 -0
  72. package/esm2022/lib/services/project.service.mjs +97 -0
  73. package/esm2022/lib/services/scene.service.mjs +164 -0
  74. package/esm2022/lib/services/timeline.service.mjs +726 -0
  75. package/esm2022/lib/services/universe.service.mjs +23 -0
  76. package/esm2022/lib/services/user-ensure-login.service.mjs +38 -0
  77. package/esm2022/lib/services/user.service.mjs +89 -0
  78. package/esm2022/lib/services/uuid.service.mjs +23 -0
  79. package/esm2022/lib/services/warning-dialog.service.mjs +38 -0
  80. package/esm2022/lib/timeline/composition-settings/composition-settings.component.mjs +334 -0
  81. package/esm2022/lib/timeline/timeline-grid/timeline-grid.component.mjs +216 -0
  82. package/esm2022/lib/timeline/timeline.component.mjs +418 -0
  83. package/esm2022/lib/user/user-login/user-login.component.mjs +144 -0
  84. package/esm2022/lib/user/user-register/user-register.component.mjs +220 -0
  85. package/esm2022/lib/wait-dialog/wait-dialog.component.mjs +26 -0
  86. package/esm2022/lib/warning-dialog/warning-dialog.component.mjs +68 -0
  87. package/esm2022/public_api.mjs +7 -0
  88. package/esm2022/rocketshow-designer.mjs +5 -0
  89. package/fesm2022/rocketshow-designer.mjs +10626 -0
  90. package/fesm2022/rocketshow-designer.mjs.map +1 -0
  91. package/index.d.ts +5 -0
  92. package/lib/array-sort-pipe.d.ts +3 -0
  93. package/lib/designer.component.d.ts +15 -12
  94. package/lib/designer.module.d.ts +54 -0
  95. package/lib/designer.service.d.ts +3 -0
  96. package/lib/effect/effect-curve/effect-curve.component.d.ts +4 -1
  97. package/lib/effect/effect-pan-tilt/effect-pan-tilt.component.d.ts +3 -0
  98. package/lib/effect/effect.component.d.ts +3 -0
  99. package/lib/error-dialog/error-dialog.component.d.ts +3 -0
  100. package/lib/fixture/fixture-capability/fixture-capability-channel/fixture-capability-channel.component.d.ts +4 -1
  101. package/lib/fixture/fixture-capability/fixture-capability-color/fixture-capability-color.component.d.ts +3 -0
  102. package/lib/fixture/fixture-capability/fixture-capability-color-wheel/fixture-capability-color-wheel.component.d.ts +5 -2
  103. package/lib/fixture/fixture-capability/fixture-capability-dimmer/fixture-capability-dimmer.component.d.ts +3 -0
  104. package/lib/fixture/fixture-capability/fixture-capability-pan-tilt/fixture-capability-pan-tilt.component.d.ts +3 -0
  105. package/lib/fixture/fixture-capability/fixture-capability.component.d.ts +3 -0
  106. package/lib/fixture/fixture-channel/fixture-channel.component.d.ts +3 -0
  107. package/lib/fixture/fixture-settings/fixture-settings-position/fixture-settings-position.component.d.ts +3 -0
  108. package/lib/fixture/fixture-settings/fixture-settings-stage/fixture-settings-stage.component.d.ts +3 -0
  109. package/lib/fixture/fixture-settings/fixture-settings.component.d.ts +3 -0
  110. package/lib/fixture/fixture.component.d.ts +3 -0
  111. package/lib/fixture-pool/fixture-pool-create-from-file/fixture-pool-create-from-file.component.d.ts +3 -0
  112. package/lib/fixture-pool/fixture-pool.component.d.ts +3 -0
  113. package/lib/intro/intro.component.d.ts +3 -0
  114. package/lib/master-dimmer/master-dimmer.component.d.ts +3 -0
  115. package/lib/preset/preset-settings/preset-settings.component.d.ts +3 -0
  116. package/lib/preset/preset.component.d.ts +3 -0
  117. package/lib/preview/preview.component.d.ts +4 -4
  118. package/lib/project/project-browser/project-browser.component.d.ts +3 -0
  119. package/lib/project/project-import/project-import.component.d.ts +3 -0
  120. package/lib/project/project-save/project-save.component.d.ts +3 -0
  121. package/lib/project/project-share/project-share.component.d.ts +3 -0
  122. package/lib/scene/scene-settings/scene-settings.component.d.ts +3 -0
  123. package/lib/scene/scene.component.d.ts +3 -0
  124. package/lib/services/animation.service.d.ts +3 -0
  125. package/lib/services/config.service.d.ts +3 -0
  126. package/lib/services/effect.service.d.ts +3 -0
  127. package/lib/services/error-dialog.service.d.ts +3 -0
  128. package/lib/services/fixture-pool.service.d.ts +3 -0
  129. package/lib/services/fixture.service.d.ts +3 -0
  130. package/lib/services/hotkey-target-exclude.service.d.ts +3 -0
  131. package/lib/services/intro.service.d.ts +3 -0
  132. package/lib/services/preset.service.d.ts +3 -0
  133. package/lib/services/preview-mesh.service.d.ts +3 -0
  134. package/lib/services/preview.service.d.ts +4 -0
  135. package/lib/services/project-load.service.d.ts +3 -0
  136. package/lib/services/project.service.d.ts +3 -0
  137. package/lib/services/scene.service.d.ts +3 -0
  138. package/lib/services/timeline.service.d.ts +4 -1
  139. package/lib/services/universe.service.d.ts +3 -0
  140. package/lib/services/user-ensure-login.service.d.ts +3 -0
  141. package/lib/services/user.service.d.ts +3 -0
  142. package/lib/services/uuid.service.d.ts +3 -0
  143. package/lib/services/warning-dialog.service.d.ts +3 -0
  144. package/lib/timeline/composition-settings/composition-settings.component.d.ts +3 -0
  145. package/lib/timeline/timeline-grid/timeline-grid.component.d.ts +3 -0
  146. package/lib/timeline/timeline.component.d.ts +3 -0
  147. package/lib/user/user-login/user-login.component.d.ts +3 -0
  148. package/lib/user/user-register/user-register.component.d.ts +3 -0
  149. package/lib/wait-dialog/wait-dialog.component.d.ts +3 -0
  150. package/lib/warning-dialog/warning-dialog.component.d.ts +3 -0
  151. package/package.json +20 -22
  152. package/rocketshow-designer-1.33.0.tgz +0 -0
  153. package/bundles/rocketshow-designer.umd.js +0 -9947
  154. package/bundles/rocketshow-designer.umd.js.map +0 -1
  155. package/bundles/rocketshow-designer.umd.min.js +0 -17
  156. package/bundles/rocketshow-designer.umd.min.js.map +0 -1
  157. package/esm2015/lib/array-sort-pipe.js +0 -28
  158. package/esm2015/lib/designer.component.js +0 -411
  159. package/esm2015/lib/designer.module.js +0 -117
  160. package/esm2015/lib/designer.service.js +0 -16
  161. package/esm2015/lib/effect/effect-curve/effect-curve.component.js +0 -325
  162. package/esm2015/lib/effect/effect-pan-tilt/effect-pan-tilt.component.js +0 -30
  163. package/esm2015/lib/effect/effect.component.js +0 -73
  164. package/esm2015/lib/error-dialog/error-dialog.component.js +0 -42
  165. package/esm2015/lib/fixture/fixture-capability/fixture-capability-channel/fixture-capability-channel.component.js +0 -141
  166. package/esm2015/lib/fixture/fixture-capability/fixture-capability-color/fixture-capability-color.component.js +0 -128
  167. package/esm2015/lib/fixture/fixture-capability/fixture-capability-color-wheel/fixture-capability-color-wheel.component.js +0 -163
  168. package/esm2015/lib/fixture/fixture-capability/fixture-capability-dimmer/fixture-capability-dimmer.component.js +0 -60
  169. package/esm2015/lib/fixture/fixture-capability/fixture-capability-pan-tilt/fixture-capability-pan-tilt.component.js +0 -87
  170. package/esm2015/lib/fixture/fixture-capability/fixture-capability.component.js +0 -97
  171. package/esm2015/lib/fixture/fixture-channel/fixture-channel.component.js +0 -66
  172. package/esm2015/lib/fixture/fixture-settings/fixture-settings-position/fixture-settings-position.component.js +0 -200
  173. package/esm2015/lib/fixture/fixture-settings/fixture-settings-stage/fixture-settings-stage.component.js +0 -31
  174. package/esm2015/lib/fixture/fixture-settings/fixture-settings.component.js +0 -35
  175. package/esm2015/lib/fixture/fixture.component.js +0 -70
  176. package/esm2015/lib/fixture-pool/fixture-pool-create-from-file/fixture-pool-create-from-file.component.js +0 -128
  177. package/esm2015/lib/fixture-pool/fixture-pool.component.js +0 -331
  178. package/esm2015/lib/intro/intro.component.js +0 -25
  179. package/esm2015/lib/master-dimmer/master-dimmer.component.js +0 -41
  180. package/esm2015/lib/models/cached-fixture-capability.js +0 -9
  181. package/esm2015/lib/models/cached-fixture-channel.js +0 -7
  182. package/esm2015/lib/models/cached-fixture.js +0 -6
  183. package/esm2015/lib/models/color.js +0 -8
  184. package/esm2015/lib/models/composition.js +0 -46
  185. package/esm2015/lib/models/effect-curve-profile-channel.js +0 -15
  186. package/esm2015/lib/models/effect-curve.js +0 -69
  187. package/esm2015/lib/models/effect-pan-tilt.js +0 -19
  188. package/esm2015/lib/models/effect.js +0 -12
  189. package/esm2015/lib/models/fixture-capability-value.js +0 -15
  190. package/esm2015/lib/models/fixture-capability.js +0 -84
  191. package/esm2015/lib/models/fixture-channel-value.js +0 -11
  192. package/esm2015/lib/models/fixture-channel.js +0 -24
  193. package/esm2015/lib/models/fixture-mode.js +0 -14
  194. package/esm2015/lib/models/fixture-profile.js +0 -70
  195. package/esm2015/lib/models/fixture-wheel-slot.js +0 -26
  196. package/esm2015/lib/models/fixture-wheel.js +0 -15
  197. package/esm2015/lib/models/fixture.js +0 -40
  198. package/esm2015/lib/models/preset-region-scene.js +0 -8
  199. package/esm2015/lib/models/preset.js +0 -56
  200. package/esm2015/lib/models/project.js +0 -68
  201. package/esm2015/lib/models/scene-playback-region.js +0 -11
  202. package/esm2015/lib/models/scene.js +0 -27
  203. package/esm2015/lib/models/universe.js +0 -11
  204. package/esm2015/lib/preset/preset-settings/preset-settings.component.js +0 -66
  205. package/esm2015/lib/preset/preset.component.js +0 -85
  206. package/esm2015/lib/preview/models/color-changer-3d.js +0 -167
  207. package/esm2015/lib/preview/models/fixture-3d.js +0 -150
  208. package/esm2015/lib/preview/models/moving-head-3d.js +0 -233
  209. package/esm2015/lib/preview/preview.component.js +0 -242
  210. package/esm2015/lib/project/project-browser/project-browser.component.js +0 -73
  211. package/esm2015/lib/project/project-import/project-import.component.js +0 -89
  212. package/esm2015/lib/project/project-save/project-save.component.js +0 -105
  213. package/esm2015/lib/project/project-share/project-share.component.js +0 -43
  214. package/esm2015/lib/scene/scene-settings/scene-settings.component.js +0 -52
  215. package/esm2015/lib/scene/scene.component.js +0 -56
  216. package/esm2015/lib/services/animation.service.js +0 -17
  217. package/esm2015/lib/services/config.service.js +0 -28
  218. package/esm2015/lib/services/effect.service.js +0 -16
  219. package/esm2015/lib/services/error-dialog.service.js +0 -44
  220. package/esm2015/lib/services/fixture-pool.service.js +0 -34
  221. package/esm2015/lib/services/fixture.service.js +0 -443
  222. package/esm2015/lib/services/hotkey-target-exclude.service.js +0 -26
  223. package/esm2015/lib/services/intro.service.js +0 -144
  224. package/esm2015/lib/services/preset.service.js +0 -416
  225. package/esm2015/lib/services/preview-mesh.service.js +0 -58
  226. package/esm2015/lib/services/preview.service.js +0 -500
  227. package/esm2015/lib/services/project-load.service.js +0 -171
  228. package/esm2015/lib/services/project.service.js +0 -113
  229. package/esm2015/lib/services/scene.service.js +0 -174
  230. package/esm2015/lib/services/timeline.service.js +0 -738
  231. package/esm2015/lib/services/universe.service.js +0 -24
  232. package/esm2015/lib/services/user-ensure-login.service.js +0 -44
  233. package/esm2015/lib/services/user.service.js +0 -93
  234. package/esm2015/lib/services/uuid.service.js +0 -25
  235. package/esm2015/lib/services/warning-dialog.service.js +0 -43
  236. package/esm2015/lib/timeline/composition-settings/composition-settings.component.js +0 -197
  237. package/esm2015/lib/timeline/timeline-grid/timeline-grid.component.js +0 -55
  238. package/esm2015/lib/timeline/timeline.component.js +0 -239
  239. package/esm2015/lib/user/user-login/user-login.component.js +0 -64
  240. package/esm2015/lib/user/user-register/user-register.component.js +0 -89
  241. package/esm2015/lib/wait-dialog/wait-dialog.component.js +0 -16
  242. package/esm2015/lib/warning-dialog/warning-dialog.component.js +0 -42
  243. package/esm2015/public_api.js +0 -7
  244. package/esm2015/rocketshow-designer.js +0 -61
  245. package/esm5/lib/array-sort-pipe.js +0 -31
  246. package/esm5/lib/designer.component.js +0 -468
  247. package/esm5/lib/designer.module.js +0 -120
  248. package/esm5/lib/designer.service.js +0 -17
  249. package/esm5/lib/effect/effect-curve/effect-curve.component.js +0 -386
  250. package/esm5/lib/effect/effect-pan-tilt/effect-pan-tilt.component.js +0 -31
  251. package/esm5/lib/effect/effect.component.js +0 -75
  252. package/esm5/lib/error-dialog/error-dialog.component.js +0 -43
  253. package/esm5/lib/fixture/fixture-capability/fixture-capability-channel/fixture-capability-channel.component.js +0 -159
  254. package/esm5/lib/fixture/fixture-capability/fixture-capability-color/fixture-capability-color.component.js +0 -130
  255. package/esm5/lib/fixture/fixture-capability/fixture-capability-color-wheel/fixture-capability-color-wheel.component.js +0 -215
  256. package/esm5/lib/fixture/fixture-capability/fixture-capability-dimmer/fixture-capability-dimmer.component.js +0 -61
  257. package/esm5/lib/fixture/fixture-capability/fixture-capability-pan-tilt/fixture-capability-pan-tilt.component.js +0 -88
  258. package/esm5/lib/fixture/fixture-capability/fixture-capability.component.js +0 -130
  259. package/esm5/lib/fixture/fixture-channel/fixture-channel.component.js +0 -68
  260. package/esm5/lib/fixture/fixture-settings/fixture-settings-position/fixture-settings-position.component.js +0 -306
  261. package/esm5/lib/fixture/fixture-settings/fixture-settings-stage/fixture-settings-stage.component.js +0 -32
  262. package/esm5/lib/fixture/fixture-settings/fixture-settings.component.js +0 -36
  263. package/esm5/lib/fixture/fixture.component.js +0 -71
  264. package/esm5/lib/fixture-pool/fixture-pool-create-from-file/fixture-pool-create-from-file.component.js +0 -127
  265. package/esm5/lib/fixture-pool/fixture-pool.component.js +0 -430
  266. package/esm5/lib/intro/intro.component.js +0 -26
  267. package/esm5/lib/master-dimmer/master-dimmer.component.js +0 -42
  268. package/esm5/lib/models/cached-fixture-capability.js +0 -11
  269. package/esm5/lib/models/cached-fixture-channel.js +0 -9
  270. package/esm5/lib/models/cached-fixture.js +0 -8
  271. package/esm5/lib/models/color.js +0 -10
  272. package/esm5/lib/models/composition.js +0 -60
  273. package/esm5/lib/models/effect-curve-profile-channel.js +0 -29
  274. package/esm5/lib/models/effect-curve.js +0 -95
  275. package/esm5/lib/models/effect-pan-tilt.js +0 -24
  276. package/esm5/lib/models/effect.js +0 -14
  277. package/esm5/lib/models/fixture-capability-value.js +0 -17
  278. package/esm5/lib/models/fixture-capability.js +0 -86
  279. package/esm5/lib/models/fixture-channel-value.js +0 -13
  280. package/esm5/lib/models/fixture-channel.js +0 -38
  281. package/esm5/lib/models/fixture-mode.js +0 -16
  282. package/esm5/lib/models/fixture-profile.js +0 -114
  283. package/esm5/lib/models/fixture-wheel-slot.js +0 -28
  284. package/esm5/lib/models/fixture-wheel.js +0 -29
  285. package/esm5/lib/models/fixture.js +0 -42
  286. package/esm5/lib/models/preset-region-scene.js +0 -10
  287. package/esm5/lib/models/preset.js +0 -90
  288. package/esm5/lib/models/project.js +0 -122
  289. package/esm5/lib/models/scene-playback-region.js +0 -13
  290. package/esm5/lib/models/scene.js +0 -29
  291. package/esm5/lib/models/universe.js +0 -13
  292. package/esm5/lib/preset/preset-settings/preset-settings.component.js +0 -67
  293. package/esm5/lib/preset/preset.component.js +0 -86
  294. package/esm5/lib/preview/models/color-changer-3d.js +0 -194
  295. package/esm5/lib/preview/models/fixture-3d.js +0 -196
  296. package/esm5/lib/preview/models/moving-head-3d.js +0 -250
  297. package/esm5/lib/preview/preview.component.js +0 -280
  298. package/esm5/lib/project/project-browser/project-browser.component.js +0 -77
  299. package/esm5/lib/project/project-import/project-import.component.js +0 -88
  300. package/esm5/lib/project/project-save/project-save.component.js +0 -120
  301. package/esm5/lib/project/project-share/project-share.component.js +0 -44
  302. package/esm5/lib/scene/scene-settings/scene-settings.component.js +0 -53
  303. package/esm5/lib/scene/scene.component.js +0 -57
  304. package/esm5/lib/services/animation.service.js +0 -18
  305. package/esm5/lib/services/config.service.js +0 -29
  306. package/esm5/lib/services/effect.service.js +0 -17
  307. package/esm5/lib/services/error-dialog.service.js +0 -46
  308. package/esm5/lib/services/fixture-pool.service.js +0 -36
  309. package/esm5/lib/services/fixture.service.js +0 -643
  310. package/esm5/lib/services/hotkey-target-exclude.service.js +0 -27
  311. package/esm5/lib/services/intro.service.js +0 -145
  312. package/esm5/lib/services/preset.service.js +0 -637
  313. package/esm5/lib/services/preview-mesh.service.js +0 -61
  314. package/esm5/lib/services/preview.service.js +0 -754
  315. package/esm5/lib/services/project-load.service.js +0 -185
  316. package/esm5/lib/services/project.service.js +0 -127
  317. package/esm5/lib/services/scene.service.js +0 -251
  318. package/esm5/lib/services/timeline.service.js +0 -845
  319. package/esm5/lib/services/universe.service.js +0 -36
  320. package/esm5/lib/services/user-ensure-login.service.js +0 -45
  321. package/esm5/lib/services/user.service.js +0 -95
  322. package/esm5/lib/services/uuid.service.js +0 -26
  323. package/esm5/lib/services/warning-dialog.service.js +0 -45
  324. package/esm5/lib/timeline/composition-settings/composition-settings.component.js +0 -206
  325. package/esm5/lib/timeline/timeline-grid/timeline-grid.component.js +0 -56
  326. package/esm5/lib/timeline/timeline.component.js +0 -243
  327. package/esm5/lib/user/user-login/user-login.component.js +0 -66
  328. package/esm5/lib/user/user-register/user-register.component.js +0 -91
  329. package/esm5/lib/wait-dialog/wait-dialog.component.js +0 -18
  330. package/esm5/lib/warning-dialog/warning-dialog.component.js +0 -43
  331. package/esm5/public_api.js +0 -7
  332. package/esm5/rocketshow-designer.js +0 -61
  333. package/fesm2015/rocketshow-designer.js +0 -7945
  334. package/fesm2015/rocketshow-designer.js.map +0 -1
  335. package/fesm5/rocketshow-designer.js +0 -9690
  336. package/fesm5/rocketshow-designer.js.map +0 -1
  337. package/rocketshow-designer-1.31.0.tgz +0 -0
  338. package/rocketshow-designer.d.ts +0 -60
  339. package/rocketshow-designer.metadata.json +0 -1
@@ -0,0 +1,365 @@
1
+ import { Component } from '@angular/core';
2
+ import { Positioning } from '../../../models/fixture';
3
+ import { FixtureService } from '../../../services/fixture.service';
4
+ import { PresetService } from '../../../services/preset.service';
5
+ import * as i0 from "@angular/core";
6
+ import * as i1 from "../../../services/fixture.service";
7
+ import * as i2 from "../../../services/preset.service";
8
+ import * as i3 from "@angular/common";
9
+ import * as i4 from "@angular/forms";
10
+ import * as i5 from "ngx-bootstrap-slider";
11
+ import * as i6 from "@ngx-translate/core";
12
+ function FixtureSettingsPositionComponent_div_4_div_19_Template(rf, ctx) { if (rf & 1) {
13
+ const _r3 = i0.ɵɵgetCurrentView();
14
+ i0.ɵɵelementStart(0, "div")(1, "div");
15
+ i0.ɵɵtext(2);
16
+ i0.ɵɵpipe(3, "translate");
17
+ i0.ɵɵelementEnd();
18
+ i0.ɵɵelementStart(4, "div", 13)(5, "div", 14);
19
+ i0.ɵɵtext(6, "X");
20
+ i0.ɵɵelementEnd();
21
+ i0.ɵɵelementStart(7, "div", 15)(8, "mv-slider", 16);
22
+ i0.ɵɵlistener("change", function FixtureSettingsPositionComponent_div_4_div_19_Template_mv_slider_change_8_listener($event) { i0.ɵɵrestoreView(_r3); const ctx_r1 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r1.changePositionManual("x", $event.newValue)); });
23
+ i0.ɵɵelementEnd()();
24
+ i0.ɵɵelementStart(9, "div", 17)(10, "input", 18);
25
+ i0.ɵɵlistener("ngModelChange", function FixtureSettingsPositionComponent_div_4_div_19_Template_input_ngModelChange_10_listener($event) { i0.ɵɵrestoreView(_r3); const ctx_r1 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r1.changePositionManual("x", $event)); });
26
+ i0.ɵɵelementEnd()()();
27
+ i0.ɵɵelementStart(11, "div", 13)(12, "div", 14);
28
+ i0.ɵɵtext(13, "Y");
29
+ i0.ɵɵelementEnd();
30
+ i0.ɵɵelementStart(14, "div", 15)(15, "mv-slider", 19);
31
+ i0.ɵɵlistener("change", function FixtureSettingsPositionComponent_div_4_div_19_Template_mv_slider_change_15_listener($event) { i0.ɵɵrestoreView(_r3); const ctx_r1 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r1.changePositionManual("z", $event.newValue)); });
32
+ i0.ɵɵelementEnd()();
33
+ i0.ɵɵelementStart(16, "div", 17)(17, "input", 18);
34
+ i0.ɵɵlistener("ngModelChange", function FixtureSettingsPositionComponent_div_4_div_19_Template_input_ngModelChange_17_listener($event) { i0.ɵɵrestoreView(_r3); const ctx_r1 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r1.changePositionManual("z", $event)); });
35
+ i0.ɵɵelementEnd()()();
36
+ i0.ɵɵelementStart(18, "div", 13)(19, "div", 14);
37
+ i0.ɵɵtext(20, "Z");
38
+ i0.ɵɵelementEnd();
39
+ i0.ɵɵelementStart(21, "div", 15)(22, "mv-slider", 16);
40
+ i0.ɵɵlistener("change", function FixtureSettingsPositionComponent_div_4_div_19_Template_mv_slider_change_22_listener($event) { i0.ɵɵrestoreView(_r3); const ctx_r1 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r1.changePositionManual("y", $event.newValue)); });
41
+ i0.ɵɵelementEnd()();
42
+ i0.ɵɵelementStart(23, "div", 17)(24, "input", 18);
43
+ i0.ɵɵlistener("ngModelChange", function FixtureSettingsPositionComponent_div_4_div_19_Template_input_ngModelChange_24_listener($event) { i0.ɵɵrestoreView(_r3); const ctx_r1 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r1.changePositionManual("y", $event)); });
44
+ i0.ɵɵelementEnd()()();
45
+ i0.ɵɵelementStart(25, "div", 20);
46
+ i0.ɵɵtext(26);
47
+ i0.ɵɵpipe(27, "translate");
48
+ i0.ɵɵelementEnd();
49
+ i0.ɵɵelementStart(28, "div", 13)(29, "div", 14);
50
+ i0.ɵɵtext(30, "X");
51
+ i0.ɵɵelementEnd();
52
+ i0.ɵɵelementStart(31, "div", 15)(32, "mv-slider", 16);
53
+ i0.ɵɵlistener("change", function FixtureSettingsPositionComponent_div_4_div_19_Template_mv_slider_change_32_listener($event) { i0.ɵɵrestoreView(_r3); const ctx_r1 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r1.changeRotationManual("x", $event.newValue)); });
54
+ i0.ɵɵelementEnd()();
55
+ i0.ɵɵelementStart(33, "div", 17)(34, "input", 18);
56
+ i0.ɵɵlistener("ngModelChange", function FixtureSettingsPositionComponent_div_4_div_19_Template_input_ngModelChange_34_listener($event) { i0.ɵɵrestoreView(_r3); const ctx_r1 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r1.changeRotationManual("x", $event)); });
57
+ i0.ɵɵelementEnd()()();
58
+ i0.ɵɵelementStart(35, "div", 13)(36, "div", 14);
59
+ i0.ɵɵtext(37, "Y");
60
+ i0.ɵɵelementEnd();
61
+ i0.ɵɵelementStart(38, "div", 15)(39, "mv-slider", 19);
62
+ i0.ɵɵlistener("change", function FixtureSettingsPositionComponent_div_4_div_19_Template_mv_slider_change_39_listener($event) { i0.ɵɵrestoreView(_r3); const ctx_r1 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r1.changeRotationManual("z", $event.newValue)); });
63
+ i0.ɵɵelementEnd()();
64
+ i0.ɵɵelementStart(40, "div", 17)(41, "input", 18);
65
+ i0.ɵɵlistener("ngModelChange", function FixtureSettingsPositionComponent_div_4_div_19_Template_input_ngModelChange_41_listener($event) { i0.ɵɵrestoreView(_r3); const ctx_r1 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r1.changeRotationManual("z", $event)); });
66
+ i0.ɵɵelementEnd()()();
67
+ i0.ɵɵelementStart(42, "div", 13)(43, "div", 14);
68
+ i0.ɵɵtext(44, "Z");
69
+ i0.ɵɵelementEnd();
70
+ i0.ɵɵelementStart(45, "div", 15)(46, "mv-slider", 16);
71
+ i0.ɵɵlistener("change", function FixtureSettingsPositionComponent_div_4_div_19_Template_mv_slider_change_46_listener($event) { i0.ɵɵrestoreView(_r3); const ctx_r1 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r1.changeRotationManual("y", $event.newValue)); });
72
+ i0.ɵɵelementEnd()();
73
+ i0.ɵɵelementStart(47, "div", 17)(48, "input", 18);
74
+ i0.ɵɵlistener("ngModelChange", function FixtureSettingsPositionComponent_div_4_div_19_Template_input_ngModelChange_48_listener($event) { i0.ɵɵrestoreView(_r3); const ctx_r1 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r1.changeRotationManual("y", $event)); });
75
+ i0.ɵɵelementEnd()()()();
76
+ } if (rf & 2) {
77
+ const ctx_r1 = i0.ɵɵnextContext(2);
78
+ i0.ɵɵadvance(2);
79
+ i0.ɵɵtextInterpolate(i0.ɵɵpipeBind1(3, 38, "designer.fixture.setting-position"));
80
+ i0.ɵɵadvance(6);
81
+ i0.ɵɵproperty("tooltip", "hide")("value", ctx_r1.positionX ? ctx_r1.positionX : (ctx_r1.positionXMax + ctx_r1.positionXMin) / 2)("min", ctx_r1.positionXMin)("max", ctx_r1.positionXMax)("step", 1);
82
+ i0.ɵɵadvance(2);
83
+ i0.ɵɵproperty("ngModel", ctx_r1.positionX);
84
+ i0.ɵɵadvance(5);
85
+ i0.ɵɵproperty("tooltip", "hide")("value", ctx_r1.positionZ ? ctx_r1.positionZ : (ctx_r1.positionZMax + ctx_r1.positionZMin) / 2)("min", ctx_r1.positionZMin)("max", ctx_r1.positionZMax)("step", 1);
86
+ i0.ɵɵadvance(2);
87
+ i0.ɵɵproperty("ngModel", ctx_r1.positionZ);
88
+ i0.ɵɵadvance(5);
89
+ i0.ɵɵproperty("tooltip", "hide")("value", ctx_r1.positionY ? ctx_r1.positionY : (ctx_r1.positionYMax + ctx_r1.positionYMin) / 2)("min", ctx_r1.positionYMin)("max", ctx_r1.positionYMax)("step", 1);
90
+ i0.ɵɵadvance(2);
91
+ i0.ɵɵproperty("ngModel", ctx_r1.positionY);
92
+ i0.ɵɵadvance(2);
93
+ i0.ɵɵtextInterpolate(i0.ɵɵpipeBind1(27, 40, "designer.fixture.setting-rotation"));
94
+ i0.ɵɵadvance(6);
95
+ i0.ɵɵproperty("tooltip", "hide")("value", ctx_r1.rotationX ? ctx_r1.rotationX : (ctx_r1.rotationMin + ctx_r1.rotationMax) / 2)("min", ctx_r1.rotationMin)("max", ctx_r1.rotationMax)("step", 1);
96
+ i0.ɵɵadvance(2);
97
+ i0.ɵɵproperty("ngModel", ctx_r1.rotationX);
98
+ i0.ɵɵadvance(5);
99
+ i0.ɵɵproperty("tooltip", "hide")("value", ctx_r1.rotationZ ? ctx_r1.rotationZ : (ctx_r1.rotationMin + ctx_r1.rotationMax) / 2)("min", ctx_r1.rotationMin)("max", ctx_r1.rotationMax)("step", 1);
100
+ i0.ɵɵadvance(2);
101
+ i0.ɵɵproperty("ngModel", ctx_r1.rotationZ);
102
+ i0.ɵɵadvance(5);
103
+ i0.ɵɵproperty("tooltip", "hide")("value", ctx_r1.rotationY ? ctx_r1.rotationY : (ctx_r1.rotationMin + ctx_r1.rotationMax) / 2)("min", ctx_r1.rotationMin)("max", ctx_r1.rotationMax)("step", 1);
104
+ i0.ɵɵadvance(2);
105
+ i0.ɵɵproperty("ngModel", ctx_r1.rotationY);
106
+ } }
107
+ function FixtureSettingsPositionComponent_div_4_Template(rf, ctx) { if (rf & 1) {
108
+ const _r1 = i0.ɵɵgetCurrentView();
109
+ i0.ɵɵelementStart(0, "div", 4)(1, "div")(2, "select", 5);
110
+ i0.ɵɵtwoWayListener("ngModelChange", function FixtureSettingsPositionComponent_div_4_Template_select_ngModelChange_2_listener($event) { i0.ɵɵrestoreView(_r1); const ctx_r1 = i0.ɵɵnextContext(); i0.ɵɵtwoWayBindingSet(ctx_r1.selectedPositioning, $event) || (ctx_r1.selectedPositioning = $event); return i0.ɵɵresetView($event); });
111
+ i0.ɵɵlistener("change", function FixtureSettingsPositionComponent_div_4_Template_select_change_2_listener($event) { i0.ɵɵrestoreView(_r1); const ctx_r1 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r1.changePosition($event.target.value)); });
112
+ i0.ɵɵelement(3, "option", 6);
113
+ i0.ɵɵelementStart(4, "option", 7);
114
+ i0.ɵɵtext(5);
115
+ i0.ɵɵpipe(6, "translate");
116
+ i0.ɵɵelementEnd();
117
+ i0.ɵɵelementStart(7, "option", 8);
118
+ i0.ɵɵtext(8);
119
+ i0.ɵɵpipe(9, "translate");
120
+ i0.ɵɵelementEnd();
121
+ i0.ɵɵelementStart(10, "option", 9);
122
+ i0.ɵɵtext(11);
123
+ i0.ɵɵpipe(12, "translate");
124
+ i0.ɵɵelementEnd();
125
+ i0.ɵɵelementStart(13, "option", 10);
126
+ i0.ɵɵtext(14);
127
+ i0.ɵɵpipe(15, "translate");
128
+ i0.ɵɵelementEnd();
129
+ i0.ɵɵelementStart(16, "option", 11);
130
+ i0.ɵɵtext(17);
131
+ i0.ɵɵpipe(18, "translate");
132
+ i0.ɵɵelementEnd()()();
133
+ i0.ɵɵtemplate(19, FixtureSettingsPositionComponent_div_4_div_19_Template, 49, 42, "div", 12);
134
+ i0.ɵɵelementEnd();
135
+ } if (rf & 2) {
136
+ const ctx_r1 = i0.ɵɵnextContext();
137
+ i0.ɵɵadvance(2);
138
+ i0.ɵɵtwoWayProperty("ngModel", ctx_r1.selectedPositioning);
139
+ i0.ɵɵadvance();
140
+ i0.ɵɵproperty("ngValue", ctx_r1.selectUndefinedOptionValue);
141
+ i0.ɵɵadvance(2);
142
+ i0.ɵɵtextInterpolate(i0.ɵɵpipeBind1(6, 8, "designer.fixture.setting-position-front-top"));
143
+ i0.ɵɵadvance(3);
144
+ i0.ɵɵtextInterpolate(i0.ɵɵpipeBind1(9, 10, "designer.fixture.setting-position-front-bottom"));
145
+ i0.ɵɵadvance(3);
146
+ i0.ɵɵtextInterpolate(i0.ɵɵpipeBind1(12, 12, "designer.fixture.setting-position-back-top"));
147
+ i0.ɵɵadvance(3);
148
+ i0.ɵɵtextInterpolate(i0.ɵɵpipeBind1(15, 14, "designer.fixture.setting-position-back-bottom"));
149
+ i0.ɵɵadvance(3);
150
+ i0.ɵɵtextInterpolate(i0.ɵɵpipeBind1(18, 16, "designer.fixture.setting-position-manual"));
151
+ i0.ɵɵadvance(2);
152
+ i0.ɵɵproperty("ngIf", ctx_r1.selectedPositioning == "manual");
153
+ } }
154
+ function FixtureSettingsPositionComponent_div_5_Template(rf, ctx) { if (rf & 1) {
155
+ i0.ɵɵelementStart(0, "div", 21)(1, "p", 22);
156
+ i0.ɵɵtext(2);
157
+ i0.ɵɵpipe(3, "translate");
158
+ i0.ɵɵelementEnd()();
159
+ } if (rf & 2) {
160
+ i0.ɵɵadvance(2);
161
+ i0.ɵɵtextInterpolate(i0.ɵɵpipeBind1(3, 1, "designer.fixture.no-fixtures-settings-selected"));
162
+ } }
163
+ export class FixtureSettingsPositionComponent {
164
+ constructor(fixtureService, presetService) {
165
+ this.fixtureService = fixtureService;
166
+ this.presetService = presetService;
167
+ this.selectUndefinedOptionValue = undefined;
168
+ this.selectedPositioning = undefined;
169
+ this.positionX = 0;
170
+ this.positionY = 0;
171
+ this.positionZ = 0;
172
+ this.positionXMin = -400;
173
+ this.positionXMax = 400;
174
+ this.positionYMin = 0;
175
+ this.positionYMax = 400;
176
+ this.positionZMin = -400;
177
+ this.positionZMax = 400;
178
+ this.rotationX = 0;
179
+ this.rotationY = 0;
180
+ this.rotationZ = 0;
181
+ this.rotationMin = 0;
182
+ this.rotationMax = 360;
183
+ presetService.fixtureSelectionSettingsChanged.subscribe(() => {
184
+ this.updateSelection();
185
+ });
186
+ }
187
+ ngOnInit() { }
188
+ updateSelection() {
189
+ // get all display values for the selected settings fixtures
190
+ this.selectedPositioning = undefined;
191
+ this.positionX = undefined;
192
+ this.positionY = undefined;
193
+ this.positionZ = undefined;
194
+ this.rotationX = undefined;
195
+ this.rotationY = undefined;
196
+ this.rotationZ = undefined;
197
+ for (const fixture of this.fixtureService.selectedSettingsFixtures) {
198
+ if (this.selectedPositioning) {
199
+ if (this.selectedPositioning !== fixture.positioning) {
200
+ this.selectedPositioning = undefined;
201
+ break;
202
+ }
203
+ }
204
+ else {
205
+ this.selectedPositioning = fixture.positioning;
206
+ }
207
+ }
208
+ for (const fixture of this.fixtureService.selectedSettingsFixtures) {
209
+ if (this.positionX) {
210
+ if (this.positionX !== fixture.positionX) {
211
+ this.positionX = undefined;
212
+ break;
213
+ }
214
+ }
215
+ else {
216
+ this.positionX = fixture.positionX;
217
+ }
218
+ }
219
+ for (const fixture of this.fixtureService.selectedSettingsFixtures) {
220
+ if (this.positionY) {
221
+ if (this.positionY !== fixture.positionY) {
222
+ this.positionY = undefined;
223
+ break;
224
+ }
225
+ }
226
+ else {
227
+ this.positionY = fixture.positionY;
228
+ }
229
+ }
230
+ for (const fixture of this.fixtureService.selectedSettingsFixtures) {
231
+ if (this.positionZ) {
232
+ if (this.positionZ !== fixture.positionZ) {
233
+ this.positionZ = undefined;
234
+ break;
235
+ }
236
+ }
237
+ else {
238
+ this.positionZ = fixture.positionZ;
239
+ }
240
+ }
241
+ for (const fixture of this.fixtureService.selectedSettingsFixtures) {
242
+ if (this.rotationX) {
243
+ if (this.rotationX !== fixture.rotationX) {
244
+ this.rotationX = undefined;
245
+ break;
246
+ }
247
+ }
248
+ else {
249
+ this.rotationX = fixture.rotationX;
250
+ }
251
+ }
252
+ for (const fixture of this.fixtureService.selectedSettingsFixtures) {
253
+ if (this.rotationY) {
254
+ if (this.rotationY !== fixture.rotationY) {
255
+ this.rotationY = undefined;
256
+ break;
257
+ }
258
+ }
259
+ else {
260
+ this.rotationY = fixture.rotationY;
261
+ }
262
+ }
263
+ for (const fixture of this.fixtureService.selectedSettingsFixtures) {
264
+ if (this.rotationZ) {
265
+ if (this.rotationZ !== fixture.rotationZ) {
266
+ this.rotationZ = undefined;
267
+ break;
268
+ }
269
+ }
270
+ else {
271
+ this.rotationZ = fixture.rotationZ;
272
+ }
273
+ }
274
+ }
275
+ changePosition(positioningStr) {
276
+ const positioning = Positioning[positioningStr];
277
+ for (const fixture of this.fixtureService.selectedSettingsFixtures) {
278
+ fixture.positioning = positioning;
279
+ }
280
+ }
281
+ changePositionManual(position, value) {
282
+ if (isNaN(value)) {
283
+ return;
284
+ }
285
+ if (position === 'x') {
286
+ if (value >= this.positionXMin && value <= this.positionXMax) {
287
+ this.positionX = +value;
288
+ }
289
+ }
290
+ else if (position === 'y') {
291
+ if (value >= this.positionYMin && value <= this.positionYMax) {
292
+ this.positionY = +value;
293
+ }
294
+ }
295
+ else if (position === 'z') {
296
+ if (value >= this.positionZMin && value <= this.positionZMax) {
297
+ this.positionZ = +value;
298
+ }
299
+ }
300
+ for (const fixture of this.fixtureService.selectedSettingsFixtures) {
301
+ if (position === 'x') {
302
+ if (value >= this.positionXMin && value <= this.positionXMax) {
303
+ fixture.positionX = +value;
304
+ }
305
+ }
306
+ else if (position === 'y') {
307
+ if (value >= this.positionYMin && value <= this.positionYMax) {
308
+ fixture.positionY = +value;
309
+ }
310
+ }
311
+ else if (position === 'z') {
312
+ if (value >= this.positionZMin && value <= this.positionZMax) {
313
+ fixture.positionZ = +value;
314
+ }
315
+ }
316
+ }
317
+ }
318
+ changeRotationManual(rotation, value) {
319
+ if (isNaN(value) || value < this.rotationMin || value > this.rotationMax) {
320
+ return;
321
+ }
322
+ if (rotation === 'x') {
323
+ this.rotationX = +value;
324
+ }
325
+ else if (rotation === 'y') {
326
+ this.rotationY = +value;
327
+ }
328
+ else if (rotation === 'z') {
329
+ this.rotationZ = +value;
330
+ }
331
+ for (const fixture of this.fixtureService.selectedSettingsFixtures) {
332
+ if (rotation === 'x') {
333
+ fixture.rotationX = +value;
334
+ }
335
+ else if (rotation === 'y') {
336
+ fixture.rotationY = +value;
337
+ }
338
+ else if (rotation === 'z') {
339
+ fixture.rotationZ = +value;
340
+ }
341
+ }
342
+ }
343
+ static { this.ɵfac = function FixtureSettingsPositionComponent_Factory(t) { return new (t || FixtureSettingsPositionComponent)(i0.ɵɵdirectiveInject(i1.FixtureService), i0.ɵɵdirectiveInject(i2.PresetService)); }; }
344
+ static { this.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: FixtureSettingsPositionComponent, selectors: [["lib-app-fixture-settings-position"]], decls: 6, vars: 5, consts: [[1, "card", "border-secondary", "h-100"], [1, "card-header"], ["class", "card-body h-100", 4, "ngIf"], ["class", "card-body h-100 d-flex", 4, "ngIf"], [1, "card-body", "h-100"], [1, "mb-2", 2, "width", "140px", 3, "ngModelChange", "change", "ngModel"], [3, "ngValue"], ["value", "topFront"], ["value", "bottomFront"], ["value", "topBack"], ["value", "bottomBack"], ["value", "manual"], [4, "ngIf"], [1, "d-flex"], [1, "my-auto", 2, "width", "20px", "float", "left"], [1, "my-auto", 2, "float", "left"], [2, "width", "80px", 3, "change", "tooltip", "value", "min", "max", "step"], [1, "my-auto"], ["type", "text", 1, "slider-input", 3, "ngModelChange", "ngModel"], [2, "width", "80px", "height", "18px", 3, "change", "tooltip", "value", "min", "max", "step"], [1, "mt-2"], [1, "card-body", "h-100", "d-flex"], [1, "m-auto", 2, "color", "#717171"]], template: function FixtureSettingsPositionComponent_Template(rf, ctx) { if (rf & 1) {
345
+ i0.ɵɵelementStart(0, "div", 0)(1, "div", 1);
346
+ i0.ɵɵtext(2);
347
+ i0.ɵɵpipe(3, "translate");
348
+ i0.ɵɵelementEnd();
349
+ i0.ɵɵtemplate(4, FixtureSettingsPositionComponent_div_4_Template, 20, 18, "div", 2)(5, FixtureSettingsPositionComponent_div_5_Template, 4, 3, "div", 3);
350
+ i0.ɵɵelementEnd();
351
+ } if (rf & 2) {
352
+ i0.ɵɵadvance(2);
353
+ i0.ɵɵtextInterpolate1(" ", i0.ɵɵpipeBind1(3, 3, "designer.fixture.setting-position-title"), " ");
354
+ i0.ɵɵadvance(2);
355
+ i0.ɵɵproperty("ngIf", ctx.fixtureService.selectedSettingsFixtures.length > 0);
356
+ i0.ɵɵadvance();
357
+ i0.ɵɵproperty("ngIf", ctx.fixtureService.selectedSettingsFixtures.length == 0);
358
+ } }, dependencies: [i3.NgIf, i4.NgSelectOption, i4.ɵNgSelectMultipleOption, i4.DefaultValueAccessor, i4.SelectControlValueAccessor, i4.NgControlStatus, i4.NgModel, i5.SliderComponent, i6.TranslatePipe] }); }
359
+ }
360
+ (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(FixtureSettingsPositionComponent, [{
361
+ type: Component,
362
+ args: [{ selector: 'lib-app-fixture-settings-position', template: "<div class=\"card border-secondary h-100\">\n <div class=\"card-header\">\n {{ 'designer.fixture.setting-position-title' | translate }}\n </div>\n\n <div *ngIf=\"fixtureService.selectedSettingsFixtures.length > 0\" class=\"card-body h-100\">\n <div>\n <select class=\"mb-2\" style=\"width: 140px\" [(ngModel)]=\"selectedPositioning\" (change)=\"changePosition($event.target.value)\">\n <option [ngValue]=\"selectUndefinedOptionValue\"></option>\n <option value=\"topFront\">{{ 'designer.fixture.setting-position-front-top' | translate }}</option>\n <option value=\"bottomFront\">{{ 'designer.fixture.setting-position-front-bottom' | translate }}</option>\n <option value=\"topBack\">{{ 'designer.fixture.setting-position-back-top' | translate }}</option>\n <option value=\"bottomBack\">{{ 'designer.fixture.setting-position-back-bottom' | translate }}</option>\n <option value=\"manual\">{{ 'designer.fixture.setting-position-manual' | translate }}</option>\n </select>\n </div>\n\n <div *ngIf=\"selectedPositioning == 'manual'\">\n <div>{{ 'designer.fixture.setting-position' | translate }}</div>\n <div class=\"d-flex\">\n <div class=\"my-auto\" style=\"width: 20px; float: left\">X</div>\n <div class=\"my-auto\" style=\"float: left\">\n <mv-slider\n style=\"width: 80px\"\n [tooltip]=\"'hide'\"\n [value]=\"positionX ? positionX : (positionXMax + positionXMin) / 2\"\n [min]=\"positionXMin\"\n [max]=\"positionXMax\"\n [step]=\"1\"\n (change)=\"changePositionManual('x', $event.newValue)\"\n ></mv-slider>\n </div>\n <div class=\"my-auto\">\n <input [ngModel]=\"positionX\" (ngModelChange)=\"changePositionManual('x', $event)\" type=\"text\" class=\"slider-input\" />\n </div>\n </div>\n <div class=\"d-flex\">\n <div class=\"my-auto\" style=\"width: 20px; float: left\">Y</div>\n <div class=\"my-auto\" style=\"float: left\">\n <mv-slider\n style=\"width: 80px; height: 18px\"\n [tooltip]=\"'hide'\"\n [value]=\"positionZ ? positionZ : (positionZMax + positionZMin) / 2\"\n [min]=\"positionZMin\"\n [max]=\"positionZMax\"\n [step]=\"1\"\n (change)=\"changePositionManual('z', $event.newValue)\"\n ></mv-slider>\n </div>\n <div class=\"my-auto\">\n <input [ngModel]=\"positionZ\" (ngModelChange)=\"changePositionManual('z', $event)\" type=\"text\" class=\"slider-input\" />\n </div>\n </div>\n <div class=\"d-flex\">\n <div class=\"my-auto\" style=\"width: 20px; float: left\">Z</div>\n <div class=\"my-auto\" style=\"float: left\">\n <mv-slider\n style=\"width: 80px\"\n [tooltip]=\"'hide'\"\n [value]=\"positionY ? positionY : (positionYMax + positionYMin) / 2\"\n [min]=\"positionYMin\"\n [max]=\"positionYMax\"\n [step]=\"1\"\n (change)=\"changePositionManual('y', $event.newValue)\"\n ></mv-slider>\n </div>\n <div class=\"my-auto\">\n <input [ngModel]=\"positionY\" (ngModelChange)=\"changePositionManual('y', $event)\" type=\"text\" class=\"slider-input\" />\n </div>\n </div>\n\n <div class=\"mt-2\">{{ 'designer.fixture.setting-rotation' | translate }}</div>\n <div class=\"d-flex\">\n <div class=\"my-auto\" style=\"width: 20px; float: left\">X</div>\n <div class=\"my-auto\" style=\"float: left\">\n <mv-slider\n style=\"width: 80px\"\n [tooltip]=\"'hide'\"\n [value]=\"rotationX ? rotationX : (rotationMin + rotationMax) / 2\"\n [min]=\"rotationMin\"\n [max]=\"rotationMax\"\n [step]=\"1\"\n (change)=\"changeRotationManual('x', $event.newValue)\"\n ></mv-slider>\n </div>\n <div class=\"my-auto\">\n <input [ngModel]=\"rotationX\" (ngModelChange)=\"changeRotationManual('x', $event)\" type=\"text\" class=\"slider-input\" />\n </div>\n </div>\n <div class=\"d-flex\">\n <div class=\"my-auto\" style=\"width: 20px; float: left\">Y</div>\n <div class=\"my-auto\" style=\"float: left\">\n <mv-slider\n style=\"width: 80px; height: 18px\"\n [tooltip]=\"'hide'\"\n [value]=\"rotationZ ? rotationZ : (rotationMin + rotationMax) / 2\"\n [min]=\"rotationMin\"\n [max]=\"rotationMax\"\n [step]=\"1\"\n (change)=\"changeRotationManual('z', $event.newValue)\"\n ></mv-slider>\n </div>\n <div class=\"my-auto\">\n <input [ngModel]=\"rotationZ\" (ngModelChange)=\"changeRotationManual('z', $event)\" type=\"text\" class=\"slider-input\" />\n </div>\n </div>\n <div class=\"d-flex\">\n <div class=\"my-auto\" style=\"width: 20px; float: left\">Z</div>\n <div class=\"my-auto\" style=\"float: left\">\n <mv-slider\n style=\"width: 80px\"\n [tooltip]=\"'hide'\"\n [value]=\"rotationY ? rotationY : (rotationMin + rotationMax) / 2\"\n [min]=\"rotationMin\"\n [max]=\"rotationMax\"\n [step]=\"1\"\n (change)=\"changeRotationManual('y', $event.newValue)\"\n ></mv-slider>\n </div>\n <div class=\"my-auto\">\n <input [ngModel]=\"rotationY\" (ngModelChange)=\"changeRotationManual('y', $event)\" type=\"text\" class=\"slider-input\" />\n </div>\n </div>\n </div>\n </div>\n\n <div *ngIf=\"fixtureService.selectedSettingsFixtures.length == 0\" class=\"card-body h-100 d-flex\">\n <p class=\"m-auto\" style=\"color: #717171\">{{ 'designer.fixture.no-fixtures-settings-selected' | translate }}</p>\n </div>\n</div>\n" }]
363
+ }], () => [{ type: i1.FixtureService }, { type: i2.PresetService }], null); })();
364
+ (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(FixtureSettingsPositionComponent, { className: "FixtureSettingsPositionComponent" }); })();
365
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZml4dHVyZS1zZXR0aW5ncy1wb3NpdGlvbi5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9kZXNpZ25lci9zcmMvbGliL2ZpeHR1cmUvZml4dHVyZS1zZXR0aW5ncy9maXh0dXJlLXNldHRpbmdzLXBvc2l0aW9uL2ZpeHR1cmUtc2V0dGluZ3MtcG9zaXRpb24uY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZGVzaWduZXIvc3JjL2xpYi9maXh0dXJlL2ZpeHR1cmUtc2V0dGluZ3MvZml4dHVyZS1zZXR0aW5ncy1wb3NpdGlvbi9maXh0dXJlLXNldHRpbmdzLXBvc2l0aW9uLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQVUsTUFBTSxlQUFlLENBQUM7QUFDbEQsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBQ3RELE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxtQ0FBbUMsQ0FBQztBQUNuRSxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sa0NBQWtDLENBQUM7Ozs7Ozs7Ozs7SUNlM0QsQUFERiwyQkFBNkMsVUFDdEM7SUFBQSxZQUFxRDs7SUFBQSxpQkFBTTtJQUU5RCxBQURGLCtCQUFvQixjQUNvQztJQUFBLGlCQUFDO0lBQUEsaUJBQU07SUFFM0QsQUFERiwrQkFBeUMsb0JBU3RDO0lBREMsK01BQVUsNEJBQXFCLEdBQUcsa0JBQWtCLEtBQUM7SUFFekQsQUFERyxpQkFBWSxFQUNUO0lBRUosQUFERiwrQkFBcUIsaUJBQ2lHO0lBQXZGLDBOQUFpQiw0QkFBcUIsR0FBRyxTQUFTLEtBQUM7SUFFcEYsQUFERSxBQURFLGlCQUFvSCxFQUNoSCxFQUNGO0lBRUosQUFERixnQ0FBb0IsZUFDb0M7SUFBQSxrQkFBQztJQUFBLGlCQUFNO0lBRTNELEFBREYsZ0NBQXlD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R0FBRyxDQUFDLEtBQUssQ0FBQztRQUMxQixDQUFDO1FBRUQsS0FBSyxNQUFNLE9BQU8sSUFBSSxJQUFJLENBQUMsY0FBYyxDQUFDLHdCQUF3QixFQUFFLENBQUM7WUFDbkUsSUFBSSxRQUFRLEtBQUssR0FBRyxFQUFFLENBQUM7Z0JBQ3JCLE9BQU8sQ0FBQyxTQUFTLEdBQUcsQ0FBQyxLQUFLLENBQUM7WUFDN0IsQ0FBQztpQkFBTSxJQUFJLFFBQVEsS0FBSyxHQUFHLEVBQUUsQ0FBQztnQkFDNUIsT0FBTyxDQUFDLFNBQVMsR0FBRyxDQUFDLEtBQUssQ0FBQztZQUM3QixDQUFDO2lCQUFNLElBQUksUUFBUSxLQUFLLEdBQUcsRUFBRSxDQUFDO2dCQUM1QixPQUFPLENBQUMsU0FBUyxHQUFHLENBQUMsS0FBSyxDQUFDO1lBQzdCLENBQUM7UUFDSCxDQUFDO0lBQ0gsQ0FBQztpR0FyTFUsZ0NBQWdDO29FQUFoQyxnQ0FBZ0M7WUNUM0MsQUFERiw4QkFBeUMsYUFDZDtZQUN2QixZQUNGOztZQUFBLGlCQUFNO1lBMkhOLEFBekhBLG1GQUF3RixvRUF5SFE7WUFHbEcsaUJBQU07O1lBL0hGLGVBQ0Y7WUFERSxnR0FDRjtZQUVNLGVBQXdEO1lBQXhELDZFQUF3RDtZQXlIeEQsY0FBeUQ7WUFBekQsOEVBQXlEOzs7aUZEcEhwRCxnQ0FBZ0M7Y0FMNUMsU0FBUzsyQkFDRSxtQ0FBbUM7O2tGQUlsQyxnQ0FBZ0MiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIE9uSW5pdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgUG9zaXRpb25pbmcgfSBmcm9tICcuLi8uLi8uLi9tb2RlbHMvZml4dHVyZSc7XG5pbXBvcnQgeyBGaXh0dXJlU2VydmljZSB9IGZyb20gJy4uLy4uLy4uL3NlcnZpY2VzL2ZpeHR1cmUuc2VydmljZSc7XG5pbXBvcnQgeyBQcmVzZXRTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vc2VydmljZXMvcHJlc2V0LnNlcnZpY2UnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdsaWItYXBwLWZpeHR1cmUtc2V0dGluZ3MtcG9zaXRpb24nLFxuICB0ZW1wbGF0ZVVybDogJy4vZml4dHVyZS1zZXR0aW5ncy1wb3NpdGlvbi5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL2ZpeHR1cmUtc2V0dGluZ3MtcG9zaXRpb24uY29tcG9uZW50LmNzcyddLFxufSlcbmV4cG9ydCBjbGFzcyBGaXh0dXJlU2V0dGluZ3NQb3NpdGlvbkNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XG4gIHNlbGVjdFVuZGVmaW5lZE9wdGlvblZhbHVlOiBhbnkgPSB1bmRlZmluZWQ7XG5cbiAgc2VsZWN0ZWRQb3NpdGlvbmluZzogc3RyaW5nID0gdW5kZWZpbmVkO1xuXG4gIHBvc2l0aW9uWCA9IDA7XG4gIHBvc2l0aW9uWSA9IDA7XG4gIHBvc2l0aW9uWiA9IDA7XG5cbiAgcG9zaXRpb25YTWluID0gLTQwMDtcbiAgcG9zaXRpb25YTWF4ID0gNDAwO1xuICBwb3NpdGlvbllNaW4gPSAwO1xuICBwb3NpdGlvbllNYXggPSA0MDA7XG4gIHBvc2l0aW9uWk1pbiA9IC00MDA7XG4gIHBvc2l0aW9uWk1heCA9IDQwMDtcblxuICByb3RhdGlvblggPSAwO1xuICByb3RhdGlvblkgPSAwO1xuICByb3RhdGlvblogPSAwO1xuXG4gIHJvdGF0aW9uTWluID0gMDtcbiAgcm90YXRpb25NYXggPSAzNjA7XG5cbiAgY29uc3RydWN0b3IocHVibGljIGZpeHR1cmVTZXJ2aWNlOiBGaXh0dXJlU2VydmljZSwgcHJpdmF0ZSBwcmVzZXRTZXJ2aWNlOiBQcmVzZXRTZXJ2aWNlKSB7XG4gICAgcHJlc2V0U2VydmljZS5maXh0dXJlU2VsZWN0aW9uU2V0dGluZ3NDaGFuZ2VkLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICB0aGlzLnVwZGF0ZVNlbGVjdGlvbigpO1xuICAgIH0pO1xuICB9XG5cbiAgbmdPbkluaXQoKSB7fVxuXG4gIHByaXZhdGUgdXBkYXRlU2VsZWN0aW9uKCkge1xuICAgIC8vIGdldCBhbGwgZGlzcGxheSB2YWx1ZXMgZm9yIHRoZSBzZWxlY3RlZCBzZXR0aW5ncyBmaXh0dXJlc1xuICAgIHRoaXMuc2VsZWN0ZWRQb3NpdGlvbmluZyA9IHVuZGVmaW5lZDtcblxuICAgIHRoaXMucG9zaXRpb25YID0gdW5kZWZpbmVkO1xuICAgIHRoaXMucG9zaXRpb25ZID0gdW5kZWZpbmVkO1xuICAgIHRoaXMucG9zaXRpb25aID0gdW5kZWZpbmVkO1xuXG4gICAgdGhpcy5yb3RhdGlvblggPSB1bmRlZmluZWQ7XG4gICAgdGhpcy5yb3RhdGlvblkgPSB1bmRlZmluZWQ7XG4gICAgdGhpcy5yb3RhdGlvblogPSB1bmRlZmluZWQ7XG5cbiAgICBmb3IgKGNvbnN0IGZpeHR1cmUgb2YgdGhpcy5maXh0dXJlU2VydmljZS5zZWxlY3RlZFNldHRpbmdzRml4dHVyZXMpIHtcbiAgICAgIGlmICh0aGlzLnNlbGVjdGVkUG9zaXRpb25pbmcpIHtcbiAgICAgICAgaWYgKHRoaXMuc2VsZWN0ZWRQb3NpdGlvbmluZyAhPT0gZml4dHVyZS5wb3NpdGlvbmluZykge1xuICAgICAgICAgIHRoaXMuc2VsZWN0ZWRQb3NpdGlvbmluZyA9IHVuZGVmaW5lZDtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy5zZWxlY3RlZFBvc2l0aW9uaW5nID0gZml4dHVyZS5wb3NpdGlvbmluZztcbiAgICAgIH1cbiAgICB9XG4gICAgZm9yIChjb25zdCBmaXh0dXJlIG9mIHRoaXMuZml4dHVyZVNlcnZpY2Uuc2VsZWN0ZWRTZXR0aW5nc0ZpeHR1cmVzKSB7XG4gICAgICBpZiAodGhpcy5wb3NpdGlvblgpIHtcbiAgICAgICAgaWYgKHRoaXMucG9zaXRpb25YICE9PSBmaXh0dXJlLnBvc2l0aW9uWCkge1xuICAgICAgICAgIHRoaXMucG9zaXRpb25YID0gdW5kZWZpbmVkO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzLnBvc2l0aW9uWCA9IGZpeHR1cmUucG9zaXRpb25YO1xuICAgICAgfVxuICAgIH1cbiAgICBmb3IgKGNvbnN0IGZpeHR1cmUgb2YgdGhpcy5maXh0dXJlU2VydmljZS5zZWxlY3RlZFNldHRpbmdzRml4dHVyZXMpIHtcbiAgICAgIGlmICh0aGlzLnBvc2l0aW9uWSkge1xuICAgICAgICBpZiAodGhpcy5wb3NpdGlvblkgIT09IGZpeHR1cmUucG9zaXRpb25ZKSB7XG4gICAgICAgICAgdGhpcy5wb3NpdGlvblkgPSB1bmRlZmluZWQ7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMucG9zaXRpb25ZID0gZml4dHVyZS5wb3NpdGlvblk7XG4gICAgICB9XG4gICAgfVxuICAgIGZvciAoY29uc3QgZml4dHVyZSBvZiB0aGlzLmZpeHR1cmVTZXJ2aWNlLnNlbGVjdGVkU2V0dGluZ3NGaXh0dXJlcykge1xuICAgICAgaWYgKHRoaXMucG9zaXRpb25aKSB7XG4gICAgICAgIGlmICh0aGlzLnBvc2l0aW9uWiAhPT0gZml4dHVyZS5wb3NpdGlvblopIHtcbiAgICAgICAgICB0aGlzLnBvc2l0aW9uWiA9IHVuZGVmaW5lZDtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy5wb3NpdGlvblogPSBmaXh0dXJlLnBvc2l0aW9uWjtcbiAgICAgIH1cbiAgICB9XG4gICAgZm9yIChjb25zdCBmaXh0dXJlIG9mIHRoaXMuZml4dHVyZVNlcnZpY2Uuc2VsZWN0ZWRTZXR0aW5nc0ZpeHR1cmVzKSB7XG4gICAgICBpZiAodGhpcy5yb3RhdGlvblgpIHtcbiAgICAgICAgaWYgKHRoaXMucm90YXRpb25YICE9PSBmaXh0dXJlLnJvdGF0aW9uWCkge1xuICAgICAgICAgIHRoaXMucm90YXRpb25YID0gdW5kZWZpbmVkO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzLnJvdGF0aW9uWCA9IGZpeHR1cmUucm90YXRpb25YO1xuICAgICAgfVxuICAgIH1cbiAgICBmb3IgKGNvbnN0IGZpeHR1cmUgb2YgdGhpcy5maXh0dXJlU2VydmljZS5zZWxlY3RlZFNldHRpbmdzRml4dHVyZXMpIHtcbiAgICAgIGlmICh0aGlzLnJvdGF0aW9uWSkge1xuICAgICAgICBpZiAodGhpcy5yb3RhdGlvblkgIT09IGZpeHR1cmUucm90YXRpb25ZKSB7XG4gICAgICAgICAgdGhpcy5yb3RhdGlvblkgPSB1bmRlZmluZWQ7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMucm90YXRpb25ZID0gZml4dHVyZS5yb3RhdGlvblk7XG4gICAgICB9XG4gICAgfVxuICAgIGZvciAoY29uc3QgZml4dHVyZSBvZiB0aGlzLmZpeHR1cmVTZXJ2aWNlLnNlbGVjdGVkU2V0dGluZ3NGaXh0dXJlcykge1xuICAgICAgaWYgKHRoaXMucm90YXRpb25aKSB7XG4gICAgICAgIGlmICh0aGlzLnJvdGF0aW9uWiAhPT0gZml4dHVyZS5yb3RhdGlvblopIHtcbiAgICAgICAgICB0aGlzLnJvdGF0aW9uWiA9IHVuZGVmaW5lZDtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy5yb3RhdGlvblogPSBmaXh0dXJlLnJvdGF0aW9uWjtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBjaGFuZ2VQb3NpdGlvbihwb3NpdGlvbmluZ1N0cjogc3RyaW5nKSB7XG4gICAgY29uc3QgcG9zaXRpb25pbmc6IFBvc2l0aW9uaW5nID0gUG9zaXRpb25pbmdbcG9zaXRpb25pbmdTdHJdO1xuXG4gICAgZm9yIChjb25zdCBmaXh0dXJlIG9mIHRoaXMuZml4dHVyZVNlcnZpY2Uuc2VsZWN0ZWRTZXR0aW5nc0ZpeHR1cmVzKSB7XG4gICAgICBmaXh0dXJlLnBvc2l0aW9uaW5nID0gcG9zaXRpb25pbmc7XG4gICAgfVxuICB9XG5cbiAgY2hhbmdlUG9zaXRpb25NYW51YWwocG9zaXRpb246IHN0cmluZywgdmFsdWU6IGFueSkge1xuICAgIGlmIChpc05hTih2YWx1ZSkpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBpZiAocG9zaXRpb24gPT09ICd4Jykge1xuICAgICAgaWYgKHZhbHVlID49IHRoaXMucG9zaXRpb25YTWluICYmIHZhbHVlIDw9IHRoaXMucG9zaXRpb25YTWF4KSB7XG4gICAgICAgIHRoaXMucG9zaXRpb25YID0gK3ZhbHVlO1xuICAgICAgfVxuICAgIH0gZWxzZSBpZiAocG9zaXRpb24gPT09ICd5Jykge1xuICAgICAgaWYgKHZhbHVlID49IHRoaXMucG9zaXRpb25ZTWluICYmIHZhbHVlIDw9IHRoaXMucG9zaXRpb25ZTWF4KSB7XG4gICAgICAgIHRoaXMucG9zaXRpb25ZID0gK3ZhbHVlO1xuICAgICAgfVxuICAgIH0gZWxzZSBpZiAocG9zaXRpb24gPT09ICd6Jykge1xuICAgICAgaWYgKHZhbHVlID49IHRoaXMucG9zaXRpb25aTWluICYmIHZhbHVlIDw9IHRoaXMucG9zaXRpb25aTWF4KSB7XG4gICAgICAgIHRoaXMucG9zaXRpb25aID0gK3ZhbHVlO1xuICAgICAgfVxuICAgIH1cblxuICAgIGZvciAoY29uc3QgZml4dHVyZSBvZiB0aGlzLmZpeHR1cmVTZXJ2aWNlLnNlbGVjdGVkU2V0dGluZ3NGaXh0dXJlcykge1xuICAgICAgaWYgKHBvc2l0aW9uID09PSAneCcpIHtcbiAgICAgICAgaWYgKHZhbHVlID49IHRoaXMucG9zaXRpb25YTWluICYmIHZhbHVlIDw9IHRoaXMucG9zaXRpb25YTWF4KSB7XG4gICAgICAgICAgZml4dHVyZS5wb3NpdGlvblggPSArdmFsdWU7XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSBpZiAocG9zaXRpb24gPT09ICd5Jykge1xuICAgICAgICBpZiAodmFsdWUgPj0gdGhpcy5wb3NpdGlvbllNaW4gJiYgdmFsdWUgPD0gdGhpcy5wb3NpdGlvbllNYXgpIHtcbiAgICAgICAgICBmaXh0dXJlLnBvc2l0aW9uWSA9ICt2YWx1ZTtcbiAgICAgICAgfVxuICAgICAgfSBlbHNlIGlmIChwb3NpdGlvbiA9PT0gJ3onKSB7XG4gICAgICAgIGlmICh2YWx1ZSA+PSB0aGlzLnBvc2l0aW9uWk1pbiAmJiB2YWx1ZSA8PSB0aGlzLnBvc2l0aW9uWk1heCkge1xuICAgICAgICAgIGZpeHR1cmUucG9zaXRpb25aID0gK3ZhbHVlO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgY2hhbmdlUm90YXRpb25NYW51YWwocm90YXRpb246IHN0cmluZywgdmFsdWU6IGFueSkge1xuICAgIGlmIChpc05hTih2YWx1ZSkgfHwgdmFsdWUgPCB0aGlzLnJvdGF0aW9uTWluIHx8IHZhbHVlID4gdGhpcy5yb3RhdGlvbk1heCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGlmIChyb3RhdGlvbiA9PT0gJ3gnKSB7XG4gICAgICB0aGlzLnJvdGF0aW9uWCA9ICt2YWx1ZTtcbiAgICB9IGVsc2UgaWYgKHJvdGF0aW9uID09PSAneScpIHtcbiAgICAgIHRoaXMucm90YXRpb25ZID0gK3ZhbHVlO1xuICAgIH0gZWxzZSBpZiAocm90YXRpb24gPT09ICd6Jykge1xuICAgICAgdGhpcy5yb3RhdGlvblogPSArdmFsdWU7XG4gICAgfVxuXG4gICAgZm9yIChjb25zdCBmaXh0dXJlIG9mIHRoaXMuZml4dHVyZVNlcnZpY2Uuc2VsZWN0ZWRTZXR0aW5nc0ZpeHR1cmVzKSB7XG4gICAgICBpZiAocm90YXRpb24gPT09ICd4Jykge1xuICAgICAgICBmaXh0dXJlLnJvdGF0aW9uWCA9ICt2YWx1ZTtcbiAgICAgIH0gZWxzZSBpZiAocm90YXRpb24gPT09ICd5Jykge1xuICAgICAgICBmaXh0dXJlLnJvdGF0aW9uWSA9ICt2YWx1ZTtcbiAgICAgIH0gZWxzZSBpZiAocm90YXRpb24gPT09ICd6Jykge1xuICAgICAgICBmaXh0dXJlLnJvdGF0aW9uWiA9ICt2YWx1ZTtcbiAgICAgIH1cbiAgICB9XG4gIH1cbn1cbiIsIjxkaXYgY2xhc3M9XCJjYXJkIGJvcmRlci1zZWNvbmRhcnkgaC0xMDBcIj5cbiAgPGRpdiBjbGFzcz1cImNhcmQtaGVhZGVyXCI+XG4gICAge3sgJ2Rlc2lnbmVyLmZpeHR1cmUuc2V0dGluZy1wb3NpdGlvbi10aXRsZScgfCB0cmFuc2xhdGUgfX1cbiAgPC9kaXY+XG5cbiAgPGRpdiAqbmdJZj1cImZpeHR1cmVTZXJ2aWNlLnNlbGVjdGVkU2V0dGluZ3NGaXh0dXJlcy5sZW5ndGggPiAwXCIgY2xhc3M9XCJjYXJkLWJvZHkgaC0xMDBcIj5cbiAgICA8ZGl2PlxuICAgICAgPHNlbGVjdCBjbGFzcz1cIm1iLTJcIiBzdHlsZT1cIndpZHRoOiAxNDBweFwiIFsobmdNb2RlbCldPVwic2VsZWN0ZWRQb3NpdGlvbmluZ1wiIChjaGFuZ2UpPVwiY2hhbmdlUG9zaXRpb24oJGV2ZW50LnRhcmdldC52YWx1ZSlcIj5cbiAgICAgICAgPG9wdGlvbiBbbmdWYWx1ZV09XCJzZWxlY3RVbmRlZmluZWRPcHRpb25WYWx1ZVwiPjwvb3B0aW9uPlxuICAgICAgICA8b3B0aW9uIHZhbHVlPVwidG9wRnJvbnRcIj57eyAnZGVzaWduZXIuZml4dHVyZS5zZXR0aW5nLXBvc2l0aW9uLWZyb250LXRvcCcgfCB0cmFuc2xhdGUgfX08L29wdGlvbj5cbiAgICAgICAgPG9wdGlvbiB2YWx1ZT1cImJvdHRvbUZyb250XCI+e3sgJ2Rlc2lnbmVyLmZpeHR1cmUuc2V0dGluZy1wb3NpdGlvbi1mcm9udC1ib3R0b20nIHwgdHJhbnNsYXRlIH19PC9vcHRpb24+XG4gICAgICAgIDxvcHRpb24gdmFsdWU9XCJ0b3BCYWNrXCI+e3sgJ2Rlc2lnbmVyLmZpeHR1cmUuc2V0dGluZy1wb3NpdGlvbi1iYWNrLXRvcCcgfCB0cmFuc2xhdGUgfX08L29wdGlvbj5cbiAgICAgICAgPG9wdGlvbiB2YWx1ZT1cImJvdHRvbUJhY2tcIj57eyAnZGVzaWduZXIuZml4dHVyZS5zZXR0aW5nLXBvc2l0aW9uLWJhY2stYm90dG9tJyB8IHRyYW5zbGF0ZSB9fTwvb3B0aW9uPlxuICAgICAgICA8b3B0aW9uIHZhbHVlPVwibWFudWFsXCI+e3sgJ2Rlc2lnbmVyLmZpeHR1cmUuc2V0dGluZy1wb3NpdGlvbi1tYW51YWwnIHwgdHJhbnNsYXRlIH19PC9vcHRpb24+XG4gICAgICA8L3NlbGVjdD5cbiAgICA8L2Rpdj5cblxuICAgIDxkaXYgKm5nSWY9XCJzZWxlY3RlZFBvc2l0aW9uaW5nID09ICdtYW51YWwnXCI+XG4gICAgICA8ZGl2Pnt7ICdkZXNpZ25lci5maXh0dXJlLnNldHRpbmctcG9zaXRpb24nIHwgdHJhbnNsYXRlIH19PC9kaXY+XG4gICAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4XCI+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJteS1hdXRvXCIgc3R5bGU9XCJ3aWR0aDogMjBweDsgZmxvYXQ6IGxlZnRcIj5YPC9kaXY+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJteS1hdXRvXCIgc3R5bGU9XCJmbG9hdDogbGVmdFwiPlxuICAgICAgICAgIDxtdi1zbGlkZXJcbiAgICAgICAgICAgIHN0eWxlPVwid2lkdGg6IDgwcHhcIlxuICAgICAgICAgICAgW3Rvb2x0aXBdPVwiJ2hpZGUnXCJcbiAgICAgICAgICAgIFt2YWx1ZV09XCJwb3NpdGlvblggPyBwb3NpdGlvblggOiAocG9zaXRpb25YTWF4ICsgcG9zaXRpb25YTWluKSAvIDJcIlxuICAgICAgICAgICAgW21pbl09XCJwb3NpdGlvblhNaW5cIlxuICAgICAgICAgICAgW21heF09XCJwb3NpdGlvblhNYXhcIlxuICAgICAgICAgICAgW3N0ZXBdPVwiMVwiXG4gICAgICAgICAgICAoY2hhbmdlKT1cImNoYW5nZVBvc2l0aW9uTWFudWFsKCd4JywgJGV2ZW50Lm5ld1ZhbHVlKVwiXG4gICAgICAgICAgPjwvbXYtc2xpZGVyPlxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPGRpdiBjbGFzcz1cIm15LWF1dG9cIj5cbiAgICAgICAgICA8aW5wdXQgW25nTW9kZWxdPVwicG9zaXRpb25YXCIgKG5nTW9kZWxDaGFuZ2UpPVwiY2hhbmdlUG9zaXRpb25NYW51YWwoJ3gnLCAkZXZlbnQpXCIgdHlwZT1cInRleHRcIiBjbGFzcz1cInNsaWRlci1pbnB1dFwiIC8+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9kaXY+XG4gICAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4XCI+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJteS1hdXRvXCIgc3R5bGU9XCJ3aWR0aDogMjBweDsgZmxvYXQ6IGxlZnRcIj5ZPC9kaXY+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJteS1hdXRvXCIgc3R5bGU9XCJmbG9hdDogbGVmdFwiPlxuICAgICAgICAgIDxtdi1zbGlkZXJcbiAgICAgICAgICAgIHN0eWxlPVwid2lkdGg6IDgwcHg7IGhlaWdodDogMThweFwiXG4gICAgICAgICAgICBbdG9vbHRpcF09XCInaGlkZSdcIlxuICAgICAgICAgICAgW3ZhbHVlXT1cInBvc2l0aW9uWiA/IHBvc2l0aW9uWiA6IChwb3NpdGlvblpNYXggKyBwb3NpdGlvblpNaW4pIC8gMlwiXG4gICAgICAgICAgICBbbWluXT1cInBvc2l0aW9uWk1pblwiXG4gICAgICAgICAgICBbbWF4XT1cInBvc2l0aW9uWk1heFwiXG4gICAgICAgICAgICBbc3RlcF09XCIxXCJcbiAgICAgICAgICAgIChjaGFuZ2UpPVwiY2hhbmdlUG9zaXRpb25NYW51YWwoJ3onLCAkZXZlbnQubmV3VmFsdWUpXCJcbiAgICAgICAgICA+PC9tdi1zbGlkZXI+XG4gICAgICAgIDwvZGl2PlxuICAgICAgICA8ZGl2IGNsYXNzPVwibXktYXV0b1wiPlxuICAgICAgICAgIDxpbnB1dCBbbmdNb2RlbF09XCJwb3NpdGlvblpcIiAobmdNb2RlbENoYW5nZSk9XCJjaGFuZ2VQb3NpdGlvbk1hbnVhbCgneicsICRldmVudClcIiB0eXBlPVwidGV4dFwiIGNsYXNzPVwic2xpZGVyLWlucHV0XCIgLz5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2Rpdj5cbiAgICAgIDxkaXYgY2xhc3M9XCJkLWZsZXhcIj5cbiAgICAgICAgPGRpdiBjbGFzcz1cIm15LWF1dG9cIiBzdHlsZT1cIndpZHRoOiAyMHB4OyBmbG9hdDogbGVmdFwiPlo8L2Rpdj5cbiAgICAgICAgPGRpdiBjbGFzcz1cIm15LWF1dG9cIiBzdHlsZT1cImZsb2F0OiBsZWZ0XCI+XG4gICAgICAgICAgPG12LXNsaWRlclxuICAgICAgICAgICAgc3R5bGU9XCJ3aWR0aDogODBweFwiXG4gICAgICAgICAgICBbdG9vbHRpcF09XCInaGlkZSdcIlxuICAgICAgICAgICAgW3ZhbHVlXT1cInBvc2l0aW9uWSA/IHBvc2l0aW9uWSA6IChwb3NpdGlvbllNYXggKyBwb3NpdGlvbllNaW4pIC8gMlwiXG4gICAgICAgICAgICBbbWluXT1cInBvc2l0aW9uWU1pblwiXG4gICAgICAgICAgICBbbWF4XT1cInBvc2l0aW9uWU1heFwiXG4gICAgICAgICAgICBbc3RlcF09XCIxXCJcbiAgICAgICAgICAgIChjaGFuZ2UpPVwiY2hhbmdlUG9zaXRpb25NYW51YWwoJ3knLCAkZXZlbnQubmV3VmFsdWUpXCJcbiAgICAgICAgICA+PC9tdi1zbGlkZXI+XG4gICAgICAgIDwvZGl2PlxuICAgICAgICA8ZGl2IGNsYXNzPVwibXktYXV0b1wiPlxuICAgICAgICAgIDxpbnB1dCBbbmdNb2RlbF09XCJwb3NpdGlvbllcIiAobmdNb2RlbENoYW5nZSk9XCJjaGFuZ2VQb3NpdGlvbk1hbnVhbCgneScsICRldmVudClcIiB0eXBlPVwidGV4dFwiIGNsYXNzPVwic2xpZGVyLWlucHV0XCIgLz5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2Rpdj5cblxuICAgICAgPGRpdiBjbGFzcz1cIm10LTJcIj57eyAnZGVzaWduZXIuZml4dHVyZS5zZXR0aW5nLXJvdGF0aW9uJyB8IHRyYW5zbGF0ZSB9fTwvZGl2PlxuICAgICAgPGRpdiBjbGFzcz1cImQtZmxleFwiPlxuICAgICAgICA8ZGl2IGNsYXNzPVwibXktYXV0b1wiIHN0eWxlPVwid2lkdGg6IDIwcHg7IGZsb2F0OiBsZWZ0XCI+WDwvZGl2PlxuICAgICAgICA8ZGl2IGNsYXNzPVwibXktYXV0b1wiIHN0eWxlPVwiZmxvYXQ6IGxlZnRcIj5cbiAgICAgICAgICA8bXYtc2xpZGVyXG4gICAgICAgICAgICBzdHlsZT1cIndpZHRoOiA4MHB4XCJcbiAgICAgICAgICAgIFt0b29sdGlwXT1cIidoaWRlJ1wiXG4gICAgICAgICAgICBbdmFsdWVdPVwicm90YXRpb25YID8gcm90YXRpb25YIDogKHJvdGF0aW9uTWluICsgcm90YXRpb25NYXgpIC8gMlwiXG4gICAgICAgICAgICBbbWluXT1cInJvdGF0aW9uTWluXCJcbiAgICAgICAgICAgIFttYXhdPVwicm90YXRpb25NYXhcIlxuICAgICAgICAgICAgW3N0ZXBdPVwiMVwiXG4gICAgICAgICAgICAoY2hhbmdlKT1cImNoYW5nZVJvdGF0aW9uTWFudWFsKCd4JywgJGV2ZW50Lm5ld1ZhbHVlKVwiXG4gICAgICAgICAgPjwvbXYtc2xpZGVyPlxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPGRpdiBjbGFzcz1cIm15LWF1dG9cIj5cbiAgICAgICAgICA8aW5wdXQgW25nTW9kZWxdPVwicm90YXRpb25YXCIgKG5nTW9kZWxDaGFuZ2UpPVwiY2hhbmdlUm90YXRpb25NYW51YWwoJ3gnLCAkZXZlbnQpXCIgdHlwZT1cInRleHRcIiBjbGFzcz1cInNsaWRlci1pbnB1dFwiIC8+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9kaXY+XG4gICAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4XCI+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJteS1hdXRvXCIgc3R5bGU9XCJ3aWR0aDogMjBweDsgZmxvYXQ6IGxlZnRcIj5ZPC9kaXY+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJteS1hdXRvXCIgc3R5bGU9XCJmbG9hdDogbGVmdFwiPlxuICAgICAgICAgIDxtdi1zbGlkZXJcbiAgICAgICAgICAgIHN0eWxlPVwid2lkdGg6IDgwcHg7IGhlaWdodDogMThweFwiXG4gICAgICAgICAgICBbdG9vbHRpcF09XCInaGlkZSdcIlxuICAgICAgICAgICAgW3ZhbHVlXT1cInJvdGF0aW9uWiA/IHJvdGF0aW9uWiA6IChyb3RhdGlvbk1pbiArIHJvdGF0aW9uTWF4KSAvIDJcIlxuICAgICAgICAgICAgW21pbl09XCJyb3RhdGlvbk1pblwiXG4gICAgICAgICAgICBbbWF4XT1cInJvdGF0aW9uTWF4XCJcbiAgICAgICAgICAgIFtzdGVwXT1cIjFcIlxuICAgICAgICAgICAgKGNoYW5nZSk9XCJjaGFuZ2VSb3RhdGlvbk1hbnVhbCgneicsICRldmVudC5uZXdWYWx1ZSlcIlxuICAgICAgICAgID48L212LXNsaWRlcj5cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJteS1hdXRvXCI+XG4gICAgICAgICAgPGlucHV0IFtuZ01vZGVsXT1cInJvdGF0aW9uWlwiIChuZ01vZGVsQ2hhbmdlKT1cImNoYW5nZVJvdGF0aW9uTWFudWFsKCd6JywgJGV2ZW50KVwiIHR5cGU9XCJ0ZXh0XCIgY2xhc3M9XCJzbGlkZXItaW5wdXRcIiAvPlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvZGl2PlxuICAgICAgPGRpdiBjbGFzcz1cImQtZmxleFwiPlxuICAgICAgICA8ZGl2IGNsYXNzPVwibXktYXV0b1wiIHN0eWxlPVwid2lkdGg6IDIwcHg7IGZsb2F0OiBsZWZ0XCI+WjwvZGl2PlxuICAgICAgICA8ZGl2IGNsYXNzPVwibXktYXV0b1wiIHN0eWxlPVwiZmxvYXQ6IGxlZnRcIj5cbiAgICAgICAgICA8bXYtc2xpZGVyXG4gICAgICAgICAgICBzdHlsZT1cIndpZHRoOiA4MHB4XCJcbiAgICAgICAgICAgIFt0b29sdGlwXT1cIidoaWRlJ1wiXG4gICAgICAgICAgICBbdmFsdWVdPVwicm90YXRpb25ZID8gcm90YXRpb25ZIDogKHJvdGF0aW9uTWluICsgcm90YXRpb25NYXgpIC8gMlwiXG4gICAgICAgICAgICBbbWluXT1cInJvdGF0aW9uTWluXCJcbiAgICAgICAgICAgIFttYXhdPVwicm90YXRpb25NYXhcIlxuICAgICAgICAgICAgW3N0ZXBdPVwiMVwiXG4gICAgICAgICAgICAoY2hhbmdlKT1cImNoYW5nZVJvdGF0aW9uTWFudWFsKCd5JywgJGV2ZW50Lm5ld1ZhbHVlKVwiXG4gICAgICAgICAgPjwvbXYtc2xpZGVyPlxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPGRpdiBjbGFzcz1cIm15LWF1dG9cIj5cbiAgICAgICAgICA8aW5wdXQgW25nTW9kZWxdPVwicm90YXRpb25ZXCIgKG5nTW9kZWxDaGFuZ2UpPVwiY2hhbmdlUm90YXRpb25NYW51YWwoJ3knLCAkZXZlbnQpXCIgdHlwZT1cInRleHRcIiBjbGFzcz1cInNsaWRlci1pbnB1dFwiIC8+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG4gIDwvZGl2PlxuXG4gIDxkaXYgKm5nSWY9XCJmaXh0dXJlU2VydmljZS5zZWxlY3RlZFNldHRpbmdzRml4dHVyZXMubGVuZ3RoID09IDBcIiBjbGFzcz1cImNhcmQtYm9keSBoLTEwMCBkLWZsZXhcIj5cbiAgICA8cCBjbGFzcz1cIm0tYXV0b1wiIHN0eWxlPVwiY29sb3I6ICM3MTcxNzFcIj57eyAnZGVzaWduZXIuZml4dHVyZS5uby1maXh0dXJlcy1zZXR0aW5ncy1zZWxlY3RlZCcgfCB0cmFuc2xhdGUgfX08L3A+XG4gIDwvZGl2PlxuPC9kaXY+XG4iXX0=