@saooti/octopus-sdk 42.2.1 → 42.2.2

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 (569) hide show
  1. package/dist/{AdvancedSearch-fO5eaqLJ.mjs → AdvancedSearch-C4segSRv.mjs} +6 -6
  2. package/dist/AdvancedSearch-C4segSRv.mjs.map +1 -0
  3. package/dist/AdvancedSearch-DD9tnLCw.mjs.map +1 -0
  4. package/dist/{CategoryFilter-Cu2a0YE9.mjs → CategoryFilter-CpplEC8n.mjs} +5 -5
  5. package/dist/CategoryFilter-CpplEC8n.mjs.map +1 -0
  6. package/dist/CategoryFilter-cbQR_ySd.mjs.map +1 -0
  7. package/dist/{CategoryList-DkxZDrO5.mjs → CategoryList-BTabY3vQ.mjs} +2 -2
  8. package/dist/CategoryList-BTabY3vQ.mjs.map +1 -0
  9. package/dist/CategoryList-DHEJoaez.mjs.map +1 -0
  10. package/dist/CategoryPage-BbsCC3Wr.mjs.map +1 -0
  11. package/dist/CategoryPage-BxvUmThb.mjs.map +1 -0
  12. package/dist/{CategoryPage-3HFz1i7_.mjs → CategoryPage-D755GvQZ.mjs} +3 -3
  13. package/dist/CategoryPage-D755GvQZ.mjs.map +1 -0
  14. package/dist/CategoryPage-DDBJ2krs.mjs.map +1 -0
  15. package/dist/CategoryPage-DRCYjOqG.mjs.map +1 -0
  16. package/dist/ChapteringModal-CSQqCWIk.mjs.map +1 -0
  17. package/dist/ChapteringModal-Dt8Rsauh.mjs.map +1 -0
  18. package/dist/{ChapteringModal-C-rdkbSz.mjs → ChapteringModal-ei6ZqVJU.mjs} +2 -2
  19. package/dist/ChapteringModal-ei6ZqVJU.mjs.map +1 -0
  20. package/dist/CheckIdentityModal-CNFVJVB_.mjs.map +1 -0
  21. package/dist/{CheckIdentityModal-N9h8yvhC.mjs → CheckIdentityModal-cpMOuJGv.mjs} +3 -3
  22. package/dist/CheckIdentityModal-cpMOuJGv.mjs.map +1 -0
  23. package/dist/ClipboardModal-2ZGF38VB.mjs.map +1 -0
  24. package/dist/{ClipboardModal-CnieIOJr.mjs → ClipboardModal-DzCUqSph.mjs} +2 -2
  25. package/dist/ClipboardModal-DzCUqSph.mjs.map +1 -0
  26. package/dist/CommentInput-CV46HJN8.mjs.map +1 -0
  27. package/dist/{CommentInput-CEioyN7X.mjs → CommentInput-D_p03L68.mjs} +6 -6
  28. package/dist/CommentInput-D_p03L68.mjs.map +1 -0
  29. package/dist/CommentInput-DwRbD74k.mjs.map +1 -0
  30. package/dist/CommentItem-B6_XUaFR.mjs.map +1 -0
  31. package/dist/CommentItem-CbbmwVXB.mjs.map +1 -0
  32. package/dist/CommentItem-DfKKazY0.mjs.map +1 -0
  33. package/dist/CommentItem-JRjSLmui.mjs.map +1 -0
  34. package/dist/{CommentItem-BefuRoxQ.mjs → CommentItem-MFN0JNW1.mjs} +8 -8
  35. package/dist/CommentItem-MFN0JNW1.mjs.map +1 -0
  36. package/dist/{CommentList-BsPwzqkf.mjs → CommentList-BkKy5ftL.mjs} +3 -3
  37. package/dist/CommentList-BkKy5ftL.mjs.map +1 -0
  38. package/dist/CommentList-BrP71Ug4.mjs.map +1 -0
  39. package/dist/CommentList-Ng_YXr74.mjs.map +1 -0
  40. package/dist/CommentList-tKA7NFHM.mjs.map +1 -0
  41. package/dist/CommentList-yarlxaXg.mjs.map +1 -0
  42. package/dist/{CommentMoreActions-C86aqy8M.mjs → CommentMoreActions-CBSvuOGJ.mjs} +5 -5
  43. package/dist/CommentMoreActions-CBSvuOGJ.mjs.map +1 -0
  44. package/dist/CommentMoreActions-D7guBdA7.mjs.map +1 -0
  45. package/dist/CommentName-frCHmngc.mjs.map +1 -0
  46. package/dist/{CommentName-DT1QyPi3.mjs → CommentName-zTMSdG4d.mjs} +3 -3
  47. package/dist/CommentName-zTMSdG4d.mjs.map +1 -0
  48. package/dist/{CommentParentInfo-9Fe-3e6c.mjs → CommentParentInfo-CRTYPb8P.mjs} +2 -2
  49. package/dist/CommentParentInfo-CRTYPb8P.mjs.map +1 -0
  50. package/dist/CommentParentInfo-D8qquB6k.mjs.map +1 -0
  51. package/dist/CommentParentInfo-DC4Q6wNO.mjs.map +1 -0
  52. package/dist/CommentParentInfo-temUvqNv.mjs.map +1 -0
  53. package/dist/{CommentPlayer-CiWQM64Y.mjs → CommentPlayer-BMuLmZdI.mjs} +3 -3
  54. package/dist/CommentPlayer-BMuLmZdI.mjs.map +1 -0
  55. package/dist/CommentPlayer-BPA_lEoE.mjs.map +1 -0
  56. package/dist/CommentPlayer-CUNi1Lxv.mjs.map +1 -0
  57. package/dist/{CommentSection-Be38YIkC.mjs → CommentSection-B91sHMDT.mjs} +5 -5
  58. package/dist/CommentSection-B91sHMDT.mjs.map +1 -0
  59. package/dist/CommentSection-CpYd7i8U.mjs.map +1 -0
  60. package/dist/CommentSection-CrqweNX4.mjs.map +1 -0
  61. package/dist/CommentSection-G8rMWPrM.mjs.map +1 -0
  62. package/dist/CommentSection-xjY6h7nn.mjs.map +1 -0
  63. package/dist/CommentStore-9WWuGwIj.mjs.map +1 -0
  64. package/dist/{CommentStore-Dv7j94Uo.mjs → CommentStore-ClU882RI.mjs} +2 -2
  65. package/dist/CommentStore-ClU882RI.mjs.map +1 -0
  66. package/dist/ContractPreviewModal-C4_20E99.mjs.map +1 -0
  67. package/dist/{ContractPreviewModal-CPT6bDpJ.mjs → ContractPreviewModal-Dn5MeLFo.mjs} +2 -2
  68. package/dist/ContractPreviewModal-Dn5MeLFo.mjs.map +1 -0
  69. package/dist/{DownloadPodcastButton-6D8qNAkT.mjs → DownloadPodcastButton-BI_sZWcJ.mjs} +3 -3
  70. package/dist/DownloadPodcastButton-BI_sZWcJ.mjs.map +1 -0
  71. package/dist/DownloadPodcastButton-CSRcg8Nl.mjs.map +1 -0
  72. package/dist/EditCommentModal-KAP1l9RK.mjs.map +1 -0
  73. package/dist/{EditCommentModal-aAcjhc0v.mjs → EditCommentModal-RbVMVDOp.mjs} +2 -2
  74. package/dist/EditCommentModal-RbVMVDOp.mjs.map +1 -0
  75. package/dist/{EmissionGroupChooser-Djt1IZg7.mjs → EmissionGroupChooser-BXqM4iXP.mjs} +2 -2
  76. package/dist/EmissionGroupChooser-BXqM4iXP.mjs.map +1 -0
  77. package/dist/EmissionGroupChooser-CO1WBOUi.mjs.map +1 -0
  78. package/dist/EmissionInlineList-B-r4eI3D.mjs.map +1 -0
  79. package/dist/{EmissionInlineList-BcrKpW8S.mjs → EmissionInlineList-Cy1lbYKY.mjs} +6 -6
  80. package/dist/EmissionInlineList-Cy1lbYKY.mjs.map +1 -0
  81. package/dist/EmissionInlineList-IKPyjBTQ.mjs.map +1 -0
  82. package/dist/EmissionItem-982WkWkg.mjs.map +1 -0
  83. package/dist/EmissionItem-B8q9hnN5.mjs.map +1 -0
  84. package/dist/{EmissionItem-DfkPRcPz.mjs → EmissionItem-BwXm3nNx.mjs} +5 -5
  85. package/dist/EmissionItem-BwXm3nNx.mjs.map +1 -0
  86. package/dist/EmissionItem-ZDlQ7B9S.mjs.map +1 -0
  87. package/dist/{EmissionList-DSuGp0JO.mjs → EmissionList-C8OxrndH.mjs} +6 -6
  88. package/dist/EmissionList-C8OxrndH.mjs.map +1 -0
  89. package/dist/EmissionList-C9-UUWMV.mjs.map +1 -0
  90. package/dist/EmissionList-Dk9xS4s_.mjs.map +1 -0
  91. package/dist/EmissionList-nrY7ASws.mjs.map +1 -0
  92. package/dist/EmissionList-vH4NX1NW.mjs.map +1 -0
  93. package/dist/EmissionPage-BHAPlZw-.mjs.map +1 -0
  94. package/dist/EmissionPage-B_2JalGG.mjs.map +1 -0
  95. package/dist/EmissionPage-D4PjyZzN.mjs.map +1 -0
  96. package/dist/EmissionPage-HGPCRuZD.mjs.map +1 -0
  97. package/dist/{EmissionPage-Bo9fK8HE.mjs → EmissionPage-nCNIiWCo.mjs} +25 -18
  98. package/dist/EmissionPage-nCNIiWCo.mjs.map +1 -0
  99. package/dist/EmissionPlayerItem-B_wRzikv.mjs.map +1 -0
  100. package/dist/{EmissionPlayerItem-D21OrPmm.mjs → EmissionPlayerItem-Degbnz9F.mjs} +5 -5
  101. package/dist/EmissionPlayerItem-Degbnz9F.mjs.map +1 -0
  102. package/dist/EmissionPlayerItem-Dkd0o1ee.mjs.map +1 -0
  103. package/dist/EmissionPresentationItem-BQ7HhOlC.mjs.map +1 -0
  104. package/dist/{EmissionPresentationItem-CwDIBurH.mjs → EmissionPresentationItem-CwBGPIgz.mjs} +2 -2
  105. package/dist/EmissionPresentationItem-CwBGPIgz.mjs.map +1 -0
  106. package/dist/{EmissionPresentationList-CASI5laP.mjs → EmissionPresentationList-BKI5mQdw.mjs} +4 -4
  107. package/dist/EmissionPresentationList-BKI5mQdw.mjs.map +1 -0
  108. package/dist/EmissionPresentationList-CLli23rs.mjs.map +1 -0
  109. package/dist/EmissionsPage-CO2xgVOR.mjs.map +1 -0
  110. package/dist/{EmissionsPage-Bw8Qtzlk.mjs → EmissionsPage-Cj7su56Z.mjs} +5 -5
  111. package/dist/EmissionsPage-Cj7su56Z.mjs.map +1 -0
  112. package/dist/EmissionsPage-DJdy0re_.mjs.map +1 -0
  113. package/dist/EmissionsPage-DR9r7_gH.mjs.map +1 -0
  114. package/dist/EmissionsPage-OVNfLKFu.mjs.map +1 -0
  115. package/dist/Error403Page-Ch535DfU.mjs.map +1 -0
  116. package/dist/{Error403Page-nTYCHwTi.mjs → Error403Page-DW2kK8ZZ.mjs} +2 -2
  117. package/dist/Error403Page-DW2kK8ZZ.mjs.map +1 -0
  118. package/dist/FooterGarSection-B76j-WZS.mjs.map +1 -0
  119. package/dist/{FooterGarSection-Cod8Key5.mjs → FooterGarSection-DVdF5RFq.mjs} +4 -4
  120. package/dist/FooterGarSection-DVdF5RFq.mjs.map +1 -0
  121. package/dist/FooterSection-BQiO-D1p.mjs.map +1 -0
  122. package/dist/{FooterSection-4WXBZj7c.mjs → FooterSection-CpYI9OGH.mjs} +5 -5
  123. package/dist/FooterSection-CpYI9OGH.mjs.map +1 -0
  124. package/dist/{HomeDropdown-CVe7yF6Y.mjs → HomeDropdown-D7FezAO8.mjs} +3 -3
  125. package/dist/HomeDropdown-D7FezAO8.mjs.map +1 -0
  126. package/dist/HomeDropdown-DQoMvBgU.mjs.map +1 -0
  127. package/dist/HomePage-BWs_az04.mjs.map +1 -0
  128. package/dist/HomePage-CMPKjRFA.mjs.map +1 -0
  129. package/dist/HomePage-CsXaeTCW.mjs.map +1 -0
  130. package/dist/HomePage-NH7OxpA_.mjs.map +1 -0
  131. package/dist/{HomePage-DupmOw6F.mjs → HomePage-vo6At2bL.mjs} +4 -4
  132. package/dist/HomePage-vo6At2bL.mjs.map +1 -0
  133. package/dist/{PodcastRubriqueList-BeTq7IRu.mjs → InlineRubriqueList-3ZVN9GJk.mjs} +14 -12
  134. package/dist/InlineRubriqueList-3ZVN9GJk.mjs.map +1 -0
  135. package/dist/InlineRubriqueList-D03VCzg8.mjs.map +1 -0
  136. package/dist/LikeSection-DtthHZj6.mjs.map +1 -0
  137. package/dist/{LikeSection-DAid96g9.mjs → LikeSection-jKjhnj88.mjs} +4 -4
  138. package/dist/LikeSection-jKjhnj88.mjs.map +1 -0
  139. package/dist/{ListPaginate-C9saxru9.mjs → ListPaginate-BXNnw_I8.mjs} +3 -3
  140. package/dist/ListPaginate-BXNnw_I8.mjs.map +1 -0
  141. package/dist/ListPaginate-COsL4t78.mjs.map +1 -0
  142. package/dist/ListPaginate-JuC0L113.mjs.map +1 -0
  143. package/dist/LiveHorizontalList-CFs9mGYs.mjs.map +1 -0
  144. package/dist/LiveHorizontalList-CWBQkS78.mjs.map +1 -0
  145. package/dist/LiveHorizontalList-DwPVmnvH.mjs.map +1 -0
  146. package/dist/LiveHorizontalList-jducN58c.mjs.map +1 -0
  147. package/dist/{LiveHorizontalList-OArlzudf.mjs → LiveHorizontalList-wgXkgFLv.mjs} +4 -4
  148. package/dist/LiveHorizontalList-wgXkgFLv.mjs.map +1 -0
  149. package/dist/LiveList-Bp-feBp9.mjs.map +1 -0
  150. package/dist/LiveList-ByyCyWUl.mjs.map +1 -0
  151. package/dist/{LiveList-EqIo_cye.mjs → LiveList-CA5n6VeN.mjs} +6 -6
  152. package/dist/LiveList-CA5n6VeN.mjs.map +1 -0
  153. package/dist/LiveList-Cah5VFun.mjs.map +1 -0
  154. package/dist/LiveList-DTAnN32j.mjs.map +1 -0
  155. package/dist/LivesPage-CNPMz3xS.mjs.map +1 -0
  156. package/dist/{LivesPage-BmHiBN8A.mjs → LivesPage-CTjXgU-Y.mjs} +5 -5
  157. package/dist/LivesPage-CTjXgU-Y.mjs.map +1 -0
  158. package/dist/LivesPage-CdhWyikV.mjs.map +1 -0
  159. package/dist/LivesPage-CwvFSl6G.mjs.map +1 -0
  160. package/dist/LivesPage-DyIfBEPX.mjs.map +1 -0
  161. package/dist/{MapPage-DcXKTGGh.mjs → MapPage-C_nGG0_5.mjs} +3 -3
  162. package/dist/MapPage-C_nGG0_5.mjs.map +1 -0
  163. package/dist/MapPage-DXV40zWN.mjs.map +1 -0
  164. package/dist/{MobileMenu-C0IYBWwF.mjs → MobileMenu-C95GAIm0.mjs} +4 -4
  165. package/dist/MobileMenu-C95GAIm0.mjs.map +1 -0
  166. package/dist/MobileMenu-CfHqWqsL.mjs.map +1 -0
  167. package/dist/NewsletterModal-4Lei4Y59.mjs.map +1 -0
  168. package/dist/{NewsletterModal-BzlUlz3P.mjs → NewsletterModal-B6ky7DBC.mjs} +2 -2
  169. package/dist/NewsletterModal-B6ky7DBC.mjs.map +1 -0
  170. package/dist/OrganisationChooser-BufDZsSd.mjs.map +1 -0
  171. package/dist/{OrganisationChooser-Bm4zqqCH.mjs → OrganisationChooser-CA0_LiTH.mjs} +3 -3
  172. package/dist/OrganisationChooser-CA0_LiTH.mjs.map +1 -0
  173. package/dist/{OrganisationChooserLight-BQ9B91mO.mjs → OrganisationChooserLight-BwG5mNdW.mjs} +2 -2
  174. package/dist/OrganisationChooserLight-BwG5mNdW.mjs.map +1 -0
  175. package/dist/OrganisationChooserLight-C2oGlc9Z.mjs.map +1 -0
  176. package/dist/{PageNotFound-BVQ8M8sO.mjs → PageNotFound-BHpjyNDo.mjs} +3 -3
  177. package/dist/PageNotFound-BHpjyNDo.mjs.map +1 -0
  178. package/dist/PageNotFound-IMnfLZqX.mjs.map +1 -0
  179. package/dist/{ParticipantInlineList-BQtQZFW1.mjs → ParticipantInlineList-A8UwjE4m.mjs} +5 -5
  180. package/dist/ParticipantInlineList-A8UwjE4m.mjs.map +1 -0
  181. package/dist/ParticipantInlineList-BpVOpEBm.mjs.map +1 -0
  182. package/dist/ParticipantInlineList-C5jWxedt.mjs.map +1 -0
  183. package/dist/ParticipantInlineList-C78uhskc.mjs.map +1 -0
  184. package/dist/ParticipantItem--Wv16z3V.mjs.map +1 -0
  185. package/dist/ParticipantItem-B3k4mf2V.mjs.map +1 -0
  186. package/dist/ParticipantItem-DAPOMGZD.mjs.map +1 -0
  187. package/dist/{ParticipantItem-EDPkxTT-.mjs → ParticipantItem-Szz8WXI6.mjs} +4 -4
  188. package/dist/ParticipantItem-Szz8WXI6.mjs.map +1 -0
  189. package/dist/ParticipantPage-BbKUwNKL.mjs.map +1 -0
  190. package/dist/ParticipantPage-Byq-9aCQ.mjs.map +1 -0
  191. package/dist/ParticipantPage-D4RVBlE-.mjs.map +1 -0
  192. package/dist/ParticipantPage-DfLxuZf-.mjs.map +1 -0
  193. package/dist/{ParticipantPage-BF-s1oof.mjs → ParticipantPage-y3OoBod8.mjs} +9 -9
  194. package/dist/ParticipantPage-y3OoBod8.mjs.map +1 -0
  195. package/dist/{ParticipantsPage-Bzt8Hxah.mjs → ParticipantsPage--BxmzVwz.mjs} +7 -7
  196. package/dist/ParticipantsPage--BxmzVwz.mjs.map +1 -0
  197. package/dist/ParticipantsPage-BEPHaCy5.mjs.map +1 -0
  198. package/dist/ParticipantsPage-BlQavFT6.mjs.map +1 -0
  199. package/dist/ParticipantsPage-D8ja25F9.mjs.map +1 -0
  200. package/dist/ParticipantsPage-R8LVrDFY.mjs.map +1 -0
  201. package/dist/{PlayerAnonymousModal-CbrqO1hs.mjs → PlayerAnonymousModal-BGPpTBPW.mjs} +3 -3
  202. package/dist/PlayerAnonymousModal-BGPpTBPW.mjs.map +1 -0
  203. package/dist/PlayerAnonymousModal-BW239BiA.mjs.map +1 -0
  204. package/dist/PlayerCompact-BFC95d7Y.mjs.map +1 -0
  205. package/dist/PlayerCompact-C-WCTFZN.mjs.map +1 -0
  206. package/dist/{PlayerCompact-BtKfz384.mjs → PlayerCompact-DnJns8S2.mjs} +4 -4
  207. package/dist/PlayerCompact-DnJns8S2.mjs.map +1 -0
  208. package/dist/PlayerComponent-B8AGq9pg.mjs.map +1 -0
  209. package/dist/{PlayerComponent-CxNkDcFc.mjs → PlayerComponent-BRBrXVjI.mjs} +27 -39
  210. package/dist/PlayerComponent-BRBrXVjI.mjs.map +1 -0
  211. package/dist/PlayerComponent-BbvNS7sy.mjs.map +1 -0
  212. package/dist/PlayerComponent-By_JAwx_.mjs.map +1 -0
  213. package/dist/PlayerComponent-C425OWjX.mjs.map +1 -0
  214. package/dist/PlayerComponent-C5PNQ3TW.mjs.map +1 -0
  215. package/dist/PlayerComponent-Cnk_vePj.mjs.map +1 -0
  216. package/dist/PlayerComponent-CovfufPB.mjs.map +1 -0
  217. package/dist/PlayerComponent-DC4jQIwE.mjs.map +1 -0
  218. package/dist/PlayerComponent-DEUmVv0M.mjs.map +1 -0
  219. package/dist/PlayerComponent-DOXY0vL0.mjs.map +1 -0
  220. package/dist/PlayerComponent-DajZbHv7.mjs.map +1 -0
  221. package/dist/PlayerComponent-DejSC061.mjs.map +1 -0
  222. package/dist/PlayerComponent-p7W2UNk6.mjs.map +1 -0
  223. package/dist/PlayerLarge-3zzN7qom.mjs.map +1 -0
  224. package/dist/{PlayerLarge-BH6BLQxk.mjs → PlayerLarge-B97rRmrJ.mjs} +12 -10
  225. package/dist/PlayerLarge-B97rRmrJ.mjs.map +1 -0
  226. package/dist/PlayerLarge-BzwrEgVR.mjs.map +1 -0
  227. package/dist/PlayerLarge-CLOwDO6Q.mjs.map +1 -0
  228. package/dist/PlayerLarge-Chv7pMOU.mjs.map +1 -0
  229. package/dist/PlayerLarge-CkWGaDiY.mjs.map +1 -0
  230. package/dist/PlayerLarge-D0NMzCRi.mjs.map +1 -0
  231. package/dist/PlayerLarge-D3obSnYt.mjs.map +1 -0
  232. package/dist/PlayerLarge-DLGXpE3K.mjs.map +1 -0
  233. package/dist/PlayerLarge-QtUrqNm5.mjs.map +1 -0
  234. package/dist/PlayerLarge-juuY9yOX.mjs.map +1 -0
  235. package/dist/PlayerLarge-n7zyM6b_.mjs.map +1 -0
  236. package/dist/PlayerLarge-o4FVk0QB.mjs.map +1 -0
  237. package/dist/PlayerLarge-tMW3v2La.mjs.map +1 -0
  238. package/dist/PlayerPlayButton-CTu0337E.mjs.map +1 -0
  239. package/dist/PlayerPlayButton-CfJWIpoP.mjs.map +1 -0
  240. package/dist/{PlayerPlayButton-DT2OdqnI.mjs → PlayerPlayButton-zKdHGzFr.mjs} +5 -5
  241. package/dist/PlayerPlayButton-zKdHGzFr.mjs.map +1 -0
  242. package/dist/{PlayerProgressBar-CSYnPjZb.mjs → PlayerProgressBar-BG5NG596.mjs} +4 -4
  243. package/dist/PlayerProgressBar-BG5NG596.mjs.map +1 -0
  244. package/dist/PlayerProgressBar-Cjv8JVY2.mjs.map +1 -0
  245. package/dist/PlayerProgressBar-Co0_YEF3.mjs.map +1 -0
  246. package/dist/PlayerStore-B-L2PQ_b.mjs.map +1 -0
  247. package/dist/PlayerStore-C2XzSrF5.mjs.map +1 -0
  248. package/dist/{PlayerStore-DukkcHI_.mjs → PlayerStore-vYmnOEA_.mjs} +3 -3
  249. package/dist/PlayerStore-vYmnOEA_.mjs.map +1 -0
  250. package/dist/PlayerVideo-DD6NaGkU.mjs.map +1 -0
  251. package/dist/{PlayerVideo-_Uz00K_T.mjs → PlayerVideo-Ds0oYeTC.mjs} +5 -5
  252. package/dist/PlayerVideo-Ds0oYeTC.mjs.map +1 -0
  253. package/dist/PlayerVideo-cYHZOYMv.mjs.map +1 -0
  254. package/dist/PlayerVideoDigiteka-BPJdJNEB.mjs.map +1 -0
  255. package/dist/{PlayerVideoDigiteka-CjfuxXBF.mjs → PlayerVideoDigiteka-C7xb0ndg.mjs} +3 -3
  256. package/dist/PlayerVideoDigiteka-C7xb0ndg.mjs.map +1 -0
  257. package/dist/PlayerVideoDigiteka-oqtYXqYK.mjs.map +1 -0
  258. package/dist/PlayerVideoHls-CB4psqbz.mjs.map +1 -0
  259. package/dist/{PlayerVideoHls-Dms7iTSo.mjs → PlayerVideoHls-xSNqzBEw.mjs} +4 -4
  260. package/dist/PlayerVideoHls-xSNqzBEw.mjs.map +1 -0
  261. package/dist/PlayerVideoHls-zNbegJFp.mjs.map +1 -0
  262. package/dist/PlaylistPage-BUj1Lzfp.mjs.map +1 -0
  263. package/dist/PlaylistPage-BhcJkM15.mjs.map +1 -0
  264. package/dist/PlaylistPage-BsHMB2nn.mjs.map +1 -0
  265. package/dist/{PlaylistPage-CQX0LhXn.mjs → PlaylistPage-D4mcAo00.mjs} +12 -12
  266. package/dist/PlaylistPage-D4mcAo00.mjs.map +1 -0
  267. package/dist/PlaylistPage-DjAgejp8.mjs.map +1 -0
  268. package/dist/PlaylistsPage-B3V5-WT9.mjs.map +1 -0
  269. package/dist/PlaylistsPage-DSjvWTw5.mjs.map +1 -0
  270. package/dist/{PlaylistsPage-Bd-u4qlc.mjs → PlaylistsPage-Dr6HKHf8.mjs} +7 -7
  271. package/dist/PlaylistsPage-Dr6HKHf8.mjs.map +1 -0
  272. package/dist/PodcastFilterList-C-8AF1Dn.mjs.map +1 -0
  273. package/dist/{PodcastFilterList-DkH6bqv_.mjs → PodcastFilterList-CYwPiGko.mjs} +3 -3
  274. package/dist/PodcastFilterList-CYwPiGko.mjs.map +1 -0
  275. package/dist/PodcastFilterList-C_d1SyTB.mjs.map +1 -0
  276. package/dist/PodcastFilterList-ClMsIUaO.mjs.map +1 -0
  277. package/dist/PodcastFilterList-DBS0kvW6.mjs.map +1 -0
  278. package/dist/PodcastImage-B8o3T5zK.mjs.map +1 -0
  279. package/dist/{PodcastImage-BtxcPlrh.mjs → PodcastImage-Bs1lpubL.mjs} +4 -4
  280. package/dist/PodcastImage-Bs1lpubL.mjs.map +1 -0
  281. package/dist/PodcastImage-DBB5689n.mjs.map +1 -0
  282. package/dist/PodcastImage-DNLZH0dY.mjs.map +1 -0
  283. package/dist/PodcastImage-DrV8oxG8.mjs.map +1 -0
  284. package/dist/{PodcastInlineList-CVWfH5np.mjs → PodcastInlineList-B7-2QswT.mjs} +2 -2
  285. package/dist/PodcastInlineList-B7-2QswT.mjs.map +1 -0
  286. package/dist/PodcastInlineList-BVMV6Wvd.mjs.map +1 -0
  287. package/dist/PodcastInlineList-BXPpF0YD.mjs.map +1 -0
  288. package/dist/PodcastInlineList-CLjO1SpD.mjs.map +1 -0
  289. package/dist/PodcastInlineList-Cf5YF0j9.mjs.map +1 -0
  290. package/dist/PodcastInlineListTemplate-BX0tXOFx.mjs.map +1 -0
  291. package/dist/{PodcastInlineListTemplate-BWw1Ix-7.mjs → PodcastInlineListTemplate-DCWn3r7s.mjs} +4 -4
  292. package/dist/PodcastInlineListTemplate-DCWn3r7s.mjs.map +1 -0
  293. package/dist/PodcastIsPlaying-BG1_FgVX.mjs.map +1 -0
  294. package/dist/{PodcastIsPlaying-B7YVeSyB.mjs → PodcastIsPlaying-BsObdQGR.mjs} +2 -2
  295. package/dist/PodcastIsPlaying-BsObdQGR.mjs.map +1 -0
  296. package/dist/PodcastIsPlaying-Csd-C2jr.mjs.map +1 -0
  297. package/dist/PodcastItem-CGmEwYT4.mjs.map +1 -0
  298. package/dist/PodcastItem-CN6gwARQ.mjs.map +1 -0
  299. package/dist/PodcastItem-CdLjZKxf.mjs.map +1 -0
  300. package/dist/PodcastItem-D1MwHzhE.mjs.map +1 -0
  301. package/dist/{PodcastItem-CFk8MX9D.mjs → PodcastItem-_8ErwIDG.mjs} +7 -7
  302. package/dist/PodcastItem-_8ErwIDG.mjs.map +1 -0
  303. package/dist/PodcastList-BXla7F3u.mjs.map +1 -0
  304. package/dist/PodcastList-BqE8dwdc.mjs.map +1 -0
  305. package/dist/PodcastList-BvC6iOS6.mjs.map +1 -0
  306. package/dist/PodcastList-CRwA-s7F.mjs.map +1 -0
  307. package/dist/PodcastList-CVFr9WNS.mjs.map +1 -0
  308. package/dist/PodcastList-DZKxDulS.mjs.map +1 -0
  309. package/dist/{PodcastList-BLXPFjvL.mjs → PodcastList-DgLQjL0d.mjs} +6 -6
  310. package/dist/PodcastList-DgLQjL0d.mjs.map +1 -0
  311. package/dist/{PodcastList-c0Iwzakm.mjs → PodcastList-DhKeiBbv.mjs} +5 -5
  312. package/dist/PodcastList-DhKeiBbv.mjs.map +1 -0
  313. package/dist/PodcastList-Dtq6kEG4.mjs.map +1 -0
  314. package/dist/PodcastList-Dx-mo7Wo.mjs.map +1 -0
  315. package/dist/{PodcastPage-C_d9FaS7.mjs → PodcastPage-C5OCwW8q.mjs} +23 -23
  316. package/dist/PodcastPage-C5OCwW8q.mjs.map +1 -0
  317. package/dist/PodcastPage-CsVqOGWc.mjs.map +1 -0
  318. package/dist/PodcastPage-DQInD9ry.mjs.map +1 -0
  319. package/dist/PodcastPage-Dka9GEzi.mjs.map +1 -0
  320. package/dist/PodcastPage-acKIH0vO.mjs.map +1 -0
  321. package/dist/PodcastPlayBar-AgtR8Ia9.mjs.map +1 -0
  322. package/dist/PodcastPlayBar-D7CyLEM4.mjs.map +1 -0
  323. package/dist/{PodcastPlayBar-WjGn_KlZ.mjs → PodcastPlayBar-DC5HCx76.mjs} +4 -4
  324. package/dist/PodcastPlayBar-DC5HCx76.mjs.map +1 -0
  325. package/dist/PodcastPlayBasicButton-DHYxw3NX.mjs.map +1 -0
  326. package/dist/{PodcastPlayBasicButton-BNKlqhGR.mjs → PodcastPlayBasicButton-PJHza4d_.mjs} +2 -2
  327. package/dist/PodcastPlayBasicButton-PJHza4d_.mjs.map +1 -0
  328. package/dist/PodcastPlayBasicButton-gK82n3YL.mjs.map +1 -0
  329. package/dist/{PodcastPlayButton-B9hWbPEk.mjs → PodcastPlayButton-1eaXWTlG.mjs} +4 -4
  330. package/dist/PodcastPlayButton-1eaXWTlG.mjs.map +1 -0
  331. package/dist/PodcastPlayButton-Bosq5ozq.mjs.map +1 -0
  332. package/dist/PodcastPlayButton-DIQi57Oh.mjs.map +1 -0
  333. package/dist/PodcastPlayButton-DcjbCnlT.mjs.map +1 -0
  334. package/dist/PodcastPlayButton-DgSCyhrd.mjs.map +1 -0
  335. package/dist/PodcastPlaylistInlineList-C0HZum5z.mjs.map +1 -0
  336. package/dist/PodcastPlaylistInlineList-CSziI2j4.mjs.map +1 -0
  337. package/dist/PodcastPlaylistInlineList-CvX2rauY.mjs.map +1 -0
  338. package/dist/PodcastPlaylistInlineList-H_rnCHag.mjs.map +1 -0
  339. package/dist/{PodcastPlaylistInlineList-_csxbYAx.mjs → PodcastPlaylistInlineList-XTbhC8OJ.mjs} +5 -5
  340. package/dist/PodcastPlaylistInlineList-XTbhC8OJ.mjs.map +1 -0
  341. package/dist/{PodcastPresentationList-BD8XmnW0.mjs → PodcastPresentationList-BUl5Rq83.mjs} +5 -5
  342. package/dist/PodcastPresentationList-BUl5Rq83.mjs.map +1 -0
  343. package/dist/PodcastPresentationList-BvkEDbtG.mjs.map +1 -0
  344. package/dist/PodcastPresentationList-C0n-xr5w.mjs.map +1 -0
  345. package/dist/PodcastPresentationList-CnrMkINf.mjs.map +1 -0
  346. package/dist/PodcastPresentationList-DC-Oi_eK.mjs.map +1 -0
  347. package/dist/PodcastProgressBar-CP-0ptRF.mjs.map +1 -0
  348. package/dist/{PodcastProgressBar-B3XOeeJx.mjs → PodcastProgressBar-VG-mRcpi.mjs} +4 -4
  349. package/dist/PodcastProgressBar-VG-mRcpi.mjs.map +1 -0
  350. package/dist/PodcastProgressBar-jY43GoFx.mjs.map +1 -0
  351. package/dist/PodcastRawTranscript-BAu-dt2V.mjs.map +1 -0
  352. package/dist/{PodcastRawTranscript-D0Nm7jGM.mjs → PodcastRawTranscript-Bf6f5yNd.mjs} +3 -3
  353. package/dist/PodcastRawTranscript-Bf6f5yNd.mjs.map +1 -0
  354. package/dist/{PodcastSwiperList-DJ0O3dqM.mjs → PodcastSwiperList-BhulNkN-.mjs} +5 -5
  355. package/dist/PodcastSwiperList-BhulNkN-.mjs.map +1 -0
  356. package/dist/PodcastSwiperList-CGeumBPj.mjs.map +1 -0
  357. package/dist/PodcastSwiperList-CzUkS6M6.mjs.map +1 -0
  358. package/dist/PodcastSwiperList-DLKOAjUS.mjs.map +1 -0
  359. package/dist/PodcastSwiperList-DaTHwrHm.mjs.map +1 -0
  360. package/dist/PodcastmakerHeader-BZT-U0KX.mjs.map +1 -0
  361. package/dist/{PodcastmakerHeader-DAATtOG_.mjs → PodcastmakerHeader-Df0g2dCr.mjs} +2 -2
  362. package/dist/PodcastmakerHeader-Df0g2dCr.mjs.map +1 -0
  363. package/dist/PodcastsPage-B-Qzlif0.mjs.map +1 -0
  364. package/dist/PodcastsPage-BoK55Z9G.mjs.map +1 -0
  365. package/dist/PodcastsPage-CTzbr2VD.mjs.map +1 -0
  366. package/dist/{PodcastsPage-ZhEVoMp1.mjs → PodcastsPage-DSJUPRZE.mjs} +5 -5
  367. package/dist/PodcastsPage-DSJUPRZE.mjs.map +1 -0
  368. package/dist/PodcastsPage-Jg_jAix6.mjs.map +1 -0
  369. package/dist/{ProductorSearch-xs0kzX_E.mjs → ProductorSearch-BTj9gIOs.mjs} +3 -3
  370. package/dist/ProductorSearch-BTj9gIOs.mjs.map +1 -0
  371. package/dist/ProductorSearch-ziDbxrDd.mjs.map +1 -0
  372. package/dist/ProgressBar-BOq9RfZ2.mjs.map +1 -0
  373. package/dist/{ProgressBar-0DSoUTwB.mjs → ProgressBar-BVc0_6Lv.mjs} +2 -2
  374. package/dist/ProgressBar-BVc0_6Lv.mjs.map +1 -0
  375. package/dist/ProgressBar-Cgt2PqnO.mjs.map +1 -0
  376. package/dist/QrCode-DNiPIFIA.mjs.map +1 -0
  377. package/dist/{QrCode-CUP2O18d.mjs → QrCode-MCv4t_Bn.mjs} +2 -2
  378. package/dist/QrCode-MCv4t_Bn.mjs.map +1 -0
  379. package/dist/{QrCodeModal-DXBCuki7.mjs → QrCodeModal-Be8E0JlC.mjs} +2 -2
  380. package/dist/QrCodeModal-Be8E0JlC.mjs.map +1 -0
  381. package/dist/QrCodeModal-DYDKLLuw.mjs.map +1 -0
  382. package/dist/RadioCurrently-BJOmCSby.mjs.map +1 -0
  383. package/dist/RadioCurrently-CZePLInZ.mjs.map +1 -0
  384. package/dist/{RadioCurrently-D5M81oIX.mjs → RadioCurrently-DWySwV64.mjs} +4 -4
  385. package/dist/RadioCurrently-DWySwV64.mjs.map +1 -0
  386. package/dist/RadioHistory-7EGvEAMx.mjs.map +1 -0
  387. package/dist/RadioHistory-BdMa013x.mjs.map +1 -0
  388. package/dist/{RadioHistory-BgOve4jk.mjs → RadioHistory-DlQFZYp2.mjs} +3 -3
  389. package/dist/RadioHistory-DlQFZYp2.mjs.map +1 -0
  390. package/dist/{RadioImage-CUTRr3DL.mjs → RadioImage-BIe2KpG_.mjs} +5 -5
  391. package/dist/RadioImage-BIe2KpG_.mjs.map +1 -0
  392. package/dist/RadioImage-CXFZXN1N.mjs.map +1 -0
  393. package/dist/RadioImage-CpJmuc8a.mjs.map +1 -0
  394. package/dist/{RadioList-CwzOFHc1.mjs → RadioList-B23gsiEF.mjs} +5 -5
  395. package/dist/RadioList-B23gsiEF.mjs.map +1 -0
  396. package/dist/RadioList-BwzgNcMO.mjs.map +1 -0
  397. package/dist/RadioList-KvAacjmD.mjs.map +1 -0
  398. package/dist/RadioPage-CM_4A1AQ.mjs.map +1 -0
  399. package/dist/RadioPage-DkBL81mI.mjs.map +1 -0
  400. package/dist/{RadioPage-DVflzCV-.mjs → RadioPage-Jg2kmtna.mjs} +11 -11
  401. package/dist/RadioPage-Jg2kmtna.mjs.map +1 -0
  402. package/dist/{RadioPlanning-CJ7Qqyhs.mjs → RadioPlanning-2aWTnbZb.mjs} +3 -3
  403. package/dist/RadioPlanning-2aWTnbZb.mjs.map +1 -0
  404. package/dist/RadioPlanning-DHxcBVQo.mjs.map +1 -0
  405. package/dist/RadioProgressBar-BHAawrHe.mjs.map +1 -0
  406. package/dist/RadioProgressBar-CPjLAoPB.mjs.map +1 -0
  407. package/dist/{RadioProgressBar-BmJbzzQA.mjs → RadioProgressBar-yIz1oI5d.mjs} +2 -2
  408. package/dist/RadioProgressBar-yIz1oI5d.mjs.map +1 -0
  409. package/dist/RecaptchaModal-DKugsU7h.mjs.map +1 -0
  410. package/dist/{RecaptchaModal-DX9rAHUg.mjs → RecaptchaModal-dfMCfebx.mjs} +2 -2
  411. package/dist/RecaptchaModal-dfMCfebx.mjs.map +1 -0
  412. package/dist/ReportAbuseModal-Bxr7NTvH.mjs.map +1 -0
  413. package/dist/{ReportAbuseModal-CYCRaFAY.mjs → ReportAbuseModal-DZKRbYXJ.mjs} +4 -4
  414. package/dist/ReportAbuseModal-DZKRbYXJ.mjs.map +1 -0
  415. package/dist/RightsIndicator-BgW0q3af.mjs.map +1 -0
  416. package/dist/RightsIndicator-BtzqiPWc.mjs.map +1 -0
  417. package/dist/{RightsIndicator-qIU4_wiF.mjs → RightsIndicator-D5I3DOfO.mjs} +2 -2
  418. package/dist/RightsIndicator-D5I3DOfO.mjs.map +1 -0
  419. package/dist/RightsIndicator-NOZ05rEh.mjs.map +1 -0
  420. package/dist/RightsWrapper-Cv41FXNO.mjs.map +1 -0
  421. package/dist/{RightsWrapper-Cs6prZ3E.mjs → RightsWrapper-HasUbnny.mjs} +3 -3
  422. package/dist/RightsWrapper-HasUbnny.mjs.map +1 -0
  423. package/dist/{RubriqueFilter-OA_DJKL1.mjs → RubriqueFilter-3SPVH4nT.mjs} +3 -3
  424. package/dist/RubriqueFilter-3SPVH4nT.mjs.map +1 -0
  425. package/dist/RubriqueFilter-B_F2fyA0.mjs.map +1 -0
  426. package/dist/RubriqueList-CalsqgcR.mjs.map +1 -0
  427. package/dist/{RubriqueList-B94NM5yi.mjs → RubriqueList-TnVM2-Ry.mjs} +3 -3
  428. package/dist/RubriqueList-TnVM2-Ry.mjs.map +1 -0
  429. package/dist/RubriquePage-BhneK7GY.mjs.map +1 -0
  430. package/dist/RubriquePage-CPV9lztT.mjs.map +1 -0
  431. package/dist/{RubriquePage-DyusiBmp.mjs → RubriquePage-D223TaA2.mjs} +5 -5
  432. package/dist/RubriquePage-D223TaA2.mjs.map +1 -0
  433. package/dist/RubriquePage-DriBVVmv.mjs.map +1 -0
  434. package/dist/RubriquePage-x_tOmQCH.mjs.map +1 -0
  435. package/dist/SearchPage-B-KDO-5r.mjs.map +1 -0
  436. package/dist/{SearchPage-BGOBGS4j.mjs → SearchPage-BH1gYkHn.mjs} +3 -3
  437. package/dist/SearchPage-BH1gYkHn.mjs.map +1 -0
  438. package/dist/SearchPage-CXOoJF_2.mjs.map +1 -0
  439. package/dist/SearchPage-DyX_tEm5.mjs.map +1 -0
  440. package/dist/SearchPage-IvX74fSJ.mjs.map +1 -0
  441. package/dist/{ShareAnonymous-Chfdzzra.mjs → ShareAnonymous-4UxjKrIe.mjs} +6 -6
  442. package/dist/ShareAnonymous-4UxjKrIe.mjs.map +1 -0
  443. package/dist/ShareAnonymous-C4xPMrgf.mjs.map +1 -0
  444. package/dist/{ShareModalPlayer-CLY_JFFD.mjs → ShareModalPlayer-B0wPlpdU.mjs} +2 -2
  445. package/dist/ShareModalPlayer-B0wPlpdU.mjs.map +1 -0
  446. package/dist/ShareModalPlayer-CEvDV-I_.mjs.map +1 -0
  447. package/dist/ShareNewsletter-Bno5t4ay.mjs.map +1 -0
  448. package/dist/{ShareNewsletter-B4dn4-jA.mjs → ShareNewsletter-Cf9w-I6c.mjs} +2 -2
  449. package/dist/ShareNewsletter-Cf9w-I6c.mjs.map +1 -0
  450. package/dist/SharePlayer-BLqYnywl.mjs.map +1 -0
  451. package/dist/{SharePlayer-wHDYsWYd.mjs → SharePlayer-Oy1pWckd.mjs} +4 -4
  452. package/dist/SharePlayer-Oy1pWckd.mjs.map +1 -0
  453. package/dist/{SharePlayerRadio-D3LXD_gK.mjs → SharePlayerRadio-CI6glNuI.mjs} +3 -3
  454. package/dist/SharePlayerRadio-CI6glNuI.mjs.map +1 -0
  455. package/dist/SharePlayerRadio-c_HFTupz.mjs.map +1 -0
  456. package/dist/SharePlayerTypes-Dkmmw2We.mjs.map +1 -0
  457. package/dist/{SharePlayerTypes-eYSeVl-W.mjs → SharePlayerTypes-cUgCFZ65.mjs} +2 -2
  458. package/dist/SharePlayerTypes-cUgCFZ65.mjs.map +1 -0
  459. package/dist/{ShareSocialsButtons-iHtSoQ3K.mjs → ShareSocialsButtons-BYsXc2Jr.mjs} +2 -2
  460. package/dist/ShareSocialsButtons-BYsXc2Jr.mjs.map +1 -0
  461. package/dist/ShareSocialsButtons-DZLZc1c6.mjs.map +1 -0
  462. package/dist/SimpleLayout-BCsUQENG.mjs.map +1 -0
  463. package/dist/SimpleLayout-BGKNHHjx.mjs.map +1 -0
  464. package/dist/SimpleLayout-BHIdltFB.mjs.map +1 -0
  465. package/dist/SimpleLayout-BKkwQmN6.mjs.map +1 -0
  466. package/dist/SimpleLayout-BORx9hRX.mjs.map +1 -0
  467. package/dist/{SimpleLayout-Bk74CAAr.mjs → SimpleLayout-BTJyAJO6.mjs} +3 -3
  468. package/dist/SimpleLayout-BTJyAJO6.mjs.map +1 -0
  469. package/dist/SimpleLayout-BvOAauzs.mjs.map +1 -0
  470. package/dist/SimpleLayout-C3xekYgM.mjs.map +1 -0
  471. package/dist/SimpleLayout-C4xNk0R4.mjs.map +1 -0
  472. package/dist/SimpleLayout-CDcsE-Be.mjs.map +1 -0
  473. package/dist/SimpleLayout-D3M_c1Eu.mjs.map +1 -0
  474. package/dist/SimpleLayout-DJgC3LcZ.mjs.map +1 -0
  475. package/dist/SimpleLayout-DkvEZxow.mjs.map +1 -0
  476. package/dist/SimpleLayout-gtbBGlVV.mjs.map +1 -0
  477. package/dist/SmartLinkPage-BF8hfaWZ.mjs.map +1 -0
  478. package/dist/{SmartLinkPage-DbuQT8GM.mjs → SmartLinkPage-DQljzYa-.mjs} +5 -5
  479. package/dist/SmartLinkPage-DQljzYa-.mjs.map +1 -0
  480. package/dist/SmartLinkPage-DmlqwhYP.mjs.map +1 -0
  481. package/dist/SubscribeButtons-DO4MRuDr.mjs.map +1 -0
  482. package/dist/{SubscribeButtons-rnonTVzT.mjs → SubscribeButtons-lAAMYQCm.mjs} +3 -3
  483. package/dist/SubscribeButtons-lAAMYQCm.mjs.map +1 -0
  484. package/dist/{SwiperList-C1v0T1wx.mjs → SwiperList-C51H-enh.mjs} +2 -2
  485. package/dist/SwiperList-C51H-enh.mjs.map +1 -0
  486. package/dist/SwiperList-Dsq1MFX6.mjs.map +1 -0
  487. package/dist/TagList-B5C9zojs.mjs.map +1 -0
  488. package/dist/{TagList-VeuYS_zJ.mjs → TagList-D3Bn2fIn.mjs} +2 -2
  489. package/dist/TagList-D3Bn2fIn.mjs.map +1 -0
  490. package/dist/TagPage-B71pZpRY.mjs.map +1 -0
  491. package/dist/{TagPage-Bd81QJHn.mjs → TagPage-Brw9iL1F.mjs} +4 -4
  492. package/dist/TagPage-Brw9iL1F.mjs.map +1 -0
  493. package/dist/TagPage-CWRyUZkD.mjs.map +1 -0
  494. package/dist/TagPage-DFo25ZeP.mjs.map +1 -0
  495. package/dist/TagPage-sI917OpV.mjs.map +1 -0
  496. package/dist/TopBar-CaCA8kOs.mjs.map +1 -0
  497. package/dist/{TopBar-CZVp2T7C.mjs → TopBar-DIdhyJi_.mjs} +7 -7
  498. package/dist/TopBar-DIdhyJi_.mjs.map +1 -0
  499. package/dist/{UserButtonContent-DmNyGmWr.mjs → UserButtonContent-D13cVA34.mjs} +7 -7
  500. package/dist/UserButtonContent-D13cVA34.mjs.map +1 -0
  501. package/dist/UserButtonContent-DMKyXEmF.mjs.map +1 -0
  502. package/dist/{VideoModuleBox-yJZpgCw6.mjs → VideoModuleBox-CFQmvPrA.mjs} +2 -2
  503. package/dist/VideoModuleBox-CFQmvPrA.mjs.map +1 -0
  504. package/dist/VideoModuleBox-DsBLAMrh.mjs.map +1 -0
  505. package/dist/VideoPage-CfJeWV-R.mjs.map +1 -0
  506. package/dist/VideoPage-CnIZYz-k.mjs.map +1 -0
  507. package/dist/VideoPage-D6UNKt2D.mjs.map +1 -0
  508. package/dist/{VideoPage-y6G4Y2Zi.mjs → VideoPage-DU9dJviO.mjs} +10 -10
  509. package/dist/VideoPage-DU9dJviO.mjs.map +1 -0
  510. package/dist/VideoPage-OIb28KAS.mjs.map +1 -0
  511. package/dist/classicApi-C70YSK8J.mjs.map +1 -0
  512. package/dist/classicApi-DuzZv1Wk.mjs.map +1 -1
  513. package/dist/{classicApi-CkDHWZG1.mjs → classicApi-xjOqAovv.mjs} +11 -8
  514. package/dist/classicApi-xjOqAovv.mjs.map +1 -0
  515. package/dist/downloadHelper-C4q0i5xN.mjs.map +1 -0
  516. package/dist/{downloadHelper-DLdkblYN.mjs → downloadHelper-DY3fF3dA.mjs} +2 -2
  517. package/dist/downloadHelper-DY3fF3dA.mjs.map +1 -0
  518. package/dist/index.mjs +102 -97
  519. package/dist/index.mjs.map +1 -1
  520. package/dist/tests.mjs +2 -2
  521. package/dist/{useAdvancedParamInit-B7G2Mvjv.mjs → useAdvancedParamInit-CCprE3H2.mjs} +6 -6
  522. package/dist/useAdvancedParamInit-CCprE3H2.mjs.map +1 -0
  523. package/dist/useAdvancedParamInit-CT8CdPFW.mjs.map +1 -0
  524. package/dist/useDayjs-BPXVSBns.mjs.map +1 -0
  525. package/dist/{useDayjs-C3cnTiDW.mjs → useDayjs-DPVjvJPN.mjs} +2 -2
  526. package/dist/useDayjs-DPVjvJPN.mjs.map +1 -0
  527. package/dist/useErrorHandler-BxQT9ZGf.mjs.map +1 -0
  528. package/dist/{useErrorHandler-DtLjD9t_.mjs → useErrorHandler-D3XVxUh6.mjs} +2 -2
  529. package/dist/useErrorHandler-D3XVxUh6.mjs.map +1 -0
  530. package/dist/{useImageProxy-Bj0cOCct.mjs → useImageProxy-BdQJmj4a.mjs} +2 -2
  531. package/dist/useImageProxy-BdQJmj4a.mjs.map +1 -0
  532. package/dist/useImageProxy-DROuweGY.mjs.map +1 -0
  533. package/dist/{useOrgaComputed-BLSpEDfb.mjs → useOrgaComputed-B2Bq0VBT.mjs} +2 -2
  534. package/dist/useOrgaComputed-B2Bq0VBT.mjs.map +1 -0
  535. package/dist/useOrgaComputed-CGomgs0r.mjs.map +1 -0
  536. package/dist/{usePlayerLogicProgress-75G9QMg_.mjs → usePlayerLogicProgress-DcHbYGOR.mjs} +3 -3
  537. package/dist/usePlayerLogicProgress-DcHbYGOR.mjs.map +1 -0
  538. package/dist/usePlayerLogicProgress-Dchl5sUO.mjs.map +1 -0
  539. package/dist/usePlayerLogicProgress-lqnQ5qNd.mjs.map +1 -0
  540. package/dist/{usePodcastView-BftS642h.mjs → usePodcastView-BDZ6CGQj.mjs} +4 -4
  541. package/dist/usePodcastView-BDZ6CGQj.mjs.map +1 -0
  542. package/dist/usePodcastView-CI5le-WW.mjs.map +1 -0
  543. package/dist/usePresentationItem-Cw9fBYUi.mjs.map +1 -0
  544. package/dist/{usePresentationItem-CNXIk-Sf.mjs → usePresentationItem-UwAuhVqo.mjs} +4 -4
  545. package/dist/usePresentationItem-UwAuhVqo.mjs.map +1 -0
  546. package/dist/useRights-D8CLzCMH.mjs.map +1 -0
  547. package/dist/{useRights-Co0TgD8y.mjs → useRights-DSZ-5pFg.mjs} +2 -2
  548. package/dist/useRights-DSZ-5pFg.mjs.map +1 -0
  549. package/dist/{useRubriquesFilterComputed-VsdTUNL6.mjs → useRubriquesFilterComputed-BkDeXTf-.mjs} +2 -2
  550. package/dist/useRubriquesFilterComputed-BkDeXTf-.mjs.map +1 -0
  551. package/dist/useRubriquesFilterComputed-Bkre15fg.mjs.map +1 -0
  552. package/dist/useRubriquesFilterParam-BmE8v1fS.mjs.map +1 -0
  553. package/dist/{useRubriquesFilterParam--x07HEw1.mjs → useRubriquesFilterParam-Delgf48y.mjs} +2 -2
  554. package/dist/useRubriquesFilterParam-Delgf48y.mjs.map +1 -0
  555. package/dist/{useSharePlatforms-CSSRTkTG.mjs → useSharePlatforms-07n3JYu2.mjs} +3 -3
  556. package/dist/useSharePlatforms-07n3JYu2.mjs.map +1 -0
  557. package/dist/useSharePlatforms-B_3OwBFv.mjs.map +1 -0
  558. package/dist/{useSimplePageParam-ClaGQ9yj.mjs → useSimplePageParam-CsY_ie3c.mjs} +2 -2
  559. package/dist/useSimplePageParam-CsY_ie3c.mjs.map +1 -0
  560. package/dist/useSimplePageParam-ki2VyM-X.mjs.map +1 -0
  561. package/dist/{useTranslation-BNshNMQT.mjs → useTranslation-ChEasnl9.mjs} +25 -8
  562. package/dist/useTranslation-ChEasnl9.mjs.map +1 -0
  563. package/dist/useTranslation-D0R0BSx9.mjs.map +1 -0
  564. package/dist/usefetchRadioData-BPmkztGC.mjs.map +1 -0
  565. package/dist/{usefetchRadioData-C2cwiaCP.mjs → usefetchRadioData-CkrAfN1c.mjs} +2 -2
  566. package/dist/usefetchRadioData-CkrAfN1c.mjs.map +1 -0
  567. package/package.json +1 -1
  568. package/src/components/composable/player/usePlayerLive.ts +8 -7
  569. package/src/stores/AuthStore.ts +2 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"PlayerVideoHls-CB4psqbz.mjs","names":[],"sources":["../src/components/misc/player/video/PlayerVideoHls.vue","../src/components/misc/player/video/PlayerVideoHls.vue"],"sourcesContent":["<template>\n <div\n id=\"player-video-hls\"\n class=\"video-player\"\n :class=\"responsive ? 'video-responsive-wrapper' : ''\"\n >\n <div v-if=\"errorPlay.length\" class=\"video-live-error\">{{ errorPlay }}</div>\n <video\n id=\"video-element-hls\"\n ref=\"videoelement\"\n class=\"video-js\"\n playsinline\n ></video>\n </div>\n</template>\n<script setup lang=\"ts\">\nimport { usePlayerStore } from \"../../../../stores/PlayerStore\";\nimport {usePlayerLogicProgress} from \"../../../composable/player/usePlayerLogicProgress\";\nimport videojs, { VideoJsPlayer } from \"video.js\";\nimport qualitySelectorHls from \"videojs-quality-selector-hls\";\nif (undefined === videojs.getPlugin(\"qualitySelectorHls\")) {\n videojs.registerPlugin(\"qualitySelectorHls\", qualitySelectorHls);\n}\nimport { computed, onMounted, onUnmounted, Ref, ref, useTemplateRef } from \"vue\";\nimport { useAuthStore } from \"../../../../stores/AuthStore\";\nimport { useI18n } from \"vue-i18n\";\n\n//Props \nconst props = defineProps({\n hlsUrl: { default: \"\", type: String },\n responsive: { default: false, type: Boolean },\n isSecured: { default: true, type: Boolean },\n})\n\n//Data\nconst errorPlay = ref(\"\");\nconst useVideoSrc = ref(false);\nconst player: Ref<VideoJsPlayer | undefined> = ref(false);\nconst playing = ref(false);\nconst isPaused = ref(false);\nconst stalledTimout: Ref<ReturnType<typeof setTimeout> | undefined> = ref(undefined);\nconst videoElementRef = useTemplateRef('videoelement');\n\n\n//Composables\nconst { t } = useI18n();\nconst { downloadId, initLiveDownloadId, onTimeUpdateProgress, endListeningProgress} = usePlayerLogicProgress();\nconst authStore = useAuthStore();\nconst playerStore = usePlayerStore();\n\n\n\n//Computed\nconst videoElement = computed(() => {\n return videoElementRef?.value as HTMLVideoElement;\n});\nconst videoOptions = computed(() => {\n return {\n autoplay: true,\n controls: true,\n liveui: true,\n sources: [\n {\n src: props.hlsUrl,\n type: \"application/x-mpegURL\",\n },\n ],\n html5: {\n vhs: {\n overrideNative: !videojs.browser.IS_SAFARI,\n },\n nativeAudioTracks: false,\n nativeVideoTracks: false,\n },\n };\n});\n\n\nonMounted(()=>{\n playerStore.playerUpdatePlayerHlsUrl(props.hlsUrl);\n useVideoSrc.value =\n \"\" !== videoElement.value.canPlayType(\"application/vnd.apple.mpegurl\") &&\n !navigator.userAgent.includes(\"Android\");\n playLive();\n})\n\nonUnmounted(()=>{\n if (playing.value) {\n stopLive();\n }\n})\n\n\n//Methods\nfunction definedStalledTimeout() {\n isPaused.value = false;\n stalledTimout.value = setTimeout(() => {\n if (isPaused.value) {\n return;\n }\n videoClean();\n playLive();\n }, 15000);\n}\nasync function playLive(): Promise<void> {\n clearTimeout(stalledTimout.value);\n definedStalledTimeout();\n await initLiveDownloadId();\n if (useVideoSrc.value) {\n playLiveIos();\n return;\n }\n if (props.isSecured && authStore.authParam.accessToken) {\n const globalXhrRequestHook = (options: any) => {\n options.beforeSend = (xhr: XMLHttpRequest) => {\n xhr.setRequestHeader(\"Authorization\", \"Bearer \"+authStore.authParam.accessToken);\n };\n return options;\n };\n videojs.Vhs.xhr.onRequest(globalXhrRequestHook);\n }\n player.value = videojs(\n document.getElementById(\"video-element-hls\") as Element,\n videoOptions.value,\n () => {\n player.value.qualitySelectorHls({ displayCurrentQuality: true });\n errorPlay.value = \"\";\n playing.value = true;\n },\n );\n player.value.on(\"error\", (error: any) => {\n stopLive();\n if (error.description?.includes(\"403\")) {\n errorPlay.value = t(\"Video is unavailable\");\n } else {\n errorPlay.value = t(\"Podcast play error\");\n }\n });\n player.value.on(\"seeking\", () => {\n playerStore.playerUpdateSeekTime(player.value?.currentTime() ?? 0);\n });\n player.value.on(\"pause\", () => {\n isPaused.value = true;\n });\n player.value.on(\"timeupdate\", () => {\n clearTimeout(stalledTimout.value);\n definedStalledTimeout();\n onTimeUpdateVideo();\n });\n player.value.on(\"seeking\", () => {\n playerStore.playerUpdateSeekTime(player.value?.currentTime() ?? 0);\n });\n}\n\nasync function playLiveIos(): Promise<void> {\n videoElement.value.onloadedmetadata = () => {\n const playPromise = videoElement.value.play();\n if (playPromise !== undefined) {\n playPromise\n .then(() => {\n errorPlay.value = \"\";\n playing.value = true;\n })\n .catch(() => {\n playing.value = false;\n });\n }\n };\n videoElement.value.onerror = async () => {\n stopLive();\n errorPlay.value = t(\"Podcast play error\");\n };\n videoElement.value.ontimeupdate = async () => {\n clearTimeout(stalledTimout.value);\n definedStalledTimeout();\n onTimeUpdateVideo();\n };\n videoElement.value.onpause = async () => {\n isPaused.value = true;\n };\n videoElement.value.onseeking = async () => {\n playerStore.playerUpdateSeekTime(videoElement.value.currentTime);\n };\n if (props.isSecured && authStore.authParam.accessToken) {\n videoElement.value.src = props.hlsUrl + \"access_token=\"+authStore.authParam.accessToken;\n }else{\n videoElement.value.src = props.hlsUrl;\n }\n videoElement.value.src = props.hlsUrl;\n}\n\nfunction videoClean(): void {\n if (useVideoSrc.value) {\n videoElement.value.pause();\n videoElement.value.removeAttribute(\"src\");\n videoElement.value.load();\n return;\n }\n if (player.value) {\n player.value.dispose();\n //Redraw\n const video_parent = document.getElementById(\"player-video-hls\");\n if (video_parent) {\n const video = document.createElement(\"video\");\n video.id = \"video-element-hls\";\n video.className = \"video-js\";\n video.preload = \"auto\";\n video.setAttribute(\"playsinline\", \"true\");\n video_parent.appendChild(video);\n }\n }\n}\nfunction stopLive(): void {\n clearTimeout(stalledTimout.value);\n errorPlay.value = \"\";\n videoClean();\n playing.value = false;\n endListeningProgress();\n}\nfunction onTimeUpdateVideo(): void {\n if (!downloadId.value) {\n return;\n }\n const currentTime =player.value?.currentTime() ?? videoElement.value.currentTime;\n onTimeUpdateProgress(currentTime);\n}\n</script>\n\n<style lang=\"scss\">\n@use \"video.js\";\n@use \"../../../../style/videoPlayer\";\n\n.octopus-app {\n .video-live-error {\n text-align: center;\n width: 100%;\n font-size: 1rem;\n font-weight: bold;\n padding: 0.2rem 0;\n color: white;\n position: absolute;\n top: 0;\n background: var(--octopus-danger);\n z-index: 1;\n }\n\n .video-js {\n width: 500px;\n height: 281px;\n }\n}\n</style>\n","<template>\n <div\n id=\"player-video-hls\"\n class=\"video-player\"\n :class=\"responsive ? 'video-responsive-wrapper' : ''\"\n >\n <div v-if=\"errorPlay.length\" class=\"video-live-error\">{{ errorPlay }}</div>\n <video\n id=\"video-element-hls\"\n ref=\"videoelement\"\n class=\"video-js\"\n playsinline\n ></video>\n </div>\n</template>\n<script setup lang=\"ts\">\nimport { usePlayerStore } from \"../../../../stores/PlayerStore\";\nimport {usePlayerLogicProgress} from \"../../../composable/player/usePlayerLogicProgress\";\nimport videojs, { VideoJsPlayer } from \"video.js\";\nimport qualitySelectorHls from \"videojs-quality-selector-hls\";\nif (undefined === videojs.getPlugin(\"qualitySelectorHls\")) {\n videojs.registerPlugin(\"qualitySelectorHls\", qualitySelectorHls);\n}\nimport { computed, onMounted, onUnmounted, Ref, ref, useTemplateRef } from \"vue\";\nimport { useAuthStore } from \"../../../../stores/AuthStore\";\nimport { useI18n } from \"vue-i18n\";\n\n//Props \nconst props = defineProps({\n hlsUrl: { default: \"\", type: String },\n responsive: { default: false, type: Boolean },\n isSecured: { default: true, type: Boolean },\n})\n\n//Data\nconst errorPlay = ref(\"\");\nconst useVideoSrc = ref(false);\nconst player: Ref<VideoJsPlayer | undefined> = ref(false);\nconst playing = ref(false);\nconst isPaused = ref(false);\nconst stalledTimout: Ref<ReturnType<typeof setTimeout> | undefined> = ref(undefined);\nconst videoElementRef = useTemplateRef('videoelement');\n\n\n//Composables\nconst { t } = useI18n();\nconst { downloadId, initLiveDownloadId, onTimeUpdateProgress, endListeningProgress} = usePlayerLogicProgress();\nconst authStore = useAuthStore();\nconst playerStore = usePlayerStore();\n\n\n\n//Computed\nconst videoElement = computed(() => {\n return videoElementRef?.value as HTMLVideoElement;\n});\nconst videoOptions = computed(() => {\n return {\n autoplay: true,\n controls: true,\n liveui: true,\n sources: [\n {\n src: props.hlsUrl,\n type: \"application/x-mpegURL\",\n },\n ],\n html5: {\n vhs: {\n overrideNative: !videojs.browser.IS_SAFARI,\n },\n nativeAudioTracks: false,\n nativeVideoTracks: false,\n },\n };\n});\n\n\nonMounted(()=>{\n playerStore.playerUpdatePlayerHlsUrl(props.hlsUrl);\n useVideoSrc.value =\n \"\" !== videoElement.value.canPlayType(\"application/vnd.apple.mpegurl\") &&\n !navigator.userAgent.includes(\"Android\");\n playLive();\n})\n\nonUnmounted(()=>{\n if (playing.value) {\n stopLive();\n }\n})\n\n\n//Methods\nfunction definedStalledTimeout() {\n isPaused.value = false;\n stalledTimout.value = setTimeout(() => {\n if (isPaused.value) {\n return;\n }\n videoClean();\n playLive();\n }, 15000);\n}\nasync function playLive(): Promise<void> {\n clearTimeout(stalledTimout.value);\n definedStalledTimeout();\n await initLiveDownloadId();\n if (useVideoSrc.value) {\n playLiveIos();\n return;\n }\n if (props.isSecured && authStore.authParam.accessToken) {\n const globalXhrRequestHook = (options: any) => {\n options.beforeSend = (xhr: XMLHttpRequest) => {\n xhr.setRequestHeader(\"Authorization\", \"Bearer \"+authStore.authParam.accessToken);\n };\n return options;\n };\n videojs.Vhs.xhr.onRequest(globalXhrRequestHook);\n }\n player.value = videojs(\n document.getElementById(\"video-element-hls\") as Element,\n videoOptions.value,\n () => {\n player.value.qualitySelectorHls({ displayCurrentQuality: true });\n errorPlay.value = \"\";\n playing.value = true;\n },\n );\n player.value.on(\"error\", (error: any) => {\n stopLive();\n if (error.description?.includes(\"403\")) {\n errorPlay.value = t(\"Video is unavailable\");\n } else {\n errorPlay.value = t(\"Podcast play error\");\n }\n });\n player.value.on(\"seeking\", () => {\n playerStore.playerUpdateSeekTime(player.value?.currentTime() ?? 0);\n });\n player.value.on(\"pause\", () => {\n isPaused.value = true;\n });\n player.value.on(\"timeupdate\", () => {\n clearTimeout(stalledTimout.value);\n definedStalledTimeout();\n onTimeUpdateVideo();\n });\n player.value.on(\"seeking\", () => {\n playerStore.playerUpdateSeekTime(player.value?.currentTime() ?? 0);\n });\n}\n\nasync function playLiveIos(): Promise<void> {\n videoElement.value.onloadedmetadata = () => {\n const playPromise = videoElement.value.play();\n if (playPromise !== undefined) {\n playPromise\n .then(() => {\n errorPlay.value = \"\";\n playing.value = true;\n })\n .catch(() => {\n playing.value = false;\n });\n }\n };\n videoElement.value.onerror = async () => {\n stopLive();\n errorPlay.value = t(\"Podcast play error\");\n };\n videoElement.value.ontimeupdate = async () => {\n clearTimeout(stalledTimout.value);\n definedStalledTimeout();\n onTimeUpdateVideo();\n };\n videoElement.value.onpause = async () => {\n isPaused.value = true;\n };\n videoElement.value.onseeking = async () => {\n playerStore.playerUpdateSeekTime(videoElement.value.currentTime);\n };\n if (props.isSecured && authStore.authParam.accessToken) {\n videoElement.value.src = props.hlsUrl + \"access_token=\"+authStore.authParam.accessToken;\n }else{\n videoElement.value.src = props.hlsUrl;\n }\n videoElement.value.src = props.hlsUrl;\n}\n\nfunction videoClean(): void {\n if (useVideoSrc.value) {\n videoElement.value.pause();\n videoElement.value.removeAttribute(\"src\");\n videoElement.value.load();\n return;\n }\n if (player.value) {\n player.value.dispose();\n //Redraw\n const video_parent = document.getElementById(\"player-video-hls\");\n if (video_parent) {\n const video = document.createElement(\"video\");\n video.id = \"video-element-hls\";\n video.className = \"video-js\";\n video.preload = \"auto\";\n video.setAttribute(\"playsinline\", \"true\");\n video_parent.appendChild(video);\n }\n }\n}\nfunction stopLive(): void {\n clearTimeout(stalledTimout.value);\n errorPlay.value = \"\";\n videoClean();\n playing.value = false;\n endListeningProgress();\n}\nfunction onTimeUpdateVideo(): void {\n if (!downloadId.value) {\n return;\n }\n const currentTime =player.value?.currentTime() ?? videoElement.value.currentTime;\n onTimeUpdateProgress(currentTime);\n}\n</script>\n\n<style lang=\"scss\">\n@use \"video.js\";\n@use \"../../../../style/videoPlayer\";\n\n.octopus-app {\n .video-live-error {\n text-align: center;\n width: 100%;\n font-size: 1rem;\n font-weight: bold;\n padding: 0.2rem 0;\n color: white;\n position: absolute;\n top: 0;\n background: var(--octopus-danger);\n z-index: 1;\n }\n\n .video-js {\n width: 500px;\n height: 281px;\n }\n}\n</style>\n"],"mappings":"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"}
