@clickview/lite 0.0.18-rc.2 → 0.0.18

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 (321) hide show
  1. package/dist/css/11.chunk.css +14 -8
  2. package/dist/css/12.chunk.css +15 -5
  3. package/dist/css/13.chunk.css +5 -13
  4. package/dist/css/14.chunk.css +6 -6
  5. package/dist/css/15.chunk.css +15 -3
  6. package/dist/css/16.chunk.css +9 -3
  7. package/dist/css/17.chunk.css +4 -2
  8. package/dist/css/19.chunk.css +2 -6
  9. package/dist/css/2.chunk.css +0 -14
  10. package/dist/css/20.chunk.css +2 -2
  11. package/dist/css/21.chunk.css +7 -1
  12. package/dist/css/22.chunk.css +2 -2
  13. package/dist/css/23.chunk.css +2 -2
  14. package/dist/css/24.chunk.css +1 -1
  15. package/dist/css/25.chunk.css +2 -2
  16. package/dist/css/26.chunk.css +2 -2
  17. package/dist/css/27.chunk.css +1 -67
  18. package/dist/css/28.chunk.css +2 -48
  19. package/dist/css/29.chunk.css +2 -45
  20. package/dist/css/3.chunk.css +7 -13
  21. package/dist/css/31.chunk.css +1 -6
  22. package/dist/css/34.chunk.css +1 -5
  23. package/dist/css/38.chunk.css +2 -36
  24. package/dist/css/4.chunk.css +13 -5
  25. package/dist/css/44.chunk.css +1 -1
  26. package/dist/css/46.chunk.css +2 -0
  27. package/dist/css/5.chunk.css +8 -2
  28. package/dist/css/6.chunk.css +2 -0
  29. package/dist/libs/common/src/react/utils/ArrayHelper.d.ts +1 -1
  30. package/dist/libs/shared/src/utils/ImageHelper.d.ts +1 -1
  31. package/dist/scripts/0-d95e8444c4.chunk.js +1 -0
  32. package/dist/scripts/{1-f6fa17226d.chunk.js → 1-2b6afccaa5.chunk.js} +3 -3
  33. package/dist/scripts/11-d419aa0984.chunk.js +1 -0
  34. package/dist/scripts/12-b38a27f951.chunk.js +1 -0
  35. package/dist/scripts/13-1ad100c6fa.chunk.js +1 -0
  36. package/dist/scripts/14-9f08e07fae.chunk.js +1 -0
  37. package/dist/scripts/15-ee9fb81b9f.chunk.js +1 -0
  38. package/dist/scripts/{14-11868e2868.chunk.js → 16-8fe78e04c2.chunk.js} +1 -1
  39. package/dist/scripts/17-ea7fe3ea28.chunk.js +1 -0
  40. package/dist/scripts/18-1bb07c0b9b.chunk.js +1 -0
  41. package/dist/scripts/19-c869d34687.chunk.js +1 -0
  42. package/dist/scripts/2-a816feb2a1.chunk.js +1 -0
  43. package/dist/scripts/20-43ec005977.chunk.js +1 -0
  44. package/dist/scripts/21-8513db8251.chunk.js +1 -0
  45. package/dist/scripts/22-d4adb2384c.chunk.js +1 -0
  46. package/dist/scripts/23-d8b5b9ad2c.chunk.js +1 -0
  47. package/dist/scripts/{21-891207049a.chunk.js → 24-f2913e26e2.chunk.js} +1 -1
  48. package/dist/scripts/25-68705527ea.chunk.js +1 -0
  49. package/dist/scripts/26-7d25448f1c.chunk.js +1 -0
  50. package/dist/scripts/27-bab6c9f5c7.chunk.js +1 -0
  51. package/dist/scripts/28-080baa3fbc.chunk.js +1 -0
  52. package/dist/scripts/29-5e9889b68a.chunk.js +1 -0
  53. package/dist/scripts/3-6e2ac46662.chunk.js +7 -0
  54. package/dist/scripts/{27-f26afdae78.chunk.js → 30-cdbeea4fc5.chunk.js} +1 -1
  55. package/dist/scripts/31-6fa4413cdb.chunk.js +1 -0
  56. package/dist/scripts/32-d4725d3b7d.chunk.js +1 -0
  57. package/dist/scripts/33-bec24aab85.chunk.js +1 -0
  58. package/dist/scripts/34-c42c6cf42a.chunk.js +1 -0
  59. package/dist/scripts/{33-4579af9cf9.chunk.js → 35-4512b236f2.chunk.js} +1 -1
  60. package/dist/scripts/{34-d8b96d9f9f.chunk.js → 36-eede7769b2.chunk.js} +1 -1
  61. package/dist/scripts/37-80ed339c4f.chunk.js +1 -0
  62. package/dist/scripts/{37-afd3d321e3.chunk.js → 38-c11d4c88e3.chunk.js} +1 -1
  63. package/dist/scripts/{38-6ad53aa15b.chunk.js → 39-d0e74fb062.chunk.js} +1 -1
  64. package/dist/scripts/4-ea79bf1533.chunk.js +1 -0
  65. package/dist/scripts/{39-46c747b1d9.chunk.js → 40-d764e6157b.chunk.js} +1 -1
  66. package/dist/scripts/{40-c1b8806b1c.chunk.js → 41-0aa7093354.chunk.js} +1 -1
  67. package/dist/scripts/42-3d8c5fa14c.chunk.js +1 -0
  68. package/dist/scripts/43-969806e81e.chunk.js +1 -0
  69. package/dist/scripts/44-e8e3fef4c3.chunk.js +1 -0
  70. package/dist/scripts/45-d8f70269d6.chunk.js +1 -0
  71. package/dist/scripts/{44-7f92272274.chunk.js → 46-946ae22c1f.chunk.js} +1 -1
  72. package/dist/scripts/47-1579412cd0.chunk.js +1 -0
  73. package/dist/scripts/48-fdf97c1c73.chunk.js +1 -0
  74. package/dist/scripts/49-970fc479c8.chunk.js +1 -0
  75. package/dist/scripts/5-d1bb14adf6.chunk.js +1 -0
  76. package/dist/scripts/50-1257ab0b95.chunk.js +1 -0
  77. package/dist/scripts/{50-8cb0d9cd7d.chunk.js → 51-ac615445f0.chunk.js} +1 -1
  78. package/dist/scripts/52-874629b81c.chunk.js +1 -0
  79. package/dist/scripts/{52-bfb2683b5d.chunk.js → 53-22e3d0793b.chunk.js} +1 -1
  80. package/dist/scripts/{53-3cf5cd5f69.chunk.js → 54-da1a07610c.chunk.js} +1 -1
  81. package/dist/scripts/{54-26807e3e49.chunk.js → 55-02647df65c.chunk.js} +1 -1
  82. package/dist/scripts/56-1b6e6349fa.chunk.js +1 -0
  83. package/dist/scripts/57-8fc09ba02c.chunk.js +1 -0
  84. package/dist/scripts/{56-d4abc25ec3.chunk.js → 58-8e5cc56c3f.chunk.js} +1 -1
  85. package/dist/scripts/6-0e53df2ece.chunk.js +1 -0
  86. package/dist/scripts/7-26822045b2.chunk.js +1 -0
  87. package/dist/scripts/8-7450eff674.chunk.js +1 -0
  88. package/dist/scripts/9-f24f1577dd.chunk.js +1 -0
  89. package/dist/scripts/bundle-5ecb0c9441.min.js +1 -0
  90. package/dist/scripts/bundle-c6241bd7ac.min.js +1 -0
  91. package/dist/scripts/bundles.json +1 -1
  92. package/package.json +3 -3
  93. package/dist/css/0.chunk.css.map +0 -1
  94. package/dist/css/1.chunk.css +0 -146
  95. package/dist/css/1.chunk.css.map +0 -1
  96. package/dist/css/10.chunk.css +0 -20
  97. package/dist/css/10.chunk.css.map +0 -1
  98. package/dist/css/11.chunk.css.map +0 -1
  99. package/dist/css/12.chunk.css.map +0 -1
  100. package/dist/css/13.chunk.css.map +0 -1
  101. package/dist/css/14.chunk.css.map +0 -1
  102. package/dist/css/16.chunk.css.map +0 -1
  103. package/dist/css/18.chunk.css.map +0 -1
  104. package/dist/css/19.chunk.css.map +0 -1
  105. package/dist/css/21.chunk.css.map +0 -1
  106. package/dist/css/22.chunk.css.map +0 -1
  107. package/dist/css/23.chunk.css.map +0 -1
  108. package/dist/css/24.chunk.css.map +0 -1
  109. package/dist/css/25.chunk.css.map +0 -1
  110. package/dist/css/26.chunk.css.map +0 -1
  111. package/dist/css/27.chunk.css.map +0 -1
  112. package/dist/css/28.chunk.css.map +0 -1
  113. package/dist/css/29.chunk.css.map +0 -1
  114. package/dist/css/3.chunk.css.map +0 -1
  115. package/dist/css/30.chunk.css.map +0 -1
  116. package/dist/css/31.chunk.css.map +0 -1
  117. package/dist/css/32.chunk.css +0 -5
  118. package/dist/css/32.chunk.css.map +0 -1
  119. package/dist/css/34.chunk.css.map +0 -1
  120. package/dist/css/35.chunk.css +0 -7
  121. package/dist/css/35.chunk.css.map +0 -1
  122. package/dist/css/36.chunk.css +0 -4
  123. package/dist/css/36.chunk.css.map +0 -1
  124. package/dist/css/37.chunk.css +0 -4
  125. package/dist/css/37.chunk.css.map +0 -1
  126. package/dist/css/38.chunk.css.map +0 -1
  127. package/dist/css/4.chunk.css.map +0 -1
  128. package/dist/css/45.chunk.css +0 -9
  129. package/dist/css/45.chunk.css.map +0 -1
  130. package/dist/css/5.chunk.css.map +0 -1
  131. package/dist/css/9.chunk.css +0 -24
  132. package/dist/css/lite-app.css.map +0 -1
  133. package/dist/scripts/0-525bd75473.chunk.js +0 -1
  134. package/dist/scripts/0.chunk.js +0 -478
  135. package/dist/scripts/0.chunk.js.map +0 -1
  136. package/dist/scripts/1.chunk.js +0 -621
  137. package/dist/scripts/1.chunk.js.map +0 -1
  138. package/dist/scripts/10-f3b34b2d35.chunk.js +0 -1
  139. package/dist/scripts/10.chunk.js +0 -400
  140. package/dist/scripts/10.chunk.js.map +0 -1
  141. package/dist/scripts/11-a698af3f1c.chunk.js +0 -1
  142. package/dist/scripts/11.chunk.js +0 -1289
  143. package/dist/scripts/11.chunk.js.map +0 -1
  144. package/dist/scripts/12-9ace90fcbc.chunk.js +0 -1
  145. package/dist/scripts/12.chunk.js +0 -1059
  146. package/dist/scripts/12.chunk.js.map +0 -1
  147. package/dist/scripts/13-3a4f103546.chunk.js +0 -1
  148. package/dist/scripts/13.chunk.js +0 -751
  149. package/dist/scripts/13.chunk.js.map +0 -1
  150. package/dist/scripts/14.chunk.js +0 -425
  151. package/dist/scripts/14.chunk.js.map +0 -1
  152. package/dist/scripts/15-78ff5e8be2.chunk.js +0 -1
  153. package/dist/scripts/15.chunk.js +0 -609
  154. package/dist/scripts/15.chunk.js.map +0 -1
  155. package/dist/scripts/16-22f6224811.chunk.js +0 -1
  156. package/dist/scripts/16.chunk.js +0 -648
  157. package/dist/scripts/16.chunk.js.map +0 -1
  158. package/dist/scripts/17-afe6281dd5.chunk.js +0 -1
  159. package/dist/scripts/17.chunk.js +0 -541
  160. package/dist/scripts/17.chunk.js.map +0 -1
  161. package/dist/scripts/18-47be31c0b6.chunk.js +0 -1
  162. package/dist/scripts/18.chunk.js +0 -766
  163. package/dist/scripts/18.chunk.js.map +0 -1
  164. package/dist/scripts/19-89c0b2c20e.chunk.js +0 -1
  165. package/dist/scripts/19.chunk.js +0 -647
  166. package/dist/scripts/19.chunk.js.map +0 -1
  167. package/dist/scripts/2-3b37480a80.chunk.js +0 -7
  168. package/dist/scripts/2.chunk.js +0 -8259
  169. package/dist/scripts/2.chunk.js.map +0 -1
  170. package/dist/scripts/20-32ac3fe0b9.chunk.js +0 -1
  171. package/dist/scripts/20.chunk.js +0 -122
  172. package/dist/scripts/20.chunk.js.map +0 -1
  173. package/dist/scripts/21.chunk.js +0 -1571
  174. package/dist/scripts/21.chunk.js.map +0 -1
  175. package/dist/scripts/22-24236e6723.chunk.js +0 -1
  176. package/dist/scripts/22.chunk.js +0 -1387
  177. package/dist/scripts/22.chunk.js.map +0 -1
  178. package/dist/scripts/23-7b425169bc.chunk.js +0 -1
  179. package/dist/scripts/23.chunk.js +0 -1121
  180. package/dist/scripts/23.chunk.js.map +0 -1
  181. package/dist/scripts/24-40edd30087.chunk.js +0 -1
  182. package/dist/scripts/24.chunk.js +0 -1348
  183. package/dist/scripts/24.chunk.js.map +0 -1
  184. package/dist/scripts/25-887b9ef587.chunk.js +0 -1
  185. package/dist/scripts/25.chunk.js +0 -1137
  186. package/dist/scripts/25.chunk.js.map +0 -1
  187. package/dist/scripts/26-cbe0ff0f77.chunk.js +0 -1
  188. package/dist/scripts/26.chunk.js +0 -906
  189. package/dist/scripts/26.chunk.js.map +0 -1
  190. package/dist/scripts/27.chunk.js +0 -1143
  191. package/dist/scripts/27.chunk.js.map +0 -1
  192. package/dist/scripts/28-70414fd373.chunk.js +0 -1
  193. package/dist/scripts/28.chunk.js +0 -656
  194. package/dist/scripts/28.chunk.js.map +0 -1
  195. package/dist/scripts/29-944b5c01a7.chunk.js +0 -1
  196. package/dist/scripts/29.chunk.js +0 -616
  197. package/dist/scripts/29.chunk.js.map +0 -1
  198. package/dist/scripts/3-233f573a92.chunk.js +0 -1
  199. package/dist/scripts/3.chunk.js +0 -585
  200. package/dist/scripts/3.chunk.js.map +0 -1
  201. package/dist/scripts/30-3a229887e9.chunk.js +0 -1
  202. package/dist/scripts/30.chunk.js +0 -557
  203. package/dist/scripts/30.chunk.js.map +0 -1
  204. package/dist/scripts/31-ab038bfc0c.chunk.js +0 -1
  205. package/dist/scripts/31.chunk.js +0 -731
  206. package/dist/scripts/31.chunk.js.map +0 -1
  207. package/dist/scripts/32-8bd6703eef.chunk.js +0 -1
  208. package/dist/scripts/32.chunk.js +0 -957
  209. package/dist/scripts/32.chunk.js.map +0 -1
  210. package/dist/scripts/33.chunk.js +0 -938
  211. package/dist/scripts/33.chunk.js.map +0 -1
  212. package/dist/scripts/34.chunk.js +0 -523
  213. package/dist/scripts/34.chunk.js.map +0 -1
  214. package/dist/scripts/35-666d815525.chunk.js +0 -1
  215. package/dist/scripts/35.chunk.js +0 -414
  216. package/dist/scripts/35.chunk.js.map +0 -1
  217. package/dist/scripts/36-02ce5f3538.chunk.js +0 -1
  218. package/dist/scripts/36.chunk.js +0 -404
  219. package/dist/scripts/36.chunk.js.map +0 -1
  220. package/dist/scripts/37.chunk.js +0 -245
  221. package/dist/scripts/37.chunk.js.map +0 -1
  222. package/dist/scripts/38.chunk.js +0 -343
  223. package/dist/scripts/38.chunk.js.map +0 -1
  224. package/dist/scripts/39.chunk.js +0 -318
  225. package/dist/scripts/39.chunk.js.map +0 -1
  226. package/dist/scripts/4-6942fee782.chunk.js +0 -1
  227. package/dist/scripts/4.chunk.js +0 -1030
  228. package/dist/scripts/4.chunk.js.map +0 -1
  229. package/dist/scripts/40.chunk.js +0 -236
  230. package/dist/scripts/40.chunk.js.map +0 -1
  231. package/dist/scripts/41-f4c23477e3.chunk.js +0 -1
  232. package/dist/scripts/41.chunk.js +0 -231
  233. package/dist/scripts/41.chunk.js.map +0 -1
  234. package/dist/scripts/42-7a5b92d70b.chunk.js +0 -1
  235. package/dist/scripts/42.chunk.js +0 -350
  236. package/dist/scripts/42.chunk.js.map +0 -1
  237. package/dist/scripts/43-97193a87df.chunk.js +0 -1
  238. package/dist/scripts/43.chunk.js +0 -225
  239. package/dist/scripts/43.chunk.js.map +0 -1
  240. package/dist/scripts/44.chunk.js +0 -318
  241. package/dist/scripts/44.chunk.js.map +0 -1
  242. package/dist/scripts/45-265f1a7a42.chunk.js +0 -1
  243. package/dist/scripts/45.chunk.js +0 -64
  244. package/dist/scripts/45.chunk.js.map +0 -1
  245. package/dist/scripts/46-a594ad7eba.chunk.js +0 -1
  246. package/dist/scripts/46.chunk.js +0 -108
  247. package/dist/scripts/46.chunk.js.map +0 -1
  248. package/dist/scripts/47-99777c20cf.chunk.js +0 -1
  249. package/dist/scripts/47.chunk.js +0 -110
  250. package/dist/scripts/47.chunk.js.map +0 -1
  251. package/dist/scripts/48-9880523c82.chunk.js +0 -1
  252. package/dist/scripts/48.chunk.js +0 -148
  253. package/dist/scripts/48.chunk.js.map +0 -1
  254. package/dist/scripts/49-5e718594e5.chunk.js +0 -1
  255. package/dist/scripts/49.chunk.js +0 -142
  256. package/dist/scripts/49.chunk.js.map +0 -1
  257. package/dist/scripts/5-2f631dcd74.chunk.js +0 -1
  258. package/dist/scripts/5.chunk.js +0 -3262
  259. package/dist/scripts/5.chunk.js.map +0 -1
  260. package/dist/scripts/50.chunk.js +0 -145
  261. package/dist/scripts/50.chunk.js.map +0 -1
  262. package/dist/scripts/51-211b643ca5.chunk.js +0 -1
  263. package/dist/scripts/51.chunk.js +0 -176
  264. package/dist/scripts/51.chunk.js.map +0 -1
  265. package/dist/scripts/52.chunk.js +0 -160
  266. package/dist/scripts/52.chunk.js.map +0 -1
  267. package/dist/scripts/53.chunk.js +0 -98
  268. package/dist/scripts/53.chunk.js.map +0 -1
  269. package/dist/scripts/54.chunk.js +0 -48
  270. package/dist/scripts/54.chunk.js.map +0 -1
  271. package/dist/scripts/55-d38be4860b.chunk.js +0 -1
  272. package/dist/scripts/55.chunk.js +0 -99
  273. package/dist/scripts/55.chunk.js.map +0 -1
  274. package/dist/scripts/56.chunk.js +0 -64
  275. package/dist/scripts/56.chunk.js.map +0 -1
  276. package/dist/scripts/57.chunk.js +0 -72
  277. package/dist/scripts/57.chunk.js.map +0 -1
  278. package/dist/scripts/58.chunk.js +0 -73
  279. package/dist/scripts/58.chunk.js.map +0 -1
  280. package/dist/scripts/59.chunk.js +0 -70
  281. package/dist/scripts/59.chunk.js.map +0 -1
  282. package/dist/scripts/6-4d72a3c3fc.chunk.js +0 -1
  283. package/dist/scripts/6.chunk.js +0 -24
  284. package/dist/scripts/6.chunk.js.map +0 -1
  285. package/dist/scripts/60.chunk.js +0 -32
  286. package/dist/scripts/60.chunk.js.map +0 -1
  287. package/dist/scripts/61.chunk.js +0 -29
  288. package/dist/scripts/61.chunk.js.map +0 -1
  289. package/dist/scripts/62.chunk.js +0 -27
  290. package/dist/scripts/62.chunk.js.map +0 -1
  291. package/dist/scripts/63.chunk.js +0 -67
  292. package/dist/scripts/63.chunk.js.map +0 -1
  293. package/dist/scripts/64.chunk.js +0 -80
  294. package/dist/scripts/64.chunk.js.map +0 -1
  295. package/dist/scripts/65.chunk.js +0 -65
  296. package/dist/scripts/65.chunk.js.map +0 -1
  297. package/dist/scripts/66.chunk.js +0 -67
  298. package/dist/scripts/66.chunk.js.map +0 -1
  299. package/dist/scripts/67.chunk.js +0 -104
  300. package/dist/scripts/67.chunk.js.map +0 -1
  301. package/dist/scripts/68.chunk.js +0 -69
  302. package/dist/scripts/68.chunk.js.map +0 -1
  303. package/dist/scripts/69.chunk.js +0 -89
  304. package/dist/scripts/69.chunk.js.map +0 -1
  305. package/dist/scripts/7-90ad392b55.chunk.js +0 -1
  306. package/dist/scripts/7.chunk.js +0 -327
  307. package/dist/scripts/7.chunk.js.map +0 -1
  308. package/dist/scripts/70.chunk.js +0 -36
  309. package/dist/scripts/70.chunk.js.map +0 -1
  310. package/dist/scripts/8.chunk.js +0 -470
  311. package/dist/scripts/8.chunk.js.map +0 -1
  312. package/dist/scripts/9-52877087ef.chunk.js +0 -1
  313. package/dist/scripts/9.chunk.js +0 -471
  314. package/dist/scripts/9.chunk.js.map +0 -1
  315. package/dist/scripts/bundle-87d75d901a.min.js +0 -1
  316. package/dist/scripts/bundle-99976c17a2.min.js +0 -1
  317. package/dist/scripts/bundle-9f5ad50596.min.js +0 -1
  318. package/dist/scripts/bundle-a4952df647.min.js +0 -1
  319. package/dist/scripts/bundle.js +0 -34769
  320. package/dist/scripts/bundle.js.map +0 -1
  321. /package/dist/css/{30.chunk.css → 8.chunk.css} +0 -0
