@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
@@ -0,0 +1 @@
1
+ {"version":3,"file":"rocketshow-designer.mjs","sources":["../../../projects/designer/src/lib/designer.service.ts","../../../projects/designer/src/lib/models/fixture-capability.ts","../../../projects/designer/src/lib/models/fixture-channel.ts","../../../projects/designer/src/lib/models/fixture-mode.ts","../../../projects/designer/src/lib/models/fixture-wheel-slot.ts","../../../projects/designer/src/lib/models/fixture-wheel.ts","../../../projects/designer/src/lib/models/fixture-profile.ts","../../../projects/designer/src/lib/models/cached-fixture.ts","../../../projects/designer/src/lib/models/cached-fixture-capability.ts","../../../projects/designer/src/lib/models/cached-fixture-channel.ts","../../../projects/designer/src/lib/models/color.ts","../../../projects/designer/src/lib/models/fixture.ts","../../../projects/designer/src/lib/models/scene-playback-region.ts","../../../projects/designer/src/lib/models/composition.ts","../../../projects/designer/src/lib/models/effect.ts","../../../projects/designer/src/lib/models/effect-curve-profile-channel.ts","../../../projects/designer/src/lib/models/effect-curve.ts","../../../projects/designer/src/lib/models/effect-pan-tilt.ts","../../../projects/designer/src/lib/models/fixture-capability-value.ts","../../../projects/designer/src/lib/models/fixture-channel-value.ts","../../../projects/designer/src/lib/models/preset.ts","../../../projects/designer/src/lib/models/scene.ts","../../../projects/designer/src/lib/models/project.ts","../../../projects/designer/src/lib/services/user.service.ts","../../../projects/designer/src/lib/services/uuid.service.ts","../../../projects/designer/src/lib/services/project.service.ts","../../../projects/designer/src/lib/services/fixture.service.ts","../../../projects/designer/src/lib/services/preview-mesh.service.ts","../../../projects/designer/src/lib/models/preset-region-scene.ts","../../../projects/designer/src/lib/services/animation.service.ts","../../../projects/designer/src/lib/services/config.service.ts","../../../projects/designer/src/lib/services/effect.service.ts","../../../projects/designer/src/lib/services/preset.service.ts","../../../projects/designer/src/lib/services/scene.service.ts","../../../projects/designer/src/lib/services/timeline.service.ts","../../../projects/designer/src/lib/services/universe.service.ts","../../../projects/designer/src/lib/services/preview.service.ts","../../../projects/designer/src/lib/preview/models/fixture-3d.ts","../../../projects/designer/src/lib/preview/models/color-changer-3d.ts","../../../projects/designer/src/lib/preview/models/moving-head-3d.ts","../../../projects/designer/src/lib/preview/preview.component.ts","../../../projects/designer/src/lib/preview/preview.component.html","../../../projects/designer/src/lib/wait-dialog/wait-dialog.component.ts","../../../projects/designer/src/lib/wait-dialog/wait-dialog.component.html","../../../projects/designer/src/lib/services/project-load.service.ts","../../../projects/designer/src/lib/warning-dialog/warning-dialog.component.ts","../../../projects/designer/src/lib/warning-dialog/warning-dialog.component.html","../../../projects/designer/src/lib/services/warning-dialog.service.ts","../../../projects/designer/src/lib/array-sort-pipe.ts","../../../projects/designer/src/lib/project/project-browser/project-browser.component.html","../../../projects/designer/src/lib/project/project-browser/project-browser.component.ts","../../../projects/designer/src/lib/project/project-import/project-import.component.ts","../../../projects/designer/src/lib/project/project-import/project-import.component.html","../../../projects/designer/src/lib/project/project-save/project-save.component.html","../../../projects/designer/src/lib/project/project-save/project-save.component.ts","../../../projects/designer/src/lib/project/project-share/project-share.component.ts","../../../projects/designer/src/lib/project/project-share/project-share.component.html","../../../projects/designer/src/lib/error-dialog/error-dialog.component.html","../../../projects/designer/src/lib/error-dialog/error-dialog.component.ts","../../../projects/designer/src/lib/services/error-dialog.service.ts","../../../projects/designer/src/lib/fixture-pool/fixture-pool-create-from-file/fixture-pool-create-from-file.component.ts","../../../projects/designer/src/lib/fixture-pool/fixture-pool-create-from-file/fixture-pool-create-from-file.component.html","../../../projects/designer/src/lib/fixture-pool/fixture-pool.component.html","../../../projects/designer/src/lib/fixture-pool/fixture-pool.component.ts","../../../projects/designer/src/lib/services/fixture-pool.service.ts","../../../projects/designer/src/lib/services/hotkey-target-exclude.service.ts","../../../projects/designer/src/lib/services/intro.service.ts","../../../projects/designer/src/lib/user/user-login/user-login.component.html","../../../projects/designer/src/lib/user/user-login/user-login.component.ts","../../../projects/designer/src/lib/user/user-register/user-register.component.html","../../../projects/designer/src/lib/user/user-register/user-register.component.ts","../../../projects/designer/src/lib/services/user-ensure-login.service.ts","../../../projects/designer/src/lib/timeline/composition-settings/composition-settings.component.html","../../../projects/designer/src/lib/timeline/composition-settings/composition-settings.component.ts","../../../projects/designer/src/lib/timeline/timeline-grid/timeline-grid.component.html","../../../projects/designer/src/lib/timeline/timeline-grid/timeline-grid.component.ts","../../../projects/designer/src/lib/timeline/timeline.component.html","../../../projects/designer/src/lib/timeline/timeline.component.ts","../../../projects/designer/src/lib/scene/scene-settings/scene-settings.component.ts","../../../projects/designer/src/lib/scene/scene-settings/scene-settings.component.html","../../../projects/designer/src/lib/scene/scene.component.html","../../../projects/designer/src/lib/scene/scene.component.ts","../../../projects/designer/src/lib/fixture/fixture.component.html","../../../projects/designer/src/lib/fixture/fixture.component.ts","../../../projects/designer/src/lib/fixture/fixture-capability/fixture-capability-color/fixture-capability-color.component.ts","../../../projects/designer/src/lib/fixture/fixture-capability/fixture-capability-color/fixture-capability-color.component.html","../../../projects/designer/src/lib/fixture/fixture-capability/fixture-capability-dimmer/fixture-capability-dimmer.component.ts","../../../projects/designer/src/lib/fixture/fixture-capability/fixture-capability-dimmer/fixture-capability-dimmer.component.html","../../../projects/designer/src/lib/fixture/fixture-capability/fixture-capability-pan-tilt/fixture-capability-pan-tilt.component.ts","../../../projects/designer/src/lib/fixture/fixture-capability/fixture-capability-pan-tilt/fixture-capability-pan-tilt.component.html","../../../projects/designer/src/lib/fixture/fixture-capability/fixture-capability-color-wheel/fixture-capability-color-wheel.component.html","../../../projects/designer/src/lib/fixture/fixture-capability/fixture-capability-color-wheel/fixture-capability-color-wheel.component.ts","../../../projects/designer/src/lib/fixture/fixture-capability/fixture-capability.component.html","../../../projects/designer/src/lib/fixture/fixture-capability/fixture-capability.component.ts","../../../projects/designer/src/lib/fixture/fixture-settings/fixture-settings-position/fixture-settings-position.component.html","../../../projects/designer/src/lib/fixture/fixture-settings/fixture-settings-position/fixture-settings-position.component.ts","../../../projects/designer/src/lib/fixture/fixture-settings/fixture-settings-stage/fixture-settings-stage.component.ts","../../../projects/designer/src/lib/fixture/fixture-settings/fixture-settings-stage/fixture-settings-stage.component.html","../../../projects/designer/src/lib/fixture/fixture-settings/fixture-settings.component.ts","../../../projects/designer/src/lib/fixture/fixture-settings/fixture-settings.component.html","../../../projects/designer/src/lib/effect/effect-curve/effect-curve.component.html","../../../projects/designer/src/lib/effect/effect-curve/effect-curve.component.ts","../../../projects/designer/src/lib/effect/effect-pan-tilt/effect-pan-tilt.component.ts","../../../projects/designer/src/lib/effect/effect-pan-tilt/effect-pan-tilt.component.html","../../../projects/designer/src/lib/effect/effect.component.html","../../../projects/designer/src/lib/effect/effect.component.ts","../../../projects/designer/src/lib/preset/preset-settings/preset-settings.component.ts","../../../projects/designer/src/lib/preset/preset-settings/preset-settings.component.html","../../../projects/designer/src/lib/preset/preset.component.html","../../../projects/designer/src/lib/preset/preset.component.ts","../../../projects/designer/src/lib/master-dimmer/master-dimmer.component.ts","../../../projects/designer/src/lib/master-dimmer/master-dimmer.component.html","../../../projects/designer/src/lib/fixture/fixture-capability/fixture-capability-channel/fixture-capability-channel.component.html","../../../projects/designer/src/lib/fixture/fixture-capability/fixture-capability-channel/fixture-capability-channel.component.ts","../../../projects/designer/src/lib/fixture/fixture-channel/fixture-channel.component.html","../../../projects/designer/src/lib/fixture/fixture-channel/fixture-channel.component.ts","../../../projects/designer/src/lib/intro/intro.component.html","../../../projects/designer/src/lib/intro/intro.component.ts","../../../projects/designer/src/lib/designer.component.html","../../../projects/designer/src/lib/designer.component.ts","../../../projects/designer/src/lib/designer.module.ts","../../../projects/designer/src/public_api.ts","../../../projects/designer/src/rocketshow-designer.ts"],"sourcesContent":["import { Injectable } from '@angular/core';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class DesignerService {\n constructor() {}\n}\n","export enum FixtureCapabilityType {\n NoFunction = 'NoFunction',\n ShutterStrobe = 'ShutterStrobe',\n StrobeSpeed = 'StrobeSpeed',\n StrobeDuration = 'StrobeDuration',\n Intensity = 'Intensity',\n ColorIntensity = 'ColorIntensity',\n ColorPreset = 'ColorPreset',\n ColorTemperature = 'ColorTemperature',\n Pan = 'Pan',\n PanContinuous = 'PanContinuous',\n Tilt = 'Tilt',\n TiltContinuous = 'TiltContinuous',\n PanTiltSpeed = 'PanTiltSpeed',\n WheelSlot = 'WheelSlot',\n WheelShake = 'WheelShake',\n WheelSlotRotation = 'WheelSlotRotation',\n WheelRotation = 'WheelRotation',\n EffectSpeed = 'EffectSpeed',\n EffectDuration = 'EffectDuration',\n EffectParameter = 'EffectParameter',\n SoundSensitivity = 'SoundSensitivity',\n Focus = 'Focus',\n Zoom = 'Zoom',\n Iris = 'Iris',\n IrisEffect = 'IrisEffect',\n Frost = 'Frost',\n FrostEffect = 'FrostEffect',\n Prism = 'Prism',\n PrismRotation = 'PrismRotation',\n BladeInsertion = 'BladeInsertion',\n BladeRotation = 'BladeRotation',\n BladeSystemRotation = 'BladeSystemRotation',\n Fog = 'Fog',\n FogOutput = 'FogOutput',\n FogType = 'FogType',\n BeamAngle = 'BeamAngle',\n Rotation = 'Rotation',\n Speed = 'Speed',\n Time = 'Time',\n Maintenance = 'Maintenance',\n Generic = 'Generic',\n Effect = 'Effect',\n BeamPosition = 'BeamPosition',\n}\n\nexport enum FixtureCapabilityColor {\n Red = 'Red',\n Green = 'Green',\n Blue = 'Blue',\n Cyan = 'Cyan',\n Magenta = 'Magenta',\n Yellow = 'Yellow',\n Amber = 'Amber',\n White = 'White',\n 'Warm White' = 'Warm White',\n 'Cold White' = 'Cold White',\n UV = 'UV',\n Lime = 'Lime',\n Indigo = 'Indigo',\n}\n\nexport class FixtureCapability {\n type: FixtureCapabilityType;\n angleStart: string;\n angleEnd: string;\n color: FixtureCapabilityColor;\n dmxRange: number[] = [];\n // may be empty. in this case, the channel name points to the wheel\n wheel: any;\n slotNumber: number;\n brightness: string;\n brightnessStart: string;\n brightnessEnd: string;\n comment: string;\n\n constructor(data?: any) {\n if (!data) {\n return;\n }\n\n this.type = FixtureCapabilityType[data.type as string];\n this.angleStart = data.angleStart;\n this.angleEnd = data.angleEnd;\n this.color = data.color;\n if (data.dmxRange) {\n this.dmxRange = data.dmxRange;\n }\n this.wheel = data.wheel;\n this.slotNumber = data.slotNumber;\n this.brightness = data.brightness;\n this.brightnessStart = data.brightnessStart;\n this.brightnessEnd = data.brightnessEnd;\n this.comment = data.comment;\n }\n}\n","import { FixtureCapability } from './fixture-capability';\n\nexport class FixtureChannel {\n fineChannelAliases: string[] = [];\n defaultValue: string | number;\n capability: FixtureCapability;\n capabilities: FixtureCapability[] = [];\n dmxValueResolution: string;\n\n constructor(data?: any) {\n if (!data) {\n return;\n }\n\n if (data.fineChannelAliases) {\n this.fineChannelAliases = data.fineChannelAliases;\n }\n\n this.defaultValue = data.defaultValue;\n this.dmxValueResolution = data.dmxValueResolution;\n\n if (data.capability) {\n this.capability = new FixtureCapability(data.capability);\n } else if (data.capabilities) {\n for (const capability of data.capabilities) {\n this.capabilities.push(new FixtureCapability(capability));\n }\n }\n }\n}\n","export class FixtureMode {\n name: string;\n shortName: string;\n channels: any[] = [];\n\n constructor(data?: any) {\n if (!data) {\n return;\n }\n\n this.name = data.name;\n this.shortName = data.shortName;\n\n if (data.channels) {\n this.channels = data.channels;\n }\n }\n}\n","export enum FixtureWheelSlotType {\n Open = 'Open',\n Closed = 'Closed',\n Color = 'Color',\n Gobo = 'Gobo',\n Prism = 'Prism',\n Iris = 'Iris',\n Frost = 'Frost',\n AnimationGoboStart = 'AnimationGoboStart',\n AnimationGoboEnd = 'AnimationGoboEnd',\n}\n\nexport class FixtureWheelSlot {\n type: FixtureWheelSlotType;\n name: string;\n colors: string[] = [];\n\n constructor(data?: any) {\n if (!data) {\n return;\n }\n\n this.type = FixtureWheelSlotType[data.type as string];\n this.name = data.name;\n if (data.colors) {\n this.colors = data.colors;\n }\n }\n}\n","import { FixtureWheelSlot } from './fixture-wheel-slot';\n\nexport class FixtureWheel {\n slots: FixtureWheelSlot[] = [];\n\n constructor(data?: any) {\n if (!data) {\n return;\n }\n\n if (data.slots) {\n for (const slot of data.slots) {\n this.slots.push(new FixtureWheelSlot(slot));\n }\n }\n }\n}\n","import { FixtureChannel } from './fixture-channel';\nimport { FixtureMode } from './fixture-mode';\nimport { FixtureWheel } from './fixture-wheel';\n\nexport enum FixtureCategory {\n Blinder = 'Blinder',\n 'Color Changer' = 'Color Changer',\n Dimmer = 'Dimmer',\n Effect = 'Effect',\n Fan = 'Fan',\n Flower = 'Flower',\n Hazer = 'Hazer',\n Laser = 'Laser',\n Matrix = 'Matrix',\n 'Moving Head' = 'Moving Head',\n 'Pixel Bar' = 'Pixel Bar',\n Scanner = 'Scanner',\n Smoke = 'Smoke',\n Stand = 'Stand',\n Strobe = 'Strobe',\n Other = 'Other',\n 'Barrel Scanner' = 'Barrel Scanner',\n}\n\nexport class FixtureProfile {\n uuid: string;\n name: string;\n\n // set to file, if the profile is not loaded from the backend\n source: string;\n createdFromFile = false;\n manufacturerShortName: string;\n manufacturerName: string;\n categories: FixtureCategory[] = [];\n availableChannels: any = {};\n shortName: string;\n wheels: any = {};\n\n // All available fixture modes\n modes: FixtureMode[] = [];\n\n constructor(data?: any) {\n if (!data) {\n return;\n }\n\n // metadata\n this.uuid = data.uuid;\n this.name = data.name;\n this.manufacturerName = data.manufacturerName;\n this.manufacturerShortName = data.manufacturerShortName;\n\n if (data.categories) {\n for (const category of data.categories) {\n this.categories.push(FixtureCategory[category as string]);\n }\n } else if (data.mainCategory) {\n this.categories.push(FixtureCategory[data.mainCategory as string]);\n }\n if (data.wheels) {\n for (const property of Object.keys(data.wheels)) {\n const wheel = new FixtureWheel(data.wheels[property]);\n this.wheels[property] = wheel;\n }\n }\n if (data.modes) {\n for (const mode of data.modes) {\n this.modes.push(new FixtureMode(mode));\n }\n }\n if (data.availableChannels) {\n for (const property of Object.keys(data.availableChannels)) {\n const fixtureChannel = new FixtureChannel(data.availableChannels[property]);\n this.availableChannels[property] = fixtureChannel;\n }\n }\n if (data.createdFromFile) {\n this.createdFromFile = data.createdFromFile;\n }\n }\n}\n","import { CachedFixtureChannel } from './cached-fixture-channel';\nimport { Fixture } from './fixture';\nimport { FixtureMode } from './fixture-mode';\nimport { FixtureProfile } from './fixture-profile';\n\nexport class CachedFixture {\n fixture: Fixture;\n profile: FixtureProfile;\n mode: FixtureMode;\n channels: CachedFixtureChannel[] = [];\n}\n","import { FixtureCapability } from './fixture-capability';\nimport { FixtureWheel } from './fixture-wheel';\nimport { FixtureWheelSlot } from './fixture-wheel-slot';\n\nexport class CachedFixtureCapability {\n capability: FixtureCapability;\n\n // the wheel names, if available\n wheelName: string;\n\n // the wheel, if available\n wheel: FixtureWheel;\n\n // the wheel slots, if available\n wheelSlots: FixtureWheelSlot[] = [];\n\n // is this a color wheel?\n wheelIsColor = false;\n\n centerValue: number;\n}\n","import { CachedFixtureCapability } from './cached-fixture-capability';\nimport { FixtureChannel } from './fixture-channel';\nimport { FixtureWheel } from './fixture-wheel';\n\nexport class CachedFixtureChannel {\n // the corresponding channel\n channel: FixtureChannel;\n\n // the name of the channel\n name: string;\n\n // all channel capabilities\n capabilities: CachedFixtureCapability[] = [];\n\n // default value\n defaultValue: number;\n\n // maximum value\n maxValue: number;\n\n // a color wheel, if available\n colorWheel: FixtureWheel;\n}\n","export class Color {\n red: number;\n green: number;\n blue: number;\n\n constructor(red?: number, green?: number, blue?: number) {\n this.red = red;\n this.green = green;\n this.blue = blue;\n }\n}\n","export enum Positioning {\n topFront = 'topFront',\n topBack = 'topBack',\n bottomFront = 'bottomFront',\n bottomBack = 'bottomBack',\n manual = 'manual',\n}\n\nexport class Fixture {\n uuid: string;\n profileUuid: string;\n name: string;\n dmxUniverseUuid: string;\n dmxFirstChannel = 5;\n modeShortName: string;\n positioning: Positioning = Positioning.topFront;\n\n // Only relevant when positioning = manual\n // in CM\n positionX = 0;\n positionY = 0;\n positionZ = 0;\n\n // in DEG\n rotationX = 0;\n rotationY = 0;\n rotationZ = 0;\n\n constructor(data?: any) {\n if (!data) {\n return;\n }\n\n this.uuid = data.uuid;\n this.profileUuid = data.profileUuid;\n this.name = data.name;\n this.dmxUniverseUuid = data.dmxUniverseUuid;\n this.dmxFirstChannel = data.dmxFirstChannel;\n this.modeShortName = data.modeShortName;\n this.positioning = data.positioning;\n this.positionX = data.positionX;\n this.positionY = data.positionY;\n this.positionZ = data.positionZ;\n this.rotationX = data.rotationX;\n this.rotationY = data.rotationY;\n this.rotationZ = data.rotationZ;\n }\n}\n","export class ScenePlaybackRegion {\n sceneUuid: string;\n startMillis: number;\n endMillis: number;\n\n constructor(data?: any) {\n if (!data) {\n return;\n }\n\n this.sceneUuid = data.sceneUuid;\n this.startMillis = data.startMillis;\n this.endMillis = data.endMillis;\n }\n}\n","import { ScenePlaybackRegion } from './scene-playback-region';\n\nexport class Composition {\n public uuid: string;\n public name: string;\n\n // none or audio\n public syncType = 'audio';\n\n public audioFileName: string;\n public audioFileInLibrary = false;\n\n public beatsPerMinute = 120;\n public timeSignatureUpper = 4;\n public timeSignatureLower = 4;\n\n public snapToGrid = true;\n\n public tempoGuessed = false;\n\n // time based or musical\n public gridType = 'musical';\n public gridOffsetMillis = 0;\n\n // 1/1, 1/2, 1/4, 1/8, etc.\n public gridResolution = 1;\n\n // if no sync\n public durationMillis = 0;\n\n // Regions, where the scene will be played\n public scenePlaybackRegions: ScenePlaybackRegion[] = [];\n\n constructor(data?: any) {\n if (!data) {\n return;\n }\n\n this.uuid = data.uuid;\n this.name = data.name;\n this.syncType = data.syncType;\n this.audioFileName = data.audioFileName;\n this.audioFileInLibrary = data.audioFileInLibrary;\n this.beatsPerMinute = data.beatsPerMinute;\n this.timeSignatureUpper = data.timeSignatureUpper;\n this.timeSignatureLower = data.timeSignatureLower;\n this.snapToGrid = data.snapToGrid;\n\n // never guess again (and overwrite), when a composition is loaded\n this.tempoGuessed = true;\n\n this.gridType = data.gridType;\n this.gridOffsetMillis = data.gridOffsetMillis;\n this.gridResolution = data.gridResolution;\n this.durationMillis = data.durationMillis;\n\n if (data.scenePlaybackRegions) {\n for (const scenePlaybackRegion of data.scenePlaybackRegions) {\n this.scenePlaybackRegions.push(new ScenePlaybackRegion(scenePlaybackRegion));\n }\n }\n }\n}\n","export abstract class Effect {\n type: string;\n uuid: string;\n visible = true;\n\n constructor(type: string, data?: any) {\n this.type = type;\n\n if (!data) {\n return;\n }\n\n this.uuid = data.uuid;\n this.visible = data.visible;\n }\n}\n","export class EffectCurveProfileChannels {\n profileUuid: string;\n channels: string[] = [];\n\n constructor(data?: any) {\n if (!data) {\n return;\n }\n\n this.profileUuid = data.profileUuid;\n\n if (data.channels) {\n for (const channel of Object.keys(data.channels)) {\n this.channels.push(channel);\n }\n }\n }\n}\n","import { Effect } from './effect';\nimport { EffectCurveProfileChannels } from './effect-curve-profile-channel';\nimport { FixtureCapability } from './fixture-capability';\n\nexport class EffectCurve extends Effect {\n curveType = 'sine';\n\n capabilities: FixtureCapability[] = [];\n channels: EffectCurveProfileChannels[] = [];\n\n lengthMillis = 2500;\n phaseMillis = 0;\n amplitude = 1;\n position = 0.5;\n phasingMillis = 0;\n\n constructor(data?: any) {\n super('curve', data);\n\n if (!data) {\n return;\n }\n\n if (data.capabilities) {\n for (const capability of data.capabilities) {\n this.capabilities.push(new FixtureCapability(capability));\n }\n }\n\n if (data.channels) {\n for (const channel of data.channels) {\n this.channels.push(new EffectCurveProfileChannels(channel));\n }\n }\n\n this.lengthMillis = data.lengthMillis;\n this.phaseMillis = data.phaseMillis;\n this.amplitude = data.amplitude;\n this.position = data.position;\n this.phasingMillis = data.phasingMillis;\n this.curveType = data.curveType;\n }\n\n public getValueAtMillis(timeMillis: number, fixtureIndex?: number): number {\n // Calculate the offset for phasing\n let phasingIndex = 0;\n\n if (fixtureIndex) {\n phasingIndex = fixtureIndex;\n }\n\n const phase = this.phaseMillis + phasingIndex * this.phasingMillis;\n\n // Calculate the value between 0 and 1 according to the curve\n let value = 0;\n\n switch (this.curveType) {\n case 'sine':\n value = this.position + ((this.amplitude / 2) * Math.sin((2 * Math.PI * (timeMillis - phase)) / this.lengthMillis)) / 2;\n break;\n case 'square':\n if (Math.sign(Math.sin((2 * Math.PI * (timeMillis - phase)) / this.lengthMillis) / 2) === -1) {\n value = this.position + this.amplitude / 2;\n } else {\n value = this.position - this.amplitude / 2;\n }\n break;\n case 'triangle':\n // TODO check wikipedia formula\n break;\n case 'sawtooth':\n // TODO\n break;\n case 'reverse-sawtooth':\n // TODO\n break;\n }\n\n return Math.max(Math.min(value, 1), 0);\n }\n}\n","import { Effect } from './effect';\n\nexport class EffectPanTilt extends Effect {\n phasingMillis = 0;\n\n constructor(data?: any) {\n super('pan-tilt', data);\n }\n\n getValueAtMillis(timeMillis: number, fixtureIndex?: number): number {\n // Calculate the offset for phasing\n let phasingIndex = 0;\n\n if (fixtureIndex) {\n phasingIndex = fixtureIndex;\n }\n\n // let phase = this.phaseMillis + phasingIndex * this.phasingMillis;\n\n // Calculate the value according to the curve\n // TODO\n\n return 0;\n }\n}\n","import { FixtureCapabilityColor, FixtureCapabilityType } from './fixture-capability';\n\nexport class FixtureCapabilityValue {\n type: FixtureCapabilityType;\n profileUuid: string;\n\n // value between 0 and 1\n valuePercentage: number;\n\n color: FixtureCapabilityColor;\n wheel: string;\n slotNumber: number;\n\n constructor(data?: any) {\n if (!data) {\n return;\n }\n this.type = FixtureCapabilityType[data.type as string];\n this.profileUuid = data.profileUuid;\n\n this.valuePercentage = data.valuePercentage;\n this.color = FixtureCapabilityColor[data.color as string];\n this.wheel = data.wheel;\n this.slotNumber = data.slotNumber;\n }\n}\n","export class FixtureChannelValue {\n channelName: string;\n profileUuid: string;\n value: number;\n\n constructor(data?: any) {\n if (!data) {\n return;\n }\n this.channelName = data.channelName;\n this.profileUuid = data.profileUuid;\n this.value = data.value;\n }\n}\n","import { Effect } from './effect';\nimport { EffectCurve } from './effect-curve';\nimport { EffectPanTilt } from './effect-pan-tilt';\nimport { FixtureCapabilityValue } from './fixture-capability-value';\nimport { FixtureChannelValue } from './fixture-channel-value';\n\nexport class Preset {\n uuid: string;\n name: string;\n\n // all related fixtures\n fixtureUuids: string[] = [];\n\n // the selected values\n fixtureChannelValues: FixtureChannelValue[] = [];\n fixtureCapabilityValues: FixtureCapabilityValue[] = [];\n\n // all related effects\n effects: Effect[] = [];\n\n // position offset, relative to the scene start\n // (undefined = start/end of the scene itself)\n startMillis: number;\n endMillis: number;\n\n // fading times\n fadeInMillis = 0;\n fadeOutMillis = 0;\n\n // fade in/out outside the start/end times?\n fadeInPre = false;\n fadeOutPost = false;\n\n constructor(data?: any) {\n if (!data) {\n return;\n }\n\n this.uuid = data.uuid;\n this.name = data.name;\n this.fixtureUuids = data.fixtureUuids;\n if (data.fixtureChannelValues) {\n for (const fixtureChannelValue of data.fixtureChannelValues) {\n this.fixtureChannelValues.push(new FixtureChannelValue(fixtureChannelValue));\n }\n }\n if (data.fixtureCapabilityValues) {\n for (const fixtureCapabilityValue of data.fixtureCapabilityValues) {\n this.fixtureCapabilityValues.push(new FixtureCapabilityValue(fixtureCapabilityValue));\n }\n }\n if (data.effects) {\n for (const effect of data.effects) {\n switch (effect.type) {\n case 'curve':\n this.effects.push(new EffectCurve(effect));\n break;\n case 'pan-tilt':\n this.effects.push(new EffectPanTilt(effect));\n break;\n }\n }\n }\n this.startMillis = data.startMillis;\n this.endMillis = data.endMillis;\n this.fadeInMillis = data.fadeInMillis;\n this.fadeOutMillis = data.fadeOutMillis;\n this.fadeInPre = data.fadeInPre;\n this.fadeOutPost = data.fadeOutPost;\n }\n}\n","import { ScenePlaybackRegion } from './scene-playback-region';\n\nexport class Scene {\n uuid: string;\n name: string;\n\n color = '#fff';\n\n // All contained presets\n presetUuids: string[] = [];\n\n // Fading times\n fadeInMillis = 0;\n fadeOutMillis = 0;\n\n // fade in/out outside the start/end times?\n fadeInPre = false;\n fadeOutPost = false;\n\n constructor(data?: any) {\n if (!data) {\n return;\n }\n\n this.uuid = data.uuid;\n this.name = data.name;\n this.color = data.color;\n if (data.presetUuids) {\n this.presetUuids = data.presetUuids;\n }\n this.fadeInMillis = data.fadeInMillis;\n this.fadeOutMillis = data.fadeOutMillis;\n this.fadeInPre = data.fadeInPre;\n this.fadeOutPost = data.fadeOutPost;\n }\n}\n","import { Composition } from './composition';\nimport { Fixture } from './fixture';\nimport { FixtureProfile } from './fixture-profile';\nimport { Preset } from './preset';\nimport { Scene } from './scene';\n\nexport class Project {\n public id: number;\n public uuid: string;\n public name: string;\n public shareToken: string;\n\n public stageWidthCm = 600;\n public stageHeightCm = 350;\n public stageDepthCm = 600;\n\n public stageFloorHeightCm = 30;\n public stageCeilingHeightCm = 5;\n public stagePillarWidthCm = 20;\n\n public masterDimmerValue = 1;\n\n public selectedPresetUuid: string;\n public selectedSceneUuids: string[] = [];\n\n // true = show the preset, false = show the selected scene\n public previewPreset = true;\n\n public selectedCompositionUuid: string;\n\n public compositions: Composition[] = [];\n public fixtureProfiles: FixtureProfile[] = [];\n public fixtures: Fixture[] = [];\n public scenes: Scene[] = [];\n public presets: Preset[] = [];\n\n constructor(data?: any) {\n if (!data) {\n return;\n }\n\n this.id = data.id;\n this.uuid = data.uuid;\n this.name = data.name;\n this.shareToken = data.shareToken;\n\n this.stageWidthCm = data.stageWidthCm;\n this.stageHeightCm = data.stageHeightCm;\n this.stageDepthCm = data.stageDepthCm;\n\n this.stageFloorHeightCm = data.stageFloorHeightCm;\n this.stageCeilingHeightCm = data.stageCeilingHeightCm;\n this.stagePillarWidthCm = data.stagePillarWidthCm;\n\n this.masterDimmerValue = data.masterDimmerValue;\n\n this.selectedPresetUuid = data.selectedPresetUuid;\n this.selectedSceneUuids = data.selectedSceneUuids;\n this.previewPreset = data.previewPreset;\n this.selectedCompositionUuid = data.selectedCompositionUuid;\n\n if (data.compositions) {\n for (const composition of data.compositions) {\n this.compositions.push(new Composition(composition));\n }\n }\n\n if (data.fixtureProfiles) {\n for (const fixtureProfile of data.fixtureProfiles) {\n this.fixtureProfiles.push(new FixtureProfile(fixtureProfile));\n }\n }\n\n if (data.fixtures) {\n for (const fixture of data.fixtures) {\n this.fixtures.push(new Fixture(fixture));\n }\n }\n\n if (data.scenes) {\n for (const scene of data.scenes) {\n this.scenes.push(new Scene(scene));\n }\n }\n\n if (data.presets) {\n for (const preset of data.presets) {\n this.presets.push(new Preset(preset));\n }\n }\n }\n}\n","import { HttpClient, HttpHeaders } from '@angular/common/http';\nimport { Injectable } from '@angular/core';\nimport { Observable } from 'rxjs';\nimport { map } from 'rxjs/operators';\nimport { Project } from '../models/project';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class UserService {\n // the authentication token\n token: string;\n tokenExpiration: Date;\n username: string;\n\n constructor(private http: HttpClient) {\n this.loadFromLocalStorage();\n }\n\n private loadFromLocalStorage() {\n this.token = localStorage.getItem('token');\n this.tokenExpiration = undefined;\n if (localStorage.getItem('tokenExpiration')) {\n this.tokenExpiration = new Date(Date.parse(localStorage.getItem('tokenExpiration')));\n }\n this.username = localStorage.getItem('username');\n }\n\n // register a new user\n register(email: string, username: string, password: string): Observable<any> {\n return this.http.post('register?email=' + email + '&username=' + username + '&password=' + password, null);\n }\n\n // login a user in the api\n login(email: string, password: string): Observable<any> {\n return this.http.post('login?email=' + email + '&password=' + password, null).pipe(\n map((result: any) => {\n this.token = result.token;\n this.username = result.username;\n\n // the token expires one month from now\n this.tokenExpiration = new Date();\n this.tokenExpiration.setDate(this.tokenExpiration.getDate() + 30);\n\n // store to the local storage\n localStorage.setItem('token', this.token);\n localStorage.setItem('tokenExpiration', JSON.stringify(this.tokenExpiration));\n localStorage.setItem('username', this.username);\n\n this.loadFromLocalStorage();\n })\n );\n }\n\n logout() {\n localStorage.removeItem('token');\n localStorage.removeItem('tokenExpiration');\n localStorage.removeItem('username');\n\n this.loadFromLocalStorage();\n }\n\n isLoggedIn(): boolean {\n if (!this.token) {\n return false;\n }\n\n if (new Date() > this.tokenExpiration) {\n this.logout();\n return false;\n }\n\n return true;\n }\n\n getHeaders(): HttpHeaders {\n if (!this.isLoggedIn()) {\n return null;\n }\n\n let headers = new HttpHeaders();\n headers = headers.append('Authorization', this.token);\n return headers;\n }\n\n setAutoLoadProject(project: Project) {\n localStorage.setItem('projectName', project.name);\n if (project.id) {\n localStorage.setItem('projectId', project.id.toString());\n } else {\n localStorage.removeItem('projectId');\n }\n }\n\n getAutoLoadProjectId(): number {\n if (!localStorage.getItem('projectId')) {\n return null;\n }\n return Number.parseInt(localStorage.getItem('projectId'), 10);\n }\n\n getAutoLoadProjectName(): string {\n return localStorage.getItem('projectName');\n }\n}\n","import { Injectable } from '@angular/core';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class UuidService {\n constructor() {}\n\n getUuid(): string {\n return 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(/[xy]/g, (c) => {\n // tslint:disable-next-line:no-bitwise\n const r = (Math.random() * 16) | 0;\n\n // tslint:disable-next-line:no-bitwise\n const v = c === 'x' ? r : (r & 0x3) | 0x8;\n\n return v.toString(16);\n });\n }\n}\n","import { HttpClient } from '@angular/common/http';\nimport { Injectable } from '@angular/core';\nimport { ActivatedRoute, Params, Router } from '@angular/router';\nimport { TranslateService } from '@ngx-translate/core';\nimport { ToastrService } from 'ngx-toastr';\nimport { Observable } from 'rxjs';\nimport { map } from 'rxjs/operators';\nimport { Project } from '../models/project';\nimport { UserService } from './user.service';\nimport { UuidService } from './uuid.service';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class ProjectService {\n // the current project\n public project: Project;\n\n constructor(\n private uuidService: UuidService,\n private http: HttpClient,\n private userService: UserService,\n private router: Router,\n private activatedRoute: ActivatedRoute,\n private translateService: TranslateService,\n private toastrService: ToastrService\n ) {\n this.project = new Project();\n this.project.uuid = this.uuidService.getUuid();\n this.project.name = 'New Project';\n }\n\n private saveApi(project: Project): Observable<object> {\n return this.http.post('project', JSON.stringify(project), { headers: this.userService.getHeaders() }).pipe(\n map((response: any) => {\n if (response) {\n project.id = response.id;\n if (response.shareToken) {\n project.shareToken = response.shareToken;\n }\n const queryParams: Params = {\n id: project.id,\n token: project.shareToken,\n };\n this.router.navigate([], {\n relativeTo: this.activatedRoute,\n queryParams,\n queryParamsHandling: 'merge', // remove to replace all query params by provided\n });\n }\n return null;\n })\n );\n }\n\n save(project: Project) {\n // tries to save the project and returns, whether it has been saved or not\n this.saveApi(project).subscribe(\n () => {\n const msg = 'designer.project.save-success';\n const title = 'designer.project.save-success-title';\n\n this.translateService.get([msg, title]).subscribe((result) => {\n this.toastrService.success(result[msg], result[title]);\n });\n\n this.userService.setAutoLoadProject(project);\n },\n (response) => {\n const msg = 'designer.project.save-error';\n const title = 'designer.project.save-error-title';\n const error = response && response.error ? response.error.error : 'unknown';\n\n this.translateService.get([msg, title]).subscribe((result) => {\n this.toastrService.error(result[msg] + ' (' + error + ')', result[title]);\n });\n }\n );\n }\n\n getAllProjects(): Observable<Project[]> {\n return this.http.get('projects', { headers: this.userService.getHeaders() }).pipe(\n map((response: any) => {\n const projects: Project[] = [];\n for (const project of response) {\n const projectObject = new Project(project);\n projects.push(projectObject);\n }\n return projects;\n })\n );\n }\n\n deleteProject(project: Project): Observable<any> {\n return this.http.delete('project?id=' + project.id + '&name=' + project.name, { headers: this.userService.getHeaders() });\n }\n\n getProject(id: number, name: string, shareToken?: string): Observable<Project> {\n return this.http.get('project?id=' + id + '&name=' + name + '&token=' + shareToken, { headers: this.userService.getHeaders() }).pipe(\n map((response: any) => {\n const project = new Project(response);\n project.id = id;\n\n return project;\n })\n );\n }\n}\n","import { HttpClient } from '@angular/common/http';\nimport { Injectable } from '@angular/core';\nimport { TranslateService } from '@ngx-translate/core';\nimport { ToastrService } from 'ngx-toastr';\nimport { forkJoin, Observable, of } from 'rxjs';\nimport { map } from 'rxjs/operators';\nimport { CachedFixture } from '../models/cached-fixture';\nimport { CachedFixtureCapability } from '../models/cached-fixture-capability';\nimport { CachedFixtureChannel } from '../models/cached-fixture-channel';\nimport { Color } from '../models/color';\nimport { Fixture } from '../models/fixture';\nimport { FixtureCapability, FixtureCapabilityColor, FixtureCapabilityType } from '../models/fixture-capability';\nimport { FixtureChannel } from '../models/fixture-channel';\nimport { FixtureMode } from '../models/fixture-mode';\nimport { FixtureProfile } from '../models/fixture-profile';\nimport { FixtureWheel } from '../models/fixture-wheel';\nimport { FixtureWheelSlot, FixtureWheelSlotType } from '../models/fixture-wheel-slot';\nimport { ProjectService } from './project.service';\nimport { UuidService } from './uuid.service';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class FixtureService {\n cachedFixtures: CachedFixture[] = [];\n\n // is the side-tab settings currently selected?\n settingsSelection = false;\n\n selectedSettingsFixtures: Fixture[] = [];\n\n constructor(\n private http: HttpClient,\n private projectService: ProjectService,\n private translateService: TranslateService,\n private toastrService: ToastrService,\n private uuidService: UuidService\n ) {}\n\n getFixtureByUuid(uuid: string): Fixture {\n for (const fixture of this.projectService.project.fixtures) {\n if (fixture.uuid === uuid) {\n return fixture;\n }\n }\n }\n\n getCachedFixtureByUuid(uuid: string): CachedFixture {\n for (const fixture of this.cachedFixtures) {\n if (fixture.fixture.uuid === uuid) {\n return fixture;\n }\n }\n }\n\n // Get all profiles to search for (only metadata)\n getSearchProfiles(): Observable<FixtureProfile[]> {\n return this.http.get('fixtures').pipe(\n map((response: object[]) => {\n const searchProfiles: FixtureProfile[] = [];\n\n for (const profile of response) {\n searchProfiles.push(new FixtureProfile(profile));\n }\n\n return searchProfiles;\n })\n );\n }\n\n getProfileByUuid(uuid: string): FixtureProfile {\n for (const fixtureProfile of this.projectService.project.fixtureProfiles) {\n if (fixtureProfile.uuid === uuid) {\n return fixtureProfile;\n }\n }\n }\n\n loadProfileByUuid(uuid: string): Observable<void> {\n const loadedProfile = this.getProfileByUuid(uuid);\n\n if (loadedProfile) {\n // This profile is already loaded\n return of(undefined);\n }\n\n // Load the metadata and the profile\n return forkJoin([this.http.get('fixtures?uuid=' + encodeURI(uuid)), this.http.get('fixture?uuid=' + encodeURI(uuid))]).pipe(\n map((result) => {\n const mergedData = { ...result[0][0], ...result[1] };\n const fixtureProfile = new FixtureProfile(mergedData);\n this.projectService.project.fixtureProfiles.push(fixtureProfile);\n })\n );\n }\n\n getRotationAngleDeg(value: string): number {\n // convert a rotation angle value into degrees\n if (value.endsWith('deg')) {\n return Number.parseInt(value.replace('deg', ''), 10);\n } else if (value.endsWith('%')) {\n const perc = Number.parseInt(value.replace('%', ''), 10);\n return (perc / 100) * 360;\n }\n\n return undefined;\n }\n\n getWheelSlotColors(wheel: FixtureWheel, slotNumber: number): string[] {\n let colors: string[] = [];\n const wheelSlots = this.getWheelSlots(wheel, slotNumber);\n\n for (const slot of wheelSlots) {\n if (slot.colors && slot.colors.length > 0) {\n colors = colors.concat(slot.colors);\n }\n }\n\n return colors;\n }\n\n getMixedWheelSlotColor(wheel: FixtureWheel, slotNumber: number): Color {\n const colors = this.getWheelSlotColors(wheel, slotNumber);\n const colorsRgb: Color[] = [];\n\n if (colors.length === 0) {\n return undefined;\n }\n\n for (const color of colors) {\n colorsRgb.push(this.hexToRgb(color));\n }\n\n return this.mixColors(colorsRgb);\n }\n\n private componentToHex(c: number): any {\n const hex = c.toString(16);\n return hex.length === 1 ? '0' + hex : hex;\n }\n\n rgbToHex(r: number, g: number, b: number): string {\n return '#' + this.componentToHex(r) + this.componentToHex(g) + this.componentToHex(b);\n }\n\n hexToRgb(hex: string): Color {\n // expand shorthand form (e.g. \"03F\") to full form (e.g. \"0033FF\")\n const shorthandRegex = /^#?([a-f\\d])([a-f\\d])([a-f\\d])$/i;\n hex = hex.replace(shorthandRegex, (m, r, g, b) => {\n return r + r + g + g + b + b;\n });\n\n const result = /^#?([a-f\\d]{2})([a-f\\d]{2})([a-f\\d]{2})$/i.exec(hex);\n return result ? new Color(parseInt(result[1], 16), parseInt(result[2], 16), parseInt(result[3], 16)) : null;\n }\n\n mixColors(colors: Color[]): Color {\n // mix an array of rgb-colors containing r, g, b values to a new color\n let r = 0;\n let g = 0;\n let b = 0;\n\n for (const color of colors) {\n r += color.red;\n g += color.green;\n b += color.blue;\n }\n\n r /= colors.length;\n g /= colors.length;\n b /= colors.length;\n\n return new Color(r, g, b);\n }\n\n wheelHasSlotType(wheel: FixtureWheel, slotType: FixtureWheelSlotType): boolean {\n for (const slot of wheel.slots) {\n if (slot.type === slotType) {\n return true;\n }\n }\n\n return false;\n }\n\n getWheelByName(profile: FixtureProfile, wheelName: string): FixtureWheel {\n for (const property in profile.wheels) {\n if (property === wheelName) {\n return profile.wheels[property];\n }\n }\n\n // wheel not found\n return undefined;\n }\n\n private getWheelSlots(wheel: FixtureWheel, slotNumber: number): FixtureWheelSlot[] {\n // return one slot or two slots, if they are mixed (e.g. slor number 2.5 returns the slots 2 and 3)\n const slots: FixtureWheelSlot[] = [];\n\n if (!wheel) {\n return slots;\n }\n\n if (slotNumber - Math.floor(slotNumber) > 0) {\n // two slots are set\n const number = Math.floor(slotNumber);\n slots.push(wheel.slots[number - 1]);\n if (number >= 0 && number < wheel.slots.length) {\n slots.push(wheel.slots[number]);\n }\n } else {\n // only one slot is set\n slots.push(wheel.slots[slotNumber - 1]);\n }\n\n return slots;\n }\n\n getModeByFixture(profile: FixtureProfile, fixture: Fixture): FixtureMode {\n for (const mode of profile.modes) {\n if (mode.shortName) {\n if (mode.shortName === fixture.modeShortName) {\n return mode;\n }\n } else {\n if (mode.name === fixture.modeShortName) {\n return mode;\n }\n }\n }\n }\n\n private getFixtureCapability(capability: FixtureCapability, channelName: string, profile: FixtureProfile): CachedFixtureCapability {\n const cachedFixtureCapability = new CachedFixtureCapability();\n cachedFixtureCapability.capability = capability;\n if (capability.slotNumber) {\n // there is a wheel connected to this capability\n if (typeof capability.wheel === 'string') {\n cachedFixtureCapability.wheelName = capability.wheel as string;\n } else if (Array.isArray(capability.wheel)) {\n cachedFixtureCapability.wheelName = capability.wheel[0];\n } else {\n cachedFixtureCapability.wheelName = channelName;\n }\n cachedFixtureCapability.wheel = this.getWheelByName(profile, cachedFixtureCapability.wheelName);\n cachedFixtureCapability.wheelSlots = this.getWheelSlots(cachedFixtureCapability.wheel, capability.slotNumber);\n cachedFixtureCapability.wheelIsColor = this.wheelHasSlotType(cachedFixtureCapability.wheel, FixtureWheelSlotType.Color);\n }\n if (cachedFixtureCapability.capability.dmxRange && cachedFixtureCapability.capability.dmxRange.length === 2) {\n cachedFixtureCapability.centerValue = Math.floor(\n (cachedFixtureCapability.capability.dmxRange[0] + cachedFixtureCapability.capability.dmxRange[1]) / 2\n );\n }\n return cachedFixtureCapability;\n }\n\n private getCapabilitiesByChannel(\n fixtureChannel: FixtureChannel,\n channelName: string,\n profile: FixtureProfile\n ): CachedFixtureCapability[] {\n const capabilites: CachedFixtureCapability[] = [];\n\n if (fixtureChannel.capability) {\n capabilites.push(this.getFixtureCapability(fixtureChannel.capability, channelName, profile));\n } else if (fixtureChannel.capabilities) {\n for (const capability of fixtureChannel.capabilities) {\n capabilites.push(this.getFixtureCapability(capability, channelName, profile));\n }\n }\n\n return capabilites;\n }\n\n private getMaxValueByChannel(fixtureChannel: FixtureChannel): number {\n return Math.pow(256, 1 + fixtureChannel.fineChannelAliases.length) - 1;\n }\n\n private getDefaultValueByChannel(fixtureChannel: FixtureChannel): number {\n if (!fixtureChannel.defaultValue) {\n return undefined;\n }\n\n if (isNaN(fixtureChannel.defaultValue as any) && (fixtureChannel.defaultValue as string).endsWith('%')) {\n // percentage value\n const percentage = Number.parseInt((fixtureChannel.defaultValue as string).replace('%', ''), 10);\n const maxValue = this.getMaxValueByChannel(fixtureChannel);\n return (maxValue / 100) * percentage;\n } else {\n // DMX value\n return Number.parseInt(fixtureChannel.defaultValue as any, 10);\n }\n }\n\n private getColorWheelByChannel(channel: CachedFixtureChannel, profile: FixtureProfile): FixtureWheel {\n for (const channelCapability of channel.capabilities) {\n if (channelCapability.wheelIsColor) {\n return channelCapability.wheel;\n }\n }\n\n return undefined;\n }\n\n // private channelInList(channels: CachedFixtureChannel[], name: string): boolean {\n // for (let channel of channels) {\n // if (channel.channelName === name) {\n // return true;\n // }\n // }\n\n // return false;\n // }\n\n getChannelByName(fixture: CachedFixture, channelName: string): CachedFixtureChannel {\n for (const channel of fixture.channels) {\n if (\n (channel.name && channel.name === channelName) ||\n (channel.channel && channel.channel.fineChannelAliases.indexOf(channelName) > -1)\n ) {\n return channel;\n }\n }\n\n return undefined;\n }\n\n getCachedChannels(profile: FixtureProfile, mode: FixtureMode): CachedFixtureChannel[] {\n const channels: CachedFixtureChannel[] = [];\n\n if (!mode) {\n return channels;\n }\n\n for (const availableChannelName of Object.keys(profile.availableChannels)) {\n const availableChannel: FixtureChannel = profile.availableChannels[availableChannelName];\n\n for (const channel of mode.channels) {\n // check for string channel. It can get creepy for matrix modes\n if (typeof channel === 'string') {\n const modeChannel: string = channel as string;\n\n // don't check the fine channels. only add the coarse channel.\n if (modeChannel === availableChannelName) {\n const cachedFixtureChannel = new CachedFixtureChannel();\n cachedFixtureChannel.channel = availableChannel;\n cachedFixtureChannel.name = availableChannelName;\n cachedFixtureChannel.capabilities = this.getCapabilitiesByChannel(cachedFixtureChannel.channel, availableChannelName, profile);\n const defaultValue = this.getDefaultValueByChannel(cachedFixtureChannel.channel);\n if (defaultValue) {\n cachedFixtureChannel.defaultValue = defaultValue;\n }\n cachedFixtureChannel.maxValue = this.getMaxValueByChannel(cachedFixtureChannel.channel);\n cachedFixtureChannel.colorWheel = this.getColorWheelByChannel(cachedFixtureChannel, profile);\n channels.push(cachedFixtureChannel);\n }\n } else {\n // null may be passed as a placeholder for an undefined channel\n channels.push(new CachedFixtureChannel());\n }\n }\n }\n\n return channels;\n }\n\n updateCachedFixtures() {\n // calculate some frequently used values as a cache to save cpu time\n // afterwards\n this.cachedFixtures = [];\n\n for (const fixture of this.projectService.project.fixtures) {\n const cachedFixture = new CachedFixture();\n\n cachedFixture.fixture = fixture;\n cachedFixture.profile = this.getProfileByUuid(fixture.profileUuid);\n cachedFixture.mode = this.getModeByFixture(cachedFixture.profile, fixture);\n cachedFixture.channels = this.getCachedChannels(cachedFixture.profile, cachedFixture.mode);\n\n this.cachedFixtures.push(cachedFixture);\n }\n }\n\n capabilitiesMatch(\n type1: FixtureCapabilityType,\n type2: FixtureCapabilityType,\n color1: FixtureCapabilityColor,\n color2: FixtureCapabilityColor,\n wheel1: string,\n wheel2: string,\n profileUuid1: string,\n profileUuid2: string\n ): boolean {\n // checks, whether two provided capapabilities match\n return (\n type1 === type2 &&\n (!color1 || color1 === color2) &&\n (!wheel1 || wheel1 === wheel2) &&\n (!profileUuid1 || profileUuid1 === profileUuid2)\n );\n }\n\n settingsFixtureIsSelected(fixture: Fixture): boolean {\n for (const selectedFixture of this.selectedSettingsFixtures) {\n if (selectedFixture === fixture) {\n return true;\n }\n }\n\n return false;\n }\n\n switchSettingsFixtureSelection(fixture: Fixture) {\n if (this.settingsFixtureIsSelected(fixture)) {\n this.selectedSettingsFixtures.splice(this.selectedSettingsFixtures.indexOf(fixture), 1);\n } else {\n this.selectedSettingsFixtures.push(fixture);\n }\n }\n\n getFixtureIconClass(profile: FixtureProfile): string {\n if (!profile) {\n return '';\n }\n if (profile.categories.length === 0) {\n return '';\n }\n if (!profile.categories[0]) {\n return '';\n }\n return profile.categories[0].replace(' ', '-').toLocaleLowerCase();\n }\n\n updateProfiles() {\n return this.http.post('update-profiles', null);\n }\n\n getNextFreeDmxChannel(fixturePool: Fixture[], neededChannels: number): number {\n // get the next free space for this fixture\n let freeChannels = 0;\n\n for (let i = 0; i < 512; i++) {\n let occupiedChannels = 0;\n\n for (const fixture of fixturePool) {\n const mode = this.getModeByFixture(this.getProfileByUuid(fixture.profileUuid), fixture);\n\n if (i >= fixture.dmxFirstChannel && i < fixture.dmxFirstChannel + mode.channels.length) {\n // this channel is already occupied by a fixture -> move forward to the end of the fixture\n if (mode.channels.length > occupiedChannels) {\n occupiedChannels = mode.channels.length - (i - fixture.dmxFirstChannel);\n }\n }\n }\n\n if (occupiedChannels > 0) {\n i += occupiedChannels - 1;\n freeChannels = 0;\n } else {\n freeChannels++;\n }\n\n if (freeChannels === neededChannels) {\n return i - freeChannels + 1;\n }\n }\n\n // no free space left for the needed channels\n return -1;\n }\n\n addFixture(profile: FixtureProfile, fixturePool: Fixture[]): Fixture {\n const fixture = new Fixture();\n\n fixture.uuid = this.uuidService.getUuid();\n fixture.profileUuid = profile.uuid;\n fixture.name = profile.name;\n\n if (profile.modes && profile.modes.length > 0) {\n fixture.modeShortName = profile.modes[0].shortName;\n }\n\n // add the same mode as an existing fixture, if available\n let existingModeShortName: string;\n for (const existingFixture of fixturePool) {\n const existingProfile = this.getProfileByUuid(existingFixture.profileUuid);\n\n if (existingProfile === profile) {\n existingModeShortName = existingFixture.modeShortName;\n break;\n }\n }\n\n if (existingModeShortName) {\n fixture.modeShortName = existingModeShortName;\n } else {\n fixture.modeShortName = profile.modes[0].shortName || profile.modes[0].name;\n }\n\n const mode = this.getModeByFixture(this.getProfileByUuid(fixture.profileUuid), fixture);\n const firstChannel = this.getNextFreeDmxChannel(fixturePool, mode.channels.length);\n\n if (firstChannel >= 0) {\n fixture.dmxFirstChannel = firstChannel;\n fixturePool.push(fixture);\n return fixture;\n } else {\n // no free space anymore\n const msg = 'designer.fixture-pool.no-free-space';\n const title = 'designer.fixture-pool.no-free-space-title';\n\n this.translateService.get([msg, title]).subscribe((result) => {\n this.toastrService.error(result[msg], result[title]);\n });\n }\n }\n}\n","import { Injectable } from '@angular/core';\nimport { Observable, of } from 'rxjs';\nimport { map } from 'rxjs/operators';\nimport * as THREE from 'three';\nimport { GLTFLoader } from 'three/examples/jsm/loaders/GLTFLoader';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class PreviewMeshService {\n private loader = new GLTFLoader();\n private cachedMeshes = new Map<string, THREE.Mesh>();\n\n // the observable, if the requested mesh is already being loaded currently\n private cachedObservables = new Map<string, Observable<THREE.Mesh>>();\n\n constructor() {}\n\n private loadScene(name: string): Observable<THREE.Scene> {\n return new Observable((observer) => {\n this.loader.load(\n './assets/designer/models/' + name + '.gltf',\n\n // Called when the resource is loaded\n (gltf: any) => {\n const model = gltf.scene.children[0];\n\n model.position.set(0, 0, 0);\n\n observer.next(gltf.scene);\n observer.complete();\n },\n\n // Called while loading is progressing\n (xhr: any) => {},\n\n // Called when loading has errors\n (error: any) => {\n observer.error(error);\n }\n );\n });\n }\n\n private loadMesh(name: string): Observable<THREE.Mesh> {\n const observable = this.loadScene(name).pipe(\n map((scene: any) => {\n const model = scene.children[0];\n\n model.position.set(0, 0, 0);\n\n this.cachedMeshes.set(name, model);\n this.cachedObservables.delete(name);\n\n return model.clone();\n })\n );\n\n this.cachedObservables.set(name, observable);\n\n return observable;\n }\n\n getMesh(name: string): Observable<THREE.Mesh> {\n if (this.cachedMeshes.get(name)) {\n return of(this.cachedMeshes.get(name).clone());\n }\n\n return this.cachedObservables.get(name) || this.loadMesh(name);\n }\n}\n","import { Preset } from './preset';\nimport { Scene } from './scene';\nimport { ScenePlaybackRegion } from './scene-playback-region';\n\nexport class PresetRegionScene {\n preset: Preset;\n region: ScenePlaybackRegion;\n scene: Scene;\n\n constructor(preset: Preset, region: ScenePlaybackRegion, scene: Scene) {\n this.preset = preset;\n this.region = region;\n this.scene = scene;\n }\n}\n","import { Injectable } from '@angular/core';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class AnimationService {\n timeMillis = 0;\n\n constructor() {}\n}\n","import { Injectable } from '@angular/core';\nimport { Subject } from 'rxjs';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class ConfigService {\n public restUrl: string;\n public enableMediaLibrary = false;\n public loginAvailable = false;\n public shareAvailable = false;\n public menuHeightPx = 0;\n public languageSwitch = false;\n public newProjectTemplate = false;\n public livePreview = false;\n public localProfiles = false;\n public intro = false;\n public uniqueProjectNames = false;\n\n public menuHeightChanged: Subject<void> = new Subject<void>();\n\n constructor() {}\n}\n","import { Injectable } from '@angular/core';\nimport { Effect } from './../models/effect';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class EffectService {\n // The currently selected effect\n selectedEffect: Effect;\n\n constructor() {}\n}\n","import { HttpClient } from '@angular/common/http';\nimport { Injectable } from '@angular/core';\nimport { Subject } from 'rxjs';\nimport { CachedFixtureCapability } from '../models/cached-fixture-capability';\nimport { CachedFixtureChannel } from '../models/cached-fixture-channel';\nimport { Fixture } from '../models/fixture';\nimport { FixtureCapabilityColor, FixtureCapabilityType } from '../models/fixture-capability';\nimport { FixtureCapabilityValue } from '../models/fixture-capability-value';\nimport { FixtureChannelValue } from '../models/fixture-channel-value';\nimport { FixtureMode } from '../models/fixture-mode';\nimport { FixtureProfile } from '../models/fixture-profile';\nimport { Preset } from '../models/preset';\nimport { AnimationService } from './animation.service';\nimport { ConfigService } from './config.service';\nimport { EffectService } from './effect.service';\nimport { FixtureService } from './fixture.service';\nimport { ProjectService } from './project.service';\nimport { UuidService } from './uuid.service';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class PresetService {\n selectedPreset: Preset;\n\n // fires, when the current preview element has changed (scene/preset)\n previewSelectionChanged: Subject<void> = new Subject<void>();\n\n // fires, when the fixture selection has changed\n fixtureSelectionChanged: Subject<void> = new Subject<void>();\n\n // fires, when the fixture selection has changed for settings\n fixtureSelectionSettingsChanged: Subject<void> = new Subject<void>();\n\n // fires, when the selected color has changed. This is required,\n // because detectChanges is not enough to trigger different components.\n fixtureColorChanged: Subject<void> = new Subject<void>();\n\n livePreviewTimer: any;\n liveChangePending = false;\n\n constructor(\n private effectService: EffectService,\n private uuidService: UuidService,\n private projectService: ProjectService,\n private fixtureService: FixtureService,\n private configService: ConfigService,\n private http: HttpClient,\n private animationService: AnimationService\n ) {}\n\n getPresetByUuid(uuid: string): Preset {\n for (const preset of this.projectService.project.presets) {\n if (preset.uuid === uuid) {\n return preset;\n }\n }\n }\n\n fixtureIsSelected(fixture: Fixture, preset?: Preset): boolean {\n // is the passed fixture selected in the passed/currently selected preset?\n if (!preset) {\n if (this.selectedPreset) {\n preset = this.selectedPreset;\n } else {\n return false;\n }\n }\n\n for (const selectedFixtureUuid of preset.fixtureUuids) {\n if (selectedFixtureUuid === fixture.uuid) {\n return true;\n }\n }\n\n return false;\n }\n\n switchFixtureSelection(fixture: Fixture) {\n if (!this.selectedPreset) {\n return;\n }\n\n // select all fixtures at the specified start channel or unselect them,\n // if already selected\n if (this.fixtureIsSelected(fixture)) {\n for (let i = this.selectedPreset.fixtureUuids.length - 1; i >= 0; i--) {\n const projectFixture = this.fixtureService.getFixtureByUuid(this.selectedPreset.fixtureUuids[i]);\n if (projectFixture.dmxFirstChannel === fixture.dmxFirstChannel) {\n this.selectedPreset.fixtureUuids.splice(i, 1);\n }\n }\n } else {\n for (const projectFixture of this.projectService.project.fixtures) {\n if (projectFixture.dmxFirstChannel === fixture.dmxFirstChannel) {\n this.selectedPreset.fixtureUuids.push(projectFixture.uuid);\n }\n }\n }\n }\n\n selectAllFixtures() {\n if (!this.selectedPreset) {\n return;\n }\n\n for (const fixture of this.projectService.project.fixtures) {\n if (!this.fixtureIsSelected(fixture)) {\n this.selectedPreset.fixtureUuids.push(fixture.uuid);\n }\n }\n }\n\n selectNoFixtures() {\n if (!this.selectedPreset) {\n return;\n }\n\n this.selectedPreset.fixtureUuids = [];\n }\n\n public removeDeletedFixtures() {\n // after changing the configuration in the fixture pool, we might need to\n // delete some fixtures\n for (const preset of this.projectService.project.presets) {\n for (let i = preset.fixtureUuids.length - 1; i >= 0; i--) {\n const presetFixture = this.fixtureService.getFixtureByUuid(preset.fixtureUuids[i]);\n if (!presetFixture) {\n preset.fixtureUuids.splice(i, 1);\n }\n }\n }\n }\n\n public updateFixtureSelection() {\n // after changing the configuration in the fixture pool, we might need to\n // select some more fixtures on the same channel as already selected ones\n for (const preset of this.projectService.project.presets) {\n for (let i = preset.fixtureUuids.length - 1; i >= 0; i--) {\n const presetFixture = this.fixtureService.getFixtureByUuid(preset.fixtureUuids[i]);\n for (const projectFixture of this.projectService.project.fixtures) {\n if (projectFixture.dmxFirstChannel === presetFixture.dmxFirstChannel && !this.fixtureIsSelected(projectFixture, preset)) {\n preset.fixtureUuids.push(projectFixture.uuid);\n }\n }\n }\n }\n }\n\n deleteCapabilityValue(\n preset: Preset,\n capabilityType: FixtureCapabilityType,\n color?: FixtureCapabilityColor,\n wheel?: string,\n profileUuid?: string\n ) {\n for (let i = 0; i < preset.fixtureCapabilityValues.length; i++) {\n if (\n this.fixtureService.capabilitiesMatch(\n preset.fixtureCapabilityValues[i].type,\n capabilityType,\n preset.fixtureCapabilityValues[i].color,\n color,\n preset.fixtureCapabilityValues[i].wheel,\n wheel,\n preset.fixtureCapabilityValues[i].profileUuid,\n profileUuid\n )\n ) {\n preset.fixtureCapabilityValues.splice(i, 1);\n return;\n }\n }\n }\n\n setCapabilityValue(\n preset: Preset,\n capabilityType: FixtureCapabilityType,\n valuePercentage: number,\n slotNumber?: number,\n color?: FixtureCapabilityColor,\n wheel?: string,\n profileUuid?: string\n ) {\n // Delete existant properties with this type and set the new value\n this.deleteCapabilityValue(preset, capabilityType, color, wheel, profileUuid);\n\n const fixtureCapabilityValue = new FixtureCapabilityValue();\n fixtureCapabilityValue.type = capabilityType;\n fixtureCapabilityValue.color = color;\n fixtureCapabilityValue.wheel = wheel;\n fixtureCapabilityValue.valuePercentage = valuePercentage;\n fixtureCapabilityValue.slotNumber = slotNumber;\n fixtureCapabilityValue.profileUuid = profileUuid;\n\n preset.fixtureCapabilityValues.push(fixtureCapabilityValue);\n }\n\n getCapabilityValue(\n preset: Preset,\n capabilityType: FixtureCapabilityType,\n color?: FixtureCapabilityColor,\n wheel?: string,\n profileUuid?: string\n ): FixtureCapabilityValue {\n for (const capabilityValue of preset.fixtureCapabilityValues) {\n if (\n this.fixtureService.capabilitiesMatch(\n capabilityValue.type,\n capabilityType,\n capabilityValue.color,\n color,\n capabilityValue.wheel,\n wheel,\n capabilityValue.profileUuid,\n profileUuid\n )\n ) {\n return capabilityValue;\n }\n }\n return undefined;\n }\n\n deleteChannelValue(channelName: string, profileUuid: string) {\n for (let i = 0; i < this.selectedPreset.fixtureChannelValues.length; i++) {\n if (\n this.selectedPreset.fixtureChannelValues[i].channelName === channelName &&\n this.selectedPreset.fixtureChannelValues[i].profileUuid === profileUuid\n ) {\n this.selectedPreset.fixtureChannelValues.splice(i, 1);\n return;\n }\n }\n }\n\n setChannelValue(channelName: string, profileUuid: string, value: number) {\n // Delete existant properties with this type and set the new value\n this.deleteChannelValue(channelName, profileUuid);\n\n const fixtureChannelValue = new FixtureChannelValue();\n fixtureChannelValue.channelName = channelName;\n fixtureChannelValue.profileUuid = profileUuid;\n fixtureChannelValue.value = value;\n\n this.selectedPreset.fixtureChannelValues.push(fixtureChannelValue);\n }\n\n getChannelValue(channelName: string, profileUuid: string): number {\n for (const channelValue of this.selectedPreset.fixtureChannelValues) {\n if (channelValue.channelName === channelName && channelValue.profileUuid === profileUuid) {\n return channelValue.value;\n }\n }\n }\n\n getApproximatedColorWheelCapability(preset: Preset, cachedChannel: CachedFixtureChannel): CachedFixtureCapability {\n // return an approximated wheel slot channel capability, if a color or a slot on a different\n // wheel has been selected\n let colorRed: number;\n let colorGreen: number;\n let colorBlue: number;\n let lowestDiff = Number.MAX_VALUE;\n let lowestDiffCapability: CachedFixtureCapability;\n let capabilityValue: FixtureCapabilityValue;\n\n capabilityValue = this.getCapabilityValue(preset, FixtureCapabilityType.ColorIntensity, FixtureCapabilityColor.Red);\n if (capabilityValue) {\n colorRed = 255 * capabilityValue.valuePercentage;\n }\n capabilityValue = this.getCapabilityValue(preset, FixtureCapabilityType.ColorIntensity, FixtureCapabilityColor.Green);\n if (capabilityValue) {\n colorGreen = 255 * capabilityValue.valuePercentage;\n }\n capabilityValue = this.getCapabilityValue(preset, FixtureCapabilityType.ColorIntensity, FixtureCapabilityColor.Blue);\n if (capabilityValue) {\n colorBlue = 255 * capabilityValue.valuePercentage;\n }\n\n if (!colorRed && !colorGreen && !colorBlue) {\n // no color found -> search the first color wheel\n // TODO\n }\n\n if (colorRed !== undefined && colorGreen !== undefined && colorBlue !== undefined) {\n for (const capability of cachedChannel.capabilities) {\n if (capability.capability.slotNumber) {\n const mixedColor = this.fixtureService.getMixedWheelSlotColor(capability.wheel, capability.capability.slotNumber);\n if (mixedColor) {\n const diff =\n Math.abs(mixedColor.red - colorRed) + Math.abs(mixedColor.green - colorGreen) + Math.abs(mixedColor.blue - colorBlue);\n\n if (diff < lowestDiff) {\n lowestDiff = diff;\n lowestDiffCapability = capability;\n }\n }\n }\n }\n }\n\n return lowestDiffCapability;\n }\n\n private hasCapabilityType(type: FixtureCapabilityType): boolean {\n // there is at least one channel with at least one intensity capability\n for (const fixtureUuid of this.selectedPreset.fixtureUuids) {\n const fixture = this.fixtureService.getCachedFixtureByUuid(fixtureUuid);\n for (const channel of fixture.channels) {\n if (channel.channel) {\n for (const capability of channel.capabilities) {\n if (capability.capability.type === type) {\n return true;\n }\n }\n }\n }\n }\n return false;\n }\n\n hasCapabilityDimmer(): boolean {\n return this.hasCapabilityType(FixtureCapabilityType.Intensity);\n }\n\n hasCapabilityColor(): boolean {\n // TODO optionally color temperature and color white (see stairville/mh-100)\n\n // one of the profiles has a color intensity\n if (this.hasCapabilityType(FixtureCapabilityType.ColorIntensity)) {\n return true;\n }\n\n return false;\n }\n\n hasCapabilityColorOrColorWheel(): boolean {\n // TODO optionally color temperature and color white (see stairville/mh-100)\n\n // one of the profiles has a color intensity\n if (this.hasCapabilityColor()) {\n return true;\n }\n\n // a color wheel is involved\n for (const fixtureUuid of this.selectedPreset.fixtureUuids) {\n const fixture = this.fixtureService.getCachedFixtureByUuid(fixtureUuid);\n for (const channel of fixture.channels) {\n if (channel.colorWheel) {\n return true;\n }\n }\n }\n\n return false;\n }\n\n hasCapabilityPanTilt(): boolean {\n let hasPan = false;\n let hasTilt = false;\n\n // there is at least one pan and one tilt channel\n if (this.hasCapabilityType(FixtureCapabilityType.Pan)) {\n hasPan = true;\n }\n\n if (this.hasCapabilityType(FixtureCapabilityType.Tilt)) {\n hasTilt = true;\n }\n\n if (hasPan && hasTilt) {\n return true;\n }\n\n return false;\n }\n\n selectPreset(index: number) {\n this.effectService.selectedEffect = undefined;\n this.selectedPreset = this.projectService.project.presets[index];\n this.projectService.project.selectedPresetUuid = this.projectService.project.presets[index].uuid;\n this.autoOpenFirstEffect();\n this.previewSelectionChanged.next();\n this.previewLive();\n }\n\n autoOpenFirstEffect() {\n // open the first effect, if the preset only has one\n if (this.selectedPreset && this.selectedPreset.effects.length === 1) {\n this.effectService.selectedEffect = this.selectedPreset.effects[0];\n }\n }\n\n addPreset(name?: string): void {\n const preset: Preset = new Preset();\n preset.uuid = this.uuidService.getUuid();\n preset.name = name || 'New Preset';\n\n // Insert the new preset before the highest currently selected preset\n let highestSelectedPresetIndex = 0;\n\n for (let i = 0; i < this.projectService.project.presets.length; i++) {\n if (this.selectedPreset === this.projectService.project.presets[i]) {\n highestSelectedPresetIndex = i;\n break;\n }\n }\n\n this.projectService.project.presets.splice(highestSelectedPresetIndex, 0, preset);\n this.selectPreset(highestSelectedPresetIndex);\n }\n\n getSelectedProfiles() {\n const profiles: FixtureProfile[] = [];\n\n if (!this.selectedPreset) {\n return profiles;\n }\n\n for (const fixtureUuid of this.selectedPreset.fixtureUuids) {\n const fixture = this.fixtureService.getFixtureByUuid(fixtureUuid);\n const profile = this.fixtureService.getProfileByUuid(fixture.profileUuid);\n\n if (profiles.indexOf(profile) < 0) {\n profiles.push(profile);\n }\n }\n\n return profiles;\n }\n\n getSelectedProfileChannels(selectedProfiles: FixtureProfile[]) {\n const availableChannels: Map<FixtureProfile, CachedFixtureChannel[]> = new Map<FixtureProfile, CachedFixtureChannel[]>();\n\n const calculatedProfileModes = new Map<FixtureProfile, FixtureMode[]>();\n for (const profile of selectedProfiles) {\n const modes: FixtureMode[] = [];\n for (const fixtureUuid of this.selectedPreset.fixtureUuids) {\n const fixture = this.fixtureService.getCachedFixtureByUuid(fixtureUuid);\n if (modes.indexOf(fixture.mode) < 0) {\n modes.push(fixture.mode);\n }\n }\n calculatedProfileModes.set(profile, modes);\n }\n\n // calculate all required channels from the modes\n calculatedProfileModes.forEach((modes: FixtureMode[], profile: FixtureProfile) => {\n const profileChannels: CachedFixtureChannel[] = [];\n for (const mode of modes) {\n const channels = this.fixtureService.getCachedChannels(profile, mode);\n for (const channel of channels) {\n // only add the channel, if no channel with the same name has already been added\n // (e.g. a fine channel)\n if (channel.channel && !profileChannels.find((c) => c.name === channel.name)) {\n profileChannels.push(channel);\n }\n }\n }\n availableChannels.set(profile, profileChannels);\n });\n\n return availableChannels;\n }\n\n previewLive(compositionName: string = '', positionMillis?: number) {\n if (!this.configService.livePreview) {\n return;\n }\n\n // collect all changes and delay them to not flood the backend\n // (except play events. they need to be delivered always)\n if (this.livePreviewTimer && !compositionName) {\n this.liveChangePending = true;\n return;\n }\n\n let position = positionMillis;\n\n if (position === undefined) {\n position = Math.round(this.animationService.timeMillis);\n }\n\n this.http\n .post('preview?positionMillis=' + position + '&compositionName=' + compositionName, JSON.stringify(this.projectService.project))\n .subscribe();\n\n this.liveChangePending = false;\n\n if (!compositionName) {\n this.livePreviewTimer = setTimeout(() => {\n this.livePreviewTimer = undefined;\n if (this.liveChangePending) {\n this.http\n .post('preview?positionMillis=' + position + '&compositionName=' + compositionName, JSON.stringify(this.projectService.project))\n .subscribe();\n }\n }, 50);\n }\n }\n\n stopPreviewPlay() {\n if (!this.configService.livePreview) {\n return;\n }\n\n this.http.post('stop-preview-play', null).subscribe();\n }\n}\n","import { Injectable } from '@angular/core';\nimport { Subject } from 'rxjs';\nimport { Preset } from '../models/preset';\nimport { Scene } from '../models/scene';\nimport { EffectService } from './effect.service';\nimport { PresetService } from './preset.service';\nimport { ProjectService } from './project.service';\nimport { UuidService } from './uuid.service';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class SceneService {\n selectedScenes: Scene[] = [];\n sceneColors: string[] = ['#945fda', '#61da5f', '#5fc3da', '#dad65f', '#da5f5f', '#246db7'];\n\n multipleSelection = false;\n\n sceneDeleted: Subject<void> = new Subject<void>();\n sceneSelected: Subject<void> = new Subject<void>();\n\n constructor(\n private uuidService: UuidService,\n private effectService: EffectService,\n private presetService: PresetService,\n private projectService: ProjectService\n ) {}\n\n sceneIsSelected(scene: Scene): boolean {\n for (const selectedScene of this.selectedScenes) {\n if (selectedScene.uuid === scene.uuid) {\n return true;\n }\n }\n\n return false;\n }\n\n presetIsSelected(preset: Preset): boolean {\n if (!this.selectedScenes || this.selectedScenes.length !== 1) {\n return false;\n }\n\n for (const uuid of this.selectedScenes[0].presetUuids) {\n if (preset.uuid === uuid) {\n return true;\n }\n }\n\n return false;\n }\n\n switchSceneSelection(scene: Scene) {\n // Select a scene if not yet selected or unselect it otherwise\n if (this.sceneIsSelected(scene)) {\n for (let i = 0; i < this.selectedScenes.length; i++) {\n if (this.selectedScenes[i].uuid === scene.uuid) {\n this.selectedScenes.splice(i, 1);\n return;\n }\n }\n } else {\n this.selectedScenes.push(scene);\n }\n\n this.sceneSelected.next();\n }\n\n selectPresetFromSelectedScene() {\n // select the first preset of the scene, if no preset of the current scene is already\n // selected to make sure, the user does not edit a preset which is not even\n // active in the current scene (and sees no change).\n\n let firstPresetUuid;\n\n // check, whether a preset of the current scene is already selected and do nothing\n // in this case\n for (const scene of this.selectedScenes) {\n for (const presetUuid of scene.presetUuids) {\n firstPresetUuid = presetUuid;\n\n if (presetUuid === this.presetService.selectedPreset.uuid) {\n // a preset of a currently selected scene is already selected -> do nothing\n return;\n }\n }\n }\n\n if (!firstPresetUuid) {\n return;\n }\n\n for (let i = 0; i < this.projectService.project.presets.length; i++) {\n if (this.projectService.project.presets[i].uuid === firstPresetUuid) {\n this.presetService.selectPreset(i);\n break;\n }\n }\n }\n\n selectScene(index: number) {\n this.effectService.selectedEffect = undefined;\n\n if (index >= this.projectService.project.scenes.length) {\n this.selectedScenes = [];\n } else {\n if (this.multipleSelection) {\n this.switchSceneSelection(this.projectService.project.scenes[index]);\n } else {\n this.selectedScenes = [];\n this.selectedScenes.push(this.projectService.project.scenes[index]);\n }\n }\n\n this.selectPresetFromSelectedScene();\n\n // preview the complete scene\n this.projectService.project.previewPreset = false;\n\n this.projectService.project.selectedSceneUuids = [];\n for (const scene of this.selectedScenes) {\n this.projectService.project.selectedSceneUuids.push(scene.uuid);\n }\n this.presetService.previewSelectionChanged.next();\n this.presetService.previewLive();\n\n this.sceneSelected.next();\n }\n\n addScene(name?: string): void {\n const scene: Scene = new Scene();\n scene.uuid = this.uuidService.getUuid();\n scene.name = name || 'New Scene';\n\n if (this.projectService.project.scenes.length < this.sceneColors.length) {\n scene.color = this.sceneColors[this.projectService.project.scenes.length];\n } else {\n scene.color = '#' + Math.random().toString(16).slice(2, 8).toUpperCase();\n }\n\n // Insert the new scene before the highest currently selected scene\n let highestSelectedSceneIndex = 0;\n\n for (let i = 0; i < this.projectService.project.scenes.length; i++) {\n if (this.sceneIsSelected(this.projectService.project.scenes[i])) {\n highestSelectedSceneIndex = i;\n break;\n }\n }\n\n this.projectService.project.scenes.splice(highestSelectedSceneIndex, 0, scene);\n this.selectScene(highestSelectedSceneIndex);\n }\n\n removeScene(scene: Scene): void {\n // remove all playback regions\n for (const composition of this.projectService.project.compositions) {\n for (let i = composition.scenePlaybackRegions.length - 1; i >= 0; i--) {\n const compositionPlaybackRegion = composition.scenePlaybackRegions[i];\n if (compositionPlaybackRegion.sceneUuid === scene.uuid) {\n composition.scenePlaybackRegions.splice(i, 1);\n }\n }\n }\n\n // remove the scene\n this.projectService.project.scenes.splice(this.projectService.project.scenes.indexOf(scene), 1);\n if (this.projectService.project.scenes.length > 0) {\n this.selectScene(0);\n }\n\n this.sceneDeleted.next();\n }\n\n getSceneByUuid(uuid: string): Scene {\n for (const scene of this.projectService.project.scenes) {\n if (scene.uuid === uuid) {\n return scene;\n }\n }\n }\n}\n","import { HttpClient } from '@angular/common/http';\nimport { Injectable } from '@angular/core';\nimport { Observable, Subject, Subscription, timer } from 'rxjs';\nimport { map } from 'rxjs/operators';\nimport WaveSurfer from 'wavesurfer.js';\nimport CursorPlugin from 'wavesurfer.js/dist/plugin/wavesurfer.cursor.min.js';\nimport RegionsPlugin from 'wavesurfer.js/dist/plugin/wavesurfer.regions.min.js';\nimport TimeLinePlugin from 'wavesurfer.js/dist/plugin/wavesurfer.timeline.min.js';\nimport { guess } from 'web-audio-beat-detector';\nimport { Composition } from '../models/composition';\nimport { Preset } from '../models/preset';\nimport { PresetRegionScene } from '../models/preset-region-scene';\nimport { Scene } from '../models/scene';\nimport { ScenePlaybackRegion } from '../models/scene-playback-region';\nimport { ConfigService } from './config.service';\nimport { PresetService } from './preset.service';\nimport { ProjectService } from './project.service';\nimport { SceneService } from './scene.service';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class TimelineService {\n public waveSurfer: WaveSurfer;\n public playState = 'paused';\n\n public zoom = 0;\n private timeUpdateSubscription: Subscription;\n public currentTime: string;\n private timelineClicking = false;\n public selectedPlaybackRegion: ScenePlaybackRegion;\n private intensity = 0.2;\n private intensitySelectedScene = 0.4;\n private intensityHighlighted = 0.8;\n public duration: string;\n public waveSurferReady: Subject<void> = new Subject();\n public detectChanges: Subject<void> = new Subject();\n\n // the current composition\n public selectedComposition: Composition;\n public selectedCompositionIndex: number;\n\n // can we add new compositions based on an external pool and\n // should new compositions not available in this pool be added there?\n public externalCompositionsAvailable = false;\n\n public loadingAudioFile = false;\n\n constructor(\n private sceneService: SceneService,\n private presetService: PresetService,\n private projectService: ProjectService,\n private http: HttpClient,\n private configService: ConfigService\n ) {\n this.presetService.previewSelectionChanged.subscribe(() => {\n this.selectedPlaybackRegion = undefined;\n this.updateRegionSelection();\n });\n this.sceneService.sceneDeleted.subscribe(() => {\n this.redrawAllRegions();\n });\n this.sceneService.sceneSelected.subscribe(() => {\n this.redrawAllRegions();\n });\n }\n\n private redrawAllRegions() {\n // remove all regions from wavesurver\n if (this.waveSurfer) {\n for (const key of Object.keys(this.waveSurfer.regions.list)) {\n const region: any = this.waveSurfer.regions.list[key];\n region.remove();\n }\n }\n\n // draw all regions\n this.drawAllRegions();\n }\n\n private pad(num: number, size: number): string {\n if (!num) {\n num = 0;\n }\n\n let padded: string = num.toString();\n while (padded.length < size) {\n padded = '0' + padded;\n }\n\n return padded;\n }\n\n private msToTime(millis: number, includeMillis: boolean = true): string {\n const ms: number = Math.round(millis % 1000);\n const seconds: number = Math.floor(((millis % 360000) % 60000) / 1000);\n const minutes: number = Math.floor((millis % 3600000) / 60000);\n\n if (includeMillis) {\n return this.pad(minutes, 2) + ':' + this.pad(seconds, 2) + '.' + this.pad(ms, 3);\n } else {\n return this.pad(minutes, 2) + ':' + this.pad(seconds, 2);\n }\n }\n\n private updateCurrentTime() {\n if (!this.waveSurfer) {\n return;\n }\n\n // display the current time\n this.currentTime = this.msToTime(this.waveSurfer.getCurrentTime() * 1000);\n\n if (!this.waveSurfer.timeline.drawer) {\n return;\n }\n\n // draw the current cursor on the timeline\n // TODO redrawing the timeline each update is way to expensive.\n // maybe as a better solution use an element, like the cursor inside Wavesurfer to\n // display the progress?\n let x = 0;\n const duration: number = this.waveSurfer.backend.getDuration();\n const width: number =\n this.waveSurfer.params.fillParent && !this.waveSurfer.params.scrollParent\n ? this.waveSurfer.timeline.drawer.getWidth()\n : this.waveSurfer.timeline.drawer.wrapper.scrollWidth * this.waveSurfer.params.pixelRatio;\n\n x = (width / duration) * this.waveSurfer.getCurrentTime() - 2;\n\n // update the timeline canvas\n this.waveSurfer.timeline.render();\n\n // draw the cursor on the timeline\n this.waveSurfer.timeline.canvases.forEach((canvas, i) => {\n const leftOffset = i * this.waveSurfer.timeline.maxCanvasWidth;\n\n const ctx = canvas.getContext('2d');\n\n ctx.fillStyle = '#fd7e14';\n ctx.beginPath();\n ctx.moveTo(x - 12 - leftOffset, 20);\n ctx.lineTo(x + 12 - leftOffset, 20);\n ctx.lineTo(x - leftOffset, 45);\n ctx.fill();\n });\n }\n\n private startTimeUpdater() {\n this.stopTimeUpdater();\n\n const timeUpdater = timer(0, 40);\n this.timeUpdateSubscription = timeUpdater.subscribe(() => {\n this.updateCurrentTime();\n });\n }\n\n private stopTimeUpdater() {\n if (this.timeUpdateSubscription) {\n this.timeUpdateSubscription.unsubscribe();\n }\n }\n\n formatTimeCallback(seconds: number, pxPerSec: number) {\n if (this.selectedComposition.gridType === 'musical') {\n return Math.round(seconds / this.selectedComposition.timeSignatureUpper / (60 / this.selectedComposition.beatsPerMinute));\n } else {\n // calculate minutes and seconds from seconds count\n const minutes = parseInt((seconds / 60) as any, 10);\n seconds = parseInt((seconds % 60) as any, 10);\n\n // fill up seconds with zeroes\n const secondsStr = seconds < 10 ? '0' + seconds : seconds;\n return `${minutes}:${secondsStr}`;\n }\n }\n\n timeInterval(pxPerSec: number) {\n if (this.selectedComposition.gridType === 'musical') {\n const interval = 60 / this.selectedComposition.beatsPerMinute / this.selectedComposition.gridResolution;\n\n if (pxPerSec < 40) {\n return interval * 4;\n } else if (pxPerSec < 80) {\n return interval * 2;\n }\n\n return interval;\n } else {\n if (pxPerSec >= 25) {\n return 1;\n } else if (pxPerSec * 5 >= 25) {\n return 5;\n } else if (pxPerSec * 15 >= 25) {\n return 15;\n }\n\n return Math.ceil(0.5 / pxPerSec) * 60;\n }\n }\n\n primaryLabelInterval(pxPerSec: number) {\n if (this.selectedComposition.gridType === 'musical') {\n const interval = this.selectedComposition.timeSignatureUpper * this.selectedComposition.gridResolution;\n\n return interval;\n } else {\n if (pxPerSec >= 25) {\n return 10;\n } else if (pxPerSec * 5 >= 25) {\n return 6;\n } else if (pxPerSec * 15 >= 25) {\n return 4;\n }\n\n return 4;\n }\n }\n\n secondaryLabelInterval(pxPerSec: number) {\n if (this.selectedComposition.gridType === 'musical') {\n return 0;\n } else {\n if (pxPerSec >= 25) {\n return 5;\n } else if (pxPerSec * 5 >= 25) {\n return 2;\n } else if (pxPerSec * 15 >= 25) {\n return 2;\n }\n return 2;\n }\n }\n\n private seeekWithTimeline(e: any) {\n // taken from wavesurfer -> drawer -> handleEvent\n const clientX = e.targetTouches ? e.targetTouches[0].clientX : e.clientX;\n const bbox = this.waveSurfer.timeline.wrapper.getBoundingClientRect();\n\n const nominalWidth = this.waveSurfer.timeline.drawer.width;\n const parentWidth = this.waveSurfer.timeline.drawer.getWidth();\n\n let progress: number;\n\n if (!this.waveSurfer.timeline.drawer.params.fillParent && nominalWidth < parentWidth) {\n progress =\n (this.waveSurfer.timeline.drawer.params.rtl ? bbox.right - clientX : clientX - bbox.left) *\n (this.waveSurfer.timeline.drawer.params.pixelRatio / nominalWidth) || 0;\n\n if (progress > 1) {\n progress = 1;\n }\n } else {\n progress =\n ((this.waveSurfer.timeline.drawer.params.rtl ? bbox.right - clientX : clientX - bbox.left) +\n this.waveSurfer.timeline.wrapper.scrollLeft) /\n this.waveSurfer.timeline.wrapper.scrollWidth || 0;\n }\n\n progress = Math.max(progress, 0);\n\n setTimeout(() => {\n this.waveSurfer.seekTo(progress);\n this.detectChanges.next();\n this.presetService.previewLive(this.selectedComposition.name, Math.round(this.waveSurfer.getCurrentTime() * 1000));\n }, 0);\n }\n\n applyZoom(zoom: any) {\n if (zoom < 0 || zoom > 200) {\n return;\n }\n\n this.zoom = zoom;\n if (this.waveSurfer) {\n setTimeout(() => {\n this.waveSurfer.zoom(this.zoom);\n this.updateCurrentTime();\n }, 0);\n }\n }\n\n private isWaveSurferReady(): boolean {\n if (!this.waveSurfer) {\n return false;\n }\n\n if (!this.waveSurfer.isReady) {\n return false;\n }\n\n return true;\n }\n\n addRegion(waveSurferRegion?: any) {\n if (!this.isWaveSurferReady()) {\n return;\n }\n\n if (!this.sceneService.selectedScenes || this.sceneService.selectedScenes.length !== 1) {\n return;\n }\n\n if (!this.selectedComposition) {\n return;\n }\n\n const scenePlaybackRegion: ScenePlaybackRegion = new ScenePlaybackRegion();\n scenePlaybackRegion.sceneUuid = this.sceneService.selectedScenes[0].uuid;\n\n if (waveSurferRegion) {\n scenePlaybackRegion.startMillis = waveSurferRegion.start * 1000;\n scenePlaybackRegion.endMillis = waveSurferRegion.end * 1000;\n } else {\n scenePlaybackRegion.startMillis = (this.waveSurfer.getDuration() * 1000) / 3;\n scenePlaybackRegion.endMillis = ((this.waveSurfer.getDuration() * 1000) / 3) * 2;\n }\n\n this.selectedComposition.scenePlaybackRegions.push(scenePlaybackRegion);\n\n this.selectedPlaybackRegion = scenePlaybackRegion;\n\n if (waveSurferRegion) {\n waveSurferRegion.color =\n 'rgba(' +\n this.hexToRgb(this.sceneService.selectedScenes[0].color).r +\n ', ' +\n this.hexToRgb(this.sceneService.selectedScenes[0].color).g +\n ', ' +\n this.hexToRgb(this.sceneService.selectedScenes[0].color).b +\n ', ' +\n this.intensityHighlighted +\n ')';\n waveSurferRegion.attributes.selectable = true;\n this.connectRegion(waveSurferRegion, this.sceneService.selectedScenes[0], scenePlaybackRegion);\n this.updateRegionSelection();\n } else {\n this.drawRegion(scenePlaybackRegion, this.sceneService.selectedScenes[0]);\n }\n\n this.presetService.previewLive();\n }\n\n private getSnapToGridInterval(): number {\n if (this.selectedComposition.snapToGrid) {\n return 60 / this.selectedComposition.beatsPerMinute / this.selectedComposition.gridResolution;\n }\n\n return undefined;\n }\n\n private getSnapToGridOffset(): number {\n return this.selectedComposition.gridOffsetMillis / 1000;\n }\n\n deleteSelectedComposition() {\n this.projectService.project.compositions.splice(this.selectedCompositionIndex, 1);\n this.selectedComposition = undefined;\n this.selectedCompositionIndex = undefined;\n this.destroyWaveSurfer();\n if (this.projectService.project.compositions.length > 0) {\n this.selectCompositionIndex(0);\n }\n }\n\n destroyWaveSurfer() {\n this.duration = undefined;\n this.loadingAudioFile = false;\n\n if (this.waveSurfer) {\n this.waveSurfer.destroy();\n this.waveSurfer = undefined;\n }\n }\n\n createWaveSurfer() {\n this.destroyWaveSurfer();\n\n if (!this.selectedComposition.audioFileName) {\n return;\n }\n\n this.loadingAudioFile = true;\n\n setTimeout(() => {\n this.waveSurfer = WaveSurfer.create({\n container: '#waveform',\n waveColor: 'white',\n progressColor: 'white',\n // barWidth: 2,\n height: 1,\n interact: false,\n // Use for timelines without sound. Wave will be displayed\n // wrong, but should work for a dummy audio without any waves.\n // duration: 400,\n plugins: [\n CursorPlugin.create({\n // showTime: true,\n opacity: 1,\n color: '#fd7e14',\n hideOnBlur: false /* don't show/hide the cursor on the wave (only on the timeline) */,\n }),\n RegionsPlugin.create({\n dragSelection: {\n slop: 5,\n },\n color: '#fff',\n snapToGridInterval: this.getSnapToGridInterval(),\n snapToGridOffset: this.getSnapToGridOffset(),\n }),\n TimeLinePlugin.create({\n container: '#waveform-timeline',\n primaryFontColor: '#fff',\n secondaryFontColor: '#fff',\n offset: this.getSnapToGridOffset(),\n formatTimeCallback: this.formatTimeCallback.bind(this),\n timeInterval: this.timeInterval.bind(this),\n primaryLabelInterval: this.primaryLabelInterval.bind(this),\n secondaryLabelInterval: this.secondaryLabelInterval.bind(this),\n }),\n ],\n });\n\n let audioFileName: string;\n\n if (this.configService.enableMediaLibrary) {\n // the file name is also used for the real file name\n audioFileName = 'file/get?name=' + this.selectedComposition.audioFileName + '&type=AUDIO';\n } else {\n // the composition uuid and extension is used as the file name\n audioFileName =\n 'composition-files/?file=' +\n this.selectedComposition.uuid +\n '.' +\n this.selectedComposition.audioFileName.substr(this.selectedComposition.audioFileName.lastIndexOf('.') + 1);\n }\n\n this.waveSurfer.load(this.configService.restUrl + audioFileName);\n\n this.waveSurfer.on('ready', () => {\n setTimeout(() => {\n // try guessing the bpm and offset from the file, if necessary\n if (this.selectedComposition.tempoGuessed) {\n // we already guessed the BPM of this file --> don't do it again\n this.loadingAudioFile = false;\n } else {\n // we have not yet guessed the BPM --> do it now\n this.selectedComposition.tempoGuessed = true;\n guess(this.waveSurfer.backend.buffer)\n .then(({ bpm, offset }) => {\n // the bpm and offset could be guessed\n this.selectedComposition.beatsPerMinute = bpm;\n this.selectedComposition.gridOffsetMillis = offset * 1000;\n this.loadingAudioFile = false;\n })\n .catch((err) => {\n // something went wrong\n console.error('Could not detect the BPM from the audio file', err);\n this.loadingAudioFile = false;\n });\n }\n\n this.duration = this.msToTime(this.waveSurfer.getDuration() * 1000);\n this.drawAllRegions();\n\n // scroll wavesurfer in sync with the timeline\n this.waveSurfer.timeline.wrapper.addEventListener('scroll', () => {\n this.waveSurfer.drawer.wrapper.scrollLeft = this.waveSurfer.timeline.wrapper.scrollLeft;\n\n // Set the scroll position of the timeline to the same position as the wavesurfer,\n // because the timeline is larger than wavesurfer and might get out of sync.\n // This way, if wavesurfer cannot scroll any further, we reset the position\n // of the timeline as well.\n this.waveSurfer.timeline.wrapper.scrollLeft = this.waveSurfer.drawer.wrapper.scrollLeft;\n });\n\n // display the cursor also on the timeline\n this.waveSurfer.timeline.wrapper.addEventListener('mouseenter', () => {\n this.waveSurfer.cursor.showCursor();\n });\n this.waveSurfer.timeline.wrapper.addEventListener('mouseleave', () => {\n this.waveSurfer.cursor.hideCursor();\n });\n this.waveSurfer.timeline.wrapper.addEventListener('mousemove', (e: any) => {\n const bbox = this.waveSurfer.container.getBoundingClientRect();\n const x = e.clientX - bbox.left;\n this.waveSurfer.cursor.updateCursorPosition(x, 0);\n });\n\n // hide the cursor on the wave initially. in combination with the param hideOnBlur = false,\n // it will never be displayed on the wave now. we handle it on the timeline only.\n this.waveSurfer.cursor.hideCursor();\n\n // seek on timeline-click\n this.waveSurfer.timeline.wrapper.addEventListener('mousedown', (e: any) => {\n this.timelineClicking = true;\n this.seeekWithTimeline(e);\n });\n\n this.waveSurfer.timeline.wrapper.addEventListener('mousemove', (e: any) => {\n if (this.timelineClicking) {\n this.seeekWithTimeline(e);\n }\n });\n\n this.waveSurfer.timeline.wrapper.addEventListener('mouseup', (e: any) => {\n this.timelineClicking = false;\n });\n\n this.updateCurrentTime();\n\n this.detectChanges.next();\n this.waveSurferReady.next();\n }, 0);\n });\n\n this.waveSurfer.on('error', (error: any) => {\n // could not load the composition --> delete it\n // (this may occur, when the composition has been deleted but the project is not saved afterwards)\n this.deleteSelectedComposition();\n });\n\n this.waveSurfer.on('seek', () => {\n this.updateCurrentTime();\n });\n\n this.waveSurfer.on('play', () => {\n this.startTimeUpdater();\n });\n\n this.waveSurfer.on('pause', () => {\n this.stopTimeUpdater();\n });\n\n this.waveSurfer.on('region-created', (region) => {\n // region created by selection or programmatically\n if (this.sceneService.selectedScenes && this.sceneService.selectedScenes.length === 1) {\n if (!region.data.handled) {\n this.addRegion(region);\n }\n } else {\n if (!region.data.handled) {\n region.remove();\n }\n }\n });\n\n this.waveSurfer.on('region-updated', (region: any) => {\n this.detectChanges.next();\n this.presetService.previewLive();\n });\n }, 0);\n }\n\n private hexToRgb(hex: string) {\n const result = /^#?([a-f\\d]{2})([a-f\\d]{2})([a-f\\d]{2})$/i.exec(hex);\n return result\n ? {\n r: parseInt(result[1], 16),\n g: parseInt(result[2], 16),\n b: parseInt(result[3], 16),\n }\n : null;\n }\n\n private updateRegionSelection() {\n if (!this.waveSurfer) {\n return;\n }\n\n for (const key of Object.keys(this.waveSurfer.regions.list)) {\n const region: any = this.waveSurfer.regions.list[key];\n\n // if no scene is set, the region is not valid (e.g. has been created, while\n // no scene has been selected and remove did not work properly)\n if (region.scene) {\n let intensity = this.intensity;\n\n region.drag = false;\n region.resize = false;\n region.attributes.selectable = false;\n\n if (this.sceneService.sceneIsSelected(region.scene)) {\n intensity = this.intensitySelectedScene;\n region.drag = true;\n region.resize = true;\n region.attributes.selectable = true;\n }\n\n region.attributes.selected = false;\n\n if (this.selectedPlaybackRegion && this.selectedPlaybackRegion === region.scenePlaybackRegion) {\n intensity = this.intensityHighlighted;\n region.attributes.selected = true;\n }\n\n region.color =\n 'rgba(' +\n this.hexToRgb(region.scene.color).r +\n ', ' +\n this.hexToRgb(region.scene.color).g +\n ', ' +\n this.hexToRgb(region.scene.color).b +\n ', ' +\n intensity +\n ')';\n region.updateRender();\n }\n }\n }\n\n updateSelectedRegion() {\n if (!this.waveSurfer) {\n return;\n }\n\n if (!this.selectedPlaybackRegion) {\n return;\n }\n\n for (const key of Object.keys(this.waveSurfer.regions.list)) {\n const region: any = this.waveSurfer.regions.list[key];\n\n if (this.selectedPlaybackRegion === region.scenePlaybackRegion) {\n region.start = this.selectedPlaybackRegion.startMillis / 1000;\n region.end = this.selectedPlaybackRegion.endMillis / 1000;\n region.updateRender();\n break;\n }\n }\n }\n\n private setSelectedRegion(scenePlaybackRegion?: ScenePlaybackRegion) {\n if (this.selectedPlaybackRegion && this.selectedPlaybackRegion === scenePlaybackRegion) {\n // No update required\n return;\n }\n\n if (scenePlaybackRegion) {\n this.selectedPlaybackRegion = scenePlaybackRegion;\n }\n\n this.updateRegionSelection();\n }\n\n private getRegionSnapToGridValue(value: number): number {\n // the regions should snap to a grid\n const offset = this.getSnapToGridOffset() || 0;\n const interval = this.getSnapToGridInterval() || 0;\n return Math.round((value - offset) / interval) * interval + offset;\n }\n\n private connectRegion(waveSurferRegion: any, scene: Scene, scenePlaybackRegion: ScenePlaybackRegion, preset?: Preset) {\n waveSurferRegion.scenePlaybackRegion = scenePlaybackRegion;\n waveSurferRegion.scene = scene;\n waveSurferRegion.preset = preset;\n\n waveSurferRegion.on('click', (event) => {\n if (this.sceneService.sceneIsSelected(scene)) {\n this.setSelectedRegion(scenePlaybackRegion);\n }\n });\n\n waveSurferRegion.on('update', () => {\n this.setSelectedRegion(scenePlaybackRegion);\n if (this.selectedComposition.snapToGrid) {\n // update the regions boundaries. they may not snap to grid, if it has been\n // disabled during creation of the region but activated afterwards.\n waveSurferRegion.start = this.getRegionSnapToGridValue(waveSurferRegion.start);\n waveSurferRegion.end = this.getRegionSnapToGridValue(waveSurferRegion.end);\n }\n scenePlaybackRegion.startMillis = waveSurferRegion.start * 1000;\n scenePlaybackRegion.endMillis = waveSurferRegion.end * 1000;\n });\n }\n\n private drawRegion(scenePlaybackRegion: ScenePlaybackRegion, scene: Scene) {\n // draw the regions of the currently selected scene\n if (!this.isWaveSurferReady()) {\n return;\n }\n\n // add the playback region\n const waveSurferRegion = this.waveSurfer.addRegion({\n start: scenePlaybackRegion.startMillis / 1000,\n end: scenePlaybackRegion.endMillis / 1000,\n color: '#fff',\n data: { handled: true },\n });\n this.connectRegion(waveSurferRegion, scene, scenePlaybackRegion);\n\n // TODO show the all presets\n // for (let presetUuid of scene.presetUuids) {\n // const preset = this.presetService.getPresetByUuid(presetUuid);\n\n // let waveSurferRegion = this.timelineService.waveSurfer.addRegion({\n // start: (scenePlaybackRegion.startMillis + (preset.startMillis ? preset.startMillis : 0)) / 1000,\n // end: (scenePlaybackRegion.startMillis\n // + (preset.endMillis ? preset.endMillis : scenePlaybackRegion.endMillis - scenePlaybackRegion.startMillis)) / 1000,\n // color: '#fff',\n // data: { handled: true },\n // // TODO\n // attributes: {\n // preset: true,\n // name: 'Preset 1'\n // }\n // });\n // this.connectRegion(waveSurferRegion, scene, scenePlaybackRegion, preset);\n // }\n\n this.updateRegionSelection();\n }\n\n removeRegion() {\n if (!this.selectedPlaybackRegion) {\n return;\n }\n\n if (this.sceneService.selectedScenes.length !== 1) {\n return;\n }\n\n for (let i = 0; i < this.selectedComposition.scenePlaybackRegions.length; i++) {\n if (this.selectedComposition.scenePlaybackRegions[i] === this.selectedPlaybackRegion) {\n // remove the region from wavesurfer\n for (const key of Object.keys(this.waveSurfer.regions.list)) {\n const region: any = this.waveSurfer.regions.list[key];\n\n if (region.scenePlaybackRegion === this.selectedPlaybackRegion) {\n region.remove();\n }\n }\n\n this.selectedPlaybackRegion = undefined;\n this.selectedComposition.scenePlaybackRegions.splice(i, 1);\n\n return;\n }\n }\n\n this.presetService.previewLive();\n }\n\n getPresetsInTime(timeMillis: number): PresetRegionScene[] {\n // Return all presets which should be active during the specified time\n const activePresets: PresetRegionScene[] = [];\n\n for (let sceneIndex = this.projectService.project.scenes.length - 1; sceneIndex >= 0; sceneIndex--) {\n const scene = this.projectService.project.scenes[sceneIndex];\n\n for (const region of this.selectedComposition.scenePlaybackRegions) {\n if (region.sceneUuid === scene.uuid) {\n for (let presetIndex = this.projectService.project.presets.length - 1; presetIndex >= 0; presetIndex--) {\n for (const presetUuid of scene.presetUuids) {\n if (presetUuid === this.projectService.project.presets[presetIndex].uuid) {\n const preset = this.presetService.getPresetByUuid(presetUuid);\n\n if (preset) {\n let presetStartMillis = preset.startMillis === undefined ? region.startMillis : region.startMillis + preset.startMillis;\n let presetEndMillis = preset.endMillis === undefined ? region.endMillis : region.startMillis + preset.endMillis;\n\n // extend the running time, if fading is done outside the boundaries\n presetStartMillis -= preset.fadeInPre ? preset.fadeInMillis : 0;\n presetEndMillis += preset.fadeOutPost ? preset.fadeOutMillis : 0;\n\n if (presetStartMillis <= timeMillis && presetEndMillis >= timeMillis) {\n activePresets.push(new PresetRegionScene(preset, region, scene));\n }\n }\n }\n }\n }\n }\n }\n }\n\n return activePresets;\n }\n\n drawAllRegions() {\n if (!this.selectedComposition) {\n return;\n }\n\n // draw the regions in the same order as their corresponding scenes, but draw\n // the selected ones last, to make sure they're always clickable.\n for (let sceneIndex = this.projectService.project.scenes.length - 1; sceneIndex >= 0; sceneIndex--) {\n const scene = this.projectService.project.scenes[sceneIndex];\n if (!this.sceneService.sceneIsSelected(scene)) {\n for (const scenePlaybackRegion of this.selectedComposition.scenePlaybackRegions) {\n if (scenePlaybackRegion.sceneUuid === scene.uuid) {\n this.drawRegion(scenePlaybackRegion, scene);\n }\n }\n }\n }\n\n // draw all selected scenes afterwards\n for (let sceneIndex = this.projectService.project.scenes.length - 1; sceneIndex >= 0; sceneIndex--) {\n const scene = this.projectService.project.scenes[sceneIndex];\n\n if (this.sceneService.sceneIsSelected(scene)) {\n for (const scenePlaybackRegion of this.selectedComposition.scenePlaybackRegions) {\n if (scenePlaybackRegion.sceneUuid === scene.uuid) {\n this.drawRegion(scenePlaybackRegion, scene);\n }\n }\n }\n }\n }\n\n updateGrid() {\n if (this.waveSurferReady) {\n this.waveSurfer.timeline.params.offset = this.getSnapToGridOffset();\n\n this.waveSurfer.regions.params.snapToGridInterval = this.getSnapToGridInterval();\n this.waveSurfer.regions.params.snapToGridOffset = this.getSnapToGridOffset();\n }\n this.updateCurrentTime();\n }\n\n getExternalCompositionNames(): Observable<string[]> {\n // get available compositions from an external pool (e.g. Rocket Show)\n return this.http.get('composition/list').pipe(\n map((response: object[]) => {\n const compositionNames: string[] = [];\n\n for (const responseComposition of response) {\n compositionNames.push((responseComposition as any).name);\n }\n\n return compositionNames;\n })\n );\n }\n\n selectCompositionIndex(index: number) {\n this.selectedComposition = this.projectService.project.compositions[index];\n this.selectedCompositionIndex = index;\n this.projectService.project.selectedCompositionUuid = this.selectedComposition.uuid;\n this.createWaveSurfer();\n\n // required to trigger timeline.component.resize()\n this.waveSurferReady.next();\n\n this.applyZoom(0);\n }\n}\n","import { Injectable } from '@angular/core';\nimport { Universe } from '../models/universe';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class UniverseService {\n universes: Universe[] = [];\n\n constructor() {}\n\n getUniverseByUuid(uuid: string): Universe {\n for (const universe of this.universes) {\n if (universe.uuid === uuid) {\n return universe;\n }\n }\n }\n}\n","import { Injectable } from '@angular/core';\nimport { Subject } from 'rxjs';\nimport * as THREE from 'three';\nimport { CachedFixture } from '../models/cached-fixture';\nimport { EffectCurve } from '../models/effect-curve';\nimport { FixtureCapabilityType } from '../models/fixture-capability';\nimport { FixtureChannelValue } from '../models/fixture-channel-value';\nimport { Preset } from '../models/preset';\nimport { PresetRegionScene } from '../models/preset-region-scene';\nimport { Universe } from '../models/universe';\nimport { FixtureService } from './fixture.service';\nimport { PresetService } from './preset.service';\nimport { ProjectService } from './project.service';\nimport { SceneService } from './scene.service';\nimport { TimelineService } from './timeline.service';\nimport { UniverseService } from './universe.service';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class PreviewService {\n public doUpdateFixtureSetup: Subject<void> = new Subject();\n\n public scene: THREE.Scene;\n\n private stageMeshes: THREE.Mesh[] = [];\n private stageMaterial = new THREE.MeshStandardMaterial({\n color: 0x0d0d0d,\n // roughness: 0.5,\n // metalness: 0.5,\n });\n\n constructor(\n private presetService: PresetService,\n private fixtureService: FixtureService,\n private sceneService: SceneService,\n private timelineService: TimelineService,\n private universeService: UniverseService,\n private projectService: ProjectService\n ) {}\n\n private getAlreadyCalculatedFixture(fixtures: CachedFixture[], fixtureIndex: number): CachedFixture {\n // Has this fixture already been calculated (same universe and dmx start address as a fixture before)\n // --> return it\n for (let i = 0; i < fixtureIndex; i++) {\n const calculatedFixture = fixtures[i];\n\n if (\n calculatedFixture.fixture.dmxUniverseUuid === fixtures[fixtureIndex].fixture.dmxUniverseUuid &&\n calculatedFixture.fixture.dmxFirstChannel === fixtures[fixtureIndex].fixture.dmxFirstChannel\n ) {\n return calculatedFixture;\n }\n }\n\n return undefined;\n }\n\n public getPresets(timeMillis: number): PresetRegionScene[] {\n // Get relevant presets in correct order to process with their corresponding scene, if available\n let presets: PresetRegionScene[] = [];\n\n if (this.timelineService.playState === 'playing') {\n // Only use active presets in current regions\n presets = this.timelineService.getPresetsInTime(timeMillis);\n } else {\n if (this.projectService.project.previewPreset) {\n // Only preview the selected preset\n if (this.presetService.selectedPreset) {\n presets.push(new PresetRegionScene(this.presetService.selectedPreset, undefined, undefined));\n }\n } else {\n // Preview the selected scenes\n for (let sceneIndex = this.projectService.project.scenes.length - 1; sceneIndex >= 0; sceneIndex--) {\n for (const scene of this.sceneService.selectedScenes) {\n if (scene.uuid === this.projectService.project.scenes[sceneIndex].uuid) {\n for (let presetIndex = this.projectService.project.presets.length - 1; presetIndex >= 0; presetIndex--) {\n for (const presetUuid of scene.presetUuids) {\n // Loop over the presets in the preset service to retain the preset order\n if (presetUuid === this.projectService.project.presets[presetIndex].uuid) {\n presets.push(new PresetRegionScene(this.projectService.project.presets[presetIndex], undefined, scene));\n break;\n }\n }\n }\n }\n }\n }\n }\n }\n\n return presets;\n }\n\n private mixChannelValue(\n existingChannelValues: FixtureChannelValue[],\n channelValue: FixtureChannelValue,\n intensityPercentage: number,\n defaultValue: number = 0\n ) {\n let newValue: number = channelValue.value;\n let existingValue: number = defaultValue;\n\n if (intensityPercentage < 1) {\n // We need to mix a possibly existing value (or the default value 0) with the new value (fading)\n\n // Get the existent value for this property\n for (const existingChannelValue of existingChannelValues) {\n if (\n existingChannelValue.channelName === channelValue.channelName &&\n existingChannelValue.profileUuid === channelValue.profileUuid\n ) {\n existingValue = existingChannelValue.value;\n break;\n }\n }\n\n // Mix the existing value with the new value\n newValue = existingValue * (1 - intensityPercentage) + newValue * intensityPercentage;\n }\n\n // Remove the existent value, if available\n for (let i = 0; i < existingChannelValues.length; i++) {\n if (\n existingChannelValues[i].channelName === channelValue.channelName &&\n existingChannelValues[i].profileUuid === channelValue.profileUuid\n ) {\n existingChannelValues.splice(i, 1);\n break;\n }\n }\n\n // Add the new value\n const fixtureChannelValue = new FixtureChannelValue();\n fixtureChannelValue.channelName = channelValue.channelName;\n fixtureChannelValue.profileUuid = channelValue.profileUuid;\n fixtureChannelValue.value = newValue;\n existingChannelValues.push(fixtureChannelValue);\n }\n\n // Get the fixture index inside the passed preset (used for chasing)\n private getFixtureIndex(preset: Preset, fixtureUuid: string): number {\n let index = 0;\n const countedDmxChannels: number[] = [];\n\n // Loop over the global fixtures to retain the order\n for (const fixture of this.projectService.project.fixtures) {\n for (const presetFixtureUuid of preset.fixtureUuids) {\n if (presetFixtureUuid === fixture.uuid) {\n if (fixture.uuid === fixtureUuid) {\n return index;\n }\n\n // don't count fixtures on the same channel as already counted ones\n if (!countedDmxChannels.includes(fixture.dmxFirstChannel)) {\n countedDmxChannels.push(fixture.dmxFirstChannel);\n index++;\n }\n break;\n }\n }\n }\n\n // Not found in the preset\n return undefined;\n }\n\n private getPresetIntensity(preset: PresetRegionScene, timeMillis: number): number {\n // When fading is in progress (on preset or scene-level), the current preset does not\n // fully cover underlying values.\n // -> 0 = no covering at all, 1 = fully cover (no fading)\n let intensityPercentageScene = 1;\n let intensityPercentagePreset = 1;\n let intensityPercentage = 1;\n\n if (preset.region && preset.scene) {\n // Fade out is stronger than fade in (if they overlap)\n\n // Take away intensity for scene fading\n const sceneStartMillis = preset.scene.fadeInPre ? preset.region.startMillis - preset.scene.fadeInMillis : preset.region.startMillis;\n const sceneEndMillis = preset.scene.fadeOutPost ? preset.region.endMillis + preset.scene.fadeOutMillis : preset.region.endMillis;\n\n if (timeMillis > sceneEndMillis - preset.scene.fadeOutMillis && timeMillis < sceneEndMillis) {\n // Scene fades out\n intensityPercentageScene = (sceneEndMillis - timeMillis) / preset.scene.fadeOutMillis;\n } else if (timeMillis < sceneStartMillis + preset.scene.fadeInMillis && timeMillis > sceneStartMillis) {\n // Scene fades in\n intensityPercentageScene = (timeMillis - sceneStartMillis) / preset.scene.fadeInMillis;\n }\n }\n\n if (preset.region && preset.preset) {\n // Take away intensity for preset fading\n let presetStartMillis =\n preset.preset.startMillis === undefined ? preset.region.startMillis : preset.region.startMillis + preset.preset.startMillis;\n\n let presetEndMillis =\n preset.preset.endMillis === undefined ? preset.region.endMillis : preset.region.startMillis + preset.preset.endMillis;\n\n // extend the running time, if fading is done outside the boundaries\n presetStartMillis -= preset.preset.fadeInPre ? preset.preset.fadeInMillis : 0;\n presetEndMillis += preset.preset.fadeOutPost ? preset.preset.fadeOutMillis : 0;\n\n if (timeMillis > presetEndMillis - preset.preset.fadeOutMillis && timeMillis < presetEndMillis) {\n // Preset fades out\n intensityPercentagePreset = (presetEndMillis - timeMillis) / preset.preset.fadeOutMillis;\n } else if (timeMillis < presetStartMillis + preset.preset.fadeInMillis && timeMillis > presetStartMillis) {\n // Preset fades in\n intensityPercentagePreset = (timeMillis - presetStartMillis) / preset.preset.fadeInMillis;\n }\n\n intensityPercentage = intensityPercentageScene * intensityPercentagePreset;\n }\n\n return intensityPercentage;\n }\n\n private mixCapabilityValues(\n preset: PresetRegionScene,\n cachedFixture: CachedFixture,\n values: FixtureChannelValue[],\n intensityPercentage: number\n ) {\n let hasColor = false;\n\n // mix the preset capability values\n for (const presetCapabilityValue of preset.preset.fixtureCapabilityValues) {\n for (const cachedChannel of cachedFixture.channels) {\n if (cachedChannel.channel) {\n for (const channelCapability of cachedChannel.capabilities) {\n if (\n this.fixtureService.capabilitiesMatch(\n presetCapabilityValue.type,\n channelCapability.capability.type,\n presetCapabilityValue.color,\n channelCapability.capability.color,\n presetCapabilityValue.wheel,\n channelCapability.wheelName,\n presetCapabilityValue.profileUuid,\n cachedFixture.profile.uuid\n )\n ) {\n // the capabilities match -> apply the value, if possible\n if (\n (presetCapabilityValue.type === FixtureCapabilityType.Intensity ||\n presetCapabilityValue.type === FixtureCapabilityType.ColorIntensity) &&\n presetCapabilityValue.valuePercentage >= 0\n ) {\n // intensity and colorIntensity (dimmer and color)\n const valuePercentage = presetCapabilityValue.valuePercentage;\n const defaultValue = 0;\n\n // brightness property\n if (cachedChannel.capabilities.length === 1) {\n // the only capability in this channel\n const fixtureChannelValue = new FixtureChannelValue();\n fixtureChannelValue.channelName = cachedChannel.name;\n fixtureChannelValue.profileUuid = cachedFixture.profile.uuid;\n fixtureChannelValue.value = cachedChannel.maxValue * valuePercentage;\n this.mixChannelValue(values, fixtureChannelValue, intensityPercentage, defaultValue);\n\n if (presetCapabilityValue.type === FixtureCapabilityType.ColorIntensity) {\n hasColor = true;\n }\n } else {\n // more than one capability in the channel\n if (channelCapability.capability.brightness === 'off' && valuePercentage === 0) {\n const fixtureChannelValue = new FixtureChannelValue();\n fixtureChannelValue.channelName = cachedChannel.name;\n fixtureChannelValue.profileUuid = cachedFixture.profile.uuid;\n fixtureChannelValue.value = channelCapability.centerValue;\n this.mixChannelValue(values, fixtureChannelValue, intensityPercentage, defaultValue);\n\n if (presetCapabilityValue.type === FixtureCapabilityType.ColorIntensity) {\n hasColor = true;\n }\n } else if (\n (channelCapability.capability.brightnessStart === 'dark' || channelCapability.capability.brightnessStart === 'off') &&\n channelCapability.capability.brightnessEnd === 'bright'\n ) {\n const value =\n (channelCapability.capability.dmxRange[1] - channelCapability.capability.dmxRange[0]) * valuePercentage +\n channelCapability.capability.dmxRange[0];\n\n const fixtureChannelValue = new FixtureChannelValue();\n fixtureChannelValue.channelName = cachedChannel.name;\n fixtureChannelValue.profileUuid = cachedFixture.profile.uuid;\n fixtureChannelValue.value = value;\n this.mixChannelValue(values, fixtureChannelValue, intensityPercentage, defaultValue);\n\n if (presetCapabilityValue.type === FixtureCapabilityType.ColorIntensity) {\n hasColor = true;\n }\n }\n }\n } else if (\n (presetCapabilityValue.type === FixtureCapabilityType.Pan || presetCapabilityValue.type === FixtureCapabilityType.Tilt) &&\n presetCapabilityValue.valuePercentage >= 0\n ) {\n const fixtureChannelValue = new FixtureChannelValue();\n fixtureChannelValue.channelName = cachedChannel.name;\n fixtureChannelValue.profileUuid = cachedFixture.profile.uuid;\n fixtureChannelValue.value = cachedChannel.maxValue * presetCapabilityValue.valuePercentage;\n this.mixChannelValue(values, fixtureChannelValue, 1);\n } else if (\n presetCapabilityValue.type === FixtureCapabilityType.WheelSlot &&\n channelCapability.capability.slotNumber === presetCapabilityValue.slotNumber\n ) {\n // wheel slot (color, gobo, etc.)\n const fixtureChannelValue = new FixtureChannelValue();\n fixtureChannelValue.channelName = cachedChannel.name;\n fixtureChannelValue.profileUuid = cachedFixture.profile.uuid;\n fixtureChannelValue.value = channelCapability.centerValue;\n this.mixChannelValue(values, fixtureChannelValue, 1);\n\n // check, whether we just set a color wheel value\n if (channelCapability.wheelIsColor) {\n hasColor = true;\n }\n }\n }\n }\n }\n\n // approximate the color from a color or a different color wheel, if necessary\n if (!hasColor && cachedChannel.colorWheel) {\n const capability = this.presetService.getApproximatedColorWheelCapability(preset.preset, cachedChannel);\n\n if (capability) {\n // we found an approximated color in the available wheel channel\n const fixtureChannelValue = new FixtureChannelValue();\n fixtureChannelValue.channelName = cachedChannel.name;\n fixtureChannelValue.profileUuid = cachedFixture.profile.uuid;\n fixtureChannelValue.value = capability.centerValue;\n this.mixChannelValue(values, fixtureChannelValue, 1);\n }\n }\n }\n }\n }\n\n private mixChannelValues(\n preset: PresetRegionScene,\n cachedFixture: CachedFixture,\n values: FixtureChannelValue[],\n intensityPercentage: number\n ) {\n // mix the preset channel values\n for (const cachedChannel of cachedFixture.channels) {\n if (cachedChannel.channel) {\n for (const channelValue of preset.preset.fixtureChannelValues) {\n if (cachedFixture.profile.uuid === channelValue.profileUuid && cachedChannel.name === channelValue.channelName) {\n this.mixChannelValue(values, channelValue, intensityPercentage);\n }\n }\n }\n }\n }\n\n private mixEffects(\n timeMillis: number,\n fixtureIndex: number,\n preset: PresetRegionScene,\n cachedFixture: CachedFixture,\n values: FixtureChannelValue[],\n intensityPercentage: number\n ) {\n for (const effect of preset.preset.effects) {\n if (effect.visible) {\n // EffectCurve\n if (effect instanceof EffectCurve) {\n const effectCurve = effect as EffectCurve;\n\n // capabilities\n for (const capability of effectCurve.capabilities) {\n for (const cachedChannel of cachedFixture.channels) {\n for (const channelCapability of cachedChannel.capabilities) {\n if (\n this.fixtureService.capabilitiesMatch(\n capability.type,\n channelCapability.capability.type,\n capability.color,\n channelCapability.capability.color,\n null,\n null,\n null,\n null\n )\n ) {\n const fixtureChannelValue = new FixtureChannelValue();\n fixtureChannelValue.channelName = cachedChannel.name;\n fixtureChannelValue.profileUuid = cachedFixture.profile.uuid;\n fixtureChannelValue.value = cachedChannel.maxValue * effectCurve.getValueAtMillis(timeMillis, fixtureIndex);\n this.mixChannelValue(values, fixtureChannelValue, intensityPercentage);\n }\n }\n }\n }\n\n // channels\n for (const channelProfile of effectCurve.channels) {\n if (channelProfile.profileUuid === cachedFixture.profile.uuid) {\n for (const channel of channelProfile.channels) {\n for (const cachedChannel of cachedFixture.channels) {\n if (cachedChannel.name === channel) {\n const fixtureChannelValue = new FixtureChannelValue();\n fixtureChannelValue.channelName = cachedChannel.name;\n fixtureChannelValue.profileUuid = cachedFixture.profile.uuid;\n fixtureChannelValue.value = cachedChannel.maxValue * effectCurve.getValueAtMillis(timeMillis, fixtureIndex);\n this.mixChannelValue(values, fixtureChannelValue, intensityPercentage);\n }\n }\n }\n\n break;\n }\n }\n }\n\n // TODO other effects (PanTilt, etc.)\n }\n }\n }\n\n // return all fixture uuids with their corresponding channel values\n public getChannelValues(timeMillis: number, presets: PresetRegionScene[]): Map<CachedFixture, FixtureChannelValue[]> {\n // Loop over all relevant presets and calc the property values from the presets (capabilities and effects)\n const calculatedFixtures = new Map<CachedFixture, FixtureChannelValue[]>();\n\n for (let i = 0; i < this.fixtureService.cachedFixtures.length; i++) {\n const cachedFixture = this.fixtureService.cachedFixtures[i];\n\n // all values of the current fixture channels\n let values: FixtureChannelValue[] = [];\n\n const alreadyCalculatedFixture = this.getAlreadyCalculatedFixture(this.fixtureService.cachedFixtures, i);\n\n if (alreadyCalculatedFixture) {\n // only relevant for the preview --> reuse all calculated values\n values = Object.assign([], calculatedFixtures.get(alreadyCalculatedFixture));\n } else {\n // apply the default values\n for (const cachedChannel of cachedFixture.channels) {\n if (cachedChannel.channel) {\n if (cachedChannel.channel.defaultValue) {\n const fixtureChannelValue = new FixtureChannelValue();\n fixtureChannelValue.channelName = cachedChannel.name;\n fixtureChannelValue.profileUuid = cachedFixture.profile.uuid;\n fixtureChannelValue.value = cachedChannel.defaultValue;\n this.mixChannelValue(values, fixtureChannelValue, 1);\n }\n }\n }\n\n for (const preset of presets) {\n // search for this fixture in the preset and get it's preset-specific index (for chasing effects)\n const fixtureIndex = this.getFixtureIndex(preset.preset, cachedFixture.fixture.uuid);\n\n if (fixtureIndex >= 0) {\n // this fixture is also in the preset -> mix the required values (overwrite existing values,\n // if set multiple times)\n const intensityPercentage = this.getPresetIntensity(preset, timeMillis);\n\n this.mixCapabilityValues(preset, cachedFixture, values, intensityPercentage);\n this.mixChannelValues(preset, cachedFixture, values, intensityPercentage);\n this.mixEffects(timeMillis, fixtureIndex, preset, cachedFixture, values, intensityPercentage);\n }\n }\n }\n\n // Store the calculated values for subsequent fixtures on the same DMX address\n calculatedFixtures.set(cachedFixture, values);\n }\n\n return calculatedFixtures;\n }\n\n public setUniverseValues(fixtures: Map<CachedFixture, FixtureChannelValue[]>, masterDimmerValue: number) {\n // TODO only, if monitoring is enabled\n return;\n\n // Reset all DMX universes\n for (const universe of this.universeService.universes) {\n universe.channelValues = [];\n for (let i = 0; i < 512; i++) {\n universe.channelValues.push(0);\n }\n }\n\n // loop over each fixture\n fixtures.forEach((channelValues: FixtureChannelValue[], cachedFixture: CachedFixture) => {\n // TODO Get the correct universe for this fixture\n const universe: Universe = this.universeService.getUniverseByUuid(cachedFixture.fixture.dmxUniverseUuid);\n\n // loop over each channel for this fixture\n for (let channelIndex = 0; channelIndex < cachedFixture.mode.channels.length; channelIndex++) {\n const channelObj = cachedFixture.mode.channels[channelIndex];\n if (typeof channelObj === 'string') {\n const channelName = channelObj;\n // match this mode channel with a channel value\n for (const channelValue of channelValues) {\n const channel = this.fixtureService.getChannelByName(cachedFixture, channelName);\n if (channel && channel.channel) {\n const fineIndex = channel.channel.fineChannelAliases.indexOf(channelName);\n if (channel.name === channelValue.channelName || fineIndex > -1) {\n const universeChannel = cachedFixture.fixture.dmxFirstChannel + channelIndex;\n const dmxValue =\n Math.floor(channelValue.value / Math.pow(256, channel.channel.fineChannelAliases.length - (fineIndex + 1))) % 256;\n // TODO\n break;\n }\n }\n }\n }\n }\n });\n }\n\n public fixtureIsSelected(uuid: string, presets: PresetRegionScene[]): boolean {\n for (const preset of presets) {\n for (const fixtureUuid of preset.preset.fixtureUuids) {\n if (fixtureUuid === uuid) {\n return true;\n }\n }\n }\n\n return false;\n }\n\n public updateFixtureSetup() {\n this.doUpdateFixtureSetup.next();\n }\n\n private prepareStageMesh(mesh: THREE.Mesh) {\n mesh.receiveShadow = false;\n mesh.castShadow = false;\n }\n\n public updateStage() {\n if (!this.scene) {\n return;\n }\n\n let geometry: any;\n let mesh: any;\n\n // Remove old meshes from the scene\n for (const existingMesh of this.stageMeshes) {\n this.scene.remove(existingMesh);\n existingMesh.geometry.dispose();\n }\n this.stageMeshes = [];\n\n // Ground\n geometry = new THREE.PlaneGeometry(5000, 5000);\n mesh = new THREE.Mesh(geometry, this.stageMaterial);\n this.prepareStageMesh(mesh);\n mesh.position.set(0, 0, 0);\n mesh.rotateX((Math.PI / 180) * -90);\n this.scene.add(mesh);\n this.stageMeshes.push(mesh);\n\n // Floor\n geometry = new THREE.BoxGeometry(\n this.projectService.project.stageWidthCm,\n this.projectService.project.stageFloorHeightCm,\n this.projectService.project.stageDepthCm\n );\n mesh = new THREE.Mesh(geometry, this.stageMaterial);\n this.prepareStageMesh(mesh);\n mesh.position.set(0, this.projectService.project.stageFloorHeightCm / 2, 0);\n this.scene.add(mesh);\n this.stageMeshes.push(mesh);\n\n // Pillar front left\n geometry = new THREE.BoxGeometry(\n this.projectService.project.stagePillarWidthCm,\n this.projectService.project.stageHeightCm,\n this.projectService.project.stagePillarWidthCm\n );\n mesh = new THREE.Mesh(geometry, this.stageMaterial);\n this.prepareStageMesh(mesh);\n mesh.position.set(\n -this.projectService.project.stageWidthCm / 2 + this.projectService.project.stagePillarWidthCm / 2,\n this.projectService.project.stageHeightCm / 2 + this.projectService.project.stageFloorHeightCm,\n this.projectService.project.stageDepthCm / 2 - this.projectService.project.stagePillarWidthCm / 2\n );\n this.scene.add(mesh);\n this.stageMeshes.push(mesh);\n\n // Pillar front right\n geometry = new THREE.BoxGeometry(\n this.projectService.project.stagePillarWidthCm,\n this.projectService.project.stageHeightCm,\n this.projectService.project.stagePillarWidthCm\n );\n mesh = new THREE.Mesh(geometry, this.stageMaterial);\n this.prepareStageMesh(mesh);\n mesh.position.set(\n this.projectService.project.stageWidthCm / 2 - this.projectService.project.stagePillarWidthCm / 2,\n this.projectService.project.stageHeightCm / 2 + this.projectService.project.stageFloorHeightCm,\n this.projectService.project.stageDepthCm / 2 - this.projectService.project.stagePillarWidthCm / 2\n );\n this.scene.add(mesh);\n this.stageMeshes.push(mesh);\n\n // Pillar back left\n geometry = new THREE.BoxGeometry(\n this.projectService.project.stagePillarWidthCm,\n this.projectService.project.stageHeightCm,\n this.projectService.project.stagePillarWidthCm\n );\n mesh = new THREE.Mesh(geometry, this.stageMaterial);\n this.prepareStageMesh(mesh);\n mesh.position.set(\n -this.projectService.project.stageWidthCm / 2 + this.projectService.project.stagePillarWidthCm / 2,\n this.projectService.project.stageHeightCm / 2 + this.projectService.project.stageFloorHeightCm,\n -this.projectService.project.stageDepthCm / 2 + this.projectService.project.stagePillarWidthCm / 2\n );\n this.scene.add(mesh);\n this.stageMeshes.push(mesh);\n\n // Pillar back right\n geometry = new THREE.BoxGeometry(\n this.projectService.project.stagePillarWidthCm,\n this.projectService.project.stageHeightCm,\n this.projectService.project.stagePillarWidthCm\n );\n mesh = new THREE.Mesh(geometry, this.stageMaterial);\n this.prepareStageMesh(mesh);\n mesh.position.set(\n this.projectService.project.stageWidthCm / 2 - this.projectService.project.stagePillarWidthCm / 2,\n this.projectService.project.stageHeightCm / 2 + this.projectService.project.stageFloorHeightCm,\n -this.projectService.project.stageDepthCm / 2 + this.projectService.project.stagePillarWidthCm / 2\n );\n this.scene.add(mesh);\n this.stageMeshes.push(mesh);\n\n // Ceiling\n geometry = new THREE.BoxGeometry(\n this.projectService.project.stageWidthCm,\n this.projectService.project.stageCeilingHeightCm,\n this.projectService.project.stageDepthCm\n );\n mesh = new THREE.Mesh(geometry, this.stageMaterial);\n this.prepareStageMesh(mesh);\n mesh.position.set(\n 0,\n this.projectService.project.stageHeightCm +\n this.projectService.project.stageCeilingHeightCm / 2 +\n this.projectService.project.stageFloorHeightCm,\n 0\n );\n this.scene.add(mesh);\n this.stageMeshes.push(mesh);\n }\n}\n","import * as THREE from 'three';\nimport { CachedFixture } from '../../models/cached-fixture';\nimport { CachedFixtureCapability } from '../../models/cached-fixture-capability';\nimport { CachedFixtureChannel } from '../../models/cached-fixture-channel';\nimport { Positioning } from '../../models/fixture';\nimport { FixtureCapabilityColor, FixtureCapabilityType } from '../../models/fixture-capability';\nimport { FixtureChannelValue } from '../../models/fixture-channel-value';\nimport { FixtureService } from '../../services/fixture.service';\n\nexport abstract class Fixture3d {\n fixture: CachedFixture;\n fixtureHasDimmer = false;\n fixtureHasColorWheel = false;\n fixtureHasColor = false;\n\n scene: any;\n\n colorRed: number;\n colorGreen: number;\n colorBlue: number;\n\n dimmer = 0;\n\n isSelected = false;\n isLoaded = false;\n\n protected selectedMaterial: THREE.MeshLambertMaterial;\n\n constructor(public fixtureService: FixtureService, fixture: CachedFixture, scene: any) {\n this.fixture = fixture;\n this.scene = scene;\n\n // TODO Don't create it for each fixture but pass it from the preview service\n this.selectedMaterial = new THREE.MeshLambertMaterial({\n color: 0xff00ff,\n emissive: 0xff00ff,\n });\n\n // evaluate, various capabilities of this fixture\n for (const cachedChannel of this.fixture.channels) {\n if (cachedChannel.channel) {\n for (const capability of cachedChannel.capabilities) {\n switch (capability.capability.type) {\n case FixtureCapabilityType.Intensity:\n this.fixtureHasDimmer = true;\n break;\n case FixtureCapabilityType.ColorIntensity:\n this.fixtureHasColor = true;\n break;\n }\n }\n\n if (cachedChannel.colorWheel) {\n this.fixtureHasColorWheel = true;\n }\n }\n }\n }\n\n protected getCapabilityInValue(channel: CachedFixtureChannel, value: number): CachedFixtureCapability {\n for (const capability of channel.capabilities) {\n if (\n capability.capability.dmxRange.length === 0 ||\n (value >= capability.capability.dmxRange[0] && value <= capability.capability.dmxRange[1])\n ) {\n return capability;\n }\n }\n\n return undefined;\n }\n\n // Apply the properties of the base fixture to the preview\n updatePreview(channelValues: FixtureChannelValue[], masterDimmerValue: number) {\n // Apply default settings\n if (this.fixtureHasDimmer) {\n this.dimmer = 0;\n } else {\n this.dimmer = 1;\n }\n\n this.colorRed = 255;\n this.colorGreen = 255;\n this.colorBlue = 255;\n\n if (!this.fixtureHasColorWheel && this.fixtureHasColor) {\n this.colorRed = 0;\n this.colorGreen = 0;\n this.colorBlue = 0;\n }\n\n for (const channelValue of channelValues) {\n const channel = this.fixtureService.getChannelByName(this.fixture, channelValue.channelName);\n const capability = this.getCapabilityInValue(channel, channelValue.value);\n\n if (capability) {\n switch (capability.capability.type) {\n case FixtureCapabilityType.Intensity: {\n let valuePercentage: number;\n if (capability.capability.dmxRange.length > 0) {\n valuePercentage =\n (channelValue.value - capability.capability.dmxRange[0]) /\n (capability.capability.dmxRange[1] - capability.capability.dmxRange[0]);\n } else {\n valuePercentage = channelValue.value / channel.maxValue;\n }\n this.dimmer = valuePercentage * masterDimmerValue;\n break;\n }\n case FixtureCapabilityType.ColorIntensity: {\n const valuePercentage = (255 * channelValue.value) / channel.maxValue;\n switch (capability.capability.color) {\n case FixtureCapabilityColor.Red:\n // Round needed for threejs\n this.colorRed = Math.round(valuePercentage);\n break;\n case FixtureCapabilityColor.Green:\n // Round needed for threejs\n this.colorGreen = Math.round(valuePercentage);\n break;\n case FixtureCapabilityColor.Blue:\n // Round needed for threejs\n this.colorBlue = Math.round(valuePercentage);\n break;\n }\n break;\n }\n case FixtureCapabilityType.WheelSlot: {\n const mixedColor = this.fixtureService.getMixedWheelSlotColor(capability.wheel, capability.capability.slotNumber);\n if (mixedColor) {\n this.colorRed = Math.round(mixedColor.red);\n this.colorGreen = Math.round(mixedColor.green);\n this.colorBlue = Math.round(mixedColor.blue);\n }\n break;\n }\n }\n }\n }\n }\n\n updatePosition(object: THREE.Object3D) {\n // Update the position\n switch (this.fixture.fixture.positioning) {\n case Positioning.topFront: {\n object.rotation.x = THREE.MathUtils.degToRad(0);\n object.position.set(this.fixture.fixture.positionX, this.fixture.fixture.positionY - 13, this.fixture.fixture.positionZ);\n break;\n }\n case Positioning.bottomFront: {\n object.rotation.x = THREE.MathUtils.degToRad(180);\n object.position.set(this.fixture.fixture.positionX, this.fixture.fixture.positionY + 13, this.fixture.fixture.positionZ);\n break;\n }\n case Positioning.topBack: {\n object.rotation.x = THREE.MathUtils.degToRad(0);\n object.position.set(this.fixture.fixture.positionX, this.fixture.fixture.positionY - 13, this.fixture.fixture.positionZ);\n break;\n }\n case Positioning.bottomBack: {\n object.rotation.x = THREE.MathUtils.degToRad(180);\n object.position.set(this.fixture.fixture.positionX, this.fixture.fixture.positionY + 13, this.fixture.fixture.positionZ);\n break;\n }\n case Positioning.manual: {\n object.position.set(this.fixture.fixture.positionX, this.fixture.fixture.positionY, this.fixture.fixture.positionZ);\n object.rotation.x = THREE.MathUtils.degToRad(this.fixture.fixture.rotationX);\n object.rotation.y = THREE.MathUtils.degToRad(this.fixture.fixture.rotationY);\n object.rotation.z = THREE.MathUtils.degToRad(this.fixture.fixture.rotationZ);\n break;\n }\n }\n }\n\n destroy() {\n this.selectedMaterial.dispose();\n }\n}\n","import { forkJoin } from 'rxjs';\nimport { map } from 'rxjs/operators';\nimport * as THREE from 'three';\nimport { Mesh } from 'three';\nimport { CachedFixture } from '../../models/cached-fixture';\nimport { FixtureChannelValue } from '../../models/fixture-channel-value';\nimport { FixtureService } from '../../services/fixture.service';\nimport { PreviewMeshService } from '../../services/preview-mesh.service';\nimport { Fixture3d } from './fixture-3d';\n\nexport class ColorChanger3d extends Fixture3d {\n private readonly pointLightMaxIntensity: number = 2;\n private readonly spotLightMaxIntensity: number = 5;\n\n private mesh: THREE.Mesh;\n\n private objectGroup: THREE.Object3D = new THREE.Object3D();\n private spotlightGroup: THREE.Object3D = new THREE.Object3D();\n private spotLight: THREE.SpotLight;\n private spotLightHelper: THREE.SpotLightHelper;\n private spotLightBeam: THREE.Mesh;\n\n private pointLight: THREE.PointLight;\n\n private lastSelected: boolean;\n\n private material: THREE.MeshStandardMaterial;\n private atmosphereMaterial: THREE.ShaderMaterial;\n\n private atmosphereMat() {\n const vertexShader = [\n 'varying vec3\tvVertexWorldPosition;',\n 'varying vec3\tvVertexNormal;',\n\n 'void main(){',\n '\tvVertexNormal = normalize(normalMatrix * normal);',\n\n '\tvVertexWorldPosition = (modelMatrix * vec4(position, 1.0)).xyz;',\n\n '\t// set gl_Position',\n '\tgl_Position\t= projectionMatrix * modelViewMatrix * vec4(position, 1.0);',\n '}',\n ].join('\\n');\n const fragmentShader = [\n 'uniform vec3\tglowColor;',\n 'uniform float\tcoeficient;',\n 'uniform float\tpower;',\n 'uniform float\topacity;',\n\n 'varying vec3\tvVertexNormal;',\n 'varying vec3\tvVertexWorldPosition;',\n\n 'void main(){',\n '\tvec3 worldCameraToVertex= vVertexWorldPosition - cameraPosition;',\n '\tvec3 viewCameraToVertex\t= (viewMatrix * vec4(worldCameraToVertex, 0.0)).xyz;',\n '\tviewCameraToVertex\t= normalize(viewCameraToVertex);',\n '\tfloat intensity\t\t= pow(coeficient + dot(vVertexNormal, viewCameraToVertex), power);',\n '\tgl_FragColor\t\t= vec4(glowColor, intensity * opacity);',\n '}',\n ].join('\\n');\n\n // create custom material from the shader code above\n // that is within specially labeled script tags\n const material = new THREE.ShaderMaterial({\n uniforms: {\n coeficient: {\n type: 'f',\n value: 0.3,\n },\n power: {\n type: 'f',\n value: 1.3,\n },\n opacity: {\n type: 'f',\n value: 1.0,\n },\n glowColor: {\n type: 'c',\n value: new THREE.Color('white'),\n },\n },\n vertexShader,\n fragmentShader,\n // blending: THREE.AdditiveBlending,\n transparent: true,\n depthWrite: false,\n });\n\n return material;\n }\n\n private createSpotLightBeam() {\n if (this.spotLightBeam) {\n this.spotlightGroup.remove(this.spotLightBeam);\n }\n\n // TODO update the correct angle from the profile\n const beamAngleDegrees = 14;\n const geometry = new THREE.CylinderGeometry(0.8, beamAngleDegrees * 1.2, 100, 64, 20, false);\n geometry.applyMatrix4(new THREE.Matrix4().makeTranslation(0, -geometry.parameters.height / 2, 0));\n geometry.applyMatrix4(new THREE.Matrix4().makeRotationX(-Math.PI / 2));\n\n this.atmosphereMaterial = this.atmosphereMat();\n this.spotLightBeam = new THREE.Mesh(geometry, this.atmosphereMaterial);\n this.spotLightBeam.position.set(0, -0.02, 0);\n\n this.spotlightGroup.add(this.spotLightBeam);\n this.spotLightBeam.rotation.x = Math.PI / 2;\n }\n\n private createObjects() {\n (this.material as any) = new THREE.MeshLambertMaterial({\n color: 0x0d0d0d,\n emissive: 0x0d0d0d,\n });\n\n this.mesh.material = this.material;\n\n // Add the spotlight\n this.spotLight = new THREE.SpotLight(0xffffff, 1);\n this.spotLight.angle = 0.244;\n this.spotLight.penumbra = 0.5;\n this.spotLight.decay = 2;\n this.spotLight.distance = 60000;\n this.spotLight.castShadow = false;\n this.spotLight.intensity = 10;\n\n this.spotLightHelper = new THREE.SpotLightHelper(this.spotLight);\n // scene.add(this.spotLightHelper);\n\n const spotLightTarget = new THREE.Object3D();\n this.spotLight.target = spotLightTarget;\n\n this.spotlightGroup.add(this.spotLight);\n this.spotlightGroup.add(spotLightTarget);\n this.spotLight.position.set(0, -1.4, 0);\n spotLightTarget.position.set(0, -10, 0);\n\n // Add the point light for the surrounding light\n this.pointLight = new THREE.PointLight(0xffffff, 2, 1000);\n this.spotlightGroup.add(this.pointLight);\n this.pointLight.position.set(0, -1.4, 0);\n\n // Add the light beam\n this.createSpotLightBeam();\n\n this.objectGroup.add(this.spotlightGroup);\n this.objectGroup.add(this.mesh);\n\n // A moving head has about 32 cm in width\n this.objectGroup.scale.multiplyScalar(9);\n\n this.scene.add(this.objectGroup);\n\n this.isLoaded = true;\n }\n\n constructor(fixtureService: FixtureService, previewMeshService: PreviewMeshService, fixture: CachedFixture, scene: any) {\n super(fixtureService, fixture, scene);\n\n forkJoin([previewMeshService.getMesh('color-changer')])\n .pipe(\n map(([colorChanger]) => {\n this.mesh = colorChanger;\n\n this.createObjects();\n })\n )\n .subscribe();\n }\n\n public getObject(): THREE.Object3D {\n return this.objectGroup;\n }\n\n public updatePreview(channelValues: FixtureChannelValue[], masterDimmerValue: number): void {\n super.updatePreview(channelValues, masterDimmerValue);\n\n if (!this.isLoaded) {\n return;\n }\n\n this.updatePosition(this.objectGroup);\n\n // Update the material\n if (this.lastSelected !== this.isSelected) {\n if (this.isSelected) {\n for (const child of this.mesh.children) {\n (child as Mesh).material = this.selectedMaterial;\n }\n } else {\n for (const child of this.mesh.children) {\n (child as Mesh).material = this.material;\n }\n }\n\n this.lastSelected = this.isSelected;\n }\n\n // Update the light helpers\n this.spotLightHelper.update();\n\n // Apply the colors\n const color = new THREE.Color('rgb(' + this.colorRed + ', ' + this.colorGreen + ', ' + this.colorBlue + ')');\n\n this.pointLight.color = color;\n\n this.spotLight.color = color;\n (this.spotLightBeam.material as any).uniforms.glowColor.value = color;\n\n // Apply the dimmer value\n // Take the color into account for the beam (don't show a black beam)\n const intensityColor = Math.max(this.colorRed, this.colorGreen, this.colorBlue);\n (this.spotLightBeam.material as any).uniforms.opacity.value = Math.min(intensityColor, this.dimmer) * 0.5;\n\n this.spotLight.intensity = this.spotLightMaxIntensity * this.dimmer;\n this.pointLight.intensity = this.pointLightMaxIntensity * this.dimmer;\n }\n\n destroy() {\n this.scene.remove(this.objectGroup);\n this.material.dispose();\n this.atmosphereMaterial.dispose();\n }\n}\n","import { forkJoin } from 'rxjs';\nimport { map } from 'rxjs/operators';\nimport * as THREE from 'three';\nimport { CachedFixture } from '../../models/cached-fixture';\nimport { FixtureCapabilityType } from '../../models/fixture-capability';\nimport { FixtureChannelValue } from '../../models/fixture-channel-value';\nimport { FixtureService } from '../../services/fixture.service';\nimport { PreviewMeshService } from '../../services/preview-mesh.service';\nimport { Fixture3d } from './fixture-3d';\n\nexport class MovingHead3d extends Fixture3d {\n private readonly pointLightMaxIntensity: number = 2;\n private readonly spotLightLightMaxIntensity: number = 10;\n\n private pan: number;\n private tilt: number;\n\n private socket: THREE.Mesh;\n private arm: THREE.Mesh;\n private head: THREE.Mesh;\n\n private headGroup: THREE.Object3D = new THREE.Object3D();\n private spotlightGroup: THREE.Object3D = new THREE.Object3D();\n private armGroup: THREE.Object3D = new THREE.Object3D();\n private objectGroup: THREE.Object3D = new THREE.Object3D();\n private spotLight: THREE.SpotLight;\n private spotLightHelper: THREE.SpotLightHelper;\n private spotLightBeam: THREE.Mesh;\n\n private pointLight: THREE.PointLight;\n\n private lastBeamAngleDegrees: number;\n private lastSelected: boolean;\n\n private material: THREE.MeshStandardMaterial;\n private atmosphereMaterial: THREE.ShaderMaterial;\n\n private atmosphereMat() {\n const vertexShader = `\n varying vec3 vNormal;\n varying vec3 vWorldPosition;\n\n void main(){\n vNormal = normalize(normalMatrix * normal);\n\n vec4 worldPosition = modelMatrix * vec4(position, 1.0);\n vWorldPosition = worldPosition.xyz;\n\n gl_Position\t= projectionMatrix * modelViewMatrix * vec4(position, 1.0);\n }`;\n const fragmentShader = `\n varying vec3 vNormal;\n varying vec3 vWorldPosition;\n\n uniform vec3 lightColor;\n uniform float\topacity;\n uniform vec3 spotPosition;\n uniform float attenuation;\n uniform float\tanglePower;\n\n void main(){\n float intensity;\n\n intensity\t= distance(vWorldPosition, spotPosition) / attenuation;\n intensity\t= 1.0 - clamp(intensity, 0.0, 1.0);\n\n vec3 normal\t= vec3(vNormal.x, vNormal.y, abs(vNormal.z));\n float angleIntensity\t= pow(dot(normal, vec3(0.0, 0.0, 1.0)), anglePower);\n intensity\t= intensity * angleIntensity * opacity;\n\n gl_FragColor\t= vec4(lightColor, intensity);\n }`;\n\n const material = new THREE.ShaderMaterial({\n uniforms: {\n attenuation: {\n type: 'f',\n value: 800.0,\n },\n anglePower: {\n type: 'f',\n value: 2,\n },\n spotPosition: {\n type: 'v3',\n value: new THREE.Vector3(0, 0, 0),\n },\n lightColor: {\n type: 'c',\n value: new THREE.Color('white'),\n },\n opacity: {\n type: 'f',\n value: 1.0,\n },\n },\n vertexShader,\n fragmentShader,\n transparent: true,\n depthWrite: false,\n });\n\n return material;\n }\n\n private createSpotLightBeam() {\n if (this.spotLightBeam) {\n this.spotlightGroup.remove(this.spotLightBeam);\n }\n\n // TODO update the correct angle from the profile\n const beamAngleDegrees = 14;\n const geometry = new THREE.CylinderGeometry(0.1, beamAngleDegrees * 1.2, 100, 64, 20, false);\n geometry.applyMatrix4(new THREE.Matrix4().makeTranslation(0, -geometry.parameters.height / 2, 0));\n geometry.applyMatrix4(new THREE.Matrix4().makeRotationX(-Math.PI / 2));\n\n this.atmosphereMaterial = this.atmosphereMat();\n this.spotLightBeam = new THREE.Mesh(geometry, this.atmosphereMaterial);\n this.spotLightBeam.position.set(0, -0.02, 0);\n this.spotLightBeam.receiveShadow = false;\n this.spotLightBeam.castShadow = false;\n\n this.spotlightGroup.add(this.spotLightBeam);\n this.spotLightBeam.rotation.x = Math.PI / 2;\n }\n\n private createObjects() {\n (this.material as any) = new THREE.MeshLambertMaterial({\n color: 0x0d0d0d,\n emissive: 0x0d0d0d,\n });\n\n this.socket.material = this.material;\n this.arm.material = this.material;\n this.head.material = this.material;\n\n // Add the head\n this.head.scale.multiplyScalar(0.9);\n this.head.position.set(-0.1, 0, 0);\n const headPivotGroup = new THREE.Object3D();\n headPivotGroup.add(this.head);\n this.headGroup.add(headPivotGroup);\n\n // Add the spotlight\n this.spotLight = new THREE.SpotLight(0xffffff, 50000);\n this.spotLight.angle = 2;\n this.spotLight.penumbra = 1;\n this.spotLight.decay = 0.01;\n this.spotLight.distance = 0;\n this.spotLight.intensity = 1;\n\n this.spotLightHelper = new THREE.SpotLightHelper(this.spotLight);\n this.scene.add(this.spotLightHelper);\n\n const spotLightTarget = new THREE.Object3D();\n this.spotLight.target = spotLightTarget;\n\n this.spotlightGroup.add(this.spotLight);\n this.spotlightGroup.add(spotLightTarget);\n this.spotLight.position.set(0, -1.4, 0);\n spotLightTarget.position.set(0, -10, 0);\n\n // Add the point light for the surrounding light\n this.pointLight = new THREE.PointLight(0xffffff, 500, 0, 0.1);\n this.spotlightGroup.add(this.pointLight);\n this.pointLight.position.set(0, -1.4, 0);\n\n // Add the light beam\n this.createSpotLightBeam();\n\n this.headGroup.add(this.spotlightGroup);\n\n // Add the arm\n this.armGroup.add(this.headGroup);\n this.headGroup.position.set(0, -0.6, 0);\n this.armGroup.add(this.arm);\n\n // Add the socket\n this.objectGroup.add(this.armGroup);\n this.objectGroup.add(this.socket);\n this.socket.position.set(0, 1.2, 0);\n\n // A moving head has about 32 cm in width\n this.objectGroup.scale.multiplyScalar(9);\n\n this.scene.add(this.objectGroup);\n\n this.isLoaded = true;\n }\n\n constructor(fixtureService: FixtureService, previewMeshService: PreviewMeshService, fixture: CachedFixture, scene: any) {\n super(fixtureService, fixture, scene);\n\n forkJoin([\n previewMeshService.getMesh('moving_head_socket'),\n previewMeshService.getMesh('moving_head_arm'),\n previewMeshService.getMesh('moving_head_head'),\n ])\n .pipe(\n map(([socket, arm, head]) => {\n this.socket = socket;\n this.arm = arm;\n this.head = head;\n\n this.createObjects();\n })\n )\n .subscribe();\n }\n\n public getObject(): THREE.Object3D {\n return this.objectGroup;\n }\n\n public updatePreview(channelValues: FixtureChannelValue[], masterDimmerValue: number): void {\n super.updatePreview(channelValues, masterDimmerValue);\n\n if (!this.isLoaded) {\n return;\n }\n\n // Apply default settings\n let panStart = 0;\n let panEnd = 255;\n\n let tiltStart = 0;\n let tiltEnd = 255;\n\n this.pan = 0;\n this.tilt = 0;\n\n // Apply the known property values\n for (const channelValue of channelValues) {\n const channel = this.fixtureService.getChannelByName(this.fixture, channelValue.channelName);\n const capability = this.getCapabilityInValue(channel, channelValue.value);\n if (capability) {\n switch (capability.capability.type) {\n case FixtureCapabilityType.Pan: {\n panStart = this.fixtureService.getRotationAngleDeg(capability.capability.angleStart) || 0;\n panEnd = this.fixtureService.getRotationAngleDeg(capability.capability.angleEnd) || 540;\n this.pan = channelValue.value / channel.maxValue;\n break;\n }\n case FixtureCapabilityType.Tilt: {\n tiltStart = this.fixtureService.getRotationAngleDeg(capability.capability.angleStart) || 0;\n tiltEnd = this.fixtureService.getRotationAngleDeg(capability.capability.angleEnd) || 2700;\n this.tilt = channelValue.value / channel.maxValue;\n break;\n }\n }\n }\n }\n\n this.updatePosition(this.objectGroup);\n\n // calculate the y/x rotation in radiants based on pan/tilt (0-1) respecting the max pan/tilt\n this.armGroup.rotation.y = THREE.MathUtils.degToRad(panEnd * this.pan + panStart) - THREE.MathUtils.degToRad(panEnd / 2);\n this.headGroup.rotation.x = THREE.MathUtils.degToRad(tiltEnd * this.tilt + tiltStart) - THREE.MathUtils.degToRad(tiltEnd / 2);\n\n // Update the angle (only on change, because it's expensive)\n // TODO update the correct angle from the profile\n const beamAngleDregrees = 14;\n if (this.lastBeamAngleDegrees !== beamAngleDregrees) {\n this.spotLight.angle = THREE.MathUtils.degToRad(beamAngleDregrees);\n this.createSpotLightBeam();\n this.lastBeamAngleDegrees = beamAngleDregrees;\n }\n\n // Update the material\n if (this.lastSelected !== this.isSelected) {\n if (this.isSelected) {\n this.socket.material = this.selectedMaterial;\n this.arm.material = this.selectedMaterial;\n this.head.material = this.selectedMaterial;\n } else {\n this.socket.material = this.material;\n this.arm.material = this.material;\n this.head.material = this.material;\n }\n\n this.lastSelected = this.isSelected;\n }\n\n // Apply the colors\n const color = new THREE.Color('rgb(' + this.colorRed + ', ' + this.colorGreen + ', ' + this.colorBlue + ')');\n\n this.pointLight.color = color;\n\n this.spotLight.color = color;\n this.spotLightBeam.material.uniforms.lightColor.value = color;\n\n // Apply the dimmer value\n // Take the color into account for the beam (don't show a black beam)\n const intensityColor = Math.max(this.colorRed, this.colorGreen, this.colorBlue);\n // console.log(Math.min(intensityColor, this.dimmer));\n this.spotLightBeam.material.uniforms.opacity.value = Math.min(intensityColor, this.dimmer);\n\n this.spotLight.intensity = this.spotLightLightMaxIntensity * this.dimmer;\n this.pointLight.intensity = this.pointLightMaxIntensity * this.dimmer;\n\n this.spotLightBeam.material.uniforms.spotPosition.value = this.objectGroup.position;\n\n // this.spotLightHelper.update();\n }\n\n destroy() {\n this.scene.remove(this.objectGroup);\n this.material.dispose();\n this.atmosphereMaterial.dispose();\n this.spotLightHelper.dispose();\n }\n}\n","import { AfterViewInit, Component, ElementRef, HostListener, ViewChild } from '@angular/core';\nimport * as THREE from 'three';\nimport { OrbitControls } from 'three/examples/jsm/controls/OrbitControls';\nimport { FixtureCategory } from '../models/fixture-profile';\nimport { FixtureService } from '../services/fixture.service';\nimport { PreviewMeshService } from '../services/preview-mesh.service';\nimport { PreviewService } from '../services/preview.service';\nimport { ProjectService } from '../services/project.service';\nimport { TimelineService } from '../services/timeline.service';\nimport { Positioning } from './../models/fixture';\nimport { AnimationService } from './../services/animation.service';\nimport { ColorChanger3d } from './models/color-changer-3d';\nimport { Fixture3d } from './models/fixture-3d';\nimport { MovingHead3d } from './models/moving-head-3d';\n\n@Component({\n selector: 'lib-app-preview',\n templateUrl: './preview.component.html',\n styleUrls: ['./preview.component.css'],\n})\nexport class PreviewComponent implements AfterViewInit {\n private renderer: THREE.WebGLRenderer;\n private scene: THREE.Scene;\n private camera: THREE.PerspectiveCamera;\n public controls: OrbitControls;\n\n private fixtures3d: Fixture3d[] = [];\n\n @ViewChild('canvas')\n private canvasRef: ElementRef;\n\n constructor(\n private fixtureService: FixtureService,\n private previewMeshService: PreviewMeshService,\n private animationService: AnimationService,\n private previewService: PreviewService,\n private timelineService: TimelineService,\n private projectService: ProjectService\n ) {\n this.previewService.doUpdateFixtureSetup.subscribe(() => {\n // synchronize the 3d-fixtures to the project fixtures\n this.syncFixtures();\n });\n }\n\n private syncFixtures() {\n // remove all fixtures\n for (const fixture3d of this.fixtures3d) {\n fixture3d.destroy();\n }\n this.fixtures3d = [];\n\n // add all fixtures from the project\n for (const fixture of this.fixtureService.cachedFixtures) {\n switch (fixture.profile.categories[0]) {\n case FixtureCategory['Moving Head']:\n this.fixtures3d.push(new MovingHead3d(this.fixtureService, this.previewMeshService, fixture, this.scene));\n break;\n case FixtureCategory['Color Changer']:\n this.fixtures3d.push(new ColorChanger3d(this.fixtureService, this.previewMeshService, fixture, this.scene));\n break;\n case FixtureCategory['Blinder']:\n this.fixtures3d.push(new ColorChanger3d(this.fixtureService, this.previewMeshService, fixture, this.scene));\n break;\n }\n }\n }\n\n private get canvas(): HTMLCanvasElement {\n return this.canvasRef.nativeElement;\n }\n\n private render() {\n this.renderer.render(this.scene, this.camera);\n }\n\n private updateStagePosition(\n positioning: Positioning,\n xMin: number,\n xMax: number,\n yMin: number,\n yMax: number,\n zMin: number,\n zMax: number\n ) {\n let positionCount = 0; // Number of fixtures in the same position\n let positionIndex = 1;\n\n this.projectService.project.fixtures.forEach((element, index) => {\n if (element.positioning === positioning) {\n positionCount++;\n }\n });\n\n this.projectService.project.fixtures.forEach((element, index) => {\n if (element.positioning === positioning) {\n element.positionX = xMin + ((xMax - xMin) / (positionCount + 1)) * positionIndex;\n element.positionY = yMin + ((yMax - yMin) / (positionCount + 1)) * positionIndex;\n element.positionZ = zMin + ((zMax - zMin) / (positionCount + 1)) * positionIndex;\n\n positionIndex++;\n }\n });\n }\n\n private animate(timeMillis: number) {\n if (this.timelineService.playState === 'playing') {\n // Overwrite the current time with the playing time, if we're in playback mode\n timeMillis = this.timelineService.waveSurfer.getCurrentTime() * 1000;\n }\n\n this.animationService.timeMillis = timeMillis;\n\n // Update the controls\n if (this.controls) {\n this.controls.update();\n }\n\n // Update the positions\n this.updateStagePosition(\n Positioning.topFront,\n -this.projectService.project.stageWidthCm / 2,\n this.projectService.project.stageWidthCm / 2,\n this.projectService.project.stageHeightCm + this.projectService.project.stageFloorHeightCm,\n this.projectService.project.stageHeightCm + this.projectService.project.stageFloorHeightCm,\n this.projectService.project.stageDepthCm / 2 - 70,\n this.projectService.project.stageDepthCm / 2 - 70\n );\n this.updateStagePosition(\n Positioning.bottomFront,\n -this.projectService.project.stageWidthCm / 2,\n this.projectService.project.stageWidthCm / 2,\n this.projectService.project.stageFloorHeightCm,\n this.projectService.project.stageFloorHeightCm,\n this.projectService.project.stageDepthCm / 2 - 70,\n this.projectService.project.stageDepthCm / 2 - 70\n );\n this.updateStagePosition(\n Positioning.topBack,\n -this.projectService.project.stageWidthCm / 2,\n this.projectService.project.stageWidthCm / 2,\n this.projectService.project.stageHeightCm + this.projectService.project.stageFloorHeightCm,\n this.projectService.project.stageHeightCm + this.projectService.project.stageFloorHeightCm,\n -this.projectService.project.stageDepthCm / 2 + 70,\n -this.projectService.project.stageDepthCm / 2 + 70\n );\n this.updateStagePosition(\n Positioning.bottomBack,\n -this.projectService.project.stageWidthCm / 2,\n this.projectService.project.stageWidthCm / 2,\n this.projectService.project.stageFloorHeightCm,\n this.projectService.project.stageFloorHeightCm,\n -this.projectService.project.stageDepthCm / 2 + 70,\n -this.projectService.project.stageDepthCm / 2 + 70\n );\n\n // Update all fixtures and apply the preview properties, if available\n // TODO Update the fixtures only e.g. 40 times per second according to the \"real\" refresh rate of the DMX interface?\n const presets = this.previewService.getPresets(timeMillis);\n\n const calculatedFixtures = this.previewService.getChannelValues(timeMillis, presets);\n\n for (const fixture3d of this.fixtures3d) {\n // Update the fixture properties\n fixture3d.updatePreview(calculatedFixtures.get(fixture3d.fixture) || [], this.projectService.project.masterDimmerValue);\n\n // Select the fixture, if required\n if (this.fixtureService.settingsSelection) {\n fixture3d.isSelected = this.fixtureService.settingsFixtureIsSelected(fixture3d.fixture.fixture);\n } else {\n fixture3d.isSelected = this.previewService.fixtureIsSelected(fixture3d.fixture.fixture.uuid, presets);\n }\n }\n\n // TODO enable for monitoring the DMX universes\n this.previewService.setUniverseValues(calculatedFixtures, this.projectService.project.masterDimmerValue);\n\n // Render the scene\n this.render();\n\n requestAnimationFrame(this.animate.bind(this));\n }\n\n private getAspectRatio(): number {\n const height = this.canvas.clientHeight;\n\n if (height === 0) {\n return 0;\n }\n\n return this.canvas.clientWidth / this.canvas.clientHeight;\n }\n\n @HostListener('window:resize')\n public onResize() {\n this.camera.aspect = this.getAspectRatio();\n this.camera.updateProjectionMatrix();\n this.renderer.setSize(this.canvas.clientWidth, this.canvas.clientHeight);\n }\n\n private setupRenderer() {\n this.renderer = new THREE.WebGLRenderer({ antialias: true });\n this.canvas.appendChild(this.renderer.domElement);\n this.renderer.setPixelRatio(devicePixelRatio);\n this.renderer.setSize(this.canvas.clientWidth, this.canvas.clientHeight);\n // this.renderer.shadowMap.enabled = true;\n // this.renderer.gammaInput = true;\n // this.renderer.gammaOutput = true;\n }\n\n private setupCamera() {\n this.camera = new THREE.PerspectiveCamera(35, window.innerWidth / window.innerHeight, 1, 10000);\n this.camera.position.set(-600, 80, 700);\n }\n\n private setupControls() {\n this.controls = new OrbitControls(this.camera, this.renderer.domElement);\n this.controls.enableKeys = false;\n this.controls.rotateSpeed = 0.05;\n this.controls.zoomSpeed = 1.2;\n this.controls.enableDamping = true;\n this.controls.dampingFactor = 0.25;\n this.controls.screenSpacePanning = false;\n this.controls.minDistance = 700;\n // this.controls.zoom = 1000;\n this.controls.maxDistance = 2000;\n this.controls.maxPolarAngle = Math.PI / 2;\n this.controls.target = new THREE.Vector3(0, 200, 0);\n // this.controls.rotation = 100;\n }\n\n private setupScene() {\n // Create a new scene\n this.scene = new THREE.Scene();\n // this.scene.background = new THREE.Color(0x080808);\n // this.scene.fog\t= new THREE.FogExp2( 0x000000, 0.1 );\n\n this.previewService.scene = this.scene;\n\n // Add a little bit of ambient light\n const ambient = new THREE.AmbientLight(0xffffff, 1.5);\n this.scene.add(ambient);\n\n // Create the stage dimensions\n this.previewService.updateStage();\n\n const lights = [];\n lights[0] = new THREE.PointLight(0xffffff, 1, 0, 0.1);\n lights[1] = new THREE.PointLight(0xffffff, 1, 0, 0.1);\n lights[2] = new THREE.PointLight(0xffffff, 1, 0, 0.1);\n\n lights[0].position.set(0, 2000, 0);\n lights[1].position.set(1000, 2000, 1000);\n lights[2].position.set(-1000, -2000, -1000);\n\n lights[0].castShadow = true;\n lights[1].castShadow = true;\n lights[2].castShadow = true;\n\n this.scene.add(lights[0]);\n this.scene.add(lights[1]);\n this.scene.add(lights[2]);\n }\n\n ngAfterViewInit(): void {\n this.setupRenderer();\n this.setupCamera();\n this.setupControls();\n this.setupScene();\n\n this.onResize();\n this.animate(null);\n }\n}\n","<div class=\"h-100\" #canvas style=\"overflow: hidden\"></div>\n","import { Component, OnInit } from '@angular/core';\n\n@Component({\n selector: 'lib-wait-dialog',\n templateUrl: './wait-dialog.component.html',\n styleUrls: ['./wait-dialog.component.css'],\n})\nexport class WaitDialogComponent implements OnInit {\n constructor() {}\n\n ngOnInit() {}\n}\n","<div class=\"card-modal\">\n <div class=\"card\">\n <div class=\"card-body\">\n <p class=\"card-text\">{{ 'designer.misc.please-wait' | translate }}</p>\n <div class=\"progress\">\n <div\n class=\"progress-bar progress-bar-striped progress-bar-animated\"\n role=\"progressbar\"\n style=\"width: 100%\"\n aria-valuenow=\"10\"\n aria-valuemin=\"0\"\n aria-valuemax=\"100\"\n ></div>\n </div>\n </div>\n </div>\n</div>\n","import { Injectable } from '@angular/core';\nimport { ActivatedRoute, Params, Router } from '@angular/router';\nimport { BsModalService } from 'ngx-bootstrap/modal';\nimport { Observable } from 'rxjs';\nimport { finalize, map } from 'rxjs/operators';\nimport { Preset } from '../models/preset';\nimport { Project } from '../models/project';\nimport { WaitDialogComponent } from '../wait-dialog/wait-dialog.component';\nimport { FixtureService } from './fixture.service';\nimport { PresetService } from './preset.service';\nimport { PreviewService } from './preview.service';\nimport { ProjectService } from './project.service';\nimport { SceneService } from './scene.service';\nimport { TimelineService } from './timeline.service';\nimport { UuidService } from './uuid.service';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class ProjectLoadService {\n constructor(\n private projectService: ProjectService,\n private previewService: PreviewService,\n private fixtureService: FixtureService,\n private presetService: PresetService,\n private sceneService: SceneService,\n private modalService: BsModalService,\n private uuidService: UuidService,\n private timelineService: TimelineService,\n private router: Router,\n private activatedRoute: ActivatedRoute\n ) {}\n\n private afterLoad() {\n this.fixtureService.updateCachedFixtures();\n this.presetService.removeDeletedFixtures();\n this.previewService.updateFixtureSetup();\n this.presetService.fixtureSelectionChanged.next();\n this.presetService.autoOpenFirstEffect();\n this.previewService.updateStage();\n this.presetService.previewLive();\n this.sceneService.selectPresetFromSelectedScene();\n }\n\n private selectScenesPresetComposition() {\n this.presetService.selectedPreset = this.presetService.getPresetByUuid(this.projectService.project.selectedPresetUuid);\n this.sceneService.selectedScenes = [];\n if (this.projectService.project.selectedSceneUuids) {\n for (const uuid of this.projectService.project.selectedSceneUuids) {\n this.sceneService.selectedScenes.push(this.sceneService.getSceneByUuid(uuid));\n }\n }\n this.timelineService.selectedComposition = undefined;\n this.timelineService.selectedCompositionIndex = undefined;\n this.timelineService.destroyWaveSurfer();\n for (let i = 0; i < this.projectService.project.compositions.length; i++) {\n if (this.projectService.project.compositions[i].uuid === this.projectService.project.selectedCompositionUuid) {\n this.timelineService.selectCompositionIndex(i);\n break;\n }\n }\n }\n\n load(id: number, name: string, shareToken?: string): Observable<void> {\n const ref = this.modalService.show(WaitDialogComponent, { keyboard: false, ignoreBackdropClick: true });\n\n return this.projectService.getProject(id, name, shareToken).pipe(\n map((project) => {\n this.projectService.project = project;\n this.selectScenesPresetComposition();\n this.afterLoad();\n\n const queryParams: Params = {\n id,\n token: project.shareToken,\n };\n this.router.navigate([], {\n relativeTo: this.activatedRoute,\n queryParams,\n queryParamsHandling: 'merge', // remove to replace all query params by provided\n });\n }),\n finalize(() => {\n // hide the modal again because of:\n // https://github.com/valor-software/ngx-bootstrap/issues/3711\n setTimeout(() => {\n ref.hide();\n }, 250);\n setTimeout(() => {\n ref.hide();\n }, 500);\n setTimeout(() => {\n ref.hide();\n }, 1500);\n })\n );\n }\n\n new() {\n // create an empty new project\n const project = new Project();\n project.uuid = this.uuidService.getUuid();\n this.projectService.project = project;\n this.projectService.project.shareToken = this.uuidService.getUuid();\n\n // Add a default scene and preset\n const preset = new Preset();\n preset.uuid = this.uuidService.getUuid();\n preset.name = 'New Preset';\n this.projectService.project.presets.push(preset);\n this.presetService.selectPreset(0);\n\n this.sceneService.addScene();\n this.projectService.project.scenes[0].presetUuids.push(preset.uuid);\n\n this.projectService.project.previewPreset = true;\n\n this.sceneService.selectedScenes = [this.projectService.project.scenes[0]];\n this.presetService.selectedPreset = this.projectService.project.presets[0];\n\n this.timelineService.selectedComposition = undefined;\n this.timelineService.selectedCompositionIndex = undefined;\n this.timelineService.destroyWaveSurfer();\n\n this.afterLoad();\n\n const queryParams: Params = {\n id: '',\n token: '',\n };\n this.router.navigate([], {\n relativeTo: this.activatedRoute,\n queryParams,\n queryParamsHandling: 'merge', // remove to replace all query params by provided\n });\n }\n\n template() {\n // load the template project with id 1\n this.load(1, null).subscribe(() => {\n this.projectService.project.id = undefined;\n });\n }\n\n import(data: string) {\n // import a project from a string\n const project = new Project(JSON.parse(data));\n project.id = undefined;\n this.projectService.project = project;\n\n this.selectScenesPresetComposition();\n this.afterLoad();\n }\n}\n","import { Component, HostListener, OnInit } from '@angular/core';\nimport { BsModalRef } from 'ngx-bootstrap/modal';\nimport { Subject } from 'rxjs';\n\n@Component({\n selector: 'lib-app-warning-dialog',\n templateUrl: './warning-dialog.component.html',\n styleUrls: ['./warning-dialog.component.scss'],\n})\nexport class WarningDialogComponent implements OnInit {\n onClose: Subject<number>;\n\n message: string;\n\n constructor(private bsModalRef: BsModalRef) {}\n\n ngOnInit() {\n this.onClose = new Subject();\n }\n\n public ok(): void {\n this.onClose.next(1);\n this.bsModalRef.hide();\n }\n\n public cancel(): void {\n this.onClose.next(2);\n this.bsModalRef.hide();\n }\n\n @HostListener('document:keydown.enter', ['$event'])\n handleKeyboardEvent(event: any) {\n this.ok();\n }\n}\n","<div class=\"card-modal\">\n <div class=\"card\">\n <div class=\"card-header\">\n {{ 'designer.misc.warning' | translate }}\n </div>\n\n <div class=\"card-body\">\n <div class=\"row\">\n <div class=\"col-auto\">\n <h2 class=\"mb-0\">\n <i class=\"fa fa-exclamation-triangle text-primary\" aria-hidden=\"true\"></i>\n </h2>\n </div>\n <div class=\"col pl-0\">\n <p class=\"mb-0\">{{ message }}</p>\n </div>\n </div>\n </div>\n\n <div class=\"card-footer\">\n <div class=\"d-flex float-right\">\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(); (false)\">\n {{ 'designer.misc.ok' | translate }}\n </button>\n </div>\n </div>\n </div>\n</div>\n","import { Injectable } from '@angular/core';\nimport { TranslateService } from '@ngx-translate/core';\nimport { BsModalService } from 'ngx-bootstrap/modal';\nimport { Observable } from 'rxjs';\nimport { map, mergeMap } from 'rxjs/operators';\nimport { WarningDialogComponent } from '../warning-dialog/warning-dialog.component';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class WarningDialogService {\n constructor(private modalService: BsModalService, private translateService: TranslateService) {}\n\n // Show a warning dialog and return true, when the user clicked OK\n show(message: string): Observable<boolean> {\n return this.translateService.get(message).pipe(\n map((result) => {\n return result;\n }),\n mergeMap((result) => {\n const fileDialog = this.modalService.show(WarningDialogComponent, { keyboard: false, ignoreBackdropClick: true });\n (fileDialog.content as WarningDialogComponent).message = result;\n\n return (fileDialog.content as WarningDialogComponent).onClose.pipe(\n map((warningResult) => {\n if (warningResult === 1) {\n return true;\n }\n\n return false;\n })\n );\n })\n );\n }\n}\n","import { Pipe, PipeTransform } from '@angular/core';\n\n@Pipe({\n name: 'sort',\n})\nexport class ArraySortPipe implements PipeTransform {\n transform(array: any, field: string): any[] {\n if (!Array.isArray(array)) {\n return;\n }\n array.sort((a: any, b: any) => {\n if (a[field] < b[field]) {\n return -1;\n } else if (a[field] > b[field]) {\n return 1;\n } else {\n return 0;\n }\n });\n return array;\n }\n}\n","<div class=\"modal-header\">\n <h4 class=\"modal-title pull-left\">{{ 'designer.project.browser-title' | translate }}</h4>\n <button type=\"button\" class=\"close pull-right\" aria-label=\"Close\" (click)=\"cancel(); (false)\">\n <span aria-hidden=\"true\">&times;</span>\n </button>\n</div>\n<div class=\"modal-body p-0\">\n <div *ngIf=\"loading\" class=\"m-2 d-flex w-100\">\n <p class=\"w-100\" style=\"text-align: center\"><i class=\"fa fa-spinner fa-pulse fa-fw\"></i></p>\n </div>\n <div *ngIf=\"projects.length == 0 && !loading\" class=\"m-2 d-flex w-100\">\n <p class=\"w-100\" style=\"text-align: center\">\n {{ 'designer.project.browser-empty' | translate }}\n </p>\n </div>\n <div *ngIf=\"!loading\" class=\"list-group list-group-flush\" style=\"max-height: 500px; overflow-y: scroll\">\n <div class=\"list-group-item\" *ngFor=\"let project of projects | sort: 'name'\">\n <div class=\"row\">\n <div class=\"col-auto my-auto flex-grow\">\n <a href=\"#\" (click)=\"openProject(project); (false)\">\n <p class=\"mb-0 w-100\">{{ project.name }}</p>\n </a>\n </div>\n <div class=\"my-auto\">\n <div class=\"col-auto my-auto pl-0 text-danger float-right\" style=\"cursor: pointer\" (click)=\"deleteProject(project); (false)\">\n <i class=\"fa fa-trash-o\" aria-hidden=\"true\"></i>\n </div>\n </div>\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 (click)=\"cancel(); (false)\" type=\"button\" class=\"btn btn-primary\">{{ 'designer.misc.ok' | translate }}</button>\n</div>\n","import { Component, OnInit } from '@angular/core';\nimport { BsModalRef } from 'ngx-bootstrap/modal';\nimport { map } from 'rxjs/operators';\nimport { Project } from '../../models/project';\nimport { ConfigService } from '../../services/config.service';\nimport { ProjectLoadService } from '../../services/project-load.service';\nimport { ProjectService } from '../../services/project.service';\nimport { UserService } from '../../services/user.service';\nimport { WarningDialogService } from '../../services/warning-dialog.service';\n\n@Component({\n selector: 'lib-project-browser',\n templateUrl: './project-browser.component.html',\n styleUrls: ['./project-browser.component.css'],\n})\nexport class ProjectBrowserComponent implements OnInit {\n projects: Project[] = [];\n loading = true;\n\n constructor(\n private bsModalRef: BsModalRef,\n private projectService: ProjectService,\n private projectLoadService: ProjectLoadService,\n private userService: UserService,\n private warningDialogService: WarningDialogService,\n private configService: ConfigService\n ) {\n this.loadProjects();\n }\n\n private loadProjects() {\n this.projectService.getAllProjects().subscribe((projects) => {\n this.projects = projects;\n this.loading = false;\n });\n }\n\n ngOnInit() {}\n\n cancel() {\n this.bsModalRef.hide();\n }\n\n openProject(project: Project) {\n this.bsModalRef.hide();\n this.projectLoadService.load(project.id, project.name).subscribe(() => {\n this.userService.setAutoLoadProject(project);\n });\n }\n\n deleteProject(project: Project) {\n this.warningDialogService\n .show('designer.project.delete-warning')\n .pipe(\n map((result) => {\n if (result) {\n this.projectService.deleteProject(project).subscribe((projects) => {\n this.loadProjects();\n });\n }\n })\n )\n .subscribe();\n }\n}\n","import { Component, HostListener, OnInit } from '@angular/core';\nimport { TranslateService } from '@ngx-translate/core';\nimport { BsModalRef } from 'ngx-bootstrap/modal';\nimport { DropzoneConfigInterface } from 'ngx-dropzone-wrapper';\nimport { ToastrService } from 'ngx-toastr';\nimport { map } from 'rxjs/operators';\nimport { ProjectLoadService } from '../../services/project-load.service';\n\n@Component({\n selector: 'lib-project-import',\n templateUrl: './project-import.component.html',\n styleUrls: ['./project-import.component.css'],\n})\nexport class ProjectImportComponent implements OnInit {\n public dropzoneConfig: DropzoneConfigInterface;\n public uploadMessage: string;\n\n constructor(\n public bsModalRef: BsModalRef,\n private translateService: TranslateService,\n private toastrService: ToastrService,\n private projectLoadService: ProjectLoadService\n ) {}\n\n ngOnInit() {\n this.dropzoneConfig = {\n url: 'dummy',\n addRemoveLinks: false,\n maxFilesize: 10 /* 10 MB */,\n acceptedFiles: '.rsd',\n timeout: 0,\n accept: (file: any, done: any) => {\n const reader = new FileReader();\n reader.addEventListener('loadend', (event: any) => {\n this.projectLoadService.import(event.target.result);\n done('noerr');\n this.bsModalRef.hide();\n });\n reader.readAsText(file);\n },\n previewTemplate: `\n <div style=\"display: none;\">\n <!-- No preview -->\n </div>\n `,\n };\n\n this.translateService\n .get('designer.misc.dropzone-message')\n .pipe(\n map((result) => {\n this.uploadMessage = '<h3 class=\"mb-0\"><i class=\"fa fa-cloud-upload\"></i></h3>' + result;\n })\n )\n .subscribe();\n }\n\n public onUploadError(args: any) {\n if (args[1] === 'noerr') {\n // this error is set in the accept event listener -> everything OK\n return;\n }\n\n const msg = 'designer.misc.toast-upload-error';\n const title = 'designer.misc.toast-upload-error-title';\n this.translateService.get([msg, title]).subscribe((result) => {\n this.toastrService.error(result[msg] + args[1], result[title], { timeOut: 0, extendedTimeOut: 0, enableHtml: true });\n });\n }\n\n ok() {\n this.bsModalRef.hide();\n }\n\n cancel() {\n this.bsModalRef.hide();\n }\n\n @HostListener('document:keydown.enter', ['$event'])\n handleKeyboardEvent(event: any) {\n this.ok();\n }\n}\n","<div class=\"modal-header\">\n <h4 class=\"modal-title pull-left\">{{ 'designer.project.import-title' | translate }}</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 <!-- Dropzone -->\n <dropzone [config]=\"dropzoneConfig\" [useDropzoneClass]=\"'false'\" [message]=\"uploadMessage\" (error)=\"onUploadError($event)\"></dropzone>\n</div>\n<div class=\"modal-footer\">\n <button type=\"button\" class=\"btn btn-primary\" (click)=\"ok()\">{{ 'designer.misc.ok' | translate }}</button>\n</div>\n","<div class=\"modal-header\">\n <h4 class=\"modal-title pull-left\">{{ 'designer.project.save-title' | translate }}</h4>\n <button type=\"button\" class=\"close pull-right\" aria-label=\"Close\" (click)=\"cancel(); (false)\">\n <span aria-hidden=\"true\">&times;</span>\n </button>\n</div>\n<div class=\"modal-body p-0\">\n <!-- The name of the current project -->\n <div class=\"form-group row p-3 mb-0\">\n <label class=\"col-lg-4 col-form-label\">{{ 'designer.project.name' | translate }}</label>\n <div class=\"col-lg-8\">\n <input type=\"text\" class=\"form-control\" [ngModel]=\"projectName\" (ngModelChange)=\"projectName = $event\" />\n </div>\n </div>\n\n <!-- List existing projects -->\n <div *ngIf=\"loading\" class=\"m-2 d-flex w-100\">\n <p class=\"w-100\" style=\"text-align: center\"><i class=\"fa fa-spinner fa-pulse fa-fw\"></i></p>\n </div>\n <div *ngIf=\"!loading\" class=\"list-group list-group-flush\" style=\"max-height: 500px; overflow-y: scroll\">\n <div class=\"list-group-item\" *ngFor=\"let project of projects | sort: 'name'\">\n <div class=\"row\">\n <div class=\"col-auto my-auto flex-grow\">\n <a href=\"#\" (click)=\"selectProject(project); (false)\">\n <p class=\"mb-0 w-100\">{{ project.name }}</p>\n </a>\n </div>\n <div class=\"my-auto\">\n <div class=\"col-auto my-auto pl-0 text-danger float-right\" style=\"cursor: pointer\" (click)=\"deleteProject(project); (false)\">\n <i class=\"fa fa-trash-o\" aria-hidden=\"true\"></i>\n </div>\n </div>\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 [disabled]=\"loading || !projectName\" (click)=\"saveProject(); (false)\" type=\"button\" class=\"btn btn-primary\">\n {{ 'designer.misc.ok' | translate }}\n </button>\n</div>\n","import { Component, HostListener, OnInit } from '@angular/core';\nimport { BsModalRef } from 'ngx-bootstrap/modal';\nimport { map } from 'rxjs/operators';\nimport { Project } from '../../models/project';\nimport { ConfigService } from '../../services/config.service';\nimport { ProjectService } from '../../services/project.service';\nimport { WarningDialogService } from '../../services/warning-dialog.service';\n\n@Component({\n selector: 'lib-project-save',\n templateUrl: './project-save.component.html',\n styleUrls: ['./project-save.component.css'],\n})\nexport class ProjectSaveComponent implements OnInit {\n projects: Project[] = [];\n loading = true;\n projectName: string;\n\n constructor(\n private bsModalRef: BsModalRef,\n private projectService: ProjectService,\n private warningDialogService: WarningDialogService,\n private configService: ConfigService\n ) {\n this.loadProjects();\n if (this.projectService.project.name) {\n this.projectName = this.projectService.project.name;\n } else {\n this.projectName = 'New Project';\n }\n }\n\n ngOnInit() {}\n\n private loadProjects() {\n this.projectService.getAllProjects().subscribe((projects) => {\n this.projects = projects;\n this.loading = false;\n });\n }\n\n cancel() {\n this.bsModalRef.hide();\n }\n\n selectProject(project: Project) {\n this.projectService.project.name = project.name;\n }\n\n private existingProject(uuid: string, name: string) {\n for (const project of this.projects) {\n if (project.name === name && project.uuid !== uuid) {\n return true;\n }\n }\n return false;\n }\n\n private doSave() {\n this.projectService.project.name = this.projectName;\n this.projectService.save(this.projectService.project);\n this.bsModalRef.hide();\n }\n\n saveProject() {\n if (this.existingProject(this.projectService.project.uuid, this.projectName) && this.configService.uniqueProjectNames) {\n this.warningDialogService\n .show('designer.project.overwrite-warning')\n .pipe(\n map((result) => {\n if (result) {\n this.doSave();\n }\n })\n )\n .subscribe();\n } else {\n this.doSave();\n }\n }\n\n deleteProject(project: Project) {\n this.warningDialogService\n .show('designer.project.delete-warning')\n .pipe(\n map((result) => {\n if (result) {\n this.projectService.deleteProject(project).subscribe((projects) => {\n this.loadProjects();\n });\n }\n })\n )\n .subscribe();\n }\n\n @HostListener('document:keydown.enter', ['$event'])\n handleKeyboardEvent(event: any) {\n this.saveProject();\n }\n}\n","import { Component, HostListener, OnInit } from '@angular/core';\nimport { BsModalRef } from 'ngx-bootstrap/modal';\nimport { ProjectService } from '../../services/project.service';\n\n@Component({\n selector: 'lib-project-share',\n templateUrl: './project-share.component.html',\n styleUrls: ['./project-share.component.css'],\n})\nexport class ProjectShareComponent implements OnInit {\n shareLink: string;\n\n constructor(public bsModalRef: BsModalRef, private projectService: ProjectService) {}\n\n ngOnInit() {\n this.shareLink =\n window.location.host + '/designer?id=' + this.projectService.project.id + '&token=' + this.projectService.project.shareToken;\n }\n\n ok() {\n this.bsModalRef.hide();\n }\n\n cancel() {\n this.bsModalRef.hide();\n }\n\n @HostListener('document:keydown.enter', ['$event'])\n handleKeyboardEvent(event: any) {\n this.ok();\n }\n}\n","<div class=\"modal-header\">\n <h4 class=\"modal-title pull-left\">{{ 'designer.project.share-title' | translate }}</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.project.share-link' | translate }}</label>\n <div class=\"col-lg-8 d-flex\">\n <input type=\"text\" class=\"form-control\" [ngModel]=\"shareLink\" readonly />\n </div>\n </div>\n</div>\n<div class=\"modal-footer\">\n <button type=\"button\" class=\"btn btn-primary\" (click)=\"ok()\">{{ 'designer.misc.ok' | translate }}</button>\n</div>\n","<div class=\"card-modal\">\n <div class=\"card\">\n <div class=\"card-header\">\n {{ 'designer.misc.error' | translate }}\n </div>\n\n <div class=\"card-body\">\n <div class=\"row\">\n <div class=\"col-auto\">\n <h2 class=\"mb-0\">\n <i class=\"fa fa-exclamation-circle text-danger\" aria-hidden=\"true\"></i>\n </h2>\n </div>\n <div class=\"col pl-0\">\n <p class=\"mb-0\">{{ message }}</p>\n <p *ngIf=\"details\" class=\"mt-1 mb-0\">({{ details }})</p>\n </div>\n </div>\n </div>\n\n <div class=\"card-footer\">\n <div class=\"d-flex float-right\">\n <button type=\"button\" class=\"btn btn-primary\" (click)=\"ok(); (false)\">\n {{ 'designer.misc.ok' | translate }}\n </button>\n </div>\n </div>\n </div>\n</div>\n","import { Component, HostListener, OnInit } from '@angular/core';\nimport { BsModalRef } from 'ngx-bootstrap/modal';\nimport { Subject } from 'rxjs';\n\n@Component({\n selector: 'lib-error-dialog',\n templateUrl: './error-dialog.component.html',\n styleUrls: ['./error-dialog.component.css'],\n})\nexport class ErrorDialogComponent implements OnInit {\n onClose: Subject<number>;\n\n message: string;\n details: string;\n\n constructor(private bsModalRef: BsModalRef) {}\n\n ngOnInit() {\n this.onClose = new Subject();\n }\n\n public ok(): void {\n this.onClose.next(1);\n this.bsModalRef.hide();\n }\n\n public cancel(): void {\n this.onClose.next(2);\n this.bsModalRef.hide();\n }\n\n @HostListener('document:keydown.enter', ['$event'])\n handleKeyboardEvent(event: any) {\n this.ok();\n }\n}\n","import { Injectable } from '@angular/core';\nimport { TranslateService } from '@ngx-translate/core';\nimport { BsModalService } from 'ngx-bootstrap/modal';\nimport { Observable } from 'rxjs';\nimport { map, mergeMap } from 'rxjs/operators';\nimport { ErrorDialogComponent } from '../error-dialog/error-dialog.component';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class ErrorDialogService {\n constructor(private modalService: BsModalService, private translateService: TranslateService) {}\n\n // Show a warning dialog and return true, when the user clicked OK\n show(message: string, details?: string): Observable<boolean> {\n return this.translateService.get(message).pipe(\n map((result) => {\n return result;\n }),\n mergeMap((result) => {\n const fileDialog = this.modalService.show(ErrorDialogComponent, { keyboard: true, ignoreBackdropClick: false });\n (fileDialog.content as ErrorDialogComponent).message = result;\n (fileDialog.content as ErrorDialogComponent).details = details;\n\n return (fileDialog.content as ErrorDialogComponent).onClose.pipe(\n map((errorResult) => {\n if (errorResult === 1) {\n return true;\n }\n\n return false;\n })\n );\n })\n );\n }\n}\n","import { Component, HostListener, OnInit } from '@angular/core';\nimport { TranslateService } from '@ngx-translate/core';\nimport { BsModalRef } from 'ngx-bootstrap/modal';\nimport { DropzoneConfigInterface } from 'ngx-dropzone-wrapper';\nimport { ToastrService } from 'ngx-toastr';\nimport { Subject } from 'rxjs';\nimport { map } from 'rxjs/operators';\nimport { FixtureProfile } from '../../models/fixture-profile';\nimport { FixtureService } from '../../services/fixture.service';\nimport { ProjectService } from '../../services/project.service';\n\n@Component({\n selector: 'lib-fixture-pool-create-from-file',\n templateUrl: './fixture-pool-create-from-file.component.html',\n styleUrls: ['./fixture-pool-create-from-file.component.css'],\n})\nexport class FixturePoolCreateFromFileComponent implements OnInit {\n public dropzoneConfig: DropzoneConfigInterface;\n public uploadMessage: string;\n public onClose: Subject<FixtureProfile> = new Subject();\n\n constructor(\n public bsModalRef: BsModalRef,\n private translateService: TranslateService,\n private toastrService: ToastrService,\n private fixtureService: FixtureService,\n private projectService: ProjectService\n ) {}\n\n ngOnInit() {\n this.dropzoneConfig = {\n url: 'dummy',\n addRemoveLinks: false,\n maxFilesize: 10 /* 10 MB */,\n acceptedFiles: '.json',\n timeout: 0,\n accept: (file: any, done: any) => {\n const reader = new FileReader();\n reader.addEventListener('loadend', (event: any) => {\n // validate the file\n const text = event.target.result;\n const json = JSON.parse(text);\n if (\n json['$schema'].match(\n 'https://raw.githubusercontent.com/OpenLightingProject/open-fixture-library/schema-(.*)/schemas/fixture.json'\n )\n ) {\n // create the metadata from the file. we don't have the corresponding\n // manufacturer-file, therefore we just assume the attributes from the\n // fixture-file.\n const manufacturerShortName = json['manufacturerKey'];\n const manufacturerName = manufacturerShortName;\n const uuid = manufacturerShortName + '/' + json['fixtureKey'];\n const profile = new FixtureProfile(json);\n\n profile.manufacturerShortName = manufacturerShortName;\n profile.manufacturerName = manufacturerName;\n profile.uuid = uuid;\n profile.createdFromFile = true;\n\n // add the profile to the project, if not already added\n const loadedProfile = this.fixtureService.getProfileByUuid(uuid);\n if (!loadedProfile) {\n this.projectService.project.fixtureProfiles.push(profile);\n }\n\n // add a new fixture from this profile\n this.onClose.next(profile);\n this.bsModalRef.hide();\n } else {\n // show an error toast\n const msg = 'designer.fixture-pool.invalid-fixture-profile-file';\n const title = 'designer.misc.toast-upload-error-title';\n this.translateService.get([msg, title]).subscribe((result) => {\n this.toastrService.error(result[msg], result[title], { timeOut: 0, extendedTimeOut: 0, enableHtml: true });\n });\n }\n\n done('noerr');\n });\n reader.readAsText(file);\n },\n previewTemplate: `\n <div style=\"display: none;\">\n <!-- No preview -->\n </div>\n `,\n };\n\n this.translateService\n .get('designer.misc.dropzone-message')\n .pipe(\n map((result) => {\n this.uploadMessage = '<h3 class=\"mb-0\"><i class=\"fa fa-cloud-upload\"></i></h3>' + result;\n })\n )\n .subscribe();\n }\n\n public onUploadError(args: any) {\n if (args[1] === 'noerr') {\n // this error is set in the accept event listener -> everything OK\n return;\n }\n\n const msg = 'designer.misc.toast-upload-error';\n const title = 'designer.misc.toast-upload-error-title';\n this.translateService.get([msg, title]).subscribe((result) => {\n this.toastrService.error(result[msg] + args[1], result[title], { timeOut: 0, extendedTimeOut: 0, enableHtml: true });\n });\n }\n\n ok() {\n this.onClose.next(undefined);\n this.bsModalRef.hide();\n }\n\n cancel() {\n this.onClose.next(undefined);\n this.bsModalRef.hide();\n }\n\n @HostListener('document:keydown.enter', ['$event'])\n handleKeyboardEvent(event: any) {\n this.ok();\n }\n}\n","<div class=\"modal-header\">\n <h4 class=\"modal-title pull-left\">{{ 'designer.fixture-pool.create-fixture-from-profile-file-dialog-title' | translate }}</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 <!-- Dropzone -->\n <dropzone [config]=\"dropzoneConfig\" [useDropzoneClass]=\"'false'\" [message]=\"uploadMessage\" (error)=\"onUploadError($event)\"></dropzone>\n</div>\n<div class=\"modal-footer\">\n <button type=\"button\" class=\"btn btn-primary\" (click)=\"ok()\">{{ 'designer.misc.ok' | translate }}</button>\n</div>\n","<div class=\"modal-header\">\n <h4 class=\"modal-title pull-left\">{{ 'designer.fixture-pool.title' | translate }}</h4>\n <button type=\"button\" class=\"close pull-right\" aria-label=\"Close\" (click)=\"cancel(); (false)\">\n <span aria-hidden=\"true\">&times;</span>\n </button>\n</div>\n<div class=\"modal-body\">\n <div class=\"row\">\n <div class=\"col-6\">\n <!-- Search for profiles -->\n <input\n type=\"text\"\n class=\"form-control input-block mb-3\"\n id=\"searchSet\"\n placeholder=\"{{ 'designer.fixture-pool.search-profiles' | translate }}\"\n (input)=\"searchExpression = $event.target.value; filterProfiles()\"\n />\n\n <!-- Profiles -->\n <div class=\"card border-secondary w-100\" style=\"height: 200px\">\n <div class=\"card-body p-0 w-100\">\n <div class=\"list-group list-group-flush w-100\">\n <a *ngIf=\"loadingProfiles\" class=\"list-group-item flex-column align-items-start d-flex\">\n <p class=\"mb-0 mx-auto\">\n <i class=\"fa fa-spinner fa-pulse fa-fw\"></i>\n </p>\n </a>\n\n <div class=\"list-group-item\" *ngFor=\"let profile of filteredProfiles | sort: 'uuid'\">\n <div class=\"row\">\n <div class=\"col-10 col-auto my-auto pl-2\">\n <p class=\"mb-0\">\n <span class=\"icon-{{ fixtureService.getFixtureIconClass(profile) }} mr-1\"></span> {{ profile.manufacturerName }} -\n {{ profile.name }}\n </p>\n </div>\n <div class=\"col-2 my-auto\">\n <a class=\"btn btn-primary btn-sm float-right\" href=\"#\" role=\"button\" (click)=\"addFixture(profile); (false)\">\n <i class=\"fa fa-plus\" aria-hidden=\"true\"></i>\n </a>\n </div>\n </div>\n </div>\n </div>\n </div>\n </div>\n <div>\n <p class=\"d-inline-block mb-0 mt-2\">\n Powered by the <a href=\"https://open-fixture-library.org/\" target=\"_blank\">Open Fixture Library</a>\n </p>\n <a\n class=\"mt-2 btn btn-secondary btn-sm float-right\"\n href=\"https://open-fixture-library.org/fixture-editor\"\n target=\"_blank\"\n role=\"button\"\n >\n <i class=\"fa fa-file-o\" aria-hidden=\"true\"></i> {{ 'designer.fixture-pool.add-profile' | translate }}\n </a>\n <button\n *ngIf=\"configService.localProfiles\"\n type=\"button\"\n class=\"mr-2 mt-2 btn btn-secondary btn-sm float-right\"\n (click)=\"updateProfiles(); (false)\"\n [disabled]=\"updatingProfiles\"\n role=\"button\"\n >\n <i *ngIf=\"updatingProfiles\" class=\"fa fa-spinner fa-pulse fa-fw\" aria-hidden=\"true\"></i>\n <i *ngIf=\"!updatingProfiles\" class=\"fa fa-download fa-fw\" aria-hidden=\"true\"></i>\n {{ 'designer.fixture-pool.update-profiles' | translate }}\n </button>\n </div>\n </div>\n <div class=\"col-6\">\n <div class=\"row\">\n <!-- Add fixture from local profile -->\n <div class=\"col-6\">\n <button type=\"button\" class=\"btn btn-secondary\" (click)=\"createFixtureFromProfileFile()\" role=\"button\">\n <i class=\"fa fa-plus\" aria-hidden=\"true\"></i> {{ 'designer.fixture-pool.create-fixture-from-profile-file' | translate }}\n </button>\n </div>\n\n <!-- Universe -->\n <div class=\"col-6\">\n <div class=\"form-group row\">\n <label class=\"col-lg-4 col-form-label\">{{ 'designer.fixture-pool.universe' | translate }}</label>\n <div class=\"col-lg-8\">\n <select class=\"custom-select\">\n <option>Universe 1</option>\n </select>\n </div>\n </div>\n </div>\n </div>\n\n <!-- Fixtures -->\n <div class=\"card border-secondary\" style=\"height: 235px\">\n <div class=\"card-body p-0\">\n <div class=\"list-group list-group-flush\" [sortablejs]=\"fixturePool\">\n <div\n class=\"list-group-item\"\n *ngFor=\"let fixture of fixturePool\"\n [class.active]=\"fixture == selectedFixture\"\n (click)=\"selectFixture(fixture)\"\n style=\"cursor: pointer\"\n >\n <div class=\"row\">\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=\"col-auto flex-grow pl-0 my-auto\">\n <p class=\"mb-0\">\n <span class=\"icon-{{ fixtureService.getFixtureIconClass(fixtureService.getProfileByUuid(fixture.profileUuid)) }} mr-1\">\n </span\n >{{ fixture.name }}\n </p>\n </div>\n <div class=\"col-auto my-auto\">\n <a class=\"btn btn-primary btn-sm float-right\" href=\"#\" role=\"button\" (click)=\"removeFixture(fixture); (false)\">\n <i class=\"fa fa-minus\" aria-hidden=\"true\"></i>\n </a>\n </div>\n </div>\n </div>\n </div>\n </div>\n </div>\n </div>\n </div>\n <div class=\"row mt-3\">\n <div class=\"col\">\n <!-- Tab navigation -->\n <ul class=\"nav nav-tabs mb-4\" id=\"myTab\" role=\"tablist\">\n <li class=\"nav-item\">\n <a class=\"nav-link active\" id=\"sets-tab\" data-toggle=\"tab\" href=\"#dmx\" role=\"tab\">\n <i class=\"icon-ola\" aria-hidden=\"true\"></i> {{ 'designer.fixture-pool.dmx' | translate }}\n </a>\n </li>\n <li class=\"nav-item\">\n <a class=\"nav-link\" id=\"compositions-tab\" data-toggle=\"tab\" href=\"#settings\" role=\"tab\">\n <i class=\"fa fa-cog\" aria-hidden=\"true\"></i> {{ 'designer.fixture-pool.settings' | translate }}\n </a>\n </li>\n </ul>\n\n <!-- Tab content -->\n <div class=\"tab-content\" id=\"myTabContent\">\n <!-- DMX universe overview-->\n <div class=\"tab-pane show active\" id=\"dmx\" role=\"tabpanel\">\n <!-- Show all channel numbers -->\n <!-- <div class=\"form-group row\">\n <div class=\"col-auto flex-grow\"></div>\n <div class=\"col-lg-3 d-flex\">\n <div class=\"form-check my-auto ml-auto\">\n <input type=\"checkbox\" class=\"form-check-input\" id=\"showChannelNumbers\" [ngModel]=\"showChannelNumbers\"\n (ngModelChange)=\"showChannelNumbers = $event\">\n <label class=\"form-check-label\" for=\"showChannelNumbers\">Show channels</label>\n </div>\n </div>\n </div> -->\n\n <!-- List of DMX channels -->\n <div>\n <div\n *ngFor=\"let channel of dmxChannels; let i = index\"\n class=\"dmx-channel\"\n [class.dmx-channel-occupied]=\"channelOccupied(i)\"\n [class.dmx-channel-occupied-start]=\"channelOccupiedStart(i)\"\n [class.dmx-channel-occupied-end]=\"channelOccupiedEnd(i)\"\n [class.dmx-channel-selected]=\"channelSelected(i)\"\n [class.dmx-channel-overlapped]=\"channelOverlapped(i)\"\n (mousedown)=\"channelMouseDown($event)\"\n (mouseover)=\"channelMouseOver($event)\"\n [attr.data-index]=\"i\"\n popover=\"{{ i + 1 }}\"\n placement=\"top\"\n triggers=\"mouseenter:mouseleave\"\n >\n <div class=\"d-flex w-100 dmx-channel-text\" [attr.data-index]=\"i\" [class.dmx-channel-text-visible]=\"showChannelNumbers\">\n <div class=\"m-auto\" style=\"font-size: 11px\" [attr.data-index]=\"i\"><small [attr.data-index]=\"i\">&nbsp;</small></div>\n </div>\n </div>\n </div>\n </div>\n\n <!-- Fixture settings -->\n <div class=\"tab-pane\" id=\"settings\" role=\"tabpanel\">\n <div *ngIf=\"selectedFixture && selectedFixtureProfile\">\n <div class=\"form-group row\">\n <label class=\"col-lg-3 col-form-label\" for=\"fixtureName\">{{ 'designer.fixture-pool.fixture-name' | translate }}</label>\n <div class=\"col-lg-9\">\n <input type=\"text\" class=\"form-control\" [(ngModel)]=\"selectedFixture.name\" maxlength=\"200\" id=\"fixtureName\" />\n </div>\n </div>\n\n <div class=\"form-group row\">\n <label class=\"col-lg-3 col-form-label\">{{ 'designer.fixture-pool.mode' | translate }}</label>\n <div class=\"col-lg-9\">\n <select\n class=\"custom-select\"\n [ngModel]=\"selectedFixture.modeShortName\"\n (ngModelChange)=\"selectedFixture.modeShortName = $event\"\n >\n <option *ngFor=\"let mode of selectedFixtureProfile.modes\" [ngValue]=\"mode.shortName || mode.name\">\n {{ mode.name }}\n - {{ mode.channels.length }}\n {{ 'designer.fixture-pool.channels' | translate }}\n </option>\n </select>\n </div>\n </div>\n\n <div class=\"form-group row\">\n <label class=\"col-lg-3 col-form-label\">{{ 'designer.fixture-pool.first-channel' | translate }}</label>\n <div class=\"col-lg-9\">\n <select\n class=\"custom-select\"\n [ngModel]=\"selectedFixture.dmxFirstChannel\"\n (ngModelChange)=\"selectedFixture.dmxFirstChannel = $event\"\n >\n <option *ngFor=\"let channel of dmxChannels; let i = index\" [ngValue]=\"i\">\n {{ i + 1 }}\n </option>\n </select>\n </div>\n </div>\n\n <div class=\"form-group row\">\n <label class=\"col-lg-3 col-form-label\"></label>\n <div class=\"col-lg-9\">\n <button type=\"button\" class=\"btn btn-primary\" (click)=\"addCopy(selectedFixture)\">\n {{ 'designer.fixture.add-copy' | translate }}\n </button>\n </div>\n </div>\n </div>\n </div>\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","import { Component, HostListener, OnInit } from '@angular/core';\nimport { TranslateService } from '@ngx-translate/core';\nimport { BsModalRef, BsModalService } from 'ngx-bootstrap/modal';\nimport { ToastrService } from 'ngx-toastr';\nimport { Subject } from 'rxjs';\nimport { catchError, finalize } from 'rxjs/operators';\nimport { Fixture } from '../models/fixture';\nimport { FixtureProfile } from '../models/fixture-profile';\nimport { ConfigService } from '../services/config.service';\nimport { FixtureService } from '../services/fixture.service';\nimport { PresetService } from '../services/preset.service';\nimport { PreviewService } from '../services/preview.service';\nimport { ProjectService } from '../services/project.service';\nimport { UuidService } from '../services/uuid.service';\nimport { FixturePoolCreateFromFileComponent } from './fixture-pool-create-from-file/fixture-pool-create-from-file.component';\n\n@Component({\n selector: 'lib-app-fixture-pool',\n templateUrl: './fixture-pool.component.html',\n styleUrls: ['./fixture-pool.component.css'],\n})\nexport class FixturePoolComponent implements OnInit {\n private profiles: FixtureProfile[];\n public filteredProfiles: FixtureProfile[];\n public loadingProfiles = false;\n\n public fixturePool: Fixture[];\n\n public dmxChannels: number[] = [];\n public selectedFixture: Fixture;\n public selectedFixtureProfile: FixtureProfile;\n public showChannelNumbers = false;\n public channelDragFixture: Fixture;\n public channelDragOffset: number;\n\n public onClose: Subject<number> = new Subject();\n\n public searchExpression: string;\n\n public updatingProfiles: boolean;\n\n constructor(\n public bsModalRef: BsModalRef,\n public fixtureService: FixtureService,\n private uuidService: UuidService,\n public projectService: ProjectService,\n private previewService: PreviewService,\n private translateService: TranslateService,\n private toastrService: ToastrService,\n private presetService: PresetService,\n public configService: ConfigService,\n private modalService: BsModalService\n ) {\n this.fixturePool = [...this.projectService.project.fixtures];\n\n if (this.fixturePool.length > 0) {\n this.selectFixture(this.fixturePool[0]);\n }\n }\n\n ngOnInit() {\n for (let i = 0; i < 512; i++) {\n this.dmxChannels.push(0);\n }\n\n this.loadProfiles();\n }\n\n private loadProfiles() {\n this.loadingProfiles = true;\n\n this.fixtureService.getSearchProfiles().subscribe((profiles) => {\n this.profiles = profiles;\n this.filterProfiles();\n this.loadingProfiles = false;\n });\n }\n\n selectFixture(fixture: Fixture) {\n this.selectedFixtureProfile = undefined;\n if (fixture) {\n this.selectedFixtureProfile = this.fixtureService.getProfileByUuid(fixture.profileUuid);\n }\n this.selectedFixture = fixture;\n }\n\n filterProfiles() {\n if (!this.searchExpression || !this.profiles) {\n this.filteredProfiles = this.profiles;\n return;\n }\n\n this.filteredProfiles = [];\n\n const keywords = this.searchExpression.split(' ');\n\n for (const profile of this.profiles) {\n let foundKeywords = 0;\n\n for (const keyword of keywords) {\n if (\n profile.uuid.toLowerCase().indexOf(keyword.toLowerCase()) !== -1 ||\n profile.name.toLowerCase().indexOf(keyword.toLowerCase()) !== -1 ||\n profile.manufacturerName.toLowerCase().indexOf(keyword.toLowerCase()) !== -1\n ) {\n foundKeywords++;\n }\n }\n\n if (foundKeywords === keywords.length) {\n this.filteredProfiles.push(profile);\n }\n }\n }\n\n addFixture(searchProfile: FixtureProfile) {\n // Load the profile details, if not already done. There is only a\n // minimal profile passed from the search.\n this.fixtureService.loadProfileByUuid(searchProfile.uuid).subscribe(() => {\n const profile = this.fixtureService.getProfileByUuid(searchProfile.uuid);\n const newFixture = this.fixtureService.addFixture(profile, this.fixturePool);\n this.selectFixture(newFixture);\n });\n }\n\n addCopy(originalFixture: Fixture) {\n const fixture = new Fixture();\n fixture.uuid = this.uuidService.getUuid();\n fixture.profileUuid = originalFixture.profileUuid;\n fixture.name = originalFixture.name;\n fixture.modeShortName = originalFixture.modeShortName;\n fixture.dmxFirstChannel = originalFixture.dmxFirstChannel;\n fixture.dmxUniverseUuid = originalFixture.dmxUniverseUuid;\n\n this.fixturePool.push(fixture);\n this.selectFixture(fixture);\n }\n\n removeFixture(fixture: Fixture) {\n for (let i = 0; i < this.fixturePool.length; i++) {\n if (this.fixturePool[i].uuid === fixture.uuid) {\n if (this.selectedFixture === this.fixturePool[i]) {\n this.selectFixture(undefined);\n }\n this.fixturePool.splice(i, 1);\n break;\n }\n }\n\n if (!this.selectedFixture && this.fixturePool && this.fixturePool.length > 0) {\n this.selectFixture((this.selectedFixture = this.fixturePool[0]));\n }\n\n // remove unused profiles\n for (let i = 0; i < this.projectService.project.fixtureProfiles.length; i++) {\n let profileUsed = false;\n\n for (const fixtureInPool of this.fixturePool) {\n if (fixtureInPool.profileUuid === this.projectService.project.fixtureProfiles[i].uuid) {\n profileUsed = true;\n break;\n }\n }\n\n if (!profileUsed) {\n this.projectService.project.fixtureProfiles.splice(i, 1);\n }\n }\n }\n\n channelOccupied(index: number): boolean {\n for (const fixture of this.fixturePool) {\n const mode = this.fixtureService.getModeByFixture(this.fixtureService.getProfileByUuid(fixture.profileUuid), fixture);\n\n if (index >= fixture.dmxFirstChannel && index < fixture.dmxFirstChannel + mode.channels.length) {\n return true;\n }\n }\n\n return false;\n }\n\n channelOccupiedStart(index: number): boolean {\n for (const fixture of this.fixturePool) {\n if (index === fixture.dmxFirstChannel) {\n return true;\n }\n }\n\n return false;\n }\n\n channelOccupiedEnd(index: number): boolean {\n for (const fixture of this.fixturePool) {\n const mode = this.fixtureService.getModeByFixture(this.fixtureService.getProfileByUuid(fixture.profileUuid), fixture);\n\n if (index === fixture.dmxFirstChannel + mode.channels.length - 1) {\n return true;\n }\n }\n\n return false;\n }\n\n channelOverlapped(index: number): boolean {\n let occupiedFixture: Fixture;\n\n for (const fixture of this.fixturePool) {\n const mode = this.fixtureService.getModeByFixture(this.fixtureService.getProfileByUuid(fixture.profileUuid), fixture);\n\n if (index >= fixture.dmxFirstChannel && index < fixture.dmxFirstChannel + mode.channels.length) {\n if (occupiedFixture) {\n if (occupiedFixture.dmxFirstChannel !== fixture.dmxFirstChannel || occupiedFixture.modeShortName !== fixture.modeShortName) {\n // fixtures are allowed to overlap, if they start at the same channel and\n // use the same mode. otherwise it's not allowed.\n return true;\n }\n } else {\n occupiedFixture = fixture;\n }\n }\n }\n\n return false;\n }\n\n channelMouseDown(event: any) {\n // start dragging\n const selectedIndex = event.target.dataset.index;\n let newSelectedFixture: Fixture;\n\n // find a dragging fixture and select it, but don't change the selection, if the\n // currently selected fixture might also be selected (on overlapped fixtures)\n for (const fixture of this.fixturePool) {\n const mode = this.fixtureService.getModeByFixture(this.fixtureService.getProfileByUuid(fixture.profileUuid), fixture);\n\n if (selectedIndex >= fixture.dmxFirstChannel && selectedIndex <= fixture.dmxFirstChannel + mode.channels.length - 1) {\n if (this.selectedFixture === fixture) {\n newSelectedFixture = fixture;\n break;\n }\n\n if (!newSelectedFixture) {\n newSelectedFixture = fixture;\n }\n }\n }\n\n if (newSelectedFixture) {\n if (newSelectedFixture !== this.selectedFixture) {\n this.selectFixture(newSelectedFixture);\n }\n\n this.channelDragFixture = newSelectedFixture;\n this.channelDragOffset = selectedIndex - newSelectedFixture.dmxFirstChannel;\n }\n }\n\n channelSelected(index: number): boolean {\n if (!this.selectedFixture) {\n return false;\n }\n\n if (index >= this.selectedFixture.dmxFirstChannel) {\n const mode = this.fixtureService.getModeByFixture(\n this.fixtureService.getProfileByUuid(this.selectedFixture.profileUuid),\n this.selectedFixture\n );\n\n if (index < this.selectedFixture.dmxFirstChannel + mode.channels.length) {\n return true;\n }\n }\n\n return false;\n }\n\n // register mouse up globally (e.g. also outside the DMX mapping)\n @HostListener('window:mouseup', ['$event'])\n mouseUp(event: any) {\n // finish dragging\n this.channelDragFixture = undefined;\n this.channelDragOffset = undefined;\n }\n\n channelMouseOver(event: any) {\n // perform dragging\n const selectedIndex = event.target.dataset.index;\n\n if (\n this.channelDragFixture &&\n selectedIndex - this.channelDragOffset >= 0 &&\n selectedIndex -\n this.channelDragOffset +\n this.fixtureService.getModeByFixture(\n this.fixtureService.getProfileByUuid(this.channelDragFixture.profileUuid),\n this.channelDragFixture\n ).channels.length -\n 1 <=\n 511\n ) {\n this.channelDragFixture.dmxFirstChannel = selectedIndex - this.channelDragOffset;\n }\n }\n\n ok() {\n // don't allow OK if overlapping fixtures exist\n for (let i = 0; i < this.dmxChannels.length; i++) {\n if (this.channelOverlapped(i)) {\n const msg = 'designer.fixture-pool.channel-occupied';\n const title = 'designer.fixture-pool.channel-occupied-title';\n\n this.translateService.get([msg, title]).subscribe((result) => {\n this.toastrService.error(result[msg], result[title]);\n });\n\n return;\n }\n }\n\n this.projectService.project.fixtures = this.fixturePool;\n\n this.fixtureService.updateCachedFixtures();\n this.presetService.removeDeletedFixtures();\n this.previewService.updateFixtureSetup();\n this.presetService.updateFixtureSelection();\n this.presetService.fixtureSelectionChanged.next();\n this.presetService.previewLive();\n\n this.onClose.next(1);\n this.bsModalRef.hide();\n }\n\n cancel() {\n this.onClose.next(2);\n this.bsModalRef.hide();\n }\n\n updateProfiles() {\n this.updatingProfiles = true;\n\n // TODO\n this.fixtureService\n .updateProfiles()\n .pipe(\n finalize(() => {\n this.updatingProfiles = false;\n }),\n catchError(() => {\n const msg = 'designer.fixture-pool.profiles-update-error';\n const title = 'designer.fixture-pool.profiles-update-error-title';\n\n this.translateService.get([msg, title]).subscribe((result) => {\n this.toastrService.error(result[msg], result[title]);\n });\n\n return undefined;\n })\n )\n .subscribe(() => {\n this.loadProfiles();\n\n const msg = 'designer.fixture-pool.profiles-updated';\n const title = 'designer.fixture-pool.profiles-updated-title';\n\n this.translateService.get([msg, title]).subscribe((result) => {\n this.toastrService.success(result[msg], result[title]);\n });\n });\n }\n\n createFixtureFromProfileFile() {\n const bsModalRef = this.modalService.show(FixturePoolCreateFromFileComponent, { keyboard: true, ignoreBackdropClick: false });\n (bsModalRef.content as FixturePoolCreateFromFileComponent).onClose.subscribe((profile: FixtureProfile) => {\n const newFixture = this.fixtureService.addFixture(profile, this.fixturePool);\n this.selectFixture(newFixture);\n });\n }\n\n @HostListener('document:keydown.enter', ['$event'])\n handleKeyboardEvent(event: any) {\n this.ok();\n }\n}\n","import { Injectable } from '@angular/core';\nimport { BsModalService } from 'ngx-bootstrap/modal';\nimport { FixturePoolComponent } from '../fixture-pool/fixture-pool.component';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class FixturePoolService {\n private fixturePoolOpened = false;\n\n constructor(private modalService: BsModalService) {}\n\n open() {\n if (this.fixturePoolOpened) {\n return;\n }\n\n this.fixturePoolOpened = true;\n const bsModalRef = this.modalService.show(FixturePoolComponent, { keyboard: false, ignoreBackdropClick: true, class: 'modal-full' });\n (bsModalRef.content as FixturePoolComponent).onClose.subscribe((result) => {\n this.fixturePoolOpened = false;\n });\n }\n}\n","import { Injectable } from '@angular/core';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class HotkeyTargetExcludeService {\n constructor() {}\n\n exclude(event: any): boolean {\n // don't react on certain targets (e.g. the user is inside an input field)\n if (!event.target) {\n return false;\n }\n\n if (event.target.nodeName === 'INPUT') {\n return true;\n }\n\n return false;\n }\n}\n","import { Injectable } from '@angular/core';\nimport { Subject } from 'rxjs';\nimport { ConfigService } from './config.service';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class IntroService {\n showIntro = false;\n activeStep = 'start';\n positionTopPercentage = 50;\n positionLeftPercentage = 50;\n stylePosition = 'top: calc(50% - 150px); left: calc(50% - 200px);';\n stepChanged: Subject<void> = new Subject<void>();\n\n constructor(private configService: ConfigService) {}\n\n refresh() {\n // called, as soon as the config has been updated\n if (this.configService.intro) {\n if (localStorage.getItem('showIntro')) {\n this.showIntro = localStorage.getItem('showIntro') === 'true';\n } else {\n this.showIntro = true;\n }\n }\n }\n\n setShowIntro(value: boolean) {\n this.showIntro = value;\n if (value) {\n localStorage.setItem('showIntro', 'true');\n } else {\n localStorage.setItem('showIntro', 'false');\n }\n this.stepChanged.next();\n }\n\n reset() {\n this.activeStep = 'start';\n this.setShowIntro(true);\n this.stepChanged.next();\n }\n\n showStep(step: string): boolean {\n if (!this.showIntro) {\n return false;\n }\n\n if (this.activeStep !== step) {\n return false;\n }\n\n return true;\n }\n\n next() {\n switch (this.activeStep) {\n case 'start':\n this.activeStep = 'preview';\n this.positionTopPercentage = 60;\n this.positionLeftPercentage = 40;\n break;\n case 'preview':\n this.activeStep = 'fixtures';\n this.positionTopPercentage = 40;\n this.positionLeftPercentage = 30;\n break;\n case 'fixtures':\n this.activeStep = 'presets';\n this.positionTopPercentage = 30;\n this.positionLeftPercentage = 50;\n break;\n case 'presets':\n this.activeStep = 'capabilities';\n this.positionTopPercentage = 50;\n this.positionLeftPercentage = 60;\n break;\n case 'capabilities':\n this.activeStep = 'scenes';\n this.positionTopPercentage = 50;\n this.positionLeftPercentage = 40;\n break;\n case 'scenes':\n this.activeStep = 'timeline';\n this.positionTopPercentage = 40;\n this.positionLeftPercentage = 50;\n break;\n case 'timeline':\n this.activeStep = 'finish';\n this.positionTopPercentage = 50;\n this.positionLeftPercentage = 50;\n break;\n }\n\n this.stepChanged.next();\n }\n\n back() {\n switch (this.activeStep) {\n case 'preview':\n this.activeStep = 'start';\n this.positionTopPercentage = 50;\n this.positionLeftPercentage = 50;\n break;\n case 'fixtures':\n this.activeStep = 'preview';\n this.positionTopPercentage = 60;\n this.positionLeftPercentage = 40;\n break;\n case 'presets':\n this.activeStep = 'fixtures';\n this.positionTopPercentage = 30;\n this.positionLeftPercentage = 50;\n break;\n case 'capabilities':\n this.activeStep = 'presets';\n this.positionTopPercentage = 40;\n this.positionLeftPercentage = 30;\n break;\n case 'scenes':\n this.activeStep = 'capabilities';\n this.positionTopPercentage = 50;\n this.positionLeftPercentage = 60;\n break;\n case 'timeline':\n this.activeStep = 'scenes';\n this.positionTopPercentage = 50;\n this.positionLeftPercentage = 40;\n break;\n case 'finish':\n this.activeStep = 'timeline';\n this.positionTopPercentage = 40;\n this.positionLeftPercentage = 50;\n break;\n }\n\n this.stepChanged.next();\n }\n}\n","<form (ngSubmit)=\"login()\">\n <div class=\"modal-header\">\n <h4 class=\"modal-title pull-left\">{{ 'designer.user.login-title' | translate }}</h4>\n <button type=\"button\" class=\"close pull-right\" aria-label=\"Close\" (click)=\"cancel(); (false)\">\n <span aria-hidden=\"true\">&times;</span>\n </button>\n </div>\n <div class=\"modal-body\">\n <div class=\"form-group row\">\n <label for=\"email\" class=\"col-sm-4 col-form-label\">{{ 'designer.user.email' | translate }}</label>\n <div class=\"col-sm-8\">\n <div class=\"input-group\">\n <div class=\"input-group-prepend\">\n <div class=\"input-group-text\"><i class=\"fa fa-fw fa-envelope-o\" aria-hidden=\"true\"></i></div>\n </div>\n <input\n required\n [disabled]=\"loggingIn\"\n name=\"email\"\n [(ngModel)]=\"email\"\n type=\"email\"\n class=\"form-control\"\n id=\"email\"\n placeholder=\"email@example.com\"\n />\n </div>\n </div>\n </div>\n <div class=\"form-group row\">\n <label for=\"password\" class=\"col-sm-4 col-form-label\">{{ 'designer.user.password' | translate }}</label>\n <div class=\"col-sm-8\">\n <div class=\"input-group\">\n <div class=\"input-group-prepend\">\n <div class=\"input-group-text\"><i class=\"fa fa-fw fa-lock\" aria-hidden=\"true\"></i></div>\n </div>\n <input\n required\n [disabled]=\"loggingIn\"\n name=\"password\"\n [(ngModel)]=\"password\"\n type=\"password\"\n class=\"form-control\"\n id=\"password\"\n placeholder=\"{{ 'designer.user.password' | translate }}\"\n />\n </div>\n </div>\n </div>\n <div *ngIf=\"error\" class=\"alert alert-primary\" role=\"alert\">\n {{ 'designer.user.error.' + error | translate }}\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 [disabled]=\"loggingIn\" type=\"submit\" class=\"btn btn-primary\">\n <i *ngIf=\"loggingIn\" class=\"fa fa-spinner fa-pulse fa-fw\"></i> {{ 'designer.user.login' | translate }}\n </button>\n </div>\n</form>\n","import { Component, HostListener, OnInit } from '@angular/core';\nimport { BsModalRef } from 'ngx-bootstrap/modal';\nimport { Subject } from 'rxjs';\nimport { UserService } from '../../services/user.service';\n\n@Component({\n selector: 'lib-user-login',\n templateUrl: './user-login.component.html',\n styleUrls: ['./user-login.component.css'],\n})\nexport class UserLoginComponent implements OnInit {\n error = '';\n loggingIn = false;\n\n email = '';\n password = '';\n\n // emits, when logged in\n subject: Subject<void>;\n\n constructor(private bsModalRef: BsModalRef, private userService: UserService) {}\n\n ngOnInit() {}\n\n cancel() {\n this.bsModalRef.hide();\n }\n\n login() {\n this.loggingIn = true;\n this.error = '';\n\n if (!this.email || !this.password) {\n this.error = 'fill-all-fields';\n this.loggingIn = false;\n return;\n }\n\n this.userService.login(this.email, this.password).subscribe(\n () => {\n this.bsModalRef.hide();\n if (this.subject) {\n this.subject.next();\n }\n },\n (response) => {\n if (response.error && response.error.error) {\n this.error = response.error.error;\n } else {\n this.error = 'internal';\n }\n this.loggingIn = false;\n }\n );\n }\n\n @HostListener('document:keydown.enter', ['$event'])\n handleKeyboardEvent(event: any) {\n this.login();\n }\n}\n","<form (ngSubmit)=\"register()\">\n <div class=\"modal-header\">\n <h4 class=\"modal-title pull-left\">{{ 'designer.user.register-title' | translate }}</h4>\n <button type=\"button\" class=\"close pull-right\" aria-label=\"Close\" (click)=\"cancel(); (false)\">\n <span aria-hidden=\"true\">&times;</span>\n </button>\n </div>\n <div class=\"modal-body\">\n <div *ngIf=\"subject\" class=\"alert alert-success\" role=\"alert\">\n {{ 'designer.user.login-required' | translate }}\n </div>\n <div class=\"form-group row\">\n <label for=\"username\" class=\"col-sm-4 col-form-label\">{{ 'designer.user.username' | translate }}</label>\n <div class=\"col-sm-8\">\n <div class=\"input-group\">\n <div class=\"input-group-prepend\">\n <div class=\"input-group-text\"><i class=\"fa fa-fw fa-user\" aria-hidden=\"true\"></i></div>\n </div>\n <input\n required\n [disabled]=\"registering\"\n name=\"username\"\n [(ngModel)]=\"username\"\n type=\"text\"\n class=\"form-control\"\n id=\"username\"\n placeholder=\"The Cool Guy\"\n />\n </div>\n </div>\n </div>\n <div class=\"form-group row\">\n <label for=\"email\" class=\"col-sm-4 col-form-label\">{{ 'designer.user.email' | translate }}</label>\n <div class=\"col-sm-8\">\n <div class=\"input-group\">\n <div class=\"input-group-prepend\">\n <div class=\"input-group-text\"><i class=\"fa fa-fw fa-envelope-o\" aria-hidden=\"true\"></i></div>\n </div>\n <input\n required\n [disabled]=\"registering\"\n name=\"email\"\n [(ngModel)]=\"email\"\n type=\"email\"\n class=\"form-control\"\n id=\"email\"\n placeholder=\"email@example.com\"\n />\n </div>\n </div>\n </div>\n <div class=\"form-group row\">\n <label for=\"password\" class=\"col-sm-4 col-form-label\">{{ 'designer.user.password' | translate }}</label>\n <div class=\"col-sm-8\">\n <div class=\"input-group\">\n <div class=\"input-group-prepend\">\n <div class=\"input-group-text\"><i class=\"fa fa-fw fa-lock\" aria-hidden=\"true\"></i></div>\n </div>\n <input\n required\n [disabled]=\"registering\"\n name=\"password\"\n [(ngModel)]=\"password\"\n type=\"password\"\n class=\"form-control\"\n id=\"password\"\n placeholder=\"{{ 'designer.user.password' | translate }}\"\n />\n </div>\n </div>\n </div>\n <div class=\"form-group row\">\n <label for=\"passwordRepeat\" class=\"col-sm-4 col-form-label\">{{ 'designer.user.password-repeat' | translate }}</label>\n <div class=\"col-sm-8\">\n <div class=\"input-group\">\n <div class=\"input-group-prepend\">\n <div class=\"input-group-text\"><i class=\"fa fa-fw fa-lock\" aria-hidden=\"true\"></i></div>\n </div>\n <input\n required\n [disabled]=\"registering\"\n name=\"passwordRepeat\"\n [(ngModel)]=\"passwordRepeat\"\n type=\"password\"\n class=\"form-control\"\n id=\"passwordRepeat\"\n placeholder=\"{{ 'designer.user.password' | translate }}\"\n />\n </div>\n </div>\n </div>\n <div *ngIf=\"error\" class=\"alert alert-primary\" role=\"alert\">\n {{ 'designer.user.error.' + error | translate }}\n </div>\n <a href=\"#\" (click)=\"login(); (false)\">\n <p class=\"mt-3 mb-0\" style=\"text-align: center\">{{ 'designer.user.already-have-account' | translate }}</p>\n </a>\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 [disabled]=\"registering\" type=\"submit\" class=\"btn btn-primary\">\n <i *ngIf=\"registering\" class=\"fa fa-spinner fa-pulse fa-fw\"> </i>{{ 'designer.user.register' | translate }}\n </button>\n </div>\n</form>\n","import { Component, HostListener, OnInit } from '@angular/core';\nimport { BsModalRef, BsModalService } from 'ngx-bootstrap/modal';\nimport { Subject } from 'rxjs';\nimport { UserService } from '../../services/user.service';\nimport { UserLoginComponent } from '../user-login/user-login.component';\n\n@Component({\n selector: 'lib-user-register',\n templateUrl: './user-register.component.html',\n styleUrls: ['./user-register.component.css'],\n})\nexport class UserRegisterComponent implements OnInit {\n error = '';\n registering = false;\n\n username = '';\n email = '';\n password = '';\n passwordRepeat = '';\n\n // emits, when logged in\n subject: Subject<void>;\n\n constructor(private bsModalRef: BsModalRef, private modalService: BsModalService, private userService: UserService) {}\n\n ngOnInit() {}\n\n cancel() {\n this.bsModalRef.hide();\n }\n\n login() {\n this.bsModalRef.hide();\n this.modalService.show(UserLoginComponent, { keyboard: true, ignoreBackdropClick: false, initialState: { subject: this.subject } });\n }\n\n private emailIsValid(email: string): boolean {\n // tslint:disable-next-line:max-line-length\n const re = /^(([^<>()\\[\\]\\\\.,;:\\s@\"]+(\\.[^<>()\\[\\]\\\\.,;:\\s@\"]+)*)|(\".+\"))@((\\[[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}\\])|(([a-zA-Z\\-0-9]+\\.)+[a-zA-Z]{2,}))$/;\n return re.test(String(email).toLowerCase());\n }\n\n register() {\n this.registering = true;\n this.error = '';\n\n if (!this.username || !this.email || !this.password || !this.passwordRepeat) {\n this.error = 'fill-all-fields';\n this.registering = false;\n return;\n }\n\n if (!this.emailIsValid(this.email)) {\n this.error = 'email-valid';\n this.registering = false;\n return;\n }\n\n if (this.password !== this.passwordRepeat) {\n this.error = 'password-mismatch';\n this.registering = false;\n return;\n }\n\n this.userService.register(this.email, this.username, this.password).subscribe(\n () => {\n // automatically login after registering\n this.userService.login(this.email, this.password).subscribe(() => {\n this.registering = false;\n this.bsModalRef.hide();\n });\n },\n (response) => {\n if (response.error && response.error.error) {\n this.error = response.error.error;\n } else {\n this.error = 'internal';\n }\n this.registering = false;\n }\n );\n }\n\n @HostListener('document:keydown.enter', ['$event'])\n handleKeyboardEvent(event: any) {\n this.register();\n }\n}\n","import { Injectable } from '@angular/core';\nimport { BsModalService } from 'ngx-bootstrap/modal';\nimport { Observable, of, Subject } from 'rxjs';\nimport { UserRegisterComponent } from '../user/user-register/user-register.component';\nimport { ConfigService } from './config.service';\nimport { UserService } from './user.service';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class UserEnsureLoginService {\n constructor(private userService: UserService, private modalService: BsModalService, private configService: ConfigService) {}\n\n // show the login form and log a user in, if required\n login(): Observable<void> {\n if (this.userService.isLoggedIn()) {\n return of(null);\n }\n\n if (!this.configService.loginAvailable) {\n return of(null);\n }\n\n const subject = new Subject<void>();\n this.modalService.show(UserRegisterComponent, { keyboard: true, ignoreBackdropClick: false, initialState: { subject } });\n return subject;\n }\n}\n","<div class=\"modal-header\">\n <h4 class=\"modal-title pull-left\">{{ composition.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.timeline.composition-name' | translate }}</label>\n <div class=\"col-lg-8 d-flex\">\n <input\n type=\"text\"\n class=\"form-control\"\n [ngModel]=\"composition.name\"\n (ngModelChange)=\"composition.name = $event\"\n [typeahead]=\"existingCompositionNames\"\n />\n </div>\n </div>\n\n <div class=\"form-group row\">\n <label class=\"col-lg-4 col-form-label\">{{ 'designer.timeline.composition-sync-type' | translate }}</label>\n <div class=\"col-lg-8 d-flex\">\n <select class=\"custom-select\" [ngModel]=\"composition.syncType\" (ngModelChange)=\"composition.syncType = $event\">\n <!-- TODO -->\n <!-- <option value=\"none\">{{ 'designer.timeline.composition-sync-type-none' | translate }}</option> -->\n <option value=\"audio\">{{ 'designer.timeline.composition-sync-type-audio' | translate }}</option>\n </select>\n </div>\n </div>\n\n <div *ngIf=\"composition.syncType == 'audio'\" class=\"row\">\n <div class=\"px-3 w-100\">\n <!-- Selected file -->\n <div class=\"card border-secondary mb-3\">\n <div class=\"card-body\">\n <!-- No file selected -->\n <div *ngIf=\"!composition.audioFileName\">\n {{ 'designer.timeline.composition-no-file-selected' | translate }}\n </div>\n\n <!-- A file is selected -->\n <div *ngIf=\"composition.audioFileName\">\n {{ composition.audioFileName }}\n </div>\n </div>\n </div>\n\n <!-- Choose file -->\n <ul *ngIf=\"configService.enableMediaLibrary\" class=\"nav nav-tabs mb-3\" id=\"myTab\" role=\"tablist\">\n <li class=\"nav-item\">\n <a class=\"nav-link active\" id=\"upload-tab\" data-toggle=\"tab\" href=\"#upload\" role=\"tab\">\n <i class=\"fa fa-upload\" aria-hidden=\"true\"></i>\n {{ 'designer.timeline.composition-file-upload' | translate }}\n </a>\n </li>\n <li class=\"nav-item\">\n <a class=\"nav-link\" id=\"media-library-tab\" data-toggle=\"tab\" href=\"#media-library\" role=\"tab\">\n <i class=\"fa fa-folder-o\" aria-hidden=\"true\"></i>\n {{ 'designer.timeline.composition-file-library' | translate }}\n </a>\n </li>\n </ul>\n\n <div class=\"tab-content\" id=\"myTabContent\">\n <!-- Upload -->\n <div class=\"tab-pane fade show active\" id=\"upload\" role=\"tabpanel\">\n <!-- Dropzone -->\n <dropzone\n [config]=\"dropzoneConfig\"\n [useDropzoneClass]=\"'false'\"\n [message]=\"uploadMessage\"\n (error)=\"onUploadError($event)\"\n (success)=\"onUploadSuccess($event)\"\n (queuecomplete)=\"onQueueComplete($event)\"\n (addedfile)=\"onAddedFile($event)\"\n ></dropzone>\n </div>\n\n <!-- Media library -->\n <div class=\"tab-pane fade\" id=\"media-library\" role=\"tabpanel\">\n <input\n type=\"text\"\n class=\"form-control input-block mb-3\"\n id=\"searchFileList\"\n placeholder=\"{{ 'designer.misc.search' | translate }}\"\n (input)=\"filterExistingFiles($event.target.value)\"\n />\n\n <div class=\"card border-secondary\" style=\"height: 200px; overflow-y: scroll\">\n <div class=\"card-body p-0\">\n <div class=\"list-group list-group-flush\">\n <a\n *ngFor=\"let existingFile of filteredExistingFiles | sort: 'name'\"\n class=\"list-group-item\"\n [class.active]=\"composition.audioFileName == existingFile\"\n href=\"#\"\n (click)=\"selectExistingFile(existingFile); (false)\"\n >\n <div class=\"row\">\n <div class=\"col-auto my-auto flex-grow text-break-word\">\n {{ existingFile }}\n </div>\n\n <div class=\"col-auto my-auto pl-0 text-danger float-right\" (click)=\"deleteFile(existingFile); (false)\">\n <i class=\"fa fa-trash-o\" aria-hidden=\"true\"></i>\n </div>\n </div>\n </a>\n </div>\n </div>\n </div>\n </div>\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 [disabled]=\"uploading\" type=\"button\" class=\"btn btn-primary\" (click)=\"ok()\">{{ 'designer.misc.ok' | translate }}</button>\n</div>\n","import { HttpClient } from '@angular/common/http';\nimport { Component, HostListener, OnInit } from '@angular/core';\nimport { TranslateService } from '@ngx-translate/core';\nimport { BsModalRef } from 'ngx-bootstrap/modal';\nimport { DropzoneConfigInterface } from 'ngx-dropzone-wrapper';\nimport { ToastrService } from 'ngx-toastr';\nimport { Subject } from 'rxjs';\nimport { map } from 'rxjs/operators';\nimport { Composition } from '../../models/composition';\nimport { ConfigService } from '../../services/config.service';\nimport { ProjectService } from '../../services/project.service';\nimport { TimelineService } from '../../services/timeline.service';\nimport { WarningDialogService } from '../../services/warning-dialog.service';\n\n@Component({\n selector: 'lib-app-composition-settings',\n templateUrl: './composition-settings.component.html',\n styleUrls: ['./composition-settings.component.css'],\n})\nexport class CompositionSettingsComponent implements OnInit {\n composition: Composition;\n existingCompositionNames: string[] = [];\n\n public onClose: Subject<number> = new Subject();\n\n public dropzoneConfig: DropzoneConfigInterface;\n public uploadMessage: string;\n\n public existingFiles: string[] = [];\n public filteredExistingFiles: string[] = [];\n\n public uploading = false;\n\n constructor(\n public bsModalRef: BsModalRef,\n private timelineService: TimelineService,\n public configService: ConfigService,\n private translateService: TranslateService,\n private http: HttpClient,\n private warningDialogService: WarningDialogService,\n private toastrService: ToastrService,\n private projectService: ProjectService\n ) {}\n\n ngOnInit() {\n const projectId = this.projectService.project.id ? this.projectService.project.id : '';\n this.dropzoneConfig = {\n url: this.configService.restUrl + 'file/upload?compositionUuid=' + this.composition.uuid + '&projectId=' + projectId,\n addRemoveLinks: false,\n maxFilesize: 100 /* 100 MB */,\n acceptedFiles: 'audio/*',\n timeout: 0,\n parallelUploads: 1,\n previewTemplate: `\n <div class=\"dz-preview dz-file-preview\">\n <!-- The attachment details -->\n <div class=\"dz-details\" style=\"text-align: left\">\n <i class=\"fa fa-file-o\"></i> <span data-dz-name></span> <small>\n <span class=\"label label-default file-size\" data-dz-size></span></small>\n </div>\n\n <!--div class=\"mt-5\">\n <span data-dz-errormessage></span>\n </div-->\n\n <div class=\"progress mt-4 mb-1\" style=\"height: 10px\">\n <div class=\"progress-bar progress-bar-striped progress-bar-animated\"\n role=\"progressbar\" style=\"width:0%;\" data-dz-uploadprogress>\n </div>\n </div>\n </div>\n `,\n };\n\n this.translateService\n .get('designer.misc.dropzone-message')\n .pipe(\n map((result) => {\n this.uploadMessage = '<h3 class=\"mb-0\"><i class=\"fa fa-cloud-upload\"></i></h3>' + result;\n })\n )\n .subscribe();\n\n this.loadFiles();\n\n if (this.timelineService.externalCompositionsAvailable) {\n this.timelineService.getExternalCompositionNames().subscribe((compositionNames) => {\n this.existingCompositionNames = compositionNames;\n });\n }\n }\n\n ok() {\n this.onClose.next(1);\n this.bsModalRef.hide();\n }\n\n cancel() {\n this.onClose.next(2);\n this.bsModalRef.hide();\n }\n\n @HostListener('document:keydown.enter', ['$event'])\n handleKeyboardEvent(event: any) {\n this.ok();\n }\n\n private getNameFromFile(data: any): string {\n return data.name;\n }\n\n private loadFiles() {\n if (!this.configService.enableMediaLibrary) {\n return;\n }\n\n this.http\n .get('file/list')\n .pipe(\n map((response: object[]) => {\n this.existingFiles = [];\n\n for (const file of response) {\n // only load audio files\n if ((file as any).audioFile) {\n this.existingFiles.push(this.getNameFromFile((file as any).audioFile));\n }\n }\n\n this.filterExistingFiles();\n })\n )\n .subscribe();\n }\n\n public onUploadError(args: any) {\n const msg = 'designer.misc.toast-upload-error';\n const title = 'designer.misc.toast-upload-error-title';\n this.translateService.get([msg, title]).subscribe((result) => {\n this.toastrService.error(result[msg] + args[1], result[title], { timeOut: 0, extendedTimeOut: 0, enableHtml: true });\n // Hide the preview element\n args[0].previewElement.hidden = true;\n });\n }\n\n public onUploadSuccess(args: any) {\n this.loadFiles();\n\n // allow to guess the bpm of the newly uploaded file\n this.composition.tempoGuessed = false;\n\n // hide the preview element\n args[0].previewElement.hidden = true;\n\n // select this file\n this.composition.audioFileName = args[0].name;\n\n if (this.configService.enableMediaLibrary) {\n // the file has been uploaded to the media library\n this.composition.audioFileInLibrary = true;\n }\n }\n\n public onQueueComplete(args: any) {\n this.uploading = false;\n }\n\n public onAddedFile(args: any) {\n this.uploading = true;\n }\n\n // Filter the existing files\n filterExistingFiles(searchValue?: string) {\n if (!searchValue) {\n this.filteredExistingFiles = this.existingFiles;\n return;\n }\n\n this.filteredExistingFiles = [];\n\n for (const file of this.existingFiles) {\n if (file.toLowerCase().indexOf(searchValue.toLowerCase()) !== -1) {\n this.filteredExistingFiles.push(file);\n }\n }\n }\n\n selectExistingFile(existingFile: string) {\n this.composition.audioFileName = existingFile;\n\n // the file has been selected from the media library\n this.composition.audioFileInLibrary = true;\n }\n\n deleteFile(existingFile: string) {\n this.warningDialogService\n .show('designer.timeline.warning-delete-file')\n .pipe(\n map((result) => {\n if (result) {\n this.http\n .post('file/delete?name=' + existingFile + '&type=AUDIO', undefined)\n .pipe(\n map((response: Response) => {\n this.loadFiles();\n })\n )\n .subscribe();\n }\n })\n )\n .subscribe();\n }\n}\n","<div class=\"modal-header\">\n <h4 class=\"modal-title pull-left\">{{ 'designer.timeline.grid' | translate }}</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.timeline.grid-type' | translate }}</label>\n <div class=\"col-lg-8\">\n <select class=\"custom-select\" [ngModel]=\"gridType\" (ngModelChange)=\"gridType = $event\">\n <option value=\"time\">{{ 'designer.timeline.grid-type-time-based' | translate }}</option>\n <option value=\"musical\">{{ 'designer.timeline.grid-type-musical' | translate }}</option>\n </select>\n </div>\n </div>\n\n <div *ngIf=\"gridType == 'musical'\" class=\"form-group row\">\n <label class=\"col-lg-4 col-form-label\">{{ 'designer.timeline.beats-per-minute' | translate }}</label>\n <div class=\"col-lg-8\">\n <input type=\"text\" class=\"form-control\" [ngModel]=\"beatsPerMinute\" (ngModelChange)=\"beatsPerMinute = $event\" />\n </div>\n </div>\n\n <div *ngIf=\"gridType == 'musical'\" class=\"form-group row\">\n <label class=\"col-lg-4 col-form-label\">{{ 'designer.timeline.time-signature' | translate }}</label>\n <div class=\"col-lg-8\">\n <input\n type=\"text\"\n class=\"form-control\"\n [ngModel]=\"timeSignatureUpper\"\n (ngModelChange)=\"timeSignatureUpper = $event\"\n style=\"float: left; width: 40px\"\n />\n <div class=\"d-flex px-2 h-100\" style=\"float: left\">\n <div class=\"m-auto\">/</div>\n </div>\n <input\n type=\"text\"\n class=\"form-control\"\n [ngModel]=\"timeSignatureLower\"\n (ngModelChange)=\"timeSignatureLower = $event\"\n style=\"width: 40px\"\n />\n </div>\n </div>\n\n <div *ngIf=\"gridType == 'musical'\" class=\"form-group row\">\n <label class=\"col-lg-4 col-form-label\">{{ 'designer.timeline.grid-resolution' | translate }}</label>\n <div class=\"col-lg-8\">\n <select class=\"custom-select\" [ngModel]=\"gridResolution\" (ngModelChange)=\"gridResolution = $event\">\n <option value=\"1\">1/1</option>\n <option value=\"2\">1/2</option>\n <option value=\"4\">1/4</option>\n <option value=\"8\">1/8</option>\n <option value=\"16\">1/16</option>\n <option value=\"32\">1/32</option>\n <option value=\"64\">1/64</option>\n </select>\n </div>\n </div>\n\n <div *ngIf=\"gridType == 'musical'\" class=\"form-group row\">\n <label class=\"col-lg-4 col-form-label\">{{ 'designer.timeline.grid-offset' | translate }}</label>\n <div class=\"col-lg-8\">\n <input type=\"text\" class=\"form-control\" [ngModel]=\"gridOffsetMillis\" (ngModelChange)=\"gridOffsetMillis = $event\" />\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\">\n <div class=\"form-check\">\n <input type=\"checkbox\" [ngModel]=\"snapToGrid\" (ngModelChange)=\"snapToGrid = $event\" class=\"form-check-input\" id=\"snapToGrid\" />\n\n <label class=\"form-check-label\" for=\"snapToGrid\">\n {{ 'designer.timeline.snap-to-grid' | 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","import { Component, HostListener, OnInit } from '@angular/core';\nimport { BsModalRef } from 'ngx-bootstrap/modal';\nimport { TimelineService } from '../../services/timeline.service';\n\n@Component({\n selector: 'lib-app-timeline-grid',\n templateUrl: './timeline-grid.component.html',\n styleUrls: ['./timeline-grid.component.css'],\n})\nexport class TimelineGridComponent implements OnInit {\n public gridType: string;\n public beatsPerMinute: number;\n public timeSignatureUpper: number;\n public timeSignatureLower: number;\n public snapToGrid: boolean;\n public gridOffsetMillis: number;\n public gridResolution: number;\n\n constructor(public bsModalRef: BsModalRef, public timelineService: TimelineService) {\n this.gridType = timelineService.selectedComposition.gridType;\n this.beatsPerMinute = timelineService.selectedComposition.beatsPerMinute;\n this.timeSignatureUpper = timelineService.selectedComposition.timeSignatureUpper;\n this.timeSignatureLower = timelineService.selectedComposition.timeSignatureLower;\n this.snapToGrid = timelineService.selectedComposition.snapToGrid;\n this.gridOffsetMillis = timelineService.selectedComposition.gridOffsetMillis;\n this.gridResolution = timelineService.selectedComposition.gridResolution;\n }\n\n ngOnInit() {}\n\n ok() {\n this.timelineService.selectedComposition.gridType = this.gridType;\n this.timelineService.selectedComposition.beatsPerMinute = this.beatsPerMinute;\n this.timelineService.selectedComposition.timeSignatureUpper = this.timeSignatureUpper;\n this.timelineService.selectedComposition.timeSignatureLower = this.timeSignatureLower;\n this.timelineService.selectedComposition.snapToGrid = this.snapToGrid;\n this.timelineService.selectedComposition.gridOffsetMillis = this.gridOffsetMillis;\n this.timelineService.selectedComposition.gridResolution = this.gridResolution;\n\n this.timelineService.updateGrid();\n this.bsModalRef.hide();\n }\n\n cancel() {\n this.bsModalRef.hide();\n }\n\n @HostListener('document:keydown.enter', ['$event'])\n handleKeyboardEvent(event: any) {\n this.ok();\n }\n}\n","<div class=\"card border-secondary h-100\" [class.card-intro-active]=\"introService.showStep('timeline')\">\n <div class=\"card-body h-100 d-flex\" style=\"flex-flow: column; overflow: unset\">\n <div class=\"d-flex pb-3\">\n <div class=\"btn-group mr-3 my-auto\" role=\"group\" style=\"float: left\">\n <a href=\"#\" class=\"btn btn-primary m-0 p-1 mr-3\" (click)=\"addComposition(); (false)\"\n ><i class=\"fa fa-plus-circle fa-fw\" aria-hidden=\"true\"></i\n ></a>\n\n <select\n *ngIf=\"projectService.project.compositions.length > 0\"\n class=\"mr-3\"\n [ngModel]=\"timelineService.selectedCompositionIndex\"\n (ngModelChange)=\"selectComposition($event)\"\n style=\"width: 150px; height: 30px\"\n >\n <option *ngFor=\"let composition of projectService.project.compositions; let i = index\" [value]=\"i\">\n {{ composition.name }}\n </option>\n </select>\n\n <div *ngIf=\"timelineService.selectedComposition\" class=\"d-flex\">\n <a href=\"#\" class=\"btn btn-primary m-0 p-1\" (click)=\"rewind(); (false)\"\n ><i class=\"fa fa-step-backward fa-fw\" aria-hidden=\"true\"></i\n ></a>\n <a *ngIf=\"timelineService.playState == 'paused'\" href=\"#\" class=\"btn btn-primary m-0 p-1\" (click)=\"play(); (false)\"\n ><i class=\"fa fa-play fa-fw\" aria-hidden=\"true\"></i\n ></a>\n <a *ngIf=\"timelineService.playState == 'playing'\" href=\"#\" class=\"btn btn-primary m-0 p-1\" (click)=\"pause(); (false)\"\n ><i class=\"fa fa-pause fa-fw\" aria-hidden=\"true\"></i\n ></a>\n </div>\n </div>\n\n <div *ngIf=\"timelineService.selectedComposition\" class=\"d-flex w-100\">\n <div *ngIf=\"timelineService.duration\" class=\"my-auto mr-3\">\n <span style=\"width: 78px; text-align: left; display: inline-block; margin-left: 5px\">{{ timelineService.currentTime }}</span>\n <span style=\"display: inline-block\"></span>- {{ timelineService.duration }}\n </div>\n\n <div class=\"my-auto mr-3 ml-auto\" style=\"float: left\">\n <i (click)=\"timelineService.applyZoom(timelineService.zoom - 20)\" class=\"fa fa-search-minus mr-3\" aria-hidden=\"true\"></i>\n <mv-slider\n style=\"width: 80px\"\n [tooltip]=\"'hide'\"\n [value]=\"timelineService.zoom\"\n [min]=\"0\"\n [max]=\"200\"\n [step]=\"20\"\n (change)=\"timelineService.applyZoom($event.newValue)\"\n ></mv-slider>\n <i (click)=\"timelineService.applyZoom(timelineService.zoom + 20)\" class=\"fa fa-search-plus ml-3\" aria-hidden=\"true\"></i>\n </div>\n\n <div class=\"my-auto mr-3\">\n <input\n type=\"text\"\n [ngModel]=\"timelineService.selectedPlaybackRegion?.startMillis\"\n (ngModelChange)=\"setRegionStartMillis($event)\"\n />\n - <input type=\"text\" [ngModel]=\"timelineService.selectedPlaybackRegion?.endMillis\" (ngModelChange)=\"setRegionEndMillis($event)\" />\n </div>\n\n <a\n href=\"#\"\n class=\"btn btn-secondary m-0 py-1 mr-3\"\n (click)=\"openGridSettings(); (false)\"\n popover=\"{{ 'designer.timeline.grid' | translate }}\"\n container=\"body\"\n placement=\"top\"\n triggers=\"mouseenter:mouseleave\"\n ><i class=\"fa fa-th\" aria-hidden=\"true\"></i\n ></a>\n\n <a\n href=\"#\"\n class=\"btn btn-secondary m-0 py-1 mr-3\"\n (click)=\"removeRegion(); (false)\"\n popover=\"{{ 'designer.timeline.remove-region' | translate }}\"\n container=\"body\"\n placement=\"top\"\n triggers=\"mouseenter:mouseleave\"\n ><i class=\"fa fa-minus-circle\" aria-hidden=\"true\"></i\n ></a>\n\n <a\n href=\"#\"\n class=\"btn btn-secondary m-0 py-1 mr-3\"\n (click)=\"addRegion(); (false)\"\n popover=\"{{ 'designer.timeline.add-region' | translate }}\"\n container=\"body\"\n placement=\"top\"\n triggers=\"mouseenter:mouseleave\"\n ><i class=\"fa fa-plus-circle\" aria-hidden=\"true\"></i\n ></a>\n\n <a\n href=\"#\"\n class=\"btn btn-secondary m-0 py-1 mr-3\"\n (click)=\"removeComposition(); (false)\"\n popover=\"{{ 'designer.timeline.remove-composition' | translate }}\"\n container=\"body\"\n placement=\"top\"\n triggers=\"mouseenter:mouseleave\"\n ><i class=\"fa fa-trash-o\" aria-hidden=\"true\"></i\n ></a>\n\n <a\n href=\"#\"\n class=\"btn btn-secondary m-0 py-1\"\n (click)=\"compositionSettings(); (false)\"\n popover=\"{{ 'designer.timeline.composition-settings' | translate }}\"\n container=\"body\"\n placement=\"left\"\n triggers=\"mouseenter:mouseleave\"\n ><i class=\"fa fa-cog\" aria-hidden=\"true\"></i\n ></a>\n </div>\n </div>\n\n <div *ngIf=\"timelineService.loadingAudioFile\" class=\"w-100 d-flex\">\n <i class=\"fa fa-circle-o-notch fa-spin m-auto\" style=\"margin-top: -30px\"></i>\n </div>\n\n <div *ngIf=\"timelineService.selectedComposition\">\n <div id=\"waveform-timeline\"></div>\n </div>\n <div *ngIf=\"timelineService.selectedComposition\" #waveWrapper class=\"h-100\" style=\"flex: 2; position: relative\">\n <div #waveElement id=\"waveform\"></div>\n </div>\n\n <div *ngIf=\"projectService.project.compositions.length == 0\" class=\"w-100 d-flex\">\n <a href=\"#\" class=\"m-auto\" (click)=\"addComposition(); (false)\"\n ><i class=\"fa fa-plus-circle fa-fw\" aria-hidden=\"true\"></i> {{ 'designer.timeline.no-compositions' | translate }}</a\n >\n </div>\n </div>\n</div>\n","import { HttpClient } from '@angular/common/http';\nimport { AfterViewInit, ChangeDetectorRef, Component, ElementRef, HostListener, OnInit, ViewChild } from '@angular/core';\nimport { BsModalService } from 'ngx-bootstrap/modal';\nimport { map } from 'rxjs/operators';\nimport { Composition } from '../models/composition';\nimport { ConfigService } from '../services/config.service';\nimport { HotkeyTargetExcludeService } from '../services/hotkey-target-exclude.service';\nimport { IntroService } from '../services/intro.service';\nimport { PresetService } from '../services/preset.service';\nimport { ProjectService } from '../services/project.service';\nimport { TimelineService } from '../services/timeline.service';\nimport { UuidService } from '../services/uuid.service';\nimport { WarningDialogService } from '../services/warning-dialog.service';\nimport { CompositionSettingsComponent } from './composition-settings/composition-settings.component';\nimport { TimelineGridComponent } from './timeline-grid/timeline-grid.component';\n\n@Component({\n selector: 'lib-app-timeline',\n templateUrl: './timeline.component.html',\n styleUrls: ['./timeline.component.css'],\n})\nexport class TimelineComponent implements OnInit, AfterViewInit {\n @ViewChild('waveWrapper')\n waveWrapper: ElementRef;\n\n @ViewChild('waveElement')\n waveElement: ElementRef;\n\n private lastHeight: number;\n private lastWidth: number;\n\n constructor(\n public timelineService: TimelineService,\n private changeDetectorRef: ChangeDetectorRef,\n private modalService: BsModalService,\n private uuidService: UuidService,\n public projectService: ProjectService,\n private hotkeyTargetExcludeService: HotkeyTargetExcludeService,\n private warningDialogService: WarningDialogService,\n private http: HttpClient,\n private configService: ConfigService,\n private presetService: PresetService,\n public introService: IntroService\n ) {\n this.timelineService.waveSurferReady.subscribe(() => {\n this.onResize();\n });\n this.timelineService.detectChanges.subscribe(() => {\n this.changeDetectorRef.detectChanges();\n });\n }\n\n ngOnInit() {}\n\n ngAfterViewInit() {}\n\n @HostListener('window:resize')\n public onResize() {\n if (!this.waveElement) {\n return;\n }\n\n // Hide wavesurfer to calculate the height, because it will grow infinitely\n // otherwise\n this.waveElement.nativeElement.style.display = 'none';\n const height = this.waveWrapper.nativeElement.clientHeight;\n this.waveElement.nativeElement.style.display = 'block';\n\n const width = this.waveWrapper.nativeElement.clientWidth;\n\n if (!this.lastHeight || this.lastHeight !== height || !this.lastWidth || this.lastWidth !== width) {\n // Set height and redraw\n if (this.timelineService.waveSurfer) {\n this.timelineService.waveSurfer.setHeight(height);\n }\n\n this.lastHeight = height;\n this.lastWidth = width;\n }\n }\n\n play() {\n this.timelineService.playState = 'playing';\n this.presetService.previewLive(\n this.timelineService.selectedComposition.name,\n Math.round(this.timelineService.waveSurfer.getCurrentTime() * 1000)\n );\n this.timelineService.waveSurfer.play();\n }\n\n pause() {\n this.timelineService.playState = 'paused';\n this.presetService.stopPreviewPlay();\n this.timelineService.waveSurfer.pause();\n }\n\n rewind() {\n this.timelineService.playState = 'paused';\n this.pause();\n this.timelineService.waveSurfer.seekTo(0);\n }\n\n addRegion(waveSurferRegion?: any) {\n this.timelineService.addRegion(waveSurferRegion);\n }\n\n removeRegion() {\n this.timelineService.removeRegion();\n }\n\n openGridSettings() {\n const bsModalRef = this.modalService.show(TimelineGridComponent, { keyboard: true, ignoreBackdropClick: false, class: '' });\n }\n\n private afterDeleteFile() {\n this.timelineService.deleteSelectedComposition();\n }\n\n removeComposition() {\n this.warningDialogService\n .show('designer.timeline.warning-delete-composition')\n .pipe(\n map((result) => {\n if (result) {\n if (this.configService.enableMediaLibrary) {\n // don't delete the file from the library\n this.afterDeleteFile();\n } else {\n // the composition uuid and extension is used as the file name\n this.http\n .post('file/delete?compositionUuid=' + this.timelineService.selectedComposition.uuid, undefined)\n .pipe(\n map((response: Response) => {\n this.afterDeleteFile();\n })\n )\n .subscribe();\n }\n }\n })\n )\n .subscribe();\n }\n\n private openCompositionSettings(compositionIndex?: number, newComposition?: Composition) {\n const editComposition: Composition =\n newComposition || JSON.parse(JSON.stringify(this.projectService.project.compositions[compositionIndex]));\n\n const bsModalRef = this.modalService.show(CompositionSettingsComponent, {\n keyboard: false,\n ignoreBackdropClick: true,\n class: '',\n initialState: { composition: editComposition },\n });\n\n (bsModalRef.content as CompositionSettingsComponent).onClose.subscribe((result) => {\n if (result === 1) {\n // OK has been pressed -> save\n if (newComposition) {\n this.projectService.project.compositions.push(editComposition);\n this.timelineService.selectedCompositionIndex = this.projectService.project.compositions.length - 1;\n\n // create the composition, if externally necessary\n if (this.timelineService.externalCompositionsAvailable) {\n // TODO check, if this composition already exists externally and create it, if not\n // maybe not needed and even confusing?\n }\n } else {\n this.projectService.project.compositions[compositionIndex] = editComposition;\n }\n\n this.selectComposition(this.timelineService.selectedCompositionIndex);\n }\n });\n }\n\n compositionSettings() {\n this.openCompositionSettings(this.timelineService.selectedCompositionIndex);\n }\n\n addComposition() {\n // create a new composition\n const composition = new Composition();\n composition.uuid = this.uuidService.getUuid();\n composition.name = 'New Composition';\n\n this.openCompositionSettings(undefined, composition);\n }\n\n selectComposition(index: number) {\n this.timelineService.selectCompositionIndex(index);\n }\n\n @HostListener('document:keydown', ['$event'])\n handleKeyboardEvent(event: KeyboardEvent) {\n if (this.hotkeyTargetExcludeService.exclude(event)) {\n return;\n }\n\n if (!this.timelineService.selectedComposition) {\n return;\n }\n\n if (event.key === ' ') {\n if (this.timelineService.playState === 'paused') {\n this.play();\n } else {\n this.pause();\n }\n\n // prevent checkboxes being toggled, if in focus e.g.\n event.stopPropagation();\n event.preventDefault();\n }\n }\n\n setRegionStartMillis(value: any) {\n if (!this.timelineService.selectedPlaybackRegion) {\n return;\n }\n\n if (isNaN(value) || value < 0) {\n return;\n }\n\n this.timelineService.selectedPlaybackRegion.startMillis = +value;\n this.timelineService.updateSelectedRegion();\n }\n\n setRegionEndMillis(value: any) {\n if (!this.timelineService.selectedPlaybackRegion) {\n return;\n }\n\n if (isNaN(value) || value < 0) {\n return;\n }\n\n this.timelineService.selectedPlaybackRegion.endMillis = +value;\n this.timelineService.updateSelectedRegion();\n }\n}\n","import { Component, HostListener, OnInit } from '@angular/core';\nimport { BsModalRef } from 'ngx-bootstrap/modal';\nimport { Scene } from '../../models/scene';\n\n@Component({\n selector: 'lib-scene-settings',\n templateUrl: './scene-settings.component.html',\n styleUrls: ['./scene-settings.component.css'],\n})\nexport class SceneSettingsComponent implements OnInit {\n scene: Scene;\n\n name: string;\n fadeInMillis: number;\n fadeOutMillis: number;\n fadeInPre: boolean;\n fadeOutPost: boolean;\n\n constructor(public bsModalRef: BsModalRef) {}\n\n ngOnInit() {\n this.name = this.scene.name;\n this.fadeInMillis = this.scene.fadeInMillis;\n this.fadeOutMillis = this.scene.fadeOutMillis;\n this.fadeInPre = this.scene.fadeInPre;\n this.fadeOutPost = this.scene.fadeOutPost;\n }\n\n ok() {\n this.scene.name = this.name;\n\n if (!isNaN(this.fadeInMillis) && this.fadeInMillis >= 0) {\n this.scene.fadeInMillis = +this.fadeInMillis;\n }\n if (!isNaN(this.fadeOutMillis) && this.fadeOutMillis >= 0) {\n this.scene.fadeOutMillis = +this.fadeOutMillis;\n }\n\n this.scene.fadeInPre = this.fadeInPre;\n this.scene.fadeOutPost = this.fadeOutPost;\n\n this.bsModalRef.hide();\n }\n\n cancel() {\n this.bsModalRef.hide();\n }\n\n @HostListener('document:keydown.enter', ['$event'])\n handleKeyboardEvent(event: any) {\n this.ok();\n }\n}\n","<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.scene.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.scene.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.scene.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.scene.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","<div class=\"card border-secondary panel h-100\" [class.card-intro-active]=\"introService.showStep('scenes')\">\n <div class=\"card-header d-flex\">\n <div>\n {{ 'designer.scene.title' | translate }}\n </div>\n <div class=\"ml-auto\">\n <a\n href=\"#\"\n class=\"d-none d-md-inline-block btn btn-secondary m-0 p-0\"\n [class.text-primary]=\"sceneService.multipleSelection == true\"\n (click)=\"sceneService.multipleSelection = !sceneService.multipleSelection; (false)\"\n ><i class=\"fa fa-object-group fa-fw\" aria-hidden=\"true\"></i\n ></a>\n <a href=\"#\" class=\"d-none d-md-inline-block btn btn-secondary m-0 p-0\" (click)=\"removeScene(); (false)\"\n ><i class=\"fa fa-minus-circle fa-fw\" aria-hidden=\"true\"></i\n ></a>\n <a href=\"#\" class=\"d-none d-md-inline-block btn btn-secondary m-0 p-0\" (click)=\"sceneService.addScene(); (false)\"\n ><i class=\"fa fa-plus-circle fa-fw\" aria-hidden=\"true\"></i\n ></a>\n </div>\n </div>\n <div class=\"card-body border-secondary p-0\">\n <!-- List of scenes -->\n <div class=\"list-group\" [sortablejs]=\"projectService.project.scenes\">\n <div\n *ngFor=\"let scene of projectService.project.scenes; let i = index\"\n class=\"list-group-item\"\n [class.active-light]=\"projectService.project.previewPreset && sceneService.sceneIsSelected(scene)\"\n [class.active]=\"!projectService.project.previewPreset && sceneService.sceneIsSelected(scene)\"\n >\n <div class=\"row d-flex\" (click)=\"selectScene($event, i)\" style=\"cursor: pointer\">\n <div class=\"d-none d-md-block 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=\"my-auto\">\n {{ scene.name }}\n </div>\n <div class=\"my-auto ml-auto mr-2 d-flex\">\n <svg class=\"my-auto\" height=\"20\" width=\"20\">\n <circle cx=\"10\" cy=\"10\" r=\"9\" stroke=\"white\" stroke-width=\"1\" [attr.fill]=\"scene.color\" />\n </svg>\n </div>\n <div class=\"d-none d-md-flex my-auto mr-2\">\n <button type=\"button\" class=\"btn btn-secondary btn-sm py-0 px-1\" (click)=\"openSettings(scene); (false)\">...</button>\n </div>\n </div>\n </div>\n </div>\n </div>\n</div>\n","import { Component, OnInit } from '@angular/core';\nimport { BsModalService } from 'ngx-bootstrap/modal';\nimport { Scene } from '../models/scene';\nimport { IntroService } from '../services/intro.service';\nimport { PresetService } from '../services/preset.service';\nimport { ProjectService } from '../services/project.service';\nimport { SceneService } from '../services/scene.service';\nimport { SceneSettingsComponent } from './scene-settings/scene-settings.component';\n\n@Component({\n selector: 'lib-app-scene',\n templateUrl: './scene.component.html',\n styleUrls: ['./scene.component.css'],\n})\nexport class SceneComponent implements OnInit {\n constructor(\n public sceneService: SceneService,\n public presetService: PresetService,\n public projectService: ProjectService,\n private modalService: BsModalService,\n public introService: IntroService\n ) {}\n\n ngOnInit() {}\n\n selectScene(event: any, index: number) {\n this.sceneService.selectScene(index);\n }\n\n removeScene() {\n if (this.sceneService.selectedScenes.length === 0) {\n return;\n }\n\n this.sceneService.removeScene(this.sceneService.selectedScenes[0]);\n }\n\n openSettings(scene: Scene) {\n const bsModalRef = this.modalService.show(SceneSettingsComponent, {\n keyboard: true,\n ignoreBackdropClick: false,\n class: '',\n initialState: { scene },\n });\n }\n}\n","<div class=\"card border-secondary h-100 panel\" [class.card-intro-active]=\"introService.showStep('fixtures')\">\n <div class=\"card-header d-flex\">\n <div>Fixtures</div>\n <div class=\"ml-auto\">\n <a href=\"#\" class=\"btn btn-secondary m-0, p-0\" (click)=\"selectNone(); (false)\"\n ><i class=\"fa fa-square-o fa-fw\" aria-hidden=\"true\"></i\n ></a>\n <a href=\"#\" class=\"btn btn-secondary m-0, p-0\" (click)=\"selectAll(); (false)\"\n ><i class=\"fa fa-check-square-o fa-fw\" aria-hidden=\"true\"></i\n ></a>\n <a href=\"#\" class=\"btn btn-secondary m-0, p-0\" (click)=\"openFixturePool(); (false)\"\n ><i class=\"fa fa-cog 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 fixtures -->\n <div *ngIf=\"presetService.selectedPreset\" class=\"list-group\" [sortablejs]=\"projectService.project.fixtures\">\n <div\n class=\"list-group-item\"\n *ngFor=\"let item of projectService.project.fixtures\"\n [class.inactive-list-item]=\"!fixtureIsSelected(item)\"\n >\n <div class=\"row d-flex\" (click)=\"selectFixture($event, item)\" 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 type=\"checkbox\" class=\"form-check-input\" id=\"active\" [ngModel]=\"fixtureIsSelected(item)\" />\n </div>\n <div>\n <span class=\"icon-{{ fixtureService.getFixtureIconClass(fixtureService.getProfileByUuid(item.profileUuid)) }} mr-1\"></span>\n {{ item.name }}\n </div>\n </div>\n </div>\n </div>\n\n <div *ngIf=\"projectService.project.fixtures.length == 0\" class=\"w-100 h-100 d-flex p-3 text-center\">\n <a href=\"#\" class=\"m-auto\" (click)=\"openFixturePool(); (false)\"\n ><i class=\"fa fa-plus-circle fa-fw\" aria-hidden=\"true\"></i> {{ 'designer.fixture.no-fixtures' | translate }}</a\n >\n </div>\n </div>\n</div>\n","import { Component, OnInit } from '@angular/core';\nimport { Fixture } from '../models/fixture';\nimport { FixturePoolService } from '../services/fixture-pool.service';\nimport { FixtureService } from '../services/fixture.service';\nimport { IntroService } from '../services/intro.service';\nimport { PresetService } from '../services/preset.service';\nimport { ProjectService } from '../services/project.service';\n\n@Component({\n selector: 'lib-app-fixture',\n templateUrl: './fixture.component.html',\n styleUrls: ['./fixture.component.css'],\n})\nexport class FixtureComponent implements OnInit {\n constructor(\n public projectService: ProjectService,\n public presetService: PresetService,\n private fixturePoolService: FixturePoolService,\n public fixtureService: FixtureService,\n public introService: IntroService\n ) {}\n\n ngOnInit() {}\n\n fixtureIsSelected(fixture: Fixture): boolean {\n if (this.fixtureService.settingsSelection) {\n return this.fixtureService.settingsFixtureIsSelected(fixture);\n } else {\n return this.presetService.fixtureIsSelected(fixture);\n }\n }\n\n selectFixture(event: any, fixture: Fixture) {\n if (this.fixtureService.settingsSelection) {\n // select fixtures for the settings\n this.fixtureService.switchSettingsFixtureSelection(fixture);\n this.presetService.fixtureSelectionSettingsChanged.next();\n } else {\n // select fixtures for the current preset\n this.presetService.switchFixtureSelection(fixture);\n this.presetService.fixtureSelectionChanged.next();\n this.presetService.previewLive();\n }\n }\n\n selectAll() {\n this.presetService.selectAllFixtures();\n this.presetService.fixtureSelectionChanged.next();\n }\n\n selectNone() {\n this.presetService.selectNoFixtures();\n this.presetService.fixtureSelectionChanged.next();\n }\n\n openFixturePool() {\n this.fixturePoolService.open();\n }\n}\n","import { ChangeDetectorRef, Component, OnDestroy, OnInit } from '@angular/core';\nimport { Subscription } from 'rxjs';\nimport { FixtureCapabilityColor, FixtureCapabilityType } from '../../../models/fixture-capability';\nimport { FixtureCapabilityValue } from '../../../models/fixture-capability-value';\nimport { FixtureService } from '../../../services/fixture.service';\nimport { PresetService } from '../../../services/preset.service';\n\ndeclare var iro: any;\n\n@Component({\n selector: 'lib-app-fixture-capability-color',\n templateUrl: './fixture-capability-color.component.html',\n styleUrls: ['./fixture-capability-color.component.css'],\n})\nexport class FixtureCapabilityColorComponent implements OnInit, OnDestroy {\n color = '#ffffff';\n colorPicker: any;\n active = false;\n private colorPickerMounted = false;\n\n // avoid internal updating events\n private updatingColor = false;\n\n private updateSubscription: Subscription;\n\n constructor(private presetService: PresetService, private fixtureService: FixtureService, private changeDetectorRef: ChangeDetectorRef) {\n this.updateSubscription = this.presetService.previewSelectionChanged.subscribe(() => {\n this.update();\n this.changeDetectorRef.detectChanges();\n });\n this.update();\n }\n\n private update() {\n let red: number;\n let green: number;\n let blue: number;\n let capabilityValue: FixtureCapabilityValue;\n capabilityValue = this.presetService.getCapabilityValue(\n this.presetService.selectedPreset,\n FixtureCapabilityType.ColorIntensity,\n FixtureCapabilityColor.Red\n );\n if (capabilityValue) {\n red = 255 * capabilityValue.valuePercentage;\n }\n capabilityValue = this.presetService.getCapabilityValue(\n this.presetService.selectedPreset,\n FixtureCapabilityType.ColorIntensity,\n FixtureCapabilityColor.Green\n );\n if (capabilityValue) {\n green = 255 * capabilityValue.valuePercentage;\n }\n capabilityValue = this.presetService.getCapabilityValue(\n this.presetService.selectedPreset,\n FixtureCapabilityType.ColorIntensity,\n FixtureCapabilityColor.Blue\n );\n if (capabilityValue) {\n blue = 255 * capabilityValue.valuePercentage;\n }\n if (red !== undefined && green !== undefined && blue !== undefined) {\n this.active = true;\n } else {\n this.active = false;\n red = 255;\n green = 255;\n blue = 255;\n }\n this.color = this.fixtureService.rgbToHex(red, green, blue);\n this.setPickerColor(red, green, blue);\n }\n\n private setPickerColor(red: number, green: number, blue: number) {\n this.updatingColor = true;\n if (this.colorPicker) {\n this.colorPicker.color.rgb = { r: red, g: green, b: blue };\n }\n this.updatingColor = false;\n }\n\n ngOnDestroy() {\n this.updateSubscription.unsubscribe();\n }\n\n ngOnInit() {\n this.colorPicker = new iro.ColorPicker('#color-picker-container', {\n width: 180,\n color: this.color,\n borderWidth: 1,\n borderColor: '#ffffff',\n sliderMargin: 20,\n });\n\n this.colorPicker.on('color:change', this.changeColor.bind(this));\n\n // mounted may be called, before this callback has been added. use input:start therefore\n this.colorPicker.on('input:start', this.mount.bind(this));\n }\n\n mount() {\n this.colorPickerMounted = true;\n }\n\n private updateFixtureColor(color: any) {\n if (this.presetService.selectedPreset) {\n if (color) {\n this.presetService.setCapabilityValue(\n this.presetService.selectedPreset,\n FixtureCapabilityType.ColorIntensity,\n color.rgb.r / 255,\n undefined,\n FixtureCapabilityColor.Red\n );\n this.presetService.setCapabilityValue(\n this.presetService.selectedPreset,\n FixtureCapabilityType.ColorIntensity,\n color.rgb.g / 255,\n undefined,\n FixtureCapabilityColor.Green\n );\n this.presetService.setCapabilityValue(\n this.presetService.selectedPreset,\n FixtureCapabilityType.ColorIntensity,\n color.rgb.b / 255,\n undefined,\n FixtureCapabilityColor.Blue\n );\n } else {\n this.presetService.deleteCapabilityValue(\n this.presetService.selectedPreset,\n FixtureCapabilityType.ColorIntensity,\n FixtureCapabilityColor.Red\n );\n this.presetService.deleteCapabilityValue(\n this.presetService.selectedPreset,\n FixtureCapabilityType.ColorIntensity,\n FixtureCapabilityColor.Green\n );\n this.presetService.deleteCapabilityValue(\n this.presetService.selectedPreset,\n FixtureCapabilityType.ColorIntensity,\n FixtureCapabilityColor.Blue\n );\n }\n this.changeDetectorRef.detectChanges();\n this.presetService.fixtureColorChanged.next();\n this.presetService.previewLive();\n }\n }\n\n changeActive(active: boolean) {\n this.active = active;\n\n if (active) {\n this.updateFixtureColor(this.colorPicker.color);\n } else {\n this.updateFixtureColor(undefined);\n this.setPickerColor(255, 255, 255);\n this.color = '#ffffff';\n }\n this.presetService.previewLive();\n }\n\n changeColor(color: any) {\n if (!this.colorPickerMounted || this.updatingColor) {\n return;\n }\n\n this.active = true;\n this.color = color.hexString;\n this.updateFixtureColor(color);\n }\n}\n","<div class=\"card border-secondary h-100\" [class.capability-deactivated]=\"!active\">\n <div class=\"card-header\">\n <div class=\"my-auto\" style=\"float: left\">\n <div class=\"form-check\">\n <input\n type=\"checkbox\"\n class=\"form-check-input\"\n id=\"capabilityColorActive\"\n [ngModel]=\"active\"\n (ngModelChange)=\"changeActive($event)\"\n />\n <label class=\"form-check-label\" for=\"capabilityColorActive\">{{ 'designer.fixture.capability-color' | translate }}</label>\n </div>\n </div>\n <div class=\"pull-right\">\n <input type=\"text\" [(ngModel)]=\"color\" style=\"width: 58px; text-align: center; font-size: 12px; font-family: monospace\" />\n </div>\n </div>\n\n <div class=\"card-body h-100\">\n <div id=\"color-picker-container\"></div>\n </div>\n</div>\n","import { ChangeDetectorRef, Component, OnInit } from '@angular/core';\nimport { FixtureCapabilityType } from '../../../models/fixture-capability';\nimport { PresetService } from '../../../services/preset.service';\n\n@Component({\n selector: 'lib-app-fixture-capability-dimmer',\n templateUrl: './fixture-capability-dimmer.component.html',\n styleUrls: ['./fixture-capability-dimmer.component.css'],\n})\nexport class FixtureCapabilityDimmerComponent implements OnInit {\n constructor(private presetService: PresetService, private changeDetectorRef: ChangeDetectorRef) {}\n\n ngOnInit() {}\n\n getValue(): number {\n const capabilityValue = this.presetService.getCapabilityValue(this.presetService.selectedPreset, FixtureCapabilityType.Intensity);\n if (capabilityValue) {\n return capabilityValue.valuePercentage;\n }\n return undefined;\n }\n\n getValueText(): number {\n const value = this.getValue();\n if (value >= 0) {\n return Math.round(value * 100 * 100) / 100;\n }\n return undefined;\n }\n\n setValue(value: any) {\n if (isNaN(value)) {\n return;\n }\n\n if (value < 0 || value > 1) {\n return;\n }\n\n this.presetService.setCapabilityValue(this.presetService.selectedPreset, FixtureCapabilityType.Intensity, value);\n this.changeDetectorRef.detectChanges();\n this.presetService.previewLive();\n }\n\n changeActive(active: boolean) {\n if (active) {\n this.setValue(1);\n } else {\n this.presetService.deleteCapabilityValue(this.presetService.selectedPreset, FixtureCapabilityType.Intensity);\n this.changeDetectorRef.detectChanges();\n }\n this.presetService.previewLive();\n }\n}\n","<div class=\"card border-secondary h-100\" [class.capability-deactivated]=\"getValue() == undefined\" style=\"min-height: 200px\">\n <div class=\"card-header\">\n <div class=\"my-auto\">\n <div class=\"form-check\">\n <input\n type=\"checkbox\"\n class=\"form-check-input\"\n id=\"capabilityDimmerActive\"\n [ngModel]=\"getValue() != undefined\"\n (ngModelChange)=\"changeActive($event)\"\n />\n <label class=\"form-check-label\" for=\"capabilityDimmerActive\">\n <i class=\"icon-dimmer\"></i>\n </label>\n </div>\n </div>\n </div>\n\n <div class=\"card-body h-100 d-flex\" style=\"flex-direction: column\">\n <div class=\"mb-4 w-100 d-flex\">\n <input\n class=\"mx-auto\"\n type=\"text\"\n [ngModel]=\"getValueText() >= 0 ? getValueText() : 0\"\n (ngModelChange)=\"setValue($event / 100)\"\n style=\"width: 42px; height: 20px; text-align: center; font-size: 12px; font-family: monospace\"\n />\n </div>\n\n <div class=\"h-100 w-100 d-flex\">\n <mv-slider\n class=\"mx-auto\"\n [value]=\"getValue() >= 0 ? getValue() : 0\"\n (change)=\"setValue($event.newValue)\"\n [orientation]=\"'vertical'\"\n [reversed]=\"true\"\n style=\"height: 100%\"\n [tooltip]=\"'hide'\"\n [min]=\"0\"\n [max]=\"1\"\n [step]=\"0.001\"\n ></mv-slider>\n </div>\n </div>\n</div>\n","import { ChangeDetectorRef, Component, OnInit } from '@angular/core';\nimport { FixtureCapabilityType } from '../../../models/fixture-capability';\nimport { PresetService } from '../../../services/preset.service';\n\n@Component({\n selector: 'lib-app-fixture-capability-pan-tilt',\n templateUrl: './fixture-capability-pan-tilt.component.html',\n styleUrls: ['./fixture-capability-pan-tilt.component.css'],\n})\nexport class FixtureCapabilityPanTiltComponent implements OnInit {\n constructor(private presetService: PresetService, private changeDetectorRef: ChangeDetectorRef) {}\n\n ngOnInit() {}\n\n getValuePan(): number {\n const capabilityValue = this.presetService.getCapabilityValue(this.presetService.selectedPreset, FixtureCapabilityType.Pan);\n if (capabilityValue) {\n return capabilityValue.valuePercentage;\n }\n return undefined;\n }\n\n getValueTextPan(): number {\n const value = this.getValuePan();\n if (value >= 0) {\n return Math.round(value * 100 * 100) / 100;\n }\n return undefined;\n }\n\n setValuePan(value: any) {\n if (isNaN(value)) {\n return;\n }\n\n if (value < 0 || value > 1) {\n return;\n }\n\n this.presetService.setCapabilityValue(this.presetService.selectedPreset, FixtureCapabilityType.Pan, value);\n this.changeDetectorRef.detectChanges();\n this.presetService.previewLive();\n }\n\n getValueTilt(): number {\n const capabilityValue = this.presetService.getCapabilityValue(this.presetService.selectedPreset, FixtureCapabilityType.Tilt);\n if (capabilityValue) {\n return capabilityValue.valuePercentage;\n }\n return undefined;\n }\n\n getValueTextTilt(): number {\n const value = this.getValueTilt();\n if (value >= 0) {\n return Math.round(value * 100 * 100) / 100;\n }\n return undefined;\n }\n\n setValueTilt(value: any) {\n if (isNaN(value)) {\n return;\n }\n\n if (value < 0 || value > 1) {\n return;\n }\n\n this.presetService.setCapabilityValue(this.presetService.selectedPreset, FixtureCapabilityType.Tilt, value);\n this.changeDetectorRef.detectChanges();\n this.presetService.previewLive();\n }\n\n changeActive(active: boolean) {\n if (active) {\n this.setValuePan(0.5);\n this.setValueTilt(0.5);\n } else {\n this.presetService.deleteCapabilityValue(this.presetService.selectedPreset, FixtureCapabilityType.Pan);\n this.presetService.deleteCapabilityValue(this.presetService.selectedPreset, FixtureCapabilityType.Tilt);\n this.changeDetectorRef.detectChanges();\n }\n this.presetService.previewLive();\n }\n}\n","<div class=\"card border-secondary h-100\" [class.capability-deactivated]=\"getValuePan() == undefined && getValueTilt() == undefined\">\n <div class=\"card-header\">\n <div class=\"my-auto\">\n <div class=\"form-check\">\n <input\n type=\"checkbox\"\n class=\"form-check-input\"\n id=\"capabilityColorWheelActive\"\n [ngModel]=\"getValuePan() != undefined || getValueTilt() != undefined\"\n (ngModelChange)=\"changeActive($event)\"\n />\n <label class=\"form-check-label\" for=\"capabilityColorWheelActive\">{{ 'designer.fixture.capability-pan-tilt' | translate }}</label>\n </div>\n </div>\n </div>\n\n <div class=\"card-body h-100 d-flex\" style=\"flex-direction: row\">\n <div class=\"d-flex h-100 mr-3\" style=\"flex-direction: column\">\n <div class=\"mb-4 w-100 d-flex\">\n <input\n class=\"mx-auto\"\n type=\"text\"\n [ngModel]=\"getValueTextPan() >= 0 ? getValueTextPan() : 0\"\n (ngModelChange)=\"setValuePan($event / 100)\"\n style=\"width: 42px; height: 20px; text-align: center; font-size: 12px; font-family: monospace\"\n />\n </div>\n\n <div class=\"h-100 w-100 d-flex\">\n <mv-slider\n class=\"mx-auto\"\n [value]=\"getValuePan() >= 0 ? getValuePan() : 0\"\n (change)=\"setValuePan($event.newValue)\"\n [orientation]=\"'vertical'\"\n [reversed]=\"true\"\n style=\"height: 100%\"\n [tooltip]=\"'hide'\"\n [min]=\"0\"\n [max]=\"1\"\n [step]=\"0.001\"\n ></mv-slider>\n </div>\n </div>\n\n <div class=\"d-flex h-100\" style=\"flex-direction: column\">\n <div class=\"mb-4 w-100 d-flex\">\n <input\n class=\"mx-auto\"\n type=\"text\"\n [ngModel]=\"getValueTextTilt() >= 0 ? getValueTextTilt() : 0\"\n (ngModelChange)=\"setValueTilt($event / 100)\"\n style=\"width: 42px; height: 20px; text-align: center; font-size: 12px; font-family: monospace\"\n />\n </div>\n\n <div class=\"h-100 w-100 d-flex\">\n <mv-slider\n class=\"mx-auto\"\n [value]=\"getValueTilt() >= 0 ? getValueTilt() : 0\"\n (change)=\"setValueTilt($event.newValue)\"\n [orientation]=\"'vertical'\"\n [reversed]=\"true\"\n style=\"height: 100%\"\n [tooltip]=\"'hide'\"\n [min]=\"0\"\n [max]=\"1\"\n [step]=\"0.001\"\n ></mv-slider>\n </div>\n </div>\n </div>\n</div>\n","<div class=\"card border-secondary h-100\" [class.capability-deactivated]=\"getCurrentSlotNumber() == undefined\" style=\"min-height: 200px\">\n <div class=\"card-header\">\n <div class=\"my-auto\">\n <div class=\"form-check\">\n <input\n type=\"checkbox\"\n class=\"form-check-input\"\n id=\"capabilityColorWheel{{ wheelIndex }}Active\"\n [ngModel]=\"getCurrentSlotNumber() != undefined\"\n (ngModelChange)=\"changeActive($event)\"\n />\n <label class=\"form-check-label\" for=\"capabilityColorWheel{{ wheelIndex }}Active\">\n {{ 'designer.fixture.capability-color' | translate }}\n </label>\n </div>\n </div>\n </div>\n\n <div class=\"card-body h-100\">\n <div *ngIf=\"showContainer\">{{ _fixtureProfile.name }} - {{ _channel.name }}</div>\n\n <div *ngIf=\"wheel\" class=\"d-flex\" style=\"max-width: 240px; flex-wrap: wrap\">\n <div\n *ngFor=\"let slot of slotCapabilities; let i = index\"\n (click)=\"selectSlotNumber(slot.capability.slotNumber)\"\n class=\"m-1 color\"\n [class.color-selected]=\"slotCapabilityIsSelected(slot.capability.slotNumber)\"\n [ngStyle]=\"getCapabilityColorStyle(slot)\"\n >\n <div\n *ngIf=\"slotCapabilityIsSelected(slot.capability.slotNumber)\"\n (click)=\"selectSlotNumber(slot.capability.slotNumber)\"\n class=\"color-selected-inner\"\n ></div>\n </div>\n </div>\n </div>\n</div>\n","import { ChangeDetectorRef, Component, Input, OnDestroy, OnInit } from '@angular/core';\nimport { Subscription } from 'rxjs';\nimport { CachedFixtureCapability } from '../../../models/cached-fixture-capability';\nimport { CachedFixtureChannel } from '../../../models/cached-fixture-channel';\nimport { FixtureCapabilityType } from '../../../models/fixture-capability';\nimport { FixtureProfile } from '../../../models/fixture-profile';\nimport { FixtureWheel } from '../../../models/fixture-wheel';\nimport { FixtureService } from '../../../services/fixture.service';\nimport { PresetService } from '../../../services/preset.service';\n\n@Component({\n selector: 'lib-app-fixture-capability-color-wheel',\n templateUrl: './fixture-capability-color-wheel.component.html',\n styleUrls: ['./fixture-capability-color-wheel.component.css'],\n})\nexport class FixtureCapabilityColorWheelComponent implements OnInit, OnDestroy {\n _fixtureProfile: FixtureProfile;\n _channel: CachedFixtureChannel;\n wheelName: string;\n wheel: FixtureWheel;\n slotCapabilities: CachedFixtureCapability[];\n\n private colorChangeSubscription: Subscription;\n\n @Input()\n set profile(value: FixtureProfile) {\n this._fixtureProfile = value;\n this.update();\n }\n\n @Input()\n set channel(value: CachedFixtureChannel) {\n this._channel = value;\n this.update();\n }\n\n @Input()\n wheelIndex: number;\n\n @Input()\n showContainer = false;\n\n constructor(public presetService: PresetService, private changeDetectorRef: ChangeDetectorRef, private fixtureService: FixtureService) {}\n\n ngOnInit() {\n this.colorChangeSubscription = this.presetService.fixtureColorChanged.subscribe(() => {\n this.changeDetectorRef.detectChanges();\n });\n }\n\n ngOnDestroy() {\n this.colorChangeSubscription.unsubscribe();\n }\n\n private update() {\n if (this._fixtureProfile && this._channel) {\n this.wheelName = undefined;\n this.slotCapabilities = [];\n\n // get the wheel name\n for (const capability of this._channel.capabilities) {\n if (capability.wheel) {\n this.wheelName = capability.wheelName;\n break;\n }\n }\n if (!this.wheelName) {\n this.wheelName = this._channel.name;\n }\n\n this.wheel = this.fixtureService.getWheelByName(this._fixtureProfile, this.wheelName);\n\n // calculate all available slots\n for (const capability of this._channel.capabilities) {\n if (capability.capability.type === FixtureCapabilityType.WheelSlot) {\n this.slotCapabilities.push(capability);\n }\n }\n }\n\n this.changeDetectorRef.detectChanges();\n }\n\n getCapabilityColorStyle(capability: CachedFixtureCapability): any {\n let property = 'background-color';\n let value = 'black';\n let colors: string[] = [];\n\n if (capability.wheelSlots) {\n for (const slot of capability.wheelSlots) {\n // calculate the color based on the color wheel slot\n if (slot.colors.length > 0) {\n colors = colors.concat(slot.colors);\n }\n }\n }\n\n if (colors.length > 1) {\n // mixed colors -> gradient\n let colorString: string;\n for (const color of colors) {\n if (colorString) {\n colorString += ', ';\n } else {\n colorString = '';\n }\n colorString += color;\n }\n property = 'background-image';\n value = 'linear-gradient(to bottom right, ' + colorString + ')';\n } else if (colors.length === 1) {\n value = colors[0];\n } else {\n value = '#fff';\n }\n\n const style = {};\n style[property] = value;\n return style;\n }\n\n getCurrentSlotNumber(): number {\n const capabilityValue = this.presetService.getCapabilityValue(\n this.presetService.selectedPreset,\n FixtureCapabilityType.WheelSlot,\n undefined,\n this.wheelName,\n this._fixtureProfile.uuid\n );\n\n if (capabilityValue) {\n return capabilityValue.slotNumber;\n }\n return undefined;\n }\n\n slotCapabilityIsSelected(slotNumber: number): boolean {\n const selectedSlotNumber = this.getCurrentSlotNumber();\n\n if (selectedSlotNumber >= 0) {\n // a slot is selected\n return selectedSlotNumber === slotNumber;\n } else {\n // no slot is selected and the capability is inactive\n // -> show the approx. color, if a color or a similar slot from a different wheel has been selected\n const approximatedCapability = this.presetService.getApproximatedColorWheelCapability(\n this.presetService.selectedPreset,\n this._channel\n );\n\n if (approximatedCapability) {\n return slotNumber === approximatedCapability.capability.slotNumber;\n } else {\n return false;\n }\n }\n }\n\n changeActive(active: boolean) {\n if (active) {\n this.presetService.setCapabilityValue(\n this.presetService.selectedPreset,\n FixtureCapabilityType.WheelSlot,\n undefined,\n 1,\n undefined,\n this.wheelName,\n this._fixtureProfile.uuid\n );\n } else {\n this.presetService.deleteCapabilityValue(\n this.presetService.selectedPreset,\n FixtureCapabilityType.WheelSlot,\n undefined,\n this.wheelName,\n this._fixtureProfile.uuid\n );\n }\n\n this.presetService.previewLive();\n }\n\n selectSlotNumber(slotNumber: number) {\n this.presetService.setCapabilityValue(\n this.presetService.selectedPreset,\n FixtureCapabilityType.WheelSlot,\n undefined,\n slotNumber,\n undefined,\n this.wheelName,\n this._fixtureProfile.uuid\n );\n this.presetService.previewLive();\n }\n}\n","<div class=\"card border-secondary panel h-100\" [class.card-intro-active]=\"introService.showStep('capabilities')\">\n <div class=\"card-body capability-container d-flex h-100\" style=\"overflow-y: hidden\">\n <!-- h-100 needs to be applied in chrome to avoid performance issues with many layouts (reflows)\n during sliding. But the class must not be applied e.g. in Safari, because the bottom margin is not correct\n anymore afterwards. -->\n <div *ngIf=\"presetService.selectedPreset\" class=\"row m-0 pl-3\" [class.h-100]=\"isChrome()\">\n <!-- Dimmer -->\n <!-- the height attribute is required to avoid performance issues with many layouts (reflows)\n in Chrome during sliding -->\n <div *ngIf=\"presetService.hasCapabilityDimmer()\" class=\"col col-auto p-0 my-3 mr-3\" style=\"height: calc(100% - 2rem)\">\n <lib-app-fixture-capability-dimmer></lib-app-fixture-capability-dimmer>\n </div>\n\n <!-- Color -->\n <!-- Also show for color wheel fixtures to approx. the color -->\n <div *ngIf=\"presetService.hasCapabilityColorOrColorWheel()\" class=\"col col-auto p-0 my-3 mr-3\" style=\"height: calc(100% - 2rem)\">\n <lib-app-fixture-capability-color></lib-app-fixture-capability-color>\n </div>\n\n <!-- Color wheels -->\n <div\n *ngFor=\"let entry of colorWheelChannels | keyvalue; let i = index\"\n class=\"col col-auto p-0 my-3 mr-3\"\n style=\"height: calc(100% - 2rem)\"\n >\n <lib-app-fixture-capability-color-wheel\n [profile]=\"entry.key\"\n [channel]=\"entry.value\"\n [wheelIndex]=\"i\"\n [showContainer]=\"colorWheelChannels.size > 1\"\n ></lib-app-fixture-capability-color-wheel>\n </div>\n\n <!-- Pan/Tilt -->\n <div *ngIf=\"presetService.hasCapabilityPanTilt()\" class=\"col col-auto p-0 my-3 mr-3\" style=\"height: calc(100% - 2rem)\">\n <lib-app-fixture-capability-pan-tilt></lib-app-fixture-capability-pan-tilt>\n </div>\n\n <!-- Fix spacing at the end -->\n <div class=\"col col-auto p-0 my-3 mr-3\">&nbsp;</div>\n </div>\n\n <div *ngIf=\"projectService.project.fixtures.length == 0\" class=\"m-auto\">\n <p class=\"m-auto\" style=\"color: #717171\">{{ 'designer.fixture.no-fixtures' | translate }}</p>\n </div>\n\n <div\n *ngIf=\"\n projectService.project.fixtures.length > 0 && presetService.selectedPreset && presetService.selectedPreset.fixtureUuids.length == 0\n \"\n class=\"m-auto\"\n >\n <p class=\"m-auto\" style=\"color: #717171\">{{ 'designer.fixture.no-fixtures-selected' | translate }}</p>\n </div>\n </div>\n</div>\n","import { ChangeDetectionStrategy, ChangeDetectorRef, Component, OnDestroy, OnInit } from '@angular/core';\nimport { Subscription } from 'rxjs';\nimport { CachedFixtureChannel } from '../../models/cached-fixture-channel';\nimport { FixtureProfile } from '../../models/fixture-profile';\nimport { FixtureWheelSlotType } from '../../models/fixture-wheel-slot';\nimport { FixtureService } from '../../services/fixture.service';\nimport { IntroService } from '../../services/intro.service';\nimport { PresetService } from '../../services/preset.service';\nimport { ProjectService } from '../../services/project.service';\n\n@Component({\n selector: 'lib-app-fixture-capability',\n templateUrl: './fixture-capability.component.html',\n styleUrls: ['./fixture-capability.component.css'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class FixtureCapabilityComponent implements OnInit, OnDestroy {\n // map containing the profile and the channel name containing the wheel\n colorWheelChannels: Map<FixtureProfile, CachedFixtureChannel> = new Map<FixtureProfile, CachedFixtureChannel>();\n\n private fixtureSelectionChangedSubscription: Subscription;\n private previewSelectionChangedSubscription: Subscription;\n\n constructor(\n public presetService: PresetService,\n private fixtureService: FixtureService,\n private changeDetectorRef: ChangeDetectorRef,\n public projectService: ProjectService,\n public introService: IntroService\n ) {\n this.fixtureSelectionChangedSubscription = this.presetService.fixtureSelectionChanged.subscribe(() => {\n this.update();\n });\n\n this.previewSelectionChangedSubscription = this.presetService.previewSelectionChanged.subscribe(() => {\n this.update();\n });\n\n this.introService.stepChanged.subscribe(() => {\n this.changeDetectorRef.detectChanges();\n });\n }\n\n ngOnInit() {}\n\n ngOnDestroy() {\n this.fixtureSelectionChangedSubscription.unsubscribe();\n this.previewSelectionChangedSubscription.unsubscribe();\n }\n\n private wheelInList(wheels: Map<FixtureProfile, CachedFixtureChannel>, profile: FixtureProfile, channel: CachedFixtureChannel) {\n wheels.forEach((existingChannel: CachedFixtureChannel, existingProfile: FixtureProfile) => {\n if (existingProfile.uuid === profile.uuid && existingChannel.name === channel.name) {\n return true;\n }\n });\n\n return false;\n }\n\n private updateColorWheels() {\n this.colorWheelChannels = new Map<FixtureProfile, CachedFixtureChannel>();\n\n if (!this.presetService.selectedPreset) {\n return;\n }\n\n for (const fixtureUuid of this.presetService.selectedPreset.fixtureUuids) {\n const fixture = this.fixtureService.getCachedFixtureByUuid(fixtureUuid);\n for (const channel of fixture.channels) {\n for (const capability of channel.capabilities) {\n if (capability.wheel && capability.wheelSlots && capability.wheelSlots.length > 0) {\n if (this.fixtureService.wheelHasSlotType(capability.wheel, FixtureWheelSlotType.Color)) {\n // color wheel\n if (!this.wheelInList(this.colorWheelChannels, fixture.profile, channel)) {\n this.colorWheelChannels.set(fixture.profile, channel);\n }\n } else if (this.fixtureService.wheelHasSlotType(capability.wheel, FixtureWheelSlotType.Gobo)) {\n // gobo wheel\n // TODO\n }\n }\n }\n }\n }\n }\n\n private update() {\n this.updateColorWheels();\n this.changeDetectorRef.detectChanges();\n }\n\n isChrome(): boolean {\n if (navigator.appVersion.indexOf('Chrome/') !== -1) {\n return true;\n }\n return false;\n }\n}\n","<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","import { Component, OnInit } from '@angular/core';\nimport { Positioning } from '../../../models/fixture';\nimport { FixtureService } from '../../../services/fixture.service';\nimport { PresetService } from '../../../services/preset.service';\n\n@Component({\n selector: 'lib-app-fixture-settings-position',\n templateUrl: './fixture-settings-position.component.html',\n styleUrls: ['./fixture-settings-position.component.css'],\n})\nexport class FixtureSettingsPositionComponent implements OnInit {\n selectUndefinedOptionValue: any = undefined;\n\n selectedPositioning: string = undefined;\n\n positionX = 0;\n positionY = 0;\n positionZ = 0;\n\n positionXMin = -400;\n positionXMax = 400;\n positionYMin = 0;\n positionYMax = 400;\n positionZMin = -400;\n positionZMax = 400;\n\n rotationX = 0;\n rotationY = 0;\n rotationZ = 0;\n\n rotationMin = 0;\n rotationMax = 360;\n\n constructor(public fixtureService: FixtureService, private presetService: PresetService) {\n presetService.fixtureSelectionSettingsChanged.subscribe(() => {\n this.updateSelection();\n });\n }\n\n ngOnInit() {}\n\n private updateSelection() {\n // get all display values for the selected settings fixtures\n this.selectedPositioning = undefined;\n\n this.positionX = undefined;\n this.positionY = undefined;\n this.positionZ = undefined;\n\n this.rotationX = undefined;\n this.rotationY = undefined;\n this.rotationZ = undefined;\n\n for (const fixture of this.fixtureService.selectedSettingsFixtures) {\n if (this.selectedPositioning) {\n if (this.selectedPositioning !== fixture.positioning) {\n this.selectedPositioning = undefined;\n break;\n }\n } else {\n this.selectedPositioning = fixture.positioning;\n }\n }\n for (const fixture of this.fixtureService.selectedSettingsFixtures) {\n if (this.positionX) {\n if (this.positionX !== fixture.positionX) {\n this.positionX = undefined;\n break;\n }\n } else {\n this.positionX = fixture.positionX;\n }\n }\n for (const fixture of this.fixtureService.selectedSettingsFixtures) {\n if (this.positionY) {\n if (this.positionY !== fixture.positionY) {\n this.positionY = undefined;\n break;\n }\n } else {\n this.positionY = fixture.positionY;\n }\n }\n for (const fixture of this.fixtureService.selectedSettingsFixtures) {\n if (this.positionZ) {\n if (this.positionZ !== fixture.positionZ) {\n this.positionZ = undefined;\n break;\n }\n } else {\n this.positionZ = fixture.positionZ;\n }\n }\n for (const fixture of this.fixtureService.selectedSettingsFixtures) {\n if (this.rotationX) {\n if (this.rotationX !== fixture.rotationX) {\n this.rotationX = undefined;\n break;\n }\n } else {\n this.rotationX = fixture.rotationX;\n }\n }\n for (const fixture of this.fixtureService.selectedSettingsFixtures) {\n if (this.rotationY) {\n if (this.rotationY !== fixture.rotationY) {\n this.rotationY = undefined;\n break;\n }\n } else {\n this.rotationY = fixture.rotationY;\n }\n }\n for (const fixture of this.fixtureService.selectedSettingsFixtures) {\n if (this.rotationZ) {\n if (this.rotationZ !== fixture.rotationZ) {\n this.rotationZ = undefined;\n break;\n }\n } else {\n this.rotationZ = fixture.rotationZ;\n }\n }\n }\n\n changePosition(positioningStr: string) {\n const positioning: Positioning = Positioning[positioningStr];\n\n for (const fixture of this.fixtureService.selectedSettingsFixtures) {\n fixture.positioning = positioning;\n }\n }\n\n changePositionManual(position: string, value: any) {\n if (isNaN(value)) {\n return;\n }\n\n if (position === 'x') {\n if (value >= this.positionXMin && value <= this.positionXMax) {\n this.positionX = +value;\n }\n } else if (position === 'y') {\n if (value >= this.positionYMin && value <= this.positionYMax) {\n this.positionY = +value;\n }\n } else if (position === 'z') {\n if (value >= this.positionZMin && value <= this.positionZMax) {\n this.positionZ = +value;\n }\n }\n\n for (const fixture of this.fixtureService.selectedSettingsFixtures) {\n if (position === 'x') {\n if (value >= this.positionXMin && value <= this.positionXMax) {\n fixture.positionX = +value;\n }\n } else if (position === 'y') {\n if (value >= this.positionYMin && value <= this.positionYMax) {\n fixture.positionY = +value;\n }\n } else if (position === 'z') {\n if (value >= this.positionZMin && value <= this.positionZMax) {\n fixture.positionZ = +value;\n }\n }\n }\n }\n\n changeRotationManual(rotation: string, value: any) {\n if (isNaN(value) || value < this.rotationMin || value > this.rotationMax) {\n return;\n }\n\n if (rotation === 'x') {\n this.rotationX = +value;\n } else if (rotation === 'y') {\n this.rotationY = +value;\n } else if (rotation === 'z') {\n this.rotationZ = +value;\n }\n\n for (const fixture of this.fixtureService.selectedSettingsFixtures) {\n if (rotation === 'x') {\n fixture.rotationX = +value;\n } else if (rotation === 'y') {\n fixture.rotationY = +value;\n } else if (rotation === 'z') {\n fixture.rotationZ = +value;\n }\n }\n }\n}\n","import { ChangeDetectorRef, Component, OnInit } from '@angular/core';\nimport { PreviewService } from '../../../services/preview.service';\nimport { ProjectService } from '../../../services/project.service';\n\n@Component({\n selector: 'lib-app-fixture-settings-stage',\n templateUrl: './fixture-settings-stage.component.html',\n styleUrls: ['./fixture-settings-stage.component.css'],\n})\nexport class FixtureSettingsStageComponent implements OnInit {\n constructor(public projectService: ProjectService, public previewService: PreviewService, private changeDetectorRef: ChangeDetectorRef) {}\n\n ngOnInit() {}\n\n update() {\n this.previewService.updateStage();\n this.changeDetectorRef.detectChanges();\n }\n}\n","<div class=\"card border-secondary h-100\">\n <div class=\"card-header\">\n {{ 'designer.fixture.setting-stage' | translate }}\n </div>\n\n <div class=\"card-body h-100\">\n <div class=\"d-flex\">\n <div class=\"my-auto\" style=\"width: 120px; float: left\">\n {{ 'designer.fixture.setting-stage-width' | translate }}\n </div>\n <div class=\"my-auto\" style=\"float: left\">\n <mv-slider\n style=\"width: 140px\"\n [tooltip]=\"'hide'\"\n [value]=\"projectService.project.stageWidthCm\"\n [min]=\"100\"\n [max]=\"2000\"\n [step]=\"5\"\n (change)=\"projectService.project.stageWidthCm = $event.newValue; update()\"\n >\n </mv-slider>\n </div>\n <div class=\"my-auto\">\n <input\n type=\"text\"\n [ngModel]=\"projectService.project.stageWidthCm\"\n (ngModelChange)=\"projectService.project.stageWidthCm = $event; update()\"\n class=\"slider-input-readonly\"\n readonly\n />\n </div>\n <div class=\"my-auto ml-1\" style=\"color: darkgray\">cm</div>\n </div>\n\n <div class=\"d-flex\">\n <div class=\"my-auto\" style=\"width: 120px; float: left\">\n {{ 'designer.fixture.setting-stage-height' | translate }}\n </div>\n <div class=\"my-auto\" style=\"float: left\">\n <mv-slider\n style=\"width: 140px\"\n [tooltip]=\"'hide'\"\n [value]=\"projectService.project.stageHeightCm\"\n [min]=\"100\"\n [max]=\"2000\"\n [step]=\"5\"\n (change)=\"projectService.project.stageHeightCm = $event.newValue; update()\"\n >\n </mv-slider>\n </div>\n <div class=\"my-auto\">\n <input\n type=\"text\"\n [ngModel]=\"projectService.project.stageHeightCm\"\n (ngModelChange)=\"projectService.project.stageHeightCm = $event; update()\"\n class=\"slider-input-readonly\"\n readonly\n />\n </div>\n <div class=\"my-auto ml-1\" style=\"color: darkgray\">cm</div>\n </div>\n\n <div class=\"d-flex\">\n <div class=\"my-auto\" style=\"width: 120px; float: left\">\n {{ 'designer.fixture.setting-stage-depth' | translate }}\n </div>\n <div class=\"my-auto\" style=\"float: left\">\n <mv-slider\n style=\"width: 140px\"\n [tooltip]=\"'hide'\"\n [value]=\"projectService.project.stageDepthCm\"\n [min]=\"100\"\n [max]=\"2000\"\n [step]=\"5\"\n (change)=\"projectService.project.stageDepthCm = $event.newValue; update()\"\n >\n </mv-slider>\n </div>\n <div class=\"my-auto\">\n <input\n type=\"text\"\n [ngModel]=\"projectService.project.stageDepthCm\"\n (ngModelChange)=\"projectService.project.stageDepthCm = $event; update()\"\n class=\"slider-input-readonly\"\n readonly\n />\n </div>\n <div class=\"my-auto ml-1\" style=\"color: darkgray\">cm</div>\n </div>\n\n <div class=\"d-flex\">\n <div class=\"my-auto\" style=\"width: 120px; float: left\">\n {{ 'designer.fixture.setting-stage-floor-height' | translate }}\n </div>\n <div class=\"my-auto\" style=\"float: left\">\n <mv-slider\n style=\"width: 140px\"\n [tooltip]=\"'hide'\"\n [value]=\"projectService.project.stageFloorHeightCm\"\n [min]=\"1\"\n [max]=\"1000\"\n [step]=\"5\"\n (change)=\"projectService.project.stageFloorHeightCm = $event.newValue; update()\"\n >\n </mv-slider>\n </div>\n <div class=\"my-auto\">\n <input\n type=\"text\"\n [ngModel]=\"projectService.project.stageFloorHeightCm\"\n (ngModelChange)=\"projectService.project.stageFloorHeightCm = $event; update()\"\n class=\"slider-input-readonly\"\n readonly\n />\n </div>\n <div class=\"my-auto ml-1\" style=\"color: darkgray\">cm</div>\n </div>\n\n <div class=\"d-flex\">\n <div class=\"my-auto\" style=\"width: 120px; float: left\">\n {{ 'designer.fixture.setting-stage-ceiling-height' | translate }}\n </div>\n <div class=\"my-auto\" style=\"float: left\">\n <mv-slider\n style=\"width: 140px\"\n [tooltip]=\"'hide'\"\n [value]=\"projectService.project.stageCeilingHeightCm\"\n [min]=\"1\"\n [max]=\"1000\"\n [step]=\"5\"\n (change)=\"projectService.project.stageCeilingHeightCm = $event.newValue; update()\"\n >\n </mv-slider>\n </div>\n <div class=\"my-auto\">\n <input\n type=\"text\"\n [ngModel]=\"projectService.project.stageCeilingHeightCm\"\n (ngModelChange)=\"projectService.project.stageCeilingHeightCm = $event; update()\"\n class=\"slider-input-readonly\"\n readonly\n />\n </div>\n <div class=\"my-auto ml-1\" style=\"color: darkgray\">cm</div>\n </div>\n\n <div class=\"d-flex\">\n <div class=\"my-auto\" style=\"width: 120px; float: left\">\n {{ 'designer.fixture.setting-stage-pillar-width' | translate }}\n </div>\n <div class=\"my-auto\" style=\"float: left\">\n <mv-slider\n style=\"width: 140px\"\n [tooltip]=\"'hide'\"\n [value]=\"projectService.project.stagePillarWidthCm\"\n [min]=\"1\"\n [max]=\"200\"\n [step]=\"5\"\n (change)=\"projectService.project.stagePillarWidthCm = $event.newValue; update()\"\n >\n </mv-slider>\n </div>\n <div class=\"my-auto\">\n <input\n type=\"text\"\n [ngModel]=\"projectService.project.stagePillarWidthCm\"\n (ngModelChange)=\"projectService.project.stagePillarWidthCm = $event; update()\"\n class=\"slider-input-readonly\"\n readonly\n />\n </div>\n <div class=\"my-auto ml-1\" style=\"color: darkgray\">cm</div>\n </div>\n </div>\n</div>\n","import { Component, OnInit } from '@angular/core';\nimport { FixtureService } from '../../services/fixture.service';\nimport { PresetService } from '../../services/preset.service';\n\n@Component({\n selector: 'lib-app-fixture-settings',\n templateUrl: './fixture-settings.component.html',\n styleUrls: ['./fixture-settings.component.css'],\n})\nexport class FixtureSettingsComponent implements OnInit {\n dmxChannels: number[] = [];\n\n constructor(private fixtureService: FixtureService, public presetService: PresetService) {\n for (let i = 0; i < 512; i++) {\n this.dmxChannels.push(0);\n }\n }\n\n ngOnInit() {}\n\n isChrome(): boolean {\n if (navigator.appVersion.indexOf('Chrome/') !== -1) {\n return true;\n }\n return false;\n }\n}\n","<div class=\"card border-secondary panel h-100\">\n <div class=\"card-body capability-container d-flex h-100\" style=\"overflow-y: hidden\">\n <!-- h-100 needs to be applied in chrome to avoid performance issues with many layouts (reflows)\n during sliding. But the class must not be applied e.g. in Safari, because the bottom margin is not correct\n anymore afterwards. -->\n <div class=\"row m-0 pl-3\" [class.h-100]=\"isChrome()\">\n <!-- Position -->\n <div class=\"col col-auto p-0 my-3 mr-3\">\n <lib-app-fixture-settings-position></lib-app-fixture-settings-position>\n </div>\n\n <!-- Stage -->\n <div class=\"col col-auto p-0 my-3 mr-3\">\n <lib-app-fixture-settings-stage></lib-app-fixture-settings-stage>\n </div>\n\n <!-- Fix spacing at the end -->\n <div class=\"col col-auto p-0 my-3 mr-3\">&nbsp;</div>\n </div>\n </div>\n</div>\n","<div class=\"mr-3\" style=\"float: left\">\n <div class=\"mb-2\">\n <select\n [ngModel]=\"curve.curveType\"\n (ngModelChange)=\"curve.curveType = $event; presetService.previewLive()\"\n style=\"width: 200px; height: 20px\"\n >\n <option [value]=\"'sine'\">\n {{ 'designer.effect.curve-sine' | translate }}\n </option>\n <option [value]=\"'square'\">\n {{ 'designer.effect.curve-square' | translate }}\n </option>\n <!-- <option [value]=\"'triangle'\">\n {{ 'designer.effect.curve-triangle' | translate }}</option>\n <option [value]=\"'sawtooth'\">\n {{ 'designer.effect.curve-sawtooth' | translate }}</option>\n <option [value]=\"'reverse-sawtooth'\">\n {{ 'designer.effect.curve-reverse-sawtooth' | translate }}</option> -->\n </select>\n </div>\n <div>\n <canvas #curveGrid class=\"curve-grid\" width=\"200\" height=\"100\" viewBox=\"150 -75 4850 5150\" preserveAspectRatio=\"none\"></canvas>\n </div>\n</div>\n\n<div class=\"mr-4\" style=\"float: left\">\n <div class=\"d-flex\">\n <div class=\"my-auto\" style=\"width: 100px; float: left\">\n {{ 'designer.effect.curve-length' | translate }}\n </div>\n <div class=\"my-auto\" style=\"float: left\">\n <mv-slider\n (change)=\"redraw(); presetService.previewLive()\"\n [(value)]=\"curve.lengthMillis\"\n style=\"width: 80px\"\n [tooltip]=\"'hide'\"\n [value]=\"0\"\n [min]=\"lengthMillisMin\"\n [max]=\"lengthMillisMax\"\n [step]=\"1\"\n ></mv-slider>\n </div>\n <div class=\"my-auto\">\n <input type=\"text\" class=\"slider-input\" [ngModel]=\"curve.lengthMillis\" (ngModelChange)=\"setLengthMillis($event); redraw()\" />\n </div>\n <div class=\"my-auto ml-1\">\n {{ 'designer.misc.ms' | translate }}\n </div>\n </div>\n\n <div class=\"d-flex\">\n <div class=\"my-auto\" style=\"width: 100px; float: left\">\n {{ 'designer.effect.curve-amplitude' | translate }}\n </div>\n <div class=\"my-auto\" style=\"float: left\">\n <mv-slider\n (change)=\"redraw(); presetService.previewLive()\"\n [(value)]=\"curve.amplitude\"\n style=\"width: 80px\"\n [tooltip]=\"'hide'\"\n [min]=\"amplitudeMin\"\n [max]=\"amplitudeMax\"\n [step]=\"0.01\"\n ></mv-slider>\n </div>\n <div class=\"my-auto\">\n <input type=\"text\" class=\"slider-input\" [ngModel]=\"curve.amplitude\" (ngModelChange)=\"setAmplitude($event); redraw()\" />\n </div>\n </div>\n\n <div class=\"d-flex\">\n <div class=\"my-auto\" style=\"width: 100px; float: left\">\n {{ 'designer.effect.curve-position' | translate }}\n </div>\n <div class=\"my-auto\" style=\"float: left\">\n <mv-slider\n (change)=\"redraw(); presetService.previewLive()\"\n [(value)]=\"curve.position\"\n style=\"width: 80px; height: 18px\"\n [tooltip]=\"'hide'\"\n [min]=\"percentageMin\"\n [max]=\"percentageMax\"\n [step]=\"0.01\"\n >\n </mv-slider>\n </div>\n <div class=\"my-auto\">\n <input type=\"text\" class=\"slider-input\" [ngModel]=\"curve.position\" (ngModelChange)=\"setPosition($event); redraw()\" />\n </div>\n </div>\n\n <div class=\"d-flex\">\n <div class=\"my-auto\" style=\"width: 100px; float: left\">\n {{ 'designer.effect.curve-phase' | translate }}\n </div>\n <div class=\"my-auto\" style=\"float: left\">\n <mv-slider\n (change)=\"redraw(); presetService.previewLive()\"\n [(value)]=\"curve.phaseMillis\"\n style=\"width: 80px; height: 18px\"\n [tooltip]=\"'hide'\"\n [min]=\"phaseMillisMin\"\n [max]=\"phaseMillisMax\"\n [step]=\"1\"\n ></mv-slider>\n </div>\n <div class=\"my-auto\">\n <input type=\"text\" class=\"slider-input\" [ngModel]=\"curve.phaseMillis\" (ngModelChange)=\"setPhaseMillis($event); redraw()\" />\n </div>\n <div class=\"my-auto ml-1\">\n {{ 'designer.misc.ms' | translate }}\n </div>\n </div>\n\n <div class=\"d-flex\">\n <div class=\"my-auto\" style=\"width: 100px; float: left\">\n {{ 'designer.effect.curve-chase' | translate }}\n </div>\n <div class=\"my-auto\" style=\"float: left\">\n <mv-slider\n (change)=\"redraw(); presetService.previewLive()\"\n [(value)]=\"curve.phasingMillis\"\n style=\"width: 80px; height: 18px\"\n [tooltip]=\"'hide'\"\n [min]=\"phasingMillisMin\"\n [max]=\"phasingMillisMax\"\n [step]=\"1\"\n ></mv-slider>\n </div>\n <div class=\"my-auto\">\n <input type=\"text\" class=\"slider-input\" [ngModel]=\"curve.phasingMillis\" (ngModelChange)=\"setPhasingMillis($event); redraw()\" />\n </div>\n <div class=\"my-auto ml-1\">\n {{ 'designer.misc.ms' | translate }}\n </div>\n </div>\n</div>\n\n<!-- Menu for the capabilities and channels-->\n<div class=\"col col-auto p-0\" style=\"margin-right: 1px; width: 50px; float: left\">\n <div class=\"nav flex-column nav-pills\" id=\"v-pills-tab\" role=\"tablist\" aria-orientation=\"vertical\">\n <a\n class=\"nav-link px-3 active\"\n id=\"v-pills-effect-capabilities-tab\"\n popover=\"{{ 'designer.misc.capabilities' | translate }}\"\n container=\"body\"\n placement=\"right\"\n triggers=\"mouseenter:mouseleave\"\n data-toggle=\"pill\"\n href=\"#v-pills-effect-capabilities-{{ curve?.uuid }}\"\n role=\"tab\"\n aria-controls=\"v-pills-capabilities\"\n aria-selected=\"true\"\n >\n <i class=\"fa fa-bolt fa-fw\" aria-hidden=\"true\"></i>\n </a>\n <a\n class=\"nav-link px-3\"\n id=\"v-pills-effect-channels-tab\"\n popover=\"{{ 'designer.misc.channels' | translate }}\"\n container=\"body\"\n placement=\"right\"\n triggers=\"mouseenter:mouseleave\"\n data-toggle=\"pill\"\n href=\"#v-pills-effect-channels-{{ curve?.uuid }}\"\n role=\"tab\"\n aria-controls=\"v-pills-channels\"\n aria-selected=\"false\"\n >\n <i class=\"fa fa-sliders fa-fw\" aria-hidden=\"true\"></i>\n </a>\n </div>\n</div>\n\n<div class=\"h-100\" class=\"applying-to\">\n <div class=\"tab-content h-100\" id=\"v-pills-tabContent\">\n <div class=\"tab-pane h-100 show active\" id=\"v-pills-effect-capabilities-{{ curve?.uuid }}\" role=\"tabpanel\">\n <!-- Capabilities-->\n <div *ngFor=\"let capability of availableCapabilities; let i = index\" class=\"form-check\">\n <input\n type=\"checkbox\"\n class=\"form-check-input\"\n id=\"capability_{{ curve?.uuid + '_' + i }}\"\n [ngModel]=\"capabilityChecked(capability)\"\n (change)=\"toggleCapability($event, capability)\"\n />\n <label class=\"form-check-label\" for=\"capability_{{ curve?.uuid + '_' + i }}\">{{ getCapabilityName(capability) | async }}</label>\n </div>\n </div>\n <div class=\"tab-pane h-100 show\" id=\"v-pills-effect-channels-{{ curve?.uuid }}\" role=\"tabpanel\">\n <!-- channels -->\n\n <!-- profile selection -->\n <div *ngIf=\"availableProfiles.length > 1\">\n <div *ngFor=\"let profile of availableProfiles; let i = index\" class=\"form-check\">\n <input\n type=\"checkbox\"\n class=\"form-check-input\"\n id=\"channel_profile_{{ curve?.uuid }}_{{ profile.uuid }}\"\n [ngModel]=\"selectedProfiles.indexOf(profile) >= 0\"\n (change)=\"changeProfileSelection($event, profile)\"\n />\n <label class=\"form-check-label\" for=\"channel_profile_{{ curve?.uuid }}_{{ profile.uuid }}\">{{ profile.name }}</label>\n </div>\n\n <hr class=\"my-1\" style=\"border-color: white\" />\n </div>\n\n <!-- channels -->\n <ng-container *ngFor=\"let entry of availableChannels | keyvalue; let i = index\">\n <div *ngFor=\"let channel of entry.value; let j = index\" class=\"form-check\">\n <input\n type=\"checkbox\"\n class=\"form-check-input\"\n id=\"channel_{{ curve?.uuid }}_{{ i }}_{{ j }}\"\n [ngModel]=\"channelChecked(entry.key, channel)\"\n (change)=\"toggleChannel($event, entry.key, channel)\"\n />\n <label class=\"form-check-label\" for=\"channel_{{ curve?.uuid }}_{{ i }}_{{ j }}\">{{\n getChannelName(entry.key.name, channel.name)\n }}</label>\n </div>\n </ng-container>\n </div>\n </div>\n</div>\n","import { Component, ElementRef, Input, OnInit, ViewChild } from '@angular/core';\nimport { TranslateService } from '@ngx-translate/core';\nimport { Observable, Subscription, timer } from 'rxjs';\nimport { map } from 'rxjs/operators';\nimport { CachedFixtureChannel } from '../../models/cached-fixture-channel';\nimport { EffectCurveProfileChannels } from '../../models/effect-curve-profile-channel';\nimport { FixtureCapability, FixtureCapabilityColor, FixtureCapabilityType } from '../../models/fixture-capability';\nimport { FixtureProfile } from '../../models/fixture-profile';\nimport { FixtureService } from '../../services/fixture.service';\nimport { PresetService } from '../../services/preset.service';\nimport { EffectCurve } from './../../models/effect-curve';\nimport { AnimationService } from './../../services/animation.service';\n\n@Component({\n selector: 'lib-app-effect-curve',\n templateUrl: './effect-curve.component.html',\n styleUrls: ['./effect-curve.component.css'],\n})\nexport class EffectCurveComponent implements OnInit {\n private gridUpdateSubscription: Subscription;\n private ctx: any;\n private maxWidth: number;\n private maxHeight: number;\n\n public lengthMillisMin = 20;\n public lengthMillisMax = 8000;\n public amplitudeMin = 0;\n public amplitudeMax = 4;\n public percentageMin = 0;\n public percentageMax = 1;\n public phaseMillisMin = -1000;\n public phaseMillisMax = 1000;\n public phasingMillisMin = 0;\n public phasingMillisMax = 1000;\n\n // the selected capabilities\n public availableCapabilities: FixtureCapability[] = [];\n\n // the selected channels\n public availableChannels: Map<FixtureProfile, CachedFixtureChannel[]> = new Map<FixtureProfile, CachedFixtureChannel[]>();\n public availableProfiles: FixtureProfile[] = [];\n public selectedProfiles: FixtureProfile[] = [];\n\n @Input() curve: EffectCurve;\n\n // whether the effect is currently being edited (open) or not\n @Input()\n set isSelected(value: boolean) {\n if (value) {\n // start the update timer\n if (!this.gridUpdateSubscription) {\n this.gridUpdateSubscription = timer(0, 15).subscribe(() => {\n this.redraw();\n });\n }\n } else {\n // stop the update timer\n if (this.gridUpdateSubscription) {\n this.gridUpdateSubscription.unsubscribe();\n this.gridUpdateSubscription = undefined;\n }\n }\n }\n\n @ViewChild('curveGrid', { static: true }) curveGrid: ElementRef;\n\n constructor(\n public presetService: PresetService,\n private animationService: AnimationService,\n private fixtureService: FixtureService,\n private translate: TranslateService\n ) {\n this.presetService.fixtureSelectionChanged.subscribe(() => {\n this.updateCapabilitiesAndChannels();\n });\n\n this.updateCapabilitiesAndChannels();\n }\n\n ngOnInit() {\n const canvas = this.curveGrid.nativeElement;\n this.ctx = canvas.getContext('2d');\n this.maxWidth = canvas.width;\n this.maxHeight = canvas.height;\n\n this.redraw();\n }\n\n private drawCurrentValue(currMillis: number, radius: number, lineWidth: number, durationMillis: number, maxHeight: number) {\n const currVal = 1 - this.curve.getValueAtMillis(currMillis);\n\n const x = (this.maxWidth * (currMillis % durationMillis)) / durationMillis;\n const y = maxHeight * currVal + lineWidth;\n\n this.ctx.beginPath();\n this.ctx.arc(x, y, radius, 0, 2 * Math.PI, false);\n this.ctx.fillStyle = '#fff';\n this.ctx.fill();\n this.ctx.lineWidth = 1;\n this.ctx.strokeStyle = '#000';\n this.ctx.stroke();\n }\n\n private getPhasingCount(): number {\n let count = 0;\n const countedDmxChannels: number[] = [];\n\n for (const fixtureUuid of this.presetService.selectedPreset.fixtureUuids) {\n const fixture = this.fixtureService.getFixtureByUuid(fixtureUuid);\n\n if (!countedDmxChannels.includes(fixture.dmxFirstChannel)) {\n count++;\n countedDmxChannels.push(fixture.dmxFirstChannel);\n }\n }\n\n return count;\n }\n\n redraw() {\n this.ctx.clearRect(0, 0, this.maxWidth, this.maxHeight);\n this.ctx.fillStyle = '#fff';\n this.ctx.strokeStyle = '#fff';\n\n // the width of the lines\n const width = 3;\n\n this.ctx.lineWidth = width;\n\n let oldX: number;\n let oldY: number;\n\n let step = 50;\n\n if (length < 500) {\n step = 5;\n }\n\n const durationMillis = this.curve.lengthMillis * Math.max(Math.round(4 - this.curve.lengthMillis / 1000), 1);\n const maxHeight = this.maxHeight - width * 2;\n\n // draw the curve\n for (let i = -step * 2; i < durationMillis + step * 2; i += step) {\n const val = 1 - this.curve.getValueAtMillis(i);\n\n // Scale the values to the grid dimensions\n const x = (this.maxWidth * i) / durationMillis;\n const y = maxHeight * val + width;\n\n if (oldY) {\n this.ctx.beginPath();\n this.ctx.moveTo(oldX, oldY);\n this.ctx.lineTo(x, y);\n this.ctx.stroke();\n }\n\n oldX = x;\n oldY = y;\n }\n\n // draw the current value\n this.drawCurrentValue(this.animationService.timeMillis % durationMillis, 5, width, durationMillis, maxHeight);\n\n // draw the phasing values (chase), if required\n let phasingCount = 0;\n\n if (this.curve.phasingMillis > 0 && this.presetService.selectedPreset) {\n phasingCount = this.getPhasingCount();\n }\n\n for (let i = 1; i < phasingCount; i++) {\n this.drawCurrentValue(\n (this.animationService.timeMillis - i * this.curve.phasingMillis) % durationMillis,\n 3,\n width,\n durationMillis,\n maxHeight\n );\n }\n }\n\n private calculateChannelCapabilities() {\n this.availableChannels = this.presetService.getSelectedProfileChannels(this.selectedProfiles);\n }\n\n changeProfileSelection($event: any, profile: FixtureProfile) {\n if (this.selectedProfiles.indexOf(profile) >= 0) {\n this.selectedProfiles.splice(this.selectedProfiles.indexOf(profile), 1);\n } else {\n this.selectedProfiles.push(profile);\n }\n\n this.calculateChannelCapabilities();\n }\n\n private updateCapabilitiesAndChannels() {\n // capabilities\n this.availableCapabilities = [];\n\n if (this.presetService.hasCapabilityDimmer()) {\n const capability = new FixtureCapability();\n capability.type = FixtureCapabilityType.Intensity;\n this.availableCapabilities.push(capability);\n }\n\n if (this.presetService.hasCapabilityColor()) {\n let capability = new FixtureCapability();\n capability.type = FixtureCapabilityType.ColorIntensity;\n capability.color = FixtureCapabilityColor.Red;\n this.availableCapabilities.push(capability);\n\n capability = new FixtureCapability();\n capability.type = FixtureCapabilityType.ColorIntensity;\n capability.color = FixtureCapabilityColor.Green;\n this.availableCapabilities.push(capability);\n\n capability = new FixtureCapability();\n capability.type = FixtureCapabilityType.ColorIntensity;\n capability.color = FixtureCapabilityColor.Blue;\n this.availableCapabilities.push(capability);\n }\n\n if (this.presetService.hasCapabilityPanTilt()) {\n let capability = new FixtureCapability();\n capability.type = FixtureCapabilityType.Pan;\n this.availableCapabilities.push(capability);\n\n capability = new FixtureCapability();\n capability.type = FixtureCapabilityType.Tilt;\n this.availableCapabilities.push(capability);\n }\n\n // calculate all profiles\n this.availableProfiles = this.presetService.getSelectedProfiles();\n\n // select all profiles by default\n this.selectedProfiles = [...this.availableProfiles];\n\n // calculate all channels\n this.calculateChannelCapabilities();\n }\n\n getCapabilityName(capability: FixtureCapability): Observable<string> {\n return this.translate\n .get(['designer.fixtureCapabilityType.' + capability.type, 'designer.fixtureCapabilityColor.' + capability.color])\n .pipe(\n map((result: string) => {\n let name = '';\n name += result['designer.fixtureCapabilityType.' + capability.type];\n\n if (capability.color) {\n name += ', ' + result['designer.fixtureCapabilityColor.' + capability.color];\n } else {\n return name;\n }\n\n return name;\n })\n );\n }\n\n capabilityChecked(capability: FixtureCapability): boolean {\n for (const existingCapability of this.curve.capabilities) {\n if (\n this.fixtureService.capabilitiesMatch(\n existingCapability.type,\n capability.type,\n existingCapability.color,\n capability.color,\n null,\n null,\n null,\n null\n )\n ) {\n return true;\n }\n }\n return false;\n }\n\n toggleCapability(event: any, capability: FixtureCapability) {\n if (event.currentTarget.checked) {\n // add the capability\n this.curve.capabilities.push(capability);\n } else {\n // Remove the channel\n for (let i = 0; i < this.curve.capabilities.length; i++) {\n const existingCapability = this.curve.capabilities[i];\n if (\n this.fixtureService.capabilitiesMatch(\n existingCapability.type,\n capability.type,\n existingCapability.color,\n capability.color,\n null,\n null,\n null,\n null\n )\n ) {\n this.curve.capabilities.splice(i, 1);\n }\n }\n }\n\n this.presetService.previewLive();\n }\n\n getChannelName(profileName: string, channelName: string) {\n if (this.availableProfiles.length > 1) {\n return profileName + ' - ' + channelName;\n }\n\n return channelName;\n }\n\n channelChecked(profile: FixtureProfile, channel: CachedFixtureChannel): boolean {\n for (const profileChannels of this.curve.channels) {\n if (profileChannels.profileUuid === profile.uuid) {\n if (profileChannels.channels.includes(channel.name)) {\n return true;\n }\n\n break;\n }\n }\n\n return false;\n }\n\n toggleChannel(event: any, profile: FixtureProfile, channel: CachedFixtureChannel) {\n // add the profile, if necessary\n let profileContained = false;\n for (const profileChannels of this.curve.channels) {\n if (profileChannels.profileUuid === profile.uuid) {\n profileContained = true;\n break;\n }\n }\n\n if (!profileContained) {\n const profileChannels = new EffectCurveProfileChannels();\n profileChannels.profileUuid = profile.uuid;\n this.curve.channels.push(profileChannels);\n }\n\n // add or delete the channel\n for (const profileChannels of this.curve.channels) {\n if (profileChannels.profileUuid === profile.uuid) {\n const index = profileChannels.channels.indexOf(channel.name);\n\n if (index >= 0) {\n profileChannels.channels.splice(index, 1);\n } else {\n profileChannels.channels.push(channel.name);\n }\n\n break;\n }\n }\n\n this.presetService.previewLive();\n }\n\n setLengthMillis(value: any) {\n if (!isNaN(value) && value >= this.lengthMillisMin && value <= this.lengthMillisMax) {\n this.curve.lengthMillis = +value;\n this.presetService.previewLive();\n }\n }\n\n setAmplitude(value: any) {\n if (!isNaN(value) && value >= this.amplitudeMin && value <= this.amplitudeMax) {\n this.curve.amplitude = +value;\n this.presetService.previewLive();\n }\n }\n\n setPosition(value: any) {\n if (!isNaN(value) && value >= this.percentageMin && value <= this.percentageMax) {\n this.curve.position = +value;\n this.presetService.previewLive();\n }\n }\n\n setPhaseMillis(value: any) {\n if (!isNaN(value) && value >= this.phaseMillisMin && value <= this.phaseMillisMax) {\n this.curve.phaseMillis = +value;\n this.presetService.previewLive();\n }\n }\n\n setPhasingMillis(value: any) {\n if (!isNaN(value) && value >= this.phasingMillisMin && value <= this.phasingMillisMax) {\n this.curve.phasingMillis = +value;\n this.presetService.previewLive();\n }\n }\n}\n","import { Component, ElementRef, OnInit, ViewChild } from '@angular/core';\n\n@Component({\n selector: 'lib-app-effect-pan-tilt',\n templateUrl: './effect-pan-tilt.component.html',\n styleUrls: ['./effect-pan-tilt.component.css'],\n})\nexport class EffectPanTiltComponent implements OnInit {\n @ViewChild('panTiltGrid') panTiltGrid: ElementRef;\n\n // private line = d3.line();\n private svg;\n private path;\n\n private points = [\n [0, 500],\n [500, 0],\n [1000, 500],\n [500, 1000],\n ];\n\n private dragged = null;\n private selected = this.points[0];\n\n constructor() {}\n\n private redraw() {}\n\n ngOnInit() {}\n}\n","<svg #panTiltGrid class=\"pan-tilt-grid\" width=\"150\" height=\"150\" viewBox=\"-100 -100 1200 1200\" style=\"border: 1px solid white\"></svg>\n","<div class=\"card border-secondary panel h-100\">\n <div class=\"card-body capability-container\" *ngIf=\"presetService.selectedPreset\">\n <div class=\"m-3\">\n <accordion [closeOthers]=\"true\">\n <accordion-group\n *ngFor=\"let item of presetService.selectedPreset.effects; let i = index\"\n [isOpen]=\"effectService.selectedEffect == item\"\n (isOpenChange)=\"openEffect(item, $event)\"\n style=\"margin-top: 1px\"\n >\n <button class=\"btn btn-link btn-block clearfix\" accordion-heading>\n <div class=\"pull-left float-left d-flex w-100\">\n <i *ngIf=\"item.type == 'curve'\" class=\"fa fa-area-chart fa-fw my-auto\" aria-hidden=\"true\"></i>\n <i *ngIf=\"item.type == 'pan-tilt'\" class=\"fa fa-arrows-alt fa-fw my-auto\" aria-hidden=\"true\"></i>\n <span class=\"ml-2\">{{ 'designer.effect.type-' + item.type | translate }}</span>\n <div class=\"ml-auto mr-2\">\n <i\n (click)=\"item.visible = !item.visible; presetService.previewLive(); $event.stopPropagation()\"\n class=\"fa fa-eye fa-fw\"\n [class.text-primary]=\"item.visible\"\n aria-hidden=\"true\"\n ></i>\n </div>\n <div class=\"mr-2\">\n <i (click)=\"this.deleteEffect(item); $event.stopPropagation()\" class=\"fa fa-trash fa-fw\" aria-hidden=\"true\"></i>\n </div>\n <div class=\"mr-2\">\n <i *ngIf=\"item == effectService.selectedEffect\" class=\"fa fa-caret-down fa-fw\" aria-hidden=\"true\"></i>\n <i *ngIf=\"item != effectService.selectedEffect\" class=\"fa fa-caret-right fa-fw\" aria-hidden=\"true\"></i>\n </div>\n </div>\n </button>\n\n <div *ngIf=\"item.type == 'curve'\" style=\"min-width: 670px\">\n <lib-app-effect-curve [curve]=\"item\" [isSelected]=\"item == effectService.selectedEffect\"></lib-app-effect-curve>\n </div>\n\n <div *ngIf=\"item.type == 'pan-tilt'\" style=\"min-width: 500px\">\n <lib-app-effect-pan-tilt></lib-app-effect-pan-tilt>\n </div>\n </accordion-group>\n </accordion>\n\n <div class=\"d-flex mx-auto mt-3\">\n <div class=\"dropdown d-flex\">\n <a\n class=\"btn btn-secondary dropdown-toggle\"\n href=\"#\"\n role=\"button\"\n id=\"dropdownMenuLink\"\n data-toggle=\"dropdown\"\n aria-haspopup=\"true\"\n aria-expanded=\"false\"\n >\n <i class=\"fa fa-plus\" aria-hidden=\"true\"></i> {{ 'designer.effect.add-new' | translate }}\n </a>\n\n <div class=\"dropdown-menu\" aria-labelledby=\"dropdownMenuLink\">\n <a class=\"dropdown-item\" href=\"#\" (click)=\"addCurveEffect(); (false)\">\n <i class=\"fa fa-area-chart fa-fw\" aria-hidden=\"true\"></i> {{ 'designer.effect.curve' | translate }}</a\n >\n <!-- <a class=\"dropdown-item\" href=\"#\" (click)=\"addPanTiltEffect()\">\n <i class=\"fa fa-arrows-alt fa-fw\" aria-hidden=\"true\"></i> Pan/Tilt</a> -->\n </div>\n </div>\n </div>\n </div>\n </div>\n</div>\n","import { Component, OnInit } from '@angular/core';\nimport { map } from 'rxjs/operators';\nimport { Effect } from '../models/effect';\nimport { EffectCurve } from '../models/effect-curve';\nimport { EffectPanTilt } from '../models/effect-pan-tilt';\nimport { EffectService } from '../services/effect.service';\nimport { PresetService } from '../services/preset.service';\nimport { UuidService } from '../services/uuid.service';\nimport { WarningDialogService } from '../services/warning-dialog.service';\n\n@Component({\n selector: 'lib-app-effect',\n templateUrl: './effect.component.html',\n styleUrls: ['./effect.component.css'],\n})\nexport class EffectComponent implements OnInit {\n constructor(\n private uuidService: UuidService,\n public presetService: PresetService,\n public effectService: EffectService,\n private warningDialogService: WarningDialogService\n ) {}\n\n ngOnInit() {}\n\n private addEffect(effect: Effect) {\n this.effectService.selectedEffect = effect;\n\n if (this.presetService.selectedPreset) {\n this.presetService.selectedPreset.effects.push(effect);\n }\n }\n\n addCurveEffect() {\n const effect = new EffectCurve();\n effect.uuid = this.uuidService.getUuid();\n this.addEffect(effect);\n this.presetService.previewLive();\n }\n\n addPanTiltEffect() {\n this.addEffect(new EffectPanTilt());\n }\n\n openEffect(effect: Effect, event: any) {\n if (event) {\n this.effectService.selectedEffect = effect;\n } else {\n if (this.effectService.selectedEffect === effect) {\n this.effectService.selectedEffect = undefined;\n }\n }\n }\n\n deleteEffect(effect: Effect) {\n this.warningDialogService\n .show('designer.effect.delete-warning')\n .pipe(\n map((result) => {\n if (result) {\n this.presetService.selectedPreset.effects.splice(this.presetService.selectedPreset.effects.indexOf(effect), 1);\n this.presetService.previewLive();\n }\n })\n )\n .subscribe();\n }\n}\n","import { Component, HostListener, OnInit } from '@angular/core';\nimport { BsModalRef } from 'ngx-bootstrap/modal';\nimport { Preset } from '../../models/preset';\n\n@Component({\n selector: 'lib-preset-settings',\n templateUrl: './preset-settings.component.html',\n styleUrls: ['./preset-settings.component.css'],\n})\nexport class PresetSettingsComponent implements OnInit {\n preset: Preset;\n\n name: string;\n startMillis: number;\n endMillis: number;\n fadeInMillis: number;\n fadeOutMillis: number;\n fadeInPre: boolean;\n fadeOutPost: boolean;\n\n constructor(public bsModalRef: BsModalRef) {}\n\n ngOnInit() {\n this.name = this.preset.name;\n this.startMillis = this.preset.startMillis;\n this.endMillis = this.preset.endMillis;\n this.fadeInMillis = this.preset.fadeInMillis;\n this.fadeOutMillis = this.preset.fadeOutMillis;\n this.fadeInPre = this.preset.fadeInPre;\n this.fadeOutPost = this.preset.fadeOutPost;\n }\n\n ok() {\n this.preset.name = this.name;\n\n if (this.startMillis === undefined || this.startMillis === null || (this.startMillis as any) === '') {\n this.preset.startMillis = undefined;\n } else if (!isNaN(this.startMillis) && this.startMillis >= 0) {\n this.preset.startMillis = +this.startMillis;\n }\n if (this.endMillis === undefined || this.endMillis === null || (this.endMillis as any) === '') {\n this.preset.endMillis = undefined;\n } else if (!isNaN(this.endMillis) && this.endMillis >= 0) {\n this.preset.endMillis = +this.endMillis;\n }\n if (!isNaN(this.fadeInMillis) && this.fadeInMillis >= 0) {\n this.preset.fadeInMillis = +this.fadeInMillis;\n }\n if (!isNaN(this.fadeOutMillis) && this.fadeOutMillis >= 0) {\n this.preset.fadeOutMillis = +this.fadeOutMillis;\n }\n\n this.preset.fadeInPre = this.fadeInPre;\n this.preset.fadeOutPost = this.fadeOutPost;\n\n this.bsModalRef.hide();\n }\n\n cancel() {\n this.bsModalRef.hide();\n }\n\n @HostListener('document:keydown.enter', ['$event'])\n handleKeyboardEvent(event: any) {\n this.ok();\n }\n}\n","<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","<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","import { Component, OnInit } from '@angular/core';\nimport { BsModalService } from 'ngx-bootstrap/modal';\nimport { Preset } from '../models/preset';\nimport { IntroService } from '../services/intro.service';\nimport { PresetService } from '../services/preset.service';\nimport { ProjectService } from '../services/project.service';\nimport { SceneService } from '../services/scene.service';\nimport { PresetSettingsComponent } from './preset-settings/preset-settings.component';\n\n@Component({\n selector: 'lib-app-preset',\n templateUrl: './preset.component.html',\n styleUrls: ['./preset.component.css'],\n})\nexport class PresetComponent implements OnInit {\n constructor(\n public presetService: PresetService,\n public sceneService: SceneService,\n public projectService: ProjectService,\n public introService: IntroService,\n private modalService: BsModalService\n ) {}\n\n ngOnInit() {}\n\n selectPreset(index: number) {\n this.projectService.project.previewPreset = true;\n this.presetService.selectPreset(index);\n }\n\n enableCheckbox(): boolean {\n return this.sceneService.selectedScenes && this.sceneService.selectedScenes.length === 1;\n }\n\n activatePreset(active: boolean, index: number) {\n if (this.sceneService.selectedScenes && this.sceneService.selectedScenes.length === 1) {\n const uuid = this.projectService.project.presets[index].uuid;\n\n if (active) {\n // Activate a new uuid\n this.sceneService.selectedScenes[0].presetUuids.push(uuid);\n } else {\n // Remove the uuid\n for (let i = 0; i < this.sceneService.selectedScenes[0].presetUuids.length; i++) {\n if (this.sceneService.selectedScenes[0].presetUuids[i] === uuid) {\n this.sceneService.selectedScenes[0].presetUuids.splice(i, 1);\n return;\n }\n }\n }\n }\n }\n\n addPreset() {\n this.presetService.addPreset();\n\n if (this.sceneService.selectedScenes && this.sceneService.selectedScenes.length === 1) {\n this.sceneService.selectedScenes[0].presetUuids.push(this.presetService.selectedPreset.uuid);\n }\n }\n\n removePreset() {\n if (!this.presetService.selectedPreset) {\n return;\n }\n\n this.projectService.project.presets.splice(this.projectService.project.presets.indexOf(this.presetService.selectedPreset), 1);\n this.presetService.selectPreset(0);\n }\n\n openSettings(preset: Preset) {\n const bsModalRef = this.modalService.show(PresetSettingsComponent, {\n keyboard: true,\n ignoreBackdropClick: false,\n class: '',\n initialState: { preset },\n });\n }\n}\n","import { ChangeDetectorRef, Component, OnInit } from '@angular/core';\nimport { PresetService } from '../services/preset.service';\nimport { ProjectService } from '../services/project.service';\n\n@Component({\n selector: 'lib-app-master-dimmer',\n templateUrl: './master-dimmer.component.html',\n styleUrls: ['./master-dimmer.component.css'],\n})\nexport class MasterDimmerComponent implements OnInit {\n constructor(public projectService: ProjectService, private changeDetectorRef: ChangeDetectorRef, private presetService: PresetService) {}\n\n ngOnInit() {}\n\n setValue(value: any) {\n if (isNaN(value)) {\n return;\n }\n\n if (value < 0 || value > 1) {\n return;\n }\n\n this.projectService.project.masterDimmerValue = value;\n this.changeDetectorRef.detectChanges();\n this.presetService.previewLive();\n }\n\n getValue(): number {\n return Math.round(this.projectService.project.masterDimmerValue * 100 * 100) / 100;\n }\n}\n","<div class=\"card border-secondary h-100\">\n <!-- For larger screens vertically -->\n <div class=\"d-none d-md-flex card-body h-100\" style=\"flex-direction: column\">\n <div class=\"mb-3 w-100 d-flex\">\n <i class=\"icon-dimmer m-auto\" style=\"font-size: 2em\"></i>\n </div>\n\n <div class=\"mb-4 w-100 d-flex\">\n <input\n class=\"mx-auto\"\n type=\"text\"\n [ngModel]=\"getValue()\"\n (ngModelChange)=\"setValue($event / 100)\"\n style=\"width: 42px; height: 23px; text-align: center; font-size: 12px; font-family: monospace\"\n />\n </div>\n\n <div class=\"h-100 w-100 d-flex\">\n <mv-slider\n class=\"mx-auto\"\n [value]=\"projectService?.project?.masterDimmerValue\"\n (change)=\"setValue($event.newValue)\"\n [orientation]=\"'vertical'\"\n [reversed]=\"true\"\n style=\"height: 100%\"\n [tooltip]=\"'hide'\"\n [min]=\"0\"\n [max]=\"1\"\n [step]=\"0.001\"\n ></mv-slider>\n </div>\n </div>\n\n <!-- For smaller screens horizontally -->\n <div class=\"d-flex d-md-none card-body h-100\">\n <div class=\"mb-3 d-flex my-auto\">\n <i class=\"icon-dimmer m-auto\" style=\"font-size: 2em\"></i>\n </div>\n\n <div class=\"h-100 w-100 d-flex my-auto mx-3\">\n <mv-slider\n class=\"mx-auto\"\n [value]=\"projectService?.project?.masterDimmerValue\"\n (change)=\"setValue($event.newValue)\"\n [orientation]=\"'horizontal'\"\n style=\"width: 100%\"\n [tooltip]=\"'hide'\"\n [min]=\"0\"\n [max]=\"1\"\n [step]=\"0.001\"\n ></mv-slider>\n </div>\n\n <div class=\"mb-4 d-flex my-auto\">\n <input\n class=\"mx-auto\"\n type=\"text\"\n [ngModel]=\"getValue()\"\n (ngModelChange)=\"setValue($event / 100)\"\n style=\"width: 42px; height: 23px; text-align: center; font-size: 12px; font-family: monospace\"\n />\n </div>\n </div>\n</div>\n","<div class=\"card border-secondary h-100\" [class.capability-deactivated]=\"value == undefined\" style=\"min-height: 200px\">\n <div class=\"card-header\">\n <div class=\"my-auto\">\n <div class=\"form-check\">\n <input\n type=\"checkbox\"\n class=\"form-check-input\"\n id=\"capabilityGeneric{{ capabilityIndex }}Active\"\n [ngModel]=\"value != undefined\"\n (ngModelChange)=\"changeActive($event)\"\n />\n <label class=\"form-check-label\" for=\"capabilityGeneric{{ capabilityIndex }}Active\">\n {{ _channel?.name }}\n </label>\n </div>\n </div>\n </div>\n\n <div class=\"card-body h-100 d-flex\" style=\"flex-direction: column; overflow: hidden\">\n <div class=\"row h-100\">\n <!-- display all options, if there is more than one -->\n <div *ngIf=\"_channel.capabilities?.length > 1\" class=\"col mr-3\" style=\"overflow-y: auto\">\n <div *ngFor=\"let capability of _channel.capabilities; let i = index\" class=\"form-check\">\n <input\n [(ngModel)]=\"selectedCapability\"\n (change)=\"capabilitySelected()\"\n class=\"form-check-input\"\n type=\"radio\"\n name=\"capabilityGeneric{{ capabilityIndex }}Option\"\n id=\"capabilityGeneric{{ capabilityIndex }}Option{{ i }}\"\n [value]=\"capability\"\n />\n <label style=\"max-width: 200px\" class=\"form-check-label\" for=\"capabilityGeneric{{ capabilityIndex }}Option{{ i }}\">\n {{ 'designer.fixtureCapabilityType.' + capability.capability.type | translate\n }}<small><span *ngIf=\"capability.capability.comment\"> - </span> {{ capability.capability.comment }}</small>\n </label>\n </div>\n </div>\n\n <!-- display a slider to select the value for the currently selected capability, if it has a range -->\n <div\n *ngIf=\"capabilityHasRange()\"\n class=\"col col-auto d-flex mx-auto\"\n [class.pl-0]=\"_channel.capabilities?.length > 1\"\n style=\"flex-direction: column\"\n >\n <div class=\"mb-4 w-100 d-flex\">\n <input\n #sliderValue\n class=\"mx-auto\"\n type=\"text\"\n [ngModel]=\"templateValue\"\n (ngModelChange)=\"setValue($event)\"\n style=\"width: 45px; height: 20px; text-align: center; font-size: 12px; font-family: monospace\"\n />\n </div>\n\n <div class=\"h-100 w-100 d-flex\">\n <mv-slider\n #slider\n class=\"mx-auto\"\n [value]=\"templateValue\"\n (change)=\"setValue($event.newValue)\"\n [orientation]=\"'vertical'\"\n [reversed]=\"true\"\n style=\"height: 100%\"\n [tooltip]=\"'hide'\"\n [min]=\"rangeMin\"\n [max]=\"rangeMax\"\n [step]=\"1\"\n ></mv-slider>\n </div>\n </div>\n </div>\n </div>\n</div>\n","import { ChangeDetectionStrategy, ChangeDetectorRef, Component, ElementRef, Input, OnInit, ViewChild } from '@angular/core';\nimport { CachedFixtureCapability } from '../../../models/cached-fixture-capability';\nimport { CachedFixtureChannel } from '../../../models/cached-fixture-channel';\nimport { FixtureProfile } from '../../../models/fixture-profile';\nimport { PresetService } from '../../../services/preset.service';\n\n@Component({\n selector: 'lib-app-fixture-capability-channel',\n templateUrl: './fixture-capability-channel.component.html',\n styleUrls: ['./fixture-capability-channel.component.css'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class FixtureCapabilityChannelComponent implements OnInit {\n @ViewChild('sliderValue', { static: false }) sliderValue: ElementRef;\n\n selectedCapability: CachedFixtureCapability;\n _channel: CachedFixtureChannel;\n\n rangeMin = 0;\n rangeMax = 0;\n defaultValue = 0;\n value = 0;\n templateValue = 0;\n\n valueSetTimer: any;\n\n @Input()\n profile: FixtureProfile;\n\n @Input()\n set channel(value: CachedFixtureChannel) {\n this._channel = value;\n this.updateChannel();\n }\n\n @Input()\n capabilityIndex: number;\n\n constructor(private presetService: PresetService) {}\n\n private updateChannel() {\n this.selectedCapability = this._channel.capabilities[0];\n\n this.value = this.presetService.getChannelValue(this._channel.name, this.profile.uuid);\n this.calculateTemplateValue();\n\n if (this.value >= 0) {\n for (const capability of this._channel.capabilities) {\n if (capability.capability.dmxRange.length > 0 && capability.centerValue === this.value) {\n this.selectedCapability = capability;\n break;\n }\n }\n }\n\n this.rangeMin = this.getRangeMin();\n this.rangeMax = this.getRangeMax();\n this.defaultValue = this.getDefaultValue();\n }\n\n capabilityHasRange(): boolean {\n if (this._channel.capabilities && this._channel.capabilities.length === 1) {\n return true;\n }\n\n if (this.selectedCapability && this.selectedCapability.capability.angleStart) {\n return true;\n }\n\n return false;\n }\n\n private getRangeMin(): number {\n if (this.selectedCapability.capability.dmxRange.length > 0) {\n return this.selectedCapability.capability.dmxRange[0];\n }\n\n return 0;\n }\n\n private getRangeMax(): number {\n if (this.selectedCapability.capability.dmxRange.length > 0) {\n return this.selectedCapability.capability.dmxRange[1];\n }\n\n return this._channel.maxValue;\n }\n\n ngOnInit() {}\n\n setValue(value: any, ignoreCapabilityRange: boolean = false) {\n if (isNaN(value)) {\n return;\n }\n\n if (!ignoreCapabilityRange && (value < this.getRangeMin() || value > this.getRangeMax())) {\n return;\n }\n\n this.value = value;\n this.calculateTemplateValue();\n\n this.presetService.setChannelValue(this._channel.name, this.profile.uuid, value);\n if (this.sliderValue) {\n // update the value without change detector for performance reasons and only in a specific\n // interval. each value set will trigger a layout/reflow event and slow down the performance\n // TODO use the same technique in the dimmer/pan/tilt/color sliders\n if (!this.valueSetTimer) {\n this.valueSetTimer = setTimeout(() => {\n this.sliderValue.nativeElement.value = this.value;\n this.valueSetTimer = undefined;\n }, 30);\n }\n }\n this.presetService.previewLive();\n }\n\n private calculateTemplateValue() {\n this.templateValue = this.value ? this.value : this.getDefaultValue();\n }\n\n private getDefaultValue(): number {\n if (this._channel.defaultValue) {\n return this._channel.defaultValue;\n }\n\n return 0;\n }\n\n changeActive(active: boolean) {\n if (active) {\n this.setValue(this.getDefaultValue(), true);\n } else {\n this.presetService.deleteChannelValue(this._channel.name, this.profile.uuid);\n this.selectedCapability = this._channel.capabilities[0];\n this.value = undefined;\n this.calculateTemplateValue();\n }\n this.presetService.previewLive();\n }\n\n capabilitySelected() {\n // select the center value of the selected capability\n if (this.capabilityHasRange) {\n this.setValue(this.selectedCapability.capability.dmxRange[0], true);\n } else {\n this.setValue(this.selectedCapability.centerValue, true);\n }\n }\n}\n","<div class=\"card border-secondary panel h-100\">\n <div class=\"card-body capability-container d-flex h-100\" style=\"overflow-y: hidden\">\n <!-- h-100 needs to be applied in chrome to avoid performance issues with many layouts (reflows)\n during sliding. But the class must not be applied e.g. in Safari, because the bottom margin is not correct\n anymore afterwards. -->\n <div *ngIf=\"presetService.selectedPreset\" class=\"row m-0 pl-3\" [class.h-100]=\"isChrome()\">\n <!-- profile selection -->\n <div\n *ngIf=\"profiles.length > 1\"\n class=\"col col-auto p-3 my-3 mr-3\"\n style=\"height: calc(100% - 2rem); border: solid 1px #444; border-right: none\"\n >\n <div *ngFor=\"let profile of profiles; let i = index\" class=\"form-check\">\n <input\n type=\"checkbox\"\n class=\"form-check-input\"\n id=\"capabilityFilter{{ i }}\"\n [ngModel]=\"selectedProfiles.indexOf(profile) >= 0\"\n (ngModelChange)=\"changeProfileSelection($event, profile)\"\n />\n <label class=\"form-check-label\" for=\"capabilityFilter{{ i }}\">\n {{ profile.name }}\n </label>\n </div>\n </div>\n\n <!-- all channel capabilities -->\n <ng-container *ngFor=\"let entry of channelCapabilities | keyvalue; let i = index\">\n <div *ngFor=\"let capability of entry.value; let j = index\" class=\"col col-auto p-0 my-3 mr-3\" style=\"height: calc(100% - 2rem)\">\n <lib-app-fixture-capability-channel [profile]=\"entry.key\" [channel]=\"capability\" [capabilityIndex]=\"i * 10000 + j\">\n </lib-app-fixture-capability-channel>\n </div>\n </ng-container>\n\n <!-- fix spacing at the end -->\n <div class=\"col col-auto p-0 my-3 mr-3\">&nbsp;</div>\n </div>\n\n <div *ngIf=\"projectService.project.fixtures.length == 0\" class=\"m-auto\">\n <p class=\"m-auto\" style=\"color: #717171\">{{ 'designer.fixture.no-fixtures' | translate }}</p>\n </div>\n\n <div\n *ngIf=\"\n projectService.project.fixtures.length > 0 && presetService.selectedPreset && presetService.selectedPreset.fixtureUuids.length == 0\n \"\n class=\"m-auto\"\n >\n <p class=\"m-auto\" style=\"color: #717171\">{{ 'designer.fixture.no-fixtures-selected' | translate }}</p>\n </div>\n </div>\n</div>\n","import { ChangeDetectorRef, Component, OnDestroy, OnInit } from '@angular/core';\nimport { Subscription } from 'rxjs';\nimport { CachedFixtureChannel } from '../../models/cached-fixture-channel';\nimport { FixtureProfile } from '../../models/fixture-profile';\nimport { PresetService } from '../../services/preset.service';\nimport { ProjectService } from '../../services/project.service';\n\n@Component({\n selector: 'lib-app-fixture-channel',\n templateUrl: './fixture-channel.component.html',\n styleUrls: ['./fixture-channel.component.css'],\n})\nexport class FixtureChannelComponent implements OnInit, OnDestroy {\n public channelCapabilities: Map<FixtureProfile, CachedFixtureChannel[]> = new Map<FixtureProfile, CachedFixtureChannel[]>();\n public profiles: FixtureProfile[] = [];\n public selectedProfiles: FixtureProfile[] = [];\n\n private fixtureSelectionChangedSubscription: Subscription;\n private previewSelectionChangedSubscription: Subscription;\n\n constructor(public presetService: PresetService, private changeDetectorRef: ChangeDetectorRef, public projectService: ProjectService) {\n this.fixtureSelectionChangedSubscription = this.presetService.fixtureSelectionChanged.subscribe(() => {\n this.calculateProfiles();\n });\n\n this.previewSelectionChangedSubscription = this.presetService.previewSelectionChanged.subscribe(() => {\n this.calculateProfiles();\n });\n }\n\n ngOnInit() {}\n\n ngOnDestroy() {\n this.fixtureSelectionChangedSubscription.unsubscribe();\n this.previewSelectionChangedSubscription.unsubscribe();\n }\n\n private calculateChannelCapabilities() {\n this.channelCapabilities = this.presetService.getSelectedProfileChannels(this.selectedProfiles);\n\n this.changeDetectorRef.detectChanges();\n }\n\n private calculateProfiles() {\n // calculate all profiels\n this.profiles = this.presetService.getSelectedProfiles();\n\n // select all profiles by default\n this.selectedProfiles = [...this.profiles];\n\n this.calculateChannelCapabilities();\n }\n\n changeProfileSelection($event: any, profile: FixtureProfile) {\n if (this.selectedProfiles.indexOf(profile) >= 0) {\n this.selectedProfiles.splice(this.selectedProfiles.indexOf(profile), 1);\n } else {\n this.selectedProfiles.push(profile);\n }\n\n this.calculateChannelCapabilities();\n }\n\n isChrome(): boolean {\n if (navigator.appVersion.indexOf('Chrome/') !== -1) {\n return true;\n }\n return false;\n }\n}\n","<div\n *ngIf=\"introService.showIntro\"\n class=\"card border-secondary h-100 panel card-intro-active\"\n [ngStyle]=\"{\n top: 'calc(' + introService.positionTopPercentage + '% - 150px)',\n left: 'calc(' + introService.positionLeftPercentage + '% - 200px)'\n }\"\n>\n <div class=\"card-header d-flex\">\n <div>\n <i class=\"fa fa-info-circle mr-1\" aria-hidden=\"true\"></i>\n {{ 'designer.intro.title-' + introService.activeStep | translate }}\n </div>\n <div class=\"ml-auto\">\n <a href=\"#\" class=\"btn btn-secondary m-0, p-0\" (click)=\"close(); (false)\"><i class=\"fa fa-times\" aria-hidden=\"true\"></i></a>\n </div>\n </div>\n\n <div class=\"card-body h-100\">\n <p>{{ 'designer.intro.step-' + introService.activeStep | translate }}</p>\n </div>\n\n <div class=\"card-footer\">\n <button *ngIf=\"introService.activeStep != 'start'\" type=\"button\" class=\"btn btn-secondary\" (click)=\"introService.back()\">\n <i class=\"fa fa-chevron-left\" aria-hidden=\"true\"></i> {{ 'designer.intro.back' | translate }}\n </button>\n <button *ngIf=\"introService.activeStep != 'finish'\" type=\"button\" class=\"btn btn-secondary pull-right\" (click)=\"introService.next()\">\n {{ 'designer.intro.next' | translate }} <i class=\"fa fa-chevron-right\" aria-hidden=\"true\"></i>\n </button>\n <button *ngIf=\"introService.activeStep == 'finish'\" type=\"button\" class=\"btn btn-secondary pull-right\" (click)=\"close()\">\n {{ 'designer.intro.close' | translate }}\n </button>\n </div>\n</div>\n","import { Component, OnInit } from '@angular/core';\nimport { IntroService } from '../services/intro.service';\n\n@Component({\n selector: 'lib-app-intro',\n templateUrl: './intro.component.html',\n styleUrls: ['./intro.component.css'],\n})\nexport class IntroComponent implements OnInit {\n constructor(public introService: IntroService) {}\n\n ngOnInit() {}\n\n close() {\n this.introService.setShowIntro(false);\n }\n}\n","<!-- Wrap the whole component inside a div to encapsulate the CSS -->\n\n<!-- 100 % height minus the menu bar above and the gutter size of 13 px -->\n<!-- <div style=\"height: calc(100% - 33px)\"> -->\n<div id=\"designer\" [ngStyle]=\"{ height: 'calc(100% - ' + totalMenuHeightPx + 'px)' }\">\n <!-- Navigation -->\n <nav\n class=\"navbar navbar-expand-lg navbar-light bg-light border-secondary\"\n style=\"border-bottom: 1px solid #444; height: 20px; z-index: 9999\"\n >\n <!-- Menu buttons -->\n <ul class=\"navbar-nav mr-auto\">\n <li class=\"nav-item dropdown\">\n <a class=\"nav-link dropdown-toggle\" href=\"#\" id=\"fileDropdown\" data-toggle=\"dropdown\" aria-haspopup=\"true\" aria-expanded=\"false\">\n {{ 'designer.navigation.project' | translate }}\n </a>\n <div class=\"dropdown-menu\" aria-labelledby=\"fileDropdown\">\n <a class=\"dropdown-item d-none d-md-block\" href=\"#\" (click)=\"projectNew(); (false)\"\n ><i class=\"fa fa-fw fa-file-o\" aria-hidden=\"true\"></i> {{ 'designer.navigation.project-new' | translate }}</a\n >\n <a class=\"dropdown-item\" href=\"#\" (click)=\"projectOpen(); (false)\"\n ><i class=\"fa fa-fw fa-folder-open-o\" aria-hidden=\"true\"></i> {{ 'designer.navigation.project-open' | translate }}</a\n >\n <a class=\"dropdown-item d-none d-md-block\" href=\"#\" (click)=\"projectSave(); (false)\"\n ><i class=\"fa fa-fw fa-floppy-o\" aria-hidden=\"true\"></i> {{ 'designer.navigation.project-save' | translate }}</a\n >\n <a class=\"dropdown-item d-none d-md-block\" href=\"#\" (click)=\"projectSaveAs(); (false)\"\n ><i class=\"fa fa-fw fa-floppy-o\" aria-hidden=\"true\"></i> {{ 'designer.navigation.project-save-as' | translate }}</a\n >\n <a class=\"dropdown-item d-none d-md-block\" href=\"#\" (click)=\"projectImport(); (false)\"\n ><i class=\"fa fa-fw fa-download\" aria-hidden=\"true\"></i> {{ 'designer.navigation.project-import' | translate }}</a\n >\n <a class=\"dropdown-item d-none d-md-block\" href=\"#\" (click)=\"projectExport(); (false)\"\n ><i class=\"fa fa-fw fa-external-link\" aria-hidden=\"true\"></i> {{ 'designer.navigation.project-export' | translate }}</a\n >\n </div>\n </li>\n <li class=\"nav-item dropdown d-none d-md-block\">\n <a\n class=\"nav-link dropdown-toggle\"\n href=\"#\"\n id=\"settingsDropdown\"\n data-toggle=\"dropdown\"\n aria-haspopup=\"true\"\n aria-expanded=\"false\"\n >\n {{ 'designer.navigation.settings' | translate }}\n </a>\n <div class=\"dropdown-menu\" aria-labelledby=\"settingsDropdown\">\n <a class=\"dropdown-item\" href=\"#\" (click)=\"openFixturePool(); (false)\">{{ 'designer.navigation.fixture-pool' | translate }}</a>\n <!-- <a class=\"dropdown-item\" href=\"#\">{{ 'designer.navigation.stage' | translate }}</a> -->\n </div>\n </li>\n <li class=\"nav-item dropdown d-none d-md-block\">\n <a\n class=\"nav-link dropdown-toggle\"\n href=\"#\"\n id=\"settingsDropdown\"\n data-toggle=\"dropdown\"\n aria-haspopup=\"true\"\n aria-expanded=\"false\"\n >\n {{ 'designer.navigation.help' | translate }}\n </a>\n <div class=\"dropdown-menu\" aria-labelledby=\"settingsDropdown\">\n <a class=\"dropdown-item\" href=\"#\" (click)=\"introService.reset(); (false)\">{{ 'designer.navigation.reset-intro' | translate }}</a>\n <a class=\"dropdown-item\" href=\"https://rocketshow.net/support/\" target=\"_blank\">{{\n 'designer.navigation.support' | translate\n }}</a>\n </div>\n </li>\n </ul>\n\n <ul class=\"navbar-nav\">\n <li *ngIf=\"configService.shareAvailable\" class=\"nav-item d-none d-md-flex\" data-toggle=\"collapse\">\n <a class=\"nav-link text-primary\" (click)=\"projectShare(); (false)\" routerLinkActive=\"active\"\n ><i class=\"fa fa-share-alt\" aria-hidden=\"true\"></i> {{ 'designer.navigation.project-share' | translate }}</a\n >\n </li>\n\n <li *ngIf=\"configService.languageSwitch\" class=\"nav-item dropdown\">\n <a class=\"nav-link dropdown-toggle\" href=\"#\" id=\"settingsDropdown\" data-toggle=\"dropdown\" aria-haspopup=\"true\" aria-expanded=\"false\"\n ><i class=\"fa fa-globe\" aria-hidden=\"true\"></i>\n {{ 'designer.misc.language' | translate }}\n </a>\n <div class=\"dropdown-menu dropdown-menu-right\" aria-labelledby=\"settingsDropdown\">\n <a class=\"dropdown-item\" href=\"#\" (click)=\"switchLanguage('en'); (false)\" target=\"_blank\">English</a>\n <a class=\"dropdown-item\" href=\"#\" (click)=\"switchLanguage('de'); (false)\" target=\"_blank\">Deutsch</a>\n </div>\n </li>\n\n <li *ngIf=\"configService.loginAvailable && !userService.isLoggedIn()\" class=\"nav-item\" data-toggle=\"collapse\">\n <a class=\"nav-link\" (click)=\"userRegister(); (false)\" routerLinkActive=\"active\"\n ><i class=\"fa fa-user\" aria-hidden=\"true\"></i> {{ 'designer.navigation.login' | translate }}</a\n >\n </li>\n\n <li *ngIf=\"configService.loginAvailable && userService.isLoggedIn()\" class=\"nav-item dropdown\">\n <a class=\"nav-link dropdown-toggle\" href=\"#\" id=\"settingsDropdown\" data-toggle=\"dropdown\" aria-haspopup=\"true\" aria-expanded=\"false\"\n ><i class=\"fa fa-user\" aria-hidden=\"true\"></i>\n {{ userService.username }}\n </a>\n <div class=\"dropdown-menu dropdown-menu-right\" aria-labelledby=\"settingsDropdown\">\n <a class=\"dropdown-item\" href=\"#\" (click)=\"userService.logout(); (false)\" target=\"_blank\"\n ><i class=\"fa fa-sign-out\" aria-hidden=\"true\"></i> {{ 'designer.navigation.logout' | translate }}</a\n >\n </div>\n </li>\n </ul>\n </nav>\n\n <!-- The main content for larger screens -->\n <div class=\"h-100 d-none d-md-block\">\n <div id=\"row1\" class=\"split split-vertical clearfix pt-3 pl-3\">\n <!-- Scenes -->\n <div id=\"scenes\" class=\"split split-horizontal h-100\">\n <lib-app-scene></lib-app-scene>\n </div>\n\n <!-- Presets -->\n <div id=\"presets\" class=\"split split-horizontal h-100\">\n <lib-app-preset></lib-app-preset>\n </div>\n\n <!-- 3D preview -->\n <div id=\"preview\" class=\"split split-horizontal h-100 pr-3\">\n <div class=\"card border-secondary h-100\" [class.card-intro-active]=\"introService.showStep('preview')\">\n <div class=\"card-body p-0 h-100\">\n <lib-app-preview class=\"h-100\"></lib-app-preview>\n </div>\n </div>\n </div>\n </div>\n\n <div id=\"row2\" class=\"split split-vertical clearfix px-3 d-flex\" style=\"flex-direction: row\">\n <!-- Menu for the capabilities, channels, effects and settings -->\n <div class=\"col col-auto p-0\" style=\"margin-right: -1px\">\n <div class=\"nav flex-column nav-pills\" id=\"v-pills-tab\" role=\"tablist\" aria-orientation=\"vertical\">\n <a\n class=\"nav-link px-3 active\"\n (click)=\"openTab('capabilities')\"\n id=\"v-pills-capabilities-tab\"\n popover=\"{{ 'designer.misc.capabilities' | translate }}\"\n container=\"body\"\n placement=\"right\"\n triggers=\"mouseenter:mouseleave\"\n data-toggle=\"pill\"\n href=\"#v-pills-capabilities\"\n role=\"tab\"\n aria-controls=\"v-pills-capabilities\"\n aria-selected=\"true\"\n >\n <i class=\"fa fa-bolt fa-fw\" aria-hidden=\"true\"></i>\n </a>\n <a\n class=\"nav-link px-3\"\n (click)=\"openTab('channels')\"\n id=\"v-pills-channels-tab\"\n popover=\"{{ 'designer.misc.channels' | translate }}\"\n container=\"body\"\n placement=\"right\"\n triggers=\"mouseenter:mouseleave\"\n data-toggle=\"pill\"\n href=\"#v-pills-channels\"\n role=\"tab\"\n aria-controls=\"v-pills-channels\"\n aria-selected=\"false\"\n >\n <i class=\"fa fa-sliders fa-fw\" aria-hidden=\"true\"></i>\n </a>\n <a\n class=\"nav-link px-3\"\n (click)=\"openTab('effects')\"\n id=\"v-pills-effects-tab\"\n popover=\"{{ 'designer.misc.effects' | translate }}\"\n container=\"body\"\n placement=\"right\"\n triggers=\"mouseenter:mouseleave\"\n data-toggle=\"pill\"\n href=\"#v-pills-effects\"\n role=\"tab\"\n aria-controls=\"v-pills-effects\"\n aria-selected=\"false\"\n >\n <i class=\"fa fa-magic fa-fw\" aria-hidden=\"true\"></i>\n </a>\n <a\n class=\"nav-link px-3\"\n (click)=\"openTab('settings')\"\n id=\"v-pills-settings-tab\"\n popover=\"{{ 'designer.misc.settings' | translate }}\"\n container=\"body\"\n placement=\"right\"\n triggers=\"mouseenter:mouseleave\"\n data-toggle=\"pill\"\n href=\"#v-pills-settings\"\n role=\"tab\"\n aria-controls=\"v-pills-settings\"\n aria-selected=\"false\"\n style=\"border-top: 1px solid #444\"\n >\n <i class=\"fa fa-cog fa-fw\" aria-hidden=\"true\"></i>\n </a>\n </div>\n </div>\n\n <div id=\"capabilities\" class=\"split split-horizontal h-100\" style=\"padding-left: 1rem\">\n <div class=\"row h-100\">\n <!-- Content for the capabilities, channels, effects and settings -->\n <div class=\"col pl-0 h-100\">\n <div class=\"tab-content h-100\" id=\"v-pills-tabContent\">\n <div class=\"tab-pane h-100 show active\" id=\"v-pills-capabilities\" role=\"tabpanel\">\n <lib-app-fixture-capability></lib-app-fixture-capability>\n </div>\n <div class=\"tab-pane h-100 show\" id=\"v-pills-channels\" role=\"tabpanel\">\n <lib-app-fixture-channel></lib-app-fixture-channel>\n </div>\n <div class=\"tab-pane h-100\" id=\"v-pills-effects\" role=\"tabpanel\" aria-labelledby=\"v-pills-profile-tab\">\n <lib-app-effect></lib-app-effect>\n </div>\n <div class=\"tab-pane h-100\" id=\"v-pills-settings\" role=\"tabpanel\" aria-labelledby=\"v-pills-home-tab\">\n <lib-app-fixture-settings></lib-app-fixture-settings>\n </div>\n </div>\n </div>\n </div>\n </div>\n\n <!-- Fixtures -->\n <div id=\"fixtures\" class=\"split split-horizontal h-100\">\n <lib-app-fixture></lib-app-fixture>\n </div>\n\n <!-- Master dimmer -->\n <div id=\"masterDimmer\" class=\"split split-horizontal h-100\">\n <lib-app-master-dimmer></lib-app-master-dimmer>\n </div>\n </div>\n\n <!-- Timeline -->\n <div id=\"row3\" class=\"split split-vertical clearfix px-3 pb-3\" style=\"padding-bottom: 20px\">\n <lib-app-timeline></lib-app-timeline>\n </div>\n </div>\n\n <!-- The components for small screens -->\n <div class=\"d-md-none p-3\">\n <div>\n <lib-app-master-dimmer></lib-app-master-dimmer>\n </div>\n\n <div class=\"mt-3\">\n <lib-app-scene></lib-app-scene>\n </div>\n </div>\n</div>\n\n<lib-app-intro class=\"d-none d-md-flex\"></lib-app-intro>\n","import { AfterViewInit, Component, HostListener, Input, OnInit, ViewChild, ViewEncapsulation } from '@angular/core';\nimport { TranslateService } from '@ngx-translate/core';\nimport { BsModalService } from 'ngx-bootstrap/modal';\nimport { ToastrService } from 'ngx-toastr';\nimport { map } from 'rxjs/operators';\nimport Split from 'split.js';\nimport { PreviewComponent } from './preview/preview.component';\nimport { ProjectBrowserComponent } from './project/project-browser/project-browser.component';\nimport { ProjectImportComponent } from './project/project-import/project-import.component';\nimport { ProjectSaveComponent } from './project/project-save/project-save.component';\nimport { ProjectShareComponent } from './project/project-share/project-share.component';\nimport { ConfigService } from './services/config.service';\nimport { ErrorDialogService } from './services/error-dialog.service';\nimport { FixturePoolService } from './services/fixture-pool.service';\nimport { FixtureService } from './services/fixture.service';\nimport { HotkeyTargetExcludeService } from './services/hotkey-target-exclude.service';\nimport { IntroService } from './services/intro.service';\nimport { ProjectLoadService } from './services/project-load.service';\nimport { ProjectService } from './services/project.service';\nimport { TimelineService } from './services/timeline.service';\nimport { UserEnsureLoginService } from './services/user-ensure-login.service';\nimport { UserService } from './services/user.service';\nimport { WarningDialogService } from './services/warning-dialog.service';\nimport { TimelineComponent } from './timeline/timeline.component';\nimport { UserRegisterComponent } from './user/user-register/user-register.component';\n\n@Component({\n selector: 'lib-designer',\n templateUrl: './designer.component.html',\n styleUrls: ['./designer.component.scss'],\n encapsulation: ViewEncapsulation.None,\n})\nexport class DesignerComponent implements OnInit, AfterViewInit {\n @Input()\n set menuHeightPx(value: number) {\n this.configService.menuHeightPx = value;\n this.configService.menuHeightChanged.next();\n }\n\n @Input()\n set externalCompositionsAvailable(value: boolean) {\n this.timelineService.externalCompositionsAvailable = value;\n }\n\n @Input()\n set restUrl(value: string) {\n this.configService.restUrl = value;\n }\n\n @Input()\n set enableMediaLibrary(value: boolean) {\n this.configService.enableMediaLibrary = value;\n }\n\n @Input()\n set loginAvailable(value: boolean) {\n this.configService.loginAvailable = value;\n }\n\n @Input()\n set shareAvailable(value: boolean) {\n this.configService.shareAvailable = value;\n }\n\n @Input()\n set languageSwitch(value: boolean) {\n this.configService.languageSwitch = value;\n }\n\n @Input()\n set newProjectTemplate(value: boolean) {\n this.configService.newProjectTemplate = value;\n }\n\n @Input()\n set livePreview(value: boolean) {\n this.configService.livePreview = value;\n }\n\n @Input()\n set localProfiles(value: boolean) {\n this.configService.localProfiles = value;\n }\n\n @Input()\n set intro(value: boolean) {\n this.configService.intro = value;\n this.introService.refresh();\n }\n\n @Input()\n set uniqueProjectNames(value: boolean) {\n this.configService.uniqueProjectNames = value;\n }\n\n // the size of the menu used in the designer\n private designerMenuSizePx = 20;\n\n private splitGutterSizePx = 13;\n\n public totalMenuHeightPx = 0;\n\n currentTab = 'properties';\n\n @ViewChild(PreviewComponent)\n previewComponent: PreviewComponent;\n\n @ViewChild(TimelineComponent)\n timelineComponent: TimelineComponent;\n\n constructor(\n private translateService: TranslateService,\n private projectService: ProjectService,\n public configService: ConfigService,\n private fixturePoolService: FixturePoolService,\n private hotkeyTargetExcludeService: HotkeyTargetExcludeService,\n private modalService: BsModalService,\n public userService: UserService,\n private userEnsureLoginService: UserEnsureLoginService,\n private toastrService: ToastrService,\n private projectLoadService: ProjectLoadService,\n private warningDialogService: WarningDialogService,\n private errorDialogService: ErrorDialogService,\n private fixtureService: FixtureService,\n private timelineService: TimelineService,\n public introService: IntroService\n ) {\n this.configService.menuHeightChanged.subscribe(() => {\n this.calcTotalMenuHeight();\n });\n }\n\n ngOnInit() {\n if (localStorage.getItem('language')) {\n this.translateService.use(localStorage.getItem('language'));\n } else {\n this.translateService.use('en');\n }\n\n this.calcTotalMenuHeight();\n\n const urlParams = new URLSearchParams(window.location.search);\n const projectId = urlParams.get('id');\n const projectName = urlParams.get('name');\n let shareToken = urlParams.get('token');\n\n if (projectId) {\n // load a project by query param ID\n if (!shareToken) {\n shareToken = '';\n }\n\n this.projectLoadService.load(Number.parseInt(projectId, 10), projectName, shareToken).subscribe(\n () => {},\n (response) => {\n let error = response && response.error ? response.error.error : 'unknown';\n\n let msg = '';\n\n if (error === 'no-permission') {\n msg = 'designer.project.open-no-permission-error';\n error = undefined;\n } else {\n msg = 'designer.project.open-error';\n }\n\n this.errorDialogService.show(msg, error).subscribe(() => {\n this.projectLoadService.new();\n });\n }\n );\n } else if (\n (this.userService.isLoggedIn() || !this.configService.loginAvailable) &&\n (this.userService.getAutoLoadProjectId() || this.userService.getAutoLoadProjectName())\n ) {\n // restore the last saved project\n this.projectLoadService.load(this.userService.getAutoLoadProjectId(), this.userService.getAutoLoadProjectName()).subscribe(\n () => {},\n (response) => {\n const msg = 'designer.project.open-error';\n const error = response && response.error ? response.error.error : 'unknown';\n\n this.errorDialogService.show(msg, error).subscribe(() => {\n this.projectLoadService.new();\n });\n }\n );\n } else {\n if (this.configService.newProjectTemplate) {\n // load the new project template\n this.projectLoadService.template();\n } else {\n this.projectLoadService.new();\n }\n }\n }\n\n private calcTotalMenuHeight() {\n this.totalMenuHeightPx = this.designerMenuSizePx + this.splitGutterSizePx + this.configService.menuHeightPx;\n }\n\n private onResize() {\n if (this.previewComponent) {\n this.previewComponent.onResize();\n }\n\n if (this.timelineComponent) {\n this.timelineComponent.onResize();\n }\n }\n\n ngAfterViewInit(): void {\n // Set up the splitter\n setTimeout(() => {\n Split(['#row1', '#row2', '#row3'], {\n sizes: [42, 38, 20],\n direction: 'vertical',\n cursor: 'row-resize',\n snapOffset: 0,\n gutterSize: this.splitGutterSizePx,\n onDrag: this.onResize.bind(this),\n });\n\n Split(['#scenes', '#presets', '#preview'], {\n sizes: [15, 15, 70],\n snapOffset: 0,\n gutterSize: this.splitGutterSizePx,\n onDrag: this.onResize.bind(this),\n });\n\n Split(['#capabilities', '#fixtures', '#masterDimmer'], {\n sizes: [74, 18, 8],\n snapOffset: 0,\n gutterSize: this.splitGutterSizePx,\n onDrag: this.onResize.bind(this),\n minSize: 50,\n });\n\n this.onResize();\n });\n }\n\n openTab(tab: string) {\n // open a side tab (e.g. effects, channels, settings, etc.)\n\n if (tab === 'settings') {\n this.fixtureService.settingsSelection = true;\n } else {\n this.fixtureService.settingsSelection = false;\n }\n\n this.currentTab = tab;\n }\n\n openFixturePool() {\n this.fixturePoolService.open();\n }\n\n projectNew() {\n this.warningDialogService\n .show('designer.misc.warning-proceed-unsaved')\n .pipe(\n map((result) => {\n if (result) {\n this.projectLoadService.new();\n }\n })\n )\n .subscribe();\n }\n\n projectOpen() {\n this.warningDialogService\n .show('designer.misc.warning-proceed-unsaved')\n .pipe(\n map((result) => {\n if (result) {\n this.userEnsureLoginService.login().subscribe(() => {\n this.modalService.show(ProjectBrowserComponent, { keyboard: true, ignoreBackdropClick: false });\n });\n }\n })\n )\n .subscribe();\n }\n\n projectSave() {\n if (this.projectService.project.name) {\n // this project has been saved before -> just save it again\n this.projectService.save(this.projectService.project);\n } else {\n // this project has not yet been saved -> show the save as-dialog\n this.userEnsureLoginService.login().subscribe(() => {\n this.modalService.show(ProjectSaveComponent, { keyboard: true, ignoreBackdropClick: false });\n });\n }\n }\n\n projectSaveAs() {\n this.userEnsureLoginService.login().subscribe(() => {\n this.modalService.show(ProjectSaveComponent, { keyboard: true, ignoreBackdropClick: false });\n });\n }\n\n userRegister() {\n this.modalService.show(UserRegisterComponent, { keyboard: true, ignoreBackdropClick: false });\n }\n\n projectImport() {\n this.warningDialogService\n .show('designer.misc.warning-proceed-unsaved')\n .pipe(\n map((result) => {\n if (result) {\n this.modalService.show(ProjectImportComponent, { keyboard: true, ignoreBackdropClick: false });\n }\n })\n )\n .subscribe();\n }\n\n projectExport() {\n const json = JSON.stringify(this.projectService.project, null, 2);\n const element = document.createElement('a');\n element.setAttribute('href', 'data:text/json;charset=UTF-8,' + encodeURIComponent(json));\n element.setAttribute('download', this.projectService.project.name + '.rsd');\n element.style.display = 'none';\n document.body.appendChild(element);\n element.click();\n document.body.removeChild(element);\n }\n\n projectShare() {\n if (!this.projectService.project.id) {\n // a save is required first\n this.errorDialogService.show('designer.project.share-no-save').subscribe();\n return;\n }\n\n // ignore backdrop click, because selecting the link text will also close the modal\n this.modalService.show(ProjectShareComponent, { keyboard: true, ignoreBackdropClick: true });\n }\n\n @HostListener('document:keydown', ['$event'])\n handleKeyboardEvent(event: any) {\n if (this.hotkeyTargetExcludeService.exclude(event)) {\n return;\n }\n\n if (event.key === 'p') {\n this.openFixturePool();\n\n // prevent checkboxes being toggled, if in focus e.g.\n event.stopPropagation();\n event.preventDefault();\n }\n\n if ((event.ctrlKey || event.metaKey) && event.key === 'n') {\n this.projectNew();\n event.stopPropagation();\n event.preventDefault();\n }\n\n if ((event.ctrlKey || event.metaKey) && event.key === 's') {\n this.projectSave();\n event.stopPropagation();\n event.preventDefault();\n }\n\n if ((event.ctrlKey || event.metaKey) && event.key === 'o') {\n this.projectOpen();\n event.stopPropagation();\n event.preventDefault();\n }\n }\n\n switchLanguage(language: string) {\n this.translateService.use(language);\n localStorage.setItem('language', language);\n }\n}\n","import { HttpClientModule } from '@angular/common/http';\nimport { NgModule } from '@angular/core';\nimport { FormsModule } from '@angular/forms';\nimport { BrowserModule } from '@angular/platform-browser';\nimport { BrowserAnimationsModule } from '@angular/platform-browser/animations';\nimport { RouterModule } from '@angular/router';\nimport { TranslateModule } from '@ngx-translate/core';\nimport { NgxBootstrapSliderModule } from 'ngx-bootstrap-slider';\nimport { AccordionModule } from 'ngx-bootstrap/accordion';\nimport { PopoverModule } from 'ngx-bootstrap/popover';\nimport { TypeaheadModule } from 'ngx-bootstrap/typeahead';\nimport { DropzoneModule } from 'ngx-dropzone-wrapper';\nimport { SortablejsModule } from 'ngx-sortablejs-plus';\nimport { ToastrModule } from 'ngx-toastr';\nimport { ArraySortPipe } from './array-sort-pipe';\nimport { DesignerComponent } from './designer.component';\nimport { EffectCurveComponent } from './effect/effect-curve/effect-curve.component';\nimport { EffectPanTiltComponent } from './effect/effect-pan-tilt/effect-pan-tilt.component';\nimport { EffectComponent } from './effect/effect.component';\nimport { ErrorDialogComponent } from './error-dialog/error-dialog.component';\nimport { FixturePoolCreateFromFileComponent } from './fixture-pool/fixture-pool-create-from-file/fixture-pool-create-from-file.component';\nimport { FixturePoolComponent } from './fixture-pool/fixture-pool.component';\nimport { FixtureCapabilityChannelComponent } from './fixture/fixture-capability/fixture-capability-channel/fixture-capability-channel.component';\nimport { FixtureCapabilityColorWheelComponent } from './fixture/fixture-capability/fixture-capability-color-wheel/fixture-capability-color-wheel.component';\nimport { FixtureCapabilityColorComponent } from './fixture/fixture-capability/fixture-capability-color/fixture-capability-color.component';\nimport { FixtureCapabilityDimmerComponent } from './fixture/fixture-capability/fixture-capability-dimmer/fixture-capability-dimmer.component';\nimport { FixtureCapabilityPanTiltComponent } from './fixture/fixture-capability/fixture-capability-pan-tilt/fixture-capability-pan-tilt.component';\nimport { FixtureCapabilityComponent } from './fixture/fixture-capability/fixture-capability.component';\nimport { FixtureChannelComponent } from './fixture/fixture-channel/fixture-channel.component';\nimport { FixtureSettingsPositionComponent } from './fixture/fixture-settings/fixture-settings-position/fixture-settings-position.component';\nimport { FixtureSettingsStageComponent } from './fixture/fixture-settings/fixture-settings-stage/fixture-settings-stage.component';\nimport { FixtureSettingsComponent } from './fixture/fixture-settings/fixture-settings.component';\nimport { FixtureComponent } from './fixture/fixture.component';\nimport { IntroComponent } from './intro/intro.component';\nimport { MasterDimmerComponent } from './master-dimmer/master-dimmer.component';\nimport { PresetSettingsComponent } from './preset/preset-settings/preset-settings.component';\nimport { PresetComponent } from './preset/preset.component';\nimport { PreviewComponent } from './preview/preview.component';\nimport { ProjectBrowserComponent } from './project/project-browser/project-browser.component';\nimport { ProjectImportComponent } from './project/project-import/project-import.component';\nimport { ProjectSaveComponent } from './project/project-save/project-save.component';\nimport { ProjectShareComponent } from './project/project-share/project-share.component';\nimport { SceneSettingsComponent } from './scene/scene-settings/scene-settings.component';\nimport { SceneComponent } from './scene/scene.component';\nimport { CompositionSettingsComponent } from './timeline/composition-settings/composition-settings.component';\nimport { TimelineGridComponent } from './timeline/timeline-grid/timeline-grid.component';\nimport { TimelineComponent } from './timeline/timeline.component';\nimport { UserLoginComponent } from './user/user-login/user-login.component';\nimport { UserRegisterComponent } from './user/user-register/user-register.component';\nimport { WaitDialogComponent } from './wait-dialog/wait-dialog.component';\nimport { WarningDialogComponent } from './warning-dialog/warning-dialog.component';\n\n@NgModule({\n declarations: [\n DesignerComponent,\n WarningDialogComponent,\n PreviewComponent,\n EffectCurveComponent,\n EffectPanTiltComponent,\n SceneComponent,\n TimelineComponent,\n FixtureCapabilityColorComponent,\n FixtureComponent,\n FixtureSettingsPositionComponent,\n FixtureCapabilityComponent,\n FixtureSettingsComponent,\n EffectComponent,\n FixturePoolComponent,\n PresetComponent,\n MasterDimmerComponent,\n FixtureCapabilityDimmerComponent,\n TimelineGridComponent,\n CompositionSettingsComponent,\n ArraySortPipe,\n FixtureCapabilityPanTiltComponent,\n FixtureCapabilityChannelComponent,\n FixtureChannelComponent,\n FixtureCapabilityColorWheelComponent,\n UserLoginComponent,\n UserRegisterComponent,\n ProjectBrowserComponent,\n WaitDialogComponent,\n ProjectImportComponent,\n ProjectShareComponent,\n ErrorDialogComponent,\n FixtureSettingsStageComponent,\n IntroComponent,\n PresetSettingsComponent,\n SceneSettingsComponent,\n ProjectSaveComponent,\n FixturePoolCreateFromFileComponent,\n ],\n imports: [\n RouterModule.forRoot([], {}),\n BrowserModule,\n BrowserAnimationsModule,\n HttpClientModule,\n FormsModule,\n NgxBootstrapSliderModule,\n TranslateModule,\n AccordionModule,\n PopoverModule,\n TypeaheadModule,\n SortablejsModule,\n DropzoneModule,\n ToastrModule.forRoot({\n newestOnTop: true,\n }),\n ],\n exports: [DesignerComponent],\n})\nexport class DesignerModule {}\n","/*\n * Public API Surface of designer\n */\n\nexport * from './lib/designer.service';\nexport * from './lib/designer.component';\nexport * from './lib/designer.module';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":["i1.UuidService","i2","i3.UserService","i5","i6","i2.ProjectService","i3","i4","i5.UuidService","i1.EffectService","i2.UuidService","i3.ProjectService","i4.FixtureService","i5.ConfigService","i7.AnimationService","i2.EffectService","i3.PresetService","i4.ProjectService","i1.SceneService","i2.PresetService","i1.PresetService","i2.FixtureService","i3.SceneService","i4.TimelineService","i5.UniverseService","i6.ProjectService","i1.FixtureService","i2.PreviewMeshService","i3.AnimationService","i4.PreviewService","i5.TimelineService","i1.ProjectService","i2.PreviewService","i3.FixtureService","i4.PresetService","i5.SceneService","i7.UuidService","i8.TimelineService","i9","i1","i3.ProjectLoadService","i4.UserService","i5.WarningDialogService","i6.ConfigService","i4.ProjectLoadService","i3.WarningDialogService","i4.ConfigService","i5.ProjectService","i3.UuidService","i5.PreviewService","i7","i8.PresetService","i9.ConfigService","i1.ConfigService","i2.UserService","i1.UserService","i3.ConfigService","i2.TimelineService","i6.WarningDialogService","i8.ProjectService","i1.TimelineService","i5.HotkeyTargetExcludeService","i8.ConfigService","i9.PresetService","i10.IntroService","i5.IntroService","i3.FixturePoolService","i4.IntroService","i2.AnimationService","i3.EffectService","i4.WarningDialogService","i2.SceneService","_c0","i1.IntroService","i4.FixturePoolService","i7.UserService","i8.UserEnsureLoginService","i10.ProjectLoadService","i11.WarningDialogService","i12.ErrorDialogService","i13.FixtureService","i14.TimelineService","i15.IntroService"],"mappings":"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"}