@@ -1,7 +1,7 @@
1
1
  import { t as _plugin_vue_export_helper_default } from "./_plugin-vue_export-helper-BOaGB7Aw.mjs";
2
- import { i as useAuthStore } from "./classicApi-CkDHWZG1.mjs";
3
- import { n as usePlayerStore } from "./PlayerStore-DukkcHI_.mjs";
4
- import { t as usePlayerLogicProgress } from "./usePlayerLogicProgress-75G9QMg_.mjs";
2
+ import { i as useAuthStore } from "./classicApi-xjOqAovv.mjs";
3
+ import { n as usePlayerStore } from "./PlayerStore-vYmnOEA_.mjs";
4
+ import { t as usePlayerLogicProgress } from "./usePlayerLogicProgress-DcHbYGOR.mjs";
5
5
  import { computed, createCommentVNode, createElementBlock, createElementVNode, defineComponent, normalizeClass, onMounted, onUnmounted, openBlock, ref, toDisplayString, useTemplateRef } from "vue";
6
6
  import { useI18n } from "vue-i18n";
7
7
  import videojs from "video.js";
@@ -229,4 +229,4 @@ var PlayerVideoHls_default = /*#__PURE__*/ _plugin_vue_export_helper_default(Pla
229
229
  //#endregion
230
230
  export { PlayerVideoHls_default as default };
231
231
 
232
- //# sourceMappingURL=PlayerVideoHls-Dms7iTSo.mjs.map
232
+ //# sourceMappingURL=PlayerVideoHls-xSNqzBEw.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"PlayerVideoHls-xSNqzBEw.mjs","names":[],"sources":["../src/components/misc/player/video/PlayerVideoHls.vue","../src/components/misc/player/video/PlayerVideoHls.vue"],"sourcesContent":["<template>\n <div\n id=\"player-video-hls\"\n class=\"video-player\"\n :class=\"responsive ? 'video-responsive-wrapper' : ''\"\n >\n <div v-if=\"errorPlay.length\" class=\"video-live-error\">{{ errorPlay }}</div>\n <video\n id=\"video-element-hls\"\n ref=\"videoelement\"\n class=\"video-js\"\n playsinline\n ></video>\n </div>\n</template>\n<script setup lang=\"ts\">\nimport { usePlayerStore } from \"../../../../stores/PlayerStore\";\nimport {usePlayerLogicProgress} from \"../../../composable/player/usePlayerLogicProgress\";\nimport videojs, { VideoJsPlayer } from \"video.js\";\nimport qualitySelectorHls from \"videojs-quality-selector-hls\";\nif (undefined === videojs.getPlugin(\"qualitySelectorHls\")) {\n videojs.registerPlugin(\"qualitySelectorHls\", qualitySelectorHls);\n}\nimport { computed, onMounted, onUnmounted, Ref, ref, useTemplateRef } from \"vue\";\nimport { useAuthStore } from \"../../../../stores/AuthStore\";\nimport { useI18n } from \"vue-i18n\";\n\n//Props \nconst props = defineProps({\n hlsUrl: { default: \"\", type: String },\n responsive: { default: false, type: Boolean },\n isSecured: { default: true, type: Boolean },\n})\n\n//Data\nconst errorPlay = ref(\"\");\nconst useVideoSrc = ref(false);\nconst player: Ref<VideoJsPlayer | undefined> = ref(false);\nconst playing = ref(false);\nconst isPaused = ref(false);\nconst stalledTimout: Ref<ReturnType<typeof setTimeout> | undefined> = ref(undefined);\nconst videoElementRef = useTemplateRef('videoelement');\n\n\n//Composables\nconst { t } = useI18n();\nconst { downloadId, initLiveDownloadId, onTimeUpdateProgress, endListeningProgress} = usePlayerLogicProgress();\nconst authStore = useAuthStore();\nconst playerStore = usePlayerStore();\n\n\n\n//Computed\nconst videoElement = computed(() => {\n return videoElementRef?.value as HTMLVideoElement;\n});\nconst videoOptions = computed(() => {\n return {\n autoplay: true,\n controls: true,\n liveui: true,\n sources: [\n {\n src: props.hlsUrl,\n type: \"application/x-mpegURL\",\n },\n ],\n html5: {\n vhs: {\n overrideNative: !videojs.browser.IS_SAFARI,\n },\n nativeAudioTracks: false,\n nativeVideoTracks: false,\n },\n };\n});\n\n\nonMounted(()=>{\n playerStore.playerUpdatePlayerHlsUrl(props.hlsUrl);\n useVideoSrc.value =\n \"\" !== videoElement.value.canPlayType(\"application/vnd.apple.mpegurl\") &&\n !navigator.userAgent.includes(\"Android\");\n playLive();\n})\n\nonUnmounted(()=>{\n if (playing.value) {\n stopLive();\n }\n})\n\n\n//Methods\nfunction definedStalledTimeout() {\n isPaused.value = false;\n stalledTimout.value = setTimeout(() => {\n if (isPaused.value) {\n return;\n }\n videoClean();\n playLive();\n }, 15000);\n}\nasync function playLive(): Promise<void> {\n clearTimeout(stalledTimout.value);\n definedStalledTimeout();\n await initLiveDownloadId();\n if (useVideoSrc.value) {\n playLiveIos();\n return;\n }\n if (props.isSecured && authStore.authParam.accessToken) {\n const globalXhrRequestHook = (options: any) => {\n options.beforeSend = (xhr: XMLHttpRequest) => {\n xhr.setRequestHeader(\"Authorization\", \"Bearer \"+authStore.authParam.accessToken);\n };\n return options;\n };\n videojs.Vhs.xhr.onRequest(globalXhrRequestHook);\n }\n player.value = videojs(\n document.getElementById(\"video-element-hls\") as Element,\n videoOptions.value,\n () => {\n player.value.qualitySelectorHls({ displayCurrentQuality: true });\n errorPlay.value = \"\";\n playing.value = true;\n },\n );\n player.value.on(\"error\", (error: any) => {\n stopLive();\n if (error.description?.includes(\"403\")) {\n errorPlay.value = t(\"Video is unavailable\");\n } else {\n errorPlay.value = t(\"Podcast play error\");\n }\n });\n player.value.on(\"seeking\", () => {\n playerStore.playerUpdateSeekTime(player.value?.currentTime() ?? 0);\n });\n player.value.on(\"pause\", () => {\n isPaused.value = true;\n });\n player.value.on(\"timeupdate\", () => {\n clearTimeout(stalledTimout.value);\n definedStalledTimeout();\n onTimeUpdateVideo();\n });\n player.value.on(\"seeking\", () => {\n playerStore.playerUpdateSeekTime(player.value?.currentTime() ?? 0);\n });\n}\n\nasync function playLiveIos(): Promise<void> {\n videoElement.value.onloadedmetadata = () => {\n const playPromise = videoElement.value.play();\n if (playPromise !== undefined) {\n playPromise\n .then(() => {\n errorPlay.value = \"\";\n playing.value = true;\n })\n .catch(() => {\n playing.value = false;\n });\n }\n };\n videoElement.value.onerror = async () => {\n stopLive();\n errorPlay.value = t(\"Podcast play error\");\n };\n videoElement.value.ontimeupdate = async () => {\n clearTimeout(stalledTimout.value);\n definedStalledTimeout();\n onTimeUpdateVideo();\n };\n videoElement.value.onpause = async () => {\n isPaused.value = true;\n };\n videoElement.value.onseeking = async () => {\n playerStore.playerUpdateSeekTime(videoElement.value.currentTime);\n };\n if (props.isSecured && authStore.authParam.accessToken) {\n videoElement.value.src = props.hlsUrl + \"access_token=\"+authStore.authParam.accessToken;\n }else{\n videoElement.value.src = props.hlsUrl;\n }\n videoElement.value.src = props.hlsUrl;\n}\n\nfunction videoClean(): void {\n if (useVideoSrc.value) {\n videoElement.value.pause();\n videoElement.value.removeAttribute(\"src\");\n videoElement.value.load();\n return;\n }\n if (player.value) {\n player.value.dispose();\n //Redraw\n const video_parent = document.getElementById(\"player-video-hls\");\n if (video_parent) {\n const video = document.createElement(\"video\");\n video.id = \"video-element-hls\";\n video.className = \"video-js\";\n video.preload = \"auto\";\n video.setAttribute(\"playsinline\", \"true\");\n video_parent.appendChild(video);\n }\n }\n}\nfunction stopLive(): void {\n clearTimeout(stalledTimout.value);\n errorPlay.value = \"\";\n videoClean();\n playing.value = false;\n endListeningProgress();\n}\nfunction onTimeUpdateVideo(): void {\n if (!downloadId.value) {\n return;\n }\n const currentTime =player.value?.currentTime() ?? videoElement.value.currentTime;\n onTimeUpdateProgress(currentTime);\n}\n</script>\n\n<style lang=\"scss\">\n@use \"video.js\";\n@use \"../../../../style/videoPlayer\";\n\n.octopus-app {\n .video-live-error {\n text-align: center;\n width: 100%;\n font-size: 1rem;\n font-weight: bold;\n padding: 0.2rem 0;\n color: white;\n position: absolute;\n top: 0;\n background: var(--octopus-danger);\n z-index: 1;\n }\n\n .video-js {\n width: 500px;\n height: 281px;\n }\n}\n</style>\n","<template>\n <div\n id=\"player-video-hls\"\n class=\"video-player\"\n :class=\"responsive ? 'video-responsive-wrapper' : ''\"\n >\n <div v-if=\"errorPlay.length\" class=\"video-live-error\">{{ errorPlay }}</div>\n <video\n id=\"video-element-hls\"\n ref=\"videoelement\"\n class=\"video-js\"\n playsinline\n ></video>\n </div>\n</template>\n<script setup lang=\"ts\">\nimport { usePlayerStore } from \"../../../../stores/PlayerStore\";\nimport {usePlayerLogicProgress} from \"../../../composable/player/usePlayerLogicProgress\";\nimport videojs, { VideoJsPlayer } from \"video.js\";\nimport qualitySelectorHls from \"videojs-quality-selector-hls\";\nif (undefined === videojs.getPlugin(\"qualitySelectorHls\")) {\n videojs.registerPlugin(\"qualitySelectorHls\", qualitySelectorHls);\n}\nimport { computed, onMounted, onUnmounted, Ref, ref, useTemplateRef } from \"vue\";\nimport { useAuthStore } from \"../../../../stores/AuthStore\";\nimport { useI18n } from \"vue-i18n\";\n\n//Props \nconst props = defineProps({\n hlsUrl: { default: \"\", type: String },\n responsive: { default: false, type: Boolean },\n isSecured: { default: true, type: Boolean },\n})\n\n//Data\nconst errorPlay = ref(\"\");\nconst useVideoSrc = ref(false);\nconst player: Ref<VideoJsPlayer | undefined> = ref(false);\nconst playing = ref(false);\nconst isPaused = ref(false);\nconst stalledTimout: Ref<ReturnType<typeof setTimeout> | undefined> = ref(undefined);\nconst videoElementRef = useTemplateRef('videoelement');\n\n\n//Composables\nconst { t } = useI18n();\nconst { downloadId, initLiveDownloadId, onTimeUpdateProgress, endListeningProgress} = usePlayerLogicProgress();\nconst authStore = useAuthStore();\nconst playerStore = usePlayerStore();\n\n\n\n//Computed\nconst videoElement = computed(() => {\n return videoElementRef?.value as HTMLVideoElement;\n});\nconst videoOptions = computed(() => {\n return {\n autoplay: true,\n controls: true,\n liveui: true,\n sources: [\n {\n src: props.hlsUrl,\n type: \"application/x-mpegURL\",\n },\n ],\n html5: {\n vhs: {\n overrideNative: !videojs.browser.IS_SAFARI,\n },\n nativeAudioTracks: false,\n nativeVideoTracks: false,\n },\n };\n});\n\n\nonMounted(()=>{\n playerStore.playerUpdatePlayerHlsUrl(props.hlsUrl);\n useVideoSrc.value =\n \"\" !== videoElement.value.canPlayType(\"application/vnd.apple.mpegurl\") &&\n !navigator.userAgent.includes(\"Android\");\n playLive();\n})\n\nonUnmounted(()=>{\n if (playing.value) {\n stopLive();\n }\n})\n\n\n//Methods\nfunction definedStalledTimeout() {\n isPaused.value = false;\n stalledTimout.value = setTimeout(() => {\n if (isPaused.value) {\n return;\n }\n videoClean();\n playLive();\n }, 15000);\n}\nasync function playLive(): Promise<void> {\n clearTimeout(stalledTimout.value);\n definedStalledTimeout();\n await initLiveDownloadId();\n if (useVideoSrc.value) {\n playLiveIos();\n return;\n }\n if (props.isSecured && authStore.authParam.accessToken) {\n const globalXhrRequestHook = (options: any) => {\n options.beforeSend = (xhr: XMLHttpRequest) => {\n xhr.setRequestHeader(\"Authorization\", \"Bearer \"+authStore.authParam.accessToken);\n };\n return options;\n };\n videojs.Vhs.xhr.onRequest(globalXhrRequestHook);\n }\n player.value = videojs(\n document.getElementById(\"video-element-hls\") as Element,\n videoOptions.value,\n () => {\n player.value.qualitySelectorHls({ displayCurrentQuality: true });\n errorPlay.value = \"\";\n playing.value = true;\n },\n );\n player.value.on(\"error\", (error: any) => {\n stopLive();\n if (error.description?.includes(\"403\")) {\n errorPlay.value = t(\"Video is unavailable\");\n } else {\n errorPlay.value = t(\"Podcast play error\");\n }\n });\n player.value.on(\"seeking\", () => {\n playerStore.playerUpdateSeekTime(player.value?.currentTime() ?? 0);\n });\n player.value.on(\"pause\", () => {\n isPaused.value = true;\n });\n player.value.on(\"timeupdate\", () => {\n clearTimeout(stalledTimout.value);\n definedStalledTimeout();\n onTimeUpdateVideo();\n });\n player.value.on(\"seeking\", () => {\n playerStore.playerUpdateSeekTime(player.value?.currentTime() ?? 0);\n });\n}\n\nasync function playLiveIos(): Promise<void> {\n videoElement.value.onloadedmetadata = () => {\n const playPromise = videoElement.value.play();\n if (playPromise !== undefined) {\n playPromise\n .then(() => {\n errorPlay.value = \"\";\n playing.value = true;\n })\n .catch(() => {\n playing.value = false;\n });\n }\n };\n videoElement.value.onerror = async () => {\n stopLive();\n errorPlay.value = t(\"Podcast play error\");\n };\n videoElement.value.ontimeupdate = async () => {\n clearTimeout(stalledTimout.value);\n definedStalledTimeout();\n onTimeUpdateVideo();\n };\n videoElement.value.onpause = async () => {\n isPaused.value = true;\n };\n videoElement.value.onseeking = async () => {\n playerStore.playerUpdateSeekTime(videoElement.value.currentTime);\n };\n if (props.isSecured && authStore.authParam.accessToken) {\n videoElement.value.src = props.hlsUrl + \"access_token=\"+authStore.authParam.accessToken;\n }else{\n videoElement.value.src = props.hlsUrl;\n }\n videoElement.value.src = props.hlsUrl;\n}\n\nfunction videoClean(): void {\n if (useVideoSrc.value) {\n videoElement.value.pause();\n videoElement.value.removeAttribute(\"src\");\n videoElement.value.load();\n return;\n }\n if (player.value) {\n player.value.dispose();\n //Redraw\n const video_parent = document.getElementById(\"player-video-hls\");\n if (video_parent) {\n const video = document.createElement(\"video\");\n video.id = \"video-element-hls\";\n video.className = \"video-js\";\n video.preload = \"auto\";\n video.setAttribute(\"playsinline\", \"true\");\n video_parent.appendChild(video);\n }\n }\n}\nfunction stopLive(): void {\n clearTimeout(stalledTimout.value);\n errorPlay.value = \"\";\n videoClean();\n playing.value = false;\n endListeningProgress();\n}\nfunction onTimeUpdateVideo(): void {\n if (!downloadId.value) {\n return;\n }\n const currentTime =player.value?.currentTime() ?? videoElement.value.currentTime;\n onTimeUpdateProgress(currentTime);\n}\n</script>\n\n<style lang=\"scss\">\n@use \"video.js\";\n@use \"../../../../style/videoPlayer\";\n\n.octopus-app {\n .video-live-error {\n text-align: center;\n width: 100%;\n font-size: 1rem;\n font-weight: bold;\n padding: 0.2rem 0;\n color: white;\n position: absolute;\n top: 0;\n background: var(--octopus-danger);\n z-index: 1;\n }\n\n .video-js {\n width: 500px;\n height: 281px;\n }\n}\n</style>\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;EAoBA,IAAI,KAAA,MAAc,QAAQ,UAAU,oBAAoB,GACtD,QAAQ,eAAe,sBAAsB,kBAAkB;EAOjE,MAAM,QAAQ;EAOd,MAAM,YAAY,IAAI,EAAE;EACxB,MAAM,cAAc,IAAI,KAAK;EAC7B,MAAM,SAAyC,IAAI,KAAK;EACxD,MAAM,UAAU,IAAI,KAAK;EACzB,MAAM,WAAW,IAAI,KAAK;EAC1B,MAAM,gBAAgE,IAAI,KAAA,CAAS;EACnF,MAAM,kBAAkB,eAAe,cAAc;EAIrD,MAAM,EAAE,MAAM,QAAQ;EACtB,MAAM,EAAE,YAAY,oBAAoB,sBAAsB,yBAAwB,uBAAuB;EAC7G,MAAM,YAAY,aAAa;EAC/B,MAAM,cAAc,eAAe;EAKnC,MAAM,eAAe,eAAe;GAClC,OAAO,iBAAiB;EAC1B,CAAC;EACD,MAAM,eAAe,eAAe;GAClC,OAAO;IACL,UAAU;IACV,UAAU;IACV,QAAQ;IACR,SAAS,CACP;KACE,KAAK,MAAM;KACX,MAAM;IACR,CACF;IACA,OAAO;KACL,KAAK,EACH,gBAAgB,CAAC,QAAQ,QAAQ,UACnC;KACA,mBAAmB;KACnB,mBAAmB;IACrB;GACF;EACF,CAAC;EAGD,gBAAc;GACZ,YAAY,yBAAyB,MAAM,MAAM;GACjD,YAAY,QACV,OAAO,aAAa,MAAM,YAAY,+BAA+B,KACrE,CAAC,UAAU,UAAU,SAAS,SAAS;GACzC,SAAS;EACX,CAAC;EAED,kBAAgB;GACd,IAAI,QAAQ,OACV,SAAS;EAEb,CAAC;EAID,SAAS,wBAAwB;GAC/B,SAAS,QAAQ;GACjB,cAAc,QAAQ,iBAAiB;IACrC,IAAI,SAAS,OACX;IAEF,WAAW;IACX,SAAS;GACX,GAAG,IAAK;EACV;EACA,eAAe,WAA0B;GACvC,aAAa,cAAc,KAAK;GAChC,sBAAsB;GACtB,MAAM,mBAAmB;GACzB,IAAI,YAAY,OAAO;IACrB,YAAY;IACZ;GACF;GACA,IAAI,MAAM,aAAa,UAAU,UAAU,aAAa;IACtD,MAAM,wBAAwB,YAAiB;KAC7C,QAAQ,cAAc,QAAwB;MAC5C,IAAI,iBAAiB,iBAAiB,YAAU,UAAU,UAAU,WAAW;KACjF;KACA,OAAO;IACT;IACA,QAAQ,IAAI,IAAI,UAAU,oBAAoB;GAChD;GACA,OAAO,QAAQ,QACb,SAAS,eAAe,mBAAmB,GAC3C,aAAa,aACP;IACJ,OAAO,MAAM,mBAAmB,EAAE,uBAAuB,KAAK,CAAC;IAC/D,UAAU,QAAQ;IAClB,QAAQ,QAAQ;GAClB,CACF;GACA,OAAO,MAAM,GAAG,UAAU,UAAe;IACvC,SAAS;IACT,IAAI,MAAM,aAAa,SAAS,KAAK,GACnC,UAAU,QAAQ,EAAE,sBAAsB;SAE1C,UAAU,QAAQ,EAAE,oBAAoB;GAE5C,CAAC;GACD,OAAO,MAAM,GAAG,iBAAiB;IAC/B,YAAY,qBAAqB,OAAO,OAAO,YAAY,KAAK,CAAC;GACnE,CAAC;GACD,OAAO,MAAM,GAAG,eAAe;IAC7B,SAAS,QAAQ;GACnB,CAAC;GACD,OAAO,MAAM,GAAG,oBAAoB;IAClC,aAAa,cAAc,KAAK;IAChC,sBAAsB;IACtB,kBAAkB;GACpB,CAAC;GACD,OAAO,MAAM,GAAG,iBAAiB;IAC/B,YAAY,qBAAqB,OAAO,OAAO,YAAY,KAAK,CAAC;GACnE,CAAC;EACH;EAEA,eAAe,cAA6B;GAC1C,aAAa,MAAM,yBAAyB;IAC1C,MAAM,cAAc,aAAa,MAAM,KAAK;IAC5C,IAAI,gBAAgB,KAAA,GAClB,YACG,WAAW;KACV,UAAU,QAAQ;KAClB,QAAQ,QAAQ;IAClB,CAAC,EACA,YAAY;KACX,QAAQ,QAAQ;IAClB,CAAC;GAEP;GACA,aAAa,MAAM,UAAU,YAAY;IACvC,SAAS;IACT,UAAU,QAAQ,EAAE,oBAAoB;GAC1C;GACA,aAAa,MAAM,eAAe,YAAY;IAC5C,aAAa,cAAc,KAAK;IAChC,sBAAsB;IACtB,kBAAkB;GACpB;GACA,aAAa,MAAM,UAAU,YAAY;IACvC,SAAS,QAAQ;GACnB;GACA,aAAa,MAAM,YAAY,YAAY;IACzC,YAAY,qBAAqB,aAAa,MAAM,WAAW;GACjE;GACA,IAAI,MAAM,aAAa,UAAU,UAAU,aACzC,aAAa,MAAM,MAAM,MAAM,SAAS,kBAAgB,UAAU,UAAU;QAE5E,aAAa,MAAM,MAAM,MAAM;GAEjC,aAAa,MAAM,MAAM,MAAM;EACjC;EAEA,SAAS,aAAmB;GAC1B,IAAI,YAAY,OAAO;IACrB,aAAa,MAAM,MAAM;IACzB,aAAa,MAAM,gBAAgB,KAAK;IACxC,aAAa,MAAM,KAAK;IACxB;GACF;GACA,IAAI,OAAO,OAAO;IAChB,OAAO,MAAM,QAAQ;IAErB,MAAM,eAAe,SAAS,eAAe,kBAAkB;IAC/D,IAAI,cAAc;KAChB,MAAM,QAAQ,SAAS,cAAc,OAAO;KAC5C,MAAM,KAAK;KACX,MAAM,YAAY;KAClB,MAAM,UAAU;KAChB,MAAM,aAAa,eAAe,MAAM;KACxC,aAAa,YAAY,KAAK;IAChC;GACF;EACF;EACA,SAAS,WAAiB;GACxB,aAAa,cAAc,KAAK;GAChC,UAAU,QAAQ;GAClB,WAAW;GACX,QAAQ,QAAQ;GAChB,qBAAqB;EACvB;EACA,SAAS,oBAA0B;GACjC,IAAI,CAAC,WAAW,OACd;GAGF,qBADmB,OAAO,OAAO,YAAY,KAAK,aAAa,MAAM,WACrC;EAClC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CC3NiC,OAAM;;;CAEjC,IAAG;CACH,KAAI;CACJ,OAAM;CACN,aAAA;;;qBAVJ,mBAYM,OAAA;EAXJ,IAAG;EACH,OAAK,eAAA,CAAC,gBACE,OAAA,aAAU,6BAAA,EAAA,CAAA;KAEP,OAAA,UAAU,UAAA,UAAA,GAArB,mBAA2E,OAA3E,YAA2E,gBAAlB,OAAA,SAAS,GAAA,CAAA,KAAA,mBAAA,QAAA,IAAA,GAClE,mBAKS,SALT,YAKS,MAAA,GAAA,CAAA,GAAA,CAAA"}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"PlayerVideoHls-zNbegJFp.mjs","names":[],"sources":["../src/components/misc/player/video/PlayerVideoHls.vue","../src/components/misc/player/video/PlayerVideoHls.vue"],"sourcesContent":["<template>\n <div\n id=\"player-video-hls\"\n class=\"video-player\"\n :class=\"responsive ? 'video-responsive-wrapper' : ''\"\n >\n <div v-if=\"errorPlay.length\" class=\"video-live-error\">{{ errorPlay }}</div>\n <video\n id=\"video-element-hls\"\n ref=\"videoelement\"\n class=\"video-js\"\n playsinline\n ></video>\n </div>\n</template>\n<script setup lang=\"ts\">\nimport { usePlayerStore } from \"../../../../stores/PlayerStore\";\nimport {usePlayerLogicProgress} from \"../../../composable/player/usePlayerLogicProgress\";\nimport videojs, { VideoJsPlayer } from \"video.js\";\nimport qualitySelectorHls from \"videojs-quality-selector-hls\";\nif (undefined === videojs.getPlugin(\"qualitySelectorHls\")) {\n videojs.registerPlugin(\"qualitySelectorHls\", qualitySelectorHls);\n}\nimport { computed, onMounted, onUnmounted, Ref, ref, useTemplateRef } from \"vue\";\nimport { useAuthStore } from \"../../../../stores/AuthStore\";\nimport { useI18n } from \"vue-i18n\";\n\n//Props \nconst props = defineProps({\n hlsUrl: { default: \"\", type: String },\n responsive: { default: false, type: Boolean },\n isSecured: { default: true, type: Boolean },\n})\n\n//Data\nconst errorPlay = ref(\"\");\nconst useVideoSrc = ref(false);\nconst player: Ref<VideoJsPlayer | undefined> = ref(false);\nconst playing = ref(false);\nconst isPaused = ref(false);\nconst stalledTimout: Ref<ReturnType<typeof setTimeout> | undefined> = ref(undefined);\nconst videoElementRef = useTemplateRef('videoelement');\n\n\n//Composables\nconst { t } = useI18n();\nconst { downloadId, initLiveDownloadId, onTimeUpdateProgress, endListeningProgress} = usePlayerLogicProgress();\nconst authStore = useAuthStore();\nconst playerStore = usePlayerStore();\n\n\n\n//Computed\nconst videoElement = computed(() => {\n return videoElementRef?.value as HTMLVideoElement;\n});\nconst videoOptions = computed(() => {\n return {\n autoplay: true,\n controls: true,\n liveui: true,\n sources: [\n {\n src: props.hlsUrl,\n type: \"application/x-mpegURL\",\n },\n ],\n html5: {\n vhs: {\n overrideNative: !videojs.browser.IS_SAFARI,\n },\n nativeAudioTracks: false,\n nativeVideoTracks: false,\n },\n };\n});\n\n\nonMounted(()=>{\n playerStore.playerUpdatePlayerHlsUrl(props.hlsUrl);\n useVideoSrc.value =\n \"\" !== videoElement.value.canPlayType(\"application/vnd.apple.mpegurl\") &&\n !navigator.userAgent.includes(\"Android\");\n playLive();\n})\n\nonUnmounted(()=>{\n if (playing.value) {\n stopLive();\n }\n})\n\n\n//Methods\nfunction definedStalledTimeout() {\n isPaused.value = false;\n stalledTimout.value = setTimeout(() => {\n if (isPaused.value) {\n return;\n }\n videoClean();\n playLive();\n }, 15000);\n}\nasync function playLive(): Promise<void> {\n clearTimeout(stalledTimout.value);\n definedStalledTimeout();\n await initLiveDownloadId();\n if (useVideoSrc.value) {\n playLiveIos();\n return;\n }\n if (props.isSecured && authStore.authParam.accessToken) {\n const globalXhrRequestHook = (options: any) => {\n options.beforeSend = (xhr: XMLHttpRequest) => {\n xhr.setRequestHeader(\"Authorization\", \"Bearer \"+authStore.authParam.accessToken);\n };\n return options;\n };\n videojs.Vhs.xhr.onRequest(globalXhrRequestHook);\n }\n player.value = videojs(\n document.getElementById(\"video-element-hls\") as Element,\n videoOptions.value,\n () => {\n player.value.qualitySelectorHls({ displayCurrentQuality: true });\n errorPlay.value = \"\";\n playing.value = true;\n },\n );\n player.value.on(\"error\", (error: any) => {\n stopLive();\n if (error.description?.includes(\"403\")) {\n errorPlay.value = t(\"Video is unavailable\");\n } else {\n errorPlay.value = t(\"Podcast play error\");\n }\n });\n player.value.on(\"seeking\", () => {\n playerStore.playerUpdateSeekTime(player.value?.currentTime() ?? 0);\n });\n player.value.on(\"pause\", () => {\n isPaused.value = true;\n });\n player.value.on(\"timeupdate\", () => {\n clearTimeout(stalledTimout.value);\n definedStalledTimeout();\n onTimeUpdateVideo();\n });\n player.value.on(\"seeking\", () => {\n playerStore.playerUpdateSeekTime(player.value?.currentTime() ?? 0);\n });\n}\n\nasync function playLiveIos(): Promise<void> {\n videoElement.value.onloadedmetadata = () => {\n const playPromise = videoElement.value.play();\n if (playPromise !== undefined) {\n playPromise\n .then(() => {\n errorPlay.value = \"\";\n playing.value = true;\n })\n .catch(() => {\n playing.value = false;\n });\n }\n };\n videoElement.value.onerror = async () => {\n stopLive();\n errorPlay.value = t(\"Podcast play error\");\n };\n videoElement.value.ontimeupdate = async () => {\n clearTimeout(stalledTimout.value);\n definedStalledTimeout();\n onTimeUpdateVideo();\n };\n videoElement.value.onpause = async () => {\n isPaused.value = true;\n };\n videoElement.value.onseeking = async () => {\n playerStore.playerUpdateSeekTime(videoElement.value.currentTime);\n };\n if (props.isSecured && authStore.authParam.accessToken) {\n videoElement.value.src = props.hlsUrl + \"access_token=\"+authStore.authParam.accessToken;\n }else{\n videoElement.value.src = props.hlsUrl;\n }\n videoElement.value.src = props.hlsUrl;\n}\n\nfunction videoClean(): void {\n if (useVideoSrc.value) {\n videoElement.value.pause();\n videoElement.value.removeAttribute(\"src\");\n videoElement.value.load();\n return;\n }\n if (player.value) {\n player.value.dispose();\n //Redraw\n const video_parent = document.getElementById(\"player-video-hls\");\n if (video_parent) {\n const video = document.createElement(\"video\");\n video.id = \"video-element-hls\";\n video.className = \"video-js\";\n video.preload = \"auto\";\n video.setAttribute(\"playsinline\", \"true\");\n video_parent.appendChild(video);\n }\n }\n}\nfunction stopLive(): void {\n clearTimeout(stalledTimout.value);\n errorPlay.value = \"\";\n videoClean();\n playing.value = false;\n endListeningProgress();\n}\nfunction onTimeUpdateVideo(): void {\n if (!downloadId.value) {\n return;\n }\n const currentTime =player.value?.currentTime() ?? videoElement.value.currentTime;\n onTimeUpdateProgress(currentTime);\n}\n</script>\n\n<style lang=\"scss\">\n@use \"video.js\";\n@use \"../../../../style/videoPlayer\";\n\n.octopus-app {\n .video-live-error {\n text-align: center;\n width: 100%;\n font-size: 1rem;\n font-weight: bold;\n padding: 0.2rem 0;\n color: white;\n position: absolute;\n top: 0;\n background: var(--octopus-danger);\n z-index: 1;\n }\n\n .video-js {\n width: 500px;\n height: 281px;\n }\n}\n</style>\n","<template>\n <div\n id=\"player-video-hls\"\n class=\"video-player\"\n :class=\"responsive ? 'video-responsive-wrapper' : ''\"\n >\n <div v-if=\"errorPlay.length\" class=\"video-live-error\">{{ errorPlay }}</div>\n <video\n id=\"video-element-hls\"\n ref=\"videoelement\"\n class=\"video-js\"\n playsinline\n ></video>\n </div>\n</template>\n<script setup lang=\"ts\">\nimport { usePlayerStore } from \"../../../../stores/PlayerStore\";\nimport {usePlayerLogicProgress} from \"../../../composable/player/usePlayerLogicProgress\";\nimport videojs, { VideoJsPlayer } from \"video.js\";\nimport qualitySelectorHls from \"videojs-quality-selector-hls\";\nif (undefined === videojs.getPlugin(\"qualitySelectorHls\")) {\n videojs.registerPlugin(\"qualitySelectorHls\", qualitySelectorHls);\n}\nimport { computed, onMounted, onUnmounted, Ref, ref, useTemplateRef } from \"vue\";\nimport { useAuthStore } from \"../../../../stores/AuthStore\";\nimport { useI18n } from \"vue-i18n\";\n\n//Props \nconst props = defineProps({\n hlsUrl: { default: \"\", type: String },\n responsive: { default: false, type: Boolean },\n isSecured: { default: true, type: Boolean },\n})\n\n//Data\nconst errorPlay = ref(\"\");\nconst useVideoSrc = ref(false);\nconst player: Ref<VideoJsPlayer | undefined> = ref(false);\nconst playing = ref(false);\nconst isPaused = ref(false);\nconst stalledTimout: Ref<ReturnType<typeof setTimeout> | undefined> = ref(undefined);\nconst videoElementRef = useTemplateRef('videoelement');\n\n\n//Composables\nconst { t } = useI18n();\nconst { downloadId, initLiveDownloadId, onTimeUpdateProgress, endListeningProgress} = usePlayerLogicProgress();\nconst authStore = useAuthStore();\nconst playerStore = usePlayerStore();\n\n\n\n//Computed\nconst videoElement = computed(() => {\n return videoElementRef?.value as HTMLVideoElement;\n});\nconst videoOptions = computed(() => {\n return {\n autoplay: true,\n controls: true,\n liveui: true,\n sources: [\n {\n src: props.hlsUrl,\n type: \"application/x-mpegURL\",\n },\n ],\n html5: {\n vhs: {\n overrideNative: !videojs.browser.IS_SAFARI,\n },\n nativeAudioTracks: false,\n nativeVideoTracks: false,\n },\n };\n});\n\n\nonMounted(()=>{\n playerStore.playerUpdatePlayerHlsUrl(props.hlsUrl);\n useVideoSrc.value =\n \"\" !== videoElement.value.canPlayType(\"application/vnd.apple.mpegurl\") &&\n !navigator.userAgent.includes(\"Android\");\n playLive();\n})\n\nonUnmounted(()=>{\n if (playing.value) {\n stopLive();\n }\n})\n\n\n//Methods\nfunction definedStalledTimeout() {\n isPaused.value = false;\n stalledTimout.value = setTimeout(() => {\n if (isPaused.value) {\n return;\n }\n videoClean();\n playLive();\n }, 15000);\n}\nasync function playLive(): Promise<void> {\n clearTimeout(stalledTimout.value);\n definedStalledTimeout();\n await initLiveDownloadId();\n if (useVideoSrc.value) {\n playLiveIos();\n return;\n }\n if (props.isSecured && authStore.authParam.accessToken) {\n const globalXhrRequestHook = (options: any) => {\n options.beforeSend = (xhr: XMLHttpRequest) => {\n xhr.setRequestHeader(\"Authorization\", \"Bearer \"+authStore.authParam.accessToken);\n };\n return options;\n };\n videojs.Vhs.xhr.onRequest(globalXhrRequestHook);\n }\n player.value = videojs(\n document.getElementById(\"video-element-hls\") as Element,\n videoOptions.value,\n () => {\n player.value.qualitySelectorHls({ displayCurrentQuality: true });\n errorPlay.value = \"\";\n playing.value = true;\n },\n );\n player.value.on(\"error\", (error: any) => {\n stopLive();\n if (error.description?.includes(\"403\")) {\n errorPlay.value = t(\"Video is unavailable\");\n } else {\n errorPlay.value = t(\"Podcast play error\");\n }\n });\n player.value.on(\"seeking\", () => {\n playerStore.playerUpdateSeekTime(player.value?.currentTime() ?? 0);\n });\n player.value.on(\"pause\", () => {\n isPaused.value = true;\n });\n player.value.on(\"timeupdate\", () => {\n clearTimeout(stalledTimout.value);\n definedStalledTimeout();\n onTimeUpdateVideo();\n });\n player.value.on(\"seeking\", () => {\n playerStore.playerUpdateSeekTime(player.value?.currentTime() ?? 0);\n });\n}\n\nasync function playLiveIos(): Promise<void> {\n videoElement.value.onloadedmetadata = () => {\n const playPromise = videoElement.value.play();\n if (playPromise !== undefined) {\n playPromise\n .then(() => {\n errorPlay.value = \"\";\n playing.value = true;\n })\n .catch(() => {\n playing.value = false;\n });\n }\n };\n videoElement.value.onerror = async () => {\n stopLive();\n errorPlay.value = t(\"Podcast play error\");\n };\n videoElement.value.ontimeupdate = async () => {\n clearTimeout(stalledTimout.value);\n definedStalledTimeout();\n onTimeUpdateVideo();\n };\n videoElement.value.onpause = async () => {\n isPaused.value = true;\n };\n videoElement.value.onseeking = async () => {\n playerStore.playerUpdateSeekTime(videoElement.value.currentTime);\n };\n if (props.isSecured && authStore.authParam.accessToken) {\n videoElement.value.src = props.hlsUrl + \"access_token=\"+authStore.authParam.accessToken;\n }else{\n videoElement.value.src = props.hlsUrl;\n }\n videoElement.value.src = props.hlsUrl;\n}\n\nfunction videoClean(): void {\n if (useVideoSrc.value) {\n videoElement.value.pause();\n videoElement.value.removeAttribute(\"src\");\n videoElement.value.load();\n return;\n }\n if (player.value) {\n player.value.dispose();\n //Redraw\n const video_parent = document.getElementById(\"player-video-hls\");\n if (video_parent) {\n const video = document.createElement(\"video\");\n video.id = \"video-element-hls\";\n video.className = \"video-js\";\n video.preload = \"auto\";\n video.setAttribute(\"playsinline\", \"true\");\n video_parent.appendChild(video);\n }\n }\n}\nfunction stopLive(): void {\n clearTimeout(stalledTimout.value);\n errorPlay.value = \"\";\n videoClean();\n playing.value = false;\n endListeningProgress();\n}\nfunction onTimeUpdateVideo(): void {\n if (!downloadId.value) {\n return;\n }\n const currentTime =player.value?.currentTime() ?? videoElement.value.currentTime;\n onTimeUpdateProgress(currentTime);\n}\n</script>\n\n<style lang=\"scss\">\n@use \"video.js\";\n@use \"../../../../style/videoPlayer\";\n\n.octopus-app {\n .video-live-error {\n text-align: center;\n width: 100%;\n font-size: 1rem;\n font-weight: bold;\n padding: 0.2rem 0;\n color: white;\n position: absolute;\n top: 0;\n background: var(--octopus-danger);\n z-index: 1;\n }\n\n .video-js {\n width: 500px;\n height: 281px;\n }\n}\n</style>\n"],"mappings":"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"}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"PlaylistPage-BUj1Lzfp.mjs","names":[],"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":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EA+FA,MAAM,sBAAsB,2BACpB,OAAO,qCACf;EACA,MAAM,cAAc,2BACZ,OAAO,8BAAA,MAAA,MAAA,EAAA,CAAA,CACf;EACA,MAAM,qBAAqB,2BACnB,OAAO,oCACf;EACA,MAAM,iBAAiB,2BAA2B,OAAO,gCAAwC;EAIjG,MAAM,QAAQ;EASd,MAAM,SAAS,IAAI,KAAK;EACxB,MAAM,QAAQ,IAAI,KAAK;EACvB,MAAM,WAAuC,IAAI,KAAA,CAAS;EAI1D,MAAM,QAAQ,SAAS;EACvB,MAAM,EAAE,MAAM,QAAQ;EACtB,MAAM,EAAE,qBAAqB,cAAc;EAC3C,MAAM,EAAE,gBAAgB,cAAc,eAAe,gBAAgB;EACrE,MAAM,EAAE,qBAAqB,eAAe;EAC5C,MAAM,EAAC,cAAa,gBAAgB;EACpC,MAAM,YAAY,aAAa;EAC/B,MAAM,cAAc,eAAe;EACnC,MAAM,eAAe,gBAAgB;EACrC,MAAM,EACJ,eACA,eACA,WACE,mBAAmB,OAAO,IAAI;EAIlC,MAAM,gBAAgB,eAAc;GAClC,OACE,eAAe,SAAS,OAAO,gBAC/B,0BAA0B,SAAS,OAAO;EAE9C,CAAC;EACD,MAAM,YAAY,eAAc,cAAc,QAAO,EAAE,iBAAiB,IAAG,EAAE,UAAU,CAAC;EACxF,MAAM,OAAO,eAAc,SAAS,OAAO,SAAS,EAAE;EACtD,MAAM,cAAc,eAAc,SAAS,OAAO,eAAe,EAAE;EACnE,MAAM,YAAY,eAAc;GAC9B,OAAO,aACL,SAAS,OAAO,cAAc,IAC9B,UAAU,eACZ;EACF,CAAC;EAID,YAAU,MAAM,kBAAkB;GAAC,mBAAmB;EAAC,GAAG,EAAC,WAAW,KAAI,CAAC;EAG3E,sBAAsB;GACpB,aAAa,uBAAuB,IAAI;EAC1C,CAAC;EAID,SAAS,OAAO,MAAsB;GACpC,OAAO,sBAAc,OAAO,IAAI;EAClC;EACA,SAAS,YAAkB;GACzB,MAAM,QAAQ;GACd,OAAO,QAAQ;EACjB;EACA,eAAe,qBAAoC;GACjD,IAAI;IACF,OAAO,QAAQ;IACf,MAAM,QAAQ;IACd,SAAS,QAAQ,MAAM,YAAY,IAAI,MAAM,UAAU;IACvD,YAAY,sBAAsB,SAAS,MAAM,cAAc,EAAE;IACjE,IACG,CAAC,UAAU,SAAS,cAAc,SAClC,aAAa,SAAS,MAAM,cAAc,WAC3C,YAAY,iBAAiB,SAAS,MAAM,cAAc,MAC1D,MAAM,MAAM,cAAc,SAAS,MAAM,cAAc,IACvD;KACA,UAAU;KACV;IACF;IACA,aAAa,uBAAuB,SAAS,KAAK;IAClD,iBAAiB,SAAS,MAAM,KAAK;GACvC,SAAS,OAAO;IACd,UAAU,KAAmB;IAC7B,UAAU;GACZ;GACA,OAAO,QAAQ;EACjB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;mBCnMW,OAAM,WAAU;mBAWV,OAAM,aAAY;mBAOpB,OAAM,6BAA4B;;mBAUhC,OAAM,oDAAmD;;mBAyBzD,OAAM,aAAY;;;qBArDjC,mBAsEU,WAtEV,YAsEU,CArEQ,OAAA,UAAM,CAAK,OAAA,SAAS,OAAA,YAAA,UAAA,GAApC,mBAgEW,UAAA,EAAA,KAAA,EAAA,GAAA;EA9DD,OAAA,kBAAA,UAAA,GADR,YAIE,OAAA,uBAAA;;GAFC,cAAY,OAAA;GACZ,WAAS,OAAA,SAAS;;EAErB,mBAuDM,OAAA,EAtDJ,OAAK,eAAA,CAAC,mCACE,OAAA,iBAAc,8BAAA,EAAA,CAAA,EAAA,GAAA;GAEtB,mBAgCU,WAhCV,YAgCU;IA9BA,OAAA,aAAS,CAAK,OAAA,iBADtB,WAIE,KAAA,QAAA,YAAA;;KADC,UAAU,OAAA;;IAGb,mBAiBM,OAjBN,YAiBM;oBAhBJ,mBAQE,OAAA;MANA,OAAM;MACN,QAAO;MACP,eAAY;MACZ,KAAI;MACH,OAAO,OAAA,EAAC,uBAAA,EAAA,MAAgC,OAAA,KAAI,CAAA;MAC7C,OAAM;iDANE,OAAA,iBAAiB,OAAA,SAAS,UAAQ,KAAA,CAAA,CAAA,CAAA;KAQ5C,mBAGM,OAHN,YAGM,CAFJ,mBAAmB,MAAA,MAAA,gBAAZ,OAAA,IAAI,GAAA,CAAA,GAAA,CACY,OAAA,aAAA,UAAA,GAAvB,YAAoJ,OAAA,mBAAA;;MAAlH,OAAM;MAA0C,UAAU,OAAA;MAAW,mBAAiB,OAAA,SAAS,cAAc;;KAEjJ,mBAAA,gCAAA;KACA,mBAA+D,KAAA;MAA5D,OAAM;MAAuB,WAAQ,OAAA,OAAO,OAAA,WAAW;;KAC1D,mBAAA,iBAAA;;IAGM,OAAA,kBAAA,UAAA,GADR,YAME,OAAA,qBAAA;;KAJA,OAAM;KACL,SAAS,OAAA;KACT,gBAAc;KACd,kBAAgB;;;IAIZ,OAAA,kBAAkB,OAAA,aAAA,UAAA,GAD3B,YAIE,OAAA,gBAAA;;IAFC,UAAU,OAAA;IACV,mBAAiB,OAAA;;GAGZ,OAAA,MAAM,YAAY,gBAAA,UAAA,GAD1B,YAGE,OAAA,wBAAA;;IADC,mBAAiB,OAAA,SAAS,aAAa;;GAE1C,mBAQU,WARV,YAQU,CANA,OAAA,UAAA,UAAA,GADR,YAME,OAAA,gBAAA;;IAJQ,OAAO,OAAA;4DAAA,OAAA,gBAAa;IAC3B,OAAO,OAAA;IACP,MAAM,OAAA;IACN,UAAU,OAAA;;;;;;;;EAKjB,WAA4C,KAAA,QAAA,UAAA,eAAA,mBAAA,EAAA,UAAd,OAAA,SAAQ,CAAA,CAAA,CAAA;6CAExC,YAGE,OAAA,mBAAA;EAFC,gBAAY,CAAG,OAAA,SAAS,OAAA,EAAC,qBAAA,IAA0B,KAAA;EACnD,cAAY,OAAA,QAAQ,OAAA,EAAC,wBAAA,IAA6B,KAAA"}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"PlaylistPage-BhcJkM15.mjs","names":[],"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-BsHMB2nn.mjs","names":[],"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":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EA+FA,MAAM,sBAAsB,2BACpB,OAAO,qCACf;EACA,MAAM,cAAc,2BACZ,OAAO,8BAAA,MAAA,MAAA,EAAA,CAAA,CACf;EACA,MAAM,qBAAqB,2BACnB,OAAO,oCACf;EACA,MAAM,iBAAiB,2BAA2B,OAAO,gCAAwC;EAIjG,MAAM,QAAQ;EASd,MAAM,SAAS,IAAI,KAAK;EACxB,MAAM,QAAQ,IAAI,KAAK;EACvB,MAAM,WAAuC,IAAI,KAAA,CAAS;EAI1D,MAAM,QAAQ,SAAS;EACvB,MAAM,EAAE,MAAM,QAAQ;EACtB,MAAM,EAAE,qBAAqB,cAAc;EAC3C,MAAM,EAAE,gBAAgB,cAAc,eAAe,gBAAgB;EACrE,MAAM,EAAE,qBAAqB,eAAe;EAC5C,MAAM,EAAC,cAAa,gBAAgB;EACpC,MAAM,YAAY,aAAa;EAC/B,MAAM,cAAc,eAAe;EACnC,MAAM,eAAe,gBAAgB;EACrC,MAAM,EACJ,eACA,eACA,WACE,mBAAmB,OAAO,IAAI;EAIlC,MAAM,gBAAgB,eAAc;GAClC,OACE,eAAe,SAAS,OAAO,gBAC/B,0BAA0B,SAAS,OAAO;EAE9C,CAAC;EACD,MAAM,YAAY,eAAc,cAAc,QAAO,EAAE,iBAAiB,IAAG,EAAE,UAAU,CAAC;EACxF,MAAM,OAAO,eAAc,SAAS,OAAO,SAAS,EAAE;EACtD,MAAM,cAAc,eAAc,SAAS,OAAO,eAAe,EAAE;EACnE,MAAM,YAAY,eAAc;GAC9B,OAAO,aACL,SAAS,OAAO,cAAc,IAC9B,UAAU,eACZ;EACF,CAAC;EAID,YAAU,MAAM,kBAAkB;GAAC,mBAAmB;EAAC,GAAG,EAAC,WAAW,KAAI,CAAC;EAG3E,sBAAsB;GACpB,aAAa,uBAAuB,IAAI;EAC1C,CAAC;EAID,SAAS,OAAO,MAAsB;GACpC,OAAO,sBAAc,OAAO,IAAI;EAClC;EACA,SAAS,YAAkB;GACzB,MAAM,QAAQ;GACd,OAAO,QAAQ;EACjB;EACA,eAAe,qBAAoC;GACjD,IAAI;IACF,OAAO,QAAQ;IACf,MAAM,QAAQ;IACd,SAAS,QAAQ,MAAM,YAAY,IAAI,MAAM,UAAU;IACvD,YAAY,sBAAsB,SAAS,MAAM,cAAc,EAAE;IACjE,IACG,CAAC,UAAU,SAAS,cAAc,SAClC,aAAa,SAAS,MAAM,cAAc,WAC3C,YAAY,iBAAiB,SAAS,MAAM,cAAc,MAC1D,MAAM,MAAM,cAAc,SAAS,MAAM,cAAc,IACvD;KACA,UAAU;KACV;IACF;IACA,aAAa,uBAAuB,SAAS,KAAK;IAClD,iBAAiB,SAAS,MAAM,KAAK;GACvC,SAAS,OAAO;IACd,UAAU,KAAmB;IAC7B,UAAU;GACZ;GACA,OAAO,QAAQ;EACjB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;mBCnMW,OAAM,WAAU;mBAWV,OAAM,aAAY;mBAOpB,OAAM,6BAA4B;;mBAUhC,OAAM,oDAAmD;;mBAyBzD,OAAM,aAAY;;;qBArDjC,mBAsEU,WAtEV,YAsEU,CArEQ,OAAA,UAAM,CAAK,OAAA,SAAS,OAAA,YAAA,UAAA,GAApC,mBAgEW,UAAA,EAAA,KAAA,EAAA,GAAA;EA9DD,OAAA,kBAAA,UAAA,GADR,YAIE,OAAA,uBAAA;;GAFC,cAAY,OAAA;GACZ,WAAS,OAAA,SAAS;;EAErB,mBAuDM,OAAA,EAtDJ,OAAK,eAAA,CAAC,mCACE,OAAA,iBAAc,8BAAA,EAAA,CAAA,EAAA,GAAA;GAEtB,mBAgCU,WAhCV,YAgCU;IA9BA,OAAA,aAAS,CAAK,OAAA,iBADtB,WAIE,KAAA,QAAA,YAAA;;KADC,UAAU,OAAA;;IAGb,mBAiBM,OAjBN,YAiBM;oBAhBJ,mBAQE,OAAA;MANA,OAAM;MACN,QAAO;MACP,eAAY;MACZ,KAAI;MACH,OAAO,OAAA,EAAC,uBAAA,EAAA,MAAgC,OAAA,KAAI,CAAA;MAC7C,OAAM;iDANE,OAAA,iBAAiB,OAAA,SAAS,UAAQ,KAAA,CAAA,CAAA,CAAA;KAQ5C,mBAGM,OAHN,YAGM,CAFJ,mBAAmB,MAAA,MAAA,gBAAZ,OAAA,IAAI,GAAA,CAAA,GAAA,CACY,OAAA,aAAA,UAAA,GAAvB,YAAoJ,OAAA,mBAAA;;MAAlH,OAAM;MAA0C,UAAU,OAAA;MAAW,mBAAiB,OAAA,SAAS,cAAc;;KAEjJ,mBAAA,gCAAA;KACA,mBAA+D,KAAA;MAA5D,OAAM;MAAuB,WAAQ,OAAA,OAAO,OAAA,WAAW;;KAC1D,mBAAA,iBAAA;;IAGM,OAAA,kBAAA,UAAA,GADR,YAME,OAAA,qBAAA;;KAJA,OAAM;KACL,SAAS,OAAA;KACT,gBAAc;KACd,kBAAgB;;;IAIZ,OAAA,kBAAkB,OAAA,aAAA,UAAA,GAD3B,YAIE,OAAA,gBAAA;;IAFC,UAAU,OAAA;IACV,mBAAiB,OAAA;;GAGZ,OAAA,MAAM,YAAY,gBAAA,UAAA,GAD1B,YAGE,OAAA,wBAAA;;IADC,mBAAiB,OAAA,SAAS,aAAa;;GAE1C,mBAQU,WARV,YAQU,CANA,OAAA,UAAA,UAAA,GADR,YAME,OAAA,gBAAA;;IAJQ,OAAO,OAAA;4DAAA,OAAA,gBAAa;IAC3B,OAAO,OAAA;IACP,MAAM,OAAA;IACN,UAAU,OAAA;;;;;;;;EAKjB,WAA4C,KAAA,QAAA,UAAA,eAAA,mBAAA,EAAA,UAAd,OAAA,SAAQ,CAAA,CAAA,CAAA;6CAExC,YAGE,OAAA,mBAAA;EAFC,gBAAY,CAAG,OAAA,SAAS,OAAA,EAAC,qBAAA,IAA0B,KAAA;EACnD,cAAY,OAAA,QAAQ,OAAA,EAAC,wBAAA,IAA6B,KAAA"}
@@ -1,15 +1,15 @@
1
1
  import { t as _plugin_vue_export_helper_default } from "./_plugin-vue_export-helper-BOaGB7Aw.mjs";
2
2
  import { t as ClassicLoading_default } from "./ClassicLoading-Crlw7cAx.mjs";
3
- import { A as state, _ as playlistApi, i as useAuthStore, r as useFilterStore } from "./classicApi-CkDHWZG1.mjs";
3
+ import { A as state, _ as playlistApi, i as useAuthStore, r as useFilterStore } from "./classicApi-xjOqAovv.mjs";
4
4
  import { t as displayHelper_default } from "./displayHelper-CpXshNzz.mjs";
5
- import { t as useImageProxy } from "./useImageProxy-Bj0cOCct.mjs";
5
+ import { t as useImageProxy } from "./useImageProxy-BdQJmj4a.mjs";
6
6
  import { t as useGeneralStore } from "./GeneralStore-CUlq_NjO.mjs";
7
- import { t as useErrorHandler } from "./useErrorHandler-DtLjD9t_.mjs";
8
- import { t as useSimplePageParam } from "./useSimplePageParam-ClaGQ9yj.mjs";
7
+ import { t as useErrorHandler } from "./useErrorHandler-D3XVxUh6.mjs";
8
+ import { t as useSimplePageParam } from "./useSimplePageParam-CsY_ie3c.mjs";
9
9
  import { t as useSeoTitleUrl } from "./useSeoTitleUrl-CrM1YzAc.mjs";
10
- import { t as useOrgaComputed } from "./useOrgaComputed-BLSpEDfb.mjs";
11
- import { t as PodcastList_default } from "./PodcastList-BLXPFjvL.mjs";
12
- import { t as SubscribeButtons_default } from "./SubscribeButtons-rnonTVzT.mjs";
10
+ import { t as useOrgaComputed } from "./useOrgaComputed-B2Bq0VBT.mjs";
11
+ import { t as PodcastList_default } from "./PodcastList-DgLQjL0d.mjs";
12
+ import { t as SubscribeButtons_default } from "./SubscribeButtons-lAAMYQCm.mjs";
13
13
  import { Fragment, computed, createBlock, createCommentVNode, createElementBlock, createElementVNode, createVNode, defineAsyncComponent, defineComponent, guardReactiveProps, normalizeClass, normalizeProps, onBeforeUnmount, openBlock, ref, renderSlot, resolveDirective, toDisplayString, watch, withDirectives } from "vue";
14
14
  import { useI18n } from "vue-i18n";
15
15
  import { useRoute } from "vue-router";
@@ -36,10 +36,10 @@ var PlaylistPage_vue_vue_type_script_setup_true_lang_default = /*@__PURE__*/ def
36
36
  },
