@saooti/octopus-sdk 42.3.0 → 42.3.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (615) hide show
  1. package/dist/{AdvancedSearch-DEh3iiuK.mjs → AdvancedSearch-BTbYmlMm.mjs} +8 -8
  2. package/dist/AdvancedSearch-C6BJzvGT.mjs.map +1 -0
  3. package/dist/AdvancedSearch-ChnJq71j.mjs.map +1 -0
  4. package/dist/AdvancedSearch-ChtUj3vS.mjs.map +1 -0
  5. package/dist/AdvancedSearch-D-9o5KzI.mjs.map +1 -0
  6. package/dist/AdvancedSearch-DH5YTENK.mjs.map +1 -0
  7. package/dist/AdvancedSearch-DN3WFduh.mjs.map +1 -0
  8. package/dist/AdvancedSearch-EpYd6K3d.mjs.map +1 -0
  9. package/dist/AdvancedSearch-PRJyRSID.mjs.map +1 -0
  10. package/dist/AdvancedSearch-_E2nwQ-A.mjs.map +1 -0
  11. package/dist/AdvancedSearch-cLjakm-6.mjs.map +1 -0
  12. package/dist/AdvancedSearch-k-fQfSBk.mjs.map +1 -0
  13. package/dist/AdvancedSearch-zFJq-WlO.mjs.map +1 -0
  14. package/dist/CategoryChooser-CSUjIA0D.mjs.map +1 -0
  15. package/dist/{CategoryChooser-CeF4n-nw.mjs → CategoryChooser-fAUMJNHu.mjs} +1 -1
  16. package/dist/CategoryFilter-B0S_nCvS.mjs.map +1 -0
  17. package/dist/CategoryFilter-BVrLO_pV.mjs.map +1 -0
  18. package/dist/{CategoryFilter-Djmal5bY.mjs → CategoryFilter-CsYCvEnz.mjs} +3 -3
  19. package/dist/CategoryFilter-DVwCpHLx.mjs.map +1 -0
  20. package/dist/CategoryList-B_9GG6Z9.mjs.map +1 -0
  21. package/dist/{CategoryList-Dksp79Lm.mjs → CategoryList-CDoIfrDw.mjs} +2 -2
  22. package/dist/CategoryList-CUae_phb.mjs.map +1 -0
  23. package/dist/CategoryList-DxR0fpKd.mjs.map +1 -0
  24. package/dist/CategoryPage-C7aKDtgs.mjs.map +1 -0
  25. package/dist/{CategoryPage-DC8fMny_.mjs → CategoryPage-Cl5Yuxnu.mjs} +2 -2
  26. package/dist/CategoryPage-DlnAp05t.mjs.map +1 -0
  27. package/dist/CategoryPage-Dlq5XQBS.mjs.map +1 -0
  28. package/dist/{CategorySearchFilter-KVYBscdd.mjs → CategorySearchFilter-Cce5zxZB.mjs} +1 -1
  29. package/dist/CategorySearchFilter-EULpSE2e.mjs.map +1 -0
  30. package/dist/ChapteringModal-BplEGZj2.mjs.map +1 -0
  31. package/dist/ChapteringModal-C9yuW_IU.mjs.map +1 -0
  32. package/dist/{ChapteringModal-Be9FF1yz.mjs → ChapteringModal-DiiVSG7s.mjs} +1 -1
  33. package/dist/{CheckIdentityModal-nMszYOsW.mjs → CheckIdentityModal-BrnYeGdk.mjs} +3 -3
  34. package/dist/CheckIdentityModal-BtGdsv2v.mjs.map +1 -0
  35. package/dist/CheckIdentityModal-CpRO7ehH.mjs.map +1 -0
  36. package/dist/CheckIdentityModal-Cry9ra4J.mjs.map +1 -0
  37. package/dist/ClassicDatePicker--q1yYb-S.mjs.map +1 -0
  38. package/dist/ClassicDatePicker-4ouU5ov9.mjs.map +1 -0
  39. package/dist/ClassicDatePicker-B8bI9QfF.mjs.map +1 -0
  40. package/dist/ClassicDatePicker-BTJWityQ.mjs +186 -0
  41. package/dist/ClassicDatePicker-CChR9LBd.mjs.map +1 -0
  42. package/dist/ClassicDatePicker-CopJVkF0.mjs.map +1 -0
  43. package/dist/ClassicDatePicker-DgcJCevR.mjs.map +1 -0
  44. package/dist/ClassicDatePicker-NxGNQxHE.mjs.map +1 -0
  45. package/dist/ClassicDatePicker-dgdGXcRk.mjs.map +1 -0
  46. package/dist/{ClassicEmojiPicker-B4TAlZvo.mjs → ClassicEmojiPicker-C0gm-DA2.mjs} +1 -1
  47. package/dist/ClassicEmojiPicker-CJZD8H7L.mjs.map +1 -0
  48. package/dist/{ClassicHelpButton-DT7T8tMe.mjs → ClassicHelpButton-BnRLmYuh.mjs} +1 -1
  49. package/dist/ClassicHelpButton-Qb4AwvWI.mjs.map +1 -0
  50. package/dist/{ClassicInputText-DJ5kURGM.mjs → ClassicInputText-YsntJkHk.mjs} +1 -1
  51. package/dist/ClassicInputText-npkVSUoH.mjs.map +1 -0
  52. package/dist/ClassicMultiselect-2I2K-o4R.mjs.map +1 -0
  53. package/dist/{ClassicMultiselect-CDHdJjjV.mjs → ClassicMultiselect-C0yzVQ8Y.mjs} +1 -1
  54. package/dist/{ClassicNotifications-DEpVRRHg.mjs → ClassicNotifications-8CVfGSqL.mjs} +1 -1
  55. package/dist/ClassicNotifications-BFQ-R6kO.mjs.map +1 -0
  56. package/dist/ClassicNotifications-DR0PM1Xp.mjs.map +1 -0
  57. package/dist/{ClassicPopover-DWR50Nxi.mjs → ClassicPopover-BUb-1WMB.mjs} +1 -1
  58. package/dist/ClassicPopover-BhMY2SMo.mjs.map +1 -0
  59. package/dist/ClipboardModal-B_SZ6jDk.mjs.map +1 -0
  60. package/dist/{ClipboardModal-BUKwZYOf.mjs → ClipboardModal-ByVXPcKD.mjs} +1 -1
  61. package/dist/ClipboardModal-DjrZQRtY.mjs.map +1 -0
  62. package/dist/{CommentInput-US8ZtNj1.mjs → CommentInput-CrRstzua.mjs} +4 -4
  63. package/dist/CommentInput-DPMj47uE.mjs.map +1 -0
  64. package/dist/CommentInput-DbhOyi7c.mjs.map +1 -0
  65. package/dist/CommentInput-I97yysBW.mjs.map +1 -0
  66. package/dist/CommentItem-AItzrTBi.mjs.map +1 -0
  67. package/dist/CommentItem-B7vvJwZI.mjs.map +1 -0
  68. package/dist/{CommentItem-CqWZPmbj.mjs → CommentItem-BYU67TIu.mjs} +4 -4
  69. package/dist/CommentItem-CvNbH7Hf.mjs.map +1 -0
  70. package/dist/CommentList-BTyyCcX4.mjs.map +1 -0
  71. package/dist/CommentList-CWrf45Di.mjs.map +1 -0
  72. package/dist/CommentList-DP6wk4PD.mjs.map +1 -0
  73. package/dist/{CommentList-CSYpqgNM.mjs → CommentList-snIIudVC.mjs} +2 -2
  74. package/dist/CommentMoreActions-BNajG7wk.mjs.map +1 -0
  75. package/dist/CommentMoreActions-C1l4Y_HY.mjs.map +1 -0
  76. package/dist/CommentMoreActions-DPbJnEEV.mjs.map +1 -0
  77. package/dist/{CommentMoreActions-T5RN6BGq.mjs → CommentMoreActions-y202UxL5.mjs} +3 -3
  78. package/dist/{CommentName-DslRo9jg.mjs → CommentName-CHBlEM7I.mjs} +3 -3
  79. package/dist/CommentName-D5HN8bGE.mjs.map +1 -0
  80. package/dist/CommentName-DMom_kwo.mjs.map +1 -0
  81. package/dist/CommentName-OJrxjSxu.mjs.map +1 -0
  82. package/dist/CommentParentInfo-DWVF5Ewh.mjs.map +1 -0
  83. package/dist/CommentParentInfo-Do3IlO95.mjs.map +1 -0
  84. package/dist/{CommentParentInfo-DMX3nkCb.mjs → CommentParentInfo-DoEeaQGU.mjs} +2 -2
  85. package/dist/CommentParentInfo-DqHfDpKs.mjs.map +1 -0
  86. package/dist/{CommentPlayer-D3JEVPKX.mjs → CommentPlayer-B4MXG-gG.mjs} +2 -2
  87. package/dist/CommentPlayer-B67saxPf.mjs.map +1 -0
  88. package/dist/CommentPlayer-BUtEvkoV.mjs.map +1 -0
  89. package/dist/CommentSection-BIZMRePu.mjs.map +1 -0
  90. package/dist/CommentSection-CSehg6MD.mjs.map +1 -0
  91. package/dist/{CommentSection-Brn0VQcc.mjs → CommentSection-DZf04NxT.mjs} +3 -3
  92. package/dist/CommentSection-MDKioQWf.mjs.map +1 -0
  93. package/dist/CommentStore-BBm8MjxW.mjs.map +1 -0
  94. package/dist/{CommentStore-hPTYaDGr.mjs → CommentStore-CysGkBHp.mjs} +8 -8
  95. package/dist/CommentStore-F5MVSrDw.mjs.map +1 -0
  96. package/dist/ContractPreviewModal-CFSkXgB4.mjs.map +1 -0
  97. package/dist/ContractPreviewModal-CKL6Rb_V.mjs.map +1 -0
  98. package/dist/{ContractPreviewModal-48Je4Wuy.mjs → ContractPreviewModal-Dd-1KasR.mjs} +2 -2
  99. package/dist/DateFilter-BwYSwGc-.mjs.map +1 -0
  100. package/dist/DateFilter-CGTz76bp.mjs.map +1 -0
  101. package/dist/DateFilter-CfeYepTO.mjs.map +1 -0
  102. package/dist/{DateFilter-DztHuPm8.mjs → DateFilter-Cnb_S8Up.mjs} +1 -1
  103. package/dist/DateFilter-DFw66D2V.mjs.map +1 -0
  104. package/dist/DateFilter-DMOUMeCh.mjs.map +1 -0
  105. package/dist/DateFilter-DdbvVu9Q.mjs.map +1 -0
  106. package/dist/DateFilter-Dr1nRuvZ.mjs.map +1 -0
  107. package/dist/DateFilter-QGaXHkcu.mjs.map +1 -0
  108. package/dist/{DownloadPodcastButton-BYWuLoNg.mjs → DownloadPodcastButton-6HtR84aE.mjs} +2 -2
  109. package/dist/DownloadPodcastButton-D2qeKDPT.mjs.map +1 -0
  110. package/dist/DownloadPodcastButton-Tr_Y4qMu.mjs.map +1 -0
  111. package/dist/{EditCommentModal-DacFxzLx.mjs → EditCommentModal-BQ03B6LC.mjs} +2 -2
  112. package/dist/EditCommentModal-BZitN0Ir.mjs.map +1 -0
  113. package/dist/EditCommentModal-CcmCx_My.mjs.map +1 -0
  114. package/dist/EditCommentModal-sj0yXd7-.mjs.map +1 -0
  115. package/dist/EmissionGroupChooser--428fdeK.mjs.map +1 -0
  116. package/dist/EmissionGroupChooser-BJCKekKM.mjs.map +1 -0
  117. package/dist/EmissionGroupChooser-ByqGmsGw.mjs.map +1 -0
  118. package/dist/EmissionGroupChooser-Cb3CF0uc.mjs.map +1 -0
  119. package/dist/EmissionGroupChooser-D4vMQH8g.mjs.map +1 -0
  120. package/dist/{EmissionGroupChooser-KmzQjp7d.mjs → EmissionGroupChooser-De_IpEhW.mjs} +2 -2
  121. package/dist/EmissionInlineList-CdHQBjfR.mjs.map +1 -0
  122. package/dist/EmissionInlineList-CnA0d_k2.mjs.map +1 -0
  123. package/dist/EmissionInlineList-DLUvPBNl.mjs.map +1 -0
  124. package/dist/{EmissionInlineList-BoEIAbLu.mjs → EmissionInlineList-dlb4gUOP.mjs} +5 -5
  125. package/dist/EmissionItem-B39oFnXF.mjs.map +1 -0
  126. package/dist/EmissionItem-BkPLFhAo.mjs.map +1 -0
  127. package/dist/EmissionItem-CjAUdLb7.mjs.map +1 -0
  128. package/dist/{EmissionItem-BeQWw-UT.mjs → EmissionItem-Dm_IGNkw.mjs} +4 -4
  129. package/dist/EmissionList-B0UntYdC.mjs.map +1 -0
  130. package/dist/EmissionList-BQSI4xbi.mjs.map +1 -0
  131. package/dist/{EmissionList-DB7O1nj5.mjs → EmissionList-C4JEYLyK.mjs} +4 -4
  132. package/dist/EmissionList-C7lQBdlW.mjs.map +1 -0
  133. package/dist/EmissionPage-BF6s2ySo.mjs.map +1 -0
  134. package/dist/EmissionPage-B_-nDP5x.mjs.map +1 -0
  135. package/dist/EmissionPage-C-ESprrZ.mjs.map +1 -0
  136. package/dist/{EmissionPage-CNYJ1Puo.mjs → EmissionPage-C4XUdzzm.mjs} +10 -10
  137. package/dist/EmissionPage-CPXcNHGS.mjs.map +1 -0
  138. package/dist/EmissionPage-EMgXCVhK.mjs.map +1 -0
  139. package/dist/EmissionPage-mXbUqOh9.mjs.map +1 -0
  140. package/dist/{EmissionPlayerItem-S_yqupad.mjs → EmissionPlayerItem-BLIdolRe.mjs} +3 -3
  141. package/dist/EmissionPlayerItem-C27zJBhY.mjs.map +1 -0
  142. package/dist/EmissionPlayerItem-C3fkgEaL.mjs.map +1 -0
  143. package/dist/EmissionPlayerItem-DxXG20G1.mjs.map +1 -0
  144. package/dist/EmissionPresentationItem-BNnDSWGQ.mjs.map +1 -0
  145. package/dist/EmissionPresentationItem-BeETY65I.mjs.map +1 -0
  146. package/dist/{EmissionPresentationItem-kJgKN7Ju.mjs → EmissionPresentationItem-DYDwfqwp.mjs} +1 -1
  147. package/dist/EmissionPresentationList-BD7rIUok.mjs.map +1 -0
  148. package/dist/EmissionPresentationList-CGMyY_iu.mjs.map +1 -0
  149. package/dist/{EmissionPresentationList-Bg9X3CJP.mjs → EmissionPresentationList-Cxi7QnIs.mjs} +3 -3
  150. package/dist/EmissionsPage-4To0aRBA.mjs.map +1 -0
  151. package/dist/{EmissionsPage-BLpGH_PR.mjs → EmissionsPage-B0bXLncg.mjs} +5 -5
  152. package/dist/EmissionsPage-BIspB5uq.mjs.map +1 -0
  153. package/dist/EmissionsPage-BhUjdpEu.mjs.map +1 -0
  154. package/dist/EmissionsPage-Bn1R_ipo.mjs.map +1 -0
  155. package/dist/EmissionsPage-CNXwdJuV.mjs.map +1 -0
  156. package/dist/EmissionsPage-CPmhIbFf.mjs.map +1 -0
  157. package/dist/EmissionsPage-Cgzvn2h8.mjs.map +1 -0
  158. package/dist/EmissionsPage-D09zTpGb.mjs.map +1 -0
  159. package/dist/EmissionsPage-Dl7qaQT1.mjs.map +1 -0
  160. package/dist/EmissionsPage-DyleZtu_.mjs.map +1 -0
  161. package/dist/EmissionsPage-OVpc7k1Z.mjs.map +1 -0
  162. package/dist/EmissionsPage-wjKBLFM6.mjs.map +1 -0
  163. package/dist/Error403Page-B6Q7ijY3.mjs.map +1 -0
  164. package/dist/Error403Page-DF08mgCL.mjs.map +1 -0
  165. package/dist/{Error403Page-BB69doEn.mjs → Error403Page-DVmC5AOd.mjs} +2 -2
  166. package/dist/FooterGarSection-BWahCyz0.mjs.map +1 -0
  167. package/dist/{FooterGarSection-B9nsnpfF.mjs → FooterGarSection-BqPggI3o.mjs} +3 -3
  168. package/dist/FooterGarSection-CN8ZfO7e.mjs.map +1 -0
  169. package/dist/FooterSection-BOjr1LRb.mjs.map +1 -0
  170. package/dist/{FooterSection-DdGtlbk-.mjs → FooterSection-C5FEIJlU.mjs} +11 -11
  171. package/dist/FooterSection-nVRzKSYN.mjs.map +1 -0
  172. package/dist/HomeDropdown-3fl_xltN.mjs.map +1 -0
  173. package/dist/HomeDropdown-DGNkJhG2.mjs.map +1 -0
  174. package/dist/{HomeDropdown-BqwwLStt.mjs → HomeDropdown-Fx6kQAuH.mjs} +3 -3
  175. package/dist/HomeDropdown-PvmOUzYb.mjs.map +1 -0
  176. package/dist/{HomePage-JOUAKKfP.mjs → HomePage-7PT7HmHs.mjs} +3 -3
  177. package/dist/HomePage-D0Pbu_h1.mjs.map +1 -0
  178. package/dist/HomePage-D6_D1f33.mjs.map +1 -0
  179. package/dist/HomePage-ry0NfX1M.mjs.map +1 -0
  180. package/dist/InlineRubriqueList-BdpS1pVc.mjs.map +1 -0
  181. package/dist/InlineRubriqueList-BlcjQ4wR.mjs.map +1 -0
  182. package/dist/{InlineRubriqueList-BzcHKvM4.mjs → InlineRubriqueList-ezgexR-O.mjs} +1 -1
  183. package/dist/{LikeSection-MmbHMunb.mjs → LikeSection-CGu4yOCr.mjs} +3 -3
  184. package/dist/LikeSection-Cqj4y7qZ.mjs.map +1 -0
  185. package/dist/LikeSection-D95IMsZE.mjs.map +1 -0
  186. package/dist/LikeSection-HJla-zgI.mjs.map +1 -0
  187. package/dist/{ListPaginate-5uRK_QKJ.mjs → ListPaginate-BPdnBcpe.mjs} +2 -2
  188. package/dist/ListPaginate-DYzRnp-2.mjs.map +1 -0
  189. package/dist/ListPaginate-DyR7HLIc.mjs.map +1 -0
  190. package/dist/LiveHorizontalList-Bqe351Ut.mjs.map +1 -0
  191. package/dist/{LiveHorizontalList-CpoIRd4C.mjs → LiveHorizontalList-Bs-Rz5Ws.mjs} +3 -3
  192. package/dist/LiveHorizontalList-CaujYMT3.mjs.map +1 -0
  193. package/dist/LiveHorizontalList-DhsOZPT3.mjs.map +1 -0
  194. package/dist/{LiveList-DYFBrNgg.mjs → LiveList-BVOEnAEc.mjs} +5 -5
  195. package/dist/LiveList-DMB3FxUM.mjs.map +1 -0
  196. package/dist/LiveList-DOi4GV1x.mjs.map +1 -0
  197. package/dist/LiveList-Dh1mJVs7.mjs.map +1 -0
  198. package/dist/LivesPage-BvDLscOE.mjs.map +1 -0
  199. package/dist/{LivesPage-FSkmBdVw.mjs → LivesPage-DG5VY4HF.mjs} +2 -2
  200. package/dist/LivesPage-DmSlg7iH.mjs.map +1 -0
  201. package/dist/LivesPage-yy_5pI8R.mjs.map +1 -0
  202. package/dist/MapPage-3n-rigBK.mjs.map +1 -0
  203. package/dist/MapPage-5GwE8Z4E.mjs.map +1 -0
  204. package/dist/{MapPage-DpBt2gWF.mjs → MapPage-bIe2a9O1.mjs} +2 -2
  205. package/dist/MobileMenu-BSos17v3.mjs.map +1 -0
  206. package/dist/{MobileMenu-CjNMfHUP.mjs → MobileMenu-BZ5nOrYw.mjs} +5 -5
  207. package/dist/MobileMenu-C6W37oJg.mjs.map +1 -0
  208. package/dist/MobileMenu-K0rNwrW1.mjs.map +1 -0
  209. package/dist/NewsletterModal-CFGXBtID.mjs.map +1 -0
  210. package/dist/NewsletterModal-CZNwpCK5.mjs.map +1 -0
  211. package/dist/{NewsletterModal-BurqHTFc.mjs → NewsletterModal-DZk0mSVC.mjs} +1 -1
  212. package/dist/OctopusMultiselect-CFUGyzeM.mjs.map +1 -0
  213. package/dist/OctopusMultiselect-Cn1lqbQo.mjs.map +1 -0
  214. package/dist/OctopusMultiselect-esu8BY0J.mjs.map +1 -0
  215. package/dist/{OctopusMultiselect-C8qljiaH.mjs → OctopusMultiselect-noQPQMZQ.mjs} +7 -5
  216. package/dist/OrganisationChooser-BKfXLT4G.mjs.map +1 -0
  217. package/dist/{OrganisationChooser-Dx-OT7MW.mjs → OrganisationChooser-C48cWqbY.mjs} +3 -3
  218. package/dist/OrganisationChooser-PpO7MD7f.mjs.map +1 -0
  219. package/dist/OrganisationChooser-Y_jO6oXv.mjs.map +1 -0
  220. package/dist/{OrganisationChooserLight-BF5fT5pV.mjs → OrganisationChooserLight-Bcltbv-v.mjs} +1 -1
  221. package/dist/OrganisationChooserLight-Dh7wMH40.mjs.map +1 -0
  222. package/dist/OrganisationChooserLight-Dx_rkvpP.mjs.map +1 -0
  223. package/dist/PageNotFound-DeW-K_hL.mjs.map +1 -0
  224. package/dist/{PageNotFound-Cj-3Gv8T.mjs → PageNotFound-DogaoIFX.mjs} +2 -2
  225. package/dist/PageNotFound-gRuMWYCp.mjs.map +1 -0
  226. package/dist/ParticipantInlineList-CY_s6aJm.mjs.map +1 -0
  227. package/dist/{ParticipantInlineList-DEWqM1Io.mjs → ParticipantInlineList-D9pkOlvP.mjs} +4 -4
  228. package/dist/ParticipantInlineList-DSatB75C.mjs.map +1 -0
  229. package/dist/ParticipantItem-BG7yqRvD.mjs.map +1 -0
  230. package/dist/ParticipantItem-BTK25HID.mjs.map +1 -0
  231. package/dist/{ParticipantItem-BZAUIeSR.mjs → ParticipantItem-CbHOfVon.mjs} +3 -3
  232. package/dist/ParticipantPage-B4VnV8Yc.mjs.map +1 -0
  233. package/dist/ParticipantPage-B6Gzg6ul.mjs.map +1 -0
  234. package/dist/ParticipantPage-CNRNKTtC.mjs.map +1 -0
  235. package/dist/ParticipantPage-CpkhQjN2.mjs.map +1 -0
  236. package/dist/ParticipantPage-D61CCIqy.mjs.map +1 -0
  237. package/dist/ParticipantPage-Dh4JJCmJ.mjs.map +1 -0
  238. package/dist/{ParticipantPage-CzaHoWij.mjs → ParticipantPage-nTp2MbgB.mjs} +6 -6
  239. package/dist/{ParticipantsPage-goxJZQZZ.mjs → ParticipantsPage-Bbz9lQ_0.mjs} +6 -6
  240. package/dist/ParticipantsPage-COaQrVID.mjs.map +1 -0
  241. package/dist/ParticipantsPage-DRVVU7qp.mjs.map +1 -0
  242. package/dist/ParticipantsPage-DhKCWwKE.mjs.map +1 -0
  243. package/dist/{PlayerAnonymousModal-By96BtpA.mjs → PlayerAnonymousModal-B1iZ34O8.mjs} +2 -2
  244. package/dist/PlayerAnonymousModal-CBZStK-L.mjs.map +1 -0
  245. package/dist/PlayerAnonymousModal-Cq6-Dn49.mjs.map +1 -0
  246. package/dist/PlayerAnonymousModal-Cu2GGoAh.mjs.map +1 -0
  247. package/dist/PlayerAnonymousModal-DiXWtNmM.mjs.map +1 -0
  248. package/dist/PlayerAnonymousModal-DrQvDDym.mjs.map +1 -0
  249. package/dist/PlayerCompact-B9oeGx_g.mjs.map +1 -0
  250. package/dist/PlayerCompact-DtMginEc.mjs.map +1 -0
  251. package/dist/PlayerCompact-E8ydrdJ4.mjs.map +1 -0
  252. package/dist/{PlayerCompact-CjU8xxVH.mjs → PlayerCompact-_39FpkWo.mjs} +4 -4
  253. package/dist/PlayerComponent-4Wj5XlrS.mjs.map +1 -0
  254. package/dist/{PlayerComponent-B58O6U6i.mjs → PlayerComponent-B1RsmSf0.mjs} +47 -47
  255. package/dist/PlayerComponent-BGVzhVz9.mjs.map +1 -0
  256. package/dist/PlayerComponent-BIshvul2.mjs.map +1 -0
  257. package/dist/PlayerComponent-BO7wUL2M.mjs.map +1 -0
  258. package/dist/PlayerComponent-C222I0kT.mjs.map +1 -0
  259. package/dist/PlayerComponent-CjNZNKKz.mjs.map +1 -0
  260. package/dist/PlayerComponent-UG_c6_yr.mjs.map +1 -0
  261. package/dist/{PlayerLarge-CWL5SDzD.mjs → PlayerLarge-BxdyYLOt.mjs} +5 -5
  262. package/dist/PlayerLarge-CPUAoR9q.mjs.map +1 -0
  263. package/dist/PlayerLarge-DP7RsA83.mjs.map +1 -0
  264. package/dist/PlayerLarge-DpiFO7gk.mjs.map +1 -0
  265. package/dist/PlayerLarge-Dwtmu4gz.mjs.map +1 -0
  266. package/dist/PlayerLarge-HvRHSw4j.mjs.map +1 -0
  267. package/dist/PlayerLarge-X5uYCbyS.mjs.map +1 -0
  268. package/dist/PlayerLarge-qwr3iWSX.mjs.map +1 -0
  269. package/dist/{PlayerPlayButton-DmvV2YDi.mjs → PlayerPlayButton-BIsfgj0d.mjs} +4 -4
  270. package/dist/PlayerPlayButton-BQ4zJOrE.mjs.map +1 -0
  271. package/dist/PlayerPlayButton-kh4ZCdWh.mjs.map +1 -0
  272. package/dist/PlayerProgressBar-C-I3dk3l.mjs.map +1 -0
  273. package/dist/PlayerProgressBar-Dr-aFk7O.mjs.map +1 -0
  274. package/dist/{PlayerProgressBar-Cl_mF4nD.mjs → PlayerProgressBar-dSschgez.mjs} +2 -2
  275. package/dist/PlayerProgressBar-xc1ZFPJY.mjs.map +1 -0
  276. package/dist/PlayerStore-Aq_ukXXS.mjs.map +1 -0
  277. package/dist/PlayerStore-C_QCHbT3.mjs.map +1 -0
  278. package/dist/{PlayerStore-CKprkxa0.mjs → PlayerStore-DggKki80.mjs} +1 -1
  279. package/dist/PlayerVideo-BNfhaNUn.mjs.map +1 -0
  280. package/dist/{PlayerVideo-CVUU7nHT.mjs → PlayerVideo-BWyvKlJT.mjs} +3 -3
  281. package/dist/PlayerVideo-Bhok6qYS.mjs.map +1 -0
  282. package/dist/PlayerVideo-CN609whx.mjs.map +1 -0
  283. package/dist/PlayerVideo-DXG_PsWA.mjs.map +1 -0
  284. package/dist/PlayerVideo-DzUapxuZ.mjs.map +1 -0
  285. package/dist/PlayerVideoDigiteka-B1rRVLzy.mjs.map +1 -0
  286. package/dist/PlayerVideoDigiteka-B6qODy7b.mjs.map +1 -0
  287. package/dist/{PlayerVideoDigiteka-DZIqqN8a.mjs → PlayerVideoDigiteka-Dxx63XHI.mjs} +2 -2
  288. package/dist/PlayerVideoHls-BoAbvi2b.mjs.map +1 -0
  289. package/dist/PlayerVideoHls-BsHaaJB-.mjs.map +1 -0
  290. package/dist/PlayerVideoHls-C0ddorEn.mjs.map +1 -0
  291. package/dist/PlayerVideoHls-DBODDRmV.mjs.map +1 -0
  292. package/dist/PlayerVideoHls-DVNHm_O2.mjs.map +1 -0
  293. package/dist/{PlayerVideoHls-BirHOkZD.mjs → PlayerVideoHls-DzbyXZsQ.mjs} +9 -7
  294. package/dist/{PlaylistPage-DljbABur.mjs → PlaylistPage-BdbqXFwR.mjs} +35 -35
  295. package/dist/PlaylistPage-BgUaPJet.mjs.map +1 -0
  296. package/dist/PlaylistPage-BwF2VdGb.mjs.map +1 -0
  297. package/dist/PlaylistPage-CINwx3zE.mjs.map +1 -0
  298. package/dist/PlaylistPage-CPB647jC.mjs.map +1 -0
  299. package/dist/PlaylistPage-DDzE5GQs.mjs.map +1 -0
  300. package/dist/PlaylistPage-bm1nWKMg.mjs.map +1 -0
  301. package/dist/PlaylistsPage-BwkVSYIp.mjs.map +1 -0
  302. package/dist/PlaylistsPage-C62NUvz4.mjs.map +1 -0
  303. package/dist/{PlaylistsPage-BSW-uPWF.mjs → PlaylistsPage-D08i24b2.mjs} +13 -13
  304. package/dist/PlaylistsPage-Dvh77ql6.mjs.map +1 -0
  305. package/dist/PodcastFilterList-BBhzOM64.mjs.map +1 -0
  306. package/dist/PodcastFilterList-BKBjd36i.mjs.map +1 -0
  307. package/dist/{PodcastFilterList-YM90eN60.mjs → PodcastFilterList-CL5ebQ69.mjs} +3 -3
  308. package/dist/PodcastFilterList-D9NTYS1v.mjs.map +1 -0
  309. package/dist/{PodcastImage-BtiQlrb3.mjs → PodcastImage-BFA22TgZ.mjs} +6 -6
  310. package/dist/PodcastImage-BhQKB5te.mjs.map +1 -0
  311. package/dist/PodcastImage-CHx3bUzt.mjs.map +1 -0
  312. package/dist/PodcastInlineList-CcNd_Hbs.mjs.map +1 -0
  313. package/dist/{PodcastInlineList-B32BSFqN.mjs → PodcastInlineList-H6BxXx0A.mjs} +1 -1
  314. package/dist/PodcastInlineList-akLivgog.mjs.map +1 -0
  315. package/dist/PodcastInlineList-jI2EvXSo.mjs.map +1 -0
  316. package/dist/{PodcastInlineListTemplate-DTrS1UiG.mjs → PodcastInlineListTemplate-Chbi8aME.mjs} +3 -3
  317. package/dist/PodcastInlineListTemplate-DT9ZRs61.mjs.map +1 -0
  318. package/dist/PodcastInlineListTemplate-Dh1xF6xT.mjs.map +1 -0
  319. package/dist/PodcastIsPlaying-C0jcpBQd.mjs.map +1 -0
  320. package/dist/PodcastIsPlaying-H6P1CHAI.mjs.map +1 -0
  321. package/dist/{PodcastIsPlaying-BtmHnQi9.mjs → PodcastIsPlaying-ugHcefCy.mjs} +1 -1
  322. package/dist/{PodcastItem-TdtzApJ6.mjs → PodcastItem-Baki7W0q.mjs} +6 -6
  323. package/dist/PodcastItem-BfvK4ion.mjs.map +1 -0
  324. package/dist/PodcastItem-DEhA78z9.mjs.map +1 -0
  325. package/dist/PodcastItem-DwK_Yu1G.mjs.map +1 -0
  326. package/dist/PodcastList-B4ic6Cij.mjs.map +1 -0
  327. package/dist/PodcastList-C2R92m6S.mjs.map +1 -0
  328. package/dist/PodcastList-DWl6zz_z.mjs.map +1 -0
  329. package/dist/PodcastList-Dbt4nmKg.mjs.map +1 -0
  330. package/dist/PodcastList-KaQBRbR9.mjs.map +1 -0
  331. package/dist/{PodcastList-BAOJhQ7G.mjs → PodcastList-N_XOE-hI.mjs} +5 -5
  332. package/dist/PodcastList-d3SGLPvF.mjs.map +1 -0
  333. package/dist/{PodcastList-Bbe3yWiu.mjs → PodcastList-yjd_exFg.mjs} +4 -4
  334. package/dist/PodcastPage-B0pbZ5o_.mjs.map +1 -0
  335. package/dist/PodcastPage-BOA44Us4.mjs.map +1 -0
  336. package/dist/PodcastPage-Bs1wz-0E.mjs.map +1 -0
  337. package/dist/PodcastPage-C37Wa-qH.mjs.map +1 -0
  338. package/dist/PodcastPage-D0HYJxaK.mjs.map +1 -0
  339. package/dist/PodcastPage-D0U6-etV.mjs.map +1 -0
  340. package/dist/PodcastPage-DwMPY4po.mjs.map +1 -0
  341. package/dist/{PodcastPage-CAxub2do.mjs → PodcastPage-SUEm-Enm.mjs} +26 -26
  342. package/dist/PodcastPlayBar-Bo-W_dSK.mjs.map +1 -0
  343. package/dist/PodcastPlayBar-CBtMWlVc.mjs.map +1 -0
  344. package/dist/{PodcastPlayBar-gAEttclo.mjs → PodcastPlayBar-COU17bnm.mjs} +3 -3
  345. package/dist/PodcastPlayBar-Cpr3Ff7J.mjs.map +1 -0
  346. package/dist/PodcastPlayBasicButton-BvJPrxpI.mjs.map +1 -0
  347. package/dist/PodcastPlayBasicButton-CS5TNlmX.mjs.map +1 -0
  348. package/dist/{PodcastPlayBasicButton-7w91y2ow.mjs → PodcastPlayBasicButton-CVXhEUHB.mjs} +1 -1
  349. package/dist/{PodcastPlayButton-CQY0d6f-.mjs → PodcastPlayButton--gjzxW0o.mjs} +3 -3
  350. package/dist/PodcastPlayButton-BqvE4ZUl.mjs.map +1 -0
  351. package/dist/PodcastPlayButton-DW5Feest.mjs.map +1 -0
  352. package/dist/PodcastPlaylistInlineList-BV31HaB2.mjs.map +1 -0
  353. package/dist/PodcastPlaylistInlineList-C-WYs6aE.mjs.map +1 -0
  354. package/dist/{PodcastPlaylistInlineList-BE5L8pSP.mjs → PodcastPlaylistInlineList-DsEHaYGZ.mjs} +7 -7
  355. package/dist/PodcastPlaylistInlineList-HEdFAq1l.mjs.map +1 -0
  356. package/dist/{PodcastPresentationList-DH6Rq0Z4.mjs → PodcastPresentationList-B9vORr36.mjs} +4 -4
  357. package/dist/PodcastPresentationList-ChqvdXY0.mjs.map +1 -0
  358. package/dist/PodcastPresentationList-Dit6HvJr.mjs.map +1 -0
  359. package/dist/{PodcastProgressBar-DoeG7lDj.mjs → PodcastProgressBar-B0FwZOTT.mjs} +3 -3
  360. package/dist/PodcastProgressBar-B8ONWq-Z.mjs.map +1 -0
  361. package/dist/PodcastProgressBar-BoGtJPAa.mjs.map +1 -0
  362. package/dist/PodcastProgressBar-DTRhKzW-.mjs.map +1 -0
  363. package/dist/{PodcastRawTranscript-Cktqtbcg.mjs → PodcastRawTranscript-BiuftXu-.mjs} +2 -2
  364. package/dist/PodcastRawTranscript-C8SJcaQE.mjs.map +1 -0
  365. package/dist/PodcastRawTranscript-nfzHM0k_.mjs.map +1 -0
  366. package/dist/PodcastRawTranscript-r5pRtZDg.mjs.map +1 -0
  367. package/dist/{PodcastSwiperList-DZ26-8xy.mjs → PodcastSwiperList-BKOYhrsH.mjs} +4 -4
  368. package/dist/PodcastSwiperList-Bsg0q89o.mjs.map +1 -0
  369. package/dist/PodcastSwiperList-BxsEv7_8.mjs.map +1 -0
  370. package/dist/PodcastSwiperList-Cju5VHcH.mjs.map +1 -0
  371. package/dist/PodcastmakerHeader-6fIwE70J.mjs.map +1 -0
  372. package/dist/PodcastmakerHeader-BBPEy__r.mjs.map +1 -0
  373. package/dist/{PodcastmakerHeader-MhdOrssb.mjs → PodcastmakerHeader-CIoJwm1L.mjs} +1 -1
  374. package/dist/PodcastsPage-967SI8kL.mjs.map +1 -0
  375. package/dist/{PodcastsPage-BXjTDNhn.mjs → PodcastsPage-B5NwPMyn.mjs} +5 -5
  376. package/dist/PodcastsPage-B7j2XxPZ.mjs.map +1 -0
  377. package/dist/PodcastsPage-BOzszXpc.mjs.map +1 -0
  378. package/dist/PodcastsPage-Bw0tzWoX.mjs.map +1 -0
  379. package/dist/PodcastsPage-D3TAYJV8.mjs.map +1 -0
  380. package/dist/PodcastsPage-DJsgHs7V.mjs.map +1 -0
  381. package/dist/PodcastsPage-DKWHzNNA.mjs.map +1 -0
  382. package/dist/PodcastsPage-DONqoMkB.mjs.map +1 -0
  383. package/dist/PodcastsPage-DUcfPeLD.mjs.map +1 -0
  384. package/dist/PodcastsPage-DWBgwD6o.mjs.map +1 -0
  385. package/dist/PodcastsPage-DZO4H1Ff.mjs.map +1 -0
  386. package/dist/PodcastsPage-DhEMPqCT.mjs.map +1 -0
  387. package/dist/ProductorSearch-BgmV_RCq.mjs.map +1 -0
  388. package/dist/{ProductorSearch-Z36zTZK4.mjs → ProductorSearch-BiUEs7mG.mjs} +3 -3
  389. package/dist/ProductorSearch-C4Nv2HzS.mjs.map +1 -0
  390. package/dist/ProductorSearch-DtVe_rU9.mjs.map +1 -0
  391. package/dist/ProgressBar-BMeSiueh.mjs.map +1 -0
  392. package/dist/ProgressBar-C15ih0uL.mjs.map +1 -0
  393. package/dist/{ProgressBar-CTOa-MDz.mjs → ProgressBar-CXB5q3-H.mjs} +2 -2
  394. package/dist/ProgressBar-DAUOWol1.mjs.map +1 -0
  395. package/dist/QrCode-BYLxjhwi.mjs.map +1 -0
  396. package/dist/QrCode-CCigeTaZ.mjs +109 -0
  397. package/dist/QrCode-CaXoOjo-.mjs.map +1 -0
  398. package/dist/QrCode-CcQR60hB.mjs.map +1 -0
  399. package/dist/QrCode-S_eLVZoz.mjs.map +1 -0
  400. package/dist/QrCode-XZMMiaX5.mjs.map +1 -0
  401. package/dist/QrCodeModal-BJOu1pAV.mjs.map +1 -0
  402. package/dist/QrCodeModal-BjT-0P0w.mjs.map +1 -0
  403. package/dist/QrCodeModal-BrabSTzq.mjs.map +1 -0
  404. package/dist/QrCodeModal-CjvbRYLW.mjs.map +1 -0
  405. package/dist/{QrCodeModal-DE3juCsN.mjs → QrCodeModal-Dpw_tCQ6.mjs} +1 -1
  406. package/dist/QrCodeModal-N2fjbP4S.mjs.map +1 -0
  407. package/dist/RadioCurrently-B_b8DV2w.mjs.map +1 -0
  408. package/dist/RadioCurrently-DufvDqm1.mjs.map +1 -0
  409. package/dist/{RadioCurrently-BlAhcc9E.mjs → RadioCurrently-ysRKhxKU.mjs} +3 -3
  410. package/dist/RadioHistory-B03bYMxm.mjs.map +1 -0
  411. package/dist/{RadioHistory-C7S79sZD.mjs → RadioHistory-DjsqvRgH.mjs} +2 -2
  412. package/dist/RadioHistory-Dv4gt9TM.mjs.map +1 -0
  413. package/dist/RadioImage-BFdiGgi_.mjs.map +1 -0
  414. package/dist/{RadioImage-BTn2Lquc.mjs → RadioImage-CSseYIVb.mjs} +4 -4
  415. package/dist/RadioImage-CrtD33dM.mjs.map +1 -0
  416. package/dist/RadioList--f7RDhHJ.mjs.map +1 -0
  417. package/dist/{RadioList-BD3zNwmk.mjs → RadioList-BZFFAobk.mjs} +4 -4
  418. package/dist/RadioList-De9NQ23Q.mjs.map +1 -0
  419. package/dist/RadioPage-BK1N--Kr.mjs.map +1 -0
  420. package/dist/RadioPage-BTtNFJI2.mjs.map +1 -0
  421. package/dist/RadioPage-CcK0y_5s.mjs.map +1 -0
  422. package/dist/RadioPage-Cqas0JX6.mjs.map +1 -0
  423. package/dist/{RadioPage-Bv3oupa1.mjs → RadioPage-Cwooj0wF.mjs} +4 -4
  424. package/dist/RadioPage-DhSB0sX5.mjs.map +1 -0
  425. package/dist/RadioPage-DlahFXYC.mjs.map +1 -0
  426. package/dist/RadioPlanning-BU1E8i4t.mjs.map +1 -0
  427. package/dist/{RadioPlanning-nkv_Mb_t.mjs → RadioPlanning-BmIxuUBI.mjs} +2 -2
  428. package/dist/RadioPlanning-Bx-N-xqX.mjs.map +1 -0
  429. package/dist/RadioProgressBar-0XM3ZTGU.mjs.map +1 -0
  430. package/dist/{RadioProgressBar-B2EgCOrK.mjs → RadioProgressBar-CQRGuPpC.mjs} +1 -1
  431. package/dist/RadioProgressBar-oyeS56mV.mjs.map +1 -0
  432. package/dist/{RecaptchaModal-w-9MlZ45.mjs → RecaptchaModal-BdW4xNlX.mjs} +1 -1
  433. package/dist/RecaptchaModal-DFlFQcHs.mjs.map +1 -0
  434. package/dist/RecaptchaModal-iLQ4UYOL.mjs.map +1 -0
  435. package/dist/ReportAbuseModal-BaPt2DLK.mjs.map +1 -0
  436. package/dist/ReportAbuseModal-BdZRe29L.mjs.map +1 -0
  437. package/dist/ReportAbuseModal-CH7Y153n.mjs.map +1 -0
  438. package/dist/{ReportAbuseModal-O1K7j7NV.mjs → ReportAbuseModal-jjGeXbB9.mjs} +4 -4
  439. package/dist/RightsIndicator-4pUsBq5j.mjs.map +1 -0
  440. package/dist/RightsIndicator-BH3jm_1O.mjs.map +1 -0
  441. package/dist/{RightsIndicator-D0cSu8j2.mjs → RightsIndicator-CPzWpH5Z.mjs} +1 -1
  442. package/dist/RightsIndicator-d8ffUFIj.mjs.map +1 -0
  443. package/dist/{RightsWrapper-BUj_1bwR.mjs → RightsWrapper-BTQ8GGUi.mjs} +5 -5
  444. package/dist/RightsWrapper-C3BRHqqo.mjs.map +1 -0
  445. package/dist/RightsWrapper-DJG9Ds6c.mjs.map +1 -0
  446. package/dist/RightsWrapper-nBURBTJX.mjs.map +1 -0
  447. package/dist/{RubriqueChoice-DaTWiDbl.mjs → RubriqueChoice-C-S-veJJ.mjs} +1 -1
  448. package/dist/RubriqueChoice-DsmnrUNs.mjs.map +1 -0
  449. package/dist/{RubriqueChooser-C33LorHa.mjs → RubriqueChooser-CNGn8LcP.mjs} +1 -1
  450. package/dist/RubriqueChooser-WmzcajTt.mjs.map +1 -0
  451. package/dist/RubriqueFilter-C9C_OiF5.mjs.map +1 -0
  452. package/dist/RubriqueFilter-DDI7DjMR.mjs.map +1 -0
  453. package/dist/RubriqueFilter-_8V1n9-x.mjs.map +1 -0
  454. package/dist/{RubriqueFilter-RgardNnQ.mjs → RubriqueFilter-rxiG8Wci.mjs} +3 -3
  455. package/dist/RubriqueList-99-nWSvq.mjs.map +1 -0
  456. package/dist/RubriqueList-BiRimk17.mjs.map +1 -0
  457. package/dist/RubriqueList-H_NHILuj.mjs.map +1 -0
  458. package/dist/{RubriqueList-DA9OYqUl.mjs → RubriqueList-rJj2IycY.mjs} +4 -4
  459. package/dist/RubriquePage-6KFPBPz8.mjs.map +1 -0
  460. package/dist/{RubriquePage-xgTOce7c.mjs → RubriquePage-BNEWnk3-.mjs} +4 -4
  461. package/dist/RubriquePage-Bpt-x7IK.mjs.map +1 -0
  462. package/dist/RubriquePage-Cwz9OqLO.mjs.map +1 -0
  463. package/dist/SearchPage-BtZnj3sA.mjs.map +1 -0
  464. package/dist/SearchPage-CbbbcXxs.mjs.map +1 -0
  465. package/dist/SearchPage-DMIV2AgJ.mjs.map +1 -0
  466. package/dist/{SearchPage-C3o5RPP0.mjs → SearchPage-DsZzPoEw.mjs} +2 -2
  467. package/dist/ShareAnonymous-BeSQozvM.mjs.map +1 -0
  468. package/dist/ShareAnonymous-BgsR6Ahp.mjs.map +1 -0
  469. package/dist/ShareAnonymous-CNWR1v6X.mjs.map +1 -0
  470. package/dist/{ShareAnonymous-bOwwEjPv.mjs → ShareAnonymous-DK2rnLl1.mjs} +3 -3
  471. package/dist/ShareAnonymous-DVpKBKbi.mjs.map +1 -0
  472. package/dist/ShareAnonymous-DWArDFT0.mjs.map +1 -0
  473. package/dist/ShareAnonymous-IaVbb-rp.mjs.map +1 -0
  474. package/dist/ShareModalPlayer-BHmsvxXF.mjs.map +1 -0
  475. package/dist/{ShareModalPlayer-D2oBrSly.mjs → ShareModalPlayer-Cfnk68-U.mjs} +1 -1
  476. package/dist/ShareModalPlayer-DLBU3lsU.mjs.map +1 -0
  477. package/dist/ShareModalPlayer-O-CmDObW.mjs.map +1 -0
  478. package/dist/ShareModalPlayer-QYu8Q9ks.mjs.map +1 -0
  479. package/dist/ShareModalPlayer-Vga-96DM.mjs.map +1 -0
  480. package/dist/{ShareNewsletter-CNw1LziN.mjs → ShareNewsletter-BWIAt47D.mjs} +1 -1
  481. package/dist/ShareNewsletter-BhFk6ARk.mjs.map +1 -0
  482. package/dist/ShareNewsletter-JCO4h7rk.mjs.map +1 -0
  483. package/dist/SharePlayer-C-RgIOh1.mjs.map +1 -0
  484. package/dist/{SharePlayer-CRri0YED.mjs → SharePlayer-C0aveOwy.mjs} +2 -2
  485. package/dist/SharePlayer-CNXrUj8M.mjs.map +1 -0
  486. package/dist/SharePlayer-D0-qY2dS.mjs.map +1 -0
  487. package/dist/SharePlayer-DQoFa7iv.mjs.map +1 -0
  488. package/dist/SharePlayer-DwNl3E7o.mjs.map +1 -0
  489. package/dist/{SharePlayerRadio-DVsegQMu.mjs → SharePlayerRadio-BqaeyEls.mjs} +2 -2
  490. package/dist/SharePlayerRadio-CHvCtKdZ.mjs.map +1 -0
  491. package/dist/SharePlayerRadio-CIsy-rCC.mjs.map +1 -0
  492. package/dist/SharePlayerRadio-ChfNulnf.mjs.map +1 -0
  493. package/dist/SharePlayerRadio-DA-W-306.mjs.map +1 -0
  494. package/dist/SharePlayerRadio-DwPeLUsk.mjs.map +1 -0
  495. package/dist/SharePlayerTypes-CeMV4n10.mjs.map +1 -0
  496. package/dist/SharePlayerTypes-DdyoQZDi.mjs.map +1 -0
  497. package/dist/{SharePlayerTypes-BxkEoBSL.mjs → SharePlayerTypes-DyrqFDVJ.mjs} +1 -1
  498. package/dist/ShareSocialsButtons-BHWzJVne.mjs.map +1 -0
  499. package/dist/ShareSocialsButtons-Bjx2ONvj.mjs.map +1 -0
  500. package/dist/{ShareSocialsButtons-BJ3DqvIO.mjs → ShareSocialsButtons-PqMXhFEk.mjs} +1 -1
  501. package/dist/{SimpleLayout-BJlcQjx9.mjs → SimpleLayout-9O9FZ69Q.mjs} +2 -2
  502. package/dist/SimpleLayout-B-QSfHeQ.mjs.map +1 -0
  503. package/dist/SimpleLayout-BauUacaf.mjs.map +1 -0
  504. package/dist/SimpleLayout-C29bPtbd.mjs.map +1 -0
  505. package/dist/SimpleLayout-Cjc3Q9Mb.mjs.map +1 -0
  506. package/dist/SimpleLayout-D4sVjQGu.mjs.map +1 -0
  507. package/dist/SimpleLayout-DaoXS--3.mjs.map +1 -0
  508. package/dist/SimpleLayout-vkWEZHLi.mjs.map +1 -0
  509. package/dist/{SmartLinkPage-DpD90wc7.mjs → SmartLinkPage-6HgX8LDv.mjs} +16 -16
  510. package/dist/SmartLinkPage-BcQmox7e.mjs.map +1 -0
  511. package/dist/SmartLinkPage-M_zB_Xp1.mjs.map +1 -0
  512. package/dist/SubscribeButtons-CyGYD1B1.mjs.map +1 -0
  513. package/dist/SubscribeButtons-DjjZQfOU.mjs.map +1 -0
  514. package/dist/{SubscribeButtons-zlRDGEzS.mjs → SubscribeButtons-IpzqDGIn.mjs} +3 -3
  515. package/dist/SubscribeButtons-yA2wowFc.mjs.map +1 -0
  516. package/dist/SwiperList-BNODHhLF.mjs.map +1 -0
  517. package/dist/SwiperList-Cqklwlg9.mjs.map +1 -0
  518. package/dist/{SwiperList-BlF3rPq5.mjs → SwiperList-O8nUg87R.mjs} +1 -1
  519. package/dist/TagList-4RDriU1J.mjs.map +1 -0
  520. package/dist/TagList-B5JPfT6j.mjs.map +1 -0
  521. package/dist/TagList-DVjqXiaA.mjs.map +1 -0
  522. package/dist/{TagList-BBHyaKp-.mjs → TagList-V9fAFATL.mjs} +2 -2
  523. package/dist/TagPage-BOsz6Bot.mjs.map +1 -0
  524. package/dist/TagPage-CALmJwxW.mjs.map +1 -0
  525. package/dist/{TagPage-DLpNBBjP.mjs → TagPage-CsFwN4sE.mjs} +3 -3
  526. package/dist/TagPage-DMuxYu6y.mjs.map +1 -0
  527. package/dist/{TopBar-CLWWRgr7.mjs → TopBar-0oG6YPlW.mjs} +37 -37
  528. package/dist/TopBar-CUCBss7X.mjs.map +1 -0
  529. package/dist/TopBar-CeQQ1hgH.mjs.map +1 -0
  530. package/dist/TopBar-DdxThCLR.mjs.map +1 -0
  531. package/dist/{UserButtonContent-BR3Rlqwp.mjs → UserButtonContent--VK68UsY.mjs} +6 -6
  532. package/dist/UserButtonContent-067qGenf.mjs.map +1 -0
  533. package/dist/UserButtonContent-Dqgyrgzv.mjs.map +1 -0
  534. package/dist/VideoModuleBox-9QgBI-Q-.mjs.map +1 -0
  535. package/dist/{VideoModuleBox-DxYJVwy3.mjs → VideoModuleBox-Bcqman6a.mjs} +1 -1
  536. package/dist/VideoModuleBox-BrVK2bDZ.mjs.map +1 -0
  537. package/dist/VideoModuleBox-DWO47_bZ.mjs.map +1 -0
  538. package/dist/VideoPage-4MB4zmnA.mjs.map +1 -0
  539. package/dist/VideoPage-BDGvtr1o.mjs.map +1 -0
  540. package/dist/{VideoPage-BaeTduNB.mjs → VideoPage-BjlaP2DU.mjs} +6 -6
  541. package/dist/VideoPage-C-yjvvhl.mjs.map +1 -0
  542. package/dist/VideoPage-C0_t7XMC.mjs.map +1 -0
  543. package/dist/VideoPage-CIDpzbkb.mjs.map +1 -0
  544. package/dist/VideoPage-D2V1oXGC.mjs.map +1 -0
  545. package/dist/VideoPage-DEJSfeFy.mjs.map +1 -0
  546. package/dist/{classicApi-pmODlqv5.mjs → classicApi-CGipMqf7.mjs} +267 -256
  547. package/dist/classicApi-CW1Z-HoF.mjs.map +1 -0
  548. package/dist/classicApi-OzToKuW1.mjs.map +1 -0
  549. package/dist/{downloadHelper-BAI-eqgA.mjs → downloadHelper-C3QooCxr.mjs} +1 -1
  550. package/dist/downloadHelper-D7dUpp5l.mjs.map +1 -0
  551. package/dist/downloadHelper-DwV3Mmd3.mjs.map +1 -0
  552. package/dist/index.css +1 -1
  553. package/dist/index.mjs +183 -183
  554. package/dist/src/components/form/ClassicDatePicker.vue.d.ts +24 -14
  555. package/dist/src/components/form/OctopusMultiselect.vue.d.ts +2 -0
  556. package/dist/src/i18n.d.ts +2 -0
  557. package/dist/tests.mjs +2 -2
  558. package/dist/useAdvancedParamInit-BKw9VZ53.mjs.map +1 -0
  559. package/dist/useAdvancedParamInit-CyRmbqqe.mjs.map +1 -0
  560. package/dist/{useAdvancedParamInit-Bgvt8758.mjs → useAdvancedParamInit-D5roUdHI.mjs} +10 -10
  561. package/dist/useDayjs-BKBB00TF.mjs.map +1 -0
  562. package/dist/useDayjs-UQLGUbw5.mjs.map +1 -0
  563. package/dist/{useDayjs-DGb3L4kJ.mjs → useDayjs-VUs19G9T.mjs} +1 -1
  564. package/dist/useErrorHandler-BKN3lhJ5.mjs.map +1 -0
  565. package/dist/useErrorHandler-C3XnRTmp.mjs.map +1 -0
  566. package/dist/{useErrorHandler-D9W2BURn.mjs → useErrorHandler-x9sjDYSz.mjs} +1 -1
  567. package/dist/useImageProxy-AEcmDpvW.mjs.map +1 -0
  568. package/dist/useImageProxy-BzTG_GCn.mjs.map +1 -0
  569. package/dist/{useImageProxy-8ndy_oTo.mjs → useImageProxy-CCpDzPmQ.mjs} +1 -1
  570. package/dist/useOrgaComputed-4PduqYTq.mjs.map +1 -0
  571. package/dist/useOrgaComputed-C2n0FBbv.mjs.map +1 -0
  572. package/dist/{useOrgaComputed-CBJ5sDOm.mjs → useOrgaComputed-D81Jihm-.mjs} +2 -2
  573. package/dist/{usePlayerLogicProgress-C2L7cMdd.mjs → usePlayerLogicProgress-BybmSAcs.mjs} +2 -2
  574. package/dist/usePlayerLogicProgress-CKoCod6g.mjs.map +1 -0
  575. package/dist/usePlayerLogicProgress-DZaPRo6p.mjs.map +1 -0
  576. package/dist/usePodcastView-B-2HPFAo.mjs.map +1 -0
  577. package/dist/{usePodcastView-CoDJJr6Y.mjs → usePodcastView-CkM-n6iO.mjs} +3 -3
  578. package/dist/usePodcastView-jdYTK1cW.mjs.map +1 -0
  579. package/dist/{usePresentationItem-DZZVm3hh.mjs → usePresentationItem-CLEGZwI3.mjs} +3 -3
  580. package/dist/usePresentationItem-Com4i40U.mjs.map +1 -0
  581. package/dist/usePresentationItem-OpMean0v.mjs.map +1 -0
  582. package/dist/{useRights-DOXtpjv5.mjs → useRights-BI2tXXjR.mjs} +1 -1
  583. package/dist/useRights-Bsv9hr7w.mjs.map +1 -0
  584. package/dist/useRights-DfudFDI6.mjs.map +1 -0
  585. package/dist/{useRubriquesFilterComputed-DoUOqOrJ.mjs → useRubriquesFilterComputed-D1yqLnK4.mjs} +1 -1
  586. package/dist/useRubriquesFilterComputed-DGDJp2gc.mjs.map +1 -0
  587. package/dist/useRubriquesFilterComputed-NNE-FElk.mjs.map +1 -0
  588. package/dist/{useRubriquesFilterParam-BE8BbmAQ.mjs → useRubriquesFilterParam-2eMd5ND7.mjs} +1 -1
  589. package/dist/useRubriquesFilterParam-DE5dYl6c.mjs.map +1 -0
  590. package/dist/useRubriquesFilterParam-DXYD4G0D.mjs.map +1 -0
  591. package/dist/useSharePlatforms-CrQ8r5vT.mjs.map +1 -0
  592. package/dist/useSharePlatforms-D124fJ_v.mjs.map +1 -0
  593. package/dist/{useSharePlatforms-ZWYDJZBy.mjs → useSharePlatforms-sXgVxsL5.mjs} +5 -5
  594. package/dist/{useSimplePageParam-DFKSEyiE.mjs → useSimplePageParam-BrtYXOUt.mjs} +1 -1
  595. package/dist/useSimplePageParam-CruL7rLG.mjs.map +1 -0
  596. package/dist/useSimplePageParam-SaBaPhb8.mjs.map +1 -0
  597. package/dist/{useTranslation-Dr7KU7Y4.mjs → useTranslation-BVQwv02Q.mjs} +9 -9
  598. package/dist/useTranslation-Bf2zP_6C.mjs.map +1 -0
  599. package/dist/useTranslation-BuhzZoI8.mjs.map +1 -0
  600. package/dist/useTranslation-OWqckMEl.mjs.map +1 -0
  601. package/dist/usefetchRadioData-D01ws733.mjs.map +1 -0
  602. package/dist/usefetchRadioData-DDRPoD4s.mjs.map +1 -0
  603. package/dist/{usefetchRadioData-SLWfXkYt.mjs → usefetchRadioData-zyQNqiV3.mjs} +1 -1
  604. package/package.json +1 -1
  605. package/src/components/composable/useTranslation.ts +2 -2
  606. package/src/components/display/sharing/QrCode.vue +63 -64
  607. package/src/components/form/ClassicDatePicker.vue +32 -20
  608. package/src/components/form/OctopusMultiselect.vue +3 -4
  609. package/src/components/misc/ClassicPopover.vue +1 -1
  610. package/src/components/misc/player/video/PlayerVideoHls.vue +160 -159
  611. package/src/i18n.ts +38 -29
  612. package/tests/components/form/ClassicDatePicker.spec.ts +32 -0
  613. package/tests/components/form/OctopusMultiselect.spec.ts +5 -4
  614. package/dist/ClassicDatePicker-B7UA9CqR.mjs +0 -187
  615. package/dist/QrCode-DuScZ7PD.mjs +0 -105