@@ -1,523 +0,0 @@
1
- (window["webpackJsonp_clickview_lite"] = window["webpackJsonp_clickview_lite"] || []).push([[34],{
2
-
3
- /***/ "../../libs/shared/src/apps/playlists/utils/RecentPlaylistHelper.ts":
4
- /*!**************************************************************************************************************!*\
5
- !*** C:/ClickView Projects/@clickview/packages/libs/shared/src/apps/playlists/utils/RecentPlaylistHelper.ts ***!
6
- \**************************************************************************************************************/
7
- /*! exports provided: RecentPlaylistHelper */
8
- /***/ (function(module, __webpack_exports__, __webpack_require__) {
9
-
10
- "use strict";
11
- __webpack_require__.r(__webpack_exports__);
12
- /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "RecentPlaylistHelper", function() { return RecentPlaylistHelper; });
13
- const getCacheKey = userId => `recent:playlists:added:to:${userId}`;
14
-
15
- const DEFAULT_STORAGE_LIMIT = 5;
16
- const RecentPlaylistHelper = {
17
- /**
18
- * Get a list of ids of playlists recently added to.
19
- */
20
- getRecentlyAddedTo(userId, dataSource) {
21
- let recentlyAddedTo = dataSource.cacheGet(getCacheKey(userId));
22
- if (!Array.isArray(recentlyAddedTo)) recentlyAddedTo = [];
23
- return recentlyAddedTo;
24
- },
25
-
26
- setRecentlyAddedTo(userId, ids, dataSource) {
27
- if (!Array.isArray(ids)) return;
28
- dataSource.cacheSet(getCacheKey(userId), ids);
29
- },
30
-
31
- addRecentlyAddedTo(userId, dataSource, options) {
32
- const {
33
- id,
34
- limit = DEFAULT_STORAGE_LIMIT
35
- } = options;
36
- let recentlyAddedTo = RecentPlaylistHelper.getRecentlyAddedTo(userId, dataSource);
37
- const idIndex = recentlyAddedTo.indexOf(id);
38
- /**
39
- * If the playlists is already in the stored list,
40
- * remove it to first position so that it will be inserted
41
- * at the first position.
42
- */
43
-
44
- if (idIndex > -1) recentlyAddedTo.splice(idIndex, 1);
45
- recentlyAddedTo.unshift(id);
46
- if (recentlyAddedTo.length > limit) recentlyAddedTo = recentlyAddedTo.slice(0, limit);
47
- RecentPlaylistHelper.setRecentlyAddedTo(userId, recentlyAddedTo, dataSource);
48
- return recentlyAddedTo;
49
- }
50
-
51
- };
52
-
53
- /***/ }),
54
-
55
- /***/ "../../libs/shared/src/hooks/UseFetchAll.ts":
56
- /*!**************************************************************************************!*\
57
- !*** C:/ClickView Projects/@clickview/packages/libs/shared/src/hooks/UseFetchAll.ts ***!
58
- \**************************************************************************************/
59
- /*! exports provided: useFetchAll */
60
- /***/ (function(module, __webpack_exports__, __webpack_require__) {
61
-
62
- "use strict";
63
- __webpack_require__.r(__webpack_exports__);
64
- /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "useFetchAll", function() { return useFetchAll; });
65
- /* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ "react");
66
- /* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_0__);
67
- /* harmony import */ var _UseSelectAllPages__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./UseSelectAllPages */ "../../libs/shared/src/hooks/UseSelectAllPages.ts");
68
-
69
-
70
- /**
71
- * Hook to fetch all pages of a collection.
72
- *
73
- * @param getRequest - callback function to get the request for each page.
74
- * Can be false if the request requires data that hasn't yet been fetched - e.g. user id.
75
- *
76
- * @param fetchNext - callback function to fetch a page.
77
- * Can be false if the request requires data that hasn't yet been fetched - e.g. user id.
78
- */
79
-
80
- function useFetchAll(getRequest, fetchNext) {
81
- const getRequestFn = getRequest;
82
- const fetchNextFn = fetchNext;
83
- const response = Object(_UseSelectAllPages__WEBPACK_IMPORTED_MODULE_1__["useSelectAllPages"])(getRequest && (cursor => getRequestFn(cursor).key));
84
- Object(react__WEBPACK_IMPORTED_MODULE_0__["useEffect"])(() => {
85
- if (response.shouldInitialFetch && fetchNext) fetchNextFn();
86
- }, [response.shouldInitialFetch, fetchNext]);
87
- Object(react__WEBPACK_IMPORTED_MODULE_0__["useEffect"])(() => {
88
- if (!response.nextCursor || response.isFetching || !fetchNext) return;
89
- fetchNextFn(response.nextCursor);
90
- }, [response.nextCursor, response.isFetching, fetchNext]);
91
- }
92
-
93
- /***/ }),
94
-
95
- /***/ "../../libs/shared/src/hooks/UseSelectAllPages.ts":
96
- /*!********************************************************************************************!*\
97
- !*** C:/ClickView Projects/@clickview/packages/libs/shared/src/hooks/UseSelectAllPages.ts ***!
98
- \********************************************************************************************/
99
- /*! exports provided: useSelectAllPages */
100
- /***/ (function(module, __webpack_exports__, __webpack_require__) {
101
-
102
- "use strict";
103
- __webpack_require__.r(__webpack_exports__);
104
- /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "useSelectAllPages", function() { return useSelectAllPages; });
105
- /* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ "react");
106
- /* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_0__);
107
- /* harmony import */ var react_redux__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! react-redux */ "react-redux");
108
- /* harmony import */ var react_redux__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(react_redux__WEBPACK_IMPORTED_MODULE_1__);
109
- /* harmony import */ var _common_src_react__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../../../common/src/react */ "../../libs/common/src/react/index.ts");
110
- /* harmony import */ var _common_src_backbone_utils_FunctionHelper__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../../../common/src/backbone/utils/FunctionHelper */ "../../libs/common/src/backbone/utils/FunctionHelper.ts");
111
-
112
-
113
-
114
-
115
-
116
- const safeGetCursor = request => {
117
- return request && request.data && request.data.pagination && request.data.pagination.cursors && request.data.pagination.cursors.next;
118
- };
119
- /**
120
- * Hook to select all pages of a collection from the store and flatten them.
121
- * It will not trigger any fetches.
122
- *
123
- * @param getKey - callback function to get the key for each page.
124
- * Can be false if the key requires data that hasn't yet been fetched - e.g. user id.
125
- */
126
-
127
-
128
- function useSelectAllPages(getKey) {
129
- return Object(react_redux__WEBPACK_IMPORTED_MODULE_1__["useSelector"])(Object(react__WEBPACK_IMPORTED_MODULE_0__["useMemo"])(() => state => {
130
- const getKeyFn = getKey;
131
- let request = _common_src_backbone_utils_FunctionHelper__WEBPACK_IMPORTED_MODULE_3__["FunctionHelper"].isFunction(getKey) && _common_src_react__WEBPACK_IMPORTED_MODULE_2__["Flight"].getResponse(state, getKeyFn());
132
- let isFetching = request && request.isFetching;
133
- const shouldInitialFetch = request && request.shouldFetch;
134
- let items = request && request.data && request.data.data;
135
- let nextCursor = safeGetCursor(request); // Retrieve all pages that are currently in the store.
136
-
137
- while (nextCursor) {
138
- request = _common_src_react__WEBPACK_IMPORTED_MODULE_2__["Flight"].getResponse(state, getKeyFn(nextCursor));
139
- isFetching = request.isFetching; // If next page hasn't been fetched, break.
140
-
141
- if (request.shouldFetch) break;
142
- let newItems = request.data && request.data.data;
143
- newItems && items.push(...newItems);
144
- nextCursor = safeGetCursor(request);
145
- }
146
-
147
- return {
148
- shouldInitialFetch,
149
- items,
150
- nextCursor,
151
- isFetching
152
- };
153
- }, [getKey]));
154
- }
155
-
156
- /***/ }),
157
-
158
- /***/ "./src/apps/playlists/components/select-playlist/SelectPlaylist.tsx":
159
- /*!**************************************************************************!*\
160
- !*** ./src/apps/playlists/components/select-playlist/SelectPlaylist.tsx ***!
161
- \**************************************************************************/
162
- /*! exports provided: SelectPlaylist */
163
- /***/ (function(module, __webpack_exports__, __webpack_require__) {
164
-
165
- "use strict";
166
- __webpack_require__.r(__webpack_exports__);
167
- /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "SelectPlaylist", function() { return SelectPlaylist; });
168
- /* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ "react");
169
- /* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_0__);
170
- /* harmony import */ var _libs_common_src_backbone_services_LanguageService__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../../../../../../libs/common/src/backbone/services/LanguageService */ "../../libs/common/src/backbone/services/LanguageService.tsx");
171
- /* harmony import */ var _libs_common_src_react_utils_ArrayHelper__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../../../../../../../libs/common/src/react/utils/ArrayHelper */ "../../libs/common/src/react/utils/ArrayHelper.ts");
172
- /* harmony import */ var _libs_common_src_backbone_utils_FunctionHelper__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../../../../../../../libs/common/src/backbone/utils/FunctionHelper */ "../../libs/common/src/backbone/utils/FunctionHelper.ts");
173
- /* harmony import */ var _libs_common_src_backbone_utils_LocalStorageHelper__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../../../../../../../libs/common/src/backbone/utils/LocalStorageHelper */ "../../libs/common/src/backbone/utils/LocalStorageHelper.ts");
174
- /* harmony import */ var _libs_shared_src_components_svg_container_SvgContainer__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../../../../../../../libs/shared/src/components/svg-container/SvgContainer */ "../../libs/shared/src/components/svg-container/SvgContainer.tsx");
175
- /* harmony import */ var _libs_shared_src_utils_SvgHelper__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../../../../../../../libs/shared/src/utils/SvgHelper */ "../../libs/shared/src/utils/SvgHelper.ts");
176
- /* harmony import */ var _libs_shared_src_components_text_Text__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ../../../../../../../libs/shared/src/components/text/Text */ "../../libs/shared/src/components/text/Text.tsx");
177
- /* harmony import */ var _libs_shared_src_components_search_bar_SearchBar__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ../../../../../../../libs/shared/src/components/search-bar/SearchBar */ "../../libs/shared/src/components/search-bar/SearchBar.tsx");
178
- /* harmony import */ var _libs_shared_src_apps_playlists_utils_RecentPlaylistHelper__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ../../../../../../../libs/shared/src/apps/playlists/utils/RecentPlaylistHelper */ "../../libs/shared/src/apps/playlists/utils/RecentPlaylistHelper.ts");
179
- /* harmony import */ var _select_playlist_scss__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ./select-playlist.scss */ "./src/apps/playlists/components/select-playlist/select-playlist.scss");
180
- /* harmony import */ var _select_playlist_scss__WEBPACK_IMPORTED_MODULE_10___default = /*#__PURE__*/__webpack_require__.n(_select_playlist_scss__WEBPACK_IMPORTED_MODULE_10__);
181
- function _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); }
182
-
183
- function _nonIterableRest() { throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); }
184
-
185
- function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }
186
-
187
- function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }
188
-
189
- function _iterableToArrayLimit(arr, i) { if (typeof Symbol === "undefined" || !(Symbol.iterator in Object(arr))) return; var _arr = []; var _n = true; var _d = false; var _e = undefined; try { for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i["return"] != null) _i["return"](); } finally { if (_d) throw _e; } } return _arr; }
190
-
191
- function _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }
192
-
193
-
194
-
195
-
196
-
197
-
198
-
199
-
200
-
201
-
202
-
203
-
204
- var namespace = 'playlists.selectPlaylist';
205
- var RECENT_PLAYLISTS_LIMIT = 3;
206
-
207
- function PlaylistSuggestionItem(props) {
208
- var isVideoInPlaylist = _libs_common_src_backbone_utils_FunctionHelper__WEBPACK_IMPORTED_MODULE_3__["FunctionHelper"].isFunction(props.isVideoInPlaylist) && props.isVideoInPlaylist(props.playlist);
209
- var className = isVideoInPlaylist ? '' : 'cursor-pointer';
210
- var svgName = isVideoInPlaylist ? _libs_shared_src_utils_SvgHelper__WEBPACK_IMPORTED_MODULE_6__["cvSvgLibrary"].Check : _libs_shared_src_utils_SvgHelper__WEBPACK_IMPORTED_MODULE_6__["cvSvgLibrary"].Plus;
211
- var svgContainerClassName = 'd-inline-block svg-container';
212
- if (isVideoInPlaylist) svgContainerClassName += ' text-success';
213
- var title = isVideoInPlaylist ? 'This video is already in this playlist' : '';
214
- return react__WEBPACK_IMPORTED_MODULE_0__["createElement"]("span", {
215
- className: className
216
- }, react__WEBPACK_IMPORTED_MODULE_0__["createElement"](_libs_shared_src_components_svg_container_SvgContainer__WEBPACK_IMPORTED_MODULE_5__["SvgContainer"], {
217
- svgName: svgName,
218
- size: _libs_shared_src_components_svg_container_SvgContainer__WEBPACK_IMPORTED_MODULE_5__["SvgContainerSize"].Small,
219
- className: svgContainerClassName,
220
- title: title
221
- }), react__WEBPACK_IMPORTED_MODULE_0__["createElement"]("span", {
222
- className: 'ml-2'
223
- }, props.playlist.name));
224
- }
225
-
226
- function SelectPlaylist(props) {
227
- var _React$useState = react__WEBPACK_IMPORTED_MODULE_0__["useState"](''),
228
- _React$useState2 = _slicedToArray(_React$useState, 2),
229
- query = _React$useState2[0],
230
- setQuery = _React$useState2[1];
231
-
232
- var containerClassName = '';
233
- if (query) containerClassName += ' border-bottom pb-2';
234
- var sortedPlaylists = _libs_common_src_react_utils_ArrayHelper__WEBPACK_IMPORTED_MODULE_2__["ArrayHelper"].sortBy(props.playlists, 'name');
235
- var recentlyAddedTo = _libs_shared_src_apps_playlists_utils_RecentPlaylistHelper__WEBPACK_IMPORTED_MODULE_9__["RecentPlaylistHelper"].getRecentlyAddedTo(props.currentUserId, _libs_common_src_backbone_utils_LocalStorageHelper__WEBPACK_IMPORTED_MODULE_4__["LocalStorageHelper"]);
236
- recentlyAddedTo = recentlyAddedTo.slice(0, RECENT_PLAYLISTS_LIMIT).map(function (id) {
237
- return props.playlists.find(function (p) {
238
- return p.id === id;
239
- });
240
- });
241
- return react__WEBPACK_IMPORTED_MODULE_0__["createElement"](react__WEBPACK_IMPORTED_MODULE_0__["Fragment"], null, react__WEBPACK_IMPORTED_MODULE_0__["createElement"](_libs_shared_src_components_search_bar_SearchBar__WEBPACK_IMPORTED_MODULE_8__["SearchBar"], {
242
- onQueryChange: function onQueryChange(q) {
243
- return setQuery(q.trim());
244
- },
245
- onSuggestionSelected: props.onSelectPlaylist,
246
- updateQueryOnSelection: false,
247
- recentSearches: recentlyAddedTo,
248
- recentSearchHeading: _libs_common_src_backbone_services_LanguageService__WEBPACK_IMPORTED_MODULE_1__["LanguageService"].getPhrase(namespace, 'recentPlaylistsHeading'),
249
- suggestionsHeading: _libs_common_src_backbone_services_LanguageService__WEBPACK_IMPORTED_MODULE_1__["LanguageService"].getPhrase(namespace, 'suggestionsHeading'),
250
- local: sortedPlaylists,
251
- initialSuggestions: sortedPlaylists,
252
- activationLength: 1,
253
- placeholder: _libs_common_src_backbone_services_LanguageService__WEBPACK_IMPORTED_MODULE_1__["LanguageService"].getPhrase(namespace, 'placeholder'),
254
- theme: {
255
- container: containerClassName,
256
- suggestionsContainer: "mt-1 ".concat(_select_playlist_scss__WEBPACK_IMPORTED_MODULE_10___default.a.suggestionContainer),
257
- suggestionsContainerOpen: '',
258
- suggestion: 'cursor-pointer py-1'
259
- },
260
- searchIconPlacement: 'left',
261
- alwaysRenderSuggestions: true,
262
- suggestionLimit: false,
263
- getSuggestionComponent: function getSuggestionComponent(playlist) {
264
- return react__WEBPACK_IMPORTED_MODULE_0__["createElement"](PlaylistSuggestionItem, {
265
- playlist: playlist,
266
- isVideoInPlaylist: props.isVideoInPlaylist
267
- });
268
- },
269
- autoFocusInput: true
270
- }), _libs_common_src_backbone_utils_FunctionHelper__WEBPACK_IMPORTED_MODULE_3__["FunctionHelper"].isFunction(props.createPlaylist) && !!query && react__WEBPACK_IMPORTED_MODULE_0__["createElement"]("div", {
271
- className: 'pt-2 text-break'
272
- }, react__WEBPACK_IMPORTED_MODULE_0__["createElement"]("span", {
273
- className: 'cursor-pointer',
274
- onClick: function onClick() {
275
- return props.createPlaylist(query);
276
- }
277
- }, react__WEBPACK_IMPORTED_MODULE_0__["createElement"](_libs_shared_src_components_svg_container_SvgContainer__WEBPACK_IMPORTED_MODULE_5__["SvgContainer"], {
278
- svgName: _libs_shared_src_utils_SvgHelper__WEBPACK_IMPORTED_MODULE_6__["cvSvgLibrary"].Plus,
279
- size: _libs_shared_src_components_svg_container_SvgContainer__WEBPACK_IMPORTED_MODULE_5__["SvgContainerSize"].Small
280
- }), react__WEBPACK_IMPORTED_MODULE_0__["createElement"](_libs_shared_src_components_text_Text__WEBPACK_IMPORTED_MODULE_7__["Text"], {
281
- namespace: namespace,
282
- phrase: 'createPlaylist',
283
- options: {
284
- name: query
285
- }
286
- }))));
287
- }
288
-
289
- /***/ }),
290
-
291
- /***/ "./src/apps/playlists/components/select-playlist/select-playlist.scss":
292
- /*!****************************************************************************!*\
293
- !*** ./src/apps/playlists/components/select-playlist/select-playlist.scss ***!
294
- \****************************************************************************/
295
- /*! no static exports found */
296
- /***/ (function(module, exports, __webpack_require__) {
297
-
298
- // extracted by mini-css-extract-plugin
299
- module.exports = {"suggestionContainer":"cv--suggestionContainer--2omIR"};
300
-
301
- /***/ }),
302
-
303
- /***/ "./src/apps/playlists/interfaces/PlaylistCollectionIdentifier.ts":
304
- /*!***********************************************************************!*\
305
- !*** ./src/apps/playlists/interfaces/PlaylistCollectionIdentifier.ts ***!
306
- \***********************************************************************/
307
- /*! exports provided: PlaylistCollectionIdentifier */
308
- /***/ (function(module, __webpack_exports__, __webpack_require__) {
309
-
310
- "use strict";
311
- __webpack_require__.r(__webpack_exports__);
312
- /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "PlaylistCollectionIdentifier", function() { return PlaylistCollectionIdentifier; });
313
- /* harmony import */ var _libs_common_src_backbone_interfaces__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../../../../../libs/common/src/backbone/interfaces */ "../../libs/common/src/backbone/interfaces/index.ts");
314
- /* harmony import */ var _libs_shared_src_apps_playlists_enums_PlaylistSortType__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../../../../../libs/shared/src/apps/playlists/enums/PlaylistSortType */ "../../libs/shared/src/apps/playlists/enums/PlaylistSortType.ts");
315
- function _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); }
316
-
317
- function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
318
-
319
- function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); }
320
-
321
- function _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }
322
-
323
- function _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }
324
-
325
- function _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === "object" || typeof call === "function")) { return call; } return _assertThisInitialized(self); }
326
-
327
- function _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return self; }
328
-
329
- function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } }
330
-
331
- function _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }
332
-
333
-
334
-
335
- var PlaylistCollectionIdentifier = /*#__PURE__*/function (_BaseCollectionIdenti) {
336
- _inherits(PlaylistCollectionIdentifier, _BaseCollectionIdenti);
337
-
338
- var _super = _createSuper(PlaylistCollectionIdentifier);
339
-
340
- function PlaylistCollectionIdentifier() {
341
- var sort = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : _libs_shared_src_apps_playlists_enums_PlaylistSortType__WEBPACK_IMPORTED_MODULE_1__["PlaylistSortType"].Newest;
342
- var cursor = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : '';
343
-
344
- _classCallCheck(this, PlaylistCollectionIdentifier);
345
-
346
- return _super.call(this, {
347
- collectionPrefix: 'user:playlists',
348
- cursor: cursor,
349
- sort: sort
350
- });
351
- }
352
-
353
- return PlaylistCollectionIdentifier;
354
- }(_libs_common_src_backbone_interfaces__WEBPACK_IMPORTED_MODULE_0__["BaseCollectionIdentifier"]);
355
-
356
- /***/ }),
357
-
358
- /***/ "./src/apps/playlists/views/add-to-playlist/AddToPlaylistView.tsx":
359
- /*!************************************************************************!*\
360
- !*** ./src/apps/playlists/views/add-to-playlist/AddToPlaylistView.tsx ***!
361
- \************************************************************************/
362
- /*! exports provided: AddToPlaylistView */
363
- /***/ (function(module, __webpack_exports__, __webpack_require__) {
364
-
365
- "use strict";
366
- __webpack_require__.r(__webpack_exports__);
367
- /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "AddToPlaylistView", function() { return AddToPlaylistView; });
368
- /* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ "react");
369
- /* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_0__);
370
- /* harmony import */ var react_redux__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! react-redux */ "react-redux");
371
- /* harmony import */ var react_redux__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(react_redux__WEBPACK_IMPORTED_MODULE_1__);
372
- /* harmony import */ var react_bootstrap__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! react-bootstrap */ "react-bootstrap");
373
- /* harmony import */ var react_bootstrap__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(react_bootstrap__WEBPACK_IMPORTED_MODULE_2__);
374
- /* harmony import */ var _libs_common_src_backbone_services_LanguageService__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../../../../../../../libs/common/src/backbone/services/LanguageService */ "../../libs/common/src/backbone/services/LanguageService.tsx");
375
- /* harmony import */ var _libs_common_src_react__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../../../../../../../libs/common/src/react */ "../../libs/common/src/react/index.ts");
376
- /* harmony import */ var _libs_common_src_backbone_utils_LocalStorageHelper__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../../../../../../../libs/common/src/backbone/utils/LocalStorageHelper */ "../../libs/common/src/backbone/utils/LocalStorageHelper.ts");
377
- /* harmony import */ var _libs_shared_src_components_popup_Popup__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../../../../../../../libs/shared/src/components/popup/Popup */ "../../libs/shared/src/components/popup/Popup.tsx");
378
- /* harmony import */ var _libs_shared_src_components_text_Text__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ../../../../../../../libs/shared/src/components/text/Text */ "../../libs/shared/src/components/text/Text.tsx");
379
- /* harmony import */ var _libs_shared_src_hooks_UseFetchAll__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ../../../../../../../libs/shared/src/hooks/UseFetchAll */ "../../libs/shared/src/hooks/UseFetchAll.ts");
380
- /* harmony import */ var _libs_shared_src_flight_requests_UserRequests__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ../../../../../../../libs/shared/src/flight-requests/UserRequests */ "../../libs/shared/src/flight-requests/UserRequests.ts");
381
- /* harmony import */ var _libs_shared_src_flight_requests_PlaylistRequests__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ../../../../../../../libs/shared/src/flight-requests/PlaylistRequests */ "../../libs/shared/src/flight-requests/PlaylistRequests.ts");
382
- /* harmony import */ var _libs_shared_src_apps_playlists_utils_RecentPlaylistHelper__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! ../../../../../../../libs/shared/src/apps/playlists/utils/RecentPlaylistHelper */ "../../libs/shared/src/apps/playlists/utils/RecentPlaylistHelper.ts");
383
- /* harmony import */ var _libs_shared_src_apps_playlists_enums_PlaylistSortType__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! ../../../../../../../libs/shared/src/apps/playlists/enums/PlaylistSortType */ "../../libs/shared/src/apps/playlists/enums/PlaylistSortType.ts");
384
- /* harmony import */ var _libs_shared_src_hooks_UseSelectAllPages__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! ../../../../../../../libs/shared/src/hooks/UseSelectAllPages */ "../../libs/shared/src/hooks/UseSelectAllPages.ts");
385
- /* harmony import */ var shared_flight_requests_VideoRequests__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(/*! shared/flight-requests/VideoRequests */ "./src/shared/flight-requests/VideoRequests.ts");
386
- /* harmony import */ var apps_playlists_interfaces_PlaylistCollectionIdentifier__WEBPACK_IMPORTED_MODULE_15__ = __webpack_require__(/*! apps/playlists/interfaces/PlaylistCollectionIdentifier */ "./src/apps/playlists/interfaces/PlaylistCollectionIdentifier.ts");
387
- /* harmony import */ var apps_playlists_components_select_playlist_SelectPlaylist__WEBPACK_IMPORTED_MODULE_16__ = __webpack_require__(/*! apps/playlists/components/select-playlist/SelectPlaylist */ "./src/apps/playlists/components/select-playlist/SelectPlaylist.tsx");
388
- function _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); }
389
-
390
- function _nonIterableRest() { throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); }
391
-
392
- function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }
393
-
394
- function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }
395
-
396
- function _iterableToArrayLimit(arr, i) { if (typeof Symbol === "undefined" || !(Symbol.iterator in Object(arr))) return; var _arr = []; var _n = true; var _d = false; var _e = undefined; try { for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i["return"] != null) _i["return"](); } finally { if (_d) throw _e; } } return _arr; }
397
-
398
- function _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }
399
-
400
-
401
-
402
-
403
-
404
-
405
-
406
-
407
-
408
-
409
-
410
-
411
-
412
-
413
-
414
-
415
-
416
-
417
- var namespace = 'playlists.addToPlaylist';
418
- var getPhrase = _libs_common_src_backbone_services_LanguageService__WEBPACK_IMPORTED_MODULE_3__["LanguageService"].encloseNamespace(namespace);
419
-
420
- var getPlaylistsRequest = function getPlaylistsRequest(cursor) {
421
- return _libs_shared_src_flight_requests_PlaylistRequests__WEBPACK_IMPORTED_MODULE_10__["PlaylistRequests"].getUserPlaylists(new apps_playlists_interfaces_PlaylistCollectionIdentifier__WEBPACK_IMPORTED_MODULE_15__["PlaylistCollectionIdentifier"](_libs_shared_src_apps_playlists_enums_PlaylistSortType__WEBPACK_IMPORTED_MODULE_12__["PlaylistSortType"].AtoZ, cursor));
422
- };
423
-
424
- var getVideoPlaylistsRequest = function getVideoPlaylistsRequest(videoId, userId) {
425
- return function (cursor) {
426
- return _libs_shared_src_flight_requests_PlaylistRequests__WEBPACK_IMPORTED_MODULE_10__["PlaylistRequests"].getVideoPlaylists(videoId, userId, cursor);
427
- };
428
- };
429
-
430
- function AddToPlaylistView(props) {
431
- var dispatch = Object(react_redux__WEBPACK_IMPORTED_MODULE_1__["useDispatch"])();
432
-
433
- var _React$useState = react__WEBPACK_IMPORTED_MODULE_0__["useState"](false),
434
- _React$useState2 = _slicedToArray(_React$useState, 2),
435
- isSubmitting = _React$useState2[0],
436
- setIsSubmitting = _React$useState2[1];
437
-
438
- var user = _libs_common_src_react__WEBPACK_IMPORTED_MODULE_4__["Flight"].useBasicFetch(_libs_shared_src_flight_requests_UserRequests__WEBPACK_IMPORTED_MODULE_9__["UserRequests"].currentUser);
439
- var video = _libs_common_src_react__WEBPACK_IMPORTED_MODULE_4__["Flight"].useBasicFetch(shared_flight_requests_VideoRequests__WEBPACK_IMPORTED_MODULE_14__["VideoRequests"].video(props.videoId));
440
- var playlists = Object(_libs_shared_src_hooks_UseSelectAllPages__WEBPACK_IMPORTED_MODULE_13__["useSelectAllPages"])(function (cursor) {
441
- return getPlaylistsRequest(cursor).key;
442
- });
443
- var videoPlaylists = Object(_libs_shared_src_hooks_UseSelectAllPages__WEBPACK_IMPORTED_MODULE_13__["useSelectAllPages"])(function (cursor) {
444
- return !!user.data && getVideoPlaylistsRequest(props.videoId, user.data.id)(cursor).key;
445
- });
446
- var videoPlaylistIds = !!videoPlaylists.items && videoPlaylists.items.map(function (p) {
447
- return p.id;
448
- });
449
-
450
- var fetchNextPlaylists = function fetchNextPlaylists(cursor) {
451
- _libs_common_src_react__WEBPACK_IMPORTED_MODULE_4__["Flight"].getFetch(dispatch, getPlaylistsRequest(cursor))();
452
- };
453
-
454
- var fetchNextVideoPlaylists = function fetchNextVideoPlaylists(cursor) {
455
- _libs_common_src_react__WEBPACK_IMPORTED_MODULE_4__["Flight"].getFetch(dispatch, getVideoPlaylistsRequest(props.videoId, user.data.id)(cursor))();
456
- };
457
-
458
- Object(_libs_shared_src_hooks_UseFetchAll__WEBPACK_IMPORTED_MODULE_8__["useFetchAll"])(getPlaylistsRequest, fetchNextPlaylists);
459
- Object(_libs_shared_src_hooks_UseFetchAll__WEBPACK_IMPORTED_MODULE_8__["useFetchAll"])(!!user.data && getVideoPlaylistsRequest(props.videoId, user.data.id), !!user.data && fetchNextVideoPlaylists);
460
-
461
- var addToPlaylist = function addToPlaylist(playlist) {
462
- setIsSubmitting(true);
463
-
464
- var onSuccess = function onSuccess() {
465
- props.closePopup();
466
- _libs_shared_src_apps_playlists_utils_RecentPlaylistHelper__WEBPACK_IMPORTED_MODULE_11__["RecentPlaylistHelper"].addRecentlyAddedTo(user.data.id, _libs_common_src_backbone_utils_LocalStorageHelper__WEBPACK_IMPORTED_MODULE_5__["LocalStorageHelper"], {
467
- id: playlist.id
468
- });
469
- };
470
-
471
- _libs_common_src_react__WEBPACK_IMPORTED_MODULE_4__["Flight"].fetch(dispatch, _libs_shared_src_flight_requests_PlaylistRequests__WEBPACK_IMPORTED_MODULE_10__["PlaylistRequests"].addToPlaylist(playlist.id, [props.videoId], onSuccess, props.closePopup));
472
- };
473
-
474
- var createPlaylist = function createPlaylist(name) {
475
- setIsSubmitting(true);
476
- _libs_common_src_react__WEBPACK_IMPORTED_MODULE_4__["Flight"].fetch(dispatch, _libs_shared_src_flight_requests_PlaylistRequests__WEBPACK_IMPORTED_MODULE_10__["PlaylistRequests"].createPlaylist(user.data.id, {
477
- name: name
478
- }, function (newPlaylist) {
479
- if (!newPlaylist || !newPlaylist.id) return;
480
- addToPlaylist(newPlaylist);
481
- }));
482
- };
483
-
484
- var onSelectPlaylist = function onSelectPlaylist(playlist) {
485
- if (videoPlaylistIds.includes(playlist.id)) return;
486
- addToPlaylist(playlist);
487
- };
488
-
489
- var dataLoaded = !!video.data && !!playlists.items && !playlists.nextCursor && !!user.data && !!videoPlaylists.items && !videoPlaylists.nextCursor;
490
- return react__WEBPACK_IMPORTED_MODULE_0__["createElement"](_libs_shared_src_components_popup_Popup__WEBPACK_IMPORTED_MODULE_6__["Popup"], {
491
- title: getPhrase('heading'),
492
- closePopup: props.closePopup,
493
- showLoadingSpinner: !dataLoaded
494
- }, dataLoaded && react__WEBPACK_IMPORTED_MODULE_0__["createElement"](react__WEBPACK_IMPORTED_MODULE_0__["Fragment"], null, react__WEBPACK_IMPORTED_MODULE_0__["createElement"]("div", {
495
- className: 'mb-2'
496
- }, react__WEBPACK_IMPORTED_MODULE_0__["createElement"](_libs_shared_src_components_text_Text__WEBPACK_IMPORTED_MODULE_7__["Text"], {
497
- namespace: namespace,
498
- phrase: 'selectPlaylist',
499
- options: {
500
- video: video.data.name
501
- }
502
- })), !isSubmitting ? react__WEBPACK_IMPORTED_MODULE_0__["createElement"](apps_playlists_components_select_playlist_SelectPlaylist__WEBPACK_IMPORTED_MODULE_16__["SelectPlaylist"], {
503
- playlists: playlists.items,
504
- currentUserId: user.data.id,
505
- onSelectPlaylist: onSelectPlaylist,
506
- isVideoInPlaylist: function isVideoInPlaylist(playlist) {
507
- return videoPlaylistIds.includes(playlist.id);
508
- },
509
- createPlaylist: createPlaylist
510
- }) : react__WEBPACK_IMPORTED_MODULE_0__["createElement"]("div", {
511
- className: 'text-center'
512
- }, react__WEBPACK_IMPORTED_MODULE_0__["createElement"](react_bootstrap__WEBPACK_IMPORTED_MODULE_2__["Spinner"], {
513
- as: 'span',
514
- animation: 'border',
515
- role: 'status',
516
- size: 'sm'
517
- }))));
518
- }
519
-
520
- /***/ })
521
-
522
- }]);
523
- //# sourceMappingURL=34.chunk.js.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":["file://C:/ClickView Projects/@clickview/packages/libs/shared/src/apps/playlists/utils/RecentPlaylistHelper.ts","file://C:/ClickView Projects/@clickview/packages/libs/shared/src/hooks/UseFetchAll.ts","file://C:/ClickView Projects/@clickview/packages/libs/shared/src/hooks/UseSelectAllPages.ts","file://C:/ClickView Projects/@clickview/packages/projects/lite/src/apps/playlists/components/select-playlist/SelectPlaylist.tsx","webpack://@clickview/lite/./src/apps/playlists/components/select-playlist/select-playlist.scss?9042","file://C:/ClickView Projects/@clickview/packages/projects/lite/src/apps/playlists/interfaces/PlaylistCollectionIdentifier.ts","file://C:/ClickView Projects/@clickview/packages/projects/lite/src/apps/playlists/views/add-to-playlist/AddToPlaylistView.tsx"],"names":[],"mappings":"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","file":"scripts/34.chunk.js","sourcesContent":["import { StorageHelper } from 'libs/common/backbone/utils/LocalStorageHelper';\r\n\r\nconst getCacheKey = (userId: string) => `recent:playlists:added:to:${userId}`;\r\n\r\nconst DEFAULT_STORAGE_LIMIT = 5;\r\n\r\ninterface AddRecentPlaylistsOptions {\r\n id: string;\r\n limit?: number;\r\n}\r\n\r\nexport const RecentPlaylistHelper = {\r\n /**\r\n * Get a list of ids of playlists recently added to.\r\n */\r\n getRecentlyAddedTo(userId: string, dataSource: StorageHelper): string[] {\r\n let recentlyAddedTo = dataSource.cacheGet(getCacheKey(userId));\r\n\r\n if (!Array.isArray(recentlyAddedTo))\r\n recentlyAddedTo = [];\r\n\r\n return recentlyAddedTo;\r\n },\r\n\r\n setRecentlyAddedTo(userId: string, ids: string[], dataSource: StorageHelper): void {\r\n if (!Array.isArray(ids))\r\n return;\r\n\r\n dataSource.cacheSet(getCacheKey(userId), ids);\r\n },\r\n\r\n addRecentlyAddedTo(userId: string, dataSource: StorageHelper, options: AddRecentPlaylistsOptions): string[] {\r\n const { id, limit = DEFAULT_STORAGE_LIMIT } = options;\r\n\r\n let recentlyAddedTo = RecentPlaylistHelper.getRecentlyAddedTo(userId, dataSource);\r\n\r\n const idIndex = recentlyAddedTo.indexOf(id);\r\n\r\n /**\r\n * If the playlists is already in the stored list, \r\n * remove it to first position so that it will be inserted\r\n * at the first position.\r\n */\r\n if (idIndex > -1)\r\n recentlyAddedTo.splice(idIndex, 1);\r\n\r\n recentlyAddedTo.unshift(id);\r\n\r\n if (recentlyAddedTo.length > limit)\r\n recentlyAddedTo = recentlyAddedTo.slice(0, limit);\r\n\r\n RecentPlaylistHelper.setRecentlyAddedTo(userId, recentlyAddedTo, dataSource);\r\n\r\n return recentlyAddedTo;\r\n }\r\n};","import { useEffect } from 'react';\r\n\r\nimport { Flight } from 'libs/common/flight';\r\nimport { BaseObject } from 'libs/shared/interfaces';\r\nimport { useSelectAllPages } from './UseSelectAllPages';\r\n\r\n/**\r\n * Hook to fetch all pages of a collection.\r\n * \r\n * @param getRequest - callback function to get the request for each page.\r\n * Can be false if the request requires data that hasn't yet been fetched - e.g. user id.\r\n * \r\n * @param fetchNext - callback function to fetch a page.\r\n * Can be false if the request requires data that hasn't yet been fetched - e.g. user id.\r\n */\r\nexport function useFetchAll<T extends BaseObject>(\r\n getRequest: ((cursor?: string) => Flight.Request) | false,\r\n fetchNext: ((cursor?: string) => void) | false\r\n): void {\r\n const getRequestFn = (getRequest as Function);\r\n const fetchNextFn = (fetchNext as Function);\r\n\r\n const response = useSelectAllPages<T>(getRequest && ((cursor?: string) => getRequestFn(cursor).key));\r\n\r\n useEffect(() => {\r\n if (response.shouldInitialFetch && fetchNext)\r\n fetchNextFn();\r\n }, [ response.shouldInitialFetch, fetchNext ]);\r\n\r\n useEffect(() => {\r\n if (!response.nextCursor || response.isFetching || !fetchNext)\r\n return;\r\n\r\n fetchNextFn(response.nextCursor);\r\n }, [ response.nextCursor, response.isFetching, fetchNext ]);\r\n}","import { useMemo } from 'react';\r\nimport { useSelector } from 'react-redux';\r\n\r\nimport { Flight } from 'libs/common/flight';\r\nimport { FunctionHelper } from 'libs/common/backbone/utils/FunctionHelper';\r\nimport { ApplicationState } from 'libs/common/react/interfaces';\r\nimport { BasePaginatedCollection } from 'libs/shared/interfaces';\r\n\r\nconst safeGetCursor = (request: Flight.Response<any>): string => {\r\n return request\r\n && request.data\r\n && request.data.pagination\r\n && request.data.pagination.cursors\r\n && request.data.pagination.cursors.next;\r\n};\r\n\r\ninterface SelectAllPagesResult<T> {\r\n items: T[];\r\n shouldInitialFetch: boolean;\r\n nextCursor: string;\r\n isFetching: boolean;\r\n}\r\n\r\n/**\r\n * Hook to select all pages of a collection from the store and flatten them.\r\n * It will not trigger any fetches.\r\n * \r\n * @param getKey - callback function to get the key for each page.\r\n * Can be false if the key requires data that hasn't yet been fetched - e.g. user id.\r\n */\r\nexport function useSelectAllPages<T>(getKey: ((cursor?: string) => string) | false): SelectAllPagesResult<T> {\r\n return useSelector(useMemo(() => (state: ApplicationState) => {\r\n const getKeyFn = (getKey as Function);\r\n\r\n let request = FunctionHelper.isFunction(getKey) &&\r\n Flight.getResponse<BasePaginatedCollection<T>>(state, getKeyFn());\r\n\r\n let isFetching = request && request.isFetching;\r\n const shouldInitialFetch = request && request.shouldFetch;\r\n\r\n let items = request && request.data && request.data.data;\r\n let nextCursor = safeGetCursor(request);\r\n\r\n // Retrieve all pages that are currently in the store.\r\n while (nextCursor) {\r\n request = Flight.getResponse<BasePaginatedCollection<T>>(state, getKeyFn(nextCursor));\r\n\r\n isFetching = request.isFetching;\r\n\r\n // If next page hasn't been fetched, break.\r\n if (request.shouldFetch)\r\n break;\r\n\r\n let newItems = request.data && request.data.data;\r\n newItems && items.push(...newItems);\r\n\r\n nextCursor = safeGetCursor(request);\r\n }\r\n\r\n return {\r\n shouldInitialFetch,\r\n items,\r\n nextCursor,\r\n isFetching,\r\n };\r\n }, [getKey]));\r\n}","import * as React from 'react';\r\n\r\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\r\nimport { ArrayHelper } from 'libs/common/react/utils/ArrayHelper';\r\nimport { FunctionHelper } from 'libs/common/backbone/utils/FunctionHelper';\r\nimport { LocalStorageHelper } from 'libs/common/backbone/utils/LocalStorageHelper';\r\n\r\nimport { Playlist } from 'libs/shared/interfaces';\r\nimport { SvgContainer, SvgContainerSize } from 'libs/shared/components/svg-container/SvgContainer';\r\nimport { cvSvgLibrary } from 'libs/shared/utils/SvgHelper';\r\nimport { Text } from 'libs/shared/components/text/Text';\r\nimport { SearchBar } from 'libs/shared/components/search-bar/SearchBar';\r\nimport { RecentPlaylistHelper } from 'libs/shared/apps/playlists/utils/RecentPlaylistHelper';\r\n\r\nimport styles from './select-playlist.scss';\r\n\r\nconst namespace = 'playlists.selectPlaylist';\r\n\r\nconst RECENT_PLAYLISTS_LIMIT = 3;\r\n\r\ninterface PlaylistSuggestionItemProps {\r\n playlist: Playlist;\r\n isVideoInPlaylist?: (playlist: Playlist) => boolean;\r\n}\r\n\r\nfunction PlaylistSuggestionItem(props: PlaylistSuggestionItemProps): JSX.Element {\r\n const isVideoInPlaylist = FunctionHelper.isFunction(props.isVideoInPlaylist)\r\n && props.isVideoInPlaylist(props.playlist);\r\n\r\n const className = isVideoInPlaylist ? '' : 'cursor-pointer';\r\n\r\n const svgName = isVideoInPlaylist ? cvSvgLibrary.Check : cvSvgLibrary.Plus;\r\n\r\n let svgContainerClassName = 'd-inline-block svg-container';\r\n\r\n if (isVideoInPlaylist)\r\n svgContainerClassName += ' text-success';\r\n\r\n const title = isVideoInPlaylist ? 'This video is already in this playlist' : '';\r\n\r\n return (\r\n <span className={className}>\r\n <SvgContainer svgName={svgName} size={SvgContainerSize.Small} className={svgContainerClassName} title={title} />\r\n <span className='ml-2'>{props.playlist.name}</span>\r\n </span>\r\n );\r\n}\r\n\r\ninterface SelectPlaylistProps {\r\n playlists: Playlist[];\r\n currentUserId: string;\r\n onSelectPlaylist: (playlist: Playlist) => void;\r\n isVideoInPlaylist?: (playlist: Playlist) => boolean;\r\n createPlaylist?: (name: string) => void;\r\n}\r\n\r\nexport function SelectPlaylist(props: SelectPlaylistProps): JSX.Element {\r\n const [ query, setQuery ] = React.useState('');\r\n\r\n let containerClassName = '';\r\n\r\n if (query)\r\n containerClassName += ' border-bottom pb-2';\r\n\r\n const sortedPlaylists = ArrayHelper.sortBy(props.playlists, 'name');\r\n\r\n let recentlyAddedTo: Playlist[] | string[] =\r\n RecentPlaylistHelper.getRecentlyAddedTo(props.currentUserId, LocalStorageHelper);\r\n\r\n recentlyAddedTo = recentlyAddedTo.slice(0, RECENT_PLAYLISTS_LIMIT).map(id => props.playlists.find(p => p.id === id));\r\n\r\n return (\r\n <>\r\n <SearchBar\r\n onQueryChange={(q: string) => setQuery(q.trim())}\r\n onSuggestionSelected={props.onSelectPlaylist}\r\n updateQueryOnSelection={false}\r\n recentSearches={recentlyAddedTo}\r\n recentSearchHeading={LanguageService.getPhrase(namespace, 'recentPlaylistsHeading')}\r\n suggestionsHeading={LanguageService.getPhrase(namespace, 'suggestionsHeading')}\r\n local={sortedPlaylists}\r\n initialSuggestions={sortedPlaylists}\r\n activationLength={1}\r\n placeholder={LanguageService.getPhrase(namespace, 'placeholder')}\r\n theme={{\r\n container: containerClassName,\r\n suggestionsContainer: `mt-1 ${styles.suggestionContainer}`,\r\n suggestionsContainerOpen: '',\r\n suggestion: 'cursor-pointer py-1'\r\n }}\r\n searchIconPlacement='left'\r\n alwaysRenderSuggestions\r\n suggestionLimit={false}\r\n getSuggestionComponent={(playlist: Playlist) =>\r\n <PlaylistSuggestionItem playlist={playlist} isVideoInPlaylist={props.isVideoInPlaylist} />\r\n }\r\n autoFocusInput\r\n />\r\n {FunctionHelper.isFunction(props.createPlaylist) && !!query &&\r\n <div className='pt-2 text-break'>\r\n <span className='cursor-pointer' onClick={() => props.createPlaylist(query)}>\r\n <SvgContainer svgName={cvSvgLibrary.Plus} size={SvgContainerSize.Small} />\r\n <Text namespace={namespace} phrase='createPlaylist' options={{ name: query }} />\r\n </span>\r\n </div>\r\n }\r\n </>\r\n );\r\n}","// extracted by mini-css-extract-plugin\nmodule.exports = {\"suggestionContainer\":\"cv--suggestionContainer--2omIR\"};","import { BaseCollectionIdentifier } from 'libs/common/backbone/interfaces';\r\nimport { PlaylistSortType } from 'libs/shared/apps/playlists/enums/PlaylistSortType';\r\n\r\nexport class PlaylistCollectionIdentifier extends BaseCollectionIdentifier<PlaylistSortType> {\r\n constructor(sort: PlaylistSortType = PlaylistSortType.Newest, cursor: string = '') {\r\n super({ collectionPrefix: 'user:playlists', cursor, sort });\r\n }\r\n}","import * as React from 'react';\r\nimport { useDispatch } from 'react-redux';\r\nimport { Spinner } from 'react-bootstrap';\r\n\r\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\r\nimport { Flight } from 'libs/common/flight';\r\nimport { LocalStorageHelper } from 'libs/common/backbone/utils/LocalStorageHelper';\r\n\r\nimport { PopupViewProps, Video, Playlist, User } from 'libs/shared/interfaces';\r\nimport { Popup } from 'libs/shared/components/popup/Popup';\r\nimport { Text } from 'libs/shared/components/text/Text';\r\nimport { useFetchAll } from 'libs/shared/hooks/UseFetchAll';\r\nimport { UserRequests } from 'libs/shared/flight-requests/UserRequests';\r\nimport { PlaylistRequests } from 'libs/shared/flight-requests/PlaylistRequests';\r\nimport { RecentPlaylistHelper } from 'libs/shared/apps/playlists/utils/RecentPlaylistHelper';\r\nimport { PlaylistSortType } from 'libs/shared/apps/playlists/enums/PlaylistSortType';\r\nimport { useSelectAllPages } from 'libs/shared/hooks/UseSelectAllPages';\r\n\r\nimport { VideoRequests } from 'shared/flight-requests/VideoRequests';\r\n\r\nimport { PlaylistCollectionIdentifier } from 'apps/playlists/interfaces/PlaylistCollectionIdentifier';\r\n\r\nimport { SelectPlaylist } from 'apps/playlists/components/select-playlist/SelectPlaylist';\r\n\r\nconst namespace = 'playlists.addToPlaylist';\r\nconst getPhrase = LanguageService.encloseNamespace(namespace);\r\n\r\nconst getPlaylistsRequest = (cursor?: string) =>\r\n PlaylistRequests.getUserPlaylists(new PlaylistCollectionIdentifier(PlaylistSortType.AtoZ, cursor));\r\n\r\nconst getVideoPlaylistsRequest = (videoId: string, userId: string) => (cursor?: string) =>\r\n PlaylistRequests.getVideoPlaylists(videoId, userId, cursor);\r\n\r\ninterface AddToPlaylistViewProps {\r\n videoId: string;\r\n}\r\n\r\nexport function AddToPlaylistView(props: AddToPlaylistViewProps & PopupViewProps): JSX.Element {\r\n const dispatch = useDispatch();\r\n\r\n const [ isSubmitting, setIsSubmitting ] = React.useState(false);\r\n\r\n const user = Flight.useBasicFetch<User>(UserRequests.currentUser);\r\n const video = Flight.useBasicFetch<Video>(VideoRequests.video(props.videoId));\r\n const playlists = useSelectAllPages<Playlist>((cursor?: string) => getPlaylistsRequest(cursor).key);\r\n const videoPlaylists = useSelectAllPages<Playlist>((cursor?: string) =>\r\n !!user.data && getVideoPlaylistsRequest(props.videoId, user.data.id)(cursor).key);\r\n\r\n const videoPlaylistIds = !!videoPlaylists.items && videoPlaylists.items.map(p => p.id);\r\n\r\n const fetchNextPlaylists = (cursor?: string) => {\r\n Flight.getFetch(dispatch, getPlaylistsRequest(cursor))();\r\n };\r\n\r\n const fetchNextVideoPlaylists = (cursor?: string) => {\r\n Flight.getFetch(dispatch, getVideoPlaylistsRequest(props.videoId, user.data.id)(cursor))();\r\n };\r\n\r\n useFetchAll(getPlaylistsRequest, fetchNextPlaylists);\r\n useFetchAll(\r\n !!user.data && getVideoPlaylistsRequest(props.videoId, user.data.id),\r\n !!user.data && fetchNextVideoPlaylists\r\n );\r\n\r\n const addToPlaylist = (playlist: Playlist) => {\r\n setIsSubmitting(true);\r\n\r\n const onSuccess = () => {\r\n props.closePopup();\r\n RecentPlaylistHelper.addRecentlyAddedTo(user.data.id, LocalStorageHelper, { id: playlist.id });\r\n };\r\n\r\n Flight.fetch(dispatch, PlaylistRequests.addToPlaylist(playlist.id, [props.videoId], onSuccess, props.closePopup));\r\n };\r\n\r\n const createPlaylist = (name: string) => {\r\n setIsSubmitting(true);\r\n\r\n Flight.fetch(dispatch, PlaylistRequests.createPlaylist(user.data.id, { name }, (newPlaylist: Playlist) => {\r\n if (!newPlaylist || !newPlaylist.id)\r\n return;\r\n\r\n addToPlaylist(newPlaylist);\r\n }));\r\n };\r\n\r\n const onSelectPlaylist = (playlist: Playlist) => {\r\n if (videoPlaylistIds.includes(playlist.id))\r\n return;\r\n\r\n addToPlaylist(playlist);\r\n };\r\n\r\n const dataLoaded = !!video.data\r\n && !!playlists.items\r\n && !playlists.nextCursor\r\n && !!user.data\r\n && !!videoPlaylists.items\r\n && !videoPlaylists.nextCursor;\r\n\r\n return (\r\n <Popup title={getPhrase('heading')} closePopup={props.closePopup} showLoadingSpinner={!dataLoaded}>\r\n {dataLoaded &&\r\n <>\r\n <div className='mb-2'>\r\n <Text namespace={namespace} phrase='selectPlaylist' options={{ video: video.data.name }} />\r\n </div>\r\n {!isSubmitting\r\n ? <SelectPlaylist\r\n playlists={playlists.items}\r\n currentUserId={user.data.id}\r\n onSelectPlaylist={onSelectPlaylist}\r\n isVideoInPlaylist={(playlist: Playlist) => (videoPlaylistIds.includes(playlist.id))}\r\n createPlaylist={createPlaylist}\r\n />\r\n : <div className='text-center'>\r\n <Spinner as='span' animation='border' role='status' size='sm' />\r\n </div>\r\n }\r\n </>\r\n }\r\n </Popup>\r\n );\r\n}"],"sourceRoot":""}
@@ -1 +0,0 @@
1
- (window.webpackJsonp_clickview_lite=window.webpackJsonp_clickview_lite||[]).push([[35],{414:function(e,t,n){"use strict";n.d(t,"a",(function(){return o})),n.d(t,"b",(function(){return s}));var a=n(0),i=n(411),r=n(26),l=n(36),c=function(e,t){var n={};for(var a in e)Object.prototype.hasOwnProperty.call(e,a)&&t.indexOf(a)<0&&(n[a]=e[a]);if(null!=e&&"function"==typeof Object.getOwnPropertySymbols){var i=0;for(a=Object.getOwnPropertySymbols(e);i<a.length;i++)t.indexOf(a[i])<0&&Object.prototype.propertyIsEnumerable.call(e,a[i])&&(n[a[i]]=e[a[i]])}return n};function o(e){const{castInitialValues:t,castValuesOnSubmit:n,initialValues:o,onSubmit:s,resetOnSubmit:u}=e,m=c(e,["castInitialValues","castValuesOnSubmit","initialValues","onSubmit","resetOnSubmit"]),d=t&&e.validationSchema?e.validationSchema.cast(function e(t){const n=l.a.deepClone(t);return Object.keys(n).forEach(t=>{n.hasOwnProperty(t)&&(l.a.isObject(n[t])?n[t]=e(n[t]):null===n[t]&&delete n[t])}),n}(o)):o,b={allowInitialSubmit:e.allowInitialSubmit};return a.createElement(i.d,Object.assign({enableReinitialize:!0},m,{initialValues:d,onSubmit:(t,{setSubmitting:a,resetForm:i})=>{const r=n&&e.validationSchema?e.validationSchema.cast(t):t;s(r,()=>{u&&i(),a(!1)})},initialStatus:b}),r.a.isFunction(e.children)?t=>e.children(t):a.Children.count(e.children)?e.children:null)}function s(){return Object(i.f)()}o.defaultProps={castInitialValues:!0,castValuesOnSubmit:!0}},420:function(e,t,n){"use strict";n.d(t,"a",(function(){return i}));var a=n(411);const i={getCustomFormControlClassName(e,t,n,i){let r="form-control";return Object(a.e)(t,n)&&Object(a.e)(e,n)&&(r+=" is-invalid"),i&&(r+=" "+i),r}}},422:function(e,t,n){"use strict";var a=n(0),i=n(411),r=n(28),l=n(26),c=n(420);function o(e){const{values:t}=Object(i.f)(),n=t[e.fieldName];return"string"!=typeof n?a.createElement(a.Fragment,null):a.createElement("div",{className:"float-right text-muted"},n.length,"/",e.limit)}var s=function(e,t){var n={};for(var a in e)Object.prototype.hasOwnProperty.call(e,a)&&t.indexOf(a)<0&&(n[a]=e[a]);if(null!=e&&"function"==typeof Object.getOwnPropertySymbols){var i=0;for(a=Object.getOwnPropertySymbols(e);i<a.length;i++)t.indexOf(a[i])<0&&Object.prototype.propertyIsEnumerable.call(e,a[i])&&(n[a[i]]=e[a[i]])}return n};function u(e){const{label:t}=e,n=s(e,["label"]);return a.createElement(r.Form.Group,null,a.createElement("div",{className:"custom-control custom-checkbox"},a.createElement(d,Object.assign({className:"custom-control-input"},n)),a.createElement(r.Form.Label,{className:"custom-control-label",htmlFor:n.id},t)))}n.d(t,"a",(function(){return d})),n.d(t,"b",(function(){return b}));var m=function(e,t){var n={};for(var a in e)Object.prototype.hasOwnProperty.call(e,a)&&t.indexOf(a)<0&&(n[a]=e[a]);if(null!=e&&"function"==typeof Object.getOwnPropertySymbols){var i=0;for(a=Object.getOwnPropertySymbols(e);i<a.length;i++)t.indexOf(a[i])<0&&Object.prototype.propertyIsEnumerable.call(e,a[i])&&(n[a[i]]=e[a[i]])}return n};function d(e){const{children:t}=e,n=m(e,["children"]);return a.createElement(i.b,Object.assign({},n),l.a.isFunction(t)?e=>t(e):a.Children.count(t)?t:null)}function b(e){const{label:t,className:n,showCharacterCounter:l}=e,s=m(e,["label","className","showCharacterCounter"]),{errors:b,touched:p}=Object(i.f)();return"checkbox"===s.type?a.createElement(u,Object.assign({},e)):a.createElement(r.Form.Group,null,!!t&&a.createElement(r.Form.Label,{htmlFor:s.id},t),a.createElement(d,Object.assign({className:c.a.getCustomFormControlClassName(b,p,s.name,n)},s)),!!l&&!!s.maxLength&&a.createElement(o,{fieldName:s.name,limit:s.maxLength}),a.createElement(i.a,{name:s.name},e=>a.createElement(r.Form.Control.Feedback,{type:"invalid"},e)))}},423:function(e,t,n){"use strict";var a=n(0),i=n(411);var r=n(127),l=n(48);n.d(t,"a",(function(){return c}));function c(e){const t=Object(i.f)(),n=function(e){var t;const[n,i]=a.useState(!1);return a.useEffect(()=>{var t;e.isValid&&(e.dirty||(null===(t=e.initialStatus)||void 0===t?void 0:t.allowInitialSubmit))?i(!0):i(!1)},[e.isValid,null===(t=e.initialStatus)||void 0===t?void 0:t.allowInitialSubmit,e.dirty,e.values]),a.useEffect(()=>{e.isSubmitting&&i(!1)},[e.isSubmitting]),n}(t);a.useEffect(()=>{function e(e){13===e.keyCode&&n&&t.validateForm().then(e=>{Object.keys(e).length||t.submitForm()})}return window.addEventListener("keypress",e),()=>window.removeEventListener("keypress",e)},[n]);let c="save";return e.isNew&&(c="create"),e.hasNext&&(c="next"),a.createElement(r.a,{showSpinner:t.isSubmitting,type:"submit",disabled:!n},a.createElement(l.b,{namespace:"shared.formButtons",phrase:c}))}},526:function(e,t,n){"use strict";n.d(t,"a",(function(){return p}));var a=n(0),i=n(405),r=n(411),l=n(7),c=n(422),o=n(414),s=n(423),u=n(48);const m="shared.editVideoDetails",d=i.object().shape({name:i.string().max(255,()=>l.a.getPhrase(m,"nameExceeds")).required(()=>l.a.getPhrase(m,"nameRequired")),description:i.string().max(65535,()=>l.a.getPhrase(m,"descriptionExceeds"))});function b(e){const t=Object(r.f)();return a.createElement(r.c,null,a.createElement(c.b,{label:l.a.getPhrase(m,"nameLabel"),type:"text",name:"name",id:"name",placeholder:l.a.getPhrase(m,"namePlaceholder"),autoFocus:!0,value:t.values.name}),a.createElement(c.b,{label:l.a.getPhrase(m,"descriptionLabel"),as:"textarea",name:"description",id:"description",placeholder:l.a.getPhrase(m,"descriptionPlaceholder"),autoFocus:!0,value:t.values.description}),a.createElement("div",{className:"btn-container d-flex justify-content-end"},a.createElement("button",{type:"button",className:"btn btn-link mr-2",onClick:e.onClickCancel},a.createElement(u.b,{namespace:m,phrase:"cancel"})),a.createElement(s.a,{isNew:!1})))}function p(e){const{video:{name:t,description:n},saveVideo:i,onClickCancel:r}=e;return a.createElement(o.a,{initialValues:{name:t,description:n},validationSchema:d,onSubmit:i},a.createElement(b,{onClickCancel:r}))}},631:function(e,t,n){"use strict";n.r(t),n.d(t,"EditVideoView",(function(){return d}));var a=n(0),i=n(39),r=n(12),l=n(78),c=n(118),o=n(526),s=n(124),u=n(31),m=n(3);function d(e){var t=e.id,n=e.closePopup,d=Object(l.a)("combine:uploads:service"),b=r.a.useBasicFetch(s.a.video(t)),p=Object(i.useDispatch)();return b.data?a.createElement(c.a,{closePopup:n,title:"Edit video details"},a.createElement(o.a,{video:b.data,saveVideo:function(e){e.id=b.data.id;var t=s.a.updateVideo(e,(function(){d.updateUploadMetadata(e.id,e.name),u.a.logUserAction(e,{location:m.j.Popup,actionType:m.n.Edit,workflowPhase:m.o.Complete,entity:m.d.Video}),n()}));r.a.fetch(p,t)},onClickCancel:n})):a.createElement(a.Fragment,null)}}}]);