@clickview/exchange 0.57.0 → 0.58.0-rc.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (199) hide show
  1. package/dist/bundles.json +1 -1
  2. package/dist/css/{CczLEc2p.chunk.css → BBuiH5XR.chunk.css} +1 -1
  3. package/dist/en.json +1 -1
  4. package/dist/scripts/{B1IKzVyn.chunk.js → 59HBVVj3.chunk.js} +2 -2
  5. package/dist/scripts/{B1IKzVyn.chunk.js.map → 59HBVVj3.chunk.js.map} +1 -1
  6. package/dist/scripts/{DmL0FSJr.chunk.js → 77QNnWjW.chunk.js} +2 -2
  7. package/dist/scripts/{DmL0FSJr.chunk.js.map → 77QNnWjW.chunk.js.map} +1 -1
  8. package/dist/scripts/{dlcOoTX2.chunk.js → 97GoF_Eh.chunk.js} +2 -2
  9. package/dist/scripts/{dlcOoTX2.chunk.js.map → 97GoF_Eh.chunk.js.map} +1 -1
  10. package/dist/scripts/{DkVa76dg.chunk.js → A03ti58C.chunk.js} +2 -2
  11. package/dist/scripts/{DkVa76dg.chunk.js.map → A03ti58C.chunk.js.map} +1 -1
  12. package/dist/scripts/{DEFuGMsd.chunk.js → B0qPCCXt.chunk.js} +2 -2
  13. package/dist/scripts/{DEFuGMsd.chunk.js.map → B0qPCCXt.chunk.js.map} +1 -1
  14. package/dist/scripts/{CYuWFG4C.chunk.js → B3P1JDvZ.chunk.js} +2 -2
  15. package/dist/scripts/{CYuWFG4C.chunk.js.map → B3P1JDvZ.chunk.js.map} +1 -1
  16. package/dist/scripts/{BKID_sLP.chunk.js → B3hUKuRr.chunk.js} +2 -2
  17. package/dist/scripts/{BKID_sLP.chunk.js.map → B3hUKuRr.chunk.js.map} +1 -1
  18. package/dist/scripts/{CrYQzjgZ.chunk.js → B7sQixjZ.chunk.js} +2 -2
  19. package/dist/scripts/{CrYQzjgZ.chunk.js.map → B7sQixjZ.chunk.js.map} +1 -1
  20. package/dist/scripts/{CQnwddP2.chunk.js → B9q9og3n.chunk.js} +2 -2
  21. package/dist/scripts/{CQnwddP2.chunk.js.map → B9q9og3n.chunk.js.map} +1 -1
  22. package/dist/scripts/{Doc0JWTn.chunk.js → BD8uJxiB.chunk.js} +2 -2
  23. package/dist/scripts/{Doc0JWTn.chunk.js.map → BD8uJxiB.chunk.js.map} +1 -1
  24. package/dist/scripts/{C8Ld-38h.chunk.js → BJaYD8dc.chunk.js} +2 -2
  25. package/dist/scripts/{C8Ld-38h.chunk.js.map → BJaYD8dc.chunk.js.map} +1 -1
  26. package/dist/scripts/{DfLXqnWC.chunk.js → BMTawQoz.chunk.js} +2 -2
  27. package/dist/scripts/{DfLXqnWC.chunk.js.map → BMTawQoz.chunk.js.map} +1 -1
  28. package/dist/scripts/{BWu0k43d.chunk.js → BP-61ONz.chunk.js} +2 -2
  29. package/dist/scripts/{BWu0k43d.chunk.js.map → BP-61ONz.chunk.js.map} +1 -1
  30. package/dist/scripts/{COMMZ5NT.chunk.js → BQiCELUH.chunk.js} +2 -2
  31. package/dist/scripts/{COMMZ5NT.chunk.js.map → BQiCELUH.chunk.js.map} +1 -1
  32. package/dist/scripts/{Dj2iNM2-.chunk.js → BQz8nP4M.chunk.js} +2 -2
  33. package/dist/scripts/{Dj2iNM2-.chunk.js.map → BQz8nP4M.chunk.js.map} +1 -1
  34. package/dist/scripts/{p9Hw1u0F.chunk.js → BSZHRB-3.chunk.js} +2 -2
  35. package/dist/scripts/{p9Hw1u0F.chunk.js.map → BSZHRB-3.chunk.js.map} +1 -1
  36. package/dist/scripts/{Ci21j_NU.chunk.js → BTJwiZTv.chunk.js} +2 -2
  37. package/dist/scripts/{Ci21j_NU.chunk.js.map → BTJwiZTv.chunk.js.map} +1 -1
  38. package/dist/scripts/{CqWuZzIu.chunk.js → BVbJxgV8.chunk.js} +2 -2
  39. package/dist/scripts/{CqWuZzIu.chunk.js.map → BVbJxgV8.chunk.js.map} +1 -1
  40. package/dist/scripts/{aImHyMo0.chunk.js → BX8fMfGC.chunk.js} +2 -2
  41. package/dist/scripts/{aImHyMo0.chunk.js.map → BX8fMfGC.chunk.js.map} +1 -1
  42. package/dist/scripts/{D91xJv6J.chunk.js → BaNAbBYa.chunk.js} +2 -2
  43. package/dist/scripts/{D91xJv6J.chunk.js.map → BaNAbBYa.chunk.js.map} +1 -1
  44. package/dist/scripts/{BImNArot.chunk.js → BazXwFtM.chunk.js} +2 -2
  45. package/dist/scripts/{BImNArot.chunk.js.map → BazXwFtM.chunk.js.map} +1 -1
  46. package/dist/scripts/{e9ZqHdMv.chunk.js → BbGFMokw.chunk.js} +2 -2
  47. package/dist/scripts/{e9ZqHdMv.chunk.js.map → BbGFMokw.chunk.js.map} +1 -1
  48. package/dist/scripts/BfA6QK2M.chunk.js +2 -0
  49. package/dist/scripts/{BnkjQdg-.chunk.js.map → BfA6QK2M.chunk.js.map} +1 -1
  50. package/dist/scripts/{DbB0S2ZQ.chunk.js → BfAoEeOL.chunk.js} +2 -2
  51. package/dist/scripts/{DbB0S2ZQ.chunk.js.map → BfAoEeOL.chunk.js.map} +1 -1
  52. package/dist/scripts/{0Rgjdcqz.chunk.js → BiAKqJdD.chunk.js} +2 -2
  53. package/dist/scripts/{0Rgjdcqz.chunk.js.map → BiAKqJdD.chunk.js.map} +1 -1
  54. package/dist/scripts/{CssHbHjG.chunk.js → BmU_YUbl.chunk.js} +2 -2
  55. package/dist/scripts/{CssHbHjG.chunk.js.map → BmU_YUbl.chunk.js.map} +1 -1
  56. package/dist/scripts/{SmYpiCQA.chunk.js → BuSLCxEs.chunk.js} +2 -2
  57. package/dist/scripts/{SmYpiCQA.chunk.js.map → BuSLCxEs.chunk.js.map} +1 -1
  58. package/dist/scripts/{BZp1TuCa.chunk.js → Bvlv6PGR.chunk.js} +2 -2
  59. package/dist/scripts/{BZp1TuCa.chunk.js.map → Bvlv6PGR.chunk.js.map} +1 -1
  60. package/dist/scripts/{BYXBfLyn.chunk.js → BwS3tIqZ.chunk.js} +2 -2
  61. package/dist/scripts/{BYXBfLyn.chunk.js.map → BwS3tIqZ.chunk.js.map} +1 -1
  62. package/dist/scripts/{S6sUSK4X.chunk.js → ByKnIsJG.chunk.js} +2 -2
  63. package/dist/scripts/{S6sUSK4X.chunk.js.map → ByKnIsJG.chunk.js.map} +1 -1
  64. package/dist/scripts/Bz5fsSmV.chunk.js +15 -0
  65. package/dist/scripts/Bz5fsSmV.chunk.js.map +1 -0
  66. package/dist/scripts/{CXmjzxZL.chunk.js → C06GoFsR.chunk.js} +2 -2
  67. package/dist/scripts/{CXmjzxZL.chunk.js.map → C06GoFsR.chunk.js.map} +1 -1
  68. package/dist/scripts/{CYbmYWz6.chunk.js → C3cp4ax7.chunk.js} +2 -2
  69. package/dist/scripts/{CYbmYWz6.chunk.js.map → C3cp4ax7.chunk.js.map} +1 -1
  70. package/dist/scripts/{BHQ-iEoW.chunk.js → C7giBbHJ.chunk.js} +2 -2
  71. package/dist/scripts/{BHQ-iEoW.chunk.js.map → C7giBbHJ.chunk.js.map} +1 -1
  72. package/dist/scripts/{CWAi8BHf.chunk.js → CEXoa-wM.chunk.js} +2 -2
  73. package/dist/scripts/{CWAi8BHf.chunk.js.map → CEXoa-wM.chunk.js.map} +1 -1
  74. package/dist/scripts/{lO5fmjgI.chunk.js → CKbq02SS.chunk.js} +2 -2
  75. package/dist/scripts/{lO5fmjgI.chunk.js.map → CKbq02SS.chunk.js.map} +1 -1
  76. package/dist/scripts/{CxZxk1HQ.chunk.js → CNVerO1q.chunk.js} +2 -2
  77. package/dist/scripts/{CxZxk1HQ.chunk.js.map → CNVerO1q.chunk.js.map} +1 -1
  78. package/dist/scripts/{5jG1qquw.chunk.js → CNat3TfQ.chunk.js} +2 -2
  79. package/dist/scripts/{5jG1qquw.chunk.js.map → CNat3TfQ.chunk.js.map} +1 -1
  80. package/dist/scripts/{D-lhN8Br.chunk.js → CP5MKWC_.chunk.js} +2 -2
  81. package/dist/scripts/{D-lhN8Br.chunk.js.map → CP5MKWC_.chunk.js.map} +1 -1
  82. package/dist/scripts/{CiOp7PM4.chunk.js → CSvE-r6r.chunk.js} +2 -2
  83. package/dist/scripts/{CiOp7PM4.chunk.js.map → CSvE-r6r.chunk.js.map} +1 -1
  84. package/dist/scripts/{BZhnbXlC.chunk.js → CW4iXW5L.chunk.js} +2 -2
  85. package/dist/scripts/{BZhnbXlC.chunk.js.map → CW4iXW5L.chunk.js.map} +1 -1
  86. package/dist/scripts/{-Xvqr6f_.chunk.js → CWdK_7iP.chunk.js} +2 -2
  87. package/dist/scripts/{-Xvqr6f_.chunk.js.map → CWdK_7iP.chunk.js.map} +1 -1
  88. package/dist/scripts/{jFTHf_UL.chunk.js → CWjXnQlc.chunk.js} +2 -2
  89. package/dist/scripts/{jFTHf_UL.chunk.js.map → CWjXnQlc.chunk.js.map} +1 -1
  90. package/dist/scripts/{BwuTkpPz.chunk.js → CXEroOnb.chunk.js} +2 -2
  91. package/dist/scripts/{BwuTkpPz.chunk.js.map → CXEroOnb.chunk.js.map} +1 -1
  92. package/dist/scripts/{DMu9QirA.chunk.js → C_KOP_pH.chunk.js} +2 -2
  93. package/dist/scripts/{DMu9QirA.chunk.js.map → C_KOP_pH.chunk.js.map} +1 -1
  94. package/dist/scripts/CbqPW1QD.chunk.js +2 -0
  95. package/dist/scripts/{COkVtt29.chunk.js.map → CbqPW1QD.chunk.js.map} +1 -1
  96. package/dist/scripts/{BI2RzMBo.chunk.js → CelK9zYh.chunk.js} +2 -2
  97. package/dist/scripts/{BI2RzMBo.chunk.js.map → CelK9zYh.chunk.js.map} +1 -1
  98. package/dist/scripts/{DsAzRbUN.chunk.js → Cj7-nmDw.chunk.js} +2 -2
  99. package/dist/scripts/{DsAzRbUN.chunk.js.map → Cj7-nmDw.chunk.js.map} +1 -1
  100. package/dist/scripts/{CoZqjJhl.chunk.js → CkXDJSIC.chunk.js} +2 -2
  101. package/dist/scripts/{CoZqjJhl.chunk.js.map → CkXDJSIC.chunk.js.map} +1 -1
  102. package/dist/scripts/CmKuC0AJ.chunk.js +2 -0
  103. package/dist/scripts/CmKuC0AJ.chunk.js.map +1 -0
  104. package/dist/scripts/CmQwEhN8.chunk.js +2 -0
  105. package/dist/scripts/{DX5d-qLN.chunk.js.map → CmQwEhN8.chunk.js.map} +1 -1
  106. package/dist/scripts/{CKE8GGKH.chunk.js → CsI_aEby.chunk.js} +2 -2
  107. package/dist/scripts/{CKE8GGKH.chunk.js.map → CsI_aEby.chunk.js.map} +1 -1
  108. package/dist/scripts/{B9372wBc.chunk.js → CtbOxRCF.chunk.js} +2 -2
  109. package/dist/scripts/{B9372wBc.chunk.js.map → CtbOxRCF.chunk.js.map} +1 -1
  110. package/dist/scripts/{Ux2KpCQK.chunk.js → CxNf401G.chunk.js} +2 -2
  111. package/dist/scripts/{Ux2KpCQK.chunk.js.map → CxNf401G.chunk.js.map} +1 -1
  112. package/dist/scripts/{CeNx5Kzz.chunk.js → Cxg7zIQ7.chunk.js} +2 -2
  113. package/dist/scripts/{CeNx5Kzz.chunk.js.map → Cxg7zIQ7.chunk.js.map} +1 -1
  114. package/dist/scripts/{WuuAAnHZ.chunk.js → CyTjm-iy.chunk.js} +2 -2
  115. package/dist/scripts/{WuuAAnHZ.chunk.js.map → CyTjm-iy.chunk.js.map} +1 -1
  116. package/dist/scripts/{CfiDZ6LP.chunk.js → D-XHMtrK.chunk.js} +2 -2
  117. package/dist/scripts/{CfiDZ6LP.chunk.js.map → D-XHMtrK.chunk.js.map} +1 -1
  118. package/dist/scripts/{Dur2ee5n.chunk.js → D0Kez51H.chunk.js} +2 -2
  119. package/dist/scripts/{Dur2ee5n.chunk.js.map → D0Kez51H.chunk.js.map} +1 -1
  120. package/dist/scripts/{DUWvwOTa.chunk.js → D1O5BdYP.chunk.js} +2 -2
  121. package/dist/scripts/{DUWvwOTa.chunk.js.map → D1O5BdYP.chunk.js.map} +1 -1
  122. package/dist/scripts/{OZVJyZgM.chunk.js → D8QwkaNv.chunk.js} +2 -2
  123. package/dist/scripts/{OZVJyZgM.chunk.js.map → D8QwkaNv.chunk.js.map} +1 -1
  124. package/dist/scripts/{DvbFBcOQ.chunk.js → DDCwFNmm.chunk.js} +2 -2
  125. package/dist/scripts/{DvbFBcOQ.chunk.js.map → DDCwFNmm.chunk.js.map} +1 -1
  126. package/dist/scripts/{Cog61quf.chunk.js → DGdFdv74.chunk.js} +2 -2
  127. package/dist/scripts/{Cog61quf.chunk.js.map → DGdFdv74.chunk.js.map} +1 -1
  128. package/dist/scripts/DHQlkDUq.chunk.js +2 -0
  129. package/dist/scripts/{D0w9N-3T.chunk.js.map → DHQlkDUq.chunk.js.map} +1 -1
  130. package/dist/scripts/{D1o0K4Kj.chunk.js → DIzcUtXf.chunk.js} +2 -2
  131. package/dist/scripts/{D1o0K4Kj.chunk.js.map → DIzcUtXf.chunk.js.map} +1 -1
  132. package/dist/scripts/{BYq9jK40.chunk.js → DLqmmsup.chunk.js} +2 -2
  133. package/dist/scripts/{BYq9jK40.chunk.js.map → DLqmmsup.chunk.js.map} +1 -1
  134. package/dist/scripts/DOH54KcJ.chunk.js +2 -0
  135. package/dist/scripts/DOH54KcJ.chunk.js.map +1 -0
  136. package/dist/scripts/{CMUKx3aO.chunk.js → DQz3vFm9.chunk.js} +2 -2
  137. package/dist/scripts/{CMUKx3aO.chunk.js.map → DQz3vFm9.chunk.js.map} +1 -1
  138. package/dist/scripts/{BHC43d8p.chunk.js → DSuqoCKU.chunk.js} +2 -2
  139. package/dist/scripts/{BHC43d8p.chunk.js.map → DSuqoCKU.chunk.js.map} +1 -1
  140. package/dist/scripts/{Bj4aS_x2.chunk.js → DVgGpvRr.chunk.js} +2 -2
  141. package/dist/scripts/{Bj4aS_x2.chunk.js.map → DVgGpvRr.chunk.js.map} +1 -1
  142. package/dist/scripts/{j26kM5AB.chunk.js → DVqb0KMG.chunk.js} +2 -2
  143. package/dist/scripts/{j26kM5AB.chunk.js.map → DVqb0KMG.chunk.js.map} +1 -1
  144. package/dist/scripts/D_K0UgSq.chunk.js +2 -0
  145. package/dist/scripts/{DWYleim7.chunk.js.map → D_K0UgSq.chunk.js.map} +1 -1
  146. package/dist/scripts/{4r-SFWRv.chunk.js → DbQN84Ka.chunk.js} +2 -2
  147. package/dist/scripts/{4r-SFWRv.chunk.js.map → DbQN84Ka.chunk.js.map} +1 -1
  148. package/dist/scripts/{CqdCH0OC.chunk.js → DgCvHCTv.chunk.js} +2 -2
  149. package/dist/scripts/{CqdCH0OC.chunk.js.map → DgCvHCTv.chunk.js.map} +1 -1
  150. package/dist/scripts/{DZ9Qr412.chunk.js → DhiXbhAO.chunk.js} +2 -2
  151. package/dist/scripts/{DZ9Qr412.chunk.js.map → DhiXbhAO.chunk.js.map} +1 -1
  152. package/dist/scripts/{DbIiwJi6.chunk.js → DvMJBGNc.chunk.js} +2 -2
  153. package/dist/scripts/{DbIiwJi6.chunk.js.map → DvMJBGNc.chunk.js.map} +1 -1
  154. package/dist/scripts/{DQP0C036.chunk.js → DxppYmgw.chunk.js} +2 -2
  155. package/dist/scripts/{DQP0C036.chunk.js.map → DxppYmgw.chunk.js.map} +1 -1
  156. package/dist/scripts/{DlvPyEMc.chunk.js → DzTRfLQn.chunk.js} +2 -2
  157. package/dist/scripts/{DlvPyEMc.chunk.js.map → DzTRfLQn.chunk.js.map} +1 -1
  158. package/dist/scripts/EOyUW0EV.chunk.js +2 -0
  159. package/dist/scripts/{B6wIglzt.chunk.js.map → EOyUW0EV.chunk.js.map} +1 -1
  160. package/dist/scripts/{Dkw1yxVb.chunk.js → Ft5Mau7n.chunk.js} +2 -2
  161. package/dist/scripts/{Dkw1yxVb.chunk.js.map → Ft5Mau7n.chunk.js.map} +1 -1
  162. package/dist/scripts/{EypiXS_y.chunk.js → GIZO-DsR.chunk.js} +2 -2
  163. package/dist/scripts/{EypiXS_y.chunk.js.map → GIZO-DsR.chunk.js.map} +1 -1
  164. package/dist/scripts/{C-LZ1Pnr.chunk.js → PEkZnijT.chunk.js} +2 -2
  165. package/dist/scripts/{C-LZ1Pnr.chunk.js.map → PEkZnijT.chunk.js.map} +1 -1
  166. package/dist/scripts/{FwSaxfbL.chunk.js → YhHoI_hl.chunk.js} +3 -3
  167. package/dist/scripts/{FwSaxfbL.chunk.js.map → YhHoI_hl.chunk.js.map} +1 -1
  168. package/dist/scripts/{app-eQ6keCVj.js → app-DlxnnX-Y.js} +5 -5
  169. package/dist/scripts/{app-eQ6keCVj.js.map → app-DlxnnX-Y.js.map} +1 -1
  170. package/dist/scripts/{CBYrUSmz.chunk.js → eF4foLm3.chunk.js} +2 -2
  171. package/dist/scripts/{CBYrUSmz.chunk.js.map → eF4foLm3.chunk.js.map} +1 -1
  172. package/dist/scripts/{D4uscADt.chunk.js → faET_EvS.chunk.js} +2 -2
  173. package/dist/scripts/{D4uscADt.chunk.js.map → faET_EvS.chunk.js.map} +1 -1
  174. package/dist/scripts/{CtsGHZp3.chunk.js → i36I5rgn.chunk.js} +2 -2
  175. package/dist/scripts/{CtsGHZp3.chunk.js.map → i36I5rgn.chunk.js.map} +1 -1
  176. package/dist/scripts/i6PC1lEa.chunk.js +2 -0
  177. package/dist/scripts/{D8bdW5jN.chunk.js.map → i6PC1lEa.chunk.js.map} +1 -1
  178. package/dist/scripts/{BYTm1HdJ.chunk.js → mMvgsH8u.chunk.js} +2 -2
  179. package/dist/scripts/{BYTm1HdJ.chunk.js.map → mMvgsH8u.chunk.js.map} +1 -1
  180. package/dist/scripts/{1JtZW3TW.chunk.js → nzWgRE-N.chunk.js} +2 -2
  181. package/dist/scripts/{1JtZW3TW.chunk.js.map → nzWgRE-N.chunk.js.map} +1 -1
  182. package/dist/scripts/{DqYjDOWl.chunk.js → uFAznmkx.chunk.js} +2 -2
  183. package/dist/scripts/{DqYjDOWl.chunk.js.map → uFAznmkx.chunk.js.map} +1 -1
  184. package/dist/scripts/{zFY--sWD.chunk.js → wC1U3zaB.chunk.js} +2 -2
  185. package/dist/scripts/{zFY--sWD.chunk.js.map → wC1U3zaB.chunk.js.map} +1 -1
  186. package/package.json +1 -1
  187. package/dist/scripts/B6wIglzt.chunk.js +0 -2
  188. package/dist/scripts/BnkjQdg-.chunk.js +0 -2
  189. package/dist/scripts/ByM31Op_.chunk.js +0 -2
  190. package/dist/scripts/ByM31Op_.chunk.js.map +0 -1
  191. package/dist/scripts/COkVtt29.chunk.js +0 -2
  192. package/dist/scripts/D0w9N-3T.chunk.js +0 -2
  193. package/dist/scripts/D8bdW5jN.chunk.js +0 -2
  194. package/dist/scripts/DWYleim7.chunk.js +0 -2
  195. package/dist/scripts/DX5d-qLN.chunk.js +0 -2
  196. package/dist/scripts/DoJDzZ7U.chunk.js +0 -15
  197. package/dist/scripts/DoJDzZ7U.chunk.js.map +0 -1
  198. package/dist/scripts/k5oLm6N7.chunk.js +0 -2
  199. package/dist/scripts/k5oLm6N7.chunk.js.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"Doc0JWTn.chunk.js","sources":["../../../../libs/shared/src/apps/search/utils/SharedSearchHelper.ts"],"sourcesContent":["import { LanguageService } from 'libs/common/backbone/services/LanguageService';\nimport { Core } from 'libs/common/core';\nimport { HashObject } from 'libs/common/react/interfaces/HashObject';\nimport { ArrayHelper } from 'libs/common/react/utils/ArrayHelper';\nimport { ObjectHelper } from 'libs/common/react/utils/ObjectHelper';\n\nimport { SearchResultObjectTypes, SearchResults, TabulatedSearchResults } from 'libs/shared/apps/search/interfaces';\nimport { Breakpoints } from 'libs/shared/hooks/useBreakpoints';\nimport { Series } from 'libs/shared/interfaces';\n\nconst namespace = 'sharedSearch.utils';\n\nconst ObjectTypeCapacities = {\n 'featured-result': 1,\n 'topic-list': 8,\n 'company': 8,\n 'playlist-with-videos': 1,\n 'series-with-videos': 1,\n 'series-thumbnail': 1,\n 'playlist-thumbnail': 1,\n 'video-item': 1,\n 'companies-and-topics': 16\n};\n\nexport const SEARCH_CURRICULUM_CODE_PARAM = 'curriculumCode';\nexport const SEARCH_IN_PARAM = 'scopeId';\n\nexport type SearchComponentTypes = 'featured-result' | 'topic-list' | 'playlist-with-videos' | 'playlist-thumbnail' | 'series-with-videos' | 'series-thumbnail' | 'video-item' | 'companies-and-topics';\n\nexport interface ResultGrouping {\n heading?: string;\n type: SearchComponentTypes;\n items: SearchResultObjectTypes[];\n}\n\ntype ResultGroupings = ResultGrouping[];\n\nexport const SharedSearchHelper = {\n flattenResults(tabulatedResults: TabulatedSearchResults): SearchResults {\n if (!tabulatedResults)\n return null;\n\n if (!tabulatedResults.results)\n return {\n ...tabulatedResults,\n results: []\n };\n\n return {\n ...tabulatedResults,\n results: ArrayHelper.flatten(tabulatedResults.results)\n };\n },\n getContextualSearchQueryParams(context: Core.Model): HashObject {\n if (!context || !context.get('filterParam'))\n return {};\n\n const param = context.get('filterParam');\n const value = context.get('filterValue');\n\n return {\n [param]: value\n };\n },\n\n /**\n * In order to better analyse which search results our users are selecting, we'll track both the\n * video's individual search score relative to the result which had the highest score or was considered to be\n * the \"best\" match.\n */\n mapMaxScoreToSearchResults<T extends SearchResultObjectTypes>(results: T[], resultsMaxScore: number): T[] {\n return results.map(r => {\n if (resultsMaxScore)\n return { ...r, _maxScore: resultsMaxScore };\n return r;\n });\n },\n\n groupResults(\n results: TabulatedSearchResults['results'],\n topicResults: SearchResults,\n companyResults: SearchResults,\n featuredResult: SearchResultObjectTypes,\n breakpoints: Breakpoints\n ): ResultGroupings {\n if (!results?.length && !topicResults?.results?.length && !companyResults?.results?.length)\n return [];\n\n const [ firstPageResults, ...otherPagesResults ] = results;\n const useSmallComponent = breakpoints.xs || breakpoints.sm;\n\n // The first page of results has a very specific structure\n const firstPage = structureFirstPage(\n firstPageResults,\n topicResults,\n companyResults,\n featuredResult,\n useSmallComponent\n );\n\n if (!otherPagesResults?.length)\n return firstPage;\n\n // All pages other than the first page have a less-defined structure\n return structureOtherPages(otherPagesResults, firstPage, useSmallComponent);\n }\n};\n\nfunction getObjectGrouping(\n obj: SearchResultObjectTypes,\n isUsingSmallComponent: boolean\n): SearchComponentTypes {\n if (obj._index === 'video' || obj._index === 'interactive' || obj._index === 'clip') {\n return 'video-item';\n }\n\n if (obj._index === 'series') {\n // Use series item when getting small\n if ((obj as Series).tallPoster?.id && !isUsingSmallComponent) {\n return 'series-with-videos';\n }\n\n return 'series-thumbnail';\n }\n\n if (obj._index === 'classification') {\n return 'topic-list';\n }\n\n if (obj._index === 'playlist') {\n if (isUsingSmallComponent) {\n return 'playlist-thumbnail';\n }\n \n return 'playlist-with-videos';\n }\n}\n\nfunction structureFirstPage(\n firstPage: SearchResultObjectTypes[],\n topicResults: SearchResults,\n companyResults: SearchResults,\n featuredResult: SearchResultObjectTypes,\n isUsingSmallComponent: boolean\n): ResultGroupings {\n /**\n * The very top of our search results has a defined structure of:\n * - 8 topics\n * - 1 featured video result (if there is one)\n * - 3 videos\n * - 1 playlist\n * - 1 series\n * - 8 topics\n * \n * We do our best from the first page of results to build this out. From then on, the results\n * render in order of relevancy.\n */\n const playlistType: SearchComponentTypes = isUsingSmallComponent ? 'playlist-thumbnail' : 'playlist-with-videos';\n const seriesType: SearchComponentTypes = isUsingSmallComponent ? 'series-thumbnail' : 'series-with-videos';\n const groupings: ResultGroupings = [\n {\n type: 'companies-and-topics',\n items: [\n ...(companyResults?.results?.slice(0, ObjectTypeCapacities['company']) ?? []),\n ...(topicResults?.results?.slice(0, ObjectTypeCapacities['topic-list']) ?? [])\n ]\n },\n {\n type: 'featured-result',\n items: !ObjectHelper.isEmpty(featuredResult) ? [featuredResult] : []\n },\n {\n type: 'video-item',\n items: []\n },\n {\n type: 'video-item',\n items: []\n },\n {\n type: 'video-item',\n items: []\n },\n {\n type: playlistType,\n items: []\n },\n {\n type: seriesType,\n items: []\n },\n {\n heading: LanguageService.getPhrase(namespace, 'relatedTopics'),\n type: 'topic-list',\n items: topicResults?.results?.slice(ObjectTypeCapacities['topic-list'], ObjectTypeCapacities['topic-list'] * 2) ?? []\n }\n ];\n\n let featuredResultFound = false;\n\n firstPage?.forEach(obj => {\n const currentObjectType = getObjectGrouping(obj, isUsingSmallComponent);\n\n // Identify the featured result, and leave it out of the main groupings\n if (obj._featured && !featuredResultFound && (obj._index === 'video')) {\n featuredResultFound = true;\n return;\n }\n\n if (groupings[2].items.length < ObjectTypeCapacities['video-item'] && currentObjectType === 'video-item') {\n groupings[2].items.push(obj);\n return;\n }\n\n if (groupings[3].items.length < ObjectTypeCapacities['video-item'] && currentObjectType === 'video-item') {\n groupings[3].items.push(obj);\n return;\n }\n\n if (groupings[4].items.length < ObjectTypeCapacities['video-item'] && currentObjectType === 'video-item') {\n groupings[4].items.push(obj);\n return;\n }\n\n if (groupings[5].items.length < ObjectTypeCapacities[playlistType] && currentObjectType === playlistType) {\n groupings[5].items.push(obj);\n return;\n }\n\n if (groupings[6].items.length < ObjectTypeCapacities[seriesType] && currentObjectType === seriesType) {\n groupings[6].items.push(obj);\n return;\n }\n\n const latestGrouping = groupings[groupings.length - 1];\n\n if (latestGrouping?.type === currentObjectType) {\n const capacity = ObjectTypeCapacities[currentObjectType];\n\n if (latestGrouping.items.length >= capacity) {\n groupings.push({ type: currentObjectType, items: [obj]});\n } else {\n latestGrouping.items.push(obj);\n }\n } else {\n groupings.push({ type: currentObjectType, items: [obj]});\n }\n });\n\n return groupings.filter(grouping => grouping.items?.length);\n}\n\nfunction structureOtherPages(\n otherPages: SearchResultObjectTypes[][],\n existingGroupings: ResultGroupings,\n isUsingSmallComponent: boolean\n): ResultGroupings {\n if (!otherPages)\n return existingGroupings;\n\n otherPages.forEach(page => {\n const lastGroupingFromPreviousPage = existingGroupings[existingGroupings.length - 1];\n\n let shouldAppendToPreviousGrouping = true;\n\n page.forEach(obj => {\n const currentObjectType = getObjectGrouping(obj, isUsingSmallComponent);\n\n if (shouldAppendToPreviousGrouping && lastGroupingFromPreviousPage.type === currentObjectType) {\n if (lastGroupingFromPreviousPage.items.length >= ObjectTypeCapacities[currentObjectType]) {\n shouldAppendToPreviousGrouping = false;\n existingGroupings.push({ type: currentObjectType, items: [obj]});\n } else {\n lastGroupingFromPreviousPage.items.push(obj);\n }\n } else {\n const latestGrouping = existingGroupings[existingGroupings.length - 1];\n\n if (latestGrouping?.type === currentObjectType) {\n if (latestGrouping.items.length >= ObjectTypeCapacities[currentObjectType]) {\n existingGroupings.push({ type: currentObjectType, items: [obj]});\n } else {\n latestGrouping.items.push(obj);\n }\n } else {\n existingGroupings.push({ type: currentObjectType, items: [obj]});\n }\n }\n });\n });\n\n return existingGroupings;\n}"],"names":["namespace","ObjectTypeCapacities","SEARCH_CURRICULUM_CODE_PARAM","SEARCH_IN_PARAM","SharedSearchHelper","tabulatedResults","ArrayHelper","context","param","value","results","resultsMaxScore","topicResults","companyResults","featuredResult","breakpoints","_a","_b","firstPageResults","otherPagesResults","useSmallComponent","firstPage","structureFirstPage","structureOtherPages","getObjectGrouping","obj","isUsingSmallComponent","playlistType","seriesType","groupings","ObjectHelper","LanguageService","_c","featuredResultFound","currentObjectType","latestGrouping","capacity","grouping","otherPages","existingGroupings","page","lastGroupingFromPreviousPage","shouldAppendToPreviousGrouping"],"mappings":"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"}