@@ -0,0 +1 @@
1
+ {"version":3,"file":"PlaylistPage-BwF2VdGb.mjs","names":["displayHelper","_resolveDirective","_openBlock","_createElementBlock","_Fragment","_createBlock","_createCommentVNode","_createElementVNode","_normalizeClass","_renderSlot","_withDirectives","_toDisplayString","_normalizeProps","_guardReactiveProps","_createVNode","_sfc_main"],"sources":["../src/components/pages/PlaylistPage.vue","../src/components/pages/PlaylistPage.vue"],"sourcesContent":["<template>\n <section class=\"page-box\">\n <template v-if=\"loaded && !error && playlist\">\n <PodcastmakerHeader\n v-if=\"isPodcastmaker\"\n :page-title=\"pageTitle\"\n :img-url=\"playlist.imageUrl\"\n />\n <div\n class=\"d-flex flex-column page-element\"\n :class=\"isPodcastmaker ? 'page-element-podcastmaker' : ''\"\n >\n <section class=\"module-box\">\n <slot\n v-if=\"editRight && !isPodcastmaker\"\n name=\"edit-box\"\n :playlist=\"playlist\"\n />\n\n <div class=\"mb-5 mt-3 description-text\">\n <img\n v-lazy=\"useProxyImageUrl(playlist.imageUrl, '250')\"\n width=\"250\"\n height=\"250\"\n aria-hidden=\"true\"\n alt=\"\"\n :title=\"t('Playlist name image', { name: name })\"\n class=\"img-box float-start me-3 mb-3\"\n />\n <div class=\"d-flex align-items-center justify-content-between\">\n <h2>{{ name }}</h2>\n <ShareAnonymous v-if=\"!editRight\" class=\"d-flex justify-content-end flex-grow-1\" :playlist=\"playlist\" :organisation-id=\"playlist.organisation?.id\"/>\n </div>\n <!-- eslint-disable vue/no-v-html -->\n <p class=\"html-wysiwyg-content\" v-html=\"urlify(description)\" />\n <!-- eslint-enable -->\n </div>\n <SubscribeButtons\n v-if=\"isPodcastmaker\"\n class=\"mt-4\"\n :content=\"playlist\"\n :window-width=\"1000\"\n :justify-center=\"false\"\n />\n </section>\n <SharePlayer\n v-if=\"!isPodcastmaker && editRight\"\n :playlist=\"playlist\"\n :organisation-id=\"authOrgaId\"\n />\n <ShareSocialsButtons\n v-if=\"state.podcastPage.ShareButtons\"\n :organisation-id=\"playlist.organisation.id\"\n />\n <section class=\"module-box\">\n <PodcastList \n v-if=\"isInit\"\n v-model:query=\"searchPattern\"\n :first=\"paginateFirst\"\n :size=\"ps\"\n :playlist=\"playlist\"\n />\n </section>\n </div>\n\n <slot name=\"bottom\" v-bind=\"{ playlist }\" />\n </template>\n <ClassicLoading\n :loading-text=\"!loaded ? t('Loading content ...') : undefined\"\n :error-text=\"error ? t(`Playlist doesn't exist`) : undefined\"\n />\n </section>\n</template>\n\n<script setup lang=\"ts\">\nimport { useGeneralStore } from \"../../stores/GeneralStore\";\nimport { useAuthStore } from \"../../stores/AuthStore\";\nimport {useOrgaComputed} from \"../composable/useOrgaComputed\";\nimport {useSeoTitleUrl} from \"../composable/route/useSeoTitleUrl\";\nimport ClassicLoading from \"../form/ClassicLoading.vue\";\nimport PodcastList from \"../display/playlist/PodcastList.vue\";\nimport { useFilterStore } from \"../../stores/FilterStore\";\nimport { state } from \"../../stores/ParamSdkStore\";\nimport displayHelper from \"../../helper/displayHelper\";\nimport {useImageProxy} from \"../composable/useImageProxy\";\nimport {useErrorHandler} from \"../composable/useErrorHandler\";\nimport { Playlist } from \"@/stores/class/general/playlist\";\nimport {defineAsyncComponent, ref, Ref, computed, watch, onBeforeUnmount } from \"vue\";\nimport { AxiosError } from \"axios\";\nimport { useI18n } from \"vue-i18n\";\nimport { useRoute } from \"vue-router\";\nimport { useSimplePageParam } from \"../composable/route/useSimplePageParam\";\nimport { playlistApi } from \"../../api/playlistApi\";\n\nimport SubscribeButtons from \"../display/sharing/SubscribeButtons.vue\"; \nconst ShareSocialsButtons = defineAsyncComponent(\n () => import(\"../display/sharing/ShareSocialsButtons.vue\"),\n);\nconst SharePlayer = defineAsyncComponent(\n () => import(\"../display/sharing/SharePlayer.vue\"),\n);\nconst PodcastmakerHeader = defineAsyncComponent(\n () => import(\"../display/podcastmaker/PodcastmakerHeader.vue\"),\n);\nconst ShareAnonymous = defineAsyncComponent(() => import(\"../display/sharing/ShareAnonymous.vue\"));\n\n\n//Props\nconst props = defineProps({\n playlistId: { default: undefined, type: Number },\n pr: { default: 0, type: Number },\n ps: { default: 30, type: Number },\n routeQuery: { default: \"\", type: String },\n});\n\n\n//Data \nconst loaded = ref(false);\nconst error = ref(false);\nconst playlist : Ref<Playlist | undefined> = ref(undefined);\n\n\n//Composables\nconst route = useRoute();\nconst { t } = useI18n();\nconst { useProxyImageUrl } = useImageProxy();\nconst { isPodcastmaker, isEditRights, authOrgaId } = useOrgaComputed();\nconst { updatePathParams } = useSeoTitleUrl();\nconst {handle403} = useErrorHandler();\nconst authStore = useAuthStore();\nconst filterStore = useFilterStore();\nconst generalStore = useGeneralStore();\nconst {\n searchPattern,\n paginateFirst,\n isInit\n} = useSimplePageParam(props, true);\n\n\n//Computed\nconst playlistRadio = computed(() =>{\n return (\n \"AMBIANCE\" === playlist.value?.ambianceType ||\n \"AMBIANCE_PROGRAMMED\" === playlist.value?.ambianceType\n );\n});\nconst pageTitle = computed(() =>playlistRadio.value? t(\"Mix of episodes\"): t(\"Playlist\"));\nconst name = computed(() =>playlist.value?.title ?? \"\");\nconst description = computed(() =>playlist.value?.description ?? \"\");\nconst editRight = computed(() =>{\n return isEditRights(\n playlist.value?.organisation?.id,\n authStore.isRolePlaylists,\n );\n});\n\n\n//Watch\nwatch(()=>props.playlistId, () => {getPlaylistDetails()}, {immediate: true});\n\n\nonBeforeUnmount(() => {\n generalStore.contentToDisplayUpdate(null);\n});\n\n\n//Methods\nfunction urlify(text:string|undefined){\n return displayHelper.urlify(text);\n}\nfunction initError(): void {\n error.value = true;\n loaded.value = true;\n}\nasync function getPlaylistDetails(): Promise<void> {\n try {\n loaded.value = false;\n error.value = false;\n playlist.value = await playlistApi.get(props.playlistId);\n filterStore.updateOrgaIfNecessary(playlist.value.organisation?.id);\n if (\n (!editRight.value && playlistRadio.value) ||\n (\"PUBLIC\" !== playlist.value.organisation?.privacy &&\n filterStore.filterOrgaId !== playlist.value.organisation?.id &&\n route.query.productor !== playlist.value.organisation?.id)\n ) {\n initError();\n return;\n }\n generalStore.contentToDisplayUpdate(playlist.value);\n updatePathParams(playlist.value.title);\n } catch (error) {\n handle403(error as AxiosError);\n initError();\n }\n loaded.value = true;\n}\n\n</script>\n","<template>\n <section class=\"page-box\">\n <template v-if=\"loaded && !error && playlist\">\n <PodcastmakerHeader\n v-if=\"isPodcastmaker\"\n :page-title=\"pageTitle\"\n :img-url=\"playlist.imageUrl\"\n />\n <div\n class=\"d-flex flex-column page-element\"\n :class=\"isPodcastmaker ? 'page-element-podcastmaker' : ''\"\n >\n <section class=\"module-box\">\n <slot\n v-if=\"editRight && !isPodcastmaker\"\n name=\"edit-box\"\n :playlist=\"playlist\"\n />\n\n <div class=\"mb-5 mt-3 description-text\">\n <img\n v-lazy=\"useProxyImageUrl(playlist.imageUrl, '250')\"\n width=\"250\"\n height=\"250\"\n aria-hidden=\"true\"\n alt=\"\"\n :title=\"t('Playlist name image', { name: name })\"\n class=\"img-box float-start me-3 mb-3\"\n />\n <div class=\"d-flex align-items-center justify-content-between\">\n <h2>{{ name }}</h2>\n <ShareAnonymous v-if=\"!editRight\" class=\"d-flex justify-content-end flex-grow-1\" :playlist=\"playlist\" :organisation-id=\"playlist.organisation?.id\"/>\n </div>\n <!-- eslint-disable vue/no-v-html -->\n <p class=\"html-wysiwyg-content\" v-html=\"urlify(description)\" />\n <!-- eslint-enable -->\n </div>\n <SubscribeButtons\n v-if=\"isPodcastmaker\"\n class=\"mt-4\"\n :content=\"playlist\"\n :window-width=\"1000\"\n :justify-center=\"false\"\n />\n </section>\n <SharePlayer\n v-if=\"!isPodcastmaker && editRight\"\n :playlist=\"playlist\"\n :organisation-id=\"authOrgaId\"\n />\n <ShareSocialsButtons\n v-if=\"state.podcastPage.ShareButtons\"\n :organisation-id=\"playlist.organisation.id\"\n />\n <section class=\"module-box\">\n <PodcastList \n v-if=\"isInit\"\n v-model:query=\"searchPattern\"\n :first=\"paginateFirst\"\n :size=\"ps\"\n :playlist=\"playlist\"\n />\n </section>\n </div>\n\n <slot name=\"bottom\" v-bind=\"{ playlist }\" />\n </template>\n <ClassicLoading\n :loading-text=\"!loaded ? t('Loading content ...') : undefined\"\n :error-text=\"error ? t(`Playlist doesn't exist`) : undefined\"\n />\n </section>\n</template>\n\n<script setup lang=\"ts\">\nimport { useGeneralStore } from \"../../stores/GeneralStore\";\nimport { useAuthStore } from \"../../stores/AuthStore\";\nimport {useOrgaComputed} from \"../composable/useOrgaComputed\";\nimport {useSeoTitleUrl} from \"../composable/route/useSeoTitleUrl\";\nimport ClassicLoading from \"../form/ClassicLoading.vue\";\nimport PodcastList from \"../display/playlist/PodcastList.vue\";\nimport { useFilterStore } from \"../../stores/FilterStore\";\nimport { state } from \"../../stores/ParamSdkStore\";\nimport displayHelper from \"../../helper/displayHelper\";\nimport {useImageProxy} from \"../composable/useImageProxy\";\nimport {useErrorHandler} from \"../composable/useErrorHandler\";\nimport { Playlist } from \"@/stores/class/general/playlist\";\nimport {defineAsyncComponent, ref, Ref, computed, watch, onBeforeUnmount } from \"vue\";\nimport { AxiosError } from \"axios\";\nimport { useI18n } from \"vue-i18n\";\nimport { useRoute } from \"vue-router\";\nimport { useSimplePageParam } from \"../composable/route/useSimplePageParam\";\nimport { playlistApi } from \"../../api/playlistApi\";\n\nimport SubscribeButtons from \"../display/sharing/SubscribeButtons.vue\"; \nconst ShareSocialsButtons = defineAsyncComponent(\n () => import(\"../display/sharing/ShareSocialsButtons.vue\"),\n);\nconst SharePlayer = defineAsyncComponent(\n () => import(\"../display/sharing/SharePlayer.vue\"),\n);\nconst PodcastmakerHeader = defineAsyncComponent(\n () => import(\"../display/podcastmaker/PodcastmakerHeader.vue\"),\n);\nconst ShareAnonymous = defineAsyncComponent(() => import(\"../display/sharing/ShareAnonymous.vue\"));\n\n\n//Props\nconst props = defineProps({\n playlistId: { default: undefined, type: Number },\n pr: { default: 0, type: Number },\n ps: { default: 30, type: Number },\n routeQuery: { default: \"\", type: String },\n});\n\n\n//Data \nconst loaded = ref(false);\nconst error = ref(false);\nconst playlist : Ref<Playlist | undefined> = ref(undefined);\n\n\n//Composables\nconst route = useRoute();\nconst { t } = useI18n();\nconst { useProxyImageUrl } = useImageProxy();\nconst { isPodcastmaker, isEditRights, authOrgaId } = useOrgaComputed();\nconst { updatePathParams } = useSeoTitleUrl();\nconst {handle403} = useErrorHandler();\nconst authStore = useAuthStore();\nconst filterStore = useFilterStore();\nconst generalStore = useGeneralStore();\nconst {\n searchPattern,\n paginateFirst,\n isInit\n} = useSimplePageParam(props, true);\n\n\n//Computed\nconst playlistRadio = computed(() =>{\n return (\n \"AMBIANCE\" === playlist.value?.ambianceType ||\n \"AMBIANCE_PROGRAMMED\" === playlist.value?.ambianceType\n );\n});\nconst pageTitle = computed(() =>playlistRadio.value? t(\"Mix of episodes\"): t(\"Playlist\"));\nconst name = computed(() =>playlist.value?.title ?? \"\");\nconst description = computed(() =>playlist.value?.description ?? \"\");\nconst editRight = computed(() =>{\n return isEditRights(\n playlist.value?.organisation?.id,\n authStore.isRolePlaylists,\n );\n});\n\n\n//Watch\nwatch(()=>props.playlistId, () => {getPlaylistDetails()}, {immediate: true});\n\n\nonBeforeUnmount(() => {\n generalStore.contentToDisplayUpdate(null);\n});\n\n\n//Methods\nfunction urlify(text:string|undefined){\n return displayHelper.urlify(text);\n}\nfunction initError(): void {\n error.value = true;\n loaded.value = true;\n}\nasync function getPlaylistDetails(): Promise<void> {\n try {\n loaded.value = false;\n error.value = false;\n playlist.value = await playlistApi.get(props.playlistId);\n filterStore.updateOrgaIfNecessary(playlist.value.organisation?.id);\n if (\n (!editRight.value && playlistRadio.value) ||\n (\"PUBLIC\" !== playlist.value.organisation?.privacy &&\n filterStore.filterOrgaId !== playlist.value.organisation?.id &&\n route.query.productor !== playlist.value.organisation?.id)\n ) {\n initError();\n return;\n }\n generalStore.contentToDisplayUpdate(playlist.value);\n updatePathParams(playlist.value.title);\n } catch (error) {\n handle403(error as AxiosError);\n initError();\n }\n loaded.value = true;\n}\n\n</script>\n"],"mappings":"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"}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"PlaylistPage-CINwx3zE.mjs","names":["displayHelper","_resolveDirective","_openBlock","_createElementBlock","_Fragment","_createBlock","_createCommentVNode","_createElementVNode","_normalizeClass","_renderSlot","_withDirectives","_toDisplayString","_normalizeProps","_guardReactiveProps","_createVNode","_sfc_main"],"sources":["../src/components/pages/PlaylistPage.vue","../src/components/pages/PlaylistPage.vue"],"sourcesContent":["<template>\n <section class=\"page-box\">\n <template v-if=\"loaded && !error && playlist\">\n <PodcastmakerHeader\n v-if=\"isPodcastmaker\"\n :page-title=\"pageTitle\"\n :img-url=\"playlist.imageUrl\"\n />\n <div\n class=\"d-flex flex-column page-element\"\n :class=\"isPodcastmaker ? 'page-element-podcastmaker' : ''\"\n >\n <section class=\"module-box\">\n <slot\n v-if=\"editRight && !isPodcastmaker\"\n name=\"edit-box\"\n :playlist=\"playlist\"\n />\n\n <div class=\"mb-5 mt-3 description-text\">\n <img\n v-lazy=\"useProxyImageUrl(playlist.imageUrl, '250')\"\n width=\"250\"\n height=\"250\"\n aria-hidden=\"true\"\n alt=\"\"\n :title=\"t('Playlist name image', { name: name })\"\n class=\"img-box float-start me-3 mb-3\"\n />\n <div class=\"d-flex align-items-center justify-content-between\">\n <h2>{{ name }}</h2>\n <ShareAnonymous v-if=\"!editRight\" class=\"d-flex justify-content-end flex-grow-1\" :playlist=\"playlist\" :organisation-id=\"playlist.organisation?.id\"/>\n </div>\n <!-- eslint-disable vue/no-v-html -->\n <p class=\"html-wysiwyg-content\" v-html=\"urlify(description)\" />\n <!-- eslint-enable -->\n </div>\n <SubscribeButtons\n v-if=\"isPodcastmaker\"\n class=\"mt-4\"\n :content=\"playlist\"\n :window-width=\"1000\"\n :justify-center=\"false\"\n />\n </section>\n <SharePlayer\n v-if=\"!isPodcastmaker && editRight\"\n :playlist=\"playlist\"\n :organisation-id=\"authOrgaId\"\n />\n <ShareSocialsButtons\n v-if=\"state.podcastPage.ShareButtons\"\n :organisation-id=\"playlist.organisation.id\"\n />\n <section class=\"module-box\">\n <PodcastList \n v-if=\"isInit\"\n v-model:query=\"searchPattern\"\n :first=\"paginateFirst\"\n :size=\"ps\"\n :playlist=\"playlist\"\n />\n </section>\n </div>\n\n <slot name=\"bottom\" v-bind=\"{ playlist }\" />\n </template>\n <ClassicLoading\n :loading-text=\"!loaded ? t('Loading content ...') : undefined\"\n :error-text=\"error ? t(`Playlist doesn't exist`) : undefined\"\n />\n </section>\n</template>\n\n<script setup lang=\"ts\">\nimport { useGeneralStore } from \"../../stores/GeneralStore\";\nimport { useAuthStore } from \"../../stores/AuthStore\";\nimport {useOrgaComputed} from \"../composable/useOrgaComputed\";\nimport {useSeoTitleUrl} from \"../composable/route/useSeoTitleUrl\";\nimport ClassicLoading from \"../form/ClassicLoading.vue\";\nimport PodcastList from \"../display/playlist/PodcastList.vue\";\nimport { useFilterStore } from \"../../stores/FilterStore\";\nimport { state } from \"../../stores/ParamSdkStore\";\nimport displayHelper from \"../../helper/displayHelper\";\nimport {useImageProxy} from \"../composable/useImageProxy\";\nimport {useErrorHandler} from \"../composable/useErrorHandler\";\nimport { Playlist } from \"@/stores/class/general/playlist\";\nimport {defineAsyncComponent, ref, Ref, computed, watch, onBeforeUnmount } from \"vue\";\nimport { AxiosError } from \"axios\";\nimport { useI18n } from \"vue-i18n\";\nimport { useRoute } from \"vue-router\";\nimport { useSimplePageParam } from \"../composable/route/useSimplePageParam\";\nimport { playlistApi } from \"../../api/playlistApi\";\n\nimport SubscribeButtons from \"../display/sharing/SubscribeButtons.vue\"; \nconst ShareSocialsButtons = defineAsyncComponent(\n () => import(\"../display/sharing/ShareSocialsButtons.vue\"),\n);\nconst SharePlayer = defineAsyncComponent(\n () => import(\"../display/sharing/SharePlayer.vue\"),\n);\nconst PodcastmakerHeader = defineAsyncComponent(\n () => import(\"../display/podcastmaker/PodcastmakerHeader.vue\"),\n);\nconst ShareAnonymous = defineAsyncComponent(() => import(\"../display/sharing/ShareAnonymous.vue\"));\n\n\n//Props\nconst props = defineProps({\n playlistId: { default: undefined, type: Number },\n pr: { default: 0, type: Number },\n ps: { default: 30, type: Number },\n routeQuery: { default: \"\", type: String },\n});\n\n\n//Data \nconst loaded = ref(false);\nconst error = ref(false);\nconst playlist : Ref<Playlist | undefined> = ref(undefined);\n\n\n//Composables\nconst route = useRoute();\nconst { t } = useI18n();\nconst { useProxyImageUrl } = useImageProxy();\nconst { isPodcastmaker, isEditRights, authOrgaId } = useOrgaComputed();\nconst { updatePathParams } = useSeoTitleUrl();\nconst {handle403} = useErrorHandler();\nconst authStore = useAuthStore();\nconst filterStore = useFilterStore();\nconst generalStore = useGeneralStore();\nconst {\n searchPattern,\n paginateFirst,\n isInit\n} = useSimplePageParam(props, true);\n\n\n//Computed\nconst playlistRadio = computed(() =>{\n return (\n \"AMBIANCE\" === playlist.value?.ambianceType ||\n \"AMBIANCE_PROGRAMMED\" === playlist.value?.ambianceType\n );\n});\nconst pageTitle = computed(() =>playlistRadio.value? t(\"Mix of episodes\"): t(\"Playlist\"));\nconst name = computed(() =>playlist.value?.title ?? \"\");\nconst description = computed(() =>playlist.value?.description ?? \"\");\nconst editRight = computed(() =>{\n return isEditRights(\n playlist.value?.organisation?.id,\n authStore.isRolePlaylists,\n );\n});\n\n\n//Watch\nwatch(()=>props.playlistId, () => {getPlaylistDetails()}, {immediate: true});\n\n\nonBeforeUnmount(() => {\n generalStore.contentToDisplayUpdate(null);\n});\n\n\n//Methods\nfunction urlify(text:string|undefined){\n return displayHelper.urlify(text);\n}\nfunction initError(): void {\n error.value = true;\n loaded.value = true;\n}\nasync function getPlaylistDetails(): Promise<void> {\n try {\n loaded.value = false;\n error.value = false;\n playlist.value = await playlistApi.get(props.playlistId);\n filterStore.updateOrgaIfNecessary(playlist.value.organisation?.id);\n if (\n (!editRight.value && playlistRadio.value) ||\n (\"PUBLIC\" !== playlist.value.organisation?.privacy &&\n filterStore.filterOrgaId !== playlist.value.organisation?.id &&\n route.query.productor !== playlist.value.organisation?.id)\n ) {\n initError();\n return;\n }\n generalStore.contentToDisplayUpdate(playlist.value);\n updatePathParams(playlist.value.title);\n } catch (error) {\n handle403(error as AxiosError);\n initError();\n }\n loaded.value = true;\n}\n\n</script>\n","<template>\n <section class=\"page-box\">\n <template v-if=\"loaded && !error && playlist\">\n <PodcastmakerHeader\n v-if=\"isPodcastmaker\"\n :page-title=\"pageTitle\"\n :img-url=\"playlist.imageUrl\"\n />\n <div\n class=\"d-flex flex-column page-element\"\n :class=\"isPodcastmaker ? 'page-element-podcastmaker' : ''\"\n >\n <section class=\"module-box\">\n <slot\n v-if=\"editRight && !isPodcastmaker\"\n name=\"edit-box\"\n :playlist=\"playlist\"\n />\n\n <div class=\"mb-5 mt-3 description-text\">\n <img\n v-lazy=\"useProxyImageUrl(playlist.imageUrl, '250')\"\n width=\"250\"\n height=\"250\"\n aria-hidden=\"true\"\n alt=\"\"\n :title=\"t('Playlist name image', { name: name })\"\n class=\"img-box float-start me-3 mb-3\"\n />\n <div class=\"d-flex align-items-center justify-content-between\">\n <h2>{{ name }}</h2>\n <ShareAnonymous v-if=\"!editRight\" class=\"d-flex justify-content-end flex-grow-1\" :playlist=\"playlist\" :organisation-id=\"playlist.organisation?.id\"/>\n </div>\n <!-- eslint-disable vue/no-v-html -->\n <p class=\"html-wysiwyg-content\" v-html=\"urlify(description)\" />\n <!-- eslint-enable -->\n </div>\n <SubscribeButtons\n v-if=\"isPodcastmaker\"\n class=\"mt-4\"\n :content=\"playlist\"\n :window-width=\"1000\"\n :justify-center=\"false\"\n />\n </section>\n <SharePlayer\n v-if=\"!isPodcastmaker && editRight\"\n :playlist=\"playlist\"\n :organisation-id=\"authOrgaId\"\n />\n <ShareSocialsButtons\n v-if=\"state.podcastPage.ShareButtons\"\n :organisation-id=\"playlist.organisation.id\"\n />\n <section class=\"module-box\">\n <PodcastList \n v-if=\"isInit\"\n v-model:query=\"searchPattern\"\n :first=\"paginateFirst\"\n :size=\"ps\"\n :playlist=\"playlist\"\n />\n </section>\n </div>\n\n <slot name=\"bottom\" v-bind=\"{ playlist }\" />\n </template>\n <ClassicLoading\n :loading-text=\"!loaded ? t('Loading content ...') : undefined\"\n :error-text=\"error ? t(`Playlist doesn't exist`) : undefined\"\n />\n </section>\n</template>\n\n<script setup lang=\"ts\">\nimport { useGeneralStore } from \"../../stores/GeneralStore\";\nimport { useAuthStore } from \"../../stores/AuthStore\";\nimport {useOrgaComputed} from \"../composable/useOrgaComputed\";\nimport {useSeoTitleUrl} from \"../composable/route/useSeoTitleUrl\";\nimport ClassicLoading from \"../form/ClassicLoading.vue\";\nimport PodcastList from \"../display/playlist/PodcastList.vue\";\nimport { useFilterStore } from \"../../stores/FilterStore\";\nimport { state } from \"../../stores/ParamSdkStore\";\nimport displayHelper from \"../../helper/displayHelper\";\nimport {useImageProxy} from \"../composable/useImageProxy\";\nimport {useErrorHandler} from \"../composable/useErrorHandler\";\nimport { Playlist } from \"@/stores/class/general/playlist\";\nimport {defineAsyncComponent, ref, Ref, computed, watch, onBeforeUnmount } from \"vue\";\nimport { AxiosError } from \"axios\";\nimport { useI18n } from \"vue-i18n\";\nimport { useRoute } from \"vue-router\";\nimport { useSimplePageParam } from \"../composable/route/useSimplePageParam\";\nimport { playlistApi } from \"../../api/playlistApi\";\n\nimport SubscribeButtons from \"../display/sharing/SubscribeButtons.vue\"; \nconst ShareSocialsButtons = defineAsyncComponent(\n () => import(\"../display/sharing/ShareSocialsButtons.vue\"),\n);\nconst SharePlayer = defineAsyncComponent(\n () => import(\"../display/sharing/SharePlayer.vue\"),\n);\nconst PodcastmakerHeader = defineAsyncComponent(\n () => import(\"../display/podcastmaker/PodcastmakerHeader.vue\"),\n);\nconst ShareAnonymous = defineAsyncComponent(() => import(\"../display/sharing/ShareAnonymous.vue\"));\n\n\n//Props\nconst props = defineProps({\n playlistId: { default: undefined, type: Number },\n pr: { default: 0, type: Number },\n ps: { default: 30, type: Number },\n routeQuery: { default: \"\", type: String },\n});\n\n\n//Data \nconst loaded = ref(false);\nconst error = ref(false);\nconst playlist : Ref<Playlist | undefined> = ref(undefined);\n\n\n//Composables\nconst route = useRoute();\nconst { t } = useI18n();\nconst { useProxyImageUrl } = useImageProxy();\nconst { isPodcastmaker, isEditRights, authOrgaId } = useOrgaComputed();\nconst { updatePathParams } = useSeoTitleUrl();\nconst {handle403} = useErrorHandler();\nconst authStore = useAuthStore();\nconst filterStore = useFilterStore();\nconst generalStore = useGeneralStore();\nconst {\n searchPattern,\n paginateFirst,\n isInit\n} = useSimplePageParam(props, true);\n\n\n//Computed\nconst playlistRadio = computed(() =>{\n return (\n \"AMBIANCE\" === playlist.value?.ambianceType ||\n \"AMBIANCE_PROGRAMMED\" === playlist.value?.ambianceType\n );\n});\nconst pageTitle = computed(() =>playlistRadio.value? t(\"Mix of episodes\"): t(\"Playlist\"));\nconst name = computed(() =>playlist.value?.title ?? \"\");\nconst description = computed(() =>playlist.value?.description ?? \"\");\nconst editRight = computed(() =>{\n return isEditRights(\n playlist.value?.organisation?.id,\n authStore.isRolePlaylists,\n );\n});\n\n\n//Watch\nwatch(()=>props.playlistId, () => {getPlaylistDetails()}, {immediate: true});\n\n\nonBeforeUnmount(() => {\n generalStore.contentToDisplayUpdate(null);\n});\n\n\n//Methods\nfunction urlify(text:string|undefined){\n return displayHelper.urlify(text);\n}\nfunction initError(): void {\n error.value = true;\n loaded.value = true;\n}\nasync function getPlaylistDetails(): Promise<void> {\n try {\n loaded.value = false;\n error.value = false;\n playlist.value = await playlistApi.get(props.playlistId);\n filterStore.updateOrgaIfNecessary(playlist.value.organisation?.id);\n if (\n (!editRight.value && playlistRadio.value) ||\n (\"PUBLIC\" !== playlist.value.organisation?.privacy &&\n filterStore.filterOrgaId !== playlist.value.organisation?.id &&\n route.query.productor !== playlist.value.organisation?.id)\n ) {\n initError();\n return;\n }\n generalStore.contentToDisplayUpdate(playlist.value);\n updatePathParams(playlist.value.title);\n } catch (error) {\n handle403(error as AxiosError);\n initError();\n }\n loaded.value = true;\n}\n\n</script>\n"],"mappings":"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"}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"PlaylistPage-CPB647jC.mjs","names":["displayHelper","_resolveDirective","_openBlock","_createElementBlock","_Fragment","_createBlock","_createCommentVNode","_createElementVNode","_normalizeClass","_renderSlot","_withDirectives","_toDisplayString","_normalizeProps","_guardReactiveProps","_createVNode","_sfc_main"],"sources":["../src/components/pages/PlaylistPage.vue","../src/components/pages/PlaylistPage.vue"],"sourcesContent":["<template>\n <section class=\"page-box\">\n <template v-if=\"loaded && !error && playlist\">\n <PodcastmakerHeader\n v-if=\"isPodcastmaker\"\n :page-title=\"pageTitle\"\n :img-url=\"playlist.imageUrl\"\n />\n <div\n class=\"d-flex flex-column page-element\"\n :class=\"isPodcastmaker ? 'page-element-podcastmaker' : ''\"\n >\n <section class=\"module-box\">\n <slot\n v-if=\"editRight && !isPodcastmaker\"\n name=\"edit-box\"\n :playlist=\"playlist\"\n />\n\n <div class=\"mb-5 mt-3 description-text\">\n <img\n v-lazy=\"useProxyImageUrl(playlist.imageUrl, '250')\"\n width=\"250\"\n height=\"250\"\n aria-hidden=\"true\"\n alt=\"\"\n :title=\"t('Playlist name image', { name: name })\"\n class=\"img-box float-start me-3 mb-3\"\n />\n <div class=\"d-flex align-items-center justify-content-between\">\n <h2>{{ name }}</h2>\n <ShareAnonymous v-if=\"!editRight\" class=\"d-flex justify-content-end flex-grow-1\" :playlist=\"playlist\" :organisation-id=\"playlist.organisation?.id\"/>\n </div>\n <!-- eslint-disable vue/no-v-html -->\n <p class=\"html-wysiwyg-content\" v-html=\"urlify(description)\" />\n <!-- eslint-enable -->\n </div>\n <SubscribeButtons\n v-if=\"isPodcastmaker\"\n class=\"mt-4\"\n :content=\"playlist\"\n :window-width=\"1000\"\n :justify-center=\"false\"\n />\n </section>\n <SharePlayer\n v-if=\"!isPodcastmaker && editRight\"\n :playlist=\"playlist\"\n :organisation-id=\"authOrgaId\"\n />\n <ShareSocialsButtons\n v-if=\"state.podcastPage.ShareButtons\"\n :organisation-id=\"playlist.organisation.id\"\n />\n <section class=\"module-box\">\n <PodcastList \n v-if=\"isInit\"\n v-model:query=\"searchPattern\"\n :first=\"paginateFirst\"\n :size=\"ps\"\n :playlist=\"playlist\"\n />\n </section>\n </div>\n\n <slot name=\"bottom\" v-bind=\"{ playlist }\" />\n </template>\n <ClassicLoading\n :loading-text=\"!loaded ? t('Loading content ...') : undefined\"\n :error-text=\"error ? t(`Playlist doesn't exist`) : undefined\"\n />\n </section>\n</template>\n\n<script setup lang=\"ts\">\nimport { useGeneralStore } from \"../../stores/GeneralStore\";\nimport { useAuthStore } from \"../../stores/AuthStore\";\nimport {useOrgaComputed} from \"../composable/useOrgaComputed\";\nimport {useSeoTitleUrl} from \"../composable/route/useSeoTitleUrl\";\nimport ClassicLoading from \"../form/ClassicLoading.vue\";\nimport PodcastList from \"../display/playlist/PodcastList.vue\";\nimport { useFilterStore } from \"../../stores/FilterStore\";\nimport { state } from \"../../stores/ParamSdkStore\";\nimport displayHelper from \"../../helper/displayHelper\";\nimport {useImageProxy} from \"../composable/useImageProxy\";\nimport {useErrorHandler} from \"../composable/useErrorHandler\";\nimport { Playlist } from \"@/stores/class/general/playlist\";\nimport {defineAsyncComponent, ref, Ref, computed, watch, onBeforeUnmount } from \"vue\";\nimport { AxiosError } from \"axios\";\nimport { useI18n } from \"vue-i18n\";\nimport { useRoute } from \"vue-router\";\nimport { useSimplePageParam } from \"../composable/route/useSimplePageParam\";\nimport { playlistApi } from \"../../api/playlistApi\";\n\nimport SubscribeButtons from \"../display/sharing/SubscribeButtons.vue\"; \nconst ShareSocialsButtons = defineAsyncComponent(\n () => import(\"../display/sharing/ShareSocialsButtons.vue\"),\n);\nconst SharePlayer = defineAsyncComponent(\n () => import(\"../display/sharing/SharePlayer.vue\"),\n);\nconst PodcastmakerHeader = defineAsyncComponent(\n () => import(\"../display/podcastmaker/PodcastmakerHeader.vue\"),\n);\nconst ShareAnonymous = defineAsyncComponent(() => import(\"../display/sharing/ShareAnonymous.vue\"));\n\n\n//Props\nconst props = defineProps({\n playlistId: { default: undefined, type: Number },\n pr: { default: 0, type: Number },\n ps: { default: 30, type: Number },\n routeQuery: { default: \"\", type: String },\n});\n\n\n//Data \nconst loaded = ref(false);\nconst error = ref(false);\nconst playlist : Ref<Playlist | undefined> = ref(undefined);\n\n\n//Composables\nconst route = useRoute();\nconst { t } = useI18n();\nconst { useProxyImageUrl } = useImageProxy();\nconst { isPodcastmaker, isEditRights, authOrgaId } = useOrgaComputed();\nconst { updatePathParams } = useSeoTitleUrl();\nconst {handle403} = useErrorHandler();\nconst authStore = useAuthStore();\nconst filterStore = useFilterStore();\nconst generalStore = useGeneralStore();\nconst {\n searchPattern,\n paginateFirst,\n isInit\n} = useSimplePageParam(props, true);\n\n\n//Computed\nconst playlistRadio = computed(() =>{\n return (\n \"AMBIANCE\" === playlist.value?.ambianceType ||\n \"AMBIANCE_PROGRAMMED\" === playlist.value?.ambianceType\n );\n});\nconst pageTitle = computed(() =>playlistRadio.value? t(\"Mix of episodes\"): t(\"Playlist\"));\nconst name = computed(() =>playlist.value?.title ?? \"\");\nconst description = computed(() =>playlist.value?.description ?? \"\");\nconst editRight = computed(() =>{\n return isEditRights(\n playlist.value?.organisation?.id,\n authStore.isRolePlaylists,\n );\n});\n\n\n//Watch\nwatch(()=>props.playlistId, () => {getPlaylistDetails()}, {immediate: true});\n\n\nonBeforeUnmount(() => {\n generalStore.contentToDisplayUpdate(null);\n});\n\n\n//Methods\nfunction urlify(text:string|undefined){\n return displayHelper.urlify(text);\n}\nfunction initError(): void {\n error.value = true;\n loaded.value = true;\n}\nasync function getPlaylistDetails(): Promise<void> {\n try {\n loaded.value = false;\n error.value = false;\n playlist.value = await playlistApi.get(props.playlistId);\n filterStore.updateOrgaIfNecessary(playlist.value.organisation?.id);\n if (\n (!editRight.value && playlistRadio.value) ||\n (\"PUBLIC\" !== playlist.value.organisation?.privacy &&\n filterStore.filterOrgaId !== playlist.value.organisation?.id &&\n route.query.productor !== playlist.value.organisation?.id)\n ) {\n initError();\n return;\n }\n generalStore.contentToDisplayUpdate(playlist.value);\n updatePathParams(playlist.value.title);\n } catch (error) {\n handle403(error as AxiosError);\n initError();\n }\n loaded.value = true;\n}\n\n</script>\n","<template>\n <section class=\"page-box\">\n <template v-if=\"loaded && !error && playlist\">\n <PodcastmakerHeader\n v-if=\"isPodcastmaker\"\n :page-title=\"pageTitle\"\n :img-url=\"playlist.imageUrl\"\n />\n <div\n class=\"d-flex flex-column page-element\"\n :class=\"isPodcastmaker ? 'page-element-podcastmaker' : ''\"\n >\n <section class=\"module-box\">\n <slot\n v-if=\"editRight && !isPodcastmaker\"\n name=\"edit-box\"\n :playlist=\"playlist\"\n />\n\n <div class=\"mb-5 mt-3 description-text\">\n <img\n v-lazy=\"useProxyImageUrl(playlist.imageUrl, '250')\"\n width=\"250\"\n height=\"250\"\n aria-hidden=\"true\"\n alt=\"\"\n :title=\"t('Playlist name image', { name: name })\"\n class=\"img-box float-start me-3 mb-3\"\n />\n <div class=\"d-flex align-items-center justify-content-between\">\n <h2>{{ name }}</h2>\n <ShareAnonymous v-if=\"!editRight\" class=\"d-flex justify-content-end flex-grow-1\" :playlist=\"playlist\" :organisation-id=\"playlist.organisation?.id\"/>\n </div>\n <!-- eslint-disable vue/no-v-html -->\n <p class=\"html-wysiwyg-content\" v-html=\"urlify(description)\" />\n <!-- eslint-enable -->\n </div>\n <SubscribeButtons\n v-if=\"isPodcastmaker\"\n class=\"mt-4\"\n :content=\"playlist\"\n :window-width=\"1000\"\n :justify-center=\"false\"\n />\n </section>\n <SharePlayer\n v-if=\"!isPodcastmaker && editRight\"\n :playlist=\"playlist\"\n :organisation-id=\"authOrgaId\"\n />\n <ShareSocialsButtons\n v-if=\"state.podcastPage.ShareButtons\"\n :organisation-id=\"playlist.organisation.id\"\n />\n <section class=\"module-box\">\n <PodcastList \n v-if=\"isInit\"\n v-model:query=\"searchPattern\"\n :first=\"paginateFirst\"\n :size=\"ps\"\n :playlist=\"playlist\"\n />\n </section>\n </div>\n\n <slot name=\"bottom\" v-bind=\"{ playlist }\" />\n </template>\n <ClassicLoading\n :loading-text=\"!loaded ? t('Loading content ...') : undefined\"\n :error-text=\"error ? t(`Playlist doesn't exist`) : undefined\"\n />\n </section>\n</template>\n\n<script setup lang=\"ts\">\nimport { useGeneralStore } from \"../../stores/GeneralStore\";\nimport { useAuthStore } from \"../../stores/AuthStore\";\nimport {useOrgaComputed} from \"../composable/useOrgaComputed\";\nimport {useSeoTitleUrl} from \"../composable/route/useSeoTitleUrl\";\nimport ClassicLoading from \"../form/ClassicLoading.vue\";\nimport PodcastList from \"../display/playlist/PodcastList.vue\";\nimport { useFilterStore } from \"../../stores/FilterStore\";\nimport { state } from \"../../stores/ParamSdkStore\";\nimport displayHelper from \"../../helper/displayHelper\";\nimport {useImageProxy} from \"../composable/useImageProxy\";\nimport {useErrorHandler} from \"../composable/useErrorHandler\";\nimport { Playlist } from \"@/stores/class/general/playlist\";\nimport {defineAsyncComponent, ref, Ref, computed, watch, onBeforeUnmount } from \"vue\";\nimport { AxiosError } from \"axios\";\nimport { useI18n } from \"vue-i18n\";\nimport { useRoute } from \"vue-router\";\nimport { useSimplePageParam } from \"../composable/route/useSimplePageParam\";\nimport { playlistApi } from \"../../api/playlistApi\";\n\nimport SubscribeButtons from \"../display/sharing/SubscribeButtons.vue\"; \nconst ShareSocialsButtons = defineAsyncComponent(\n () => import(\"../display/sharing/ShareSocialsButtons.vue\"),\n);\nconst SharePlayer = defineAsyncComponent(\n () => import(\"../display/sharing/SharePlayer.vue\"),\n);\nconst PodcastmakerHeader = defineAsyncComponent(\n () => import(\"../display/podcastmaker/PodcastmakerHeader.vue\"),\n);\nconst ShareAnonymous = defineAsyncComponent(() => import(\"../display/sharing/ShareAnonymous.vue\"));\n\n\n//Props\nconst props = defineProps({\n playlistId: { default: undefined, type: Number },\n pr: { default: 0, type: Number },\n ps: { default: 30, type: Number },\n routeQuery: { default: \"\", type: String },\n});\n\n\n//Data \nconst loaded = ref(false);\nconst error = ref(false);\nconst playlist : Ref<Playlist | undefined> = ref(undefined);\n\n\n//Composables\nconst route = useRoute();\nconst { t } = useI18n();\nconst { useProxyImageUrl } = useImageProxy();\nconst { isPodcastmaker, isEditRights, authOrgaId } = useOrgaComputed();\nconst { updatePathParams } = useSeoTitleUrl();\nconst {handle403} = useErrorHandler();\nconst authStore = useAuthStore();\nconst filterStore = useFilterStore();\nconst generalStore = useGeneralStore();\nconst {\n searchPattern,\n paginateFirst,\n isInit\n} = useSimplePageParam(props, true);\n\n\n//Computed\nconst playlistRadio = computed(() =>{\n return (\n \"AMBIANCE\" === playlist.value?.ambianceType ||\n \"AMBIANCE_PROGRAMMED\" === playlist.value?.ambianceType\n );\n});\nconst pageTitle = computed(() =>playlistRadio.value? t(\"Mix of episodes\"): t(\"Playlist\"));\nconst name = computed(() =>playlist.value?.title ?? \"\");\nconst description = computed(() =>playlist.value?.description ?? \"\");\nconst editRight = computed(() =>{\n return isEditRights(\n playlist.value?.organisation?.id,\n authStore.isRolePlaylists,\n );\n});\n\n\n//Watch\nwatch(()=>props.playlistId, () => {getPlaylistDetails()}, {immediate: true});\n\n\nonBeforeUnmount(() => {\n generalStore.contentToDisplayUpdate(null);\n});\n\n\n//Methods\nfunction urlify(text:string|undefined){\n return displayHelper.urlify(text);\n}\nfunction initError(): void {\n error.value = true;\n loaded.value = true;\n}\nasync function getPlaylistDetails(): Promise<void> {\n try {\n loaded.value = false;\n error.value = false;\n playlist.value = await playlistApi.get(props.playlistId);\n filterStore.updateOrgaIfNecessary(playlist.value.organisation?.id);\n if (\n (!editRight.value && playlistRadio.value) ||\n (\"PUBLIC\" !== playlist.value.organisation?.privacy &&\n filterStore.filterOrgaId !== playlist.value.organisation?.id &&\n route.query.productor !== playlist.value.organisation?.id)\n ) {\n initError();\n return;\n }\n generalStore.contentToDisplayUpdate(playlist.value);\n updatePathParams(playlist.value.title);\n } catch (error) {\n handle403(error as AxiosError);\n initError();\n }\n loaded.value = true;\n}\n\n</script>\n"],"mappings":"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"}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"PlaylistPage-DDzE5GQs.mjs","names":["displayHelper","_resolveDirective","_openBlock","_createElementBlock","_Fragment","_createBlock","_createCommentVNode","_createElementVNode","_normalizeClass","_renderSlot","_withDirectives","_toDisplayString","_normalizeProps","_guardReactiveProps","_createVNode","_sfc_main"],"sources":["../src/components/pages/PlaylistPage.vue","../src/components/pages/PlaylistPage.vue"],"sourcesContent":["<template>\n <section class=\"page-box\">\n <template v-if=\"loaded && !error && playlist\">\n <PodcastmakerHeader\n v-if=\"isPodcastmaker\"\n :page-title=\"pageTitle\"\n :img-url=\"playlist.imageUrl\"\n />\n <div\n class=\"d-flex flex-column page-element\"\n :class=\"isPodcastmaker ? 'page-element-podcastmaker' : ''\"\n >\n <section class=\"module-box\">\n <slot\n v-if=\"editRight && !isPodcastmaker\"\n name=\"edit-box\"\n :playlist=\"playlist\"\n />\n\n <div class=\"mb-5 mt-3 description-text\">\n <img\n v-lazy=\"useProxyImageUrl(playlist.imageUrl, '250')\"\n width=\"250\"\n height=\"250\"\n aria-hidden=\"true\"\n alt=\"\"\n :title=\"t('Playlist name image', { name: name })\"\n class=\"img-box float-start me-3 mb-3\"\n />\n <div class=\"d-flex align-items-center justify-content-between\">\n <h2>{{ name }}</h2>\n <ShareAnonymous v-if=\"!editRight\" class=\"d-flex justify-content-end flex-grow-1\" :playlist=\"playlist\" :organisation-id=\"playlist.organisation?.id\"/>\n </div>\n <!-- eslint-disable vue/no-v-html -->\n <p class=\"html-wysiwyg-content\" v-html=\"urlify(description)\" />\n <!-- eslint-enable -->\n </div>\n <SubscribeButtons\n v-if=\"isPodcastmaker\"\n class=\"mt-4\"\n :content=\"playlist\"\n :window-width=\"1000\"\n :justify-center=\"false\"\n />\n </section>\n <SharePlayer\n v-if=\"!isPodcastmaker && editRight\"\n :playlist=\"playlist\"\n :organisation-id=\"authOrgaId\"\n />\n <ShareSocialsButtons\n v-if=\"state.podcastPage.ShareButtons\"\n :organisation-id=\"playlist.organisation.id\"\n />\n <section class=\"module-box\">\n <PodcastList \n v-if=\"isInit\"\n v-model:query=\"searchPattern\"\n :first=\"paginateFirst\"\n :size=\"ps\"\n :playlist=\"playlist\"\n />\n </section>\n </div>\n\n <slot name=\"bottom\" v-bind=\"{ playlist }\" />\n </template>\n <ClassicLoading\n :loading-text=\"!loaded ? t('Loading content ...') : undefined\"\n :error-text=\"error ? t(`Playlist doesn't exist`) : undefined\"\n />\n </section>\n</template>\n\n<script setup lang=\"ts\">\nimport { useGeneralStore } from \"../../stores/GeneralStore\";\nimport { useAuthStore } from \"../../stores/AuthStore\";\nimport {useOrgaComputed} from \"../composable/useOrgaComputed\";\nimport {useSeoTitleUrl} from \"../composable/route/useSeoTitleUrl\";\nimport ClassicLoading from \"../form/ClassicLoading.vue\";\nimport PodcastList from \"../display/playlist/PodcastList.vue\";\nimport { useFilterStore } from \"../../stores/FilterStore\";\nimport { state } from \"../../stores/ParamSdkStore\";\nimport displayHelper from \"../../helper/displayHelper\";\nimport {useImageProxy} from \"../composable/useImageProxy\";\nimport {useErrorHandler} from \"../composable/useErrorHandler\";\nimport { Playlist } from \"@/stores/class/general/playlist\";\nimport {defineAsyncComponent, ref, Ref, computed, watch, onBeforeUnmount } from \"vue\";\nimport { AxiosError } from \"axios\";\nimport { useI18n } from \"vue-i18n\";\nimport { useRoute } from \"vue-router\";\nimport { useSimplePageParam } from \"../composable/route/useSimplePageParam\";\nimport { playlistApi } from \"../../api/playlistApi\";\n\nimport SubscribeButtons from \"../display/sharing/SubscribeButtons.vue\"; \nconst ShareSocialsButtons = defineAsyncComponent(\n () => import(\"../display/sharing/ShareSocialsButtons.vue\"),\n);\nconst SharePlayer = defineAsyncComponent(\n () => import(\"../display/sharing/SharePlayer.vue\"),\n);\nconst PodcastmakerHeader = defineAsyncComponent(\n () => import(\"../display/podcastmaker/PodcastmakerHeader.vue\"),\n);\nconst ShareAnonymous = defineAsyncComponent(() => import(\"../display/sharing/ShareAnonymous.vue\"));\n\n\n//Props\nconst props = defineProps({\n playlistId: { default: undefined, type: Number },\n pr: { default: 0, type: Number },\n ps: { default: 30, type: Number },\n routeQuery: { default: \"\", type: String },\n});\n\n\n//Data \nconst loaded = ref(false);\nconst error = ref(false);\nconst playlist : Ref<Playlist | undefined> = ref(undefined);\n\n\n//Composables\nconst route = useRoute();\nconst { t } = useI18n();\nconst { useProxyImageUrl } = useImageProxy();\nconst { isPodcastmaker, isEditRights, authOrgaId } = useOrgaComputed();\nconst { updatePathParams } = useSeoTitleUrl();\nconst {handle403} = useErrorHandler();\nconst authStore = useAuthStore();\nconst filterStore = useFilterStore();\nconst generalStore = useGeneralStore();\nconst {\n searchPattern,\n paginateFirst,\n isInit\n} = useSimplePageParam(props, true);\n\n\n//Computed\nconst playlistRadio = computed(() =>{\n return (\n \"AMBIANCE\" === playlist.value?.ambianceType ||\n \"AMBIANCE_PROGRAMMED\" === playlist.value?.ambianceType\n );\n});\nconst pageTitle = computed(() =>playlistRadio.value? t(\"Mix of episodes\"): t(\"Playlist\"));\nconst name = computed(() =>playlist.value?.title ?? \"\");\nconst description = computed(() =>playlist.value?.description ?? \"\");\nconst editRight = computed(() =>{\n return isEditRights(\n playlist.value?.organisation?.id,\n authStore.isRolePlaylists,\n );\n});\n\n\n//Watch\nwatch(()=>props.playlistId, () => {getPlaylistDetails()}, {immediate: true});\n\n\nonBeforeUnmount(() => {\n generalStore.contentToDisplayUpdate(null);\n});\n\n\n//Methods\nfunction urlify(text:string|undefined){\n return displayHelper.urlify(text);\n}\nfunction initError(): void {\n error.value = true;\n loaded.value = true;\n}\nasync function getPlaylistDetails(): Promise<void> {\n try {\n loaded.value = false;\n error.value = false;\n playlist.value = await playlistApi.get(props.playlistId);\n filterStore.updateOrgaIfNecessary(playlist.value.organisation?.id);\n if (\n (!editRight.value && playlistRadio.value) ||\n (\"PUBLIC\" !== playlist.value.organisation?.privacy &&\n filterStore.filterOrgaId !== playlist.value.organisation?.id &&\n route.query.productor !== playlist.value.organisation?.id)\n ) {\n initError();\n return;\n }\n generalStore.contentToDisplayUpdate(playlist.value);\n updatePathParams(playlist.value.title);\n } catch (error) {\n handle403(error as AxiosError);\n initError();\n }\n loaded.value = true;\n}\n\n</script>\n","<template>\n <section class=\"page-box\">\n <template v-if=\"loaded && !error && playlist\">\n <PodcastmakerHeader\n v-if=\"isPodcastmaker\"\n :page-title=\"pageTitle\"\n :img-url=\"playlist.imageUrl\"\n />\n <div\n class=\"d-flex flex-column page-element\"\n :class=\"isPodcastmaker ? 'page-element-podcastmaker' : ''\"\n >\n <section class=\"module-box\">\n <slot\n v-if=\"editRight && !isPodcastmaker\"\n name=\"edit-box\"\n :playlist=\"playlist\"\n />\n\n <div class=\"mb-5 mt-3 description-text\">\n <img\n v-lazy=\"useProxyImageUrl(playlist.imageUrl, '250')\"\n width=\"250\"\n height=\"250\"\n aria-hidden=\"true\"\n alt=\"\"\n :title=\"t('Playlist name image', { name: name })\"\n class=\"img-box float-start me-3 mb-3\"\n />\n <div class=\"d-flex align-items-center justify-content-between\">\n <h2>{{ name }}</h2>\n <ShareAnonymous v-if=\"!editRight\" class=\"d-flex justify-content-end flex-grow-1\" :playlist=\"playlist\" :organisation-id=\"playlist.organisation?.id\"/>\n </div>\n <!-- eslint-disable vue/no-v-html -->\n <p class=\"html-wysiwyg-content\" v-html=\"urlify(description)\" />\n <!-- eslint-enable -->\n </div>\n <SubscribeButtons\n v-if=\"isPodcastmaker\"\n class=\"mt-4\"\n :content=\"playlist\"\n :window-width=\"1000\"\n :justify-center=\"false\"\n />\n </section>\n <SharePlayer\n v-if=\"!isPodcastmaker && editRight\"\n :playlist=\"playlist\"\n :organisation-id=\"authOrgaId\"\n />\n <ShareSocialsButtons\n v-if=\"state.podcastPage.ShareButtons\"\n :organisation-id=\"playlist.organisation.id\"\n />\n <section class=\"module-box\">\n <PodcastList \n v-if=\"isInit\"\n v-model:query=\"searchPattern\"\n :first=\"paginateFirst\"\n :size=\"ps\"\n :playlist=\"playlist\"\n />\n </section>\n </div>\n\n <slot name=\"bottom\" v-bind=\"{ playlist }\" />\n </template>\n <ClassicLoading\n :loading-text=\"!loaded ? t('Loading content ...') : undefined\"\n :error-text=\"error ? t(`Playlist doesn't exist`) : undefined\"\n />\n </section>\n</template>\n\n<script setup lang=\"ts\">\nimport { useGeneralStore } from \"../../stores/GeneralStore\";\nimport { useAuthStore } from \"../../stores/AuthStore\";\nimport {useOrgaComputed} from \"../composable/useOrgaComputed\";\nimport {useSeoTitleUrl} from \"../composable/route/useSeoTitleUrl\";\nimport ClassicLoading from \"../form/ClassicLoading.vue\";\nimport PodcastList from \"../display/playlist/PodcastList.vue\";\nimport { useFilterStore } from \"../../stores/FilterStore\";\nimport { state } from \"../../stores/ParamSdkStore\";\nimport displayHelper from \"../../helper/displayHelper\";\nimport {useImageProxy} from \"../composable/useImageProxy\";\nimport {useErrorHandler} from \"../composable/useErrorHandler\";\nimport { Playlist } from \"@/stores/class/general/playlist\";\nimport {defineAsyncComponent, ref, Ref, computed, watch, onBeforeUnmount } from \"vue\";\nimport { AxiosError } from \"axios\";\nimport { useI18n } from \"vue-i18n\";\nimport { useRoute } from \"vue-router\";\nimport { useSimplePageParam } from \"../composable/route/useSimplePageParam\";\nimport { playlistApi } from \"../../api/playlistApi\";\n\nimport SubscribeButtons from \"../display/sharing/SubscribeButtons.vue\"; \nconst ShareSocialsButtons = defineAsyncComponent(\n () => import(\"../display/sharing/ShareSocialsButtons.vue\"),\n);\nconst SharePlayer = defineAsyncComponent(\n () => import(\"../display/sharing/SharePlayer.vue\"),\n);\nconst PodcastmakerHeader = defineAsyncComponent(\n () => import(\"../display/podcastmaker/PodcastmakerHeader.vue\"),\n);\nconst ShareAnonymous = defineAsyncComponent(() => import(\"../display/sharing/ShareAnonymous.vue\"));\n\n\n//Props\nconst props = defineProps({\n playlistId: { default: undefined, type: Number },\n pr: { default: 0, type: Number },\n ps: { default: 30, type: Number },\n routeQuery: { default: \"\", type: String },\n});\n\n\n//Data \nconst loaded = ref(false);\nconst error = ref(false);\nconst playlist : Ref<Playlist | undefined> = ref(undefined);\n\n\n//Composables\nconst route = useRoute();\nconst { t } = useI18n();\nconst { useProxyImageUrl } = useImageProxy();\nconst { isPodcastmaker, isEditRights, authOrgaId } = useOrgaComputed();\nconst { updatePathParams } = useSeoTitleUrl();\nconst {handle403} = useErrorHandler();\nconst authStore = useAuthStore();\nconst filterStore = useFilterStore();\nconst generalStore = useGeneralStore();\nconst {\n searchPattern,\n paginateFirst,\n isInit\n} = useSimplePageParam(props, true);\n\n\n//Computed\nconst playlistRadio = computed(() =>{\n return (\n \"AMBIANCE\" === playlist.value?.ambianceType ||\n \"AMBIANCE_PROGRAMMED\" === playlist.value?.ambianceType\n );\n});\nconst pageTitle = computed(() =>playlistRadio.value? t(\"Mix of episodes\"): t(\"Playlist\"));\nconst name = computed(() =>playlist.value?.title ?? \"\");\nconst description = computed(() =>playlist.value?.description ?? \"\");\nconst editRight = computed(() =>{\n return isEditRights(\n playlist.value?.organisation?.id,\n authStore.isRolePlaylists,\n );\n});\n\n\n//Watch\nwatch(()=>props.playlistId, () => {getPlaylistDetails()}, {immediate: true});\n\n\nonBeforeUnmount(() => {\n generalStore.contentToDisplayUpdate(null);\n});\n\n\n//Methods\nfunction urlify(text:string|undefined){\n return displayHelper.urlify(text);\n}\nfunction initError(): void {\n error.value = true;\n loaded.value = true;\n}\nasync function getPlaylistDetails(): Promise<void> {\n try {\n loaded.value = false;\n error.value = false;\n playlist.value = await playlistApi.get(props.playlistId);\n filterStore.updateOrgaIfNecessary(playlist.value.organisation?.id);\n if (\n (!editRight.value && playlistRadio.value) ||\n (\"PUBLIC\" !== playlist.value.organisation?.privacy &&\n filterStore.filterOrgaId !== playlist.value.organisation?.id &&\n route.query.productor !== playlist.value.organisation?.id)\n ) {\n initError();\n return;\n }\n generalStore.contentToDisplayUpdate(playlist.value);\n updatePathParams(playlist.value.title);\n } catch (error) {\n handle403(error as AxiosError);\n initError();\n }\n loaded.value = true;\n}\n\n</script>\n"],"mappings":"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"}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"PlaylistPage-bm1nWKMg.mjs","names":["displayHelper","_resolveDirective","_openBlock","_createElementBlock","_Fragment","_createBlock","_createCommentVNode","_createElementVNode","_normalizeClass","_renderSlot","_withDirectives","_toDisplayString","_normalizeProps","_guardReactiveProps","_createVNode","_sfc_main"],"sources":["../src/components/pages/PlaylistPage.vue","../src/components/pages/PlaylistPage.vue"],"sourcesContent":["<template>\n <section class=\"page-box\">\n <template v-if=\"loaded && !error && playlist\">\n <PodcastmakerHeader\n v-if=\"isPodcastmaker\"\n :page-title=\"pageTitle\"\n :img-url=\"playlist.imageUrl\"\n />\n <div\n class=\"d-flex flex-column page-element\"\n :class=\"isPodcastmaker ? 'page-element-podcastmaker' : ''\"\n >\n <section class=\"module-box\">\n <slot\n v-if=\"editRight && !isPodcastmaker\"\n name=\"edit-box\"\n :playlist=\"playlist\"\n />\n\n <div class=\"mb-5 mt-3 description-text\">\n <img\n v-lazy=\"useProxyImageUrl(playlist.imageUrl, '250')\"\n width=\"250\"\n height=\"250\"\n aria-hidden=\"true\"\n alt=\"\"\n :title=\"t('Playlist name image', { name: name })\"\n class=\"img-box float-start me-3 mb-3\"\n />\n <div class=\"d-flex align-items-center justify-content-between\">\n <h2>{{ name }}</h2>\n <ShareAnonymous v-if=\"!editRight\" class=\"d-flex justify-content-end flex-grow-1\" :playlist=\"playlist\" :organisation-id=\"playlist.organisation?.id\"/>\n </div>\n <!-- eslint-disable vue/no-v-html -->\n <p class=\"html-wysiwyg-content\" v-html=\"urlify(description)\" />\n <!-- eslint-enable -->\n </div>\n <SubscribeButtons\n v-if=\"isPodcastmaker\"\n class=\"mt-4\"\n :content=\"playlist\"\n :window-width=\"1000\"\n :justify-center=\"false\"\n />\n </section>\n <SharePlayer\n v-if=\"!isPodcastmaker && editRight\"\n :playlist=\"playlist\"\n :organisation-id=\"authOrgaId\"\n />\n <ShareSocialsButtons\n v-if=\"state.podcastPage.ShareButtons\"\n :organisation-id=\"playlist.organisation.id\"\n />\n <section class=\"module-box\">\n <PodcastList \n v-if=\"isInit\"\n v-model:query=\"searchPattern\"\n :first=\"paginateFirst\"\n :size=\"ps\"\n :playlist=\"playlist\"\n />\n </section>\n </div>\n\n <slot name=\"bottom\" v-bind=\"{ playlist }\" />\n </template>\n <ClassicLoading\n :loading-text=\"!loaded ? t('Loading content ...') : undefined\"\n :error-text=\"error ? t(`Playlist doesn't exist`) : undefined\"\n />\n </section>\n</template>\n\n<script setup lang=\"ts\">\nimport { useGeneralStore } from \"../../stores/GeneralStore\";\nimport { useAuthStore } from \"../../stores/AuthStore\";\nimport {useOrgaComputed} from \"../composable/useOrgaComputed\";\nimport {useSeoTitleUrl} from \"../composable/route/useSeoTitleUrl\";\nimport ClassicLoading from \"../form/ClassicLoading.vue\";\nimport PodcastList from \"../display/playlist/PodcastList.vue\";\nimport { useFilterStore } from \"../../stores/FilterStore\";\nimport { state } from \"../../stores/ParamSdkStore\";\nimport displayHelper from \"../../helper/displayHelper\";\nimport {useImageProxy} from \"../composable/useImageProxy\";\nimport {useErrorHandler} from \"../composable/useErrorHandler\";\nimport { Playlist } from \"@/stores/class/general/playlist\";\nimport {defineAsyncComponent, ref, Ref, computed, watch, onBeforeUnmount } from \"vue\";\nimport { AxiosError } from \"axios\";\nimport { useI18n } from \"vue-i18n\";\nimport { useRoute } from \"vue-router\";\nimport { useSimplePageParam } from \"../composable/route/useSimplePageParam\";\nimport { playlistApi } from \"../../api/playlistApi\";\n\nimport SubscribeButtons from \"../display/sharing/SubscribeButtons.vue\"; \nconst ShareSocialsButtons = defineAsyncComponent(\n () => import(\"../display/sharing/ShareSocialsButtons.vue\"),\n);\nconst SharePlayer = defineAsyncComponent(\n () => import(\"../display/sharing/SharePlayer.vue\"),\n);\nconst PodcastmakerHeader = defineAsyncComponent(\n () => import(\"../display/podcastmaker/PodcastmakerHeader.vue\"),\n);\nconst ShareAnonymous = defineAsyncComponent(() => import(\"../display/sharing/ShareAnonymous.vue\"));\n\n\n//Props\nconst props = defineProps({\n playlistId: { default: undefined, type: Number },\n pr: { default: 0, type: Number },\n ps: { default: 30, type: Number },\n routeQuery: { default: \"\", type: String },\n});\n\n\n//Data \nconst loaded = ref(false);\nconst error = ref(false);\nconst playlist : Ref<Playlist | undefined> = ref(undefined);\n\n\n//Composables\nconst route = useRoute();\nconst { t } = useI18n();\nconst { useProxyImageUrl } = useImageProxy();\nconst { isPodcastmaker, isEditRights, authOrgaId } = useOrgaComputed();\nconst { updatePathParams } = useSeoTitleUrl();\nconst {handle403} = useErrorHandler();\nconst authStore = useAuthStore();\nconst filterStore = useFilterStore();\nconst generalStore = useGeneralStore();\nconst {\n searchPattern,\n paginateFirst,\n isInit\n} = useSimplePageParam(props, true);\n\n\n//Computed\nconst playlistRadio = computed(() =>{\n return (\n \"AMBIANCE\" === playlist.value?.ambianceType ||\n \"AMBIANCE_PROGRAMMED\" === playlist.value?.ambianceType\n );\n});\nconst pageTitle = computed(() =>playlistRadio.value? t(\"Mix of episodes\"): t(\"Playlist\"));\nconst name = computed(() =>playlist.value?.title ?? \"\");\nconst description = computed(() =>playlist.value?.description ?? \"\");\nconst editRight = computed(() =>{\n return isEditRights(\n playlist.value?.organisation?.id,\n authStore.isRolePlaylists,\n );\n});\n\n\n//Watch\nwatch(()=>props.playlistId, () => {getPlaylistDetails()}, {immediate: true});\n\n\nonBeforeUnmount(() => {\n generalStore.contentToDisplayUpdate(null);\n});\n\n\n//Methods\nfunction urlify(text:string|undefined){\n return displayHelper.urlify(text);\n}\nfunction initError(): void {\n error.value = true;\n loaded.value = true;\n}\nasync function getPlaylistDetails(): Promise<void> {\n try {\n loaded.value = false;\n error.value = false;\n playlist.value = await playlistApi.get(props.playlistId);\n filterStore.updateOrgaIfNecessary(playlist.value.organisation?.id);\n if (\n (!editRight.value && playlistRadio.value) ||\n (\"PUBLIC\" !== playlist.value.organisation?.privacy &&\n filterStore.filterOrgaId !== playlist.value.organisation?.id &&\n route.query.productor !== playlist.value.organisation?.id)\n ) {\n initError();\n return;\n }\n generalStore.contentToDisplayUpdate(playlist.value);\n updatePathParams(playlist.value.title);\n } catch (error) {\n handle403(error as AxiosError);\n initError();\n }\n loaded.value = true;\n}\n\n</script>\n","<template>\n <section class=\"page-box\">\n <template v-if=\"loaded && !error && playlist\">\n <PodcastmakerHeader\n v-if=\"isPodcastmaker\"\n :page-title=\"pageTitle\"\n :img-url=\"playlist.imageUrl\"\n />\n <div\n class=\"d-flex flex-column page-element\"\n :class=\"isPodcastmaker ? 'page-element-podcastmaker' : ''\"\n >\n <section class=\"module-box\">\n <slot\n v-if=\"editRight && !isPodcastmaker\"\n name=\"edit-box\"\n :playlist=\"playlist\"\n />\n\n <div class=\"mb-5 mt-3 description-text\">\n <img\n v-lazy=\"useProxyImageUrl(playlist.imageUrl, '250')\"\n width=\"250\"\n height=\"250\"\n aria-hidden=\"true\"\n alt=\"\"\n :title=\"t('Playlist name image', { name: name })\"\n class=\"img-box float-start me-3 mb-3\"\n />\n <div class=\"d-flex align-items-center justify-content-between\">\n <h2>{{ name }}</h2>\n <ShareAnonymous v-if=\"!editRight\" class=\"d-flex justify-content-end flex-grow-1\" :playlist=\"playlist\" :organisation-id=\"playlist.organisation?.id\"/>\n </div>\n <!-- eslint-disable vue/no-v-html -->\n <p class=\"html-wysiwyg-content\" v-html=\"urlify(description)\" />\n <!-- eslint-enable -->\n </div>\n <SubscribeButtons\n v-if=\"isPodcastmaker\"\n class=\"mt-4\"\n :content=\"playlist\"\n :window-width=\"1000\"\n :justify-center=\"false\"\n />\n </section>\n <SharePlayer\n v-if=\"!isPodcastmaker && editRight\"\n :playlist=\"playlist\"\n :organisation-id=\"authOrgaId\"\n />\n <ShareSocialsButtons\n v-if=\"state.podcastPage.ShareButtons\"\n :organisation-id=\"playlist.organisation.id\"\n />\n <section class=\"module-box\">\n <PodcastList \n v-if=\"isInit\"\n v-model:query=\"searchPattern\"\n :first=\"paginateFirst\"\n :size=\"ps\"\n :playlist=\"playlist\"\n />\n </section>\n </div>\n\n <slot name=\"bottom\" v-bind=\"{ playlist }\" />\n </template>\n <ClassicLoading\n :loading-text=\"!loaded ? t('Loading content ...') : undefined\"\n :error-text=\"error ? t(`Playlist doesn't exist`) : undefined\"\n />\n </section>\n</template>\n\n<script setup lang=\"ts\">\nimport { useGeneralStore } from \"../../stores/GeneralStore\";\nimport { useAuthStore } from \"../../stores/AuthStore\";\nimport {useOrgaComputed} from \"../composable/useOrgaComputed\";\nimport {useSeoTitleUrl} from \"../composable/route/useSeoTitleUrl\";\nimport ClassicLoading from \"../form/ClassicLoading.vue\";\nimport PodcastList from \"../display/playlist/PodcastList.vue\";\nimport { useFilterStore } from \"../../stores/FilterStore\";\nimport { state } from \"../../stores/ParamSdkStore\";\nimport displayHelper from \"../../helper/displayHelper\";\nimport {useImageProxy} from \"../composable/useImageProxy\";\nimport {useErrorHandler} from \"../composable/useErrorHandler\";\nimport { Playlist } from \"@/stores/class/general/playlist\";\nimport {defineAsyncComponent, ref, Ref, computed, watch, onBeforeUnmount } from \"vue\";\nimport { AxiosError } from \"axios\";\nimport { useI18n } from \"vue-i18n\";\nimport { useRoute } from \"vue-router\";\nimport { useSimplePageParam } from \"../composable/route/useSimplePageParam\";\nimport { playlistApi } from \"../../api/playlistApi\";\n\nimport SubscribeButtons from \"../display/sharing/SubscribeButtons.vue\"; \nconst ShareSocialsButtons = defineAsyncComponent(\n () => import(\"../display/sharing/ShareSocialsButtons.vue\"),\n);\nconst SharePlayer = defineAsyncComponent(\n () => import(\"../display/sharing/SharePlayer.vue\"),\n);\nconst PodcastmakerHeader = defineAsyncComponent(\n () => import(\"../display/podcastmaker/PodcastmakerHeader.vue\"),\n);\nconst ShareAnonymous = defineAsyncComponent(() => import(\"../display/sharing/ShareAnonymous.vue\"));\n\n\n//Props\nconst props = defineProps({\n playlistId: { default: undefined, type: Number },\n pr: { default: 0, type: Number },\n ps: { default: 30, type: Number },\n routeQuery: { default: \"\", type: String },\n});\n\n\n//Data \nconst loaded = ref(false);\nconst error = ref(false);\nconst playlist : Ref<Playlist | undefined> = ref(undefined);\n\n\n//Composables\nconst route = useRoute();\nconst { t } = useI18n();\nconst { useProxyImageUrl } = useImageProxy();\nconst { isPodcastmaker, isEditRights, authOrgaId } = useOrgaComputed();\nconst { updatePathParams } = useSeoTitleUrl();\nconst {handle403} = useErrorHandler();\nconst authStore = useAuthStore();\nconst filterStore = useFilterStore();\nconst generalStore = useGeneralStore();\nconst {\n searchPattern,\n paginateFirst,\n isInit\n} = useSimplePageParam(props, true);\n\n\n//Computed\nconst playlistRadio = computed(() =>{\n return (\n \"AMBIANCE\" === playlist.value?.ambianceType ||\n \"AMBIANCE_PROGRAMMED\" === playlist.value?.ambianceType\n );\n});\nconst pageTitle = computed(() =>playlistRadio.value? t(\"Mix of episodes\"): t(\"Playlist\"));\nconst name = computed(() =>playlist.value?.title ?? \"\");\nconst description = computed(() =>playlist.value?.description ?? \"\");\nconst editRight = computed(() =>{\n return isEditRights(\n playlist.value?.organisation?.id,\n authStore.isRolePlaylists,\n );\n});\n\n\n//Watch\nwatch(()=>props.playlistId, () => {getPlaylistDetails()}, {immediate: true});\n\n\nonBeforeUnmount(() => {\n generalStore.contentToDisplayUpdate(null);\n});\n\n\n//Methods\nfunction urlify(text:string|undefined){\n return displayHelper.urlify(text);\n}\nfunction initError(): void {\n error.value = true;\n loaded.value = true;\n}\nasync function getPlaylistDetails(): Promise<void> {\n try {\n loaded.value = false;\n error.value = false;\n playlist.value = await playlistApi.get(props.playlistId);\n filterStore.updateOrgaIfNecessary(playlist.value.organisation?.id);\n if (\n (!editRight.value && playlistRadio.value) ||\n (\"PUBLIC\" !== playlist.value.organisation?.privacy &&\n filterStore.filterOrgaId !== playlist.value.organisation?.id &&\n route.query.productor !== playlist.value.organisation?.id)\n ) {\n initError();\n return;\n }\n generalStore.contentToDisplayUpdate(playlist.value);\n updatePathParams(playlist.value.title);\n } catch (error) {\n handle403(error as AxiosError);\n initError();\n }\n loaded.value = true;\n}\n\n</script>\n"],"mappings":"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"}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"PlaylistsPage-BwkVSYIp.mjs","names":["displayHelper","_hoisted_1","_hoisted_2","_sfc_render","_resolveComponent","_resolveDirective","_openBlock","_createElementBlock","_createVNode","_withCtx","_createElementVNode","_toDisplayString","_createCommentVNode","_createBlock","_createTextVNode","_withDirectives","_sfc_main","classicApi","_hoisted_1","_sfc_render","_resolveComponent","_openBlock","_createBlock","_withCtx","_createElementVNode","_createElementBlock","_Fragment","_renderList","_createVNode","_createTextVNode","_toDisplayString","_createCommentVNode","_sfc_main","_resolveComponent","_openBlock","_createElementBlock","_createBlock","_withCtx","_createElementVNode","_toDisplayString","_createCommentVNode","_createVNode","_sfc_main"],"sources":["../src/components/display/playlist/PlaylistItem.vue","../src/components/display/playlist/PlaylistItem.vue","../src/stores/class/general/playlist.ts","../src/components/display/playlist/PlaylistList.vue","../src/components/display/playlist/PlaylistList.vue","../src/components/pages/PlaylistsPage.vue","../src/components/pages/PlaylistsPage.vue"],"sourcesContent":["<template>\n <article class=\"classic-element-container\">\n <router-link\n :to=\"{\n name: 'playlist',\n params: { playlistId: playlist.playlistId },\n }\"\n :title=\"t('Playlist name page', { name: name })\"\n class=\"d-flex flex-grow-1 text-dark\"\n >\n <div class=\"classic-element-text\">\n <div v-if=\"!activePlaylist\" class=\"sticker-empty-ressource\">\n {{ t(\"Empty playlist\") }}\n </div>\n <div class=\"d-flex align-items-center element-name basic-line-clamp\">\n {{ name }}\n </div>\n <div\n ref=\"descriptionPlaylistContainer\"\n class=\"element-description html-wysiwyg-content\"\n >\n <!-- eslint-disable vue/no-v-html -->\n <div ref=\"descriptionPlaylist\" v-html=\"urlify(description)\" />\n <!-- eslint-enable -->\n </div>\n <router-link\n v-if=\"!state.generalParameters.podcastmaker && playlist.organisation\"\n :to=\"{\n name: 'productor',\n params: { productorId: playlist.organisation.id },\n }\"\n class=\"text-dark mt-auto py-1\"\n >\n © {{ playlist.organisation.name }}\n </router-link>\n </div>\n <img\n v-lazy=\"useProxyImageUrl(playlist.imageUrl, '250')\"\n width=\"250\"\n height=\"250\"\n aria-hidden=\"true\"\n alt=\"\"\n \n :title=\"t('Playlist name image', { name: name })\"\n class=\"img-box\"\n />\n </router-link>\n </article>\n</template>\n\n<script setup lang=\"ts\">\nimport { Playlist } from \"@/stores/class/general/playlist\";\nimport { state } from \"../../../stores/ParamSdkStore\";\nimport {useImageProxy} from \"../../composable/useImageProxy\";\nimport displayHelper from \"../../../helper/displayHelper\";\nimport { computed, onMounted, useTemplateRef } from \"vue\";\nimport { useI18n } from \"vue-i18n\";\n\n//Props \nconst props = defineProps({\n playlist: { default: () => ({}), type: Object as () => Playlist },\n})\n\n//Composables\nconst { t } = useI18n();\nconst { useProxyImageUrl } = useImageProxy();\n\n//Computed\nconst description = computed(() => props.playlist.description ?? \"\");\nconst name = computed(() => props.playlist.title ?? \"\");\nconst activePlaylist = computed(() => 0 !== Object.keys(props.playlist.samplingViews ?? []).length);\n\nonMounted(()=>{\n const playlistDesc = useTemplateRef('descriptionPlaylist')?.value as HTMLElement;\n const playlistDescContainer = useTemplateRef('descriptionPlaylistContainer')?.value as HTMLElement;\n if (playlistDesc?.clientHeight > playlistDescContainer?.clientHeight) {\n playlistDescContainer.classList.add(\"after-element-description\");\n }\n})\n\n//Methods\nfunction urlify(text:string|undefined){\n return displayHelper.urlify(text);\n}\n</script>\n<style lang=\"scss\">\n.octopus-app .sticker-empty-ressource{\n position: absolute;\n top: 5px;\n right: 5px;\n align-self: center;\n background: var(--octopus-tertiary);\n padding: 0.5rem;\n transition: all 0.5s ease;\n color: var(--octopus-color-on-primary);\n font-size: 0.6rem;\n font-weight: bold;\n letter-spacing: 1px;\n box-shadow: 10px 10px 34px -15px var(--octopus-shadow);\n border-radius: 255px 15px 225px 15px/15px 225px 15px 255px;\n border: solid 2px var(--octopus-color-text);\n cursor: auto;\n\n &:hover {\n box-shadow: 2px 8px 4px -6px var(--octopus-shadow);\n background: var(--octopus-primary);\n }\n}\n</style>\n\n","<template>\n <article class=\"classic-element-container\">\n <router-link\n :to=\"{\n name: 'playlist',\n params: { playlistId: playlist.playlistId },\n }\"\n :title=\"t('Playlist name page', { name: name })\"\n class=\"d-flex flex-grow-1 text-dark\"\n >\n <div class=\"classic-element-text\">\n <div v-if=\"!activePlaylist\" class=\"sticker-empty-ressource\">\n {{ t(\"Empty playlist\") }}\n </div>\n <div class=\"d-flex align-items-center element-name basic-line-clamp\">\n {{ name }}\n </div>\n <div\n ref=\"descriptionPlaylistContainer\"\n class=\"element-description html-wysiwyg-content\"\n >\n <!-- eslint-disable vue/no-v-html -->\n <div ref=\"descriptionPlaylist\" v-html=\"urlify(description)\" />\n <!-- eslint-enable -->\n </div>\n <router-link\n v-if=\"!state.generalParameters.podcastmaker && playlist.organisation\"\n :to=\"{\n name: 'productor',\n params: { productorId: playlist.organisation.id },\n }\"\n class=\"text-dark mt-auto py-1\"\n >\n © {{ playlist.organisation.name }}\n </router-link>\n </div>\n <img\n v-lazy=\"useProxyImageUrl(playlist.imageUrl, '250')\"\n width=\"250\"\n height=\"250\"\n aria-hidden=\"true\"\n alt=\"\"\n \n :title=\"t('Playlist name image', { name: name })\"\n class=\"img-box\"\n />\n </router-link>\n </article>\n</template>\n\n<script setup lang=\"ts\">\nimport { Playlist } from \"@/stores/class/general/playlist\";\nimport { state } from \"../../../stores/ParamSdkStore\";\nimport {useImageProxy} from \"../../composable/useImageProxy\";\nimport displayHelper from \"../../../helper/displayHelper\";\nimport { computed, onMounted, useTemplateRef } from \"vue\";\nimport { useI18n } from \"vue-i18n\";\n\n//Props \nconst props = defineProps({\n playlist: { default: () => ({}), type: Object as () => Playlist },\n})\n\n//Composables\nconst { t } = useI18n();\nconst { useProxyImageUrl } = useImageProxy();\n\n//Computed\nconst description = computed(() => props.playlist.description ?? \"\");\nconst name = computed(() => props.playlist.title ?? \"\");\nconst activePlaylist = computed(() => 0 !== Object.keys(props.playlist.samplingViews ?? []).length);\n\nonMounted(()=>{\n const playlistDesc = useTemplateRef('descriptionPlaylist')?.value as HTMLElement;\n const playlistDescContainer = useTemplateRef('descriptionPlaylistContainer')?.value as HTMLElement;\n if (playlistDesc?.clientHeight > playlistDescContainer?.clientHeight) {\n playlistDescContainer.classList.add(\"after-element-description\");\n }\n})\n\n//Methods\nfunction urlify(text:string|undefined){\n return displayHelper.urlify(text);\n}\n</script>\n<style lang=\"scss\">\n.octopus-app .sticker-empty-ressource{\n position: absolute;\n top: 5px;\n right: 5px;\n align-self: center;\n background: var(--octopus-tertiary);\n padding: 0.5rem;\n transition: all 0.5s ease;\n color: var(--octopus-color-on-primary);\n font-size: 0.6rem;\n font-weight: bold;\n letter-spacing: 1px;\n box-shadow: 10px 10px 34px -15px var(--octopus-shadow);\n border-radius: 255px 15px 225px 15px/15px 225px 15px 255px;\n border: solid 2px var(--octopus-color-text);\n cursor: auto;\n\n &:hover {\n box-shadow: 2px 8px 4px -6px var(--octopus-shadow);\n background: var(--octopus-primary);\n }\n}\n</style>\n\n","import { emptyOrganisationData, Organisation } from \"./organisation\";\nimport { Person } from \"../user/person\";\nimport { FetchParam } from \"./fetchParam\";\nimport { Annotations } from \".\";\nimport { ItuneCategory } from \"./ituneCategory\";\n\n/**\n * Type of ambiance for the playlist\n * see #11919\n */\nexport enum PlaylistAmbianceType {\n NONE = \"NONE\",\n AMIBANCE = \"AMBIANCE\",\n AMBIANCE_PROGRAMMED = \"AMBIANCE_PROGRAMMED\"\n}\n\nexport interface Playlist {\n ambianceType?: PlaylistAmbianceType;\n imageUrl?: string;\n description: string;\n organisation?: Organisation;\n playlistId: number;\n podcasts?: Array<number | undefined>;\n score: number;\n title: string;\n type: string;\n samplingViews?: Array<PlaylistRule>;\n publisher?: Person;\n /** The annotations of the playlist */\n annotations?: Annotations;\n copyright?: string;\n optItunesCategories?: Array<ItuneCategory>;\n}\n\nexport function emptyPlaylistData(): Playlist {\n return {\n ambianceType: PlaylistAmbianceType.NONE,\n description: \"\",\n playlistId: 0,\n podcasts: undefined,\n score: 0,\n title: \"\",\n type: \"DYNAMIC\",\n samplingViews: [],\n organisation: emptyOrganisationData()\n };\n}\n\nexport interface PlaylistRule {\n maxSize: number;\n podcastId?: number;\n query?: FetchParam;\n type?: string;\n title?: string;\n}\n\nexport function emptyPlaylistRule(): PlaylistRule {\n return {\n maxSize: 1,\n query: {},\n title: undefined,\n };\n}\n","<template>\n <ListPaginate\n id=\"playlistListPaginate\"\n v-model:first=\"dfirst\"\n v-model:rows-per-page=\"dsize\"\n v-model:is-mobile=\"isMobile\"\n :text-count=\"\n displayCount > 1\n ? `${t('Number playlists', { nb: displayCount })}`\n : undefined\n \"\n :total-count=\"totalCount\"\n :loading=\"loading\"\n :loading-text=\"loading ? t('Loading content ...') : undefined\"\n :player-responsive=\"true\"\n >\n <template #list>\n <div class=\"octopus-element-list two-items-list\">\n <ClassicLazy\n v-for=\"p in displayArray\"\n :key=\"p.playlistId\"\n :min-height=\"250\"\n class=\"d-flex flex-column flex-grow-1\"\n >\n <PlaylistItem v-if=\"0 !== p.playlistId\" :playlist=\"p\" />\n <template #preview>\n <router-link\n :to=\"{\n name: 'playlist',\n params: { playlistId: p.playlistId },\n }\"\n :title=\"t('Playlist name page', { name: p.title })\"\n >\n {{ p.title }}\n </router-link>\n </template>\n </ClassicLazy>\n </div>\n </template>\n </ListPaginate>\n</template>\n\n<script setup lang=\"ts\">\nimport ClassicLazy from \"../../misc/ClassicLazy.vue\";\nimport ListPaginate from \"../list/ListPaginate.vue\";\nimport {useErrorHandler} from \"../../composable/useErrorHandler\";\nimport classicApi from \"../../../api/classicApi\";\nimport PlaylistItem from \"./PlaylistItem.vue\";\nimport { Playlist, emptyPlaylistData } from \"@/stores/class/general/playlist\";\nimport { useFilterStore } from \"../../../stores/FilterStore\";\nimport { computed, onMounted, Ref, ref, watch } from \"vue\";\nimport { AxiosError } from \"axios\";\nimport { ListClassicReturn } from \"@/stores/class/general/listReturn\";\nimport { useI18n } from \"vue-i18n\";\n\n//Props \nconst props = defineProps({\n first: { default: 0, type: Number },\n size: { default: 30, type: Number },\n query: { default: undefined, type: String },\n organisationId: { default: undefined, type: String },\n})\n\n//Data \nconst loading = ref(true);\nconst dfirst = ref(props.first);\nconst dsize = ref(props.size);\nconst totalCount = ref(0);\nconst displayCount = ref(0);\nconst isMobile = ref(false);\nconst playlists: Ref<Array<Playlist>> = ref([]);\n\n\n//Composables\nconst { t } = useI18n();\nconst {handle403} = useErrorHandler();\nconst filterStore = useFilterStore();\n\n\n//Computed\nconst displayArray = computed(() => {\n if (isMobile.value) {\n return playlists.value;\n }\n return playlists.value.slice(\n dfirst.value,\n Math.min(dfirst.value + dsize.value, totalCount.value),\n );\n});\nconst changed = computed(() => `${props.organisationId}|${props.query}`);\nconst changePaginate = computed(() => `${props.first}|${props.size}`);\nconst sort = computed(() => !props.query ? \"NAME\" : \"SCORE\");\nconst organisation = computed(() => props.organisationId ? props.organisationId : filterStore.filterOrgaId);\n\n\n//Watch\nwatch(changePaginate, () => {\n dfirst.value = props.first;\n dsize.value = props.size;\n});\nwatch(changed, () => fetchContent(true));\nwatch(dsize, () =>fetchContent(true));\nwatch(dfirst, () => {\n if (\n !playlists.value[dfirst.value] ||\n 0 === playlists.value[dfirst.value].playlistId\n ) {\n fetchContent(false);\n }\n});\n\nonMounted(()=>fetchContent(false))\n\n\n//Methods\nasync function fetchContent(reset: boolean): Promise<void> {\n loading.value = true;\n const param = {\n first: reset ? 0 : dfirst.value,\n size: dsize.value,\n query: props.query,\n organisationId: organisation.value,\n type: \"NONE\",\n sort: sort.value,\n };\n try {\n const data = await classicApi.fetchData<ListClassicReturn<Playlist>>({\n api: 0,\n path: \"playlist/search\",\n parameters: param,\n specialTreatement: true,\n });\n afterFetching(reset, data);\n } catch (error) {\n handle403(error as AxiosError);\n }\n}\nfunction afterFetching(\n reset: boolean,\n data: { count: number; result: Array<Playlist>; sort: string },\n): void {\n if (reset) {\n dfirst.value = 0;\n playlists.value.length = 0;\n }\n if (dfirst.value > playlists.value.length) {\n for (\n let i = playlists.value.length - 1, len = dfirst.value + dsize.value;\n i < len;\n i++\n ) {\n playlists.value.push(emptyPlaylistData());\n }\n }\n displayCount.value = data.count;\n const responsePlaylists = data.result.filter((e: Playlist | null) => {\n if (null === e) {\n displayCount.value--;\n }\n return null !== e;\n });\n playlists.value = playlists.value\n .slice(0, dfirst.value)\n .concat(responsePlaylists)\n .concat(\n playlists.value.slice(dfirst.value + dsize.value, playlists.value.length),\n );\n totalCount.value = data.count;\n loading.value = false;\n}\n</script>\n","<template>\n <ListPaginate\n id=\"playlistListPaginate\"\n v-model:first=\"dfirst\"\n v-model:rows-per-page=\"dsize\"\n v-model:is-mobile=\"isMobile\"\n :text-count=\"\n displayCount > 1\n ? `${t('Number playlists', { nb: displayCount })}`\n : undefined\n \"\n :total-count=\"totalCount\"\n :loading=\"loading\"\n :loading-text=\"loading ? t('Loading content ...') : undefined\"\n :player-responsive=\"true\"\n >\n <template #list>\n <div class=\"octopus-element-list two-items-list\">\n <ClassicLazy\n v-for=\"p in displayArray\"\n :key=\"p.playlistId\"\n :min-height=\"250\"\n class=\"d-flex flex-column flex-grow-1\"\n >\n <PlaylistItem v-if=\"0 !== p.playlistId\" :playlist=\"p\" />\n <template #preview>\n <router-link\n :to=\"{\n name: 'playlist',\n params: { playlistId: p.playlistId },\n }\"\n :title=\"t('Playlist name page', { name: p.title })\"\n >\n {{ p.title }}\n </router-link>\n </template>\n </ClassicLazy>\n </div>\n </template>\n </ListPaginate>\n</template>\n\n<script setup lang=\"ts\">\nimport ClassicLazy from \"../../misc/ClassicLazy.vue\";\nimport ListPaginate from \"../list/ListPaginate.vue\";\nimport {useErrorHandler} from \"../../composable/useErrorHandler\";\nimport classicApi from \"../../../api/classicApi\";\nimport PlaylistItem from \"./PlaylistItem.vue\";\nimport { Playlist, emptyPlaylistData } from \"@/stores/class/general/playlist\";\nimport { useFilterStore } from \"../../../stores/FilterStore\";\nimport { computed, onMounted, Ref, ref, watch } from \"vue\";\nimport { AxiosError } from \"axios\";\nimport { ListClassicReturn } from \"@/stores/class/general/listReturn\";\nimport { useI18n } from \"vue-i18n\";\n\n//Props \nconst props = defineProps({\n first: { default: 0, type: Number },\n size: { default: 30, type: Number },\n query: { default: undefined, type: String },\n organisationId: { default: undefined, type: String },\n})\n\n//Data \nconst loading = ref(true);\nconst dfirst = ref(props.first);\nconst dsize = ref(props.size);\nconst totalCount = ref(0);\nconst displayCount = ref(0);\nconst isMobile = ref(false);\nconst playlists: Ref<Array<Playlist>> = ref([]);\n\n\n//Composables\nconst { t } = useI18n();\nconst {handle403} = useErrorHandler();\nconst filterStore = useFilterStore();\n\n\n//Computed\nconst displayArray = computed(() => {\n if (isMobile.value) {\n return playlists.value;\n }\n return playlists.value.slice(\n dfirst.value,\n Math.min(dfirst.value + dsize.value, totalCount.value),\n );\n});\nconst changed = computed(() => `${props.organisationId}|${props.query}`);\nconst changePaginate = computed(() => `${props.first}|${props.size}`);\nconst sort = computed(() => !props.query ? \"NAME\" : \"SCORE\");\nconst organisation = computed(() => props.organisationId ? props.organisationId : filterStore.filterOrgaId);\n\n\n//Watch\nwatch(changePaginate, () => {\n dfirst.value = props.first;\n dsize.value = props.size;\n});\nwatch(changed, () => fetchContent(true));\nwatch(dsize, () =>fetchContent(true));\nwatch(dfirst, () => {\n if (\n !playlists.value[dfirst.value] ||\n 0 === playlists.value[dfirst.value].playlistId\n ) {\n fetchContent(false);\n }\n});\n\nonMounted(()=>fetchContent(false))\n\n\n//Methods\nasync function fetchContent(reset: boolean): Promise<void> {\n loading.value = true;\n const param = {\n first: reset ? 0 : dfirst.value,\n size: dsize.value,\n query: props.query,\n organisationId: organisation.value,\n type: \"NONE\",\n sort: sort.value,\n };\n try {\n const data = await classicApi.fetchData<ListClassicReturn<Playlist>>({\n api: 0,\n path: \"playlist/search\",\n parameters: param,\n specialTreatement: true,\n });\n afterFetching(reset, data);\n } catch (error) {\n handle403(error as AxiosError);\n }\n}\nfunction afterFetching(\n reset: boolean,\n data: { count: number; result: Array<Playlist>; sort: string },\n): void {\n if (reset) {\n dfirst.value = 0;\n playlists.value.length = 0;\n }\n if (dfirst.value > playlists.value.length) {\n for (\n let i = playlists.value.length - 1, len = dfirst.value + dsize.value;\n i < len;\n i++\n ) {\n playlists.value.push(emptyPlaylistData());\n }\n }\n displayCount.value = data.count;\n const responsePlaylists = data.result.filter((e: Playlist | null) => {\n if (null === e) {\n displayCount.value--;\n }\n return null !== e;\n });\n playlists.value = playlists.value\n .slice(0, dfirst.value)\n .concat(responsePlaylists)\n .concat(\n playlists.value.slice(dfirst.value + dsize.value, playlists.value.length),\n );\n totalCount.value = data.count;\n loading.value = false;\n}\n</script>\n","<template>\n <section v-if=\"isInit\" class=\"page-box\">\n <router-link\n v-if=\"isRolePlaylists && !isPodcastmaker\"\n to=\"/main/priv/edit/playlist\"\n class=\"d-flex justify-content-center my-3\"\n >\n <div class=\"btn btn-primary\">\n {{ t(\"Create playlist\") }}\n </div>\n </router-link>\n <ProductorSearch\n v-model:organisation-id=\"organisationId\"\n v-model:search-pattern=\"searchPattern\"\n type=\"playlist\"\n />\n <PlaylistList\n :show-count=\"true\"\n :first=\"paginateFirst\"\n :size=\"ps\"\n :query=\"searchMinSize\"\n :organisation-id=\"organisationId\"\n />\n </section>\n</template>\n\n<script setup lang=\"ts\">\nimport { useSimplePageParam } from \"../composable/route/useSimplePageParam\";\nimport PlaylistList from \"../display/playlist/PlaylistList.vue\";\nimport { useAuthStore } from \"../../stores/AuthStore\";\nimport { state } from \"../../stores/ParamSdkStore\";\nimport { computed, defineAsyncComponent } from \"vue\";\nimport { useI18n } from \"vue-i18n\";\nconst ProductorSearch = defineAsyncComponent(\n () => import(\"../display/filter/ProductorSearch.vue\"),\n);\n\n//Props\nconst props = defineProps({\n pr: { default: 0, type: Number },\n ps: { default: 30, type: Number },\n routeOrga: { default: undefined, type: String },\n routeQuery: { default: \"\", type: String },\n});\n\n\n//Composables\nconst { t } = useI18n();\nconst {\n searchPattern,\n organisationId,\n searchMinSize,\n paginateFirst,\n isInit\n} = useSimplePageParam(props);\nconst authStore = useAuthStore();\n\n\n//Computed\nconst isPodcastmaker = computed(() =>state.generalParameters.podcastmaker as boolean);\nconst isRolePlaylists = computed(() =>authStore.isRolePlaylists);\n\n</script>\n","<template>\n <section v-if=\"isInit\" class=\"page-box\">\n <router-link\n v-if=\"isRolePlaylists && !isPodcastmaker\"\n to=\"/main/priv/edit/playlist\"\n class=\"d-flex justify-content-center my-3\"\n >\n <div class=\"btn btn-primary\">\n {{ t(\"Create playlist\") }}\n </div>\n </router-link>\n <ProductorSearch\n v-model:organisation-id=\"organisationId\"\n v-model:search-pattern=\"searchPattern\"\n type=\"playlist\"\n />\n <PlaylistList\n :show-count=\"true\"\n :first=\"paginateFirst\"\n :size=\"ps\"\n :query=\"searchMinSize\"\n :organisation-id=\"organisationId\"\n />\n </section>\n</template>\n\n<script setup lang=\"ts\">\nimport { useSimplePageParam } from \"../composable/route/useSimplePageParam\";\nimport PlaylistList from \"../display/playlist/PlaylistList.vue\";\nimport { useAuthStore } from \"../../stores/AuthStore\";\nimport { state } from \"../../stores/ParamSdkStore\";\nimport { computed, defineAsyncComponent } from \"vue\";\nimport { useI18n } from \"vue-i18n\";\nconst ProductorSearch = defineAsyncComponent(\n () => import(\"../display/filter/ProductorSearch.vue\"),\n);\n\n//Props\nconst props = defineProps({\n pr: { default: 0, type: Number },\n ps: { default: 30, type: Number },\n routeOrga: { default: undefined, type: String },\n routeQuery: { default: \"\", type: String },\n});\n\n\n//Composables\nconst { t } = useI18n();\nconst {\n searchPattern,\n organisationId,\n searchMinSize,\n paginateFirst,\n isInit\n} = useSimplePageParam(props);\nconst authStore = useAuthStore();\n\n\n//Computed\nconst isPodcastmaker = computed(() =>state.generalParameters.podcastmaker as boolean);\nconst isRolePlaylists = computed(() =>authStore.isRolePlaylists);\n\n</script>\n"],"mappings":"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"}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"PlaylistsPage-C62NUvz4.mjs","names":["displayHelper","_hoisted_1","_hoisted_2","_sfc_render","_resolveComponent","_resolveDirective","_openBlock","_createElementBlock","_createVNode","_withCtx","_createElementVNode","_toDisplayString","_createCommentVNode","_createBlock","_createTextVNode","_withDirectives","_sfc_main","classicApi","_hoisted_1","_sfc_render","_resolveComponent","_openBlock","_createBlock","_withCtx","_createElementVNode","_createElementBlock","_Fragment","_renderList","_createVNode","_createTextVNode","_toDisplayString","_createCommentVNode","_sfc_main","_resolveComponent","_openBlock","_createElementBlock","_createBlock","_withCtx","_createElementVNode","_toDisplayString","_createCommentVNode","_createVNode","_sfc_main"],"sources":["../src/components/display/playlist/PlaylistItem.vue","../src/components/display/playlist/PlaylistItem.vue","../src/stores/class/general/playlist.ts","../src/components/display/playlist/PlaylistList.vue","../src/components/display/playlist/PlaylistList.vue","../src/components/pages/PlaylistsPage.vue","../src/components/pages/PlaylistsPage.vue"],"sourcesContent":["<template>\n <article class=\"classic-element-container\">\n <router-link\n :to=\"{\n name: 'playlist',\n params: { playlistId: playlist.playlistId },\n }\"\n :title=\"t('Playlist name page', { name: name })\"\n class=\"d-flex flex-grow-1 text-dark\"\n >\n <div class=\"classic-element-text\">\n <div v-if=\"!activePlaylist\" class=\"sticker-empty-ressource\">\n {{ t(\"Empty playlist\") }}\n </div>\n <div class=\"d-flex align-items-center element-name basic-line-clamp\">\n {{ name }}\n </div>\n <div\n ref=\"descriptionPlaylistContainer\"\n class=\"element-description html-wysiwyg-content\"\n >\n <!-- eslint-disable vue/no-v-html -->\n <div ref=\"descriptionPlaylist\" v-html=\"urlify(description)\" />\n <!-- eslint-enable -->\n </div>\n <router-link\n v-if=\"!state.generalParameters.podcastmaker && playlist.organisation\"\n :to=\"{\n name: 'productor',\n params: { productorId: playlist.organisation.id },\n }\"\n class=\"text-dark mt-auto py-1\"\n >\n © {{ playlist.organisation.name }}\n </router-link>\n </div>\n <img\n v-lazy=\"useProxyImageUrl(playlist.imageUrl, '250')\"\n width=\"250\"\n height=\"250\"\n aria-hidden=\"true\"\n alt=\"\"\n \n :title=\"t('Playlist name image', { name: name })\"\n class=\"img-box\"\n />\n </router-link>\n </article>\n</template>\n\n<script setup lang=\"ts\">\nimport { Playlist } from \"@/stores/class/general/playlist\";\nimport { state } from \"../../../stores/ParamSdkStore\";\nimport {useImageProxy} from \"../../composable/useImageProxy\";\nimport displayHelper from \"../../../helper/displayHelper\";\nimport { computed, onMounted, useTemplateRef } from \"vue\";\nimport { useI18n } from \"vue-i18n\";\n\n//Props \nconst props = defineProps({\n playlist: { default: () => ({}), type: Object as () => Playlist },\n})\n\n//Composables\nconst { t } = useI18n();\nconst { useProxyImageUrl } = useImageProxy();\n\n//Computed\nconst description = computed(() => props.playlist.description ?? \"\");\nconst name = computed(() => props.playlist.title ?? \"\");\nconst activePlaylist = computed(() => 0 !== Object.keys(props.playlist.samplingViews ?? []).length);\n\nonMounted(()=>{\n const playlistDesc = useTemplateRef('descriptionPlaylist')?.value as HTMLElement;\n const playlistDescContainer = useTemplateRef('descriptionPlaylistContainer')?.value as HTMLElement;\n if (playlistDesc?.clientHeight > playlistDescContainer?.clientHeight) {\n playlistDescContainer.classList.add(\"after-element-description\");\n }\n})\n\n//Methods\nfunction urlify(text:string|undefined){\n return displayHelper.urlify(text);\n}\n</script>\n<style lang=\"scss\">\n.octopus-app .sticker-empty-ressource{\n position: absolute;\n top: 5px;\n right: 5px;\n align-self: center;\n background: var(--octopus-tertiary);\n padding: 0.5rem;\n transition: all 0.5s ease;\n color: var(--octopus-color-on-primary);\n font-size: 0.6rem;\n font-weight: bold;\n letter-spacing: 1px;\n box-shadow: 10px 10px 34px -15px var(--octopus-shadow);\n border-radius: 255px 15px 225px 15px/15px 225px 15px 255px;\n border: solid 2px var(--octopus-color-text);\n cursor: auto;\n\n &:hover {\n box-shadow: 2px 8px 4px -6px var(--octopus-shadow);\n background: var(--octopus-primary);\n }\n}\n</style>\n\n","<template>\n <article class=\"classic-element-container\">\n <router-link\n :to=\"{\n name: 'playlist',\n params: { playlistId: playlist.playlistId },\n }\"\n :title=\"t('Playlist name page', { name: name })\"\n class=\"d-flex flex-grow-1 text-dark\"\n >\n <div class=\"classic-element-text\">\n <div v-if=\"!activePlaylist\" class=\"sticker-empty-ressource\">\n {{ t(\"Empty playlist\") }}\n </div>\n <div class=\"d-flex align-items-center element-name basic-line-clamp\">\n {{ name }}\n </div>\n <div\n ref=\"descriptionPlaylistContainer\"\n class=\"element-description html-wysiwyg-content\"\n >\n <!-- eslint-disable vue/no-v-html -->\n <div ref=\"descriptionPlaylist\" v-html=\"urlify(description)\" />\n <!-- eslint-enable -->\n </div>\n <router-link\n v-if=\"!state.generalParameters.podcastmaker && playlist.organisation\"\n :to=\"{\n name: 'productor',\n params: { productorId: playlist.organisation.id },\n }\"\n class=\"text-dark mt-auto py-1\"\n >\n © {{ playlist.organisation.name }}\n </router-link>\n </div>\n <img\n v-lazy=\"useProxyImageUrl(playlist.imageUrl, '250')\"\n width=\"250\"\n height=\"250\"\n aria-hidden=\"true\"\n alt=\"\"\n \n :title=\"t('Playlist name image', { name: name })\"\n class=\"img-box\"\n />\n </router-link>\n </article>\n</template>\n\n<script setup lang=\"ts\">\nimport { Playlist } from \"@/stores/class/general/playlist\";\nimport { state } from \"../../../stores/ParamSdkStore\";\nimport {useImageProxy} from \"../../composable/useImageProxy\";\nimport displayHelper from \"../../../helper/displayHelper\";\nimport { computed, onMounted, useTemplateRef } from \"vue\";\nimport { useI18n } from \"vue-i18n\";\n\n//Props \nconst props = defineProps({\n playlist: { default: () => ({}), type: Object as () => Playlist },\n})\n\n//Composables\nconst { t } = useI18n();\nconst { useProxyImageUrl } = useImageProxy();\n\n//Computed\nconst description = computed(() => props.playlist.description ?? \"\");\nconst name = computed(() => props.playlist.title ?? \"\");\nconst activePlaylist = computed(() => 0 !== Object.keys(props.playlist.samplingViews ?? []).length);\n\nonMounted(()=>{\n const playlistDesc = useTemplateRef('descriptionPlaylist')?.value as HTMLElement;\n const playlistDescContainer = useTemplateRef('descriptionPlaylistContainer')?.value as HTMLElement;\n if (playlistDesc?.clientHeight > playlistDescContainer?.clientHeight) {\n playlistDescContainer.classList.add(\"after-element-description\");\n }\n})\n\n//Methods\nfunction urlify(text:string|undefined){\n return displayHelper.urlify(text);\n}\n</script>\n<style lang=\"scss\">\n.octopus-app .sticker-empty-ressource{\n position: absolute;\n top: 5px;\n right: 5px;\n align-self: center;\n background: var(--octopus-tertiary);\n padding: 0.5rem;\n transition: all 0.5s ease;\n color: var(--octopus-color-on-primary);\n font-size: 0.6rem;\n font-weight: bold;\n letter-spacing: 1px;\n box-shadow: 10px 10px 34px -15px var(--octopus-shadow);\n border-radius: 255px 15px 225px 15px/15px 225px 15px 255px;\n border: solid 2px var(--octopus-color-text);\n cursor: auto;\n\n &:hover {\n box-shadow: 2px 8px 4px -6px var(--octopus-shadow);\n background: var(--octopus-primary);\n }\n}\n</style>\n\n","import { emptyOrganisationData, Organisation } from \"./organisation\";\nimport { Person } from \"../user/person\";\nimport { FetchParam } from \"./fetchParam\";\nimport { Annotations } from \".\";\nimport { ItuneCategory } from \"./ituneCategory\";\n\n/**\n * Type of ambiance for the playlist\n * see #11919\n */\nexport enum PlaylistAmbianceType {\n NONE = \"NONE\",\n AMIBANCE = \"AMBIANCE\",\n AMBIANCE_PROGRAMMED = \"AMBIANCE_PROGRAMMED\"\n}\n\nexport interface Playlist {\n ambianceType?: PlaylistAmbianceType;\n imageUrl?: string;\n description: string;\n organisation?: Organisation;\n playlistId: number;\n podcasts?: Array<number | undefined>;\n score: number;\n title: string;\n type: string;\n samplingViews?: Array<PlaylistRule>;\n publisher?: Person;\n /** The annotations of the playlist */\n annotations?: Annotations;\n copyright?: string;\n optItunesCategories?: Array<ItuneCategory>;\n}\n\nexport function emptyPlaylistData(): Playlist {\n return {\n ambianceType: PlaylistAmbianceType.NONE,\n description: \"\",\n playlistId: 0,\n podcasts: undefined,\n score: 0,\n title: \"\",\n type: \"DYNAMIC\",\n samplingViews: [],\n organisation: emptyOrganisationData()\n };\n}\n\nexport interface PlaylistRule {\n maxSize: number;\n podcastId?: number;\n query?: FetchParam;\n type?: string;\n title?: string;\n}\n\nexport function emptyPlaylistRule(): PlaylistRule {\n return {\n maxSize: 1,\n query: {},\n title: undefined,\n };\n}\n","<template>\n <ListPaginate\n id=\"playlistListPaginate\"\n v-model:first=\"dfirst\"\n v-model:rows-per-page=\"dsize\"\n v-model:is-mobile=\"isMobile\"\n :text-count=\"\n displayCount > 1\n ? `${t('Number playlists', { nb: displayCount })}`\n : undefined\n \"\n :total-count=\"totalCount\"\n :loading=\"loading\"\n :loading-text=\"loading ? t('Loading content ...') : undefined\"\n :player-responsive=\"true\"\n >\n <template #list>\n <div class=\"octopus-element-list two-items-list\">\n <ClassicLazy\n v-for=\"p in displayArray\"\n :key=\"p.playlistId\"\n :min-height=\"250\"\n class=\"d-flex flex-column flex-grow-1\"\n >\n <PlaylistItem v-if=\"0 !== p.playlistId\" :playlist=\"p\" />\n <template #preview>\n <router-link\n :to=\"{\n name: 'playlist',\n params: { playlistId: p.playlistId },\n }\"\n :title=\"t('Playlist name page', { name: p.title })\"\n >\n {{ p.title }}\n </router-link>\n </template>\n </ClassicLazy>\n </div>\n </template>\n </ListPaginate>\n</template>\n\n<script setup lang=\"ts\">\nimport ClassicLazy from \"../../misc/ClassicLazy.vue\";\nimport ListPaginate from \"../list/ListPaginate.vue\";\nimport {useErrorHandler} from \"../../composable/useErrorHandler\";\nimport classicApi from \"../../../api/classicApi\";\nimport PlaylistItem from \"./PlaylistItem.vue\";\nimport { Playlist, emptyPlaylistData } from \"@/stores/class/general/playlist\";\nimport { useFilterStore } from \"../../../stores/FilterStore\";\nimport { computed, onMounted, Ref, ref, watch } from \"vue\";\nimport { AxiosError } from \"axios\";\nimport { ListClassicReturn } from \"@/stores/class/general/listReturn\";\nimport { useI18n } from \"vue-i18n\";\n\n//Props \nconst props = defineProps({\n first: { default: 0, type: Number },\n size: { default: 30, type: Number },\n query: { default: undefined, type: String },\n organisationId: { default: undefined, type: String },\n})\n\n//Data \nconst loading = ref(true);\nconst dfirst = ref(props.first);\nconst dsize = ref(props.size);\nconst totalCount = ref(0);\nconst displayCount = ref(0);\nconst isMobile = ref(false);\nconst playlists: Ref<Array<Playlist>> = ref([]);\n\n\n//Composables\nconst { t } = useI18n();\nconst {handle403} = useErrorHandler();\nconst filterStore = useFilterStore();\n\n\n//Computed\nconst displayArray = computed(() => {\n if (isMobile.value) {\n return playlists.value;\n }\n return playlists.value.slice(\n dfirst.value,\n Math.min(dfirst.value + dsize.value, totalCount.value),\n );\n});\nconst changed = computed(() => `${props.organisationId}|${props.query}`);\nconst changePaginate = computed(() => `${props.first}|${props.size}`);\nconst sort = computed(() => !props.query ? \"NAME\" : \"SCORE\");\nconst organisation = computed(() => props.organisationId ? props.organisationId : filterStore.filterOrgaId);\n\n\n//Watch\nwatch(changePaginate, () => {\n dfirst.value = props.first;\n dsize.value = props.size;\n});\nwatch(changed, () => fetchContent(true));\nwatch(dsize, () =>fetchContent(true));\nwatch(dfirst, () => {\n if (\n !playlists.value[dfirst.value] ||\n 0 === playlists.value[dfirst.value].playlistId\n ) {\n fetchContent(false);\n }\n});\n\nonMounted(()=>fetchContent(false))\n\n\n//Methods\nasync function fetchContent(reset: boolean): Promise<void> {\n loading.value = true;\n const param = {\n first: reset ? 0 : dfirst.value,\n size: dsize.value,\n query: props.query,\n organisationId: organisation.value,\n type: \"NONE\",\n sort: sort.value,\n };\n try {\n const data = await classicApi.fetchData<ListClassicReturn<Playlist>>({\n api: 0,\n path: \"playlist/search\",\n parameters: param,\n specialTreatement: true,\n });\n afterFetching(reset, data);\n } catch (error) {\n handle403(error as AxiosError);\n }\n}\nfunction afterFetching(\n reset: boolean,\n data: { count: number; result: Array<Playlist>; sort: string },\n): void {\n if (reset) {\n dfirst.value = 0;\n playlists.value.length = 0;\n }\n if (dfirst.value > playlists.value.length) {\n for (\n let i = playlists.value.length - 1, len = dfirst.value + dsize.value;\n i < len;\n i++\n ) {\n playlists.value.push(emptyPlaylistData());\n }\n }\n displayCount.value = data.count;\n const responsePlaylists = data.result.filter((e: Playlist | null) => {\n if (null === e) {\n displayCount.value--;\n }\n return null !== e;\n });\n playlists.value = playlists.value\n .slice(0, dfirst.value)\n .concat(responsePlaylists)\n .concat(\n playlists.value.slice(dfirst.value + dsize.value, playlists.value.length),\n );\n totalCount.value = data.count;\n loading.value = false;\n}\n</script>\n","<template>\n <ListPaginate\n id=\"playlistListPaginate\"\n v-model:first=\"dfirst\"\n v-model:rows-per-page=\"dsize\"\n v-model:is-mobile=\"isMobile\"\n :text-count=\"\n displayCount > 1\n ? `${t('Number playlists', { nb: displayCount })}`\n : undefined\n \"\n :total-count=\"totalCount\"\n :loading=\"loading\"\n :loading-text=\"loading ? t('Loading content ...') : undefined\"\n :player-responsive=\"true\"\n >\n <template #list>\n <div class=\"octopus-element-list two-items-list\">\n <ClassicLazy\n v-for=\"p in displayArray\"\n :key=\"p.playlistId\"\n :min-height=\"250\"\n class=\"d-flex flex-column flex-grow-1\"\n >\n <PlaylistItem v-if=\"0 !== p.playlistId\" :playlist=\"p\" />\n <template #preview>\n <router-link\n :to=\"{\n name: 'playlist',\n params: { playlistId: p.playlistId },\n }\"\n :title=\"t('Playlist name page', { name: p.title })\"\n >\n {{ p.title }}\n </router-link>\n </template>\n </ClassicLazy>\n </div>\n </template>\n </ListPaginate>\n</template>\n\n<script setup lang=\"ts\">\nimport ClassicLazy from \"../../misc/ClassicLazy.vue\";\nimport ListPaginate from \"../list/ListPaginate.vue\";\nimport {useErrorHandler} from \"../../composable/useErrorHandler\";\nimport classicApi from \"../../../api/classicApi\";\nimport PlaylistItem from \"./PlaylistItem.vue\";\nimport { Playlist, emptyPlaylistData } from \"@/stores/class/general/playlist\";\nimport { useFilterStore } from \"../../../stores/FilterStore\";\nimport { computed, onMounted, Ref, ref, watch } from \"vue\";\nimport { AxiosError } from \"axios\";\nimport { ListClassicReturn } from \"@/stores/class/general/listReturn\";\nimport { useI18n } from \"vue-i18n\";\n\n//Props \nconst props = defineProps({\n first: { default: 0, type: Number },\n size: { default: 30, type: Number },\n query: { default: undefined, type: String },\n organisationId: { default: undefined, type: String },\n})\n\n//Data \nconst loading = ref(true);\nconst dfirst = ref(props.first);\nconst dsize = ref(props.size);\nconst totalCount = ref(0);\nconst displayCount = ref(0);\nconst isMobile = ref(false);\nconst playlists: Ref<Array<Playlist>> = ref([]);\n\n\n//Composables\nconst { t } = useI18n();\nconst {handle403} = useErrorHandler();\nconst filterStore = useFilterStore();\n\n\n//Computed\nconst displayArray = computed(() => {\n if (isMobile.value) {\n return playlists.value;\n }\n return playlists.value.slice(\n dfirst.value,\n Math.min(dfirst.value + dsize.value, totalCount.value),\n );\n});\nconst changed = computed(() => `${props.organisationId}|${props.query}`);\nconst changePaginate = computed(() => `${props.first}|${props.size}`);\nconst sort = computed(() => !props.query ? \"NAME\" : \"SCORE\");\nconst organisation = computed(() => props.organisationId ? props.organisationId : filterStore.filterOrgaId);\n\n\n//Watch\nwatch(changePaginate, () => {\n dfirst.value = props.first;\n dsize.value = props.size;\n});\nwatch(changed, () => fetchContent(true));\nwatch(dsize, () =>fetchContent(true));\nwatch(dfirst, () => {\n if (\n !playlists.value[dfirst.value] ||\n 0 === playlists.value[dfirst.value].playlistId\n ) {\n fetchContent(false);\n }\n});\n\nonMounted(()=>fetchContent(false))\n\n\n//Methods\nasync function fetchContent(reset: boolean): Promise<void> {\n loading.value = true;\n const param = {\n first: reset ? 0 : dfirst.value,\n size: dsize.value,\n query: props.query,\n organisationId: organisation.value,\n type: \"NONE\",\n sort: sort.value,\n };\n try {\n const data = await classicApi.fetchData<ListClassicReturn<Playlist>>({\n api: 0,\n path: \"playlist/search\",\n parameters: param,\n specialTreatement: true,\n });\n afterFetching(reset, data);\n } catch (error) {\n handle403(error as AxiosError);\n }\n}\nfunction afterFetching(\n reset: boolean,\n data: { count: number; result: Array<Playlist>; sort: string },\n): void {\n if (reset) {\n dfirst.value = 0;\n playlists.value.length = 0;\n }\n if (dfirst.value > playlists.value.length) {\n for (\n let i = playlists.value.length - 1, len = dfirst.value + dsize.value;\n i < len;\n i++\n ) {\n playlists.value.push(emptyPlaylistData());\n }\n }\n displayCount.value = data.count;\n const responsePlaylists = data.result.filter((e: Playlist | null) => {\n if (null === e) {\n displayCount.value--;\n }\n return null !== e;\n });\n playlists.value = playlists.value\n .slice(0, dfirst.value)\n .concat(responsePlaylists)\n .concat(\n playlists.value.slice(dfirst.value + dsize.value, playlists.value.length),\n );\n totalCount.value = data.count;\n loading.value = false;\n}\n</script>\n","<template>\n <section v-if=\"isInit\" class=\"page-box\">\n <router-link\n v-if=\"isRolePlaylists && !isPodcastmaker\"\n to=\"/main/priv/edit/playlist\"\n class=\"d-flex justify-content-center my-3\"\n >\n <div class=\"btn btn-primary\">\n {{ t(\"Create playlist\") }}\n </div>\n </router-link>\n <ProductorSearch\n v-model:organisation-id=\"organisationId\"\n v-model:search-pattern=\"searchPattern\"\n type=\"playlist\"\n />\n <PlaylistList\n :show-count=\"true\"\n :first=\"paginateFirst\"\n :size=\"ps\"\n :query=\"searchMinSize\"\n :organisation-id=\"organisationId\"\n />\n </section>\n</template>\n\n<script setup lang=\"ts\">\nimport { useSimplePageParam } from \"../composable/route/useSimplePageParam\";\nimport PlaylistList from \"../display/playlist/PlaylistList.vue\";\nimport { useAuthStore } from \"../../stores/AuthStore\";\nimport { state } from \"../../stores/ParamSdkStore\";\nimport { computed, defineAsyncComponent } from \"vue\";\nimport { useI18n } from \"vue-i18n\";\nconst ProductorSearch = defineAsyncComponent(\n () => import(\"../display/filter/ProductorSearch.vue\"),\n);\n\n//Props\nconst props = defineProps({\n pr: { default: 0, type: Number },\n ps: { default: 30, type: Number },\n routeOrga: { default: undefined, type: String },\n routeQuery: { default: \"\", type: String },\n});\n\n\n//Composables\nconst { t } = useI18n();\nconst {\n searchPattern,\n organisationId,\n searchMinSize,\n paginateFirst,\n isInit\n} = useSimplePageParam(props);\nconst authStore = useAuthStore();\n\n\n//Computed\nconst isPodcastmaker = computed(() =>state.generalParameters.podcastmaker as boolean);\nconst isRolePlaylists = computed(() =>authStore.isRolePlaylists);\n\n</script>\n","<template>\n <section v-if=\"isInit\" class=\"page-box\">\n <router-link\n v-if=\"isRolePlaylists && !isPodcastmaker\"\n to=\"/main/priv/edit/playlist\"\n class=\"d-flex justify-content-center my-3\"\n >\n <div class=\"btn btn-primary\">\n {{ t(\"Create playlist\") }}\n </div>\n </router-link>\n <ProductorSearch\n v-model:organisation-id=\"organisationId\"\n v-model:search-pattern=\"searchPattern\"\n type=\"playlist\"\n />\n <PlaylistList\n :show-count=\"true\"\n :first=\"paginateFirst\"\n :size=\"ps\"\n :query=\"searchMinSize\"\n :organisation-id=\"organisationId\"\n />\n </section>\n</template>\n\n<script setup lang=\"ts\">\nimport { useSimplePageParam } from \"../composable/route/useSimplePageParam\";\nimport PlaylistList from \"../display/playlist/PlaylistList.vue\";\nimport { useAuthStore } from \"../../stores/AuthStore\";\nimport { state } from \"../../stores/ParamSdkStore\";\nimport { computed, defineAsyncComponent } from \"vue\";\nimport { useI18n } from \"vue-i18n\";\nconst ProductorSearch = defineAsyncComponent(\n () => import(\"../display/filter/ProductorSearch.vue\"),\n);\n\n//Props\nconst props = defineProps({\n pr: { default: 0, type: Number },\n ps: { default: 30, type: Number },\n routeOrga: { default: undefined, type: String },\n routeQuery: { default: \"\", type: String },\n});\n\n\n//Composables\nconst { t } = useI18n();\nconst {\n searchPattern,\n organisationId,\n searchMinSize,\n paginateFirst,\n isInit\n} = useSimplePageParam(props);\nconst authStore = useAuthStore();\n\n\n//Computed\nconst isPodcastmaker = computed(() =>state.generalParameters.podcastmaker as boolean);\nconst isRolePlaylists = computed(() =>authStore.isRolePlaylists);\n\n</script>\n"],"mappings":"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"}
@@ -1,9 +1,9 @@
1
- import { A as e, i as t, r as n, t as r } from "./classicApi-pmODlqv5.mjs";
2
- import { t as i } from "./ListPaginate-5uRK_QKJ.mjs";
1
+ import { i as e, j as t, r as n, t as r } from "./classicApi-CGipMqf7.mjs";
2
+ import { t as i } from "./ListPaginate-BPdnBcpe.mjs";
3
3
  import { t as a } from "./displayHelper-DQtoqc_6.mjs";
