@clickview/library-editor 1.1.23-dev.1 → 1.1.23-rc.1

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 (332) hide show
  1. package/dist/css/1.chunk.css.map +1 -1
  2. package/dist/css/10.chunk.css.map +1 -1
  3. package/dist/css/11.chunk.css.map +1 -1
  4. package/dist/css/12.chunk.css.map +1 -1
  5. package/dist/css/13.chunk.css.map +1 -1
  6. package/dist/css/14.chunk.css.map +1 -1
  7. package/dist/css/16.chunk.css.map +1 -1
  8. package/dist/css/17.chunk.css.map +1 -1
  9. package/dist/css/18.chunk.css.map +1 -1
  10. package/dist/css/2.chunk.css.map +1 -1
  11. package/dist/css/21.chunk.css.map +1 -1
  12. package/dist/css/22.chunk.css.map +1 -1
  13. package/dist/css/23.chunk.css.map +1 -1
  14. package/dist/css/25.chunk.css.map +1 -1
  15. package/dist/css/26.chunk.css +1 -1
  16. package/dist/css/26.chunk.css.map +1 -1
  17. package/dist/css/28.chunk.css.map +1 -1
  18. package/dist/css/29.chunk.css.map +1 -1
  19. package/dist/css/3.chunk.css.map +1 -1
  20. package/dist/css/30.chunk.css.map +1 -1
  21. package/dist/css/31.chunk.css.map +1 -1
  22. package/dist/css/32.chunk.css.map +1 -1
  23. package/dist/css/33.chunk.css.map +1 -1
  24. package/dist/css/34.chunk.css.map +1 -1
  25. package/dist/css/35.chunk.css.map +1 -1
  26. package/dist/css/36.chunk.css.map +1 -1
  27. package/dist/css/37.chunk.css.map +1 -1
  28. package/dist/css/38.chunk.css.map +1 -1
  29. package/dist/css/40.chunk.css.map +1 -1
  30. package/dist/css/41.chunk.css.map +1 -1
  31. package/dist/css/42.chunk.css.map +1 -1
  32. package/dist/css/43.chunk.css.map +1 -1
  33. package/dist/css/44.chunk.css.map +1 -1
  34. package/dist/css/45.chunk.css.map +1 -1
  35. package/dist/css/46.chunk.css.map +1 -1
  36. package/dist/css/47.chunk.css.map +1 -1
  37. package/dist/css/48.chunk.css.map +1 -1
  38. package/dist/css/49.chunk.css.map +1 -1
  39. package/dist/css/50.chunk.css.map +1 -1
  40. package/dist/css/51.chunk.css.map +1 -1
  41. package/dist/css/52.chunk.css.map +1 -1
  42. package/dist/css/55.chunk.css.map +1 -1
  43. package/dist/css/56.chunk.css.map +1 -1
  44. package/dist/css/58.chunk.css.map +1 -1
  45. package/dist/css/59.chunk.css.map +1 -1
  46. package/dist/css/6.chunk.css.map +1 -1
  47. package/dist/css/60.chunk.css.map +1 -1
  48. package/dist/css/62.chunk.css.map +1 -1
  49. package/dist/css/63.chunk.css.map +1 -1
  50. package/dist/css/67.chunk.css.map +1 -1
  51. package/dist/css/68.chunk.css.map +1 -1
  52. package/dist/css/69.chunk.css.map +1 -1
  53. package/dist/css/7.chunk.css.map +1 -1
  54. package/dist/css/70.chunk.css.map +1 -1
  55. package/dist/css/71.chunk.css.map +1 -1
  56. package/dist/css/72.chunk.css.map +1 -1
  57. package/dist/css/73.chunk.css.map +1 -1
  58. package/dist/css/74.chunk.css.map +1 -1
  59. package/dist/css/75.chunk.css.map +1 -1
  60. package/dist/css/76.chunk.css.map +1 -1
  61. package/dist/css/8.chunk.css.map +1 -1
  62. package/dist/css/library-editor-app.css.map +1 -1
  63. package/dist/en.json +1 -1
  64. package/dist/libs/shared/src/enums/SettingName.d.ts +2 -1
  65. package/dist/libs/shared/src/images/svg/ImportedSvgs.d.ts +4 -1
  66. package/dist/libs/shared/src/images/svg/objects/index.d.ts +4 -1
  67. package/dist/libs/shared/src/interfaces/models/Avatar.d.ts +3 -0
  68. package/dist/libs/shared/src/interfaces/models/Customer.d.ts +1 -0
  69. package/dist/libs/shared/src/interfaces/models/Playlist.d.ts +1 -0
  70. package/dist/libs/shared/src/interfaces/models/Presentation.d.ts +2 -2
  71. package/dist/libs/shared/src/interfaces/models/User.d.ts +2 -1
  72. package/dist/libs/shared/src/interfaces/models/index.d.ts +2 -0
  73. package/dist/projects/library-editor/src/app.d.ts +1 -0
  74. package/dist/projects/library-editor/src/apps/library-editor/components/video-collection-actions/VideoCollectionActionsComponent.d.ts +1 -0
  75. package/dist/scripts/{0-09e1e33a5c.chunk.js → 0-2765595d0a.chunk.js} +1 -1
  76. package/dist/scripts/0-f82360fd03.chunk.js +1 -0
  77. package/dist/scripts/0.chunk.js +1 -1
  78. package/dist/scripts/0.chunk.js.map +1 -1
  79. package/dist/scripts/{1-a66bb44471.chunk.js → 1-35f87e4cdc.chunk.js} +1 -1
  80. package/dist/scripts/1-b6dedae131.chunk.js +1 -0
  81. package/dist/scripts/1.chunk.js.map +1 -1
  82. package/dist/scripts/{10-6c79d8c6f9.chunk.js → 10-227e797872.chunk.js} +1 -1
  83. package/dist/scripts/10-8307f8e248.chunk.js +1 -0
  84. package/dist/scripts/10.chunk.js.map +1 -1
  85. package/dist/scripts/{11-6eef9e160e.chunk.js → 11-9dbae07504.chunk.js} +1 -1
  86. package/dist/scripts/11.chunk.js.map +1 -1
  87. package/dist/scripts/{12-dbffa50a92.chunk.js → 12-06cf65b136.chunk.js} +1 -1
  88. package/dist/scripts/12-43e54b0a2d.chunk.js +1 -0
  89. package/dist/scripts/12.chunk.js.map +1 -1
  90. package/dist/scripts/{13-37e5cfab3e.chunk.js → 13-01ee41eb1e.chunk.js} +1 -1
  91. package/dist/scripts/13-3d84e237b9.chunk.js +1 -0
  92. package/dist/scripts/13.chunk.js.map +1 -1
  93. package/dist/scripts/{14-b524fbd295.chunk.js → 14-988bab314d.chunk.js} +1 -1
  94. package/dist/scripts/14-cf307e51d9.chunk.js +1 -0
  95. package/dist/scripts/14.chunk.js.map +1 -1
  96. package/dist/scripts/{15-1ff1252d1a.chunk.js → 15-bedb9ff6d0.chunk.js} +1 -1
  97. package/dist/scripts/15-eed00bc875.chunk.js +1 -0
  98. package/dist/scripts/15.chunk.js.map +1 -1
  99. package/dist/scripts/{16-b27142fe98.chunk.js → 16-339a29fa2f.chunk.js} +1 -1
  100. package/dist/scripts/16-3a99050a93.chunk.js +1 -0
  101. package/dist/scripts/16.chunk.js.map +1 -1
  102. package/dist/scripts/{17-c3bbe50816.chunk.js → 17-66da06be62.chunk.js} +1 -1
  103. package/dist/scripts/17-bff211f26a.chunk.js +1 -0
  104. package/dist/scripts/17.chunk.js +1 -1
  105. package/dist/scripts/17.chunk.js.map +1 -1
  106. package/dist/scripts/18.chunk.js.map +1 -1
  107. package/dist/scripts/19.chunk.js +1 -1
  108. package/dist/scripts/19.chunk.js.map +1 -1
  109. package/dist/scripts/{2-2cc3988222.chunk.js → 2-5079f4b088.chunk.js} +1 -1
  110. package/dist/scripts/2.chunk.js.map +1 -1
  111. package/dist/scripts/{20-6d9086f5db.chunk.js → 20-6019ccb462.chunk.js} +1 -1
  112. package/dist/scripts/20-d4470b4a53.chunk.js +1 -0
  113. package/dist/scripts/20.chunk.js.map +1 -1
  114. package/dist/scripts/{21-2f10553302.chunk.js → 21-77f6ddec3d.chunk.js} +1 -1
  115. package/dist/scripts/21-7bd1977005.chunk.js +1 -0
  116. package/dist/scripts/21.chunk.js.map +1 -1
  117. package/dist/scripts/{22-59ae44b448.chunk.js → 22-9ef39722d1.chunk.js} +1 -1
  118. package/dist/scripts/22-d88b8e9c20.chunk.js +1 -0
  119. package/dist/scripts/22.chunk.js.map +1 -1
  120. package/dist/scripts/{23-11e008ee63.chunk.js → 23-c8071cb869.chunk.js} +1 -1
  121. package/dist/scripts/23-e8a0f60c53.chunk.js +1 -0
  122. package/dist/scripts/23.chunk.js +3 -3
  123. package/dist/scripts/23.chunk.js.map +1 -1
  124. package/dist/scripts/{24-7f21e384d2.chunk.js → 24-b655377e1f.chunk.js} +1 -1
  125. package/dist/scripts/24-f62e7ff166.chunk.js +1 -0
  126. package/dist/scripts/24.chunk.js.map +1 -1
  127. package/dist/scripts/{25-f0f7fa16a4.chunk.js → 25-acda0ed17e.chunk.js} +1 -1
  128. package/dist/scripts/25-f814e3921c.chunk.js +1 -0
  129. package/dist/scripts/25.chunk.js.map +1 -1
  130. package/dist/scripts/{26-e65533bd94.chunk.js → 26-39f6c3ca17.chunk.js} +1 -1
  131. package/dist/scripts/26-9dd482e1e6.chunk.js +1 -0
  132. package/dist/scripts/26.chunk.js.map +1 -1
  133. package/dist/scripts/{27-9dc0f5a4df.chunk.js → 27-1313c7d392.chunk.js} +1 -1
  134. package/dist/scripts/27-5ecd204dab.chunk.js +1 -0
  135. package/dist/scripts/27.chunk.js +3 -3
  136. package/dist/scripts/27.chunk.js.map +1 -1
  137. package/dist/scripts/{28-26e5c371c7.chunk.js → 28-b583483a6e.chunk.js} +1 -1
  138. package/dist/scripts/28-e9b8962af8.chunk.js +1 -0
  139. package/dist/scripts/28.chunk.js +6 -6
  140. package/dist/scripts/28.chunk.js.map +1 -1
  141. package/dist/scripts/{29-61415c2af0.chunk.js → 29-44119e600a.chunk.js} +1 -1
  142. package/dist/scripts/29-e3391b4e4b.chunk.js +1 -0
  143. package/dist/scripts/29.chunk.js.map +1 -1
  144. package/dist/scripts/{3-5eff8c9df5.chunk.js → 3-079c0b4d3b.chunk.js} +1 -1
  145. package/dist/scripts/3-bea2c1c371.chunk.js +1 -0
  146. package/dist/scripts/3.chunk.js +25 -13
  147. package/dist/scripts/3.chunk.js.map +1 -1
  148. package/dist/scripts/{30-6075c28972.chunk.js → 30-a6a7291b5e.chunk.js} +1 -1
  149. package/dist/scripts/30-aef6a19cde.chunk.js +1 -0
  150. package/dist/scripts/30.chunk.js +6 -6
  151. package/dist/scripts/30.chunk.js.map +1 -1
  152. package/dist/scripts/31-4f1ea6d067.chunk.js +1 -0
  153. package/dist/scripts/31-70fe14b490.chunk.js +1 -0
  154. package/dist/scripts/31.chunk.js.map +1 -1
  155. package/dist/scripts/{32-d5a50a7592.chunk.js → 32-0b05da2f4c.chunk.js} +1 -1
  156. package/dist/scripts/32-96ac2f9c32.chunk.js +1 -0
  157. package/dist/scripts/32.chunk.js.map +1 -1
  158. package/dist/scripts/{33-5ae90ed7d7.chunk.js → 33-04b1fbcdeb.chunk.js} +1 -1
  159. package/dist/scripts/33-061a87935f.chunk.js +1 -0
  160. package/dist/scripts/33.chunk.js.map +1 -1
  161. package/dist/scripts/{34-50402c1835.chunk.js → 34-4f2c861480.chunk.js} +1 -1
  162. package/dist/scripts/34-56f92b9a87.chunk.js +1 -0
  163. package/dist/scripts/34.chunk.js.map +1 -1
  164. package/dist/scripts/{35-ec8c190357.chunk.js → 35-08ead0d078.chunk.js} +1 -1
  165. package/dist/scripts/35-cdd788a4b5.chunk.js +1 -0
  166. package/dist/scripts/35.chunk.js.map +1 -1
  167. package/dist/scripts/{36-4d467bc42e.chunk.js → 36-4db22bf8bb.chunk.js} +1 -1
  168. package/dist/scripts/36-7d33d11b58.chunk.js +1 -0
  169. package/dist/scripts/36.chunk.js.map +1 -1
  170. package/dist/scripts/{37-37e8965783.chunk.js → 37-4de2537ff4.chunk.js} +1 -1
  171. package/dist/scripts/37-fbd149e569.chunk.js +1 -0
  172. package/dist/scripts/37.chunk.js.map +1 -1
  173. package/dist/scripts/{38-3dc24b8867.chunk.js → 38-57af633fa1.chunk.js} +1 -1
  174. package/dist/scripts/38-7733a3d81e.chunk.js +1 -0
  175. package/dist/scripts/38.chunk.js.map +1 -1
  176. package/dist/scripts/{39-350ff66a2b.chunk.js → 39-5451786b7d.chunk.js} +1 -1
  177. package/dist/scripts/39-cc627dfe2b.chunk.js +1 -0
  178. package/dist/scripts/39.chunk.js.map +1 -1
  179. package/dist/scripts/{4-b3f3c7c71c.chunk.js → 4-0a8a5ac2f0.chunk.js} +1 -1
  180. package/dist/scripts/4-84fa8e49e2.chunk.js +1 -0
  181. package/dist/scripts/4.chunk.js.map +1 -1
  182. package/dist/scripts/{40-3443f99cb2.chunk.js → 40-31940ddf04.chunk.js} +1 -1
  183. package/dist/scripts/40-78639874b5.chunk.js +1 -0
  184. package/dist/scripts/40.chunk.js.map +1 -1
  185. package/dist/scripts/{41-b5dfd35e9e.chunk.js → 41-0366a0332e.chunk.js} +1 -1
  186. package/dist/scripts/41-2c6722e410.chunk.js +1 -0
  187. package/dist/scripts/41.chunk.js.map +1 -1
  188. package/dist/scripts/{42-103fecb7b6.chunk.js → 42-9b7795d20a.chunk.js} +1 -1
  189. package/dist/scripts/42-c87c36d7d4.chunk.js +1 -0
  190. package/dist/scripts/42.chunk.js.map +1 -1
  191. package/dist/scripts/{43-57b07579f7.chunk.js → 43-006ce08a8f.chunk.js} +1 -1
  192. package/dist/scripts/43-591954817b.chunk.js +1 -0
  193. package/dist/scripts/43.chunk.js.map +1 -1
  194. package/dist/scripts/{44-210d64dffe.chunk.js → 44-b4c134efe8.chunk.js} +1 -1
  195. package/dist/scripts/44-fc3a1d45c5.chunk.js +1 -0
  196. package/dist/scripts/44.chunk.js.map +1 -1
  197. package/dist/scripts/{45-632b07e926.chunk.js → 45-32ce8dd910.chunk.js} +1 -1
  198. package/dist/scripts/45-3e85e78a77.chunk.js +1 -0
  199. package/dist/scripts/45.chunk.js.map +1 -1
  200. package/dist/scripts/{46-82cce63cbf.chunk.js → 46-1256828b60.chunk.js} +1 -1
  201. package/dist/scripts/46-e096df45ef.chunk.js +1 -0
  202. package/dist/scripts/46.chunk.js +6 -6
  203. package/dist/scripts/46.chunk.js.map +1 -1
  204. package/dist/scripts/{47-595b4aae87.chunk.js → 47-61b53964c2.chunk.js} +1 -1
  205. package/dist/scripts/47-9e514e7536.chunk.js +1 -0
  206. package/dist/scripts/47.chunk.js +2 -1
  207. package/dist/scripts/47.chunk.js.map +1 -1
  208. package/dist/scripts/{48-fcf6378889.chunk.js → 48-3f804b22a4.chunk.js} +1 -1
  209. package/dist/scripts/48-9af8b50e4f.chunk.js +1 -0
  210. package/dist/scripts/48.chunk.js.map +1 -1
  211. package/dist/scripts/{49-d8a4899eb1.chunk.js → 49-79b28e90c9.chunk.js} +1 -1
  212. package/dist/scripts/49-883d9131af.chunk.js +1 -0
  213. package/dist/scripts/49.chunk.js.map +1 -1
  214. package/dist/scripts/{5-06bc197b1e.chunk.js → 5-093c9ee130.chunk.js} +1 -1
  215. package/dist/scripts/5-f5ad097d2b.chunk.js +1 -0
  216. package/dist/scripts/5.chunk.js +3 -3
  217. package/dist/scripts/5.chunk.js.map +1 -1
  218. package/dist/scripts/{50-11b1a49916.chunk.js → 50-198f89794c.chunk.js} +1 -1
  219. package/dist/scripts/50-ce04770db1.chunk.js +1 -0
  220. package/dist/scripts/50.chunk.js.map +1 -1
  221. package/dist/scripts/{51-72a75e0265.chunk.js → 51-177fe97a9b.chunk.js} +1 -1
  222. package/dist/scripts/51-61bb2b80fe.chunk.js +1 -0
  223. package/dist/scripts/51.chunk.js.map +1 -1
  224. package/dist/scripts/{52-195f73bcd6.chunk.js → 52-d8cf26c75f.chunk.js} +1 -1
  225. package/dist/scripts/52-e7fd215888.chunk.js +1 -0
  226. package/dist/scripts/52.chunk.js.map +1 -1
  227. package/dist/scripts/{53-bb4f37ee25.chunk.js → 53-595b1efa1a.chunk.js} +1 -1
  228. package/dist/scripts/53-e78a58c963.chunk.js +1 -0
  229. package/dist/scripts/53.chunk.js.map +1 -1
  230. package/dist/scripts/{54-7a201d8285.chunk.js → 54-646c8458e0.chunk.js} +1 -1
  231. package/dist/scripts/54-7976c21511.chunk.js +1 -0
  232. package/dist/scripts/54.chunk.js.map +1 -1
  233. package/dist/scripts/{55-be3d7b8805.chunk.js → 55-5e3b70736e.chunk.js} +1 -1
  234. package/dist/scripts/55-dac67eae0b.chunk.js +1 -0
  235. package/dist/scripts/55.chunk.js.map +1 -1
  236. package/dist/scripts/{56-6aeece1bf1.chunk.js → 56-3c520aec72.chunk.js} +1 -1
  237. package/dist/scripts/56-9a02efb9a1.chunk.js +1 -0
  238. package/dist/scripts/56.chunk.js.map +1 -1
  239. package/dist/scripts/{57-59ee15161b.chunk.js → 57-6f84e1bb9d.chunk.js} +1 -1
  240. package/dist/scripts/57-bf72265d49.chunk.js +1 -0
  241. package/dist/scripts/57.chunk.js.map +1 -1
  242. package/dist/scripts/{58-8ff58b194a.chunk.js → 58-1c37240b43.chunk.js} +1 -1
  243. package/dist/scripts/58-34ef45f4b6.chunk.js +1 -0
  244. package/dist/scripts/58.chunk.js.map +1 -1
  245. package/dist/scripts/{59-3d33954fcb.chunk.js → 59-05cbb57b32.chunk.js} +1 -1
  246. package/dist/scripts/59-f3d473090d.chunk.js +1 -0
  247. package/dist/scripts/59.chunk.js.map +1 -1
  248. package/dist/scripts/{6-a469872b10.chunk.js → 6-a5f6258253.chunk.js} +1 -1
  249. package/dist/scripts/6-e49b6b4c08.chunk.js +1 -0
  250. package/dist/scripts/6.chunk.js.map +1 -1
  251. package/dist/scripts/{60-f092baa91c.chunk.js → 60-ac4f11764a.chunk.js} +1 -1
  252. package/dist/scripts/60-dd50d4179f.chunk.js +1 -0
  253. package/dist/scripts/60.chunk.js.map +1 -1
  254. package/dist/scripts/{61-bd9ef62ccd.chunk.js → 61-62ec9b3628.chunk.js} +1 -1
  255. package/dist/scripts/61-e759f86871.chunk.js +1 -0
  256. package/dist/scripts/61.chunk.js +12 -12
  257. package/dist/scripts/61.chunk.js.map +1 -1
  258. package/dist/scripts/{62-f15b3bf74c.chunk.js → 62-4d0e82f903.chunk.js} +1 -1
  259. package/dist/scripts/62-bfd5450b13.chunk.js +1 -0
  260. package/dist/scripts/62.chunk.js.map +1 -1
  261. package/dist/scripts/{63-92757f75e7.chunk.js → 63-47af37825d.chunk.js} +1 -1
  262. package/dist/scripts/63-8521e39a2e.chunk.js +1 -0
  263. package/dist/scripts/63.chunk.js.map +1 -1
  264. package/dist/scripts/{64-c5a1c55521.chunk.js → 64-12150ef48b.chunk.js} +1 -1
  265. package/dist/scripts/64-c42635a917.chunk.js +1 -0
  266. package/dist/scripts/64.chunk.js.map +1 -1
  267. package/dist/scripts/{65-6bb10ae23b.chunk.js → 65-7780441e5e.chunk.js} +1 -1
  268. package/dist/scripts/65-a4fdf8777b.chunk.js +1 -0
  269. package/dist/scripts/65.chunk.js.map +1 -1
  270. package/dist/scripts/{66-f047027f7d.chunk.js → 66-029947cf5c.chunk.js} +1 -1
  271. package/dist/scripts/66-7f2750cd97.chunk.js +1 -0
  272. package/dist/scripts/66.chunk.js.map +1 -1
  273. package/dist/scripts/{67-2e1a011200.chunk.js → 67-47f208342a.chunk.js} +1 -1
  274. package/dist/scripts/67-564ff2bd16.chunk.js +1 -0
  275. package/dist/scripts/67.chunk.js.map +1 -1
  276. package/dist/scripts/{68-d5c0ab3fc1.chunk.js → 68-5656cc45fe.chunk.js} +1 -1
  277. package/dist/scripts/68-df9024fadc.chunk.js +1 -0
  278. package/dist/scripts/68.chunk.js.map +1 -1
  279. package/dist/scripts/{69-fc8325afc9.chunk.js → 69-4d32ddddbc.chunk.js} +1 -1
  280. package/dist/scripts/69-a4b3442e68.chunk.js +1 -0
  281. package/dist/scripts/69.chunk.js.map +1 -1
  282. package/dist/scripts/{7-58dd909fa3.chunk.js → 7-2696f5afc4.chunk.js} +1 -1
  283. package/dist/scripts/7-b39ab430b9.chunk.js +1 -0
  284. package/dist/scripts/7.chunk.js.map +1 -1
  285. package/dist/scripts/{70-ceda95013e.chunk.js → 70-0f070c1596.chunk.js} +1 -1
  286. package/dist/scripts/70-2a427b3dd0.chunk.js +1 -0
  287. package/dist/scripts/70.chunk.js.map +1 -1
  288. package/dist/scripts/{71-6e8fc95beb.chunk.js → 71-215cac8b69.chunk.js} +1 -1
  289. package/dist/scripts/71-c43ee23686.chunk.js +1 -0
  290. package/dist/scripts/71.chunk.js.map +1 -1
  291. package/dist/scripts/{72-53fe3338bf.chunk.js → 72-6eb3ef092e.chunk.js} +1 -1
  292. package/dist/scripts/72-f5a8cfc8b7.chunk.js +1 -0
  293. package/dist/scripts/72.chunk.js.map +1 -1
  294. package/dist/scripts/73.chunk.js.map +1 -1
  295. package/dist/scripts/74.chunk.js.map +1 -1
  296. package/dist/scripts/75.chunk.js.map +1 -1
  297. package/dist/scripts/76.chunk.js.map +1 -1
  298. package/dist/scripts/77.chunk.js.map +1 -1
  299. package/dist/scripts/78.chunk.js.map +1 -1
  300. package/dist/scripts/79.chunk.js.map +1 -1
  301. package/dist/scripts/{8-6974afed28.chunk.js → 8-1e0751e30b.chunk.js} +1 -1
  302. package/dist/scripts/8-f4f18356f7.chunk.js +1 -0
  303. package/dist/scripts/8.chunk.js.map +1 -1
  304. package/dist/scripts/80.chunk.js.map +1 -1
  305. package/dist/scripts/81.chunk.js.map +1 -1
  306. package/dist/scripts/82.chunk.js.map +1 -1
  307. package/dist/scripts/83.chunk.js.map +1 -1
  308. package/dist/scripts/84.chunk.js.map +1 -1
  309. package/dist/scripts/85.chunk.js.map +1 -1
  310. package/dist/scripts/86.chunk.js.map +1 -1
  311. package/dist/scripts/87.chunk.js.map +1 -1
  312. package/dist/scripts/88.chunk.js.map +1 -1
  313. package/dist/scripts/89.chunk.js.map +1 -1
  314. package/dist/scripts/{9-9279038caa.chunk.js → 9-bb567e1c99.chunk.js} +1 -1
  315. package/dist/scripts/9-cd0bcefa7f.chunk.js +1 -0
  316. package/dist/scripts/9.chunk.js.map +1 -1
  317. package/dist/scripts/90.chunk.js.map +1 -1
  318. package/dist/scripts/91.chunk.js.map +1 -1
  319. package/dist/scripts/92.chunk.js.map +1 -1
  320. package/dist/scripts/bundle-e7f4d4e659.min.js +8 -0
  321. package/dist/scripts/bundle-f73bcaa857.min.js +8 -0
  322. package/dist/scripts/bundle.js +1492 -1364
  323. package/dist/scripts/bundle.js.map +1 -1
  324. package/dist/scripts/bundles.json +2 -2
  325. package/dist/scripts/polyfills-9517d7e647.min.js +1 -0
  326. package/dist/scripts/polyfills-e442ebbfb0.min.js +1 -0
  327. package/dist/scripts/polyfills.js +1050 -1050
  328. package/dist/scripts/polyfills.js.map +1 -1
  329. package/package.json +3 -3
  330. package/dist/scripts/31-e35ae4e153.chunk.js +0 -1
  331. package/dist/scripts/bundle-06dc1f4908.min.js +0 -8
  332. package/dist/scripts/polyfills-efb4d7caa3.min.js +0 -1
