@rocketshow/designer 1.32.0 → 1.33.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (339) hide show
  1. package/esm2022/lib/array-sort-pipe.mjs +30 -0
  2. package/esm2022/lib/designer.component.mjs +605 -0
  3. package/esm2022/lib/designer.module.mjs +183 -0
  4. package/esm2022/lib/designer.service.mjs +14 -0
  5. package/esm2022/lib/effect/effect-curve/effect-curve.component.mjs +569 -0
  6. package/esm2022/lib/effect/effect-pan-tilt/effect-pan-tilt.component.mjs +36 -0
  7. package/esm2022/lib/effect/effect.component.mjs +174 -0
  8. package/esm2022/lib/error-dialog/error-dialog.component.mjs +75 -0
  9. package/esm2022/lib/fixture/fixture-capability/fixture-capability-channel/fixture-capability-channel.component.mjs +222 -0
  10. package/esm2022/lib/fixture/fixture-capability/fixture-capability-color/fixture-capability-color.component.mjs +147 -0
  11. package/esm2022/lib/fixture/fixture-capability/fixture-capability-color-wheel/fixture-capability-color-wheel.component.mjs +213 -0
  12. package/esm2022/lib/fixture/fixture-capability/fixture-capability-dimmer/fixture-capability-dimmer.component.mjs +78 -0
  13. package/esm2022/lib/fixture/fixture-capability/fixture-capability-pan-tilt/fixture-capability-pan-tilt.component.mjs +119 -0
  14. package/esm2022/lib/fixture/fixture-capability/fixture-capability.component.mjs +169 -0
  15. package/esm2022/lib/fixture/fixture-channel/fixture-channel.component.mjs +160 -0
  16. package/esm2022/lib/fixture/fixture-settings/fixture-settings-position/fixture-settings-position.component.mjs +365 -0
  17. package/esm2022/lib/fixture/fixture-settings/fixture-settings-stage/fixture-settings-stage.component.mjs +151 -0
  18. package/esm2022/lib/fixture/fixture-settings/fixture-settings.component.mjs +46 -0
  19. package/esm2022/lib/fixture/fixture.component.mjs +138 -0
  20. package/esm2022/lib/fixture-pool/fixture-pool-create-from-file/fixture-pool-create-from-file.component.mjs +145 -0
  21. package/esm2022/lib/fixture-pool/fixture-pool.component.mjs +589 -0
  22. package/esm2022/lib/intro/intro.component.mjs +95 -0
  23. package/esm2022/lib/master-dimmer/master-dimmer.component.mjs +66 -0
  24. package/esm2022/lib/models/cached-fixture-capability.mjs +9 -0
  25. package/esm2022/lib/models/cached-fixture-channel.mjs +7 -0
  26. package/esm2022/lib/models/cached-fixture.mjs +6 -0
  27. package/esm2022/lib/models/color.mjs +8 -0
  28. package/esm2022/lib/models/composition.mjs +46 -0
  29. package/esm2022/lib/models/effect-curve-profile-channel.mjs +15 -0
  30. package/esm2022/lib/models/effect-curve.mjs +69 -0
  31. package/esm2022/lib/models/effect-pan-tilt.mjs +19 -0
  32. package/esm2022/lib/models/effect.mjs +12 -0
  33. package/esm2022/lib/models/fixture-capability-value.mjs +15 -0
  34. package/esm2022/lib/models/fixture-capability.mjs +84 -0
  35. package/esm2022/lib/models/fixture-channel-value.mjs +11 -0
  36. package/esm2022/lib/models/fixture-channel.mjs +24 -0
  37. package/esm2022/lib/models/fixture-mode.mjs +14 -0
  38. package/esm2022/lib/models/fixture-profile.mjs +70 -0
  39. package/esm2022/lib/models/fixture-wheel-slot.mjs +26 -0
  40. package/esm2022/lib/models/fixture-wheel.mjs +15 -0
  41. package/esm2022/lib/models/fixture.mjs +40 -0
  42. package/esm2022/lib/models/preset-region-scene.mjs +8 -0
  43. package/esm2022/lib/models/preset.mjs +56 -0
  44. package/esm2022/lib/models/project.mjs +68 -0
  45. package/esm2022/lib/models/scene-playback-region.mjs +11 -0
  46. package/esm2022/lib/models/scene.mjs +27 -0
  47. package/esm2022/lib/models/universe.mjs +11 -0
  48. package/esm2022/lib/preset/preset-settings/preset-settings.component.mjs +194 -0
  49. package/esm2022/lib/preset/preset.component.mjs +131 -0
  50. package/esm2022/lib/preview/models/color-changer-3d.mjs +167 -0
  51. package/esm2022/lib/preview/models/fixture-3d.mjs +150 -0
  52. package/esm2022/lib/preview/models/moving-head-3d.mjs +243 -0
  53. package/esm2022/lib/preview/preview.component.mjs +212 -0
  54. package/esm2022/lib/project/project-browser/project-browser.component.mjs +143 -0
  55. package/esm2022/lib/project/project-import/project-import.component.mjs +107 -0
  56. package/esm2022/lib/project/project-save/project-save.component.mjs +178 -0
  57. package/esm2022/lib/project/project-share/project-share.component.mjs +71 -0
  58. package/esm2022/lib/scene/scene-settings/scene-settings.component.mjs +146 -0
  59. package/esm2022/lib/scene/scene.component.mjs +110 -0
  60. package/esm2022/lib/services/animation.service.mjs +16 -0
  61. package/esm2022/lib/services/config.service.mjs +27 -0
  62. package/esm2022/lib/services/effect.service.mjs +14 -0
  63. package/esm2022/lib/services/error-dialog.service.mjs +39 -0
  64. package/esm2022/lib/services/fixture-pool.service.mjs +30 -0
  65. package/esm2022/lib/services/fixture.service.mjs +431 -0
  66. package/esm2022/lib/services/hotkey-target-exclude.service.mjs +24 -0
  67. package/esm2022/lib/services/intro.service.mjs +140 -0
  68. package/esm2022/lib/services/preset.service.mjs +400 -0
  69. package/esm2022/lib/services/preview-mesh.service.mjs +57 -0
  70. package/esm2022/lib/services/preview.service.mjs +496 -0
  71. package/esm2022/lib/services/project-load.service.mjs +149 -0
  72. package/esm2022/lib/services/project.service.mjs +97 -0
  73. package/esm2022/lib/services/scene.service.mjs +164 -0
  74. package/esm2022/lib/services/timeline.service.mjs +726 -0
  75. package/esm2022/lib/services/universe.service.mjs +23 -0
  76. package/esm2022/lib/services/user-ensure-login.service.mjs +38 -0
  77. package/esm2022/lib/services/user.service.mjs +89 -0
  78. package/esm2022/lib/services/uuid.service.mjs +23 -0
  79. package/esm2022/lib/services/warning-dialog.service.mjs +38 -0
  80. package/esm2022/lib/timeline/composition-settings/composition-settings.component.mjs +334 -0
  81. package/esm2022/lib/timeline/timeline-grid/timeline-grid.component.mjs +216 -0
  82. package/esm2022/lib/timeline/timeline.component.mjs +418 -0
  83. package/esm2022/lib/user/user-login/user-login.component.mjs +144 -0
  84. package/esm2022/lib/user/user-register/user-register.component.mjs +220 -0
  85. package/esm2022/lib/wait-dialog/wait-dialog.component.mjs +26 -0
  86. package/esm2022/lib/warning-dialog/warning-dialog.component.mjs +68 -0
  87. package/esm2022/public_api.mjs +7 -0
  88. package/esm2022/rocketshow-designer.mjs +5 -0
  89. package/fesm2022/rocketshow-designer.mjs +10626 -0
  90. package/fesm2022/rocketshow-designer.mjs.map +1 -0
  91. package/index.d.ts +5 -0
  92. package/lib/array-sort-pipe.d.ts +3 -0
  93. package/lib/designer.component.d.ts +15 -12
  94. package/lib/designer.module.d.ts +54 -0
  95. package/lib/designer.service.d.ts +3 -0
  96. package/lib/effect/effect-curve/effect-curve.component.d.ts +4 -1
  97. package/lib/effect/effect-pan-tilt/effect-pan-tilt.component.d.ts +3 -0
  98. package/lib/effect/effect.component.d.ts +3 -0
  99. package/lib/error-dialog/error-dialog.component.d.ts +3 -0
  100. package/lib/fixture/fixture-capability/fixture-capability-channel/fixture-capability-channel.component.d.ts +4 -1
  101. package/lib/fixture/fixture-capability/fixture-capability-color/fixture-capability-color.component.d.ts +3 -0
  102. package/lib/fixture/fixture-capability/fixture-capability-color-wheel/fixture-capability-color-wheel.component.d.ts +5 -2
  103. package/lib/fixture/fixture-capability/fixture-capability-dimmer/fixture-capability-dimmer.component.d.ts +3 -0
  104. package/lib/fixture/fixture-capability/fixture-capability-pan-tilt/fixture-capability-pan-tilt.component.d.ts +3 -0
  105. package/lib/fixture/fixture-capability/fixture-capability.component.d.ts +3 -0
  106. package/lib/fixture/fixture-channel/fixture-channel.component.d.ts +3 -0
  107. package/lib/fixture/fixture-settings/fixture-settings-position/fixture-settings-position.component.d.ts +3 -0
  108. package/lib/fixture/fixture-settings/fixture-settings-stage/fixture-settings-stage.component.d.ts +3 -0
  109. package/lib/fixture/fixture-settings/fixture-settings.component.d.ts +3 -0
  110. package/lib/fixture/fixture.component.d.ts +3 -0
  111. package/lib/fixture-pool/fixture-pool-create-from-file/fixture-pool-create-from-file.component.d.ts +3 -0
  112. package/lib/fixture-pool/fixture-pool.component.d.ts +3 -0
  113. package/lib/intro/intro.component.d.ts +3 -0
  114. package/lib/master-dimmer/master-dimmer.component.d.ts +3 -0
  115. package/lib/preset/preset-settings/preset-settings.component.d.ts +3 -0
  116. package/lib/preset/preset.component.d.ts +3 -0
  117. package/lib/preview/preview.component.d.ts +4 -4
  118. package/lib/project/project-browser/project-browser.component.d.ts +3 -0
  119. package/lib/project/project-import/project-import.component.d.ts +3 -0
  120. package/lib/project/project-save/project-save.component.d.ts +3 -0
  121. package/lib/project/project-share/project-share.component.d.ts +3 -0
  122. package/lib/scene/scene-settings/scene-settings.component.d.ts +3 -0
  123. package/lib/scene/scene.component.d.ts +3 -0
  124. package/lib/services/animation.service.d.ts +3 -0
  125. package/lib/services/config.service.d.ts +3 -0
  126. package/lib/services/effect.service.d.ts +3 -0
  127. package/lib/services/error-dialog.service.d.ts +3 -0
  128. package/lib/services/fixture-pool.service.d.ts +3 -0
  129. package/lib/services/fixture.service.d.ts +3 -0
  130. package/lib/services/hotkey-target-exclude.service.d.ts +3 -0
  131. package/lib/services/intro.service.d.ts +3 -0
  132. package/lib/services/preset.service.d.ts +3 -0
  133. package/lib/services/preview-mesh.service.d.ts +3 -0
  134. package/lib/services/preview.service.d.ts +4 -0
  135. package/lib/services/project-load.service.d.ts +3 -0
  136. package/lib/services/project.service.d.ts +3 -0
  137. package/lib/services/scene.service.d.ts +3 -0
  138. package/lib/services/timeline.service.d.ts +4 -1
  139. package/lib/services/universe.service.d.ts +3 -0
  140. package/lib/services/user-ensure-login.service.d.ts +3 -0
  141. package/lib/services/user.service.d.ts +3 -0
  142. package/lib/services/uuid.service.d.ts +3 -0
  143. package/lib/services/warning-dialog.service.d.ts +3 -0
  144. package/lib/timeline/composition-settings/composition-settings.component.d.ts +3 -0
  145. package/lib/timeline/timeline-grid/timeline-grid.component.d.ts +3 -0
  146. package/lib/timeline/timeline.component.d.ts +3 -0
  147. package/lib/user/user-login/user-login.component.d.ts +3 -0
  148. package/lib/user/user-register/user-register.component.d.ts +3 -0
  149. package/lib/wait-dialog/wait-dialog.component.d.ts +3 -0
  150. package/lib/warning-dialog/warning-dialog.component.d.ts +3 -0
  151. package/package.json +20 -22
  152. package/rocketshow-designer-1.33.0.tgz +0 -0
  153. package/bundles/rocketshow-designer.umd.js +0 -9966
  154. package/bundles/rocketshow-designer.umd.js.map +0 -1
  155. package/bundles/rocketshow-designer.umd.min.js +0 -17
  156. package/bundles/rocketshow-designer.umd.min.js.map +0 -1
  157. package/esm2015/lib/array-sort-pipe.js +0 -28
  158. package/esm2015/lib/designer.component.js +0 -411
  159. package/esm2015/lib/designer.module.js +0 -117
  160. package/esm2015/lib/designer.service.js +0 -16
  161. package/esm2015/lib/effect/effect-curve/effect-curve.component.js +0 -325
  162. package/esm2015/lib/effect/effect-pan-tilt/effect-pan-tilt.component.js +0 -30
  163. package/esm2015/lib/effect/effect.component.js +0 -73
  164. package/esm2015/lib/error-dialog/error-dialog.component.js +0 -42
  165. package/esm2015/lib/fixture/fixture-capability/fixture-capability-channel/fixture-capability-channel.component.js +0 -141
  166. package/esm2015/lib/fixture/fixture-capability/fixture-capability-color/fixture-capability-color.component.js +0 -128
  167. package/esm2015/lib/fixture/fixture-capability/fixture-capability-color-wheel/fixture-capability-color-wheel.component.js +0 -163
  168. package/esm2015/lib/fixture/fixture-capability/fixture-capability-dimmer/fixture-capability-dimmer.component.js +0 -60
  169. package/esm2015/lib/fixture/fixture-capability/fixture-capability-pan-tilt/fixture-capability-pan-tilt.component.js +0 -87
  170. package/esm2015/lib/fixture/fixture-capability/fixture-capability.component.js +0 -97
  171. package/esm2015/lib/fixture/fixture-channel/fixture-channel.component.js +0 -66
  172. package/esm2015/lib/fixture/fixture-settings/fixture-settings-position/fixture-settings-position.component.js +0 -200
  173. package/esm2015/lib/fixture/fixture-settings/fixture-settings-stage/fixture-settings-stage.component.js +0 -31
  174. package/esm2015/lib/fixture/fixture-settings/fixture-settings.component.js +0 -35
  175. package/esm2015/lib/fixture/fixture.component.js +0 -70
  176. package/esm2015/lib/fixture-pool/fixture-pool-create-from-file/fixture-pool-create-from-file.component.js +0 -128
  177. package/esm2015/lib/fixture-pool/fixture-pool.component.js +0 -331
  178. package/esm2015/lib/intro/intro.component.js +0 -25
  179. package/esm2015/lib/master-dimmer/master-dimmer.component.js +0 -41
  180. package/esm2015/lib/models/cached-fixture-capability.js +0 -9
  181. package/esm2015/lib/models/cached-fixture-channel.js +0 -7
  182. package/esm2015/lib/models/cached-fixture.js +0 -6
  183. package/esm2015/lib/models/color.js +0 -8
  184. package/esm2015/lib/models/composition.js +0 -46
  185. package/esm2015/lib/models/effect-curve-profile-channel.js +0 -15
  186. package/esm2015/lib/models/effect-curve.js +0 -69
  187. package/esm2015/lib/models/effect-pan-tilt.js +0 -19
  188. package/esm2015/lib/models/effect.js +0 -12
  189. package/esm2015/lib/models/fixture-capability-value.js +0 -15
  190. package/esm2015/lib/models/fixture-capability.js +0 -84
  191. package/esm2015/lib/models/fixture-channel-value.js +0 -11
  192. package/esm2015/lib/models/fixture-channel.js +0 -24
  193. package/esm2015/lib/models/fixture-mode.js +0 -14
  194. package/esm2015/lib/models/fixture-profile.js +0 -70
  195. package/esm2015/lib/models/fixture-wheel-slot.js +0 -26
  196. package/esm2015/lib/models/fixture-wheel.js +0 -15
  197. package/esm2015/lib/models/fixture.js +0 -40
  198. package/esm2015/lib/models/preset-region-scene.js +0 -8
  199. package/esm2015/lib/models/preset.js +0 -56
  200. package/esm2015/lib/models/project.js +0 -68
  201. package/esm2015/lib/models/scene-playback-region.js +0 -11
  202. package/esm2015/lib/models/scene.js +0 -27
  203. package/esm2015/lib/models/universe.js +0 -11
  204. package/esm2015/lib/preset/preset-settings/preset-settings.component.js +0 -66
  205. package/esm2015/lib/preset/preset.component.js +0 -85
  206. package/esm2015/lib/preview/models/color-changer-3d.js +0 -167
  207. package/esm2015/lib/preview/models/fixture-3d.js +0 -150
  208. package/esm2015/lib/preview/models/moving-head-3d.js +0 -233
  209. package/esm2015/lib/preview/preview.component.js +0 -242
  210. package/esm2015/lib/project/project-browser/project-browser.component.js +0 -73
  211. package/esm2015/lib/project/project-import/project-import.component.js +0 -89
  212. package/esm2015/lib/project/project-save/project-save.component.js +0 -105
  213. package/esm2015/lib/project/project-share/project-share.component.js +0 -43
  214. package/esm2015/lib/scene/scene-settings/scene-settings.component.js +0 -52
  215. package/esm2015/lib/scene/scene.component.js +0 -56
  216. package/esm2015/lib/services/animation.service.js +0 -17
  217. package/esm2015/lib/services/config.service.js +0 -28
  218. package/esm2015/lib/services/effect.service.js +0 -16
  219. package/esm2015/lib/services/error-dialog.service.js +0 -44
  220. package/esm2015/lib/services/fixture-pool.service.js +0 -34
  221. package/esm2015/lib/services/fixture.service.js +0 -443
  222. package/esm2015/lib/services/hotkey-target-exclude.service.js +0 -26
  223. package/esm2015/lib/services/intro.service.js +0 -144
  224. package/esm2015/lib/services/preset.service.js +0 -416
  225. package/esm2015/lib/services/preview-mesh.service.js +0 -58
  226. package/esm2015/lib/services/preview.service.js +0 -500
  227. package/esm2015/lib/services/project-load.service.js +0 -171
  228. package/esm2015/lib/services/project.service.js +0 -113
  229. package/esm2015/lib/services/scene.service.js +0 -174
  230. package/esm2015/lib/services/timeline.service.js +0 -738
  231. package/esm2015/lib/services/universe.service.js +0 -24
  232. package/esm2015/lib/services/user-ensure-login.service.js +0 -44
  233. package/esm2015/lib/services/user.service.js +0 -93
  234. package/esm2015/lib/services/uuid.service.js +0 -25
  235. package/esm2015/lib/services/warning-dialog.service.js +0 -43
  236. package/esm2015/lib/timeline/composition-settings/composition-settings.component.js +0 -197
  237. package/esm2015/lib/timeline/timeline-grid/timeline-grid.component.js +0 -55
  238. package/esm2015/lib/timeline/timeline.component.js +0 -239
  239. package/esm2015/lib/user/user-login/user-login.component.js +0 -64
  240. package/esm2015/lib/user/user-register/user-register.component.js +0 -89
  241. package/esm2015/lib/wait-dialog/wait-dialog.component.js +0 -16
  242. package/esm2015/lib/warning-dialog/warning-dialog.component.js +0 -42
  243. package/esm2015/public_api.js +0 -7
  244. package/esm2015/rocketshow-designer.js +0 -61
  245. package/esm5/lib/array-sort-pipe.js +0 -31
  246. package/esm5/lib/designer.component.js +0 -468
  247. package/esm5/lib/designer.module.js +0 -120
  248. package/esm5/lib/designer.service.js +0 -17
  249. package/esm5/lib/effect/effect-curve/effect-curve.component.js +0 -386
  250. package/esm5/lib/effect/effect-pan-tilt/effect-pan-tilt.component.js +0 -31
  251. package/esm5/lib/effect/effect.component.js +0 -75
  252. package/esm5/lib/error-dialog/error-dialog.component.js +0 -43
  253. package/esm5/lib/fixture/fixture-capability/fixture-capability-channel/fixture-capability-channel.component.js +0 -159
  254. package/esm5/lib/fixture/fixture-capability/fixture-capability-color/fixture-capability-color.component.js +0 -130
  255. package/esm5/lib/fixture/fixture-capability/fixture-capability-color-wheel/fixture-capability-color-wheel.component.js +0 -215
  256. package/esm5/lib/fixture/fixture-capability/fixture-capability-dimmer/fixture-capability-dimmer.component.js +0 -61
  257. package/esm5/lib/fixture/fixture-capability/fixture-capability-pan-tilt/fixture-capability-pan-tilt.component.js +0 -88
  258. package/esm5/lib/fixture/fixture-capability/fixture-capability.component.js +0 -130
  259. package/esm5/lib/fixture/fixture-channel/fixture-channel.component.js +0 -68
  260. package/esm5/lib/fixture/fixture-settings/fixture-settings-position/fixture-settings-position.component.js +0 -306
  261. package/esm5/lib/fixture/fixture-settings/fixture-settings-stage/fixture-settings-stage.component.js +0 -32
  262. package/esm5/lib/fixture/fixture-settings/fixture-settings.component.js +0 -36
  263. package/esm5/lib/fixture/fixture.component.js +0 -71
  264. package/esm5/lib/fixture-pool/fixture-pool-create-from-file/fixture-pool-create-from-file.component.js +0 -127
  265. package/esm5/lib/fixture-pool/fixture-pool.component.js +0 -430
  266. package/esm5/lib/intro/intro.component.js +0 -26
  267. package/esm5/lib/master-dimmer/master-dimmer.component.js +0 -42
  268. package/esm5/lib/models/cached-fixture-capability.js +0 -11
  269. package/esm5/lib/models/cached-fixture-channel.js +0 -9
  270. package/esm5/lib/models/cached-fixture.js +0 -8
  271. package/esm5/lib/models/color.js +0 -10
  272. package/esm5/lib/models/composition.js +0 -60
  273. package/esm5/lib/models/effect-curve-profile-channel.js +0 -29
  274. package/esm5/lib/models/effect-curve.js +0 -95
  275. package/esm5/lib/models/effect-pan-tilt.js +0 -24
  276. package/esm5/lib/models/effect.js +0 -14
  277. package/esm5/lib/models/fixture-capability-value.js +0 -17
  278. package/esm5/lib/models/fixture-capability.js +0 -86
  279. package/esm5/lib/models/fixture-channel-value.js +0 -13
  280. package/esm5/lib/models/fixture-channel.js +0 -38
  281. package/esm5/lib/models/fixture-mode.js +0 -16
  282. package/esm5/lib/models/fixture-profile.js +0 -114
  283. package/esm5/lib/models/fixture-wheel-slot.js +0 -28
  284. package/esm5/lib/models/fixture-wheel.js +0 -29
  285. package/esm5/lib/models/fixture.js +0 -42
  286. package/esm5/lib/models/preset-region-scene.js +0 -10
  287. package/esm5/lib/models/preset.js +0 -90
  288. package/esm5/lib/models/project.js +0 -122
  289. package/esm5/lib/models/scene-playback-region.js +0 -13
  290. package/esm5/lib/models/scene.js +0 -29
  291. package/esm5/lib/models/universe.js +0 -13
  292. package/esm5/lib/preset/preset-settings/preset-settings.component.js +0 -67
  293. package/esm5/lib/preset/preset.component.js +0 -86
  294. package/esm5/lib/preview/models/color-changer-3d.js +0 -194
  295. package/esm5/lib/preview/models/fixture-3d.js +0 -196
  296. package/esm5/lib/preview/models/moving-head-3d.js +0 -250
  297. package/esm5/lib/preview/preview.component.js +0 -280
  298. package/esm5/lib/project/project-browser/project-browser.component.js +0 -77
  299. package/esm5/lib/project/project-import/project-import.component.js +0 -88
  300. package/esm5/lib/project/project-save/project-save.component.js +0 -120
  301. package/esm5/lib/project/project-share/project-share.component.js +0 -44
  302. package/esm5/lib/scene/scene-settings/scene-settings.component.js +0 -53
  303. package/esm5/lib/scene/scene.component.js +0 -57
  304. package/esm5/lib/services/animation.service.js +0 -18
  305. package/esm5/lib/services/config.service.js +0 -29
  306. package/esm5/lib/services/effect.service.js +0 -17
  307. package/esm5/lib/services/error-dialog.service.js +0 -46
  308. package/esm5/lib/services/fixture-pool.service.js +0 -36
  309. package/esm5/lib/services/fixture.service.js +0 -643
  310. package/esm5/lib/services/hotkey-target-exclude.service.js +0 -27
  311. package/esm5/lib/services/intro.service.js +0 -145
  312. package/esm5/lib/services/preset.service.js +0 -637
  313. package/esm5/lib/services/preview-mesh.service.js +0 -61
  314. package/esm5/lib/services/preview.service.js +0 -754
  315. package/esm5/lib/services/project-load.service.js +0 -185
  316. package/esm5/lib/services/project.service.js +0 -127
  317. package/esm5/lib/services/scene.service.js +0 -251
  318. package/esm5/lib/services/timeline.service.js +0 -845
  319. package/esm5/lib/services/universe.service.js +0 -36
  320. package/esm5/lib/services/user-ensure-login.service.js +0 -45
  321. package/esm5/lib/services/user.service.js +0 -95
  322. package/esm5/lib/services/uuid.service.js +0 -26
  323. package/esm5/lib/services/warning-dialog.service.js +0 -45
  324. package/esm5/lib/timeline/composition-settings/composition-settings.component.js +0 -206
  325. package/esm5/lib/timeline/timeline-grid/timeline-grid.component.js +0 -56
  326. package/esm5/lib/timeline/timeline.component.js +0 -243
  327. package/esm5/lib/user/user-login/user-login.component.js +0 -66
  328. package/esm5/lib/user/user-register/user-register.component.js +0 -91
  329. package/esm5/lib/wait-dialog/wait-dialog.component.js +0 -18
  330. package/esm5/lib/warning-dialog/warning-dialog.component.js +0 -43
  331. package/esm5/public_api.js +0 -7
  332. package/esm5/rocketshow-designer.js +0 -61
  333. package/fesm2015/rocketshow-designer.js +0 -7945
  334. package/fesm2015/rocketshow-designer.js.map +0 -1
  335. package/fesm5/rocketshow-designer.js +0 -9690
  336. package/fesm5/rocketshow-designer.js.map +0 -1
  337. package/rocketshow-designer-1.32.0.tgz +0 -0
  338. package/rocketshow-designer.d.ts +0 -60
  339. package/rocketshow-designer.metadata.json +0 -1