4
- import { t as o } from "./useImageProxy-8ndy_oTo.mjs";
5
- import { t as s } from "./useErrorHandler-D9W2BURn.mjs";
6
- import { t as c } from "./useSimplePageParam-DFKSEyiE.mjs";
4
+ import { t as o } from "./useImageProxy-CCpDzPmQ.mjs";
5
+ import { t as s } from "./useErrorHandler-x9sjDYSz.mjs";
6
+ import { t as c } from "./useSimplePageParam-BrtYXOUt.mjs";
7
7
  import { n as l } from "./organisation-JgfYj1Jp.mjs";
8
8
  import { t as u } from "./ClassicLazy-CDhWc5-4.mjs";
9
9
  import { Fragment as d, computed as f, createBlock as p, createCommentVNode as m, createElementBlock as h, createElementVNode as g, createTextVNode as _, createVNode as v, defineAsyncComponent as y, defineComponent as b, isRef as x, onMounted as S, openBlock as C, ref as w, renderList as T, resolveComponent as E, resolveDirective as D, toDisplayString as O, unref as k, useTemplateRef as A, watch as j, withCtx as M, withDirectives as N } from "vue";
@@ -21,8 +21,8 @@ var F = { class: "classic-element-container" }, I = { class: "classic-element-te
21
21
  default: () => ({}),
22
22
  type: Object
23
23
  } },