@@ -1 +1 @@
1
- {"version":3,"sources":["file://C:/ClickView Projects/@clickview/packages/projects/library-editor/src/apps/library-editor/components/add-links/AddLinks.hbs","file://C:/ClickView Projects/@clickview/packages/projects/library-editor/src/apps/library-editor/components/add-links/AddLinksComponent.ts","file://C:/ClickView Projects/@clickview/packages/projects/library-editor/src/apps/library-editor/components/file-select/FileSelect.hbs","file://C:/ClickView Projects/@clickview/packages/projects/library-editor/src/apps/library-editor/components/file-select/FileSelectComponent.ts","file://C:/ClickView Projects/@clickview/packages/projects/library-editor/src/apps/library-editor/components/file-select/FileSelectDropMask.hbs","webpack://@clickview/library-editor/./src/apps/library-editor/components/file-select/file-select.scss?55d7","file://C:/ClickView Projects/@clickview/packages/projects/library-editor/src/apps/library-editor/components/file-uploads/FileUpload.hbs","file://C:/ClickView Projects/@clickview/packages/projects/library-editor/src/apps/library-editor/components/file-uploads/FileUploadComponent.ts","file://C:/ClickView Projects/@clickview/packages/projects/library-editor/src/apps/library-editor/components/file-uploads/FileUploadsComponentCollection.ts","webpack://@clickview/library-editor/./src/apps/library-editor/components/file-uploads/file-upload.scss?3dc4","file://C:/ClickView Projects/@clickview/packages/projects/library-editor/src/apps/library-editor/components/language-select/LanguageSelect.hbs","file://C:/ClickView Projects/@clickview/packages/projects/library-editor/src/apps/library-editor/components/language-select/LanguageSelectComponent.ts","file://C:/ClickView Projects/@clickview/packages/projects/library-editor/src/apps/library-editor/components/language-select/LanguageSelectTypeaheadHelper.ts","file://C:/ClickView Projects/@clickview/packages/projects/library-editor/src/apps/library-editor/components/video-subtitles/Subtitle.hbs","file://C:/ClickView Projects/@clickview/packages/projects/library-editor/src/apps/library-editor/components/video-subtitles/SubtitleItemComponent.ts","file://C:/ClickView Projects/@clickview/packages/projects/library-editor/src/apps/library-editor/components/video-subtitles/VideoSubtitles.hbs","file://C:/ClickView Projects/@clickview/packages/projects/library-editor/src/apps/library-editor/components/video-subtitles/VideoSubtitlesComponent.ts","webpack://@clickview/library-editor/./src/apps/library-editor/components/video-subtitles/subtitle.scss?4e06","file://C:/ClickView Projects/@clickview/packages/projects/library-editor/src/apps/library-editor/views/edit-resources/EditResources.hbs","file://C:/ClickView Projects/@clickview/packages/projects/library-editor/src/apps/library-editor/views/edit-resources/EditResourcesView.ts"],"names":[],"mappings":"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","file":"scripts/42.chunk.js","sourcesContent":["var Handlebars = require('handlebars');\nmodule.exports = (Handlebars['default'] || Handlebars).template({\"1\":function(container,depth0,helpers,partials,data) {\n var stack1, alias1=container.propertyIsEnumerable;\n\n return \"<p class=\\\"alert alert-warning col-8\\\">\"\n + container.escapeExpression((helpers.lang||(depth0 && depth0.lang)||container.hooks.helperMissing).call(depth0 != null ? depth0 : (container.nullContext || {}),\"limit\",{\"name\":\"lang\",\"hash\":{\"limit\":((stack1 = (depth0 != null ? depth0.options : depth0)) != null ? stack1.limit : stack1)},\"data\":data}))\n + \"</p>\\r\\n\";\n},\"3\":function(container,depth0,helpers,partials,data) {\n var alias1=container.propertyIsEnumerable, alias2=depth0 != null ? depth0 : (container.nullContext || {}), alias3=container.hooks.helperMissing, alias4=container.escapeExpression;\n\n return \"<p>\"\n + alias4((helpers.lang||(depth0 && depth0.lang)||alias3).call(alias2,\"subheading\",{\"name\":\"lang\",\"hash\":{},\"data\":data}))\n + \"</p>\\r\\n<div class=\\\"form-group mb-1\\\">\\r\\n <label for=\\\"url\\\">\"\n + alias4((helpers.lang||(depth0 && depth0.lang)||alias3).call(alias2,\"urlLabel\",{\"name\":\"lang\",\"hash\":{},\"data\":data}))\n + \"</label>\\r\\n <input name=\\\"url\\\" id=\\\"url\\\" class=\\\"form-control\\\" type=\\\"text\\\" placeholder=\\\"\"\n + alias4((helpers.lang||(depth0 && depth0.lang)||alias3).call(alias2,\"urlPlaceholder\",{\"name\":\"lang\",\"hash\":{},\"data\":data}))\n + \"\\\">\\r\\n <div class=\\\"form-feedback\\\"></div>\\r\\n</div>\\r\\n<div class=\\\"form-group mb-1\\\" id=\\\"name-container\\\" style=\\\"display: none;\\\">\\r\\n <input type=\\\"text\\\" class=\\\"form-control\\\" name=\\\"name\\\" placeholder=\\\"\"\n + alias4((helpers.lang||(depth0 && depth0.lang)||alias3).call(alias2,\"namePlaceholder\",{\"name\":\"lang\",\"hash\":{},\"data\":data}))\n + \"\\\">\\r\\n <div class=\\\"form-feedback\\\"></div>\\r\\n</div>\\r\\n<div class=\\\"attach-btn-region\\\"></div>\\r\\n\";\n},\"compiler\":[8,\">= 4.3.0\"],\"main\":function(container,depth0,helpers,partials,data) {\n var stack1, alias1=container.propertyIsEnumerable;\n\n return \"<h5 class=\\\"pt-2\\\">Resource Links</h5>\\r\\n\"\n + ((stack1 = helpers[\"if\"].call(depth0 != null ? depth0 : (container.nullContext || {}),((stack1 = (depth0 != null ? depth0.options : depth0)) != null ? stack1.hide : stack1),{\"name\":\"if\",\"hash\":{},\"fn\":container.program(1, data, 0),\"inverse\":container.program(3, data, 0),\"data\":data})) != null ? stack1 : \"\");\n},\"useData\":true});","import { ObjectHash, Radio, Validation } from 'backbone';\r\n\r\nimport { Core } from 'libs/common/core';\r\nimport { ViewModelService } from 'libs/common/backbone/services/ViewModelService';\r\n\r\nimport { SpinnerButtonComponent } from 'shared/components/spinner-button/SpinnerButtonComponent';\r\nimport { SpinnerSize, SpinnerType } from 'shared/utils';\r\nimport { StickitBehavior, BackboneValidationBehavior } from 'shared/behaviors';\r\n\r\nimport { ResourceLinkValidation } from 'apps/library-editor/utils';\r\n\r\nimport AddLinksTemplate from './AddLinks.hbs';\r\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\r\n\r\ninterface AddLinksComponentOptions extends Core.ComponentOptions {\r\n limit: number;\r\n hide?: boolean;\r\n}\r\n\r\nexport class AddLinksComponent extends Core.Component {\r\n public options: AddLinksComponentOptions;\r\n private showNameField: boolean = false;\r\n private disableBtn: boolean = true;\r\n\r\n constructor(options: AddLinksComponentOptions) {\r\n super(options);\r\n }\r\n\r\n public initialize(): void {\r\n this.model = ViewModelService.get(this.viewModelName);\r\n this.model.addValidation(ResourceLinkValidation);\r\n\r\n this.bindListeners();\r\n }\r\n\r\n public get name(): string {\r\n return 'AddLinksComponent';\r\n }\r\n\r\n public get template(): string {\r\n return AddLinksTemplate;\r\n }\r\n\r\n public get lang(): string {\r\n return 'libraryEditor.addLinks';\r\n }\r\n\r\n public get tagName(): string {\r\n return 'form';\r\n }\r\n\r\n public get bindings(): ObjectHash {\r\n return {\r\n '[name=url]': {\r\n observe: 'url',\r\n setOptions: { validate: true }\r\n },\r\n '[name=name]': {\r\n observe: 'name',\r\n setOptions: { validate: true }\r\n }\r\n };\r\n }\r\n\r\n public regions(): ObjectHash {\r\n return {\r\n attachBtn: '.attach-btn-region'\r\n };\r\n }\r\n\r\n public get behaviors(): any[] {\r\n return [\r\n {\r\n behaviorClass: StickitBehavior\r\n },\r\n {\r\n behaviorClass: BackboneValidationBehavior\r\n }\r\n ];\r\n }\r\n\r\n public get elements(): ObjectHash {\r\n return {\r\n nameField: '#name-container'\r\n };\r\n }\r\n\r\n private get viewModelName(): string {\r\n return `${this.name}:${this.cid}`;\r\n }\r\n\r\n private bindListeners(): void {\r\n this.listenTo(this.model, 'change:url', this.onChangeUrl);\r\n this.listenTo(this.model, 'change:name', this.onChangeName);\r\n this.listenTo(this.options.channelName, 'attach:link', this.onClickAttach);\r\n }\r\n\r\n private onChangeUrl(): void {\r\n if (this.showNameField && !this.model.isValid('url')) {\r\n this.getUI('nameField').hide();\r\n this.model.set('name', '');\r\n this.showNameField = false;\r\n } else if (!this.showNameField && this.model.isValid('url')) {\r\n this.getUI('nameField').show();\r\n this.showNameField = true;\r\n }\r\n }\r\n\r\n private onChangeName(): void {\r\n this.model.validate('name');\r\n this.disableBtn = !this.model.isValid();\r\n this.renderAttachButton();\r\n }\r\n\r\n private onClickAttach(): void {\r\n const link = this.model.toJSON();\r\n this.model.clear();\r\n\r\n Radio.channel(this.options.channelName)\r\n .trigger('add:link', link);\r\n\r\n this.render();\r\n }\r\n\r\n private renderAttachButton(): void {\r\n if (this.options.hide)\r\n return;\r\n\r\n this.showChildView('attachBtn', new SpinnerButtonComponent({\r\n saveEvent: 'attach:link',\r\n channelName: this.options.channelName,\r\n buttonText: LanguageService.getPhrase(this.lang, 'attach'),\r\n extraButtonClass: `btn-secondary attach`,\r\n disabled: this.disableBtn,\r\n buttonType: 'submit',\r\n spinnerOptions: {\r\n size: SpinnerSize.Medium,\r\n type: SpinnerType.Light,\r\n extraClasses: 'mx-auto'\r\n }\r\n }));\r\n }\r\n\r\n public viewOptions(): ObjectHash {\r\n return {\r\n limit: this.options.limit,\r\n hide: this.options.hide\r\n };\r\n }\r\n\r\n public onRender(): void {\r\n this.renderAttachButton();\r\n\r\n this.stickit();\r\n Validation.bind(this);\r\n }\r\n\r\n public onClose(): void {\r\n this.unstickit();\r\n Validation.unbind(this);\r\n }\r\n}","var Handlebars = require('handlebars');\nmodule.exports = (Handlebars['default'] || Handlebars).template({\"1\":function(container,depth0,helpers,partials,data) {\n var stack1, alias1=container.propertyIsEnumerable;\n\n return \"<p class=\\\"alert alert-warning col-8 mb-0\\\">\"\n + container.escapeExpression(container.lambda(((stack1 = (depth0 != null ? depth0.options : depth0)) != null ? stack1.limitText : stack1), depth0))\n + \"</p>\\r\\n\";\n},\"3\":function(container,depth0,helpers,partials,data) {\n var stack1, alias1=container.propertyIsEnumerable, alias2=container.lambda, alias3=container.escapeExpression, alias4=depth0 != null ? depth0 : (container.nullContext || {});\n\n return \"<div class=\\\"file-drop \"\n + alias3(alias2(((stack1 = ((stack1 = (depth0 != null ? depth0.options : depth0)) != null ? stack1.styles : stack1)) != null ? stack1.fileDrop : stack1), depth0))\n + \" p-2\"\n + ((stack1 = helpers[\"if\"].call(alias4,((stack1 = (depth0 != null ? depth0.options : depth0)) != null ? stack1.limitText : stack1),{\"name\":\"if\",\"hash\":{},\"fn\":container.program(4, data, 0),\"inverse\":container.noop,\"data\":data})) != null ? stack1 : \"\")\n + \"\\\">\\r\\n <button class=\\\"browse btn btn-secondary mr-2\\\">\"\n + alias3((helpers.lang||(depth0 && depth0.lang)||container.hooks.helperMissing).call(alias4,\"browse\",{\"name\":\"lang\",\"hash\":{},\"data\":data}))\n + \"</button>\\r\\n <span class=\\\"text-muted align-middle\\\">\"\n + alias3(alias2(((stack1 = (depth0 != null ? depth0.options : depth0)) != null ? stack1.alternateText : stack1), depth0))\n + \"</span>\\r\\n</div>\\r\\n\";\n},\"4\":function(container,depth0,helpers,partials,data) {\n return \" col-6 \";\n},\"compiler\":[8,\">= 4.3.0\"],\"main\":function(container,depth0,helpers,partials,data) {\n var stack1, alias1=container.propertyIsEnumerable, alias2=container.lambda, alias3=container.escapeExpression;\n\n return \"<h5>\"\n + alias3(alias2(((stack1 = (depth0 != null ? depth0.options : depth0)) != null ? stack1.title : stack1), depth0))\n + \"</h5>\\r\\n<p>\"\n + alias3(alias2(((stack1 = (depth0 != null ? depth0.options : depth0)) != null ? stack1.description : stack1), depth0))\n + \"</p>\\r\\n\"\n + ((stack1 = helpers[\"if\"].call(depth0 != null ? depth0 : (container.nullContext || {}),((stack1 = (depth0 != null ? depth0.options : depth0)) != null ? stack1.limitText : stack1),{\"name\":\"if\",\"hash\":{},\"fn\":container.program(1, data, 0),\"inverse\":container.program(3, data, 0),\"data\":data})) != null ? stack1 : \"\");\n},\"useData\":true});","import { ObjectHash } from 'backbone';\r\n\r\nimport { Core } from 'libs/common/core';\r\n\r\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\r\nimport { FileSelectBehavior } from 'shared/behaviors/file-select/FileSelectBehavior';\r\nimport { FileDropBehavior } from 'shared/behaviors/file-drop/FileDropBehavior';\r\n\r\nimport styles from './file-select.scss';\r\nimport FileSelectDropMaskTemplate from './FileSelectDropMask.hbs';\r\nimport FileSelectTemplate from './FileSelect.hbs';\r\n\r\ninterface FileSelectComponentOptions extends Core.ComponentOptions {\r\n title: string;\r\n description: string;\r\n alternateText: string;\r\n mimeType: string;\r\n channelName: string;\r\n acceptMultiple?: boolean;\r\n limitText: string;\r\n isClickViewContent?: boolean;\r\n}\r\n\r\nexport class FileSelectComponent extends Core.Component {\r\n public options: FileSelectComponentOptions;\r\n\r\n constructor(options: FileSelectComponentOptions) {\r\n super(options);\r\n }\r\n\r\n public get name(): string {\r\n return 'FileSelectComponent';\r\n }\r\n\r\n public get template(): any {\r\n return FileSelectTemplate;\r\n }\r\n\r\n public get lang(): string {\r\n return 'libraryEditor.fileSelect';\r\n }\r\n\r\n public get className(): string {\r\n let classNames = 'mt-3';\r\n\r\n if (!this.options.limitText)\r\n classNames += ' mb-2';\r\n\r\n return classNames;\r\n }\r\n\r\n public get elements(): ObjectHash {\r\n return {\r\n dropArea: '.file-drop'\r\n };\r\n }\r\n\r\n public get defaults(): ObjectHash {\r\n return {\r\n acceptMultiple: true\r\n };\r\n }\r\n\r\n public get behaviors(): any[] {\r\n return [\r\n {\r\n behaviorClass: FileSelectBehavior,\r\n buttonSelector: '.browse',\r\n channelName: this.options.channelName,\r\n acceptMultiple: this.options.acceptMultiple,\r\n mimeType: this.options.mimeType\r\n },\r\n {\r\n behaviorClass: FileDropBehavior,\r\n channelName: this.options.channelName,\r\n acceptMultiple: this.options.acceptMultiple\r\n }\r\n ];\r\n }\r\n\r\n public events(): ObjectHash {\r\n const dragLeave = `dragleave .${styles.dropMask}`;\r\n\r\n return {\r\n 'drop .file-drop': 'onDrop',\r\n 'dragover .file-drop': 'onDragOver',\r\n [dragLeave]: 'onDragLeave'\r\n };\r\n }\r\n\r\n private onDrop(): void {\r\n this.$el.removeClass(styles.dragOver);\r\n }\r\n\r\n private onDragOver(event: any): void {\r\n this.$el.addClass(styles.dragOver);\r\n\r\n event.preventDefault();\r\n }\r\n\r\n private onDragLeave(): void {\r\n this.$el.removeClass(styles.dragOver);\r\n }\r\n\r\n public viewOptions(): ObjectHash {\r\n return {\r\n ...this.options,\r\n styles,\r\n limitText: this.options.limitText,\r\n isClickViewContent: this.options.isClickViewContent\r\n };\r\n }\r\n\r\n public onRender(): void {\r\n this.getUI('dropArea').append(FileSelectDropMaskTemplate({\r\n dropMask: styles.dropMask,\r\n fileDropText: LanguageService.getPhrase(this.lang, 'drop')\r\n }));\r\n }\r\n}","var Handlebars = require('handlebars');\nmodule.exports = (Handlebars['default'] || Handlebars).template({\"compiler\":[8,\">= 4.3.0\"],\"main\":function(container,depth0,helpers,partials,data) {\n var stack1, helper, alias1=container.propertyIsEnumerable, alias2=container.escapeExpression;\n\n return \"<div class=\\\"\"\n + alias2(((helper = (helper = helpers.dropMask || (depth0 != null ? depth0.dropMask : depth0)) != null ? helper : container.hooks.helperMissing),(typeof helper === \"function\" ? helper.call(depth0 != null ? depth0 : (container.nullContext || {}),{\"name\":\"dropMask\",\"hash\":{},\"data\":data}) : helper)))\n + \"\\\">\\r\\n <h3>\"\n + alias2(container.lambda(((stack1 = (depth0 != null ? depth0.options : depth0)) != null ? stack1.fileDropText : stack1), depth0))\n + \"</h3>\\r\\n</div>\";\n},\"useData\":true});","// extracted by mini-css-extract-plugin\nmodule.exports = {\"fileDrop\":\"cv--fileDrop--l2vGK\",\"dropMask\":\"cv--dropMask--yNe5b\",\"dragOver\":\"cv--dragOver--3sZ1T\"};","var Handlebars = require('handlebars');\nmodule.exports = (Handlebars['default'] || Handlebars).template({\"1\":function(container,depth0,helpers,partials,data) {\n var stack1, alias1=container.propertyIsEnumerable, alias2=container.lambda;\n\n return \"<span class=\\\"d-inline-block align-middle mr-2 \"\n + container.escapeExpression(alias2(((stack1 = ((stack1 = (depth0 != null ? depth0.options : depth0)) != null ? stack1.styles : stack1)) != null ? stack1.svgContainer : stack1), depth0))\n + \" float-right text-success\\\">\"\n + ((stack1 = alias2(((stack1 = (depth0 != null ? depth0.options : depth0)) != null ? stack1.tickSvg : stack1), depth0)) != null ? stack1 : \"\")\n + \"</span>\\r\\n\";\n},\"3\":function(container,depth0,helpers,partials,data) {\n var stack1, alias1=container.propertyIsEnumerable;\n\n return \"<span class=\\\"d-inline-block align-middle mr-2 \"\n + container.escapeExpression(container.lambda(((stack1 = ((stack1 = (depth0 != null ? depth0.options : depth0)) != null ? stack1.styles : stack1)) != null ? stack1.svgContainer : stack1), depth0))\n + \" close float-right\\\">&times;</span>\\r\\n\";\n},\"compiler\":[8,\">= 4.3.0\"],\"main\":function(container,depth0,helpers,partials,data) {\n var stack1, helper, alias1=container.propertyIsEnumerable, alias2=container.lambda, alias3=container.escapeExpression, alias4=depth0 != null ? depth0 : (container.nullContext || {}), alias5=container.hooks.helperMissing, alias6=\"function\";\n\n return \"<span class=\\\"d-inline-block align-middle mr-2 \"\n + alias3(alias2(((stack1 = ((stack1 = (depth0 != null ? depth0.options : depth0)) != null ? stack1.styles : stack1)) != null ? stack1.svgContainer : stack1), depth0))\n + \"\\\">\"\n + ((stack1 = alias2(((stack1 = (depth0 != null ? depth0.options : depth0)) != null ? stack1.svg : stack1), depth0)) != null ? stack1 : \"\")\n + \"</span>\\r\\n<span class=\\\"align-middle\\\">\\r\\n \"\n + alias3(((helper = (helper = helpers.name || (depth0 != null ? depth0.name : depth0)) != null ? helper : alias5),(typeof helper === alias6 ? helper.call(alias4,{\"name\":\"name\",\"hash\":{},\"data\":data}) : helper)))\n + \"\\r\\n</span>\\r\\n\"\n + ((stack1 = helpers[\"if\"].call(alias4,((stack1 = (depth0 != null ? depth0.options : depth0)) != null ? stack1.finished : stack1),{\"name\":\"if\",\"hash\":{},\"fn\":container.program(1, data, 0),\"inverse\":container.program(3, data, 0),\"data\":data})) != null ? stack1 : \"\")\n + \"\\r\\n<div class=\\\"progress my-2 \"\n + alias3(alias2(((stack1 = ((stack1 = (depth0 != null ? depth0.options : depth0)) != null ? stack1.styles : stack1)) != null ? stack1.progress : stack1), depth0))\n + \" mt-2\\\">\\r\\n <div class=\\\"progress-bar bg-info\\\" style=\\\"width: \"\n + alias3(((helper = (helper = helpers.progress || (depth0 != null ? depth0.progress : depth0)) != null ? helper : alias5),(typeof helper === alias6 ? helper.call(alias4,{\"name\":\"progress\",\"hash\":{},\"data\":data}) : helper)))\n + \"%\\\" aria-valuenow=\\\"\"\n + alias3(((helper = (helper = helpers.progress || (depth0 != null ? depth0.progress : depth0)) != null ? helper : alias5),(typeof helper === alias6 ? helper.call(alias4,{\"name\":\"progress\",\"hash\":{},\"data\":data}) : helper)))\n + \"\\\" aria-valuemin=\\\"0\\\" aria-valuemax=\\\"100\\\"></div>\\r\\n</div>\";\n},\"useData\":true});","import { ObjectHash, Radio } from 'backbone';\r\nimport { Core } from 'libs/common/core';\r\nimport { SvgHelper, cvSvgLibrary } from 'libs/shared/utils/SvgHelper';\r\n\r\nimport FileUploadTemplate from './FileUpload.hbs';\r\nimport styles from './file-upload.scss';\r\n\r\nexport interface FileUploadComponentOptions extends Core.ComponentOptions {\r\n channelName: string;\r\n}\r\n\r\nexport class FileUploadComponent extends Core.Component {\r\n public options: FileUploadComponentOptions;\r\n\r\n constructor(options: FileUploadComponentOptions) {\r\n super(options);\r\n }\r\n\r\n public initialize(): void {\r\n this.listenTo(this.model, 'change:progress', this.render);\r\n }\r\n\r\n public get name(): string {\r\n return 'FileUploadComponent';\r\n }\r\n\r\n public get template(): any {\r\n return FileUploadTemplate;\r\n }\r\n\r\n public events(): ObjectHash {\r\n return {\r\n 'click .cancel-upload': 'onClickCancelUpload'\r\n };\r\n }\r\n\r\n private onClickCancelUpload(): void {\r\n const channel = Radio.channel(this.options.channelName);\r\n channel.trigger('cancel:upload', this.model.get('id'));\r\n }\r\n\r\n public viewOptions(): ObjectHash {\r\n return {\r\n styles,\r\n svg: SvgHelper.getSvg(cvSvgLibrary.Folder),\r\n tickSvg: SvgHelper.getSvg(cvSvgLibrary.Check),\r\n finished: this.model.get('progress') >= 100\r\n };\r\n }\r\n}","import * as _ from 'underscore';\r\nimport { ObjectHash } from 'backbone';\r\nimport { Core } from 'libs/common/core';\r\nimport { FileUploadComponent, FileUploadComponentOptions } from 'apps/library-editor/components/file-uploads/FileUploadComponent';\r\n\r\n\r\ninterface FileUploadsComponentCollectionOptions extends Core.ComponentCollectionOptions {\r\n channelName: string;\r\n}\r\n\r\nexport class FileUploadsComponentCollection extends Core.ComponentCollection {\r\n public options: FileUploadsComponentCollectionOptions;\r\n\r\n constructor(options: FileUploadsComponentCollectionOptions) {\r\n super(options);\r\n }\r\n\r\n public get name(): string {\r\n return 'FileUploadsComponentCollection';\r\n }\r\n\r\n public get childView(): typeof FileUploadComponent {\r\n return FileUploadComponent;\r\n }\r\n\r\n public get childViewOptions(): FileUploadComponentOptions {\r\n return {\r\n channelName: this.options.channelName\r\n };\r\n }\r\n}","// extracted by mini-css-extract-plugin\nmodule.exports = {\"svgContainer\":\"cv--svgContainer--3LHs_\",\"progress\":\"cv--progress--30D9s\"};","var Handlebars = require('handlebars');\nmodule.exports = (Handlebars['default'] || Handlebars).template({\"compiler\":[8,\">= 4.3.0\"],\"main\":function(container,depth0,helpers,partials,data) {\n var alias1=container.propertyIsEnumerable;\n\n return \"<form>\\r\\n <div class=\\\"form-group\\\">\\r\\n <label for=\\\"language\\\">\"\n + container.escapeExpression((helpers.lang||(depth0 && depth0.lang)||container.hooks.helperMissing).call(depth0 != null ? depth0 : (container.nullContext || {}),\"label\",{\"name\":\"lang\",\"hash\":{},\"data\":data}))\n + \"</label>\\r\\n <div class=\\\"typahead-region\\\"></div>\\r\\n </div>\\r\\n</form>\";\n},\"useData\":true});","import * as _ from 'underscore';\r\nimport { ObjectHash } from 'backbone';\r\nimport { Core } from 'libs/common/core';\r\nimport { ViewModelService } from 'libs/common/backbone/services/ViewModelService';\r\n\r\nimport { PopupBehavior, BackboneValidationBehavior } from 'shared/behaviors';\r\nimport { SearchTypeaheadComponent } from 'shared/components/typeahead-input/SearchTypeaheadComponent';\r\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\r\nimport { SubtitleLanguageValidation } from 'shared/utils';\r\n\r\nimport { LangugageSelectTypeaheadHelper } from 'apps/library-editor/components/language-select/LanguageSelectTypeaheadHelper';\r\n\r\nimport LanguageSelectTemplate from './LanguageSelect.hbs';\r\n\r\nexport interface LanguageSelectComponentOptions extends Core.ComponentOptions {\r\n defaultLanguage: { code: string, name: string };\r\n promise: JQueryDeferred<any>;\r\n}\r\n\r\nexport class LanguageSelectComponent extends Core.Component {\r\n public options: LanguageSelectComponentOptions;\r\n\r\n constructor(options: LanguageSelectComponentOptions) {\r\n super(options);\r\n }\r\n\r\n public initialize(options: LanguageSelectComponentOptions): void {\r\n this.model = ViewModelService.get('subtitle:language', options.defaultLanguage);\r\n this.model.addValidation(SubtitleLanguageValidation);\r\n\r\n this.listenTo(this.channelName, 'select:language', this.onLanguageSelected);\r\n }\r\n\r\n public get template(): any {\r\n return LanguageSelectTemplate;\r\n }\r\n\r\n public get name(): string {\r\n return 'LanguageSelectComponent';\r\n }\r\n\r\n public get lang(): string {\r\n return 'libraryEditor.languageSelect';\r\n }\r\n\r\n public events(): ObjectHash {\r\n return {\r\n 'click .submit': 'onClickSubmit',\r\n 'submit': 'onClickSubmit'\r\n };\r\n }\r\n\r\n public get behaviors(): any[] {\r\n return [\r\n {\r\n behaviorClass: PopupBehavior,\r\n title: LanguageService.getPhrase(this.lang, 'heading'),\r\n buttons: [{\r\n text: LanguageService.getPhrase(this.lang, 'submit'), type: 'submit', className: 'btn btn-primary submit'\r\n }]\r\n },\r\n {\r\n behaviorClass: BackboneValidationBehavior\r\n }\r\n ];\r\n }\r\n\r\n public regions(): ObjectHash {\r\n return {\r\n typeahead: '.typahead-region'\r\n };\r\n }\r\n\r\n public get channelName(): string {\r\n return `${this.name}${this.cid}`;\r\n }\r\n\r\n private getTypeaheadConfigs(): any {\r\n const typeaheadConfig = LangugageSelectTypeaheadHelper.getTypeaheadConfig();\r\n\r\n return [\r\n { name: 'languages', typeaheadConfig }\r\n ];\r\n }\r\n\r\n private renderTypeahead(): void {\r\n this.showChildView('typeahead', new SearchTypeaheadComponent({\r\n model: this.model,\r\n parentChannelName: this.channelName,\r\n inputId: 'language',\r\n selectEvent: 'select:language',\r\n typeaheadConfigs: this.getTypeaheadConfigs()\r\n }));\r\n }\r\n\r\n private onLanguageSelected(selected: ObjectHash): void {\r\n this.model.set('code', selected.key);\r\n }\r\n\r\n private onClickSubmit(): void {\r\n this.model.validate();\r\n\r\n if (!this.model.isValid())\r\n return;\r\n\r\n this.options.promise.resolve(this.model.toJSON());\r\n this.triggerMethod('hide');\r\n }\r\n\r\n public onBeforeDestroy(): void {\r\n if (this.options.promise.state() === 'pending')\r\n this.options.promise.reject();\r\n }\r\n\r\n public onRender(): void {\r\n this.renderTypeahead();\r\n }\r\n}","import * as _ from 'underscore';\r\nimport { ObjectHash } from 'backbone';\r\n\r\nimport { TypeaheadDataSource, InstantSearchBloodhound } from 'libs/shared/apps/search/interfaces';\r\n\r\nimport * as Templates from 'shared/utils/search/raw-search-templates';\r\nimport { Tag } from 'shared/models/Tag';\r\n\r\nexport const LangugageSelectTypeaheadHelper = {\r\n\r\n handleQuery(dataSource?: TypeaheadDataSource<Tag>, options?: ObjectHash): TypeaheadDataSource<Tag> {\r\n return (query: string, syncResults: any, asyncResults: any) => {\r\n\r\n const matches: ObjectHash[] = [];\r\n\r\n if (!query) {\r\n syncResults();\r\n return;\r\n }\r\n\r\n const lanByStr = CVLanguages.getEnglishNameContains(query);\r\n\r\n // do not show already selected languages\r\n _.each(lanByStr, (ls, key) => {\r\n matches.push({ key, name: ls.englishName });\r\n });\r\n\r\n return syncResults(matches);\r\n };\r\n },\r\n\r\n getTypeaheadConfig(): any {\r\n return (source: InstantSearchBloodhound<Tag>, index: number) => ({\r\n name: 'languages',\r\n source: LangugageSelectTypeaheadHelper.handleQuery(),\r\n limit: 5,\r\n display: (d: ObjectHash) => d.name,\r\n templates: {\r\n suggestion: Templates.ResultSuggestion,\r\n pending: Templates.Loading,\r\n notFound: Templates.NotFound,\r\n }\r\n });\r\n }\r\n};","var Handlebars = require('handlebars');\nmodule.exports = (Handlebars['default'] || Handlebars).template({\"1\":function(container,depth0,helpers,partials,data) {\n var stack1, alias1=container.propertyIsEnumerable, alias2=container.lambda, alias3=container.escapeExpression;\n\n return \"<a class=\\\"float-right \"\n + alias3(alias2(((stack1 = ((stack1 = (depth0 != null ? depth0.options : depth0)) != null ? stack1.styles : stack1)) != null ? stack1.svgContainer : stack1), depth0))\n + \" \"\n + alias3(alias2(((stack1 = ((stack1 = (depth0 != null ? depth0.options : depth0)) != null ? stack1.styles : stack1)) != null ? stack1.actionSvg : stack1), depth0))\n + \" text-muted delete\\\">\"\n + ((stack1 = alias2(((stack1 = (depth0 != null ? depth0.options : depth0)) != null ? stack1.trashSvg : stack1), depth0)) != null ? stack1 : \"\")\n + \"</a>\\r\\n\";\n},\"compiler\":[8,\">= 4.3.0\"],\"main\":function(container,depth0,helpers,partials,data) {\n var stack1, helper, alias1=container.propertyIsEnumerable, alias2=container.lambda, alias3=container.escapeExpression, alias4=depth0 != null ? depth0 : (container.nullContext || {});\n\n return \"<span class=\\\"d-inline-block align-middle mr-2 \"\n + alias3(alias2(((stack1 = ((stack1 = (depth0 != null ? depth0.options : depth0)) != null ? stack1.styles : stack1)) != null ? stack1.svgContainer : stack1), depth0))\n + \"\\\">\"\n + ((stack1 = alias2(((stack1 = (depth0 != null ? depth0.options : depth0)) != null ? stack1.svg : stack1), depth0)) != null ? stack1 : \"\")\n + \"</span>\\r\\n<a href=\\\"\"\n + alias3(((helper = (helper = helpers.url || (depth0 != null ? depth0.url : depth0)) != null ? helper : container.hooks.helperMissing),(typeof helper === \"function\" ? helper.call(alias4,{\"name\":\"url\",\"hash\":{},\"data\":data}) : helper)))\n + \"?name=\"\n + alias3(alias2(((stack1 = (depth0 != null ? depth0.options : depth0)) != null ? stack1.name : stack1), depth0))\n + \"\\\" class=\\\"align-middle\\\">\\r\\n \"\n + alias3(alias2(((stack1 = (depth0 != null ? depth0.options : depth0)) != null ? stack1.name : stack1), depth0))\n + \"\\r\\n</a>\\r\\n\"\n + ((stack1 = helpers.unless.call(alias4,((stack1 = (depth0 != null ? depth0.options : depth0)) != null ? stack1.isClickViewContent : stack1),{\"name\":\"unless\",\"hash\":{},\"fn\":container.program(1, data, 0),\"inverse\":container.noop,\"data\":data})) != null ? stack1 : \"\");\n},\"useData\":true});","import { Core } from 'libs/common/core';\r\nimport { SvgHelper, cvSvgLibrary } from 'libs/shared/utils/SvgHelper';\r\nimport { Radio } from 'backbone';\r\nimport { ObjectHash } from 'backbone';\r\n\r\nimport { DialogHelper } from 'shared/utils';\r\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\r\n\r\nimport { VideoDetailsHelper } from 'apps/library-editor/utils/VideoDetailsHelper';\r\n\r\nimport SubtitleTemplate from './Subtitle.hbs';\r\nimport styles from './subtitle.scss';\r\n\r\nexport interface SubtitleItemComponentOptions extends Core.ComponentOptions {\r\n channelName: string;\r\n isClickViewContent?: boolean;\r\n}\r\n\r\nexport class SubtitleItemComponent extends Core.Component {\r\n public options: SubtitleItemComponentOptions;\r\n\r\n constructor(options: SubtitleItemComponentOptions) {\r\n super(options);\r\n }\r\n\r\n public get name(): string {\r\n return 'SubtitleItemComponent';\r\n }\r\n\r\n public get template(): any {\r\n return SubtitleTemplate;\r\n }\r\n\r\n public get lang(): string {\r\n return 'libraryEditor.videoSubtitles';\r\n }\r\n\r\n public get className(): string {\r\n return 'mb-2';\r\n }\r\n\r\n public events(): ObjectHash {\r\n return {\r\n 'click .delete': 'onClickDelete'\r\n };\r\n }\r\n\r\n private getEnglishName(): string {\r\n const language = this.model.get('language');\r\n\r\n const differentNames = this.model.collection.filter(subtitle =>\r\n subtitle.get('language') !== language\r\n );\r\n\r\n let name: string;\r\n\r\n if (differentNames.length > 0)\r\n name = CVLanguages.getFullEnglishName(language);\r\n else\r\n name = CVLanguages.getEnglishName(language);\r\n\r\n return this.model.get('metadata')?.autoGenerated\r\n ? LanguageService.getPhrase(this.lang, 'autoGenerated', { name })\r\n : name;\r\n }\r\n\r\n private onClickDelete(): void {\r\n if (this.options.isClickViewContent)\r\n return;\r\n\r\n const dialogHelper = new DialogHelper({\r\n title: LanguageService.getPhrase(this.lang, 'removeHeading'),\r\n text: LanguageService.getPhrase(this.lang, 'removeBody', {\r\n language: this.getEnglishName()\r\n }),\r\n buttons: [{\r\n text: LanguageService.getPhrase(this.lang, 'remove'),\r\n className: 'btn btn-danger',\r\n success: true,\r\n }, {\r\n text: LanguageService.getPhrase(this.lang, 'cancel'),\r\n className: 'btn btn-secondary',\r\n close: true,\r\n }],\r\n channelName: `${this.name}${this.cid}`\r\n });\r\n\r\n dialogHelper.render().done(() => {\r\n const channel = Radio.channel(this.options.channelName);\r\n channel.trigger('delete:subtitle', this.model.get('id'));\r\n });\r\n }\r\n\r\n public viewOptions(): ObjectHash {\r\n return {\r\n styles,\r\n svg: VideoDetailsHelper.mapTypeToSvg('subtitle'),\r\n trashSvg: SvgHelper.getSvg(cvSvgLibrary.Delete),\r\n name: this.getEnglishName(),\r\n isClickViewContent: this.options.isClickViewContent\r\n };\r\n }\r\n}","var Handlebars = require('handlebars');\nmodule.exports = (Handlebars['default'] || Handlebars).template({\"1\":function(container,depth0,helpers,partials,data) {\n var stack1, alias1=container.propertyIsEnumerable;\n\n return container.escapeExpression(container.lambda(((stack1 = (depth0 != null ? depth0.options : depth0)) != null ? stack1.emptyStateText : stack1), depth0));\n},\"compiler\":[8,\">= 4.3.0\"],\"main\":function(container,depth0,helpers,partials,data) {\n var stack1, alias1=container.propertyIsEnumerable;\n\n return \"<h5>\"\n + container.escapeExpression(container.lambda(((stack1 = (depth0 != null ? depth0.options : depth0)) != null ? stack1.headerText : stack1), depth0))\n + \"</h5>\\r\\n\"\n + ((stack1 = helpers[\"if\"].call(depth0 != null ? depth0 : (container.nullContext || {}),((stack1 = (depth0 != null ? depth0.options : depth0)) != null ? stack1.emptyStateText : stack1),{\"name\":\"if\",\"hash\":{},\"fn\":container.program(1, data, 0),\"inverse\":container.noop,\"data\":data})) != null ? stack1 : \"\")\n + \"\\r\\n<div class=\\\"subtitles-list-region\\\"></div>\";\n},\"useData\":true});","import * as _ from 'underscore';\r\nimport { ObjectHash } from 'backbone';\r\nimport { Core } from 'libs/common/core';\r\n\r\nimport { SubtitleItemComponentOptions, SubtitleItemComponent } from './SubtitleItemComponent';\r\nimport VideoSubtitlesTemplate from './VideoSubtitles.hbs';\r\n\r\ninterface VideoSubtitlesComponentCollectionOptions extends Core.ComponentCollectionOptions {\r\n channelName: string;\r\n isClickViewContent?: boolean;\r\n headerText?: string;\r\n emptyStateText?: string;\r\n}\r\n\r\nexport class VideoSubtitlesComponent extends Core.Component {\r\n public options: VideoSubtitlesComponentCollectionOptions;\r\n\r\n constructor(options: VideoSubtitlesComponentCollectionOptions) {\r\n super(options);\r\n }\r\n\r\n public get name(): string {\r\n return 'VideoSubtitlesComponent';\r\n }\r\n\r\n public get template(): string {\r\n return VideoSubtitlesTemplate;\r\n }\r\n\r\n public regions(): ObjectHash {\r\n return {\r\n subtitles: {\r\n el: '.subtitles-list-region',\r\n replaceElement: true\r\n }\r\n };\r\n }\r\n\r\n public viewOptions(): ObjectHash {\r\n return {\r\n headerText: this.options.headerText,\r\n emptyStateText: this.options.emptyStateText\r\n };\r\n }\r\n\r\n public onRender(): void {\r\n this.showChildView('subtitles', new VideoSubtitlesComponentCollection({\r\n collection: this.collection,\r\n channelName: this.options.channelName,\r\n isClickViewContent: this.options.isClickViewContent\r\n }));\r\n }\r\n}\r\n\r\nexport class VideoSubtitlesComponentCollection extends Core.ComponentCollection {\r\n public options: VideoSubtitlesComponentCollectionOptions;\r\n\r\n constructor(options: VideoSubtitlesComponentCollectionOptions) {\r\n super(options);\r\n }\r\n\r\n public get name(): string {\r\n return 'VideoSubtitlesComponentCollection';\r\n }\r\n\r\n public get childView(): typeof SubtitleItemComponent {\r\n return SubtitleItemComponent;\r\n }\r\n\r\n public get childViewOptions(): SubtitleItemComponentOptions {\r\n return {\r\n channelName: this.options.channelName,\r\n isClickViewContent: this.options.isClickViewContent\r\n };\r\n }\r\n}","// extracted by mini-css-extract-plugin\nmodule.exports = {\"svgContainer\":\"cv--svgContainer--1VUhp\",\"actionSvg\":\"cv--actionSvg--3cODR\"};","var Handlebars = require('handlebars');\nmodule.exports = (Handlebars['default'] || Handlebars).template({\"1\":function(container,depth0,helpers,partials,data) {\n return \"col-5 py-3\";\n},\"compiler\":[8,\">= 4.3.0\"],\"main\":function(container,depth0,helpers,partials,data) {\n var stack1, alias1=container.propertyIsEnumerable, alias2=depth0 != null ? depth0 : (container.nullContext || {});\n\n return \"<div class=\\\"tab-region\\\"></div>\\r\\n\\r\\n<div class=\\\"row pb-2\\\">\\r\\n <div class=\\\"\"\n + ((stack1 = helpers[\"if\"].call(alias2,((stack1 = (depth0 != null ? depth0.options : depth0)) != null ? stack1.isClickViewContent : stack1),{\"name\":\"if\",\"hash\":{},\"fn\":container.program(1, data, 0),\"inverse\":container.noop,\"data\":data})) != null ? stack1 : \"\")\n + \"\\\">\\r\\n <div class=\\\"clickview-subtitles-list-region\\\"></div>\\r\\n </div>\\r\\n <div class=\\\"col-7\\\">\\r\\n <div class=\\\"subtitles-upload-region\\\"></div>\\r\\n <div class=\\\"subtitles-upload-list-region p-0 col-8\\\"></div>\\r\\n <div class=\\\"customer-subtitles-list-region p-0 col-8\\\"></div>\\r\\n </div>\\r\\n</div>\\r\\n\\r\\n<div class=\\\"row border-top pt-1\\\">\\r\\n <div class=\\\"\"\n + ((stack1 = helpers[\"if\"].call(alias2,((stack1 = (depth0 != null ? depth0.options : depth0)) != null ? stack1.isClickViewContent : stack1),{\"name\":\"if\",\"hash\":{},\"fn\":container.program(1, data, 0),\"inverse\":container.noop,\"data\":data})) != null ? stack1 : \"\")\n + \"\\\">\\r\\n <div class=\\\"clickview-resources-list-region\\\"></div>\\r\\n </div>\\r\\n <div class=\\\"col-7\\\">\\r\\n <div class=\\\"resources-upload-region\\\"></div>\\r\\n <div class=\\\"resources-upload-list-region p-0 col-8\\\"></div>\\r\\n <div class=\\\"customer-resources-list-region p-0 col-8\\\"></div>\\r\\n </div>\\r\\n</div>\\r\\n\\r\\n<div class=\\\"row border-top pt-3\\\">\\r\\n <div class=\\\"\"\n + ((stack1 = helpers[\"if\"].call(alias2,((stack1 = (depth0 != null ? depth0.options : depth0)) != null ? stack1.isClickViewContent : stack1),{\"name\":\"if\",\"hash\":{},\"fn\":container.program(1, data, 0),\"inverse\":container.noop,\"data\":data})) != null ? stack1 : \"\")\n + \"\\\">\\r\\n <div class=\\\"clickview-link-list-region\\\"></div>\\r\\n </div>\\r\\n <div class=\\\"col-7\\\">\\r\\n <div class=\\\"add-links-region mb-2\\\"></div>\\r\\n <div class=\\\"customer-link-list-region p-0 col-8\\\"></div>\\r\\n </div>\\r\\n</div>\";\n},\"useData\":true});","import * as _ from 'underscore';\r\nimport { ObjectHash } from 'backbone';\r\nimport { Radio } from 'backbone';\r\n\r\nimport { Core } from 'libs/common/core';\r\nimport { InstanceManager } from 'libs/common/backbone/services/InstanceManager';\r\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\r\nimport { CommonChannels } from 'libs/common/backbone/constants/CommonChannels';\r\nimport { DataServiceErrorType } from 'libs/common/backbone/enums/DataServiceErrorType';\r\nimport { DataServiceError } from 'libs/common/backbone/interfaces';\r\n\r\nimport { SubtitleUploadService, LearningResourceUploadService } from 'libs/shared/apps/upload/services/UploadService';\r\nimport { UploadEventNames } from 'libs/shared/apps/upload/constants/UploadConstants';\r\nimport { FileExtensionHelper, FileExtensions } from 'libs/shared/apps/upload/utils/FileExtensionsHelper';\r\n\r\nimport { DataPrefixes, DataServices, DataChannels, ServiceChannels } from 'shared/constants';\r\nimport { PermissionsHelper, TabHelper, RadioChannelHelper } from 'shared/utils';\r\nimport { Video } from 'shared/models/Video';\r\nimport { Resource } from 'shared/models/Resource';\r\nimport { Subtitle } from 'shared/models/Subtitle';\r\nimport { User } from 'shared/models/User';\r\nimport { Link } from 'shared/models/Link';\r\nimport { PartialLoading, InteractionType } from 'shared/enums';\r\nimport { LockLayoutFileDropBehavior } from 'shared/behaviors';\r\nimport { UserDataServiceHelper } from 'shared/services/UserDataService';\r\n\r\nimport { VideoDataService } from 'apps/library-editor/services/VideoDataService';\r\nimport { ChapterDataService } from 'apps/library-editor/services/ChapterDataService';\r\nimport { ResourceDataService } from 'apps/library-editor/services/ResourceDataService';\r\nimport { SubtitleDataService } from 'apps/library-editor/services/SubtitleDataService';\r\nimport { LinkDataService } from 'apps/library-editor/services/LinkDataService';\r\n\r\nimport { FileSelectComponent } from 'apps/library-editor/components/file-select/FileSelectComponent';\r\nimport { VideoResourcesComponentCollection } from 'apps/library-editor/components/video-resources/VideoResourcesComponent';\r\nimport { ConcatenateRequestComponent } from 'apps/library-editor/components/concatenate-request/ConcatenateRequestComponent';\r\nimport { FileUploadsComponentCollection } from 'apps/library-editor/components/file-uploads/FileUploadsComponentCollection';\r\nimport { LanguageSelectComponent } from 'apps/library-editor/components/language-select/LanguageSelectComponent';\r\nimport { EditVideoTabsComponent } from 'apps/library-editor/components/edit-video-tabs/EditVideoTabsComponent';\r\nimport { VideoSubtitlesComponent } from 'apps/library-editor/components/video-subtitles/VideoSubtitlesComponent';\r\nimport { VideoResourcesComponent } from 'apps/library-editor/components/video-resources/VideoResourcesComponent';\r\nimport { AddLinksComponent } from 'apps/library-editor/components/add-links/AddLinksComponent';\r\nimport { VideoLinksComponent } from 'apps/library-editor/components/edit-links/VideoLinksComponent';\r\n\r\nimport { ForbiddenVideoError, VideoNotFoundError, TooManySubtitlesError, TooManyResourcesError } from 'apps/library-editor/errors';\r\nimport { ChapterConcatenateRequest } from 'apps/library-editor/models';\r\nimport { LibraryEditorActions } from 'apps/library-editor/constants';\r\nimport { ObjectOwnerType, MediaConcatenateStatus } from 'apps/library-editor/enums';\r\nimport { UserAction, LocationContext, EntityType } from 'libs/analytics/interfaces';\r\nimport { AnalyticsHelper } from 'libs/analytics/AnalyticsHelper';\r\n\r\nimport EditResourcesTemplate from './EditResources.hbs';\r\n\r\nconst SUBTITLE_LIMIT = 5;\r\nconst RESOURCE_LIMIT = 25;\r\nconst LINK_LIMIT = 25;\r\n\r\ninterface EditResourcesViewOptions extends Core.ViewOptions<Video> {\r\n videoId: string;\r\n}\r\n\r\nexport class EditResourcesView extends Core.View<Video> {\r\n public options: EditResourcesViewOptions;\r\n\r\n private videoDataService: VideoDataService;\r\n private subtitleUploadService: SubtitleUploadService;\r\n private resourceUploadService: LearningResourceUploadService;\r\n private chapterDataService: ChapterDataService;\r\n private linkDataService: LinkDataService;\r\n private resourceDataService: ResourceDataService;\r\n private subtitleDataService: SubtitleDataService;\r\n\r\n private hasPhysicalChapters: Core.Model;\r\n private concatenateRequest: ChapterConcatenateRequest;\r\n private interactionType: InteractionType;\r\n private currentUser: User;\r\n\r\n private getConcatenateRequestSent: boolean;\r\n private concatenateRequestNotFound: boolean;\r\n private isClickViewContent: boolean;\r\n\r\n private resourceUploads: any[];\r\n private resourceUploadCount: number;\r\n\r\n constructor(options: EditResourcesViewOptions) {\r\n super(options);\r\n }\r\n\r\n public initialize(): void {\r\n this.initializeUploadServices();\r\n this.bindDataListeners();\r\n this.bindViewListeners();\r\n this.bindFileSelectListeners();\r\n TabHelper.initBackButton();\r\n\r\n this.chapterDataService = InstanceManager.getInstance(DataServices.Chapter, this);\r\n this.videoDataService = InstanceManager.getInstance(DataServices.Video, this);\r\n this.linkDataService = InstanceManager.getInstance(DataServices.Link, this);\r\n this.resourceDataService = InstanceManager.getInstance(DataServices.Resource, this);\r\n this.subtitleDataService = InstanceManager.getInstance(DataServices.Subtitle, this);\r\n\r\n this.resourceUploads = [];\r\n this.resourceUploadCount = 0;\r\n }\r\n\r\n public get name(): string {\r\n return 'EditResourcesView';\r\n }\r\n\r\n public get lang(): string {\r\n return 'libraryEditor.editResources';\r\n }\r\n\r\n public get title(): string {\r\n return this.model && this.model.get('name') || 'Edit Resources';\r\n }\r\n\r\n public get template(): any {\r\n return EditResourcesTemplate;\r\n }\r\n\r\n public get props(): string[] {\r\n return ['videoDataService'];\r\n }\r\n\r\n public get className(): string {\r\n return 'bg-white p-3';\r\n }\r\n\r\n public get channelName(): string {\r\n return RadioChannelHelper.generateUniqueChannelName(this);\r\n }\r\n\r\n public get behaviors(): any[] {\r\n return [\r\n {\r\n behaviorClass: LockLayoutFileDropBehavior\r\n }\r\n ];\r\n }\r\n\r\n public get requiredResources(): Core.RequiredResourceHash {\r\n return {\r\n currentUser: UserDataServiceHelper.currentUser\r\n };\r\n }\r\n\r\n private initializeUploadServices(): void {\r\n this.resourceUploadService = new LearningResourceUploadService();\r\n this.listenTo(\r\n ServiceChannels.RESOURCE_UPLOAD, UploadEventNames.UPLOAD_COMPLETE, this.onResourceUploadComplete\r\n );\r\n\r\n this.subtitleUploadService = new SubtitleUploadService();\r\n this.listenTo(\r\n ServiceChannels.SUBTITLE_UPLOAD, UploadEventNames.UPLOAD_COMPLETE, this.onSubtitleUploadComplete\r\n );\r\n }\r\n\r\n private bindDataListeners(): void {\r\n this.listenTo(DataChannels.VIDEO, `${DataPrefixes.VIDEOS}:${this.options.videoId}:sync`, this.render);\r\n this.listenTo(DataChannels.VIDEO, `${DataPrefixes.VIDEOS}:${this.options.videoId}:error`, this.onVideoDataError);\r\n\r\n this.listenTo(DataChannels.VIDEO,\r\n `${DataPrefixes.VIDEO_HAS_PHYSICAL_CHAPTERS}:${this.options.videoId}:sync`, this.render);\r\n\r\n this.listenTo(DataChannels.CHAPTER,\r\n `${DataPrefixes.CONCATENATE_STATUS}:${this.options.videoId}:error`, this.onConcatenateDataError);\r\n }\r\n\r\n private bindViewListeners(): void {\r\n this.listenTo(this.channelName, 'add:link', this.onAddLink);\r\n this.listenTo(this.channelName, 'delete:subtitle', this.onDeleteSubtitle);\r\n this.listenTo(this.channelName, 'delete:resource', this.onDeleteResource);\r\n this.listenTo(this.channelName, 'delete:link', this.onDeleteLink);\r\n this.listenTo(this.channelName, 'cancel:upload', this.onCancelUpload);\r\n this.listenTo(this.channelName, LibraryEditorActions.MergeChapters, this.onMergeChapters);\r\n }\r\n\r\n private bindFileSelectListeners(): void {\r\n this.listenTo(this.getSubtitleSelectChannelName(), UploadEventNames.FILES_SELECTED, this.onSubtitleFilesAdded);\r\n\r\n this.listenTo(this.getResourceSelectChannelName(), UploadEventNames.FILES_SELECTED, this.onResourceFilesAdded);\r\n }\r\n\r\n private getSubtitleSelectChannelName(): string {\r\n return `${this.name}${this.cid}subtitles`;\r\n }\r\n\r\n private getResourceSelectChannelName(): string {\r\n return `${this.name}${this.cid}resources`;\r\n }\r\n\r\n private onVideoDataError(error: DataServiceError): void {\r\n switch (error.type) {\r\n case DataServiceErrorType.NotFound:\r\n Core.ErrorHelper.throw(new VideoNotFoundError());\r\n break;\r\n case DataServiceErrorType.Forbidden:\r\n Core.ErrorHelper.throw(new ForbiddenVideoError());\r\n break;\r\n }\r\n }\r\n\r\n private onConcatenateDataError(error: DataServiceError): void {\r\n if (error.type !== DataServiceErrorType.NotFound)\r\n return;\r\n\r\n this.concatenateRequestNotFound = true;\r\n\r\n this.render();\r\n }\r\n\r\n private onSubtitleFilesAdded(files: File[], type?: InteractionType): void {\r\n if (files.length > (SUBTITLE_LIMIT - this.model.subtitles.length )) {\r\n Core.ErrorHelper.throw(new TooManySubtitlesError(SUBTITLE_LIMIT));\r\n return;\r\n }\r\n\r\n if (type)\r\n this.interactionType = type;\r\n\r\n this.subtitleUploadService.addFiles(files);\r\n }\r\n\r\n private onResourceFilesAdded(files: File[], type?: InteractionType): void {\r\n if (files.length > (RESOURCE_LIMIT - this.model.resources.length )) {\r\n Core.ErrorHelper.throw(new TooManyResourcesError(RESOURCE_LIMIT));\r\n return;\r\n }\r\n\r\n this.resourceUploadCount += files.length;\r\n\r\n if (type)\r\n this.interactionType = type;\r\n\r\n this.resourceUploadService.addFiles(files);\r\n }\r\n\r\n private onAddLink(link: ObjectHash): void {\r\n if (this.model.links.length === LINK_LIMIT)\r\n return;\r\n\r\n // If they are about to reach the limit, immediately hide the link form.\r\n if (this.model.links.length + 1 === LINK_LIMIT)\r\n this.renderAddLinks(true);\r\n\r\n this.linkDataService.addLink(this.model.get('id'), link, (newLink: Link) => {\r\n this.model.links.add(newLink);\r\n this.render();\r\n });\r\n }\r\n\r\n public regions(): ObjectHash {\r\n return {\r\n tabs: {\r\n el: '.tab-region',\r\n partialLoading: PartialLoading.EditVideoTabs\r\n },\r\n\r\n subtitlesUpload: {\r\n el: '.subtitles-upload-region',\r\n partialLoading: PartialLoading.EditVideoUploadArea\r\n },\r\n subtitlesUploadList: '.subtitles-upload-list-region',\r\n customerSubtitlesList: '.customer-subtitles-list-region',\r\n clickViewSubtitlesList: '.clickview-subtitles-list-region',\r\n\r\n resourcesUpload: {\r\n el: '.resources-upload-region',\r\n partialLoading: PartialLoading.EditVideoUploadArea\r\n },\r\n resourcesUploadList: '.resources-upload-list-region',\r\n customerResourcesList: '.customer-resources-list-region',\r\n clickViewResourcesList: '.clickview-resources-list-region',\r\n\r\n addLinks: {\r\n el: '.add-links-region',\r\n partialLoading: PartialLoading.EditVideoUploadArea\r\n },\r\n customerLinkList: '.customer-link-list-region',\r\n clickViewLinkList: '.clickview-link-list-region'\r\n };\r\n }\r\n\r\n /**\r\n * We call this function in onRender to not start polling if we don't have a concatenateRequest\r\n * or if the concatenate request isn't currently concatenating. \r\n */\r\n private startPollingConcatenation(): void {\r\n if (!this.concatenateRequest)\r\n return;\r\n\r\n const ignoreStatuses = [ MediaConcatenateStatus.SingleFile, MediaConcatenateStatus.ConcatenationFailed ];\r\n if (_.contains(ignoreStatuses, this.concatenateRequest.get('status')))\r\n return;\r\n\r\n this.pollConcatenation();\r\n }\r\n\r\n /**\r\n * This function exists seperately from startPollingConcatenation() so that\r\n * we can force the polling to start when this.concatenateRequest is null\r\n * \r\n * This is done when the merge chapter button is clicked to request concatenation\r\n */\r\n private pollConcatenation(): void {\r\n if (this.isDestroyed())\r\n return;\r\n\r\n this.chapterDataService.getConcatenateRequest(this.options.videoId, (data: ChapterConcatenateRequest) => {\r\n this.concatenateRequest = data;\r\n\r\n if (this.concatenateRequest.get('status') !== MediaConcatenateStatus.SingleFile) {\r\n setTimeout(() => this.pollConcatenation(), 5000);\r\n this.renderConcatenationRequest();\r\n return;\r\n }\r\n\r\n this.videoDataService.clearPhysicialChaptersCache();\r\n this.videoDataService.hasPhysicalChapters(this.options.videoId, (model: Core.Model) => {\r\n this.hasPhysicalChapters = model;\r\n this.renderSubtitleFileSelect();\r\n });\r\n });\r\n }\r\n\r\n private onDeleteResource(resourceId: string): void {\r\n this.resourceDataService.deleteResource(this.options.videoId, resourceId, () => {\r\n this.logDeleteAction(EntityType.Resource, resourceId);\r\n this.render();\r\n });\r\n }\r\n\r\n private onDeleteSubtitle(subtitleId: string): void {\r\n this.subtitleDataService.deleteSubtitle(this.options.videoId, subtitleId, () => {\r\n this.logDeleteAction(EntityType.Subtitle, subtitleId);\r\n this.render();\r\n });\r\n }\r\n\r\n private onDeleteLink(linkId: string): void {\r\n this.linkDataService.deleteLink(this.options.videoId, linkId, () => {\r\n this.logDeleteAction(EntityType.Link, linkId);\r\n this.render();\r\n });\r\n }\r\n\r\n private onCancelUpload(uploadId: string): void {\r\n /**\r\n * We don't know if it was a subtitle upload or resource upload\r\n * that was cancelled. But we do know that the uploadId will be unique\r\n * so we jsut blindly cancel it in both services.\r\n *\r\n * Bit hacky... sue me - Sha\r\n */\r\n this.resourceUploadService.cancelUpload(uploadId);\r\n this.subtitleUploadService.cancelUpload(uploadId);\r\n }\r\n\r\n private onResourceUploadComplete(upload: Core.Model): void {\r\n const uploadData = upload.toJSON();\r\n\r\n const data = {\r\n fileId: uploadData.fileInfo.id,\r\n uploadId: uploadData.file.cvUpload.uploadId,\r\n name: uploadData.fileInfo.name,\r\n type: FileExtensionHelper.getResourceType(uploadData.fileInfo.extension),\r\n extension: uploadData.fileInfo.extension,\r\n fileSize: uploadData.fileInfo.size,\r\n fileUrl: uploadData.fileInfo.url,\r\n ingestUrl: uploadData.file.cvUpload.ingestUrl,\r\n metaData: {\r\n type: FileExtensionHelper.getResourceType(uploadData.fileInfo.extension)\r\n },\r\n contribution: false,\r\n url: uploadData.fileInfo.url,\r\n fileIdType: 2 // FileApiv1\r\n };\r\n\r\n this.resourceUploads.push(data);\r\n this.resourceUploadCount--;\r\n\r\n if (this.resourceUploadCount > 0) return;\r\n\r\n // This is only run once all resources have been uploaded.\r\n this.resourceDataService.addResource(this.options.videoId, this.resourceUploads, (resource: Resource) => {\r\n this.model.resources.add(resource);\r\n\r\n const uploadedResource = this.resourceUploadService\r\n .getCollection()\r\n .filter((uploaded: any) => uploaded.get('fileInfo').id === resource.get('fileId'));\r\n\r\n this.resourceUploadService.getCollection().remove(uploadedResource);\r\n\r\n this.logUploadAction(resource);\r\n this.render();\r\n });\r\n this.resourceUploads = [];\r\n }\r\n\r\n private onSubtitleUploadComplete(upload: Core.Model): void {\r\n const promise = $.Deferred();\r\n\r\n const languageSelector = new LanguageSelectComponent({\r\n /**\r\n * TODO: Pull the default language from the user's country.\r\n */\r\n defaultLanguage: { code: 'en', name: 'English' },\r\n promise\r\n });\r\n\r\n promise\r\n .done((language: any) => {\r\n const uploadData = upload.toJSON();\r\n\r\n const data = {\r\n fileId: uploadData.fileInfo.id,\r\n name: language.name,\r\n language: language.code,\r\n type: FileExtensionHelper.getResourceType(uploadData.fileInfo.extension),\r\n fileIdType: 2 // FileApiv1\r\n };\r\n\r\n this.subtitleDataService.addSubtitle(this.options.videoId, data, (subtitle: Subtitle) => {\r\n this.model.subtitles.add(subtitle);\r\n this.subtitleUploadService.getCollection().remove(upload);\r\n this.logUploadAction(subtitle);\r\n this.render();\r\n });\r\n })\r\n .fail(() => {\r\n this.subtitleUploadService.cancelUpload(upload.get('id'));\r\n });\r\n\r\n const channel = Radio.channel(CommonChannels.POPUP);\r\n channel.trigger(Core.EventNames.SHOW_POPUP, languageSelector);\r\n }\r\n\r\n private logUploadAction(item: Resource | Subtitle): void {\r\n const entity = item instanceof Resource ? EntityType.Resource : EntityType.Subtitle;\r\n const descriptor = AnalyticsHelper.mapInteractionType(this.interactionType);\r\n\r\n const analyticsOptions = {\r\n location: LocationContext.EditVideoResources,\r\n actionType: UserAction.Upload,\r\n entity,\r\n descriptor,\r\n };\r\n\r\n AnalyticsHelper.logUserAction(item, analyticsOptions);\r\n }\r\n\r\n private logDeleteAction(entity: EntityType, id: string, ): void {\r\n\r\n const analyticsOptions = {\r\n location: LocationContext.EditVideoResources,\r\n actionType: UserAction.Delete,\r\n entity,\r\n };\r\n\r\n const data = { id, parentId: +this.options.videoId };\r\n\r\n AnalyticsHelper.logUserAction(data, analyticsOptions);\r\n }\r\n\r\n private onMergeChapters(): void {\r\n this.chapterDataService.addConcatenateRequest(this.options.videoId, () => {\r\n this.pollConcatenation();\r\n });\r\n }\r\n\r\n private renderTabs(): void {\r\n const hideChaptersTab: boolean = !PermissionsHelper.canEditVideo(this.model);\r\n this.showChildView('tabs', new EditVideoTabsComponent({\r\n tabs: TabHelper.getEditVideoTabs(this.options.videoId, { hideChaptersTab }),\r\n activeTab: '.edit-resources-subtitles-applink',\r\n goBackTab: TabHelper.getBackButton(this.options.videoId),\r\n }));\r\n }\r\n\r\n private renderSubtitleFileSelect(): void {\r\n if (this.hasPhysicalChapters.get('value')) {\r\n this.renderConcatenationRequest();\r\n return;\r\n }\r\n\r\n const limitText = LanguageService.getPhrase(this.lang, 'subtitlesLimit', {\r\n limit: SUBTITLE_LIMIT\r\n });\r\n\r\n this.showChildView('subtitlesUpload', new FileSelectComponent({\r\n title: this.isClickViewContent\r\n ? LanguageService.getPhrase(this.lang, 'customerSubtitles')\r\n : LanguageService.getPhrase(this.lang, 'subtitles'),\r\n description: LanguageService.getPhrase(this.lang, 'subtitlesInfo'),\r\n alternateText: LanguageService.getPhrase(this.lang, 'subtitlesAlternative'),\r\n mimeType: FileExtensions.SUBTITLES,\r\n channelName: this.getSubtitleSelectChannelName(),\r\n acceptMultiple: false,\r\n limitText: this.model.subtitles.length >= SUBTITLE_LIMIT ? limitText : null,\r\n isClickViewContent: this.isClickViewContent\r\n }));\r\n }\r\n\r\n private renderSubtitleUploadList(): void {\r\n const collection = this.subtitleUploadService.getCollection();\r\n this.showChildView('subtitlesUploadList', new FileUploadsComponentCollection({\r\n collection,\r\n channelName: this.channelName\r\n }));\r\n }\r\n\r\n private renderSubtitlesLists(): void {\r\n this.renderClickViewSubtitlesList();\r\n this.renderCustomerSubtitlesList();\r\n }\r\n\r\n private renderClickViewSubtitlesList(): void {\r\n if (!this.isClickViewContent)\r\n return;\r\n\r\n const subtitles = PermissionsHelper.filterObjectsByOwnerType(this.model.subtitles, ObjectOwnerType.ClickView);\r\n\r\n this.showChildView('clickViewSubtitlesList', new VideoSubtitlesComponent({\r\n collection: subtitles,\r\n channelName: this.channelName,\r\n isClickViewContent: true,\r\n headerText: LanguageService.getPhrase(this.lang, 'clickViewSubtitles'),\r\n emptyStateText: subtitles.models.length ? '' : LanguageService.getPhrase(this.lang, 'clickViewSubtitlesEmpty')\r\n }));\r\n }\r\n\r\n private renderCustomerSubtitlesList(): void {\r\n this.showChildView('customerSubtitlesList', new VideoSubtitlesComponent({\r\n collection: PermissionsHelper.filterObjectsByOwnerType(this.model.subtitles, ObjectOwnerType.Customer, this.currentUser.get('customerId')),\r\n channelName: this.channelName\r\n }));\r\n }\r\n\r\n private renderConcatenationRequest(): void {\r\n if (!this.isRendered())\r\n return;\r\n\r\n this.showChildView('subtitlesUpload', new ConcatenateRequestComponent({\r\n type: this.isClickViewContent ? 'clickViewSubtitles' : 'subtitles',\r\n channelName: this.channelName,\r\n model: this.concatenateRequest\r\n }));\r\n }\r\n\r\n private renderResourcesFileSelect(): void {\r\n const limitText = LanguageService.getPhrase(this.lang, 'resourcesLimit', {\r\n limit: RESOURCE_LIMIT\r\n });\r\n\r\n this.showChildView('resourcesUpload', new FileSelectComponent({\r\n title: this.isClickViewContent\r\n ? LanguageService.getPhrase(this.lang, 'customerResources')\r\n : LanguageService.getPhrase(this.lang, 'resources'),\r\n description: LanguageService.getPhrase(this.lang, 'resourcesDescription'),\r\n alternateText: LanguageService.getPhrase(this.lang, 'resourcesAlternative'),\r\n mimeType: FileExtensions.RESOURCES,\r\n channelName: this.getResourceSelectChannelName(),\r\n limitText: this.model.resources.length >= RESOURCE_LIMIT ? limitText : null,\r\n isClickViewContent: this.isClickViewContent\r\n }));\r\n }\r\n\r\n private renderResourcesUploadList(): void {\r\n const collection = this.resourceUploadService.getCollection();\r\n this.showChildView('resourcesUploadList', new FileUploadsComponentCollection({\r\n collection,\r\n channelName: this.channelName\r\n }));\r\n }\r\n\r\n private renderResourcesLists(): void {\r\n this.renderClickViewResourcesList();\r\n this.renderCustomerResourcesList();\r\n }\r\n\r\n private renderClickViewResourcesList(): void {\r\n if (!this.isClickViewContent)\r\n return;\r\n\r\n const resources = PermissionsHelper.filterObjectsByOwnerType(this.model.resources, ObjectOwnerType.ClickView);\r\n\r\n this.showChildView('clickViewResourcesList', new VideoResourcesComponent({\r\n model: this.model,\r\n customCollection: resources,\r\n editable: false,\r\n videoId: this.options.videoId,\r\n parentChannelName: this.channelName,\r\n headerText: LanguageService.getPhrase(this.lang, 'clickViewResources'),\r\n emptyStateText: resources.models.length ? '' : LanguageService.getPhrase(this.lang, 'clickViewResourcesEmpty'),\r\n analyticsOptions: {\r\n location: LocationContext.EditVideoResources\r\n }\r\n }));\r\n }\r\n\r\n private renderCustomerResourcesList(): void {\r\n this.showChildView('customerResourcesList', new VideoResourcesComponentCollection({\r\n collection: PermissionsHelper.filterObjectsByOwnerType(this.model.resources, ObjectOwnerType.Customer, this.currentUser.get('customerId')),\r\n editable: true,\r\n videoId: this.options.videoId,\r\n channelName: this.channelName,\r\n analyticsOptions: {\r\n location: LocationContext.EditVideoResources\r\n }\r\n }));\r\n }\r\n\r\n private renderAddLinks(hide?: boolean): void {\r\n this.showChildView('addLinks', new AddLinksComponent({\r\n collection: this.model.get('links'),\r\n channelName: this.channelName,\r\n hide: hide || this.model.get('links').length === LINK_LIMIT,\r\n limit: LINK_LIMIT\r\n }));\r\n }\r\n\r\n private renderLinkLists(): void {\r\n const sharedComponentOptions = {\r\n channelName: this.channelName,\r\n analyticsOptions: {\r\n location: LocationContext.EditVideoResources\r\n },\r\n videoId: this.options.videoId\r\n };\r\n\r\n this.renderClickViewLinkList(sharedComponentOptions);\r\n this.renderCustomerLinkList(sharedComponentOptions);\r\n }\r\n\r\n private renderClickViewLinkList(options: any): void {\r\n if (!this.isClickViewContent)\r\n return;\r\n\r\n const links = PermissionsHelper.filterObjectsByOwnerType(this.model.links, ObjectOwnerType.ClickView);\r\n\r\n this.showChildView('clickViewLinkList', new VideoLinksComponent({\r\n ...options,\r\n headingText: 'Resource Links by ClickView',\r\n emptyStateText: links.models.length ? '' : 'There are no ClickView links for this video',\r\n customCollection: links,\r\n editable: false\r\n }));\r\n }\r\n\r\n private renderCustomerLinkList(options: any): void {\r\n this.showChildView('customerLinkList', new VideoLinksComponent({\r\n ...options,\r\n customCollection: PermissionsHelper.filterObjectsByOwnerType(this.model.links, ObjectOwnerType.Customer, this.currentUser.get('customerId')),\r\n editable: true\r\n }));\r\n }\r\n\r\n private fetchData(): void {\r\n this.model = this.videoDataService.getVideo(this.options.videoId);\r\n\r\n this.hasPhysicalChapters = this.videoDataService.hasPhysicalChapters(this.options.videoId);\r\n this.isClickViewContent = this.model && !PermissionsHelper.canEditVideo(this.model);\r\n\r\n /**\r\n * If this.hasPhysicalChapters.get('value') is false, we don't need to fetch the concatenate request.\r\n * Alternatively, if we have already sent a request to fetch the concatenate request, we don't need\r\n * to fetch it again.\r\n * A flag, getConcatenateRequestSent, is used as ChapterDataService.getConcatenateRequest() will\r\n * return null if a concatenate request hasn't been created.\r\n */\r\n if (!this.hasPhysicalChapters || !this.hasPhysicalChapters.get('value') || this.getConcatenateRequestSent)\r\n return;\r\n\r\n this.chapterDataService.getConcatenateRequest(this.options.videoId, (data: ChapterConcatenateRequest) => {\r\n this.concatenateRequest = data;\r\n this.render();\r\n });\r\n\r\n this.getConcatenateRequestSent = true;\r\n }\r\n\r\n private shouldRender(): boolean {\r\n if (!this.model || !this.hasPhysicalChapters)\r\n return false;\r\n\r\n if (this.hasPhysicalChapters.get('value') && (!this.concatenateRequest && !this.concatenateRequestNotFound))\r\n return false;\r\n\r\n return true;\r\n }\r\n\r\n public onBeforeRender(): boolean {\r\n this.fetchData();\r\n\r\n return this.shouldRender();\r\n }\r\n\r\n public viewOptions(): ObjectHash {\r\n return {\r\n isClickViewContent: this.isClickViewContent\r\n };\r\n }\r\n\r\n public onRender(): void {\r\n this.renderTabs();\r\n\r\n this.renderSubtitleFileSelect();\r\n this.renderSubtitleUploadList();\r\n this.renderSubtitlesLists();\r\n\r\n this.renderResourcesFileSelect();\r\n this.renderResourcesUploadList();\r\n this.renderResourcesLists();\r\n\r\n this.renderAddLinks();\r\n this.renderLinkLists();\r\n\r\n this.startPollingConcatenation();\r\n }\r\n\r\n public onDestroy(): void {\r\n this.subtitleUploadService.destroy();\r\n this.resourceUploadService.destroy();\r\n }\r\n}"],"sourceRoot":""}
1
+ {"version":3,"sources":["file://C:/ClickView Projects/clickview/packages/projects/library-editor/src/apps/library-editor/components/add-links/AddLinks.hbs","file://C:/ClickView Projects/clickview/packages/projects/library-editor/src/apps/library-editor/components/add-links/AddLinksComponent.ts","file://C:/ClickView Projects/clickview/packages/projects/library-editor/src/apps/library-editor/components/file-select/FileSelect.hbs","file://C:/ClickView Projects/clickview/packages/projects/library-editor/src/apps/library-editor/components/file-select/FileSelectComponent.ts","file://C:/ClickView Projects/clickview/packages/projects/library-editor/src/apps/library-editor/components/file-select/FileSelectDropMask.hbs","webpack://@clickview/library-editor/./src/apps/library-editor/components/file-select/file-select.scss?18f2","file://C:/ClickView Projects/clickview/packages/projects/library-editor/src/apps/library-editor/components/file-uploads/FileUpload.hbs","file://C:/ClickView Projects/clickview/packages/projects/library-editor/src/apps/library-editor/components/file-uploads/FileUploadComponent.ts","file://C:/ClickView Projects/clickview/packages/projects/library-editor/src/apps/library-editor/components/file-uploads/FileUploadsComponentCollection.ts","webpack://@clickview/library-editor/./src/apps/library-editor/components/file-uploads/file-upload.scss?7d04","file://C:/ClickView Projects/clickview/packages/projects/library-editor/src/apps/library-editor/components/language-select/LanguageSelect.hbs","file://C:/ClickView Projects/clickview/packages/projects/library-editor/src/apps/library-editor/components/language-select/LanguageSelectComponent.ts","file://C:/ClickView Projects/clickview/packages/projects/library-editor/src/apps/library-editor/components/language-select/LanguageSelectTypeaheadHelper.ts","file://C:/ClickView Projects/clickview/packages/projects/library-editor/src/apps/library-editor/components/video-subtitles/Subtitle.hbs","file://C:/ClickView Projects/clickview/packages/projects/library-editor/src/apps/library-editor/components/video-subtitles/SubtitleItemComponent.ts","file://C:/ClickView Projects/clickview/packages/projects/library-editor/src/apps/library-editor/components/video-subtitles/VideoSubtitles.hbs","file://C:/ClickView Projects/clickview/packages/projects/library-editor/src/apps/library-editor/components/video-subtitles/VideoSubtitlesComponent.ts","webpack://@clickview/library-editor/./src/apps/library-editor/components/video-subtitles/subtitle.scss?1425","file://C:/ClickView Projects/clickview/packages/projects/library-editor/src/apps/library-editor/views/edit-resources/EditResources.hbs","file://C:/ClickView Projects/clickview/packages/projects/library-editor/src/apps/library-editor/views/edit-resources/EditResourcesView.ts"],"names":[],"mappings":"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","file":"scripts/42.chunk.js","sourcesContent":["var Handlebars = require('handlebars');\nmodule.exports = (Handlebars['default'] || Handlebars).template({\"1\":function(container,depth0,helpers,partials,data) {\n var stack1, alias1=container.propertyIsEnumerable;\n\n return \"<p class=\\\"alert alert-warning col-8\\\">\"\n + container.escapeExpression((helpers.lang||(depth0 && depth0.lang)||container.hooks.helperMissing).call(depth0 != null ? depth0 : (container.nullContext || {}),\"limit\",{\"name\":\"lang\",\"hash\":{\"limit\":((stack1 = (depth0 != null ? depth0.options : depth0)) != null ? stack1.limit : stack1)},\"data\":data}))\n + \"</p>\\r\\n\";\n},\"3\":function(container,depth0,helpers,partials,data) {\n var alias1=container.propertyIsEnumerable, alias2=depth0 != null ? depth0 : (container.nullContext || {}), alias3=container.hooks.helperMissing, alias4=container.escapeExpression;\n\n return \"<p>\"\n + alias4((helpers.lang||(depth0 && depth0.lang)||alias3).call(alias2,\"subheading\",{\"name\":\"lang\",\"hash\":{},\"data\":data}))\n + \"</p>\\r\\n<div class=\\\"form-group mb-1\\\">\\r\\n <label for=\\\"url\\\">\"\n + alias4((helpers.lang||(depth0 && depth0.lang)||alias3).call(alias2,\"urlLabel\",{\"name\":\"lang\",\"hash\":{},\"data\":data}))\n + \"</label>\\r\\n <input name=\\\"url\\\" id=\\\"url\\\" class=\\\"form-control\\\" type=\\\"text\\\" placeholder=\\\"\"\n + alias4((helpers.lang||(depth0 && depth0.lang)||alias3).call(alias2,\"urlPlaceholder\",{\"name\":\"lang\",\"hash\":{},\"data\":data}))\n + \"\\\">\\r\\n <div class=\\\"form-feedback\\\"></div>\\r\\n</div>\\r\\n<div class=\\\"form-group mb-1\\\" id=\\\"name-container\\\" style=\\\"display: none;\\\">\\r\\n <input type=\\\"text\\\" class=\\\"form-control\\\" name=\\\"name\\\" placeholder=\\\"\"\n + alias4((helpers.lang||(depth0 && depth0.lang)||alias3).call(alias2,\"namePlaceholder\",{\"name\":\"lang\",\"hash\":{},\"data\":data}))\n + \"\\\">\\r\\n <div class=\\\"form-feedback\\\"></div>\\r\\n</div>\\r\\n<div class=\\\"attach-btn-region\\\"></div>\\r\\n\";\n},\"compiler\":[8,\">= 4.3.0\"],\"main\":function(container,depth0,helpers,partials,data) {\n var stack1, alias1=container.propertyIsEnumerable;\n\n return \"<h5 class=\\\"pt-2\\\">Resource Links</h5>\\r\\n\"\n + ((stack1 = helpers[\"if\"].call(depth0 != null ? depth0 : (container.nullContext || {}),((stack1 = (depth0 != null ? depth0.options : depth0)) != null ? stack1.hide : stack1),{\"name\":\"if\",\"hash\":{},\"fn\":container.program(1, data, 0),\"inverse\":container.program(3, data, 0),\"data\":data})) != null ? stack1 : \"\");\n},\"useData\":true});","import { ObjectHash, Radio, Validation } from 'backbone';\r\n\r\nimport { Core } from 'libs/common/core';\r\nimport { ViewModelService } from 'libs/common/backbone/services/ViewModelService';\r\n\r\nimport { SpinnerButtonComponent } from 'shared/components/spinner-button/SpinnerButtonComponent';\r\nimport { SpinnerSize, SpinnerType } from 'shared/utils';\r\nimport { StickitBehavior, BackboneValidationBehavior } from 'shared/behaviors';\r\n\r\nimport { ResourceLinkValidation } from 'apps/library-editor/utils';\r\n\r\nimport AddLinksTemplate from './AddLinks.hbs';\r\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\r\n\r\ninterface AddLinksComponentOptions extends Core.ComponentOptions {\r\n limit: number;\r\n hide?: boolean;\r\n}\r\n\r\nexport class AddLinksComponent extends Core.Component {\r\n public options: AddLinksComponentOptions;\r\n private showNameField: boolean = false;\r\n private disableBtn: boolean = true;\r\n\r\n constructor(options: AddLinksComponentOptions) {\r\n super(options);\r\n }\r\n\r\n public initialize(): void {\r\n this.model = ViewModelService.get(this.viewModelName);\r\n this.model.addValidation(ResourceLinkValidation);\r\n\r\n this.bindListeners();\r\n }\r\n\r\n public get name(): string {\r\n return 'AddLinksComponent';\r\n }\r\n\r\n public get template(): string {\r\n return AddLinksTemplate;\r\n }\r\n\r\n public get lang(): string {\r\n return 'libraryEditor.addLinks';\r\n }\r\n\r\n public get tagName(): string {\r\n return 'form';\r\n }\r\n\r\n public get bindings(): ObjectHash {\r\n return {\r\n '[name=url]': {\r\n observe: 'url',\r\n setOptions: { validate: true }\r\n },\r\n '[name=name]': {\r\n observe: 'name',\r\n setOptions: { validate: true }\r\n }\r\n };\r\n }\r\n\r\n public regions(): ObjectHash {\r\n return {\r\n attachBtn: '.attach-btn-region'\r\n };\r\n }\r\n\r\n public get behaviors(): any[] {\r\n return [\r\n {\r\n behaviorClass: StickitBehavior\r\n },\r\n {\r\n behaviorClass: BackboneValidationBehavior\r\n }\r\n ];\r\n }\r\n\r\n public get elements(): ObjectHash {\r\n return {\r\n nameField: '#name-container'\r\n };\r\n }\r\n\r\n private get viewModelName(): string {\r\n return `${this.name}:${this.cid}`;\r\n }\r\n\r\n private bindListeners(): void {\r\n this.listenTo(this.model, 'change:url', this.onChangeUrl);\r\n this.listenTo(this.model, 'change:name', this.onChangeName);\r\n this.listenTo(this.options.channelName, 'attach:link', this.onClickAttach);\r\n }\r\n\r\n private onChangeUrl(): void {\r\n if (this.showNameField && !this.model.isValid('url')) {\r\n this.getUI('nameField').hide();\r\n this.model.set('name', '');\r\n this.showNameField = false;\r\n } else if (!this.showNameField && this.model.isValid('url')) {\r\n this.getUI('nameField').show();\r\n this.showNameField = true;\r\n }\r\n }\r\n\r\n private onChangeName(): void {\r\n this.model.validate('name');\r\n this.disableBtn = !this.model.isValid();\r\n this.renderAttachButton();\r\n }\r\n\r\n private onClickAttach(): void {\r\n const link = this.model.toJSON();\r\n this.model.clear();\r\n\r\n Radio.channel(this.options.channelName)\r\n .trigger('add:link', link);\r\n\r\n this.render();\r\n }\r\n\r\n private renderAttachButton(): void {\r\n if (this.options.hide)\r\n return;\r\n\r\n this.showChildView('attachBtn', new SpinnerButtonComponent({\r\n saveEvent: 'attach:link',\r\n channelName: this.options.channelName,\r\n buttonText: LanguageService.getPhrase(this.lang, 'attach'),\r\n extraButtonClass: `btn-secondary attach`,\r\n disabled: this.disableBtn,\r\n buttonType: 'submit',\r\n spinnerOptions: {\r\n size: SpinnerSize.Medium,\r\n type: SpinnerType.Light,\r\n extraClasses: 'mx-auto'\r\n }\r\n }));\r\n }\r\n\r\n public viewOptions(): ObjectHash {\r\n return {\r\n limit: this.options.limit,\r\n hide: this.options.hide\r\n };\r\n }\r\n\r\n public onRender(): void {\r\n this.renderAttachButton();\r\n\r\n this.stickit();\r\n Validation.bind(this);\r\n }\r\n\r\n public onClose(): void {\r\n this.unstickit();\r\n Validation.unbind(this);\r\n }\r\n}","var Handlebars = require('handlebars');\nmodule.exports = (Handlebars['default'] || Handlebars).template({\"1\":function(container,depth0,helpers,partials,data) {\n var stack1, alias1=container.propertyIsEnumerable;\n\n return \"<p class=\\\"alert alert-warning col-8 mb-0\\\">\"\n + container.escapeExpression(container.lambda(((stack1 = (depth0 != null ? depth0.options : depth0)) != null ? stack1.limitText : stack1), depth0))\n + \"</p>\\r\\n\";\n},\"3\":function(container,depth0,helpers,partials,data) {\n var stack1, alias1=container.propertyIsEnumerable, alias2=container.lambda, alias3=container.escapeExpression, alias4=depth0 != null ? depth0 : (container.nullContext || {});\n\n return \"<div class=\\\"file-drop \"\n + alias3(alias2(((stack1 = ((stack1 = (depth0 != null ? depth0.options : depth0)) != null ? stack1.styles : stack1)) != null ? stack1.fileDrop : stack1), depth0))\n + \" p-2\"\n + ((stack1 = helpers[\"if\"].call(alias4,((stack1 = (depth0 != null ? depth0.options : depth0)) != null ? stack1.limitText : stack1),{\"name\":\"if\",\"hash\":{},\"fn\":container.program(4, data, 0),\"inverse\":container.noop,\"data\":data})) != null ? stack1 : \"\")\n + \"\\\">\\r\\n <button class=\\\"browse btn btn-secondary mr-2\\\">\"\n + alias3((helpers.lang||(depth0 && depth0.lang)||container.hooks.helperMissing).call(alias4,\"browse\",{\"name\":\"lang\",\"hash\":{},\"data\":data}))\n + \"</button>\\r\\n <span class=\\\"text-muted align-middle\\\">\"\n + alias3(alias2(((stack1 = (depth0 != null ? depth0.options : depth0)) != null ? stack1.alternateText : stack1), depth0))\n + \"</span>\\r\\n</div>\\r\\n\";\n},\"4\":function(container,depth0,helpers,partials,data) {\n return \" col-6 \";\n},\"compiler\":[8,\">= 4.3.0\"],\"main\":function(container,depth0,helpers,partials,data) {\n var stack1, alias1=container.propertyIsEnumerable, alias2=container.lambda, alias3=container.escapeExpression;\n\n return \"<h5>\"\n + alias3(alias2(((stack1 = (depth0 != null ? depth0.options : depth0)) != null ? stack1.title : stack1), depth0))\n + \"</h5>\\r\\n<p>\"\n + alias3(alias2(((stack1 = (depth0 != null ? depth0.options : depth0)) != null ? stack1.description : stack1), depth0))\n + \"</p>\\r\\n\"\n + ((stack1 = helpers[\"if\"].call(depth0 != null ? depth0 : (container.nullContext || {}),((stack1 = (depth0 != null ? depth0.options : depth0)) != null ? stack1.limitText : stack1),{\"name\":\"if\",\"hash\":{},\"fn\":container.program(1, data, 0),\"inverse\":container.program(3, data, 0),\"data\":data})) != null ? stack1 : \"\");\n},\"useData\":true});","import { ObjectHash } from 'backbone';\r\n\r\nimport { Core } from 'libs/common/core';\r\n\r\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\r\nimport { FileSelectBehavior } from 'shared/behaviors/file-select/FileSelectBehavior';\r\nimport { FileDropBehavior } from 'shared/behaviors/file-drop/FileDropBehavior';\r\n\r\nimport styles from './file-select.scss';\r\nimport FileSelectDropMaskTemplate from './FileSelectDropMask.hbs';\r\nimport FileSelectTemplate from './FileSelect.hbs';\r\n\r\ninterface FileSelectComponentOptions extends Core.ComponentOptions {\r\n title: string;\r\n description: string;\r\n alternateText: string;\r\n mimeType: string;\r\n channelName: string;\r\n acceptMultiple?: boolean;\r\n limitText: string;\r\n isClickViewContent?: boolean;\r\n}\r\n\r\nexport class FileSelectComponent extends Core.Component {\r\n public options: FileSelectComponentOptions;\r\n\r\n constructor(options: FileSelectComponentOptions) {\r\n super(options);\r\n }\r\n\r\n public get name(): string {\r\n return 'FileSelectComponent';\r\n }\r\n\r\n public get template(): any {\r\n return FileSelectTemplate;\r\n }\r\n\r\n public get lang(): string {\r\n return 'libraryEditor.fileSelect';\r\n }\r\n\r\n public get className(): string {\r\n let classNames = 'mt-3';\r\n\r\n if (!this.options.limitText)\r\n classNames += ' mb-2';\r\n\r\n return classNames;\r\n }\r\n\r\n public get elements(): ObjectHash {\r\n return {\r\n dropArea: '.file-drop'\r\n };\r\n }\r\n\r\n public get defaults(): ObjectHash {\r\n return {\r\n acceptMultiple: true\r\n };\r\n }\r\n\r\n public get behaviors(): any[] {\r\n return [\r\n {\r\n behaviorClass: FileSelectBehavior,\r\n buttonSelector: '.browse',\r\n channelName: this.options.channelName,\r\n acceptMultiple: this.options.acceptMultiple,\r\n mimeType: this.options.mimeType\r\n },\r\n {\r\n behaviorClass: FileDropBehavior,\r\n channelName: this.options.channelName,\r\n acceptMultiple: this.options.acceptMultiple\r\n }\r\n ];\r\n }\r\n\r\n public events(): ObjectHash {\r\n const dragLeave = `dragleave .${styles.dropMask}`;\r\n\r\n return {\r\n 'drop .file-drop': 'onDrop',\r\n 'dragover .file-drop': 'onDragOver',\r\n [dragLeave]: 'onDragLeave'\r\n };\r\n }\r\n\r\n private onDrop(): void {\r\n this.$el.removeClass(styles.dragOver);\r\n }\r\n\r\n private onDragOver(event: any): void {\r\n this.$el.addClass(styles.dragOver);\r\n\r\n event.preventDefault();\r\n }\r\n\r\n private onDragLeave(): void {\r\n this.$el.removeClass(styles.dragOver);\r\n }\r\n\r\n public viewOptions(): ObjectHash {\r\n return {\r\n ...this.options,\r\n styles,\r\n limitText: this.options.limitText,\r\n isClickViewContent: this.options.isClickViewContent\r\n };\r\n }\r\n\r\n public onRender(): void {\r\n this.getUI('dropArea').append(FileSelectDropMaskTemplate({\r\n dropMask: styles.dropMask,\r\n fileDropText: LanguageService.getPhrase(this.lang, 'drop')\r\n }));\r\n }\r\n}","var Handlebars = require('handlebars');\nmodule.exports = (Handlebars['default'] || Handlebars).template({\"compiler\":[8,\">= 4.3.0\"],\"main\":function(container,depth0,helpers,partials,data) {\n var stack1, helper, alias1=container.propertyIsEnumerable, alias2=container.escapeExpression;\n\n return \"<div class=\\\"\"\n + alias2(((helper = (helper = helpers.dropMask || (depth0 != null ? depth0.dropMask : depth0)) != null ? helper : container.hooks.helperMissing),(typeof helper === \"function\" ? helper.call(depth0 != null ? depth0 : (container.nullContext || {}),{\"name\":\"dropMask\",\"hash\":{},\"data\":data}) : helper)))\n + \"\\\">\\r\\n <h3>\"\n + alias2(container.lambda(((stack1 = (depth0 != null ? depth0.options : depth0)) != null ? stack1.fileDropText : stack1), depth0))\n + \"</h3>\\r\\n</div>\";\n},\"useData\":true});","// extracted by mini-css-extract-plugin\nmodule.exports = {\"fileDrop\":\"cv--fileDrop--l2vGK\",\"dropMask\":\"cv--dropMask--yNe5b\",\"dragOver\":\"cv--dragOver--3sZ1T\"};","var Handlebars = require('handlebars');\nmodule.exports = (Handlebars['default'] || Handlebars).template({\"1\":function(container,depth0,helpers,partials,data) {\n var stack1, alias1=container.propertyIsEnumerable, alias2=container.lambda;\n\n return \"<span class=\\\"d-inline-block align-middle mr-2 \"\n + container.escapeExpression(alias2(((stack1 = ((stack1 = (depth0 != null ? depth0.options : depth0)) != null ? stack1.styles : stack1)) != null ? stack1.svgContainer : stack1), depth0))\n + \" float-right text-success\\\">\"\n + ((stack1 = alias2(((stack1 = (depth0 != null ? depth0.options : depth0)) != null ? stack1.tickSvg : stack1), depth0)) != null ? stack1 : \"\")\n + \"</span>\\r\\n\";\n},\"3\":function(container,depth0,helpers,partials,data) {\n var stack1, alias1=container.propertyIsEnumerable;\n\n return \"<span class=\\\"d-inline-block align-middle mr-2 \"\n + container.escapeExpression(container.lambda(((stack1 = ((stack1 = (depth0 != null ? depth0.options : depth0)) != null ? stack1.styles : stack1)) != null ? stack1.svgContainer : stack1), depth0))\n + \" close float-right\\\">&times;</span>\\r\\n\";\n},\"compiler\":[8,\">= 4.3.0\"],\"main\":function(container,depth0,helpers,partials,data) {\n var stack1, helper, alias1=container.propertyIsEnumerable, alias2=container.lambda, alias3=container.escapeExpression, alias4=depth0 != null ? depth0 : (container.nullContext || {}), alias5=container.hooks.helperMissing, alias6=\"function\";\n\n return \"<span class=\\\"d-inline-block align-middle mr-2 \"\n + alias3(alias2(((stack1 = ((stack1 = (depth0 != null ? depth0.options : depth0)) != null ? stack1.styles : stack1)) != null ? stack1.svgContainer : stack1), depth0))\n + \"\\\">\"\n + ((stack1 = alias2(((stack1 = (depth0 != null ? depth0.options : depth0)) != null ? stack1.svg : stack1), depth0)) != null ? stack1 : \"\")\n + \"</span>\\r\\n<span class=\\\"align-middle\\\">\\r\\n \"\n + alias3(((helper = (helper = helpers.name || (depth0 != null ? depth0.name : depth0)) != null ? helper : alias5),(typeof helper === alias6 ? helper.call(alias4,{\"name\":\"name\",\"hash\":{},\"data\":data}) : helper)))\n + \"\\r\\n</span>\\r\\n\"\n + ((stack1 = helpers[\"if\"].call(alias4,((stack1 = (depth0 != null ? depth0.options : depth0)) != null ? stack1.finished : stack1),{\"name\":\"if\",\"hash\":{},\"fn\":container.program(1, data, 0),\"inverse\":container.program(3, data, 0),\"data\":data})) != null ? stack1 : \"\")\n + \"\\r\\n<div class=\\\"progress my-2 \"\n + alias3(alias2(((stack1 = ((stack1 = (depth0 != null ? depth0.options : depth0)) != null ? stack1.styles : stack1)) != null ? stack1.progress : stack1), depth0))\n + \" mt-2\\\">\\r\\n <div class=\\\"progress-bar bg-info\\\" style=\\\"width: \"\n + alias3(((helper = (helper = helpers.progress || (depth0 != null ? depth0.progress : depth0)) != null ? helper : alias5),(typeof helper === alias6 ? helper.call(alias4,{\"name\":\"progress\",\"hash\":{},\"data\":data}) : helper)))\n + \"%\\\" aria-valuenow=\\\"\"\n + alias3(((helper = (helper = helpers.progress || (depth0 != null ? depth0.progress : depth0)) != null ? helper : alias5),(typeof helper === alias6 ? helper.call(alias4,{\"name\":\"progress\",\"hash\":{},\"data\":data}) : helper)))\n + \"\\\" aria-valuemin=\\\"0\\\" aria-valuemax=\\\"100\\\"></div>\\r\\n</div>\";\n},\"useData\":true});","import { ObjectHash, Radio } from 'backbone';\r\nimport { Core } from 'libs/common/core';\r\nimport { SvgHelper, cvSvgLibrary } from 'libs/shared/utils/SvgHelper';\r\n\r\nimport FileUploadTemplate from './FileUpload.hbs';\r\nimport styles from './file-upload.scss';\r\n\r\nexport interface FileUploadComponentOptions extends Core.ComponentOptions {\r\n channelName: string;\r\n}\r\n\r\nexport class FileUploadComponent extends Core.Component {\r\n public options: FileUploadComponentOptions;\r\n\r\n constructor(options: FileUploadComponentOptions) {\r\n super(options);\r\n }\r\n\r\n public initialize(): void {\r\n this.listenTo(this.model, 'change:progress', this.render);\r\n }\r\n\r\n public get name(): string {\r\n return 'FileUploadComponent';\r\n }\r\n\r\n public get template(): any {\r\n return FileUploadTemplate;\r\n }\r\n\r\n public events(): ObjectHash {\r\n return {\r\n 'click .cancel-upload': 'onClickCancelUpload'\r\n };\r\n }\r\n\r\n private onClickCancelUpload(): void {\r\n const channel = Radio.channel(this.options.channelName);\r\n channel.trigger('cancel:upload', this.model.get('id'));\r\n }\r\n\r\n public viewOptions(): ObjectHash {\r\n return {\r\n styles,\r\n svg: SvgHelper.getSvg(cvSvgLibrary.Folder),\r\n tickSvg: SvgHelper.getSvg(cvSvgLibrary.Check),\r\n finished: this.model.get('progress') >= 100\r\n };\r\n }\r\n}","import * as _ from 'underscore';\r\nimport { ObjectHash } from 'backbone';\r\nimport { Core } from 'libs/common/core';\r\nimport { FileUploadComponent, FileUploadComponentOptions } from 'apps/library-editor/components/file-uploads/FileUploadComponent';\r\n\r\n\r\ninterface FileUploadsComponentCollectionOptions extends Core.ComponentCollectionOptions {\r\n channelName: string;\r\n}\r\n\r\nexport class FileUploadsComponentCollection extends Core.ComponentCollection {\r\n public options: FileUploadsComponentCollectionOptions;\r\n\r\n constructor(options: FileUploadsComponentCollectionOptions) {\r\n super(options);\r\n }\r\n\r\n public get name(): string {\r\n return 'FileUploadsComponentCollection';\r\n }\r\n\r\n public get childView(): typeof FileUploadComponent {\r\n return FileUploadComponent;\r\n }\r\n\r\n public get childViewOptions(): FileUploadComponentOptions {\r\n return {\r\n channelName: this.options.channelName\r\n };\r\n }\r\n}","// extracted by mini-css-extract-plugin\nmodule.exports = {\"svgContainer\":\"cv--svgContainer--3LHs_\",\"progress\":\"cv--progress--30D9s\"};","var Handlebars = require('handlebars');\nmodule.exports = (Handlebars['default'] || Handlebars).template({\"compiler\":[8,\">= 4.3.0\"],\"main\":function(container,depth0,helpers,partials,data) {\n var alias1=container.propertyIsEnumerable;\n\n return \"<form>\\r\\n <div class=\\\"form-group\\\">\\r\\n <label for=\\\"language\\\">\"\n + container.escapeExpression((helpers.lang||(depth0 && depth0.lang)||container.hooks.helperMissing).call(depth0 != null ? depth0 : (container.nullContext || {}),\"label\",{\"name\":\"lang\",\"hash\":{},\"data\":data}))\n + \"</label>\\r\\n <div class=\\\"typahead-region\\\"></div>\\r\\n </div>\\r\\n</form>\";\n},\"useData\":true});","import * as _ from 'underscore';\r\nimport { ObjectHash } from 'backbone';\r\nimport { Core } from 'libs/common/core';\r\nimport { ViewModelService } from 'libs/common/backbone/services/ViewModelService';\r\n\r\nimport { PopupBehavior, BackboneValidationBehavior } from 'shared/behaviors';\r\nimport { SearchTypeaheadComponent } from 'shared/components/typeahead-input/SearchTypeaheadComponent';\r\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\r\nimport { SubtitleLanguageValidation } from 'shared/utils';\r\n\r\nimport { LangugageSelectTypeaheadHelper } from 'apps/library-editor/components/language-select/LanguageSelectTypeaheadHelper';\r\n\r\nimport LanguageSelectTemplate from './LanguageSelect.hbs';\r\n\r\nexport interface LanguageSelectComponentOptions extends Core.ComponentOptions {\r\n defaultLanguage: { code: string, name: string };\r\n promise: JQueryDeferred<any>;\r\n}\r\n\r\nexport class LanguageSelectComponent extends Core.Component {\r\n public options: LanguageSelectComponentOptions;\r\n\r\n constructor(options: LanguageSelectComponentOptions) {\r\n super(options);\r\n }\r\n\r\n public initialize(options: LanguageSelectComponentOptions): void {\r\n this.model = ViewModelService.get('subtitle:language', options.defaultLanguage);\r\n this.model.addValidation(SubtitleLanguageValidation);\r\n\r\n this.listenTo(this.channelName, 'select:language', this.onLanguageSelected);\r\n }\r\n\r\n public get template(): any {\r\n return LanguageSelectTemplate;\r\n }\r\n\r\n public get name(): string {\r\n return 'LanguageSelectComponent';\r\n }\r\n\r\n public get lang(): string {\r\n return 'libraryEditor.languageSelect';\r\n }\r\n\r\n public events(): ObjectHash {\r\n return {\r\n 'click .submit': 'onClickSubmit',\r\n 'submit': 'onClickSubmit'\r\n };\r\n }\r\n\r\n public get behaviors(): any[] {\r\n return [\r\n {\r\n behaviorClass: PopupBehavior,\r\n title: LanguageService.getPhrase(this.lang, 'heading'),\r\n buttons: [{\r\n text: LanguageService.getPhrase(this.lang, 'submit'), type: 'submit', className: 'btn btn-primary submit'\r\n }]\r\n },\r\n {\r\n behaviorClass: BackboneValidationBehavior\r\n }\r\n ];\r\n }\r\n\r\n public regions(): ObjectHash {\r\n return {\r\n typeahead: '.typahead-region'\r\n };\r\n }\r\n\r\n public get channelName(): string {\r\n return `${this.name}${this.cid}`;\r\n }\r\n\r\n private getTypeaheadConfigs(): any {\r\n const typeaheadConfig = LangugageSelectTypeaheadHelper.getTypeaheadConfig();\r\n\r\n return [\r\n { name: 'languages', typeaheadConfig }\r\n ];\r\n }\r\n\r\n private renderTypeahead(): void {\r\n this.showChildView('typeahead', new SearchTypeaheadComponent({\r\n model: this.model,\r\n parentChannelName: this.channelName,\r\n inputId: 'language',\r\n selectEvent: 'select:language',\r\n typeaheadConfigs: this.getTypeaheadConfigs()\r\n }));\r\n }\r\n\r\n private onLanguageSelected(selected: ObjectHash): void {\r\n this.model.set('code', selected.key);\r\n }\r\n\r\n private onClickSubmit(): void {\r\n this.model.validate();\r\n\r\n if (!this.model.isValid())\r\n return;\r\n\r\n this.options.promise.resolve(this.model.toJSON());\r\n this.triggerMethod('hide');\r\n }\r\n\r\n public onBeforeDestroy(): void {\r\n if (this.options.promise.state() === 'pending')\r\n this.options.promise.reject();\r\n }\r\n\r\n public onRender(): void {\r\n this.renderTypeahead();\r\n }\r\n}","import * as _ from 'underscore';\r\nimport { ObjectHash } from 'backbone';\r\n\r\nimport { TypeaheadDataSource, InstantSearchBloodhound } from 'libs/shared/apps/search/interfaces';\r\n\r\nimport * as Templates from 'shared/utils/search/raw-search-templates';\r\nimport { Tag } from 'shared/models/Tag';\r\n\r\nexport const LangugageSelectTypeaheadHelper = {\r\n\r\n handleQuery(dataSource?: TypeaheadDataSource<Tag>, options?: ObjectHash): TypeaheadDataSource<Tag> {\r\n return (query: string, syncResults: any, asyncResults: any) => {\r\n\r\n const matches: ObjectHash[] = [];\r\n\r\n if (!query) {\r\n syncResults();\r\n return;\r\n }\r\n\r\n const lanByStr = CVLanguages.getEnglishNameContains(query);\r\n\r\n // do not show already selected languages\r\n _.each(lanByStr, (ls, key) => {\r\n matches.push({ key, name: ls.englishName });\r\n });\r\n\r\n return syncResults(matches);\r\n };\r\n },\r\n\r\n getTypeaheadConfig(): any {\r\n return (source: InstantSearchBloodhound<Tag>, index: number) => ({\r\n name: 'languages',\r\n source: LangugageSelectTypeaheadHelper.handleQuery(),\r\n limit: 5,\r\n display: (d: ObjectHash) => d.name,\r\n templates: {\r\n suggestion: Templates.ResultSuggestion,\r\n pending: Templates.Loading,\r\n notFound: Templates.NotFound,\r\n }\r\n });\r\n }\r\n};","var Handlebars = require('handlebars');\nmodule.exports = (Handlebars['default'] || Handlebars).template({\"1\":function(container,depth0,helpers,partials,data) {\n var stack1, alias1=container.propertyIsEnumerable, alias2=container.lambda, alias3=container.escapeExpression;\n\n return \"<a class=\\\"float-right \"\n + alias3(alias2(((stack1 = ((stack1 = (depth0 != null ? depth0.options : depth0)) != null ? stack1.styles : stack1)) != null ? stack1.svgContainer : stack1), depth0))\n + \" \"\n + alias3(alias2(((stack1 = ((stack1 = (depth0 != null ? depth0.options : depth0)) != null ? stack1.styles : stack1)) != null ? stack1.actionSvg : stack1), depth0))\n + \" text-muted delete\\\">\"\n + ((stack1 = alias2(((stack1 = (depth0 != null ? depth0.options : depth0)) != null ? stack1.trashSvg : stack1), depth0)) != null ? stack1 : \"\")\n + \"</a>\\r\\n\";\n},\"compiler\":[8,\">= 4.3.0\"],\"main\":function(container,depth0,helpers,partials,data) {\n var stack1, helper, alias1=container.propertyIsEnumerable, alias2=container.lambda, alias3=container.escapeExpression, alias4=depth0 != null ? depth0 : (container.nullContext || {});\n\n return \"<span class=\\\"d-inline-block align-middle mr-2 \"\n + alias3(alias2(((stack1 = ((stack1 = (depth0 != null ? depth0.options : depth0)) != null ? stack1.styles : stack1)) != null ? stack1.svgContainer : stack1), depth0))\n + \"\\\">\"\n + ((stack1 = alias2(((stack1 = (depth0 != null ? depth0.options : depth0)) != null ? stack1.svg : stack1), depth0)) != null ? stack1 : \"\")\n + \"</span>\\r\\n<a href=\\\"\"\n + alias3(((helper = (helper = helpers.url || (depth0 != null ? depth0.url : depth0)) != null ? helper : container.hooks.helperMissing),(typeof helper === \"function\" ? helper.call(alias4,{\"name\":\"url\",\"hash\":{},\"data\":data}) : helper)))\n + \"?name=\"\n + alias3(alias2(((stack1 = (depth0 != null ? depth0.options : depth0)) != null ? stack1.name : stack1), depth0))\n + \"\\\" class=\\\"align-middle\\\">\\r\\n \"\n + alias3(alias2(((stack1 = (depth0 != null ? depth0.options : depth0)) != null ? stack1.name : stack1), depth0))\n + \"\\r\\n</a>\\r\\n\"\n + ((stack1 = helpers.unless.call(alias4,((stack1 = (depth0 != null ? depth0.options : depth0)) != null ? stack1.isClickViewContent : stack1),{\"name\":\"unless\",\"hash\":{},\"fn\":container.program(1, data, 0),\"inverse\":container.noop,\"data\":data})) != null ? stack1 : \"\");\n},\"useData\":true});","import { Core } from 'libs/common/core';\r\nimport { SvgHelper, cvSvgLibrary } from 'libs/shared/utils/SvgHelper';\r\nimport { Radio } from 'backbone';\r\nimport { ObjectHash } from 'backbone';\r\n\r\nimport { DialogHelper } from 'shared/utils';\r\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\r\n\r\nimport { VideoDetailsHelper } from 'apps/library-editor/utils/VideoDetailsHelper';\r\n\r\nimport SubtitleTemplate from './Subtitle.hbs';\r\nimport styles from './subtitle.scss';\r\n\r\nexport interface SubtitleItemComponentOptions extends Core.ComponentOptions {\r\n channelName: string;\r\n isClickViewContent?: boolean;\r\n}\r\n\r\nexport class SubtitleItemComponent extends Core.Component {\r\n public options: SubtitleItemComponentOptions;\r\n\r\n constructor(options: SubtitleItemComponentOptions) {\r\n super(options);\r\n }\r\n\r\n public get name(): string {\r\n return 'SubtitleItemComponent';\r\n }\r\n\r\n public get template(): any {\r\n return SubtitleTemplate;\r\n }\r\n\r\n public get lang(): string {\r\n return 'libraryEditor.videoSubtitles';\r\n }\r\n\r\n public get className(): string {\r\n return 'mb-2';\r\n }\r\n\r\n public events(): ObjectHash {\r\n return {\r\n 'click .delete': 'onClickDelete'\r\n };\r\n }\r\n\r\n private getEnglishName(): string {\r\n const language = this.model.get('language');\r\n\r\n const differentNames = this.model.collection.filter(subtitle =>\r\n subtitle.get('language') !== language\r\n );\r\n\r\n let name: string;\r\n\r\n if (differentNames.length > 0)\r\n name = CVLanguages.getFullEnglishName(language);\r\n else\r\n name = CVLanguages.getEnglishName(language);\r\n\r\n return this.model.get('metadata')?.autoGenerated\r\n ? LanguageService.getPhrase(this.lang, 'autoGenerated', { name })\r\n : name;\r\n }\r\n\r\n private onClickDelete(): void {\r\n if (this.options.isClickViewContent)\r\n return;\r\n\r\n const dialogHelper = new DialogHelper({\r\n title: LanguageService.getPhrase(this.lang, 'removeHeading'),\r\n text: LanguageService.getPhrase(this.lang, 'removeBody', {\r\n language: this.getEnglishName()\r\n }),\r\n buttons: [{\r\n text: LanguageService.getPhrase(this.lang, 'remove'),\r\n className: 'btn btn-danger',\r\n success: true,\r\n }, {\r\n text: LanguageService.getPhrase(this.lang, 'cancel'),\r\n className: 'btn btn-secondary',\r\n close: true,\r\n }],\r\n channelName: `${this.name}${this.cid}`\r\n });\r\n\r\n dialogHelper.render().done(() => {\r\n const channel = Radio.channel(this.options.channelName);\r\n channel.trigger('delete:subtitle', this.model.get('id'));\r\n });\r\n }\r\n\r\n public viewOptions(): ObjectHash {\r\n return {\r\n styles,\r\n svg: VideoDetailsHelper.mapTypeToSvg('subtitle'),\r\n trashSvg: SvgHelper.getSvg(cvSvgLibrary.Delete),\r\n name: this.getEnglishName(),\r\n isClickViewContent: this.options.isClickViewContent\r\n };\r\n }\r\n}","var Handlebars = require('handlebars');\nmodule.exports = (Handlebars['default'] || Handlebars).template({\"1\":function(container,depth0,helpers,partials,data) {\n var stack1, alias1=container.propertyIsEnumerable;\n\n return container.escapeExpression(container.lambda(((stack1 = (depth0 != null ? depth0.options : depth0)) != null ? stack1.emptyStateText : stack1), depth0));\n},\"compiler\":[8,\">= 4.3.0\"],\"main\":function(container,depth0,helpers,partials,data) {\n var stack1, alias1=container.propertyIsEnumerable;\n\n return \"<h5>\"\n + container.escapeExpression(container.lambda(((stack1 = (depth0 != null ? depth0.options : depth0)) != null ? stack1.headerText : stack1), depth0))\n + \"</h5>\\r\\n\"\n + ((stack1 = helpers[\"if\"].call(depth0 != null ? depth0 : (container.nullContext || {}),((stack1 = (depth0 != null ? depth0.options : depth0)) != null ? stack1.emptyStateText : stack1),{\"name\":\"if\",\"hash\":{},\"fn\":container.program(1, data, 0),\"inverse\":container.noop,\"data\":data})) != null ? stack1 : \"\")\n + \"\\r\\n<div class=\\\"subtitles-list-region\\\"></div>\";\n},\"useData\":true});","import * as _ from 'underscore';\r\nimport { ObjectHash } from 'backbone';\r\nimport { Core } from 'libs/common/core';\r\n\r\nimport { SubtitleItemComponentOptions, SubtitleItemComponent } from './SubtitleItemComponent';\r\nimport VideoSubtitlesTemplate from './VideoSubtitles.hbs';\r\n\r\ninterface VideoSubtitlesComponentCollectionOptions extends Core.ComponentCollectionOptions {\r\n channelName: string;\r\n isClickViewContent?: boolean;\r\n headerText?: string;\r\n emptyStateText?: string;\r\n}\r\n\r\nexport class VideoSubtitlesComponent extends Core.Component {\r\n public options: VideoSubtitlesComponentCollectionOptions;\r\n\r\n constructor(options: VideoSubtitlesComponentCollectionOptions) {\r\n super(options);\r\n }\r\n\r\n public get name(): string {\r\n return 'VideoSubtitlesComponent';\r\n }\r\n\r\n public get template(): string {\r\n return VideoSubtitlesTemplate;\r\n }\r\n\r\n public regions(): ObjectHash {\r\n return {\r\n subtitles: {\r\n el: '.subtitles-list-region',\r\n replaceElement: true\r\n }\r\n };\r\n }\r\n\r\n public viewOptions(): ObjectHash {\r\n return {\r\n headerText: this.options.headerText,\r\n emptyStateText: this.options.emptyStateText\r\n };\r\n }\r\n\r\n public onRender(): void {\r\n this.showChildView('subtitles', new VideoSubtitlesComponentCollection({\r\n collection: this.collection,\r\n channelName: this.options.channelName,\r\n isClickViewContent: this.options.isClickViewContent\r\n }));\r\n }\r\n}\r\n\r\nexport class VideoSubtitlesComponentCollection extends Core.ComponentCollection {\r\n public options: VideoSubtitlesComponentCollectionOptions;\r\n\r\n constructor(options: VideoSubtitlesComponentCollectionOptions) {\r\n super(options);\r\n }\r\n\r\n public get name(): string {\r\n return 'VideoSubtitlesComponentCollection';\r\n }\r\n\r\n public get childView(): typeof SubtitleItemComponent {\r\n return SubtitleItemComponent;\r\n }\r\n\r\n public get childViewOptions(): SubtitleItemComponentOptions {\r\n return {\r\n channelName: this.options.channelName,\r\n isClickViewContent: this.options.isClickViewContent\r\n };\r\n }\r\n}","// extracted by mini-css-extract-plugin\nmodule.exports = {\"svgContainer\":\"cv--svgContainer--1VUhp\",\"actionSvg\":\"cv--actionSvg--3cODR\"};","var Handlebars = require('handlebars');\nmodule.exports = (Handlebars['default'] || Handlebars).template({\"1\":function(container,depth0,helpers,partials,data) {\n return \"col-5 py-3\";\n},\"compiler\":[8,\">= 4.3.0\"],\"main\":function(container,depth0,helpers,partials,data) {\n var stack1, alias1=container.propertyIsEnumerable, alias2=depth0 != null ? depth0 : (container.nullContext || {});\n\n return \"<div class=\\\"tab-region\\\"></div>\\r\\n\\r\\n<div class=\\\"row pb-2\\\">\\r\\n <div class=\\\"\"\n + ((stack1 = helpers[\"if\"].call(alias2,((stack1 = (depth0 != null ? depth0.options : depth0)) != null ? stack1.isClickViewContent : stack1),{\"name\":\"if\",\"hash\":{},\"fn\":container.program(1, data, 0),\"inverse\":container.noop,\"data\":data})) != null ? stack1 : \"\")\n + \"\\\">\\r\\n <div class=\\\"clickview-subtitles-list-region\\\"></div>\\r\\n </div>\\r\\n <div class=\\\"col-7\\\">\\r\\n <div class=\\\"subtitles-upload-region\\\"></div>\\r\\n <div class=\\\"subtitles-upload-list-region p-0 col-8\\\"></div>\\r\\n <div class=\\\"customer-subtitles-list-region p-0 col-8\\\"></div>\\r\\n </div>\\r\\n</div>\\r\\n\\r\\n<div class=\\\"row border-top pt-1\\\">\\r\\n <div class=\\\"\"\n + ((stack1 = helpers[\"if\"].call(alias2,((stack1 = (depth0 != null ? depth0.options : depth0)) != null ? stack1.isClickViewContent : stack1),{\"name\":\"if\",\"hash\":{},\"fn\":container.program(1, data, 0),\"inverse\":container.noop,\"data\":data})) != null ? stack1 : \"\")\n + \"\\\">\\r\\n <div class=\\\"clickview-resources-list-region\\\"></div>\\r\\n </div>\\r\\n <div class=\\\"col-7\\\">\\r\\n <div class=\\\"resources-upload-region\\\"></div>\\r\\n <div class=\\\"resources-upload-list-region p-0 col-8\\\"></div>\\r\\n <div class=\\\"customer-resources-list-region p-0 col-8\\\"></div>\\r\\n </div>\\r\\n</div>\\r\\n\\r\\n<div class=\\\"row border-top pt-3\\\">\\r\\n <div class=\\\"\"\n + ((stack1 = helpers[\"if\"].call(alias2,((stack1 = (depth0 != null ? depth0.options : depth0)) != null ? stack1.isClickViewContent : stack1),{\"name\":\"if\",\"hash\":{},\"fn\":container.program(1, data, 0),\"inverse\":container.noop,\"data\":data})) != null ? stack1 : \"\")\n + \"\\\">\\r\\n <div class=\\\"clickview-link-list-region\\\"></div>\\r\\n </div>\\r\\n <div class=\\\"col-7\\\">\\r\\n <div class=\\\"add-links-region mb-2\\\"></div>\\r\\n <div class=\\\"customer-link-list-region p-0 col-8\\\"></div>\\r\\n </div>\\r\\n</div>\";\n},\"useData\":true});","import * as _ from 'underscore';\r\nimport { ObjectHash } from 'backbone';\r\nimport { Radio } from 'backbone';\r\n\r\nimport { Core } from 'libs/common/core';\r\nimport { InstanceManager } from 'libs/common/backbone/services/InstanceManager';\r\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\r\nimport { CommonChannels } from 'libs/common/backbone/constants/CommonChannels';\r\nimport { DataServiceErrorType } from 'libs/common/backbone/enums/DataServiceErrorType';\r\nimport { DataServiceError } from 'libs/common/backbone/interfaces';\r\n\r\nimport { SubtitleUploadService, LearningResourceUploadService } from 'libs/shared/apps/upload/services/UploadService';\r\nimport { UploadEventNames } from 'libs/shared/apps/upload/constants/UploadConstants';\r\nimport { FileExtensionHelper, FileExtensions } from 'libs/shared/apps/upload/utils/FileExtensionsHelper';\r\n\r\nimport { DataPrefixes, DataServices, DataChannels, ServiceChannels } from 'shared/constants';\r\nimport { PermissionsHelper, TabHelper, RadioChannelHelper } from 'shared/utils';\r\nimport { Video } from 'shared/models/Video';\r\nimport { Resource } from 'shared/models/Resource';\r\nimport { Subtitle } from 'shared/models/Subtitle';\r\nimport { User } from 'shared/models/User';\r\nimport { Link } from 'shared/models/Link';\r\nimport { PartialLoading, InteractionType } from 'shared/enums';\r\nimport { LockLayoutFileDropBehavior } from 'shared/behaviors';\r\nimport { UserDataServiceHelper } from 'shared/services/UserDataService';\r\n\r\nimport { VideoDataService } from 'apps/library-editor/services/VideoDataService';\r\nimport { ChapterDataService } from 'apps/library-editor/services/ChapterDataService';\r\nimport { ResourceDataService } from 'apps/library-editor/services/ResourceDataService';\r\nimport { SubtitleDataService } from 'apps/library-editor/services/SubtitleDataService';\r\nimport { LinkDataService } from 'apps/library-editor/services/LinkDataService';\r\n\r\nimport { FileSelectComponent } from 'apps/library-editor/components/file-select/FileSelectComponent';\r\nimport { VideoResourcesComponentCollection } from 'apps/library-editor/components/video-resources/VideoResourcesComponent';\r\nimport { ConcatenateRequestComponent } from 'apps/library-editor/components/concatenate-request/ConcatenateRequestComponent';\r\nimport { FileUploadsComponentCollection } from 'apps/library-editor/components/file-uploads/FileUploadsComponentCollection';\r\nimport { LanguageSelectComponent } from 'apps/library-editor/components/language-select/LanguageSelectComponent';\r\nimport { EditVideoTabsComponent } from 'apps/library-editor/components/edit-video-tabs/EditVideoTabsComponent';\r\nimport { VideoSubtitlesComponent } from 'apps/library-editor/components/video-subtitles/VideoSubtitlesComponent';\r\nimport { VideoResourcesComponent } from 'apps/library-editor/components/video-resources/VideoResourcesComponent';\r\nimport { AddLinksComponent } from 'apps/library-editor/components/add-links/AddLinksComponent';\r\nimport { VideoLinksComponent } from 'apps/library-editor/components/edit-links/VideoLinksComponent';\r\n\r\nimport { ForbiddenVideoError, VideoNotFoundError, TooManySubtitlesError, TooManyResourcesError } from 'apps/library-editor/errors';\r\nimport { ChapterConcatenateRequest } from 'apps/library-editor/models';\r\nimport { LibraryEditorActions } from 'apps/library-editor/constants';\r\nimport { ObjectOwnerType, MediaConcatenateStatus } from 'apps/library-editor/enums';\r\nimport { UserAction, LocationContext, EntityType } from 'libs/analytics/interfaces';\r\nimport { AnalyticsHelper } from 'libs/analytics/AnalyticsHelper';\r\n\r\nimport EditResourcesTemplate from './EditResources.hbs';\r\n\r\nconst SUBTITLE_LIMIT = 5;\r\nconst RESOURCE_LIMIT = 25;\r\nconst LINK_LIMIT = 25;\r\n\r\ninterface EditResourcesViewOptions extends Core.ViewOptions<Video> {\r\n videoId: string;\r\n}\r\n\r\nexport class EditResourcesView extends Core.View<Video> {\r\n public options: EditResourcesViewOptions;\r\n\r\n private videoDataService: VideoDataService;\r\n private subtitleUploadService: SubtitleUploadService;\r\n private resourceUploadService: LearningResourceUploadService;\r\n private chapterDataService: ChapterDataService;\r\n private linkDataService: LinkDataService;\r\n private resourceDataService: ResourceDataService;\r\n private subtitleDataService: SubtitleDataService;\r\n\r\n private hasPhysicalChapters: Core.Model;\r\n private concatenateRequest: ChapterConcatenateRequest;\r\n private interactionType: InteractionType;\r\n private currentUser: User;\r\n\r\n private getConcatenateRequestSent: boolean;\r\n private concatenateRequestNotFound: boolean;\r\n private isClickViewContent: boolean;\r\n\r\n private resourceUploads: any[];\r\n private resourceUploadCount: number;\r\n\r\n constructor(options: EditResourcesViewOptions) {\r\n super(options);\r\n }\r\n\r\n public initialize(): void {\r\n this.initializeUploadServices();\r\n this.bindDataListeners();\r\n this.bindViewListeners();\r\n this.bindFileSelectListeners();\r\n TabHelper.initBackButton();\r\n\r\n this.chapterDataService = InstanceManager.getInstance(DataServices.Chapter, this);\r\n this.videoDataService = InstanceManager.getInstance(DataServices.Video, this);\r\n this.linkDataService = InstanceManager.getInstance(DataServices.Link, this);\r\n this.resourceDataService = InstanceManager.getInstance(DataServices.Resource, this);\r\n this.subtitleDataService = InstanceManager.getInstance(DataServices.Subtitle, this);\r\n\r\n this.resourceUploads = [];\r\n this.resourceUploadCount = 0;\r\n }\r\n\r\n public get name(): string {\r\n return 'EditResourcesView';\r\n }\r\n\r\n public get lang(): string {\r\n return 'libraryEditor.editResources';\r\n }\r\n\r\n public get title(): string {\r\n return this.model && this.model.get('name') || 'Edit Resources';\r\n }\r\n\r\n public get template(): any {\r\n return EditResourcesTemplate;\r\n }\r\n\r\n public get props(): string[] {\r\n return ['videoDataService'];\r\n }\r\n\r\n public get className(): string {\r\n return 'bg-white p-3';\r\n }\r\n\r\n public get channelName(): string {\r\n return RadioChannelHelper.generateUniqueChannelName(this);\r\n }\r\n\r\n public get behaviors(): any[] {\r\n return [\r\n {\r\n behaviorClass: LockLayoutFileDropBehavior\r\n }\r\n ];\r\n }\r\n\r\n public get requiredResources(): Core.RequiredResourceHash {\r\n return {\r\n currentUser: UserDataServiceHelper.currentUser\r\n };\r\n }\r\n\r\n private initializeUploadServices(): void {\r\n this.resourceUploadService = new LearningResourceUploadService();\r\n this.listenTo(\r\n ServiceChannels.RESOURCE_UPLOAD, UploadEventNames.UPLOAD_COMPLETE, this.onResourceUploadComplete\r\n );\r\n\r\n this.subtitleUploadService = new SubtitleUploadService();\r\n this.listenTo(\r\n ServiceChannels.SUBTITLE_UPLOAD, UploadEventNames.UPLOAD_COMPLETE, this.onSubtitleUploadComplete\r\n );\r\n }\r\n\r\n private bindDataListeners(): void {\r\n this.listenTo(DataChannels.VIDEO, `${DataPrefixes.VIDEOS}:${this.options.videoId}:sync`, this.render);\r\n this.listenTo(DataChannels.VIDEO, `${DataPrefixes.VIDEOS}:${this.options.videoId}:error`, this.onVideoDataError);\r\n\r\n this.listenTo(DataChannels.VIDEO,\r\n `${DataPrefixes.VIDEO_HAS_PHYSICAL_CHAPTERS}:${this.options.videoId}:sync`, this.render);\r\n\r\n this.listenTo(DataChannels.CHAPTER,\r\n `${DataPrefixes.CONCATENATE_STATUS}:${this.options.videoId}:error`, this.onConcatenateDataError);\r\n }\r\n\r\n private bindViewListeners(): void {\r\n this.listenTo(this.channelName, 'add:link', this.onAddLink);\r\n this.listenTo(this.channelName, 'delete:subtitle', this.onDeleteSubtitle);\r\n this.listenTo(this.channelName, 'delete:resource', this.onDeleteResource);\r\n this.listenTo(this.channelName, 'delete:link', this.onDeleteLink);\r\n this.listenTo(this.channelName, 'cancel:upload', this.onCancelUpload);\r\n this.listenTo(this.channelName, LibraryEditorActions.MergeChapters, this.onMergeChapters);\r\n }\r\n\r\n private bindFileSelectListeners(): void {\r\n this.listenTo(this.getSubtitleSelectChannelName(), UploadEventNames.FILES_SELECTED, this.onSubtitleFilesAdded);\r\n\r\n this.listenTo(this.getResourceSelectChannelName(), UploadEventNames.FILES_SELECTED, this.onResourceFilesAdded);\r\n }\r\n\r\n private getSubtitleSelectChannelName(): string {\r\n return `${this.name}${this.cid}subtitles`;\r\n }\r\n\r\n private getResourceSelectChannelName(): string {\r\n return `${this.name}${this.cid}resources`;\r\n }\r\n\r\n private onVideoDataError(error: DataServiceError): void {\r\n switch (error.type) {\r\n case DataServiceErrorType.NotFound:\r\n Core.ErrorHelper.throw(new VideoNotFoundError());\r\n break;\r\n case DataServiceErrorType.Forbidden:\r\n Core.ErrorHelper.throw(new ForbiddenVideoError());\r\n break;\r\n }\r\n }\r\n\r\n private onConcatenateDataError(error: DataServiceError): void {\r\n if (error.type !== DataServiceErrorType.NotFound)\r\n return;\r\n\r\n this.concatenateRequestNotFound = true;\r\n\r\n this.render();\r\n }\r\n\r\n private onSubtitleFilesAdded(files: File[], type?: InteractionType): void {\r\n if (files.length > (SUBTITLE_LIMIT - this.model.subtitles.length )) {\r\n Core.ErrorHelper.throw(new TooManySubtitlesError(SUBTITLE_LIMIT));\r\n return;\r\n }\r\n\r\n if (type)\r\n this.interactionType = type;\r\n\r\n this.subtitleUploadService.addFiles(files);\r\n }\r\n\r\n private onResourceFilesAdded(files: File[], type?: InteractionType): void {\r\n if (files.length > (RESOURCE_LIMIT - this.model.resources.length )) {\r\n Core.ErrorHelper.throw(new TooManyResourcesError(RESOURCE_LIMIT));\r\n return;\r\n }\r\n\r\n this.resourceUploadCount += files.length;\r\n\r\n if (type)\r\n this.interactionType = type;\r\n\r\n this.resourceUploadService.addFiles(files);\r\n }\r\n\r\n private onAddLink(link: ObjectHash): void {\r\n if (this.model.links.length === LINK_LIMIT)\r\n return;\r\n\r\n // If they are about to reach the limit, immediately hide the link form.\r\n if (this.model.links.length + 1 === LINK_LIMIT)\r\n this.renderAddLinks(true);\r\n\r\n this.linkDataService.addLink(this.model.get('id'), link, (newLink: Link) => {\r\n this.model.links.add(newLink);\r\n this.render();\r\n });\r\n }\r\n\r\n public regions(): ObjectHash {\r\n return {\r\n tabs: {\r\n el: '.tab-region',\r\n partialLoading: PartialLoading.EditVideoTabs\r\n },\r\n\r\n subtitlesUpload: {\r\n el: '.subtitles-upload-region',\r\n partialLoading: PartialLoading.EditVideoUploadArea\r\n },\r\n subtitlesUploadList: '.subtitles-upload-list-region',\r\n customerSubtitlesList: '.customer-subtitles-list-region',\r\n clickViewSubtitlesList: '.clickview-subtitles-list-region',\r\n\r\n resourcesUpload: {\r\n el: '.resources-upload-region',\r\n partialLoading: PartialLoading.EditVideoUploadArea\r\n },\r\n resourcesUploadList: '.resources-upload-list-region',\r\n customerResourcesList: '.customer-resources-list-region',\r\n clickViewResourcesList: '.clickview-resources-list-region',\r\n\r\n addLinks: {\r\n el: '.add-links-region',\r\n partialLoading: PartialLoading.EditVideoUploadArea\r\n },\r\n customerLinkList: '.customer-link-list-region',\r\n clickViewLinkList: '.clickview-link-list-region'\r\n };\r\n }\r\n\r\n /**\r\n * We call this function in onRender to not start polling if we don't have a concatenateRequest\r\n * or if the concatenate request isn't currently concatenating. \r\n */\r\n private startPollingConcatenation(): void {\r\n if (!this.concatenateRequest)\r\n return;\r\n\r\n const ignoreStatuses = [ MediaConcatenateStatus.SingleFile, MediaConcatenateStatus.ConcatenationFailed ];\r\n if (_.contains(ignoreStatuses, this.concatenateRequest.get('status')))\r\n return;\r\n\r\n this.pollConcatenation();\r\n }\r\n\r\n /**\r\n * This function exists seperately from startPollingConcatenation() so that\r\n * we can force the polling to start when this.concatenateRequest is null\r\n * \r\n * This is done when the merge chapter button is clicked to request concatenation\r\n */\r\n private pollConcatenation(): void {\r\n if (this.isDestroyed())\r\n return;\r\n\r\n this.chapterDataService.getConcatenateRequest(this.options.videoId, (data: ChapterConcatenateRequest) => {\r\n this.concatenateRequest = data;\r\n\r\n if (this.concatenateRequest.get('status') !== MediaConcatenateStatus.SingleFile) {\r\n setTimeout(() => this.pollConcatenation(), 5000);\r\n this.renderConcatenationRequest();\r\n return;\r\n }\r\n\r\n this.videoDataService.clearPhysicialChaptersCache();\r\n this.videoDataService.hasPhysicalChapters(this.options.videoId, (model: Core.Model) => {\r\n this.hasPhysicalChapters = model;\r\n this.renderSubtitleFileSelect();\r\n });\r\n });\r\n }\r\n\r\n private onDeleteResource(resourceId: string): void {\r\n this.resourceDataService.deleteResource(this.options.videoId, resourceId, () => {\r\n this.logDeleteAction(EntityType.Resource, resourceId);\r\n this.render();\r\n });\r\n }\r\n\r\n private onDeleteSubtitle(subtitleId: string): void {\r\n this.subtitleDataService.deleteSubtitle(this.options.videoId, subtitleId, () => {\r\n this.logDeleteAction(EntityType.Subtitle, subtitleId);\r\n this.render();\r\n });\r\n }\r\n\r\n private onDeleteLink(linkId: string): void {\r\n this.linkDataService.deleteLink(this.options.videoId, linkId, () => {\r\n this.logDeleteAction(EntityType.Link, linkId);\r\n this.render();\r\n });\r\n }\r\n\r\n private onCancelUpload(uploadId: string): void {\r\n /**\r\n * We don't know if it was a subtitle upload or resource upload\r\n * that was cancelled. But we do know that the uploadId will be unique\r\n * so we jsut blindly cancel it in both services.\r\n *\r\n * Bit hacky... sue me - Sha\r\n */\r\n this.resourceUploadService.cancelUpload(uploadId);\r\n this.subtitleUploadService.cancelUpload(uploadId);\r\n }\r\n\r\n private onResourceUploadComplete(upload: Core.Model): void {\r\n const uploadData = upload.toJSON();\r\n\r\n const data = {\r\n fileId: uploadData.fileInfo.id,\r\n uploadId: uploadData.file.cvUpload.uploadId,\r\n name: uploadData.fileInfo.name,\r\n type: FileExtensionHelper.getResourceType(uploadData.fileInfo.extension),\r\n extension: uploadData.fileInfo.extension,\r\n fileSize: uploadData.fileInfo.size,\r\n fileUrl: uploadData.fileInfo.url,\r\n ingestUrl: uploadData.file.cvUpload.ingestUrl,\r\n metaData: {\r\n type: FileExtensionHelper.getResourceType(uploadData.fileInfo.extension)\r\n },\r\n contribution: false,\r\n url: uploadData.fileInfo.url,\r\n fileIdType: 2 // FileApiv1\r\n };\r\n\r\n this.resourceUploads.push(data);\r\n this.resourceUploadCount--;\r\n\r\n if (this.resourceUploadCount > 0) return;\r\n\r\n // This is only run once all resources have been uploaded.\r\n this.resourceDataService.addResource(this.options.videoId, this.resourceUploads, (resource: Resource) => {\r\n this.model.resources.add(resource);\r\n\r\n const uploadedResource = this.resourceUploadService\r\n .getCollection()\r\n .filter((uploaded: any) => uploaded.get('fileInfo').id === resource.get('fileId'));\r\n\r\n this.resourceUploadService.getCollection().remove(uploadedResource);\r\n\r\n this.logUploadAction(resource);\r\n this.render();\r\n });\r\n this.resourceUploads = [];\r\n }\r\n\r\n private onSubtitleUploadComplete(upload: Core.Model): void {\r\n const promise = $.Deferred();\r\n\r\n const languageSelector = new LanguageSelectComponent({\r\n /**\r\n * TODO: Pull the default language from the user's country.\r\n */\r\n defaultLanguage: { code: 'en', name: 'English' },\r\n promise\r\n });\r\n\r\n promise\r\n .done((language: any) => {\r\n const uploadData = upload.toJSON();\r\n\r\n const data = {\r\n fileId: uploadData.fileInfo.id,\r\n name: language.name,\r\n language: language.code,\r\n type: FileExtensionHelper.getResourceType(uploadData.fileInfo.extension),\r\n fileIdType: 2 // FileApiv1\r\n };\r\n\r\n this.subtitleDataService.addSubtitle(this.options.videoId, data, (subtitle: Subtitle) => {\r\n this.model.subtitles.add(subtitle);\r\n this.subtitleUploadService.getCollection().remove(upload);\r\n this.logUploadAction(subtitle);\r\n this.render();\r\n });\r\n })\r\n .fail(() => {\r\n this.subtitleUploadService.cancelUpload(upload.get('id'));\r\n });\r\n\r\n const channel = Radio.channel(CommonChannels.POPUP);\r\n channel.trigger(Core.EventNames.SHOW_POPUP, languageSelector);\r\n }\r\n\r\n private logUploadAction(item: Resource | Subtitle): void {\r\n const entity = item instanceof Resource ? EntityType.Resource : EntityType.Subtitle;\r\n const descriptor = AnalyticsHelper.mapInteractionType(this.interactionType);\r\n\r\n const analyticsOptions = {\r\n location: LocationContext.EditVideoResources,\r\n actionType: UserAction.Upload,\r\n entity,\r\n descriptor,\r\n };\r\n\r\n AnalyticsHelper.logUserAction(item, analyticsOptions);\r\n }\r\n\r\n private logDeleteAction(entity: EntityType, id: string, ): void {\r\n\r\n const analyticsOptions = {\r\n location: LocationContext.EditVideoResources,\r\n actionType: UserAction.Delete,\r\n entity,\r\n };\r\n\r\n const data = { id, parentId: +this.options.videoId };\r\n\r\n AnalyticsHelper.logUserAction(data, analyticsOptions);\r\n }\r\n\r\n private onMergeChapters(): void {\r\n this.chapterDataService.addConcatenateRequest(this.options.videoId, () => {\r\n this.pollConcatenation();\r\n });\r\n }\r\n\r\n private renderTabs(): void {\r\n const hideChaptersTab: boolean = !PermissionsHelper.canEditVideo(this.model);\r\n this.showChildView('tabs', new EditVideoTabsComponent({\r\n tabs: TabHelper.getEditVideoTabs(this.options.videoId, { hideChaptersTab }),\r\n activeTab: '.edit-resources-subtitles-applink',\r\n goBackTab: TabHelper.getBackButton(this.options.videoId),\r\n }));\r\n }\r\n\r\n private renderSubtitleFileSelect(): void {\r\n if (this.hasPhysicalChapters.get('value')) {\r\n this.renderConcatenationRequest();\r\n return;\r\n }\r\n\r\n const limitText = LanguageService.getPhrase(this.lang, 'subtitlesLimit', {\r\n limit: SUBTITLE_LIMIT\r\n });\r\n\r\n this.showChildView('subtitlesUpload', new FileSelectComponent({\r\n title: this.isClickViewContent\r\n ? LanguageService.getPhrase(this.lang, 'customerSubtitles')\r\n : LanguageService.getPhrase(this.lang, 'subtitles'),\r\n description: LanguageService.getPhrase(this.lang, 'subtitlesInfo'),\r\n alternateText: LanguageService.getPhrase(this.lang, 'subtitlesAlternative'),\r\n mimeType: FileExtensions.SUBTITLES,\r\n channelName: this.getSubtitleSelectChannelName(),\r\n acceptMultiple: false,\r\n limitText: this.model.subtitles.length >= SUBTITLE_LIMIT ? limitText : null,\r\n isClickViewContent: this.isClickViewContent\r\n }));\r\n }\r\n\r\n private renderSubtitleUploadList(): void {\r\n const collection = this.subtitleUploadService.getCollection();\r\n this.showChildView('subtitlesUploadList', new FileUploadsComponentCollection({\r\n collection,\r\n channelName: this.channelName\r\n }));\r\n }\r\n\r\n private renderSubtitlesLists(): void {\r\n this.renderClickViewSubtitlesList();\r\n this.renderCustomerSubtitlesList();\r\n }\r\n\r\n private renderClickViewSubtitlesList(): void {\r\n if (!this.isClickViewContent)\r\n return;\r\n\r\n const subtitles = PermissionsHelper.filterObjectsByOwnerType(this.model.subtitles, ObjectOwnerType.ClickView);\r\n\r\n this.showChildView('clickViewSubtitlesList', new VideoSubtitlesComponent({\r\n collection: subtitles,\r\n channelName: this.channelName,\r\n isClickViewContent: true,\r\n headerText: LanguageService.getPhrase(this.lang, 'clickViewSubtitles'),\r\n emptyStateText: subtitles.models.length ? '' : LanguageService.getPhrase(this.lang, 'clickViewSubtitlesEmpty')\r\n }));\r\n }\r\n\r\n private renderCustomerSubtitlesList(): void {\r\n this.showChildView('customerSubtitlesList', new VideoSubtitlesComponent({\r\n collection: PermissionsHelper.filterObjectsByOwnerType(this.model.subtitles, ObjectOwnerType.Customer, this.currentUser.get('customerId')),\r\n channelName: this.channelName\r\n }));\r\n }\r\n\r\n private renderConcatenationRequest(): void {\r\n if (!this.isRendered())\r\n return;\r\n\r\n this.showChildView('subtitlesUpload', new ConcatenateRequestComponent({\r\n type: this.isClickViewContent ? 'clickViewSubtitles' : 'subtitles',\r\n channelName: this.channelName,\r\n model: this.concatenateRequest\r\n }));\r\n }\r\n\r\n private renderResourcesFileSelect(): void {\r\n const limitText = LanguageService.getPhrase(this.lang, 'resourcesLimit', {\r\n limit: RESOURCE_LIMIT\r\n });\r\n\r\n this.showChildView('resourcesUpload', new FileSelectComponent({\r\n title: this.isClickViewContent\r\n ? LanguageService.getPhrase(this.lang, 'customerResources')\r\n : LanguageService.getPhrase(this.lang, 'resources'),\r\n description: LanguageService.getPhrase(this.lang, 'resourcesDescription'),\r\n alternateText: LanguageService.getPhrase(this.lang, 'resourcesAlternative'),\r\n mimeType: FileExtensions.RESOURCES,\r\n channelName: this.getResourceSelectChannelName(),\r\n limitText: this.model.resources.length >= RESOURCE_LIMIT ? limitText : null,\r\n isClickViewContent: this.isClickViewContent\r\n }));\r\n }\r\n\r\n private renderResourcesUploadList(): void {\r\n const collection = this.resourceUploadService.getCollection();\r\n this.showChildView('resourcesUploadList', new FileUploadsComponentCollection({\r\n collection,\r\n channelName: this.channelName\r\n }));\r\n }\r\n\r\n private renderResourcesLists(): void {\r\n this.renderClickViewResourcesList();\r\n this.renderCustomerResourcesList();\r\n }\r\n\r\n private renderClickViewResourcesList(): void {\r\n if (!this.isClickViewContent)\r\n return;\r\n\r\n const resources = PermissionsHelper.filterObjectsByOwnerType(this.model.resources, ObjectOwnerType.ClickView);\r\n\r\n this.showChildView('clickViewResourcesList', new VideoResourcesComponent({\r\n model: this.model,\r\n customCollection: resources,\r\n editable: false,\r\n videoId: this.options.videoId,\r\n parentChannelName: this.channelName,\r\n headerText: LanguageService.getPhrase(this.lang, 'clickViewResources'),\r\n emptyStateText: resources.models.length ? '' : LanguageService.getPhrase(this.lang, 'clickViewResourcesEmpty'),\r\n analyticsOptions: {\r\n location: LocationContext.EditVideoResources\r\n }\r\n }));\r\n }\r\n\r\n private renderCustomerResourcesList(): void {\r\n this.showChildView('customerResourcesList', new VideoResourcesComponentCollection({\r\n collection: PermissionsHelper.filterObjectsByOwnerType(this.model.resources, ObjectOwnerType.Customer, this.currentUser.get('customerId')),\r\n editable: true,\r\n videoId: this.options.videoId,\r\n channelName: this.channelName,\r\n analyticsOptions: {\r\n location: LocationContext.EditVideoResources\r\n }\r\n }));\r\n }\r\n\r\n private renderAddLinks(hide?: boolean): void {\r\n this.showChildView('addLinks', new AddLinksComponent({\r\n collection: this.model.get('links'),\r\n channelName: this.channelName,\r\n hide: hide || this.model.get('links').length === LINK_LIMIT,\r\n limit: LINK_LIMIT\r\n }));\r\n }\r\n\r\n private renderLinkLists(): void {\r\n const sharedComponentOptions = {\r\n channelName: this.channelName,\r\n analyticsOptions: {\r\n location: LocationContext.EditVideoResources\r\n },\r\n videoId: this.options.videoId\r\n };\r\n\r\n this.renderClickViewLinkList(sharedComponentOptions);\r\n this.renderCustomerLinkList(sharedComponentOptions);\r\n }\r\n\r\n private renderClickViewLinkList(options: any): void {\r\n if (!this.isClickViewContent)\r\n return;\r\n\r\n const links = PermissionsHelper.filterObjectsByOwnerType(this.model.links, ObjectOwnerType.ClickView);\r\n\r\n this.showChildView('clickViewLinkList', new VideoLinksComponent({\r\n ...options,\r\n headingText: 'Resource Links by ClickView',\r\n emptyStateText: links.models.length ? '' : 'There are no ClickView links for this video',\r\n customCollection: links,\r\n editable: false\r\n }));\r\n }\r\n\r\n private renderCustomerLinkList(options: any): void {\r\n this.showChildView('customerLinkList', new VideoLinksComponent({\r\n ...options,\r\n customCollection: PermissionsHelper.filterObjectsByOwnerType(this.model.links, ObjectOwnerType.Customer, this.currentUser.get('customerId')),\r\n editable: true\r\n }));\r\n }\r\n\r\n private fetchData(): void {\r\n this.model = this.videoDataService.getVideo(this.options.videoId);\r\n\r\n this.hasPhysicalChapters = this.videoDataService.hasPhysicalChapters(this.options.videoId);\r\n this.isClickViewContent = this.model && !PermissionsHelper.canEditVideo(this.model);\r\n\r\n /**\r\n * If this.hasPhysicalChapters.get('value') is false, we don't need to fetch the concatenate request.\r\n * Alternatively, if we have already sent a request to fetch the concatenate request, we don't need\r\n * to fetch it again.\r\n * A flag, getConcatenateRequestSent, is used as ChapterDataService.getConcatenateRequest() will\r\n * return null if a concatenate request hasn't been created.\r\n */\r\n if (!this.hasPhysicalChapters || !this.hasPhysicalChapters.get('value') || this.getConcatenateRequestSent)\r\n return;\r\n\r\n this.chapterDataService.getConcatenateRequest(this.options.videoId, (data: ChapterConcatenateRequest) => {\r\n this.concatenateRequest = data;\r\n this.render();\r\n });\r\n\r\n this.getConcatenateRequestSent = true;\r\n }\r\n\r\n private shouldRender(): boolean {\r\n if (!this.model || !this.hasPhysicalChapters)\r\n return false;\r\n\r\n if (this.hasPhysicalChapters.get('value') && (!this.concatenateRequest && !this.concatenateRequestNotFound))\r\n return false;\r\n\r\n return true;\r\n }\r\n\r\n public onBeforeRender(): boolean {\r\n this.fetchData();\r\n\r\n return this.shouldRender();\r\n }\r\n\r\n public viewOptions(): ObjectHash {\r\n return {\r\n isClickViewContent: this.isClickViewContent\r\n };\r\n }\r\n\r\n public onRender(): void {\r\n this.renderTabs();\r\n\r\n this.renderSubtitleFileSelect();\r\n this.renderSubtitleUploadList();\r\n this.renderSubtitlesLists();\r\n\r\n this.renderResourcesFileSelect();\r\n this.renderResourcesUploadList();\r\n this.renderResourcesLists();\r\n\r\n this.renderAddLinks();\r\n this.renderLinkLists();\r\n\r\n this.startPollingConcatenation();\r\n }\r\n\r\n public onDestroy(): void {\r\n this.subtitleUploadService.destroy();\r\n this.resourceUploadService.destroy();\r\n }\r\n}"],"sourceRoot":""}