1
+ {"version":3,"file":"BD8uJxiB.chunk.js","sources":["../../../../libs/shared/src/apps/search/utils/SharedSearchHelper.ts"],"sourcesContent":["import { LanguageService } from 'libs/common/backbone/services/LanguageService';\nimport { Core } from 'libs/common/core';\nimport { HashObject } from 'libs/common/react/interfaces/HashObject';\nimport { ArrayHelper } from 'libs/common/react/utils/ArrayHelper';\nimport { ObjectHelper } from 'libs/common/react/utils/ObjectHelper';\n\nimport { SearchResultObjectTypes, SearchResults, TabulatedSearchResults } from 'libs/shared/apps/search/interfaces';\nimport { Breakpoints } from 'libs/shared/hooks/useBreakpoints';\nimport { Series } from 'libs/shared/interfaces';\n\nconst namespace = 'sharedSearch.utils';\n\nconst ObjectTypeCapacities = {\n 'featured-result': 1,\n 'topic-list': 8,\n 'company': 8,\n 'playlist-with-videos': 1,\n 'series-with-videos': 1,\n 'series-thumbnail': 1,\n 'playlist-thumbnail': 1,\n 'video-item': 1,\n 'companies-and-topics': 16\n};\n\nexport const SEARCH_CURRICULUM_CODE_PARAM = 'curriculumCode';\nexport const SEARCH_IN_PARAM = 'scopeId';\n\nexport type SearchComponentTypes = 'featured-result' | 'topic-list' | 'playlist-with-videos' | 'playlist-thumbnail' | 'series-with-videos' | 'series-thumbnail' | 'video-item' | 'companies-and-topics';\n\nexport interface ResultGrouping {\n heading?: string;\n type: SearchComponentTypes;\n items: SearchResultObjectTypes[];\n}\n\ntype ResultGroupings = ResultGrouping[];\n\nexport const SharedSearchHelper = {\n flattenResults(tabulatedResults: TabulatedSearchResults): SearchResults {\n if (!tabulatedResults)\n return null;\n\n if (!tabulatedResults.results)\n return {\n ...tabulatedResults,\n results: []\n };\n\n return {\n ...tabulatedResults,\n results: ArrayHelper.flatten(tabulatedResults.results)\n };\n },\n getContextualSearchQueryParams(context: Core.Model): HashObject {\n if (!context || !context.get('filterParam'))\n return {};\n\n const param = context.get('filterParam');\n const value = context.get('filterValue');\n\n return {\n [param]: value\n };\n },\n\n /**\n * In order to better analyse which search results our users are selecting, we'll track both the\n * video's individual search score relative to the result which had the highest score or was considered to be\n * the \"best\" match.\n */\n mapMaxScoreToSearchResults<T extends SearchResultObjectTypes>(results: T[], resultsMaxScore: number): T[] {\n return results.map(r => {\n if (resultsMaxScore)\n return { ...r, _maxScore: resultsMaxScore };\n return r;\n });\n },\n\n groupResults(\n results: TabulatedSearchResults['results'],\n topicResults: SearchResults,\n companyResults: SearchResults,\n featuredResult: SearchResultObjectTypes,\n breakpoints: Breakpoints\n ): ResultGroupings {\n if (!results?.length && !topicResults?.results?.length && !companyResults?.results?.length)\n return [];\n\n const [ firstPageResults, ...otherPagesResults ] = results;\n const useSmallComponent = breakpoints.xs || breakpoints.sm;\n\n // The first page of results has a very specific structure\n const firstPage = structureFirstPage(\n firstPageResults,\n topicResults,\n companyResults,\n featuredResult,\n useSmallComponent\n );\n\n if (!otherPagesResults?.length)\n return firstPage;\n\n // All pages other than the first page have a less-defined structure\n return structureOtherPages(otherPagesResults, firstPage, useSmallComponent);\n }\n};\n\nfunction getObjectGrouping(\n obj: SearchResultObjectTypes,\n isUsingSmallComponent: boolean\n): SearchComponentTypes {\n if (obj._index === 'video' || obj._index === 'interactive' || obj._index === 'clip') {\n return 'video-item';\n }\n\n if (obj._index === 'series') {\n // Use series item when getting small\n if ((obj as Series).tallPoster?.id && !isUsingSmallComponent) {\n return 'series-with-videos';\n }\n\n return 'series-thumbnail';\n }\n\n if (obj._index === 'classification') {\n return 'topic-list';\n }\n\n if (obj._index === 'playlist') {\n if (isUsingSmallComponent) {\n return 'playlist-thumbnail';\n }\n \n return 'playlist-with-videos';\n }\n}\n\nfunction structureFirstPage(\n firstPage: SearchResultObjectTypes[],\n topicResults: SearchResults,\n companyResults: SearchResults,\n featuredResult: SearchResultObjectTypes,\n isUsingSmallComponent: boolean\n): ResultGroupings {\n /**\n * The very top of our search results has a defined structure of:\n * - 8 topics\n * - 1 featured video result (if there is one)\n * - 3 videos\n * - 1 playlist\n * - 1 series\n * - 8 topics\n * \n * We do our best from the first page of results to build this out. From then on, the results\n * render in order of relevancy.\n */\n const playlistType: SearchComponentTypes = isUsingSmallComponent ? 'playlist-thumbnail' : 'playlist-with-videos';\n const seriesType: SearchComponentTypes = isUsingSmallComponent ? 'series-thumbnail' : 'series-with-videos';\n const groupings: ResultGroupings = [\n {\n type: 'companies-and-topics',\n items: [\n ...(companyResults?.results?.slice(0, ObjectTypeCapacities['company']) ?? []),\n ...(topicResults?.results?.slice(0, ObjectTypeCapacities['topic-list']) ?? [])\n ]\n },\n {\n type: 'featured-result',\n items: !ObjectHelper.isEmpty(featuredResult) ? [featuredResult] : []\n },\n {\n type: 'video-item',\n items: []\n },\n {\n type: 'video-item',\n items: []\n },\n {\n type: 'video-item',\n items: []\n },\n {\n type: playlistType,\n items: []\n },\n {\n type: seriesType,\n items: []\n },\n {\n heading: LanguageService.getPhrase(namespace, 'relatedTopics'),\n type: 'topic-list',\n items: topicResults?.results?.slice(ObjectTypeCapacities['topic-list'], ObjectTypeCapacities['topic-list'] * 2) ?? []\n }\n ];\n\n let featuredResultFound = false;\n\n firstPage?.forEach(obj => {\n const currentObjectType = getObjectGrouping(obj, isUsingSmallComponent);\n\n // Identify the featured result, and leave it out of the main groupings\n if (obj._featured && !featuredResultFound && (obj._index === 'video')) {\n featuredResultFound = true;\n return;\n }\n\n if (groupings[2].items.length < ObjectTypeCapacities['video-item'] && currentObjectType === 'video-item') {\n groupings[2].items.push(obj);\n return;\n }\n\n if (groupings[3].items.length < ObjectTypeCapacities['video-item'] && currentObjectType === 'video-item') {\n groupings[3].items.push(obj);\n return;\n }\n\n if (groupings[4].items.length < ObjectTypeCapacities['video-item'] && currentObjectType === 'video-item') {\n groupings[4].items.push(obj);\n return;\n }\n\n if (groupings[5].items.length < ObjectTypeCapacities[playlistType] && currentObjectType === playlistType) {\n groupings[5].items.push(obj);\n return;\n }\n\n if (groupings[6].items.length < ObjectTypeCapacities[seriesType] && currentObjectType === seriesType) {\n groupings[6].items.push(obj);\n return;\n }\n\n const latestGrouping = groupings[groupings.length - 1];\n\n if (latestGrouping?.type === currentObjectType) {\n const capacity = ObjectTypeCapacities[currentObjectType];\n\n if (latestGrouping.items.length >= capacity) {\n groupings.push({ type: currentObjectType, items: [obj]});\n } else {\n latestGrouping.items.push(obj);\n }\n } else {\n groupings.push({ type: currentObjectType, items: [obj]});\n }\n });\n\n return groupings.filter(grouping => grouping.items?.length);\n}\n\nfunction structureOtherPages(\n otherPages: SearchResultObjectTypes[][],\n existingGroupings: ResultGroupings,\n isUsingSmallComponent: boolean\n): ResultGroupings {\n if (!otherPages)\n return existingGroupings;\n\n otherPages.forEach(page => {\n const lastGroupingFromPreviousPage = existingGroupings[existingGroupings.length - 1];\n\n let shouldAppendToPreviousGrouping = true;\n\n page.forEach(obj => {\n const currentObjectType = getObjectGrouping(obj, isUsingSmallComponent);\n\n if (shouldAppendToPreviousGrouping && lastGroupingFromPreviousPage.type === currentObjectType) {\n if (lastGroupingFromPreviousPage.items.length >= ObjectTypeCapacities[currentObjectType]) {\n shouldAppendToPreviousGrouping = false;\n existingGroupings.push({ type: currentObjectType, items: [obj]});\n } else {\n lastGroupingFromPreviousPage.items.push(obj);\n }\n } else {\n const latestGrouping = existingGroupings[existingGroupings.length - 1];\n\n if (latestGrouping?.type === currentObjectType) {\n if (latestGrouping.items.length >= ObjectTypeCapacities[currentObjectType]) {\n existingGroupings.push({ type: currentObjectType, items: [obj]});\n } else {\n latestGrouping.items.push(obj);\n }\n } else {\n existingGroupings.push({ type: currentObjectType, items: [obj]});\n }\n }\n });\n });\n\n return existingGroupings;\n}"],"names":["namespace","ObjectTypeCapacities","SEARCH_CURRICULUM_CODE_PARAM","SEARCH_IN_PARAM","SharedSearchHelper","tabulatedResults","ArrayHelper","context","param","value","results","resultsMaxScore","topicResults","companyResults","featuredResult","breakpoints","_a","_b","firstPageResults","otherPagesResults","useSmallComponent","firstPage","structureFirstPage","structureOtherPages","getObjectGrouping","obj","isUsingSmallComponent","playlistType","seriesType","groupings","ObjectHelper","LanguageService","_c","featuredResultFound","currentObjectType","latestGrouping","capacity","grouping","otherPages","existingGroupings","page","lastGroupingFromPreviousPage","shouldAppendToPreviousGrouping"],"mappings":"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"}
@@ -1,2 +1,2 @@
1
- import{U as j,ap as y,ae as L,af as S,j as a,aq as v,ar as w,R as C,as as _,w as m,B as u,at as p,r as N}from"./app-eQ6keCVj.js";import{C as A}from"./S6sUSK4X.chunk.js";import{A as T}from"./BwuTkpPz.chunk.js";import{D as E}from"./5jG1qquw.chunk.js";import{B as D}from"./lO5fmjgI.chunk.js";import{I as B,a as H,u as I}from"./COMMZ5NT.chunk.js";const $="_actions_1psxq_1",q="_actionsContainer_1psxq_14",z="_ownerLogo_1psxq_24",P="_dropStyle_1psxq_33",O="_dragStyle_1psxq_38",d={actions:$,actionsContainer:q,ownerLogo:z,dropStyle:P,dragStyle:O};function U(e){var i,r,f,h,b,F;const s=e.folder.thumbnail?j.urlBuilder(e.folder.thumbnail.url,{size:y.Small}):null,t=(h=(f=(r=(i=e.folder)==null?void 0:i.libraries)==null?void 0:r.data)==null?void 0:f[0])==null?void 0:h.owner,n=e.showOwnerLogo&&((b=t==null?void 0:t.logo)!=null&&b.url)?j.urlBuilder(t.logo.url,{size:y.Small}):null,l=(F=e.getFolderActions)==null?void 0:F.call(e,e.folder),o=e.analyticsData?{id:e.folder.id.toString(),name:e.folder.name,...e.analyticsData}:void 0,c=e.analyticsOptions?{actionType:S.Click,entity:L.Folder,...e.analyticsOptions}:void 0;return a.jsx(E,{draggable:e.drag&&{id:e.folder.id,data:e.folder},droppable:e.drop&&{id:e.folder.id,data:e.folder},dropStye:d.dropStyle,dragStyle:d.dragStyle,children:a.jsxs("div",{className:"position-relative",children:[a.jsxs(v,{className:"rounded-3 d-block text-decoration-none",appLink:e.getAppLink(e.folder),title:e.folder.name,analyticsData:o,analyticsOptions:c,children:[a.jsx(D,{data:s,imageType:w.Thumbnails,imageClassName:"rounded-top-lg",children:a.jsx(B,{name:e.folder.name,type:H.Folder,extraClasses:"rounded-top-lg"})}),a.jsx("h3",{className:"bg-white border-start border-end border-bottom rounded-bottom-lg font-size-normal fw-semibold mb-0 p-2",children:a.jsx("span",{className:"text-truncate d-block",children:e.folder.name})})]}),(l==null?void 0:l.length)&&a.jsx(T,{actions:l,className:d.actionsContainer,actionsDropdownClassName:d.actions,dropdownToggleSvgSize:null}),!!n&&a.jsx("img",{src:n,className:`rounded-circle ${d.ownerLogo}`,alt:`${t==null?void 0:t.name} logo`,title:(t==null?void 0:t.name)||""})]})})}const g="libraries.folderList",k="has:expanded:library:folders";function R(){const e=p();return e.xxl||e.xl||e.lg?6:e.md?4:3}G.defaultProps={showHeading:!0};function G(e){const[s,t]=C.useState(_.get(k)||!1),n=e.expandFolders||s,l=R();function o(){t(!n),_.set(k,!n)}const c=n?e.folders:e.folders.slice(0,l),i=e.folders.length>l&&!e.expandFolders;return a.jsxs(a.Fragment,{children:[a.jsxs("div",{className:"d-flex justify-content-between align-items-center",children:[e.showHeading&&a.jsxs(m,{className:`d-inline-flex align-items-center mb-2 px-2 ${i?"":"cursor-default"}`,onClick:o,children:[i&&a.jsx(A,{direction:n?"down":"right"}),a.jsx("h2",{className:"h4 mb-0",children:a.jsx(u,{namespace:g,phrase:"folders",options:{count:e.folders.length}})})]}),!!(!n&&i)&&a.jsx("div",{className:"d-flex justify-content-end justify-self-end px-2",children:a.jsx(m,{onClick:o,className:"text-dark hover-text-underline d-inline-block",children:a.jsx(u,{namespace:g,phrase:"seeAll",options:{count:e.folders.length}})})}),!!(n&&i)&&a.jsx("div",{className:"d-flex justify-content-end justify-self-end px-2",children:a.jsx(m,{onClick:o,className:"text-dark hover-text-underline d-inline-block",children:a.jsx(u,{namespace:g,phrase:"seeLess"})})}),e.extraButtons?e.extraButtons:a.jsx(a.Fragment,{})]}),a.jsx("div",{className:"row mx-1",children:c.map(r=>a.jsx("div",{className:"col-4 col-md-3 col-lg-2 px-1 pb-3",children:a.jsx(U,{folder:r,getAppLink:e.getAppLink,getFolderActions:e.getFolderActions,drag:e.drag,drop:e.drop})},r.id))})]})}const K="_partialFolderHeading_1surw_1",M="_partialFolderThumbnail_1surw_4",V="_partialFolderName_1surw_7",x={partialFolderHeading:K,partialFolderThumbnail:M,partialFolderName:V},W=()=>a.jsxs("div",{className:"col-4 col-md-3 col-lg-2 px-1 pb-3",children:[a.jsx("div",{className:`${x.partialFolderThumbnail} partial-loading-background rounded-top-lg`}),a.jsx("div",{className:`${x.partialFolderName} partial-loading-background border-bottom rounded-bottom-lg font-size-normal mb-0 p-2`,children:" "})]});function ae({count:e=3}){return a.jsxs(a.Fragment,{children:[a.jsx("div",{className:`${x.partialFolderHeading} h4 mb-2 partial-loading-background`,children:" "}),a.jsx("div",{className:"row mx-n1",children:Array(e).fill(null).map((s,t)=>a.jsx(W,{},t))})]})}function le(e,s){const t=e,n=s,l=I(e&&(o=>t(o).key));return N.useEffect(()=>{l&&l.shouldInitialFetch&&s&&n()},[l==null?void 0:l.shouldInitialFetch,s]),N.useEffect(()=>{!l||!l.nextCursor||l.isFetching||!s||n(l.nextCursor)},[l==null?void 0:l.nextCursor,l==null?void 0:l.isFetching,s]),l}export{G as F,ae as P,le as u};
2
- //# sourceMappingURL=C8Ld-38h.chunk.js.map
1
+ import{U as j,ap as y,ae as L,af as S,j as a,aq as v,ar as w,R as C,as as _,w as m,B as u,at as p,r as N}from"./app-DlxnnX-Y.js";import{C as A}from"./ByKnIsJG.chunk.js";import{A as T}from"./CXEroOnb.chunk.js";import{D as E}from"./CNat3TfQ.chunk.js";import{B as D}from"./CKbq02SS.chunk.js";import{I as B,a as H,u as I}from"./BQiCELUH.chunk.js";const $="_actions_1psxq_1",q="_actionsContainer_1psxq_14",z="_ownerLogo_1psxq_24",P="_dropStyle_1psxq_33",O="_dragStyle_1psxq_38",d={actions:$,actionsContainer:q,ownerLogo:z,dropStyle:P,dragStyle:O};function U(e){var i,r,f,h,b,F;const s=e.folder.thumbnail?j.urlBuilder(e.folder.thumbnail.url,{size:y.Small}):null,t=(h=(f=(r=(i=e.folder)==null?void 0:i.libraries)==null?void 0:r.data)==null?void 0:f[0])==null?void 0:h.owner,n=e.showOwnerLogo&&((b=t==null?void 0:t.logo)!=null&&b.url)?j.urlBuilder(t.logo.url,{size:y.Small}):null,l=(F=e.getFolderActions)==null?void 0:F.call(e,e.folder),o=e.analyticsData?{id:e.folder.id.toString(),name:e.folder.name,...e.analyticsData}:void 0,c=e.analyticsOptions?{actionType:S.Click,entity:L.Folder,...e.analyticsOptions}:void 0;return a.jsx(E,{draggable:e.drag&&{id:e.folder.id,data:e.folder},droppable:e.drop&&{id:e.folder.id,data:e.folder},dropStye:d.dropStyle,dragStyle:d.dragStyle,children:a.jsxs("div",{className:"position-relative",children:[a.jsxs(v,{className:"rounded-3 d-block text-decoration-none",appLink:e.getAppLink(e.folder),title:e.folder.name,analyticsData:o,analyticsOptions:c,children:[a.jsx(D,{data:s,imageType:w.Thumbnails,imageClassName:"rounded-top-lg",children:a.jsx(B,{name:e.folder.name,type:H.Folder,extraClasses:"rounded-top-lg"})}),a.jsx("h3",{className:"bg-white border-start border-end border-bottom rounded-bottom-lg font-size-normal fw-semibold mb-0 p-2",children:a.jsx("span",{className:"text-truncate d-block",children:e.folder.name})})]}),(l==null?void 0:l.length)&&a.jsx(T,{actions:l,className:d.actionsContainer,actionsDropdownClassName:d.actions,dropdownToggleSvgSize:null}),!!n&&a.jsx("img",{src:n,className:`rounded-circle ${d.ownerLogo}`,alt:`${t==null?void 0:t.name} logo`,title:(t==null?void 0:t.name)||""})]})})}const g="libraries.folderList",k="has:expanded:library:folders";function R(){const e=p();return e.xxl||e.xl||e.lg?6:e.md?4:3}G.defaultProps={showHeading:!0};function G(e){const[s,t]=C.useState(_.get(k)||!1),n=e.expandFolders||s,l=R();function o(){t(!n),_.set(k,!n)}const c=n?e.folders:e.folders.slice(0,l),i=e.folders.length>l&&!e.expandFolders;return a.jsxs(a.Fragment,{children:[a.jsxs("div",{className:"d-flex justify-content-between align-items-center",children:[e.showHeading&&a.jsxs(m,{className:`d-inline-flex align-items-center mb-2 px-2 ${i?"":"cursor-default"}`,onClick:o,children:[i&&a.jsx(A,{direction:n?"down":"right"}),a.jsx("h2",{className:"h4 mb-0",children:a.jsx(u,{namespace:g,phrase:"folders",options:{count:e.folders.length}})})]}),!!(!n&&i)&&a.jsx("div",{className:"d-flex justify-content-end justify-self-end px-2",children:a.jsx(m,{onClick:o,className:"text-dark hover-text-underline d-inline-block",children:a.jsx(u,{namespace:g,phrase:"seeAll",options:{count:e.folders.length}})})}),!!(n&&i)&&a.jsx("div",{className:"d-flex justify-content-end justify-self-end px-2",children:a.jsx(m,{onClick:o,className:"text-dark hover-text-underline d-inline-block",children:a.jsx(u,{namespace:g,phrase:"seeLess"})})}),e.extraButtons?e.extraButtons:a.jsx(a.Fragment,{})]}),a.jsx("div",{className:"row mx-1",children:c.map(r=>a.jsx("div",{className:"col-4 col-md-3 col-lg-2 px-1 pb-3",children:a.jsx(U,{folder:r,getAppLink:e.getAppLink,getFolderActions:e.getFolderActions,drag:e.drag,drop:e.drop})},r.id))})]})}const K="_partialFolderHeading_1surw_1",M="_partialFolderThumbnail_1surw_4",V="_partialFolderName_1surw_7",x={partialFolderHeading:K,partialFolderThumbnail:M,partialFolderName:V},W=()=>a.jsxs("div",{className:"col-4 col-md-3 col-lg-2 px-1 pb-3",children:[a.jsx("div",{className:`${x.partialFolderThumbnail} partial-loading-background rounded-top-lg`}),a.jsx("div",{className:`${x.partialFolderName} partial-loading-background border-bottom rounded-bottom-lg font-size-normal mb-0 p-2`,children:" "})]});function ae({count:e=3}){return a.jsxs(a.Fragment,{children:[a.jsx("div",{className:`${x.partialFolderHeading} h4 mb-2 partial-loading-background`,children:" "}),a.jsx("div",{className:"row mx-n1",children:Array(e).fill(null).map((s,t)=>a.jsx(W,{},t))})]})}function le(e,s){const t=e,n=s,l=I(e&&(o=>t(o).key));return N.useEffect(()=>{l&&l.shouldInitialFetch&&s&&n()},[l==null?void 0:l.shouldInitialFetch,s]),N.useEffect(()=>{!l||!l.nextCursor||l.isFetching||!s||n(l.nextCursor)},[l==null?void 0:l.nextCursor,l==null?void 0:l.isFetching,s]),l}export{G as F,ae as P,le as u};
2
+ //# sourceMappingURL=BJaYD8dc.chunk.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"C8Ld-38h.chunk.js","sources":["../../../../libs/shared/src/components/library-folder/LibraryFolder.tsx","../../../../libs/shared/src/components/folder-list/FolderList.tsx","../../../../libs/shared/src/components/folder-list/partial-loading/PartialFolderList.tsx","../../../../libs/shared/src/hooks/UseFetchAll.ts"],"sourcesContent":["import React from 'react';\n\nimport { UrlHelper } from 'libs/common/backbone/utils/UrlHelper';\nimport { Core } from 'libs/common/core';\n\nimport { AnalyticsOptions, EntityType, HashObject, UserAction } from 'libs/analytics/interfaces';\n\nimport { ActionOptions, Actions } from 'libs/shared/components/actions/Actions';\nimport { AppLink } from 'libs/shared/components/app-link/AppLink';\nimport { DragDropMoveWrapper } from 'libs/shared/components/drag-drop-move/DragDropMoveWrapper';\nimport { BaseImage } from 'libs/shared/components/image/BaseImage';\nimport { ImageFallback, ImageFallbackType } from 'libs/shared/components/image/ImageFallback';\nimport { ImageSize, ImageType } from 'libs/shared/enums/Images';\nimport { Folder } from 'libs/shared/interfaces';\n\nimport styles from './library-folder.module.scss';\n\ninterface LibraryFolderProps {\n folder: Folder;\n showOwnerLogo?: boolean;\n drag?: boolean;\n drop?: boolean;\n getAppLink: (f: Folder) => Core.AppLink;\n getFolderActions?: (f: Folder) => ActionOptions[];\n analyticsOptions?: AnalyticsOptions;\n analyticsData?: HashObject;\n}\n\nexport function LibraryFolder(props: LibraryFolderProps): JSX.Element {\n const thumbnailUrl = props.folder.thumbnail\n ? UrlHelper.urlBuilder(props.folder.thumbnail.url, { size: ImageSize.Small })\n : null;\n\n const owner = props.folder?.libraries?.data?.[0]?.owner;\n const ownerLogoUrl = props.showOwnerLogo && !!owner?.logo?.url\n ? UrlHelper.urlBuilder(owner.logo.url, { size: ImageSize.Small })\n : null;\n\n const actions = props.getFolderActions?.(props.folder);\n\n const analyticsData = props.analyticsData ? {\n id: props.folder.id.toString(),\n name: props.folder.name,\n ...props.analyticsData\n } : undefined;\n\n const analyticsOptions = props.analyticsOptions ? {\n actionType: UserAction.Click,\n entity: EntityType.Folder,\n\n ...props.analyticsOptions\n } : undefined;\n\n return (\n <DragDropMoveWrapper\n draggable={props.drag && { id: props.folder.id, data: props.folder }}\n droppable={props.drop && { id: props.folder.id, data: props.folder }}\n dropStye={styles.dropStyle}\n dragStyle={styles.dragStyle}\n >\n <div className='position-relative'>\n <AppLink\n className='rounded-3 d-block text-decoration-none'\n appLink={props.getAppLink(props.folder)}\n title={props.folder.name}\n analyticsData={analyticsData}\n analyticsOptions={analyticsOptions}\n >\n <BaseImage\n data={thumbnailUrl}\n imageType={ImageType.Thumbnails}\n imageClassName='rounded-top-lg'\n >\n <ImageFallback\n name={props.folder.name}\n type={ImageFallbackType.Folder}\n extraClasses='rounded-top-lg'\n />\n </BaseImage>\n <h3 className='bg-white border-start border-end border-bottom rounded-bottom-lg font-size-normal fw-semibold mb-0 p-2'>\n <span className='text-truncate d-block'>{props.folder.name}</span>\n </h3>\n </AppLink>\n {actions?.length &&\n <Actions\n actions={actions}\n className={styles.actionsContainer}\n actionsDropdownClassName={styles.actions}\n // Intentionally setting to the default SVG size\n dropdownToggleSvgSize={null}\n />\n }\n {!!ownerLogoUrl &&\n <img src={ownerLogoUrl} className={`rounded-circle ${styles.ownerLogo}`} alt={`${owner?.name} logo`} title={owner?.name || ''} />\n }\n </div>\n </DragDropMoveWrapper>\n );\n}","import React from 'react';\n\nimport { LocalStorageHelper } from 'libs/common/backbone/utils/LocalStorageHelper';\nimport { Core } from 'libs/common/core';\n\nimport { ActionOptions } from 'libs/shared/components/actions/Actions';\nimport { Caret } from 'libs/shared/components/caret/Caret';\nimport { DivButton } from 'libs/shared/components/div-button/DivButton';\nimport { LibraryFolder } from 'libs/shared/components/library-folder/LibraryFolder';\nimport { Text } from 'libs/shared/components/text/Text';\nimport { useBreakpoints } from 'libs/shared/hooks/useBreakpoints';\nimport { Folder } from 'libs/shared/interfaces';\n\nconst namespace = 'libraries.folderList';\n\nconst EXPANDED_FOLDERS_KEY = 'has:expanded:library:folders';\n\nfunction useGetFolderLimit(): number {\n const breakpoints = useBreakpoints();\n\n if (breakpoints.xxl || breakpoints.xl || breakpoints.lg)\n return 6;\n\n if (breakpoints.md)\n return 4;\n\n return 3;\n}\n\ninterface FolderListProps {\n folders: Folder[];\n getAppLink: (folder: Folder) => Core.AppLink;\n expandFolders?: boolean;\n showHeading?: boolean;\n getFolderActions?: (f: Folder) => ActionOptions[];\n drag?: boolean;\n drop?: boolean;\n extraButtons?: JSX.Element;\n}\n\nFolderList.defaultProps = {\n showHeading: true\n};\n\nexport function FolderList(props: FolderListProps): JSX.Element {\n const [ _hasExpandedFolders, setHasExpandedFolders ] = React.useState(\n LocalStorageHelper.get(EXPANDED_FOLDERS_KEY) || false\n );\n\n const hasExpandedFolders = props.expandFolders || _hasExpandedFolders;\n\n const folderLimit = useGetFolderLimit();\n\n function onToggleFolder(): void {\n setHasExpandedFolders(!hasExpandedFolders);\n LocalStorageHelper.set(EXPANDED_FOLDERS_KEY, !hasExpandedFolders);\n }\n\n const displayableFolders = hasExpandedFolders ? props.folders : props.folders.slice(0, folderLimit);\n\n const canToggleCollapsedView = props.folders.length > folderLimit && !props.expandFolders;\n\n return (\n <>\n <div className='d-flex justify-content-between align-items-center'>\n {props.showHeading &&\n <DivButton\n className={`d-inline-flex align-items-center mb-2 px-2 ${!canToggleCollapsedView ? 'cursor-default' : ''}`}\n onClick={onToggleFolder}\n >\n {canToggleCollapsedView && (\n <Caret direction={hasExpandedFolders ? 'down' : 'right'} />\n )}\n <h2 className='h4 mb-0'>\n <Text namespace={namespace} phrase='folders' options={{ count: props.folders.length }} />\n </h2>\n </DivButton>\n }\n\n {!!(!hasExpandedFolders && canToggleCollapsedView) && (\n <div className='d-flex justify-content-end justify-self-end px-2'>\n <DivButton onClick={onToggleFolder} className='text-dark hover-text-underline d-inline-block'>\n <Text namespace={namespace} phrase='seeAll' options={{ count: props.folders.length }} />\n </DivButton>\n </div>\n )}\n {!!(hasExpandedFolders && canToggleCollapsedView) && (\n <div className='d-flex justify-content-end justify-self-end px-2'>\n <DivButton onClick={onToggleFolder} className='text-dark hover-text-underline d-inline-block'>\n <Text namespace={namespace} phrase='seeLess' />\n </DivButton>\n </div>\n )}\n\n {props.extraButtons ? props.extraButtons : <></>}\n </div>\n\n <div className='row mx-1'>\n {displayableFolders.map(f => (\n <div key={f.id} className='col-4 col-md-3 col-lg-2 px-1 pb-3'>\n <LibraryFolder\n folder={f}\n getAppLink={props.getAppLink}\n getFolderActions={props.getFolderActions}\n drag={props.drag}\n drop={props.drop}\n />\n </div>\n ))}\n </div>\n </>\n );\n}","import React from 'react';\n\nimport styles from './partial-folder-list.module.scss';\n\nconst PartialFolder = () => (\n <div className='col-4 col-md-3 col-lg-2 px-1 pb-3'>\n <div className={`${styles.partialFolderThumbnail} partial-loading-background rounded-top-lg`} />\n <div className={`${styles.partialFolderName} partial-loading-background border-bottom rounded-bottom-lg font-size-normal mb-0 p-2`}>\n &nbsp;\n </div>\n </div>\n);\n\nexport function PartialFolderList({ count = 3 }: { count?: number; }): JSX.Element {\n return (\n <>\n <div className={`${styles.partialFolderHeading} h4 mb-2 partial-loading-background`}>&nbsp;</div>\n <div className='row mx-n1'>\n {Array(count).fill(null).map((_, i) => <PartialFolder key={i} />)}\n </div>\n </>\n );\n}","import { useEffect } from 'react';\n\nimport { Flight } from 'libs/common/flight';\n\nimport { BaseObject } from 'libs/shared/interfaces';\n\nimport { SelectAllPagesResult, useSelectAllPages } from './UseSelectAllPages';\n\n/**\n * Hook to fetch all pages of a collection.\n * \n * @param getRequest - callback function to get the request for each page.\n * Can be false if the request requires data that hasn't yet been fetched - e.g. user id.\n * \n * @param fetchNext - callback function to fetch a page.\n * Can be false if the request requires data that hasn't yet been fetched - e.g. user id.\n */\nexport function useFetchAll<T = BaseObject>(\n getRequest: ((cursor?: string) => Flight.Request) | false,\n fetchNext: ((cursor?: string) => void) | false\n): SelectAllPagesResult<T> {\n const getRequestFn = getRequest as (cursor?: string) => Flight.Request;\n const fetchNextFn = fetchNext as (cursor?: string) => void;\n\n const response = useSelectAllPages<T>(getRequest && ((cursor?: string) => getRequestFn(cursor).key));\n\n useEffect(() => {\n if (!response)\n return;\n\n if (response.shouldInitialFetch && fetchNext)\n fetchNextFn();\n }, [ response?.shouldInitialFetch, fetchNext ]);\n\n useEffect(() => {\n if (!response || !response.nextCursor || response.isFetching || !fetchNext)\n return;\n\n fetchNextFn(response.nextCursor);\n }, [ response?.nextCursor, response?.isFetching, fetchNext ]);\n\n return response;\n}"],"names":["LibraryFolder","props","thumbnailUrl","UrlHelper","ImageSize","owner","_d","_c","_b","_a","ownerLogoUrl","_e","actions","_f","analyticsData","analyticsOptions","UserAction","EntityType","jsx","DragDropMoveWrapper","styles","jsxs","AppLink","BaseImage","ImageType","ImageFallback","ImageFallbackType","Actions","namespace","EXPANDED_FOLDERS_KEY","useGetFolderLimit","breakpoints","useBreakpoints","FolderList","_hasExpandedFolders","setHasExpandedFolders","React","LocalStorageHelper","hasExpandedFolders","folderLimit","onToggleFolder","displayableFolders","canToggleCollapsedView","Fragment","DivButton","Caret","Text","f","PartialFolder","PartialFolderList","count","_","i","useFetchAll","getRequest","fetchNext","getRequestFn","fetchNextFn","response","useSelectAllPages","cursor","useEffect"],"mappings":"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"}
1
+ {"version":3,"file":"BJaYD8dc.chunk.js","sources":["../../../../libs/shared/src/components/library-folder/LibraryFolder.tsx","../../../../libs/shared/src/components/folder-list/FolderList.tsx","../../../../libs/shared/src/components/folder-list/partial-loading/PartialFolderList.tsx","../../../../libs/shared/src/hooks/UseFetchAll.ts"],"sourcesContent":["import React from 'react';\n\nimport { UrlHelper } from 'libs/common/backbone/utils/UrlHelper';\nimport { Core } from 'libs/common/core';\n\nimport { AnalyticsOptions, EntityType, HashObject, UserAction } from 'libs/analytics/interfaces';\n\nimport { ActionOptions, Actions } from 'libs/shared/components/actions/Actions';\nimport { AppLink } from 'libs/shared/components/app-link/AppLink';\nimport { DragDropMoveWrapper } from 'libs/shared/components/drag-drop-move/DragDropMoveWrapper';\nimport { BaseImage } from 'libs/shared/components/image/BaseImage';\nimport { ImageFallback, ImageFallbackType } from 'libs/shared/components/image/ImageFallback';\nimport { ImageSize, ImageType } from 'libs/shared/enums/Images';\nimport { Folder } from 'libs/shared/interfaces';\n\nimport styles from './library-folder.module.scss';\n\ninterface LibraryFolderProps {\n folder: Folder;\n showOwnerLogo?: boolean;\n drag?: boolean;\n drop?: boolean;\n getAppLink: (f: Folder) => Core.AppLink;\n getFolderActions?: (f: Folder) => ActionOptions[];\n analyticsOptions?: AnalyticsOptions;\n analyticsData?: HashObject;\n}\n\nexport function LibraryFolder(props: LibraryFolderProps): JSX.Element {\n const thumbnailUrl = props.folder.thumbnail\n ? UrlHelper.urlBuilder(props.folder.thumbnail.url, { size: ImageSize.Small })\n : null;\n\n const owner = props.folder?.libraries?.data?.[0]?.owner;\n const ownerLogoUrl = props.showOwnerLogo && !!owner?.logo?.url\n ? UrlHelper.urlBuilder(owner.logo.url, { size: ImageSize.Small })\n : null;\n\n const actions = props.getFolderActions?.(props.folder);\n\n const analyticsData = props.analyticsData ? {\n id: props.folder.id.toString(),\n name: props.folder.name,\n ...props.analyticsData\n } : undefined;\n\n const analyticsOptions = props.analyticsOptions ? {\n actionType: UserAction.Click,\n entity: EntityType.Folder,\n\n ...props.analyticsOptions\n } : undefined;\n\n return (\n <DragDropMoveWrapper\n draggable={props.drag && { id: props.folder.id, data: props.folder }}\n droppable={props.drop && { id: props.folder.id, data: props.folder }}\n dropStye={styles.dropStyle}\n dragStyle={styles.dragStyle}\n >\n <div className='position-relative'>\n <AppLink\n className='rounded-3 d-block text-decoration-none'\n appLink={props.getAppLink(props.folder)}\n title={props.folder.name}\n analyticsData={analyticsData}\n analyticsOptions={analyticsOptions}\n >\n <BaseImage\n data={thumbnailUrl}\n imageType={ImageType.Thumbnails}\n imageClassName='rounded-top-lg'\n >\n <ImageFallback\n name={props.folder.name}\n type={ImageFallbackType.Folder}\n extraClasses='rounded-top-lg'\n />\n </BaseImage>\n <h3 className='bg-white border-start border-end border-bottom rounded-bottom-lg font-size-normal fw-semibold mb-0 p-2'>\n <span className='text-truncate d-block'>{props.folder.name}</span>\n </h3>\n </AppLink>\n {actions?.length &&\n <Actions\n actions={actions}\n className={styles.actionsContainer}\n actionsDropdownClassName={styles.actions}\n // Intentionally setting to the default SVG size\n dropdownToggleSvgSize={null}\n />\n }\n {!!ownerLogoUrl &&\n <img src={ownerLogoUrl} className={`rounded-circle ${styles.ownerLogo}`} alt={`${owner?.name} logo`} title={owner?.name || ''} />\n }\n </div>\n </DragDropMoveWrapper>\n );\n}","import React from 'react';\n\nimport { LocalStorageHelper } from 'libs/common/backbone/utils/LocalStorageHelper';\nimport { Core } from 'libs/common/core';\n\nimport { ActionOptions } from 'libs/shared/components/actions/Actions';\nimport { Caret } from 'libs/shared/components/caret/Caret';\nimport { DivButton } from 'libs/shared/components/div-button/DivButton';\nimport { LibraryFolder } from 'libs/shared/components/library-folder/LibraryFolder';\nimport { Text } from 'libs/shared/components/text/Text';\nimport { useBreakpoints } from 'libs/shared/hooks/useBreakpoints';\nimport { Folder } from 'libs/shared/interfaces';\n\nconst namespace = 'libraries.folderList';\n\nconst EXPANDED_FOLDERS_KEY = 'has:expanded:library:folders';\n\nfunction useGetFolderLimit(): number {\n const breakpoints = useBreakpoints();\n\n if (breakpoints.xxl || breakpoints.xl || breakpoints.lg)\n return 6;\n\n if (breakpoints.md)\n return 4;\n\n return 3;\n}\n\ninterface FolderListProps {\n folders: Folder[];\n getAppLink: (folder: Folder) => Core.AppLink;\n expandFolders?: boolean;\n showHeading?: boolean;\n getFolderActions?: (f: Folder) => ActionOptions[];\n drag?: boolean;\n drop?: boolean;\n extraButtons?: JSX.Element;\n}\n\nFolderList.defaultProps = {\n showHeading: true\n};\n\nexport function FolderList(props: FolderListProps): JSX.Element {\n const [ _hasExpandedFolders, setHasExpandedFolders ] = React.useState(\n LocalStorageHelper.get(EXPANDED_FOLDERS_KEY) || false\n );\n\n const hasExpandedFolders = props.expandFolders || _hasExpandedFolders;\n\n const folderLimit = useGetFolderLimit();\n\n function onToggleFolder(): void {\n setHasExpandedFolders(!hasExpandedFolders);\n LocalStorageHelper.set(EXPANDED_FOLDERS_KEY, !hasExpandedFolders);\n }\n\n const displayableFolders = hasExpandedFolders ? props.folders : props.folders.slice(0, folderLimit);\n\n const canToggleCollapsedView = props.folders.length > folderLimit && !props.expandFolders;\n\n return (\n <>\n <div className='d-flex justify-content-between align-items-center'>\n {props.showHeading &&\n <DivButton\n className={`d-inline-flex align-items-center mb-2 px-2 ${!canToggleCollapsedView ? 'cursor-default' : ''}`}\n onClick={onToggleFolder}\n >\n {canToggleCollapsedView && (\n <Caret direction={hasExpandedFolders ? 'down' : 'right'} />\n )}\n <h2 className='h4 mb-0'>\n <Text namespace={namespace} phrase='folders' options={{ count: props.folders.length }} />\n </h2>\n </DivButton>\n }\n\n {!!(!hasExpandedFolders && canToggleCollapsedView) && (\n <div className='d-flex justify-content-end justify-self-end px-2'>\n <DivButton onClick={onToggleFolder} className='text-dark hover-text-underline d-inline-block'>\n <Text namespace={namespace} phrase='seeAll' options={{ count: props.folders.length }} />\n </DivButton>\n </div>\n )}\n {!!(hasExpandedFolders && canToggleCollapsedView) && (\n <div className='d-flex justify-content-end justify-self-end px-2'>\n <DivButton onClick={onToggleFolder} className='text-dark hover-text-underline d-inline-block'>\n <Text namespace={namespace} phrase='seeLess' />\n </DivButton>\n </div>\n )}\n\n {props.extraButtons ? props.extraButtons : <></>}\n </div>\n\n <div className='row mx-1'>\n {displayableFolders.map(f => (\n <div key={f.id} className='col-4 col-md-3 col-lg-2 px-1 pb-3'>\n <LibraryFolder\n folder={f}\n getAppLink={props.getAppLink}\n getFolderActions={props.getFolderActions}\n drag={props.drag}\n drop={props.drop}\n />\n </div>\n ))}\n </div>\n </>\n );\n}","import React from 'react';\n\nimport styles from './partial-folder-list.module.scss';\n\nconst PartialFolder = () => (\n <div className='col-4 col-md-3 col-lg-2 px-1 pb-3'>\n <div className={`${styles.partialFolderThumbnail} partial-loading-background rounded-top-lg`} />\n <div className={`${styles.partialFolderName} partial-loading-background border-bottom rounded-bottom-lg font-size-normal mb-0 p-2`}>\n &nbsp;\n </div>\n </div>\n);\n\nexport function PartialFolderList({ count = 3 }: { count?: number; }): JSX.Element {\n return (\n <>\n <div className={`${styles.partialFolderHeading} h4 mb-2 partial-loading-background`}>&nbsp;</div>\n <div className='row mx-n1'>\n {Array(count).fill(null).map((_, i) => <PartialFolder key={i} />)}\n </div>\n </>\n );\n}","import { useEffect } from 'react';\n\nimport { Flight } from 'libs/common/flight';\n\nimport { BaseObject } from 'libs/shared/interfaces';\n\nimport { SelectAllPagesResult, useSelectAllPages } from './UseSelectAllPages';\n\n/**\n * Hook to fetch all pages of a collection.\n * \n * @param getRequest - callback function to get the request for each page.\n * Can be false if the request requires data that hasn't yet been fetched - e.g. user id.\n * \n * @param fetchNext - callback function to fetch a page.\n * Can be false if the request requires data that hasn't yet been fetched - e.g. user id.\n */\nexport function useFetchAll<T = BaseObject>(\n getRequest: ((cursor?: string) => Flight.Request) | false,\n fetchNext: ((cursor?: string) => void) | false\n): SelectAllPagesResult<T> {\n const getRequestFn = getRequest as (cursor?: string) => Flight.Request;\n const fetchNextFn = fetchNext as (cursor?: string) => void;\n\n const response = useSelectAllPages<T>(getRequest && ((cursor?: string) => getRequestFn(cursor).key));\n\n useEffect(() => {\n if (!response)\n return;\n\n if (response.shouldInitialFetch && fetchNext)\n fetchNextFn();\n }, [ response?.shouldInitialFetch, fetchNext ]);\n\n useEffect(() => {\n if (!response || !response.nextCursor || response.isFetching || !fetchNext)\n return;\n\n fetchNextFn(response.nextCursor);\n }, [ response?.nextCursor, response?.isFetching, fetchNext ]);\n\n return response;\n}"],"names":["LibraryFolder","props","thumbnailUrl","UrlHelper","ImageSize","owner","_d","_c","_b","_a","ownerLogoUrl","_e","actions","_f","analyticsData","analyticsOptions","UserAction","EntityType","jsx","DragDropMoveWrapper","styles","jsxs","AppLink","BaseImage","ImageType","ImageFallback","ImageFallbackType","Actions","namespace","EXPANDED_FOLDERS_KEY","useGetFolderLimit","breakpoints","useBreakpoints","FolderList","_hasExpandedFolders","setHasExpandedFolders","React","LocalStorageHelper","hasExpandedFolders","folderLimit","onToggleFolder","displayableFolders","canToggleCollapsedView","Fragment","DivButton","Caret","Text","f","PartialFolder","PartialFolderList","count","_","i","useFetchAll","getRequest","fetchNext","getRequestFn","fetchNextFn","response","useSelectAllPages","cursor","useEffect"],"mappings":"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"}
@@ -1,2 +1,2 @@
1
- import{r as u,d as w,a$ as $,b0 as E,j as n,f as M,F as _,b1 as k,N as D,G as H,Q as y,at as P,ax as N,a0 as h}from"./app-eQ6keCVj.js";import{u as X}from"./COMMZ5NT.chunk.js";import{a as T}from"./CBYrUSmz.chunk.js";import{C as z}from"./Dj2iNM2-.chunk.js";import{M as l}from"./_sYSSSUN.chunk.js";const j=u.forwardRef(({bsPrefix:e,className:s,as:a="div",...i},o)=>{const m=w(e,"row"),c=$(),g=E(),x=`${m}-cols`,C=[];return c.forEach(t=>{const f=i[t];delete i[t];let r;f!=null&&typeof f=="object"?{cols:r}=f:r=f;const d=t!==g?`-${t}`:"";r!=null&&C.push(`${x}${d}-${r}`)}),n.jsx(a,{ref:o,...i,className:M(s,m,...C)})});j.displayName="Row";const L=400;function B(e){const s=()=>{if(!e.isFetching){if(e.scrollContainer){const{scrollContainer:a}=e,i=a.getBoundingClientRect().height+a.scrollTop,o=a.scrollHeight-L;if(i<o)return}else{const a=window.innerHeight+document.documentElement.scrollTop,i=document.documentElement.scrollHeight-L;if(a<i)return}e.fetchNextPage()}};u.useEffect(()=>{const a=_.throttle(s,200),i=e.scrollContainer||window;return e.hasMore&&i.addEventListener("scroll",a),()=>i.removeEventListener("scroll",a)},[e.hasMore,e.fetchNextPage,e.scrollContainer])}function ee(e,s,a,i,o,m){const[c,g]=u.useState(0),x=s;function C(r){if(!e)return null;const d=e(r);return d?d.key:null}const t=X(C,i,o);function f(){if(!(!s||!e||!t))return g(r=>r+1),x(t.nextCursor)}return B({fetchNextPage:f,hasMore:!!(t!=null&&t.nextCursor),isFetching:t==null?void 0:t.isFetching,scrollContainer:m}),u.useEffect(()=>{t&&t.shouldInitialFetch&&s&&(x(),g(r=>r+1))},[t==null?void 0:t.shouldInitialFetch,s]),u.useEffect(()=>{var d,v;if(!(t!=null&&t.statusCode)||!_.isFunction(a))return;const r=+((v=(d=t.statusCode)==null?void 0:d.toString())==null?void 0:v.substr(0,1));r!==k.ClientError&&r!==k.ServerError||a(c,t.statusCode)},[t==null?void 0:t.statusCode]),{items:t==null?void 0:t.items,hasMore:!!(t!=null&&t.nextCursor),nextCursor:t==null?void 0:t.nextCursor,isFetching:t==null?void 0:t.isFetching,totalItems:t==null?void 0:t.totalItems,hasFirstPageCompleted:t==null?void 0:t.hasFirstPageCompleted}}const I="_container_1kfhe_1",V="_spinner_1kfhe_4",F={container:I,spinner:V};G.defaultProps={fetchOnScroll:!1};function G(e){const[s,a]=T();return u.useEffect(()=>{var i;e.fetchOnScroll&&(!a||e.isFetching||(i=e.fetchNext)==null||i.call(e,e.nextCursor))},[a,e.isFetching]),n.jsx("div",{className:`p-3 text-center ${F.container}`,children:e.isFetching?n.jsx(D,{as:"span",animation:"border",role:"status",className:F.spinner}):n.jsx("div",{ref:s,children:n.jsx(H,{svg:z,className:"svg-container cursor-pointer",size:y.Large,onClick:()=>{var i;return(i=e.fetchNext)==null?void 0:i.call(e,e.nextCursor)}})})})}const S={getThumbnailColumns(){return{xs:12,sm:5,lg:3}},getDetailsColumns(){return{xs:12,sm:7,lg:9}},getSize(e,s){return e.sm?"sm":s||"md"},getThumbnailColSize(e){return e?10:12}},R="_partialName_157xw_4",A="_partialDescription_157xw_8",O="_partialThumbnail_157xw_12",Q="_partialDragHandle_157xw_15",b={partialName:R,partialDescription:A,partialThumbnail:O,partialDragHandle:Q};K.defaultProps={numVideos:15};function K(e){return n.jsx(n.Fragment,{children:Array(e.numVideos).fill(null).map((s,a)=>n.jsxs("div",{className:"d-flex",children:[e.allowBulkActions&&n.jsx("div",{className:"form-check pe-3 pe-sm-2 mx-0 mx-md-2"}),n.jsx(J,{...e})]},a))})}function J(e){const s=P(),i=S.getSize(s,"md")==="sm",o=e.withReordering&&!s.xs;return n.jsxs(j,{className:`${i?"":"py-2"} flex-grow-1`,children:[n.jsx(N,{...S.getThumbnailColumns(),className:`flex-column align-items-flex-start ${i?"pb-2 pe-1":"mb-1 pe-3 pe-md-2"}`,children:n.jsxs(j,{children:[!!o&&n.jsx("div",{className:"d-flex align-items-center justify-content-center col-2",children:n.jsx("div",{className:`partial-loading-background ${b.partialDragHandle}`})}),n.jsx(N,{xs:S.getThumbnailColSize(o),children:n.jsx("div",{className:`partial-loading-background ${i?"rounded":"rounded-3"} ${b.partialThumbnail}`})})]})}),n.jsxs(N,{...S.getDetailsColumns(),className:i?"pb-2":"px-2",children:[n.jsx("div",{className:`partial-loading-background mb-1 ${b.partialName}`}),n.jsx("div",{className:`partial-loading-background ${b.partialDescription}`})]})]})}U.defaultProps={checked:!1,label:"",className:""};function U(e){const{isLabelEllipsis:s}=e,a=u.useRef(null);return u.useEffect(()=>{if(a.current){if(e.checked){a.current.indeterminate&&(a.current.indeterminate=!1);return}if(e.indeterminate&&!a.current.indeterminate){a.current.indeterminate=!0;return}!e.indeterminate&&a.current.indeterminate&&(a.current.indeterminate=!1)}},[a.current,e.indeterminate,e.checked]),n.jsxs("div",{className:`form-check pe-2 ${e.className}`,children:[n.jsx("input",{ref:a,type:"checkbox",className:`${e.inputClassName} form-check-input`,id:e.id,name:e.name,checked:e.checked,onChange:e.onChange,disabled:e.disabled,"aria-checked":e.checked,"aria-label":e.ariaLabel}),e.label&&n.jsx("label",{className:"form-check-label cursor-pointer align-top",htmlFor:e.id,children:n.jsx("span",{className:`${s?"clamp-1":""}`,children:e.label})})]})}function te(e){return n.jsx("svg",{...e,children:n.jsx("path",{fill:"currentColor",d:"M16.863 20c-.662 0-1.21-.567-1.21-1.252s.548-1.252 1.21-1.252c.663 0 1.21.567 1.21 1.252S17.527 20 16.864 20m0-1.441a.183.183 0 0 0-.182.189c0 .118.068.189.182.189.115 0 .183-.071.183-.19a.183.183 0 0 0-.183-.188m0-.118a.516.516 0 0 1-.502-.52v-6.19L11.75 9.158a.53.53 0 0 1-.205-.71c.137-.26.456-.354.685-.212l4.886 2.717a.57.57 0 0 1 .274.473v6.496a.52.52 0 0 1-.526.52m-4.908-4.205a.8.8 0 0 1-.229-.048L2.296 9.51A.55.55 0 0 1 2 9.014c0-.212.114-.401.297-.472l9.52-4.489a.47.47 0 0 1 .434 0l9.452 4.489a.55.55 0 0 1 .297.472.49.49 0 0 1-.297.473l-9.52 4.701a.8.8 0 0 1-.228.048m-8.22-5.198 8.22 4.087 8.288-4.087-8.22-3.898zm8.151 8.41c-4.749 0-6.644-2.905-6.712-3.047a.7.7 0 0 1-.092-.284V10.81c0-.283.229-.52.503-.52s.502.237.502.52v3.142c.388.496 2.077 2.434 5.776 2.434 3.653 0 5.548-1.938 6.005-2.457v-2.93c0-.284.228-.52.502-.52s.502.236.502.52v3.118a.6.6 0 0 1-.091.307c-.046.142-2.192 3.024-6.895 3.024"})})}function ae(){const e=h(l.XS),s=h(l.SM),a=h(l.MD),i=h(l.LG),o=h(l.XL),m=h(l.XXL);let c=l.LG;return e&&(c=l.XS),s&&(c=l.SM),a&&(c=l.MD),i&&(c=l.LG),o&&(c=l.XL),m&&(c=l.XXL),c}export{U as C,te as G,G as I,K as P,j as R,S as V,ae as a,ee as u};
2
- //# sourceMappingURL=DfLXqnWC.chunk.js.map
1
+ import{r as u,d as w,a$ as $,b0 as E,j as n,f as M,F as _,b1 as k,N as D,G as H,Q as y,at as P,ax as N,a0 as h}from"./app-DlxnnX-Y.js";import{u as X}from"./BQiCELUH.chunk.js";import{a as T}from"./eF4foLm3.chunk.js";import{C as z}from"./BQz8nP4M.chunk.js";import{M as l}from"./_sYSSSUN.chunk.js";const j=u.forwardRef(({bsPrefix:e,className:s,as:a="div",...i},o)=>{const m=w(e,"row"),c=$(),g=E(),x=`${m}-cols`,C=[];return c.forEach(t=>{const f=i[t];delete i[t];let r;f!=null&&typeof f=="object"?{cols:r}=f:r=f;const d=t!==g?`-${t}`:"";r!=null&&C.push(`${x}${d}-${r}`)}),n.jsx(a,{ref:o,...i,className:M(s,m,...C)})});j.displayName="Row";const L=400;function B(e){const s=()=>{if(!e.isFetching){if(e.scrollContainer){const{scrollContainer:a}=e,i=a.getBoundingClientRect().height+a.scrollTop,o=a.scrollHeight-L;if(i<o)return}else{const a=window.innerHeight+document.documentElement.scrollTop,i=document.documentElement.scrollHeight-L;if(a<i)return}e.fetchNextPage()}};u.useEffect(()=>{const a=_.throttle(s,200),i=e.scrollContainer||window;return e.hasMore&&i.addEventListener("scroll",a),()=>i.removeEventListener("scroll",a)},[e.hasMore,e.fetchNextPage,e.scrollContainer])}function ee(e,s,a,i,o,m){const[c,g]=u.useState(0),x=s;function C(r){if(!e)return null;const d=e(r);return d?d.key:null}const t=X(C,i,o);function f(){if(!(!s||!e||!t))return g(r=>r+1),x(t.nextCursor)}return B({fetchNextPage:f,hasMore:!!(t!=null&&t.nextCursor),isFetching:t==null?void 0:t.isFetching,scrollContainer:m}),u.useEffect(()=>{t&&t.shouldInitialFetch&&s&&(x(),g(r=>r+1))},[t==null?void 0:t.shouldInitialFetch,s]),u.useEffect(()=>{var d,v;if(!(t!=null&&t.statusCode)||!_.isFunction(a))return;const r=+((v=(d=t.statusCode)==null?void 0:d.toString())==null?void 0:v.substr(0,1));r!==k.ClientError&&r!==k.ServerError||a(c,t.statusCode)},[t==null?void 0:t.statusCode]),{items:t==null?void 0:t.items,hasMore:!!(t!=null&&t.nextCursor),nextCursor:t==null?void 0:t.nextCursor,isFetching:t==null?void 0:t.isFetching,totalItems:t==null?void 0:t.totalItems,hasFirstPageCompleted:t==null?void 0:t.hasFirstPageCompleted}}const I="_container_1kfhe_1",V="_spinner_1kfhe_4",F={container:I,spinner:V};G.defaultProps={fetchOnScroll:!1};function G(e){const[s,a]=T();return u.useEffect(()=>{var i;e.fetchOnScroll&&(!a||e.isFetching||(i=e.fetchNext)==null||i.call(e,e.nextCursor))},[a,e.isFetching]),n.jsx("div",{className:`p-3 text-center ${F.container}`,children:e.isFetching?n.jsx(D,{as:"span",animation:"border",role:"status",className:F.spinner}):n.jsx("div",{ref:s,children:n.jsx(H,{svg:z,className:"svg-container cursor-pointer",size:y.Large,onClick:()=>{var i;return(i=e.fetchNext)==null?void 0:i.call(e,e.nextCursor)}})})})}const S={getThumbnailColumns(){return{xs:12,sm:5,lg:3}},getDetailsColumns(){return{xs:12,sm:7,lg:9}},getSize(e,s){return e.sm?"sm":s||"md"},getThumbnailColSize(e){return e?10:12}},R="_partialName_157xw_4",A="_partialDescription_157xw_8",O="_partialThumbnail_157xw_12",Q="_partialDragHandle_157xw_15",b={partialName:R,partialDescription:A,partialThumbnail:O,partialDragHandle:Q};K.defaultProps={numVideos:15};function K(e){return n.jsx(n.Fragment,{children:Array(e.numVideos).fill(null).map((s,a)=>n.jsxs("div",{className:"d-flex",children:[e.allowBulkActions&&n.jsx("div",{className:"form-check pe-3 pe-sm-2 mx-0 mx-md-2"}),n.jsx(J,{...e})]},a))})}function J(e){const s=P(),i=S.getSize(s,"md")==="sm",o=e.withReordering&&!s.xs;return n.jsxs(j,{className:`${i?"":"py-2"} flex-grow-1`,children:[n.jsx(N,{...S.getThumbnailColumns(),className:`flex-column align-items-flex-start ${i?"pb-2 pe-1":"mb-1 pe-3 pe-md-2"}`,children:n.jsxs(j,{children:[!!o&&n.jsx("div",{className:"d-flex align-items-center justify-content-center col-2",children:n.jsx("div",{className:`partial-loading-background ${b.partialDragHandle}`})}),n.jsx(N,{xs:S.getThumbnailColSize(o),children:n.jsx("div",{className:`partial-loading-background ${i?"rounded":"rounded-3"} ${b.partialThumbnail}`})})]})}),n.jsxs(N,{...S.getDetailsColumns(),className:i?"pb-2":"px-2",children:[n.jsx("div",{className:`partial-loading-background mb-1 ${b.partialName}`}),n.jsx("div",{className:`partial-loading-background ${b.partialDescription}`})]})]})}U.defaultProps={checked:!1,label:"",className:""};function U(e){const{isLabelEllipsis:s}=e,a=u.useRef(null);return u.useEffect(()=>{if(a.current){if(e.checked){a.current.indeterminate&&(a.current.indeterminate=!1);return}if(e.indeterminate&&!a.current.indeterminate){a.current.indeterminate=!0;return}!e.indeterminate&&a.current.indeterminate&&(a.current.indeterminate=!1)}},[a.current,e.indeterminate,e.checked]),n.jsxs("div",{className:`form-check pe-2 ${e.className}`,children:[n.jsx("input",{ref:a,type:"checkbox",className:`${e.inputClassName} form-check-input`,id:e.id,name:e.name,checked:e.checked,onChange:e.onChange,disabled:e.disabled,"aria-checked":e.checked,"aria-label":e.ariaLabel}),e.label&&n.jsx("label",{className:"form-check-label cursor-pointer align-top",htmlFor:e.id,children:n.jsx("span",{className:`${s?"clamp-1":""}`,children:e.label})})]})}function te(e){return n.jsx("svg",{...e,children:n.jsx("path",{fill:"currentColor",d:"M16.863 20c-.662 0-1.21-.567-1.21-1.252s.548-1.252 1.21-1.252c.663 0 1.21.567 1.21 1.252S17.527 20 16.864 20m0-1.441a.183.183 0 0 0-.182.189c0 .118.068.189.182.189.115 0 .183-.071.183-.19a.183.183 0 0 0-.183-.188m0-.118a.516.516 0 0 1-.502-.52v-6.19L11.75 9.158a.53.53 0 0 1-.205-.71c.137-.26.456-.354.685-.212l4.886 2.717a.57.57 0 0 1 .274.473v6.496a.52.52 0 0 1-.526.52m-4.908-4.205a.8.8 0 0 1-.229-.048L2.296 9.51A.55.55 0 0 1 2 9.014c0-.212.114-.401.297-.472l9.52-4.489a.47.47 0 0 1 .434 0l9.452 4.489a.55.55 0 0 1 .297.472.49.49 0 0 1-.297.473l-9.52 4.701a.8.8 0 0 1-.228.048m-8.22-5.198 8.22 4.087 8.288-4.087-8.22-3.898zm8.151 8.41c-4.749 0-6.644-2.905-6.712-3.047a.7.7 0 0 1-.092-.284V10.81c0-.283.229-.52.503-.52s.502.237.502.52v3.142c.388.496 2.077 2.434 5.776 2.434 3.653 0 5.548-1.938 6.005-2.457v-2.93c0-.284.228-.52.502-.52s.502.236.502.52v3.118a.6.6 0 0 1-.091.307c-.046.142-2.192 3.024-6.895 3.024"})})}function ae(){const e=h(l.XS),s=h(l.SM),a=h(l.MD),i=h(l.LG),o=h(l.XL),m=h(l.XXL);let c=l.LG;return e&&(c=l.XS),s&&(c=l.SM),a&&(c=l.MD),i&&(c=l.LG),o&&(c=l.XL),m&&(c=l.XXL),c}export{U as C,te as G,G as I,K as P,j as R,S as V,ae as a,ee as u};
2
+ //# sourceMappingURL=BMTawQoz.chunk.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"DfLXqnWC.chunk.js","sources":["../../../../../node_modules/react-bootstrap/esm/Row.js","../../../../libs/shared/src/hooks/UseInfiniteScroll.ts","../../../../libs/shared/src/hooks/UseInfiniteList.ts","../../../../libs/shared/src/components/infinite-scroll-footer/InfiniteScrollFooter.tsx","../../../../libs/shared/src/components/video-list/VideoListHelper.tsx","../../../../libs/shared/src/components/video-list/partial-loading/PartialVideoList.tsx","../../../../libs/shared/src/components/forms/form-checkbox/Checkbox.tsx","../../../../libs/shared/src/images/svg/objects/GraduationCapSvg.tsx","../../../../libs/shared/src/hooks/UseGetMediaQueryString.ts"],"sourcesContent":["\"use client\";\n\nimport classNames from 'classnames';\nimport * as React from 'react';\nimport { useBootstrapPrefix, useBootstrapBreakpoints, useBootstrapMinBreakpoint } from './ThemeProvider';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nconst Row = /*#__PURE__*/React.forwardRef(({\n bsPrefix,\n className,\n // Need to define the default \"as\" during prop destructuring to be compatible with styled-components github.com/react-bootstrap/react-bootstrap/issues/3595\n as: Component = 'div',\n ...props\n}, ref) => {\n const decoratedBsPrefix = useBootstrapPrefix(bsPrefix, 'row');\n const breakpoints = useBootstrapBreakpoints();\n const minBreakpoint = useBootstrapMinBreakpoint();\n const sizePrefix = `${decoratedBsPrefix}-cols`;\n const classes = [];\n breakpoints.forEach(brkPoint => {\n const propValue = props[brkPoint];\n delete props[brkPoint];\n let cols;\n if (propValue != null && typeof propValue === 'object') {\n ({\n cols\n } = propValue);\n } else {\n cols = propValue;\n }\n const infix = brkPoint !== minBreakpoint ? `-${brkPoint}` : '';\n if (cols != null) classes.push(`${sizePrefix}${infix}-${cols}`);\n });\n return /*#__PURE__*/_jsx(Component, {\n ref: ref,\n ...props,\n className: classNames(className, decoratedBsPrefix, ...classes)\n });\n});\nRow.displayName = 'Row';\nexport default Row;","import { useEffect } from 'react';\n\nimport { FunctionHelper } from 'libs/common/backbone/utils/FunctionHelper';\n\nconst SCROLL_TOLERANCE = 400; // value in px\n\ninterface UseInfiniteScrollOptions {\n fetchNextPage: () => void;\n hasMore: boolean;\n isFetching: boolean;\n scrollContainer?: HTMLElement;\n}\n\nexport function useInfiniteScroll(options: UseInfiniteScrollOptions): void {\n const handleScroll = (): void => {\n if (options.isFetching)\n return;\n\n if (!options.scrollContainer) {\n const currentScrollHeight = window.innerHeight + document.documentElement.scrollTop;\n \n const totalHeight = document.documentElement.scrollHeight - SCROLL_TOLERANCE;\n \n if (currentScrollHeight < totalHeight)\n return;\n } else {\n const { scrollContainer } = options;\n const currentScrollHeight = scrollContainer.getBoundingClientRect().height + scrollContainer.scrollTop;\n \n const totalHeight = scrollContainer.scrollHeight - SCROLL_TOLERANCE;\n \n if (currentScrollHeight < totalHeight)\n return;\n }\n\n options.fetchNextPage();\n };\n\n useEffect(() => {\n const onScroll = FunctionHelper.throttle(handleScroll, 200);\n\n const scrollContainer = options.scrollContainer || window;\n\n if (options.hasMore)\n scrollContainer.addEventListener('scroll', onScroll);\n\n return () => scrollContainer.removeEventListener('scroll', onScroll);\n }, [ options.hasMore, options.fetchNextPage, options.scrollContainer ]);\n}","import { useEffect, useState } from 'react';\n\nimport { HttpStatus, HttpStatusClass } from 'libs/common/backbone/enums/HttpStatus';\nimport { FunctionHelper } from 'libs/common/backbone/utils/FunctionHelper';\nimport { Flight } from 'libs/common/flight';\n\nimport { BaseObject, BasePaginatedCollection } from 'libs/shared/interfaces';\n\nimport { useInfiniteScroll } from './UseInfiniteScroll';\nimport { useSelectAllPages } from './UseSelectAllPages';\n\nexport interface UseInfiniteListResult<T extends BaseObject> {\n items: T[];\n hasMore: boolean;\n isFetching: boolean;\n nextCursor: string;\n totalItems?: number;\n hasFirstPageCompleted: boolean;\n}\n\n/**\n * Hook to extract an infinite list from the application state,\n * save it locally in state and only update when new data\n * is fetched.\n * \n * @param getRequest - callback function to get the request for each page.\n * Can be false if the request requires data that hasn't yet been fetched - e.g. user id.\n * \n * @param fetchNext - callback function to fetch a page.\n * Can be false if the request requires data that hasn't yet been fetched - e.g. user id.\n */\nexport function useInfiniteList<TObject = BaseObject, TResponse = BasePaginatedCollection<TObject>>(\n getRequest: ((cursor?: string) => Flight.Request) | false,\n fetchNext: ((cursor?: string) => void) | false,\n onError?: (pageNumber: number, statusCode: HttpStatus) => void,\n getItems?: (responseData: TResponse) => TObject[],\n getCursor?: (responseData: TResponse) => string,\n scrollContainer?: HTMLElement\n): UseInfiniteListResult<TObject> {\n const [ pagesFetched, setPagesFetched ] = useState(0);\n\n const fetchNextFn = fetchNext as (cursor?: string) => void;\n\n function getKey(cursor?: string): string {\n if (!getRequest)\n return null;\n\n const request = getRequest(cursor);\n\n if (!request)\n return null;\n\n return request.key;\n }\n\n const response = useSelectAllPages<TObject, TResponse>(\n getKey,\n getItems,\n getCursor\n );\n\n function fetchNextPage(): void {\n if (!fetchNext || !getRequest || !response)\n return;\n\n setPagesFetched(currentVal => currentVal + 1);\n return fetchNextFn(response.nextCursor);\n }\n\n useInfiniteScroll({\n fetchNextPage,\n hasMore: !!response?.nextCursor,\n isFetching: response?.isFetching,\n scrollContainer\n });\n\n useEffect(() => {\n if (!response)\n return;\n\n if (response.shouldInitialFetch && fetchNext) {\n fetchNextFn();\n setPagesFetched(currentVal => currentVal + 1);\n }\n }, [ response?.shouldInitialFetch, fetchNext ]);\n\n useEffect(() => {\n if (!response?.statusCode || !FunctionHelper.isFunction(onError))\n return;\n\n const httpStatusClass: HttpStatusClass = +(response.statusCode?.toString()?.substr(0, 1));\n\n if (httpStatusClass !== HttpStatusClass.ClientError && httpStatusClass !== HttpStatusClass.ServerError)\n return;\n\n onError(pagesFetched, response.statusCode);\n }, [response?.statusCode]);\n\n return {\n items: response?.items,\n hasMore: !!response?.nextCursor,\n nextCursor: response?.nextCursor,\n isFetching: response?.isFetching,\n totalItems: response?.totalItems,\n hasFirstPageCompleted: response?.hasFirstPageCompleted\n };\n}","import * as React from 'react';\nimport { Spinner } from 'react-bootstrap';\nimport { useInView } from 'react-intersection-observer';\n\nimport { SvgContainer, SvgContainerSize } from 'libs/shared/components/svg-container/SvgContainer';\nimport { ChevronDownSvg } from 'libs/shared/images/svg/arrows/ChevronDownSvg';\n\nimport styles from './infinite-scroll-footer.module.scss';\n\ninterface InfiniteScrollFooterProps {\n isFetching: boolean;\n fetchNext?: (nextCursor: string) => void;\n nextCursor?: string;\n fetchOnScroll?: boolean;\n}\n\nInfiniteScrollFooter.defaultProps = {\n fetchOnScroll: false\n};\n\nexport function InfiniteScrollFooter(props: InfiniteScrollFooterProps): React.ReactElement {\n const [ ref, inView ] = useInView();\n\n React.useEffect(() => {\n if (!props.fetchOnScroll)\n return;\n\n if (!inView || props.isFetching)\n return;\n\n props.fetchNext?.(props.nextCursor);\n }, [ inView, props.isFetching ]);\n\n return (\n <div className={`p-3 text-center ${styles.container}`}>\n {props.isFetching\n ? <Spinner as='span' animation='border' role='status' className={styles.spinner} />\n : (\n <div ref={ref}>\n <SvgContainer\n svg={ChevronDownSvg}\n className='svg-container cursor-pointer'\n size={SvgContainerSize.Large}\n onClick={() => props.fetchNext?.(props.nextCursor)}\n />\n </div>\n )\n }\n </div>\n );\n}","import { ColProps } from 'react-bootstrap';\n\nimport { VideoItemSize } from 'libs/shared/components/video-list/BaseVideoItemProps';\nimport { Breakpoints } from 'libs/shared/hooks/useBreakpoints';\n\nexport const VideoListHelper = {\n getThumbnailColumns(): ColProps {\n return {\n xs: 12,\n sm: 5,\n lg: 3\n };\n },\n\n getDetailsColumns(): ColProps {\n return {\n xs: 12,\n sm: 7,\n lg: 9\n };\n },\n\n getSize(breakpoints: Breakpoints, size: VideoItemSize): VideoItemSize {\n if (breakpoints.sm)\n return 'sm';\n \n return size || 'md';\n },\n\n getThumbnailColSize(hasDragHandle: boolean): number {\n return hasDragHandle ? 10 : 12;\n }\n};","import React from 'react';\nimport { Col, Row } from 'react-bootstrap';\n\nimport { VideoListHelper } from 'libs/shared/components/video-list/VideoListHelper';\nimport { useBreakpoints } from 'libs/shared/hooks/useBreakpoints';\n\nimport styles from './partial-video-list.module.scss';\n\ninterface PartialVideoListProps {\n withReordering?: boolean;\n numVideos?: number;\n allowBulkActions?: boolean;\n}\n\nPartialVideoList.defaultProps = {\n numVideos: 15\n};\n\nexport function PartialVideoList(props: PartialVideoListProps): JSX.Element {\n return (\n <>\n {Array(props.numVideos).fill(null).map((_, i) => (\n <div className='d-flex' key={i}>\n {props.allowBulkActions && <div className='form-check pe-3 pe-sm-2 mx-0 mx-md-2' />}\n <PartialVideoItem {...props} />\n </div>\n ))}\n </>\n );\n}\n\nexport function PartialVideoItem(props: PartialVideoListProps): JSX.Element {\n const breakpoints = useBreakpoints();\n\n const size = VideoListHelper.getSize(breakpoints, 'md');\n const isSmall = size === 'sm';\n\n const withDragHandle = props.withReordering && !breakpoints.xs;\n\n return (\n <Row className={`${isSmall ? '' : 'py-2'} flex-grow-1`}>\n <Col {...VideoListHelper.getThumbnailColumns()} className={`flex-column align-items-flex-start ${isSmall ? `pb-2 pe-1` : 'mb-1 pe-3 pe-md-2'}`}>\n <Row>\n {!!withDragHandle && (\n <div className='d-flex align-items-center justify-content-center col-2'>\n <div className={`partial-loading-background ${styles.partialDragHandle}`} />\n </div>\n )}\n <Col xs={VideoListHelper.getThumbnailColSize(withDragHandle)}>\n <div className={`partial-loading-background ${isSmall ? 'rounded' : 'rounded-3'} ${styles.partialThumbnail}`} />\n </Col>\n </Row>\n </Col>\n <Col {...VideoListHelper.getDetailsColumns()} className={isSmall ? 'pb-2' : 'px-2'}>\n <div className={`partial-loading-background mb-1 ${styles.partialName}`} />\n <div className={`partial-loading-background ${styles.partialDescription}`} />\n </Col>\n </Row>\n );\n}\n\n","import * as React from 'react';\n\ninterface CheckboxProps {\n id: string;\n checked: boolean;\n onChange: (event: React.ChangeEvent<HTMLInputElement>) => void;\n label?: string;\n ariaLabel?: string;\n name?: string;\n className?: string;\n inputClassName?: string;\n disabled?: boolean;\n indeterminate?: boolean;\n isLabelEllipsis?: boolean;\n}\n\nCheckbox.defaultProps = {\n checked: false,\n label: '',\n className: ''\n};\n\n/**\n * Use this checkbox outside of Formik contexts\n */\nexport function Checkbox(props: CheckboxProps): JSX.Element {\n const { isLabelEllipsis } = props;\n const ref = React.useRef<HTMLInputElement>(null);\n\n React.useEffect(() => {\n if (!ref.current)\n return;\n\n if (props.checked) {\n if (ref.current.indeterminate)\n ref.current.indeterminate = false;\n\n return;\n }\n\n if (props.indeterminate && !ref.current.indeterminate) {\n ref.current.indeterminate = true;\n return;\n }\n\n if (!props.indeterminate && ref.current.indeterminate)\n ref.current.indeterminate = false;\n }, [ ref.current, props.indeterminate, props.checked ]);\n\n return (\n <div className={`form-check pe-2 ${props.className}`}>\n <input\n ref={ref}\n type='checkbox'\n className={`${props.inputClassName} form-check-input`}\n id={props.id}\n name={props.name}\n checked={props.checked}\n onChange={props.onChange}\n disabled={props.disabled}\n aria-checked={props.checked}\n aria-label={props.ariaLabel}\n />\n {props.label && (\n <label className='form-check-label cursor-pointer align-top' htmlFor={props.id}>\n <span className={`${isLabelEllipsis ? 'clamp-1' : ''}`}>{props.label}</span>\n </label>\n )}\n </div>\n );\n}\n","import React from 'react';\n\nexport function GraduationCapSvg(props: React.SVGProps<SVGSVGElement>) {\n return (\n <svg {...props}>\n <path\n fill='currentColor'\n d='M16.863 20c-.662 0-1.21-.567-1.21-1.252s.548-1.252 1.21-1.252c.663 0 1.21.567 1.21 1.252S17.527 20 16.864 20m0-1.441a.183.183 0 0 0-.182.189c0 .118.068.189.182.189.115 0 .183-.071.183-.19a.183.183 0 0 0-.183-.188m0-.118a.516.516 0 0 1-.502-.52v-6.19L11.75 9.158a.53.53 0 0 1-.205-.71c.137-.26.456-.354.685-.212l4.886 2.717a.57.57 0 0 1 .274.473v6.496a.52.52 0 0 1-.526.52m-4.908-4.205a.8.8 0 0 1-.229-.048L2.296 9.51A.55.55 0 0 1 2 9.014c0-.212.114-.401.297-.472l9.52-4.489a.47.47 0 0 1 .434 0l9.452 4.489a.55.55 0 0 1 .297.472.49.49 0 0 1-.297.473l-9.52 4.701a.8.8 0 0 1-.228.048m-8.22-5.198 8.22 4.087 8.288-4.087-8.22-3.898zm8.151 8.41c-4.749 0-6.644-2.905-6.712-3.047a.7.7 0 0 1-.092-.284V10.81c0-.283.229-.52.503-.52s.502.237.502.52v3.142c.388.496 2.077 2.434 5.776 2.434 3.653 0 5.548-1.938 6.005-2.457v-2.93c0-.284.228-.52.502-.52s.502.236.502.52v3.118a.6.6 0 0 1-.091.307c-.046.142-2.192 3.024-6.895 3.024'\n />\n </svg>\n );\n}\n","import { MediaQueryStrings } from 'libs/shared/enums/MediaQueries';\n\nimport { useMediaQuery } from './UseMediaQuery';\n\n/**\n * @deprecated Please use useBreakpoints() instead\n */\nexport function useGetMediaQueryString(): MediaQueryStrings {\n const isXS = useMediaQuery(MediaQueryStrings.XS);\n const isSM = useMediaQuery(MediaQueryStrings.SM);\n const isMD = useMediaQuery(MediaQueryStrings.MD);\n const isLG = useMediaQuery(MediaQueryStrings.LG);\n const isXL = useMediaQuery(MediaQueryStrings.XL);\n const isXXL = useMediaQuery(MediaQueryStrings.XXL);\n\n let currentString = MediaQueryStrings.LG; // default\n if (isXS) currentString = MediaQueryStrings.XS;\n if (isSM) currentString = MediaQueryStrings.SM;\n if (isMD) currentString = MediaQueryStrings.MD;\n if (isLG) currentString = MediaQueryStrings.LG;\n if (isXL) currentString = MediaQueryStrings.XL;\n if (isXXL) currentString = MediaQueryStrings.XXL;\n\n return currentString;\n}"],"names":["Row","React.forwardRef","bsPrefix","className","Component","props","ref","decoratedBsPrefix","useBootstrapPrefix","breakpoints","useBootstrapBreakpoints","minBreakpoint","useBootstrapMinBreakpoint","sizePrefix","classes","brkPoint","propValue","cols","infix","_jsx","classNames","SCROLL_TOLERANCE","useInfiniteScroll","options","handleScroll","scrollContainer","currentScrollHeight","totalHeight","useEffect","onScroll","FunctionHelper","useInfiniteList","getRequest","fetchNext","onError","getItems","getCursor","pagesFetched","setPagesFetched","useState","fetchNextFn","getKey","cursor","request","response","useSelectAllPages","fetchNextPage","currentVal","httpStatusClass","_b","_a","HttpStatusClass","InfiniteScrollFooter","inView","useInView","React.useEffect","jsx","styles","Spinner","SvgContainer","ChevronDownSvg","SvgContainerSize","VideoListHelper","size","hasDragHandle","PartialVideoList","Fragment","_","i","jsxs","PartialVideoItem","useBreakpoints","isSmall","withDragHandle","Col","Checkbox","isLabelEllipsis","React.useRef","GraduationCapSvg","useGetMediaQueryString","isXS","useMediaQuery","MediaQueryStrings","isSM","isMD","isLG","isXL","isXXL","currentString"],"mappings":"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","x_google_ignoreList":[0]}
1
+ {"version":3,"file":"BMTawQoz.chunk.js","sources":["../../../../../node_modules/react-bootstrap/esm/Row.js","../../../../libs/shared/src/hooks/UseInfiniteScroll.ts","../../../../libs/shared/src/hooks/UseInfiniteList.ts","../../../../libs/shared/src/components/infinite-scroll-footer/InfiniteScrollFooter.tsx","../../../../libs/shared/src/components/video-list/VideoListHelper.tsx","../../../../libs/shared/src/components/video-list/partial-loading/PartialVideoList.tsx","../../../../libs/shared/src/components/forms/form-checkbox/Checkbox.tsx","../../../../libs/shared/src/images/svg/objects/GraduationCapSvg.tsx","../../../../libs/shared/src/hooks/UseGetMediaQueryString.ts"],"sourcesContent":["\"use client\";\n\nimport classNames from 'classnames';\nimport * as React from 'react';\nimport { useBootstrapPrefix, useBootstrapBreakpoints, useBootstrapMinBreakpoint } from './ThemeProvider';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nconst Row = /*#__PURE__*/React.forwardRef(({\n bsPrefix,\n className,\n // Need to define the default \"as\" during prop destructuring to be compatible with styled-components github.com/react-bootstrap/react-bootstrap/issues/3595\n as: Component = 'div',\n ...props\n}, ref) => {\n const decoratedBsPrefix = useBootstrapPrefix(bsPrefix, 'row');\n const breakpoints = useBootstrapBreakpoints();\n const minBreakpoint = useBootstrapMinBreakpoint();\n const sizePrefix = `${decoratedBsPrefix}-cols`;\n const classes = [];\n breakpoints.forEach(brkPoint => {\n const propValue = props[brkPoint];\n delete props[brkPoint];\n let cols;\n if (propValue != null && typeof propValue === 'object') {\n ({\n cols\n } = propValue);\n } else {\n cols = propValue;\n }\n const infix = brkPoint !== minBreakpoint ? `-${brkPoint}` : '';\n if (cols != null) classes.push(`${sizePrefix}${infix}-${cols}`);\n });\n return /*#__PURE__*/_jsx(Component, {\n ref: ref,\n ...props,\n className: classNames(className, decoratedBsPrefix, ...classes)\n });\n});\nRow.displayName = 'Row';\nexport default Row;","import { useEffect } from 'react';\n\nimport { FunctionHelper } from 'libs/common/backbone/utils/FunctionHelper';\n\nconst SCROLL_TOLERANCE = 400; // value in px\n\ninterface UseInfiniteScrollOptions {\n fetchNextPage: () => void;\n hasMore: boolean;\n isFetching: boolean;\n scrollContainer?: HTMLElement;\n}\n\nexport function useInfiniteScroll(options: UseInfiniteScrollOptions): void {\n const handleScroll = (): void => {\n if (options.isFetching)\n return;\n\n if (!options.scrollContainer) {\n const currentScrollHeight = window.innerHeight + document.documentElement.scrollTop;\n \n const totalHeight = document.documentElement.scrollHeight - SCROLL_TOLERANCE;\n \n if (currentScrollHeight < totalHeight)\n return;\n } else {\n const { scrollContainer } = options;\n const currentScrollHeight = scrollContainer.getBoundingClientRect().height + scrollContainer.scrollTop;\n \n const totalHeight = scrollContainer.scrollHeight - SCROLL_TOLERANCE;\n \n if (currentScrollHeight < totalHeight)\n return;\n }\n\n options.fetchNextPage();\n };\n\n useEffect(() => {\n const onScroll = FunctionHelper.throttle(handleScroll, 200);\n\n const scrollContainer = options.scrollContainer || window;\n\n if (options.hasMore)\n scrollContainer.addEventListener('scroll', onScroll);\n\n return () => scrollContainer.removeEventListener('scroll', onScroll);\n }, [ options.hasMore, options.fetchNextPage, options.scrollContainer ]);\n}","import { useEffect, useState } from 'react';\n\nimport { HttpStatus, HttpStatusClass } from 'libs/common/backbone/enums/HttpStatus';\nimport { FunctionHelper } from 'libs/common/backbone/utils/FunctionHelper';\nimport { Flight } from 'libs/common/flight';\n\nimport { BaseObject, BasePaginatedCollection } from 'libs/shared/interfaces';\n\nimport { useInfiniteScroll } from './UseInfiniteScroll';\nimport { useSelectAllPages } from './UseSelectAllPages';\n\nexport interface UseInfiniteListResult<T extends BaseObject> {\n items: T[];\n hasMore: boolean;\n isFetching: boolean;\n nextCursor: string;\n totalItems?: number;\n hasFirstPageCompleted: boolean;\n}\n\n/**\n * Hook to extract an infinite list from the application state,\n * save it locally in state and only update when new data\n * is fetched.\n * \n * @param getRequest - callback function to get the request for each page.\n * Can be false if the request requires data that hasn't yet been fetched - e.g. user id.\n * \n * @param fetchNext - callback function to fetch a page.\n * Can be false if the request requires data that hasn't yet been fetched - e.g. user id.\n */\nexport function useInfiniteList<TObject = BaseObject, TResponse = BasePaginatedCollection<TObject>>(\n getRequest: ((cursor?: string) => Flight.Request) | false,\n fetchNext: ((cursor?: string) => void) | false,\n onError?: (pageNumber: number, statusCode: HttpStatus) => void,\n getItems?: (responseData: TResponse) => TObject[],\n getCursor?: (responseData: TResponse) => string,\n scrollContainer?: HTMLElement\n): UseInfiniteListResult<TObject> {\n const [ pagesFetched, setPagesFetched ] = useState(0);\n\n const fetchNextFn = fetchNext as (cursor?: string) => void;\n\n function getKey(cursor?: string): string {\n if (!getRequest)\n return null;\n\n const request = getRequest(cursor);\n\n if (!request)\n return null;\n\n return request.key;\n }\n\n const response = useSelectAllPages<TObject, TResponse>(\n getKey,\n getItems,\n getCursor\n );\n\n function fetchNextPage(): void {\n if (!fetchNext || !getRequest || !response)\n return;\n\n setPagesFetched(currentVal => currentVal + 1);\n return fetchNextFn(response.nextCursor);\n }\n\n useInfiniteScroll({\n fetchNextPage,\n hasMore: !!response?.nextCursor,\n isFetching: response?.isFetching,\n scrollContainer\n });\n\n useEffect(() => {\n if (!response)\n return;\n\n if (response.shouldInitialFetch && fetchNext) {\n fetchNextFn();\n setPagesFetched(currentVal => currentVal + 1);\n }\n }, [ response?.shouldInitialFetch, fetchNext ]);\n\n useEffect(() => {\n if (!response?.statusCode || !FunctionHelper.isFunction(onError))\n return;\n\n const httpStatusClass: HttpStatusClass = +(response.statusCode?.toString()?.substr(0, 1));\n\n if (httpStatusClass !== HttpStatusClass.ClientError && httpStatusClass !== HttpStatusClass.ServerError)\n return;\n\n onError(pagesFetched, response.statusCode);\n }, [response?.statusCode]);\n\n return {\n items: response?.items,\n hasMore: !!response?.nextCursor,\n nextCursor: response?.nextCursor,\n isFetching: response?.isFetching,\n totalItems: response?.totalItems,\n hasFirstPageCompleted: response?.hasFirstPageCompleted\n };\n}","import * as React from 'react';\nimport { Spinner } from 'react-bootstrap';\nimport { useInView } from 'react-intersection-observer';\n\nimport { SvgContainer, SvgContainerSize } from 'libs/shared/components/svg-container/SvgContainer';\nimport { ChevronDownSvg } from 'libs/shared/images/svg/arrows/ChevronDownSvg';\n\nimport styles from './infinite-scroll-footer.module.scss';\n\ninterface InfiniteScrollFooterProps {\n isFetching: boolean;\n fetchNext?: (nextCursor: string) => void;\n nextCursor?: string;\n fetchOnScroll?: boolean;\n}\n\nInfiniteScrollFooter.defaultProps = {\n fetchOnScroll: false\n};\n\nexport function InfiniteScrollFooter(props: InfiniteScrollFooterProps): React.ReactElement {\n const [ ref, inView ] = useInView();\n\n React.useEffect(() => {\n if (!props.fetchOnScroll)\n return;\n\n if (!inView || props.isFetching)\n return;\n\n props.fetchNext?.(props.nextCursor);\n }, [ inView, props.isFetching ]);\n\n return (\n <div className={`p-3 text-center ${styles.container}`}>\n {props.isFetching\n ? <Spinner as='span' animation='border' role='status' className={styles.spinner} />\n : (\n <div ref={ref}>\n <SvgContainer\n svg={ChevronDownSvg}\n className='svg-container cursor-pointer'\n size={SvgContainerSize.Large}\n onClick={() => props.fetchNext?.(props.nextCursor)}\n />\n </div>\n )\n }\n </div>\n );\n}","import { ColProps } from 'react-bootstrap';\n\nimport { VideoItemSize } from 'libs/shared/components/video-list/BaseVideoItemProps';\nimport { Breakpoints } from 'libs/shared/hooks/useBreakpoints';\n\nexport const VideoListHelper = {\n getThumbnailColumns(): ColProps {\n return {\n xs: 12,\n sm: 5,\n lg: 3\n };\n },\n\n getDetailsColumns(): ColProps {\n return {\n xs: 12,\n sm: 7,\n lg: 9\n };\n },\n\n getSize(breakpoints: Breakpoints, size: VideoItemSize): VideoItemSize {\n if (breakpoints.sm)\n return 'sm';\n \n return size || 'md';\n },\n\n getThumbnailColSize(hasDragHandle: boolean): number {\n return hasDragHandle ? 10 : 12;\n }\n};","import React from 'react';\nimport { Col, Row } from 'react-bootstrap';\n\nimport { VideoListHelper } from 'libs/shared/components/video-list/VideoListHelper';\nimport { useBreakpoints } from 'libs/shared/hooks/useBreakpoints';\n\nimport styles from './partial-video-list.module.scss';\n\ninterface PartialVideoListProps {\n withReordering?: boolean;\n numVideos?: number;\n allowBulkActions?: boolean;\n}\n\nPartialVideoList.defaultProps = {\n numVideos: 15\n};\n\nexport function PartialVideoList(props: PartialVideoListProps): JSX.Element {\n return (\n <>\n {Array(props.numVideos).fill(null).map((_, i) => (\n <div className='d-flex' key={i}>\n {props.allowBulkActions && <div className='form-check pe-3 pe-sm-2 mx-0 mx-md-2' />}\n <PartialVideoItem {...props} />\n </div>\n ))}\n </>\n );\n}\n\nexport function PartialVideoItem(props: PartialVideoListProps): JSX.Element {\n const breakpoints = useBreakpoints();\n\n const size = VideoListHelper.getSize(breakpoints, 'md');\n const isSmall = size === 'sm';\n\n const withDragHandle = props.withReordering && !breakpoints.xs;\n\n return (\n <Row className={`${isSmall ? '' : 'py-2'} flex-grow-1`}>\n <Col {...VideoListHelper.getThumbnailColumns()} className={`flex-column align-items-flex-start ${isSmall ? `pb-2 pe-1` : 'mb-1 pe-3 pe-md-2'}`}>\n <Row>\n {!!withDragHandle && (\n <div className='d-flex align-items-center justify-content-center col-2'>\n <div className={`partial-loading-background ${styles.partialDragHandle}`} />\n </div>\n )}\n <Col xs={VideoListHelper.getThumbnailColSize(withDragHandle)}>\n <div className={`partial-loading-background ${isSmall ? 'rounded' : 'rounded-3'} ${styles.partialThumbnail}`} />\n </Col>\n </Row>\n </Col>\n <Col {...VideoListHelper.getDetailsColumns()} className={isSmall ? 'pb-2' : 'px-2'}>\n <div className={`partial-loading-background mb-1 ${styles.partialName}`} />\n <div className={`partial-loading-background ${styles.partialDescription}`} />\n </Col>\n </Row>\n );\n}\n\n","import * as React from 'react';\n\ninterface CheckboxProps {\n id: string;\n checked: boolean;\n onChange: (event: React.ChangeEvent<HTMLInputElement>) => void;\n label?: string;\n ariaLabel?: string;\n name?: string;\n className?: string;\n inputClassName?: string;\n disabled?: boolean;\n indeterminate?: boolean;\n isLabelEllipsis?: boolean;\n}\n\nCheckbox.defaultProps = {\n checked: false,\n label: '',\n className: ''\n};\n\n/**\n * Use this checkbox outside of Formik contexts\n */\nexport function Checkbox(props: CheckboxProps): JSX.Element {\n const { isLabelEllipsis } = props;\n const ref = React.useRef<HTMLInputElement>(null);\n\n React.useEffect(() => {\n if (!ref.current)\n return;\n\n if (props.checked) {\n if (ref.current.indeterminate)\n ref.current.indeterminate = false;\n\n return;\n }\n\n if (props.indeterminate && !ref.current.indeterminate) {\n ref.current.indeterminate = true;\n return;\n }\n\n if (!props.indeterminate && ref.current.indeterminate)\n ref.current.indeterminate = false;\n }, [ ref.current, props.indeterminate, props.checked ]);\n\n return (\n <div className={`form-check pe-2 ${props.className}`}>\n <input\n ref={ref}\n type='checkbox'\n className={`${props.inputClassName} form-check-input`}\n id={props.id}\n name={props.name}\n checked={props.checked}\n onChange={props.onChange}\n disabled={props.disabled}\n aria-checked={props.checked}\n aria-label={props.ariaLabel}\n />\n {props.label && (\n <label className='form-check-label cursor-pointer align-top' htmlFor={props.id}>\n <span className={`${isLabelEllipsis ? 'clamp-1' : ''}`}>{props.label}</span>\n </label>\n )}\n </div>\n );\n}\n","import React from 'react';\n\nexport function GraduationCapSvg(props: React.SVGProps<SVGSVGElement>) {\n return (\n <svg {...props}>\n <path\n fill='currentColor'\n d='M16.863 20c-.662 0-1.21-.567-1.21-1.252s.548-1.252 1.21-1.252c.663 0 1.21.567 1.21 1.252S17.527 20 16.864 20m0-1.441a.183.183 0 0 0-.182.189c0 .118.068.189.182.189.115 0 .183-.071.183-.19a.183.183 0 0 0-.183-.188m0-.118a.516.516 0 0 1-.502-.52v-6.19L11.75 9.158a.53.53 0 0 1-.205-.71c.137-.26.456-.354.685-.212l4.886 2.717a.57.57 0 0 1 .274.473v6.496a.52.52 0 0 1-.526.52m-4.908-4.205a.8.8 0 0 1-.229-.048L2.296 9.51A.55.55 0 0 1 2 9.014c0-.212.114-.401.297-.472l9.52-4.489a.47.47 0 0 1 .434 0l9.452 4.489a.55.55 0 0 1 .297.472.49.49 0 0 1-.297.473l-9.52 4.701a.8.8 0 0 1-.228.048m-8.22-5.198 8.22 4.087 8.288-4.087-8.22-3.898zm8.151 8.41c-4.749 0-6.644-2.905-6.712-3.047a.7.7 0 0 1-.092-.284V10.81c0-.283.229-.52.503-.52s.502.237.502.52v3.142c.388.496 2.077 2.434 5.776 2.434 3.653 0 5.548-1.938 6.005-2.457v-2.93c0-.284.228-.52.502-.52s.502.236.502.52v3.118a.6.6 0 0 1-.091.307c-.046.142-2.192 3.024-6.895 3.024'\n />\n </svg>\n );\n}\n","import { MediaQueryStrings } from 'libs/shared/enums/MediaQueries';\n\nimport { useMediaQuery } from './UseMediaQuery';\n\n/**\n * @deprecated Please use useBreakpoints() instead\n */\nexport function useGetMediaQueryString(): MediaQueryStrings {\n const isXS = useMediaQuery(MediaQueryStrings.XS);\n const isSM = useMediaQuery(MediaQueryStrings.SM);\n const isMD = useMediaQuery(MediaQueryStrings.MD);\n const isLG = useMediaQuery(MediaQueryStrings.LG);\n const isXL = useMediaQuery(MediaQueryStrings.XL);\n const isXXL = useMediaQuery(MediaQueryStrings.XXL);\n\n let currentString = MediaQueryStrings.LG; // default\n if (isXS) currentString = MediaQueryStrings.XS;\n if (isSM) currentString = MediaQueryStrings.SM;\n if (isMD) currentString = MediaQueryStrings.MD;\n if (isLG) currentString = MediaQueryStrings.LG;\n if (isXL) currentString = MediaQueryStrings.XL;\n if (isXXL) currentString = MediaQueryStrings.XXL;\n\n return currentString;\n}"],"names":["Row","React.forwardRef","bsPrefix","className","Component","props","ref","decoratedBsPrefix","useBootstrapPrefix","breakpoints","useBootstrapBreakpoints","minBreakpoint","useBootstrapMinBreakpoint","sizePrefix","classes","brkPoint","propValue","cols","infix","_jsx","classNames","SCROLL_TOLERANCE","useInfiniteScroll","options","handleScroll","scrollContainer","currentScrollHeight","totalHeight","useEffect","onScroll","FunctionHelper","useInfiniteList","getRequest","fetchNext","onError","getItems","getCursor","pagesFetched","setPagesFetched","useState","fetchNextFn","getKey","cursor","request","response","useSelectAllPages","fetchNextPage","currentVal","httpStatusClass","_b","_a","HttpStatusClass","InfiniteScrollFooter","inView","useInView","React.useEffect","jsx","styles","Spinner","SvgContainer","ChevronDownSvg","SvgContainerSize","VideoListHelper","size","hasDragHandle","PartialVideoList","Fragment","_","i","jsxs","PartialVideoItem","useBreakpoints","isSmall","withDragHandle","Col","Checkbox","isLabelEllipsis","React.useRef","GraduationCapSvg","useGetMediaQueryString","isXS","useMediaQuery","MediaQueryStrings","isSM","isMD","isLG","isXL","isXXL","currentString"],"mappings":"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","x_google_ignoreList":[0]}
@@ -1,2 +1,2 @@
1
- import{ab as w,ac as m,ae as p,af as c,U as i}from"./app-eQ6keCVj.js";let l=null;const s={getVideoDownloadUrl(o,e){return i.safeUrlConcat(i.makeHttps(o),`/download?token=${e}`)},downloadResource(o,e,t,n){var d;let a=l;l||(a=l=document.createElement("iframe"),document.body.appendChild(a),a.style.display="none"),a.src=o.url,n||w.logUserAction({id:o==null?void 0:o.id,name:o==null?void 0:o.name,resourceType:(d=o==null?void 0:o.metadata)==null?void 0:d.resourceType,...e},{actionType:c.Download,entity:p.Resource,workflowPhase:m.Complete,...t})},async downloadBlob(o,e){const t=await fetch(o);if(!t.ok)throw new Error("Error downloading file");const n=URL.createObjectURL(await t.blob()),a=document.createElement("a");a.href=n,a.download=e,document.body.appendChild(a),a.click(),document.body.removeChild(a),window.setTimeout(()=>URL.revokeObjectURL(n),100)}};export{s as D};
2
- //# sourceMappingURL=BWu0k43d.chunk.js.map
1
+ import{ab as w,ac as m,ae as p,af as c,U as i}from"./app-DlxnnX-Y.js";let l=null;const s={getVideoDownloadUrl(o,e){return i.safeUrlConcat(i.makeHttps(o),`/download?token=${e}`)},downloadResource(o,e,t,n){var d;let a=l;l||(a=l=document.createElement("iframe"),document.body.appendChild(a),a.style.display="none"),a.src=o.url,n||w.logUserAction({id:o==null?void 0:o.id,name:o==null?void 0:o.name,resourceType:(d=o==null?void 0:o.metadata)==null?void 0:d.resourceType,...e},{actionType:c.Download,entity:p.Resource,workflowPhase:m.Complete,...t})},async downloadBlob(o,e){const t=await fetch(o);if(!t.ok)throw new Error("Error downloading file");const n=URL.createObjectURL(await t.blob()),a=document.createElement("a");a.href=n,a.download=e,document.body.appendChild(a),a.click(),document.body.removeChild(a),window.setTimeout(()=>URL.revokeObjectURL(n),100)}};export{s as D};
2
+ //# sourceMappingURL=BP-61ONz.chunk.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"BWu0k43d.chunk.js","sources":["../../../../libs/shared/src/utils/DownloadHelper.ts"],"sourcesContent":["import { UrlHelper } from 'libs/common/backbone/utils/UrlHelper';\nimport { HashObject } from 'libs/common/react/interfaces';\n\nimport { AnalyticsHelper } from 'libs/analytics/AnalyticsHelper';\nimport { AnalyticsOptions, EntityType, UserAction, WorkflowPhase } from 'libs/analytics/interfaces';\n\nimport { Resource } from '../interfaces';\n\nlet downloadRef: HTMLIFrameElement = null;\n\nexport const DownloadHelper = {\n getVideoDownloadUrl(downloadProxyUrl: string, token: string): string {\n return UrlHelper.safeUrlConcat(UrlHelper.makeHttps(downloadProxyUrl), `/download?token=${token}`);\n },\n\n downloadResource(\n resource: Resource,\n analyticsData: HashObject,\n analyticsOptions: AnalyticsOptions,\n skipEventLogging?: boolean\n ): void {\n let iframe = downloadRef;\n\n if (!downloadRef) {\n iframe = downloadRef = document.createElement('iframe');\n document.body.appendChild(iframe);\n\n iframe.style.display = 'none';\n }\n\n iframe.src = resource.url;\n\n if (!skipEventLogging)\n AnalyticsHelper.logUserAction({\n id: resource?.id,\n name: resource?.name,\n resourceType: resource?.metadata?.resourceType,\n ...analyticsData\n }, {\n actionType: UserAction.Download,\n entity: EntityType.Resource,\n workflowPhase: WorkflowPhase.Complete,\n ...analyticsOptions\n });\n },\n\n async downloadBlob(fileUrl: string, fileName: string): Promise<void> {\n const response = await fetch(fileUrl);\n\n if (!response.ok) {\n throw new Error('Error downloading file');\n }\n\n // Mime type is inferred from the download\n const downloadUrl = URL.createObjectURL(await response.blob());\n\n const a = document.createElement('a');\n a.href = downloadUrl;\n a.download = fileName;\n\n document.body.appendChild(a);\n a.click();\n document.body.removeChild(a);\n\n // Delay revoking the URL to ensure the download is initiated\n window.setTimeout(() => URL.revokeObjectURL(downloadUrl), 100);\n }\n};"],"names":["downloadRef","DownloadHelper","downloadProxyUrl","token","UrlHelper","resource","analyticsData","analyticsOptions","skipEventLogging","iframe","AnalyticsHelper","_a","UserAction","EntityType","WorkflowPhase","fileUrl","fileName","response","downloadUrl"],"mappings":"sEAQA,IAAIA,EAAiC,KAE9B,MAAMC,EAAiB,CAC5B,oBAAoBC,EAA0BC,EAAuB,CACnE,OAAOC,EAAU,cAAcA,EAAU,UAAUF,CAAgB,EAAG,mBAAmBC,CAAK,EAAE,CAClG,EAEA,iBACEE,EACAC,EACAC,EACAC,EACM,OACN,IAAIC,EAAST,EAERA,IACHS,EAAST,EAAc,SAAS,cAAc,QAAQ,EACtD,SAAS,KAAK,YAAYS,CAAM,EAEhCA,EAAO,MAAM,QAAU,QAGzBA,EAAO,IAAMJ,EAAS,IAEjBG,GACHE,EAAgB,cAAc,CAC5B,GAAIL,GAAA,YAAAA,EAAU,GACd,KAAMA,GAAA,YAAAA,EAAU,KAChB,cAAcM,EAAAN,GAAA,YAAAA,EAAU,WAAV,YAAAM,EAAoB,aAClC,GAAGL,CAAA,EACF,CACD,WAAYM,EAAW,SACvB,OAAQC,EAAW,SACnB,cAAeC,EAAc,SAC7B,GAAGP,CAAA,CACJ,CACL,EAEA,MAAM,aAAaQ,EAAiBC,EAAiC,CACnE,MAAMC,EAAW,MAAM,MAAMF,CAAO,EAEpC,GAAI,CAACE,EAAS,GACZ,MAAM,IAAI,MAAM,wBAAwB,EAI1C,MAAMC,EAAc,IAAI,gBAAgB,MAAMD,EAAS,MAAM,EAEvD,EAAI,SAAS,cAAc,GAAG,EACpC,EAAE,KAAOC,EACT,EAAE,SAAWF,EAEb,SAAS,KAAK,YAAY,CAAC,EAC3B,EAAE,MAAA,EACF,SAAS,KAAK,YAAY,CAAC,EAG3B,OAAO,WAAW,IAAM,IAAI,gBAAgBE,CAAW,EAAG,GAAG,CAC/D,CACF"}
1
+ {"version":3,"file":"BP-61ONz.chunk.js","sources":["../../../../libs/shared/src/utils/DownloadHelper.ts"],"sourcesContent":["import { UrlHelper } from 'libs/common/backbone/utils/UrlHelper';\nimport { HashObject } from 'libs/common/react/interfaces';\n\nimport { AnalyticsHelper } from 'libs/analytics/AnalyticsHelper';\nimport { AnalyticsOptions, EntityType, UserAction, WorkflowPhase } from 'libs/analytics/interfaces';\n\nimport { Resource } from '../interfaces';\n\nlet downloadRef: HTMLIFrameElement = null;\n\nexport const DownloadHelper = {\n getVideoDownloadUrl(downloadProxyUrl: string, token: string): string {\n return UrlHelper.safeUrlConcat(UrlHelper.makeHttps(downloadProxyUrl), `/download?token=${token}`);\n },\n\n downloadResource(\n resource: Resource,\n analyticsData: HashObject,\n analyticsOptions: AnalyticsOptions,\n skipEventLogging?: boolean\n ): void {\n let iframe = downloadRef;\n\n if (!downloadRef) {\n iframe = downloadRef = document.createElement('iframe');\n document.body.appendChild(iframe);\n\n iframe.style.display = 'none';\n }\n\n iframe.src = resource.url;\n\n if (!skipEventLogging)\n AnalyticsHelper.logUserAction({\n id: resource?.id,\n name: resource?.name,\n resourceType: resource?.metadata?.resourceType,\n ...analyticsData\n }, {\n actionType: UserAction.Download,\n entity: EntityType.Resource,\n workflowPhase: WorkflowPhase.Complete,\n ...analyticsOptions\n });\n },\n\n async downloadBlob(fileUrl: string, fileName: string): Promise<void> {\n const response = await fetch(fileUrl);\n\n if (!response.ok) {\n throw new Error('Error downloading file');\n }\n\n // Mime type is inferred from the download\n const downloadUrl = URL.createObjectURL(await response.blob());\n\n const a = document.createElement('a');\n a.href = downloadUrl;\n a.download = fileName;\n\n document.body.appendChild(a);\n a.click();\n document.body.removeChild(a);\n\n // Delay revoking the URL to ensure the download is initiated\n window.setTimeout(() => URL.revokeObjectURL(downloadUrl), 100);\n }\n};"],"names":["downloadRef","DownloadHelper","downloadProxyUrl","token","UrlHelper","resource","analyticsData","analyticsOptions","skipEventLogging","iframe","AnalyticsHelper","_a","UserAction","EntityType","WorkflowPhase","fileUrl","fileName","response","downloadUrl"],"mappings":"sEAQA,IAAIA,EAAiC,KAE9B,MAAMC,EAAiB,CAC5B,oBAAoBC,EAA0BC,EAAuB,CACnE,OAAOC,EAAU,cAAcA,EAAU,UAAUF,CAAgB,EAAG,mBAAmBC,CAAK,EAAE,CAClG,EAEA,iBACEE,EACAC,EACAC,EACAC,EACM,OACN,IAAIC,EAAST,EAERA,IACHS,EAAST,EAAc,SAAS,cAAc,QAAQ,EACtD,SAAS,KAAK,YAAYS,CAAM,EAEhCA,EAAO,MAAM,QAAU,QAGzBA,EAAO,IAAMJ,EAAS,IAEjBG,GACHE,EAAgB,cAAc,CAC5B,GAAIL,GAAA,YAAAA,EAAU,GACd,KAAMA,GAAA,YAAAA,EAAU,KAChB,cAAcM,EAAAN,GAAA,YAAAA,EAAU,WAAV,YAAAM,EAAoB,aAClC,GAAGL,CAAA,EACF,CACD,WAAYM,EAAW,SACvB,OAAQC,EAAW,SACnB,cAAeC,EAAc,SAC7B,GAAGP,CAAA,CACJ,CACL,EAEA,MAAM,aAAaQ,EAAiBC,EAAiC,CACnE,MAAMC,EAAW,MAAM,MAAMF,CAAO,EAEpC,GAAI,CAACE,EAAS,GACZ,MAAM,IAAI,MAAM,wBAAwB,EAI1C,MAAMC,EAAc,IAAI,gBAAgB,MAAMD,EAAS,MAAM,EAEvD,EAAI,SAAS,cAAc,GAAG,EACpC,EAAE,KAAOC,EACT,EAAE,SAAWF,EAEb,SAAS,KAAK,YAAY,CAAC,EAC3B,EAAE,MAAA,EACF,SAAS,KAAK,YAAY,CAAC,EAG3B,OAAO,WAAW,IAAM,IAAI,gBAAgBE,CAAW,EAAG,GAAG,CAC/D,CACF"}
@@ -1,2 +1,2 @@
1
- import{j as s,G as z,Q as h,b2 as A,r as L,F as v,b3 as S,aT as M}from"./app-eQ6keCVj.js";import{a as N}from"./CKE8GGKH.chunk.js";const P=["bg-green","bg-cyan","bg-teal","bg-blue","bg-indigo","bg-purple"],G=["bg-pink","bg-orange",...P];function H(t){return s.jsx("svg",{...t,children:s.jsx("path",{fill:"currentColor",fillRule:"evenodd",d:"M7.76 6.078a.5.5 0 0 0-.76.427v11a.5.5 0 0 0 .76.426l9.003-5.5a.5.5 0 0 0 0-.853z",clipRule:"evenodd"})})}function I(t){return s.jsx("svg",{...t,viewBox:"0 0 24 21",children:s.jsx("path",{d:"M22.5 1A1.5 1.5 0 0 1 24 2.5v18a1.5 1.5 0 0 1-1.5 1.5h-21A1.5 1.5 0 0 1 0 20.5v-18A1.5 1.5 0 0 1 1.5 1zm0 1.5h-21v18h21zm-8.21 4.092 5.84 9a.75.75 0 0 1-1.26.816L13.638 8.34l-2.523 3.591a.75.75 0 0 1-1.144.1l-.889-.89L5.1 16.45a.75.75 0 0 1-1.2-.9l4.5-6a.75.75 0 0 1 1.13-.08l.87.869 2.648-3.77a.75.75 0 0 1 1.243.023M6 4.75a2.25 2.25 0 1 1 0 4.5 2.25 2.25 0 0 1 0-4.5m0 1.5a.75.75 0 1 0 0 1.5.75.75 0 0 0 0-1.5",fill:"currentColor"})})}function B(t){return s.jsx("svg",{...t,children:s.jsx("path",{fill:"currentColor",d:"M20.283 4C21.229 4 22 4.745 22 5.66v8.74c0 .726-.478 1.338-1.151 1.565l.088-10.22a.657.657 0 0 0-.664-.66H6.351A1.71 1.71 0 0 1 7.951 4zm-2.059 1.933c.947 0 1.718.745 1.718 1.65v8.74c.01.726-.479 1.339-1.142 1.565l.088-10.24a.647.647 0 0 0-.664-.64H4.293a1.7 1.7 0 0 1 1.6-1.075zM16.05 7.95c.946 0 1.707.744 1.707 1.659v8.74c0 .915-.77 1.65-1.707 1.65H3.707C2.761 20 2 19.255 2 18.35V9.61c0-.915.77-1.66 1.707-1.66zm-.01 1.084H3.717a.647.647 0 0 0-.663.64v8.609c0 .358.292.641.663.641H16.03c.371 0 .664-.283.664-.641V9.676c.01-.358-.283-.641-.654-.641M8.546 12.39v3.178c0 .17.205.264.342.17l2.254-1.594c.117-.085.117-.255 0-.33l-2.264-1.593c-.137-.095-.332 0-.332.17"})})}function E(t,e){return e[t.charCodeAt(0)%e.length]}const O="_baseFallbackContainer_14tjv_1",R="_svgFallbackContainer_14tjv_1",V="_subjectFallbackContainer_14tjv_9",w="_subjectFallbackContainerSmall_14tjv_18",q="_subjectFallbackContainerLarge_14tjv_21",Q="_seriesItemFallback_14tjv_24",U="_playlistItemFallback_14tjv_24",J="_playlistFallback_14tjv_28",W="_posterFallback_14tjv_29",X="_subjectFallback_14tjv_9",Y="_fallbackThumbnailImage_14tjv_47",Z="_videoFallback_14tjv_55",K="_folderFallback_14tjv_56",n={baseFallbackContainer:O,svgFallbackContainer:R,subjectFallbackContainer:V,subjectFallbackContainerSmall:w,subjectFallbackContainerLarge:q,seriesItemFallback:Q,playlistItemFallback:U,playlistFallback:J,posterFallback:W,subjectFallback:X,fallbackThumbnailImage:Y,videoFallback:Z,folderFallback:K};var T=(t=>(t[t.Playlist=0]="Playlist",t[t.PlaylistThumbnail=1]="PlaylistThumbnail",t[t.Series=2]="Series",t[t.SeriesThumbnail=3]="SeriesThumbnail",t[t.Subject=4]="Subject",t[t.TallSubject=5]="TallSubject",t[t.Video=6]="Video",t[t.Folder=7]="Folder",t))(T||{});function p(t,e,i){if(e===4){const o=i===0?n.subjectFallbackContainerLarge:n.subjectFallbackContainerSmall;return`${n.subjectFallbackContainer} ${o}`}return t===0?e===3||e===1?`${n.svgFallbackContainer} rounded-3`:n.svgFallbackContainer:n.baseFallbackContainer}function y(t){return t===3?n.seriesItemFallback:t===1?n.playlistItemFallback:t===0?n.playlistFallback:t===2||t===5?n.posterFallback:t===4?`${n.subjectFallback} svg-container d-inline-block`:""}function D(t){return t===3||t===1?H:t===0?I:t===2?B:t===4||t===5?N:null}function tt(t){return t===4?h.ExtraLarge:h.Standard}at.defaultProps={mediaType:0,containerClassSize:0};function at(t){const{type:e,mediaType:i,extraClasses:o,containerClassSize:b}=t;if(e===6)return s.jsx("div",{className:`${n.videoFallback} ${t.extraClasses} bg-light-blue`});if(e===7)return s.jsx("div",{className:`${n.folderFallback} ${t.extraClasses} ${E(t.name,G)}`});const d=y(e),l=D(e),c=tt(e);let r=`${p(i,e,b)}`;return o&&(r+=` ${t.extraClasses}`),s.jsx("div",{className:r,children:i===0?s.jsx(z,{svg:l,className:`${d} ${t.svgContainerClassName??""}`,tagName:"div",size:c}):s.jsx("div",{className:n.fallbackThumbnailImage,style:{backgroundImage:`url('${l}')`}})})}M.Ok;function nt(t,e,i){function o(l){if(l)return v.isFunction(e)?[...e(l)]:[...l.data]}function b(l){var c,r;if(l)return i?i(l):(r=(c=l.pagination)==null?void 0:c.cursors)==null?void 0:r.next}function d(l){if(l)return l==null?void 0:l.count}return A(L.useMemo(()=>l=>{if(!v.isFunction(t))return;const c=t,r=v.isFunction(t)&&c();let a=r&&S(l,r),f=a&&a.isFetching,F=a&&a.statusCode,C=a&&a.hasCompleted;const x=C,$=a&&a.shouldFetch,_=o(a&&a.data);let u=b(a&&a.data);const k=d(a&&a.data);for(;u&&(a=S(l,c(u)),f=f||a.isFetching,F=a.statusCode,C=a.hasCompleted,!a.shouldFetch);){const m=o(a.data);m&&_.push(...m);const g=b(a.data);g===u?u=null:u=g}const j={shouldInitialFetch:$,items:_,nextCursor:u,isFetching:f,statusCode:F,hasCompleted:C,hasFirstPageCompleted:x};return typeof k=="number"&&(j.totalItems=k),j},[t]))}export{G as B,at as I,T as a,E as g,nt as u};
2
- //# sourceMappingURL=COMMZ5NT.chunk.js.map
1
+ import{j as s,G as z,Q as h,b2 as A,r as L,F as v,b3 as S,aT as M}from"./app-DlxnnX-Y.js";import{a as N}from"./CsI_aEby.chunk.js";const P=["bg-green","bg-cyan","bg-teal","bg-blue","bg-indigo","bg-purple"],G=["bg-pink","bg-orange",...P];function H(t){return s.jsx("svg",{...t,children:s.jsx("path",{fill:"currentColor",fillRule:"evenodd",d:"M7.76 6.078a.5.5 0 0 0-.76.427v11a.5.5 0 0 0 .76.426l9.003-5.5a.5.5 0 0 0 0-.853z",clipRule:"evenodd"})})}function I(t){return s.jsx("svg",{...t,viewBox:"0 0 24 21",children:s.jsx("path",{d:"M22.5 1A1.5 1.5 0 0 1 24 2.5v18a1.5 1.5 0 0 1-1.5 1.5h-21A1.5 1.5 0 0 1 0 20.5v-18A1.5 1.5 0 0 1 1.5 1zm0 1.5h-21v18h21zm-8.21 4.092 5.84 9a.75.75 0 0 1-1.26.816L13.638 8.34l-2.523 3.591a.75.75 0 0 1-1.144.1l-.889-.89L5.1 16.45a.75.75 0 0 1-1.2-.9l4.5-6a.75.75 0 0 1 1.13-.08l.87.869 2.648-3.77a.75.75 0 0 1 1.243.023M6 4.75a2.25 2.25 0 1 1 0 4.5 2.25 2.25 0 0 1 0-4.5m0 1.5a.75.75 0 1 0 0 1.5.75.75 0 0 0 0-1.5",fill:"currentColor"})})}function B(t){return s.jsx("svg",{...t,children:s.jsx("path",{fill:"currentColor",d:"M20.283 4C21.229 4 22 4.745 22 5.66v8.74c0 .726-.478 1.338-1.151 1.565l.088-10.22a.657.657 0 0 0-.664-.66H6.351A1.71 1.71 0 0 1 7.951 4zm-2.059 1.933c.947 0 1.718.745 1.718 1.65v8.74c.01.726-.479 1.339-1.142 1.565l.088-10.24a.647.647 0 0 0-.664-.64H4.293a1.7 1.7 0 0 1 1.6-1.075zM16.05 7.95c.946 0 1.707.744 1.707 1.659v8.74c0 .915-.77 1.65-1.707 1.65H3.707C2.761 20 2 19.255 2 18.35V9.61c0-.915.77-1.66 1.707-1.66zm-.01 1.084H3.717a.647.647 0 0 0-.663.64v8.609c0 .358.292.641.663.641H16.03c.371 0 .664-.283.664-.641V9.676c.01-.358-.283-.641-.654-.641M8.546 12.39v3.178c0 .17.205.264.342.17l2.254-1.594c.117-.085.117-.255 0-.33l-2.264-1.593c-.137-.095-.332 0-.332.17"})})}function E(t,e){return e[t.charCodeAt(0)%e.length]}const O="_baseFallbackContainer_14tjv_1",R="_svgFallbackContainer_14tjv_1",V="_subjectFallbackContainer_14tjv_9",w="_subjectFallbackContainerSmall_14tjv_18",q="_subjectFallbackContainerLarge_14tjv_21",Q="_seriesItemFallback_14tjv_24",U="_playlistItemFallback_14tjv_24",J="_playlistFallback_14tjv_28",W="_posterFallback_14tjv_29",X="_subjectFallback_14tjv_9",Y="_fallbackThumbnailImage_14tjv_47",Z="_videoFallback_14tjv_55",K="_folderFallback_14tjv_56",n={baseFallbackContainer:O,svgFallbackContainer:R,subjectFallbackContainer:V,subjectFallbackContainerSmall:w,subjectFallbackContainerLarge:q,seriesItemFallback:Q,playlistItemFallback:U,playlistFallback:J,posterFallback:W,subjectFallback:X,fallbackThumbnailImage:Y,videoFallback:Z,folderFallback:K};var T=(t=>(t[t.Playlist=0]="Playlist",t[t.PlaylistThumbnail=1]="PlaylistThumbnail",t[t.Series=2]="Series",t[t.SeriesThumbnail=3]="SeriesThumbnail",t[t.Subject=4]="Subject",t[t.TallSubject=5]="TallSubject",t[t.Video=6]="Video",t[t.Folder=7]="Folder",t))(T||{});function p(t,e,i){if(e===4){const o=i===0?n.subjectFallbackContainerLarge:n.subjectFallbackContainerSmall;return`${n.subjectFallbackContainer} ${o}`}return t===0?e===3||e===1?`${n.svgFallbackContainer} rounded-3`:n.svgFallbackContainer:n.baseFallbackContainer}function y(t){return t===3?n.seriesItemFallback:t===1?n.playlistItemFallback:t===0?n.playlistFallback:t===2||t===5?n.posterFallback:t===4?`${n.subjectFallback} svg-container d-inline-block`:""}function D(t){return t===3||t===1?H:t===0?I:t===2?B:t===4||t===5?N:null}function tt(t){return t===4?h.ExtraLarge:h.Standard}at.defaultProps={mediaType:0,containerClassSize:0};function at(t){const{type:e,mediaType:i,extraClasses:o,containerClassSize:b}=t;if(e===6)return s.jsx("div",{className:`${n.videoFallback} ${t.extraClasses} bg-light-blue`});if(e===7)return s.jsx("div",{className:`${n.folderFallback} ${t.extraClasses} ${E(t.name,G)}`});const d=y(e),l=D(e),c=tt(e);let r=`${p(i,e,b)}`;return o&&(r+=` ${t.extraClasses}`),s.jsx("div",{className:r,children:i===0?s.jsx(z,{svg:l,className:`${d} ${t.svgContainerClassName??""}`,tagName:"div",size:c}):s.jsx("div",{className:n.fallbackThumbnailImage,style:{backgroundImage:`url('${l}')`}})})}M.Ok;function nt(t,e,i){function o(l){if(l)return v.isFunction(e)?[...e(l)]:[...l.data]}function b(l){var c,r;if(l)return i?i(l):(r=(c=l.pagination)==null?void 0:c.cursors)==null?void 0:r.next}function d(l){if(l)return l==null?void 0:l.count}return A(L.useMemo(()=>l=>{if(!v.isFunction(t))return;const c=t,r=v.isFunction(t)&&c();let a=r&&S(l,r),f=a&&a.isFetching,F=a&&a.statusCode,C=a&&a.hasCompleted;const x=C,$=a&&a.shouldFetch,_=o(a&&a.data);let u=b(a&&a.data);const k=d(a&&a.data);for(;u&&(a=S(l,c(u)),f=f||a.isFetching,F=a.statusCode,C=a.hasCompleted,!a.shouldFetch);){const m=o(a.data);m&&_.push(...m);const g=b(a.data);g===u?u=null:u=g}const j={shouldInitialFetch:$,items:_,nextCursor:u,isFetching:f,statusCode:F,hasCompleted:C,hasFirstPageCompleted:x};return typeof k=="number"&&(j.totalItems=k),j},[t]))}export{G as B,at as I,T as a,E as g,nt as u};
2
+ //# sourceMappingURL=BQiCELUH.chunk.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"COMMZ5NT.chunk.js","sources":["../../../../libs/shared/src/constants/ColourClassNames.ts","../../../../libs/shared/src/images/svg/actions/PlaySvg.tsx","../../../../libs/shared/src/images/svg/objects/ImageSvg.tsx","../../../../libs/shared/src/images/svg/objects/SeriesSvg.tsx","../../../../libs/shared/src/utils/getBgColorClass.ts","../../../../libs/shared/src/components/image/ImageFallback.tsx","../../../../libs/shared/src/hooks/UseSelectAllPages.ts"],"sourcesContent":["/**\n * Use this instead of the list below if you need to render the clickview logo\n * on the background you're rendering.\n */\nexport const LOGO_SAFE_BG_CLASS_NAMES = [\n 'bg-green',\n 'bg-cyan',\n 'bg-teal',\n 'bg-blue',\n 'bg-indigo',\n 'bg-purple'\n];\n\nexport const BG_COLOUR_CLASS_NAMES = [\n 'bg-pink',\n 'bg-orange',\n ...LOGO_SAFE_BG_CLASS_NAMES\n];","import React from 'react';\n\nexport function PlaySvg(props: React.SVGProps<SVGSVGElement>) {\n return (\n <svg {...props}>\n <path\n fill='currentColor'\n fillRule='evenodd'\n d='M7.76 6.078a.5.5 0 0 0-.76.427v11a.5.5 0 0 0 .76.426l9.003-5.5a.5.5 0 0 0 0-.853z'\n clipRule='evenodd'\n />\n </svg>\n );\n}\n","import React from 'react';\n\nexport function ImageSvg(props: React.SVGProps<SVGSVGElement>) {\n return (\n <svg {...props} viewBox='0 0 24 21'>\n <path\n d='M22.5 1A1.5 1.5 0 0 1 24 2.5v18a1.5 1.5 0 0 1-1.5 1.5h-21A1.5 1.5 0 0 1 0 20.5v-18A1.5 1.5 0 0 1 1.5 1zm0 1.5h-21v18h21zm-8.21 4.092 5.84 9a.75.75 0 0 1-1.26.816L13.638 8.34l-2.523 3.591a.75.75 0 0 1-1.144.1l-.889-.89L5.1 16.45a.75.75 0 0 1-1.2-.9l4.5-6a.75.75 0 0 1 1.13-.08l.87.869 2.648-3.77a.75.75 0 0 1 1.243.023M6 4.75a2.25 2.25 0 1 1 0 4.5 2.25 2.25 0 0 1 0-4.5m0 1.5a.75.75 0 1 0 0 1.5.75.75 0 0 0 0-1.5'\n fill='currentColor'\n />\n </svg>\n );\n}\n","import React from 'react';\n\nexport function SeriesSvg(props: React.SVGProps<SVGSVGElement>) {\n return (\n <svg {...props}>\n <path\n fill='currentColor'\n d='M20.283 4C21.229 4 22 4.745 22 5.66v8.74c0 .726-.478 1.338-1.151 1.565l.088-10.22a.657.657 0 0 0-.664-.66H6.351A1.71 1.71 0 0 1 7.951 4zm-2.059 1.933c.947 0 1.718.745 1.718 1.65v8.74c.01.726-.479 1.339-1.142 1.565l.088-10.24a.647.647 0 0 0-.664-.64H4.293a1.7 1.7 0 0 1 1.6-1.075zM16.05 7.95c.946 0 1.707.744 1.707 1.659v8.74c0 .915-.77 1.65-1.707 1.65H3.707C2.761 20 2 19.255 2 18.35V9.61c0-.915.77-1.66 1.707-1.66zm-.01 1.084H3.717a.647.647 0 0 0-.663.64v8.609c0 .358.292.641.663.641H16.03c.371 0 .664-.283.664-.641V9.676c.01-.358-.283-.641-.654-.641M8.546 12.39v3.178c0 .17.205.264.342.17l2.254-1.594c.117-.085.117-.255 0-.33l-2.264-1.593c-.137-.095-.332 0-.332.17'\n />\n </svg>\n );\n}\n","export function getBgColorClass(name: string, classNames: string[]): string {\n return classNames[name.charCodeAt(0) % classNames.length];\n}\n\nexport function getDeterministicBgColorClass(name: string, classNames: string[]): string {\n const sum = name\n .split('')\n .reduce(\n (acc, char) => acc + char.charCodeAt(0),\n 0\n );\n \n return classNames[sum % classNames.length];\n}","import * as React from 'react';\n\nimport { SvgContainer, SvgContainerSize } from 'libs/shared/components/svg-container/SvgContainer';\nimport { BG_COLOUR_CLASS_NAMES } from 'libs/shared/constants/ColourClassNames';\nimport { PlaySvg } from 'libs/shared/images/svg/actions/PlaySvg';\nimport { FileImgSvg } from 'libs/shared/images/svg/objects/FileImgSvg';\nimport { ImageSvg } from 'libs/shared/images/svg/objects/ImageSvg';\nimport { SeriesSvg } from 'libs/shared/images/svg/objects/SeriesSvg';\nimport { getBgColorClass } from 'libs/shared/utils/getBgColorClass';\n\nimport styles from './image-fallback.module.scss';\n\nexport enum ImageFallbackType {\n Playlist,\n PlaylistThumbnail,\n Series,\n SeriesThumbnail,\n Subject,\n TallSubject,\n Video,\n Folder\n}\n\nexport enum ImageFallbackMediaType {\n Svg,\n Image\n}\n\nexport enum ContainerClassSize {\n Large,\n Small\n}\n\nfunction getContainerClass(\n type: ImageFallbackMediaType,\n objectType: ImageFallbackType,\n containerClassSize: ContainerClassSize\n): string {\n if (objectType === ImageFallbackType.Subject) {\n const containerSizeClass = containerClassSize === ContainerClassSize.Large\n ? styles.subjectFallbackContainerLarge\n : styles.subjectFallbackContainerSmall;\n\n return `${styles.subjectFallbackContainer} ${containerSizeClass}`;\n }\n\n if (type === ImageFallbackMediaType.Svg) {\n if (objectType === ImageFallbackType.SeriesThumbnail || objectType === ImageFallbackType.PlaylistThumbnail)\n return `${styles.svgFallbackContainer} rounded-3`;\n \n return styles.svgFallbackContainer;\n }\n\n return styles.baseFallbackContainer;\n}\n\nfunction getClassByType(type: ImageFallbackType): string {\n if (type === ImageFallbackType.SeriesThumbnail)\n return styles.seriesItemFallback;\n\n if (type === ImageFallbackType.PlaylistThumbnail)\n return styles.playlistItemFallback;\n\n if (type === ImageFallbackType.Playlist)\n return styles.playlistFallback;\n\n if (type === ImageFallbackType.Series || type === ImageFallbackType.TallSubject)\n return styles.posterFallback;\n\n if (type === ImageFallbackType.Subject)\n return `${styles.subjectFallback} svg-container d-inline-block`;\n\n return '';\n}\n\nfunction getMedia(type: ImageFallbackType) {\n if (type === ImageFallbackType.SeriesThumbnail || type === ImageFallbackType.PlaylistThumbnail)\n return PlaySvg;\n\n if (type === ImageFallbackType.Playlist)\n return ImageSvg;\n\n if (type === ImageFallbackType.Series)\n return SeriesSvg;\n\n if (type === ImageFallbackType.Subject || type === ImageFallbackType.TallSubject)\n return FileImgSvg;\n\n return null;\n}\n\nfunction getSize(type: ImageFallbackType): SvgContainerSize {\n if (type === ImageFallbackType.Subject)\n return SvgContainerSize.ExtraLarge;\n\n return SvgContainerSize.Standard;\n}\n\ninterface ImageFallbackProps {\n type: ImageFallbackType;\n mediaType?: ImageFallbackMediaType;\n extraClasses?: string;\n svgContainerClassName?: string;\n name?: string;\n containerClassSize?: ContainerClassSize\n}\n\nImageFallback.defaultProps = {\n mediaType: ImageFallbackMediaType.Svg,\n containerClassSize: ContainerClassSize.Large\n};\n\nexport function ImageFallback(props: ImageFallbackProps): JSX.Element {\n const { type, mediaType, extraClasses, containerClassSize } = props;\n\n if (type === ImageFallbackType.Video)\n return <div className={`${styles.videoFallback} ${props.extraClasses} bg-light-blue`} />;\n\n if (type === ImageFallbackType.Folder)\n return <div className={`${styles.folderFallback} ${props.extraClasses} ${getBgColorClass(props.name, BG_COLOUR_CLASS_NAMES)}`} />;\n\n const typeClass = getClassByType(type);\n const media = getMedia(type);\n const size = getSize(type);\n\n let className = `${getContainerClass(mediaType, type, containerClassSize)}`;\n\n if (extraClasses)\n className += ` ${props.extraClasses}`;\n\n return (\n <div className={className}>\n {mediaType === ImageFallbackMediaType.Svg\n ? (\n <SvgContainer\n svg={media}\n className={`${typeClass} ${props.svgContainerClassName ?? ''}`}\n tagName='div'\n size={size}\n />\n ) : (\n <div className={styles.fallbackThumbnailImage} style={{ backgroundImage: `url('${media}')` }} />\n )\n }\n </div>\n );\n}","import { useMemo } from 'react';\nimport { useSelector } from 'react-redux';\n\nimport { HttpStatus } from 'libs/common/backbone/enums/HttpStatus';\nimport { FunctionHelper } from 'libs/common/backbone/utils/FunctionHelper';\nimport { Flight } from 'libs/common/flight';\nimport { ApplicationState } from 'libs/common/react/interfaces';\n\nimport { BasePaginatedCollection } from 'libs/shared/interfaces';\n\nexport interface SelectAllPagesResult<T> {\n items: T[];\n shouldInitialFetch: boolean;\n nextCursor: string;\n isFetching: boolean;\n statusCode: HttpStatus;\n hasCompleted: boolean;\n totalItems?: number;\n hasFirstPageCompleted: boolean;\n}\n\nexport const EmptySelectAllPagesResult: SelectAllPagesResult<any> = {\n items: [],\n shouldInitialFetch: false,\n nextCursor: null,\n isFetching: false,\n statusCode: HttpStatus.Ok,\n hasCompleted: true,\n totalItems: 0,\n hasFirstPageCompleted: true\n};\n\n/**\n * Hook to select all pages of a collection from the store and flatten them.\n * It will not trigger any fetches.\n * \n * @param getKey - callback function to get the key for each page.\n * Can be false if the key requires data that hasn't yet been fetched - e.g. user id.\n */\nexport function useSelectAllPages<TObject, TResponse = BasePaginatedCollection<TObject>>(\n getKey: ((cursor?: string) => string) | false,\n getItems?: (responseData: TResponse) => TObject[],\n getCursor?: (responseData: TResponse) => string\n): SelectAllPagesResult<TObject> {\n function safeGetItems(responseData: TResponse): TObject[] {\n if (!responseData)\n return undefined;\n\n if (FunctionHelper.isFunction(getItems))\n return [...getItems(responseData)];\n\n return [...(responseData as unknown as BasePaginatedCollection<TObject>).data];\n }\n\n function safeGetCursor(responseData: TResponse): string {\n if (!responseData)\n return undefined;\n\n if (getCursor)\n return getCursor(responseData);\n\n return (responseData as unknown as BasePaginatedCollection<TObject>).pagination?.cursors?.next;\n }\n\n function safeGetTotalItems(responseData: TResponse): number {\n if (!responseData)\n return undefined;\n\n return (responseData as unknown as BasePaginatedCollection<TObject>)?.count;\n }\n\n return useSelector(useMemo(() => (state: ApplicationState) => {\n if (!FunctionHelper.isFunction(getKey))\n return;\n\n const getKeyFn = getKey as (cursor?: string) => string;\n const key = FunctionHelper.isFunction(getKey) && getKeyFn();\n\n let request = key && Flight.getResponse<TResponse>(state, key);\n\n let isFetching = request && request.isFetching;\n let statusCode = request && request.statusCode;\n let hasCompleted = request && request.hasCompleted;\n const hasFirstPageCompleted = hasCompleted;\n\n const shouldInitialFetch = request && request.shouldFetch;\n\n const items = safeGetItems(request && request.data);\n let nextCursor = safeGetCursor(request && request.data);\n const totalItems = safeGetTotalItems(request && request.data);\n\n // Retrieve all pages that are currently in the store.\n while (nextCursor) {\n request = Flight.getResponse<TResponse>(state, getKeyFn(nextCursor));\n\n isFetching = isFetching || request.isFetching;\n statusCode = request.statusCode;\n hasCompleted = request.hasCompleted;\n\n // If next page hasn't been fetched, break.\n if (request.shouldFetch)\n break;\n\n const newItems = safeGetItems(request.data);\n newItems && items.push(...newItems);\n\n const nextNextCursor = safeGetCursor(request.data);\n\n /**\n * This is a check to basically see if the backend has messed up the cursors it's sent back.\n * For some things (e.g. user manager in Lite), the cursors are generated for a paginated collection,\n * but the collection is then filtered afterwards (making the cursors not entirely accurate).\n * This can lead to problems where a request with a cursor might return that same cursor as the `next`\n * cursor. Confusing, but basically when that happens we want this while loop to end, otherwise it'll\n * run infinitely - Josh\n */\n if (nextNextCursor === nextCursor) {\n nextCursor = null;\n } else {\n nextCursor = nextNextCursor;\n }\n }\n\n const response: SelectAllPagesResult<TObject> = {\n shouldInitialFetch,\n items,\n nextCursor,\n isFetching,\n statusCode,\n hasCompleted,\n hasFirstPageCompleted\n };\n\n if (typeof (totalItems) === 'number')\n response.totalItems = totalItems;\n\n return response;\n }, [getKey]));\n}"],"names":["LOGO_SAFE_BG_CLASS_NAMES","BG_COLOUR_CLASS_NAMES","PlaySvg","props","jsx","ImageSvg","SeriesSvg","getBgColorClass","name","classNames","ImageFallbackType","getContainerClass","type","objectType","containerClassSize","containerSizeClass","styles","getClassByType","getMedia","FileImgSvg","getSize","SvgContainerSize","ImageFallback","mediaType","extraClasses","typeClass","media","size","className","SvgContainer","HttpStatus","useSelectAllPages","getKey","getItems","getCursor","safeGetItems","responseData","FunctionHelper","safeGetCursor","_b","_a","safeGetTotalItems","useSelector","useMemo","state","getKeyFn","key","request","Flight.getResponse","isFetching","statusCode","hasCompleted","hasFirstPageCompleted","shouldInitialFetch","items","nextCursor","totalItems","newItems","nextNextCursor","response"],"mappings":"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"}
1
+ {"version":3,"file":"BQiCELUH.chunk.js","sources":["../../../../libs/shared/src/constants/ColourClassNames.ts","../../../../libs/shared/src/images/svg/actions/PlaySvg.tsx","../../../../libs/shared/src/images/svg/objects/ImageSvg.tsx","../../../../libs/shared/src/images/svg/objects/SeriesSvg.tsx","../../../../libs/shared/src/utils/getBgColorClass.ts","../../../../libs/shared/src/components/image/ImageFallback.tsx","../../../../libs/shared/src/hooks/UseSelectAllPages.ts"],"sourcesContent":["/**\n * Use this instead of the list below if you need to render the clickview logo\n * on the background you're rendering.\n */\nexport const LOGO_SAFE_BG_CLASS_NAMES = [\n 'bg-green',\n 'bg-cyan',\n 'bg-teal',\n 'bg-blue',\n 'bg-indigo',\n 'bg-purple'\n];\n\nexport const BG_COLOUR_CLASS_NAMES = [\n 'bg-pink',\n 'bg-orange',\n ...LOGO_SAFE_BG_CLASS_NAMES\n];","import React from 'react';\n\nexport function PlaySvg(props: React.SVGProps<SVGSVGElement>) {\n return (\n <svg {...props}>\n <path\n fill='currentColor'\n fillRule='evenodd'\n d='M7.76 6.078a.5.5 0 0 0-.76.427v11a.5.5 0 0 0 .76.426l9.003-5.5a.5.5 0 0 0 0-.853z'\n clipRule='evenodd'\n />\n </svg>\n );\n}\n","import React from 'react';\n\nexport function ImageSvg(props: React.SVGProps<SVGSVGElement>) {\n return (\n <svg {...props} viewBox='0 0 24 21'>\n <path\n d='M22.5 1A1.5 1.5 0 0 1 24 2.5v18a1.5 1.5 0 0 1-1.5 1.5h-21A1.5 1.5 0 0 1 0 20.5v-18A1.5 1.5 0 0 1 1.5 1zm0 1.5h-21v18h21zm-8.21 4.092 5.84 9a.75.75 0 0 1-1.26.816L13.638 8.34l-2.523 3.591a.75.75 0 0 1-1.144.1l-.889-.89L5.1 16.45a.75.75 0 0 1-1.2-.9l4.5-6a.75.75 0 0 1 1.13-.08l.87.869 2.648-3.77a.75.75 0 0 1 1.243.023M6 4.75a2.25 2.25 0 1 1 0 4.5 2.25 2.25 0 0 1 0-4.5m0 1.5a.75.75 0 1 0 0 1.5.75.75 0 0 0 0-1.5'\n fill='currentColor'\n />\n </svg>\n );\n}\n","import React from 'react';\n\nexport function SeriesSvg(props: React.SVGProps<SVGSVGElement>) {\n return (\n <svg {...props}>\n <path\n fill='currentColor'\n d='M20.283 4C21.229 4 22 4.745 22 5.66v8.74c0 .726-.478 1.338-1.151 1.565l.088-10.22a.657.657 0 0 0-.664-.66H6.351A1.71 1.71 0 0 1 7.951 4zm-2.059 1.933c.947 0 1.718.745 1.718 1.65v8.74c.01.726-.479 1.339-1.142 1.565l.088-10.24a.647.647 0 0 0-.664-.64H4.293a1.7 1.7 0 0 1 1.6-1.075zM16.05 7.95c.946 0 1.707.744 1.707 1.659v8.74c0 .915-.77 1.65-1.707 1.65H3.707C2.761 20 2 19.255 2 18.35V9.61c0-.915.77-1.66 1.707-1.66zm-.01 1.084H3.717a.647.647 0 0 0-.663.64v8.609c0 .358.292.641.663.641H16.03c.371 0 .664-.283.664-.641V9.676c.01-.358-.283-.641-.654-.641M8.546 12.39v3.178c0 .17.205.264.342.17l2.254-1.594c.117-.085.117-.255 0-.33l-2.264-1.593c-.137-.095-.332 0-.332.17'\n />\n </svg>\n );\n}\n","export function getBgColorClass(name: string, classNames: string[]): string {\n return classNames[name.charCodeAt(0) % classNames.length];\n}\n\nexport function getDeterministicBgColorClass(name: string, classNames: string[]): string {\n const sum = name\n .split('')\n .reduce(\n (acc, char) => acc + char.charCodeAt(0),\n 0\n );\n \n return classNames[sum % classNames.length];\n}","import * as React from 'react';\n\nimport { SvgContainer, SvgContainerSize } from 'libs/shared/components/svg-container/SvgContainer';\nimport { BG_COLOUR_CLASS_NAMES } from 'libs/shared/constants/ColourClassNames';\nimport { PlaySvg } from 'libs/shared/images/svg/actions/PlaySvg';\nimport { FileImgSvg } from 'libs/shared/images/svg/objects/FileImgSvg';\nimport { ImageSvg } from 'libs/shared/images/svg/objects/ImageSvg';\nimport { SeriesSvg } from 'libs/shared/images/svg/objects/SeriesSvg';\nimport { getBgColorClass } from 'libs/shared/utils/getBgColorClass';\n\nimport styles from './image-fallback.module.scss';\n\nexport enum ImageFallbackType {\n Playlist,\n PlaylistThumbnail,\n Series,\n SeriesThumbnail,\n Subject,\n TallSubject,\n Video,\n Folder\n}\n\nexport enum ImageFallbackMediaType {\n Svg,\n Image\n}\n\nexport enum ContainerClassSize {\n Large,\n Small\n}\n\nfunction getContainerClass(\n type: ImageFallbackMediaType,\n objectType: ImageFallbackType,\n containerClassSize: ContainerClassSize\n): string {\n if (objectType === ImageFallbackType.Subject) {\n const containerSizeClass = containerClassSize === ContainerClassSize.Large\n ? styles.subjectFallbackContainerLarge\n : styles.subjectFallbackContainerSmall;\n\n return `${styles.subjectFallbackContainer} ${containerSizeClass}`;\n }\n\n if (type === ImageFallbackMediaType.Svg) {\n if (objectType === ImageFallbackType.SeriesThumbnail || objectType === ImageFallbackType.PlaylistThumbnail)\n return `${styles.svgFallbackContainer} rounded-3`;\n \n return styles.svgFallbackContainer;\n }\n\n return styles.baseFallbackContainer;\n}\n\nfunction getClassByType(type: ImageFallbackType): string {\n if (type === ImageFallbackType.SeriesThumbnail)\n return styles.seriesItemFallback;\n\n if (type === ImageFallbackType.PlaylistThumbnail)\n return styles.playlistItemFallback;\n\n if (type === ImageFallbackType.Playlist)\n return styles.playlistFallback;\n\n if (type === ImageFallbackType.Series || type === ImageFallbackType.TallSubject)\n return styles.posterFallback;\n\n if (type === ImageFallbackType.Subject)\n return `${styles.subjectFallback} svg-container d-inline-block`;\n\n return '';\n}\n\nfunction getMedia(type: ImageFallbackType) {\n if (type === ImageFallbackType.SeriesThumbnail || type === ImageFallbackType.PlaylistThumbnail)\n return PlaySvg;\n\n if (type === ImageFallbackType.Playlist)\n return ImageSvg;\n\n if (type === ImageFallbackType.Series)\n return SeriesSvg;\n\n if (type === ImageFallbackType.Subject || type === ImageFallbackType.TallSubject)\n return FileImgSvg;\n\n return null;\n}\n\nfunction getSize(type: ImageFallbackType): SvgContainerSize {\n if (type === ImageFallbackType.Subject)\n return SvgContainerSize.ExtraLarge;\n\n return SvgContainerSize.Standard;\n}\n\ninterface ImageFallbackProps {\n type: ImageFallbackType;\n mediaType?: ImageFallbackMediaType;\n extraClasses?: string;\n svgContainerClassName?: string;\n name?: string;\n containerClassSize?: ContainerClassSize\n}\n\nImageFallback.defaultProps = {\n mediaType: ImageFallbackMediaType.Svg,\n containerClassSize: ContainerClassSize.Large\n};\n\nexport function ImageFallback(props: ImageFallbackProps): JSX.Element {\n const { type, mediaType, extraClasses, containerClassSize } = props;\n\n if (type === ImageFallbackType.Video)\n return <div className={`${styles.videoFallback} ${props.extraClasses} bg-light-blue`} />;\n\n if (type === ImageFallbackType.Folder)\n return <div className={`${styles.folderFallback} ${props.extraClasses} ${getBgColorClass(props.name, BG_COLOUR_CLASS_NAMES)}`} />;\n\n const typeClass = getClassByType(type);\n const media = getMedia(type);\n const size = getSize(type);\n\n let className = `${getContainerClass(mediaType, type, containerClassSize)}`;\n\n if (extraClasses)\n className += ` ${props.extraClasses}`;\n\n return (\n <div className={className}>\n {mediaType === ImageFallbackMediaType.Svg\n ? (\n <SvgContainer\n svg={media}\n className={`${typeClass} ${props.svgContainerClassName ?? ''}`}\n tagName='div'\n size={size}\n />\n ) : (\n <div className={styles.fallbackThumbnailImage} style={{ backgroundImage: `url('${media}')` }} />\n )\n }\n </div>\n );\n}","import { useMemo } from 'react';\nimport { useSelector } from 'react-redux';\n\nimport { HttpStatus } from 'libs/common/backbone/enums/HttpStatus';\nimport { FunctionHelper } from 'libs/common/backbone/utils/FunctionHelper';\nimport { Flight } from 'libs/common/flight';\nimport { ApplicationState } from 'libs/common/react/interfaces';\n\nimport { BasePaginatedCollection } from 'libs/shared/interfaces';\n\nexport interface SelectAllPagesResult<T> {\n items: T[];\n shouldInitialFetch: boolean;\n nextCursor: string;\n isFetching: boolean;\n statusCode: HttpStatus;\n hasCompleted: boolean;\n totalItems?: number;\n hasFirstPageCompleted: boolean;\n}\n\nexport const EmptySelectAllPagesResult: SelectAllPagesResult<any> = {\n items: [],\n shouldInitialFetch: false,\n nextCursor: null,\n isFetching: false,\n statusCode: HttpStatus.Ok,\n hasCompleted: true,\n totalItems: 0,\n hasFirstPageCompleted: true\n};\n\n/**\n * Hook to select all pages of a collection from the store and flatten them.\n * It will not trigger any fetches.\n * \n * @param getKey - callback function to get the key for each page.\n * Can be false if the key requires data that hasn't yet been fetched - e.g. user id.\n */\nexport function useSelectAllPages<TObject, TResponse = BasePaginatedCollection<TObject>>(\n getKey: ((cursor?: string) => string) | false,\n getItems?: (responseData: TResponse) => TObject[],\n getCursor?: (responseData: TResponse) => string\n): SelectAllPagesResult<TObject> {\n function safeGetItems(responseData: TResponse): TObject[] {\n if (!responseData)\n return undefined;\n\n if (FunctionHelper.isFunction(getItems))\n return [...getItems(responseData)];\n\n return [...(responseData as unknown as BasePaginatedCollection<TObject>).data];\n }\n\n function safeGetCursor(responseData: TResponse): string {\n if (!responseData)\n return undefined;\n\n if (getCursor)\n return getCursor(responseData);\n\n return (responseData as unknown as BasePaginatedCollection<TObject>).pagination?.cursors?.next;\n }\n\n function safeGetTotalItems(responseData: TResponse): number {\n if (!responseData)\n return undefined;\n\n return (responseData as unknown as BasePaginatedCollection<TObject>)?.count;\n }\n\n return useSelector(useMemo(() => (state: ApplicationState) => {\n if (!FunctionHelper.isFunction(getKey))\n return;\n\n const getKeyFn = getKey as (cursor?: string) => string;\n const key = FunctionHelper.isFunction(getKey) && getKeyFn();\n\n let request = key && Flight.getResponse<TResponse>(state, key);\n\n let isFetching = request && request.isFetching;\n let statusCode = request && request.statusCode;\n let hasCompleted = request && request.hasCompleted;\n const hasFirstPageCompleted = hasCompleted;\n\n const shouldInitialFetch = request && request.shouldFetch;\n\n const items = safeGetItems(request && request.data);\n let nextCursor = safeGetCursor(request && request.data);\n const totalItems = safeGetTotalItems(request && request.data);\n\n // Retrieve all pages that are currently in the store.\n while (nextCursor) {\n request = Flight.getResponse<TResponse>(state, getKeyFn(nextCursor));\n\n isFetching = isFetching || request.isFetching;\n statusCode = request.statusCode;\n hasCompleted = request.hasCompleted;\n\n // If next page hasn't been fetched, break.\n if (request.shouldFetch)\n break;\n\n const newItems = safeGetItems(request.data);\n newItems && items.push(...newItems);\n\n const nextNextCursor = safeGetCursor(request.data);\n\n /**\n * This is a check to basically see if the backend has messed up the cursors it's sent back.\n * For some things (e.g. user manager in Lite), the cursors are generated for a paginated collection,\n * but the collection is then filtered afterwards (making the cursors not entirely accurate).\n * This can lead to problems where a request with a cursor might return that same cursor as the `next`\n * cursor. Confusing, but basically when that happens we want this while loop to end, otherwise it'll\n * run infinitely - Josh\n */\n if (nextNextCursor === nextCursor) {\n nextCursor = null;\n } else {\n nextCursor = nextNextCursor;\n }\n }\n\n const response: SelectAllPagesResult<TObject> = {\n shouldInitialFetch,\n items,\n nextCursor,\n isFetching,\n statusCode,\n hasCompleted,\n hasFirstPageCompleted\n };\n\n if (typeof (totalItems) === 'number')\n response.totalItems = totalItems;\n\n return response;\n }, [getKey]));\n}"],"names":["LOGO_SAFE_BG_CLASS_NAMES","BG_COLOUR_CLASS_NAMES","PlaySvg","props","jsx","ImageSvg","SeriesSvg","getBgColorClass","name","classNames","ImageFallbackType","getContainerClass","type","objectType","containerClassSize","containerSizeClass","styles","getClassByType","getMedia","FileImgSvg","getSize","SvgContainerSize","ImageFallback","mediaType","extraClasses","typeClass","media","size","className","SvgContainer","HttpStatus","useSelectAllPages","getKey","getItems","getCursor","safeGetItems","responseData","FunctionHelper","safeGetCursor","_b","_a","safeGetTotalItems","useSelector","useMemo","state","getKeyFn","key","request","Flight.getResponse","isFetching","statusCode","hasCompleted","hasFirstPageCompleted","shouldInitialFetch","items","nextCursor","totalItems","newItems","nextNextCursor","response"],"mappings":"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"}
@@ -1,2 +1,2 @@
1
- import{j as r}from"./app-eQ6keCVj.js";function l(o){return r.jsx("svg",{...o,children:r.jsx("path",{d:"M11.267 15.695 5.304 9.79a1.046 1.046 0 0 1 0-1.473l.01-.011a1.034 1.034 0 0 1 1.467 0L12 13.474l5.22-5.17a1.034 1.034 0 0 1 1.465 0l.011.012a1.046 1.046 0 0 1 0 1.473l-5.963 5.906a1.034 1.034 0 0 1-1.466 0",fill:"currentColor"})})}export{l as C};
2
- //# sourceMappingURL=Dj2iNM2-.chunk.js.map
1
+ import{j as r}from"./app-DlxnnX-Y.js";function l(o){return r.jsx("svg",{...o,children:r.jsx("path",{d:"M11.267 15.695 5.304 9.79a1.046 1.046 0 0 1 0-1.473l.01-.011a1.034 1.034 0 0 1 1.467 0L12 13.474l5.22-5.17a1.034 1.034 0 0 1 1.465 0l.011.012a1.046 1.046 0 0 1 0 1.473l-5.963 5.906a1.034 1.034 0 0 1-1.466 0",fill:"currentColor"})})}export{l as C};
2
+ //# sourceMappingURL=BQz8nP4M.chunk.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"Dj2iNM2-.chunk.js","sources":["../../../../libs/shared/src/images/svg/arrows/ChevronDownSvg.tsx"],"sourcesContent":["import React from 'react';\n\nexport function ChevronDownSvg(props: React.SVGProps<SVGSVGElement>) {\n return (\n <svg {...props}>\n <path\n d='M11.267 15.695 5.304 9.79a1.046 1.046 0 0 1 0-1.473l.01-.011a1.034 1.034 0 0 1 1.467 0L12 13.474l5.22-5.17a1.034 1.034 0 0 1 1.465 0l.011.012a1.046 1.046 0 0 1 0 1.473l-5.963 5.906a1.034 1.034 0 0 1-1.466 0'\n fill='currentColor'\n />\n </svg>\n );\n}\n"],"names":["ChevronDownSvg","props","jsx"],"mappings":"sCAEO,SAASA,EAAeC,EAAsC,CACnE,OACEC,EAAAA,IAAC,MAAA,CAAK,GAAGD,EACP,SAAAC,EAAAA,IAAC,OAAA,CACC,EAAE,iNACF,KAAK,cAAA,CAAA,EAET,CAEJ"}
1
+ {"version":3,"file":"BQz8nP4M.chunk.js","sources":["../../../../libs/shared/src/images/svg/arrows/ChevronDownSvg.tsx"],"sourcesContent":["import React from 'react';\n\nexport function ChevronDownSvg(props: React.SVGProps<SVGSVGElement>) {\n return (\n <svg {...props}>\n <path\n d='M11.267 15.695 5.304 9.79a1.046 1.046 0 0 1 0-1.473l.01-.011a1.034 1.034 0 0 1 1.467 0L12 13.474l5.22-5.17a1.034 1.034 0 0 1 1.465 0l.011.012a1.046 1.046 0 0 1 0 1.473l-5.963 5.906a1.034 1.034 0 0 1-1.466 0'\n fill='currentColor'\n />\n </svg>\n );\n}\n"],"names":["ChevronDownSvg","props","jsx"],"mappings":"sCAEO,SAASA,EAAeC,EAAsC,CACnE,OACEC,EAAAA,IAAC,MAAA,CAAK,GAAGD,EACP,SAAAC,EAAAA,IAAC,OAAA,CACC,EAAE,iNACF,KAAK,cAAA,CAAA,EAET,CAEJ"}
@@ -1,2 +1,2 @@
1
- import{cn as n,r as a,aR as s,co as c,cp as o}from"./app-eQ6keCVj.js";function i(r){const e=n.getInstance(r);return a.useEffect(()=>()=>{n.releaseInstance(r)}),e}function u(r){return i(r)}function g(){const r=u(o.ALERT);return{success(e){r.success(e)()},error(e){r.error(e)()},warning(e){r.createAlert({type:s.Warning,heading:c.Warning,message:e})},info(e,t){r.createAlert({heading:e,message:t,type:s.Info})}}}export{u as a,g as u};
2
- //# sourceMappingURL=p9Hw1u0F.chunk.js.map
1
+ import{cn as n,r as a,aR as s,co as c,cp as o}from"./app-DlxnnX-Y.js";function i(r){const e=n.getInstance(r);return a.useEffect(()=>()=>{n.releaseInstance(r)}),e}function u(r){return i(r)}function g(){const r=u(o.ALERT);return{success(e){r.success(e)()},error(e){r.error(e)()},warning(e){r.createAlert({type:s.Warning,heading:c.Warning,message:e})},info(e,t){r.createAlert({heading:e,message:t,type:s.Info})}}}export{u as a,g as u};
2
+ //# sourceMappingURL=BSZHRB-3.chunk.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"p9Hw1u0F.chunk.js","sources":["../../../../libs/common/src/react/hooks/UseInstance.ts","../../../../libs/common/src/react/hooks/UseService.ts","../../../../libs/shared/src/hooks/UseAlerts.ts"],"sourcesContent":["import * as React from 'react';\n\nimport { InstanceManager } from 'libs/common/backbone/services/InstanceManager';\n\n/**\n * Hook to retrieve an instance from InstanceManager.\n * It handles releasing the instance in the cleanup function.\n * @param instanceName \n */\nexport function useInstance<T>(instanceName: string): T {\n const instance = InstanceManager.getInstance<T>(instanceName);\n\n React.useEffect(() => {\n return () => { InstanceManager.releaseInstance(instanceName); };\n }), [];\n\n return instance;\n}\n\n/**\n * Can be used to conditionally get an instance safely. Passing in a falsey value\n * will not return an instance, and will also not error\n */\nexport function useInstanceSafe<T>(instanceName: string): T {\n let instance: T = null;\n\n if (instanceName)\n instance = InstanceManager.getInstance<T>(instanceName);\n\n React.useEffect(() => {\n return () => { InstanceManager.releaseInstance(instanceName); };\n }), [];\n\n return instance;\n}","import { BaseService } from 'libs/common/backbone/core/BaseService';\n\nimport { useInstance } from './UseInstance';\n\nexport function useService<T extends BaseService>(serviceName: string): T {\n const service = useInstance<T>(serviceName);\n\n return service;\n}","import { CommonServices } from 'libs/common/backbone/constants/CommonServices';\nimport { AlertType, BaseAlert, BaseAlertOptions, BaseAlertService, DefaultAlertHeading } from 'libs/common/backbone/services/BaseAlertService';\nimport { useService } from 'libs/common/react/hooks/UseService';\n\nexport interface Alerts {\n success(alertContent: string | BaseAlert | BaseAlertOptions): void,\n error(alertContent: string | BaseAlert | BaseAlertOptions): void,\n warning(alertContent: string): void\n info(heading: string, message: string): void\n}\n\nexport function useAlerts(): Alerts {\n const alertService = useService<BaseAlertService>(CommonServices.ALERT);\n\n return {\n success(alertContent: string | BaseAlert | BaseAlertOptions): void {\n alertService.success(alertContent)();\n },\n error(alertContent: string | BaseAlert | BaseAlertOptions): void {\n alertService.error(alertContent)();\n },\n warning(alertContent: string): void {\n alertService.createAlert({\n type: AlertType.Warning,\n heading: DefaultAlertHeading.Warning,\n message: alertContent\n });\n },\n info(heading: string, message: string): void {\n alertService.createAlert({\n heading,\n message,\n type: AlertType.Info\n });\n }\n };\n}"],"names":["useInstance","instanceName","instance","InstanceManager","React.useEffect","useService","serviceName","useAlerts","alertService","CommonServices","alertContent","AlertType","DefaultAlertHeading","heading","message"],"mappings":"sEASO,SAASA,EAAeC,EAAyB,CACtD,MAAMC,EAAWC,EAAgB,YAAeF,CAAY,EAE5DG,OAAAA,EAAAA,UAAgB,IACP,IAAM,CAAED,EAAgB,gBAAgBF,CAAY,CAAG,CAC/D,EAEMC,CACT,CCbO,SAASG,EAAkCC,EAAwB,CAGxE,OAFgBN,EAAeM,CAAW,CAG5C,CCGO,SAASC,GAAoB,CAClC,MAAMC,EAAeH,EAA6BI,EAAe,KAAK,EAEtE,MAAO,CACL,QAAQC,EAA2D,CACjEF,EAAa,QAAQE,CAAY,EAAA,CACnC,EACA,MAAMA,EAA2D,CAC/DF,EAAa,MAAME,CAAY,EAAA,CACjC,EACA,QAAQA,EAA4B,CAClCF,EAAa,YAAY,CACvB,KAAMG,EAAU,QAChB,QAASC,EAAoB,QAC7B,QAASF,CAAA,CACV,CACH,EACA,KAAKG,EAAiBC,EAAuB,CAC3CN,EAAa,YAAY,CACvB,QAAAK,EACA,QAAAC,EACA,KAAMH,EAAU,IAAA,CACjB,CACH,CAAA,CAEJ"}
1
+ {"version":3,"file":"BSZHRB-3.chunk.js","sources":["../../../../libs/common/src/react/hooks/UseInstance.ts","../../../../libs/common/src/react/hooks/UseService.ts","../../../../libs/shared/src/hooks/UseAlerts.ts"],"sourcesContent":["import * as React from 'react';\n\nimport { InstanceManager } from 'libs/common/backbone/services/InstanceManager';\n\n/**\n * Hook to retrieve an instance from InstanceManager.\n * It handles releasing the instance in the cleanup function.\n * @param instanceName \n */\nexport function useInstance<T>(instanceName: string): T {\n const instance = InstanceManager.getInstance<T>(instanceName);\n\n React.useEffect(() => {\n return () => { InstanceManager.releaseInstance(instanceName); };\n }), [];\n\n return instance;\n}\n\n/**\n * Can be used to conditionally get an instance safely. Passing in a falsey value\n * will not return an instance, and will also not error\n */\nexport function useInstanceSafe<T>(instanceName: string): T {\n let instance: T = null;\n\n if (instanceName)\n instance = InstanceManager.getInstance<T>(instanceName);\n\n React.useEffect(() => {\n return () => { InstanceManager.releaseInstance(instanceName); };\n }), [];\n\n return instance;\n}","import { BaseService } from 'libs/common/backbone/core/BaseService';\n\nimport { useInstance } from './UseInstance';\n\nexport function useService<T extends BaseService>(serviceName: string): T {\n const service = useInstance<T>(serviceName);\n\n return service;\n}","import { CommonServices } from 'libs/common/backbone/constants/CommonServices';\nimport { AlertType, BaseAlert, BaseAlertOptions, BaseAlertService, DefaultAlertHeading } from 'libs/common/backbone/services/BaseAlertService';\nimport { useService } from 'libs/common/react/hooks/UseService';\n\nexport interface Alerts {\n success(alertContent: string | BaseAlert | BaseAlertOptions): void,\n error(alertContent: string | BaseAlert | BaseAlertOptions): void,\n warning(alertContent: string): void\n info(heading: string, message: string): void\n}\n\nexport function useAlerts(): Alerts {\n const alertService = useService<BaseAlertService>(CommonServices.ALERT);\n\n return {\n success(alertContent: string | BaseAlert | BaseAlertOptions): void {\n alertService.success(alertContent)();\n },\n error(alertContent: string | BaseAlert | BaseAlertOptions): void {\n alertService.error(alertContent)();\n },\n warning(alertContent: string): void {\n alertService.createAlert({\n type: AlertType.Warning,\n heading: DefaultAlertHeading.Warning,\n message: alertContent\n });\n },\n info(heading: string, message: string): void {\n alertService.createAlert({\n heading,\n message,\n type: AlertType.Info\n });\n }\n };\n}"],"names":["useInstance","instanceName","instance","InstanceManager","React.useEffect","useService","serviceName","useAlerts","alertService","CommonServices","alertContent","AlertType","DefaultAlertHeading","heading","message"],"mappings":"sEASO,SAASA,EAAeC,EAAyB,CACtD,MAAMC,EAAWC,EAAgB,YAAeF,CAAY,EAE5DG,OAAAA,EAAAA,UAAgB,IACP,IAAM,CAAED,EAAgB,gBAAgBF,CAAY,CAAG,CAC/D,EAEMC,CACT,CCbO,SAASG,EAAkCC,EAAwB,CAGxE,OAFgBN,EAAeM,CAAW,CAG5C,CCGO,SAASC,GAAoB,CAClC,MAAMC,EAAeH,EAA6BI,EAAe,KAAK,EAEtE,MAAO,CACL,QAAQC,EAA2D,CACjEF,EAAa,QAAQE,CAAY,EAAA,CACnC,EACA,MAAMA,EAA2D,CAC/DF,EAAa,MAAME,CAAY,EAAA,CACjC,EACA,QAAQA,EAA4B,CAClCF,EAAa,YAAY,CACvB,KAAMG,EAAU,QAChB,QAASC,EAAoB,QAC7B,QAASF,CAAA,CACV,CACH,EACA,KAAKG,EAAiBC,EAAuB,CAC3CN,EAAa,YAAY,CACvB,QAAAK,EACA,QAAAC,EACA,KAAMH,EAAU,IAAA,CACjB,CACH,CAAA,CAEJ"}
@@ -1,2 +1,2 @@
1
- import{R as L,r as s,Z as M,F as d}from"./app-eQ6keCVj.js";const g=()=>{const e=L.useRef(!0);return L.useEffect(()=>()=>{e.current=!1},[]),e},R=275,y=5,T={className:"",delay:0,style:null},Y={screenX:0,screenY:0};function H(e,t){var n;e.current&&(t.className&&((n=e.current.classList)==null||n.add(t.className)),t.style&&Object.keys(t.style).forEach(u=>{e.current.style[u]=t.style[u]}))}function h(e,t){var n;e.current&&(t.className&&((n=e.current.classList)==null||n.remove(t.className)),t.style&&Object.keys(t.style).forEach(u=>{e.current.style[u]=null}))}function b(e,t){return Math.abs(e.screenX-t.screenX)>y||Math.abs(e.screenY-t.screenY)>y}function X(e=T){const t=g(),[n,u]=s.useState(e),[l,c]=s.useState(!1),r=s.useRef(null);s.useEffect(()=>{M.isEqual(e,n)||u(e)},[e]);const i=d.throttle(()=>{H(r,n),t.current&&c(!0)},n.delay,{leading:!1}),f=()=>{d.isFunction(i.cancel)&&i.cancel(),h(r,n),t.current&&c(!1)};return s.useLayoutEffect(()=>{const o=r.current;if(o)return o.addEventListener("mouseenter",i),o.addEventListener("mouseleave",f),()=>{o.removeEventListener("mouseenter",i),o.removeEventListener("mouseleave",f)}},[r.current,n]),[r,l]}function w(e){const[t,n]=s.useState(e),u=s.useRef({...Y}),l=s.useRef(!1),c=s.useRef(0),r=s.useRef(null),[i,f]=s.useState(!1);s.useEffect(()=>{M.isEqual(e,t)||n(e)},[e]);function o(){c.current&&(window.clearTimeout(c.current),c.current=0)}function O(a,v){c.current||(c.current=window.setTimeout(a,v))}function m(){l.current=!0}function S(a){if(!l.current)return;const v={...u.current};u.current.screenX=a.screenX,u.current.screenY=a.screenY,b(v,a)&&o(),O(()=>{H(r,t),f(!0)},t.delay||R)}function E(){o(),h(r,t),l.current=!1,f(!1)}return s.useLayoutEffect(()=>{if(!r.current)return;const a=d.throttle(S,25,{leading:!1});return r.current.addEventListener("mouseenter",m),r.current.addEventListener("mousemove",a),r.current.addEventListener("mouseleave",E),()=>{r.current&&(r.current.removeEventListener("mouseenter",m),r.current.removeEventListener("mousemove",a),r.current.removeEventListener("mouseleave",E))}},[r.current,t]),[r,i]}export{w as a,X as u};
2
- //# sourceMappingURL=Ci21j_NU.chunk.js.map
1
+ import{R as L,r as s,Z as M,F as d}from"./app-DlxnnX-Y.js";const g=()=>{const e=L.useRef(!0);return L.useEffect(()=>()=>{e.current=!1},[]),e},R=275,y=5,T={className:"",delay:0,style:null},Y={screenX:0,screenY:0};function H(e,t){var n;e.current&&(t.className&&((n=e.current.classList)==null||n.add(t.className)),t.style&&Object.keys(t.style).forEach(u=>{e.current.style[u]=t.style[u]}))}function h(e,t){var n;e.current&&(t.className&&((n=e.current.classList)==null||n.remove(t.className)),t.style&&Object.keys(t.style).forEach(u=>{e.current.style[u]=null}))}function b(e,t){return Math.abs(e.screenX-t.screenX)>y||Math.abs(e.screenY-t.screenY)>y}function X(e=T){const t=g(),[n,u]=s.useState(e),[l,c]=s.useState(!1),r=s.useRef(null);s.useEffect(()=>{M.isEqual(e,n)||u(e)},[e]);const i=d.throttle(()=>{H(r,n),t.current&&c(!0)},n.delay,{leading:!1}),f=()=>{d.isFunction(i.cancel)&&i.cancel(),h(r,n),t.current&&c(!1)};return s.useLayoutEffect(()=>{const o=r.current;if(o)return o.addEventListener("mouseenter",i),o.addEventListener("mouseleave",f),()=>{o.removeEventListener("mouseenter",i),o.removeEventListener("mouseleave",f)}},[r.current,n]),[r,l]}function w(e){const[t,n]=s.useState(e),u=s.useRef({...Y}),l=s.useRef(!1),c=s.useRef(0),r=s.useRef(null),[i,f]=s.useState(!1);s.useEffect(()=>{M.isEqual(e,t)||n(e)},[e]);function o(){c.current&&(window.clearTimeout(c.current),c.current=0)}function O(a,v){c.current||(c.current=window.setTimeout(a,v))}function m(){l.current=!0}function S(a){if(!l.current)return;const v={...u.current};u.current.screenX=a.screenX,u.current.screenY=a.screenY,b(v,a)&&o(),O(()=>{H(r,t),f(!0)},t.delay||R)}function E(){o(),h(r,t),l.current=!1,f(!1)}return s.useLayoutEffect(()=>{if(!r.current)return;const a=d.throttle(S,25,{leading:!1});return r.current.addEventListener("mouseenter",m),r.current.addEventListener("mousemove",a),r.current.addEventListener("mouseleave",E),()=>{r.current&&(r.current.removeEventListener("mouseenter",m),r.current.removeEventListener("mousemove",a),r.current.removeEventListener("mouseleave",E))}},[r.current,t]),[r,i]}export{w as a,X as u};
2
+ //# sourceMappingURL=BTJwiZTv.chunk.js.map