24
- setup(t) {
25
- let n = t, { t: r } = P(), { useProxyImageUrl: i } = o(), s = f(() => n.playlist.description ?? ""), c = f(() => n.playlist.title ?? ""), l = f(() => Object.keys(n.playlist.samplingViews ?? []).length !== 0);
24
+ setup(e) {
25
+ let n = e, { t: r } = P(), { useProxyImageUrl: i } = o(), s = f(() => n.playlist.description ?? ""), c = f(() => n.playlist.title ?? ""), l = f(() => Object.keys(n.playlist.samplingViews ?? []).length !== 0);
26
26
  S(() => {
27
27
  let e = A("descriptionPlaylist")?.value, t = A("descriptionPlaylistContainer")?.value;
28
28
  e?.clientHeight > t?.clientHeight && t.classList.add("after-element-description");
@@ -35,7 +35,7 @@ var F = { class: "classic-element-container" }, I = { class: "classic-element-te
35
35
  return C(), h("article", F, [v(o, {
36
36
  to: {
37
37
  name: "playlist",
38
- params: { playlistId: t.playlist.playlistId }
38
+ params: { playlistId: e.playlist.playlistId }
39
39
  },
40
40
  title: k(r)("Playlist name page", { name: c.value }),
41
41
  class: "d-flex flex-grow-1 text-dark"
@@ -47,15 +47,15 @@ var F = { class: "classic-element-container" }, I = { class: "classic-element-te
47
47
  ref: "descriptionPlaylist",
48
48
  innerHTML: u(s.value)
49
49
  }, null, 8, B)], 512),
50
- !k(e).generalParameters.podcastmaker && t.playlist.organisation ? (C(), p(o, {
50
+ !k(t).generalParameters.podcastmaker && e.playlist.organisation ? (C(), p(o, {
51
51
  key: 1,
52
52
  to: {
53
53
  name: "productor",
54
- params: { productorId: t.playlist.organisation.id }
54
+ params: { productorId: e.playlist.organisation.id }
55
55
  },
56
56
  class: "text-dark mt-auto py-1"
57
57
  }, {
58
- default: M(() => [_(" © " + O(t.playlist.organisation.name), 1)]),
58
+ default: M(() => [_(" © " + O(e.playlist.organisation.name), 1)]),
59
59
  _: 1
60
60
  }, 8, ["to"])) : m("", !0)
61
61
  ]), N(g("img", {
@@ -65,7 +65,7 @@ var F = { class: "classic-element-container" }, I = { class: "classic-element-te
65
65
  alt: "",
66
66
  title: k(r)("Playlist name image", { name: c.value }),
67
67
  class: "img-box"
68
- }, null, 8, V), [[d, k(i)(t.playlist.imageUrl, "250")]])]),
68
+ }, null, 8, V), [[d, k(i)(e.playlist.imageUrl, "250")]])]),
69
69
  _: 1
70
70
  }, 8, ["to", "title"])]);
