@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.
- package/dist/{AdvancedSearch-fO5eaqLJ.mjs → AdvancedSearch-C4segSRv.mjs} +6 -6
- package/dist/AdvancedSearch-C4segSRv.mjs.map +1 -0
- package/dist/AdvancedSearch-DD9tnLCw.mjs.map +1 -0
- package/dist/{CategoryFilter-Cu2a0YE9.mjs → CategoryFilter-CpplEC8n.mjs} +5 -5
- package/dist/CategoryFilter-CpplEC8n.mjs.map +1 -0
- package/dist/CategoryFilter-cbQR_ySd.mjs.map +1 -0
- package/dist/{CategoryList-DkxZDrO5.mjs → CategoryList-BTabY3vQ.mjs} +2 -2
- package/dist/CategoryList-BTabY3vQ.mjs.map +1 -0
- package/dist/CategoryList-DHEJoaez.mjs.map +1 -0
- package/dist/CategoryPage-BbsCC3Wr.mjs.map +1 -0
- package/dist/CategoryPage-BxvUmThb.mjs.map +1 -0
- package/dist/{CategoryPage-3HFz1i7_.mjs → CategoryPage-D755GvQZ.mjs} +3 -3
- package/dist/CategoryPage-D755GvQZ.mjs.map +1 -0
- package/dist/CategoryPage-DDBJ2krs.mjs.map +1 -0
- package/dist/CategoryPage-DRCYjOqG.mjs.map +1 -0
- package/dist/ChapteringModal-CSQqCWIk.mjs.map +1 -0
- package/dist/ChapteringModal-Dt8Rsauh.mjs.map +1 -0
- package/dist/{ChapteringModal-C-rdkbSz.mjs → ChapteringModal-ei6ZqVJU.mjs} +2 -2
- package/dist/ChapteringModal-ei6ZqVJU.mjs.map +1 -0
- package/dist/CheckIdentityModal-CNFVJVB_.mjs.map +1 -0
- package/dist/{CheckIdentityModal-N9h8yvhC.mjs → CheckIdentityModal-cpMOuJGv.mjs} +3 -3
- package/dist/CheckIdentityModal-cpMOuJGv.mjs.map +1 -0
- package/dist/ClipboardModal-2ZGF38VB.mjs.map +1 -0
- package/dist/{ClipboardModal-CnieIOJr.mjs → ClipboardModal-DzCUqSph.mjs} +2 -2
- package/dist/ClipboardModal-DzCUqSph.mjs.map +1 -0
- package/dist/CommentInput-CV46HJN8.mjs.map +1 -0
- package/dist/{CommentInput-CEioyN7X.mjs → CommentInput-D_p03L68.mjs} +6 -6
- package/dist/CommentInput-D_p03L68.mjs.map +1 -0
- package/dist/CommentInput-DwRbD74k.mjs.map +1 -0
- package/dist/CommentItem-B6_XUaFR.mjs.map +1 -0
- package/dist/CommentItem-CbbmwVXB.mjs.map +1 -0
- package/dist/CommentItem-DfKKazY0.mjs.map +1 -0
- package/dist/CommentItem-JRjSLmui.mjs.map +1 -0
- package/dist/{CommentItem-BefuRoxQ.mjs → CommentItem-MFN0JNW1.mjs} +8 -8
- package/dist/CommentItem-MFN0JNW1.mjs.map +1 -0
- package/dist/{CommentList-BsPwzqkf.mjs → CommentList-BkKy5ftL.mjs} +3 -3
- package/dist/CommentList-BkKy5ftL.mjs.map +1 -0
- package/dist/CommentList-BrP71Ug4.mjs.map +1 -0
- package/dist/CommentList-Ng_YXr74.mjs.map +1 -0
- package/dist/CommentList-tKA7NFHM.mjs.map +1 -0
- package/dist/CommentList-yarlxaXg.mjs.map +1 -0
- package/dist/{CommentMoreActions-C86aqy8M.mjs → CommentMoreActions-CBSvuOGJ.mjs} +5 -5
- package/dist/CommentMoreActions-CBSvuOGJ.mjs.map +1 -0
- package/dist/CommentMoreActions-D7guBdA7.mjs.map +1 -0
- package/dist/CommentName-frCHmngc.mjs.map +1 -0
- package/dist/{CommentName-DT1QyPi3.mjs → CommentName-zTMSdG4d.mjs} +3 -3
- package/dist/CommentName-zTMSdG4d.mjs.map +1 -0
- package/dist/{CommentParentInfo-9Fe-3e6c.mjs → CommentParentInfo-CRTYPb8P.mjs} +2 -2
- package/dist/CommentParentInfo-CRTYPb8P.mjs.map +1 -0
- package/dist/CommentParentInfo-D8qquB6k.mjs.map +1 -0
- package/dist/CommentParentInfo-DC4Q6wNO.mjs.map +1 -0
- package/dist/CommentParentInfo-temUvqNv.mjs.map +1 -0
- package/dist/{CommentPlayer-CiWQM64Y.mjs → CommentPlayer-BMuLmZdI.mjs} +3 -3
- package/dist/CommentPlayer-BMuLmZdI.mjs.map +1 -0
- package/dist/CommentPlayer-BPA_lEoE.mjs.map +1 -0
- package/dist/CommentPlayer-CUNi1Lxv.mjs.map +1 -0
- package/dist/{CommentSection-Be38YIkC.mjs → CommentSection-B91sHMDT.mjs} +5 -5
- package/dist/CommentSection-B91sHMDT.mjs.map +1 -0
- package/dist/CommentSection-CpYd7i8U.mjs.map +1 -0
- package/dist/CommentSection-CrqweNX4.mjs.map +1 -0
- package/dist/CommentSection-G8rMWPrM.mjs.map +1 -0
- package/dist/CommentSection-xjY6h7nn.mjs.map +1 -0
- package/dist/CommentStore-9WWuGwIj.mjs.map +1 -0
- package/dist/{CommentStore-Dv7j94Uo.mjs → CommentStore-ClU882RI.mjs} +2 -2
- package/dist/CommentStore-ClU882RI.mjs.map +1 -0
- package/dist/ContractPreviewModal-C4_20E99.mjs.map +1 -0
- package/dist/{ContractPreviewModal-CPT6bDpJ.mjs → ContractPreviewModal-Dn5MeLFo.mjs} +2 -2
- package/dist/ContractPreviewModal-Dn5MeLFo.mjs.map +1 -0
- package/dist/{DownloadPodcastButton-6D8qNAkT.mjs → DownloadPodcastButton-BI_sZWcJ.mjs} +3 -3
- package/dist/DownloadPodcastButton-BI_sZWcJ.mjs.map +1 -0
- package/dist/DownloadPodcastButton-CSRcg8Nl.mjs.map +1 -0
- package/dist/EditCommentModal-KAP1l9RK.mjs.map +1 -0
- package/dist/{EditCommentModal-aAcjhc0v.mjs → EditCommentModal-RbVMVDOp.mjs} +2 -2
- package/dist/EditCommentModal-RbVMVDOp.mjs.map +1 -0
- package/dist/{EmissionGroupChooser-Djt1IZg7.mjs → EmissionGroupChooser-BXqM4iXP.mjs} +2 -2
- package/dist/EmissionGroupChooser-BXqM4iXP.mjs.map +1 -0
- package/dist/EmissionGroupChooser-CO1WBOUi.mjs.map +1 -0
- package/dist/EmissionInlineList-B-r4eI3D.mjs.map +1 -0
- package/dist/{EmissionInlineList-BcrKpW8S.mjs → EmissionInlineList-Cy1lbYKY.mjs} +6 -6
- package/dist/EmissionInlineList-Cy1lbYKY.mjs.map +1 -0
- package/dist/EmissionInlineList-IKPyjBTQ.mjs.map +1 -0
- package/dist/EmissionItem-982WkWkg.mjs.map +1 -0
- package/dist/EmissionItem-B8q9hnN5.mjs.map +1 -0
- package/dist/{EmissionItem-DfkPRcPz.mjs → EmissionItem-BwXm3nNx.mjs} +5 -5
- package/dist/EmissionItem-BwXm3nNx.mjs.map +1 -0
- package/dist/EmissionItem-ZDlQ7B9S.mjs.map +1 -0
- package/dist/{EmissionList-DSuGp0JO.mjs → EmissionList-C8OxrndH.mjs} +6 -6
- package/dist/EmissionList-C8OxrndH.mjs.map +1 -0
- package/dist/EmissionList-C9-UUWMV.mjs.map +1 -0
- package/dist/EmissionList-Dk9xS4s_.mjs.map +1 -0
- package/dist/EmissionList-nrY7ASws.mjs.map +1 -0
- package/dist/EmissionList-vH4NX1NW.mjs.map +1 -0
- package/dist/EmissionPage-BHAPlZw-.mjs.map +1 -0
- package/dist/EmissionPage-B_2JalGG.mjs.map +1 -0
- package/dist/EmissionPage-D4PjyZzN.mjs.map +1 -0
- package/dist/EmissionPage-HGPCRuZD.mjs.map +1 -0
- package/dist/{EmissionPage-Bo9fK8HE.mjs → EmissionPage-nCNIiWCo.mjs} +25 -18
- package/dist/EmissionPage-nCNIiWCo.mjs.map +1 -0
- package/dist/EmissionPlayerItem-B_wRzikv.mjs.map +1 -0
- package/dist/{EmissionPlayerItem-D21OrPmm.mjs → EmissionPlayerItem-Degbnz9F.mjs} +5 -5
- package/dist/EmissionPlayerItem-Degbnz9F.mjs.map +1 -0
- package/dist/EmissionPlayerItem-Dkd0o1ee.mjs.map +1 -0
- package/dist/EmissionPresentationItem-BQ7HhOlC.mjs.map +1 -0
- package/dist/{EmissionPresentationItem-CwDIBurH.mjs → EmissionPresentationItem-CwBGPIgz.mjs} +2 -2
- package/dist/EmissionPresentationItem-CwBGPIgz.mjs.map +1 -0
- package/dist/{EmissionPresentationList-CASI5laP.mjs → EmissionPresentationList-BKI5mQdw.mjs} +4 -4
- package/dist/EmissionPresentationList-BKI5mQdw.mjs.map +1 -0
- package/dist/EmissionPresentationList-CLli23rs.mjs.map +1 -0
- package/dist/EmissionsPage-CO2xgVOR.mjs.map +1 -0
- package/dist/{EmissionsPage-Bw8Qtzlk.mjs → EmissionsPage-Cj7su56Z.mjs} +5 -5
- package/dist/EmissionsPage-Cj7su56Z.mjs.map +1 -0
- package/dist/EmissionsPage-DJdy0re_.mjs.map +1 -0
- package/dist/EmissionsPage-DR9r7_gH.mjs.map +1 -0
- package/dist/EmissionsPage-OVNfLKFu.mjs.map +1 -0
- package/dist/Error403Page-Ch535DfU.mjs.map +1 -0
- package/dist/{Error403Page-nTYCHwTi.mjs → Error403Page-DW2kK8ZZ.mjs} +2 -2
- package/dist/Error403Page-DW2kK8ZZ.mjs.map +1 -0
- package/dist/FooterGarSection-B76j-WZS.mjs.map +1 -0
- package/dist/{FooterGarSection-Cod8Key5.mjs → FooterGarSection-DVdF5RFq.mjs} +4 -4
- package/dist/FooterGarSection-DVdF5RFq.mjs.map +1 -0
- package/dist/FooterSection-BQiO-D1p.mjs.map +1 -0
- package/dist/{FooterSection-4WXBZj7c.mjs → FooterSection-CpYI9OGH.mjs} +5 -5
- package/dist/FooterSection-CpYI9OGH.mjs.map +1 -0
- package/dist/{HomeDropdown-CVe7yF6Y.mjs → HomeDropdown-D7FezAO8.mjs} +3 -3
- package/dist/HomeDropdown-D7FezAO8.mjs.map +1 -0
- package/dist/HomeDropdown-DQoMvBgU.mjs.map +1 -0
- package/dist/HomePage-BWs_az04.mjs.map +1 -0
- package/dist/HomePage-CMPKjRFA.mjs.map +1 -0
- package/dist/HomePage-CsXaeTCW.mjs.map +1 -0
- package/dist/HomePage-NH7OxpA_.mjs.map +1 -0
- package/dist/{HomePage-DupmOw6F.mjs → HomePage-vo6At2bL.mjs} +4 -4
- package/dist/HomePage-vo6At2bL.mjs.map +1 -0
- package/dist/{PodcastRubriqueList-BeTq7IRu.mjs → InlineRubriqueList-3ZVN9GJk.mjs} +14 -12
- package/dist/InlineRubriqueList-3ZVN9GJk.mjs.map +1 -0
- package/dist/InlineRubriqueList-D03VCzg8.mjs.map +1 -0
- package/dist/LikeSection-DtthHZj6.mjs.map +1 -0
- package/dist/{LikeSection-DAid96g9.mjs → LikeSection-jKjhnj88.mjs} +4 -4
- package/dist/LikeSection-jKjhnj88.mjs.map +1 -0
- package/dist/{ListPaginate-C9saxru9.mjs → ListPaginate-BXNnw_I8.mjs} +3 -3
- package/dist/ListPaginate-BXNnw_I8.mjs.map +1 -0
- package/dist/ListPaginate-COsL4t78.mjs.map +1 -0
- package/dist/ListPaginate-JuC0L113.mjs.map +1 -0
- package/dist/LiveHorizontalList-CFs9mGYs.mjs.map +1 -0
- package/dist/LiveHorizontalList-CWBQkS78.mjs.map +1 -0
- package/dist/LiveHorizontalList-DwPVmnvH.mjs.map +1 -0
- package/dist/LiveHorizontalList-jducN58c.mjs.map +1 -0
- package/dist/{LiveHorizontalList-OArlzudf.mjs → LiveHorizontalList-wgXkgFLv.mjs} +4 -4
- package/dist/LiveHorizontalList-wgXkgFLv.mjs.map +1 -0
- package/dist/LiveList-Bp-feBp9.mjs.map +1 -0
- package/dist/LiveList-ByyCyWUl.mjs.map +1 -0
- package/dist/{LiveList-EqIo_cye.mjs → LiveList-CA5n6VeN.mjs} +6 -6
- package/dist/LiveList-CA5n6VeN.mjs.map +1 -0
- package/dist/LiveList-Cah5VFun.mjs.map +1 -0
- package/dist/LiveList-DTAnN32j.mjs.map +1 -0
- package/dist/LivesPage-CNPMz3xS.mjs.map +1 -0
- package/dist/{LivesPage-BmHiBN8A.mjs → LivesPage-CTjXgU-Y.mjs} +5 -5
- package/dist/LivesPage-CTjXgU-Y.mjs.map +1 -0
- package/dist/LivesPage-CdhWyikV.mjs.map +1 -0
- package/dist/LivesPage-CwvFSl6G.mjs.map +1 -0
- package/dist/LivesPage-DyIfBEPX.mjs.map +1 -0
- package/dist/{MapPage-DcXKTGGh.mjs → MapPage-C_nGG0_5.mjs} +3 -3
- package/dist/MapPage-C_nGG0_5.mjs.map +1 -0
- package/dist/MapPage-DXV40zWN.mjs.map +1 -0
- package/dist/{MobileMenu-C0IYBWwF.mjs → MobileMenu-C95GAIm0.mjs} +4 -4
- package/dist/MobileMenu-C95GAIm0.mjs.map +1 -0
- package/dist/MobileMenu-CfHqWqsL.mjs.map +1 -0
- package/dist/NewsletterModal-4Lei4Y59.mjs.map +1 -0
- package/dist/{NewsletterModal-BzlUlz3P.mjs → NewsletterModal-B6ky7DBC.mjs} +2 -2
- package/dist/NewsletterModal-B6ky7DBC.mjs.map +1 -0
- package/dist/OrganisationChooser-BufDZsSd.mjs.map +1 -0
- package/dist/{OrganisationChooser-Bm4zqqCH.mjs → OrganisationChooser-CA0_LiTH.mjs} +3 -3
- package/dist/OrganisationChooser-CA0_LiTH.mjs.map +1 -0
- package/dist/{OrganisationChooserLight-BQ9B91mO.mjs → OrganisationChooserLight-BwG5mNdW.mjs} +2 -2
- package/dist/OrganisationChooserLight-BwG5mNdW.mjs.map +1 -0
- package/dist/OrganisationChooserLight-C2oGlc9Z.mjs.map +1 -0
- package/dist/{PageNotFound-BVQ8M8sO.mjs → PageNotFound-BHpjyNDo.mjs} +3 -3
- package/dist/PageNotFound-BHpjyNDo.mjs.map +1 -0
- package/dist/PageNotFound-IMnfLZqX.mjs.map +1 -0
- package/dist/{ParticipantInlineList-BQtQZFW1.mjs → ParticipantInlineList-A8UwjE4m.mjs} +5 -5
- package/dist/ParticipantInlineList-A8UwjE4m.mjs.map +1 -0
- package/dist/ParticipantInlineList-BpVOpEBm.mjs.map +1 -0
- package/dist/ParticipantInlineList-C5jWxedt.mjs.map +1 -0
- package/dist/ParticipantInlineList-C78uhskc.mjs.map +1 -0
- package/dist/ParticipantItem--Wv16z3V.mjs.map +1 -0
- package/dist/ParticipantItem-B3k4mf2V.mjs.map +1 -0
- package/dist/ParticipantItem-DAPOMGZD.mjs.map +1 -0
- package/dist/{ParticipantItem-EDPkxTT-.mjs → ParticipantItem-Szz8WXI6.mjs} +4 -4
- package/dist/ParticipantItem-Szz8WXI6.mjs.map +1 -0
- package/dist/ParticipantPage-BbKUwNKL.mjs.map +1 -0
- package/dist/ParticipantPage-Byq-9aCQ.mjs.map +1 -0
- package/dist/ParticipantPage-D4RVBlE-.mjs.map +1 -0
- package/dist/ParticipantPage-DfLxuZf-.mjs.map +1 -0
- package/dist/{ParticipantPage-BF-s1oof.mjs → ParticipantPage-y3OoBod8.mjs} +9 -9
- package/dist/ParticipantPage-y3OoBod8.mjs.map +1 -0
- package/dist/{ParticipantsPage-Bzt8Hxah.mjs → ParticipantsPage--BxmzVwz.mjs} +7 -7
- package/dist/ParticipantsPage--BxmzVwz.mjs.map +1 -0
- package/dist/ParticipantsPage-BEPHaCy5.mjs.map +1 -0
- package/dist/ParticipantsPage-BlQavFT6.mjs.map +1 -0
- package/dist/ParticipantsPage-D8ja25F9.mjs.map +1 -0
- package/dist/ParticipantsPage-R8LVrDFY.mjs.map +1 -0
- package/dist/{PlayerAnonymousModal-CbrqO1hs.mjs → PlayerAnonymousModal-BGPpTBPW.mjs} +3 -3
- package/dist/PlayerAnonymousModal-BGPpTBPW.mjs.map +1 -0
- package/dist/PlayerAnonymousModal-BW239BiA.mjs.map +1 -0
- package/dist/PlayerCompact-BFC95d7Y.mjs.map +1 -0
- package/dist/PlayerCompact-C-WCTFZN.mjs.map +1 -0
- package/dist/{PlayerCompact-BtKfz384.mjs → PlayerCompact-DnJns8S2.mjs} +4 -4
- package/dist/PlayerCompact-DnJns8S2.mjs.map +1 -0
- package/dist/PlayerComponent-B8AGq9pg.mjs.map +1 -0
- package/dist/{PlayerComponent-CxNkDcFc.mjs → PlayerComponent-BRBrXVjI.mjs} +27 -39
- package/dist/PlayerComponent-BRBrXVjI.mjs.map +1 -0
- package/dist/PlayerComponent-BbvNS7sy.mjs.map +1 -0
- package/dist/PlayerComponent-By_JAwx_.mjs.map +1 -0
- package/dist/PlayerComponent-C425OWjX.mjs.map +1 -0
- package/dist/PlayerComponent-C5PNQ3TW.mjs.map +1 -0
- package/dist/PlayerComponent-Cnk_vePj.mjs.map +1 -0
- package/dist/PlayerComponent-CovfufPB.mjs.map +1 -0
- package/dist/PlayerComponent-DC4jQIwE.mjs.map +1 -0
- package/dist/PlayerComponent-DEUmVv0M.mjs.map +1 -0
- package/dist/PlayerComponent-DOXY0vL0.mjs.map +1 -0
- package/dist/PlayerComponent-DajZbHv7.mjs.map +1 -0
- package/dist/PlayerComponent-DejSC061.mjs.map +1 -0
- package/dist/PlayerComponent-p7W2UNk6.mjs.map +1 -0
- package/dist/PlayerLarge-3zzN7qom.mjs.map +1 -0
- package/dist/{PlayerLarge-BH6BLQxk.mjs → PlayerLarge-B97rRmrJ.mjs} +12 -10
- package/dist/PlayerLarge-B97rRmrJ.mjs.map +1 -0
- package/dist/PlayerLarge-BzwrEgVR.mjs.map +1 -0
- package/dist/PlayerLarge-CLOwDO6Q.mjs.map +1 -0
- package/dist/PlayerLarge-Chv7pMOU.mjs.map +1 -0
- package/dist/PlayerLarge-CkWGaDiY.mjs.map +1 -0
- package/dist/PlayerLarge-D0NMzCRi.mjs.map +1 -0
- package/dist/PlayerLarge-D3obSnYt.mjs.map +1 -0
- package/dist/PlayerLarge-DLGXpE3K.mjs.map +1 -0
- package/dist/PlayerLarge-QtUrqNm5.mjs.map +1 -0
- package/dist/PlayerLarge-juuY9yOX.mjs.map +1 -0
- package/dist/PlayerLarge-n7zyM6b_.mjs.map +1 -0
- package/dist/PlayerLarge-o4FVk0QB.mjs.map +1 -0
- package/dist/PlayerLarge-tMW3v2La.mjs.map +1 -0
- package/dist/PlayerPlayButton-CTu0337E.mjs.map +1 -0
- package/dist/PlayerPlayButton-CfJWIpoP.mjs.map +1 -0
- package/dist/{PlayerPlayButton-DT2OdqnI.mjs → PlayerPlayButton-zKdHGzFr.mjs} +5 -5
- package/dist/PlayerPlayButton-zKdHGzFr.mjs.map +1 -0
- package/dist/{PlayerProgressBar-CSYnPjZb.mjs → PlayerProgressBar-BG5NG596.mjs} +4 -4
- package/dist/PlayerProgressBar-BG5NG596.mjs.map +1 -0
- package/dist/PlayerProgressBar-Cjv8JVY2.mjs.map +1 -0
- package/dist/PlayerProgressBar-Co0_YEF3.mjs.map +1 -0
- package/dist/PlayerStore-B-L2PQ_b.mjs.map +1 -0
- package/dist/PlayerStore-C2XzSrF5.mjs.map +1 -0
- package/dist/{PlayerStore-DukkcHI_.mjs → PlayerStore-vYmnOEA_.mjs} +3 -3
- package/dist/PlayerStore-vYmnOEA_.mjs.map +1 -0
- package/dist/PlayerVideo-DD6NaGkU.mjs.map +1 -0
- package/dist/{PlayerVideo-_Uz00K_T.mjs → PlayerVideo-Ds0oYeTC.mjs} +5 -5
- package/dist/PlayerVideo-Ds0oYeTC.mjs.map +1 -0
- package/dist/PlayerVideo-cYHZOYMv.mjs.map +1 -0
- package/dist/PlayerVideoDigiteka-BPJdJNEB.mjs.map +1 -0
- package/dist/{PlayerVideoDigiteka-CjfuxXBF.mjs → PlayerVideoDigiteka-C7xb0ndg.mjs} +3 -3
- package/dist/PlayerVideoDigiteka-C7xb0ndg.mjs.map +1 -0
- package/dist/PlayerVideoDigiteka-oqtYXqYK.mjs.map +1 -0
- package/dist/PlayerVideoHls-CB4psqbz.mjs.map +1 -0
- package/dist/{PlayerVideoHls-Dms7iTSo.mjs → PlayerVideoHls-xSNqzBEw.mjs} +4 -4
- package/dist/PlayerVideoHls-xSNqzBEw.mjs.map +1 -0
- package/dist/PlayerVideoHls-zNbegJFp.mjs.map +1 -0
- package/dist/PlaylistPage-BUj1Lzfp.mjs.map +1 -0
- package/dist/PlaylistPage-BhcJkM15.mjs.map +1 -0
- package/dist/PlaylistPage-BsHMB2nn.mjs.map +1 -0
- package/dist/{PlaylistPage-CQX0LhXn.mjs → PlaylistPage-D4mcAo00.mjs} +12 -12
- package/dist/PlaylistPage-D4mcAo00.mjs.map +1 -0
- package/dist/PlaylistPage-DjAgejp8.mjs.map +1 -0
- package/dist/PlaylistsPage-B3V5-WT9.mjs.map +1 -0
- package/dist/PlaylistsPage-DSjvWTw5.mjs.map +1 -0
- package/dist/{PlaylistsPage-Bd-u4qlc.mjs → PlaylistsPage-Dr6HKHf8.mjs} +7 -7
- package/dist/PlaylistsPage-Dr6HKHf8.mjs.map +1 -0
- package/dist/PodcastFilterList-C-8AF1Dn.mjs.map +1 -0
- package/dist/{PodcastFilterList-DkH6bqv_.mjs → PodcastFilterList-CYwPiGko.mjs} +3 -3
- package/dist/PodcastFilterList-CYwPiGko.mjs.map +1 -0
- package/dist/PodcastFilterList-C_d1SyTB.mjs.map +1 -0
- package/dist/PodcastFilterList-ClMsIUaO.mjs.map +1 -0
- package/dist/PodcastFilterList-DBS0kvW6.mjs.map +1 -0
- package/dist/PodcastImage-B8o3T5zK.mjs.map +1 -0
- package/dist/{PodcastImage-BtxcPlrh.mjs → PodcastImage-Bs1lpubL.mjs} +4 -4
- package/dist/PodcastImage-Bs1lpubL.mjs.map +1 -0
- package/dist/PodcastImage-DBB5689n.mjs.map +1 -0
- package/dist/PodcastImage-DNLZH0dY.mjs.map +1 -0
- package/dist/PodcastImage-DrV8oxG8.mjs.map +1 -0
- package/dist/{PodcastInlineList-CVWfH5np.mjs → PodcastInlineList-B7-2QswT.mjs} +2 -2
- package/dist/PodcastInlineList-B7-2QswT.mjs.map +1 -0
- package/dist/PodcastInlineList-BVMV6Wvd.mjs.map +1 -0
- package/dist/PodcastInlineList-BXPpF0YD.mjs.map +1 -0
- package/dist/PodcastInlineList-CLjO1SpD.mjs.map +1 -0
- package/dist/PodcastInlineList-Cf5YF0j9.mjs.map +1 -0
- package/dist/PodcastInlineListTemplate-BX0tXOFx.mjs.map +1 -0
- package/dist/{PodcastInlineListTemplate-BWw1Ix-7.mjs → PodcastInlineListTemplate-DCWn3r7s.mjs} +4 -4
- package/dist/PodcastInlineListTemplate-DCWn3r7s.mjs.map +1 -0
- package/dist/PodcastIsPlaying-BG1_FgVX.mjs.map +1 -0
- package/dist/{PodcastIsPlaying-B7YVeSyB.mjs → PodcastIsPlaying-BsObdQGR.mjs} +2 -2
- package/dist/PodcastIsPlaying-BsObdQGR.mjs.map +1 -0
- package/dist/PodcastIsPlaying-Csd-C2jr.mjs.map +1 -0
- package/dist/PodcastItem-CGmEwYT4.mjs.map +1 -0
- package/dist/PodcastItem-CN6gwARQ.mjs.map +1 -0
- package/dist/PodcastItem-CdLjZKxf.mjs.map +1 -0
- package/dist/PodcastItem-D1MwHzhE.mjs.map +1 -0
- package/dist/{PodcastItem-CFk8MX9D.mjs → PodcastItem-_8ErwIDG.mjs} +7 -7
- package/dist/PodcastItem-_8ErwIDG.mjs.map +1 -0
- package/dist/PodcastList-BXla7F3u.mjs.map +1 -0
- package/dist/PodcastList-BqE8dwdc.mjs.map +1 -0
- package/dist/PodcastList-BvC6iOS6.mjs.map +1 -0
- package/dist/PodcastList-CRwA-s7F.mjs.map +1 -0
- package/dist/PodcastList-CVFr9WNS.mjs.map +1 -0
- package/dist/PodcastList-DZKxDulS.mjs.map +1 -0
- package/dist/{PodcastList-BLXPFjvL.mjs → PodcastList-DgLQjL0d.mjs} +6 -6
- package/dist/PodcastList-DgLQjL0d.mjs.map +1 -0
- package/dist/{PodcastList-c0Iwzakm.mjs → PodcastList-DhKeiBbv.mjs} +5 -5
- package/dist/PodcastList-DhKeiBbv.mjs.map +1 -0
- package/dist/PodcastList-Dtq6kEG4.mjs.map +1 -0
- package/dist/PodcastList-Dx-mo7Wo.mjs.map +1 -0
- package/dist/{PodcastPage-C_d9FaS7.mjs → PodcastPage-C5OCwW8q.mjs} +23 -23
- package/dist/PodcastPage-C5OCwW8q.mjs.map +1 -0
- package/dist/PodcastPage-CsVqOGWc.mjs.map +1 -0
- package/dist/PodcastPage-DQInD9ry.mjs.map +1 -0
- package/dist/PodcastPage-Dka9GEzi.mjs.map +1 -0
- package/dist/PodcastPage-acKIH0vO.mjs.map +1 -0
- package/dist/PodcastPlayBar-AgtR8Ia9.mjs.map +1 -0
- package/dist/PodcastPlayBar-D7CyLEM4.mjs.map +1 -0
- package/dist/{PodcastPlayBar-WjGn_KlZ.mjs → PodcastPlayBar-DC5HCx76.mjs} +4 -4
- package/dist/PodcastPlayBar-DC5HCx76.mjs.map +1 -0
- package/dist/PodcastPlayBasicButton-DHYxw3NX.mjs.map +1 -0
- package/dist/{PodcastPlayBasicButton-BNKlqhGR.mjs → PodcastPlayBasicButton-PJHza4d_.mjs} +2 -2
- package/dist/PodcastPlayBasicButton-PJHza4d_.mjs.map +1 -0
- package/dist/PodcastPlayBasicButton-gK82n3YL.mjs.map +1 -0
- package/dist/{PodcastPlayButton-B9hWbPEk.mjs → PodcastPlayButton-1eaXWTlG.mjs} +4 -4
- package/dist/PodcastPlayButton-1eaXWTlG.mjs.map +1 -0
- package/dist/PodcastPlayButton-Bosq5ozq.mjs.map +1 -0
- package/dist/PodcastPlayButton-DIQi57Oh.mjs.map +1 -0
- package/dist/PodcastPlayButton-DcjbCnlT.mjs.map +1 -0
- package/dist/PodcastPlayButton-DgSCyhrd.mjs.map +1 -0
- package/dist/PodcastPlaylistInlineList-C0HZum5z.mjs.map +1 -0
- package/dist/PodcastPlaylistInlineList-CSziI2j4.mjs.map +1 -0
- package/dist/PodcastPlaylistInlineList-CvX2rauY.mjs.map +1 -0
- package/dist/PodcastPlaylistInlineList-H_rnCHag.mjs.map +1 -0
- package/dist/{PodcastPlaylistInlineList-_csxbYAx.mjs → PodcastPlaylistInlineList-XTbhC8OJ.mjs} +5 -5
- package/dist/PodcastPlaylistInlineList-XTbhC8OJ.mjs.map +1 -0
- package/dist/{PodcastPresentationList-BD8XmnW0.mjs → PodcastPresentationList-BUl5Rq83.mjs} +5 -5
- package/dist/PodcastPresentationList-BUl5Rq83.mjs.map +1 -0
- package/dist/PodcastPresentationList-BvkEDbtG.mjs.map +1 -0
- package/dist/PodcastPresentationList-C0n-xr5w.mjs.map +1 -0
- package/dist/PodcastPresentationList-CnrMkINf.mjs.map +1 -0
- package/dist/PodcastPresentationList-DC-Oi_eK.mjs.map +1 -0
- package/dist/PodcastProgressBar-CP-0ptRF.mjs.map +1 -0
- package/dist/{PodcastProgressBar-B3XOeeJx.mjs → PodcastProgressBar-VG-mRcpi.mjs} +4 -4
- package/dist/PodcastProgressBar-VG-mRcpi.mjs.map +1 -0
- package/dist/PodcastProgressBar-jY43GoFx.mjs.map +1 -0
- package/dist/PodcastRawTranscript-BAu-dt2V.mjs.map +1 -0
- package/dist/{PodcastRawTranscript-D0Nm7jGM.mjs → PodcastRawTranscript-Bf6f5yNd.mjs} +3 -3
- package/dist/PodcastRawTranscript-Bf6f5yNd.mjs.map +1 -0
- package/dist/{PodcastSwiperList-DJ0O3dqM.mjs → PodcastSwiperList-BhulNkN-.mjs} +5 -5
- package/dist/PodcastSwiperList-BhulNkN-.mjs.map +1 -0
- package/dist/PodcastSwiperList-CGeumBPj.mjs.map +1 -0
- package/dist/PodcastSwiperList-CzUkS6M6.mjs.map +1 -0
- package/dist/PodcastSwiperList-DLKOAjUS.mjs.map +1 -0
- package/dist/PodcastSwiperList-DaTHwrHm.mjs.map +1 -0
- package/dist/PodcastmakerHeader-BZT-U0KX.mjs.map +1 -0
- package/dist/{PodcastmakerHeader-DAATtOG_.mjs → PodcastmakerHeader-Df0g2dCr.mjs} +2 -2
- package/dist/PodcastmakerHeader-Df0g2dCr.mjs.map +1 -0
- package/dist/PodcastsPage-B-Qzlif0.mjs.map +1 -0
- package/dist/PodcastsPage-BoK55Z9G.mjs.map +1 -0
- package/dist/PodcastsPage-CTzbr2VD.mjs.map +1 -0
- package/dist/{PodcastsPage-ZhEVoMp1.mjs → PodcastsPage-DSJUPRZE.mjs} +5 -5
- package/dist/PodcastsPage-DSJUPRZE.mjs.map +1 -0
- package/dist/PodcastsPage-Jg_jAix6.mjs.map +1 -0
- package/dist/{ProductorSearch-xs0kzX_E.mjs → ProductorSearch-BTj9gIOs.mjs} +3 -3
- package/dist/ProductorSearch-BTj9gIOs.mjs.map +1 -0
- package/dist/ProductorSearch-ziDbxrDd.mjs.map +1 -0
- package/dist/ProgressBar-BOq9RfZ2.mjs.map +1 -0
- package/dist/{ProgressBar-0DSoUTwB.mjs → ProgressBar-BVc0_6Lv.mjs} +2 -2
- package/dist/ProgressBar-BVc0_6Lv.mjs.map +1 -0
- package/dist/ProgressBar-Cgt2PqnO.mjs.map +1 -0
- package/dist/QrCode-DNiPIFIA.mjs.map +1 -0
- package/dist/{QrCode-CUP2O18d.mjs → QrCode-MCv4t_Bn.mjs} +2 -2
- package/dist/QrCode-MCv4t_Bn.mjs.map +1 -0
- package/dist/{QrCodeModal-DXBCuki7.mjs → QrCodeModal-Be8E0JlC.mjs} +2 -2
- package/dist/QrCodeModal-Be8E0JlC.mjs.map +1 -0
- package/dist/QrCodeModal-DYDKLLuw.mjs.map +1 -0
- package/dist/RadioCurrently-BJOmCSby.mjs.map +1 -0
- package/dist/RadioCurrently-CZePLInZ.mjs.map +1 -0
- package/dist/{RadioCurrently-D5M81oIX.mjs → RadioCurrently-DWySwV64.mjs} +4 -4
- package/dist/RadioCurrently-DWySwV64.mjs.map +1 -0
- package/dist/RadioHistory-7EGvEAMx.mjs.map +1 -0
- package/dist/RadioHistory-BdMa013x.mjs.map +1 -0
- package/dist/{RadioHistory-BgOve4jk.mjs → RadioHistory-DlQFZYp2.mjs} +3 -3
- package/dist/RadioHistory-DlQFZYp2.mjs.map +1 -0
- package/dist/{RadioImage-CUTRr3DL.mjs → RadioImage-BIe2KpG_.mjs} +5 -5
- package/dist/RadioImage-BIe2KpG_.mjs.map +1 -0
- package/dist/RadioImage-CXFZXN1N.mjs.map +1 -0
- package/dist/RadioImage-CpJmuc8a.mjs.map +1 -0
- package/dist/{RadioList-CwzOFHc1.mjs → RadioList-B23gsiEF.mjs} +5 -5
- package/dist/RadioList-B23gsiEF.mjs.map +1 -0
- package/dist/RadioList-BwzgNcMO.mjs.map +1 -0
- package/dist/RadioList-KvAacjmD.mjs.map +1 -0
- package/dist/RadioPage-CM_4A1AQ.mjs.map +1 -0
- package/dist/RadioPage-DkBL81mI.mjs.map +1 -0
- package/dist/{RadioPage-DVflzCV-.mjs → RadioPage-Jg2kmtna.mjs} +11 -11
- package/dist/RadioPage-Jg2kmtna.mjs.map +1 -0
- package/dist/{RadioPlanning-CJ7Qqyhs.mjs → RadioPlanning-2aWTnbZb.mjs} +3 -3
- package/dist/RadioPlanning-2aWTnbZb.mjs.map +1 -0
- package/dist/RadioPlanning-DHxcBVQo.mjs.map +1 -0
- package/dist/RadioProgressBar-BHAawrHe.mjs.map +1 -0
- package/dist/RadioProgressBar-CPjLAoPB.mjs.map +1 -0
- package/dist/{RadioProgressBar-BmJbzzQA.mjs → RadioProgressBar-yIz1oI5d.mjs} +2 -2
- package/dist/RadioProgressBar-yIz1oI5d.mjs.map +1 -0
- package/dist/RecaptchaModal-DKugsU7h.mjs.map +1 -0
- package/dist/{RecaptchaModal-DX9rAHUg.mjs → RecaptchaModal-dfMCfebx.mjs} +2 -2
- package/dist/RecaptchaModal-dfMCfebx.mjs.map +1 -0
- package/dist/ReportAbuseModal-Bxr7NTvH.mjs.map +1 -0
- package/dist/{ReportAbuseModal-CYCRaFAY.mjs → ReportAbuseModal-DZKRbYXJ.mjs} +4 -4
- package/dist/ReportAbuseModal-DZKRbYXJ.mjs.map +1 -0
- package/dist/RightsIndicator-BgW0q3af.mjs.map +1 -0
- package/dist/RightsIndicator-BtzqiPWc.mjs.map +1 -0
- package/dist/{RightsIndicator-qIU4_wiF.mjs → RightsIndicator-D5I3DOfO.mjs} +2 -2
- package/dist/RightsIndicator-D5I3DOfO.mjs.map +1 -0
- package/dist/RightsIndicator-NOZ05rEh.mjs.map +1 -0
- package/dist/RightsWrapper-Cv41FXNO.mjs.map +1 -0
- package/dist/{RightsWrapper-Cs6prZ3E.mjs → RightsWrapper-HasUbnny.mjs} +3 -3
- package/dist/RightsWrapper-HasUbnny.mjs.map +1 -0
- package/dist/{RubriqueFilter-OA_DJKL1.mjs → RubriqueFilter-3SPVH4nT.mjs} +3 -3
- package/dist/RubriqueFilter-3SPVH4nT.mjs.map +1 -0
- package/dist/RubriqueFilter-B_F2fyA0.mjs.map +1 -0
- package/dist/RubriqueList-CalsqgcR.mjs.map +1 -0
- package/dist/{RubriqueList-B94NM5yi.mjs → RubriqueList-TnVM2-Ry.mjs} +3 -3
- package/dist/RubriqueList-TnVM2-Ry.mjs.map +1 -0
- package/dist/RubriquePage-BhneK7GY.mjs.map +1 -0
- package/dist/RubriquePage-CPV9lztT.mjs.map +1 -0
- package/dist/{RubriquePage-DyusiBmp.mjs → RubriquePage-D223TaA2.mjs} +5 -5
- package/dist/RubriquePage-D223TaA2.mjs.map +1 -0
- package/dist/RubriquePage-DriBVVmv.mjs.map +1 -0
- package/dist/RubriquePage-x_tOmQCH.mjs.map +1 -0
- package/dist/SearchPage-B-KDO-5r.mjs.map +1 -0
- package/dist/{SearchPage-BGOBGS4j.mjs → SearchPage-BH1gYkHn.mjs} +3 -3
- package/dist/SearchPage-BH1gYkHn.mjs.map +1 -0
- package/dist/SearchPage-CXOoJF_2.mjs.map +1 -0
- package/dist/SearchPage-DyX_tEm5.mjs.map +1 -0
- package/dist/SearchPage-IvX74fSJ.mjs.map +1 -0
- package/dist/{ShareAnonymous-Chfdzzra.mjs → ShareAnonymous-4UxjKrIe.mjs} +6 -6
- package/dist/ShareAnonymous-4UxjKrIe.mjs.map +1 -0
- package/dist/ShareAnonymous-C4xPMrgf.mjs.map +1 -0
- package/dist/{ShareModalPlayer-CLY_JFFD.mjs → ShareModalPlayer-B0wPlpdU.mjs} +2 -2
- package/dist/ShareModalPlayer-B0wPlpdU.mjs.map +1 -0
- package/dist/ShareModalPlayer-CEvDV-I_.mjs.map +1 -0
- package/dist/ShareNewsletter-Bno5t4ay.mjs.map +1 -0
- package/dist/{ShareNewsletter-B4dn4-jA.mjs → ShareNewsletter-Cf9w-I6c.mjs} +2 -2
- package/dist/ShareNewsletter-Cf9w-I6c.mjs.map +1 -0
- package/dist/SharePlayer-BLqYnywl.mjs.map +1 -0
- package/dist/{SharePlayer-wHDYsWYd.mjs → SharePlayer-Oy1pWckd.mjs} +4 -4
- package/dist/SharePlayer-Oy1pWckd.mjs.map +1 -0
- package/dist/{SharePlayerRadio-D3LXD_gK.mjs → SharePlayerRadio-CI6glNuI.mjs} +3 -3
- package/dist/SharePlayerRadio-CI6glNuI.mjs.map +1 -0
- package/dist/SharePlayerRadio-c_HFTupz.mjs.map +1 -0
- package/dist/SharePlayerTypes-Dkmmw2We.mjs.map +1 -0
- package/dist/{SharePlayerTypes-eYSeVl-W.mjs → SharePlayerTypes-cUgCFZ65.mjs} +2 -2
- package/dist/SharePlayerTypes-cUgCFZ65.mjs.map +1 -0
- package/dist/{ShareSocialsButtons-iHtSoQ3K.mjs → ShareSocialsButtons-BYsXc2Jr.mjs} +2 -2
- package/dist/ShareSocialsButtons-BYsXc2Jr.mjs.map +1 -0
- package/dist/ShareSocialsButtons-DZLZc1c6.mjs.map +1 -0
- package/dist/SimpleLayout-BCsUQENG.mjs.map +1 -0
- package/dist/SimpleLayout-BGKNHHjx.mjs.map +1 -0
- package/dist/SimpleLayout-BHIdltFB.mjs.map +1 -0
- package/dist/SimpleLayout-BKkwQmN6.mjs.map +1 -0
- package/dist/SimpleLayout-BORx9hRX.mjs.map +1 -0
- package/dist/{SimpleLayout-Bk74CAAr.mjs → SimpleLayout-BTJyAJO6.mjs} +3 -3
- package/dist/SimpleLayout-BTJyAJO6.mjs.map +1 -0
- package/dist/SimpleLayout-BvOAauzs.mjs.map +1 -0
- package/dist/SimpleLayout-C3xekYgM.mjs.map +1 -0
- package/dist/SimpleLayout-C4xNk0R4.mjs.map +1 -0
- package/dist/SimpleLayout-CDcsE-Be.mjs.map +1 -0
- package/dist/SimpleLayout-D3M_c1Eu.mjs.map +1 -0
- package/dist/SimpleLayout-DJgC3LcZ.mjs.map +1 -0
- package/dist/SimpleLayout-DkvEZxow.mjs.map +1 -0
- package/dist/SimpleLayout-gtbBGlVV.mjs.map +1 -0
- package/dist/SmartLinkPage-BF8hfaWZ.mjs.map +1 -0
- package/dist/{SmartLinkPage-DbuQT8GM.mjs → SmartLinkPage-DQljzYa-.mjs} +5 -5
- package/dist/SmartLinkPage-DQljzYa-.mjs.map +1 -0
- package/dist/SmartLinkPage-DmlqwhYP.mjs.map +1 -0
- package/dist/SubscribeButtons-DO4MRuDr.mjs.map +1 -0
- package/dist/{SubscribeButtons-rnonTVzT.mjs → SubscribeButtons-lAAMYQCm.mjs} +3 -3
- package/dist/SubscribeButtons-lAAMYQCm.mjs.map +1 -0
- package/dist/{SwiperList-C1v0T1wx.mjs → SwiperList-C51H-enh.mjs} +2 -2
- package/dist/SwiperList-C51H-enh.mjs.map +1 -0
- package/dist/SwiperList-Dsq1MFX6.mjs.map +1 -0
- package/dist/TagList-B5C9zojs.mjs.map +1 -0
- package/dist/{TagList-VeuYS_zJ.mjs → TagList-D3Bn2fIn.mjs} +2 -2
- package/dist/TagList-D3Bn2fIn.mjs.map +1 -0
- package/dist/TagPage-B71pZpRY.mjs.map +1 -0
- package/dist/{TagPage-Bd81QJHn.mjs → TagPage-Brw9iL1F.mjs} +4 -4
- package/dist/TagPage-Brw9iL1F.mjs.map +1 -0
- package/dist/TagPage-CWRyUZkD.mjs.map +1 -0
- package/dist/TagPage-DFo25ZeP.mjs.map +1 -0
- package/dist/TagPage-sI917OpV.mjs.map +1 -0
- package/dist/TopBar-CaCA8kOs.mjs.map +1 -0
- package/dist/{TopBar-CZVp2T7C.mjs → TopBar-DIdhyJi_.mjs} +7 -7
- package/dist/TopBar-DIdhyJi_.mjs.map +1 -0
- package/dist/{UserButtonContent-DmNyGmWr.mjs → UserButtonContent-D13cVA34.mjs} +7 -7
- package/dist/UserButtonContent-D13cVA34.mjs.map +1 -0
- package/dist/UserButtonContent-DMKyXEmF.mjs.map +1 -0
- package/dist/{VideoModuleBox-yJZpgCw6.mjs → VideoModuleBox-CFQmvPrA.mjs} +2 -2
- package/dist/VideoModuleBox-CFQmvPrA.mjs.map +1 -0
- package/dist/VideoModuleBox-DsBLAMrh.mjs.map +1 -0
- package/dist/VideoPage-CfJeWV-R.mjs.map +1 -0
- package/dist/VideoPage-CnIZYz-k.mjs.map +1 -0
- package/dist/VideoPage-D6UNKt2D.mjs.map +1 -0
- package/dist/{VideoPage-y6G4Y2Zi.mjs → VideoPage-DU9dJviO.mjs} +10 -10
- package/dist/VideoPage-DU9dJviO.mjs.map +1 -0
- package/dist/VideoPage-OIb28KAS.mjs.map +1 -0
- package/dist/classicApi-C70YSK8J.mjs.map +1 -0
- package/dist/classicApi-DuzZv1Wk.mjs.map +1 -1
- package/dist/{classicApi-CkDHWZG1.mjs → classicApi-xjOqAovv.mjs} +11 -8
- package/dist/classicApi-xjOqAovv.mjs.map +1 -0
- package/dist/downloadHelper-C4q0i5xN.mjs.map +1 -0
- package/dist/{downloadHelper-DLdkblYN.mjs → downloadHelper-DY3fF3dA.mjs} +2 -2
- package/dist/downloadHelper-DY3fF3dA.mjs.map +1 -0
- package/dist/index.mjs +102 -97
- package/dist/index.mjs.map +1 -1
- package/dist/tests.mjs +2 -2
- package/dist/{useAdvancedParamInit-B7G2Mvjv.mjs → useAdvancedParamInit-CCprE3H2.mjs} +6 -6
- package/dist/useAdvancedParamInit-CCprE3H2.mjs.map +1 -0
- package/dist/useAdvancedParamInit-CT8CdPFW.mjs.map +1 -0
- package/dist/useDayjs-BPXVSBns.mjs.map +1 -0
- package/dist/{useDayjs-C3cnTiDW.mjs → useDayjs-DPVjvJPN.mjs} +2 -2
- package/dist/useDayjs-DPVjvJPN.mjs.map +1 -0
- package/dist/useErrorHandler-BxQT9ZGf.mjs.map +1 -0
- package/dist/{useErrorHandler-DtLjD9t_.mjs → useErrorHandler-D3XVxUh6.mjs} +2 -2
- package/dist/useErrorHandler-D3XVxUh6.mjs.map +1 -0
- package/dist/{useImageProxy-Bj0cOCct.mjs → useImageProxy-BdQJmj4a.mjs} +2 -2
- package/dist/useImageProxy-BdQJmj4a.mjs.map +1 -0
- package/dist/useImageProxy-DROuweGY.mjs.map +1 -0
- package/dist/{useOrgaComputed-BLSpEDfb.mjs → useOrgaComputed-B2Bq0VBT.mjs} +2 -2
- package/dist/useOrgaComputed-B2Bq0VBT.mjs.map +1 -0
- package/dist/useOrgaComputed-CGomgs0r.mjs.map +1 -0
- package/dist/{usePlayerLogicProgress-75G9QMg_.mjs → usePlayerLogicProgress-DcHbYGOR.mjs} +3 -3
- package/dist/usePlayerLogicProgress-DcHbYGOR.mjs.map +1 -0
- package/dist/usePlayerLogicProgress-Dchl5sUO.mjs.map +1 -0
- package/dist/usePlayerLogicProgress-lqnQ5qNd.mjs.map +1 -0
- package/dist/{usePodcastView-BftS642h.mjs → usePodcastView-BDZ6CGQj.mjs} +4 -4
- package/dist/usePodcastView-BDZ6CGQj.mjs.map +1 -0
- package/dist/usePodcastView-CI5le-WW.mjs.map +1 -0
- package/dist/usePresentationItem-Cw9fBYUi.mjs.map +1 -0
- package/dist/{usePresentationItem-CNXIk-Sf.mjs → usePresentationItem-UwAuhVqo.mjs} +4 -4
- package/dist/usePresentationItem-UwAuhVqo.mjs.map +1 -0
- package/dist/useRights-D8CLzCMH.mjs.map +1 -0
- package/dist/{useRights-Co0TgD8y.mjs → useRights-DSZ-5pFg.mjs} +2 -2
- package/dist/useRights-DSZ-5pFg.mjs.map +1 -0
- package/dist/{useRubriquesFilterComputed-VsdTUNL6.mjs → useRubriquesFilterComputed-BkDeXTf-.mjs} +2 -2
- package/dist/useRubriquesFilterComputed-BkDeXTf-.mjs.map +1 -0
- package/dist/useRubriquesFilterComputed-Bkre15fg.mjs.map +1 -0
- package/dist/useRubriquesFilterParam-BmE8v1fS.mjs.map +1 -0
- package/dist/{useRubriquesFilterParam--x07HEw1.mjs → useRubriquesFilterParam-Delgf48y.mjs} +2 -2
- package/dist/useRubriquesFilterParam-Delgf48y.mjs.map +1 -0
- package/dist/{useSharePlatforms-CSSRTkTG.mjs → useSharePlatforms-07n3JYu2.mjs} +3 -3
- package/dist/useSharePlatforms-07n3JYu2.mjs.map +1 -0
- package/dist/useSharePlatforms-B_3OwBFv.mjs.map +1 -0
- package/dist/{useSimplePageParam-ClaGQ9yj.mjs → useSimplePageParam-CsY_ie3c.mjs} +2 -2
- package/dist/useSimplePageParam-CsY_ie3c.mjs.map +1 -0
- package/dist/useSimplePageParam-ki2VyM-X.mjs.map +1 -0
- package/dist/{useTranslation-BNshNMQT.mjs → useTranslation-ChEasnl9.mjs} +25 -8
- package/dist/useTranslation-ChEasnl9.mjs.map +1 -0
- package/dist/useTranslation-D0R0BSx9.mjs.map +1 -0
- package/dist/usefetchRadioData-BPmkztGC.mjs.map +1 -0
- package/dist/{usefetchRadioData-C2cwiaCP.mjs → usefetchRadioData-CkrAfN1c.mjs} +2 -2
- package/dist/usefetchRadioData-CkrAfN1c.mjs.map +1 -0
- package/package.json +1 -1
- package/src/components/composable/player/usePlayerLive.ts +8 -7
- package/src/stores/AuthStore.ts +2 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"PodcastPlaylistInlineList-H_rnCHag.mjs","names":[],"sources":["../src/components/display/playlist/PodcastPlaylistInlineList.vue","../src/components/display/playlist/PodcastPlaylistInlineList.vue"],"sourcesContent":["<template>\n <PodcastInlineListTemplate\n v-if=\"loading || (!loading && 0 !== allPodcasts.length)\"\n :display-arrow=\"false\"\n :button-text=\"noMoreButton ? undefined : t('See more')\"\n :button-plus=\"true\"\n :title=\"playlist?.title ?? ''\"\n :href=\"'/main/pub/playlist/' + playlistId\"\n :podcast-id=\"playlistId\"\n >\n <template #list-inline>\n <ClassicLoading\n class=\"loading-size\"\n :loading-text=\"loading ? t('Loading podcasts ...') : undefined\"\n />\n <SwiperList\n v-if=\"!loading\"\n :list-object=\"allPodcasts\"\n :size-item-overload=\"sizeItemOverload\"\n >\n <template #octopusSlide=\"{ option }\">\n <PodcastItem\n class=\"flex-shrink-0 item-phone-margin\"\n :podcast=\"option\"\n />\n </template>\n </SwiperList>\n </template>\n </PodcastInlineListTemplate>\n</template>\n\n<script setup lang=\"ts\">\nimport PodcastInlineListTemplate from \"../podcasts/PodcastInlineListTemplate.vue\";\nimport PodcastItem from \"../podcasts/PodcastItem.vue\";\nimport SwiperList from \"../list/SwiperList.vue\";\nimport ClassicLoading from \"../../form/ClassicLoading.vue\";\nimport { useAuthStore } from \"../../../stores/AuthStore\";\nimport { Podcast } from \"@/stores/class/general/podcast\";\nimport { Playlist } from \"@/stores/class/general/playlist\";\nimport { onMounted, Ref, ref, watch } from \"vue\";\nimport { useI18n } from \"vue-i18n\";\nimport { playlistApi } from \"../../../api/playlistApi\";\n\n//Props \nconst props = defineProps<{\n /** ID of the playlist to display */\n playlistId: number;\n sizeItemOverload?: number;\n /** When set to true, disable display of \"see more\" button */\n noMoreButton?: boolean;\n}>();\n\n//Data \nconst loading = ref(true);\nconst totalCount = ref(0);\nconst playlist: Ref<Playlist | undefined> = ref(undefined);\nconst allPodcasts: Ref<Array<Podcast>> = ref([]);\n\n//Composables\nconst { t } = useI18n();\nconst authStore = useAuthStore();\n\n//Watch\nwatch(()=>props.playlistId, () => {\n reset();\n fetchContent();\n});\n\nonMounted(()=>fetchContent())\n\n//Methods\nasync function fetchContent(): Promise<void> {\n allPodcasts.value.length = 0;\n loading.value = true;\n\n // Retrieve both playlist & content at the same time\n const [playlistData, content] = await Promise.all([\n playlistApi.get(props.playlistId),\n playlistApi.getContentFull(props.playlistId)\n ]);\n\n // Update data\n playlist.value = playlistData;\n allPodcasts.value = content;\n\n if (\n !(\n (undefined !== authStore.authOrgaId &&\n authStore.authOrgaId === playlist.value?.organisation?.id) ||\n authStore.isRoleAdmin\n )\n ) {\n allPodcasts.value = allPodcasts.value.filter((p: Podcast | null) => {\n return (\n null !== p &&\n (!p.availability || true === p.availability.visibility)\n );\n });\n }\n loading.value = false;\n}\nfunction reset(): void {\n totalCount.value = 0;\n allPodcasts.value.length = 0;\n}\n</script>\n","<template>\n <PodcastInlineListTemplate\n v-if=\"loading || (!loading && 0 !== allPodcasts.length)\"\n :display-arrow=\"false\"\n :button-text=\"noMoreButton ? undefined : t('See more')\"\n :button-plus=\"true\"\n :title=\"playlist?.title ?? ''\"\n :href=\"'/main/pub/playlist/' + playlistId\"\n :podcast-id=\"playlistId\"\n >\n <template #list-inline>\n <ClassicLoading\n class=\"loading-size\"\n :loading-text=\"loading ? t('Loading podcasts ...') : undefined\"\n />\n <SwiperList\n v-if=\"!loading\"\n :list-object=\"allPodcasts\"\n :size-item-overload=\"sizeItemOverload\"\n >\n <template #octopusSlide=\"{ option }\">\n <PodcastItem\n class=\"flex-shrink-0 item-phone-margin\"\n :podcast=\"option\"\n />\n </template>\n </SwiperList>\n </template>\n </PodcastInlineListTemplate>\n</template>\n\n<script setup lang=\"ts\">\nimport PodcastInlineListTemplate from \"../podcasts/PodcastInlineListTemplate.vue\";\nimport PodcastItem from \"../podcasts/PodcastItem.vue\";\nimport SwiperList from \"../list/SwiperList.vue\";\nimport ClassicLoading from \"../../form/ClassicLoading.vue\";\nimport { useAuthStore } from \"../../../stores/AuthStore\";\nimport { Podcast } from \"@/stores/class/general/podcast\";\nimport { Playlist } from \"@/stores/class/general/playlist\";\nimport { onMounted, Ref, ref, watch } from \"vue\";\nimport { useI18n } from \"vue-i18n\";\nimport { playlistApi } from \"../../../api/playlistApi\";\n\n//Props \nconst props = defineProps<{\n /** ID of the playlist to display */\n playlistId: number;\n sizeItemOverload?: number;\n /** When set to true, disable display of \"see more\" button */\n noMoreButton?: boolean;\n}>();\n\n//Data \nconst loading = ref(true);\nconst totalCount = ref(0);\nconst playlist: Ref<Playlist | undefined> = ref(undefined);\nconst allPodcasts: Ref<Array<Podcast>> = ref([]);\n\n//Composables\nconst { t } = useI18n();\nconst authStore = useAuthStore();\n\n//Watch\nwatch(()=>props.playlistId, () => {\n reset();\n fetchContent();\n});\n\nonMounted(()=>fetchContent())\n\n//Methods\nasync function fetchContent(): Promise<void> {\n allPodcasts.value.length = 0;\n loading.value = true;\n\n // Retrieve both playlist & content at the same time\n const [playlistData, content] = await Promise.all([\n playlistApi.get(props.playlistId),\n playlistApi.getContentFull(props.playlistId)\n ]);\n\n // Update data\n playlist.value = playlistData;\n allPodcasts.value = content;\n\n if (\n !(\n (undefined !== authStore.authOrgaId &&\n authStore.authOrgaId === playlist.value?.organisation?.id) ||\n authStore.isRoleAdmin\n )\n ) {\n allPodcasts.value = allPodcasts.value.filter((p: Podcast | null) => {\n return (\n null !== p &&\n (!p.availability || true === p.availability.visibility)\n );\n });\n }\n loading.value = false;\n}\nfunction reset(): void {\n totalCount.value = 0;\n allPodcasts.value.length = 0;\n}\n</script>\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;EA4CA,MAAM,QAAQ;EASd,MAAM,UAAU,IAAI,IAAI;EACxB,MAAM,aAAa,IAAI,CAAC;EACxB,MAAM,WAAsC,IAAI,KAAA,CAAS;EACzD,MAAM,cAAmC,IAAI,CAAC,CAAC;EAG/C,MAAM,EAAE,MAAM,QAAQ;EACtB,MAAM,YAAY,aAAa;EAG/B,YAAU,MAAM,kBAAkB;GAChC,MAAM;GACN,aAAa;EACf,CAAC;EAED,gBAAc,aAAa,CAAC;EAG5B,eAAe,eAA8B;GAC3C,YAAY,MAAM,SAAS;GAC3B,QAAQ,QAAQ;GAGhB,MAAM,CAAC,cAAc,WAAW,MAAM,QAAQ,IAAI,CAChD,YAAY,IAAI,MAAM,UAAU,GAChC,YAAY,eAAe,MAAM,UAAU,CAC7C,CAAC;GAGD,SAAS,QAAQ;GACjB,YAAY,QAAQ;GAEpB,IACE,EACG,KAAA,MAAc,UAAU,cACzB,UAAU,eAAe,SAAS,OAAO,cAAc,MACvD,UAAU,cAGZ,YAAY,QAAQ,YAAY,MAAM,QAAQ,MAAsB;IAClE,OACE,SAAS,MACR,CAAC,EAAE,gBAAgB,SAAS,EAAE,aAAa;GAEhD,CAAC;GAEH,QAAQ,QAAQ;EAClB;EACA,SAAS,QAAc;GACrB,WAAW,QAAQ;GACnB,YAAY,MAAM,SAAS;EAC7B;;;;;;;;;;;;;;;;;;;;;;;;;;QCtGU,OAAA,WAAO,CAAM,OAAA,WAAO,MAAU,OAAA,YAAY,UAAA,UAAA,GADlD,YA2B4B,OAAA,8BAAA;;EAzBzB,iBAAe;EACf,eAAa,OAAA,eAAe,KAAA,IAAY,OAAA,EAAC,UAAA;EACzC,eAAa;EACb,OAAO,OAAA,UAAU,SAAK;EACtB,MAAI,wBAA0B,OAAA;EAC9B,cAAY,OAAA;;EAEF,eAAW,cAIlB,CAHF,YAGE,OAAA,mBAAA;GAFA,OAAM;GACL,gBAAc,OAAA,UAAU,OAAA,EAAC,sBAAA,IAA2B,KAAA;kCAG9C,OAAA,WAAA,UAAA,GADT,YAWa,OAAA,eAAA;;GATV,eAAa,OAAA;GACb,sBAAoB,OAAA;;GAEV,cAAY,SAInB,EAJuB,aAAM,CAC/B,YAGE,OAAA,gBAAA;IAFA,OAAM;IACL,SAAS"}
|
package/dist/{PodcastPlaylistInlineList-_csxbYAx.mjs → PodcastPlaylistInlineList-XTbhC8OJ.mjs}
RENAMED
|
@@ -1,9 +1,9 @@
|
|
|
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 { _ as playlistApi, i as useAuthStore } from "./classicApi-
|
|
4
|
-
import { t as SwiperList_default } from "./SwiperList-
|
|
5
|
-
import { t as PodcastItem_default } from "./PodcastItem-
|
|
6
|
-
import { t as PodcastInlineListTemplate_default } from "./PodcastInlineListTemplate-
|
|
3
|
+
import { _ as playlistApi, i as useAuthStore } from "./classicApi-xjOqAovv.mjs";
|
|
4
|
+
import { t as SwiperList_default } from "./SwiperList-C51H-enh.mjs";
|
|
5
|
+
import { t as PodcastItem_default } from "./PodcastItem-_8ErwIDG.mjs";
|
|
6
|
+
import { t as PodcastInlineListTemplate_default } from "./PodcastInlineListTemplate-DCWn3r7s.mjs";
|
|
7
7
|
import { createBlock, createCommentVNode, createVNode, defineComponent, onMounted, openBlock, ref, watch, withCtx } from "vue";
|
|
8
8
|
import { useI18n } from "vue-i18n";
|
|
9
9
|
//#region src/components/display/playlist/PodcastPlaylistInlineList.vue?vue&type=script&setup=true&lang.ts
|
|
@@ -112,4 +112,4 @@ var PodcastPlaylistInlineList_default = /*#__PURE__*/ _plugin_vue_export_helper_
|
|
|
112
112
|
//#endregion
|
|
113
113
|
export { PodcastPlaylistInlineList_default as default };
|
|
114
114
|
|
|
115
|
-
//# sourceMappingURL=PodcastPlaylistInlineList-
|
|
115
|
+
//# sourceMappingURL=PodcastPlaylistInlineList-XTbhC8OJ.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"PodcastPlaylistInlineList-XTbhC8OJ.mjs","names":[],"sources":["../src/components/display/playlist/PodcastPlaylistInlineList.vue","../src/components/display/playlist/PodcastPlaylistInlineList.vue"],"sourcesContent":["<template>\n <PodcastInlineListTemplate\n v-if=\"loading || (!loading && 0 !== allPodcasts.length)\"\n :display-arrow=\"false\"\n :button-text=\"noMoreButton ? undefined : t('See more')\"\n :button-plus=\"true\"\n :title=\"playlist?.title ?? ''\"\n :href=\"'/main/pub/playlist/' + playlistId\"\n :podcast-id=\"playlistId\"\n >\n <template #list-inline>\n <ClassicLoading\n class=\"loading-size\"\n :loading-text=\"loading ? t('Loading podcasts ...') : undefined\"\n />\n <SwiperList\n v-if=\"!loading\"\n :list-object=\"allPodcasts\"\n :size-item-overload=\"sizeItemOverload\"\n >\n <template #octopusSlide=\"{ option }\">\n <PodcastItem\n class=\"flex-shrink-0 item-phone-margin\"\n :podcast=\"option\"\n />\n </template>\n </SwiperList>\n </template>\n </PodcastInlineListTemplate>\n</template>\n\n<script setup lang=\"ts\">\nimport PodcastInlineListTemplate from \"../podcasts/PodcastInlineListTemplate.vue\";\nimport PodcastItem from \"../podcasts/PodcastItem.vue\";\nimport SwiperList from \"../list/SwiperList.vue\";\nimport ClassicLoading from \"../../form/ClassicLoading.vue\";\nimport { useAuthStore } from \"../../../stores/AuthStore\";\nimport { Podcast } from \"@/stores/class/general/podcast\";\nimport { Playlist } from \"@/stores/class/general/playlist\";\nimport { onMounted, Ref, ref, watch } from \"vue\";\nimport { useI18n } from \"vue-i18n\";\nimport { playlistApi } from \"../../../api/playlistApi\";\n\n//Props \nconst props = defineProps<{\n /** ID of the playlist to display */\n playlistId: number;\n sizeItemOverload?: number;\n /** When set to true, disable display of \"see more\" button */\n noMoreButton?: boolean;\n}>();\n\n//Data \nconst loading = ref(true);\nconst totalCount = ref(0);\nconst playlist: Ref<Playlist | undefined> = ref(undefined);\nconst allPodcasts: Ref<Array<Podcast>> = ref([]);\n\n//Composables\nconst { t } = useI18n();\nconst authStore = useAuthStore();\n\n//Watch\nwatch(()=>props.playlistId, () => {\n reset();\n fetchContent();\n});\n\nonMounted(()=>fetchContent())\n\n//Methods\nasync function fetchContent(): Promise<void> {\n allPodcasts.value.length = 0;\n loading.value = true;\n\n // Retrieve both playlist & content at the same time\n const [playlistData, content] = await Promise.all([\n playlistApi.get(props.playlistId),\n playlistApi.getContentFull(props.playlistId)\n ]);\n\n // Update data\n playlist.value = playlistData;\n allPodcasts.value = content;\n\n if (\n !(\n (undefined !== authStore.authOrgaId &&\n authStore.authOrgaId === playlist.value?.organisation?.id) ||\n authStore.isRoleAdmin\n )\n ) {\n allPodcasts.value = allPodcasts.value.filter((p: Podcast | null) => {\n return (\n null !== p &&\n (!p.availability || true === p.availability.visibility)\n );\n });\n }\n loading.value = false;\n}\nfunction reset(): void {\n totalCount.value = 0;\n allPodcasts.value.length = 0;\n}\n</script>\n","<template>\n <PodcastInlineListTemplate\n v-if=\"loading || (!loading && 0 !== allPodcasts.length)\"\n :display-arrow=\"false\"\n :button-text=\"noMoreButton ? undefined : t('See more')\"\n :button-plus=\"true\"\n :title=\"playlist?.title ?? ''\"\n :href=\"'/main/pub/playlist/' + playlistId\"\n :podcast-id=\"playlistId\"\n >\n <template #list-inline>\n <ClassicLoading\n class=\"loading-size\"\n :loading-text=\"loading ? t('Loading podcasts ...') : undefined\"\n />\n <SwiperList\n v-if=\"!loading\"\n :list-object=\"allPodcasts\"\n :size-item-overload=\"sizeItemOverload\"\n >\n <template #octopusSlide=\"{ option }\">\n <PodcastItem\n class=\"flex-shrink-0 item-phone-margin\"\n :podcast=\"option\"\n />\n </template>\n </SwiperList>\n </template>\n </PodcastInlineListTemplate>\n</template>\n\n<script setup lang=\"ts\">\nimport PodcastInlineListTemplate from \"../podcasts/PodcastInlineListTemplate.vue\";\nimport PodcastItem from \"../podcasts/PodcastItem.vue\";\nimport SwiperList from \"../list/SwiperList.vue\";\nimport ClassicLoading from \"../../form/ClassicLoading.vue\";\nimport { useAuthStore } from \"../../../stores/AuthStore\";\nimport { Podcast } from \"@/stores/class/general/podcast\";\nimport { Playlist } from \"@/stores/class/general/playlist\";\nimport { onMounted, Ref, ref, watch } from \"vue\";\nimport { useI18n } from \"vue-i18n\";\nimport { playlistApi } from \"../../../api/playlistApi\";\n\n//Props \nconst props = defineProps<{\n /** ID of the playlist to display */\n playlistId: number;\n sizeItemOverload?: number;\n /** When set to true, disable display of \"see more\" button */\n noMoreButton?: boolean;\n}>();\n\n//Data \nconst loading = ref(true);\nconst totalCount = ref(0);\nconst playlist: Ref<Playlist | undefined> = ref(undefined);\nconst allPodcasts: Ref<Array<Podcast>> = ref([]);\n\n//Composables\nconst { t } = useI18n();\nconst authStore = useAuthStore();\n\n//Watch\nwatch(()=>props.playlistId, () => {\n reset();\n fetchContent();\n});\n\nonMounted(()=>fetchContent())\n\n//Methods\nasync function fetchContent(): Promise<void> {\n allPodcasts.value.length = 0;\n loading.value = true;\n\n // Retrieve both playlist & content at the same time\n const [playlistData, content] = await Promise.all([\n playlistApi.get(props.playlistId),\n playlistApi.getContentFull(props.playlistId)\n ]);\n\n // Update data\n playlist.value = playlistData;\n allPodcasts.value = content;\n\n if (\n !(\n (undefined !== authStore.authOrgaId &&\n authStore.authOrgaId === playlist.value?.organisation?.id) ||\n authStore.isRoleAdmin\n )\n ) {\n allPodcasts.value = allPodcasts.value.filter((p: Podcast | null) => {\n return (\n null !== p &&\n (!p.availability || true === p.availability.visibility)\n );\n });\n }\n loading.value = false;\n}\nfunction reset(): void {\n totalCount.value = 0;\n allPodcasts.value.length = 0;\n}\n</script>\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;EA4CA,MAAM,QAAQ;EASd,MAAM,UAAU,IAAI,IAAI;EACxB,MAAM,aAAa,IAAI,CAAC;EACxB,MAAM,WAAsC,IAAI,KAAA,CAAS;EACzD,MAAM,cAAmC,IAAI,CAAC,CAAC;EAG/C,MAAM,EAAE,MAAM,QAAQ;EACtB,MAAM,YAAY,aAAa;EAG/B,YAAU,MAAM,kBAAkB;GAChC,MAAM;GACN,aAAa;EACf,CAAC;EAED,gBAAc,aAAa,CAAC;EAG5B,eAAe,eAA8B;GAC3C,YAAY,MAAM,SAAS;GAC3B,QAAQ,QAAQ;GAGhB,MAAM,CAAC,cAAc,WAAW,MAAM,QAAQ,IAAI,CAChD,YAAY,IAAI,MAAM,UAAU,GAChC,YAAY,eAAe,MAAM,UAAU,CAC7C,CAAC;GAGD,SAAS,QAAQ;GACjB,YAAY,QAAQ;GAEpB,IACE,EACG,KAAA,MAAc,UAAU,cACzB,UAAU,eAAe,SAAS,OAAO,cAAc,MACvD,UAAU,cAGZ,YAAY,QAAQ,YAAY,MAAM,QAAQ,MAAsB;IAClE,OACE,SAAS,MACR,CAAC,EAAE,gBAAgB,SAAS,EAAE,aAAa;GAEhD,CAAC;GAEH,QAAQ,QAAQ;EAClB;EACA,SAAS,QAAc;GACrB,WAAW,QAAQ;GACnB,YAAY,MAAM,SAAS;EAC7B;;;;;;;;;;;;;;;;;;;;;;;;;;QCtGU,OAAA,WAAO,CAAM,OAAA,WAAO,MAAU,OAAA,YAAY,UAAA,UAAA,GADlD,YA2B4B,OAAA,8BAAA;;EAzBzB,iBAAe;EACf,eAAa,OAAA,eAAe,KAAA,IAAY,OAAA,EAAC,UAAA;EACzC,eAAa;EACb,OAAO,OAAA,UAAU,SAAK;EACtB,MAAI,wBAA0B,OAAA;EAC9B,cAAY,OAAA;;EAEF,eAAW,cAIlB,CAHF,YAGE,OAAA,mBAAA;GAFA,OAAM;GACL,gBAAc,OAAA,UAAU,OAAA,EAAC,sBAAA,IAA2B,KAAA;kCAG9C,OAAA,WAAA,UAAA,GADT,YAWa,OAAA,eAAA;;GATV,eAAa,OAAA;GACb,sBAAoB,OAAA;;GAEV,cAAY,SAInB,EAJuB,aAAM,CAC/B,YAGE,OAAA,gBAAA;IAFA,OAAM;IACL,SAAS"}
|
|
@@ -1,12 +1,12 @@
|
|
|
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 { m as podcastApi, p as PodcastSort, t as classicApi_default } from "./classicApi-
|
|
3
|
+
import { m as podcastApi, p as PodcastSort, t as classicApi_default } from "./classicApi-xjOqAovv.mjs";
|
|
4
4
|
import { t as useResizePhone } from "./useResizePhone-CpfFUmfV.mjs";
|
|
5
|
-
import { t as useErrorHandler } from "./useErrorHandler-
|
|
5
|
+
import { t as useErrorHandler } from "./useErrorHandler-D3XVxUh6.mjs";
|
|
6
6
|
import { a as simplifiedToFull } from "./podcast-Da9L7I5Q.mjs";
|
|
7
|
-
import { n as PresentationItem_default, t as usePresentationItem } from "./usePresentationItem-
|
|
7
|
+
import { n as PresentationItem_default, t as usePresentationItem } from "./usePresentationItem-UwAuhVqo.mjs";
|
|
8
8
|
import { t as PresentationLayout_default } from "./PresentationLayout-BmcVqEo8.mjs";
|
|
9
|
-
import { t as PodcastPlayButton_default } from "./PodcastPlayButton-
|
|
9
|
+
import { t as PodcastPlayButton_default } from "./PodcastPlayButton-1eaXWTlG.mjs";
|
|
10
10
|
import { createBlock, createVNode, defineComponent, normalizeClass, onMounted, openBlock, reactive, ref, watch, withCtx } from "vue";
|
|
11
11
|
//#region src/components/display/podcasts/PodcastPresentationList.vue?vue&type=script&setup=true&lang.ts
|
|
12
12
|
var PodcastPresentationList_vue_vue_type_script_setup_true_lang_default = /*@__PURE__*/ defineComponent({
|
|
@@ -197,4 +197,4 @@ var PodcastPresentationList_default = /*#__PURE__*/ _plugin_vue_export_helper_de
|
|
|
197
197
|
//#endregion
|
|
198
198
|
export { PodcastPresentationList_default as default };
|
|
199
199
|
|
|
200
|
-
//# sourceMappingURL=PodcastPresentationList-
|
|
200
|
+
//# sourceMappingURL=PodcastPresentationList-BUl5Rq83.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"PodcastPresentationList-BUl5Rq83.mjs","names":[],"sources":["../src/components/display/podcasts/PodcastPresentationList.vue","../src/components/display/podcasts/PodcastPresentationList.vue"],"sourcesContent":["<!--\n Simple component to display a few podcasts\n-->\n<template>\n <PresentationLayout\n v-if=\"!loading && !error\"\n :title=\"title\"\n :items=\"podcasts\"\n :route=\"href\"\n :button-text=\"buttonText\"\n >\n <template #item=\"{ item, first }\">\n <PresentationItem\n :class=\"!isPhone && first ? 'me-3' : ''\"\n :name=\"item.title\"\n :route=\"route(item)\"\n :image-url=\"item.imageUrl\"\n :description=\"item.description\"\n :vertical=\"!isPhone && first\"\n :tags=\"tags.get(item.podcastId)\"\n :additional-info=\"additionalInfo.get(item.podcastId)\"\n >\n <template #after-image>\n <PodcastPlayButton\n :podcast=\"item\"\n :hide-play=\"false\"\n :show-processing=\"false\"\n />\n </template>\n </PresentationItem>\n </template>\n </PresentationLayout>\n <ClassicLoading\n v-else\n :loading-text=\"loading ? $t('Loading emissions ...') : undefined\"\n :error-text=\"error ? $t(`Error`) : undefined\"\n />\n</template>\n\n<script setup lang=\"ts\">\nimport classicApi from \"../../../api/classicApi\";\nimport {useErrorHandler} from \"../../composable/useErrorHandler\";\nimport ClassicLoading from \"../../form/ClassicLoading.vue\";\nimport { Emission } from \"@/stores/class/general/emission\";\nimport { onMounted, reactive, Ref, ref, watch } from \"vue\";\nimport { AxiosError } from \"axios\";\nimport {useResizePhone} from \"../../composable/useResizePhone\";\nimport { ListClassicReturn } from \"../../../stores/class/general/listReturn\";\n\nimport PresentationLayout from \"../../layouts/PresentationLayout.vue\"; \nimport { Podcast, SimplifiedPodcast, simplifiedToFull } from \"../../../stores/class/general/podcast\";\n\nimport PresentationItem from \"../../layouts/PresentationItem.vue\"; \nimport PodcastPlayButton from \"./PodcastPlayButton.vue\"; \nimport { RouteLocationRaw } from \"vue-router\";\nimport { podcastApi, PodcastSort } from \"../../../api/podcastApi\";\nimport { usePresentationItem } from \"../../composable/usePresentationItem\";\n\n//Props \nconst props = withDefaults(defineProps<{\n /**\n * ID of the organisation\n */\n organisationId?: string;\n /**\n * Title of the section\n */\n title?: string;\n /**\n * Link to the \"more\" section\n */\n href?: string;\n /**\n * Label for the \"more\" button\n */\n buttonText?: string;\n /**\n * Display podcasts exclusively from these rubriques\n */\n rubriquesId?: Array<number>;\n /**\n * Mode of retrieval for podcasts\n */\n retrievalMode?: 'by-emission'|'any';\n}>(), {\n retrievalMode: 'by-emission'\n});\n\n//Data \nconst loading = ref(true);\nconst error = ref(false);\nconst podcasts: Ref<Array<Podcast>> = ref([]);\nconst tags = reactive(new Map<number, Array<string>>());\nconst additionalInfo = reactive(new Map<number, Array<string>>());\n \n//Composables\nconst { isPhone } = useResizePhone();\nconst { handle403 } = useErrorHandler();\nconst { tagsFor, additionalInfoFor } = usePresentationItem();\n\nonMounted(fetchNext);\n\nwatch(podcasts, async () => {\n podcasts.value.forEach(async (podcast) => {\n if (!tags.has(podcast.podcastId)) {\n const [t, i] = await Promise.all([\n tagsFor(podcast),\n additionalInfoFor(podcast)\n ]);\n tags.set(podcast.podcastId, t);\n additionalInfo.set(podcast.podcastId, i);\n }\n });\n});\n\n//Methods\nasync function fetchNext(): Promise<void> {\n loading.value = true;\n try {\n let func: () => Promise<Array<Podcast>>;\n if (props.retrievalMode === 'any') {\n func = fetchPodcasts;\n } else {\n func = fetchPodcastsByEmission;\n }\n const result = await func();\n\n // Sort podcasts by pub date so that the most recent one is focused\n podcasts.value = result.sort((p1, p2) => {\n return new Date(p2.pubDate).getTime() - new Date(p1.pubDate).getTime();\n });\n \n loading.value = false;\n } catch (errorWs) {\n console.error(errorWs);\n handle403(errorWs as AxiosError);\n error.value = true;\n }\n loading.value = false;\n}\n\nasync function fetchPodcasts(): Promise<Array<Podcast>> {\n const response = await podcastApi.searchFull({\n first: 0,\n size: 5,\n organisationId: [props.organisationId],\n sort: PodcastSort.DATE,\n rubriqueId: props.rubriquesId\n }, true);\n\n return response.result;\n}\n\nasync function fetchPodcastsByEmission(): Promise<Array<Podcast>> {\n // Retrieve latest emissions\n const emissions = await classicApi.fetchData<ListClassicReturn<Emission>>({\n api: 0,\n path: \"emission/search\",\n parameters: {\n first: 0,\n size: 5,\n organisationId: props.organisationId,\n sort: \"LAST_PODCAST_DESC\",\n rubriqueId: props.rubriquesId\n },\n specialTreatement: true\n });\n\n const promises: Array<Promise<SimplifiedPodcast>> = [];\n\n for (let i = 0; i < emissions.result.length; i++) {\n promises.push(podcastApi.search({\n first: 0,\n size: 1,\n organisationId: [props.organisationId],\n emissionId: [emissions.result[i].emissionId],\n sort: PodcastSort.DATE,\n rubriqueId: props.rubriquesId\n }, true).then(r => r.result[0]));\n }\n\n // Retrieve the podcasts for these emissions\n const data = await Promise.all(promises);\n\n return data.filter((em: SimplifiedPodcast | null) => null !== em && undefined !== em).map(p => {\n // Get emission from podcast\n const emission = emissions.result.find(e => e.emissionId === p.emissionId);\n // Create full podcast from simplified + emission\n return simplifiedToFull(p, emission.orga, emission);\n });\n}\n\nfunction route(podcast: Podcast): RouteLocationRaw {\n return {\n name: 'podcast',\n params: { podcastId: podcast.podcastId }\n }\n}\n</script>\n","<!--\n Simple component to display a few podcasts\n-->\n<template>\n <PresentationLayout\n v-if=\"!loading && !error\"\n :title=\"title\"\n :items=\"podcasts\"\n :route=\"href\"\n :button-text=\"buttonText\"\n >\n <template #item=\"{ item, first }\">\n <PresentationItem\n :class=\"!isPhone && first ? 'me-3' : ''\"\n :name=\"item.title\"\n :route=\"route(item)\"\n :image-url=\"item.imageUrl\"\n :description=\"item.description\"\n :vertical=\"!isPhone && first\"\n :tags=\"tags.get(item.podcastId)\"\n :additional-info=\"additionalInfo.get(item.podcastId)\"\n >\n <template #after-image>\n <PodcastPlayButton\n :podcast=\"item\"\n :hide-play=\"false\"\n :show-processing=\"false\"\n />\n </template>\n </PresentationItem>\n </template>\n </PresentationLayout>\n <ClassicLoading\n v-else\n :loading-text=\"loading ? $t('Loading emissions ...') : undefined\"\n :error-text=\"error ? $t(`Error`) : undefined\"\n />\n</template>\n\n<script setup lang=\"ts\">\nimport classicApi from \"../../../api/classicApi\";\nimport {useErrorHandler} from \"../../composable/useErrorHandler\";\nimport ClassicLoading from \"../../form/ClassicLoading.vue\";\nimport { Emission } from \"@/stores/class/general/emission\";\nimport { onMounted, reactive, Ref, ref, watch } from \"vue\";\nimport { AxiosError } from \"axios\";\nimport {useResizePhone} from \"../../composable/useResizePhone\";\nimport { ListClassicReturn } from \"../../../stores/class/general/listReturn\";\n\nimport PresentationLayout from \"../../layouts/PresentationLayout.vue\"; \nimport { Podcast, SimplifiedPodcast, simplifiedToFull } from \"../../../stores/class/general/podcast\";\n\nimport PresentationItem from \"../../layouts/PresentationItem.vue\"; \nimport PodcastPlayButton from \"./PodcastPlayButton.vue\"; \nimport { RouteLocationRaw } from \"vue-router\";\nimport { podcastApi, PodcastSort } from \"../../../api/podcastApi\";\nimport { usePresentationItem } from \"../../composable/usePresentationItem\";\n\n//Props \nconst props = withDefaults(defineProps<{\n /**\n * ID of the organisation\n */\n organisationId?: string;\n /**\n * Title of the section\n */\n title?: string;\n /**\n * Link to the \"more\" section\n */\n href?: string;\n /**\n * Label for the \"more\" button\n */\n buttonText?: string;\n /**\n * Display podcasts exclusively from these rubriques\n */\n rubriquesId?: Array<number>;\n /**\n * Mode of retrieval for podcasts\n */\n retrievalMode?: 'by-emission'|'any';\n}>(), {\n retrievalMode: 'by-emission'\n});\n\n//Data \nconst loading = ref(true);\nconst error = ref(false);\nconst podcasts: Ref<Array<Podcast>> = ref([]);\nconst tags = reactive(new Map<number, Array<string>>());\nconst additionalInfo = reactive(new Map<number, Array<string>>());\n \n//Composables\nconst { isPhone } = useResizePhone();\nconst { handle403 } = useErrorHandler();\nconst { tagsFor, additionalInfoFor } = usePresentationItem();\n\nonMounted(fetchNext);\n\nwatch(podcasts, async () => {\n podcasts.value.forEach(async (podcast) => {\n if (!tags.has(podcast.podcastId)) {\n const [t, i] = await Promise.all([\n tagsFor(podcast),\n additionalInfoFor(podcast)\n ]);\n tags.set(podcast.podcastId, t);\n additionalInfo.set(podcast.podcastId, i);\n }\n });\n});\n\n//Methods\nasync function fetchNext(): Promise<void> {\n loading.value = true;\n try {\n let func: () => Promise<Array<Podcast>>;\n if (props.retrievalMode === 'any') {\n func = fetchPodcasts;\n } else {\n func = fetchPodcastsByEmission;\n }\n const result = await func();\n\n // Sort podcasts by pub date so that the most recent one is focused\n podcasts.value = result.sort((p1, p2) => {\n return new Date(p2.pubDate).getTime() - new Date(p1.pubDate).getTime();\n });\n \n loading.value = false;\n } catch (errorWs) {\n console.error(errorWs);\n handle403(errorWs as AxiosError);\n error.value = true;\n }\n loading.value = false;\n}\n\nasync function fetchPodcasts(): Promise<Array<Podcast>> {\n const response = await podcastApi.searchFull({\n first: 0,\n size: 5,\n organisationId: [props.organisationId],\n sort: PodcastSort.DATE,\n rubriqueId: props.rubriquesId\n }, true);\n\n return response.result;\n}\n\nasync function fetchPodcastsByEmission(): Promise<Array<Podcast>> {\n // Retrieve latest emissions\n const emissions = await classicApi.fetchData<ListClassicReturn<Emission>>({\n api: 0,\n path: \"emission/search\",\n parameters: {\n first: 0,\n size: 5,\n organisationId: props.organisationId,\n sort: \"LAST_PODCAST_DESC\",\n rubriqueId: props.rubriquesId\n },\n specialTreatement: true\n });\n\n const promises: Array<Promise<SimplifiedPodcast>> = [];\n\n for (let i = 0; i < emissions.result.length; i++) {\n promises.push(podcastApi.search({\n first: 0,\n size: 1,\n organisationId: [props.organisationId],\n emissionId: [emissions.result[i].emissionId],\n sort: PodcastSort.DATE,\n rubriqueId: props.rubriquesId\n }, true).then(r => r.result[0]));\n }\n\n // Retrieve the podcasts for these emissions\n const data = await Promise.all(promises);\n\n return data.filter((em: SimplifiedPodcast | null) => null !== em && undefined !== em).map(p => {\n // Get emission from podcast\n const emission = emissions.result.find(e => e.emissionId === p.emissionId);\n // Create full podcast from simplified + emission\n return simplifiedToFull(p, emission.orga, emission);\n });\n}\n\nfunction route(podcast: Podcast): RouteLocationRaw {\n return {\n name: 'podcast',\n params: { podcastId: podcast.podcastId }\n }\n}\n</script>\n"],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"PodcastPresentationList-BvkEDbtG.mjs","names":[],"sources":["../src/components/display/podcasts/PodcastPresentationList.vue","../src/components/display/podcasts/PodcastPresentationList.vue"],"sourcesContent":["<!--\n Simple component to display a few podcasts\n-->\n<template>\n <PresentationLayout\n v-if=\"!loading && !error\"\n :title=\"title\"\n :items=\"podcasts\"\n :route=\"href\"\n :button-text=\"buttonText\"\n >\n <template #item=\"{ item, first }\">\n <PresentationItem\n :class=\"!isPhone && first ? 'me-3' : ''\"\n :name=\"item.title\"\n :route=\"route(item)\"\n :image-url=\"item.imageUrl\"\n :description=\"item.description\"\n :vertical=\"!isPhone && first\"\n :tags=\"tags.get(item.podcastId)\"\n :additional-info=\"additionalInfo.get(item.podcastId)\"\n >\n <template #after-image>\n <PodcastPlayButton\n :podcast=\"item\"\n :hide-play=\"false\"\n :show-processing=\"false\"\n />\n </template>\n </PresentationItem>\n </template>\n </PresentationLayout>\n <ClassicLoading\n v-else\n :loading-text=\"loading ? $t('Loading emissions ...') : undefined\"\n :error-text=\"error ? $t(`Error`) : undefined\"\n />\n</template>\n\n<script setup lang=\"ts\">\nimport classicApi from \"../../../api/classicApi\";\nimport {useErrorHandler} from \"../../composable/useErrorHandler\";\nimport ClassicLoading from \"../../form/ClassicLoading.vue\";\nimport { Emission } from \"@/stores/class/general/emission\";\nimport { onMounted, reactive, Ref, ref, watch } from \"vue\";\nimport { AxiosError } from \"axios\";\nimport {useResizePhone} from \"../../composable/useResizePhone\";\nimport { ListClassicReturn } from \"../../../stores/class/general/listReturn\";\n\nimport PresentationLayout from \"../../layouts/PresentationLayout.vue\"; \nimport { Podcast, SimplifiedPodcast, simplifiedToFull } from \"../../../stores/class/general/podcast\";\n\nimport PresentationItem from \"../../layouts/PresentationItem.vue\"; \nimport PodcastPlayButton from \"./PodcastPlayButton.vue\"; \nimport { RouteLocationRaw } from \"vue-router\";\nimport { podcastApi, PodcastSort } from \"../../../api/podcastApi\";\nimport { usePresentationItem } from \"../../composable/usePresentationItem\";\n\n//Props \nconst props = withDefaults(defineProps<{\n /**\n * ID of the organisation\n */\n organisationId?: string;\n /**\n * Title of the section\n */\n title?: string;\n /**\n * Link to the \"more\" section\n */\n href?: string;\n /**\n * Label for the \"more\" button\n */\n buttonText?: string;\n /**\n * Display podcasts exclusively from these rubriques\n */\n rubriquesId?: Array<number>;\n /**\n * Mode of retrieval for podcasts\n */\n retrievalMode?: 'by-emission'|'any';\n}>(), {\n retrievalMode: 'by-emission'\n});\n\n//Data \nconst loading = ref(true);\nconst error = ref(false);\nconst podcasts: Ref<Array<Podcast>> = ref([]);\nconst tags = reactive(new Map<number, Array<string>>());\nconst additionalInfo = reactive(new Map<number, Array<string>>());\n \n//Composables\nconst { isPhone } = useResizePhone();\nconst { handle403 } = useErrorHandler();\nconst { tagsFor, additionalInfoFor } = usePresentationItem();\n\nonMounted(fetchNext);\n\nwatch(podcasts, async () => {\n podcasts.value.forEach(async (podcast) => {\n if (!tags.has(podcast.podcastId)) {\n const [t, i] = await Promise.all([\n tagsFor(podcast),\n additionalInfoFor(podcast)\n ]);\n tags.set(podcast.podcastId, t);\n additionalInfo.set(podcast.podcastId, i);\n }\n });\n});\n\n//Methods\nasync function fetchNext(): Promise<void> {\n loading.value = true;\n try {\n let func: () => Promise<Array<Podcast>>;\n if (props.retrievalMode === 'any') {\n func = fetchPodcasts;\n } else {\n func = fetchPodcastsByEmission;\n }\n const result = await func();\n\n // Sort podcasts by pub date so that the most recent one is focused\n podcasts.value = result.sort((p1, p2) => {\n return new Date(p2.pubDate).getTime() - new Date(p1.pubDate).getTime();\n });\n \n loading.value = false;\n } catch (errorWs) {\n console.error(errorWs);\n handle403(errorWs as AxiosError);\n error.value = true;\n }\n loading.value = false;\n}\n\nasync function fetchPodcasts(): Promise<Array<Podcast>> {\n const response = await podcastApi.searchFull({\n first: 0,\n size: 5,\n organisationId: [props.organisationId],\n sort: PodcastSort.DATE,\n rubriqueId: props.rubriquesId\n }, true);\n\n return response.result;\n}\n\nasync function fetchPodcastsByEmission(): Promise<Array<Podcast>> {\n // Retrieve latest emissions\n const emissions = await classicApi.fetchData<ListClassicReturn<Emission>>({\n api: 0,\n path: \"emission/search\",\n parameters: {\n first: 0,\n size: 5,\n organisationId: props.organisationId,\n sort: \"LAST_PODCAST_DESC\",\n rubriqueId: props.rubriquesId\n },\n specialTreatement: true\n });\n\n const promises: Array<Promise<SimplifiedPodcast>> = [];\n\n for (let i = 0; i < emissions.result.length; i++) {\n promises.push(podcastApi.search({\n first: 0,\n size: 1,\n organisationId: [props.organisationId],\n emissionId: [emissions.result[i].emissionId],\n sort: PodcastSort.DATE,\n rubriqueId: props.rubriquesId\n }, true).then(r => r.result[0]));\n }\n\n // Retrieve the podcasts for these emissions\n const data = await Promise.all(promises);\n\n return data.filter((em: SimplifiedPodcast | null) => null !== em && undefined !== em).map(p => {\n // Get emission from podcast\n const emission = emissions.result.find(e => e.emissionId === p.emissionId);\n // Create full podcast from simplified + emission\n return simplifiedToFull(p, emission.orga, emission);\n });\n}\n\nfunction route(podcast: Podcast): RouteLocationRaw {\n return {\n name: 'podcast',\n params: { podcastId: podcast.podcastId }\n }\n}\n</script>\n","<!--\n Simple component to display a few podcasts\n-->\n<template>\n <PresentationLayout\n v-if=\"!loading && !error\"\n :title=\"title\"\n :items=\"podcasts\"\n :route=\"href\"\n :button-text=\"buttonText\"\n >\n <template #item=\"{ item, first }\">\n <PresentationItem\n :class=\"!isPhone && first ? 'me-3' : ''\"\n :name=\"item.title\"\n :route=\"route(item)\"\n :image-url=\"item.imageUrl\"\n :description=\"item.description\"\n :vertical=\"!isPhone && first\"\n :tags=\"tags.get(item.podcastId)\"\n :additional-info=\"additionalInfo.get(item.podcastId)\"\n >\n <template #after-image>\n <PodcastPlayButton\n :podcast=\"item\"\n :hide-play=\"false\"\n :show-processing=\"false\"\n />\n </template>\n </PresentationItem>\n </template>\n </PresentationLayout>\n <ClassicLoading\n v-else\n :loading-text=\"loading ? $t('Loading emissions ...') : undefined\"\n :error-text=\"error ? $t(`Error`) : undefined\"\n />\n</template>\n\n<script setup lang=\"ts\">\nimport classicApi from \"../../../api/classicApi\";\nimport {useErrorHandler} from \"../../composable/useErrorHandler\";\nimport ClassicLoading from \"../../form/ClassicLoading.vue\";\nimport { Emission } from \"@/stores/class/general/emission\";\nimport { onMounted, reactive, Ref, ref, watch } from \"vue\";\nimport { AxiosError } from \"axios\";\nimport {useResizePhone} from \"../../composable/useResizePhone\";\nimport { ListClassicReturn } from \"../../../stores/class/general/listReturn\";\n\nimport PresentationLayout from \"../../layouts/PresentationLayout.vue\"; \nimport { Podcast, SimplifiedPodcast, simplifiedToFull } from \"../../../stores/class/general/podcast\";\n\nimport PresentationItem from \"../../layouts/PresentationItem.vue\"; \nimport PodcastPlayButton from \"./PodcastPlayButton.vue\"; \nimport { RouteLocationRaw } from \"vue-router\";\nimport { podcastApi, PodcastSort } from \"../../../api/podcastApi\";\nimport { usePresentationItem } from \"../../composable/usePresentationItem\";\n\n//Props \nconst props = withDefaults(defineProps<{\n /**\n * ID of the organisation\n */\n organisationId?: string;\n /**\n * Title of the section\n */\n title?: string;\n /**\n * Link to the \"more\" section\n */\n href?: string;\n /**\n * Label for the \"more\" button\n */\n buttonText?: string;\n /**\n * Display podcasts exclusively from these rubriques\n */\n rubriquesId?: Array<number>;\n /**\n * Mode of retrieval for podcasts\n */\n retrievalMode?: 'by-emission'|'any';\n}>(), {\n retrievalMode: 'by-emission'\n});\n\n//Data \nconst loading = ref(true);\nconst error = ref(false);\nconst podcasts: Ref<Array<Podcast>> = ref([]);\nconst tags = reactive(new Map<number, Array<string>>());\nconst additionalInfo = reactive(new Map<number, Array<string>>());\n \n//Composables\nconst { isPhone } = useResizePhone();\nconst { handle403 } = useErrorHandler();\nconst { tagsFor, additionalInfoFor } = usePresentationItem();\n\nonMounted(fetchNext);\n\nwatch(podcasts, async () => {\n podcasts.value.forEach(async (podcast) => {\n if (!tags.has(podcast.podcastId)) {\n const [t, i] = await Promise.all([\n tagsFor(podcast),\n additionalInfoFor(podcast)\n ]);\n tags.set(podcast.podcastId, t);\n additionalInfo.set(podcast.podcastId, i);\n }\n });\n});\n\n//Methods\nasync function fetchNext(): Promise<void> {\n loading.value = true;\n try {\n let func: () => Promise<Array<Podcast>>;\n if (props.retrievalMode === 'any') {\n func = fetchPodcasts;\n } else {\n func = fetchPodcastsByEmission;\n }\n const result = await func();\n\n // Sort podcasts by pub date so that the most recent one is focused\n podcasts.value = result.sort((p1, p2) => {\n return new Date(p2.pubDate).getTime() - new Date(p1.pubDate).getTime();\n });\n \n loading.value = false;\n } catch (errorWs) {\n console.error(errorWs);\n handle403(errorWs as AxiosError);\n error.value = true;\n }\n loading.value = false;\n}\n\nasync function fetchPodcasts(): Promise<Array<Podcast>> {\n const response = await podcastApi.searchFull({\n first: 0,\n size: 5,\n organisationId: [props.organisationId],\n sort: PodcastSort.DATE,\n rubriqueId: props.rubriquesId\n }, true);\n\n return response.result;\n}\n\nasync function fetchPodcastsByEmission(): Promise<Array<Podcast>> {\n // Retrieve latest emissions\n const emissions = await classicApi.fetchData<ListClassicReturn<Emission>>({\n api: 0,\n path: \"emission/search\",\n parameters: {\n first: 0,\n size: 5,\n organisationId: props.organisationId,\n sort: \"LAST_PODCAST_DESC\",\n rubriqueId: props.rubriquesId\n },\n specialTreatement: true\n });\n\n const promises: Array<Promise<SimplifiedPodcast>> = [];\n\n for (let i = 0; i < emissions.result.length; i++) {\n promises.push(podcastApi.search({\n first: 0,\n size: 1,\n organisationId: [props.organisationId],\n emissionId: [emissions.result[i].emissionId],\n sort: PodcastSort.DATE,\n rubriqueId: props.rubriquesId\n }, true).then(r => r.result[0]));\n }\n\n // Retrieve the podcasts for these emissions\n const data = await Promise.all(promises);\n\n return data.filter((em: SimplifiedPodcast | null) => null !== em && undefined !== em).map(p => {\n // Get emission from podcast\n const emission = emissions.result.find(e => e.emissionId === p.emissionId);\n // Create full podcast from simplified + emission\n return simplifiedToFull(p, emission.orga, emission);\n });\n}\n\nfunction route(podcast: Podcast): RouteLocationRaw {\n return {\n name: 'podcast',\n params: { podcastId: podcast.podcastId }\n }\n}\n</script>\n"],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"PodcastPresentationList-C0n-xr5w.mjs","names":[],"sources":["../src/components/display/podcasts/PodcastPresentationList.vue","../src/components/display/podcasts/PodcastPresentationList.vue"],"sourcesContent":["<!--\n Simple component to display a few podcasts\n-->\n<template>\n <PresentationLayout\n v-if=\"!loading && !error\"\n :title=\"title\"\n :items=\"podcasts\"\n :route=\"href\"\n :button-text=\"buttonText\"\n >\n <template #item=\"{ item, first }\">\n <PresentationItem\n :class=\"!isPhone && first ? 'me-3' : ''\"\n :name=\"item.title\"\n :route=\"route(item)\"\n :image-url=\"item.imageUrl\"\n :description=\"item.description\"\n :vertical=\"!isPhone && first\"\n :tags=\"tags.get(item.podcastId)\"\n :additional-info=\"additionalInfo.get(item.podcastId)\"\n >\n <template #after-image>\n <PodcastPlayButton\n :podcast=\"item\"\n :hide-play=\"false\"\n :show-processing=\"false\"\n />\n </template>\n </PresentationItem>\n </template>\n </PresentationLayout>\n <ClassicLoading\n v-else\n :loading-text=\"loading ? $t('Loading emissions ...') : undefined\"\n :error-text=\"error ? $t(`Error`) : undefined\"\n />\n</template>\n\n<script setup lang=\"ts\">\nimport classicApi from \"../../../api/classicApi\";\nimport {useErrorHandler} from \"../../composable/useErrorHandler\";\nimport ClassicLoading from \"../../form/ClassicLoading.vue\";\nimport { Emission } from \"@/stores/class/general/emission\";\nimport { onMounted, reactive, Ref, ref, watch } from \"vue\";\nimport { AxiosError } from \"axios\";\nimport {useResizePhone} from \"../../composable/useResizePhone\";\nimport { ListClassicReturn } from \"../../../stores/class/general/listReturn\";\n\nimport PresentationLayout from \"../../layouts/PresentationLayout.vue\"; \nimport { Podcast, SimplifiedPodcast, simplifiedToFull } from \"../../../stores/class/general/podcast\";\n\nimport PresentationItem from \"../../layouts/PresentationItem.vue\"; \nimport PodcastPlayButton from \"./PodcastPlayButton.vue\"; \nimport { RouteLocationRaw } from \"vue-router\";\nimport { podcastApi, PodcastSort } from \"../../../api/podcastApi\";\nimport { usePresentationItem } from \"../../composable/usePresentationItem\";\n\n//Props \nconst props = withDefaults(defineProps<{\n /**\n * ID of the organisation\n */\n organisationId?: string;\n /**\n * Title of the section\n */\n title?: string;\n /**\n * Link to the \"more\" section\n */\n href?: string;\n /**\n * Label for the \"more\" button\n */\n buttonText?: string;\n /**\n * Display podcasts exclusively from these rubriques\n */\n rubriquesId?: Array<number>;\n /**\n * Mode of retrieval for podcasts\n */\n retrievalMode?: 'by-emission'|'any';\n}>(), {\n retrievalMode: 'by-emission'\n});\n\n//Data \nconst loading = ref(true);\nconst error = ref(false);\nconst podcasts: Ref<Array<Podcast>> = ref([]);\nconst tags = reactive(new Map<number, Array<string>>());\nconst additionalInfo = reactive(new Map<number, Array<string>>());\n \n//Composables\nconst { isPhone } = useResizePhone();\nconst { handle403 } = useErrorHandler();\nconst { tagsFor, additionalInfoFor } = usePresentationItem();\n\nonMounted(fetchNext);\n\nwatch(podcasts, async () => {\n podcasts.value.forEach(async (podcast) => {\n if (!tags.has(podcast.podcastId)) {\n const [t, i] = await Promise.all([\n tagsFor(podcast),\n additionalInfoFor(podcast)\n ]);\n tags.set(podcast.podcastId, t);\n additionalInfo.set(podcast.podcastId, i);\n }\n });\n});\n\n//Methods\nasync function fetchNext(): Promise<void> {\n loading.value = true;\n try {\n let func: () => Promise<Array<Podcast>>;\n if (props.retrievalMode === 'any') {\n func = fetchPodcasts;\n } else {\n func = fetchPodcastsByEmission;\n }\n const result = await func();\n\n // Sort podcasts by pub date so that the most recent one is focused\n podcasts.value = result.sort((p1, p2) => {\n return new Date(p2.pubDate).getTime() - new Date(p1.pubDate).getTime();\n });\n \n loading.value = false;\n } catch (errorWs) {\n console.error(errorWs);\n handle403(errorWs as AxiosError);\n error.value = true;\n }\n loading.value = false;\n}\n\nasync function fetchPodcasts(): Promise<Array<Podcast>> {\n const response = await podcastApi.searchFull({\n first: 0,\n size: 5,\n organisationId: [props.organisationId],\n sort: PodcastSort.DATE,\n rubriqueId: props.rubriquesId\n }, true);\n\n return response.result;\n}\n\nasync function fetchPodcastsByEmission(): Promise<Array<Podcast>> {\n // Retrieve latest emissions\n const emissions = await classicApi.fetchData<ListClassicReturn<Emission>>({\n api: 0,\n path: \"emission/search\",\n parameters: {\n first: 0,\n size: 5,\n organisationId: props.organisationId,\n sort: \"LAST_PODCAST_DESC\",\n rubriqueId: props.rubriquesId\n },\n specialTreatement: true\n });\n\n const promises: Array<Promise<SimplifiedPodcast>> = [];\n\n for (let i = 0; i < emissions.result.length; i++) {\n promises.push(podcastApi.search({\n first: 0,\n size: 1,\n organisationId: [props.organisationId],\n emissionId: [emissions.result[i].emissionId],\n sort: PodcastSort.DATE,\n rubriqueId: props.rubriquesId\n }, true).then(r => r.result[0]));\n }\n\n // Retrieve the podcasts for these emissions\n const data = await Promise.all(promises);\n\n return data.filter((em: SimplifiedPodcast | null) => null !== em && undefined !== em).map(p => {\n // Get emission from podcast\n const emission = emissions.result.find(e => e.emissionId === p.emissionId);\n // Create full podcast from simplified + emission\n return simplifiedToFull(p, emission.orga, emission);\n });\n}\n\nfunction route(podcast: Podcast): RouteLocationRaw {\n return {\n name: 'podcast',\n params: { podcastId: podcast.podcastId }\n }\n}\n</script>\n","<!--\n Simple component to display a few podcasts\n-->\n<template>\n <PresentationLayout\n v-if=\"!loading && !error\"\n :title=\"title\"\n :items=\"podcasts\"\n :route=\"href\"\n :button-text=\"buttonText\"\n >\n <template #item=\"{ item, first }\">\n <PresentationItem\n :class=\"!isPhone && first ? 'me-3' : ''\"\n :name=\"item.title\"\n :route=\"route(item)\"\n :image-url=\"item.imageUrl\"\n :description=\"item.description\"\n :vertical=\"!isPhone && first\"\n :tags=\"tags.get(item.podcastId)\"\n :additional-info=\"additionalInfo.get(item.podcastId)\"\n >\n <template #after-image>\n <PodcastPlayButton\n :podcast=\"item\"\n :hide-play=\"false\"\n :show-processing=\"false\"\n />\n </template>\n </PresentationItem>\n </template>\n </PresentationLayout>\n <ClassicLoading\n v-else\n :loading-text=\"loading ? $t('Loading emissions ...') : undefined\"\n :error-text=\"error ? $t(`Error`) : undefined\"\n />\n</template>\n\n<script setup lang=\"ts\">\nimport classicApi from \"../../../api/classicApi\";\nimport {useErrorHandler} from \"../../composable/useErrorHandler\";\nimport ClassicLoading from \"../../form/ClassicLoading.vue\";\nimport { Emission } from \"@/stores/class/general/emission\";\nimport { onMounted, reactive, Ref, ref, watch } from \"vue\";\nimport { AxiosError } from \"axios\";\nimport {useResizePhone} from \"../../composable/useResizePhone\";\nimport { ListClassicReturn } from \"../../../stores/class/general/listReturn\";\n\nimport PresentationLayout from \"../../layouts/PresentationLayout.vue\"; \nimport { Podcast, SimplifiedPodcast, simplifiedToFull } from \"../../../stores/class/general/podcast\";\n\nimport PresentationItem from \"../../layouts/PresentationItem.vue\"; \nimport PodcastPlayButton from \"./PodcastPlayButton.vue\"; \nimport { RouteLocationRaw } from \"vue-router\";\nimport { podcastApi, PodcastSort } from \"../../../api/podcastApi\";\nimport { usePresentationItem } from \"../../composable/usePresentationItem\";\n\n//Props \nconst props = withDefaults(defineProps<{\n /**\n * ID of the organisation\n */\n organisationId?: string;\n /**\n * Title of the section\n */\n title?: string;\n /**\n * Link to the \"more\" section\n */\n href?: string;\n /**\n * Label for the \"more\" button\n */\n buttonText?: string;\n /**\n * Display podcasts exclusively from these rubriques\n */\n rubriquesId?: Array<number>;\n /**\n * Mode of retrieval for podcasts\n */\n retrievalMode?: 'by-emission'|'any';\n}>(), {\n retrievalMode: 'by-emission'\n});\n\n//Data \nconst loading = ref(true);\nconst error = ref(false);\nconst podcasts: Ref<Array<Podcast>> = ref([]);\nconst tags = reactive(new Map<number, Array<string>>());\nconst additionalInfo = reactive(new Map<number, Array<string>>());\n \n//Composables\nconst { isPhone } = useResizePhone();\nconst { handle403 } = useErrorHandler();\nconst { tagsFor, additionalInfoFor } = usePresentationItem();\n\nonMounted(fetchNext);\n\nwatch(podcasts, async () => {\n podcasts.value.forEach(async (podcast) => {\n if (!tags.has(podcast.podcastId)) {\n const [t, i] = await Promise.all([\n tagsFor(podcast),\n additionalInfoFor(podcast)\n ]);\n tags.set(podcast.podcastId, t);\n additionalInfo.set(podcast.podcastId, i);\n }\n });\n});\n\n//Methods\nasync function fetchNext(): Promise<void> {\n loading.value = true;\n try {\n let func: () => Promise<Array<Podcast>>;\n if (props.retrievalMode === 'any') {\n func = fetchPodcasts;\n } else {\n func = fetchPodcastsByEmission;\n }\n const result = await func();\n\n // Sort podcasts by pub date so that the most recent one is focused\n podcasts.value = result.sort((p1, p2) => {\n return new Date(p2.pubDate).getTime() - new Date(p1.pubDate).getTime();\n });\n \n loading.value = false;\n } catch (errorWs) {\n console.error(errorWs);\n handle403(errorWs as AxiosError);\n error.value = true;\n }\n loading.value = false;\n}\n\nasync function fetchPodcasts(): Promise<Array<Podcast>> {\n const response = await podcastApi.searchFull({\n first: 0,\n size: 5,\n organisationId: [props.organisationId],\n sort: PodcastSort.DATE,\n rubriqueId: props.rubriquesId\n }, true);\n\n return response.result;\n}\n\nasync function fetchPodcastsByEmission(): Promise<Array<Podcast>> {\n // Retrieve latest emissions\n const emissions = await classicApi.fetchData<ListClassicReturn<Emission>>({\n api: 0,\n path: \"emission/search\",\n parameters: {\n first: 0,\n size: 5,\n organisationId: props.organisationId,\n sort: \"LAST_PODCAST_DESC\",\n rubriqueId: props.rubriquesId\n },\n specialTreatement: true\n });\n\n const promises: Array<Promise<SimplifiedPodcast>> = [];\n\n for (let i = 0; i < emissions.result.length; i++) {\n promises.push(podcastApi.search({\n first: 0,\n size: 1,\n organisationId: [props.organisationId],\n emissionId: [emissions.result[i].emissionId],\n sort: PodcastSort.DATE,\n rubriqueId: props.rubriquesId\n }, true).then(r => r.result[0]));\n }\n\n // Retrieve the podcasts for these emissions\n const data = await Promise.all(promises);\n\n return data.filter((em: SimplifiedPodcast | null) => null !== em && undefined !== em).map(p => {\n // Get emission from podcast\n const emission = emissions.result.find(e => e.emissionId === p.emissionId);\n // Create full podcast from simplified + emission\n return simplifiedToFull(p, emission.orga, emission);\n });\n}\n\nfunction route(podcast: Podcast): RouteLocationRaw {\n return {\n name: 'podcast',\n params: { podcastId: podcast.podcastId }\n }\n}\n</script>\n"],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"PodcastPresentationList-CnrMkINf.mjs","names":[],"sources":["../src/components/display/podcasts/PodcastPresentationList.vue","../src/components/display/podcasts/PodcastPresentationList.vue"],"sourcesContent":["<!--\n Simple component to display a few podcasts\n-->\n<template>\n <PresentationLayout\n v-if=\"!loading && !error\"\n :title=\"title\"\n :items=\"podcasts\"\n :route=\"href\"\n :button-text=\"buttonText\"\n >\n <template #item=\"{ item, first }\">\n <PresentationItem\n :class=\"!isPhone && first ? 'me-3' : ''\"\n :name=\"item.title\"\n :route=\"route(item)\"\n :image-url=\"item.imageUrl\"\n :description=\"item.description\"\n :vertical=\"!isPhone && first\"\n :tags=\"tags.get(item.podcastId)\"\n :additional-info=\"additionalInfo.get(item.podcastId)\"\n >\n <template #after-image>\n <PodcastPlayButton\n :podcast=\"item\"\n :hide-play=\"false\"\n :show-processing=\"false\"\n />\n </template>\n </PresentationItem>\n </template>\n </PresentationLayout>\n <ClassicLoading\n v-else\n :loading-text=\"loading ? $t('Loading emissions ...') : undefined\"\n :error-text=\"error ? $t(`Error`) : undefined\"\n />\n</template>\n\n<script setup lang=\"ts\">\nimport classicApi from \"../../../api/classicApi\";\nimport {useErrorHandler} from \"../../composable/useErrorHandler\";\nimport ClassicLoading from \"../../form/ClassicLoading.vue\";\nimport { Emission } from \"@/stores/class/general/emission\";\nimport { onMounted, reactive, Ref, ref, watch } from \"vue\";\nimport { AxiosError } from \"axios\";\nimport {useResizePhone} from \"../../composable/useResizePhone\";\nimport { ListClassicReturn } from \"../../../stores/class/general/listReturn\";\n\nimport PresentationLayout from \"../../layouts/PresentationLayout.vue\"; \nimport { Podcast, SimplifiedPodcast, simplifiedToFull } from \"../../../stores/class/general/podcast\";\n\nimport PresentationItem from \"../../layouts/PresentationItem.vue\"; \nimport PodcastPlayButton from \"./PodcastPlayButton.vue\"; \nimport { RouteLocationRaw } from \"vue-router\";\nimport { podcastApi, PodcastSort } from \"../../../api/podcastApi\";\nimport { usePresentationItem } from \"../../composable/usePresentationItem\";\n\n//Props \nconst props = withDefaults(defineProps<{\n /**\n * ID of the organisation\n */\n organisationId?: string;\n /**\n * Title of the section\n */\n title?: string;\n /**\n * Link to the \"more\" section\n */\n href?: string;\n /**\n * Label for the \"more\" button\n */\n buttonText?: string;\n /**\n * Display podcasts exclusively from these rubriques\n */\n rubriquesId?: Array<number>;\n /**\n * Mode of retrieval for podcasts\n */\n retrievalMode?: 'by-emission'|'any';\n}>(), {\n retrievalMode: 'by-emission'\n});\n\n//Data \nconst loading = ref(true);\nconst error = ref(false);\nconst podcasts: Ref<Array<Podcast>> = ref([]);\nconst tags = reactive(new Map<number, Array<string>>());\nconst additionalInfo = reactive(new Map<number, Array<string>>());\n \n//Composables\nconst { isPhone } = useResizePhone();\nconst { handle403 } = useErrorHandler();\nconst { tagsFor, additionalInfoFor } = usePresentationItem();\n\nonMounted(fetchNext);\n\nwatch(podcasts, async () => {\n podcasts.value.forEach(async (podcast) => {\n if (!tags.has(podcast.podcastId)) {\n const [t, i] = await Promise.all([\n tagsFor(podcast),\n additionalInfoFor(podcast)\n ]);\n tags.set(podcast.podcastId, t);\n additionalInfo.set(podcast.podcastId, i);\n }\n });\n});\n\n//Methods\nasync function fetchNext(): Promise<void> {\n loading.value = true;\n try {\n let func: () => Promise<Array<Podcast>>;\n if (props.retrievalMode === 'any') {\n func = fetchPodcasts;\n } else {\n func = fetchPodcastsByEmission;\n }\n const result = await func();\n\n // Sort podcasts by pub date so that the most recent one is focused\n podcasts.value = result.sort((p1, p2) => {\n return new Date(p2.pubDate).getTime() - new Date(p1.pubDate).getTime();\n });\n \n loading.value = false;\n } catch (errorWs) {\n console.error(errorWs);\n handle403(errorWs as AxiosError);\n error.value = true;\n }\n loading.value = false;\n}\n\nasync function fetchPodcasts(): Promise<Array<Podcast>> {\n const response = await podcastApi.searchFull({\n first: 0,\n size: 5,\n organisationId: [props.organisationId],\n sort: PodcastSort.DATE,\n rubriqueId: props.rubriquesId\n }, true);\n\n return response.result;\n}\n\nasync function fetchPodcastsByEmission(): Promise<Array<Podcast>> {\n // Retrieve latest emissions\n const emissions = await classicApi.fetchData<ListClassicReturn<Emission>>({\n api: 0,\n path: \"emission/search\",\n parameters: {\n first: 0,\n size: 5,\n organisationId: props.organisationId,\n sort: \"LAST_PODCAST_DESC\",\n rubriqueId: props.rubriquesId\n },\n specialTreatement: true\n });\n\n const promises: Array<Promise<SimplifiedPodcast>> = [];\n\n for (let i = 0; i < emissions.result.length; i++) {\n promises.push(podcastApi.search({\n first: 0,\n size: 1,\n organisationId: [props.organisationId],\n emissionId: [emissions.result[i].emissionId],\n sort: PodcastSort.DATE,\n rubriqueId: props.rubriquesId\n }, true).then(r => r.result[0]));\n }\n\n // Retrieve the podcasts for these emissions\n const data = await Promise.all(promises);\n\n return data.filter((em: SimplifiedPodcast | null) => null !== em && undefined !== em).map(p => {\n // Get emission from podcast\n const emission = emissions.result.find(e => e.emissionId === p.emissionId);\n // Create full podcast from simplified + emission\n return simplifiedToFull(p, emission.orga, emission);\n });\n}\n\nfunction route(podcast: Podcast): RouteLocationRaw {\n return {\n name: 'podcast',\n params: { podcastId: podcast.podcastId }\n }\n}\n</script>\n","<!--\n Simple component to display a few podcasts\n-->\n<template>\n <PresentationLayout\n v-if=\"!loading && !error\"\n :title=\"title\"\n :items=\"podcasts\"\n :route=\"href\"\n :button-text=\"buttonText\"\n >\n <template #item=\"{ item, first }\">\n <PresentationItem\n :class=\"!isPhone && first ? 'me-3' : ''\"\n :name=\"item.title\"\n :route=\"route(item)\"\n :image-url=\"item.imageUrl\"\n :description=\"item.description\"\n :vertical=\"!isPhone && first\"\n :tags=\"tags.get(item.podcastId)\"\n :additional-info=\"additionalInfo.get(item.podcastId)\"\n >\n <template #after-image>\n <PodcastPlayButton\n :podcast=\"item\"\n :hide-play=\"false\"\n :show-processing=\"false\"\n />\n </template>\n </PresentationItem>\n </template>\n </PresentationLayout>\n <ClassicLoading\n v-else\n :loading-text=\"loading ? $t('Loading emissions ...') : undefined\"\n :error-text=\"error ? $t(`Error`) : undefined\"\n />\n</template>\n\n<script setup lang=\"ts\">\nimport classicApi from \"../../../api/classicApi\";\nimport {useErrorHandler} from \"../../composable/useErrorHandler\";\nimport ClassicLoading from \"../../form/ClassicLoading.vue\";\nimport { Emission } from \"@/stores/class/general/emission\";\nimport { onMounted, reactive, Ref, ref, watch } from \"vue\";\nimport { AxiosError } from \"axios\";\nimport {useResizePhone} from \"../../composable/useResizePhone\";\nimport { ListClassicReturn } from \"../../../stores/class/general/listReturn\";\n\nimport PresentationLayout from \"../../layouts/PresentationLayout.vue\"; \nimport { Podcast, SimplifiedPodcast, simplifiedToFull } from \"../../../stores/class/general/podcast\";\n\nimport PresentationItem from \"../../layouts/PresentationItem.vue\"; \nimport PodcastPlayButton from \"./PodcastPlayButton.vue\"; \nimport { RouteLocationRaw } from \"vue-router\";\nimport { podcastApi, PodcastSort } from \"../../../api/podcastApi\";\nimport { usePresentationItem } from \"../../composable/usePresentationItem\";\n\n//Props \nconst props = withDefaults(defineProps<{\n /**\n * ID of the organisation\n */\n organisationId?: string;\n /**\n * Title of the section\n */\n title?: string;\n /**\n * Link to the \"more\" section\n */\n href?: string;\n /**\n * Label for the \"more\" button\n */\n buttonText?: string;\n /**\n * Display podcasts exclusively from these rubriques\n */\n rubriquesId?: Array<number>;\n /**\n * Mode of retrieval for podcasts\n */\n retrievalMode?: 'by-emission'|'any';\n}>(), {\n retrievalMode: 'by-emission'\n});\n\n//Data \nconst loading = ref(true);\nconst error = ref(false);\nconst podcasts: Ref<Array<Podcast>> = ref([]);\nconst tags = reactive(new Map<number, Array<string>>());\nconst additionalInfo = reactive(new Map<number, Array<string>>());\n \n//Composables\nconst { isPhone } = useResizePhone();\nconst { handle403 } = useErrorHandler();\nconst { tagsFor, additionalInfoFor } = usePresentationItem();\n\nonMounted(fetchNext);\n\nwatch(podcasts, async () => {\n podcasts.value.forEach(async (podcast) => {\n if (!tags.has(podcast.podcastId)) {\n const [t, i] = await Promise.all([\n tagsFor(podcast),\n additionalInfoFor(podcast)\n ]);\n tags.set(podcast.podcastId, t);\n additionalInfo.set(podcast.podcastId, i);\n }\n });\n});\n\n//Methods\nasync function fetchNext(): Promise<void> {\n loading.value = true;\n try {\n let func: () => Promise<Array<Podcast>>;\n if (props.retrievalMode === 'any') {\n func = fetchPodcasts;\n } else {\n func = fetchPodcastsByEmission;\n }\n const result = await func();\n\n // Sort podcasts by pub date so that the most recent one is focused\n podcasts.value = result.sort((p1, p2) => {\n return new Date(p2.pubDate).getTime() - new Date(p1.pubDate).getTime();\n });\n \n loading.value = false;\n } catch (errorWs) {\n console.error(errorWs);\n handle403(errorWs as AxiosError);\n error.value = true;\n }\n loading.value = false;\n}\n\nasync function fetchPodcasts(): Promise<Array<Podcast>> {\n const response = await podcastApi.searchFull({\n first: 0,\n size: 5,\n organisationId: [props.organisationId],\n sort: PodcastSort.DATE,\n rubriqueId: props.rubriquesId\n }, true);\n\n return response.result;\n}\n\nasync function fetchPodcastsByEmission(): Promise<Array<Podcast>> {\n // Retrieve latest emissions\n const emissions = await classicApi.fetchData<ListClassicReturn<Emission>>({\n api: 0,\n path: \"emission/search\",\n parameters: {\n first: 0,\n size: 5,\n organisationId: props.organisationId,\n sort: \"LAST_PODCAST_DESC\",\n rubriqueId: props.rubriquesId\n },\n specialTreatement: true\n });\n\n const promises: Array<Promise<SimplifiedPodcast>> = [];\n\n for (let i = 0; i < emissions.result.length; i++) {\n promises.push(podcastApi.search({\n first: 0,\n size: 1,\n organisationId: [props.organisationId],\n emissionId: [emissions.result[i].emissionId],\n sort: PodcastSort.DATE,\n rubriqueId: props.rubriquesId\n }, true).then(r => r.result[0]));\n }\n\n // Retrieve the podcasts for these emissions\n const data = await Promise.all(promises);\n\n return data.filter((em: SimplifiedPodcast | null) => null !== em && undefined !== em).map(p => {\n // Get emission from podcast\n const emission = emissions.result.find(e => e.emissionId === p.emissionId);\n // Create full podcast from simplified + emission\n return simplifiedToFull(p, emission.orga, emission);\n });\n}\n\nfunction route(podcast: Podcast): RouteLocationRaw {\n return {\n name: 'podcast',\n params: { podcastId: podcast.podcastId }\n }\n}\n</script>\n"],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"PodcastPresentationList-DC-Oi_eK.mjs","names":[],"sources":["../src/components/display/podcasts/PodcastPresentationList.vue","../src/components/display/podcasts/PodcastPresentationList.vue"],"sourcesContent":["<!--\n Simple component to display a few podcasts\n-->\n<template>\n <PresentationLayout\n v-if=\"!loading && !error\"\n :title=\"title\"\n :items=\"podcasts\"\n :route=\"href\"\n :button-text=\"buttonText\"\n >\n <template #item=\"{ item, first }\">\n <PresentationItem\n :class=\"!isPhone && first ? 'me-3' : ''\"\n :name=\"item.title\"\n :route=\"route(item)\"\n :image-url=\"item.imageUrl\"\n :description=\"item.description\"\n :vertical=\"!isPhone && first\"\n :tags=\"tags.get(item.podcastId)\"\n :additional-info=\"additionalInfo.get(item.podcastId)\"\n >\n <template #after-image>\n <PodcastPlayButton\n :podcast=\"item\"\n :hide-play=\"false\"\n :show-processing=\"false\"\n />\n </template>\n </PresentationItem>\n </template>\n </PresentationLayout>\n <ClassicLoading\n v-else\n :loading-text=\"loading ? $t('Loading emissions ...') : undefined\"\n :error-text=\"error ? $t(`Error`) : undefined\"\n />\n</template>\n\n<script setup lang=\"ts\">\nimport classicApi from \"../../../api/classicApi\";\nimport {useErrorHandler} from \"../../composable/useErrorHandler\";\nimport ClassicLoading from \"../../form/ClassicLoading.vue\";\nimport { Emission } from \"@/stores/class/general/emission\";\nimport { onMounted, reactive, Ref, ref, watch } from \"vue\";\nimport { AxiosError } from \"axios\";\nimport {useResizePhone} from \"../../composable/useResizePhone\";\nimport { ListClassicReturn } from \"../../../stores/class/general/listReturn\";\n\nimport PresentationLayout from \"../../layouts/PresentationLayout.vue\"; \nimport { Podcast, SimplifiedPodcast, simplifiedToFull } from \"../../../stores/class/general/podcast\";\n\nimport PresentationItem from \"../../layouts/PresentationItem.vue\"; \nimport PodcastPlayButton from \"./PodcastPlayButton.vue\"; \nimport { RouteLocationRaw } from \"vue-router\";\nimport { podcastApi, PodcastSort } from \"../../../api/podcastApi\";\nimport { usePresentationItem } from \"../../composable/usePresentationItem\";\n\n//Props \nconst props = withDefaults(defineProps<{\n /**\n * ID of the organisation\n */\n organisationId?: string;\n /**\n * Title of the section\n */\n title?: string;\n /**\n * Link to the \"more\" section\n */\n href?: string;\n /**\n * Label for the \"more\" button\n */\n buttonText?: string;\n /**\n * Display podcasts exclusively from these rubriques\n */\n rubriquesId?: Array<number>;\n /**\n * Mode of retrieval for podcasts\n */\n retrievalMode?: 'by-emission'|'any';\n}>(), {\n retrievalMode: 'by-emission'\n});\n\n//Data \nconst loading = ref(true);\nconst error = ref(false);\nconst podcasts: Ref<Array<Podcast>> = ref([]);\nconst tags = reactive(new Map<number, Array<string>>());\nconst additionalInfo = reactive(new Map<number, Array<string>>());\n \n//Composables\nconst { isPhone } = useResizePhone();\nconst { handle403 } = useErrorHandler();\nconst { tagsFor, additionalInfoFor } = usePresentationItem();\n\nonMounted(fetchNext);\n\nwatch(podcasts, async () => {\n podcasts.value.forEach(async (podcast) => {\n if (!tags.has(podcast.podcastId)) {\n const [t, i] = await Promise.all([\n tagsFor(podcast),\n additionalInfoFor(podcast)\n ]);\n tags.set(podcast.podcastId, t);\n additionalInfo.set(podcast.podcastId, i);\n }\n });\n});\n\n//Methods\nasync function fetchNext(): Promise<void> {\n loading.value = true;\n try {\n let func: () => Promise<Array<Podcast>>;\n if (props.retrievalMode === 'any') {\n func = fetchPodcasts;\n } else {\n func = fetchPodcastsByEmission;\n }\n const result = await func();\n\n // Sort podcasts by pub date so that the most recent one is focused\n podcasts.value = result.sort((p1, p2) => {\n return new Date(p2.pubDate).getTime() - new Date(p1.pubDate).getTime();\n });\n \n loading.value = false;\n } catch (errorWs) {\n console.error(errorWs);\n handle403(errorWs as AxiosError);\n error.value = true;\n }\n loading.value = false;\n}\n\nasync function fetchPodcasts(): Promise<Array<Podcast>> {\n const response = await podcastApi.searchFull({\n first: 0,\n size: 5,\n organisationId: [props.organisationId],\n sort: PodcastSort.DATE,\n rubriqueId: props.rubriquesId\n }, true);\n\n return response.result;\n}\n\nasync function fetchPodcastsByEmission(): Promise<Array<Podcast>> {\n // Retrieve latest emissions\n const emissions = await classicApi.fetchData<ListClassicReturn<Emission>>({\n api: 0,\n path: \"emission/search\",\n parameters: {\n first: 0,\n size: 5,\n organisationId: props.organisationId,\n sort: \"LAST_PODCAST_DESC\",\n rubriqueId: props.rubriquesId\n },\n specialTreatement: true\n });\n\n const promises: Array<Promise<SimplifiedPodcast>> = [];\n\n for (let i = 0; i < emissions.result.length; i++) {\n promises.push(podcastApi.search({\n first: 0,\n size: 1,\n organisationId: [props.organisationId],\n emissionId: [emissions.result[i].emissionId],\n sort: PodcastSort.DATE,\n rubriqueId: props.rubriquesId\n }, true).then(r => r.result[0]));\n }\n\n // Retrieve the podcasts for these emissions\n const data = await Promise.all(promises);\n\n return data.filter((em: SimplifiedPodcast | null) => null !== em && undefined !== em).map(p => {\n // Get emission from podcast\n const emission = emissions.result.find(e => e.emissionId === p.emissionId);\n // Create full podcast from simplified + emission\n return simplifiedToFull(p, emission.orga, emission);\n });\n}\n\nfunction route(podcast: Podcast): RouteLocationRaw {\n return {\n name: 'podcast',\n params: { podcastId: podcast.podcastId }\n }\n}\n</script>\n","<!--\n Simple component to display a few podcasts\n-->\n<template>\n <PresentationLayout\n v-if=\"!loading && !error\"\n :title=\"title\"\n :items=\"podcasts\"\n :route=\"href\"\n :button-text=\"buttonText\"\n >\n <template #item=\"{ item, first }\">\n <PresentationItem\n :class=\"!isPhone && first ? 'me-3' : ''\"\n :name=\"item.title\"\n :route=\"route(item)\"\n :image-url=\"item.imageUrl\"\n :description=\"item.description\"\n :vertical=\"!isPhone && first\"\n :tags=\"tags.get(item.podcastId)\"\n :additional-info=\"additionalInfo.get(item.podcastId)\"\n >\n <template #after-image>\n <PodcastPlayButton\n :podcast=\"item\"\n :hide-play=\"false\"\n :show-processing=\"false\"\n />\n </template>\n </PresentationItem>\n </template>\n </PresentationLayout>\n <ClassicLoading\n v-else\n :loading-text=\"loading ? $t('Loading emissions ...') : undefined\"\n :error-text=\"error ? $t(`Error`) : undefined\"\n />\n</template>\n\n<script setup lang=\"ts\">\nimport classicApi from \"../../../api/classicApi\";\nimport {useErrorHandler} from \"../../composable/useErrorHandler\";\nimport ClassicLoading from \"../../form/ClassicLoading.vue\";\nimport { Emission } from \"@/stores/class/general/emission\";\nimport { onMounted, reactive, Ref, ref, watch } from \"vue\";\nimport { AxiosError } from \"axios\";\nimport {useResizePhone} from \"../../composable/useResizePhone\";\nimport { ListClassicReturn } from \"../../../stores/class/general/listReturn\";\n\nimport PresentationLayout from \"../../layouts/PresentationLayout.vue\"; \nimport { Podcast, SimplifiedPodcast, simplifiedToFull } from \"../../../stores/class/general/podcast\";\n\nimport PresentationItem from \"../../layouts/PresentationItem.vue\"; \nimport PodcastPlayButton from \"./PodcastPlayButton.vue\"; \nimport { RouteLocationRaw } from \"vue-router\";\nimport { podcastApi, PodcastSort } from \"../../../api/podcastApi\";\nimport { usePresentationItem } from \"../../composable/usePresentationItem\";\n\n//Props \nconst props = withDefaults(defineProps<{\n /**\n * ID of the organisation\n */\n organisationId?: string;\n /**\n * Title of the section\n */\n title?: string;\n /**\n * Link to the \"more\" section\n */\n href?: string;\n /**\n * Label for the \"more\" button\n */\n buttonText?: string;\n /**\n * Display podcasts exclusively from these rubriques\n */\n rubriquesId?: Array<number>;\n /**\n * Mode of retrieval for podcasts\n */\n retrievalMode?: 'by-emission'|'any';\n}>(), {\n retrievalMode: 'by-emission'\n});\n\n//Data \nconst loading = ref(true);\nconst error = ref(false);\nconst podcasts: Ref<Array<Podcast>> = ref([]);\nconst tags = reactive(new Map<number, Array<string>>());\nconst additionalInfo = reactive(new Map<number, Array<string>>());\n \n//Composables\nconst { isPhone } = useResizePhone();\nconst { handle403 } = useErrorHandler();\nconst { tagsFor, additionalInfoFor } = usePresentationItem();\n\nonMounted(fetchNext);\n\nwatch(podcasts, async () => {\n podcasts.value.forEach(async (podcast) => {\n if (!tags.has(podcast.podcastId)) {\n const [t, i] = await Promise.all([\n tagsFor(podcast),\n additionalInfoFor(podcast)\n ]);\n tags.set(podcast.podcastId, t);\n additionalInfo.set(podcast.podcastId, i);\n }\n });\n});\n\n//Methods\nasync function fetchNext(): Promise<void> {\n loading.value = true;\n try {\n let func: () => Promise<Array<Podcast>>;\n if (props.retrievalMode === 'any') {\n func = fetchPodcasts;\n } else {\n func = fetchPodcastsByEmission;\n }\n const result = await func();\n\n // Sort podcasts by pub date so that the most recent one is focused\n podcasts.value = result.sort((p1, p2) => {\n return new Date(p2.pubDate).getTime() - new Date(p1.pubDate).getTime();\n });\n \n loading.value = false;\n } catch (errorWs) {\n console.error(errorWs);\n handle403(errorWs as AxiosError);\n error.value = true;\n }\n loading.value = false;\n}\n\nasync function fetchPodcasts(): Promise<Array<Podcast>> {\n const response = await podcastApi.searchFull({\n first: 0,\n size: 5,\n organisationId: [props.organisationId],\n sort: PodcastSort.DATE,\n rubriqueId: props.rubriquesId\n }, true);\n\n return response.result;\n}\n\nasync function fetchPodcastsByEmission(): Promise<Array<Podcast>> {\n // Retrieve latest emissions\n const emissions = await classicApi.fetchData<ListClassicReturn<Emission>>({\n api: 0,\n path: \"emission/search\",\n parameters: {\n first: 0,\n size: 5,\n organisationId: props.organisationId,\n sort: \"LAST_PODCAST_DESC\",\n rubriqueId: props.rubriquesId\n },\n specialTreatement: true\n });\n\n const promises: Array<Promise<SimplifiedPodcast>> = [];\n\n for (let i = 0; i < emissions.result.length; i++) {\n promises.push(podcastApi.search({\n first: 0,\n size: 1,\n organisationId: [props.organisationId],\n emissionId: [emissions.result[i].emissionId],\n sort: PodcastSort.DATE,\n rubriqueId: props.rubriquesId\n }, true).then(r => r.result[0]));\n }\n\n // Retrieve the podcasts for these emissions\n const data = await Promise.all(promises);\n\n return data.filter((em: SimplifiedPodcast | null) => null !== em && undefined !== em).map(p => {\n // Get emission from podcast\n const emission = emissions.result.find(e => e.emissionId === p.emissionId);\n // Create full podcast from simplified + emission\n return simplifiedToFull(p, emission.orga, emission);\n });\n}\n\nfunction route(podcast: Podcast): RouteLocationRaw {\n return {\n name: 'podcast',\n params: { podcastId: podcast.podcastId }\n }\n}\n</script>\n"],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"PodcastProgressBar-CP-0ptRF.mjs","names":[],"sources":["../src/components/misc/player/progressbar/PodcastProgressBar.vue","../src/components/misc/player/progressbar/PodcastProgressBar.vue"],"sourcesContent":["<template>\n <ProgressBar\n v-if=\"!playerError\"\n :main-progress=\"percentProgress\"\n :secondary-progress=\"percentLiveProgress\"\n :alert-bar=\"displayAlertBar ? durationLivePosition : undefined\"\n :class=\"classProgress\"\n :in-player=\"true\"\n @mouseup=\"seekTo\"\n />\n <CommentPlayer v-if=\"showComments\" />\n</template>\n\n<script setup lang=\"ts\">\nimport { usePlayerStore } from \"../../../../stores/PlayerStore\";\nimport ProgressBar from \"../../ProgressBar.vue\";\nimport { defineAsyncComponent, computed } from \"vue\";\nconst CommentPlayer = defineAsyncComponent(\n () => import(\"../../../display/comments/CommentPlayer.vue\"),\n);\n\n//Props \nconst props = defineProps({\n classProgress: { default: \"\", type: String },\n showComments: { default: false, type: Boolean },\n displayAlertBar: { default: false, type: Boolean },\n percentLiveProgress: { default: 0, type: Number },\n durationLivePosition: { default: 0, type: Number },\n playerError: { default: false, type: Boolean },\n listenTime: { default: 0, type: Number },\n})\n\n//Composables\nconst playerStore = usePlayerStore();\n\n\n//Computed\nconst percentProgress = computed(() => {\n if (!playerStore.playerElapsed) {\n return 0;\n }\n return playerStore.playerElapsed * 100;\n});\n\n\n//Methods\nfunction seekTo(event: MouseEvent): void {\n const audioPlayer: HTMLAudioElement | null =\n document.querySelector(\"#audio-player\");\n if (!audioPlayer || null === event.currentTarget) {\n return;\n }\n const rect = (event.currentTarget as Element).getBoundingClientRect();\n const barWidth = (event.currentTarget as Element).clientWidth;\n const x = event.clientX - rect.left;\n const percentPosition = x / barWidth;\n if (playerStore.playerLive && percentPosition * 100 >= props.percentLiveProgress) return;\n const seekTime = playerStore.playerTotal * percentPosition;\n isSeekTo(audioPlayer, seekTime);\n}\nfunction isSeekTo(audioPlayer: HTMLAudioElement, seekTime: number): void {\n if (playerStore.playerPodcast || playerStore.playerLive) {\n playerStore.playerUpdateSeekTime(seekTime);\n } else {\n audioPlayer.currentTime = seekTime;\n }\n}\n</script>\n","<template>\n <ProgressBar\n v-if=\"!playerError\"\n :main-progress=\"percentProgress\"\n :secondary-progress=\"percentLiveProgress\"\n :alert-bar=\"displayAlertBar ? durationLivePosition : undefined\"\n :class=\"classProgress\"\n :in-player=\"true\"\n @mouseup=\"seekTo\"\n />\n <CommentPlayer v-if=\"showComments\" />\n</template>\n\n<script setup lang=\"ts\">\nimport { usePlayerStore } from \"../../../../stores/PlayerStore\";\nimport ProgressBar from \"../../ProgressBar.vue\";\nimport { defineAsyncComponent, computed } from \"vue\";\nconst CommentPlayer = defineAsyncComponent(\n () => import(\"../../../display/comments/CommentPlayer.vue\"),\n);\n\n//Props \nconst props = defineProps({\n classProgress: { default: \"\", type: String },\n showComments: { default: false, type: Boolean },\n displayAlertBar: { default: false, type: Boolean },\n percentLiveProgress: { default: 0, type: Number },\n durationLivePosition: { default: 0, type: Number },\n playerError: { default: false, type: Boolean },\n listenTime: { default: 0, type: Number },\n})\n\n//Composables\nconst playerStore = usePlayerStore();\n\n\n//Computed\nconst percentProgress = computed(() => {\n if (!playerStore.playerElapsed) {\n return 0;\n }\n return playerStore.playerElapsed * 100;\n});\n\n\n//Methods\nfunction seekTo(event: MouseEvent): void {\n const audioPlayer: HTMLAudioElement | null =\n document.querySelector(\"#audio-player\");\n if (!audioPlayer || null === event.currentTarget) {\n return;\n }\n const rect = (event.currentTarget as Element).getBoundingClientRect();\n const barWidth = (event.currentTarget as Element).clientWidth;\n const x = event.clientX - rect.left;\n const percentPosition = x / barWidth;\n if (playerStore.playerLive && percentPosition * 100 >= props.percentLiveProgress) return;\n const seekTime = playerStore.playerTotal * percentPosition;\n isSeekTo(audioPlayer, seekTime);\n}\nfunction isSeekTo(audioPlayer: HTMLAudioElement, seekTime: number): void {\n if (playerStore.playerPodcast || playerStore.playerLive) {\n playerStore.playerUpdateSeekTime(seekTime);\n } else {\n audioPlayer.currentTime = seekTime;\n }\n}\n</script>\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAiBA,MAAM,gBAAgB,2BACd,OAAO,+BACf;EAGA,MAAM,QAAQ;EAWd,MAAM,cAAc,eAAe;EAInC,MAAM,kBAAkB,eAAe;GACrC,IAAI,CAAC,YAAY,eACf,OAAO;GAET,OAAO,YAAY,gBAAgB;EACrC,CAAC;EAID,SAAS,OAAO,OAAyB;GACvC,MAAM,cACJ,SAAS,cAAc,eAAe;GACxC,IAAI,CAAC,eAAe,SAAS,MAAM,eACjC;GAEF,MAAM,OAAQ,MAAM,cAA0B,sBAAsB;GACpE,MAAM,WAAY,MAAM,cAA0B;GAElD,MAAM,mBADI,MAAM,UAAU,KAAK,QACH;GAC5B,IAAI,YAAY,cAAc,kBAAkB,OAAO,MAAM,qBAAqB;GAElF,SAAS,aADQ,YAAY,cAAc,eACb;EAChC;EACA,SAAS,SAAS,aAA+B,UAAwB;GACvE,IAAI,YAAY,iBAAiB,YAAY,YAC3C,YAAY,qBAAqB,QAAQ;QAEzC,YAAY,cAAc;EAE9B;;;;;;;;;;;;;;;;;;;;0DChEW,OAAA,eAAA,UAAA,GADT,YAQE,OAAA,gBAAA;;EANC,iBAAe,OAAA;EACf,sBAAoB,OAAA;EACpB,aAAW,OAAA,kBAAkB,OAAA,uBAAuB,KAAA;EACpD,OAAK,eAAE,OAAA,aAAa;EACpB,aAAW;EACX,WAAS,OAAA;;;;;;yCAES,OAAA,gBAAA,UAAA,GAArB,YAAqC,OAAA,kBAAA,EAAA,KAAA,EAAA,CAAA,KAAA,mBAAA,QAAA,IAAA,CAAA,GAAA,EAAA"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { t as _plugin_vue_export_helper_default } from "./_plugin-vue_export-helper-BOaGB7Aw.mjs";
|
|
2
|
-
import { n as usePlayerStore } from "./PlayerStore-
|
|
3
|
-
import { t as ProgressBar_default } from "./ProgressBar-
|
|
2
|
+
import { n as usePlayerStore } from "./PlayerStore-vYmnOEA_.mjs";
|
|
3
|
+
import { t as ProgressBar_default } from "./ProgressBar-BVc0_6Lv.mjs";
|
|
4
4
|
import { Fragment, computed, createBlock, createCommentVNode, createElementBlock, defineAsyncComponent, defineComponent, normalizeClass, openBlock } from "vue";
|
|
5
5
|
//#region src/components/misc/player/progressbar/PodcastProgressBar.vue?vue&type=script&setup=true&lang.ts
|
|
6
6
|
var PodcastProgressBar_vue_vue_type_script_setup_true_lang_default = /*@__PURE__*/ defineComponent({
|
|
@@ -37,7 +37,7 @@ var PodcastProgressBar_vue_vue_type_script_setup_true_lang_default = /*@__PURE__
|
|
|
37
37
|
},
|
|
38
38
|
setup(__props, { expose: __expose }) {
|
|
39
39
|
__expose();
|
|
40
|
-
const CommentPlayer = defineAsyncComponent(() => import("./CommentPlayer-
|
|
40
|
+
const CommentPlayer = defineAsyncComponent(() => import("./CommentPlayer-BMuLmZdI.mjs"));
|
|
41
41
|
const props = __props;
|
|
42
42
|
const playerStore = usePlayerStore();
|
|
43
43
|
const percentProgress = computed(() => {
|
|
@@ -95,4 +95,4 @@ var PodcastProgressBar_default = /*#__PURE__*/ _plugin_vue_export_helper_default
|
|
|
95
95
|
//#endregion
|
|
96
96
|
export { PodcastProgressBar_default as default };
|
|
97
97
|
|
|
98
|
-
//# sourceMappingURL=PodcastProgressBar-
|
|
98
|
+
//# sourceMappingURL=PodcastProgressBar-VG-mRcpi.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"PodcastProgressBar-VG-mRcpi.mjs","names":[],"sources":["../src/components/misc/player/progressbar/PodcastProgressBar.vue","../src/components/misc/player/progressbar/PodcastProgressBar.vue"],"sourcesContent":["<template>\n <ProgressBar\n v-if=\"!playerError\"\n :main-progress=\"percentProgress\"\n :secondary-progress=\"percentLiveProgress\"\n :alert-bar=\"displayAlertBar ? durationLivePosition : undefined\"\n :class=\"classProgress\"\n :in-player=\"true\"\n @mouseup=\"seekTo\"\n />\n <CommentPlayer v-if=\"showComments\" />\n</template>\n\n<script setup lang=\"ts\">\nimport { usePlayerStore } from \"../../../../stores/PlayerStore\";\nimport ProgressBar from \"../../ProgressBar.vue\";\nimport { defineAsyncComponent, computed } from \"vue\";\nconst CommentPlayer = defineAsyncComponent(\n () => import(\"../../../display/comments/CommentPlayer.vue\"),\n);\n\n//Props \nconst props = defineProps({\n classProgress: { default: \"\", type: String },\n showComments: { default: false, type: Boolean },\n displayAlertBar: { default: false, type: Boolean },\n percentLiveProgress: { default: 0, type: Number },\n durationLivePosition: { default: 0, type: Number },\n playerError: { default: false, type: Boolean },\n listenTime: { default: 0, type: Number },\n})\n\n//Composables\nconst playerStore = usePlayerStore();\n\n\n//Computed\nconst percentProgress = computed(() => {\n if (!playerStore.playerElapsed) {\n return 0;\n }\n return playerStore.playerElapsed * 100;\n});\n\n\n//Methods\nfunction seekTo(event: MouseEvent): void {\n const audioPlayer: HTMLAudioElement | null =\n document.querySelector(\"#audio-player\");\n if (!audioPlayer || null === event.currentTarget) {\n return;\n }\n const rect = (event.currentTarget as Element).getBoundingClientRect();\n const barWidth = (event.currentTarget as Element).clientWidth;\n const x = event.clientX - rect.left;\n const percentPosition = x / barWidth;\n if (playerStore.playerLive && percentPosition * 100 >= props.percentLiveProgress) return;\n const seekTime = playerStore.playerTotal * percentPosition;\n isSeekTo(audioPlayer, seekTime);\n}\nfunction isSeekTo(audioPlayer: HTMLAudioElement, seekTime: number): void {\n if (playerStore.playerPodcast || playerStore.playerLive) {\n playerStore.playerUpdateSeekTime(seekTime);\n } else {\n audioPlayer.currentTime = seekTime;\n }\n}\n</script>\n","<template>\n <ProgressBar\n v-if=\"!playerError\"\n :main-progress=\"percentProgress\"\n :secondary-progress=\"percentLiveProgress\"\n :alert-bar=\"displayAlertBar ? durationLivePosition : undefined\"\n :class=\"classProgress\"\n :in-player=\"true\"\n @mouseup=\"seekTo\"\n />\n <CommentPlayer v-if=\"showComments\" />\n</template>\n\n<script setup lang=\"ts\">\nimport { usePlayerStore } from \"../../../../stores/PlayerStore\";\nimport ProgressBar from \"../../ProgressBar.vue\";\nimport { defineAsyncComponent, computed } from \"vue\";\nconst CommentPlayer = defineAsyncComponent(\n () => import(\"../../../display/comments/CommentPlayer.vue\"),\n);\n\n//Props \nconst props = defineProps({\n classProgress: { default: \"\", type: String },\n showComments: { default: false, type: Boolean },\n displayAlertBar: { default: false, type: Boolean },\n percentLiveProgress: { default: 0, type: Number },\n durationLivePosition: { default: 0, type: Number },\n playerError: { default: false, type: Boolean },\n listenTime: { default: 0, type: Number },\n})\n\n//Composables\nconst playerStore = usePlayerStore();\n\n\n//Computed\nconst percentProgress = computed(() => {\n if (!playerStore.playerElapsed) {\n return 0;\n }\n return playerStore.playerElapsed * 100;\n});\n\n\n//Methods\nfunction seekTo(event: MouseEvent): void {\n const audioPlayer: HTMLAudioElement | null =\n document.querySelector(\"#audio-player\");\n if (!audioPlayer || null === event.currentTarget) {\n return;\n }\n const rect = (event.currentTarget as Element).getBoundingClientRect();\n const barWidth = (event.currentTarget as Element).clientWidth;\n const x = event.clientX - rect.left;\n const percentPosition = x / barWidth;\n if (playerStore.playerLive && percentPosition * 100 >= props.percentLiveProgress) return;\n const seekTime = playerStore.playerTotal * percentPosition;\n isSeekTo(audioPlayer, seekTime);\n}\nfunction isSeekTo(audioPlayer: HTMLAudioElement, seekTime: number): void {\n if (playerStore.playerPodcast || playerStore.playerLive) {\n playerStore.playerUpdateSeekTime(seekTime);\n } else {\n audioPlayer.currentTime = seekTime;\n }\n}\n</script>\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAiBA,MAAM,gBAAgB,2BACd,OAAO,+BACf;EAGA,MAAM,QAAQ;EAWd,MAAM,cAAc,eAAe;EAInC,MAAM,kBAAkB,eAAe;GACrC,IAAI,CAAC,YAAY,eACf,OAAO;GAET,OAAO,YAAY,gBAAgB;EACrC,CAAC;EAID,SAAS,OAAO,OAAyB;GACvC,MAAM,cACJ,SAAS,cAAc,eAAe;GACxC,IAAI,CAAC,eAAe,SAAS,MAAM,eACjC;GAEF,MAAM,OAAQ,MAAM,cAA0B,sBAAsB;GACpE,MAAM,WAAY,MAAM,cAA0B;GAElD,MAAM,mBADI,MAAM,UAAU,KAAK,QACH;GAC5B,IAAI,YAAY,cAAc,kBAAkB,OAAO,MAAM,qBAAqB;GAElF,SAAS,aADQ,YAAY,cAAc,eACb;EAChC;EACA,SAAS,SAAS,aAA+B,UAAwB;GACvE,IAAI,YAAY,iBAAiB,YAAY,YAC3C,YAAY,qBAAqB,QAAQ;QAEzC,YAAY,cAAc;EAE9B;;;;;;;;;;;;;;;;;;;;0DChEW,OAAA,eAAA,UAAA,GADT,YAQE,OAAA,gBAAA;;EANC,iBAAe,OAAA;EACf,sBAAoB,OAAA;EACpB,aAAW,OAAA,kBAAkB,OAAA,uBAAuB,KAAA;EACpD,OAAK,eAAE,OAAA,aAAa;EACpB,aAAW;EACX,WAAS,OAAA;;;;;;yCAES,OAAA,gBAAA,UAAA,GAArB,YAAqC,OAAA,kBAAA,EAAA,KAAA,EAAA,CAAA,KAAA,mBAAA,QAAA,IAAA,CAAA,GAAA,EAAA"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"PodcastProgressBar-jY43GoFx.mjs","names":[],"sources":["../src/components/misc/player/progressbar/PodcastProgressBar.vue","../src/components/misc/player/progressbar/PodcastProgressBar.vue"],"sourcesContent":["<template>\n <ProgressBar\n v-if=\"!playerError\"\n :main-progress=\"percentProgress\"\n :secondary-progress=\"percentLiveProgress\"\n :alert-bar=\"displayAlertBar ? durationLivePosition : undefined\"\n :class=\"classProgress\"\n :in-player=\"true\"\n @mouseup=\"seekTo\"\n />\n <CommentPlayer v-if=\"showComments\" />\n</template>\n\n<script setup lang=\"ts\">\nimport { usePlayerStore } from \"../../../../stores/PlayerStore\";\nimport ProgressBar from \"../../ProgressBar.vue\";\nimport { defineAsyncComponent, computed } from \"vue\";\nconst CommentPlayer = defineAsyncComponent(\n () => import(\"../../../display/comments/CommentPlayer.vue\"),\n);\n\n//Props \nconst props = defineProps({\n classProgress: { default: \"\", type: String },\n showComments: { default: false, type: Boolean },\n displayAlertBar: { default: false, type: Boolean },\n percentLiveProgress: { default: 0, type: Number },\n durationLivePosition: { default: 0, type: Number },\n playerError: { default: false, type: Boolean },\n listenTime: { default: 0, type: Number },\n})\n\n//Composables\nconst playerStore = usePlayerStore();\n\n\n//Computed\nconst percentProgress = computed(() => {\n if (!playerStore.playerElapsed) {\n return 0;\n }\n return playerStore.playerElapsed * 100;\n});\n\n\n//Methods\nfunction seekTo(event: MouseEvent): void {\n const audioPlayer: HTMLAudioElement | null =\n document.querySelector(\"#audio-player\");\n if (!audioPlayer || null === event.currentTarget) {\n return;\n }\n const rect = (event.currentTarget as Element).getBoundingClientRect();\n const barWidth = (event.currentTarget as Element).clientWidth;\n const x = event.clientX - rect.left;\n const percentPosition = x / barWidth;\n if (playerStore.playerLive && percentPosition * 100 >= props.percentLiveProgress) return;\n const seekTime = playerStore.playerTotal * percentPosition;\n isSeekTo(audioPlayer, seekTime);\n}\nfunction isSeekTo(audioPlayer: HTMLAudioElement, seekTime: number): void {\n if (playerStore.playerPodcast || playerStore.playerLive) {\n playerStore.playerUpdateSeekTime(seekTime);\n } else {\n audioPlayer.currentTime = seekTime;\n }\n}\n</script>\n","<template>\n <ProgressBar\n v-if=\"!playerError\"\n :main-progress=\"percentProgress\"\n :secondary-progress=\"percentLiveProgress\"\n :alert-bar=\"displayAlertBar ? durationLivePosition : undefined\"\n :class=\"classProgress\"\n :in-player=\"true\"\n @mouseup=\"seekTo\"\n />\n <CommentPlayer v-if=\"showComments\" />\n</template>\n\n<script setup lang=\"ts\">\nimport { usePlayerStore } from \"../../../../stores/PlayerStore\";\nimport ProgressBar from \"../../ProgressBar.vue\";\nimport { defineAsyncComponent, computed } from \"vue\";\nconst CommentPlayer = defineAsyncComponent(\n () => import(\"../../../display/comments/CommentPlayer.vue\"),\n);\n\n//Props \nconst props = defineProps({\n classProgress: { default: \"\", type: String },\n showComments: { default: false, type: Boolean },\n displayAlertBar: { default: false, type: Boolean },\n percentLiveProgress: { default: 0, type: Number },\n durationLivePosition: { default: 0, type: Number },\n playerError: { default: false, type: Boolean },\n listenTime: { default: 0, type: Number },\n})\n\n//Composables\nconst playerStore = usePlayerStore();\n\n\n//Computed\nconst percentProgress = computed(() => {\n if (!playerStore.playerElapsed) {\n return 0;\n }\n return playerStore.playerElapsed * 100;\n});\n\n\n//Methods\nfunction seekTo(event: MouseEvent): void {\n const audioPlayer: HTMLAudioElement | null =\n document.querySelector(\"#audio-player\");\n if (!audioPlayer || null === event.currentTarget) {\n return;\n }\n const rect = (event.currentTarget as Element).getBoundingClientRect();\n const barWidth = (event.currentTarget as Element).clientWidth;\n const x = event.clientX - rect.left;\n const percentPosition = x / barWidth;\n if (playerStore.playerLive && percentPosition * 100 >= props.percentLiveProgress) return;\n const seekTime = playerStore.playerTotal * percentPosition;\n isSeekTo(audioPlayer, seekTime);\n}\nfunction isSeekTo(audioPlayer: HTMLAudioElement, seekTime: number): void {\n if (playerStore.playerPodcast || playerStore.playerLive) {\n playerStore.playerUpdateSeekTime(seekTime);\n } else {\n audioPlayer.currentTime = seekTime;\n }\n}\n</script>\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAiBA,MAAM,gBAAgB,2BACd,OAAO,+BACf;EAGA,MAAM,QAAQ;EAWd,MAAM,cAAc,eAAe;EAInC,MAAM,kBAAkB,eAAe;GACrC,IAAI,CAAC,YAAY,eACf,OAAO;GAET,OAAO,YAAY,gBAAgB;EACrC,CAAC;EAID,SAAS,OAAO,OAAyB;GACvC,MAAM,cACJ,SAAS,cAAc,eAAe;GACxC,IAAI,CAAC,eAAe,SAAS,MAAM,eACjC;GAEF,MAAM,OAAQ,MAAM,cAA0B,sBAAsB;GACpE,MAAM,WAAY,MAAM,cAA0B;GAElD,MAAM,mBADI,MAAM,UAAU,KAAK,QACH;GAC5B,IAAI,YAAY,cAAc,kBAAkB,OAAO,MAAM,qBAAqB;GAElF,SAAS,aADQ,YAAY,cAAc,eACb;EAChC;EACA,SAAS,SAAS,aAA+B,UAAwB;GACvE,IAAI,YAAY,iBAAiB,YAAY,YAC3C,YAAY,qBAAqB,QAAQ;QAEzC,YAAY,cAAc;EAE9B;;;;;;;;;;;;;;;;;;;;0DChEW,OAAA,eAAA,UAAA,GADT,YAQE,OAAA,gBAAA;;EANC,iBAAe,OAAA;EACf,sBAAoB,OAAA;EACpB,aAAW,OAAA,kBAAkB,OAAA,uBAAuB,KAAA;EACpD,OAAK,eAAE,OAAA,aAAa;EACpB,aAAW;EACX,WAAS,OAAA;;;;;;yCAES,OAAA,gBAAA,UAAA,GAArB,YAAqC,OAAA,kBAAA,EAAA,KAAA,EAAA,CAAA,KAAA,mBAAA,QAAA,IAAA,CAAA,GAAA,EAAA"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"PodcastRawTranscript-BAu-dt2V.mjs","names":[],"sources":["../src/components/display/podcasts/PodcastRawTranscript.vue","../src/components/display/podcasts/PodcastRawTranscript.vue"],"sourcesContent":["<template>\n <div>\n <AccessibilityModal\n v-if=\"isAccessibilityModal\"\n @save=\"saveAccessibility\"\n @close=\"isAccessibilityModal = false\"\n />\n <div class=\"transcription-section-buttons\">\n <button\n v-if=\"isOpen\"\n class=\"btn btn-primary m-0\"\n @click=\"isAccessibilityModal = true\"\n >\n <EyeOutlineIcon class=\"me-1\" /> {{ t('Transcript Accessibility') }}\n </button>\n\n <div\n v-if=\"isOpen && availableLanguagesOptions.length > 0\"\n class=\"language-selector\"\n >\n <span class=\"me-2\">{{ t('Transcript - Available languages') }}</span>\n <ClassicSelect\n :text-init=\"currentLanguage\"\n :is-disabled=\"!loadingDone\"\n :options=\"availableLanguagesOptions\"\n :display-label=\"false\"\n @update:text-init=\"changeLanguage\"\n />\n </div>\n \n <button\n class=\"btn btn-transcript\"\n :class=\"{ open: isOpen }\"\n @click=\"isOpen = !isOpen\"\n >\n {{ buttonText }}\n </button>\n </div>\n <div v-if=\"isOpen\" class=\"transcription-body\">\n <ClassicLoading\n :loading-text=\"!loadingDone ? t('Loading content ...') : undefined\"\n />\n <div class=\"transcription-text\">\n <template v-if=\"loadingDone && transcript?.length\">\n {{ transcript }}\n </template>\n <template v-if=\"loadingDone && !transcript?.length\">\n {{ t(\"Transcript does not yet exist for this episode\") }}\n </template>\n </div>\n </div>\n </div>\n</template>\n\n<script setup lang=\"ts\">\nimport cookiesHelper from \"../../../helper/cookiesHelper\";\nimport EyeOutlineIcon from \"vue-material-design-icons/EyeOutline.vue\";\nimport ClassicLoading from \"../../form/ClassicLoading.vue\";\nimport { computed, defineAsyncComponent, ref, watch } from \"vue\";\nimport { useI18n } from \"vue-i18n\";\nimport { transcriptionApi, TranslationState } from \"../../../api/transcriptionApi\";\nimport { useTranslation } from \"../../composable/useTranslation\";\nimport ClassicSelect from \"../../form/ClassicSelect.vue\";\nconst AccessibilityModal = defineAsyncComponent(\n () => import(\"../accessibility/AccessibilityModal.vue\"),\n);\n\n//Props \nconst props = defineProps<{\n /** ID of the podcast for which to display transcription */\n podcastId: number;\n}>();\n\n//Data \nconst isOpen = ref(false);\nconst loadingDone = ref(false);\nconst isAccessibilityModal = ref(false);\nconst transcript = ref<string|undefined>(undefined);\n/** Native language of the podcast */\nconst nativeLanguage = ref('');\n/** List of languages for which a transcription exists */\nconst availableLanguages = ref<Array<string>>([]);\n/** Currently shown language */\nconst currentLanguage = ref('');\n\n//Composables\nconst { t } = useI18n();\nconst { convertSrtToPlainText, getMostRelevantLanguage } = useTranslation();\n\n//Computed\nconst buttonText = computed(() => isOpen.value? t(\"Hide transcript\"): t(\"View transcript\"));\n\nconst availableLanguagesOptions = computed(() => {\n return availableLanguages.value.map(lang => ({\n title: lang,\n value: lang\n }));\n})\n\n//Watch\nwatch(isOpen, () => {\n if (isOpen.value && !loadingDone.value) {\n if (props.podcastId) {\n fetchTranscripts();\n }\n getAccessibility();\n }\n});\n\n//Methods\nfunction getAccessibility(){\n const fontSize = cookiesHelper.getCookie(\"octopus-font-size\");\n if (null !== fontSize) {\n setCssProperty('--octopus-accessibility-font-size', fontSize);\n }\n const background = cookiesHelper.getCookie(\"octopus-background\");\n if (null !== background) {\n setCssProperty('--octopus-accessibility-background', background);\n }\n const color = cookiesHelper.getCookie(\"octopus-color\");\n if (null !== color) {\n setCssProperty('--octopus-accessibility-color', color);\n }\n}\n\nfunction setCssProperty(name: string, value: string){\n document.documentElement.style.setProperty(name,value);\n}\n\nfunction saveAccessibility(accessibility: {fontSize: number,background: string,color: string}){\n setCssProperty('--octopus-accessibility-font-size', accessibility.fontSize+'px');\n cookiesHelper.setCookie(\"octopus-font-size\", accessibility.fontSize+'px');\n setCssProperty('--octopus-accessibility-background', accessibility.background);\n cookiesHelper.setCookie(\"octopus-background\",accessibility.background);\n setCssProperty('--octopus-accessibility-color', accessibility.color);\n cookiesHelper.setCookie(\"octopus-color\",accessibility.color);\n isAccessibilityModal.value = false;\n}\n\nasync function fetchTranscripts(language?: string): Promise<void> {\n try {\n const translation = await transcriptionApi.getTranslations(props.podcastId);\n if (language === undefined) {\n const { ready, available } = await getMostRelevantLanguage(translation);\n // If available language is set, it is better than ready, so use it\n language = available ?? ready;\n }\n const srt = await transcriptionApi.getTranslation(props.podcastId, language, true);\n transcript.value = convertSrtToPlainText(srt);\n \n availableLanguages.value = translation.translations\n .filter(t => t.state === TranslationState.FINISHED)\n .map(t => t.language);\n nativeLanguage.value = translation.nativeLanguage;\n currentLanguage.value = language;\n availableLanguages.value.unshift(translation.nativeLanguage);\n\n if (!availableLanguages.value.includes(language)) {\n availableLanguages.value.push(language);\n }\n } catch (error) {\n console.error(error);\n }\n loadingDone.value = true;\n}\n\nasync function changeLanguage(language: string): Promise<void> {\n loadingDone.value = false;\n currentLanguage.value = language;\n transcript.value = undefined;\n try {\n const srt = await transcriptionApi.getTranslation(props.podcastId, language); \n transcript.value = convertSrtToPlainText(srt);\n } catch (error) {\n console.error(error);\n }\n loadingDone.value = true;\n}\n\n/** Force reloading */\nfunction reset(): void {\n if (isOpen.value || loadingDone.value) {\n fetchTranscripts(currentLanguage.value);\n }\n}\n\ndefineExpose({ reset });\n</script>\n\n<style scoped lang=\"scss\">\n.octopus-app {\n --octopus-accessibility-font-size: 16px;\n --octopus-accessibility-background: var(--octopus-background);\n --octopus-accessibility-color: var(--octopus-color-text);\n\n .language-selector {\n display: flex;\n align-items: center;\n margin-left: 1rem;\n\n span {\n font-weight: 600;\n }\n }\n\n .transcription-section-buttons{\n display: flex;\n justify-content: space-between;\n flex-wrap: wrap;\n @media (width <= 625px) {\n flex-direction: column;\n }\n }\n .btn-transcript {\n position: relative;\n border-radius: var(--octopus-border-radius);\n overflow: hidden;\n transition: all 0.2s linear 0s;\n \n &.open{\n margin-left:auto;\n direction: rtl;\n @media (width <= 625px) {\n margin-top: 0.5rem;\n }\n }\n &:not(.open){\n margin-right: auto;\n }\n\n &:not(.open)::before,\n &.open::after {\n content: \"➤\";\n display: flex;\n align-items: center;\n justify-content: center;\n position: absolute;\n top: 0;\n height: 100%;\n width: 30px;\n border-radius: 0 50% 50% 0;\n background-color: var(--octopus-background-transparent);\n transform: scale(0, 1);\n transition: all 0.2s linear 0s;\n }\n\n &:not(.open)::before {\n left: 0;\n transform-origin: left center;\n }\n\n &.open::after {\n right: -30px;\n transform-origin: center left;\n }\n &:hover {\n text-indent: 30px;\n }\n\n &:not(.open):hover::before,\n &.open:hover::after {\n text-indent: 0;\n }\n\n &:not(.open):hover::before {\n transform: scale(1, 1);\n }\n\n &.open:hover::after {\n transform: scale(-1, 1);\n }\n }\n\n .transcription-body {\n font-size: var(--octopus-accessibility-font-size);\n position: relative;\n padding: 1rem;\n max-height: 250px;\n display: flex;\n justify-content: center;\n white-space: pre-wrap;\n background: var(--octopus-accessibility-background);\n color: var(--octopus-accessibility-color);\n border: 2px solid var(--octopus-border-default);\n border-radius: var(--octopus-border-radius);\n\n .transcription-text {\n overflow: hidden auto;\n }\n }\n}\n</style>\n","<template>\n <div>\n <AccessibilityModal\n v-if=\"isAccessibilityModal\"\n @save=\"saveAccessibility\"\n @close=\"isAccessibilityModal = false\"\n />\n <div class=\"transcription-section-buttons\">\n <button\n v-if=\"isOpen\"\n class=\"btn btn-primary m-0\"\n @click=\"isAccessibilityModal = true\"\n >\n <EyeOutlineIcon class=\"me-1\" /> {{ t('Transcript Accessibility') }}\n </button>\n\n <div\n v-if=\"isOpen && availableLanguagesOptions.length > 0\"\n class=\"language-selector\"\n >\n <span class=\"me-2\">{{ t('Transcript - Available languages') }}</span>\n <ClassicSelect\n :text-init=\"currentLanguage\"\n :is-disabled=\"!loadingDone\"\n :options=\"availableLanguagesOptions\"\n :display-label=\"false\"\n @update:text-init=\"changeLanguage\"\n />\n </div>\n \n <button\n class=\"btn btn-transcript\"\n :class=\"{ open: isOpen }\"\n @click=\"isOpen = !isOpen\"\n >\n {{ buttonText }}\n </button>\n </div>\n <div v-if=\"isOpen\" class=\"transcription-body\">\n <ClassicLoading\n :loading-text=\"!loadingDone ? t('Loading content ...') : undefined\"\n />\n <div class=\"transcription-text\">\n <template v-if=\"loadingDone && transcript?.length\">\n {{ transcript }}\n </template>\n <template v-if=\"loadingDone && !transcript?.length\">\n {{ t(\"Transcript does not yet exist for this episode\") }}\n </template>\n </div>\n </div>\n </div>\n</template>\n\n<script setup lang=\"ts\">\nimport cookiesHelper from \"../../../helper/cookiesHelper\";\nimport EyeOutlineIcon from \"vue-material-design-icons/EyeOutline.vue\";\nimport ClassicLoading from \"../../form/ClassicLoading.vue\";\nimport { computed, defineAsyncComponent, ref, watch } from \"vue\";\nimport { useI18n } from \"vue-i18n\";\nimport { transcriptionApi, TranslationState } from \"../../../api/transcriptionApi\";\nimport { useTranslation } from \"../../composable/useTranslation\";\nimport ClassicSelect from \"../../form/ClassicSelect.vue\";\nconst AccessibilityModal = defineAsyncComponent(\n () => import(\"../accessibility/AccessibilityModal.vue\"),\n);\n\n//Props \nconst props = defineProps<{\n /** ID of the podcast for which to display transcription */\n podcastId: number;\n}>();\n\n//Data \nconst isOpen = ref(false);\nconst loadingDone = ref(false);\nconst isAccessibilityModal = ref(false);\nconst transcript = ref<string|undefined>(undefined);\n/** Native language of the podcast */\nconst nativeLanguage = ref('');\n/** List of languages for which a transcription exists */\nconst availableLanguages = ref<Array<string>>([]);\n/** Currently shown language */\nconst currentLanguage = ref('');\n\n//Composables\nconst { t } = useI18n();\nconst { convertSrtToPlainText, getMostRelevantLanguage } = useTranslation();\n\n//Computed\nconst buttonText = computed(() => isOpen.value? t(\"Hide transcript\"): t(\"View transcript\"));\n\nconst availableLanguagesOptions = computed(() => {\n return availableLanguages.value.map(lang => ({\n title: lang,\n value: lang\n }));\n})\n\n//Watch\nwatch(isOpen, () => {\n if (isOpen.value && !loadingDone.value) {\n if (props.podcastId) {\n fetchTranscripts();\n }\n getAccessibility();\n }\n});\n\n//Methods\nfunction getAccessibility(){\n const fontSize = cookiesHelper.getCookie(\"octopus-font-size\");\n if (null !== fontSize) {\n setCssProperty('--octopus-accessibility-font-size', fontSize);\n }\n const background = cookiesHelper.getCookie(\"octopus-background\");\n if (null !== background) {\n setCssProperty('--octopus-accessibility-background', background);\n }\n const color = cookiesHelper.getCookie(\"octopus-color\");\n if (null !== color) {\n setCssProperty('--octopus-accessibility-color', color);\n }\n}\n\nfunction setCssProperty(name: string, value: string){\n document.documentElement.style.setProperty(name,value);\n}\n\nfunction saveAccessibility(accessibility: {fontSize: number,background: string,color: string}){\n setCssProperty('--octopus-accessibility-font-size', accessibility.fontSize+'px');\n cookiesHelper.setCookie(\"octopus-font-size\", accessibility.fontSize+'px');\n setCssProperty('--octopus-accessibility-background', accessibility.background);\n cookiesHelper.setCookie(\"octopus-background\",accessibility.background);\n setCssProperty('--octopus-accessibility-color', accessibility.color);\n cookiesHelper.setCookie(\"octopus-color\",accessibility.color);\n isAccessibilityModal.value = false;\n}\n\nasync function fetchTranscripts(language?: string): Promise<void> {\n try {\n const translation = await transcriptionApi.getTranslations(props.podcastId);\n if (language === undefined) {\n const { ready, available } = await getMostRelevantLanguage(translation);\n // If available language is set, it is better than ready, so use it\n language = available ?? ready;\n }\n const srt = await transcriptionApi.getTranslation(props.podcastId, language, true);\n transcript.value = convertSrtToPlainText(srt);\n \n availableLanguages.value = translation.translations\n .filter(t => t.state === TranslationState.FINISHED)\n .map(t => t.language);\n nativeLanguage.value = translation.nativeLanguage;\n currentLanguage.value = language;\n availableLanguages.value.unshift(translation.nativeLanguage);\n\n if (!availableLanguages.value.includes(language)) {\n availableLanguages.value.push(language);\n }\n } catch (error) {\n console.error(error);\n }\n loadingDone.value = true;\n}\n\nasync function changeLanguage(language: string): Promise<void> {\n loadingDone.value = false;\n currentLanguage.value = language;\n transcript.value = undefined;\n try {\n const srt = await transcriptionApi.getTranslation(props.podcastId, language); \n transcript.value = convertSrtToPlainText(srt);\n } catch (error) {\n console.error(error);\n }\n loadingDone.value = true;\n}\n\n/** Force reloading */\nfunction reset(): void {\n if (isOpen.value || loadingDone.value) {\n fetchTranscripts(currentLanguage.value);\n }\n}\n\ndefineExpose({ reset });\n</script>\n\n<style scoped lang=\"scss\">\n.octopus-app {\n --octopus-accessibility-font-size: 16px;\n --octopus-accessibility-background: var(--octopus-background);\n --octopus-accessibility-color: var(--octopus-color-text);\n\n .language-selector {\n display: flex;\n align-items: center;\n margin-left: 1rem;\n\n span {\n font-weight: 600;\n }\n }\n\n .transcription-section-buttons{\n display: flex;\n justify-content: space-between;\n flex-wrap: wrap;\n @media (width <= 625px) {\n flex-direction: column;\n }\n }\n .btn-transcript {\n position: relative;\n border-radius: var(--octopus-border-radius);\n overflow: hidden;\n transition: all 0.2s linear 0s;\n \n &.open{\n margin-left:auto;\n direction: rtl;\n @media (width <= 625px) {\n margin-top: 0.5rem;\n }\n }\n &:not(.open){\n margin-right: auto;\n }\n\n &:not(.open)::before,\n &.open::after {\n content: \"➤\";\n display: flex;\n align-items: center;\n justify-content: center;\n position: absolute;\n top: 0;\n height: 100%;\n width: 30px;\n border-radius: 0 50% 50% 0;\n background-color: var(--octopus-background-transparent);\n transform: scale(0, 1);\n transition: all 0.2s linear 0s;\n }\n\n &:not(.open)::before {\n left: 0;\n transform-origin: left center;\n }\n\n &.open::after {\n right: -30px;\n transform-origin: center left;\n }\n &:hover {\n text-indent: 30px;\n }\n\n &:not(.open):hover::before,\n &.open:hover::after {\n text-indent: 0;\n }\n\n &:not(.open):hover::before {\n transform: scale(1, 1);\n }\n\n &.open:hover::after {\n transform: scale(-1, 1);\n }\n }\n\n .transcription-body {\n font-size: var(--octopus-accessibility-font-size);\n position: relative;\n padding: 1rem;\n max-height: 250px;\n display: flex;\n justify-content: center;\n white-space: pre-wrap;\n background: var(--octopus-accessibility-background);\n color: var(--octopus-accessibility-color);\n border: 2px solid var(--octopus-border-default);\n border-radius: var(--octopus-border-radius);\n\n .transcription-text {\n overflow: hidden auto;\n }\n }\n}\n</style>\n"],"mappings":"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"}
|
|
@@ -1,8 +1,8 @@
|
|
|
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 { S as transcriptionApi, x as TranslationState } from "./classicApi-
|
|
3
|
+
import { S as transcriptionApi, x as TranslationState } from "./classicApi-xjOqAovv.mjs";
|
|
4
4
|
import { t as ClassicSelect_default } from "./ClassicSelect-BaY2yvwP.mjs";
|
|
5
|
-
import { t as useTranslation } from "./useTranslation-
|
|
5
|
+
import { t as useTranslation } from "./useTranslation-ChEasnl9.mjs";
|
|
6
6
|
import { t as cookiesHelper_default } from "./cookiesHelper-BQksSais.mjs";
|
|
7
7
|
import { Fragment, computed, createBlock, createCommentVNode, createElementBlock, createElementVNode, createTextVNode, createVNode, defineAsyncComponent, defineComponent, normalizeClass, openBlock, ref, toDisplayString, watch } from "vue";
|
|
8
8
|
import { useI18n } from "vue-i18n";
|
|
@@ -181,4 +181,4 @@ var PodcastRawTranscript_default = /*#__PURE__*/ _plugin_vue_export_helper_defau
|
|
|
181
181
|
//#endregion
|
|
182
182
|
export { PodcastRawTranscript_default as t };
|
|
183
183
|
|
|
184
|
-
//# sourceMappingURL=PodcastRawTranscript-
|
|
184
|
+
//# sourceMappingURL=PodcastRawTranscript-Bf6f5yNd.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"PodcastRawTranscript-Bf6f5yNd.mjs","names":[],"sources":["../src/components/display/podcasts/PodcastRawTranscript.vue","../src/components/display/podcasts/PodcastRawTranscript.vue"],"sourcesContent":["<template>\n <div>\n <AccessibilityModal\n v-if=\"isAccessibilityModal\"\n @save=\"saveAccessibility\"\n @close=\"isAccessibilityModal = false\"\n />\n <div class=\"transcription-section-buttons\">\n <button\n v-if=\"isOpen\"\n class=\"btn btn-primary m-0\"\n @click=\"isAccessibilityModal = true\"\n >\n <EyeOutlineIcon class=\"me-1\" /> {{ t('Transcript Accessibility') }}\n </button>\n\n <div\n v-if=\"isOpen && availableLanguagesOptions.length > 0\"\n class=\"language-selector\"\n >\n <span class=\"me-2\">{{ t('Transcript - Available languages') }}</span>\n <ClassicSelect\n :text-init=\"currentLanguage\"\n :is-disabled=\"!loadingDone\"\n :options=\"availableLanguagesOptions\"\n :display-label=\"false\"\n @update:text-init=\"changeLanguage\"\n />\n </div>\n \n <button\n class=\"btn btn-transcript\"\n :class=\"{ open: isOpen }\"\n @click=\"isOpen = !isOpen\"\n >\n {{ buttonText }}\n </button>\n </div>\n <div v-if=\"isOpen\" class=\"transcription-body\">\n <ClassicLoading\n :loading-text=\"!loadingDone ? t('Loading content ...') : undefined\"\n />\n <div class=\"transcription-text\">\n <template v-if=\"loadingDone && transcript?.length\">\n {{ transcript }}\n </template>\n <template v-if=\"loadingDone && !transcript?.length\">\n {{ t(\"Transcript does not yet exist for this episode\") }}\n </template>\n </div>\n </div>\n </div>\n</template>\n\n<script setup lang=\"ts\">\nimport cookiesHelper from \"../../../helper/cookiesHelper\";\nimport EyeOutlineIcon from \"vue-material-design-icons/EyeOutline.vue\";\nimport ClassicLoading from \"../../form/ClassicLoading.vue\";\nimport { computed, defineAsyncComponent, ref, watch } from \"vue\";\nimport { useI18n } from \"vue-i18n\";\nimport { transcriptionApi, TranslationState } from \"../../../api/transcriptionApi\";\nimport { useTranslation } from \"../../composable/useTranslation\";\nimport ClassicSelect from \"../../form/ClassicSelect.vue\";\nconst AccessibilityModal = defineAsyncComponent(\n () => import(\"../accessibility/AccessibilityModal.vue\"),\n);\n\n//Props \nconst props = defineProps<{\n /** ID of the podcast for which to display transcription */\n podcastId: number;\n}>();\n\n//Data \nconst isOpen = ref(false);\nconst loadingDone = ref(false);\nconst isAccessibilityModal = ref(false);\nconst transcript = ref<string|undefined>(undefined);\n/** Native language of the podcast */\nconst nativeLanguage = ref('');\n/** List of languages for which a transcription exists */\nconst availableLanguages = ref<Array<string>>([]);\n/** Currently shown language */\nconst currentLanguage = ref('');\n\n//Composables\nconst { t } = useI18n();\nconst { convertSrtToPlainText, getMostRelevantLanguage } = useTranslation();\n\n//Computed\nconst buttonText = computed(() => isOpen.value? t(\"Hide transcript\"): t(\"View transcript\"));\n\nconst availableLanguagesOptions = computed(() => {\n return availableLanguages.value.map(lang => ({\n title: lang,\n value: lang\n }));\n})\n\n//Watch\nwatch(isOpen, () => {\n if (isOpen.value && !loadingDone.value) {\n if (props.podcastId) {\n fetchTranscripts();\n }\n getAccessibility();\n }\n});\n\n//Methods\nfunction getAccessibility(){\n const fontSize = cookiesHelper.getCookie(\"octopus-font-size\");\n if (null !== fontSize) {\n setCssProperty('--octopus-accessibility-font-size', fontSize);\n }\n const background = cookiesHelper.getCookie(\"octopus-background\");\n if (null !== background) {\n setCssProperty('--octopus-accessibility-background', background);\n }\n const color = cookiesHelper.getCookie(\"octopus-color\");\n if (null !== color) {\n setCssProperty('--octopus-accessibility-color', color);\n }\n}\n\nfunction setCssProperty(name: string, value: string){\n document.documentElement.style.setProperty(name,value);\n}\n\nfunction saveAccessibility(accessibility: {fontSize: number,background: string,color: string}){\n setCssProperty('--octopus-accessibility-font-size', accessibility.fontSize+'px');\n cookiesHelper.setCookie(\"octopus-font-size\", accessibility.fontSize+'px');\n setCssProperty('--octopus-accessibility-background', accessibility.background);\n cookiesHelper.setCookie(\"octopus-background\",accessibility.background);\n setCssProperty('--octopus-accessibility-color', accessibility.color);\n cookiesHelper.setCookie(\"octopus-color\",accessibility.color);\n isAccessibilityModal.value = false;\n}\n\nasync function fetchTranscripts(language?: string): Promise<void> {\n try {\n const translation = await transcriptionApi.getTranslations(props.podcastId);\n if (language === undefined) {\n const { ready, available } = await getMostRelevantLanguage(translation);\n // If available language is set, it is better than ready, so use it\n language = available ?? ready;\n }\n const srt = await transcriptionApi.getTranslation(props.podcastId, language, true);\n transcript.value = convertSrtToPlainText(srt);\n \n availableLanguages.value = translation.translations\n .filter(t => t.state === TranslationState.FINISHED)\n .map(t => t.language);\n nativeLanguage.value = translation.nativeLanguage;\n currentLanguage.value = language;\n availableLanguages.value.unshift(translation.nativeLanguage);\n\n if (!availableLanguages.value.includes(language)) {\n availableLanguages.value.push(language);\n }\n } catch (error) {\n console.error(error);\n }\n loadingDone.value = true;\n}\n\nasync function changeLanguage(language: string): Promise<void> {\n loadingDone.value = false;\n currentLanguage.value = language;\n transcript.value = undefined;\n try {\n const srt = await transcriptionApi.getTranslation(props.podcastId, language); \n transcript.value = convertSrtToPlainText(srt);\n } catch (error) {\n console.error(error);\n }\n loadingDone.value = true;\n}\n\n/** Force reloading */\nfunction reset(): void {\n if (isOpen.value || loadingDone.value) {\n fetchTranscripts(currentLanguage.value);\n }\n}\n\ndefineExpose({ reset });\n</script>\n\n<style scoped lang=\"scss\">\n.octopus-app {\n --octopus-accessibility-font-size: 16px;\n --octopus-accessibility-background: var(--octopus-background);\n --octopus-accessibility-color: var(--octopus-color-text);\n\n .language-selector {\n display: flex;\n align-items: center;\n margin-left: 1rem;\n\n span {\n font-weight: 600;\n }\n }\n\n .transcription-section-buttons{\n display: flex;\n justify-content: space-between;\n flex-wrap: wrap;\n @media (width <= 625px) {\n flex-direction: column;\n }\n }\n .btn-transcript {\n position: relative;\n border-radius: var(--octopus-border-radius);\n overflow: hidden;\n transition: all 0.2s linear 0s;\n \n &.open{\n margin-left:auto;\n direction: rtl;\n @media (width <= 625px) {\n margin-top: 0.5rem;\n }\n }\n &:not(.open){\n margin-right: auto;\n }\n\n &:not(.open)::before,\n &.open::after {\n content: \"➤\";\n display: flex;\n align-items: center;\n justify-content: center;\n position: absolute;\n top: 0;\n height: 100%;\n width: 30px;\n border-radius: 0 50% 50% 0;\n background-color: var(--octopus-background-transparent);\n transform: scale(0, 1);\n transition: all 0.2s linear 0s;\n }\n\n &:not(.open)::before {\n left: 0;\n transform-origin: left center;\n }\n\n &.open::after {\n right: -30px;\n transform-origin: center left;\n }\n &:hover {\n text-indent: 30px;\n }\n\n &:not(.open):hover::before,\n &.open:hover::after {\n text-indent: 0;\n }\n\n &:not(.open):hover::before {\n transform: scale(1, 1);\n }\n\n &.open:hover::after {\n transform: scale(-1, 1);\n }\n }\n\n .transcription-body {\n font-size: var(--octopus-accessibility-font-size);\n position: relative;\n padding: 1rem;\n max-height: 250px;\n display: flex;\n justify-content: center;\n white-space: pre-wrap;\n background: var(--octopus-accessibility-background);\n color: var(--octopus-accessibility-color);\n border: 2px solid var(--octopus-border-default);\n border-radius: var(--octopus-border-radius);\n\n .transcription-text {\n overflow: hidden auto;\n }\n }\n}\n</style>\n","<template>\n <div>\n <AccessibilityModal\n v-if=\"isAccessibilityModal\"\n @save=\"saveAccessibility\"\n @close=\"isAccessibilityModal = false\"\n />\n <div class=\"transcription-section-buttons\">\n <button\n v-if=\"isOpen\"\n class=\"btn btn-primary m-0\"\n @click=\"isAccessibilityModal = true\"\n >\n <EyeOutlineIcon class=\"me-1\" /> {{ t('Transcript Accessibility') }}\n </button>\n\n <div\n v-if=\"isOpen && availableLanguagesOptions.length > 0\"\n class=\"language-selector\"\n >\n <span class=\"me-2\">{{ t('Transcript - Available languages') }}</span>\n <ClassicSelect\n :text-init=\"currentLanguage\"\n :is-disabled=\"!loadingDone\"\n :options=\"availableLanguagesOptions\"\n :display-label=\"false\"\n @update:text-init=\"changeLanguage\"\n />\n </div>\n \n <button\n class=\"btn btn-transcript\"\n :class=\"{ open: isOpen }\"\n @click=\"isOpen = !isOpen\"\n >\n {{ buttonText }}\n </button>\n </div>\n <div v-if=\"isOpen\" class=\"transcription-body\">\n <ClassicLoading\n :loading-text=\"!loadingDone ? t('Loading content ...') : undefined\"\n />\n <div class=\"transcription-text\">\n <template v-if=\"loadingDone && transcript?.length\">\n {{ transcript }}\n </template>\n <template v-if=\"loadingDone && !transcript?.length\">\n {{ t(\"Transcript does not yet exist for this episode\") }}\n </template>\n </div>\n </div>\n </div>\n</template>\n\n<script setup lang=\"ts\">\nimport cookiesHelper from \"../../../helper/cookiesHelper\";\nimport EyeOutlineIcon from \"vue-material-design-icons/EyeOutline.vue\";\nimport ClassicLoading from \"../../form/ClassicLoading.vue\";\nimport { computed, defineAsyncComponent, ref, watch } from \"vue\";\nimport { useI18n } from \"vue-i18n\";\nimport { transcriptionApi, TranslationState } from \"../../../api/transcriptionApi\";\nimport { useTranslation } from \"../../composable/useTranslation\";\nimport ClassicSelect from \"../../form/ClassicSelect.vue\";\nconst AccessibilityModal = defineAsyncComponent(\n () => import(\"../accessibility/AccessibilityModal.vue\"),\n);\n\n//Props \nconst props = defineProps<{\n /** ID of the podcast for which to display transcription */\n podcastId: number;\n}>();\n\n//Data \nconst isOpen = ref(false);\nconst loadingDone = ref(false);\nconst isAccessibilityModal = ref(false);\nconst transcript = ref<string|undefined>(undefined);\n/** Native language of the podcast */\nconst nativeLanguage = ref('');\n/** List of languages for which a transcription exists */\nconst availableLanguages = ref<Array<string>>([]);\n/** Currently shown language */\nconst currentLanguage = ref('');\n\n//Composables\nconst { t } = useI18n();\nconst { convertSrtToPlainText, getMostRelevantLanguage } = useTranslation();\n\n//Computed\nconst buttonText = computed(() => isOpen.value? t(\"Hide transcript\"): t(\"View transcript\"));\n\nconst availableLanguagesOptions = computed(() => {\n return availableLanguages.value.map(lang => ({\n title: lang,\n value: lang\n }));\n})\n\n//Watch\nwatch(isOpen, () => {\n if (isOpen.value && !loadingDone.value) {\n if (props.podcastId) {\n fetchTranscripts();\n }\n getAccessibility();\n }\n});\n\n//Methods\nfunction getAccessibility(){\n const fontSize = cookiesHelper.getCookie(\"octopus-font-size\");\n if (null !== fontSize) {\n setCssProperty('--octopus-accessibility-font-size', fontSize);\n }\n const background = cookiesHelper.getCookie(\"octopus-background\");\n if (null !== background) {\n setCssProperty('--octopus-accessibility-background', background);\n }\n const color = cookiesHelper.getCookie(\"octopus-color\");\n if (null !== color) {\n setCssProperty('--octopus-accessibility-color', color);\n }\n}\n\nfunction setCssProperty(name: string, value: string){\n document.documentElement.style.setProperty(name,value);\n}\n\nfunction saveAccessibility(accessibility: {fontSize: number,background: string,color: string}){\n setCssProperty('--octopus-accessibility-font-size', accessibility.fontSize+'px');\n cookiesHelper.setCookie(\"octopus-font-size\", accessibility.fontSize+'px');\n setCssProperty('--octopus-accessibility-background', accessibility.background);\n cookiesHelper.setCookie(\"octopus-background\",accessibility.background);\n setCssProperty('--octopus-accessibility-color', accessibility.color);\n cookiesHelper.setCookie(\"octopus-color\",accessibility.color);\n isAccessibilityModal.value = false;\n}\n\nasync function fetchTranscripts(language?: string): Promise<void> {\n try {\n const translation = await transcriptionApi.getTranslations(props.podcastId);\n if (language === undefined) {\n const { ready, available } = await getMostRelevantLanguage(translation);\n // If available language is set, it is better than ready, so use it\n language = available ?? ready;\n }\n const srt = await transcriptionApi.getTranslation(props.podcastId, language, true);\n transcript.value = convertSrtToPlainText(srt);\n \n availableLanguages.value = translation.translations\n .filter(t => t.state === TranslationState.FINISHED)\n .map(t => t.language);\n nativeLanguage.value = translation.nativeLanguage;\n currentLanguage.value = language;\n availableLanguages.value.unshift(translation.nativeLanguage);\n\n if (!availableLanguages.value.includes(language)) {\n availableLanguages.value.push(language);\n }\n } catch (error) {\n console.error(error);\n }\n loadingDone.value = true;\n}\n\nasync function changeLanguage(language: string): Promise<void> {\n loadingDone.value = false;\n currentLanguage.value = language;\n transcript.value = undefined;\n try {\n const srt = await transcriptionApi.getTranslation(props.podcastId, language); \n transcript.value = convertSrtToPlainText(srt);\n } catch (error) {\n console.error(error);\n }\n loadingDone.value = true;\n}\n\n/** Force reloading */\nfunction reset(): void {\n if (isOpen.value || loadingDone.value) {\n fetchTranscripts(currentLanguage.value);\n }\n}\n\ndefineExpose({ reset });\n</script>\n\n<style scoped lang=\"scss\">\n.octopus-app {\n --octopus-accessibility-font-size: 16px;\n --octopus-accessibility-background: var(--octopus-background);\n --octopus-accessibility-color: var(--octopus-color-text);\n\n .language-selector {\n display: flex;\n align-items: center;\n margin-left: 1rem;\n\n span {\n font-weight: 600;\n }\n }\n\n .transcription-section-buttons{\n display: flex;\n justify-content: space-between;\n flex-wrap: wrap;\n @media (width <= 625px) {\n flex-direction: column;\n }\n }\n .btn-transcript {\n position: relative;\n border-radius: var(--octopus-border-radius);\n overflow: hidden;\n transition: all 0.2s linear 0s;\n \n &.open{\n margin-left:auto;\n direction: rtl;\n @media (width <= 625px) {\n margin-top: 0.5rem;\n }\n }\n &:not(.open){\n margin-right: auto;\n }\n\n &:not(.open)::before,\n &.open::after {\n content: \"➤\";\n display: flex;\n align-items: center;\n justify-content: center;\n position: absolute;\n top: 0;\n height: 100%;\n width: 30px;\n border-radius: 0 50% 50% 0;\n background-color: var(--octopus-background-transparent);\n transform: scale(0, 1);\n transition: all 0.2s linear 0s;\n }\n\n &:not(.open)::before {\n left: 0;\n transform-origin: left center;\n }\n\n &.open::after {\n right: -30px;\n transform-origin: center left;\n }\n &:hover {\n text-indent: 30px;\n }\n\n &:not(.open):hover::before,\n &.open:hover::after {\n text-indent: 0;\n }\n\n &:not(.open):hover::before {\n transform: scale(1, 1);\n }\n\n &.open:hover::after {\n transform: scale(-1, 1);\n }\n }\n\n .transcription-body {\n font-size: var(--octopus-accessibility-font-size);\n position: relative;\n padding: 1rem;\n max-height: 250px;\n display: flex;\n justify-content: center;\n white-space: pre-wrap;\n background: var(--octopus-accessibility-background);\n color: var(--octopus-accessibility-color);\n border: 2px solid var(--octopus-border-default);\n border-radius: var(--octopus-border-radius);\n\n .transcription-text {\n overflow: hidden auto;\n }\n }\n}\n</style>\n"],"mappings":"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"}
|
|
@@ -1,9 +1,9 @@
|
|
|
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 { r as useFilterStore, t as classicApi_default } from "./classicApi-
|
|
4
|
-
import { t as SwiperList_default } from "./SwiperList-
|
|
5
|
-
import { t as PodcastItem_default } from "./PodcastItem-
|
|
6
|
-
import { t as PodcastInlineListTemplate_default } from "./PodcastInlineListTemplate-
|
|
3
|
+
import { r as useFilterStore, t as classicApi_default } from "./classicApi-xjOqAovv.mjs";
|
|
4
|
+
import { t as SwiperList_default } from "./SwiperList-C51H-enh.mjs";
|
|
5
|
+
import { t as PodcastItem_default } from "./PodcastItem-_8ErwIDG.mjs";
|
|
6
|
+
import { t as PodcastInlineListTemplate_default } from "./PodcastInlineListTemplate-DCWn3r7s.mjs";
|
|
7
7
|
import { computed, createBlock, createCommentVNode, createVNode, defineComponent, onBeforeMount, openBlock, ref, watch, withCtx } from "vue";
|
|
8
8
|
import { useI18n } from "vue-i18n";
|
|
9
9
|
import dayjs from "dayjs";
|
|
@@ -216,4 +216,4 @@ var PodcastSwiperList_default = /*#__PURE__*/ _plugin_vue_export_helper_default(
|
|
|
216
216
|
//#endregion
|
|
217
217
|
export { PodcastSwiperList_default as default };
|
|
218
218
|
|
|
219
|
-
//# sourceMappingURL=PodcastSwiperList-
|
|
219
|
+
//# sourceMappingURL=PodcastSwiperList-BhulNkN-.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"PodcastSwiperList-BhulNkN-.mjs","names":[],"sources":["../src/components/display/podcasts/PodcastSwiperList.vue","../src/components/display/podcasts/PodcastSwiperList.vue"],"sourcesContent":["<template>\n <PodcastInlineListTemplate\n v-if=\"loading || (!loading && 0 !== allPodcasts.length)\"\n :display-arrow=\"false\"\n :popular-sort=\"popularSort\"\n :button-text=\"buttonText\"\n :button-plus=\"buttonPlus\"\n :title=\"title\"\n :href=\"href\"\n :iab-id=\"iabId\"\n :rubrique-id=\"rubriqueId\"\n :no-rubriquage-id=\"noRubriquageId\"\n :title-tag=\"titleTag\"\n :no-sort=\"noSort\"\n @sort-chrono=\"sortChrono\"\n @sort-popular=\"sortPopular\"\n >\n <template #list-inline>\n <ClassicLoading\n class=\"loading-size\"\n :loading-text=\"loading ? t('Loading podcasts ...') : undefined\"\n />\n <SwiperList v-if=\"!loading\" :list-object=\"allPodcasts\">\n <template #octopusSlide=\"{ option }\">\n <PodcastItem\n class=\"flex-shrink-0 item-phone-margin\"\n :podcast=\"option\"\n />\n </template>\n </SwiperList>\n </template>\n </PodcastInlineListTemplate>\n</template>\n\n<script setup lang=\"ts\">\nimport dayjs from \"dayjs\";\nimport PodcastInlineListTemplate from \"./PodcastInlineListTemplate.vue\";\nimport classicApi from \"../../../api/classicApi\";\nimport PodcastItem from \"./PodcastItem.vue\";\nimport ClassicLoading from \"../../form/ClassicLoading.vue\";\nimport SwiperList from \"../list/SwiperList.vue\";\nimport { useFilterStore } from \"../../../stores/FilterStore\";\nimport { Podcast } from \"@/stores/class/general/podcast\";\nimport { computed, onBeforeMount, Ref, ref, watch } from \"vue\";\nimport { ListClassicReturn } from \"@/stores/class/general/listReturn\";\nimport { useI18n } from \"vue-i18n\";\n\n//Props \nconst props = defineProps({\n organisationId: { default: () => [], type: Array as () => Array<string> },\n emissionId: { default: undefined, type: Number },\n iabId: { default: undefined, type: Number },\n title: { default: \"\", type: String },\n href: { default: undefined, type: String },\n buttonText: { default: undefined, type: String },\n isArrow: { default: false, type: Boolean },\n requirePopularSort: { default: undefined, type: Boolean },\n buttonPlus: { default: false, type: Boolean },\n rubriqueId: { default: () => [], type: Array as () => Array<number> },\n rubriquageId: { default: () => [], type: Array as () => Array<number> },\n noRubriquageId: { default: () => [], type: Array as () => Array<number> },\n query: { default: undefined, type: String },\n /** Filter on season */\n season: { default: undefined, type: Number },\n lastThreeMonths: { default: false, type: Boolean },\n titleTag: { default: \"h2\", type: String },\n /** The podcast from which suggestions are made */\n podcastId: { type: Number },\n /** Hide sort options */\n noSort: { default: false, type: Boolean }\n})\n\n//Emits\nconst emit = defineEmits([\"update:isArrow\"]);\n\n//Data \nconst loading = ref(true);\nconst popularSort = ref(false);\nconst allPodcasts: Ref<Array<Podcast>> = ref([]);\n\n\n//Composables\nconst { t } = useI18n();\nconst filterStore = useFilterStore();\n\n//Computed\nconst organisation = computed(() => {\n if (props.organisationId.length) {\n return props.organisationId;\n }\n return filterStore.filterOrgaId ? [filterStore.filterOrgaId] : [];\n});\nconst watchVariable = computed(() => {\n return `${props.emissionId}|${props.organisationId}|${filterStore.filterOrgaId}|${props.iabId}|${props.rubriqueId}|${props.rubriquageId}|${props.query}`;\n});\n\n\n//Watch\nwatch(watchVariable, () => fetchNext(), {immediate:true});\n\nonBeforeMount(()=>{\n if (undefined !== props.requirePopularSort) {\n popularSort.value = props.requirePopularSort;\n }\n if (undefined !== props.isArrow) {\n emit(\"update:isArrow\", true);\n }\n})\n\n//Methods\nasync function fetchNext(): Promise<void> {\n // TODO use podcastApi\n const data = await classicApi.fetchData<ListClassicReturn<Podcast>>({\n api: 0,\n path: \"podcast/search\",\n parameters: {\n first: 0,\n size: 12,\n organisationId: organisation.value,\n emissionId: props.emissionId,\n iabId: props.iabId,\n rubriqueId: props.rubriqueId.length ? props.rubriqueId : undefined,\n rubriquageId: props.rubriquageId.length\n ? props.rubriquageId\n : undefined,\n noRubriquageId: props.noRubriquageId.length\n ? props.noRubriquageId\n : undefined,\n sort: popularSort.value ? \"POPULARITY\" : \"DATE\",\n query: props.query,\n includeStatus: [\"READY\", \"PROCESSING\"],\n after: popularSort.value && props.lastThreeMonths\n ? dayjs().subtract(3, \"months\").toISOString()\n : undefined,\n season: props.season\n },\n specialTreatement: true,\n });\n loading.value = true;\n allPodcasts.value = data.result.filter(\n // Exclude empty podcasts and current podcast\n (pod: Podcast | null) => null !== pod && pod.podcastId !== props.podcastId\n );\n loading.value = false;\n}\nfunction sortPopular(): void {\n if (popularSort.value) return;\n popularSort.value = true;\n fetchNext();\n}\nfunction sortChrono(): void {\n if (!popularSort.value) return;\n popularSort.value = false;\n fetchNext();\n}\n</script>\n","<template>\n <PodcastInlineListTemplate\n v-if=\"loading || (!loading && 0 !== allPodcasts.length)\"\n :display-arrow=\"false\"\n :popular-sort=\"popularSort\"\n :button-text=\"buttonText\"\n :button-plus=\"buttonPlus\"\n :title=\"title\"\n :href=\"href\"\n :iab-id=\"iabId\"\n :rubrique-id=\"rubriqueId\"\n :no-rubriquage-id=\"noRubriquageId\"\n :title-tag=\"titleTag\"\n :no-sort=\"noSort\"\n @sort-chrono=\"sortChrono\"\n @sort-popular=\"sortPopular\"\n >\n <template #list-inline>\n <ClassicLoading\n class=\"loading-size\"\n :loading-text=\"loading ? t('Loading podcasts ...') : undefined\"\n />\n <SwiperList v-if=\"!loading\" :list-object=\"allPodcasts\">\n <template #octopusSlide=\"{ option }\">\n <PodcastItem\n class=\"flex-shrink-0 item-phone-margin\"\n :podcast=\"option\"\n />\n </template>\n </SwiperList>\n </template>\n </PodcastInlineListTemplate>\n</template>\n\n<script setup lang=\"ts\">\nimport dayjs from \"dayjs\";\nimport PodcastInlineListTemplate from \"./PodcastInlineListTemplate.vue\";\nimport classicApi from \"../../../api/classicApi\";\nimport PodcastItem from \"./PodcastItem.vue\";\nimport ClassicLoading from \"../../form/ClassicLoading.vue\";\nimport SwiperList from \"../list/SwiperList.vue\";\nimport { useFilterStore } from \"../../../stores/FilterStore\";\nimport { Podcast } from \"@/stores/class/general/podcast\";\nimport { computed, onBeforeMount, Ref, ref, watch } from \"vue\";\nimport { ListClassicReturn } from \"@/stores/class/general/listReturn\";\nimport { useI18n } from \"vue-i18n\";\n\n//Props \nconst props = defineProps({\n organisationId: { default: () => [], type: Array as () => Array<string> },\n emissionId: { default: undefined, type: Number },\n iabId: { default: undefined, type: Number },\n title: { default: \"\", type: String },\n href: { default: undefined, type: String },\n buttonText: { default: undefined, type: String },\n isArrow: { default: false, type: Boolean },\n requirePopularSort: { default: undefined, type: Boolean },\n buttonPlus: { default: false, type: Boolean },\n rubriqueId: { default: () => [], type: Array as () => Array<number> },\n rubriquageId: { default: () => [], type: Array as () => Array<number> },\n noRubriquageId: { default: () => [], type: Array as () => Array<number> },\n query: { default: undefined, type: String },\n /** Filter on season */\n season: { default: undefined, type: Number },\n lastThreeMonths: { default: false, type: Boolean },\n titleTag: { default: \"h2\", type: String },\n /** The podcast from which suggestions are made */\n podcastId: { type: Number },\n /** Hide sort options */\n noSort: { default: false, type: Boolean }\n})\n\n//Emits\nconst emit = defineEmits([\"update:isArrow\"]);\n\n//Data \nconst loading = ref(true);\nconst popularSort = ref(false);\nconst allPodcasts: Ref<Array<Podcast>> = ref([]);\n\n\n//Composables\nconst { t } = useI18n();\nconst filterStore = useFilterStore();\n\n//Computed\nconst organisation = computed(() => {\n if (props.organisationId.length) {\n return props.organisationId;\n }\n return filterStore.filterOrgaId ? [filterStore.filterOrgaId] : [];\n});\nconst watchVariable = computed(() => {\n return `${props.emissionId}|${props.organisationId}|${filterStore.filterOrgaId}|${props.iabId}|${props.rubriqueId}|${props.rubriquageId}|${props.query}`;\n});\n\n\n//Watch\nwatch(watchVariable, () => fetchNext(), {immediate:true});\n\nonBeforeMount(()=>{\n if (undefined !== props.requirePopularSort) {\n popularSort.value = props.requirePopularSort;\n }\n if (undefined !== props.isArrow) {\n emit(\"update:isArrow\", true);\n }\n})\n\n//Methods\nasync function fetchNext(): Promise<void> {\n // TODO use podcastApi\n const data = await classicApi.fetchData<ListClassicReturn<Podcast>>({\n api: 0,\n path: \"podcast/search\",\n parameters: {\n first: 0,\n size: 12,\n organisationId: organisation.value,\n emissionId: props.emissionId,\n iabId: props.iabId,\n rubriqueId: props.rubriqueId.length ? props.rubriqueId : undefined,\n rubriquageId: props.rubriquageId.length\n ? props.rubriquageId\n : undefined,\n noRubriquageId: props.noRubriquageId.length\n ? props.noRubriquageId\n : undefined,\n sort: popularSort.value ? \"POPULARITY\" : \"DATE\",\n query: props.query,\n includeStatus: [\"READY\", \"PROCESSING\"],\n after: popularSort.value && props.lastThreeMonths\n ? dayjs().subtract(3, \"months\").toISOString()\n : undefined,\n season: props.season\n },\n specialTreatement: true,\n });\n loading.value = true;\n allPodcasts.value = data.result.filter(\n // Exclude empty podcasts and current podcast\n (pod: Podcast | null) => null !== pod && pod.podcastId !== props.podcastId\n );\n loading.value = false;\n}\nfunction sortPopular(): void {\n if (popularSort.value) return;\n popularSort.value = true;\n fetchNext();\n}\nfunction sortChrono(): void {\n if (!popularSort.value) return;\n popularSort.value = false;\n fetchNext();\n}\n</script>\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAgDA,MAAM,QAAQ;EAyBd,MAAM,OAAO;EAGb,MAAM,UAAU,IAAI,IAAI;EACxB,MAAM,cAAc,IAAI,KAAK;EAC7B,MAAM,cAAmC,IAAI,CAAC,CAAC;EAI/C,MAAM,EAAE,MAAM,QAAQ;EACtB,MAAM,cAAc,eAAe;EAGnC,MAAM,eAAe,eAAe;GAClC,IAAI,MAAM,eAAe,QACvB,OAAO,MAAM;GAEf,OAAO,YAAY,eAAe,CAAC,YAAY,YAAY,IAAI,CAAC;EAClE,CAAC;EACD,MAAM,gBAAgB,eAAe;GACnC,OAAO,GAAG,MAAM,WAAW,GAAG,MAAM,eAAe,GAAG,YAAY,aAAa,GAAG,MAAM,MAAM,GAAG,MAAM,WAAW,GAAG,MAAM,aAAa,GAAG,MAAM;EACnJ,CAAC;EAID,MAAM,qBAAqB,UAAU,GAAG,EAAC,WAAU,KAAI,CAAC;EAExD,oBAAkB;GAChB,IAAI,KAAA,MAAc,MAAM,oBACtB,YAAY,QAAQ,MAAM;GAE5B,IAAI,KAAA,MAAc,MAAM,SACtB,KAAK,kBAAkB,IAAI;EAE/B,CAAC;EAGD,eAAe,YAA2B;GAExC,MAAM,OAAO,MAAM,mBAAW,UAAsC;IAClE,KAAK;IACL,MAAM;IACN,YAAY;KACV,OAAO;KACP,MAAM;KACN,gBAAgB,aAAa;KAC7B,YAAY,MAAM;KAClB,OAAO,MAAM;KACb,YAAY,MAAM,WAAW,SAAS,MAAM,aAAa,KAAA;KACzD,cAAc,MAAM,aAAa,SAC7B,MAAM,eACN,KAAA;KACJ,gBAAgB,MAAM,eAAe,SACjC,MAAM,iBACN,KAAA;KACJ,MAAM,YAAY,QAAQ,eAAe;KACzC,OAAO,MAAM;KACb,eAAe,CAAC,SAAS,YAAY;KACrC,OAAO,YAAY,SAAS,MAAM,kBAC5B,MAAM,EAAE,SAAS,GAAG,QAAQ,EAAE,YAAY,IAC1C,KAAA;KACN,QAAQ,MAAM;IAChB;IACA,mBAAmB;GACrB,CAAC;GACD,QAAQ,QAAQ;GAChB,YAAY,QAAQ,KAAK,OAAO,QAE7B,QAAwB,SAAS,OAAO,IAAI,cAAc,MAAM,SACnE;GACA,QAAQ,QAAQ;EAClB;EACA,SAAS,cAAoB;GAC3B,IAAI,YAAY,OAAO;GACvB,YAAY,QAAQ;GACpB,UAAU;EACZ;EACA,SAAS,aAAmB;GAC1B,IAAI,CAAC,YAAY,OAAO;GACxB,YAAY,QAAQ;GACpB,UAAU;EACZ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;QCxJU,OAAA,WAAO,CAAM,OAAA,WAAO,MAAU,OAAA,YAAY,UAAA,UAAA,GADlD,YA8B4B,OAAA,8BAAA;;EA5BzB,iBAAe;EACf,gBAAc,OAAA;EACd,eAAa,OAAA;EACb,eAAa,OAAA;EACb,OAAO,OAAA;EACP,MAAM,OAAA;EACN,UAAQ,OAAA;EACR,eAAa,OAAA;EACb,oBAAkB,OAAA;EAClB,aAAW,OAAA;EACX,WAAS,OAAA;EACT,cAAa,OAAA;EACb,eAAc,OAAA;;EAEJ,eAAW,cAIlB,CAHF,YAGE,OAAA,mBAAA;GAFA,OAAM;GACL,gBAAc,OAAA,UAAU,OAAA,EAAC,sBAAA,IAA2B,KAAA;kCAEpC,OAAA,WAAA,UAAA,GAAnB,YAOa,OAAA,eAAA;;GAPgB,eAAa,OAAA;;GAC7B,cAAY,SAInB,EAJuB,aAAM,CAC/B,YAGE,OAAA,gBAAA;IAFA,OAAM;IACL,SAAS"}
|