@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,143 @@
1
+ import { Component } from '@angular/core';
2
+ import { BsModalRef } from 'ngx-bootstrap/modal';
3
+ import { map } from 'rxjs/operators';
4
+ import { ConfigService } from '../../services/config.service';
5
+ import { ProjectLoadService } from '../../services/project-load.service';
6
+ import { ProjectService } from '../../services/project.service';
7
+ import { UserService } from '../../services/user.service';
8
+ import { WarningDialogService } from '../../services/warning-dialog.service';
9
+ import * as i0 from "@angular/core";
10
+ import * as i1 from "ngx-bootstrap/modal";
11
+ import * as i2 from "../../services/project.service";
12
+ import * as i3 from "../../services/project-load.service";
13
+ import * as i4 from "../../services/user.service";
14
+ import * as i5 from "../../services/warning-dialog.service";
15
+ import * as i6 from "../../services/config.service";
16
+ import * as i7 from "@angular/common";
17
+ import * as i8 from "@ngx-translate/core";
18
+ import * as i9 from "../../array-sort-pipe";
19
+ function ProjectBrowserComponent_div_8_Template(rf, ctx) { if (rf & 1) {
20
+ i0.ɵɵelementStart(0, "div", 10)(1, "p", 11);
21
+ i0.ɵɵelement(2, "i", 12);
22
+ i0.ɵɵelementEnd()();
23
+ } }
24
+ function ProjectBrowserComponent_div_9_Template(rf, ctx) { if (rf & 1) {
25
+ i0.ɵɵelementStart(0, "div", 10)(1, "p", 11);
26
+ i0.ɵɵtext(2);
27
+ i0.ɵɵpipe(3, "translate");
28
+ i0.ɵɵelementEnd()();
29
+ } if (rf & 2) {
30
+ i0.ɵɵadvance(2);
31
+ i0.ɵɵtextInterpolate1(" ", i0.ɵɵpipeBind1(3, 1, "designer.project.browser-empty"), " ");
32
+ } }
33
+ function ProjectBrowserComponent_div_10_div_1_Template(rf, ctx) { if (rf & 1) {
34
+ const _r1 = i0.ɵɵgetCurrentView();
35
+ i0.ɵɵelementStart(0, "div", 15)(1, "div", 16)(2, "div", 17)(3, "a", 18);
36
+ i0.ɵɵlistener("click", function ProjectBrowserComponent_div_10_div_1_Template_a_click_3_listener() { const project_r2 = i0.ɵɵrestoreView(_r1).$implicit; const ctx_r2 = i0.ɵɵnextContext(2); ctx_r2.openProject(project_r2); return i0.ɵɵresetView(false); });
37
+ i0.ɵɵelementStart(4, "p", 19);
38
+ i0.ɵɵtext(5);
39
+ i0.ɵɵelementEnd()()();
40
+ i0.ɵɵelementStart(6, "div", 20)(7, "div", 21);
41
+ i0.ɵɵlistener("click", function ProjectBrowserComponent_div_10_div_1_Template_div_click_7_listener() { const project_r2 = i0.ɵɵrestoreView(_r1).$implicit; const ctx_r2 = i0.ɵɵnextContext(2); ctx_r2.deleteProject(project_r2); return i0.ɵɵresetView(false); });
42
+ i0.ɵɵelement(8, "i", 22);
43
+ i0.ɵɵelementEnd()()()();
44
+ } if (rf & 2) {
45
+ const project_r2 = ctx.$implicit;
46
+ i0.ɵɵadvance(5);
47
+ i0.ɵɵtextInterpolate(project_r2.name);
48
+ } }
49
+ function ProjectBrowserComponent_div_10_Template(rf, ctx) { if (rf & 1) {
50
+ i0.ɵɵelementStart(0, "div", 13);
51
+ i0.ɵɵtemplate(1, ProjectBrowserComponent_div_10_div_1_Template, 9, 1, "div", 14);
52
+ i0.ɵɵpipe(2, "sort");
53
+ i0.ɵɵelementEnd();
54
+ } if (rf & 2) {
55
+ const ctx_r2 = i0.ɵɵnextContext();
56
+ i0.ɵɵadvance();
57
+ i0.ɵɵproperty("ngForOf", i0.ɵɵpipeBind2(2, 1, ctx_r2.projects, "name"));
58
+ } }
59
+ export class ProjectBrowserComponent {
60
+ constructor(bsModalRef, projectService, projectLoadService, userService, warningDialogService, configService) {
61
+ this.bsModalRef = bsModalRef;
62
+ this.projectService = projectService;
63
+ this.projectLoadService = projectLoadService;
64
+ this.userService = userService;
65
+ this.warningDialogService = warningDialogService;
66
+ this.configService = configService;
67
+ this.projects = [];
68
+ this.loading = true;
69
+ this.loadProjects();
70
+ }
71
+ loadProjects() {
72
+ this.projectService.getAllProjects().subscribe((projects) => {
73
+ this.projects = projects;
74
+ this.loading = false;
75
+ });
76
+ }
77
+ ngOnInit() { }
78
+ cancel() {
79
+ this.bsModalRef.hide();
80
+ }
81
+ openProject(project) {
82
+ this.bsModalRef.hide();
83
+ this.projectLoadService.load(project.id, project.name).subscribe(() => {
84
+ this.userService.setAutoLoadProject(project);
85
+ });
86
+ }
87
+ deleteProject(project) {
88
+ this.warningDialogService
89
+ .show('designer.project.delete-warning')
90
+ .pipe(map((result) => {
91
+ if (result) {
92
+ this.projectService.deleteProject(project).subscribe((projects) => {
93
+ this.loadProjects();
94
+ });
95
+ }
96
+ }))
97
+ .subscribe();
98
+ }
99
+ static { this.ɵfac = function ProjectBrowserComponent_Factory(t) { return new (t || ProjectBrowserComponent)(i0.ɵɵdirectiveInject(i1.BsModalRef), i0.ɵɵdirectiveInject(i2.ProjectService), i0.ɵɵdirectiveInject(i3.ProjectLoadService), i0.ɵɵdirectiveInject(i4.UserService), i0.ɵɵdirectiveInject(i5.WarningDialogService), i0.ɵɵdirectiveInject(i6.ConfigService)); }; }
100
+ static { this.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: ProjectBrowserComponent, selectors: [["lib-project-browser"]], decls: 18, vars: 12, consts: [[1, "modal-header"], [1, "modal-title", "pull-left"], ["type", "button", "aria-label", "Close", 1, "close", "pull-right", 3, "click"], ["aria-hidden", "true"], [1, "modal-body", "p-0"], ["class", "m-2 d-flex w-100", 4, "ngIf"], ["class", "list-group list-group-flush", "style", "max-height: 500px; overflow-y: scroll", 4, "ngIf"], [1, "modal-footer"], ["href", "#", "role", "button", 1, "mr-3", "my-auto", 3, "click"], ["type", "button", 1, "btn", "btn-primary", 3, "click"], [1, "m-2", "d-flex", "w-100"], [1, "w-100", 2, "text-align", "center"], [1, "fa", "fa-spinner", "fa-pulse", "fa-fw"], [1, "list-group", "list-group-flush", 2, "max-height", "500px", "overflow-y", "scroll"], ["class", "list-group-item", 4, "ngFor", "ngForOf"], [1, "list-group-item"], [1, "row"], [1, "col-auto", "my-auto", "flex-grow"], ["href", "#", 3, "click"], [1, "mb-0", "w-100"], [1, "my-auto"], [1, "col-auto", "my-auto", "pl-0", "text-danger", "float-right", 2, "cursor", "pointer", 3, "click"], ["aria-hidden", "true", 1, "fa", "fa-trash-o"]], template: function ProjectBrowserComponent_Template(rf, ctx) { if (rf & 1) {
101
+ i0.ɵɵelementStart(0, "div", 0)(1, "h4", 1);
102
+ i0.ɵɵtext(2);
103
+ i0.ɵɵpipe(3, "translate");
104
+ i0.ɵɵelementEnd();
105
+ i0.ɵɵelementStart(4, "button", 2);
106
+ i0.ɵɵlistener("click", function ProjectBrowserComponent_Template_button_click_4_listener() { ctx.cancel(); return false; });
107
+ i0.ɵɵelementStart(5, "span", 3);
108
+ i0.ɵɵtext(6, "\u00D7");
109
+ i0.ɵɵelementEnd()()();
110
+ i0.ɵɵelementStart(7, "div", 4);
111
+ i0.ɵɵtemplate(8, ProjectBrowserComponent_div_8_Template, 3, 0, "div", 5)(9, ProjectBrowserComponent_div_9_Template, 4, 3, "div", 5)(10, ProjectBrowserComponent_div_10_Template, 3, 4, "div", 6);
112
+ i0.ɵɵelementEnd();
113
+ i0.ɵɵelementStart(11, "div", 7)(12, "a", 8);
114
+ i0.ɵɵlistener("click", function ProjectBrowserComponent_Template_a_click_12_listener() { ctx.cancel(); return false; });
115
+ i0.ɵɵtext(13);
116
+ i0.ɵɵpipe(14, "translate");
117
+ i0.ɵɵelementEnd();
118
+ i0.ɵɵelementStart(15, "button", 9);
119
+ i0.ɵɵlistener("click", function ProjectBrowserComponent_Template_button_click_15_listener() { ctx.cancel(); return false; });
120
+ i0.ɵɵtext(16);
121
+ i0.ɵɵpipe(17, "translate");
122
+ i0.ɵɵelementEnd()();
123
+ } if (rf & 2) {
124
+ i0.ɵɵadvance(2);
125
+ i0.ɵɵtextInterpolate(i0.ɵɵpipeBind1(3, 6, "designer.project.browser-title"));
126
+ i0.ɵɵadvance(6);
127
+ i0.ɵɵproperty("ngIf", ctx.loading);
128
+ i0.ɵɵadvance();
129
+ i0.ɵɵproperty("ngIf", ctx.projects.length == 0 && !ctx.loading);
130
+ i0.ɵɵadvance();
131
+ i0.ɵɵproperty("ngIf", !ctx.loading);
132
+ i0.ɵɵadvance(3);
133
+ i0.ɵɵtextInterpolate1(" ", i0.ɵɵpipeBind1(14, 8, "designer.misc.cancel"), " ");
134
+ i0.ɵɵadvance(3);
135
+ i0.ɵɵtextInterpolate(i0.ɵɵpipeBind1(17, 10, "designer.misc.ok"));
136
+ } }, dependencies: [i7.NgForOf, i7.NgIf, i8.TranslatePipe, i9.ArraySortPipe] }); }
137
+ }
138
+ (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(ProjectBrowserComponent, [{
139
+ type: Component,
140
+ args: [{ selector: 'lib-project-browser', template: "<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" }]
141
+ }], () => [{ type: i1.BsModalRef }, { type: i2.ProjectService }, { type: i3.ProjectLoadService }, { type: i4.UserService }, { type: i5.WarningDialogService }, { type: i6.ConfigService }], null); })();
142
+ (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(ProjectBrowserComponent, { className: "ProjectBrowserComponent" }); })();
143
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJvamVjdC1icm93c2VyLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2Rlc2lnbmVyL3NyYy9saWIvcHJvamVjdC9wcm9qZWN0LWJyb3dzZXIvcHJvamVjdC1icm93c2VyLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2Rlc2lnbmVyL3NyYy9saWIvcHJvamVjdC9wcm9qZWN0LWJyb3dzZXIvcHJvamVjdC1icm93c2VyLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQVUsTUFBTSxlQUFlLENBQUM7QUFDbEQsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQ2pELE9BQU8sRUFBRSxHQUFHLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUVyQyxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sK0JBQStCLENBQUM7QUFDOUQsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0scUNBQXFDLENBQUM7QUFDekUsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLGdDQUFnQyxDQUFDO0FBQ2hFLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSw2QkFBNkIsQ0FBQztBQUMxRCxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSx1Q0FBdUMsQ0FBQzs7Ozs7Ozs7Ozs7O0lDQXpFLEFBREYsK0JBQThDLFlBQ0E7SUFBQSx3QkFBNEM7SUFDMUYsQUFEMEYsaUJBQUksRUFDeEY7OztJQUVKLEFBREYsK0JBQXVFLFlBQ3pCO0lBQzFDLFlBQ0Y7O0lBQ0YsQUFERSxpQkFBSSxFQUNBOztJQUZGLGVBQ0Y7SUFERSx1RkFDRjs7OztJQU1NLEFBREYsQUFERixBQURGLCtCQUE2RSxjQUMxRCxjQUN5QixZQUNjO0lBQXhDLDZMQUFTLDhCQUFvQix3QkFBRyxLQUFLLEtBQUU7SUFDakQsNkJBQXNCO0lBQUEsWUFB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LDhGQUFTLFlBQVEsU0FBRyxLQUFLLElBQUU7WUFBdUMsYUFBb0M7O1lBQ2hILEFBRGdILGlCQUFTLEVBQ25IOztZQXBDOEIsZUFBa0Q7WUFBbEQsNEVBQWtEO1lBTTlFLGVBQWE7WUFBYixrQ0FBYTtZQUdiLGNBQXNDO1lBQXRDLCtEQUFzQztZQUt0QyxjQUFjO1lBQWQsbUNBQWM7WUFtQmxCLGVBQ0Y7WUFERSw4RUFDRjtZQUMwRSxlQUFvQztZQUFwQyxnRUFBb0M7OztpRkRyQm5HLHVCQUF1QjtjQUxuQyxTQUFTOzJCQUNFLHFCQUFxQjs7a0ZBSXBCLHVCQUF1QiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgT25Jbml0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBCc01vZGFsUmVmIH0gZnJvbSAnbmd4LWJvb3RzdHJhcC9tb2RhbCc7XG5pbXBvcnQgeyBtYXAgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQgeyBQcm9qZWN0IH0gZnJvbSAnLi4vLi4vbW9kZWxzL3Byb2plY3QnO1xuaW1wb3J0IHsgQ29uZmlnU2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL2NvbmZpZy5zZXJ2aWNlJztcbmltcG9ydCB7IFByb2plY3RMb2FkU2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL3Byb2plY3QtbG9hZC5zZXJ2aWNlJztcbmltcG9ydCB7IFByb2plY3RTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvcHJvamVjdC5zZXJ2aWNlJztcbmltcG9ydCB7IFVzZXJTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvdXNlci5zZXJ2aWNlJztcbmltcG9ydCB7IFdhcm5pbmdEaWFsb2dTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvd2FybmluZy1kaWFsb2cuc2VydmljZSc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2xpYi1wcm9qZWN0LWJyb3dzZXInLFxuICB0ZW1wbGF0ZVVybDogJy4vcHJvamVjdC1icm93c2VyLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vcHJvamVjdC1icm93c2VyLmNvbXBvbmVudC5jc3MnXSxcbn0pXG5leHBvcnQgY2xhc3MgUHJvamVjdEJyb3dzZXJDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQge1xuICBwcm9qZWN0czogUHJvamVjdFtdID0gW107XG4gIGxvYWRpbmcgPSB0cnVlO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgYnNNb2RhbFJlZjogQnNNb2RhbFJlZixcbiAgICBwcml2YXRlIHByb2plY3RTZXJ2aWNlOiBQcm9qZWN0U2VydmljZSxcbiAgICBwcml2YXRlIHByb2plY3RMb2FkU2VydmljZTogUHJvamVjdExvYWRTZXJ2aWNlLFxuICAgIHByaXZhdGUgdXNlclNlcnZpY2U6IFVzZXJTZXJ2aWNlLFxuICAgIHByaXZhdGUgd2FybmluZ0RpYWxvZ1NlcnZpY2U6IFdhcm5pbmdEaWFsb2dTZXJ2aWNlLFxuICAgIHByaXZhdGUgY29uZmlnU2VydmljZTogQ29uZmlnU2VydmljZVxuICApIHtcbiAgICB0aGlzLmxvYWRQcm9qZWN0cygpO1xuICB9XG5cbiAgcHJpdmF0ZSBsb2FkUHJvamVjdHMoKSB7XG4gICAgdGhpcy5wcm9qZWN0U2VydmljZS5nZXRBbGxQcm9qZWN0cygpLnN1YnNjcmliZSgocHJvamVjdHMpID0+IHtcbiAgICAgIHRoaXMucHJvamVjdHMgPSBwcm9qZWN0cztcbiAgICAgIHRoaXMubG9hZGluZyA9IGZhbHNlO1xuICAgIH0pO1xuICB9XG5cbiAgbmdPbkluaXQoKSB7fVxuXG4gIGNhbmNlbCgpIHtcbiAgICB0aGlzLmJzTW9kYWxSZWYuaGlkZSgpO1xuICB9XG5cbiAgb3BlblByb2plY3QocHJvamVjdDogUHJvamVjdCkge1xuICAgIHRoaXMuYnNNb2RhbFJlZi5oaWRlKCk7XG4gICAgdGhpcy5wcm9qZWN0TG9hZFNlcnZpY2UubG9hZChwcm9qZWN0LmlkLCBwcm9qZWN0Lm5hbWUpLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICB0aGlzLnVzZXJTZXJ2aWNlLnNldEF1dG9Mb2FkUHJvamVjdChwcm9qZWN0KTtcbiAgICB9KTtcbiAgfVxuXG4gIGRlbGV0ZVByb2plY3QocHJvamVjdDogUHJvamVjdCkge1xuICAgIHRoaXMud2FybmluZ0RpYWxvZ1NlcnZpY2VcbiAgICAgIC5zaG93KCdkZXNpZ25lci5wcm9qZWN0LmRlbGV0ZS13YXJuaW5nJylcbiAgICAgIC5waXBlKFxuICAgICAgICBtYXAoKHJlc3VsdCkgPT4ge1xuICAgICAgICAgIGlmIChyZXN1bHQpIHtcbiAgICAgICAgICAgIHRoaXMucHJvamVjdFNlcnZpY2UuZGVsZXRlUHJvamVjdChwcm9qZWN0KS5zdWJzY3JpYmUoKHByb2plY3RzKSA9PiB7XG4gICAgICAgICAgICAgIHRoaXMubG9hZFByb2plY3RzKCk7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICB9XG4gICAgICAgIH0pXG4gICAgICApXG4gICAgICAuc3Vic2NyaWJlKCk7XG4gIH1cbn1cbiIsIjxkaXYgY2xhc3M9XCJtb2RhbC1oZWFkZXJcIj5cbiAgPGg0IGNsYXNzPVwibW9kYWwtdGl0bGUgcHVsbC1sZWZ0XCI+e3sgJ2Rlc2lnbmVyLnByb2plY3QuYnJvd3Nlci10aXRsZScgfCB0cmFuc2xhdGUgfX08L2g0PlxuICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiBjbGFzcz1cImNsb3NlIHB1bGwtcmlnaHRcIiBhcmlhLWxhYmVsPVwiQ2xvc2VcIiAoY2xpY2spPVwiY2FuY2VsKCk7IChmYWxzZSlcIj5cbiAgICA8c3BhbiBhcmlhLWhpZGRlbj1cInRydWVcIj4mdGltZXM7PC9zcGFuPlxuICA8L2J1dHRvbj5cbjwvZGl2PlxuPGRpdiBjbGFzcz1cIm1vZGFsLWJvZHkgcC0wXCI+XG4gIDxkaXYgKm5nSWY9XCJsb2FkaW5nXCIgY2xhc3M9XCJtLTIgZC1mbGV4IHctMTAwXCI+XG4gICAgPHAgY2xhc3M9XCJ3LTEwMFwiIHN0eWxlPVwidGV4dC1hbGlnbjogY2VudGVyXCI+PGkgY2xhc3M9XCJmYSBmYS1zcGlubmVyIGZhLXB1bHNlIGZhLWZ3XCI+PC9pPjwvcD5cbiAgPC9kaXY+XG4gIDxkaXYgKm5nSWY9XCJwcm9qZWN0cy5sZW5ndGggPT0gMCAmJiAhbG9hZGluZ1wiIGNsYXNzPVwibS0yIGQtZmxleCB3LTEwMFwiPlxuICAgIDxwIGNsYXNzPVwidy0xMDBcIiBzdHlsZT1cInRleHQtYWxpZ246IGNlbnRlclwiPlxuICAgICAge3sgJ2Rlc2lnbmVyLnByb2plY3QuYnJvd3Nlci1lbXB0eScgfCB0cmFuc2xhdGUgfX1cbiAgICA8L3A+XG4gIDwvZGl2PlxuICA8ZGl2ICpuZ0lmPVwiIWxvYWRpbmdcIiBjbGFzcz1cImxpc3QtZ3JvdXAgbGlzdC1ncm91cC1mbHVzaFwiIHN0eWxlPVwibWF4LWhlaWdodDogNTAwcHg7IG92ZXJmbG93LXk6IHNjcm9sbFwiPlxuICAgIDxkaXYgY2xhc3M9XCJsaXN0LWdyb3VwLWl0ZW1cIiAqbmdGb3I9XCJsZXQgcHJvamVjdCBvZiBwcm9qZWN0cyB8IHNvcnQ6ICduYW1lJ1wiPlxuICAgICAgPGRpdiBjbGFzcz1cInJvd1wiPlxuICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLWF1dG8gbXktYXV0byBmbGV4LWdyb3dcIj5cbiAgICAgICAgICA8YSBocmVmPVwiI1wiIChjbGljayk9XCJvcGVuUHJvamVjdChwcm9qZWN0KTsgKGZhbHNlKVwiPlxuICAgICAgICAgICAgPHAgY2xhc3M9XCJtYi0wIHctMTAwXCI+e3sgcHJvamVjdC5uYW1lIH19PC9wPlxuICAgICAgICAgIDwvYT5cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJteS1hdXRvXCI+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1hdXRvIG15LWF1dG8gcGwtMCB0ZXh0LWRhbmdlciBmbG9hdC1yaWdodFwiIHN0eWxlPVwiY3Vyc29yOiBwb2ludGVyXCIgKGNsaWNrKT1cImRlbGV0ZVByb2plY3QocHJvamVjdCk7IChmYWxzZSlcIj5cbiAgICAgICAgICAgIDxpIGNsYXNzPVwiZmEgZmEtdHJhc2gtb1wiIGFyaWEtaGlkZGVuPVwidHJ1ZVwiPjwvaT5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbiAgPC9kaXY+XG48L2Rpdj5cbjxkaXYgY2xhc3M9XCJtb2RhbC1mb290ZXJcIj5cbiAgPGEgY2xhc3M9XCJtci0zIG15LWF1dG9cIiBocmVmPVwiI1wiIHJvbGU9XCJidXR0b25cIiAoY2xpY2spPVwiY2FuY2VsKCk7IChmYWxzZSlcIj5cbiAgICB7eyAnZGVzaWduZXIubWlzYy5jYW5jZWwnIHwgdHJhbnNsYXRlIH19XG4gIDwvYT5cbiAgPGJ1dHRvbiAoY2xpY2spPVwiY2FuY2VsKCk7IChmYWxzZSlcIiB0eXBlPVwiYnV0dG9uXCIgY2xhc3M9XCJidG4gYnRuLXByaW1hcnlcIj57eyAnZGVzaWduZXIubWlzYy5vaycgfCB0cmFuc2xhdGUgfX08L2J1dHRvbj5cbjwvZGl2PlxuIl19
@@ -0,0 +1,107 @@
1
+ import { Component, HostListener } from '@angular/core';
2
+ import { TranslateService } from '@ngx-translate/core';
3
+ import { BsModalRef } from 'ngx-bootstrap/modal';
4
+ import { ToastrService } from 'ngx-toastr';
5
+ import { map } from 'rxjs/operators';
6
+ import { ProjectLoadService } from '../../services/project-load.service';
7
+ import * as i0 from "@angular/core";
8
+ import * as i1 from "ngx-bootstrap/modal";
9
+ import * as i2 from "@ngx-translate/core";
10
+ import * as i3 from "ngx-toastr";
11
+ import * as i4 from "../../services/project-load.service";
12
+ import * as i5 from "ngx-dropzone-wrapper";
13
+ export class ProjectImportComponent {
14
+ constructor(bsModalRef, translateService, toastrService, projectLoadService) {
15
+ this.bsModalRef = bsModalRef;
16
+ this.translateService = translateService;
17
+ this.toastrService = toastrService;
18
+ this.projectLoadService = projectLoadService;
19
+ }
20
+ ngOnInit() {
21
+ this.dropzoneConfig = {
22
+ url: 'dummy',
23
+ addRemoveLinks: false,
24
+ maxFilesize: 10 /* 10 MB */,
25
+ acceptedFiles: '.rsd',
26
+ timeout: 0,
27
+ accept: (file, done) => {
28
+ const reader = new FileReader();
29
+ reader.addEventListener('loadend', (event) => {
30
+ this.projectLoadService.import(event.target.result);
31
+ done('noerr');
32
+ this.bsModalRef.hide();
33
+ });
34
+ reader.readAsText(file);
35
+ },
36
+ previewTemplate: `
37
+ <div style="display: none;">
38
+ <!-- No preview -->
39
+ </div>
40
+ `,
41
+ };
42
+ this.translateService
43
+ .get('designer.misc.dropzone-message')
44
+ .pipe(map((result) => {
45
+ this.uploadMessage = '<h3 class="mb-0"><i class="fa fa-cloud-upload"></i></h3>' + result;
46
+ }))
47
+ .subscribe();
48
+ }
49
+ onUploadError(args) {
50
+ if (args[1] === 'noerr') {
51
+ // this error is set in the accept event listener -> everything OK
52
+ return;
53
+ }
54
+ const msg = 'designer.misc.toast-upload-error';
55
+ const title = 'designer.misc.toast-upload-error-title';
56
+ this.translateService.get([msg, title]).subscribe((result) => {
57
+ this.toastrService.error(result[msg] + args[1], result[title], { timeOut: 0, extendedTimeOut: 0, enableHtml: true });
58
+ });
59
+ }
60
+ ok() {
61
+ this.bsModalRef.hide();
62
+ }
63
+ cancel() {
64
+ this.bsModalRef.hide();
65
+ }
66
+ handleKeyboardEvent(event) {
67
+ this.ok();
68
+ }
69
+ static { this.ɵfac = function ProjectImportComponent_Factory(t) { return new (t || ProjectImportComponent)(i0.ɵɵdirectiveInject(i1.BsModalRef), i0.ɵɵdirectiveInject(i2.TranslateService), i0.ɵɵdirectiveInject(i3.ToastrService), i0.ɵɵdirectiveInject(i4.ProjectLoadService)); }; }
70
+ static { this.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: ProjectImportComponent, selectors: [["lib-project-import"]], hostBindings: function ProjectImportComponent_HostBindings(rf, ctx) { if (rf & 1) {
71
+ i0.ɵɵlistener("keydown.enter", function ProjectImportComponent_keydown_enter_HostBindingHandler($event) { return ctx.handleKeyboardEvent($event); }, false, i0.ɵɵresolveDocument);
72
+ } }, decls: 13, vars: 9, consts: [[1, "modal-header"], [1, "modal-title", "pull-left"], ["type", "button", "aria-label", "Close", 1, "close", "pull-right", 3, "click"], ["aria-hidden", "true"], [1, "modal-body"], [3, "error", "config", "useDropzoneClass", "message"], [1, "modal-footer"], ["type", "button", 1, "btn", "btn-primary", 3, "click"]], template: function ProjectImportComponent_Template(rf, ctx) { if (rf & 1) {
73
+ i0.ɵɵelementStart(0, "div", 0)(1, "h4", 1);
74
+ i0.ɵɵtext(2);
75
+ i0.ɵɵpipe(3, "translate");
76
+ i0.ɵɵelementEnd();
77
+ i0.ɵɵelementStart(4, "button", 2);
78
+ i0.ɵɵlistener("click", function ProjectImportComponent_Template_button_click_4_listener() { return ctx.bsModalRef.hide(); });
79
+ i0.ɵɵelementStart(5, "span", 3);
80
+ i0.ɵɵtext(6, "\u00D7");
81
+ i0.ɵɵelementEnd()()();
82
+ i0.ɵɵelementStart(7, "div", 4)(8, "dropzone", 5);
83
+ i0.ɵɵlistener("error", function ProjectImportComponent_Template_dropzone_error_8_listener($event) { return ctx.onUploadError($event); });
84
+ i0.ɵɵelementEnd()();
85
+ i0.ɵɵelementStart(9, "div", 6)(10, "button", 7);
86
+ i0.ɵɵlistener("click", function ProjectImportComponent_Template_button_click_10_listener() { return ctx.ok(); });
87
+ i0.ɵɵtext(11);
88
+ i0.ɵɵpipe(12, "translate");
89
+ i0.ɵɵelementEnd()();
90
+ } if (rf & 2) {
91
+ i0.ɵɵadvance(2);
92
+ i0.ɵɵtextInterpolate(i0.ɵɵpipeBind1(3, 5, "designer.project.import-title"));
93
+ i0.ɵɵadvance(6);
94
+ i0.ɵɵproperty("config", ctx.dropzoneConfig)("useDropzoneClass", "false")("message", ctx.uploadMessage);
95
+ i0.ɵɵadvance(3);
96
+ i0.ɵɵtextInterpolate(i0.ɵɵpipeBind1(12, 7, "designer.misc.ok"));
97
+ } }, dependencies: [i5.DropzoneComponent, i2.TranslatePipe] }); }
98
+ }
99
+ (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(ProjectImportComponent, [{
100
+ type: Component,
101
+ args: [{ selector: 'lib-project-import', template: "<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" }]
102
+ }], () => [{ type: i1.BsModalRef }, { type: i2.TranslateService }, { type: i3.ToastrService }, { type: i4.ProjectLoadService }], { handleKeyboardEvent: [{
103
+ type: HostListener,
104
+ args: ['document:keydown.enter', ['$event']]
105
+ }] }); })();
106
+ (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(ProjectImportComponent, { className: "ProjectImportComponent" }); })();
107
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJvamVjdC1pbXBvcnQuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZGVzaWduZXIvc3JjL2xpYi9wcm9qZWN0L3Byb2plY3QtaW1wb3J0L3Byb2plY3QtaW1wb3J0LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2Rlc2lnbmVyL3NyYy9saWIvcHJvamVjdC9wcm9qZWN0LWltcG9ydC9wcm9qZWN0LWltcG9ydC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLFlBQVksRUFBVSxNQUFNLGVBQWUsQ0FBQztBQUNoRSxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUN2RCxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFFakQsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLFlBQVksQ0FBQztBQUMzQyxPQUFPLEVBQUUsR0FBRyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDckMsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0scUNBQXFDLENBQUM7Ozs7Ozs7QUFPekUsTUFBTSxPQUFPLHNCQUFzQjtJQUlqQyxZQUNTLFVBQXNCLEVBQ3JCLGdCQUFrQyxFQUNsQyxhQUE0QixFQUM1QixrQkFBc0M7UUFIdkMsZUFBVSxHQUFWLFVBQVUsQ0FBWTtRQUNyQixxQkFBZ0IsR0FBaEIsZ0JBQWdCLENBQWtCO1FBQ2xDLGtCQUFhLEdBQWIsYUFBYSxDQUFlO1FBQzVCLHVCQUFrQixHQUFsQixrQkFBa0IsQ0FBb0I7SUFDN0MsQ0FBQztJQUVKLFFBQVE7UUFDTixJQUFJLENBQUMsY0FBYyxHQUFHO1lBQ3BCLEdBQUcsRUFBRSxPQUFPO1lBQ1osY0FBYyxFQUFFLEtBQUs7WUFDckIsV0FBVyxFQUFFLEVBQUUsQ0FBQyxXQUFXO1lBQzNCLGFBQWEsRUFBRSxN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O2tCQURsQixZQUFZO21CQUFDLHdCQUF3QixFQUFFLENBQUMsUUFBUSxDQUFDOztrRkFqRXZDLHNCQUFzQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgSG9zdExpc3RlbmVyLCBPbkluaXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IFRyYW5zbGF0ZVNlcnZpY2UgfSBmcm9tICdAbmd4LXRyYW5zbGF0ZS9jb3JlJztcbmltcG9ydCB7IEJzTW9kYWxSZWYgfSBmcm9tICduZ3gtYm9vdHN0cmFwL21vZGFsJztcbmltcG9ydCB7IERyb3B6b25lQ29uZmlnSW50ZXJmYWNlIH0gZnJvbSAnbmd4LWRyb3B6b25lLXdyYXBwZXInO1xuaW1wb3J0IHsgVG9hc3RyU2VydmljZSB9IGZyb20gJ25neC10b2FzdHInO1xuaW1wb3J0IHsgbWFwIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuaW1wb3J0IHsgUHJvamVjdExvYWRTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvcHJvamVjdC1sb2FkLnNlcnZpY2UnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdsaWItcHJvamVjdC1pbXBvcnQnLFxuICB0ZW1wbGF0ZVVybDogJy4vcHJvamVjdC1pbXBvcnQuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9wcm9qZWN0LWltcG9ydC5jb21wb25lbnQuY3NzJ10sXG59KVxuZXhwb3J0IGNsYXNzIFByb2plY3RJbXBvcnRDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQge1xuICBwdWJsaWMgZHJvcHpvbmVDb25maWc6IERyb3B6b25lQ29uZmlnSW50ZXJmYWNlO1xuICBwdWJsaWMgdXBsb2FkTWVzc2FnZTogc3RyaW5nO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHB1YmxpYyBic01vZGFsUmVmOiBCc01vZGFsUmVmLFxuICAgIHByaXZhdGUgdHJhbnNsYXRlU2VydmljZTogVHJhbnNsYXRlU2VydmljZSxcbiAgICBwcml2YXRlIHRvYXN0clNlcnZpY2U6IFRvYXN0clNlcnZpY2UsXG4gICAgcHJpdmF0ZSBwcm9qZWN0TG9hZFNlcnZpY2U6IFByb2plY3RMb2FkU2VydmljZVxuICApIHt9XG5cbiAgbmdPbkluaXQoKSB7XG4gICAgdGhpcy5kcm9wem9uZUNvbmZpZyA9IHtcbiAgICAgIHVybDogJ2R1bW15JyxcbiAgICAgIGFkZFJlbW92ZUxpbmtzOiBmYWxzZSxcbiAgICAgIG1heEZpbGVzaXplOiAxMCAvKiAxMCBNQiAqLyxcbiAgICAgIGFjY2VwdGVkRmlsZXM6ICcucnNkJyxcbiAgICAgIHRpbWVvdXQ6IDAsXG4gICAgICBhY2NlcHQ6IChmaWxlOiBhbnksIGRvbmU6IGFueSkgPT4ge1xuICAgICAgICBjb25zdCByZWFkZXIgPSBuZXcgRmlsZVJlYWRlcigpO1xuICAgICAgICByZWFkZXIuYWRkRXZlbnRMaXN0ZW5lcignbG9hZGVuZCcsIChldmVudDogYW55KSA9PiB7XG4gICAgICAgICAgdGhpcy5wcm9qZWN0TG9hZFNlcnZpY2UuaW1wb3J0KGV2ZW50LnRhcmdldC5yZXN1bHQpO1xuICAgICAgICAgIGRvbmUoJ25vZXJyJyk7XG4gICAgICAgICAgdGhpcy5ic01vZGFsUmVmLmhpZGUoKTtcbiAgICAgICAgfSk7XG4gICAgICAgIHJlYWRlci5yZWFkQXNUZXh0KGZpbGUpO1xuICAgICAgfSxcbiAgICAgIHByZXZpZXdUZW1wbGF0ZTogYFxuICAgICAgPGRpdiBzdHlsZT1cImRpc3BsYXk6IG5vbmU7XCI+XG4gICAgICAgIDwhLS0gTm8gcHJldmlldyAtLT5cbiAgICAgIDwvZGl2PlxuICAgICAgYCxcbiAgICB9O1xuXG4gICAgdGhpcy50cmFuc2xhdGVTZXJ2aWNlXG4gICAgICAuZ2V0KCdkZXNpZ25lci5taXNjLmRyb3B6b25lLW1lc3NhZ2UnKVxuICAgICAgLnBpcGUoXG4gICAgICAgIG1hcCgocmVzdWx0KSA9PiB7XG4gICAgICAgICAgdGhpcy51cGxvYWRNZXNzYWdlID0gJzxoMyBjbGFzcz1cIm1iLTBcIj48aSBjbGFzcz1cImZhIGZhLWNsb3VkLXVwbG9hZFwiPjwvaT48L2gzPicgKyByZXN1bHQ7XG4gICAgICAgIH0pXG4gICAgICApXG4gICAgICAuc3Vic2NyaWJlKCk7XG4gIH1cblxuICBwdWJsaWMgb25VcGxvYWRFcnJvcihhcmdzOiBhbnkpIHtcbiAgICBpZiAoYXJnc1sxXSA9PT0gJ25vZXJyJykge1xuICAgICAgLy8gdGhpcyBlcnJvciBpcyBzZXQgaW4gdGhlIGFjY2VwdCBldmVudCBsaXN0ZW5lciAtPiBldmVyeXRoaW5nIE9LXG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgY29uc3QgbXNnID0gJ2Rlc2lnbmVyLm1pc2MudG9hc3QtdXBsb2FkLWVycm9yJztcbiAgICBjb25zdCB0aXRsZSA9ICdkZXNpZ25lci5taXNjLnRvYXN0LXVwbG9hZC1lcnJvci10aXRsZSc7XG4gICAgdGhpcy50cmFuc2xhdGVTZXJ2aWNlLmdldChbbXNnLCB0aXRsZV0pLnN1YnNjcmliZSgocmVzdWx0KSA9PiB7XG4gICAgICB0aGlzLnRvYXN0clNlcnZpY2UuZXJyb3IocmVzdWx0W21zZ10gKyBhcmdzWzFdLCByZXN1bHRbdGl0bGVdLCB7IHRpbWVPdXQ6IDAsIGV4dGVuZGVkVGltZU91dDogMCwgZW5hYmxlSHRtbDogdHJ1ZSB9KTtcbiAgICB9KTtcbiAgfVxuXG4gIG9rKCkge1xuICAgIHRoaXMuYnNNb2RhbFJlZi5oaWRlKCk7XG4gIH1cblxuICBjYW5jZWwoKSB7XG4gICAgdGhpcy5ic01vZGFsUmVmLmhpZGUoKTtcbiAgfVxuXG4gIEBIb3N0TGlzdGVuZXIoJ2RvY3VtZW50OmtleWRvd24uZW50ZXInLCBbJyRldmVudCddKVxuICBoYW5kbGVLZXlib2FyZEV2ZW50KGV2ZW50OiBhbnkpIHtcbiAgICB0aGlzLm9rKCk7XG4gIH1cbn1cbiIsIjxkaXYgY2xhc3M9XCJtb2RhbC1oZWFkZXJcIj5cbiAgPGg0IGNsYXNzPVwibW9kYWwtdGl0bGUgcHVsbC1sZWZ0XCI+e3sgJ2Rlc2lnbmVyLnByb2plY3QuaW1wb3J0LXRpdGxlJyB8IHRyYW5zbGF0ZSB9fTwvaDQ+XG4gIDxidXR0b24gdHlwZT1cImJ1dHRvblwiIGNsYXNzPVwiY2xvc2UgcHVsbC1yaWdodFwiIGFyaWEtbGFiZWw9XCJDbG9zZVwiIChjbGljayk9XCJic01vZGFsUmVmLmhpZGUoKVwiPlxuICAgIDxzcGFuIGFyaWEtaGlkZGVuPVwidHJ1ZVwiPiZ0aW1lczs8L3NwYW4+XG4gIDwvYnV0dG9uPlxuPC9kaXY+XG48ZGl2IGNsYXNzPVwibW9kYWwtYm9keVwiPlxuICA8IS0tIERyb3B6b25lIC0tPlxuICA8ZHJvcHpvbmUgW2NvbmZpZ109XCJkcm9wem9uZUNvbmZpZ1wiIFt1c2VEcm9wem9uZUNsYXNzXT1cIidmYWxzZSdcIiBbbWVzc2FnZV09XCJ1cGxvYWRNZXNzYWdlXCIgKGVycm9yKT1cIm9uVXBsb2FkRXJyb3IoJGV2ZW50KVwiPjwvZHJvcHpvbmU+XG48L2Rpdj5cbjxkaXYgY2xhc3M9XCJtb2RhbC1mb290ZXJcIj5cbiAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgY2xhc3M9XCJidG4gYnRuLXByaW1hcnlcIiAoY2xpY2spPVwib2soKVwiPnt7ICdkZXNpZ25lci5taXNjLm9rJyB8IHRyYW5zbGF0ZSB9fTwvYnV0dG9uPlxuPC9kaXY+XG4iXX0=
@@ -0,0 +1,178 @@
1
+ import { Component, HostListener } from '@angular/core';
2
+ import { BsModalRef } from 'ngx-bootstrap/modal';
3
+ import { map } from 'rxjs/operators';
4
+ import { ConfigService } from '../../services/config.service';
5
+ import { ProjectService } from '../../services/project.service';
6
+ import { WarningDialogService } from '../../services/warning-dialog.service';
7
+ import * as i0 from "@angular/core";
8
+ import * as i1 from "ngx-bootstrap/modal";
9
+ import * as i2 from "../../services/project.service";
10
+ import * as i3 from "../../services/warning-dialog.service";
11
+ import * as i4 from "../../services/config.service";
12
+ import * as i5 from "@angular/common";
13
+ import * as i6 from "@angular/forms";
14
+ import * as i7 from "@ngx-translate/core";
15
+ import * as i8 from "../../array-sort-pipe";
16
+ function ProjectSaveComponent_div_14_Template(rf, ctx) { if (rf & 1) {
17
+ i0.ɵɵelementStart(0, "div", 14)(1, "p", 15);
18
+ i0.ɵɵelement(2, "i", 16);
19
+ i0.ɵɵelementEnd()();
20
+ } }
21
+ function ProjectSaveComponent_div_15_div_1_Template(rf, ctx) { if (rf & 1) {
22
+ const _r1 = i0.ɵɵgetCurrentView();
23
+ i0.ɵɵelementStart(0, "div", 19)(1, "div", 20)(2, "div", 21)(3, "a", 22);
24
+ i0.ɵɵlistener("click", function ProjectSaveComponent_div_15_div_1_Template_a_click_3_listener() { const project_r2 = i0.ɵɵrestoreView(_r1).$implicit; const ctx_r2 = i0.ɵɵnextContext(2); ctx_r2.selectProject(project_r2); return i0.ɵɵresetView(false); });
25
+ i0.ɵɵelementStart(4, "p", 23);
26
+ i0.ɵɵtext(5);
27
+ i0.ɵɵelementEnd()()();
28
+ i0.ɵɵelementStart(6, "div", 24)(7, "div", 25);
29
+ i0.ɵɵlistener("click", function ProjectSaveComponent_div_15_div_1_Template_div_click_7_listener() { const project_r2 = i0.ɵɵrestoreView(_r1).$implicit; const ctx_r2 = i0.ɵɵnextContext(2); ctx_r2.deleteProject(project_r2); return i0.ɵɵresetView(false); });
30
+ i0.ɵɵelement(8, "i", 26);
31
+ i0.ɵɵelementEnd()()()();
32
+ } if (rf & 2) {
33
+ const project_r2 = ctx.$implicit;
34
+ i0.ɵɵadvance(5);
35
+ i0.ɵɵtextInterpolate(project_r2.name);
36
+ } }
37
+ function ProjectSaveComponent_div_15_Template(rf, ctx) { if (rf & 1) {
38
+ i0.ɵɵelementStart(0, "div", 17);
39
+ i0.ɵɵtemplate(1, ProjectSaveComponent_div_15_div_1_Template, 9, 1, "div", 18);
40
+ i0.ɵɵpipe(2, "sort");
41
+ i0.ɵɵelementEnd();
42
+ } if (rf & 2) {
43
+ const ctx_r2 = i0.ɵɵnextContext();
44
+ i0.ɵɵadvance();
45
+ i0.ɵɵproperty("ngForOf", i0.ɵɵpipeBind2(2, 1, ctx_r2.projects, "name"));
46
+ } }
47
+ export class ProjectSaveComponent {
48
+ constructor(bsModalRef, projectService, warningDialogService, configService) {
49
+ this.bsModalRef = bsModalRef;
50
+ this.projectService = projectService;
51
+ this.warningDialogService = warningDialogService;
52
+ this.configService = configService;
53
+ this.projects = [];
54
+ this.loading = true;
55
+ this.loadProjects();
56
+ if (this.projectService.project.name) {
57
+ this.projectName = this.projectService.project.name;
58
+ }
59
+ else {
60
+ this.projectName = 'New Project';
61
+ }
62
+ }
63
+ ngOnInit() { }
64
+ loadProjects() {
65
+ this.projectService.getAllProjects().subscribe((projects) => {
66
+ this.projects = projects;
67
+ this.loading = false;
68
+ });
69
+ }
70
+ cancel() {
71
+ this.bsModalRef.hide();
72
+ }
73
+ selectProject(project) {
74
+ this.projectService.project.name = project.name;
75
+ }
76
+ existingProject(uuid, name) {
77
+ for (const project of this.projects) {
78
+ if (project.name === name && project.uuid !== uuid) {
79
+ return true;
80
+ }
81
+ }
82
+ return false;
83
+ }
84
+ doSave() {
85
+ this.projectService.project.name = this.projectName;
86
+ this.projectService.save(this.projectService.project);
87
+ this.bsModalRef.hide();
88
+ }
89
+ saveProject() {
90
+ if (this.existingProject(this.projectService.project.uuid, this.projectName) && this.configService.uniqueProjectNames) {
91
+ this.warningDialogService
92
+ .show('designer.project.overwrite-warning')
93
+ .pipe(map((result) => {
94
+ if (result) {
95
+ this.doSave();
96
+ }
97
+ }))
98
+ .subscribe();
99
+ }
100
+ else {
101
+ this.doSave();
102
+ }
103
+ }
104
+ deleteProject(project) {
105
+ this.warningDialogService
106
+ .show('designer.project.delete-warning')
107
+ .pipe(map((result) => {
108
+ if (result) {
109
+ this.projectService.deleteProject(project).subscribe((projects) => {
110
+ this.loadProjects();
111
+ });
112
+ }
113
+ }))
114
+ .subscribe();
115
+ }
116
+ handleKeyboardEvent(event) {
117
+ this.saveProject();
118
+ }
119
+ static { this.ɵfac = function ProjectSaveComponent_Factory(t) { return new (t || ProjectSaveComponent)(i0.ɵɵdirectiveInject(i1.BsModalRef), i0.ɵɵdirectiveInject(i2.ProjectService), i0.ɵɵdirectiveInject(i3.WarningDialogService), i0.ɵɵdirectiveInject(i4.ConfigService)); }; }
120
+ static { this.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: ProjectSaveComponent, selectors: [["lib-project-save"]], hostBindings: function ProjectSaveComponent_HostBindings(rf, ctx) { if (rf & 1) {
121
+ i0.ɵɵlistener("keydown.enter", function ProjectSaveComponent_keydown_enter_HostBindingHandler($event) { return ctx.handleKeyboardEvent($event); }, false, i0.ɵɵresolveDocument);
122
+ } }, decls: 23, vars: 16, consts: [[1, "modal-header"], [1, "modal-title", "pull-left"], ["type", "button", "aria-label", "Close", 1, "close", "pull-right", 3, "click"], ["aria-hidden", "true"], [1, "modal-body", "p-0"], [1, "form-group", "row", "p-3", "mb-0"], [1, "col-lg-4", "col-form-label"], [1, "col-lg-8"], ["type", "text", 1, "form-control", 3, "ngModelChange", "ngModel"], ["class", "m-2 d-flex w-100", 4, "ngIf"], ["class", "list-group list-group-flush", "style", "max-height: 500px; overflow-y: scroll", 4, "ngIf"], [1, "modal-footer"], ["href", "#", "role", "button", 1, "mr-3", "my-auto", 3, "click"], ["type", "button", 1, "btn", "btn-primary", 3, "click", "disabled"], [1, "m-2", "d-flex", "w-100"], [1, "w-100", 2, "text-align", "center"], [1, "fa", "fa-spinner", "fa-pulse", "fa-fw"], [1, "list-group", "list-group-flush", 2, "max-height", "500px", "overflow-y", "scroll"], ["class", "list-group-item", 4, "ngFor", "ngForOf"], [1, "list-group-item"], [1, "row"], [1, "col-auto", "my-auto", "flex-grow"], ["href", "#", 3, "click"], [1, "mb-0", "w-100"], [1, "my-auto"], [1, "col-auto", "my-auto", "pl-0", "text-danger", "float-right", 2, "cursor", "pointer", 3, "click"], ["aria-hidden", "true", 1, "fa", "fa-trash-o"]], template: function ProjectSaveComponent_Template(rf, ctx) { if (rf & 1) {
123
+ i0.ɵɵelementStart(0, "div", 0)(1, "h4", 1);
124
+ i0.ɵɵtext(2);
125
+ i0.ɵɵpipe(3, "translate");
126
+ i0.ɵɵelementEnd();
127
+ i0.ɵɵelementStart(4, "button", 2);
128
+ i0.ɵɵlistener("click", function ProjectSaveComponent_Template_button_click_4_listener() { ctx.cancel(); return false; });
129
+ i0.ɵɵelementStart(5, "span", 3);
130
+ i0.ɵɵtext(6, "\u00D7");
131
+ i0.ɵɵelementEnd()()();
132
+ i0.ɵɵelementStart(7, "div", 4)(8, "div", 5)(9, "label", 6);
133
+ i0.ɵɵtext(10);
134
+ i0.ɵɵpipe(11, "translate");
135
+ i0.ɵɵelementEnd();
136
+ i0.ɵɵelementStart(12, "div", 7)(13, "input", 8);
137
+ i0.ɵɵlistener("ngModelChange", function ProjectSaveComponent_Template_input_ngModelChange_13_listener($event) { return ctx.projectName = $event; });
138
+ i0.ɵɵelementEnd()()();
139
+ i0.ɵɵtemplate(14, ProjectSaveComponent_div_14_Template, 3, 0, "div", 9)(15, ProjectSaveComponent_div_15_Template, 3, 4, "div", 10);
140
+ i0.ɵɵelementEnd();
141
+ i0.ɵɵelementStart(16, "div", 11)(17, "a", 12);
142
+ i0.ɵɵlistener("click", function ProjectSaveComponent_Template_a_click_17_listener() { ctx.cancel(); return false; });
143
+ i0.ɵɵtext(18);
144
+ i0.ɵɵpipe(19, "translate");
145
+ i0.ɵɵelementEnd();
146
+ i0.ɵɵelementStart(20, "button", 13);
147
+ i0.ɵɵlistener("click", function ProjectSaveComponent_Template_button_click_20_listener() { ctx.saveProject(); return false; });
148
+ i0.ɵɵtext(21);
149
+ i0.ɵɵpipe(22, "translate");
150
+ i0.ɵɵelementEnd()();
151
+ } if (rf & 2) {
152
+ i0.ɵɵadvance(2);
153
+ i0.ɵɵtextInterpolate(i0.ɵɵpipeBind1(3, 8, "designer.project.save-title"));
154
+ i0.ɵɵadvance(8);
155
+ i0.ɵɵtextInterpolate(i0.ɵɵpipeBind1(11, 10, "designer.project.name"));
156
+ i0.ɵɵadvance(3);
157
+ i0.ɵɵproperty("ngModel", ctx.projectName);
158
+ i0.ɵɵadvance();
159
+ i0.ɵɵproperty("ngIf", ctx.loading);
160
+ i0.ɵɵadvance();
161
+ i0.ɵɵproperty("ngIf", !ctx.loading);
162
+ i0.ɵɵadvance(3);
163
+ i0.ɵɵtextInterpolate1(" ", i0.ɵɵpipeBind1(19, 12, "designer.misc.cancel"), " ");
164
+ i0.ɵɵadvance(2);
165
+ i0.ɵɵproperty("disabled", ctx.loading || !ctx.projectName);
166
+ i0.ɵɵadvance();
167
+ i0.ɵɵtextInterpolate1(" ", i0.ɵɵpipeBind1(22, 14, "designer.misc.ok"), " ");
168
+ } }, dependencies: [i5.NgForOf, i5.NgIf, i6.DefaultValueAccessor, i6.NgControlStatus, i6.NgModel, i7.TranslatePipe, i8.ArraySortPipe] }); }
169
+ }
170
+ (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(ProjectSaveComponent, [{
171
+ type: Component,
172
+ args: [{ selector: 'lib-project-save', template: "<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" }]
173
+ }], () => [{ type: i1.BsModalRef }, { type: i2.ProjectService }, { type: i3.WarningDialogService }, { type: i4.ConfigService }], { handleKeyboardEvent: [{
174
+ type: HostListener,
175
+ args: ['document:keydown.enter', ['$event']]
176
+ }] }); })();
177
+ (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(ProjectSaveComponent, { className: "ProjectSaveComponent" }); })();
178
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJvamVjdC1zYXZlLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2Rlc2lnbmVyL3NyYy9saWIvcHJvamVjdC9wcm9qZWN0LXNhdmUvcHJvamVjdC1zYXZlLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2Rlc2lnbmVyL3NyYy9saWIvcHJvamVjdC9wcm9qZWN0LXNhdmUvcHJvamVjdC1zYXZlLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsWUFBWSxFQUFVLE1BQU0sZUFBZSxDQUFDO0FBQ2hFLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUNqRCxPQUFPLEVBQUUsR0FBRyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFFckMsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLCtCQUErQixDQUFDO0FBQzlELE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxnQ0FBZ0MsQ0FBQztBQUNoRSxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSx1Q0FBdUMsQ0FBQzs7Ozs7Ozs7Ozs7SUNXekUsQUFERiwrQkFBOEMsWUFDQTtJQUFBLHdCQUE0QztJQUMxRixBQUQwRixpQkFBSSxFQUN4Rjs7OztJQUtFLEFBREYsQUFERixBQURGLCtCQUE2RSxjQUMxRCxjQUN5QixZQUNnQjtJQUExQywwTEFBUyxnQ0FBc0Isd0JBQUcsS0FBSyxLQUFFO0lBQ25ELDZCQUFzQjtJQUFBLFlBQWtCO0lBRTVDLEFBREUsQUFEMEMsaUJBQUksRUFDMUMsRUFDQTtJQUVKLEFBREYsK0JBQXFCLGNBQzBHO0lBQTFDLDRMQUFTLGdDQUFzQix3QkFBRyxLQUFLLEtBQUU7SUFDMUgsd0JBQWdEO0lBSXhELEFBREUsQUFERSxBQURFLGlCQUFNLEVBQ0YsRUFDRixFQUNGOzs7SUFUd0IsZUFBa0I7SUFBbEIscUNB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L0MseUVBQStDO1lBUXhDLGVBQXlDO1lBQXpDLHFFQUF5QztZQUV0QyxlQUF1QjtZQUF2Qix5Q0FBdUI7WUFLN0QsY0FBYTtZQUFiLGtDQUFhO1lBR2IsY0FBYztZQUFkLG1DQUFjO1lBbUJsQixlQUNGO1lBREUsK0VBQ0Y7WUFDUSxlQUFvQztZQUFwQywwREFBb0M7WUFDMUMsY0FDRjtZQURFLDJFQUNGOzs7aUZEN0JXLG9CQUFvQjtjQUxoQyxTQUFTOzJCQUNFLGtCQUFrQjt1SUF3RjVCLG1CQUFtQjtrQkFEbEIsWUFBWTttQkFBQyx3QkFBd0IsRUFBRSxDQUFDLFFBQVEsQ0FBQzs7a0ZBbkZ2QyxvQkFBb0IiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIEhvc3RMaXN0ZW5lciwgT25Jbml0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBCc01vZGFsUmVmIH0gZnJvbSAnbmd4LWJvb3RzdHJhcC9tb2RhbCc7XG5pbXBvcnQgeyBtYXAgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQgeyBQcm9qZWN0IH0gZnJvbSAnLi4vLi4vbW9kZWxzL3Byb2plY3QnO1xuaW1wb3J0IHsgQ29uZmlnU2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL2NvbmZpZy5zZXJ2aWNlJztcbmltcG9ydCB7IFByb2plY3RTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvcHJvamVjdC5zZXJ2aWNlJztcbmltcG9ydCB7IFdhcm5pbmdEaWFsb2dTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvd2FybmluZy1kaWFsb2cuc2VydmljZSc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2xpYi1wcm9qZWN0LXNhdmUnLFxuICB0ZW1wbGF0ZVVybDogJy4vcHJvamVjdC1zYXZlLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vcHJvamVjdC1zYXZlLmNvbXBvbmVudC5jc3MnXSxcbn0pXG5leHBvcnQgY2xhc3MgUHJvamVjdFNhdmVDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQge1xuICBwcm9qZWN0czogUHJvamVjdFtdID0gW107XG4gIGxvYWRpbmcgPSB0cnVlO1xuICBwcm9qZWN0TmFtZTogc3RyaW5nO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgYnNNb2RhbFJlZjogQnNNb2RhbFJlZixcbiAgICBwcml2YXRlIHByb2plY3RTZXJ2aWNlOiBQcm9qZWN0U2VydmljZSxcbiAgICBwcml2YXRlIHdhcm5pbmdEaWFsb2dTZXJ2aWNlOiBXYXJuaW5nRGlhbG9nU2VydmljZSxcbiAgICBwcml2YXRlIGNvbmZpZ1NlcnZpY2U6IENvbmZpZ1NlcnZpY2VcbiAgKSB7XG4gICAgdGhpcy5sb2FkUHJvamVjdHMoKTtcbiAgICBpZiAodGhpcy5wcm9qZWN0U2VydmljZS5wcm9qZWN0Lm5hbWUpIHtcbiAgICAgIHRoaXMucHJvamVjdE5hbWUgPSB0aGlzLnByb2plY3RTZXJ2aWNlLnByb2plY3QubmFtZTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5wcm9qZWN0TmFtZSA9ICdOZXcgUHJvamVjdCc7XG4gICAgfVxuICB9XG5cbiAgbmdPbkluaXQoKSB7fVxuXG4gIHByaXZhdGUgbG9hZFByb2plY3RzKCkge1xuICAgIHRoaXMucHJvamVjdFNlcnZpY2UuZ2V0QWxsUHJvamVjdHMoKS5zdWJzY3JpYmUoKHByb2plY3RzKSA9PiB7XG4gICAgICB0aGlzLnByb2plY3RzID0gcHJvamVjdHM7XG4gICAgICB0aGlzLmxvYWRpbmcgPSBmYWxzZTtcbiAgICB9KTtcbiAgfVxuXG4gIGNhbmNlbCgpIHtcbiAgICB0aGlzLmJzTW9kYWxSZWYuaGlkZSgpO1xuICB9XG5cbiAgc2VsZWN0UHJvamVjdChwcm9qZWN0OiBQcm9qZWN0KSB7XG4gICAgdGhpcy5wcm9qZWN0U2VydmljZS5wcm9qZWN0Lm5hbWUgPSBwcm9qZWN0Lm5hbWU7XG4gIH1cblxuICBwcml2YXRlIGV4aXN0aW5nUHJvamVjdCh1dWlkOiBzdHJpbmcsIG5hbWU6IHN0cmluZykge1xuICAgIGZvciAoY29uc3QgcHJvamVjdCBvZiB0aGlzLnByb2plY3RzKSB7XG4gICAgICBpZiAocHJvamVjdC5uYW1lID09PSBuYW1lICYmIHByb2plY3QudXVpZCAhPT0gdXVpZCkge1xuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG5cbiAgcHJpdmF0ZSBkb1NhdmUoKSB7XG4gICAgdGhpcy5wcm9qZWN0U2VydmljZS5wcm9qZWN0Lm5hbWUgPSB0aGlzLnByb2plY3ROYW1lO1xuICAgIHRoaXMucHJvamVjdFNlcnZpY2Uuc2F2ZSh0aGlzLnByb2plY3RTZXJ2aWNlLnByb2plY3QpO1xuICAgIHRoaXMuYnNNb2RhbFJlZi5oaWRlKCk7XG4gIH1cblxuICBzYXZlUHJvamVjdCgpIHtcbiAgICBpZiAodGhpcy5leGlzdGluZ1Byb2plY3QodGhpcy5wcm9qZWN0U2VydmljZS5wcm9qZWN0LnV1aWQsIHRoaXMucHJvamVjdE5hbWUpICYmIHRoaXMuY29uZmlnU2VydmljZS51bmlxdWVQcm9qZWN0TmFtZXMpIHtcbiAgICAgIHRoaXMud2FybmluZ0RpYWxvZ1NlcnZpY2VcbiAgICAgICAgLnNob3coJ2Rlc2lnbmVyLnByb2plY3Qub3ZlcndyaXRlLXdhcm5pbmcnKVxuICAgICAgICAucGlwZShcbiAgICAgICAgICBtYXAoKHJlc3VsdCkgPT4ge1xuICAgICAgICAgICAgaWYgKHJlc3VsdCkge1xuICAgICAgICAgICAgICB0aGlzLmRvU2F2ZSgpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH0pXG4gICAgICAgIClcbiAgICAgICAgLnN1YnNjcmliZSgpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLmRvU2F2ZSgpO1xuICAgIH1cbiAgfVxuXG4gIGRlbGV0ZVByb2plY3QocHJvamVjdDogUHJvamVjdCkge1xuICAgIHRoaXMud2FybmluZ0RpYWxvZ1NlcnZpY2VcbiAgICAgIC5zaG93KCdkZXNpZ25lci5wcm9qZWN0LmRlbGV0ZS13YXJuaW5nJylcbiAgICAgIC5waXBlKFxuICAgICAgICBtYXAoKHJlc3VsdCkgPT4ge1xuICAgICAgICAgIGlmIChyZXN1bHQpIHtcbiAgICAgICAgICAgIHRoaXMucHJvamVjdFNlcnZpY2UuZGVsZXRlUHJvamVjdChwcm9qZWN0KS5zdWJzY3JpYmUoKHByb2plY3RzKSA9PiB7XG4gICAgICAgICAgICAgIHRoaXMubG9hZFByb2plY3RzKCk7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICB9XG4gICAgICAgIH0pXG4gICAgICApXG4gICAgICAuc3Vic2NyaWJlKCk7XG4gIH1cblxuICBASG9zdExpc3RlbmVyKCdkb2N1bWVudDprZXlkb3duLmVudGVyJywgWyckZXZlbnQnXSlcbiAgaGFuZGxlS2V5Ym9hcmRFdmVudChldmVudDogYW55KSB7XG4gICAgdGhpcy5zYXZlUHJvamVjdCgpO1xuICB9XG59XG4iLCI8ZGl2IGNsYXNzPVwibW9kYWwtaGVhZGVyXCI+XG4gIDxoNCBjbGFzcz1cIm1vZGFsLXRpdGxlIHB1bGwtbGVmdFwiPnt7ICdkZXNpZ25lci5wcm9qZWN0LnNhdmUtdGl0bGUnIHwgdHJhbnNsYXRlIH19PC9oND5cbiAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgY2xhc3M9XCJjbG9zZSBwdWxsLXJpZ2h0XCIgYXJpYS1sYWJlbD1cIkNsb3NlXCIgKGNsaWNrKT1cImNhbmNlbCgpOyAoZmFsc2UpXCI+XG4gICAgPHNwYW4gYXJpYS1oaWRkZW49XCJ0cnVlXCI+JnRpbWVzOzwvc3Bhbj5cbiAgPC9idXR0b24+XG48L2Rpdj5cbjxkaXYgY2xhc3M9XCJtb2RhbC1ib2R5IHAtMFwiPlxuICA8IS0tIFRoZSBuYW1lIG9mIHRoZSBjdXJyZW50IHByb2plY3QgLS0+XG4gIDxkaXYgY2xhc3M9XCJmb3JtLWdyb3VwIHJvdyBwLTMgbWItMFwiPlxuICAgIDxsYWJlbCBjbGFzcz1cImNvbC1sZy00IGNvbC1mb3JtLWxhYmVsXCI+e3sgJ2Rlc2lnbmVyLnByb2plY3QubmFtZScgfCB0cmFuc2xhdGUgfX08L2xhYmVsPlxuICAgIDxkaXYgY2xhc3M9XCJjb2wtbGctOFwiPlxuICAgICAgPGlucHV0IHR5cGU9XCJ0ZXh0XCIgY2xhc3M9XCJmb3JtLWNvbnRyb2xcIiBbbmdNb2RlbF09XCJwcm9qZWN0TmFtZVwiIChuZ01vZGVsQ2hhbmdlKT1cInByb2plY3ROYW1lID0gJGV2ZW50XCIgLz5cbiAgICA8L2Rpdj5cbiAgPC9kaXY+XG5cbiAgPCEtLSBMaXN0IGV4aXN0aW5nIHByb2plY3RzIC0tPlxuICA8ZGl2ICpuZ0lmPVwibG9hZGluZ1wiIGNsYXNzPVwibS0yIGQtZmxleCB3LTEwMFwiPlxuICAgIDxwIGNsYXNzPVwidy0xMDBcIiBzdHlsZT1cInRleHQtYWxpZ246IGNlbnRlclwiPjxpIGNsYXNzPVwiZmEgZmEtc3Bpbm5lciBmYS1wdWxzZSBmYS1md1wiPjwvaT48L3A+XG4gIDwvZGl2PlxuICA8ZGl2ICpuZ0lmPVwiIWxvYWRpbmdcIiBjbGFzcz1cImxpc3QtZ3JvdXAgbGlzdC1ncm91cC1mbHVzaFwiIHN0eWxlPVwibWF4LWhlaWdodDogNTAwcHg7IG92ZXJmbG93LXk6IHNjcm9sbFwiPlxuICAgIDxkaXYgY2xhc3M9XCJsaXN0LWdyb3VwLWl0ZW1cIiAqbmdGb3I9XCJsZXQgcHJvamVjdCBvZiBwcm9qZWN0cyB8IHNvcnQ6ICduYW1lJ1wiPlxuICAgICAgPGRpdiBjbGFzcz1cInJvd1wiPlxuICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLWF1dG8gbXktYXV0byBmbGV4LWdyb3dcIj5cbiAgICAgICAgICA8YSBocmVmPVwiI1wiIChjbGljayk9XCJzZWxlY3RQcm9qZWN0KHByb2plY3QpOyAoZmFsc2UpXCI+XG4gICAgICAgICAgICA8cCBjbGFzcz1cIm1iLTAgdy0xMDBcIj57eyBwcm9qZWN0Lm5hbWUgfX08L3A+XG4gICAgICAgICAgPC9hPlxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPGRpdiBjbGFzcz1cIm15LWF1dG9cIj5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLWF1dG8gbXktYXV0byBwbC0wIHRleHQtZGFuZ2VyIGZsb2F0LXJpZ2h0XCIgc3R5bGU9XCJjdXJzb3I6IHBvaW50ZXJcIiAoY2xpY2spPVwiZGVsZXRlUHJvamVjdChwcm9qZWN0KTsgKGZhbHNlKVwiPlxuICAgICAgICAgICAgPGkgY2xhc3M9XCJmYSBmYS10cmFzaC1vXCIgYXJpYS1oaWRkZW49XCJ0cnVlXCI+PC9pPlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuICA8L2Rpdj5cbjwvZGl2PlxuPGRpdiBjbGFzcz1cIm1vZGFsLWZvb3RlclwiPlxuICA8YSBjbGFzcz1cIm1yLTMgbXktYXV0b1wiIGhyZWY9XCIjXCIgcm9sZT1cImJ1dHRvblwiIChjbGljayk9XCJjYW5jZWwoKTsgKGZhbHNlKVwiPlxuICAgIHt7ICdkZXNpZ25lci5taXNjLmNhbmNlbCcgfCB0cmFuc2xhdGUgfX1cbiAgPC9hPlxuICA8YnV0dG9uIFtkaXNhYmxlZF09XCJsb2FkaW5nIHx8ICFwcm9qZWN0TmFtZVwiIChjbGljayk9XCJzYXZlUHJvamVjdCgpOyAoZmFsc2UpXCIgdHlwZT1cImJ1dHRvblwiIGNsYXNzPVwiYnRuIGJ0bi1wcmltYXJ5XCI+XG4gICAge3sgJ2Rlc2lnbmVyLm1pc2Mub2snIHwgdHJhbnNsYXRlIH19XG4gIDwvYnV0dG9uPlxuPC9kaXY+XG4iXX0=
@@ -0,0 +1,71 @@
1
+ import { Component, HostListener } from '@angular/core';
2
+ import { BsModalRef } from 'ngx-bootstrap/modal';
3
+ import { ProjectService } from '../../services/project.service';
4
+ import * as i0 from "@angular/core";
5
+ import * as i1 from "ngx-bootstrap/modal";
6
+ import * as i2 from "../../services/project.service";
7
+ import * as i3 from "@angular/forms";
8
+ import * as i4 from "@ngx-translate/core";
9
+ export class ProjectShareComponent {
10
+ constructor(bsModalRef, projectService) {
11
+ this.bsModalRef = bsModalRef;
12
+ this.projectService = projectService;
13
+ }
14
+ ngOnInit() {
15
+ this.shareLink =
16
+ window.location.host + '/designer?id=' + this.projectService.project.id + '&token=' + this.projectService.project.shareToken;
17
+ }
18
+ ok() {
19
+ this.bsModalRef.hide();
20
+ }
21
+ cancel() {
22
+ this.bsModalRef.hide();
23
+ }
24
+ handleKeyboardEvent(event) {
25
+ this.ok();
26
+ }
27
+ static { this.ɵfac = function ProjectShareComponent_Factory(t) { return new (t || ProjectShareComponent)(i0.ɵɵdirectiveInject(i1.BsModalRef), i0.ɵɵdirectiveInject(i2.ProjectService)); }; }
28
+ static { this.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: ProjectShareComponent, selectors: [["lib-project-share"]], hostBindings: function ProjectShareComponent_HostBindings(rf, ctx) { if (rf & 1) {
29
+ i0.ɵɵlistener("keydown.enter", function ProjectShareComponent_keydown_enter_HostBindingHandler($event) { return ctx.handleKeyboardEvent($event); }, false, i0.ɵɵresolveDocument);
30
+ } }, decls: 18, vars: 10, consts: [[1, "modal-header"], [1, "modal-title", "pull-left"], ["type", "button", "aria-label", "Close", 1, "close", "pull-right", 3, "click"], ["aria-hidden", "true"], [1, "modal-body"], [1, "form-group", "row"], [1, "col-lg-4", "col-form-label"], [1, "col-lg-8", "d-flex"], ["type", "text", "readonly", "", 1, "form-control", 3, "ngModel"], [1, "modal-footer"], ["type", "button", 1, "btn", "btn-primary", 3, "click"]], template: function ProjectShareComponent_Template(rf, ctx) { if (rf & 1) {
31
+ i0.ɵɵelementStart(0, "div", 0)(1, "h4", 1);
32
+ i0.ɵɵtext(2);
33
+ i0.ɵɵpipe(3, "translate");
34
+ i0.ɵɵelementEnd();
35
+ i0.ɵɵelementStart(4, "button", 2);
36
+ i0.ɵɵlistener("click", function ProjectShareComponent_Template_button_click_4_listener() { return ctx.bsModalRef.hide(); });
37
+ i0.ɵɵelementStart(5, "span", 3);
38
+ i0.ɵɵtext(6, "\u00D7");
39
+ i0.ɵɵelementEnd()()();
40
+ i0.ɵɵelementStart(7, "div", 4)(8, "div", 5)(9, "label", 6);
41
+ i0.ɵɵtext(10);
42
+ i0.ɵɵpipe(11, "translate");
43
+ i0.ɵɵelementEnd();
44
+ i0.ɵɵelementStart(12, "div", 7);
45
+ i0.ɵɵelement(13, "input", 8);
46
+ i0.ɵɵelementEnd()()();
47
+ i0.ɵɵelementStart(14, "div", 9)(15, "button", 10);
48
+ i0.ɵɵlistener("click", function ProjectShareComponent_Template_button_click_15_listener() { return ctx.ok(); });
49
+ i0.ɵɵtext(16);
50
+ i0.ɵɵpipe(17, "translate");
51
+ i0.ɵɵelementEnd()();
52
+ } if (rf & 2) {
53
+ i0.ɵɵadvance(2);
54
+ i0.ɵɵtextInterpolate(i0.ɵɵpipeBind1(3, 4, "designer.project.share-title"));
55
+ i0.ɵɵadvance(8);
56
+ i0.ɵɵtextInterpolate(i0.ɵɵpipeBind1(11, 6, "designer.project.share-link"));
57
+ i0.ɵɵadvance(3);
58
+ i0.ɵɵproperty("ngModel", ctx.shareLink);
59
+ i0.ɵɵadvance(3);
60
+ i0.ɵɵtextInterpolate(i0.ɵɵpipeBind1(17, 8, "designer.misc.ok"));
61
+ } }, dependencies: [i3.DefaultValueAccessor, i3.NgControlStatus, i3.NgModel, i4.TranslatePipe] }); }
62
+ }
63
+ (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(ProjectShareComponent, [{
64
+ type: Component,
65
+ args: [{ selector: 'lib-project-share', template: "<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" }]
66
+ }], () => [{ type: i1.BsModalRef }, { type: i2.ProjectService }], { handleKeyboardEvent: [{
67
+ type: HostListener,
68
+ args: ['document:keydown.enter', ['$event']]
69
+ }] }); })();
70
+ (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(ProjectShareComponent, { className: "ProjectShareComponent" }); })();
71
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJvamVjdC1zaGFyZS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9kZXNpZ25lci9zcmMvbGliL3Byb2plY3QvcHJvamVjdC1zaGFyZS9wcm9qZWN0LXNoYXJlLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2Rlc2lnbmVyL3NyYy9saWIvcHJvamVjdC9wcm9qZWN0LXNoYXJlL3Byb2plY3Qtc2hhcmUuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxZQUFZLEVBQVUsTUFBTSxlQUFlLENBQUM7QUFDaEUsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQ2pELE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxnQ0FBZ0MsQ0FBQzs7Ozs7O0FBT2hFLE1BQU0sT0FBTyxxQkFBcUI7SUFHaEMsWUFBbUIsVUFBc0IsRUFBVSxjQUE4QjtRQUE5RCxlQUFVLEdBQVYsVUFBVSxDQUFZO1FBQVUsbUJBQWMsR0FBZCxjQUFjLENBQWdCO0lBQUcsQ0FBQztJQUVyRixRQUFRO1FBQ04sSUFBSSxDQUFDLFNBQVM7WUFDWixNQUFNLENBQUMsUUFBUSxDQUFDLElBQUksR0FBRyxlQUFlLEdBQUcsSUFBSSxDQUFDLGNBQWMsQ0FBQyxPQUFPLENBQUMsRUFBRSxHQUFHLFNBQVMsR0FBRyxJQUFJLENBQUMsY0FBYyxDQUFDLE9BQU8sQ0FBQyxVQUFVLENBQUM7SUFDakksQ0FBQztJQUVELEVBQUU7UUFDQSxJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksRUFBRSxDQUFDO0lBQ3pCLENBQUM7SUFFRCxNQUFNO1FBQ0osSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLEVBQUUsQ0FBQztJQUN6QixDQUFDO0lBR0QsbUJBQW1CLENBQUMsS0FBVTtRQUM1QixJQUFJLENBQUMsRUFBRSxFQUFFLENBQUM7SUFDWixDQUFDO3NGQXJCVSxxQkFBcUI7b0VBQXJCLHFCQUFxQjtZQUFyQixnSEFBQSwrQkFBMkIsaUNBQU47O1lDUmhDLEFBREYsOEJBQTBCLFlBQ1U7WUFBQSxZQUFnRDs7WUFBQSxpQkFBSztZQUN2RixpQ0FBOEY7WUFBNUIsa0dBQVMscUJBQWlCLElBQUM7WUFDM0YsK0JBQXlCO1lBQUEsc0JBQU87WUFFcEMsQUFERSxBQURrQyxpQkFBTyxFQUNoQyxFQUNMO1lBR0YsQUFERixBQURGLDhCQUF3QixhQUNNLGVBQ2E7WUFBQSxhQUErQzs7WUFBQSxpQkFBUTtZQUM5RiwrQkFBNkI7WUFDM0IsNEJBQXlFO1lBRy9FLEFBREUsQUFERSxpQkFBTSxFQUNGLEVBQ0Y7WUFFSixBQURGLCtCQUEwQixrQkFDcUM7WUFBZixtR0FBUyxRQUFJLElBQUM7WUFBQyxhQUFvQzs7WUFDbkcsQUFEbUcsaUJBQVMsRUFDdEc7O1lBZjhCLGVBQWdEO1lBQWhELDBFQUFnRDtZQU96QyxlQUErQztZQUEvQywwRUFBK0M7WUFFNUMsZUFBcUI7WUFBckIsdUNBQXFCO1lBS0osZUFBb0M7WUFBcEMsK0RBQW9DOzs7aUZETnRGLHFCQUFxQjtjQUxqQyxTQUFTOzJCQUNFLG1CQUFtQjt3RUF1QjdCLG1CQUFtQjtrQkFEbEIsWUFBWTttQkFBQyx3QkFBd0IsRUFBRSxDQUFDLFFBQVEsQ0FBQzs7a0ZBbEJ2QyxxQkFBcUIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIEhvc3RMaXN0ZW5lciwgT25Jbml0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBCc01vZGFsUmVmIH0gZnJvbSAnbmd4LWJvb3RzdHJhcC9tb2RhbCc7XG5pbXBvcnQgeyBQcm9qZWN0U2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL3Byb2plY3Quc2VydmljZSc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2xpYi1wcm9qZWN0LXNoYXJlJyxcbiAgdGVtcGxhdGVVcmw6ICcuL3Byb2plY3Qtc2hhcmUuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9wcm9qZWN0LXNoYXJlLmNvbXBvbmVudC5jc3MnXSxcbn0pXG5leHBvcnQgY2xhc3MgUHJvamVjdFNoYXJlQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcbiAgc2hhcmVMaW5rOiBzdHJpbmc7XG5cbiAgY29uc3RydWN0b3IocHVibGljIGJzTW9kYWxSZWY6IEJzTW9kYWxSZWYsIHByaXZhdGUgcHJvamVjdFNlcnZpY2U6IFByb2plY3RTZXJ2aWNlKSB7fVxuXG4gIG5nT25Jbml0KCkge1xuICAgIHRoaXMuc2hhcmVMaW5rID1cbiAgICAgIHdpbmRvdy5sb2NhdGlvbi5ob3N0ICsgJy9kZXNpZ25lcj9pZD0nICsgdGhpcy5wcm9qZWN0U2VydmljZS5wcm9qZWN0LmlkICsgJyZ0b2tlbj0nICsgdGhpcy5wcm9qZWN0U2VydmljZS5wcm9qZWN0LnNoYXJlVG9rZW47XG4gIH1cblxuICBvaygpIHtcbiAgICB0aGlzLmJzTW9kYWxSZWYuaGlkZSgpO1xuICB9XG5cbiAgY2FuY2VsKCkge1xuICAgIHRoaXMuYnNNb2RhbFJlZi5oaWRlKCk7XG4gIH1cblxuICBASG9zdExpc3RlbmVyKCdkb2N1bWVudDprZXlkb3duLmVudGVyJywgWyckZXZlbnQnXSlcbiAgaGFuZGxlS2V5Ym9hcmRFdmVudChldmVudDogYW55KSB7XG4gICAgdGhpcy5vaygpO1xuICB9XG59XG4iLCI8ZGl2IGNsYXNzPVwibW9kYWwtaGVhZGVyXCI+XG4gIDxoNCBjbGFzcz1cIm1vZGFsLXRpdGxlIHB1bGwtbGVmdFwiPnt7ICdkZXNpZ25lci5wcm9qZWN0LnNoYXJlLXRpdGxlJyB8IHRyYW5zbGF0ZSB9fTwvaDQ+XG4gIDxidXR0b24gdHlwZT1cImJ1dHRvblwiIGNsYXNzPVwiY2xvc2UgcHVsbC1yaWdodFwiIGFyaWEtbGFiZWw9XCJDbG9zZVwiIChjbGljayk9XCJic01vZGFsUmVmLmhpZGUoKVwiPlxuICAgIDxzcGFuIGFyaWEtaGlkZGVuPVwidHJ1ZVwiPiZ0aW1lczs8L3NwYW4+XG4gIDwvYnV0dG9uPlxuPC9kaXY+XG48ZGl2IGNsYXNzPVwibW9kYWwtYm9keVwiPlxuICA8ZGl2IGNsYXNzPVwiZm9ybS1ncm91cCByb3dcIj5cbiAgICA8bGFiZWwgY2xhc3M9XCJjb2wtbGctNCBjb2wtZm9ybS1sYWJlbFwiPnt7ICdkZXNpZ25lci5wcm9qZWN0LnNoYXJlLWxpbmsnIHwgdHJhbnNsYXRlIH19PC9sYWJlbD5cbiAgICA8ZGl2IGNsYXNzPVwiY29sLWxnLTggZC1mbGV4XCI+XG4gICAgICA8aW5wdXQgdHlwZT1cInRleHRcIiBjbGFzcz1cImZvcm0tY29udHJvbFwiIFtuZ01vZGVsXT1cInNoYXJlTGlua1wiIHJlYWRvbmx5IC8+XG4gICAgPC9kaXY+XG4gIDwvZGl2PlxuPC9kaXY+XG48ZGl2IGNsYXNzPVwibW9kYWwtZm9vdGVyXCI+XG4gIDxidXR0b24gdHlwZT1cImJ1dHRvblwiIGNsYXNzPVwiYnRuIGJ0bi1wcmltYXJ5XCIgKGNsaWNrKT1cIm9rKClcIj57eyAnZGVzaWduZXIubWlzYy5vaycgfCB0cmFuc2xhdGUgfX08L2J1dHRvbj5cbjwvZGl2PlxuIl19