71
71
  };
@@ -215,7 +215,7 @@ var W = { class: "octopus-element-list two-items-list" }, G = /* @__PURE__ */ b(
215
215
  }
216
216
  },
217
217
  setup(n) {
218
- let r = y(() => import("./ProductorSearch-Z36zTZK4.mjs").then((e) => e.n)), i = n, { t: a } = P(), { searchPattern: o, organisationId: s, searchMinSize: l, paginateFirst: u, isInit: d } = c(i), _ = t(), b = f(() => e.generalParameters.podcastmaker), S = f(() => _.isRolePlaylists);
218
+ let r = y(() => import("./ProductorSearch-BiUEs7mG.mjs").then((e) => e.n)), i = n, { t: a } = P(), { searchPattern: o, organisationId: s, searchMinSize: l, paginateFirst: u, isInit: d } = c(i), _ = e(), b = f(() => t.generalParameters.podcastmaker), S = f(() => _.isRolePlaylists);
219
219
  return (e, t) => {
220
220
  let i = E("router-link");
221
221
  return k(d) ? (C(), h("section", K, [
@@ -0,0 +1 @@
1
+ {"version":3,"file":"PlaylistsPage-Dvh77ql6.mjs","names":["displayHelper","_hoisted_1","_hoisted_2","_sfc_render","_resolveComponent","_resolveDirective","_openBlock","_createElementBlock","_createVNode","_withCtx","_createElementVNode","_toDisplayString","_createCommentVNode","_createBlock","_createTextVNode","_withDirectives","_sfc_main","classicApi","_hoisted_1","_sfc_render","_resolveComponent","_openBlock","_createBlock","_withCtx","_createElementVNode","_createElementBlock","_Fragment","_renderList","_createVNode","_createTextVNode","_toDisplayString","_createCommentVNode","_sfc_main","_resolveComponent","_openBlock","_createElementBlock","_createBlock","_withCtx","_createElementVNode","_toDisplayString","_createCommentVNode","_createVNode","_sfc_main"],"sources":["../src/components/display/playlist/PlaylistItem.vue","../src/components/display/playlist/PlaylistItem.vue","../src/stores/class/general/playlist.ts","../src/components/display/playlist/PlaylistList.vue","../src/components/display/playlist/PlaylistList.vue","../src/components/pages/PlaylistsPage.vue","../src/components/pages/PlaylistsPage.vue"],"sourcesContent":["<template>\n <article class=\"classic-element-container\">\n <router-link\n :to=\"{\n name: 'playlist',\n params: { playlistId: playlist.playlistId },\n }\"\n :title=\"t('Playlist name page', { name: name })\"\n class=\"d-flex flex-grow-1 text-dark\"\n >\n <div class=\"classic-element-text\">\n <div v-if=\"!activePlaylist\" class=\"sticker-empty-ressource\">\n {{ t(\"Empty playlist\") }}\n </div>\n <div class=\"d-flex align-items-center element-name basic-line-clamp\">\n {{ name }}\n </div>\n <div\n ref=\"descriptionPlaylistContainer\"\n class=\"element-description html-wysiwyg-content\"\n >\n <!-- eslint-disable vue/no-v-html -->\n <div ref=\"descriptionPlaylist\" v-html=\"urlify(description)\" />\n <!-- eslint-enable -->\n </div>\n <router-link\n v-if=\"!state.generalParameters.podcastmaker && playlist.organisation\"\n :to=\"{\n name: 'productor',\n params: { productorId: playlist.organisation.id },\n }\"\n class=\"text-dark mt-auto py-1\"\n >\n © {{ playlist.organisation.name }}\n </router-link>\n </div>\n <img\n v-lazy=\"useProxyImageUrl(playlist.imageUrl, '250')\"\n width=\"250\"\n height=\"250\"\n aria-hidden=\"true\"\n alt=\"\"\n \n :title=\"t('Playlist name image', { name: name })\"\n class=\"img-box\"\n />\n </router-link>\n </article>\n</template>\n\n<script setup lang=\"ts\">\nimport { Playlist } from \"@/stores/class/general/playlist\";\nimport { state } from \"../../../stores/ParamSdkStore\";\nimport {useImageProxy} from \"../../composable/useImageProxy\";\nimport displayHelper from \"../../../helper/displayHelper\";\nimport { computed, onMounted, useTemplateRef } from \"vue\";\nimport { useI18n } from \"vue-i18n\";\n\n//Props \nconst props = defineProps({\n playlist: { default: () => ({}), type: Object as () => Playlist },\n})\n\n//Composables\nconst { t } = useI18n();\nconst { useProxyImageUrl } = useImageProxy();\n\n//Computed\nconst description = computed(() => props.playlist.description ?? \"\");\nconst name = computed(() => props.playlist.title ?? \"\");\nconst activePlaylist = computed(() => 0 !== Object.keys(props.playlist.samplingViews ?? []).length);\n\nonMounted(()=>{\n const playlistDesc = useTemplateRef('descriptionPlaylist')?.value as HTMLElement;\n const playlistDescContainer = useTemplateRef('descriptionPlaylistContainer')?.value as HTMLElement;\n if (playlistDesc?.clientHeight > playlistDescContainer?.clientHeight) {\n playlistDescContainer.classList.add(\"after-element-description\");\n }\n})\n\n//Methods\nfunction urlify(text:string|undefined){\n return displayHelper.urlify(text);\n}\n</script>\n<style lang=\"scss\">\n.octopus-app .sticker-empty-ressource{\n position: absolute;\n top: 5px;\n right: 5px;\n align-self: center;\n background: var(--octopus-tertiary);\n padding: 0.5rem;\n transition: all 0.5s ease;\n color: var(--octopus-color-on-primary);\n font-size: 0.6rem;\n font-weight: bold;\n letter-spacing: 1px;\n box-shadow: 10px 10px 34px -15px var(--octopus-shadow);\n border-radius: 255px 15px 225px 15px/15px 225px 15px 255px;\n border: solid 2px var(--octopus-color-text);\n cursor: auto;\n\n &:hover {\n box-shadow: 2px 8px 4px -6px var(--octopus-shadow);\n background: var(--octopus-primary);\n }\n}\n</style>\n\n","<template>\n <article class=\"classic-element-container\">\n <router-link\n :to=\"{\n name: 'playlist',\n params: { playlistId: playlist.playlistId },\n }\"\n :title=\"t('Playlist name page', { name: name })\"\n class=\"d-flex flex-grow-1 text-dark\"\n >\n <div class=\"classic-element-text\">\n <div v-if=\"!activePlaylist\" class=\"sticker-empty-ressource\">\n {{ t(\"Empty playlist\") }}\n </div>\n <div class=\"d-flex align-items-center element-name basic-line-clamp\">\n {{ name }}\n </div>\n <div\n ref=\"descriptionPlaylistContainer\"\n class=\"element-description html-wysiwyg-content\"\n >\n <!-- eslint-disable vue/no-v-html -->\n <div ref=\"descriptionPlaylist\" v-html=\"urlify(description)\" />\n <!-- eslint-enable -->\n </div>\n <router-link\n v-if=\"!state.generalParameters.podcastmaker && playlist.organisation\"\n :to=\"{\n name: 'productor',\n params: { productorId: playlist.organisation.id },\n }\"\n class=\"text-dark mt-auto py-1\"\n >\n © {{ playlist.organisation.name }}\n </router-link>\n </div>\n <img\n v-lazy=\"useProxyImageUrl(playlist.imageUrl, '250')\"\n width=\"250\"\n height=\"250\"\n aria-hidden=\"true\"\n alt=\"\"\n \n :title=\"t('Playlist name image', { name: name })\"\n class=\"img-box\"\n />\n </router-link>\n </article>\n</template>\n\n<script setup lang=\"ts\">\nimport { Playlist } from \"@/stores/class/general/playlist\";\nimport { state } from \"../../../stores/ParamSdkStore\";\nimport {useImageProxy} from \"../../composable/useImageProxy\";\nimport displayHelper from \"../../../helper/displayHelper\";\nimport { computed, onMounted, useTemplateRef } from \"vue\";\nimport { useI18n } from \"vue-i18n\";\n\n//Props \nconst props = defineProps({\n playlist: { default: () => ({}), type: Object as () => Playlist },\n})\n\n//Composables\nconst { t } = useI18n();\nconst { useProxyImageUrl } = useImageProxy();\n\n//Computed\nconst description = computed(() => props.playlist.description ?? \"\");\nconst name = computed(() => props.playlist.title ?? \"\");\nconst activePlaylist = computed(() => 0 !== Object.keys(props.playlist.samplingViews ?? []).length);\n\nonMounted(()=>{\n const playlistDesc = useTemplateRef('descriptionPlaylist')?.value as HTMLElement;\n const playlistDescContainer = useTemplateRef('descriptionPlaylistContainer')?.value as HTMLElement;\n if (playlistDesc?.clientHeight > playlistDescContainer?.clientHeight) {\n playlistDescContainer.classList.add(\"after-element-description\");\n }\n})\n\n//Methods\nfunction urlify(text:string|undefined){\n return displayHelper.urlify(text);\n}\n</script>\n<style lang=\"scss\">\n.octopus-app .sticker-empty-ressource{\n position: absolute;\n top: 5px;\n right: 5px;\n align-self: center;\n background: var(--octopus-tertiary);\n padding: 0.5rem;\n transition: all 0.5s ease;\n color: var(--octopus-color-on-primary);\n font-size: 0.6rem;\n font-weight: bold;\n letter-spacing: 1px;\n box-shadow: 10px 10px 34px -15px var(--octopus-shadow);\n border-radius: 255px 15px 225px 15px/15px 225px 15px 255px;\n border: solid 2px var(--octopus-color-text);\n cursor: auto;\n\n &:hover {\n box-shadow: 2px 8px 4px -6px var(--octopus-shadow);\n background: var(--octopus-primary);\n }\n}\n</style>\n\n","import { emptyOrganisationData, Organisation } from \"./organisation\";\nimport { Person } from \"../user/person\";\nimport { FetchParam } from \"./fetchParam\";\nimport { Annotations } from \".\";\nimport { ItuneCategory } from \"./ituneCategory\";\n\n/**\n * Type of ambiance for the playlist\n * see #11919\n */\nexport enum PlaylistAmbianceType {\n NONE = \"NONE\",\n AMIBANCE = \"AMBIANCE\",\n AMBIANCE_PROGRAMMED = \"AMBIANCE_PROGRAMMED\"\n}\n\nexport interface Playlist {\n ambianceType?: PlaylistAmbianceType;\n imageUrl?: string;\n description: string;\n organisation?: Organisation;\n playlistId: number;\n podcasts?: Array<number | undefined>;\n score: number;\n title: string;\n type: string;\n samplingViews?: Array<PlaylistRule>;\n publisher?: Person;\n /** The annotations of the playlist */\n annotations?: Annotations;\n copyright?: string;\n optItunesCategories?: Array<ItuneCategory>;\n}\n\nexport function emptyPlaylistData(): Playlist {\n return {\n ambianceType: PlaylistAmbianceType.NONE,\n description: \"\",\n playlistId: 0,\n podcasts: undefined,\n score: 0,\n title: \"\",\n type: \"DYNAMIC\",\n samplingViews: [],\n organisation: emptyOrganisationData()\n };\n}\n\nexport interface PlaylistRule {\n maxSize: number;\n podcastId?: number;\n query?: FetchParam;\n type?: string;\n title?: string;\n}\n\nexport function emptyPlaylistRule(): PlaylistRule {\n return {\n maxSize: 1,\n query: {},\n title: undefined,\n };\n}\n","<template>\n <ListPaginate\n id=\"playlistListPaginate\"\n v-model:first=\"dfirst\"\n v-model:rows-per-page=\"dsize\"\n v-model:is-mobile=\"isMobile\"\n :text-count=\"\n displayCount > 1\n ? `${t('Number playlists', { nb: displayCount })}`\n : undefined\n \"\n :total-count=\"totalCount\"\n :loading=\"loading\"\n :loading-text=\"loading ? t('Loading content ...') : undefined\"\n :player-responsive=\"true\"\n >\n <template #list>\n <div class=\"octopus-element-list two-items-list\">\n <ClassicLazy\n v-for=\"p in displayArray\"\n :key=\"p.playlistId\"\n :min-height=\"250\"\n class=\"d-flex flex-column flex-grow-1\"\n >\n <PlaylistItem v-if=\"0 !== p.playlistId\" :playlist=\"p\" />\n <template #preview>\n <router-link\n :to=\"{\n name: 'playlist',\n params: { playlistId: p.playlistId },\n }\"\n :title=\"t('Playlist name page', { name: p.title })\"\n >\n {{ p.title }}\n </router-link>\n </template>\n </ClassicLazy>\n </div>\n </template>\n </ListPaginate>\n</template>\n\n<script setup lang=\"ts\">\nimport ClassicLazy from \"../../misc/ClassicLazy.vue\";\nimport ListPaginate from \"../list/ListPaginate.vue\";\nimport {useErrorHandler} from \"../../composable/useErrorHandler\";\nimport classicApi from \"../../../api/classicApi\";\nimport PlaylistItem from \"./PlaylistItem.vue\";\nimport { Playlist, emptyPlaylistData } from \"@/stores/class/general/playlist\";\nimport { useFilterStore } from \"../../../stores/FilterStore\";\nimport { computed, onMounted, Ref, ref, watch } from \"vue\";\nimport { AxiosError } from \"axios\";\nimport { ListClassicReturn } from \"@/stores/class/general/listReturn\";\nimport { useI18n } from \"vue-i18n\";\n\n//Props \nconst props = defineProps({\n first: { default: 0, type: Number },\n size: { default: 30, type: Number },\n query: { default: undefined, type: String },\n organisationId: { default: undefined, type: String },\n})\n\n//Data \nconst loading = ref(true);\nconst dfirst = ref(props.first);\nconst dsize = ref(props.size);\nconst totalCount = ref(0);\nconst displayCount = ref(0);\nconst isMobile = ref(false);\nconst playlists: Ref<Array<Playlist>> = ref([]);\n\n\n//Composables\nconst { t } = useI18n();\nconst {handle403} = useErrorHandler();\nconst filterStore = useFilterStore();\n\n\n//Computed\nconst displayArray = computed(() => {\n if (isMobile.value) {\n return playlists.value;\n }\n return playlists.value.slice(\n dfirst.value,\n Math.min(dfirst.value + dsize.value, totalCount.value),\n );\n});\nconst changed = computed(() => `${props.organisationId}|${props.query}`);\nconst changePaginate = computed(() => `${props.first}|${props.size}`);\nconst sort = computed(() => !props.query ? \"NAME\" : \"SCORE\");\nconst organisation = computed(() => props.organisationId ? props.organisationId : filterStore.filterOrgaId);\n\n\n//Watch\nwatch(changePaginate, () => {\n dfirst.value = props.first;\n dsize.value = props.size;\n});\nwatch(changed, () => fetchContent(true));\nwatch(dsize, () =>fetchContent(true));\nwatch(dfirst, () => {\n if (\n !playlists.value[dfirst.value] ||\n 0 === playlists.value[dfirst.value].playlistId\n ) {\n fetchContent(false);\n }\n});\n\nonMounted(()=>fetchContent(false))\n\n\n//Methods\nasync function fetchContent(reset: boolean): Promise<void> {\n loading.value = true;\n const param = {\n first: reset ? 0 : dfirst.value,\n size: dsize.value,\n query: props.query,\n organisationId: organisation.value,\n type: \"NONE\",\n sort: sort.value,\n };\n try {\n const data = await classicApi.fetchData<ListClassicReturn<Playlist>>({\n api: 0,\n path: \"playlist/search\",\n parameters: param,\n specialTreatement: true,\n });\n afterFetching(reset, data);\n } catch (error) {\n handle403(error as AxiosError);\n }\n}\nfunction afterFetching(\n reset: boolean,\n data: { count: number; result: Array<Playlist>; sort: string },\n): void {\n if (reset) {\n dfirst.value = 0;\n playlists.value.length = 0;\n }\n if (dfirst.value > playlists.value.length) {\n for (\n let i = playlists.value.length - 1, len = dfirst.value + dsize.value;\n i < len;\n i++\n ) {\n playlists.value.push(emptyPlaylistData());\n }\n }\n displayCount.value = data.count;\n const responsePlaylists = data.result.filter((e: Playlist | null) => {\n if (null === e) {\n displayCount.value--;\n }\n return null !== e;\n });\n playlists.value = playlists.value\n .slice(0, dfirst.value)\n .concat(responsePlaylists)\n .concat(\n playlists.value.slice(dfirst.value + dsize.value, playlists.value.length),\n );\n totalCount.value = data.count;\n loading.value = false;\n}\n</script>\n","<template>\n <ListPaginate\n id=\"playlistListPaginate\"\n v-model:first=\"dfirst\"\n v-model:rows-per-page=\"dsize\"\n v-model:is-mobile=\"isMobile\"\n :text-count=\"\n displayCount > 1\n ? `${t('Number playlists', { nb: displayCount })}`\n : undefined\n \"\n :total-count=\"totalCount\"\n :loading=\"loading\"\n :loading-text=\"loading ? t('Loading content ...') : undefined\"\n :player-responsive=\"true\"\n >\n <template #list>\n <div class=\"octopus-element-list two-items-list\">\n <ClassicLazy\n v-for=\"p in displayArray\"\n :key=\"p.playlistId\"\n :min-height=\"250\"\n class=\"d-flex flex-column flex-grow-1\"\n >\n <PlaylistItem v-if=\"0 !== p.playlistId\" :playlist=\"p\" />\n <template #preview>\n <router-link\n :to=\"{\n name: 'playlist',\n params: { playlistId: p.playlistId },\n }\"\n :title=\"t('Playlist name page', { name: p.title })\"\n >\n {{ p.title }}\n </router-link>\n </template>\n </ClassicLazy>\n </div>\n </template>\n </ListPaginate>\n</template>\n\n<script setup lang=\"ts\">\nimport ClassicLazy from \"../../misc/ClassicLazy.vue\";\nimport ListPaginate from \"../list/ListPaginate.vue\";\nimport {useErrorHandler} from \"../../composable/useErrorHandler\";\nimport classicApi from \"../../../api/classicApi\";\nimport PlaylistItem from \"./PlaylistItem.vue\";\nimport { Playlist, emptyPlaylistData } from \"@/stores/class/general/playlist\";\nimport { useFilterStore } from \"../../../stores/FilterStore\";\nimport { computed, onMounted, Ref, ref, watch } from \"vue\";\nimport { AxiosError } from \"axios\";\nimport { ListClassicReturn } from \"@/stores/class/general/listReturn\";\nimport { useI18n } from \"vue-i18n\";\n\n//Props \nconst props = defineProps({\n first: { default: 0, type: Number },\n size: { default: 30, type: Number },\n query: { default: undefined, type: String },\n organisationId: { default: undefined, type: String },\n})\n\n//Data \nconst loading = ref(true);\nconst dfirst = ref(props.first);\nconst dsize = ref(props.size);\nconst totalCount = ref(0);\nconst displayCount = ref(0);\nconst isMobile = ref(false);\nconst playlists: Ref<Array<Playlist>> = ref([]);\n\n\n//Composables\nconst { t } = useI18n();\nconst {handle403} = useErrorHandler();\nconst filterStore = useFilterStore();\n\n\n//Computed\nconst displayArray = computed(() => {\n if (isMobile.value) {\n return playlists.value;\n }\n return playlists.value.slice(\n dfirst.value,\n Math.min(dfirst.value + dsize.value, totalCount.value),\n );\n});\nconst changed = computed(() => `${props.organisationId}|${props.query}`);\nconst changePaginate = computed(() => `${props.first}|${props.size}`);\nconst sort = computed(() => !props.query ? \"NAME\" : \"SCORE\");\nconst organisation = computed(() => props.organisationId ? props.organisationId : filterStore.filterOrgaId);\n\n\n//Watch\nwatch(changePaginate, () => {\n dfirst.value = props.first;\n dsize.value = props.size;\n});\nwatch(changed, () => fetchContent(true));\nwatch(dsize, () =>fetchContent(true));\nwatch(dfirst, () => {\n if (\n !playlists.value[dfirst.value] ||\n 0 === playlists.value[dfirst.value].playlistId\n ) {\n fetchContent(false);\n }\n});\n\nonMounted(()=>fetchContent(false))\n\n\n//Methods\nasync function fetchContent(reset: boolean): Promise<void> {\n loading.value = true;\n const param = {\n first: reset ? 0 : dfirst.value,\n size: dsize.value,\n query: props.query,\n organisationId: organisation.value,\n type: \"NONE\",\n sort: sort.value,\n };\n try {\n const data = await classicApi.fetchData<ListClassicReturn<Playlist>>({\n api: 0,\n path: \"playlist/search\",\n parameters: param,\n specialTreatement: true,\n });\n afterFetching(reset, data);\n } catch (error) {\n handle403(error as AxiosError);\n }\n}\nfunction afterFetching(\n reset: boolean,\n data: { count: number; result: Array<Playlist>; sort: string },\n): void {\n if (reset) {\n dfirst.value = 0;\n playlists.value.length = 0;\n }\n if (dfirst.value > playlists.value.length) {\n for (\n let i = playlists.value.length - 1, len = dfirst.value + dsize.value;\n i < len;\n i++\n ) {\n playlists.value.push(emptyPlaylistData());\n }\n }\n displayCount.value = data.count;\n const responsePlaylists = data.result.filter((e: Playlist | null) => {\n if (null === e) {\n displayCount.value--;\n }\n return null !== e;\n });\n playlists.value = playlists.value\n .slice(0, dfirst.value)\n .concat(responsePlaylists)\n .concat(\n playlists.value.slice(dfirst.value + dsize.value, playlists.value.length),\n );\n totalCount.value = data.count;\n loading.value = false;\n}\n</script>\n","<template>\n <section v-if=\"isInit\" class=\"page-box\">\n <router-link\n v-if=\"isRolePlaylists && !isPodcastmaker\"\n to=\"/main/priv/edit/playlist\"\n class=\"d-flex justify-content-center my-3\"\n >\n <div class=\"btn btn-primary\">\n {{ t(\"Create playlist\") }}\n </div>\n </router-link>\n <ProductorSearch\n v-model:organisation-id=\"organisationId\"\n v-model:search-pattern=\"searchPattern\"\n type=\"playlist\"\n />\n <PlaylistList\n :show-count=\"true\"\n :first=\"paginateFirst\"\n :size=\"ps\"\n :query=\"searchMinSize\"\n :organisation-id=\"organisationId\"\n />\n </section>\n</template>\n\n<script setup lang=\"ts\">\nimport { useSimplePageParam } from \"../composable/route/useSimplePageParam\";\nimport PlaylistList from \"../display/playlist/PlaylistList.vue\";\nimport { useAuthStore } from \"../../stores/AuthStore\";\nimport { state } from \"../../stores/ParamSdkStore\";\nimport { computed, defineAsyncComponent } from \"vue\";\nimport { useI18n } from \"vue-i18n\";\nconst ProductorSearch = defineAsyncComponent(\n () => import(\"../display/filter/ProductorSearch.vue\"),\n);\n\n//Props\nconst props = defineProps({\n pr: { default: 0, type: Number },\n ps: { default: 30, type: Number },\n routeOrga: { default: undefined, type: String },\n routeQuery: { default: \"\", type: String },\n});\n\n\n//Composables\nconst { t } = useI18n();\nconst {\n searchPattern,\n organisationId,\n searchMinSize,\n paginateFirst,\n isInit\n} = useSimplePageParam(props);\nconst authStore = useAuthStore();\n\n\n//Computed\nconst isPodcastmaker = computed(() =>state.generalParameters.podcastmaker as boolean);\nconst isRolePlaylists = computed(() =>authStore.isRolePlaylists);\n\n</script>\n","<template>\n <section v-if=\"isInit\" class=\"page-box\">\n <router-link\n v-if=\"isRolePlaylists && !isPodcastmaker\"\n to=\"/main/priv/edit/playlist\"\n class=\"d-flex justify-content-center my-3\"\n >\n <div class=\"btn btn-primary\">\n {{ t(\"Create playlist\") }}\n </div>\n </router-link>\n <ProductorSearch\n v-model:organisation-id=\"organisationId\"\n v-model:search-pattern=\"searchPattern\"\n type=\"playlist\"\n />\n <PlaylistList\n :show-count=\"true\"\n :first=\"paginateFirst\"\n :size=\"ps\"\n :query=\"searchMinSize\"\n :organisation-id=\"organisationId\"\n />\n </section>\n</template>\n\n<script setup lang=\"ts\">\nimport { useSimplePageParam } from \"../composable/route/useSimplePageParam\";\nimport PlaylistList from \"../display/playlist/PlaylistList.vue\";\nimport { useAuthStore } from \"../../stores/AuthStore\";\nimport { state } from \"../../stores/ParamSdkStore\";\nimport { computed, defineAsyncComponent } from \"vue\";\nimport { useI18n } from \"vue-i18n\";\nconst ProductorSearch = defineAsyncComponent(\n () => import(\"../display/filter/ProductorSearch.vue\"),\n);\n\n//Props\nconst props = defineProps({\n pr: { default: 0, type: Number },\n ps: { default: 30, type: Number },\n routeOrga: { default: undefined, type: String },\n routeQuery: { default: \"\", type: String },\n});\n\n\n//Composables\nconst { t } = useI18n();\nconst {\n searchPattern,\n organisationId,\n searchMinSize,\n paginateFirst,\n isInit\n} = useSimplePageParam(props);\nconst authStore = useAuthStore();\n\n\n//Computed\nconst isPodcastmaker = computed(() =>state.generalParameters.podcastmaker as boolean);\nconst isRolePlaylists = computed(() =>authStore.isRolePlaylists);\n\n</script>\n"],"mappings":"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"}