@rocketshow/designer 1.32.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 -9966
  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.32.0.tgz +0 -0
  338. package/rocketshow-designer.d.ts +0 -60
  339. package/rocketshow-designer.metadata.json +0 -1
@@ -1,11 +0,0 @@
1
- export class ScenePlaybackRegion {
2
- constructor(data) {
3
- if (!data) {
4
- return;
5
- }
6
- this.sceneUuid = data.sceneUuid;
7
- this.startMillis = data.startMillis;
8
- this.endMillis = data.endMillis;
9
- }
10
- }
11
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2NlbmUtcGxheWJhY2stcmVnaW9uLmpzIiwic291cmNlUm9vdCI6Im5nOi8vQHJvY2tldHNob3cvZGVzaWduZXIvIiwic291cmNlcyI6WyJsaWIvbW9kZWxzL3NjZW5lLXBsYXliYWNrLXJlZ2lvbi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxNQUFNLE9BQU8sbUJBQW1CO0lBSzlCLFlBQVksSUFBVTtRQUNwQixJQUFJLENBQUMsSUFBSSxFQUFFO1lBQ1QsT0FBTztTQUNSO1FBRUQsSUFBSSxDQUFDLFNBQVMsR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDO1FBQ2hDLElBQUksQ0FBQyxXQUFXLEdBQUcsSUFBSSxDQUFDLFdBQVcsQ0FBQztRQUNwQyxJQUFJLENBQUMsU0FBUyxHQUFHLElBQUksQ0FBQyxTQUFTLENBQUM7SUFDbEMsQ0FBQztDQUNGIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGNsYXNzIFNjZW5lUGxheWJhY2tSZWdpb24ge1xuICBzY2VuZVV1aWQ6IHN0cmluZztcbiAgc3RhcnRNaWxsaXM6IG51bWJlcjtcbiAgZW5kTWlsbGlzOiBudW1iZXI7XG5cbiAgY29uc3RydWN0b3IoZGF0YT86IGFueSkge1xuICAgIGlmICghZGF0YSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHRoaXMuc2NlbmVVdWlkID0gZGF0YS5zY2VuZVV1aWQ7XG4gICAgdGhpcy5zdGFydE1pbGxpcyA9IGRhdGEuc3RhcnRNaWxsaXM7XG4gICAgdGhpcy5lbmRNaWxsaXMgPSBkYXRhLmVuZE1pbGxpcztcbiAgfVxufVxuIl19
@@ -1,27 +0,0 @@
1
- export class Scene {
2
- constructor(data) {
3
- this.color = '#fff';
4
- // All contained presets
5
- this.presetUuids = [];
6
- // Fading times
7
- this.fadeInMillis = 0;
8
- this.fadeOutMillis = 0;
9
- // fade in/out outside the start/end times?
10
- this.fadeInPre = false;
11
- this.fadeOutPost = false;
12
- if (!data) {
13
- return;
14
- }
15
- this.uuid = data.uuid;
16
- this.name = data.name;
17
- this.color = data.color;
18
- if (data.presetUuids) {
19
- this.presetUuids = data.presetUuids;
20
- }
21
- this.fadeInMillis = data.fadeInMillis;
22
- this.fadeOutMillis = data.fadeOutMillis;
23
- this.fadeInPre = data.fadeInPre;
24
- this.fadeOutPost = data.fadeOutPost;
25
- }
26
- }
27
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2NlbmUuanMiLCJzb3VyY2VSb290Ijoibmc6Ly9Acm9ja2V0c2hvdy9kZXNpZ25lci8iLCJzb3VyY2VzIjpbImxpYi9tb2RlbHMvc2NlbmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBRUEsTUFBTSxPQUFPLEtBQUs7SUFpQmhCLFlBQVksSUFBVTtRQWJ0QixVQUFLLEdBQUcsTUFBTSxDQUFDO1FBRWYsd0JBQXdCO1FBQ3hCLGdCQUFXLEdBQWEsRUFBRSxDQUFDO1FBRTNCLGVBQWU7UUFDZixpQkFBWSxHQUFHLENBQUMsQ0FBQztRQUNqQixrQkFBYSxHQUFHLENBQUMsQ0FBQztRQUVsQiwyQ0FBMkM7UUFDM0MsY0FBUyxHQUFHLEtBQUssQ0FBQztRQUNsQixnQkFBVyxHQUFHLEtBQUssQ0FBQztRQUdsQixJQUFJLENBQUMsSUFBSSxFQUFFO1lBQ1QsT0FBTztTQUNSO1FBRUQsSUFBSSxDQUFDLElBQUksR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDO1FBQ3RCLElBQUksQ0FBQyxJQUFJLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQztRQUN0QixJQUFJLENBQUMsS0FBSyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUM7UUFDeEIsSUFBSSxJQUFJLENBQUMsV0FBVyxFQUFFO1lBQ3BCLElBQUksQ0FBQyxXQUFXLEdBQUcsSUFBSSxDQUFDLFdBQVcsQ0FBQztTQUNyQztRQUNELElBQUksQ0FBQyxZQUFZLEdBQUcsSUFBSSxDQUFDLFlBQVksQ0FBQztRQUN0QyxJQUFJLENBQUMsYUFBYSxHQUFHLElBQUksQ0FBQyxhQUFhLENBQUM7UUFDeEMsSUFBSSxDQUFDLFNBQVMsR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDO1FBQ2hDLElBQUksQ0FBQyxXQUFXLEdBQUcsSUFBSSxDQUFDLFdBQVcsQ0FBQztJQUN0QyxDQUFDO0NBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBTY2VuZVBsYXliYWNrUmVnaW9uIH0gZnJvbSAnLi9zY2VuZS1wbGF5YmFjay1yZWdpb24nO1xuXG5leHBvcnQgY2xhc3MgU2NlbmUge1xuICB1dWlkOiBzdHJpbmc7XG4gIG5hbWU6IHN0cmluZztcblxuICBjb2xvciA9ICcjZmZmJztcblxuICAvLyBBbGwgY29udGFpbmVkIHByZXNldHNcbiAgcHJlc2V0VXVpZHM6IHN0cmluZ1tdID0gW107XG5cbiAgLy8gRmFkaW5nIHRpbWVzXG4gIGZhZGVJbk1pbGxpcyA9IDA7XG4gIGZhZGVPdXRNaWxsaXMgPSAwO1xuXG4gIC8vIGZhZGUgaW4vb3V0IG91dHNpZGUgdGhlIHN0YXJ0L2VuZCB0aW1lcz9cbiAgZmFkZUluUHJlID0gZmFsc2U7XG4gIGZhZGVPdXRQb3N0ID0gZmFsc2U7XG5cbiAgY29uc3RydWN0b3IoZGF0YT86IGFueSkge1xuICAgIGlmICghZGF0YSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHRoaXMudXVpZCA9IGRhdGEudXVpZDtcbiAgICB0aGlzLm5hbWUgPSBkYXRhLm5hbWU7XG4gICAgdGhpcy5jb2xvciA9IGRhdGEuY29sb3I7XG4gICAgaWYgKGRhdGEucHJlc2V0VXVpZHMpIHtcbiAgICAgIHRoaXMucHJlc2V0VXVpZHMgPSBkYXRhLnByZXNldFV1aWRzO1xuICAgIH1cbiAgICB0aGlzLmZhZGVJbk1pbGxpcyA9IGRhdGEuZmFkZUluTWlsbGlzO1xuICAgIHRoaXMuZmFkZU91dE1pbGxpcyA9IGRhdGEuZmFkZU91dE1pbGxpcztcbiAgICB0aGlzLmZhZGVJblByZSA9IGRhdGEuZmFkZUluUHJlO1xuICAgIHRoaXMuZmFkZU91dFBvc3QgPSBkYXRhLmZhZGVPdXRQb3N0O1xuICB9XG59XG4iXX0=
@@ -1,11 +0,0 @@
1
- export class Universe {
2
- // TODO Add output configuration
3
- constructor(uuidService) {
4
- this.uuidService = uuidService;
5
- this.channelValues = [];
6
- if (this.uuidService) {
7
- this.uuid = this.uuidService.getUuid();
8
- }
9
- }
10
- }
11
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidW5pdmVyc2UuanMiLCJzb3VyY2VSb290Ijoibmc6Ly9Acm9ja2V0c2hvdy9kZXNpZ25lci8iLCJzb3VyY2VzIjpbImxpYi9tb2RlbHMvdW5pdmVyc2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBRUEsTUFBTSxPQUFPLFFBQVE7SUFLbkIsZ0NBQWdDO0lBRWhDLFlBQW9CLFdBQXdCO1FBQXhCLGdCQUFXLEdBQVgsV0FBVyxDQUFhO1FBSjVDLGtCQUFhLEdBQWEsRUFBRSxDQUFDO1FBSzNCLElBQUksSUFBSSxDQUFDLFdBQVcsRUFBRTtZQUNwQixJQUFJLENBQUMsSUFBSSxHQUFHLElBQUksQ0FBQyxXQUFXLENBQUMsT0FBTyxFQUFFLENBQUM7U0FDeEM7SUFDSCxDQUFDO0NBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBVdWlkU2VydmljZSB9IGZyb20gJy4uL3NlcnZpY2VzL3V1aWQuc2VydmljZSc7XG5cbmV4cG9ydCBjbGFzcyBVbml2ZXJzZSB7XG4gIHV1aWQ6IHN0cmluZztcbiAgbmFtZTogc3RyaW5nO1xuICBjaGFubmVsVmFsdWVzOiBudW1iZXJbXSA9IFtdO1xuXG4gIC8vIFRPRE8gQWRkIG91dHB1dCBjb25maWd1cmF0aW9uXG5cbiAgY29uc3RydWN0b3IocHJpdmF0ZSB1dWlkU2VydmljZTogVXVpZFNlcnZpY2UpIHtcbiAgICBpZiAodGhpcy51dWlkU2VydmljZSkge1xuICAgICAgdGhpcy51dWlkID0gdGhpcy51dWlkU2VydmljZS5nZXRVdWlkKCk7XG4gICAgfVxuICB9XG59XG4iXX0=
@@ -1,66 +0,0 @@
1
- import { __decorate, __metadata } from "tslib";
2
- import { Component, HostListener } from '@angular/core';
3
- import { BsModalRef } from 'ngx-bootstrap/modal';
4
- let PresetSettingsComponent = class PresetSettingsComponent {
5
- constructor(bsModalRef) {
6
- this.bsModalRef = bsModalRef;
7
- }
8
- ngOnInit() {
9
- this.name = this.preset.name;
10
- this.startMillis = this.preset.startMillis;
11
- this.endMillis = this.preset.endMillis;
12
- this.fadeInMillis = this.preset.fadeInMillis;
13
- this.fadeOutMillis = this.preset.fadeOutMillis;
14
- this.fadeInPre = this.preset.fadeInPre;
15
- this.fadeOutPost = this.preset.fadeOutPost;
16
- }
17
- ok() {
18
- this.preset.name = this.name;
19
- if (this.startMillis === undefined || this.startMillis === null || this.startMillis === '') {
20
- this.preset.startMillis = undefined;
21
- }
22
- else if (!isNaN(this.startMillis) && this.startMillis >= 0) {
23
- this.preset.startMillis = +this.startMillis;
24
- }
25
- if (this.endMillis === undefined || this.endMillis === null || this.endMillis === '') {
26
- this.preset.endMillis = undefined;
27
- }
28
- else if (!isNaN(this.endMillis) && this.endMillis >= 0) {
29
- this.preset.endMillis = +this.endMillis;
30
- }
31
- if (!isNaN(this.fadeInMillis) && this.fadeInMillis >= 0) {
32
- this.preset.fadeInMillis = +this.fadeInMillis;
33
- }
34
- if (!isNaN(this.fadeOutMillis) && this.fadeOutMillis >= 0) {
35
- this.preset.fadeOutMillis = +this.fadeOutMillis;
36
- }
37
- this.preset.fadeInPre = this.fadeInPre;
38
- this.preset.fadeOutPost = this.fadeOutPost;
39
- this.bsModalRef.hide();
40
- }
41
- cancel() {
42
- this.bsModalRef.hide();
43
- }
44
- handleKeyboardEvent(event) {
45
- this.ok();
46
- }
47
- };
48
- PresetSettingsComponent.ctorParameters = () => [
49
- { type: BsModalRef }
50
- ];
51
- __decorate([
52
- HostListener('document:keydown.enter', ['$event']),
53
- __metadata("design:type", Function),
54
- __metadata("design:paramtypes", [Object]),
55
- __metadata("design:returntype", void 0)
56
- ], PresetSettingsComponent.prototype, "handleKeyboardEvent", null);
57
- PresetSettingsComponent = __decorate([
58
- Component({
59
- selector: 'lib-preset-settings',
60
- template: "<div class=\"modal-header\">\n <h4 class=\"modal-title pull-left\">{{ name }}</h4>\n <button type=\"button\" class=\"close pull-right\" aria-label=\"Close\" (click)=\"bsModalRef.hide()\">\n <span aria-hidden=\"true\">&times;</span>\n </button>\n</div>\n<div class=\"modal-body\">\n <div class=\"form-group row\">\n <label class=\"col-lg-4 col-form-label\">{{ 'designer.preset.settings-name' | translate }}</label>\n <div class=\"col-lg-7\">\n <input type=\"text\" class=\"form-control\" [ngModel]=\"name\" (ngModelChange)=\"name = $event\" />\n </div>\n </div>\n\n <div class=\"form-group row\">\n <label class=\"col-lg-4 col-form-label\">{{ 'designer.preset.settings-start' | translate }}</label>\n <div class=\"col-lg-7\">\n <input type=\"text\" class=\"form-control\" [ngModel]=\"startMillis\" (ngModelChange)=\"startMillis = $event\" />\n </div>\n <div class=\"col-lg-1 d-flex p-0\">\n <div class=\"my-auto\">\n {{ 'designer.misc.ms' | translate }}\n </div>\n </div>\n </div>\n\n <div class=\"form-group row\">\n <label class=\"col-lg-4 col-form-label\">{{ 'designer.preset.settings-end' | translate }}</label>\n <div class=\"col-lg-7\">\n <input type=\"text\" class=\"form-control\" [ngModel]=\"endMillis\" (ngModelChange)=\"endMillis = $event\" />\n </div>\n <div class=\"col-lg-1 d-flex p-0\">\n <div class=\"my-auto\">\n {{ 'designer.misc.ms' | translate }}\n </div>\n </div>\n </div>\n\n <div class=\"form-group row\">\n <label class=\"col-lg-4 col-form-label\">{{ 'designer.preset.settings-fade-in' | translate }}</label>\n <div class=\"col-lg-7\">\n <input type=\"text\" class=\"form-control\" [ngModel]=\"fadeInMillis\" (ngModelChange)=\"fadeInMillis = $event\" />\n </div>\n <div class=\"col-lg-1 d-flex p-0\">\n <div class=\"my-auto\">\n {{ 'designer.misc.ms' | translate }}\n </div>\n </div>\n </div>\n\n <div class=\"form-group row\">\n <label class=\"col-lg-4 col-form-label\"></label>\n <div class=\"col-lg-8 d-flex\">\n <div class=\"form-check my-auto\">\n <input type=\"checkbox\" [ngModel]=\"fadeInPre\" (ngModelChange)=\"fadeInPre = $event\" class=\"form-check-input\" id=\"fadeInPre\" />\n\n <label class=\"form-check-label\" for=\"fadeInPre\">\n {{ 'designer.preset.settings-fade-in-pre' | translate }}\n </label>\n </div>\n </div>\n </div>\n\n <div class=\"form-group row\">\n <label class=\"col-lg-4 col-form-label\">{{ 'designer.preset.settings-fade-out' | translate }}</label>\n <div class=\"col-lg-7\">\n <input type=\"text\" class=\"form-control\" [ngModel]=\"fadeOutMillis\" (ngModelChange)=\"fadeOutMillis = $event\" />\n </div>\n <div class=\"col-lg-1 d-flex p-0\">\n <div class=\"my-auto\">\n {{ 'designer.misc.ms' | translate }}\n </div>\n </div>\n </div>\n\n <div class=\"form-group row\">\n <label class=\"col-lg-4 col-form-label\"></label>\n <div class=\"col-lg-8 d-flex\">\n <div class=\"form-check my-auto\">\n <input type=\"checkbox\" [ngModel]=\"fadeOutPost\" (ngModelChange)=\"fadeOutPost = $event\" class=\"form-check-input\" id=\"fadeOutPost\" />\n\n <label class=\"form-check-label\" for=\"fadeOutPost\">\n {{ 'designer.preset.settings-fade-out-post' | translate }}\n </label>\n </div>\n </div>\n </div>\n</div>\n<div class=\"modal-footer\">\n <a class=\"mr-3 my-auto\" href=\"#\" role=\"button\" (click)=\"cancel(); (false)\">\n {{ 'designer.misc.cancel' | translate }}\n </a>\n <button type=\"button\" class=\"btn btn-primary\" (click)=\"ok()\">{{ 'designer.misc.ok' | translate }}</button>\n</div>\n",
61
- styles: [""]
62
- }),
63
- __metadata("design:paramtypes", [BsModalRef])
64
- ], PresetSettingsComponent);
65
- export { PresetSettingsComponent };
66
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJlc2V0LXNldHRpbmdzLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiJuZzovL0Byb2NrZXRzaG93L2Rlc2lnbmVyLyIsInNvdXJjZXMiOlsibGliL3ByZXNldC9wcmVzZXQtc2V0dGluZ3MvcHJlc2V0LXNldHRpbmdzLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxZQUFZLEVBQVUsTUFBTSxlQUFlLENBQUM7QUFDaEUsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBUWpELElBQWEsdUJBQXVCLEdBQXBDLE1BQWEsdUJBQXVCO0lBV2xDLFlBQW1CLFVBQXNCO1FBQXRCLGVBQVUsR0FBVixVQUFVLENBQVk7SUFBRyxDQUFDO0lBRTdDLFFBQVE7UUFDTixJQUFJLENBQUMsSUFBSSxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDO1FBQzdCLElBQUksQ0FBQyxXQUFXLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxXQUFXLENBQUM7UUFDM0MsSUFBSSxDQUFDLFNBQVMsR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLFNBQVMsQ0FBQztRQUN2QyxJQUFJLENBQUMsWUFBWSxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsWUFBWSxDQUFDO1FBQzdDLElBQUksQ0FBQyxhQUFhLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxhQUFhLENBQUM7UUFDL0MsSUFBSSxDQUFDLFNBQVMsR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLFNBQVMsQ0FBQztRQUN2QyxJQUFJLENBQUMsV0FBVyxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsV0FBVyxDQUFDO0lBQzdDLENBQUM7SUFFRCxFQUFFO1FBQ0EsSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQztRQUU3QixJQUFJLElBQUksQ0FBQyxXQUFXLEtBQUssU0FBUyxJQUFJLElBQUksQ0FBQyxXQUFXLEtBQUssSUFBSSxJQUFLLElBQUksQ0FBQyxXQUFtQixLQUFLLEVBQUUsRUFBRTtZQUNuRyxJQUFJLENBQUMsTUFBTSxDQUFDLFdBQVcsR0FBRyxTQUFTLENBQUM7U0FDckM7YUFBTSxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxJQUFJLENBQUMsV0FBVyxJQUFJLENBQUMsRUFBRTtZQUM1RCxJQUFJLENBQUMsTUFBTSxDQUFDLFdBQVcsR0FBRyxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUM7U0FDN0M7UUFDRCxJQUFJLElBQUksQ0FBQyxTQUFTLEtBQUssU0FBUyxJQUFJLElBQUksQ0FBQyxTQUFTLEtBQUssSUFBSSxJQUFLLElBQUksQ0FBQyxTQUFpQixLQUFLLEVBQUUsRUFBRTtZQUM3RixJQUFJLENBQUMsTUFBTSxDQUFDLFNBQVMsR0FBRyxTQUFTLENBQUM7U0FDbkM7YUFBTSxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxJQUFJLENBQUMsU0FBUyxJQUFJLENBQUMsRUFBRTtZQUN4RCxJQUFJLENBQUMsTUFBTSxDQUFDLFNBQVMsR0FBRyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUM7U0FDekM7UUFDRCxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsSUFBSSxJQUFJLENBQUMsWUFBWSxJQUFJLENBQUMsRUFBRTtZQUN2RCxJQUFJLENBQUMsTUFBTSxDQUFDLFlBQVksR0FBRyxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUM7U0FDL0M7UUFDRCxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsSUFBSSxJQUFJLENBQUMsYUFBYSxJQUFJLENBQUMsRUFBRTtZQUN6RCxJQUFJLENBQUMsTUFBTSxDQUFDLGFBQWEsR0FBRyxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUM7U0FDakQ7UUFFRCxJQUFJLENBQUMsTUFBTSxDQUFDLFNBQVMsR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDO1FBQ3ZDLElBQUksQ0FBQyxNQUFNLENBQUMsV0FBVyxHQUFHLElBQUksQ0FBQyxXQUFXLENBQUM7UUFFM0MsSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLEVBQUUsQ0FBQztJQUN6QixDQUFDO0lBRUQsTUFBTTtRQUNKLElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxFQUFFLENBQUM7SUFDekIsQ0FBQztJQUdELG1CQUFtQixDQUFDLEtBQVU7UUFDNUIsSUFBSSxDQUFDLEVBQUUsRUFBRSxDQUFDO0lBQ1osQ0FBQztDQUNGLENBQUE7O1lBOUNnQyxVQUFVOztBQTJDekM7SUFEQyxZQUFZLENBQUMsd0JBQXdCLEVBQUUsQ0FBQyxRQUFRLENBQUMsQ0FBQzs7OztrRUFHbEQ7QUF4RFUsdUJBQXVCO0lBTG5DLFNBQVMsQ0FBQztRQUNULFFBQVEsRUFBRSxxQkFBcUI7UUFDL0Isa3FIQUErQzs7S0FFaEQsQ0FBQztxQ0FZK0IsVUFBVTtHQVg5Qix1QkFBdUIsQ0F5RG5DO1NBekRZLHVCQUF1QiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgSG9zdExpc3RlbmVyLCBPbkluaXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEJzTW9kYWxSZWYgfSBmcm9tICduZ3gtYm9vdHN0cmFwL21vZGFsJztcbmltcG9ydCB7IFByZXNldCB9IGZyb20gJy4uLy4uL21vZGVscy9wcmVzZXQnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdsaWItcHJlc2V0LXNldHRpbmdzJyxcbiAgdGVtcGxhdGVVcmw6ICcuL3ByZXNldC1zZXR0aW5ncy5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL3ByZXNldC1zZXR0aW5ncy5jb21wb25lbnQuY3NzJ10sXG59KVxuZXhwb3J0IGNsYXNzIFByZXNldFNldHRpbmdzQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcbiAgcHJlc2V0OiBQcmVzZXQ7XG5cbiAgbmFtZTogc3RyaW5nO1xuICBzdGFydE1pbGxpczogbnVtYmVyO1xuICBlbmRNaWxsaXM6IG51bWJlcjtcbiAgZmFkZUluTWlsbGlzOiBudW1iZXI7XG4gIGZhZGVPdXRNaWxsaXM6IG51bWJlcjtcbiAgZmFkZUluUHJlOiBib29sZWFuO1xuICBmYWRlT3V0UG9zdDogYm9vbGVhbjtcblxuICBjb25zdHJ1Y3RvcihwdWJsaWMgYnNNb2RhbFJlZjogQnNNb2RhbFJlZikge31cblxuICBuZ09uSW5pdCgpIHtcbiAgICB0aGlzLm5hbWUgPSB0aGlzLnByZXNldC5uYW1lO1xuICAgIHRoaXMuc3RhcnRNaWxsaXMgPSB0aGlzLnByZXNldC5zdGFydE1pbGxpcztcbiAgICB0aGlzLmVuZE1pbGxpcyA9IHRoaXMucHJlc2V0LmVuZE1pbGxpcztcbiAgICB0aGlzLmZhZGVJbk1pbGxpcyA9IHRoaXMucHJlc2V0LmZhZGVJbk1pbGxpcztcbiAgICB0aGlzLmZhZGVPdXRNaWxsaXMgPSB0aGlzLnByZXNldC5mYWRlT3V0TWlsbGlzO1xuICAgIHRoaXMuZmFkZUluUHJlID0gdGhpcy5wcmVzZXQuZmFkZUluUHJlO1xuICAgIHRoaXMuZmFkZU91dFBvc3QgPSB0aGlzLnByZXNldC5mYWRlT3V0UG9zdDtcbiAgfVxuXG4gIG9rKCkge1xuICAgIHRoaXMucHJlc2V0Lm5hbWUgPSB0aGlzLm5hbWU7XG5cbiAgICBpZiAodGhpcy5zdGFydE1pbGxpcyA9PT0gdW5kZWZpbmVkIHx8IHRoaXMuc3RhcnRNaWxsaXMgPT09IG51bGwgfHwgKHRoaXMuc3RhcnRNaWxsaXMgYXMgYW55KSA9PT0gJycpIHtcbiAgICAgIHRoaXMucHJlc2V0LnN0YXJ0TWlsbGlzID0gdW5kZWZpbmVkO1xuICAgIH0gZWxzZSBpZiAoIWlzTmFOKHRoaXMuc3RhcnRNaWxsaXMpICYmIHRoaXMuc3RhcnRNaWxsaXMgPj0gMCkge1xuICAgICAgdGhpcy5wcmVzZXQuc3RhcnRNaWxsaXMgPSArdGhpcy5zdGFydE1pbGxpcztcbiAgICB9XG4gICAgaWYgKHRoaXMuZW5kTWlsbGlzID09PSB1bmRlZmluZWQgfHwgdGhpcy5lbmRNaWxsaXMgPT09IG51bGwgfHwgKHRoaXMuZW5kTWlsbGlzIGFzIGFueSkgPT09ICcnKSB7XG4gICAgICB0aGlzLnByZXNldC5lbmRNaWxsaXMgPSB1bmRlZmluZWQ7XG4gICAgfSBlbHNlIGlmICghaXNOYU4odGhpcy5lbmRNaWxsaXMpICYmIHRoaXMuZW5kTWlsbGlzID49IDApIHtcbiAgICAgIHRoaXMucHJlc2V0LmVuZE1pbGxpcyA9ICt0aGlzLmVuZE1pbGxpcztcbiAgICB9XG4gICAgaWYgKCFpc05hTih0aGlzLmZhZGVJbk1pbGxpcykgJiYgdGhpcy5mYWRlSW5NaWxsaXMgPj0gMCkge1xuICAgICAgdGhpcy5wcmVzZXQuZmFkZUluTWlsbGlzID0gK3RoaXMuZmFkZUluTWlsbGlzO1xuICAgIH1cbiAgICBpZiAoIWlzTmFOKHRoaXMuZmFkZU91dE1pbGxpcykgJiYgdGhpcy5mYWRlT3V0TWlsbGlzID49IDApIHtcbiAgICAgIHRoaXMucHJlc2V0LmZhZGVPdXRNaWxsaXMgPSArdGhpcy5mYWRlT3V0TWlsbGlzO1xuICAgIH1cblxuICAgIHRoaXMucHJlc2V0LmZhZGVJblByZSA9IHRoaXMuZmFkZUluUHJlO1xuICAgIHRoaXMucHJlc2V0LmZhZGVPdXRQb3N0ID0gdGhpcy5mYWRlT3V0UG9zdDtcblxuICAgIHRoaXMuYnNNb2RhbFJlZi5oaWRlKCk7XG4gIH1cblxuICBjYW5jZWwoKSB7XG4gICAgdGhpcy5ic01vZGFsUmVmLmhpZGUoKTtcbiAgfVxuXG4gIEBIb3N0TGlzdGVuZXIoJ2RvY3VtZW50OmtleWRvd24uZW50ZXInLCBbJyRldmVudCddKVxuICBoYW5kbGVLZXlib2FyZEV2ZW50KGV2ZW50OiBhbnkpIHtcbiAgICB0aGlzLm9rKCk7XG4gIH1cbn1cbiJdfQ==
@@ -1,85 +0,0 @@
1
- import { __decorate, __metadata } from "tslib";
2
- import { Component } from '@angular/core';
3
- import { BsModalService } from 'ngx-bootstrap/modal';
4
- import { IntroService } from '../services/intro.service';
5
- import { PresetService } from '../services/preset.service';
6
- import { ProjectService } from '../services/project.service';
7
- import { SceneService } from '../services/scene.service';
8
- import { PresetSettingsComponent } from './preset-settings/preset-settings.component';
9
- let PresetComponent = class PresetComponent {
10
- constructor(presetService, sceneService, projectService, introService, modalService) {
11
- this.presetService = presetService;
12
- this.sceneService = sceneService;
13
- this.projectService = projectService;
14
- this.introService = introService;
15
- this.modalService = modalService;
16
- }
17
- ngOnInit() { }
18
- selectPreset(index) {
19
- this.projectService.project.previewPreset = true;
20
- this.presetService.selectPreset(index);
21
- }
22
- enableCheckbox() {
23
- return this.sceneService.selectedScenes && this.sceneService.selectedScenes.length === 1;
24
- }
25
- activatePreset(active, index) {
26
- if (this.sceneService.selectedScenes && this.sceneService.selectedScenes.length === 1) {
27
- const uuid = this.projectService.project.presets[index].uuid;
28
- if (active) {
29
- // Activate a new uuid
30
- this.sceneService.selectedScenes[0].presetUuids.push(uuid);
31
- }
32
- else {
33
- // Remove the uuid
34
- for (let i = 0; i < this.sceneService.selectedScenes[0].presetUuids.length; i++) {
35
- if (this.sceneService.selectedScenes[0].presetUuids[i] === uuid) {
36
- this.sceneService.selectedScenes[0].presetUuids.splice(i, 1);
37
- return;
38
- }
39
- }
40
- }
41
- }
42
- }
43
- addPreset() {
44
- this.presetService.addPreset();
45
- if (this.sceneService.selectedScenes && this.sceneService.selectedScenes.length === 1) {
46
- this.sceneService.selectedScenes[0].presetUuids.push(this.presetService.selectedPreset.uuid);
47
- }
48
- }
49
- removePreset() {
50
- if (!this.presetService.selectedPreset) {
51
- return;
52
- }
53
- this.projectService.project.presets.splice(this.projectService.project.presets.indexOf(this.presetService.selectedPreset), 1);
54
- this.presetService.selectPreset(0);
55
- }
56
- openSettings(preset) {
57
- const bsModalRef = this.modalService.show(PresetSettingsComponent, {
58
- keyboard: true,
59
- ignoreBackdropClick: false,
60
- class: '',
61
- initialState: { preset },
62
- });
63
- }
64
- };
65
- PresetComponent.ctorParameters = () => [
66
- { type: PresetService },
67
- { type: SceneService },
68
- { type: ProjectService },
69
- { type: IntroService },
70
- { type: BsModalService }
71
- ];
72
- PresetComponent = __decorate([
73
- Component({
74
- selector: 'lib-app-preset',
75
- template: "<div\n class=\"card border-secondary h-100 panel card-intro-preset card-intro-active\"\n [class.card-intro-active]=\"introService.showStep('presets')\"\n>\n <div class=\"card-header d-flex\">\n <div>\n {{ 'designer.preset.title' | translate }}\n </div>\n <div class=\"ml-auto\">\n <a href=\"#\" class=\"btn btn-secondary m-0, p-0\" (click)=\"removePreset(); (false)\"\n ><i class=\"fa fa-minus-circle fa-fw\" aria-hidden=\"true\"></i\n ></a>\n <a href=\"#\" class=\"btn btn-secondary m-0, p-0\" (click)=\"addPreset(); (false)\"\n ><i class=\"fa fa-plus-circle fa-fw\" aria-hidden=\"true\"></i\n ></a>\n </div>\n </div>\n\n <div class=\"card-body h-100 p-0\">\n <!-- List of presets -->\n <div class=\"list-group\" [sortablejs]=\"projectService.project.presets\">\n <div\n class=\"list-group-item\"\n *ngFor=\"let item of projectService.project.presets; let i = index\"\n (click)=\"selectPreset(i)\"\n [class.active-light]=\"!projectService.project.previewPreset && item == presetService.selectedPreset\"\n [class.active]=\"projectService.project.previewPreset && item == presetService.selectedPreset\"\n [class.inactive-list-item]=\"!sceneService.presetIsSelected(item)\"\n >\n <div class=\"row d-flex\" style=\"cursor: pointer\">\n <div class=\"col-auto list-sort-handle my-auto\" style=\"cursor: move; cursor: -webkit-grabbing\">\n <i class=\"fa fa-bars\" aria-hidden=\"true\"></i>\n </div>\n <div class=\"form-check\">\n <input\n type=\"checkbox\"\n [disabled]=\"!enableCheckbox()\"\n class=\"form-check-input\"\n id=\"active\"\n [ngModel]=\"sceneService.presetIsSelected(item)\"\n (ngModelChange)=\"activatePreset($event, i)\"\n (click)=\"$event.stopPropagation()\"\n />\n </div>\n <div>\n {{ item.name }}\n </div>\n <div class=\"my-auto ml-auto mr-2 d-flex\">\n <button type=\"button\" class=\"btn btn-secondary btn-sm py-0 px-1\" (click)=\"openSettings(item); (false)\">...</button>\n </div>\n </div>\n </div>\n </div>\n </div>\n</div>\n",
76
- styles: [""]
77
- }),
78
- __metadata("design:paramtypes", [PresetService,
79
- SceneService,
80
- ProjectService,
81
- IntroService,
82
- BsModalService])
83
- ], PresetComponent);
84
- export { PresetComponent };
85
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJlc2V0LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiJuZzovL0Byb2NrZXRzaG93L2Rlc2lnbmVyLyIsInNvdXJjZXMiOlsibGliL3ByZXNldC9wcmVzZXQuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFVLE1BQU0sZUFBZSxDQUFDO0FBQ2xELE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUVyRCxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFDekQsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQzNELE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSw2QkFBNkIsQ0FBQztBQUM3RCxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFDekQsT0FBTyxFQUFFLHVCQUF1QixFQUFFLE1BQU0sNkNBQTZDLENBQUM7QUFPdEYsSUFBYSxlQUFlLEdBQTVCLE1BQWEsZUFBZTtJQUMxQixZQUNTLGFBQTRCLEVBQzVCLFlBQTBCLEVBQzFCLGNBQThCLEVBQzlCLFlBQTBCLEVBQ3pCLFlBQTRCO1FBSjdCLGtCQUFhLEdBQWIsYUFBYSxDQUFlO1FBQzVCLGlCQUFZLEdBQVosWUFBWSxDQUFjO1FBQzFCLG1CQUFjLEdBQWQsY0FBYyxDQUFnQjtRQUM5QixpQkFBWSxHQUFaLFlBQVksQ0FBYztRQUN6QixpQkFBWSxHQUFaLFlBQVksQ0FBZ0I7SUFDbkMsQ0FBQztJQUVKLFFBQVEsS0FBSSxDQUFDO0lBRWIsWUFBWSxDQUFDLEtBQWE7UUFDeEIsSUFBSSxDQUFDLGNBQWMsQ0FBQyxPQUFPLENBQUMsYUFBYSxHQUFHLElBQUksQ0FBQztRQUNqRCxJQUFJLENBQUMsYUFBYSxDQUFDLFlBQVksQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUN6QyxDQUFDO0lBRUQsY0FBYztRQUNaLE9BQU8sSUFBSSxDQUFDLFlBQVksQ0FBQyxjQUFj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bmVudCwgT25Jbml0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBCc01vZGFsU2VydmljZSB9IGZyb20gJ25neC1ib290c3RyYXAvbW9kYWwnO1xuaW1wb3J0IHsgUHJlc2V0IH0gZnJvbSAnLi4vbW9kZWxzL3ByZXNldCc7XG5pbXBvcnQgeyBJbnRyb1NlcnZpY2UgfSBmcm9tICcuLi9zZXJ2aWNlcy9pbnRyby5zZXJ2aWNlJztcbmltcG9ydCB7IFByZXNldFNlcnZpY2UgfSBmcm9tICcuLi9zZXJ2aWNlcy9wcmVzZXQuc2VydmljZSc7XG5pbXBvcnQgeyBQcm9qZWN0U2VydmljZSB9IGZyb20gJy4uL3NlcnZpY2VzL3Byb2plY3Quc2VydmljZSc7XG5pbXBvcnQgeyBTY2VuZVNlcnZpY2UgfSBmcm9tICcuLi9zZXJ2aWNlcy9zY2VuZS5zZXJ2aWNlJztcbmltcG9ydCB7IFByZXNldFNldHRpbmdzQ29tcG9uZW50IH0gZnJvbSAnLi9wcmVzZXQtc2V0dGluZ3MvcHJlc2V0LXNldHRpbmdzLmNvbXBvbmVudCc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2xpYi1hcHAtcHJlc2V0JyxcbiAgdGVtcGxhdGVVcmw6ICcuL3ByZXNldC5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL3ByZXNldC5jb21wb25lbnQuY3NzJ10sXG59KVxuZXhwb3J0IGNsYXNzIFByZXNldENvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XG4gIGNvbnN0cnVjdG9yKFxuICAgIHB1YmxpYyBwcmVzZXRTZXJ2aWNlOiBQcmVzZXRTZXJ2aWNlLFxuICAgIHB1YmxpYyBzY2VuZVNlcnZpY2U6IFNjZW5lU2VydmljZSxcbiAgICBwdWJsaWMgcHJvamVjdFNlcnZpY2U6IFByb2plY3RTZXJ2aWNlLFxuICAgIHB1YmxpYyBpbnRyb1NlcnZpY2U6IEludHJvU2VydmljZSxcbiAgICBwcml2YXRlIG1vZGFsU2VydmljZTogQnNNb2RhbFNlcnZpY2VcbiAgKSB7fVxuXG4gIG5nT25Jbml0KCkge31cblxuICBzZWxlY3RQcmVzZXQoaW5kZXg6IG51bWJlcikge1xuICAgIHRoaXMucHJvamVjdFNlcnZpY2UucHJvamVjdC5wcmV2aWV3UHJlc2V0ID0gdHJ1ZTtcbiAgICB0aGlzLnByZXNldFNlcnZpY2Uuc2VsZWN0UHJlc2V0KGluZGV4KTtcbiAgfVxuXG4gIGVuYWJsZUNoZWNrYm94KCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLnNjZW5lU2VydmljZS5zZWxlY3RlZFNjZW5lcyAmJiB0aGlzLnNjZW5lU2VydmljZS5zZWxlY3RlZFNjZW5lcy5sZW5ndGggPT09IDE7XG4gIH1cblxuICBhY3RpdmF0ZVByZXNldChhY3RpdmU6IGJvb2xlYW4sIGluZGV4OiBudW1iZXIpIHtcbiAgICBpZiAodGhpcy5zY2VuZVNlcnZpY2Uuc2VsZWN0ZWRTY2VuZXMgJiYgdGhpcy5zY2VuZVNlcnZpY2Uuc2VsZWN0ZWRTY2VuZXMubGVuZ3RoID09PSAxKSB7XG4gICAgICBjb25zdCB1dWlkID0gdGhpcy5wcm9qZWN0U2VydmljZS5wcm9qZWN0LnByZXNldHNbaW5kZXhdLnV1aWQ7XG5cbiAgICAgIGlmIChhY3RpdmUpIHtcbiAgICAgICAgLy8gQWN0aXZhdGUgYSBuZXcgdXVpZFxuICAgICAgICB0aGlzLnNjZW5lU2VydmljZS5zZWxlY3RlZFNjZW5lc1swXS5wcmVzZXRVdWlkcy5wdXNoKHV1aWQpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgLy8gUmVtb3ZlIHRoZSB1dWlkXG4gICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgdGhpcy5zY2VuZVNlcnZpY2Uuc2VsZWN0ZWRTY2VuZXNbMF0ucHJlc2V0VXVpZHMubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICBpZiAodGhpcy5zY2VuZVNlcnZpY2Uuc2VsZWN0ZWRTY2VuZXNbMF0ucHJlc2V0VXVpZHNbaV0gPT09IHV1aWQpIHtcbiAgICAgICAgICAgIHRoaXMuc2NlbmVTZXJ2aWNlLnNlbGVjdGVkU2NlbmVzWzBdLnByZXNldFV1aWRzLnNwbGljZShpLCAxKTtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBhZGRQcmVzZXQoKSB7XG4gICAgdGhpcy5wcmVzZXRTZXJ2aWNlLmFkZFByZXNldCgpO1xuXG4gICAgaWYgKHRoaXMuc2NlbmVTZXJ2aWNlLnNlbGVjdGVkU2NlbmVzICYmIHRoaXMuc2NlbmVTZXJ2aWNlLnNlbGVjdGVkU2NlbmVzLmxlbmd0aCA9PT0gMSkge1xuICAgICAgdGhpcy5zY2VuZVNlcnZpY2Uuc2VsZWN0ZWRTY2VuZXNbMF0ucHJlc2V0VXVpZHMucHVzaCh0aGlzLnByZXNldFNlcnZpY2Uuc2VsZWN0ZWRQcmVzZXQudXVpZCk7XG4gICAgfVxuICB9XG5cbiAgcmVtb3ZlUHJlc2V0KCkge1xuICAgIGlmICghdGhpcy5wcmVzZXRTZXJ2aWNlLnNlbGVjdGVkUHJlc2V0KSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgdGhpcy5wcm9qZWN0U2VydmljZS5wcm9qZWN0LnByZXNldHMuc3BsaWNlKHRoaXMucHJvamVjdFNlcnZpY2UucHJvamVjdC5wcmVzZXRzLmluZGV4T2YodGhpcy5wcmVzZXRTZXJ2aWNlLnNlbGVjdGVkUHJlc2V0KSwgMSk7XG4gICAgdGhpcy5wcmVzZXRTZXJ2aWNlLnNlbGVjdFByZXNldCgwKTtcbiAgfVxuXG4gIG9wZW5TZXR0aW5ncyhwcmVzZXQ6IFByZXNldCkge1xuICAgIGNvbnN0IGJzTW9kYWxSZWYgPSB0aGlzLm1vZGFsU2VydmljZS5zaG93KFByZXNldFNldHRpbmdzQ29tcG9uZW50LCB7XG4gICAgICBrZXlib2FyZDogdHJ1ZSxcbiAgICAgIGlnbm9yZUJhY2tkcm9wQ2xpY2s6IGZhbHNlLFxuICAgICAgY2xhc3M6ICcnLFxuICAgICAgaW5pdGlhbFN0YXRlOiB7IHByZXNldCB9LFxuICAgIH0pO1xuICB9XG59XG4iXX0=
@@ -1,167 +0,0 @@
1
- import { forkJoin } from 'rxjs';
2
- import { map } from 'rxjs/operators';
3
- import * as THREE from 'three';
4
- import { Fixture3d } from './fixture-3d';
5
- export class ColorChanger3d extends Fixture3d {
6
- constructor(fixtureService, previewMeshService, fixture, scene) {
7
- super(fixtureService, fixture, scene);
8
- this.pointLightMaxIntensity = 2;
9
- this.spotLightMaxIntensity = 5;
10
- this.objectGroup = new THREE.Object3D();
11
- this.spotlightGroup = new THREE.Object3D();
12
- forkJoin([previewMeshService.getMesh('color-changer')])
13
- .pipe(map(([colorChanger]) => {
14
- this.mesh = colorChanger;
15
- this.createObjects();
16
- }))
17
- .subscribe();
18
- }
19
- atmosphereMat() {
20
- const vertexShader = [
21
- 'varying vec3 vVertexWorldPosition;',
22
- 'varying vec3 vVertexNormal;',
23
- 'void main(){',
24
- ' vVertexNormal = normalize(normalMatrix * normal);',
25
- ' vVertexWorldPosition = (modelMatrix * vec4(position, 1.0)).xyz;',
26
- ' // set gl_Position',
27
- ' gl_Position = projectionMatrix * modelViewMatrix * vec4(position, 1.0);',
28
- '}',
29
- ].join('\n');
30
- const fragmentShader = [
31
- 'uniform vec3 glowColor;',
32
- 'uniform float coeficient;',
33
- 'uniform float power;',
34
- 'uniform float opacity;',
35
- 'varying vec3 vVertexNormal;',
36
- 'varying vec3 vVertexWorldPosition;',
37
- 'void main(){',
38
- ' vec3 worldCameraToVertex= vVertexWorldPosition - cameraPosition;',
39
- ' vec3 viewCameraToVertex = (viewMatrix * vec4(worldCameraToVertex, 0.0)).xyz;',
40
- ' viewCameraToVertex = normalize(viewCameraToVertex);',
41
- ' float intensity = pow(coeficient + dot(vVertexNormal, viewCameraToVertex), power);',
42
- ' gl_FragColor = vec4(glowColor, intensity * opacity);',
43
- '}',
44
- ].join('\n');
45
- // create custom material from the shader code above
46
- // that is within specially labeled script tags
47
- const material = new THREE.ShaderMaterial({
48
- uniforms: {
49
- coeficient: {
50
- type: 'f',
51
- value: 0.3,
52
- },
53
- power: {
54
- type: 'f',
55
- value: 1.3,
56
- },
57
- opacity: {
58
- type: 'f',
59
- value: 1.0,
60
- },
61
- glowColor: {
62
- type: 'c',
63
- value: new THREE.Color('white'),
64
- },
65
- },
66
- vertexShader,
67
- fragmentShader,
68
- // blending: THREE.AdditiveBlending,
69
- transparent: true,
70
- depthWrite: false,
71
- });
72
- return material;
73
- }
74
- createSpotLightBeam() {
75
- if (this.spotLightBeam) {
76
- this.spotlightGroup.remove(this.spotLightBeam);
77
- }
78
- // TODO update the correct angle from the profile
79
- const beamAngleDegrees = 14;
80
- const geometry = new THREE.CylinderGeometry(0.8, beamAngleDegrees * 1.2, 100, 64, 20, false);
81
- geometry.applyMatrix(new THREE.Matrix4().makeTranslation(0, -geometry.parameters.height / 2, 0));
82
- geometry.applyMatrix(new THREE.Matrix4().makeRotationX(-Math.PI / 2));
83
- this.atmosphereMaterial = this.atmosphereMat();
84
- this.spotLightBeam = new THREE.Mesh(geometry, this.atmosphereMaterial);
85
- this.spotLightBeam.position.set(0, -0.02, 0);
86
- this.spotlightGroup.add(this.spotLightBeam);
87
- this.spotLightBeam.rotation.x = Math.PI / 2;
88
- }
89
- createObjects() {
90
- this.material = new THREE.MeshLambertMaterial({
91
- color: 0x0d0d0d,
92
- emissive: 0x0d0d0d,
93
- });
94
- this.mesh.material = this.material;
95
- // Add the spotlight
96
- this.spotLight = new THREE.SpotLight(0xffffff, 1);
97
- this.spotLight.angle = 0.244;
98
- this.spotLight.penumbra = 0.5;
99
- this.spotLight.decay = 2;
100
- this.spotLight.distance = 60000;
101
- this.spotLight.castShadow = false;
102
- this.spotLight.intensity = 10;
103
- this.spotLightHelper = new THREE.SpotLightHelper(this.spotLight);
104
- // scene.add(this.spotLightHelper);
105
- const spotLightTarget = new THREE.Object3D();
106
- this.spotLight.target = spotLightTarget;
107
- this.spotlightGroup.add(this.spotLight);
108
- this.spotlightGroup.add(spotLightTarget);
109
- this.spotLight.position.set(0, -1.4, 0);
110
- spotLightTarget.position.set(0, -10, 0);
111
- // Add the point light for the surrounding light
112
- this.pointLight = new THREE.PointLight(0xffffff, 2, 1000);
113
- this.spotlightGroup.add(this.pointLight);
114
- this.pointLight.position.set(0, -1.4, 0);
115
- // Add the light beam
116
- this.createSpotLightBeam();
117
- this.objectGroup.add(this.spotlightGroup);
118
- this.objectGroup.add(this.mesh);
119
- // A moving head has about 32 cm in width
120
- this.objectGroup.scale.multiplyScalar(9);
121
- this.scene.add(this.objectGroup);
122
- this.isLoaded = true;
123
- }
124
- getObject() {
125
- return this.objectGroup;
126
- }
127
- updatePreview(channelValues, masterDimmerValue) {
128
- super.updatePreview(channelValues, masterDimmerValue);
129
- if (!this.isLoaded) {
130
- return;
131
- }
132
- this.updatePosition(this.objectGroup);
133
- // Update the material
134
- if (this.lastSelected !== this.isSelected) {
135
- if (this.isSelected) {
136
- for (const child of this.mesh.children) {
137
- child.material = this.selectedMaterial;
138
- }
139
- }
140
- else {
141
- for (const child of this.mesh.children) {
142
- child.material = this.material;
143
- }
144
- }
145
- this.lastSelected = this.isSelected;
146
- }
147
- // Update the light helpers
148
- this.spotLightHelper.update();
149
- // Apply the colors
150
- const color = new THREE.Color('rgb(' + this.colorRed + ', ' + this.colorGreen + ', ' + this.colorBlue + ')');
151
- this.pointLight.color = color;
152
- this.spotLight.color = color;
153
- this.spotLightBeam.material.uniforms.glowColor.value = color;
154
- // Apply the dimmer value
155
- // Take the color into account for the beam (don't show a black beam)
156
- const intensityColor = Math.max(this.colorRed, this.colorGreen, this.colorBlue);
157
- this.spotLightBeam.material.uniforms.opacity.value = Math.min(intensityColor, this.dimmer) * 0.5;
158
- this.spotLight.intensity = this.spotLightMaxIntensity * this.dimmer;
159
- this.pointLight.intensity = this.pointLightMaxIntensity * this.dimmer;
160
- }
161
- destroy() {
162
- this.scene.remove(this.objectGroup);
163
- this.material.dispose();
164
- this.atmosphereMaterial.dispose();
165
- }
166
- }
167
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29sb3ItY2hhbmdlci0zZC5qcyIsInNvdXJjZVJvb3QiOiJuZzovL0Byb2NrZXRzaG93L2Rlc2lnbmVyLyIsInNvdXJjZXMiOlsibGliL3ByZXZpZXcvbW9kZWxzL2NvbG9yLWNoYW5nZXItM2QudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUNoQyxPQUFPLEVBQUUsR0FBRyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDckMsT0FBTyxLQUFLLEtBQUssTUFBTSxPQUFPLENBQUM7QUFNL0IsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLGNBQWMsQ0FBQztBQUV6QyxNQUFNLE9BQU8sY0FBZSxTQUFRLFNBQVM7SUFvSjNDLFlBQVksY0FBOEIsRUFBRSxrQkFBc0MsRUFBRSxPQUFzQixFQUFFLEtBQVU7UUFDcEgsS0FBSyxDQUFDLGNBQWMsRUFBRSxPQUFPLEVBQUUsS0FBSyxDQUFDLENBQUM7UUFwSnZCLDJCQUFzQixHQUFXLENBQUMsQ0FBQztRQUNuQywwQkFBcUIsR0FBVyxDQUFDLENBQUM7UUFJM0MsZ0JBQVcsR0FBbUIsSUFBSSxLQUFLLENBQUMsUUFBUSxFQUFFLENBQUM7UUFDbkQsbUJBQWMsR0FBbUIsSUFBSSxLQUFLLENBQUMsUUFBUSxFQUFFLENBQUM7UUFnSjVELFFBQVEsQ0FBQyxDQUFDLGtCQUFrQixDQUFDLE9BQU8sQ0FBQyxlQUFlLENBQUMsQ0FBQyxDQUFDO2FBQ3BELElBQUksQ0FDSCxHQUFHLENBQUMsQ0FBQyxDQUFDLFlBQVksQ0FBQyxFQUFFLEVBQUU7WUFDckIsSUFBSSxDQUFDLElBQUksR0FBRyxZQUFZLENBQUM7WUFFekIsSUFBSSxDQUFDLGFBQWEsRUFBRSxDQUFDO1FBQ3ZCLENBQUMsQ0FBQyxDQUNIO2FBQ0EsU0FBUyxFQUFFLENBQUM7SUFDakIsQ0FBQztJQTdJTyxhQUFhO1FBQ25CLE1BQU0sWUFBWSxHQUFHO1lBQ25CLG9DQUFvQztZQUNwQyw2QkFB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QUMsUUFBZ0IsQ0FBQyxRQUFRLENBQUMsT0FBTyxDQUFDLEtBQUssR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLGNBQWMsRUFBRSxJQUFJLENBQUMsTUFBTSxDQUFDLEdBQUcsR0FBRyxDQUFDO1FBRTFHLElBQUksQ0FBQyxTQUFTLENBQUMsU0FBUyxHQUFHLElBQUksQ0FBQyxxQkFBcUIsR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDO1FBQ3BFLElBQUksQ0FBQyxVQUFVLENBQUMsU0FBUyxHQUFHLElBQUksQ0FBQyxzQkFBc0IsR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDO0lBQ3hFLENBQUM7SUFFRCxPQUFPO1FBQ0wsSUFBSSxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxDQUFDO1FBQ3BDLElBQUksQ0FBQyxRQUFRLENBQUMsT0FBTyxFQUFFLENBQUM7UUFDeEIsSUFBSSxDQUFDLGtCQUFrQixDQUFDLE9BQU8sRUFBRSxDQUFDO0lBQ3BDLENBQUM7Q0FDRiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGZvcmtKb2luIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBtYXAgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQgKiBhcyBUSFJFRSBmcm9tICd0aHJlZSc7XG5pbXBvcnQgeyBNZXNoIH0gZnJvbSAndGhyZWUnO1xuaW1wb3J0IHsgQ2FjaGVkRml4dHVyZSB9IGZyb20gJy4uLy4uL21vZGVscy9jYWNoZWQtZml4dHVyZSc7XG5pbXBvcnQgeyBGaXh0dXJlQ2hhbm5lbFZhbHVlIH0gZnJvbSAnLi4vLi4vbW9kZWxzL2ZpeHR1cmUtY2hhbm5lbC12YWx1ZSc7XG5pbXBvcnQgeyBGaXh0dXJlU2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL2ZpeHR1cmUuc2VydmljZSc7XG5pbXBvcnQgeyBQcmV2aWV3TWVzaFNlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy9wcmV2aWV3LW1lc2guc2VydmljZSc7XG5pbXBvcnQgeyBGaXh0dXJlM2QgfSBmcm9tICcuL2ZpeHR1cmUtM2QnO1xuXG5leHBvcnQgY2xhc3MgQ29sb3JDaGFuZ2VyM2QgZXh0ZW5kcyBGaXh0dXJlM2Qge1xuICBwcml2YXRlIHJlYWRvbmx5IHBvaW50TGlnaHRNYXhJbnRlbnNpdHk6IG51bWJlciA9IDI7XG4gIHByaXZhdGUgcmVhZG9ubHkgc3BvdExpZ2h0TWF4SW50ZW5zaXR5OiBudW1iZXIgPSA1O1xuXG4gIHByaXZhdGUgbWVzaDogVEhSRUUuTWVzaDtcblxuICBwcml2YXRlIG9iamVjdEdyb3VwOiBUSFJFRS5PYmplY3QzRCA9IG5ldyBUSFJFRS5PYmplY3QzRCgpO1xuICBwcml2YXRlIHNwb3RsaWdodEdyb3VwOiBUSFJFRS5PYmplY3QzRCA9IG5ldyBUSFJFRS5PYmplY3QzRCgpO1xuICBwcml2YXRlIHNwb3RMaWdodDogVEhSRUUuU3BvdExpZ2h0O1xuICBwcml2YXRlIHNwb3RMaWdodEhlbHBlcjogVEhSRUUuU3BvdExpZ2h0SGVscGVyO1xuICBwcml2YXRlIHNwb3RMaWdodEJlYW06IFRIUkVFLk1lc2g7XG5cbiAgcHJpdmF0ZSBwb2ludExpZ2h0OiBUSFJFRS5Qb2ludExpZ2h0O1xuXG4gIHByaXZhdGUgbGFzdFNlbGVjdGVkOiBib29sZWFuO1xuXG4gIHByaXZhdGUgbWF0ZXJpYWw6IFRIUkVFLk1lc2hTdGFuZGFyZE1hdGVyaWFsO1xuICBwcml2YXRlIGF0bW9zcGhlcmVNYXRlcmlhbDogVEhSRUUuU2hhZGVyTWF0ZXJpYWw7XG5cbiAgcHJpdmF0ZSBhdG1vc3BoZXJlTWF0KCkge1xuICAgIGNvbnN0IHZlcnRleFNoYWRlciA9IFtcbiAgICAgICd2YXJ5aW5nIHZlYzNcdHZWZXJ0ZXhXb3JsZFBvc2l0aW9uOycsXG4gICAgICAndmFyeWluZyB2ZWMzXHR2VmVydGV4Tm9ybWFsOycsXG5cbiAgICAgICd2b2lkIG1haW4oKXsnLFxuICAgICAgJ1x0dlZlcnRleE5vcm1hbCA9IG5vcm1hbGl6ZShub3JtYWxNYXRyaXggKiBub3JtYWwpOycsXG5cbiAgICAgICdcdHZWZXJ0ZXhXb3JsZFBvc2l0aW9uID0gKG1vZGVsTWF0cml4ICogdmVjNChwb3NpdGlvbiwgMS4wKSkueHl6OycsXG5cbiAgICAgICdcdC8vIHNldCBnbF9Qb3NpdGlvbicsXG4gICAgICAnXHRnbF9Qb3NpdGlvblx0PSBwcm9qZWN0aW9uTWF0cml4ICogbW9kZWxWaWV3TWF0cml4ICogdmVjNChwb3NpdGlvbiwgMS4wKTsnLFxuICAgICAgJ30nLFxuICAgIF0uam9pbignXFxuJyk7XG4gICAgY29uc3QgZnJhZ21lbnRTaGFkZXIgPSBbXG4gICAgICAndW5pZm9ybSB2ZWMzXHRnbG93Q29sb3I7JyxcbiAgICAgICd1bmlmb3JtIGZsb2F0XHRjb2VmaWNpZW50OycsXG4gICAgICAndW5pZm9ybSBmbG9hdFx0cG93ZXI7JyxcbiAgICAgICd1bmlmb3JtIGZsb2F0XHRvcGFjaXR5OycsXG5cbiAgICAgICd2YXJ5aW5nIHZlYzNcdHZWZXJ0ZXhOb3JtYWw7JyxcbiAgICAgICd2YXJ5aW5nIHZlYzNcdHZWZXJ0ZXhXb3JsZFBvc2l0aW9uOycsXG5cbiAgICAgICd2b2lkIG1haW4oKXsnLFxuICAgICAgJ1x0dmVjMyB3b3JsZENhbWVyYVRvVmVydGV4PSB2VmVydGV4V29ybGRQb3NpdGlvbiAtIGNhbWVyYVBvc2l0aW9uOycsXG4gICAgICAnXHR2ZWMzIHZpZXdDYW1lcmFUb1ZlcnRleFx0PSAodmlld01hdHJpeCAqIHZlYzQod29ybGRDYW1lcmFUb1ZlcnRleCwgMC4wKSkueHl6OycsXG4gICAgICAnXHR2aWV3Q2FtZXJhVG9WZXJ0ZXhcdD0gbm9ybWFsaXplKHZpZXdDYW1lcmFUb1ZlcnRleCk7JyxcbiAgICAgICdcdGZsb2F0IGludGVuc2l0eVx0XHQ9IHBvdyhjb2VmaWNpZW50ICsgZG90KHZWZXJ0ZXhOb3JtYWwsIHZpZXdDYW1lcmFUb1ZlcnRleCksIHBvd2VyKTsnLFxuICAgICAgJ1x0Z2xfRnJhZ0NvbG9yXHRcdD0gdmVjNChnbG93Q29sb3IsIGludGVuc2l0eSAqIG9wYWNpdHkpOycsXG4gICAgICAnfScsXG4gICAgXS5qb2luKCdcXG4nKTtcblxuICAgIC8vIGNyZWF0ZSBjdXN0b20gbWF0ZXJpYWwgZnJvbSB0aGUgc2hhZGVyIGNvZGUgYWJvdmVcbiAgICAvLyB0aGF0IGlzIHdpdGhpbiBzcGVjaWFsbHkgbGFiZWxlZCBzY3JpcHQgdGFnc1xuICAgIGNvbnN0IG1hdGVyaWFsID0gbmV3IFRIUkVFLlNoYWRlck1hdGVyaWFsKHtcbiAgICAgIHVuaWZvcm1zOiB7XG4gICAgICAgIGNvZWZpY2llbnQ6IHtcbiAgICAgICAgICB0eXBlOiAnZicsXG4gICAgICAgICAgdmFsdWU6IDAuMyxcbiAgICAgICAgfSxcbiAgICAgICAgcG93ZXI6IHtcbiAgICAgICAgICB0eXBlOiAnZicsXG4gICAgICAgICAgdmFsdWU6IDEuMyxcbiAgICAgICAgfSxcbiAgICAgICAgb3BhY2l0eToge1xuICAgICAgICAgIHR5cGU6ICdmJyxcbiAgICAgICAgICB2YWx1ZTogMS4wLFxuICAgICAgICB9LFxuICAgICAgICBnbG93Q29sb3I6IHtcbiAgICAgICAgICB0eXBlOiAnYycsXG4gICAgICAgICAgdmFsdWU6IG5ldyBUSFJFRS5Db2xvcignd2hpdGUnKSxcbiAgICAgICAgfSxcbiAgICAgIH0sXG4gICAgICB2ZXJ0ZXhTaGFkZXIsXG4gICAgICBmcmFnbWVudFNoYWRlcixcbiAgICAgIC8vIGJsZW5kaW5nOiBUSFJFRS5BZGRpdGl2ZUJsZW5kaW5nLFxuICAgICAgdHJhbnNwYXJlbnQ6IHRydWUsXG4gICAgICBkZXB0aFdyaXRlOiBmYWxzZSxcbiAgICB9KTtcblxuICAgIHJldHVybiBtYXRlcmlhbDtcbiAgfVxuXG4gIHByaXZhdGUgY3JlYXRlU3BvdExpZ2h0QmVhbSgpIHtcbiAgICBpZiAodGhpcy5zcG90TGlnaHRCZWFtKSB7XG4gICAgICB0aGlzLnNwb3RsaWdodEdyb3VwLnJlbW92ZSh0aGlzLnNwb3RMaWdodEJlYW0pO1xuICAgIH1cblxuICAgIC8vIFRPRE8gdXBkYXRlIHRoZSBjb3JyZWN0IGFuZ2xlIGZyb20gdGhlIHByb2ZpbGVcbiAgICBjb25zdCBiZWFtQW5nbGVEZWdyZWVzID0gMTQ7XG4gICAgY29uc3QgZ2VvbWV0cnkgPSBuZXcgVEhSRUUuQ3lsaW5kZXJHZW9tZXRyeSgwLjgsIGJlYW1BbmdsZURlZ3JlZXMgKiAxLjIsIDEwMCwgNjQsIDIwLCBmYWxzZSk7XG4gICAgZ2VvbWV0cnkuYXBwbHlNYXRyaXgobmV3IFRIUkVFLk1hdHJpeDQoKS5tYWtlVHJhbnNsYXRpb24oMCwgLWdlb21ldHJ5LnBhcmFtZXRlcnMuaGVpZ2h0IC8gMiwgMCkpO1xuICAgIGdlb21ldHJ5LmFwcGx5TWF0cml4KG5ldyBUSFJFRS5NYXRyaXg0KCkubWFrZVJvdGF0aW9uWCgtTWF0aC5QSSAvIDIpKTtcblxuICAgIHRoaXMuYXRtb3NwaGVyZU1hdGVyaWFsID0gdGhpcy5hdG1vc3BoZXJlTWF0KCk7XG4gICAgdGhpcy5zcG90TGlnaHRCZWFtID0gbmV3IFRIUkVFLk1lc2goZ2VvbWV0cnksIHRoaXMuYXRtb3NwaGVyZU1hdGVyaWFsKTtcbiAgICB0aGlzLnNwb3RMaWdodEJlYW0ucG9zaXRpb24uc2V0KDAsIC0wLjAyLCAwKTtcblxuICAgIHRoaXMuc3BvdGxpZ2h0R3JvdXAuYWRkKHRoaXMuc3BvdExpZ2h0QmVhbSk7XG4gICAgdGhpcy5zcG90TGlnaHRCZWFtLnJvdGF0aW9uLnggPSBNYXRoLlBJIC8gMjtcbiAgfVxuXG4gIHByaXZhdGUgY3JlYXRlT2JqZWN0cygpIHtcbiAgICAodGhpcy5tYXRlcmlhbCBhcyBhbnkpID0gbmV3IFRIUkVFLk1lc2hMYW1iZXJ0TWF0ZXJpYWwoe1xuICAgICAgY29sb3I6IDB4MGQwZDBkLFxuICAgICAgZW1pc3NpdmU6IDB4MGQwZDBkLFxuICAgIH0pO1xuXG4gICAgdGhpcy5tZXNoLm1hdGVyaWFsID0gdGhpcy5tYXRlcmlhbDtcblxuICAgIC8vIEFkZCB0aGUgc3BvdGxpZ2h0XG4gICAgdGhpcy5zcG90TGlnaHQgPSBuZXcgVEhSRUUuU3BvdExpZ2h0KDB4ZmZmZmZmLCAxKTtcbiAgICB0aGlzLnNwb3RMaWdodC5hbmdsZSA9IDAuMjQ0O1xuICAgIHRoaXMuc3BvdExpZ2h0LnBlbnVtYnJhID0gMC41O1xuICAgIHRoaXMuc3BvdExpZ2h0LmRlY2F5ID0gMjtcbiAgICB0aGlzLnNwb3RMaWdodC5kaXN0YW5jZSA9IDYwMDAwO1xuICAgIHRoaXMuc3BvdExpZ2h0LmNhc3RTaGFkb3cgPSBmYWxzZTtcbiAgICB0aGlzLnNwb3RMaWdodC5pbnRlbnNpdHkgPSAxMDtcblxuICAgIHRoaXMuc3BvdExpZ2h0SGVscGVyID0gbmV3IFRIUkVFLlNwb3RMaWdodEhlbHBlcih0aGlzLnNwb3RMaWdodCk7XG4gICAgLy8gc2NlbmUuYWRkKHRoaXMuc3BvdExpZ2h0SGVscGVyKTtcblxuICAgIGNvbnN0IHNwb3RMaWdodFRhcmdldCA9IG5ldyBUSFJFRS5PYmplY3QzRCgpO1xuICAgIHRoaXMuc3BvdExpZ2h0LnRhcmdldCA9IHNwb3RMaWdodFRhcmdldDtcblxuICAgIHRoaXMuc3BvdGxpZ2h0R3JvdXAuYWRkKHRoaXMuc3BvdExpZ2h0KTtcbiAgICB0aGlzLnNwb3RsaWdodEdyb3VwLmFkZChzcG90TGlnaHRUYXJnZXQpO1xuICAgIHRoaXMuc3BvdExpZ2h0LnBvc2l0aW9uLnNldCgwLCAtMS40LCAwKTtcbiAgICBzcG90TGlnaHRUYXJnZXQucG9zaXRpb24uc2V0KDAsIC0xMCwgMCk7XG5cbiAgICAvLyBBZGQgdGhlIHBvaW50IGxpZ2h0IGZvciB0aGUgc3Vycm91bmRpbmcgbGlnaHRcbiAgICB0aGlzLnBvaW50TGlnaHQgPSBuZXcgVEhSRUUuUG9pbnRMaWdodCgweGZmZmZmZiwgMiwgMTAwMCk7XG4gICAgdGhpcy5zcG90bGlnaHRHcm91cC5hZGQodGhpcy5wb2ludExpZ2h0KTtcbiAgICB0aGlzLnBvaW50TGlnaHQucG9zaXRpb24uc2V0KDAsIC0xLjQsIDApO1xuXG4gICAgLy8gQWRkIHRoZSBsaWdodCBiZWFtXG4gICAgdGhpcy5jcmVhdGVTcG90TGlnaHRCZWFtKCk7XG5cbiAgICB0aGlzLm9iamVjdEdyb3VwLmFkZCh0aGlzLnNwb3RsaWdodEdyb3VwKTtcbiAgICB0aGlzLm9iamVjdEdyb3VwLmFkZCh0aGlzLm1lc2gpO1xuXG4gICAgLy8gQSBtb3ZpbmcgaGVhZCBoYXMgYWJvdXQgMzIgY20gaW4gd2lkdGhcbiAgICB0aGlzLm9iamVjdEdyb3VwLnNjYWxlLm11bHRpcGx5U2NhbGFyKDkpO1xuXG4gICAgdGhpcy5zY2VuZS5hZGQodGhpcy5vYmplY3RHcm91cCk7XG5cbiAgICB0aGlzLmlzTG9hZGVkID0gdHJ1ZTtcbiAgfVxuXG4gIGNvbnN0cnVjdG9yKGZpeHR1cmVTZXJ2aWNlOiBGaXh0dXJlU2VydmljZSwgcHJldmlld01lc2hTZXJ2aWNlOiBQcmV2aWV3TWVzaFNlcnZpY2UsIGZpeHR1cmU6IENhY2hlZEZpeHR1cmUsIHNjZW5lOiBhbnkpIHtcbiAgICBzdXBlcihmaXh0dXJlU2VydmljZSwgZml4dHVyZSwgc2NlbmUpO1xuXG4gICAgZm9ya0pvaW4oW3ByZXZpZXdNZXNoU2VydmljZS5nZXRNZXNoKCdjb2xvci1jaGFuZ2VyJyldKVxuICAgICAgLnBpcGUoXG4gICAgICAgIG1hcCgoW2NvbG9yQ2hhbmdlcl0pID0+IHtcbiAgICAgICAgICB0aGlzLm1lc2ggPSBjb2xvckNoYW5nZXI7XG5cbiAgICAgICAgICB0aGlzLmNyZWF0ZU9iamVjdHMoKTtcbiAgICAgICAgfSlcbiAgICAgIClcbiAgICAgIC5zdWJzY3JpYmUoKTtcbiAgfVxuXG4gIHB1YmxpYyBnZXRPYmplY3QoKTogVEhSRUUuT2JqZWN0M0Qge1xuICAgIHJldHVybiB0aGlzLm9iamVjdEdyb3VwO1xuICB9XG5cbiAgcHVibGljIHVwZGF0ZVByZXZpZXcoY2hhbm5lbFZhbHVlczogRml4dHVyZUNoYW5uZWxWYWx1ZVtdLCBtYXN0ZXJEaW1tZXJWYWx1ZTogbnVtYmVyKTogdm9pZCB7XG4gICAgc3VwZXIudXBkYXRlUHJldmlldyhjaGFubmVsVmFsdWVzLCBtYXN0ZXJEaW1tZXJWYWx1ZSk7XG5cbiAgICBpZiAoIXRoaXMuaXNMb2FkZWQpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB0aGlzLnVwZGF0ZVBvc2l0aW9uKHRoaXMub2JqZWN0R3JvdXApO1xuXG4gICAgLy8gVXBkYXRlIHRoZSBtYXRlcmlhbFxuICAgIGlmICh0aGlzLmxhc3RTZWxlY3RlZCAhPT0gdGhpcy5pc1NlbGVjdGVkKSB7XG4gICAgICBpZiAodGhpcy5pc1NlbGVjdGVkKSB7XG4gICAgICAgIGZvciAoY29uc3QgY2hpbGQgb2YgdGhpcy5tZXNoLmNoaWxkcmVuKSB7XG4gICAgICAgICAgKGNoaWxkIGFzIE1lc2gpLm1hdGVyaWFsID0gdGhpcy5zZWxlY3RlZE1hdGVyaWFsO1xuICAgICAgICB9XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBmb3IgKGNvbnN0IGNoaWxkIG9mIHRoaXMubWVzaC5jaGlsZHJlbikge1xuICAgICAgICAgIChjaGlsZCBhcyBNZXNoKS5tYXRlcmlhbCA9IHRoaXMubWF0ZXJpYWw7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgdGhpcy5sYXN0U2VsZWN0ZWQgPSB0aGlzLmlzU2VsZWN0ZWQ7XG4gICAgfVxuXG4gICAgLy8gVXBkYXRlIHRoZSBsaWdodCBoZWxwZXJzXG4gICAgdGhpcy5zcG90TGlnaHRIZWxwZXIudXBkYXRlKCk7XG5cbiAgICAvLyBBcHBseSB0aGUgY29sb3JzXG4gICAgY29uc3QgY29sb3IgPSBuZXcgVEhSRUUuQ29sb3IoJ3JnYignICsgdGhpcy5jb2xvclJlZCArICcsICcgKyB0aGlzLmNvbG9yR3JlZW4gKyAnLCAnICsgdGhpcy5jb2xvckJsdWUgKyAnKScpO1xuXG4gICAgdGhpcy5wb2ludExpZ2h0LmNvbG9yID0gY29sb3I7XG5cbiAgICB0aGlzLnNwb3RMaWdodC5jb2xvciA9IGNvbG9yO1xuICAgICh0aGlzLnNwb3RMaWdodEJlYW0ubWF0ZXJpYWwgYXMgYW55KS51bmlmb3Jtcy5nbG93Q29sb3IudmFsdWUgPSBjb2xvcjtcblxuICAgIC8vIEFwcGx5IHRoZSBkaW1tZXIgdmFsdWVcbiAgICAvLyBUYWtlIHRoZSBjb2xvciBpbnRvIGFjY291bnQgZm9yIHRoZSBiZWFtIChkb24ndCBzaG93IGEgYmxhY2sgYmVhbSlcbiAgICBjb25zdCBpbnRlbnNpdHlDb2xvciA9IE1hdGgubWF4KHRoaXMuY29sb3JSZWQsIHRoaXMuY29sb3JHcmVlbiwgdGhpcy5jb2xvckJsdWUpO1xuICAgICh0aGlzLnNwb3RMaWdodEJlYW0ubWF0ZXJpYWwgYXMgYW55KS51bmlmb3Jtcy5vcGFjaXR5LnZhbHVlID0gTWF0aC5taW4oaW50ZW5zaXR5Q29sb3IsIHRoaXMuZGltbWVyKSAqIDAuNTtcblxuICAgIHRoaXMuc3BvdExpZ2h0LmludGVuc2l0eSA9IHRoaXMuc3BvdExpZ2h0TWF4SW50ZW5zaXR5ICogdGhpcy5kaW1tZXI7XG4gICAgdGhpcy5wb2ludExpZ2h0LmludGVuc2l0eSA9IHRoaXMucG9pbnRMaWdodE1heEludGVuc2l0eSAqIHRoaXMuZGltbWVyO1xuICB9XG5cbiAgZGVzdHJveSgpIHtcbiAgICB0aGlzLnNjZW5lLnJlbW92ZSh0aGlzLm9iamVjdEdyb3VwKTtcbiAgICB0aGlzLm1hdGVyaWFsLmRpc3Bvc2UoKTtcbiAgICB0aGlzLmF0bW9zcGhlcmVNYXRlcmlhbC5kaXNwb3NlKCk7XG4gIH1cbn1cbiJdfQ==
@@ -1,150 +0,0 @@
1
- import * as THREE from 'three';
2
- import { Positioning } from '../../models/fixture';
3
- import { FixtureCapabilityColor, FixtureCapabilityType } from '../../models/fixture-capability';
4
- export class Fixture3d {
5
- constructor(fixtureService, fixture, scene) {
6
- this.fixtureService = fixtureService;
7
- this.fixtureHasDimmer = false;
8
- this.fixtureHasColorWheel = false;
9
- this.fixtureHasColor = false;
10
- this.dimmer = 0;
11
- this.isSelected = false;
12
- this.isLoaded = false;
13
- this.fixture = fixture;
14
- this.scene = scene;
15
- // TODO Don't create it for each fixture but pass it from the preview service
16
- this.selectedMaterial = new THREE.MeshLambertMaterial({
17
- color: 0xff00ff,
18
- emissive: 0xff00ff,
19
- });
20
- // evaluate, various capabilities of this fixture
21
- for (const cachedChannel of this.fixture.channels) {
22
- if (cachedChannel.channel) {
23
- for (const capability of cachedChannel.capabilities) {
24
- switch (capability.capability.type) {
25
- case FixtureCapabilityType.Intensity:
26
- this.fixtureHasDimmer = true;
27
- break;
28
- case FixtureCapabilityType.ColorIntensity:
29
- this.fixtureHasColor = true;
30
- break;
31
- }
32
- }
33
- if (cachedChannel.colorWheel) {
34
- this.fixtureHasColorWheel = true;
35
- }
36
- }
37
- }
38
- }
39
- getCapabilityInValue(channel, value) {
40
- for (const capability of channel.capabilities) {
41
- if (capability.capability.dmxRange.length === 0 ||
42
- (value >= capability.capability.dmxRange[0] && value <= capability.capability.dmxRange[1])) {
43
- return capability;
44
- }
45
- }
46
- return undefined;
47
- }
48
- // Apply the properties of the base fixture to the preview
49
- updatePreview(channelValues, masterDimmerValue) {
50
- // Apply default settings
51
- if (this.fixtureHasDimmer) {
52
- this.dimmer = 0;
53
- }
54
- else {
55
- this.dimmer = 1;
56
- }
57
- this.colorRed = 255;
58
- this.colorGreen = 255;
59
- this.colorBlue = 255;
60
- if (!this.fixtureHasColorWheel && this.fixtureHasColor) {
61
- this.colorRed = 0;
62
- this.colorGreen = 0;
63
- this.colorBlue = 0;
64
- }
65
- for (const channelValue of channelValues) {
66
- const channel = this.fixtureService.getChannelByName(this.fixture, channelValue.channelName);
67
- const capability = this.getCapabilityInValue(channel, channelValue.value);
68
- if (capability) {
69
- switch (capability.capability.type) {
70
- case FixtureCapabilityType.Intensity: {
71
- let valuePercentage;
72
- if (capability.capability.dmxRange.length > 0) {
73
- valuePercentage =
74
- (channelValue.value - capability.capability.dmxRange[0]) /
75
- (capability.capability.dmxRange[1] - capability.capability.dmxRange[0]);
76
- }
77
- else {
78
- valuePercentage = channelValue.value / channel.maxValue;
79
- }
80
- this.dimmer = valuePercentage * masterDimmerValue;
81
- break;
82
- }
83
- case FixtureCapabilityType.ColorIntensity: {
84
- const valuePercentage = (255 * channelValue.value) / channel.maxValue;
85
- switch (capability.capability.color) {
86
- case FixtureCapabilityColor.Red:
87
- // Round needed for threejs
88
- this.colorRed = Math.round(valuePercentage);
89
- break;
90
- case FixtureCapabilityColor.Green:
91
- // Round needed for threejs
92
- this.colorGreen = Math.round(valuePercentage);
93
- break;
94
- case FixtureCapabilityColor.Blue:
95
- // Round needed for threejs
96
- this.colorBlue = Math.round(valuePercentage);
97
- break;
98
- }
99
- break;
100
- }
101
- case FixtureCapabilityType.WheelSlot: {
102
- const mixedColor = this.fixtureService.getMixedWheelSlotColor(capability.wheel, capability.capability.slotNumber);
103
- if (mixedColor) {
104
- this.colorRed = Math.round(mixedColor.red);
105
- this.colorGreen = Math.round(mixedColor.green);
106
- this.colorBlue = Math.round(mixedColor.blue);
107
- }
108
- break;
109
- }
110
- }
111
- }
112
- }
113
- }
114
- updatePosition(object) {
115
- // Update the position
116
- switch (this.fixture.fixture.positioning) {
117
- case Positioning.topFront: {
118
- object.rotation.x = THREE.Math.degToRad(0);
119
- object.position.set(this.fixture.fixture.positionX, this.fixture.fixture.positionY - 13, this.fixture.fixture.positionZ);
120
- break;
121
- }
122
- case Positioning.bottomFront: {
123
- object.rotation.x = THREE.Math.degToRad(180);
124
- object.position.set(this.fixture.fixture.positionX, this.fixture.fixture.positionY + 13, this.fixture.fixture.positionZ);
125
- break;
126
- }
127
- case Positioning.topBack: {
128
- object.rotation.x = THREE.Math.degToRad(0);
129
- object.position.set(this.fixture.fixture.positionX, this.fixture.fixture.positionY - 13, this.fixture.fixture.positionZ);
130
- break;
131
- }
132
- case Positioning.bottomBack: {
133
- object.rotation.x = THREE.Math.degToRad(180);
134
- object.position.set(this.fixture.fixture.positionX, this.fixture.fixture.positionY + 13, this.fixture.fixture.positionZ);
135
- break;
136
- }
137
- case Positioning.manual: {
138
- object.position.set(this.fixture.fixture.positionX, this.fixture.fixture.positionY, this.fixture.fixture.positionZ);
139
- object.rotation.x = THREE.Math.degToRad(this.fixture.fixture.rotationX);
140
- object.rotation.y = THREE.Math.degToRad(this.fixture.fixture.rotationY);
141
- object.rotation.z = THREE.Math.degToRad(this.fixture.fixture.rotationZ);
142
- break;
143
- }
144
- }
145
- }
146
- destroy() {
147
- this.selectedMaterial.dispose();
148
- }
149
- }
150
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZml4dHVyZS0zZC5qcyIsInNvdXJjZVJvb3QiOiJuZzovL0Byb2NrZXRzaG93L2Rlc2lnbmVyLyIsInNvdXJjZXMiOlsibGliL3ByZXZpZXcvbW9kZWxzL2ZpeHR1cmUtM2QudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxLQUFLLEtBQUssTUFBTSxPQUFPLENBQUM7QUFJL0IsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQ25ELE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxxQkFBcUIsRUFBRSxNQUFNLGlDQUFpQyxDQUFDO0FBSWhHLE1BQU0sT0FBZ0IsU0FBUztJQW1CN0IsWUFBbUIsY0FBOEIsRUFBRSxPQUFzQixFQUFFLEtBQVU7UUFBbEUsbUJBQWMsR0FBZCxjQUFjLENBQWdCO1FBakJqRCxxQkFBZ0IsR0FBRyxLQUFLLENBQUM7UUFDekIseUJBQW9CLEdBQUcsS0FBSyxDQUFDO1FBQzdCLG9CQUFlLEdBQUcsS0FBSyxDQUFDO1FBUXhCLFdBQU0sR0FBRyxDQUFDLENBQUM7UUFFWCxlQUFVLEdBQUcsS0FBSyxDQUFDO1FBQ25CLGFBQVEsR0FBRyxLQUFLLENBQUM7UUFLZixJQUFJLENBQUMsT0FBTyxHQUFHLE9BQU8sQ0FBQztRQUN2QixJQUFJLENBQUMsS0FBSyxHQUFHLEtBQUssQ0FBQztRQUVuQiw2RUFBNkU7UUFDN0UsSUFBSSxDQUFDLGdCQUFnQixHQUFHLElBQUksS0FBSyxDQUFDLG1CQUFtQixDQUFDO1lBQ3BELEtBQUssRUFBRSxRQUFRO1lBQ2YsUUFBUSxFQUFFLFFBQVE7U0FDbkIsQ0FBQyxDQUFDO1FBRUgsaURBQWlEO1FBQ2pELEtBQUssTUFBTSxhQUFhLElBQUksSUFBSSxDQUFDLE9BQU8sQ0FBQyxRQUFRLEVBQUU7WUFDakQsSUFBSSxhQUFhLENBQUMsT0FBTyxFQUFFO2dCQUN6QixLQUFLLE1BQU0sVUFBVSxJQUFJLGFBQWEsQ0FBQyxZQUFZLEVBQUU7b0JBQ25ELFFBQVEsVUFBVSxDQUFDLFVB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QztnQkFDeEUsTUFBTSxDQUFDLFFBQVEsQ0FBQyxDQUFDLEdBQUcsS0FBSyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMsU0FBUyxDQUFDLENBQUM7Z0JBQ3hFLE1BQU07YUFDUDtTQUNGO0lBQ0gsQ0FBQztJQUVELE9BQU87UUFDTCxJQUFJLENBQUMsZ0JBQWdCLENBQUMsT0FBTyxFQUFFLENBQUM7SUFDbEMsQ0FBQztDQUNGIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0ICogYXMgVEhSRUUgZnJvbSAndGhyZWUnO1xuaW1wb3J0IHsgQ2FjaGVkRml4dHVyZSB9IGZyb20gJy4uLy4uL21vZGVscy9jYWNoZWQtZml4dHVyZSc7XG5pbXBvcnQgeyBDYWNoZWRGaXh0dXJlQ2FwYWJpbGl0eSB9IGZyb20gJy4uLy4uL21vZGVscy9jYWNoZWQtZml4dHVyZS1jYXBhYmlsaXR5JztcbmltcG9ydCB7IENhY2hlZEZpeHR1cmVDaGFubmVsIH0gZnJvbSAnLi4vLi4vbW9kZWxzL2NhY2hlZC1maXh0dXJlLWNoYW5uZWwnO1xuaW1wb3J0IHsgUG9zaXRpb25pbmcgfSBmcm9tICcuLi8uLi9tb2RlbHMvZml4dHVyZSc7XG5pbXBvcnQgeyBGaXh0dXJlQ2FwYWJpbGl0eUNvbG9yLCBGaXh0dXJlQ2FwYWJpbGl0eVR5cGUgfSBmcm9tICcuLi8uLi9tb2RlbHMvZml4dHVyZS1jYXBhYmlsaXR5JztcbmltcG9ydCB7IEZpeHR1cmVDaGFubmVsVmFsdWUgfSBmcm9tICcuLi8uLi9tb2RlbHMvZml4dHVyZS1jaGFubmVsLXZhbHVlJztcbmltcG9ydCB7IEZpeHR1cmVTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvZml4dHVyZS5zZXJ2aWNlJztcblxuZXhwb3J0IGFic3RyYWN0IGNsYXNzIEZpeHR1cmUzZCB7XG4gIGZpeHR1cmU6IENhY2hlZEZpeHR1cmU7XG4gIGZpeHR1cmVIYXNEaW1tZXIgPSBmYWxzZTtcbiAgZml4dHVyZUhhc0NvbG9yV2hlZWwgPSBmYWxzZTtcbiAgZml4dHVyZUhhc0NvbG9yID0gZmFsc2U7XG5cbiAgc2NlbmU6IGFueTtcblxuICBjb2xvclJlZDogbnVtYmVyO1xuICBjb2xvckdyZWVuOiBudW1iZXI7XG4gIGNvbG9yQmx1ZTogbnVtYmVyO1xuXG4gIGRpbW1lciA9IDA7XG5cbiAgaXNTZWxlY3RlZCA9IGZhbHNlO1xuICBpc0xvYWRlZCA9IGZhbHNlO1xuXG4gIHByb3RlY3RlZCBzZWxlY3RlZE1hdGVyaWFsOiBUSFJFRS5NZXNoTGFtYmVydE1hdGVyaWFsO1xuXG4gIGNvbnN0cnVjdG9yKHB1YmxpYyBmaXh0dXJlU2VydmljZTogRml4dHVyZVNlcnZpY2UsIGZpeHR1cmU6IENhY2hlZEZpeHR1cmUsIHNjZW5lOiBhbnkpIHtcbiAgICB0aGlzLmZpeHR1cmUgPSBmaXh0dXJlO1xuICAgIHRoaXMuc2NlbmUgPSBzY2VuZTtcblxuICAgIC8vIFRPRE8gRG9uJ3QgY3JlYXRlIGl0IGZvciBlYWNoIGZpeHR1cmUgYnV0IHBhc3MgaXQgZnJvbSB0aGUgcHJldmlldyBzZXJ2aWNlXG4gICAgdGhpcy5zZWxlY3RlZE1hdGVyaWFsID0gbmV3IFRIUkVFLk1lc2hMYW1iZXJ0TWF0ZXJpYWwoe1xuICAgICAgY29sb3I6IDB4ZmYwMGZmLFxuICAgICAgZW1pc3NpdmU6IDB4ZmYwMGZmLFxuICAgIH0pO1xuXG4gICAgLy8gZXZhbHVhdGUsIHZhcmlvdXMgY2FwYWJpbGl0aWVzIG9mIHRoaXMgZml4dHVyZVxuICAgIGZvciAoY29uc3QgY2FjaGVkQ2hhbm5lbCBvZiB0aGlzLmZpeHR1cmUuY2hhbm5lbHMpIHtcbiAgICAgIGlmIChjYWNoZWRDaGFubmVsLmNoYW5uZWwpIHtcbiAgICAgICAgZm9yIChjb25zdCBjYXBhYmlsaXR5IG9mIGNhY2hlZENoYW5uZWwuY2FwYWJpbGl0aWVzKSB7XG4gICAgICAgICAgc3dpdGNoIChjYXBhYmlsaXR5LmNhcGFiaWxpdHkudHlwZSkge1xuICAgICAgICAgICAgY2FzZSBGaXh0dXJlQ2FwYWJpbGl0eVR5cGUuSW50ZW5zaXR5OlxuICAgICAgICAgICAgICB0aGlzLmZpeHR1cmVIYXNEaW1tZXIgPSB0cnVlO1xuICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNhc2UgRml4dHVyZUNhcGFiaWxpdHlUeXBlLkNvbG9ySW50ZW5zaXR5OlxuICAgICAgICAgICAgICB0aGlzLmZpeHR1cmVIYXNDb2xvciA9IHRydWU7XG4gICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChjYWNoZWRDaGFubmVsLmNvbG9yV2hlZWwpIHtcbiAgICAgICAgICB0aGlzLmZpeHR1cmVIYXNDb2xvcldoZWVsID0gdHJ1ZTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHByb3RlY3RlZCBnZXRDYXBhYmlsaXR5SW5WYWx1ZShjaGFubmVsOiBDYWNoZWRGaXh0dXJlQ2hhbm5lbCwgdmFsdWU6IG51bWJlcik6IENhY2hlZEZpeHR1cmVDYXBhYmlsaXR5IHtcbiAgICBmb3IgKGNvbnN0IGNhcGFiaWxpdHkgb2YgY2hhbm5lbC5jYXBhYmlsaXRpZXMpIHtcbiAgICAgIGlmIChcbiAgICAgICAgY2FwYWJpbGl0eS5jYXBhYmlsaXR5LmRteFJhbmdlLmxlbmd0aCA9PT0gMCB8fFxuICAgICAgICAodmFsdWUgPj0gY2FwYWJpbGl0eS5jYXBhYmlsaXR5LmRteFJhbmdlWzBdICYmIHZhbHVlIDw9IGNhcGFiaWxpdHkuY2FwYWJpbGl0eS5kbXhSYW5nZVsxXSlcbiAgICAgICkge1xuICAgICAgICByZXR1cm4gY2FwYWJpbGl0eTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gdW5kZWZpbmVkO1xuICB9XG5cbiAgLy8gQXBwbHkgdGhlIHByb3BlcnRpZXMgb2YgdGhlIGJhc2UgZml4dHVyZSB0byB0aGUgcHJldmlld1xuICB1cGRhdGVQcmV2aWV3KGNoYW5uZWxWYWx1ZXM6IEZpeHR1cmVDaGFubmVsVmFsdWVbXSwgbWFzdGVyRGltbWVyVmFsdWU6IG51bWJlcikge1xuICAgIC8vIEFwcGx5IGRlZmF1bHQgc2V0dGluZ3NcbiAgICBpZiAodGhpcy5maXh0dXJlSGFzRGltbWVyKSB7XG4gICAgICB0aGlzLmRpbW1lciA9IDA7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuZGltbWVyID0gMTtcbiAgICB9XG5cbiAgICB0aGlzLmNvbG9yUmVkID0gMjU1O1xuICAgIHRoaXMuY29sb3JHcmVlbiA9IDI1NTtcbiAgICB0aGlzLmNvbG9yQmx1ZSA9IDI1NTtcblxuICAgIGlmICghdGhpcy5maXh0dXJlSGFzQ29sb3JXaGVlbCAmJiB0aGlzLmZpeHR1cmVIYXNDb2xvcikge1xuICAgICAgdGhpcy5jb2xvclJlZCA9IDA7XG4gICAgICB0aGlzLmNvbG9yR3JlZW4gPSAwO1xuICAgICAgdGhpcy5jb2xvckJsdWUgPSAwO1xuICAgIH1cblxuICAgIGZvciAoY29uc3QgY2hhbm5lbFZhbHVlIG9mIGNoYW5uZWxWYWx1ZXMpIHtcbiAgICAgIGNvbnN0IGNoYW5uZWwgPSB0aGlzLmZpeHR1cmVTZXJ2aWNlLmdldENoYW5uZWxCeU5hbWUodGhpcy5maXh0dXJlLCBjaGFubmVsVmFsdWUuY2hhbm5lbE5hbWUpO1xuICAgICAgY29uc3QgY2FwYWJpbGl0eSA9IHRoaXMuZ2V0Q2FwYWJpbGl0eUluVmFsdWUoY2hhbm5lbCwgY2hhbm5lbFZhbHVlLnZhbHVlKTtcblxuICAgICAgaWYgKGNhcGFiaWxpdHkpIHtcbiAgICAgICAgc3dpdGNoIChjYXBhYmlsaXR5LmNhcGFiaWxpdHkudHlwZSkge1xuICAgICAgICAgIGNhc2UgRml4dHVyZUNhcGFiaWxpdHlUeXBlLkludGVuc2l0eToge1xuICAgICAgICAgICAgbGV0IHZhbHVlUGVyY2VudGFnZTogbnVtYmVyO1xuICAgICAgICAgICAgaWYgKGNhcGFiaWxpdHkuY2FwYWJpbGl0eS5kbXhSYW5nZS5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgICAgIHZhbHVlUGVyY2VudGFnZSA9XG4gICAgICAgICAgICAgICAgKGNoYW5uZWxWYWx1ZS52YWx1ZSAtIGNhcGFiaWxpdHkuY2FwYWJpbGl0eS5kbXhSYW5nZVswXSkgL1xuICAgICAgICAgICAgICAgIChjYXBhYmlsaXR5LmNhcGFiaWxpdHkuZG14UmFuZ2VbMV0gLSBjYXBhYmlsaXR5LmNhcGFiaWxpdHkuZG14UmFuZ2VbMF0pO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgdmFsdWVQZXJjZW50YWdlID0gY2hhbm5lbFZhbHVlLnZhbHVlIC8gY2hhbm5lbC5tYXhWYWx1ZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHRoaXMuZGltbWVyID0gdmFsdWVQZXJjZW50YWdlICogbWFzdGVyRGltbWVyVmFsdWU7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgICB9XG4gICAgICAgICAgY2FzZSBGaXh0dXJlQ2FwYWJpbGl0eVR5cGUuQ29sb3JJbnRlbnNpdHk6IHtcbiAgICAgICAgICAgIGNvbnN0IHZhbHVlUGVyY2VudGFnZSA9ICgyNTUgKiBjaGFubmVsVmFsdWUudmFsdWUpIC8gY2hhbm5lbC5tYXhWYWx1ZTtcbiAgICAgICAgICAgIHN3aXRjaCAoY2FwYWJpbGl0eS5jYXBhYmlsaXR5LmNvbG9yKSB7XG4gICAgICAgICAgICAgIGNhc2UgRml4dHVyZUNhcGFiaWxpdHlDb2xvci5SZWQ6XG4gICAgICAgICAgICAgICAgLy8gUm91bmQgbmVlZGVkIGZvciB0aHJlZWpzXG4gICAgICAgICAgICAgICAgdGhpcy5jb2xvclJlZCA9IE1hdGgucm91bmQodmFsdWVQZXJjZW50YWdlKTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgY2FzZSBGaXh0dXJlQ2FwYWJpbGl0eUNvbG9yLkdyZWVuOlxuICAgICAgICAgICAgICAgIC8vIFJvdW5kIG5lZWRlZCBmb3IgdGhyZWVqc1xuICAgICAgICAgICAgICAgIHRoaXMuY29sb3JHcmVlbiA9IE1hdGgucm91bmQodmFsdWVQZXJjZW50YWdlKTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgY2FzZSBGaXh0dXJlQ2FwYWJpbGl0eUNvbG9yLkJsdWU6XG4gICAgICAgICAgICAgICAgLy8gUm91bmQgbmVlZGVkIGZvciB0aHJlZWpzXG4gICAgICAgICAgICAgICAgdGhpcy5jb2xvckJsdWUgPSBNYXRoLnJvdW5kKHZhbHVlUGVyY2VudGFnZSk7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgICB9XG4gICAgICAgICAgY2FzZSBGaXh0dXJlQ2FwYWJpbGl0eVR5cGUuV2hlZWxTbG90OiB7XG4gICAgICAgICAgICBjb25zdCBtaXhlZENvbG9yID0gdGhpcy5maXh0dXJlU2VydmljZS5nZXRNaXhlZFdoZWVsU2xvdENvbG9yKGNhcGFiaWxpdHkud2hlZWwsIGNhcGFiaWxpdHkuY2FwYWJpbGl0eS5zbG90TnVtYmVyKTtcbiAgICAgICAgICAgIGlmIChtaXhlZENvbG9yKSB7XG4gICAgICAgICAgICAgIHRoaXMuY29sb3JSZWQgPSBNYXRoLnJvdW5kKG1peGVkQ29sb3IucmVkKTtcbiAgICAgICAgICAgICAgdGhpcy5jb2xvckdyZWVuID0gTWF0aC5yb3VuZChtaXhlZENvbG9yLmdyZWVuKTtcbiAgICAgICAgICAgICAgdGhpcy5jb2xvckJsdWUgPSBNYXRoLnJvdW5kKG1peGVkQ29sb3IuYmx1ZSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICB1cGRhdGVQb3NpdGlvbihvYmplY3Q6IFRIUkVFLk9iamVjdDNEKSB7XG4gICAgLy8gVXBkYXRlIHRoZSBwb3NpdGlvblxuICAgIHN3aXRjaCAodGhpcy5maXh0dXJlLmZpeHR1cmUucG9zaXRpb25pbmcpIHtcbiAgICAgIGNhc2UgUG9zaXRpb25pbmcudG9wRnJvbnQ6IHtcbiAgICAgICAgb2JqZWN0LnJvdGF0aW9uLnggPSBUSFJFRS5NYXRoLmRlZ1RvUmFkKDApO1xuICAgICAgICBvYmplY3QucG9zaXRpb24uc2V0KHRoaXMuZml4dHVyZS5maXh0dXJlLnBvc2l0aW9uWCwgdGhpcy5maXh0dXJlLmZpeHR1cmUucG9zaXRpb25ZIC0gMTMsIHRoaXMuZml4dHVyZS5maXh0dXJlLnBvc2l0aW9uWik7XG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgICAgY2FzZSBQb3NpdGlvbmluZy5ib3R0b21Gcm9udDoge1xuICAgICAgICBvYmplY3Qucm90YXRpb24ueCA9IFRIUkVFLk1hdGguZGVnVG9SYWQoMTgwKTtcbiAgICAgICAgb2JqZWN0LnBvc2l0aW9uLnNldCh0aGlzLmZpeHR1cmUuZml4dHVyZS5wb3NpdGlvblgsIHRoaXMuZml4dHVyZS5maXh0dXJlLnBvc2l0aW9uWSArIDEzLCB0aGlzLmZpeHR1cmUuZml4dHVyZS5wb3NpdGlvblopO1xuICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICAgIGNhc2UgUG9zaXRpb25pbmcudG9wQmFjazoge1xuICAgICAgICBvYmplY3Qucm90YXRpb24ueCA9IFRIUkVFLk1hdGguZGVnVG9SYWQoMCk7XG4gICAgICAgIG9iamVjdC5wb3NpdGlvbi5zZXQodGhpcy5maXh0dXJlLmZpeHR1cmUucG9zaXRpb25YLCB0aGlzLmZpeHR1cmUuZml4dHVyZS5wb3NpdGlvblkgLSAxMywgdGhpcy5maXh0dXJlLmZpeHR1cmUucG9zaXRpb25aKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgICBjYXNlIFBvc2l0aW9uaW5nLmJvdHRvbUJhY2s6IHtcbiAgICAgICAgb2JqZWN0LnJvdGF0aW9uLnggPSBUSFJFRS5NYXRoLmRlZ1RvUmFkKDE4MCk7XG4gICAgICAgIG9iamVjdC5wb3NpdGlvbi5zZXQodGhpcy5maXh0dXJlLmZpeHR1cmUucG9zaXRpb25YLCB0aGlzLmZpeHR1cmUuZml4dHVyZS5wb3NpdGlvblkgKyAxMywgdGhpcy5maXh0dXJlLmZpeHR1cmUucG9zaXRpb25aKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgICBjYXNlIFBvc2l0aW9uaW5nLm1hbnVhbDoge1xuICAgICAgICBvYmplY3QucG9zaXRpb24uc2V0KHRoaXMuZml4dHVyZS5maXh0dXJlLnBvc2l0aW9uWCwgdGhpcy5maXh0dXJlLmZpeHR1cmUucG9zaXRpb25ZLCB0aGlzLmZpeHR1cmUuZml4dHVyZS5wb3NpdGlvblopO1xuICAgICAgICBvYmplY3Qucm90YXRpb24ueCA9IFRIUkVFLk1hdGguZGVnVG9SYWQodGhpcy5maXh0dXJlLmZpeHR1cmUucm90YXRpb25YKTtcbiAgICAgICAgb2JqZWN0LnJvdGF0aW9uLnkgPSBUSFJFRS5NYXRoLmRlZ1RvUmFkKHRoaXMuZml4dHVyZS5maXh0dXJlLnJvdGF0aW9uWSk7XG4gICAgICAgIG9iamVjdC5yb3RhdGlvbi56ID0gVEhSRUUuTWF0aC5kZWdUb1JhZCh0aGlzLmZpeHR1cmUuZml4dHVyZS5yb3RhdGlvblopO1xuICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBkZXN0cm95KCkge1xuICAgIHRoaXMuc2VsZWN0ZWRNYXRlcmlhbC5kaXNwb3NlKCk7XG4gIH1cbn1cbiJdfQ==