37
37
  setup(__props, { expose: __expose }) {
38
38
  __expose();
39
- const ShareSocialsButtons = defineAsyncComponent(() => import("./ShareSocialsButtons-iHtSoQ3K.mjs"));
40
- const SharePlayer = defineAsyncComponent(() => import("./SharePlayer-wHDYsWYd.mjs").then((n) => n.n));
41
- const PodcastmakerHeader = defineAsyncComponent(() => import("./PodcastmakerHeader-DAATtOG_.mjs"));
42
- const ShareAnonymous = defineAsyncComponent(() => import("./ShareAnonymous-Chfdzzra.mjs"));
39
+ const ShareSocialsButtons = defineAsyncComponent(() => import("./ShareSocialsButtons-BYsXc2Jr.mjs"));
40
+ const SharePlayer = defineAsyncComponent(() => import("./SharePlayer-Oy1pWckd.mjs").then((n) => n.n));
41
+ const PodcastmakerHeader = defineAsyncComponent(() => import("./PodcastmakerHeader-Df0g2dCr.mjs"));
42
+ const ShareAnonymous = defineAsyncComponent(() => import("./ShareAnonymous-4UxjKrIe.mjs"));
43
43
  const props = __props;
44
44
  const loaded = ref(false);
45
45
  const error = ref(false);
@@ -225,4 +225,4 @@ var PlaylistPage_default = /*#__PURE__*/ _plugin_vue_export_helper_default(Playl
225
225
  //#endregion
226
226
  export { PlaylistPage_default as default };
227
227
 
228
- //# sourceMappingURL=PlaylistPage-CQX0LhXn.mjs.map
228
+ //# sourceMappingURL=PlaylistPage-D4mcAo00.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"PlaylistPage-D4mcAo00.mjs","names":[],"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-DjAgejp8.mjs","names":[],"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-B3V5-WT9.mjs","names":[],"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":";;;;;;;;;;;;;;;;;;;;EA2DA,MAAM,QAAQ;EAKd,MAAM,EAAE,MAAM,QAAQ;EACtB,MAAM,EAAE,qBAAqB,cAAc;EAG3C,MAAM,cAAc,eAAe,MAAM,SAAS,eAAe,EAAE;EACnE,MAAM,OAAO,eAAe,MAAM,SAAS,SAAS,EAAE;EACtD,MAAM,iBAAiB,eAAe,MAAM,OAAO,KAAK,MAAM,SAAS,iBAAiB,CAAC,CAAC,EAAE,MAAM;EAElG,gBAAc;GACZ,MAAM,eAAe,eAAe,qBAAqB,GAAG;GAC5D,MAAM,wBAAwB,eAAe,8BAA8B,GAAG;GAC9E,IAAI,cAAc,eAAe,uBAAuB,cACtD,sBAAsB,UAAU,IAAI,2BAA2B;EAEnE,CAAC;EAGD,SAAS,OAAO,MAAsB;GACpC,OAAO,sBAAc,OAAO,IAAI;EAClC;;;;;;;;;;;;;;;;;;;;;;qBClFW,OAAM,4BAA2B;qBASjC,OAAM,uBAAsB;;;CACH,OAAM;;mBAG7B,OAAM,0DAAyD;;CAIlE,KAAI;CACJ,OAAM;;;;;;;qBAlBd,mBA8CU,WA9CV,cA8CU,CA7CR,YA4Cc,wBAAA;EA3CX,IAAE;;yBAA4D,OAAA,SAAS,WAAU;;EAIjF,OAAO,OAAA,EAAC,sBAAA,EAAA,MAA+B,OAAA,KAAI,CAAA;EAC5C,OAAM;;yBA2BA,CAzBN,mBAyBM,OAzBN,cAyBM;IAxBQ,OAAA,kBAAA,UAAA,GAAZ,mBAEM,OAFN,YAEM,gBADD,OAAA,EAAC,gBAAA,CAAA,GAAA,CAAA,KAAA,mBAAA,QAAA,IAAA;GAEN,mBAEM,OAFN,YAEM,gBADD,OAAA,IAAI,GAAA,CAAA;GAET,mBAOM,OAPN,YAOM;IAHJ,mBAAA,gCAAA;IACA,mBAA8D,OAAA;KAAzD,KAAI;KAAsB,WAAQ,OAAA,OAAO,OAAA,WAAW;;IACzD,mBAAA,iBAAA;;IAGO,OAAA,MAAM,kBAAkB,gBAAgB,OAAA,SAAS,gBAAA,UAAA,GAD1D,YASc,wBAAA;;IAPX,IAAE;;4BAAsE,OAAA,SAAS,aAAa,GAAE;;IAIjG,OAAM;;2BAEJ,CAAA,gBADH,QACG,gBAAG,OAAA,SAAS,aAAa,IAAI,GAAA,CAAA,CAAA,CAAA;;;qBAGnC,mBASE,OAAA;GAPA,OAAM;GACN,QAAO;GACP,eAAY;GACZ,KAAI;GAEH,OAAO,OAAA,EAAC,uBAAA,EAAA,MAAgC,OAAA,KAAI,CAAA;GAC7C,OAAM;8CAPE,OAAA,iBAAiB,OAAA,SAAS,UAAQ,KAAA,CAAA,CAAA,CAAA,CAAA,CAAA;;;;;;;ACHlD,SAAgB,oBAA8B;CAC5C,OAAO;EACL,cAAA;EACA,aAAa;EACb,YAAY;EACZ,UAAU,KAAA;EACV,OAAO;EACP,OAAO;EACP,MAAM;EACN,eAAe,CAAC;EAChB,cAAc,sBAAsB;CACtC;AACF;;;;;;;;;;;;;;;;;;;;;;;;;ECUA,MAAM,QAAQ;EAQd,MAAM,UAAU,IAAI,IAAI;EACxB,MAAM,SAAS,IAAI,MAAM,KAAK;EAC9B,MAAM,QAAQ,IAAI,MAAM,IAAI;EAC5B,MAAM,aAAa,IAAI,CAAC;EACxB,MAAM,eAAe,IAAI,CAAC;EAC1B,MAAM,WAAW,IAAI,KAAK;EAC1B,MAAM,YAAkC,IAAI,CAAC,CAAC;EAI9C,MAAM,EAAE,MAAM,QAAQ;EACtB,MAAM,EAAC,cAAa,gBAAgB;EACpC,MAAM,cAAc,eAAe;EAInC,MAAM,eAAe,eAAe;GAClC,IAAI,SAAS,OACX,OAAO,UAAU;GAEnB,OAAO,UAAU,MAAM,MACrB,OAAO,OACP,KAAK,IAAI,OAAO,QAAQ,MAAM,OAAO,WAAW,KAAK,CACvD;EACF,CAAC;EACD,MAAM,UAAU,eAAe,GAAG,MAAM,eAAe,GAAG,MAAM,OAAO;EACvE,MAAM,iBAAiB,eAAe,GAAG,MAAM,MAAM,GAAG,MAAM,MAAM;EACpE,MAAM,OAAO,eAAe,CAAC,MAAM,QAAQ,SAAS,OAAO;EAC3D,MAAM,eAAe,eAAe,MAAM,iBAAiB,MAAM,iBAAiB,YAAY,YAAY;EAI1G,MAAM,sBAAsB;GAC1B,OAAO,QAAQ,MAAM;GACrB,MAAM,QAAQ,MAAM;EACtB,CAAC;EACD,MAAM,eAAe,aAAa,IAAI,CAAC;EACvC,MAAM,aAAY,aAAa,IAAI,CAAC;EACpC,MAAM,cAAc;GAClB,IACE,CAAC,UAAU,MAAM,OAAO,UACxB,MAAM,UAAU,MAAM,OAAO,OAAO,YAEpC,aAAa,KAAK;EAEtB,CAAC;EAED,gBAAc,aAAa,KAAK,CAAC;EAIjC,eAAe,aAAa,OAA+B;GACzD,QAAQ,QAAQ;GAChB,MAAM,QAAQ;IACZ,OAAO,QAAQ,IAAI,OAAO;IAC1B,MAAM,MAAM;IACZ,OAAO,MAAM;IACb,gBAAgB,aAAa;IAC7B,MAAM;IACN,MAAM,KAAK;GACb;GACA,IAAI;IAOF,cAAc,OAAO,MANF,mBAAW,UAAuC;KACnE,KAAK;KACL,MAAM;KACN,YAAY;KACZ,mBAAmB;IACrB,CAAC,CACwB;GAC3B,SAAS,OAAO;IACd,UAAU,KAAmB;GAC/B;EACF;EACA,SAAS,cACP,OACA,MACM;GACN,IAAI,OAAO;IACT,OAAO,QAAQ;IACf,UAAU,MAAM,SAAS;GAC3B;GACA,IAAI,OAAO,QAAQ,UAAU,MAAM,QACjC,KACE,IAAI,IAAI,UAAU,MAAM,SAAS,GAAG,MAAM,OAAO,QAAQ,MAAM,OAC/D,IAAI,KACJ,KAEA,UAAU,MAAM,KAAK,kBAAkB,CAAC;GAG5C,aAAa,QAAQ,KAAK;GAC1B,MAAM,oBAAoB,KAAK,OAAO,QAAQ,MAAuB;IACnE,IAAI,SAAS,GACX,aAAa;IAEf,OAAO,SAAS;GAClB,CAAC;GACD,UAAU,QAAQ,UAAU,MACzB,MAAM,GAAG,OAAO,KAAK,EACrB,OAAO,iBAAiB,EACxB,OACC,UAAU,MAAM,MAAM,OAAO,QAAQ,MAAM,OAAO,UAAU,MAAM,MAAM,CAC1E;GACF,WAAW,QAAQ,KAAK;GACxB,QAAQ,QAAQ;EAClB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;qBCxJW,OAAM,sCAAqC;;;qBAhBpD,YAsCe,OAAA,iBAAA;EArCb,IAAG;EACK,OAAO,OAAA;0DAAA,OAAA,SAAM;EACb,iBAAe,OAAA;gEAAA,OAAA,QAAK;EACpB,aAAW,OAAA;6DAAA,OAAA,WAAQ;EAC1B,cAAmB,OAAA,eAAY,IAAA,GAAkB,OAAA,EAAC,oBAAA,EAAA,IAA2B,OAAA,aAAY,CAAA,MAAgB,KAAA;EAKzG,eAAa,OAAA;EACb,SAAS,OAAA;EACT,gBAAc,OAAA,UAAU,OAAA,EAAC,qBAAA,IAA0B,KAAA;EACnD,qBAAmB;;EAET,MAAI,cAqBP,CApBN,mBAoBM,OApBN,cAoBM,EAAA,UAAA,IAAA,GAnBJ,mBAkBc,UAAA,MAAA,WAjBA,OAAA,eAAL,MAAC;uBADV,YAkBc,OAAA,gBAAA;IAhBX,KAAK,EAAE;IACP,cAAY;IACb,OAAM;;IAGK,SAAO,cASF,CARd,YAQc,wBAAA;KAPX,IAAE;;4BAA4E,EAAE,WAAU;;KAI1F,OAAO,OAAA,EAAC,sBAAA,EAAA,MAA+B,EAAE,MAAK,CAAA;;4BAElC,CAAA,gBAAA,gBAAV,EAAE,KAAK,GAAA,CAAA,CAAA,CAAA;;;2BAT0C,CAAA,MAA9B,EAAE,cAAA,UAAA,GAA5B,YAAwD,OAAA,iBAAA;;KAAf,UAAU;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ECS7D,MAAM,kBAAkB,2BAChB,OAAO,kCAAA,MAAA,MAAA,EAAA,CAAA,CACf;EAGA,MAAM,QAAQ;EASd,MAAM,EAAE,MAAM,QAAQ;EACtB,MAAM,EACJ,eACA,gBACA,eACA,eACA,WACE,mBAAmB,KAAK;EAC5B,MAAM,YAAY,aAAa;;;;;;;;;;;mBAIR,eAAc,MAAM,kBAAkB,YAAA;oBACrC,eAAc,UAAU,eAAA;;;;;;;;;;;;;;CC3DvB,OAAM;;mBAMpB,OAAM,kBAAiB;;;QANjB,OAAA,UAAA,UAAA,GAAf,mBAsBU,WAtBV,YAsBU;EApBA,OAAA,mBAAe,CAAK,OAAA,kBAAA,UAAA,GAD5B,YAQc,wBAAA;;GANZ,IAAG;GACH,OAAM;;0BAIA,CAFN,mBAEM,OAFN,YAEM,gBADD,OAAA,EAAC,iBAAA,CAAA,GAAA,CAAA,CAAA,CAAA;;;EAGR,YAIE,OAAA,oBAAA;GAHQ,mBAAiB,OAAA;oEAAA,OAAA,iBAAc;GAC/B,kBAAgB,OAAA;mEAAA,OAAA,gBAAa;GACrC,MAAK;;EAEP,YAME,OAAA,iBAAA;GALC,cAAY;GACZ,OAAO,OAAA;GACP,MAAM,OAAA;GACN,OAAO,OAAA;GACP,mBAAiB,OAAA"}