@@ -1,73 +0,0 @@
1
- import { __decorate, __metadata } from "tslib";
2
- import { Component } from '@angular/core';
3
- import { map } from 'rxjs/operators';
4
- import { EffectCurve } from '../models/effect-curve';
5
- import { EffectPanTilt } from '../models/effect-pan-tilt';
6
- import { EffectService } from '../services/effect.service';
7
- import { PresetService } from '../services/preset.service';
8
- import { UuidService } from '../services/uuid.service';
9
- import { WarningDialogService } from '../services/warning-dialog.service';
10
- let EffectComponent = class EffectComponent {
11
- constructor(uuidService, presetService, effectService, warningDialogService) {
12
- this.uuidService = uuidService;
13
- this.presetService = presetService;
14
- this.effectService = effectService;
15
- this.warningDialogService = warningDialogService;
16
- }
17
- ngOnInit() { }
18
- addEffect(effect) {
19
- this.effectService.selectedEffect = effect;
20
- if (this.presetService.selectedPreset) {
21
- this.presetService.selectedPreset.effects.push(effect);
22
- }
23
- }
24
- addCurveEffect() {
25
- const effect = new EffectCurve();
26
- effect.uuid = this.uuidService.getUuid();
27
- this.addEffect(effect);
28
- this.presetService.previewLive();
29
- }
30
- addPanTiltEffect() {
31
- this.addEffect(new EffectPanTilt());
32
- }
33
- openEffect(effect, event) {
34
- if (event) {
35
- this.effectService.selectedEffect = effect;
36
- }
37
- else {
38
- if (this.effectService.selectedEffect === effect) {
39
- this.effectService.selectedEffect = undefined;
40
- }
41
- }
42
- }
43
- deleteEffect(effect) {
44
- this.warningDialogService
45
- .show('designer.effect.delete-warning')
46
- .pipe(map((result) => {
47
- if (result) {
48
- this.presetService.selectedPreset.effects.splice(this.presetService.selectedPreset.effects.indexOf(effect), 1);
49
- this.presetService.previewLive();
50
- }
51
- }))
52
- .subscribe();
53
- }
54
- };
55
- EffectComponent.ctorParameters = () => [
56
- { type: UuidService },
57
- { type: PresetService },
58
- { type: EffectService },
59
- { type: WarningDialogService }
60
- ];
61
- EffectComponent = __decorate([
62
- Component({
63
- selector: 'lib-app-effect',
64
- template: "<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",
65
- styles: [""]
66
- }),
67
- __metadata("design:paramtypes", [UuidService,
68
- PresetService,
69
- EffectService,
70
- WarningDialogService])
71
- ], EffectComponent);
72
- export { EffectComponent };
73
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZWZmZWN0LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiJuZzovL0Byb2NrZXRzaG93L2Rlc2lnbmVyLyIsInNvdXJjZXMiOlsibGliL2VmZmVjdC9lZmZlY3QuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFVLE1BQU0sZUFBZSxDQUFDO0FBQ2xELE9BQU8sRUFBRSxHQUFHLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUVyQyxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDckQsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBQzFELE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUMzRCxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFDM0QsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQ3ZELE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLG9DQUFvQyxDQUFDO0FBTzFFLElBQWEsZUFBZSxHQUE1QixNQUFhLGVBQWU7SUFDMUIsWUFDVSxXQUF3QixFQUN6QixhQUE0QixFQUM1QixhQUE0QixFQUMzQixvQkFBMEM7UUFIMUMsZ0JBQVcsR0FBWCxXQUFXLENBQWE7UUFDekIsa0JBQWEsR0FBYixhQUFhLENBQWU7UUFDNUIsa0JBQWEsR0FBYixhQUFhLENBQWU7UUFDM0IseUJBQW9CLEdBQXBCLG9CQUFvQixDQUFzQjtJQUNqRCxDQUFDO0lBRUosUUFBUSxLQUFJLENBQUM7SUFFTCxTQUFTLENBQUMsTUFBYztRQUM5QixJQUFJLENBQUMsYUFBYSxDQUFDLGNBQWMsR0FBRyxNQUFNLENBQUM7UUFFM0MsSUFBSSxJQUFJLENBQUMsYUFBYSxDQUFDLGNBQWMsRUFBRTtZQUNyQyxJQUFJLENBQUMsYUFBYSxDQUFDLGNBQWMsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDO1NBQ3hEO0lBQ0gsQ0FBQztJQUVELGNBQWM7UUFDWixNQUFNLE1BQU0sR0FBRyxJQUFJLFdBQVcsRUFBRSxDQUFDO1FBQ2pDLE1BQU0sQ0FBQyxJQUFJLEdBQUcsSUFBSSxDQUFDLFdBQVcsQ0FBQyxPQUFPLEVBQUUsQ0FBQztRQUN6QyxJQUFJLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBQ3ZCLElBQUksQ0FBQyxhQUFhLENBQUMsV0FBVyxFQUFFLENBQUM7SUFDbkMsQ0FBQztJQUVELGdCQUFnQjtRQUNkLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxhQUFhLEVBQUUsQ0FBQyxDQUFDO0lBQ3RDLENBQUM7SUFFRCxVQUFVLENBQUMsTUFBYyxFQUFFLEtBQVU7UUFDbkMsSUFBSSxLQUFLLEVBQUU7WUFDVCxJQUFJLENBQUMsYUFBYSxDQUFDLGNBQWMsR0FBRyxNQUFNLENBQUM7U0FDNUM7YUFBTTtZQUNMLElBQUksSUFBSSxDQUFDLGFBQWEsQ0FBQyxjQUFjLEtBQUssTUFBTSxFQUFFO2dCQUNoRCxJQUFJLENBQUMsYUFBYSxDQUFDLGNBQWMsR0FBRyxTQUFTLENBQUM7YUFDL0M7U0FDRjtJQUNILENBQUM7SUFFRCxZQUFZLENBQUMsTUFBYztRQUN6QixJQUFJLENBQUMsb0JBQW9CO2FBQ3RCLElBQUksQ0FBQyxnQ0FBZ0MsQ0FBQzthQUN0QyxJQUFJLENBQ0gsR0FBRyxDQUFDLENBQUMsTUFBTSxFQUFFLEVBQUU7WUFDYixJQUFJLE1BQU0sRUFBRTtnQkFDVixJQUFJLENBQUMsYUFBYSxDQUFDLGNBQWMsQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsY0FBYyxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7Z0JBQy9HLElBQUksQ0FBQyxhQUFhLENBQUMsV0FBVyxFQUFFLENBQUM7YUFDbEM7UUFDSCxDQUFDLENBQUMsQ0FDSDthQUNBLFNBQVMsRUFBRSxDQUFDO0lBQ2pCLENBQUM7Q0FDRixDQUFBOztZQWxEd0IsV0FBVztZQUNWLGFBQWE7WUFDYixhQUFhO1lBQ0wsb0JBQW9COztBQUx6QyxlQUFlO0lBTDNCLFNBQVMsQ0FBQztRQUNULFFBQVEsRUFBRSxnQkFBZ0I7UUFDMUIsbXpHQUFzQzs7S0FFdkMsQ0FBQztxQ0FHdUIsV0FBVztRQUNWLGFBQWE7UUFDYixhQUFhO1FBQ0wsb0JBQW9CO0dBTHpDLGVBQWUsQ0FvRDNCO1NBcERZLGVBQWUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIE9uSW5pdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgbWFwIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuaW1wb3J0IHsgRWZmZWN0IH0gZnJvbSAnLi4vbW9kZWxzL2VmZmVjdCc7XG5pbXBvcnQgeyBFZmZlY3RDdXJ2ZSB9IGZyb20gJy4uL21vZGVscy9lZmZlY3QtY3VydmUnO1xuaW1wb3J0IHsgRWZmZWN0UGFuVGlsdCB9IGZyb20gJy4uL21vZGVscy9lZmZlY3QtcGFuLXRpbHQnO1xuaW1wb3J0IHsgRWZmZWN0U2VydmljZSB9IGZyb20gJy4uL3NlcnZpY2VzL2VmZmVjdC5zZXJ2aWNlJztcbmltcG9ydCB7IFByZXNldFNlcnZpY2UgfSBmcm9tICcuLi9zZXJ2aWNlcy9wcmVzZXQuc2VydmljZSc7XG5pbXBvcnQgeyBVdWlkU2VydmljZSB9IGZyb20gJy4uL3NlcnZpY2VzL3V1aWQuc2VydmljZSc7XG5pbXBvcnQgeyBXYXJuaW5nRGlhbG9nU2VydmljZSB9IGZyb20gJy4uL3NlcnZpY2VzL3dhcm5pbmctZGlhbG9nLnNlcnZpY2UnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdsaWItYXBwLWVmZmVjdCcsXG4gIHRlbXBsYXRlVXJsOiAnLi9lZmZlY3QuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9lZmZlY3QuY29tcG9uZW50LmNzcyddLFxufSlcbmV4cG9ydCBjbGFzcyBFZmZlY3RDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQge1xuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIHV1aWRTZXJ2aWNlOiBVdWlkU2VydmljZSxcbiAgICBwdWJsaWMgcHJlc2V0U2VydmljZTogUHJlc2V0U2VydmljZSxcbiAgICBwdWJsaWMgZWZmZWN0U2VydmljZTogRWZmZWN0U2VydmljZSxcbiAgICBwcml2YXRlIHdhcm5pbmdEaWFsb2dTZXJ2aWNlOiBXYXJuaW5nRGlhbG9nU2VydmljZVxuICApIHt9XG5cbiAgbmdPbkluaXQoKSB7fVxuXG4gIHByaXZhdGUgYWRkRWZmZWN0KGVmZmVjdDogRWZmZWN0KSB7XG4gICAgdGhpcy5lZmZlY3RTZXJ2aWNlLnNlbGVjdGVkRWZmZWN0ID0gZWZmZWN0O1xuXG4gICAgaWYgKHRoaXMucHJlc2V0U2VydmljZS5zZWxlY3RlZFByZXNldCkge1xuICAgICAgdGhpcy5wcmVzZXRTZXJ2aWNlLnNlbGVjdGVkUHJlc2V0LmVmZmVjdHMucHVzaChlZmZlY3QpO1xuICAgIH1cbiAgfVxuXG4gIGFkZEN1cnZlRWZmZWN0KCkge1xuICAgIGNvbnN0IGVmZmVjdCA9IG5ldyBFZmZlY3RDdXJ2ZSgpO1xuICAgIGVmZmVjdC51dWlkID0gdGhpcy51dWlkU2VydmljZS5nZXRVdWlkKCk7XG4gICAgdGhpcy5hZGRFZmZlY3QoZWZmZWN0KTtcbiAgICB0aGlzLnByZXNldFNlcnZpY2UucHJldmlld0xpdmUoKTtcbiAgfVxuXG4gIGFkZFBhblRpbHRFZmZlY3QoKSB7XG4gICAgdGhpcy5hZGRFZmZlY3QobmV3IEVmZmVjdFBhblRpbHQoKSk7XG4gIH1cblxuICBvcGVuRWZmZWN0KGVmZmVjdDogRWZmZWN0LCBldmVudDogYW55KSB7XG4gICAgaWYgKGV2ZW50KSB7XG4gICAgICB0aGlzLmVmZmVjdFNlcnZpY2Uuc2VsZWN0ZWRFZmZlY3QgPSBlZmZlY3Q7XG4gICAgfSBlbHNlIHtcbiAgICAgIGlmICh0aGlzLmVmZmVjdFNlcnZpY2Uuc2VsZWN0ZWRFZmZlY3QgPT09IGVmZmVjdCkge1xuICAgICAgICB0aGlzLmVmZmVjdFNlcnZpY2Uuc2VsZWN0ZWRFZmZlY3QgPSB1bmRlZmluZWQ7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgZGVsZXRlRWZmZWN0KGVmZmVjdDogRWZmZWN0KSB7XG4gICAgdGhpcy53YXJuaW5nRGlhbG9nU2VydmljZVxuICAgICAgLnNob3coJ2Rlc2lnbmVyLmVmZmVjdC5kZWxldGUtd2FybmluZycpXG4gICAgICAucGlwZShcbiAgICAgICAgbWFwKChyZXN1bHQpID0+IHtcbiAgICAgICAgICBpZiAocmVzdWx0KSB7XG4gICAgICAgICAgICB0aGlzLnByZXNldFNlcnZpY2Uuc2VsZWN0ZWRQcmVzZXQuZWZmZWN0cy5zcGxpY2UodGhpcy5wcmVzZXRTZXJ2aWNlLnNlbGVjdGVkUHJlc2V0LmVmZmVjdHMuaW5kZXhPZihlZmZlY3QpLCAxKTtcbiAgICAgICAgICAgIHRoaXMucHJlc2V0U2VydmljZS5wcmV2aWV3TGl2ZSgpO1xuICAgICAgICAgIH1cbiAgICAgICAgfSlcbiAgICAgIClcbiAgICAgIC5zdWJzY3JpYmUoKTtcbiAgfVxufVxuIl19
@@ -1,42 +0,0 @@
1
- import { __decorate, __metadata } from "tslib";
2
- import { Component, HostListener } from '@angular/core';
3
- import { BsModalRef } from 'ngx-bootstrap/modal';
4
- import { Subject } from 'rxjs';
5
- let ErrorDialogComponent = class ErrorDialogComponent {
6
- constructor(bsModalRef) {
7
- this.bsModalRef = bsModalRef;
8
- }
9
- ngOnInit() {
10
- this.onClose = new Subject();
11
- }
12
- ok() {
13
- this.onClose.next(1);
14
- this.bsModalRef.hide();
15
- }
16
- cancel() {
17
- this.onClose.next(2);
18
- this.bsModalRef.hide();
19
- }
20
- handleKeyboardEvent(event) {
21
- this.ok();
22
- }
23
- };
24
- ErrorDialogComponent.ctorParameters = () => [
25
- { type: BsModalRef }
26
- ];
27
- __decorate([
28
- HostListener('document:keydown.enter', ['$event']),
29
- __metadata("design:type", Function),
30
- __metadata("design:paramtypes", [Object]),
31
- __metadata("design:returntype", void 0)
32
- ], ErrorDialogComponent.prototype, "handleKeyboardEvent", null);
33
- ErrorDialogComponent = __decorate([
34
- Component({
35
- selector: 'lib-error-dialog',
36
- template: "<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",
37
- styles: [""]
38
- }),
39
- __metadata("design:paramtypes", [BsModalRef])
40
- ], ErrorDialogComponent);
41
- export { ErrorDialogComponent };
42
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXJyb3ItZGlhbG9nLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiJuZzovL0Byb2NrZXRzaG93L2Rlc2lnbmVyLyIsInNvdXJjZXMiOlsibGliL2Vycm9yLWRpYWxvZy9lcnJvci1kaWFsb2cuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLFlBQVksRUFBVSxNQUFNLGVBQWUsQ0FBQztBQUNoRSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDakQsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLE1BQU0sQ0FBQztBQU8vQixJQUFhLG9CQUFvQixHQUFqQyxNQUFhLG9CQUFvQjtJQU0vQixZQUFvQixVQUFzQjtRQUF0QixlQUFVLEdBQVYsVUFBVSxDQUFZO0lBQUcsQ0FBQztJQUU5QyxRQUFRO1FBQ04sSUFBSSxDQUFDLE9BQU8sR0FBRyxJQUFJLE9BQU8sRUFBRSxDQUFDO0lBQy9CLENBQUM7SUFFTSxFQUFFO1FBQ1AsSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDckIsSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLEVBQUUsQ0FBQztJQUN6QixDQUFDO0lBRU0sTUFBTTtRQUNYLElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQ3JCLElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxFQUFFLENBQUM7SUFDekIsQ0FBQztJQUdELG1CQUFtQixDQUFDLEtBQVU7UUFDNUIsSUFBSSxDQUFDLEVBQUUsRUFBRSxDQUFDO0lBQ1osQ0FBQztDQUNGLENBQUE7O1lBcEJpQyxVQUFVOztBQWlCMUM7SUFEQyxZQUFZLENBQUMsd0JBQXdCLEVBQUUsQ0FBQyxRQUFRLENBQUMsQ0FBQzs7OzsrREFHbEQ7QUF6QlUsb0JBQW9CO0lBTGhDLFNBQVMsQ0FBQztRQUNULFFBQVEsRUFBRSxrQkFBa0I7UUFDNUIsdzJCQUE0Qzs7S0FFN0MsQ0FBQztxQ0FPZ0MsVUFBVTtHQU4vQixvQkFBb0IsQ0EwQmhDO1NBMUJZLG9CQUFvQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgSG9zdExpc3RlbmVyLCBPbkluaXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEJzTW9kYWxSZWYgfSBmcm9tICduZ3gtYm9vdHN0cmFwL21vZGFsJztcbmltcG9ydCB7IFN1YmplY3QgfSBmcm9tICdyeGpzJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnbGliLWVycm9yLWRpYWxvZycsXG4gIHRlbXBsYXRlVXJsOiAnLi9lcnJvci1kaWFsb2cuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9lcnJvci1kaWFsb2cuY29tcG9uZW50LmNzcyddLFxufSlcbmV4cG9ydCBjbGFzcyBFcnJvckRpYWxvZ0NvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XG4gIG9uQ2xvc2U6IFN1YmplY3Q8bnVtYmVyPjtcblxuICBtZXNzYWdlOiBzdHJpbmc7XG4gIGRldGFpbHM6IHN0cmluZztcblxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIGJzTW9kYWxSZWY6IEJzTW9kYWxSZWYpIHt9XG5cbiAgbmdPbkluaXQoKSB7XG4gICAgdGhpcy5vbkNsb3NlID0gbmV3IFN1YmplY3QoKTtcbiAgfVxuXG4gIHB1YmxpYyBvaygpOiB2b2lkIHtcbiAgICB0aGlzLm9uQ2xvc2UubmV4dCgxKTtcbiAgICB0aGlzLmJzTW9kYWxSZWYuaGlkZSgpO1xuICB9XG5cbiAgcHVibGljIGNhbmNlbCgpOiB2b2lkIHtcbiAgICB0aGlzLm9uQ2xvc2UubmV4dCgyKTtcbiAgICB0aGlzLmJzTW9kYWxSZWYuaGlkZSgpO1xuICB9XG5cbiAgQEhvc3RMaXN0ZW5lcignZG9jdW1lbnQ6a2V5ZG93bi5lbnRlcicsIFsnJGV2ZW50J10pXG4gIGhhbmRsZUtleWJvYXJkRXZlbnQoZXZlbnQ6IGFueSkge1xuICAgIHRoaXMub2soKTtcbiAgfVxufVxuIl19
@@ -1,141 +0,0 @@
1
- import { __decorate, __metadata } from "tslib";
2
- import { ChangeDetectionStrategy, Component, ElementRef, Input, ViewChild } from '@angular/core';
3
- import { CachedFixtureChannel } from '../../../models/cached-fixture-channel';
4
- import { FixtureProfile } from '../../../models/fixture-profile';
5
- import { PresetService } from '../../../services/preset.service';
6
- let FixtureCapabilityChannelComponent = class FixtureCapabilityChannelComponent {
7
- constructor(presetService) {
8
- this.presetService = presetService;
9
- this.rangeMin = 0;
10
- this.rangeMax = 0;
11
- this.defaultValue = 0;
12
- this.value = 0;
13
- this.templateValue = 0;
14
- }
15
- set channel(value) {
16
- this._channel = value;
17
- this.updateChannel();
18
- }
19
- updateChannel() {
20
- this.selectedCapability = this._channel.capabilities[0];
21
- this.value = this.presetService.getChannelValue(this._channel.name, this.profile.uuid);
22
- this.calculateTemplateValue();
23
- if (this.value >= 0) {
24
- for (const capability of this._channel.capabilities) {
25
- if (capability.capability.dmxRange.length > 0 && capability.centerValue === this.value) {
26
- this.selectedCapability = capability;
27
- break;
28
- }
29
- }
30
- }
31
- this.rangeMin = this.getRangeMin();
32
- this.rangeMax = this.getRangeMax();
33
- this.defaultValue = this.getDefaultValue();
34
- }
35
- capabilityHasRange() {
36
- if (this._channel.capabilities && this._channel.capabilities.length === 1) {
37
- return true;
38
- }
39
- if (this.selectedCapability && this.selectedCapability.capability.angleStart) {
40
- return true;
41
- }
42
- return false;
43
- }
44
- getRangeMin() {
45
- if (this.selectedCapability.capability.dmxRange.length > 0) {
46
- return this.selectedCapability.capability.dmxRange[0];
47
- }
48
- return 0;
49
- }
50
- getRangeMax() {
51
- if (this.selectedCapability.capability.dmxRange.length > 0) {
52
- return this.selectedCapability.capability.dmxRange[1];
53
- }
54
- return this._channel.maxValue;
55
- }
56
- ngOnInit() { }
57
- setValue(value, ignoreCapabilityRange = false) {
58
- if (isNaN(value)) {
59
- return;
60
- }
61
- if (!ignoreCapabilityRange && (value < this.getRangeMin() || value > this.getRangeMax())) {
62
- return;
63
- }
64
- this.value = value;
65
- this.calculateTemplateValue();
66
- this.presetService.setChannelValue(this._channel.name, this.profile.uuid, value);
67
- if (this.sliderValue) {
68
- // update the value without change detector for performance reasons and only in a specific
69
- // interval. each value set will trigger a layout/reflow event and slow down the performance
70
- // TODO use the same technique in the dimmer/pan/tilt/color sliders
71
- if (!this.valueSetTimer) {
72
- this.valueSetTimer = setTimeout(() => {
73
- this.sliderValue.nativeElement.value = this.value;
74
- this.valueSetTimer = undefined;
75
- }, 30);
76
- }
77
- }
78
- this.presetService.previewLive();
79
- }
80
- calculateTemplateValue() {
81
- this.templateValue = this.value ? this.value : this.getDefaultValue();
82
- }
83
- getDefaultValue() {
84
- if (this._channel.defaultValue) {
85
- return this._channel.defaultValue;
86
- }
87
- return 0;
88
- }
89
- changeActive(active) {
90
- if (active) {
91
- this.setValue(this.getDefaultValue(), true);
92
- }
93
- else {
94
- this.presetService.deleteChannelValue(this._channel.name, this.profile.uuid);
95
- this.selectedCapability = this._channel.capabilities[0];
96
- this.value = undefined;
97
- this.calculateTemplateValue();
98
- }
99
- this.presetService.previewLive();
100
- }
101
- capabilitySelected() {
102
- // select the center value of the selected capability
103
- if (this.capabilityHasRange) {
104
- this.setValue(this.selectedCapability.capability.dmxRange[0], true);
105
- }
106
- else {
107
- this.setValue(this.selectedCapability.centerValue, true);
108
- }
109
- }
110
- };
111
- FixtureCapabilityChannelComponent.ctorParameters = () => [
112
- { type: PresetService }
113
- ];
114
- __decorate([
115
- ViewChild('sliderValue', { static: false }),
116
- __metadata("design:type", ElementRef)
117
- ], FixtureCapabilityChannelComponent.prototype, "sliderValue", void 0);
118
- __decorate([
119
- Input(),
120
- __metadata("design:type", FixtureProfile)
121
- ], FixtureCapabilityChannelComponent.prototype, "profile", void 0);
122
- __decorate([
123
- Input(),
124
- __metadata("design:type", CachedFixtureChannel),
125
- __metadata("design:paramtypes", [CachedFixtureChannel])
126
- ], FixtureCapabilityChannelComponent.prototype, "channel", null);
127
- __decorate([
128
- Input(),
129
- __metadata("design:type", Number)
130
- ], FixtureCapabilityChannelComponent.prototype, "capabilityIndex", void 0);
131
- FixtureCapabilityChannelComponent = __decorate([
132
- Component({
133
- selector: 'lib-app-fixture-capability-channel',
134
- template: "<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",
135
- changeDetection: ChangeDetectionStrategy.OnPush,
136
- styles: [""]
137
- }),
138
- __metadata("design:paramtypes", [PresetService])
139
- ], FixtureCapabilityChannelComponent);
140
- export { FixtureCapabilityChannelComponent };
141
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZml4dHVyZS1jYXBhYmlsaXR5LWNoYW5uZWwuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6Im5nOi8vQHJvY2tldHNob3cvZGVzaWduZXIvIiwic291cmNlcyI6WyJsaWIvZml4dHVyZS9maXh0dXJlLWNhcGFiaWxpdHkvZml4dHVyZS1jYXBhYmlsaXR5LWNoYW5uZWwvZml4dHVyZS1jYXBhYmlsaXR5LWNoYW5uZWwuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxPQUFPLEVBQUUsdUJBQXVCLEVBQXFCLFNBQVMsRUFBRSxVQUFVLEVBQUUsS0FBSyxFQUFVLFNBQVMsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUU1SCxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSx3Q0FBd0MsQ0FBQztBQUM5RSxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0saUNBQWlDLENBQUM7QUFDakUsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLGtDQUFrQyxDQUFDO0FBUWpFLElBQWEsaUNBQWlDLEdBQTlDLE1BQWEsaUNBQWlDO0lBMEI1QyxZQUFvQixhQUE0QjtRQUE1QixrQkFBYSxHQUFiLGFBQWEsQ0FBZTtRQXBCaEQsYUFBUSxHQUFHLENBQUMsQ0FBQztRQUNiLGFBQVEsR0FBRyxDQUFDLENBQUM7UUFDYixpQkFBWSxHQUFHLENBQUMsQ0FBQztRQUNqQixVQUFLLEdBQUcsQ0FBQyxDQUFDO1FBQ1Ysa0JBQWEsR0FBRyxDQUFDLENBQUM7SUFnQmlDLENBQUM7SUFScEQsSUFBSSxPQUFPLENBQUMsS0FBMkI7UUFDckMsSUFBSSxDQUFDLFFBQVEsR0FBRyxLQUFLLENBQUM7UUFDdEIsSUFBSSxDQUFDLGFBQWEsRUFBRSxDQUFDO0lBQ3ZCLENBQUM7SUFPTyxhQUFhO1FBQ25CLElBQUksQ0FBQyxrQkFBa0IsR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDLFlBQVksQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUV4RCxJQUFJLENBQUMsS0FBSyxHQUFHLElBQUksQ0FB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RTtZQUMzQixJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxVQUFVLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxFQUFFLElBQUksQ0FBQyxDQUFDO1NBQ3JFO2FBQU07WUFDTCxJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxXQUFXLEVBQUUsSUFBSSxDQUFDLENBQUM7U0FDMUQ7SUFDSCxDQUFDO0NBQ0YsQ0FBQTs7WUEvR29DLGFBQWE7O0FBekJIO0lBQTVDLFNBQVMsQ0FBQyxhQUFhLEVBQUUsRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFLENBQUM7OEJBQWMsVUFBVTtzRUFBQztBQWNyRTtJQURDLEtBQUssRUFBRTs4QkFDQyxjQUFjO2tFQUFDO0FBR3hCO0lBREMsS0FBSyxFQUFFOzhCQUNXLG9CQUFvQjtxQ0FBcEIsb0JBQW9CO2dFQUd0QztBQUdEO0lBREMsS0FBSyxFQUFFOzswRUFDZ0I7QUF4QmIsaUNBQWlDO0lBTjdDLFNBQVMsQ0FBQztRQUNULFFBQVEsRUFBRSxvQ0FBb0M7UUFDOUMsby9GQUEwRDtRQUUxRCxlQUFlLEVBQUUsdUJBQXVCLENBQUMsTUFBTTs7S0FDaEQsQ0FBQztxQ0EyQm1DLGFBQWE7R0ExQnJDLGlDQUFpQyxDQXlJN0M7U0F6SVksaUNBQWlDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksIENoYW5nZURldGVjdG9yUmVmLCBDb21wb25lbnQsIEVsZW1lbnRSZWYsIElucHV0LCBPbkluaXQsIFZpZXdDaGlsZCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQ2FjaGVkRml4dHVyZUNhcGFiaWxpdHkgfSBmcm9tICcuLi8uLi8uLi9tb2RlbHMvY2FjaGVkLWZpeHR1cmUtY2FwYWJpbGl0eSc7XG5pbXBvcnQgeyBDYWNoZWRGaXh0dXJlQ2hhbm5lbCB9IGZyb20gJy4uLy4uLy4uL21vZGVscy9jYWNoZWQtZml4dHVyZS1jaGFubmVsJztcbmltcG9ydCB7IEZpeHR1cmVQcm9maWxlIH0gZnJvbSAnLi4vLi4vLi4vbW9kZWxzL2ZpeHR1cmUtcHJvZmlsZSc7XG5pbXBvcnQgeyBQcmVzZXRTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vc2VydmljZXMvcHJlc2V0LnNlcnZpY2UnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdsaWItYXBwLWZpeHR1cmUtY2FwYWJpbGl0eS1jaGFubmVsJyxcbiAgdGVtcGxhdGVVcmw6ICcuL2ZpeHR1cmUtY2FwYWJpbGl0eS1jaGFubmVsLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vZml4dHVyZS1jYXBhYmlsaXR5LWNoYW5uZWwuY29tcG9uZW50LmNzcyddLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbn0pXG5leHBvcnQgY2xhc3MgRml4dHVyZUNhcGFiaWxpdHlDaGFubmVsQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcbiAgQFZpZXdDaGlsZCgnc2xpZGVyVmFsdWUnLCB7IHN0YXRpYzogZmFsc2UgfSkgc2xpZGVyVmFsdWU6IEVsZW1lbnRSZWY7XG5cbiAgc2VsZWN0ZWRDYXBhYmlsaXR5OiBDYWNoZWRGaXh0dXJlQ2FwYWJpbGl0eTtcbiAgX2NoYW5uZWw6IENhY2hlZEZpeHR1cmVDaGFubmVsO1xuXG4gIHJhbmdlTWluID0gMDtcbiAgcmFuZ2VNYXggPSAwO1xuICBkZWZhdWx0VmFsdWUgPSAwO1xuICB2YWx1ZSA9IDA7XG4gIHRlbXBsYXRlVmFsdWUgPSAwO1xuXG4gIHZhbHVlU2V0VGltZXI6IGFueTtcblxuICBASW5wdXQoKVxuICBwcm9maWxlOiBGaXh0dXJlUHJvZmlsZTtcblxuICBASW5wdXQoKVxuICBzZXQgY2hhbm5lbCh2YWx1ZTogQ2FjaGVkRml4dHVyZUNoYW5uZWwpIHtcbiAgICB0aGlzLl9jaGFubmVsID0gdmFsdWU7XG4gICAgdGhpcy51cGRhdGVDaGFubmVsKCk7XG4gIH1cblxuICBASW5wdXQoKVxuICBjYXBhYmlsaXR5SW5kZXg6IG51bWJlcjtcblxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIHByZXNldFNlcnZpY2U6IFByZXNldFNlcnZpY2UpIHt9XG5cbiAgcHJpdmF0ZSB1cGRhdGVDaGFubmVsKCkge1xuICAgIHRoaXMuc2VsZWN0ZWRDYXBhYmlsaXR5ID0gdGhpcy5fY2hhbm5lbC5jYXBhYmlsaXRpZXNbMF07XG5cbiAgICB0aGlzLnZhbHVlID0gdGhpcy5wcmVzZXRTZXJ2aWNlLmdldENoYW5uZWxWYWx1ZSh0aGlzLl9jaGFubmVsLm5hbWUsIHRoaXMucHJvZmlsZS51dWlkKTtcbiAgICB0aGlzLmNhbGN1bGF0ZVRlbXBsYXRlVmFsdWUoKTtcblxuICAgIGlmICh0aGlzLnZhbHVlID49IDApIHtcbiAgICAgIGZvciAoY29uc3QgY2FwYWJpbGl0eSBvZiB0aGlzLl9jaGFubmVsLmNhcGFiaWxpdGllcykge1xuICAgICAgICBpZiAoY2FwYWJpbGl0eS5jYXBhYmlsaXR5LmRteFJhbmdlLmxlbmd0aCA+IDAgJiYgY2FwYWJpbGl0eS5jZW50ZXJWYWx1ZSA9PT0gdGhpcy52YWx1ZSkge1xuICAgICAgICAgIHRoaXMuc2VsZWN0ZWRDYXBhYmlsaXR5ID0gY2FwYWJpbGl0eTtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cblxuICAgIHRoaXMucmFuZ2VNaW4gPSB0aGlzLmdldFJhbmdlTWluKCk7XG4gICAgdGhpcy5yYW5nZU1heCA9IHRoaXMuZ2V0UmFuZ2VNYXgoKTtcbiAgICB0aGlzLmRlZmF1bHRWYWx1ZSA9IHRoaXMuZ2V0RGVmYXVsdFZhbHVlKCk7XG4gIH1cblxuICBjYXBhYmlsaXR5SGFzUmFuZ2UoKTogYm9vbGVhbiB7XG4gICAgaWYgKHRoaXMuX2NoYW5uZWwuY2FwYWJpbGl0aWVzICYmIHRoaXMuX2NoYW5uZWwuY2FwYWJpbGl0aWVzLmxlbmd0aCA9PT0gMSkge1xuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuXG4gICAgaWYgKHRoaXMuc2VsZWN0ZWRDYXBhYmlsaXR5ICYmIHRoaXMuc2VsZWN0ZWRDYXBhYmlsaXR5LmNhcGFiaWxpdHkuYW5nbGVTdGFydCkge1xuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuXG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG5cbiAgcHJpdmF0ZSBnZXRSYW5nZU1pbigpOiBudW1iZXIge1xuICAgIGlmICh0aGlzLnNlbGVjdGVkQ2FwYWJpbGl0eS5jYXBhYmlsaXR5LmRteFJhbmdlLmxlbmd0aCA+IDApIHtcbiAgICAgIHJldHVybiB0aGlzLnNlbGVjdGVkQ2FwYWJpbGl0eS5jYXBhYmlsaXR5LmRteFJhbmdlWzBdO1xuICAgIH1cblxuICAgIHJldHVybiAwO1xuICB9XG5cbiAgcHJpdmF0ZSBnZXRSYW5nZU1heCgpOiBudW1iZXIge1xuICAgIGlmICh0aGlzLnNlbGVjdGVkQ2FwYWJpbGl0eS5jYXBhYmlsaXR5LmRteFJhbmdlLmxlbmd0aCA+IDApIHtcbiAgICAgIHJldHVybiB0aGlzLnNlbGVjdGVkQ2FwYWJpbGl0eS5jYXBhYmlsaXR5LmRteFJhbmdlWzFdO1xuICAgIH1cblxuICAgIHJldHVybiB0aGlzLl9jaGFubmVsLm1heFZhbHVlO1xuICB9XG5cbiAgbmdPbkluaXQoKSB7fVxuXG4gIHNldFZhbHVlKHZhbHVlOiBhbnksIGlnbm9yZUNhcGFiaWxpdHlSYW5nZTogYm9vbGVhbiA9IGZhbHNlKSB7XG4gICAgaWYgKGlzTmFOKHZhbHVlKSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGlmICghaWdub3JlQ2FwYWJpbGl0eVJhbmdlICYmICh2YWx1ZSA8IHRoaXMuZ2V0UmFuZ2VNaW4oKSB8fCB2YWx1ZSA+IHRoaXMuZ2V0UmFuZ2VNYXgoKSkpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB0aGlzLnZhbHVlID0gdmFsdWU7XG4gICAgdGhpcy5jYWxjdWxhdGVUZW1wbGF0ZVZhbHVlKCk7XG5cbiAgICB0aGlzLnByZXNldFNlcnZpY2Uuc2V0Q2hhbm5lbFZhbHVlKHRoaXMuX2NoYW5uZWwubmFtZSwgdGhpcy5wcm9maWxlLnV1aWQsIHZhbHVlKTtcbiAgICBpZiAodGhpcy5zbGlkZXJWYWx1ZSkge1xuICAgICAgLy8gdXBkYXRlIHRoZSB2YWx1ZSB3aXRob3V0IGNoYW5nZSBkZXRlY3RvciBmb3IgcGVyZm9ybWFuY2UgcmVhc29ucyBhbmQgb25seSBpbiBhIHNwZWNpZmljXG4gICAgICAvLyBpbnRlcnZhbC4gZWFjaCB2YWx1ZSBzZXQgd2lsbCB0cmlnZ2VyIGEgbGF5b3V0L3JlZmxvdyBldmVudCBhbmQgc2xvdyBkb3duIHRoZSBwZXJmb3JtYW5jZVxuICAgICAgLy8gVE9ETyB1c2UgdGhlIHNhbWUgdGVjaG5pcXVlIGluIHRoZSBkaW1tZXIvcGFuL3RpbHQvY29sb3Igc2xpZGVyc1xuICAgICAgaWYgKCF0aGlzLnZhbHVlU2V0VGltZXIpIHtcbiAgICAgICAgdGhpcy52YWx1ZVNldFRpbWVyID0gc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgICAgdGhpcy5zbGlkZXJWYWx1ZS5uYXRpdmVFbGVtZW50LnZhbHVlID0gdGhpcy52YWx1ZTtcbiAgICAgICAgICB0aGlzLnZhbHVlU2V0VGltZXIgPSB1bmRlZmluZWQ7XG4gICAgICAgIH0sIDMwKTtcbiAgICAgIH1cbiAgICB9XG4gICAgdGhpcy5wcmVzZXRTZXJ2aWNlLnByZXZpZXdMaXZlKCk7XG4gIH1cblxuICBwcml2YXRlIGNhbGN1bGF0ZVRlbXBsYXRlVmFsdWUoKSB7XG4gICAgdGhpcy50ZW1wbGF0ZVZhbHVlID0gdGhpcy52YWx1ZSA/IHRoaXMudmFsdWUgOiB0aGlzLmdldERlZmF1bHRWYWx1ZSgpO1xuICB9XG5cbiAgcHJpdmF0ZSBnZXREZWZhdWx0VmFsdWUoKTogbnVtYmVyIHtcbiAgICBpZiAodGhpcy5fY2hhbm5lbC5kZWZhdWx0VmFsdWUpIHtcbiAgICAgIHJldHVybiB0aGlzLl9jaGFubmVsLmRlZmF1bHRWYWx1ZTtcbiAgICB9XG5cbiAgICByZXR1cm4gMDtcbiAgfVxuXG4gIGNoYW5nZUFjdGl2ZShhY3RpdmU6IGJvb2xlYW4pIHtcbiAgICBpZiAoYWN0aXZlKSB7XG4gICAgICB0aGlzLnNldFZhbHVlKHRoaXMuZ2V0RGVmYXVsdFZhbHVlKCksIHRydWUpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLnByZXNldFNlcnZpY2UuZGVsZXRlQ2hhbm5lbFZhbHVlKHRoaXMuX2NoYW5uZWwubmFtZSwgdGhpcy5wcm9maWxlLnV1aWQpO1xuICAgICAgdGhpcy5zZWxlY3RlZENhcGFiaWxpdHkgPSB0aGlzLl9jaGFubmVsLmNhcGFiaWxpdGllc1swXTtcbiAgICAgIHRoaXMudmFsdWUgPSB1bmRlZmluZWQ7XG4gICAgICB0aGlzLmNhbGN1bGF0ZVRlbXBsYXRlVmFsdWUoKTtcbiAgICB9XG4gICAgdGhpcy5wcmVzZXRTZXJ2aWNlLnByZXZpZXdMaXZlKCk7XG4gIH1cblxuICBjYXBhYmlsaXR5U2VsZWN0ZWQoKSB7XG4gICAgLy8gc2VsZWN0IHRoZSBjZW50ZXIgdmFsdWUgb2YgdGhlIHNlbGVjdGVkIGNhcGFiaWxpdHlcbiAgICBpZiAodGhpcy5jYXBhYmlsaXR5SGFzUmFuZ2UpIHtcbiAgICAgIHRoaXMuc2V0VmFsdWUodGhpcy5zZWxlY3RlZENhcGFiaWxpdHkuY2FwYWJpbGl0eS5kbXhSYW5nZVswXSwgdHJ1ZSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuc2V0VmFsdWUodGhpcy5zZWxlY3RlZENhcGFiaWxpdHkuY2VudGVyVmFsdWUsIHRydWUpO1xuICAgIH1cbiAgfVxufVxuIl19
@@ -1,128 +0,0 @@
1
- import { __decorate, __metadata } from "tslib";
2
- import { ChangeDetectorRef, Component, OnDestroy, OnInit } from '@angular/core';
3
- import { FixtureCapabilityColor, FixtureCapabilityType } from '../../../models/fixture-capability';
4
- import { FixtureService } from '../../../services/fixture.service';
5
- import { PresetService } from '../../../services/preset.service';
6
- let FixtureCapabilityColorComponent = class FixtureCapabilityColorComponent {
7
- constructor(presetService, fixtureService, changeDetectorRef) {
8
- this.presetService = presetService;
9
- this.fixtureService = fixtureService;
10
- this.changeDetectorRef = changeDetectorRef;
11
- this.color = '#ffffff';
12
- this.active = false;
13
- this.colorPickerMounted = false;
14
- // avoid internal updating events
15
- this.updatingColor = false;
16
- this.updateSubscription = this.presetService.previewSelectionChanged.subscribe(() => {
17
- this.update();
18
- this.changeDetectorRef.detectChanges();
19
- });
20
- this.update();
21
- }
22
- update() {
23
- let red;
24
- let green;
25
- let blue;
26
- let capabilityValue;
27
- capabilityValue = this.presetService.getCapabilityValue(this.presetService.selectedPreset, FixtureCapabilityType.ColorIntensity, FixtureCapabilityColor.Red);
28
- if (capabilityValue) {
29
- red = 255 * capabilityValue.valuePercentage;
30
- }
31
- capabilityValue = this.presetService.getCapabilityValue(this.presetService.selectedPreset, FixtureCapabilityType.ColorIntensity, FixtureCapabilityColor.Green);
32
- if (capabilityValue) {
33
- green = 255 * capabilityValue.valuePercentage;
34
- }
35
- capabilityValue = this.presetService.getCapabilityValue(this.presetService.selectedPreset, FixtureCapabilityType.ColorIntensity, FixtureCapabilityColor.Blue);
36
- if (capabilityValue) {
37
- blue = 255 * capabilityValue.valuePercentage;
38
- }
39
- if (red !== undefined && green !== undefined && blue !== undefined) {
40
- this.active = true;
41
- }
42
- else {
43
- this.active = false;
44
- red = 255;
45
- green = 255;
46
- blue = 255;
47
- }
48
- this.color = this.fixtureService.rgbToHex(red, green, blue);
49
- this.setPickerColor(red, green, blue);
50
- }
51
- setPickerColor(red, green, blue) {
52
- this.updatingColor = true;
53
- if (this.colorPicker) {
54
- this.colorPicker.color.rgb = { r: red, g: green, b: blue };
55
- }
56
- this.updatingColor = false;
57
- }
58
- ngOnDestroy() {
59
- this.updateSubscription.unsubscribe();
60
- }
61
- ngOnInit() {
62
- this.colorPicker = new iro.ColorPicker('#color-picker-container', {
63
- width: 180,
64
- color: this.color,
65
- borderWidth: 1,
66
- borderColor: '#ffffff',
67
- sliderMargin: 20,
68
- });
69
- this.colorPicker.on('color:change', this.changeColor.bind(this));
70
- // mounted may be called, before this callback has been added. use input:start therefore
71
- this.colorPicker.on('input:start', this.mount.bind(this));
72
- }
73
- mount() {
74
- this.colorPickerMounted = true;
75
- }
76
- updateFixtureColor(color) {
77
- if (this.presetService.selectedPreset) {
78
- if (color) {
79
- this.presetService.setCapabilityValue(this.presetService.selectedPreset, FixtureCapabilityType.ColorIntensity, color.rgb.r / 255, undefined, FixtureCapabilityColor.Red);
80
- this.presetService.setCapabilityValue(this.presetService.selectedPreset, FixtureCapabilityType.ColorIntensity, color.rgb.g / 255, undefined, FixtureCapabilityColor.Green);
81
- this.presetService.setCapabilityValue(this.presetService.selectedPreset, FixtureCapabilityType.ColorIntensity, color.rgb.b / 255, undefined, FixtureCapabilityColor.Blue);
82
- }
83
- else {
84
- this.presetService.deleteCapabilityValue(this.presetService.selectedPreset, FixtureCapabilityType.ColorIntensity, FixtureCapabilityColor.Red);
85
- this.presetService.deleteCapabilityValue(this.presetService.selectedPreset, FixtureCapabilityType.ColorIntensity, FixtureCapabilityColor.Green);
86
- this.presetService.deleteCapabilityValue(this.presetService.selectedPreset, FixtureCapabilityType.ColorIntensity, FixtureCapabilityColor.Blue);
87
- }
88
- this.changeDetectorRef.detectChanges();
89
- this.presetService.fixtureColorChanged.next();
90
- this.presetService.previewLive();
91
- }
92
- }
93
- changeActive(active) {
94
- this.active = active;
95
- if (active) {
96
- this.updateFixtureColor(this.colorPicker.color);
97
- }
98
- else {
99
- this.updateFixtureColor(undefined);
100
- this.setPickerColor(255, 255, 255);
101
- this.color = '#ffffff';
102
- }
103
- this.presetService.previewLive();
104
- }
105
- changeColor(color) {
106
- if (!this.colorPickerMounted || this.updatingColor) {
107
- return;
108
- }
109
- this.active = true;
110
- this.color = color.hexString;
111
- this.updateFixtureColor(color);
112
- }
113
- };
114
- FixtureCapabilityColorComponent.ctorParameters = () => [
115
- { type: PresetService },
116
- { type: FixtureService },
117
- { type: ChangeDetectorRef }
118
- ];
119
- FixtureCapabilityColorComponent = __decorate([
120
- Component({
121
- selector: 'lib-app-fixture-capability-color',
122
- template: "<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",
123
- styles: [""]
124
- }),
125
- __metadata("design:paramtypes", [PresetService, FixtureService, ChangeDetectorRef])
126
- ], FixtureCapabilityColorComponent);
127
- export { FixtureCapabilityColorComponent };
128
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZml4dHVyZS1jYXBhYmlsaXR5LWNvbG9yLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiJuZzovL0Byb2NrZXRzaG93L2Rlc2lnbmVyLyIsInNvdXJjZXMiOlsibGliL2ZpeHR1cmUvZml4dHVyZS1jYXBhYmlsaXR5L2ZpeHR1cmUtY2FwYWJpbGl0eS1jb2xvci9maXh0dXJlLWNhcGFiaWxpdHktY29sb3IuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsU0FBUyxFQUFFLFNBQVMsRUFBRSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFaEYsT0FBTyxFQUFFLHNCQUFzQixFQUFFLHFCQUFxQixFQUFFLE1BQU0sb0NBQW9DLENBQUM7QUFFbkcsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLG1DQUFtQyxDQUFDO0FBQ25FLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxrQ0FBa0MsQ0FBQztBQVNqRSxJQUFhLCtCQUErQixHQUE1QyxNQUFhLCtCQUErQjtJQVcxQyxZQUFvQixhQUE0QixFQUFVLGNBQThCLEVBQVUsaUJBQW9DO1FBQWxILGtCQUFhLEdBQWIsYUFBYSxDQUFlO1FBQVUsbUJBQWMsR0FBZCxjQUFjLENBQWdCO1FBQVUsc0JBQWlCLEdBQWpCLGlCQUFpQixDQUFtQjtRQVZ0SSxVQUFLLEdBQUcsU0FBUyxDQUFDO1FBRWxCLFdBQU0sR0FBRyxLQUFLLENBQUM7UUFDUCx1QkFBa0IsR0FBRyxLQUFLLENBQUM7UUFFbkMsaUNBQWlDO1FBQ3pCLGtCQUFhLEdBQUcsS0FBSyxDQUFDO1FBSzVCLElBQUksQ0FBQyxrQkFBa0IsR0FBRyxJQUFJLENBQUMsYUFBYSxDQUFDLHVCQUF1QixDQUFDLFNBQVMsQ0FBQyxHQUFHLEVBQUU7WUFDbEYsSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFDO1lBQ2QsSUFBSSxDQUFDLGlCQUFpQixDQUFDLGFBQWEsRUFBRSxDQUFDO1FBQ3pDLENBQUMsQ0FBQyxD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Q0FBQztRQUM3QixJQUFJLENBQUMsa0JBQWtCLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDakMsQ0FBQztDQUNGLENBQUE7O1lBckpvQyxhQUFhO1lBQTBCLGNBQWM7WUFBNkIsaUJBQWlCOztBQVgzSCwrQkFBK0I7SUFMM0MsU0FBUyxDQUFDO1FBQ1QsUUFBUSxFQUFFLGtDQUFrQztRQUM1Qyx3M0JBQXdEOztLQUV6RCxDQUFDO3FDQVltQyxhQUFhLEVBQTBCLGNBQWMsRUFBNkIsaUJBQWlCO0dBWDNILCtCQUErQixDQWdLM0M7U0FoS1ksK0JBQStCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ2hhbmdlRGV0ZWN0b3JSZWYsIENvbXBvbmVudCwgT25EZXN0cm95LCBPbkluaXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IFN1YnNjcmlwdGlvbiB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgRml4dHVyZUNhcGFiaWxpdHlDb2xvciwgRml4dHVyZUNhcGFiaWxpdHlUeXBlIH0gZnJvbSAnLi4vLi4vLi4vbW9kZWxzL2ZpeHR1cmUtY2FwYWJpbGl0eSc7XG5pbXBvcnQgeyBGaXh0dXJlQ2FwYWJpbGl0eVZhbHVlIH0gZnJvbSAnLi4vLi4vLi4vbW9kZWxzL2ZpeHR1cmUtY2FwYWJpbGl0eS12YWx1ZSc7XG5pbXBvcnQgeyBGaXh0dXJlU2VydmljZSB9IGZyb20gJy4uLy4uLy4uL3NlcnZpY2VzL2ZpeHR1cmUuc2VydmljZSc7XG5pbXBvcnQgeyBQcmVzZXRTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vc2VydmljZXMvcHJlc2V0LnNlcnZpY2UnO1xuXG5kZWNsYXJlIHZhciBpcm86IGFueTtcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnbGliLWFwcC1maXh0dXJlLWNhcGFiaWxpdHktY29sb3InLFxuICB0ZW1wbGF0ZVVybDogJy4vZml4dHVyZS1jYXBhYmlsaXR5LWNvbG9yLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vZml4dHVyZS1jYXBhYmlsaXR5LWNvbG9yLmNvbXBvbmVudC5jc3MnXSxcbn0pXG5leHBvcnQgY2xhc3MgRml4dHVyZUNhcGFiaWxpdHlDb2xvckNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgT25EZXN0cm95IHtcbiAgY29sb3IgPSAnI2ZmZmZmZic7XG4gIGNvbG9yUGlja2VyOiBhbnk7XG4gIGFjdGl2ZSA9IGZhbHNlO1xuICBwcml2YXRlIGNvbG9yUGlja2VyTW91bnRlZCA9IGZhbHNlO1xuXG4gIC8vIGF2b2lkIGludGVybmFsIHVwZGF0aW5nIGV2ZW50c1xuICBwcml2YXRlIHVwZGF0aW5nQ29sb3IgPSBmYWxzZTtcblxuICBwcml2YXRlIHVwZGF0ZVN1YnNjcmlwdGlvbjogU3Vic2NyaXB0aW9uO1xuXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgcHJlc2V0U2VydmljZTogUHJlc2V0U2VydmljZSwgcHJpdmF0ZSBmaXh0dXJlU2VydmljZTogRml4dHVyZVNlcnZpY2UsIHByaXZhdGUgY2hhbmdlRGV0ZWN0b3JSZWY6IENoYW5nZURldGVjdG9yUmVmKSB7XG4gICAgdGhpcy51cGRhdGVTdWJzY3JpcHRpb24gPSB0aGlzLnByZXNldFNlcnZpY2UucHJldmlld1NlbGVjdGlvbkNoYW5nZWQuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgIHRoaXMudXBkYXRlKCk7XG4gICAgICB0aGlzLmNoYW5nZURldGVjdG9yUmVmLmRldGVjdENoYW5nZXMoKTtcbiAgICB9KTtcbiAgICB0aGlzLnVwZGF0ZSgpO1xuICB9XG5cbiAgcHJpdmF0ZSB1cGRhdGUoKSB7XG4gICAgbGV0IHJlZDogbnVtYmVyO1xuICAgIGxldCBncmVlbjogbnVtYmVyO1xuICAgIGxldCBibHVlOiBudW1iZXI7XG4gICAgbGV0IGNhcGFiaWxpdHlWYWx1ZTogRml4dHVyZUNhcGFiaWxpdHlWYWx1ZTtcbiAgICBjYXBhYmlsaXR5VmFsdWUgPSB0aGlzLnByZXNldFNlcnZpY2UuZ2V0Q2FwYWJpbGl0eVZhbHVlKFxuICAgICAgdGhpcy5wcmVzZXRTZXJ2aWNlLnNlbGVjdGVkUHJlc2V0LFxuICAgICAgRml4dHVyZUNhcGFiaWxpdHlUeXBlLkNvbG9ySW50ZW5zaXR5LFxuICAgICAgRml4dHVyZUNhcGFiaWxpdHlDb2xvci5SZWRcbiAgICApO1xuICAgIGlmIChjYXBhYmlsaXR5VmFsdWUpIHtcbiAgICAgIHJlZCA9IDI1NSAqIGNhcGFiaWxpdHlWYWx1ZS52YWx1ZVBlcmNlbnRhZ2U7XG4gICAgfVxuICAgIGNhcGFiaWxpdHlWYWx1ZSA9IHRoaXMucHJlc2V0U2VydmljZS5nZXRDYXBhYmlsaXR5VmFsdWUoXG4gICAgICB0aGlzLnByZXNldFNlcnZpY2Uuc2VsZWN0ZWRQcmVzZXQsXG4gICAgICBGaXh0dXJlQ2FwYWJpbGl0eVR5cGUuQ29sb3JJbnRlbnNpdHksXG4gICAgICBGaXh0dXJlQ2FwYWJpbGl0eUNvbG9yLkdyZWVuXG4gICAgKTtcbiAgICBpZiAoY2FwYWJpbGl0eVZhbHVlKSB7XG4gICAgICBncmVlbiA9IDI1NSAqIGNhcGFiaWxpdHlWYWx1ZS52YWx1ZVBlcmNlbnRhZ2U7XG4gICAgfVxuICAgIGNhcGFiaWxpdHlWYWx1ZSA9IHRoaXMucHJlc2V0U2VydmljZS5nZXRDYXBhYmlsaXR5VmFsdWUoXG4gICAgICB0aGlzLnByZXNldFNlcnZpY2Uuc2VsZWN0ZWRQcmVzZXQsXG4gICAgICBGaXh0dXJlQ2FwYWJpbGl0eVR5cGUuQ29sb3JJbnRlbnNpdHksXG4gICAgICBGaXh0dXJlQ2FwYWJpbGl0eUNvbG9yLkJsdWVcbiAgICApO1xuICAgIGlmIChjYXBhYmlsaXR5VmFsdWUpIHtcbiAgICAgIGJsdWUgPSAyNTUgKiBjYXBhYmlsaXR5VmFsdWUudmFsdWVQZXJjZW50YWdlO1xuICAgIH1cbiAgICBpZiAocmVkICE9PSB1bmRlZmluZWQgJiYgZ3JlZW4gIT09IHVuZGVmaW5lZCAmJiBibHVlICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIHRoaXMuYWN0aXZlID0gdHJ1ZTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5hY3RpdmUgPSBmYWxzZTtcbiAgICAgIHJlZCA9IDI1NTtcbiAgICAgIGdyZWVuID0gMjU1O1xuICAgICAgYmx1ZSA9IDI1NTtcbiAgICB9XG4gICAgdGhpcy5jb2xvciA9IHRoaXMuZml4dHVyZVNlcnZpY2UucmdiVG9IZXgocmVkLCBncmVlbiwgYmx1ZSk7XG4gICAgdGhpcy5zZXRQaWNrZXJDb2xvcihyZWQsIGdyZWVuLCBibHVlKTtcbiAgfVxuXG4gIHByaXZhdGUgc2V0UGlja2VyQ29sb3IocmVkOiBudW1iZXIsIGdyZWVuOiBudW1iZXIsIGJsdWU6IG51bWJlcikge1xuICAgIHRoaXMudXBkYXRpbmdDb2xvciA9IHRydWU7XG4gICAgaWYgKHRoaXMuY29sb3JQaWNrZXIpIHtcbiAgICAgIHRoaXMuY29sb3JQaWNrZXIuY29sb3IucmdiID0geyByOiByZWQsIGc6IGdyZWVuLCBiOiBibHVlIH07XG4gICAgfVxuICAgIHRoaXMudXBkYXRpbmdDb2xvciA9IGZhbHNlO1xuICB9XG5cbiAgbmdPbkRlc3Ryb3koKSB7XG4gICAgdGhpcy51cGRhdGVTdWJzY3JpcHRpb24udW5zdWJzY3JpYmUoKTtcbiAgfVxuXG4gIG5nT25Jbml0KCkge1xuICAgIHRoaXMuY29sb3JQaWNrZXIgPSBuZXcgaXJvLkNvbG9yUGlja2VyKCcjY29sb3ItcGlja2VyLWNvbnRhaW5lcicsIHtcbiAgICAgIHdpZHRoOiAxODAsXG4gICAgICBjb2xvcjogdGhpcy5jb2xvcixcbiAgICAgIGJvcmRlcldpZHRoOiAxLFxuICAgICAgYm9yZGVyQ29sb3I6ICcjZmZmZmZmJyxcbiAgICAgIHNsaWRlck1hcmdpbjogMjAsXG4gICAgfSk7XG5cbiAgICB0aGlzLmNvbG9yUGlja2VyLm9uKCdjb2xvcjpjaGFuZ2UnLCB0aGlzLmNoYW5nZUNvbG9yLmJpbmQodGhpcykpO1xuXG4gICAgLy8gbW91bnRlZCBtYXkgYmUgY2FsbGVkLCBiZWZvcmUgdGhpcyBjYWxsYmFjayBoYXMgYmVlbiBhZGRlZC4gdXNlIGlucHV0OnN0YXJ0IHRoZXJlZm9yZVxuICAgIHRoaXMuY29sb3JQaWNrZXIub24oJ2lucHV0OnN0YXJ0JywgdGhpcy5tb3VudC5iaW5kKHRoaXMpKTtcbiAgfVxuXG4gIG1vdW50KCkge1xuICAgIHRoaXMuY29sb3JQaWNrZXJNb3VudGVkID0gdHJ1ZTtcbiAgfVxuXG4gIHByaXZhdGUgdXBkYXRlRml4dHVyZUNvbG9yKGNvbG9yOiBhbnkpIHtcbiAgICBpZiAodGhpcy5wcmVzZXRTZXJ2aWNlLnNlbGVjdGVkUHJlc2V0KSB7XG4gICAgICBpZiAoY29sb3IpIHtcbiAgICAgICAgdGhpcy5wcmVzZXRTZXJ2aWNlLnNldENhcGFiaWxpdHlWYWx1ZShcbiAgICAgICAgICB0aGlzLnByZXNldFNlcnZpY2Uuc2VsZWN0ZWRQcmVzZXQsXG4gICAgICAgICAgRml4dHVyZUNhcGFiaWxpdHlUeXBlLkNvbG9ySW50ZW5zaXR5LFxuICAgICAgICAgIGNvbG9yLnJnYi5yIC8gMjU1LFxuICAgICAgICAgIHVuZGVmaW5lZCxcbiAgICAgICAgICBGaXh0dXJlQ2FwYWJpbGl0eUNvbG9yLlJlZFxuICAgICAgICApO1xuICAgICAgICB0aGlzLnByZXNldFNlcnZpY2Uuc2V0Q2FwYWJpbGl0eVZhbHVlKFxuICAgICAgICAgIHRoaXMucHJlc2V0U2VydmljZS5zZWxlY3RlZFByZXNldCxcbiAgICAgICAgICBGaXh0dXJlQ2FwYWJpbGl0eVR5cGUuQ29sb3JJbnRlbnNpdHksXG4gICAgICAgICAgY29sb3IucmdiLmcgLyAyNTUsXG4gICAgICAgICAgdW5kZWZpbmVkLFxuICAgICAgICAgIEZpeHR1cmVDYXBhYmlsaXR5Q29sb3IuR3JlZW5cbiAgICAgICAgKTtcbiAgICAgICAgdGhpcy5wcmVzZXRTZXJ2aWNlLnNldENhcGFiaWxpdHlWYWx1ZShcbiAgICAgICAgICB0aGlzLnByZXNldFNlcnZpY2Uuc2VsZWN0ZWRQcmVzZXQsXG4gICAgICAgICAgRml4dHVyZUNhcGFiaWxpdHlUeXBlLkNvbG9ySW50ZW5zaXR5LFxuICAgICAgICAgIGNvbG9yLnJnYi5iIC8gMjU1LFxuICAgICAgICAgIHVuZGVmaW5lZCxcbiAgICAgICAgICBGaXh0dXJlQ2FwYWJpbGl0eUNvbG9yLkJsdWVcbiAgICAgICAgKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMucHJlc2V0U2VydmljZS5kZWxldGVDYXBhYmlsaXR5VmFsdWUoXG4gICAgICAgICAgdGhpcy5wcmVzZXRTZXJ2aWNlLnNlbGVjdGVkUHJlc2V0LFxuICAgICAgICAgIEZpeHR1cmVDYXBhYmlsaXR5VHlwZS5Db2xvckludGVuc2l0eSxcbiAgICAgICAgICBGaXh0dXJlQ2FwYWJpbGl0eUNvbG9yLlJlZFxuICAgICAgICApO1xuICAgICAgICB0aGlzLnByZXNldFNlcnZpY2UuZGVsZXRlQ2FwYWJpbGl0eVZhbHVlKFxuICAgICAgICAgIHRoaXMucHJlc2V0U2VydmljZS5zZWxlY3RlZFByZXNldCxcbiAgICAgICAgICBGaXh0dXJlQ2FwYWJpbGl0eVR5cGUuQ29sb3JJbnRlbnNpdHksXG4gICAgICAgICAgRml4dHVyZUNhcGFiaWxpdHlDb2xvci5HcmVlblxuICAgICAgICApO1xuICAgICAgICB0aGlzLnByZXNldFNlcnZpY2UuZGVsZXRlQ2FwYWJpbGl0eVZhbHVlKFxuICAgICAgICAgIHRoaXMucHJlc2V0U2VydmljZS5zZWxlY3RlZFByZXNldCxcbiAgICAgICAgICBGaXh0dXJlQ2FwYWJpbGl0eVR5cGUuQ29sb3JJbnRlbnNpdHksXG4gICAgICAgICAgRml4dHVyZUNhcGFiaWxpdHlDb2xvci5CbHVlXG4gICAgICAgICk7XG4gICAgICB9XG4gICAgICB0aGlzLmNoYW5nZURldGVjdG9yUmVmLmRldGVjdENoYW5nZXMoKTtcbiAgICAgIHRoaXMucHJlc2V0U2VydmljZS5maXh0dXJlQ29sb3JDaGFuZ2VkLm5leHQoKTtcbiAgICAgIHRoaXMucHJlc2V0U2VydmljZS5wcmV2aWV3TGl2ZSgpO1xuICAgIH1cbiAgfVxuXG4gIGNoYW5nZUFjdGl2ZShhY3RpdmU6IGJvb2xlYW4pIHtcbiAgICB0aGlzLmFjdGl2ZSA9IGFjdGl2ZTtcblxuICAgIGlmIChhY3RpdmUpIHtcbiAgICAgIHRoaXMudXBkYXRlRml4dHVyZUNvbG9yKHRoaXMuY29sb3JQaWNrZXIuY29sb3IpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLnVwZGF0ZUZpeHR1cmVDb2xvcih1bmRlZmluZWQpO1xuICAgICAgdGhpcy5zZXRQaWNrZXJDb2xvcigyNTUsIDI1NSwgMjU1KTtcbiAgICAgIHRoaXMuY29sb3IgPSAnI2ZmZmZmZic7XG4gICAgfVxuICAgIHRoaXMucHJlc2V0U2VydmljZS5wcmV2aWV3TGl2ZSgpO1xuICB9XG5cbiAgY2hhbmdlQ29sb3IoY29sb3I6IGFueSkge1xuICAgIGlmICghdGhpcy5jb2xvclBpY2tlck1vdW50ZWQgfHwgdGhpcy51cGRhdGluZ0NvbG9yKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgdGhpcy5hY3RpdmUgPSB0cnVlO1xuICAgIHRoaXMuY29sb3IgPSBjb2xvci5oZXhTdHJpbmc7XG4gICAgdGhpcy51cGRhdGVGaXh0dXJlQ29sb3IoY29sb3IpO1xuICB9XG59XG4iXX0=