@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":"PodcastPage-DQInD9ry.mjs","names":[],"sources":["../src/components/display/podcasts/PodcastModuleBox.vue","../src/components/display/podcasts/PodcastModuleBox.vue","../src/components/pages/PodcastPage.vue","../src/components/pages/PodcastPage.vue"],"sourcesContent":["<template>\n <section v-if=\"podcast\" class=\"module-box\">\n <slot\n v-if=\"!!podcastConference && isLiveReadyToRecord && isOctopusAndAnimator\"\n name=\"recording-item-button\"\n :podcast=\"podcast\"\n :live=\"true\"\n :recording=\"podcastConference\"\n :on-delete-item=\"removeDeleted\"\n :on-validate-podcast=\"(p) => emit('updatePodcast', p)\"\n />\n <slot\n v-else-if=\"editRight && isEditBox\"\n name=\"edit-box\"\n :podcast=\"podcast\"\n :display-studio-access=\"isDebriefing\"\n :on-update-transcription=\"resetTranscription\"\n :on-validate-podcast=\"(p) => emit('updatePodcast', p)\"\n />\n <div class=\"mb-2 w-100\">\n <PodcastImage\n :class=\"[\n isLiveReadyToRecord &&\n podcastConference &&\n 'null' !== podcastConference &&\n podcastConference.status\n ? podcastConference.status.toLowerCase() + '-shadow'\n : '',\n ]\"\n class=\"me-3\"\n show-processing\n :hide-play=\"isLiveReadyToRecord\"\n :podcast=\"podcast\"\n :playing-podcast=\"playingPodcast\"\n :fetch-conference=\"podcastConference\"\n :is-animator-live=\"isOctopusAndAnimator\"\n />\n <div class=\"d-flex justify-content-between flex-wrap mb-2\">\n <time \n v-if=\"0 !== date.length\"\n :class=\"!isLiveReady ? 'me-5' : ''\"\n :datetime=\"podcast.pubDate\"\n >\n {{ date }}\n </time>\n <div v-if=\"isLiveReady\" class=\"text-danger\">\n {{ t(\"Episode record in live\") }}\n </div>\n <div class=\"d-flex flex-column align-items-end\">\n <time :datetime=\"durationIso\">\n {{ duration }}\n </time>\n <ShareAnonymous\n v-if=\"!editRight\"\n :podcast=\"podcast\"\n :organisation-id=\"podcast.organisation.id\"\n />\n </div>\n </div>\n <h2 :class=\"{ 'mb-3': !showSubtitle }\">\n <RightsIndicator\n :podcast=\"podcast\"\n action=\"edit\"\n inline\n />\n {{ podcast.title }}\n </h2>\n <h3 v-if=\"showSubtitle\" class=\"mb-3 text-secondary\">\n {{ podcast.annotations.subtitle }}\n </h3>\n \n <PodcastPlannedSpinner v-if=\"isPlannedInProcessor\" />\n <Countdown v-if=\"isCounter\" :time-remaining=\"timeRemaining\" />\n <!-- eslint-disable vue/no-v-html -->\n <div\n v-if=\"showSummary\"\n class=\"description-text html-wysiwyg-content\"\n :class=\"{ 'mb-4': showSummary && showDescription }\"\n v-html=\"urlify(podcast.summary)\"\n />\n <div\n v-if=\"showDescription\"\n class=\"description-text html-wysiwyg-content\"\n v-html=\"urlify(podcast.description)\"\n />\n <!-- eslint-enable -->\n <div class=\"my-3\">\n <div class=\"mb-1\">\n {{ t(\"Emission\") + \" : \" }}\n <router-link\n :to=\"{\n name: 'emission',\n params: { emissionId: podcast.emission.emissionId },\n }\"\n :title=\"t('Series name page', { name: podcast.emission.name })\"\n >\n {{ podcast.emission.name }}\n </router-link>\n </div>\n <ParticipantDescription :participants=\"podcast.animators\" />\n <ParticipantDescription\n :participants=\"podcast.guests\"\n :is-guest=\"true\"\n />\n <div v-if=\"!isPodcastmaker\" class=\"mb-1\">\n {{ t(\"Producted by : \") }}\n <router-link\n :to=\"{\n name: 'productor',\n params: { productorId: podcast.organisation.id },\n }\"\n >\n {{ podcast.organisation.name }}\n </router-link>\n </div>\n <div v-if=\"showSeasonNumber\" class=\"mb-1\">\n {{ `${t('Podcast - Season')} : ${podcast.seasonNumber}` }}\n </div>\n <div v-if=\"showSeasonEpisodeNumber\" class=\"mb-1\">\n {{ `${t('Podcast - Episode number')} : ${podcast.seasonEpisodeNumber}` }}\n </div>\n <div v-if=\"'' !== photoCredit\" class=\"mb-1\">\n {{ t(\"Photo credits\") + \" : \" + photoCredit }}\n </div>\n <div v-if=\"'' !== audioCredit\" class=\"mb-1\">\n {{ t(\"Audio credits\") + \" : \" + audioCredit }}\n </div>\n <div v-if=\"'' !== authorCredit\" class=\"mb-1\">\n {{ t(\"Author credits\") + \" : \" + authorCredit }}\n </div>\n <a\n v-if=\"podcast.article && !authStore.isGarRole\"\n class=\"btn d-flex align-items-center my-2 w-fit-content mb-1\"\n :href=\"podcast.article\"\n rel=\"noreferrer noopener\"\n target=\"_blank\"\n :title=\"t('New window', {text : t('See associated article')})\"\n >\n <NewspaperVariantOutlineIcon class=\"me-1\" />\n <div>{{ t(\"See associated article\") }}</div>\n </a>\n <PodcastPlayBar\n v-if=\"state.emissionsPage.progressBar\"\n :podcast=\"podcast\"\n />\n <div v-if=\"editRight && !isPodcastmaker\">\n <div\n v-if=\"\n podcast.annotations && 'RSS' === podcast.annotations.SOURCE_KIND\n \"\n class=\"me-5 text-secondary\"\n >\n {{ t(\"From RSS\") }}\n </div>\n <ClassicAlert\n v-if=\"alert\"\n :type=\"alert.type\"\n style=\"width: fit-content\"\n >\n <div class=\"d-flex align-items-center\">\n {{ alert.message }}\n\n <slot name=\"alert-message\" :alert=\"alert\" />\n </div>\n </ClassicAlert>\n </div>\n <div class=\"d-flex align-items-center flex-wrap\">\n <LikeSection :edit-right=\"editRight\" :podcast=\"podcast\" />\n <DownloadPodcastButton v-if=\"state.podcastPage.downloadButton\" :podcast=\"podcast\" />\n </div>\n </div>\n </div>\n <TagList\n v-if=\"showTags\"\n :tag-list=\"tags\"\n :orga-id=\"podcast.organisation.id\"\n :podcast-annotations=\"podcast.annotations\"\n :max=\"state.podcastPage.maxTags\"\n />\n <InlineRubriqueList\n v-if=\"podcastRubriques?.length\"\n :orga-id=\"podcast.organisation.id\"\n :rubrique-ids=\"podcastRubriques\"\n />\n <PodcastRawTranscript\n ref=\"podcastRawTranscript\"\n :podcast-id=\"podcast.podcastId\"\n />\n <SubscribeButtons\n v-if=\"isPodcastmaker\"\n class=\"mt-4\"\n :content=\"podcast.emission\"\n :window-width=\"1000\"\n :justify-center=\"false\"\n />\n </section>\n</template>\n\n<script setup lang=\"ts\">\nimport NewspaperVariantOutlineIcon from \"vue-material-design-icons/NewspaperVariantOutline.vue\";\nimport PodcastImage from \"./PodcastImage.vue\";\nimport ParticipantDescription from \"./ParticipantDescription.vue\";\nimport PodcastRawTranscript from \"./PodcastRawTranscript.vue\";\nimport { state } from \"../../../stores/ParamSdkStore\";\nimport { useAuthStore } from \"../../../stores/AuthStore\";\nimport displayHelper from \"../../../helper/displayHelper\";\nimport {usePodcastView} from \"../../composable/podcasts/usePodcastView\";\nimport { Podcast } from \"../../../stores/class/general/podcast\";\nimport { Conference } from \"../../../stores/class/conference/conference\";\nimport { useI18n } from \"vue-i18n\";\nimport { useRouter } from \"vue-router\";\nimport { useSeasonsManagement } from \"../../composable/useSeasonsManagement\";\nimport { SeasonMode } from \"../../../stores/class/general/emission\";\nimport RightsIndicator from \"../RightsIndicator.vue\"; \nimport ClassicAlert from \"@/components/misc/ClassicAlert.vue\"; \n\nimport { defineAsyncComponent, toRefs, computed, useTemplateRef } from \"vue\";\nimport { useAppleVideo } from \"@/components/composable/useAppleVideo\";\nconst PodcastPlayBar = defineAsyncComponent(\n () => import(\"./PodcastPlayBar.vue\"),\n);\nconst SubscribeButtons = defineAsyncComponent(\n () => import(\"../sharing/SubscribeButtons.vue\"),\n);\nconst LikeSection = defineAsyncComponent(\n () => import(\"../comments/like/LikeSection.vue\"),\n);\nconst DownloadPodcastButton = defineAsyncComponent(\n () => import(\"./DownloadPodcastButton.vue\"),\n);\nconst PodcastPlannedSpinner = defineAsyncComponent(\n () => import(\"./PodcastPlannedSpinner.vue\"),\n);\nconst Countdown = defineAsyncComponent(() => import(\"../live/CountDown.vue\"));\nconst TagList = defineAsyncComponent(() => import(\"./TagList.vue\"));\nconst ShareAnonymous = defineAsyncComponent(() => import(\"../sharing/ShareAnonymous.vue\"));\nconst InlineRubriqueList = defineAsyncComponent(() => import(\"../rubriques/InlineRubriqueList.vue\"));\n\n//Props \nconst props = defineProps<{\n podcast: Podcast;\n playingPodcast?: Podcast;\n podcastConference?: Conference;\n}>();\n\n//Emits\nconst emit = defineEmits([\"updatePodcast\"]);\n\n//Composables\nconst { t } = useI18n();\nconst propsRef = toRefs(props);\nconst { \n isLiveReadyToRecord,\n isCounter,\n timeRemaining,\n isPlannedInProcessor,\n date,\n duration,\n durationIso,\n isPodcastmaker,\n editRight\n} = usePodcastView(propsRef.podcast, propsRef.podcastConference);\nconst authStore = useAuthStore();\nconst router = useRouter();\nconst { areSeasonsEnabled } = useSeasonsManagement();\nconst { isErrorStatus, toGenericErrorCode } = useAppleVideo();\n\n/** Reference to the PodcastRqwTranscript */\nconst podcastRawTranscript = useTemplateRef('podcastRawTranscript');\n\n//Computed\nconst podcastRubriques = computed(() => {\n let rubriques = props.podcast?.rubriqueIds ?? [];\n if(props.podcast?.emission?.rubriqueIds){\n rubriques = [...new Set(rubriques.concat(props.podcast?.emission?.rubriqueIds))];\n }\n return rubriques;\n});\n\ninterface Alert {\n type: 'error'|'warning'|'info';\n message: string;\n code?: string;\n}\n\nconst alert = computed((): Alert|null => {\n if (\"ERROR\" === props.podcast?.processingStatus) {\n return {\n type: 'error',\n message: t(\"Podcast in ERROR, please contact Saooti\")\n };\n }\n const appleVideoStatus = props.podcast?.annotations?.appleVideoStatus as string|undefined;\n if (isErrorStatus(appleVideoStatus)) {\n return {\n type: 'error',\n message: t('Apple podcast - Error - Undefined', {\n status: appleVideoStatus\n }),\n code: toGenericErrorCode(appleVideoStatus)\n };\n }\n if (podcastNotValid.value) {\n return {\n type: 'warning',\n message: t(\"Podcast not validated\")\n };\n }\n if (appleVideoStatus === 'HLS_NOT_READY') {\n return {\n type: 'info',\n message: t('Apple podcast - Info - HLS_NOT_READY'),\n code: toGenericErrorCode(appleVideoStatus)\n };\n }\n if (!props.podcast?.availability.visibility) {\n return {\n type: 'warning',\n message: t(\"Podcast is not visible for listeners\")\n };\n }\n return null;\n});\n\nconst isLiveReady = computed(() => {\n return (\n undefined !== props.podcast?.conferenceId &&\n 0 !== props.podcast?.conferenceId &&\n \"READY\" === props.podcast?.processingStatus\n );\n});\nconst isDebriefing = computed(() => {\n return (\n undefined !== props.podcastConference &&\n \"DEBRIEFING\" === props.podcastConference.status\n );\n});\nconst isOctopusAndAnimator = computed(() => {\n return !isPodcastmaker.value && editRight.value && authStore.isRoleLive;\n});\nconst podcastNotValid = computed(() => {\n return (\n undefined !== props.podcast?.availability &&\n false === props.podcast?.valid\n );\n});\nconst photoCredit = computed(() => formatCredits(props.podcast?.annotations?.photoCredit as string|undefined));\nconst audioCredit = computed(() => formatCredits(props.podcast?.annotations?.audioCredit as string|undefined));\nconst authorCredit = computed(() => formatCredits(props.podcast?.annotations?.authorCredit as string|undefined));\nconst isEditBox = computed(() => !((state.generalParameters.podcastmaker as boolean) ?? false));\n/** The tags to display */\nconst tags = computed(() => {\n const tags = [];\n if(props.podcast.tags) {\n tags.push(...props.podcast.tags);\n }\n // Also display tags defined on emission\n if(props.podcast.emission.tags) {\n tags.push(...props.podcast.emission.tags);\n }\n return tags;\n});\n\nconst showSeasonNumber = computed((): boolean => {\n return areSeasonsEnabled(props.podcast.emission) && props.podcast.seasonNumber !== undefined;\n});\n\nconst showSeasonEpisodeNumber = computed((): boolean => {\n return props.podcast.emission.seasonMode === SeasonMode.SEASON_WITH_PODCAST_NUMBERING && props.podcast.seasonEpisodeNumber !== undefined;\n});\n\n/** Indicates whether to show subtitle */\nconst showSubtitle = computed((): boolean => {\n return props.podcast.annotations?.subtitle && state.podcastPage?.hideSubtitle !== true;\n});\n\n/** Indicates whether to show description */\nconst showDescription = computed((): boolean => {\n return state.podcastPage?.descriptionOrSummary !== 'summary';\n});\n\n/** Indicates whether to show summary */\nconst showSummary = computed((): boolean => {\n return props.podcast.summary && state.podcastPage?.descriptionOrSummary !== 'description' && state.podcastPage?.descriptionOrSummary !== undefined;\n});\n\n//Methods\nfunction formatCredits(credits: string|undefined): string {\n if (credits === undefined) {\n return '';\n }\n return credits.split(',').map(s => s.trim()).join(', ');\n}\nfunction urlify(text:string|undefined){\n return displayHelper.urlify(text);\n}\nfunction removeDeleted(): void {\n if (isLiveReadyToRecord.value) {\n router.push(\"/main/pub/lives\");\n } else if (window.history.length > 1) {\n router.go(-1);\n } else {\n router.push(\"/\");\n }\n}\n\nfunction resetTranscription(): void {\n podcastRawTranscript.value.reset();\n}\n\nconst showTags = computed((): boolean => {\n if (state.podcastPage.hideTags === true) {\n return false;\n }\n\n return undefined !== tags.value && 0 !== tags.value.length;\n});\n</script>\n","<template>\n <section v-if=\"podcast\" class=\"module-box\">\n <slot\n v-if=\"!!podcastConference && isLiveReadyToRecord && isOctopusAndAnimator\"\n name=\"recording-item-button\"\n :podcast=\"podcast\"\n :live=\"true\"\n :recording=\"podcastConference\"\n :on-delete-item=\"removeDeleted\"\n :on-validate-podcast=\"(p) => emit('updatePodcast', p)\"\n />\n <slot\n v-else-if=\"editRight && isEditBox\"\n name=\"edit-box\"\n :podcast=\"podcast\"\n :display-studio-access=\"isDebriefing\"\n :on-update-transcription=\"resetTranscription\"\n :on-validate-podcast=\"(p) => emit('updatePodcast', p)\"\n />\n <div class=\"mb-2 w-100\">\n <PodcastImage\n :class=\"[\n isLiveReadyToRecord &&\n podcastConference &&\n 'null' !== podcastConference &&\n podcastConference.status\n ? podcastConference.status.toLowerCase() + '-shadow'\n : '',\n ]\"\n class=\"me-3\"\n show-processing\n :hide-play=\"isLiveReadyToRecord\"\n :podcast=\"podcast\"\n :playing-podcast=\"playingPodcast\"\n :fetch-conference=\"podcastConference\"\n :is-animator-live=\"isOctopusAndAnimator\"\n />\n <div class=\"d-flex justify-content-between flex-wrap mb-2\">\n <time \n v-if=\"0 !== date.length\"\n :class=\"!isLiveReady ? 'me-5' : ''\"\n :datetime=\"podcast.pubDate\"\n >\n {{ date }}\n </time>\n <div v-if=\"isLiveReady\" class=\"text-danger\">\n {{ t(\"Episode record in live\") }}\n </div>\n <div class=\"d-flex flex-column align-items-end\">\n <time :datetime=\"durationIso\">\n {{ duration }}\n </time>\n <ShareAnonymous\n v-if=\"!editRight\"\n :podcast=\"podcast\"\n :organisation-id=\"podcast.organisation.id\"\n />\n </div>\n </div>\n <h2 :class=\"{ 'mb-3': !showSubtitle }\">\n <RightsIndicator\n :podcast=\"podcast\"\n action=\"edit\"\n inline\n />\n {{ podcast.title }}\n </h2>\n <h3 v-if=\"showSubtitle\" class=\"mb-3 text-secondary\">\n {{ podcast.annotations.subtitle }}\n </h3>\n \n <PodcastPlannedSpinner v-if=\"isPlannedInProcessor\" />\n <Countdown v-if=\"isCounter\" :time-remaining=\"timeRemaining\" />\n <!-- eslint-disable vue/no-v-html -->\n <div\n v-if=\"showSummary\"\n class=\"description-text html-wysiwyg-content\"\n :class=\"{ 'mb-4': showSummary && showDescription }\"\n v-html=\"urlify(podcast.summary)\"\n />\n <div\n v-if=\"showDescription\"\n class=\"description-text html-wysiwyg-content\"\n v-html=\"urlify(podcast.description)\"\n />\n <!-- eslint-enable -->\n <div class=\"my-3\">\n <div class=\"mb-1\">\n {{ t(\"Emission\") + \" : \" }}\n <router-link\n :to=\"{\n name: 'emission',\n params: { emissionId: podcast.emission.emissionId },\n }\"\n :title=\"t('Series name page', { name: podcast.emission.name })\"\n >\n {{ podcast.emission.name }}\n </router-link>\n </div>\n <ParticipantDescription :participants=\"podcast.animators\" />\n <ParticipantDescription\n :participants=\"podcast.guests\"\n :is-guest=\"true\"\n />\n <div v-if=\"!isPodcastmaker\" class=\"mb-1\">\n {{ t(\"Producted by : \") }}\n <router-link\n :to=\"{\n name: 'productor',\n params: { productorId: podcast.organisation.id },\n }\"\n >\n {{ podcast.organisation.name }}\n </router-link>\n </div>\n <div v-if=\"showSeasonNumber\" class=\"mb-1\">\n {{ `${t('Podcast - Season')} : ${podcast.seasonNumber}` }}\n </div>\n <div v-if=\"showSeasonEpisodeNumber\" class=\"mb-1\">\n {{ `${t('Podcast - Episode number')} : ${podcast.seasonEpisodeNumber}` }}\n </div>\n <div v-if=\"'' !== photoCredit\" class=\"mb-1\">\n {{ t(\"Photo credits\") + \" : \" + photoCredit }}\n </div>\n <div v-if=\"'' !== audioCredit\" class=\"mb-1\">\n {{ t(\"Audio credits\") + \" : \" + audioCredit }}\n </div>\n <div v-if=\"'' !== authorCredit\" class=\"mb-1\">\n {{ t(\"Author credits\") + \" : \" + authorCredit }}\n </div>\n <a\n v-if=\"podcast.article && !authStore.isGarRole\"\n class=\"btn d-flex align-items-center my-2 w-fit-content mb-1\"\n :href=\"podcast.article\"\n rel=\"noreferrer noopener\"\n target=\"_blank\"\n :title=\"t('New window', {text : t('See associated article')})\"\n >\n <NewspaperVariantOutlineIcon class=\"me-1\" />\n <div>{{ t(\"See associated article\") }}</div>\n </a>\n <PodcastPlayBar\n v-if=\"state.emissionsPage.progressBar\"\n :podcast=\"podcast\"\n />\n <div v-if=\"editRight && !isPodcastmaker\">\n <div\n v-if=\"\n podcast.annotations && 'RSS' === podcast.annotations.SOURCE_KIND\n \"\n class=\"me-5 text-secondary\"\n >\n {{ t(\"From RSS\") }}\n </div>\n <ClassicAlert\n v-if=\"alert\"\n :type=\"alert.type\"\n style=\"width: fit-content\"\n >\n <div class=\"d-flex align-items-center\">\n {{ alert.message }}\n\n <slot name=\"alert-message\" :alert=\"alert\" />\n </div>\n </ClassicAlert>\n </div>\n <div class=\"d-flex align-items-center flex-wrap\">\n <LikeSection :edit-right=\"editRight\" :podcast=\"podcast\" />\n <DownloadPodcastButton v-if=\"state.podcastPage.downloadButton\" :podcast=\"podcast\" />\n </div>\n </div>\n </div>\n <TagList\n v-if=\"showTags\"\n :tag-list=\"tags\"\n :orga-id=\"podcast.organisation.id\"\n :podcast-annotations=\"podcast.annotations\"\n :max=\"state.podcastPage.maxTags\"\n />\n <InlineRubriqueList\n v-if=\"podcastRubriques?.length\"\n :orga-id=\"podcast.organisation.id\"\n :rubrique-ids=\"podcastRubriques\"\n />\n <PodcastRawTranscript\n ref=\"podcastRawTranscript\"\n :podcast-id=\"podcast.podcastId\"\n />\n <SubscribeButtons\n v-if=\"isPodcastmaker\"\n class=\"mt-4\"\n :content=\"podcast.emission\"\n :window-width=\"1000\"\n :justify-center=\"false\"\n />\n </section>\n</template>\n\n<script setup lang=\"ts\">\nimport NewspaperVariantOutlineIcon from \"vue-material-design-icons/NewspaperVariantOutline.vue\";\nimport PodcastImage from \"./PodcastImage.vue\";\nimport ParticipantDescription from \"./ParticipantDescription.vue\";\nimport PodcastRawTranscript from \"./PodcastRawTranscript.vue\";\nimport { state } from \"../../../stores/ParamSdkStore\";\nimport { useAuthStore } from \"../../../stores/AuthStore\";\nimport displayHelper from \"../../../helper/displayHelper\";\nimport {usePodcastView} from \"../../composable/podcasts/usePodcastView\";\nimport { Podcast } from \"../../../stores/class/general/podcast\";\nimport { Conference } from \"../../../stores/class/conference/conference\";\nimport { useI18n } from \"vue-i18n\";\nimport { useRouter } from \"vue-router\";\nimport { useSeasonsManagement } from \"../../composable/useSeasonsManagement\";\nimport { SeasonMode } from \"../../../stores/class/general/emission\";\nimport RightsIndicator from \"../RightsIndicator.vue\"; \nimport ClassicAlert from \"@/components/misc/ClassicAlert.vue\"; \n\nimport { defineAsyncComponent, toRefs, computed, useTemplateRef } from \"vue\";\nimport { useAppleVideo } from \"@/components/composable/useAppleVideo\";\nconst PodcastPlayBar = defineAsyncComponent(\n () => import(\"./PodcastPlayBar.vue\"),\n);\nconst SubscribeButtons = defineAsyncComponent(\n () => import(\"../sharing/SubscribeButtons.vue\"),\n);\nconst LikeSection = defineAsyncComponent(\n () => import(\"../comments/like/LikeSection.vue\"),\n);\nconst DownloadPodcastButton = defineAsyncComponent(\n () => import(\"./DownloadPodcastButton.vue\"),\n);\nconst PodcastPlannedSpinner = defineAsyncComponent(\n () => import(\"./PodcastPlannedSpinner.vue\"),\n);\nconst Countdown = defineAsyncComponent(() => import(\"../live/CountDown.vue\"));\nconst TagList = defineAsyncComponent(() => import(\"./TagList.vue\"));\nconst ShareAnonymous = defineAsyncComponent(() => import(\"../sharing/ShareAnonymous.vue\"));\nconst InlineRubriqueList = defineAsyncComponent(() => import(\"../rubriques/InlineRubriqueList.vue\"));\n\n//Props \nconst props = defineProps<{\n podcast: Podcast;\n playingPodcast?: Podcast;\n podcastConference?: Conference;\n}>();\n\n//Emits\nconst emit = defineEmits([\"updatePodcast\"]);\n\n//Composables\nconst { t } = useI18n();\nconst propsRef = toRefs(props);\nconst { \n isLiveReadyToRecord,\n isCounter,\n timeRemaining,\n isPlannedInProcessor,\n date,\n duration,\n durationIso,\n isPodcastmaker,\n editRight\n} = usePodcastView(propsRef.podcast, propsRef.podcastConference);\nconst authStore = useAuthStore();\nconst router = useRouter();\nconst { areSeasonsEnabled } = useSeasonsManagement();\nconst { isErrorStatus, toGenericErrorCode } = useAppleVideo();\n\n/** Reference to the PodcastRqwTranscript */\nconst podcastRawTranscript = useTemplateRef('podcastRawTranscript');\n\n//Computed\nconst podcastRubriques = computed(() => {\n let rubriques = props.podcast?.rubriqueIds ?? [];\n if(props.podcast?.emission?.rubriqueIds){\n rubriques = [...new Set(rubriques.concat(props.podcast?.emission?.rubriqueIds))];\n }\n return rubriques;\n});\n\ninterface Alert {\n type: 'error'|'warning'|'info';\n message: string;\n code?: string;\n}\n\nconst alert = computed((): Alert|null => {\n if (\"ERROR\" === props.podcast?.processingStatus) {\n return {\n type: 'error',\n message: t(\"Podcast in ERROR, please contact Saooti\")\n };\n }\n const appleVideoStatus = props.podcast?.annotations?.appleVideoStatus as string|undefined;\n if (isErrorStatus(appleVideoStatus)) {\n return {\n type: 'error',\n message: t('Apple podcast - Error - Undefined', {\n status: appleVideoStatus\n }),\n code: toGenericErrorCode(appleVideoStatus)\n };\n }\n if (podcastNotValid.value) {\n return {\n type: 'warning',\n message: t(\"Podcast not validated\")\n };\n }\n if (appleVideoStatus === 'HLS_NOT_READY') {\n return {\n type: 'info',\n message: t('Apple podcast - Info - HLS_NOT_READY'),\n code: toGenericErrorCode(appleVideoStatus)\n };\n }\n if (!props.podcast?.availability.visibility) {\n return {\n type: 'warning',\n message: t(\"Podcast is not visible for listeners\")\n };\n }\n return null;\n});\n\nconst isLiveReady = computed(() => {\n return (\n undefined !== props.podcast?.conferenceId &&\n 0 !== props.podcast?.conferenceId &&\n \"READY\" === props.podcast?.processingStatus\n );\n});\nconst isDebriefing = computed(() => {\n return (\n undefined !== props.podcastConference &&\n \"DEBRIEFING\" === props.podcastConference.status\n );\n});\nconst isOctopusAndAnimator = computed(() => {\n return !isPodcastmaker.value && editRight.value && authStore.isRoleLive;\n});\nconst podcastNotValid = computed(() => {\n return (\n undefined !== props.podcast?.availability &&\n false === props.podcast?.valid\n );\n});\nconst photoCredit = computed(() => formatCredits(props.podcast?.annotations?.photoCredit as string|undefined));\nconst audioCredit = computed(() => formatCredits(props.podcast?.annotations?.audioCredit as string|undefined));\nconst authorCredit = computed(() => formatCredits(props.podcast?.annotations?.authorCredit as string|undefined));\nconst isEditBox = computed(() => !((state.generalParameters.podcastmaker as boolean) ?? false));\n/** The tags to display */\nconst tags = computed(() => {\n const tags = [];\n if(props.podcast.tags) {\n tags.push(...props.podcast.tags);\n }\n // Also display tags defined on emission\n if(props.podcast.emission.tags) {\n tags.push(...props.podcast.emission.tags);\n }\n return tags;\n});\n\nconst showSeasonNumber = computed((): boolean => {\n return areSeasonsEnabled(props.podcast.emission) && props.podcast.seasonNumber !== undefined;\n});\n\nconst showSeasonEpisodeNumber = computed((): boolean => {\n return props.podcast.emission.seasonMode === SeasonMode.SEASON_WITH_PODCAST_NUMBERING && props.podcast.seasonEpisodeNumber !== undefined;\n});\n\n/** Indicates whether to show subtitle */\nconst showSubtitle = computed((): boolean => {\n return props.podcast.annotations?.subtitle && state.podcastPage?.hideSubtitle !== true;\n});\n\n/** Indicates whether to show description */\nconst showDescription = computed((): boolean => {\n return state.podcastPage?.descriptionOrSummary !== 'summary';\n});\n\n/** Indicates whether to show summary */\nconst showSummary = computed((): boolean => {\n return props.podcast.summary && state.podcastPage?.descriptionOrSummary !== 'description' && state.podcastPage?.descriptionOrSummary !== undefined;\n});\n\n//Methods\nfunction formatCredits(credits: string|undefined): string {\n if (credits === undefined) {\n return '';\n }\n return credits.split(',').map(s => s.trim()).join(', ');\n}\nfunction urlify(text:string|undefined){\n return displayHelper.urlify(text);\n}\nfunction removeDeleted(): void {\n if (isLiveReadyToRecord.value) {\n router.push(\"/main/pub/lives\");\n } else if (window.history.length > 1) {\n router.go(-1);\n } else {\n router.push(\"/\");\n }\n}\n\nfunction resetTranscription(): void {\n podcastRawTranscript.value.reset();\n}\n\nconst showTags = computed((): boolean => {\n if (state.podcastPage.hideTags === true) {\n return false;\n }\n\n return undefined !== tags.value && 0 !== tags.value.length;\n});\n</script>\n","<template>\n <section class=\"page-box\">\n <template v-if=\"loaded && !error && podcast\">\n <PodcastmakerHeader\n v-if=\"isPodcastmaker\"\n :page-title=\"useEmissionTitle ? podcast.emission.name : titlePage\"\n :img-url=\"podcast.imageUrl\"\n />\n <div\n class=\"d-flex flex-column page-element\"\n :class=\"isPodcastmaker ? 'page-element-podcastmaker' : ''\"\n >\n <PodcastModuleBox\n :playing-podcast=\"playingPodcast\"\n :podcast=\"podcast\"\n :podcast-conference=\"fetchConference\"\n @update-podcast=\"updatePodcast\"\n >\n <template #recording-item-button=\"slotProps\">\n <slot name=\"recording-item-button\" v-bind=\"slotProps\" />\n </template>\n <template #edit-box=\"slotProps\">\n <slot name=\"edit-box\" v-bind=\"slotProps\" />\n </template>\n <template #alert-message=\"slotProps\">\n <slot name=\"alert-message\" v-bind=\"slotProps\" />\n </template>\n </PodcastModuleBox>\n <ShareSocialsButtons\n v-if=\"state.podcastPage.ShareButtons\"\n :organisation-id=\"podcast.organisation.id\"\n />\n <SharePlayer\n v-if=\"!isPodcastmaker && editRight && !youtubeId\"\n :podcast=\"podcast\"\n :emission=\"podcast?.emission\"\n :organisation-id=\"authOrgaId\"\n />\n <CommentSection :podcast=\"podcast\" />\n\n <!-- Suggestions -->\n <PodcastInlineList\n :emission-id=\"podcast.emission.emissionId\"\n :href=\"'/main/pub/emission/' + podcast.emission.emissionId\"\n :title=\"t('More episodes of this emission')\"\n :button-text=\"t('All podcast emission button')\"\n title-tag=\"h3\"\n />\n <section v-if=\"!hideSuggestions\">\n <ClassicLazy :min-height=\"550\">\n <PodcastInlineList\n class=\"mt-4\"\n title-tag=\"h3\"\n :organisation-id=\"[podcast.organisation.id]\"\n :podcast-id=\"podcastId\"\n :title=\"t('Suggested listening')\"\n />\n </ClassicLazy>\n <ClassicLazy v-for=\"c in categories\" :key=\"c.id\" :min-height=\"550\">\n <PodcastInlineList\n class=\"mt-4\"\n title-tag=\"h3\"\n :iab-id=\"c.id\"\n :href=\"'/main/pub/category/' + c.id\"\n :title=\"t('More episodes of this category : ', { name: c.name })\"\n :button-text=\"t('All podcast button', { name: c.name })\"\n :organisation-id=\"[podcast.organisation.id]\"\n />\n </ClassicLazy>\n </section>\n </div>\n </template>\n <ClassicLoading\n :loading-text=\"!loaded ? t('Loading content ...') : undefined\"\n :error-text=\"\n error\n ? t(`This episode is not available for (re)listening`)\n : undefined\n \"\n />\n </section>\n</template>\n\n<script setup lang=\"ts\">\nimport youtubeVideoHelper from \"../../helper/youtubeVideoHelper\";\nimport {useOrgaComputed} from \"../composable/useOrgaComputed\";\nimport PodcastInlineList from \"../display/podcasts/PodcastInlineList.vue\";\nimport PodcastModuleBox from \"../display/podcasts/PodcastModuleBox.vue\";\nimport ClassicLazy from \"../misc/ClassicLazy.vue\";\nimport ClassicLoading from \"../form/ClassicLoading.vue\";\nimport classicApi from \"../../api/classicApi\";\nimport { state } from \"../../stores/ParamSdkStore\";\nimport { useFilterStore } from \"../../stores/FilterStore\";\nimport { Podcast } from \"@/stores/class/general/podcast\";\nimport {\n Conference,\n ConferencePublicInfo,\n} from \"@/stores/class/conference/conference\";\nimport {useErrorHandler} from \"../composable/useErrorHandler\";\nimport {useSeoTitleUrl} from \"../composable/route/useSeoTitleUrl\";\nimport { computed, defineAsyncComponent, onBeforeUnmount, ref, Ref, watch } from \"vue\";\nimport { Category } from \"@/stores/class/general/category\";\nimport { useAuthStore } from \"../../stores/AuthStore\";\nimport { useGeneralStore } from \"../../stores/GeneralStore\";\nimport { AxiosError } from \"axios\";\nimport { useCommentStore } from \"../../stores/CommentStore\";\nimport { useI18n } from \"vue-i18n\";\nimport { useRoute } from \"vue-router\";\nimport { podcastApi } from \"../../api/podcastApi\";\n\nconst ShareSocialsButtons = defineAsyncComponent(\n () => import(\"../display/sharing/ShareSocialsButtons.vue\"),\n);\nconst SharePlayer = defineAsyncComponent(\n () => import(\"../display/sharing/SharePlayer.vue\"),\n);\nconst CommentSection = defineAsyncComponent(\n () => import(\"../display/comments/CommentSection.vue\"),\n);\nconst PodcastmakerHeader = defineAsyncComponent(\n () => import(\"../display/podcastmaker/PodcastmakerHeader.vue\"),\n);\n\n//Props \nconst props = defineProps<{\n updateStatus?: string;\n playingPodcast?: Podcast;\n podcastId: number;\n}>();\n\n\n//Data \nconst loaded = ref(false);\nconst error = ref(false);\nconst podcast: Ref<Podcast | undefined> = ref(undefined);\nconst fetchConference: Ref<Conference | undefined> = ref(undefined);\nconst infoReload: Ref<ReturnType<typeof setTimeout>| undefined> = ref(undefined);\nconst youtubeId: Ref<string| undefined> = ref(undefined);\n\n//Composables\nconst route = useRoute();\nconst { t } = useI18n();\nconst { isPodcastmaker, isEditRights, authOrgaId } = useOrgaComputed();\nconst { updatePathParams } = useSeoTitleUrl();\nconst {handle403} = useErrorHandler();\nconst authStore = useAuthStore();\nconst generalStore = useGeneralStore();\nconst filterStore = useFilterStore();\nconst commentStore = useCommentStore();\n\n//Computed\nconst hideSuggestions = computed(() =>{\n return (\n \"true\" ===\n (podcast.value?.emission?.annotations?.[\"HIDE_SUGGESTIONS\"] as\n | string\n | undefined)\n );\n});\nconst emissionMainCategory = computed(() =>{\n if (!podcast.value) {\n return 0;\n }\n if (podcast.value.emission.annotations?.mainIabId) {\n return parseInt(\n podcast.value.emission.annotations.mainIabId as string,\n 10,\n );\n } else if(podcast.value.emission.iabIds?.length) {\n return podcast.value.emission.iabIds[0];\n }\n return 0;\n});\n\nconst categories = computed(() =>{\n if (\"undefined\" === typeof podcast.value) return [];\n return generalStore.storedCategories\n .filter((item: Category) => {\n return (\n podcast.value?.emission.iabIds &&\n -1 !== podcast.value.emission.iabIds.indexOf(item.id)\n );\n })\n .sort((a: Category, b: Category) => {\n if (a.id === emissionMainCategory.value) return -1;\n if (b.id === emissionMainCategory.value) return 1;\n return 0;\n });\n});\n\nconst editRight = computed(() =>{\n return isEditRights(podcast.value?.organisation.id);\n});\n\nconst isLiveReadyToRecord = computed(() =>{\n return (\n undefined !== podcast.value?.conferenceId &&\n 0 !== podcast.value?.conferenceId &&\n \"READY_TO_RECORD\" === podcast.value?.processingStatus\n );\n});\n\nconst isOctopusAndAnimator = computed(() =>{\n return !isPodcastmaker.value && editRight.value && authStore.isRoleLive;\n});\n\n/** Indicates whether to display emission name in header */\nconst useEmissionTitle = computed((): boolean => {\n return state.podcastPage?.displayEmissionTitleInHeader === true;\n});\n\nconst titlePage = computed(() =>{\n return isLiveReadyToRecord.value? t(\"Live episode\"): t(\"Episode\");\n});\n\n\n//Watch\nwatch(()=>props.updateStatus, () => {\n if (fetchConference.value && null !== fetchConference.value) {\n fetchConference.value.status = props.updateStatus;\n }\n});\nwatch(()=>props.podcastId, async () => {\n await getPodcastDetails();\n if (!podcast.value || error.value) {\n return;\n }\n commentStore.initCommentUser();\n}, {immediate: true});\n\n\nonBeforeUnmount(() => {\n generalStore.contentToDisplayUpdate(null);\n clearTimeout(infoReload.value);\n});\n\n\n//Methods\nasync function initConference() {\n if (!podcast.value || undefined == podcast.value.conferenceId || \"READY_TO_RECORD\" !== podcast.value.processingStatus) return;\n fetchConference.value = { conferenceId: podcast.value.conferenceId, title: \"\" };\n if (isOctopusAndAnimator.value) {\n try {\n fetchConference.value = await classicApi.fetchData<Conference>({\n api: 9,\n path: \"conference/\" + podcast.value.conferenceId,\n });\n } catch {\n await fetchConferenceStatus();\n }\n } else {\n await fetchConferenceStatus();\n }\n if (\n fetchConference.value &&\n -1 !== fetchConference.value.conferenceId &&\n \"PUBLISHING\" !== fetchConference.value.status &&\n \"DEBRIEFING\" !== fetchConference.value.status\n ) {\n fetchConferenceStatusLoop();\n }\n}\n\nasync function fetchConferenceStatusLoop() {\n if(\"PUBLISHING\" ===fetchConference.value?.status){\n return;\n }\n infoReload.value = setTimeout(async () => {\n await fetchConferenceStatus();\n fetchConferenceStatusLoop();\n }, 3000);\n}\nasync function fetchConferenceStatus() {\n try {\n const data = await classicApi.fetchData<ConferencePublicInfo>({\n api: 9,\n path: \"conference/info/\" + podcast.value?.conferenceId,\n });\n fetchConference.value = {...fetchConference.value, ...data};\n } catch {\n //Do nothing\n }\n}\nfunction updatePodcast(podcastUpdated: Podcast): void {\n podcast.value = podcastUpdated;\n filterStore.updateOrgaIfNecessary(podcastUpdated.organisation.id);\n}\nfunction initError(): void {\n error.value = true;\n loaded.value = true;\n}\n\nasync function getPodcastDetails(): Promise<void> {\n loaded.value = false;\n error.value = false;\n try {\n const data = await classicApi.fetchData<Podcast>({\n api: 0,\n path: \"podcast/\" + props.podcastId,\n });\n if (\n \"PUBLIC\" !== data.organisation.privacy &&\n filterStore.filterOrgaId !== data.organisation.id &&\n route.query.productor !== data.organisation.id\n ) {\n initError();\n return;\n }\n updatePodcast(data);\n generalStore.contentToDisplayUpdate(data);\n if (\n (!podcast.value.availability.visibility ||\n (\"READY_TO_RECORD\" !== podcast.value.processingStatus &&\n \"READY\" !== podcast.value.processingStatus &&\n \"PROCESSING\" !== podcast.value.processingStatus) ||\n false === podcast.value.valid) &&\n !editRight.value\n ) {\n error.value = true;\n loaded.value = true;\n return;\n }\n podcastInProcessing();\n updatePathParams(podcast.value.title);\n await commentStore.getCommentsConfig(podcast.value);\n if((fetchConference.value?.videoProfile?.includes(\"video_\") && \"READY_TO_RECORD\" === podcast.value.processingStatus) || undefined !== podcast.value.video?.videoId){\n youtubeId.value = youtubeVideoHelper.getYoutubeId(podcast.value?.tags ?? []);\n }\n loaded.value = true;\n } catch (error) {\n handle403(error as AxiosError);\n initError();\n }\n}\n\nfunction podcastInProcessing(){\n if(\"PLANNED\" !== podcast.value?.processingStatus){\n initConference();\n return;\n }\n infoReload.value = setTimeout(async () => {\n const podcast = await podcastApi.get(props.podcastId);\n updatePodcast(podcast);\n podcastInProcessing();\n }, 2000);\n}\n</script>\n","<template>\n <section class=\"page-box\">\n <template v-if=\"loaded && !error && podcast\">\n <PodcastmakerHeader\n v-if=\"isPodcastmaker\"\n :page-title=\"useEmissionTitle ? podcast.emission.name : titlePage\"\n :img-url=\"podcast.imageUrl\"\n />\n <div\n class=\"d-flex flex-column page-element\"\n :class=\"isPodcastmaker ? 'page-element-podcastmaker' : ''\"\n >\n <PodcastModuleBox\n :playing-podcast=\"playingPodcast\"\n :podcast=\"podcast\"\n :podcast-conference=\"fetchConference\"\n @update-podcast=\"updatePodcast\"\n >\n <template #recording-item-button=\"slotProps\">\n <slot name=\"recording-item-button\" v-bind=\"slotProps\" />\n </template>\n <template #edit-box=\"slotProps\">\n <slot name=\"edit-box\" v-bind=\"slotProps\" />\n </template>\n <template #alert-message=\"slotProps\">\n <slot name=\"alert-message\" v-bind=\"slotProps\" />\n </template>\n </PodcastModuleBox>\n <ShareSocialsButtons\n v-if=\"state.podcastPage.ShareButtons\"\n :organisation-id=\"podcast.organisation.id\"\n />\n <SharePlayer\n v-if=\"!isPodcastmaker && editRight && !youtubeId\"\n :podcast=\"podcast\"\n :emission=\"podcast?.emission\"\n :organisation-id=\"authOrgaId\"\n />\n <CommentSection :podcast=\"podcast\" />\n\n <!-- Suggestions -->\n <PodcastInlineList\n :emission-id=\"podcast.emission.emissionId\"\n :href=\"'/main/pub/emission/' + podcast.emission.emissionId\"\n :title=\"t('More episodes of this emission')\"\n :button-text=\"t('All podcast emission button')\"\n title-tag=\"h3\"\n />\n <section v-if=\"!hideSuggestions\">\n <ClassicLazy :min-height=\"550\">\n <PodcastInlineList\n class=\"mt-4\"\n title-tag=\"h3\"\n :organisation-id=\"[podcast.organisation.id]\"\n :podcast-id=\"podcastId\"\n :title=\"t('Suggested listening')\"\n />\n </ClassicLazy>\n <ClassicLazy v-for=\"c in categories\" :key=\"c.id\" :min-height=\"550\">\n <PodcastInlineList\n class=\"mt-4\"\n title-tag=\"h3\"\n :iab-id=\"c.id\"\n :href=\"'/main/pub/category/' + c.id\"\n :title=\"t('More episodes of this category : ', { name: c.name })\"\n :button-text=\"t('All podcast button', { name: c.name })\"\n :organisation-id=\"[podcast.organisation.id]\"\n />\n </ClassicLazy>\n </section>\n </div>\n </template>\n <ClassicLoading\n :loading-text=\"!loaded ? t('Loading content ...') : undefined\"\n :error-text=\"\n error\n ? t(`This episode is not available for (re)listening`)\n : undefined\n \"\n />\n </section>\n</template>\n\n<script setup lang=\"ts\">\nimport youtubeVideoHelper from \"../../helper/youtubeVideoHelper\";\nimport {useOrgaComputed} from \"../composable/useOrgaComputed\";\nimport PodcastInlineList from \"../display/podcasts/PodcastInlineList.vue\";\nimport PodcastModuleBox from \"../display/podcasts/PodcastModuleBox.vue\";\nimport ClassicLazy from \"../misc/ClassicLazy.vue\";\nimport ClassicLoading from \"../form/ClassicLoading.vue\";\nimport classicApi from \"../../api/classicApi\";\nimport { state } from \"../../stores/ParamSdkStore\";\nimport { useFilterStore } from \"../../stores/FilterStore\";\nimport { Podcast } from \"@/stores/class/general/podcast\";\nimport {\n Conference,\n ConferencePublicInfo,\n} from \"@/stores/class/conference/conference\";\nimport {useErrorHandler} from \"../composable/useErrorHandler\";\nimport {useSeoTitleUrl} from \"../composable/route/useSeoTitleUrl\";\nimport { computed, defineAsyncComponent, onBeforeUnmount, ref, Ref, watch } from \"vue\";\nimport { Category } from \"@/stores/class/general/category\";\nimport { useAuthStore } from \"../../stores/AuthStore\";\nimport { useGeneralStore } from \"../../stores/GeneralStore\";\nimport { AxiosError } from \"axios\";\nimport { useCommentStore } from \"../../stores/CommentStore\";\nimport { useI18n } from \"vue-i18n\";\nimport { useRoute } from \"vue-router\";\nimport { podcastApi } from \"../../api/podcastApi\";\n\nconst ShareSocialsButtons = defineAsyncComponent(\n () => import(\"../display/sharing/ShareSocialsButtons.vue\"),\n);\nconst SharePlayer = defineAsyncComponent(\n () => import(\"../display/sharing/SharePlayer.vue\"),\n);\nconst CommentSection = defineAsyncComponent(\n () => import(\"../display/comments/CommentSection.vue\"),\n);\nconst PodcastmakerHeader = defineAsyncComponent(\n () => import(\"../display/podcastmaker/PodcastmakerHeader.vue\"),\n);\n\n//Props \nconst props = defineProps<{\n updateStatus?: string;\n playingPodcast?: Podcast;\n podcastId: number;\n}>();\n\n\n//Data \nconst loaded = ref(false);\nconst error = ref(false);\nconst podcast: Ref<Podcast | undefined> = ref(undefined);\nconst fetchConference: Ref<Conference | undefined> = ref(undefined);\nconst infoReload: Ref<ReturnType<typeof setTimeout>| undefined> = ref(undefined);\nconst youtubeId: Ref<string| undefined> = ref(undefined);\n\n//Composables\nconst route = useRoute();\nconst { t } = useI18n();\nconst { isPodcastmaker, isEditRights, authOrgaId } = useOrgaComputed();\nconst { updatePathParams } = useSeoTitleUrl();\nconst {handle403} = useErrorHandler();\nconst authStore = useAuthStore();\nconst generalStore = useGeneralStore();\nconst filterStore = useFilterStore();\nconst commentStore = useCommentStore();\n\n//Computed\nconst hideSuggestions = computed(() =>{\n return (\n \"true\" ===\n (podcast.value?.emission?.annotations?.[\"HIDE_SUGGESTIONS\"] as\n | string\n | undefined)\n );\n});\nconst emissionMainCategory = computed(() =>{\n if (!podcast.value) {\n return 0;\n }\n if (podcast.value.emission.annotations?.mainIabId) {\n return parseInt(\n podcast.value.emission.annotations.mainIabId as string,\n 10,\n );\n } else if(podcast.value.emission.iabIds?.length) {\n return podcast.value.emission.iabIds[0];\n }\n return 0;\n});\n\nconst categories = computed(() =>{\n if (\"undefined\" === typeof podcast.value) return [];\n return generalStore.storedCategories\n .filter((item: Category) => {\n return (\n podcast.value?.emission.iabIds &&\n -1 !== podcast.value.emission.iabIds.indexOf(item.id)\n );\n })\n .sort((a: Category, b: Category) => {\n if (a.id === emissionMainCategory.value) return -1;\n if (b.id === emissionMainCategory.value) return 1;\n return 0;\n });\n});\n\nconst editRight = computed(() =>{\n return isEditRights(podcast.value?.organisation.id);\n});\n\nconst isLiveReadyToRecord = computed(() =>{\n return (\n undefined !== podcast.value?.conferenceId &&\n 0 !== podcast.value?.conferenceId &&\n \"READY_TO_RECORD\" === podcast.value?.processingStatus\n );\n});\n\nconst isOctopusAndAnimator = computed(() =>{\n return !isPodcastmaker.value && editRight.value && authStore.isRoleLive;\n});\n\n/** Indicates whether to display emission name in header */\nconst useEmissionTitle = computed((): boolean => {\n return state.podcastPage?.displayEmissionTitleInHeader === true;\n});\n\nconst titlePage = computed(() =>{\n return isLiveReadyToRecord.value? t(\"Live episode\"): t(\"Episode\");\n});\n\n\n//Watch\nwatch(()=>props.updateStatus, () => {\n if (fetchConference.value && null !== fetchConference.value) {\n fetchConference.value.status = props.updateStatus;\n }\n});\nwatch(()=>props.podcastId, async () => {\n await getPodcastDetails();\n if (!podcast.value || error.value) {\n return;\n }\n commentStore.initCommentUser();\n}, {immediate: true});\n\n\nonBeforeUnmount(() => {\n generalStore.contentToDisplayUpdate(null);\n clearTimeout(infoReload.value);\n});\n\n\n//Methods\nasync function initConference() {\n if (!podcast.value || undefined == podcast.value.conferenceId || \"READY_TO_RECORD\" !== podcast.value.processingStatus) return;\n fetchConference.value = { conferenceId: podcast.value.conferenceId, title: \"\" };\n if (isOctopusAndAnimator.value) {\n try {\n fetchConference.value = await classicApi.fetchData<Conference>({\n api: 9,\n path: \"conference/\" + podcast.value.conferenceId,\n });\n } catch {\n await fetchConferenceStatus();\n }\n } else {\n await fetchConferenceStatus();\n }\n if (\n fetchConference.value &&\n -1 !== fetchConference.value.conferenceId &&\n \"PUBLISHING\" !== fetchConference.value.status &&\n \"DEBRIEFING\" !== fetchConference.value.status\n ) {\n fetchConferenceStatusLoop();\n }\n}\n\nasync function fetchConferenceStatusLoop() {\n if(\"PUBLISHING\" ===fetchConference.value?.status){\n return;\n }\n infoReload.value = setTimeout(async () => {\n await fetchConferenceStatus();\n fetchConferenceStatusLoop();\n }, 3000);\n}\nasync function fetchConferenceStatus() {\n try {\n const data = await classicApi.fetchData<ConferencePublicInfo>({\n api: 9,\n path: \"conference/info/\" + podcast.value?.conferenceId,\n });\n fetchConference.value = {...fetchConference.value, ...data};\n } catch {\n //Do nothing\n }\n}\nfunction updatePodcast(podcastUpdated: Podcast): void {\n podcast.value = podcastUpdated;\n filterStore.updateOrgaIfNecessary(podcastUpdated.organisation.id);\n}\nfunction initError(): void {\n error.value = true;\n loaded.value = true;\n}\n\nasync function getPodcastDetails(): Promise<void> {\n loaded.value = false;\n error.value = false;\n try {\n const data = await classicApi.fetchData<Podcast>({\n api: 0,\n path: \"podcast/\" + props.podcastId,\n });\n if (\n \"PUBLIC\" !== data.organisation.privacy &&\n filterStore.filterOrgaId !== data.organisation.id &&\n route.query.productor !== data.organisation.id\n ) {\n initError();\n return;\n }\n updatePodcast(data);\n generalStore.contentToDisplayUpdate(data);\n if (\n (!podcast.value.availability.visibility ||\n (\"READY_TO_RECORD\" !== podcast.value.processingStatus &&\n \"READY\" !== podcast.value.processingStatus &&\n \"PROCESSING\" !== podcast.value.processingStatus) ||\n false === podcast.value.valid) &&\n !editRight.value\n ) {\n error.value = true;\n loaded.value = true;\n return;\n }\n podcastInProcessing();\n updatePathParams(podcast.value.title);\n await commentStore.getCommentsConfig(podcast.value);\n if((fetchConference.value?.videoProfile?.includes(\"video_\") && \"READY_TO_RECORD\" === podcast.value.processingStatus) || undefined !== podcast.value.video?.videoId){\n youtubeId.value = youtubeVideoHelper.getYoutubeId(podcast.value?.tags ?? []);\n }\n loaded.value = true;\n } catch (error) {\n handle403(error as AxiosError);\n initError();\n }\n}\n\nfunction podcastInProcessing(){\n if(\"PLANNED\" !== podcast.value?.processingStatus){\n initConference();\n return;\n }\n infoReload.value = setTimeout(async () => {\n const podcast = await podcastApi.get(props.podcastId);\n updatePodcast(podcast);\n podcastInProcessing();\n }, 2000);\n}\n</script>\n"],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"PodcastPage-Dka9GEzi.mjs","names":[],"sources":["../src/components/display/podcasts/PodcastModuleBox.vue","../src/components/display/podcasts/PodcastModuleBox.vue","../src/components/pages/PodcastPage.vue","../src/components/pages/PodcastPage.vue"],"sourcesContent":["<template>\n <section v-if=\"podcast\" class=\"module-box\">\n <slot\n v-if=\"!!podcastConference && isLiveReadyToRecord && isOctopusAndAnimator\"\n name=\"recording-item-button\"\n :podcast=\"podcast\"\n :live=\"true\"\n :recording=\"podcastConference\"\n :on-delete-item=\"removeDeleted\"\n :on-validate-podcast=\"(p) => emit('updatePodcast', p)\"\n />\n <slot\n v-else-if=\"editRight && isEditBox\"\n name=\"edit-box\"\n :podcast=\"podcast\"\n :display-studio-access=\"isDebriefing\"\n :on-update-transcription=\"resetTranscription\"\n :on-validate-podcast=\"(p) => emit('updatePodcast', p)\"\n />\n <div class=\"mb-2 w-100\">\n <PodcastImage\n :class=\"[\n isLiveReadyToRecord &&\n podcastConference &&\n 'null' !== podcastConference &&\n podcastConference.status\n ? podcastConference.status.toLowerCase() + '-shadow'\n : '',\n ]\"\n class=\"me-3\"\n show-processing\n :hide-play=\"isLiveReadyToRecord\"\n :podcast=\"podcast\"\n :playing-podcast=\"playingPodcast\"\n :fetch-conference=\"podcastConference\"\n :is-animator-live=\"isOctopusAndAnimator\"\n />\n <div class=\"d-flex justify-content-between flex-wrap mb-2\">\n <time \n v-if=\"0 !== date.length\"\n :class=\"!isLiveReady ? 'me-5' : ''\"\n :datetime=\"podcast.pubDate\"\n >\n {{ date }}\n </time>\n <div v-if=\"isLiveReady\" class=\"text-danger\">\n {{ t(\"Episode record in live\") }}\n </div>\n <div class=\"d-flex flex-column align-items-end\">\n <time :datetime=\"durationIso\">\n {{ duration }}\n </time>\n <ShareAnonymous\n v-if=\"!editRight\"\n :podcast=\"podcast\"\n :organisation-id=\"podcast.organisation.id\"\n />\n </div>\n </div>\n <h2 :class=\"{ 'mb-3': !showSubtitle }\">\n <RightsIndicator\n :podcast=\"podcast\"\n action=\"edit\"\n inline\n />\n {{ podcast.title }}\n </h2>\n <h3 v-if=\"showSubtitle\" class=\"mb-3 text-secondary\">\n {{ podcast.annotations.subtitle }}\n </h3>\n \n <PodcastPlannedSpinner v-if=\"isPlannedInProcessor\" />\n <Countdown v-if=\"isCounter\" :time-remaining=\"timeRemaining\" />\n <!-- eslint-disable vue/no-v-html -->\n <div\n v-if=\"showSummary\"\n class=\"description-text html-wysiwyg-content\"\n :class=\"{ 'mb-4': showSummary && showDescription }\"\n v-html=\"urlify(podcast.summary)\"\n />\n <div\n v-if=\"showDescription\"\n class=\"description-text html-wysiwyg-content\"\n v-html=\"urlify(podcast.description)\"\n />\n <!-- eslint-enable -->\n <div class=\"my-3\">\n <div class=\"mb-1\">\n {{ t(\"Emission\") + \" : \" }}\n <router-link\n :to=\"{\n name: 'emission',\n params: { emissionId: podcast.emission.emissionId },\n }\"\n :title=\"t('Series name page', { name: podcast.emission.name })\"\n >\n {{ podcast.emission.name }}\n </router-link>\n </div>\n <ParticipantDescription :participants=\"podcast.animators\" />\n <ParticipantDescription\n :participants=\"podcast.guests\"\n :is-guest=\"true\"\n />\n <div v-if=\"!isPodcastmaker\" class=\"mb-1\">\n {{ t(\"Producted by : \") }}\n <router-link\n :to=\"{\n name: 'productor',\n params: { productorId: podcast.organisation.id },\n }\"\n >\n {{ podcast.organisation.name }}\n </router-link>\n </div>\n <div v-if=\"showSeasonNumber\" class=\"mb-1\">\n {{ `${t('Podcast - Season')} : ${podcast.seasonNumber}` }}\n </div>\n <div v-if=\"showSeasonEpisodeNumber\" class=\"mb-1\">\n {{ `${t('Podcast - Episode number')} : ${podcast.seasonEpisodeNumber}` }}\n </div>\n <div v-if=\"'' !== photoCredit\" class=\"mb-1\">\n {{ t(\"Photo credits\") + \" : \" + photoCredit }}\n </div>\n <div v-if=\"'' !== audioCredit\" class=\"mb-1\">\n {{ t(\"Audio credits\") + \" : \" + audioCredit }}\n </div>\n <div v-if=\"'' !== authorCredit\" class=\"mb-1\">\n {{ t(\"Author credits\") + \" : \" + authorCredit }}\n </div>\n <a\n v-if=\"podcast.article && !authStore.isGarRole\"\n class=\"btn d-flex align-items-center my-2 w-fit-content mb-1\"\n :href=\"podcast.article\"\n rel=\"noreferrer noopener\"\n target=\"_blank\"\n :title=\"t('New window', {text : t('See associated article')})\"\n >\n <NewspaperVariantOutlineIcon class=\"me-1\" />\n <div>{{ t(\"See associated article\") }}</div>\n </a>\n <PodcastPlayBar\n v-if=\"state.emissionsPage.progressBar\"\n :podcast=\"podcast\"\n />\n <div v-if=\"editRight && !isPodcastmaker\">\n <div\n v-if=\"\n podcast.annotations && 'RSS' === podcast.annotations.SOURCE_KIND\n \"\n class=\"me-5 text-secondary\"\n >\n {{ t(\"From RSS\") }}\n </div>\n <ClassicAlert\n v-if=\"alert\"\n :type=\"alert.type\"\n style=\"width: fit-content\"\n >\n <div class=\"d-flex align-items-center\">\n {{ alert.message }}\n\n <slot name=\"alert-message\" :alert=\"alert\" />\n </div>\n </ClassicAlert>\n </div>\n <div class=\"d-flex align-items-center flex-wrap\">\n <LikeSection :edit-right=\"editRight\" :podcast=\"podcast\" />\n <DownloadPodcastButton v-if=\"state.podcastPage.downloadButton\" :podcast=\"podcast\" />\n </div>\n </div>\n </div>\n <TagList\n v-if=\"showTags\"\n :tag-list=\"tags\"\n :orga-id=\"podcast.organisation.id\"\n :podcast-annotations=\"podcast.annotations\"\n :max=\"state.podcastPage.maxTags\"\n />\n <InlineRubriqueList\n v-if=\"podcastRubriques?.length\"\n :orga-id=\"podcast.organisation.id\"\n :rubrique-ids=\"podcastRubriques\"\n />\n <PodcastRawTranscript\n ref=\"podcastRawTranscript\"\n :podcast-id=\"podcast.podcastId\"\n />\n <SubscribeButtons\n v-if=\"isPodcastmaker\"\n class=\"mt-4\"\n :content=\"podcast.emission\"\n :window-width=\"1000\"\n :justify-center=\"false\"\n />\n </section>\n</template>\n\n<script setup lang=\"ts\">\nimport NewspaperVariantOutlineIcon from \"vue-material-design-icons/NewspaperVariantOutline.vue\";\nimport PodcastImage from \"./PodcastImage.vue\";\nimport ParticipantDescription from \"./ParticipantDescription.vue\";\nimport PodcastRawTranscript from \"./PodcastRawTranscript.vue\";\nimport { state } from \"../../../stores/ParamSdkStore\";\nimport { useAuthStore } from \"../../../stores/AuthStore\";\nimport displayHelper from \"../../../helper/displayHelper\";\nimport {usePodcastView} from \"../../composable/podcasts/usePodcastView\";\nimport { Podcast } from \"../../../stores/class/general/podcast\";\nimport { Conference } from \"../../../stores/class/conference/conference\";\nimport { useI18n } from \"vue-i18n\";\nimport { useRouter } from \"vue-router\";\nimport { useSeasonsManagement } from \"../../composable/useSeasonsManagement\";\nimport { SeasonMode } from \"../../../stores/class/general/emission\";\nimport RightsIndicator from \"../RightsIndicator.vue\"; \nimport ClassicAlert from \"@/components/misc/ClassicAlert.vue\"; \n\nimport { defineAsyncComponent, toRefs, computed, useTemplateRef } from \"vue\";\nimport { useAppleVideo } from \"@/components/composable/useAppleVideo\";\nconst PodcastPlayBar = defineAsyncComponent(\n () => import(\"./PodcastPlayBar.vue\"),\n);\nconst SubscribeButtons = defineAsyncComponent(\n () => import(\"../sharing/SubscribeButtons.vue\"),\n);\nconst LikeSection = defineAsyncComponent(\n () => import(\"../comments/like/LikeSection.vue\"),\n);\nconst DownloadPodcastButton = defineAsyncComponent(\n () => import(\"./DownloadPodcastButton.vue\"),\n);\nconst PodcastPlannedSpinner = defineAsyncComponent(\n () => import(\"./PodcastPlannedSpinner.vue\"),\n);\nconst Countdown = defineAsyncComponent(() => import(\"../live/CountDown.vue\"));\nconst TagList = defineAsyncComponent(() => import(\"./TagList.vue\"));\nconst ShareAnonymous = defineAsyncComponent(() => import(\"../sharing/ShareAnonymous.vue\"));\nconst InlineRubriqueList = defineAsyncComponent(() => import(\"../rubriques/InlineRubriqueList.vue\"));\n\n//Props \nconst props = defineProps<{\n podcast: Podcast;\n playingPodcast?: Podcast;\n podcastConference?: Conference;\n}>();\n\n//Emits\nconst emit = defineEmits([\"updatePodcast\"]);\n\n//Composables\nconst { t } = useI18n();\nconst propsRef = toRefs(props);\nconst { \n isLiveReadyToRecord,\n isCounter,\n timeRemaining,\n isPlannedInProcessor,\n date,\n duration,\n durationIso,\n isPodcastmaker,\n editRight\n} = usePodcastView(propsRef.podcast, propsRef.podcastConference);\nconst authStore = useAuthStore();\nconst router = useRouter();\nconst { areSeasonsEnabled } = useSeasonsManagement();\nconst { isErrorStatus, toGenericErrorCode } = useAppleVideo();\n\n/** Reference to the PodcastRqwTranscript */\nconst podcastRawTranscript = useTemplateRef('podcastRawTranscript');\n\n//Computed\nconst podcastRubriques = computed(() => {\n let rubriques = props.podcast?.rubriqueIds ?? [];\n if(props.podcast?.emission?.rubriqueIds){\n rubriques = [...new Set(rubriques.concat(props.podcast?.emission?.rubriqueIds))];\n }\n return rubriques;\n});\n\ninterface Alert {\n type: 'error'|'warning'|'info';\n message: string;\n code?: string;\n}\n\nconst alert = computed((): Alert|null => {\n if (\"ERROR\" === props.podcast?.processingStatus) {\n return {\n type: 'error',\n message: t(\"Podcast in ERROR, please contact Saooti\")\n };\n }\n const appleVideoStatus = props.podcast?.annotations?.appleVideoStatus as string|undefined;\n if (isErrorStatus(appleVideoStatus)) {\n return {\n type: 'error',\n message: t('Apple podcast - Error - Undefined', {\n status: appleVideoStatus\n }),\n code: toGenericErrorCode(appleVideoStatus)\n };\n }\n if (podcastNotValid.value) {\n return {\n type: 'warning',\n message: t(\"Podcast not validated\")\n };\n }\n if (appleVideoStatus === 'HLS_NOT_READY') {\n return {\n type: 'info',\n message: t('Apple podcast - Info - HLS_NOT_READY'),\n code: toGenericErrorCode(appleVideoStatus)\n };\n }\n if (!props.podcast?.availability.visibility) {\n return {\n type: 'warning',\n message: t(\"Podcast is not visible for listeners\")\n };\n }\n return null;\n});\n\nconst isLiveReady = computed(() => {\n return (\n undefined !== props.podcast?.conferenceId &&\n 0 !== props.podcast?.conferenceId &&\n \"READY\" === props.podcast?.processingStatus\n );\n});\nconst isDebriefing = computed(() => {\n return (\n undefined !== props.podcastConference &&\n \"DEBRIEFING\" === props.podcastConference.status\n );\n});\nconst isOctopusAndAnimator = computed(() => {\n return !isPodcastmaker.value && editRight.value && authStore.isRoleLive;\n});\nconst podcastNotValid = computed(() => {\n return (\n undefined !== props.podcast?.availability &&\n false === props.podcast?.valid\n );\n});\nconst photoCredit = computed(() => formatCredits(props.podcast?.annotations?.photoCredit as string|undefined));\nconst audioCredit = computed(() => formatCredits(props.podcast?.annotations?.audioCredit as string|undefined));\nconst authorCredit = computed(() => formatCredits(props.podcast?.annotations?.authorCredit as string|undefined));\nconst isEditBox = computed(() => !((state.generalParameters.podcastmaker as boolean) ?? false));\n/** The tags to display */\nconst tags = computed(() => {\n const tags = [];\n if(props.podcast.tags) {\n tags.push(...props.podcast.tags);\n }\n // Also display tags defined on emission\n if(props.podcast.emission.tags) {\n tags.push(...props.podcast.emission.tags);\n }\n return tags;\n});\n\nconst showSeasonNumber = computed((): boolean => {\n return areSeasonsEnabled(props.podcast.emission) && props.podcast.seasonNumber !== undefined;\n});\n\nconst showSeasonEpisodeNumber = computed((): boolean => {\n return props.podcast.emission.seasonMode === SeasonMode.SEASON_WITH_PODCAST_NUMBERING && props.podcast.seasonEpisodeNumber !== undefined;\n});\n\n/** Indicates whether to show subtitle */\nconst showSubtitle = computed((): boolean => {\n return props.podcast.annotations?.subtitle && state.podcastPage?.hideSubtitle !== true;\n});\n\n/** Indicates whether to show description */\nconst showDescription = computed((): boolean => {\n return state.podcastPage?.descriptionOrSummary !== 'summary';\n});\n\n/** Indicates whether to show summary */\nconst showSummary = computed((): boolean => {\n return props.podcast.summary && state.podcastPage?.descriptionOrSummary !== 'description' && state.podcastPage?.descriptionOrSummary !== undefined;\n});\n\n//Methods\nfunction formatCredits(credits: string|undefined): string {\n if (credits === undefined) {\n return '';\n }\n return credits.split(',').map(s => s.trim()).join(', ');\n}\nfunction urlify(text:string|undefined){\n return displayHelper.urlify(text);\n}\nfunction removeDeleted(): void {\n if (isLiveReadyToRecord.value) {\n router.push(\"/main/pub/lives\");\n } else if (window.history.length > 1) {\n router.go(-1);\n } else {\n router.push(\"/\");\n }\n}\n\nfunction resetTranscription(): void {\n podcastRawTranscript.value.reset();\n}\n\nconst showTags = computed((): boolean => {\n if (state.podcastPage.hideTags === true) {\n return false;\n }\n\n return undefined !== tags.value && 0 !== tags.value.length;\n});\n</script>\n","<template>\n <section v-if=\"podcast\" class=\"module-box\">\n <slot\n v-if=\"!!podcastConference && isLiveReadyToRecord && isOctopusAndAnimator\"\n name=\"recording-item-button\"\n :podcast=\"podcast\"\n :live=\"true\"\n :recording=\"podcastConference\"\n :on-delete-item=\"removeDeleted\"\n :on-validate-podcast=\"(p) => emit('updatePodcast', p)\"\n />\n <slot\n v-else-if=\"editRight && isEditBox\"\n name=\"edit-box\"\n :podcast=\"podcast\"\n :display-studio-access=\"isDebriefing\"\n :on-update-transcription=\"resetTranscription\"\n :on-validate-podcast=\"(p) => emit('updatePodcast', p)\"\n />\n <div class=\"mb-2 w-100\">\n <PodcastImage\n :class=\"[\n isLiveReadyToRecord &&\n podcastConference &&\n 'null' !== podcastConference &&\n podcastConference.status\n ? podcastConference.status.toLowerCase() + '-shadow'\n : '',\n ]\"\n class=\"me-3\"\n show-processing\n :hide-play=\"isLiveReadyToRecord\"\n :podcast=\"podcast\"\n :playing-podcast=\"playingPodcast\"\n :fetch-conference=\"podcastConference\"\n :is-animator-live=\"isOctopusAndAnimator\"\n />\n <div class=\"d-flex justify-content-between flex-wrap mb-2\">\n <time \n v-if=\"0 !== date.length\"\n :class=\"!isLiveReady ? 'me-5' : ''\"\n :datetime=\"podcast.pubDate\"\n >\n {{ date }}\n </time>\n <div v-if=\"isLiveReady\" class=\"text-danger\">\n {{ t(\"Episode record in live\") }}\n </div>\n <div class=\"d-flex flex-column align-items-end\">\n <time :datetime=\"durationIso\">\n {{ duration }}\n </time>\n <ShareAnonymous\n v-if=\"!editRight\"\n :podcast=\"podcast\"\n :organisation-id=\"podcast.organisation.id\"\n />\n </div>\n </div>\n <h2 :class=\"{ 'mb-3': !showSubtitle }\">\n <RightsIndicator\n :podcast=\"podcast\"\n action=\"edit\"\n inline\n />\n {{ podcast.title }}\n </h2>\n <h3 v-if=\"showSubtitle\" class=\"mb-3 text-secondary\">\n {{ podcast.annotations.subtitle }}\n </h3>\n \n <PodcastPlannedSpinner v-if=\"isPlannedInProcessor\" />\n <Countdown v-if=\"isCounter\" :time-remaining=\"timeRemaining\" />\n <!-- eslint-disable vue/no-v-html -->\n <div\n v-if=\"showSummary\"\n class=\"description-text html-wysiwyg-content\"\n :class=\"{ 'mb-4': showSummary && showDescription }\"\n v-html=\"urlify(podcast.summary)\"\n />\n <div\n v-if=\"showDescription\"\n class=\"description-text html-wysiwyg-content\"\n v-html=\"urlify(podcast.description)\"\n />\n <!-- eslint-enable -->\n <div class=\"my-3\">\n <div class=\"mb-1\">\n {{ t(\"Emission\") + \" : \" }}\n <router-link\n :to=\"{\n name: 'emission',\n params: { emissionId: podcast.emission.emissionId },\n }\"\n :title=\"t('Series name page', { name: podcast.emission.name })\"\n >\n {{ podcast.emission.name }}\n </router-link>\n </div>\n <ParticipantDescription :participants=\"podcast.animators\" />\n <ParticipantDescription\n :participants=\"podcast.guests\"\n :is-guest=\"true\"\n />\n <div v-if=\"!isPodcastmaker\" class=\"mb-1\">\n {{ t(\"Producted by : \") }}\n <router-link\n :to=\"{\n name: 'productor',\n params: { productorId: podcast.organisation.id },\n }\"\n >\n {{ podcast.organisation.name }}\n </router-link>\n </div>\n <div v-if=\"showSeasonNumber\" class=\"mb-1\">\n {{ `${t('Podcast - Season')} : ${podcast.seasonNumber}` }}\n </div>\n <div v-if=\"showSeasonEpisodeNumber\" class=\"mb-1\">\n {{ `${t('Podcast - Episode number')} : ${podcast.seasonEpisodeNumber}` }}\n </div>\n <div v-if=\"'' !== photoCredit\" class=\"mb-1\">\n {{ t(\"Photo credits\") + \" : \" + photoCredit }}\n </div>\n <div v-if=\"'' !== audioCredit\" class=\"mb-1\">\n {{ t(\"Audio credits\") + \" : \" + audioCredit }}\n </div>\n <div v-if=\"'' !== authorCredit\" class=\"mb-1\">\n {{ t(\"Author credits\") + \" : \" + authorCredit }}\n </div>\n <a\n v-if=\"podcast.article && !authStore.isGarRole\"\n class=\"btn d-flex align-items-center my-2 w-fit-content mb-1\"\n :href=\"podcast.article\"\n rel=\"noreferrer noopener\"\n target=\"_blank\"\n :title=\"t('New window', {text : t('See associated article')})\"\n >\n <NewspaperVariantOutlineIcon class=\"me-1\" />\n <div>{{ t(\"See associated article\") }}</div>\n </a>\n <PodcastPlayBar\n v-if=\"state.emissionsPage.progressBar\"\n :podcast=\"podcast\"\n />\n <div v-if=\"editRight && !isPodcastmaker\">\n <div\n v-if=\"\n podcast.annotations && 'RSS' === podcast.annotations.SOURCE_KIND\n \"\n class=\"me-5 text-secondary\"\n >\n {{ t(\"From RSS\") }}\n </div>\n <ClassicAlert\n v-if=\"alert\"\n :type=\"alert.type\"\n style=\"width: fit-content\"\n >\n <div class=\"d-flex align-items-center\">\n {{ alert.message }}\n\n <slot name=\"alert-message\" :alert=\"alert\" />\n </div>\n </ClassicAlert>\n </div>\n <div class=\"d-flex align-items-center flex-wrap\">\n <LikeSection :edit-right=\"editRight\" :podcast=\"podcast\" />\n <DownloadPodcastButton v-if=\"state.podcastPage.downloadButton\" :podcast=\"podcast\" />\n </div>\n </div>\n </div>\n <TagList\n v-if=\"showTags\"\n :tag-list=\"tags\"\n :orga-id=\"podcast.organisation.id\"\n :podcast-annotations=\"podcast.annotations\"\n :max=\"state.podcastPage.maxTags\"\n />\n <InlineRubriqueList\n v-if=\"podcastRubriques?.length\"\n :orga-id=\"podcast.organisation.id\"\n :rubrique-ids=\"podcastRubriques\"\n />\n <PodcastRawTranscript\n ref=\"podcastRawTranscript\"\n :podcast-id=\"podcast.podcastId\"\n />\n <SubscribeButtons\n v-if=\"isPodcastmaker\"\n class=\"mt-4\"\n :content=\"podcast.emission\"\n :window-width=\"1000\"\n :justify-center=\"false\"\n />\n </section>\n</template>\n\n<script setup lang=\"ts\">\nimport NewspaperVariantOutlineIcon from \"vue-material-design-icons/NewspaperVariantOutline.vue\";\nimport PodcastImage from \"./PodcastImage.vue\";\nimport ParticipantDescription from \"./ParticipantDescription.vue\";\nimport PodcastRawTranscript from \"./PodcastRawTranscript.vue\";\nimport { state } from \"../../../stores/ParamSdkStore\";\nimport { useAuthStore } from \"../../../stores/AuthStore\";\nimport displayHelper from \"../../../helper/displayHelper\";\nimport {usePodcastView} from \"../../composable/podcasts/usePodcastView\";\nimport { Podcast } from \"../../../stores/class/general/podcast\";\nimport { Conference } from \"../../../stores/class/conference/conference\";\nimport { useI18n } from \"vue-i18n\";\nimport { useRouter } from \"vue-router\";\nimport { useSeasonsManagement } from \"../../composable/useSeasonsManagement\";\nimport { SeasonMode } from \"../../../stores/class/general/emission\";\nimport RightsIndicator from \"../RightsIndicator.vue\"; \nimport ClassicAlert from \"@/components/misc/ClassicAlert.vue\"; \n\nimport { defineAsyncComponent, toRefs, computed, useTemplateRef } from \"vue\";\nimport { useAppleVideo } from \"@/components/composable/useAppleVideo\";\nconst PodcastPlayBar = defineAsyncComponent(\n () => import(\"./PodcastPlayBar.vue\"),\n);\nconst SubscribeButtons = defineAsyncComponent(\n () => import(\"../sharing/SubscribeButtons.vue\"),\n);\nconst LikeSection = defineAsyncComponent(\n () => import(\"../comments/like/LikeSection.vue\"),\n);\nconst DownloadPodcastButton = defineAsyncComponent(\n () => import(\"./DownloadPodcastButton.vue\"),\n);\nconst PodcastPlannedSpinner = defineAsyncComponent(\n () => import(\"./PodcastPlannedSpinner.vue\"),\n);\nconst Countdown = defineAsyncComponent(() => import(\"../live/CountDown.vue\"));\nconst TagList = defineAsyncComponent(() => import(\"./TagList.vue\"));\nconst ShareAnonymous = defineAsyncComponent(() => import(\"../sharing/ShareAnonymous.vue\"));\nconst InlineRubriqueList = defineAsyncComponent(() => import(\"../rubriques/InlineRubriqueList.vue\"));\n\n//Props \nconst props = defineProps<{\n podcast: Podcast;\n playingPodcast?: Podcast;\n podcastConference?: Conference;\n}>();\n\n//Emits\nconst emit = defineEmits([\"updatePodcast\"]);\n\n//Composables\nconst { t } = useI18n();\nconst propsRef = toRefs(props);\nconst { \n isLiveReadyToRecord,\n isCounter,\n timeRemaining,\n isPlannedInProcessor,\n date,\n duration,\n durationIso,\n isPodcastmaker,\n editRight\n} = usePodcastView(propsRef.podcast, propsRef.podcastConference);\nconst authStore = useAuthStore();\nconst router = useRouter();\nconst { areSeasonsEnabled } = useSeasonsManagement();\nconst { isErrorStatus, toGenericErrorCode } = useAppleVideo();\n\n/** Reference to the PodcastRqwTranscript */\nconst podcastRawTranscript = useTemplateRef('podcastRawTranscript');\n\n//Computed\nconst podcastRubriques = computed(() => {\n let rubriques = props.podcast?.rubriqueIds ?? [];\n if(props.podcast?.emission?.rubriqueIds){\n rubriques = [...new Set(rubriques.concat(props.podcast?.emission?.rubriqueIds))];\n }\n return rubriques;\n});\n\ninterface Alert {\n type: 'error'|'warning'|'info';\n message: string;\n code?: string;\n}\n\nconst alert = computed((): Alert|null => {\n if (\"ERROR\" === props.podcast?.processingStatus) {\n return {\n type: 'error',\n message: t(\"Podcast in ERROR, please contact Saooti\")\n };\n }\n const appleVideoStatus = props.podcast?.annotations?.appleVideoStatus as string|undefined;\n if (isErrorStatus(appleVideoStatus)) {\n return {\n type: 'error',\n message: t('Apple podcast - Error - Undefined', {\n status: appleVideoStatus\n }),\n code: toGenericErrorCode(appleVideoStatus)\n };\n }\n if (podcastNotValid.value) {\n return {\n type: 'warning',\n message: t(\"Podcast not validated\")\n };\n }\n if (appleVideoStatus === 'HLS_NOT_READY') {\n return {\n type: 'info',\n message: t('Apple podcast - Info - HLS_NOT_READY'),\n code: toGenericErrorCode(appleVideoStatus)\n };\n }\n if (!props.podcast?.availability.visibility) {\n return {\n type: 'warning',\n message: t(\"Podcast is not visible for listeners\")\n };\n }\n return null;\n});\n\nconst isLiveReady = computed(() => {\n return (\n undefined !== props.podcast?.conferenceId &&\n 0 !== props.podcast?.conferenceId &&\n \"READY\" === props.podcast?.processingStatus\n );\n});\nconst isDebriefing = computed(() => {\n return (\n undefined !== props.podcastConference &&\n \"DEBRIEFING\" === props.podcastConference.status\n );\n});\nconst isOctopusAndAnimator = computed(() => {\n return !isPodcastmaker.value && editRight.value && authStore.isRoleLive;\n});\nconst podcastNotValid = computed(() => {\n return (\n undefined !== props.podcast?.availability &&\n false === props.podcast?.valid\n );\n});\nconst photoCredit = computed(() => formatCredits(props.podcast?.annotations?.photoCredit as string|undefined));\nconst audioCredit = computed(() => formatCredits(props.podcast?.annotations?.audioCredit as string|undefined));\nconst authorCredit = computed(() => formatCredits(props.podcast?.annotations?.authorCredit as string|undefined));\nconst isEditBox = computed(() => !((state.generalParameters.podcastmaker as boolean) ?? false));\n/** The tags to display */\nconst tags = computed(() => {\n const tags = [];\n if(props.podcast.tags) {\n tags.push(...props.podcast.tags);\n }\n // Also display tags defined on emission\n if(props.podcast.emission.tags) {\n tags.push(...props.podcast.emission.tags);\n }\n return tags;\n});\n\nconst showSeasonNumber = computed((): boolean => {\n return areSeasonsEnabled(props.podcast.emission) && props.podcast.seasonNumber !== undefined;\n});\n\nconst showSeasonEpisodeNumber = computed((): boolean => {\n return props.podcast.emission.seasonMode === SeasonMode.SEASON_WITH_PODCAST_NUMBERING && props.podcast.seasonEpisodeNumber !== undefined;\n});\n\n/** Indicates whether to show subtitle */\nconst showSubtitle = computed((): boolean => {\n return props.podcast.annotations?.subtitle && state.podcastPage?.hideSubtitle !== true;\n});\n\n/** Indicates whether to show description */\nconst showDescription = computed((): boolean => {\n return state.podcastPage?.descriptionOrSummary !== 'summary';\n});\n\n/** Indicates whether to show summary */\nconst showSummary = computed((): boolean => {\n return props.podcast.summary && state.podcastPage?.descriptionOrSummary !== 'description' && state.podcastPage?.descriptionOrSummary !== undefined;\n});\n\n//Methods\nfunction formatCredits(credits: string|undefined): string {\n if (credits === undefined) {\n return '';\n }\n return credits.split(',').map(s => s.trim()).join(', ');\n}\nfunction urlify(text:string|undefined){\n return displayHelper.urlify(text);\n}\nfunction removeDeleted(): void {\n if (isLiveReadyToRecord.value) {\n router.push(\"/main/pub/lives\");\n } else if (window.history.length > 1) {\n router.go(-1);\n } else {\n router.push(\"/\");\n }\n}\n\nfunction resetTranscription(): void {\n podcastRawTranscript.value.reset();\n}\n\nconst showTags = computed((): boolean => {\n if (state.podcastPage.hideTags === true) {\n return false;\n }\n\n return undefined !== tags.value && 0 !== tags.value.length;\n});\n</script>\n","<template>\n <section class=\"page-box\">\n <template v-if=\"loaded && !error && podcast\">\n <PodcastmakerHeader\n v-if=\"isPodcastmaker\"\n :page-title=\"useEmissionTitle ? podcast.emission.name : titlePage\"\n :img-url=\"podcast.imageUrl\"\n />\n <div\n class=\"d-flex flex-column page-element\"\n :class=\"isPodcastmaker ? 'page-element-podcastmaker' : ''\"\n >\n <PodcastModuleBox\n :playing-podcast=\"playingPodcast\"\n :podcast=\"podcast\"\n :podcast-conference=\"fetchConference\"\n @update-podcast=\"updatePodcast\"\n >\n <template #recording-item-button=\"slotProps\">\n <slot name=\"recording-item-button\" v-bind=\"slotProps\" />\n </template>\n <template #edit-box=\"slotProps\">\n <slot name=\"edit-box\" v-bind=\"slotProps\" />\n </template>\n <template #alert-message=\"slotProps\">\n <slot name=\"alert-message\" v-bind=\"slotProps\" />\n </template>\n </PodcastModuleBox>\n <ShareSocialsButtons\n v-if=\"state.podcastPage.ShareButtons\"\n :organisation-id=\"podcast.organisation.id\"\n />\n <SharePlayer\n v-if=\"!isPodcastmaker && editRight && !youtubeId\"\n :podcast=\"podcast\"\n :emission=\"podcast?.emission\"\n :organisation-id=\"authOrgaId\"\n />\n <CommentSection :podcast=\"podcast\" />\n\n <!-- Suggestions -->\n <PodcastInlineList\n :emission-id=\"podcast.emission.emissionId\"\n :href=\"'/main/pub/emission/' + podcast.emission.emissionId\"\n :title=\"t('More episodes of this emission')\"\n :button-text=\"t('All podcast emission button')\"\n title-tag=\"h3\"\n />\n <section v-if=\"!hideSuggestions\">\n <ClassicLazy :min-height=\"550\">\n <PodcastInlineList\n class=\"mt-4\"\n title-tag=\"h3\"\n :organisation-id=\"[podcast.organisation.id]\"\n :podcast-id=\"podcastId\"\n :title=\"t('Suggested listening')\"\n />\n </ClassicLazy>\n <ClassicLazy v-for=\"c in categories\" :key=\"c.id\" :min-height=\"550\">\n <PodcastInlineList\n class=\"mt-4\"\n title-tag=\"h3\"\n :iab-id=\"c.id\"\n :href=\"'/main/pub/category/' + c.id\"\n :title=\"t('More episodes of this category : ', { name: c.name })\"\n :button-text=\"t('All podcast button', { name: c.name })\"\n :organisation-id=\"[podcast.organisation.id]\"\n />\n </ClassicLazy>\n </section>\n </div>\n </template>\n <ClassicLoading\n :loading-text=\"!loaded ? t('Loading content ...') : undefined\"\n :error-text=\"\n error\n ? t(`This episode is not available for (re)listening`)\n : undefined\n \"\n />\n </section>\n</template>\n\n<script setup lang=\"ts\">\nimport youtubeVideoHelper from \"../../helper/youtubeVideoHelper\";\nimport {useOrgaComputed} from \"../composable/useOrgaComputed\";\nimport PodcastInlineList from \"../display/podcasts/PodcastInlineList.vue\";\nimport PodcastModuleBox from \"../display/podcasts/PodcastModuleBox.vue\";\nimport ClassicLazy from \"../misc/ClassicLazy.vue\";\nimport ClassicLoading from \"../form/ClassicLoading.vue\";\nimport classicApi from \"../../api/classicApi\";\nimport { state } from \"../../stores/ParamSdkStore\";\nimport { useFilterStore } from \"../../stores/FilterStore\";\nimport { Podcast } from \"@/stores/class/general/podcast\";\nimport {\n Conference,\n ConferencePublicInfo,\n} from \"@/stores/class/conference/conference\";\nimport {useErrorHandler} from \"../composable/useErrorHandler\";\nimport {useSeoTitleUrl} from \"../composable/route/useSeoTitleUrl\";\nimport { computed, defineAsyncComponent, onBeforeUnmount, ref, Ref, watch } from \"vue\";\nimport { Category } from \"@/stores/class/general/category\";\nimport { useAuthStore } from \"../../stores/AuthStore\";\nimport { useGeneralStore } from \"../../stores/GeneralStore\";\nimport { AxiosError } from \"axios\";\nimport { useCommentStore } from \"../../stores/CommentStore\";\nimport { useI18n } from \"vue-i18n\";\nimport { useRoute } from \"vue-router\";\nimport { podcastApi } from \"../../api/podcastApi\";\n\nconst ShareSocialsButtons = defineAsyncComponent(\n () => import(\"../display/sharing/ShareSocialsButtons.vue\"),\n);\nconst SharePlayer = defineAsyncComponent(\n () => import(\"../display/sharing/SharePlayer.vue\"),\n);\nconst CommentSection = defineAsyncComponent(\n () => import(\"../display/comments/CommentSection.vue\"),\n);\nconst PodcastmakerHeader = defineAsyncComponent(\n () => import(\"../display/podcastmaker/PodcastmakerHeader.vue\"),\n);\n\n//Props \nconst props = defineProps<{\n updateStatus?: string;\n playingPodcast?: Podcast;\n podcastId: number;\n}>();\n\n\n//Data \nconst loaded = ref(false);\nconst error = ref(false);\nconst podcast: Ref<Podcast | undefined> = ref(undefined);\nconst fetchConference: Ref<Conference | undefined> = ref(undefined);\nconst infoReload: Ref<ReturnType<typeof setTimeout>| undefined> = ref(undefined);\nconst youtubeId: Ref<string| undefined> = ref(undefined);\n\n//Composables\nconst route = useRoute();\nconst { t } = useI18n();\nconst { isPodcastmaker, isEditRights, authOrgaId } = useOrgaComputed();\nconst { updatePathParams } = useSeoTitleUrl();\nconst {handle403} = useErrorHandler();\nconst authStore = useAuthStore();\nconst generalStore = useGeneralStore();\nconst filterStore = useFilterStore();\nconst commentStore = useCommentStore();\n\n//Computed\nconst hideSuggestions = computed(() =>{\n return (\n \"true\" ===\n (podcast.value?.emission?.annotations?.[\"HIDE_SUGGESTIONS\"] as\n | string\n | undefined)\n );\n});\nconst emissionMainCategory = computed(() =>{\n if (!podcast.value) {\n return 0;\n }\n if (podcast.value.emission.annotations?.mainIabId) {\n return parseInt(\n podcast.value.emission.annotations.mainIabId as string,\n 10,\n );\n } else if(podcast.value.emission.iabIds?.length) {\n return podcast.value.emission.iabIds[0];\n }\n return 0;\n});\n\nconst categories = computed(() =>{\n if (\"undefined\" === typeof podcast.value) return [];\n return generalStore.storedCategories\n .filter((item: Category) => {\n return (\n podcast.value?.emission.iabIds &&\n -1 !== podcast.value.emission.iabIds.indexOf(item.id)\n );\n })\n .sort((a: Category, b: Category) => {\n if (a.id === emissionMainCategory.value) return -1;\n if (b.id === emissionMainCategory.value) return 1;\n return 0;\n });\n});\n\nconst editRight = computed(() =>{\n return isEditRights(podcast.value?.organisation.id);\n});\n\nconst isLiveReadyToRecord = computed(() =>{\n return (\n undefined !== podcast.value?.conferenceId &&\n 0 !== podcast.value?.conferenceId &&\n \"READY_TO_RECORD\" === podcast.value?.processingStatus\n );\n});\n\nconst isOctopusAndAnimator = computed(() =>{\n return !isPodcastmaker.value && editRight.value && authStore.isRoleLive;\n});\n\n/** Indicates whether to display emission name in header */\nconst useEmissionTitle = computed((): boolean => {\n return state.podcastPage?.displayEmissionTitleInHeader === true;\n});\n\nconst titlePage = computed(() =>{\n return isLiveReadyToRecord.value? t(\"Live episode\"): t(\"Episode\");\n});\n\n\n//Watch\nwatch(()=>props.updateStatus, () => {\n if (fetchConference.value && null !== fetchConference.value) {\n fetchConference.value.status = props.updateStatus;\n }\n});\nwatch(()=>props.podcastId, async () => {\n await getPodcastDetails();\n if (!podcast.value || error.value) {\n return;\n }\n commentStore.initCommentUser();\n}, {immediate: true});\n\n\nonBeforeUnmount(() => {\n generalStore.contentToDisplayUpdate(null);\n clearTimeout(infoReload.value);\n});\n\n\n//Methods\nasync function initConference() {\n if (!podcast.value || undefined == podcast.value.conferenceId || \"READY_TO_RECORD\" !== podcast.value.processingStatus) return;\n fetchConference.value = { conferenceId: podcast.value.conferenceId, title: \"\" };\n if (isOctopusAndAnimator.value) {\n try {\n fetchConference.value = await classicApi.fetchData<Conference>({\n api: 9,\n path: \"conference/\" + podcast.value.conferenceId,\n });\n } catch {\n await fetchConferenceStatus();\n }\n } else {\n await fetchConferenceStatus();\n }\n if (\n fetchConference.value &&\n -1 !== fetchConference.value.conferenceId &&\n \"PUBLISHING\" !== fetchConference.value.status &&\n \"DEBRIEFING\" !== fetchConference.value.status\n ) {\n fetchConferenceStatusLoop();\n }\n}\n\nasync function fetchConferenceStatusLoop() {\n if(\"PUBLISHING\" ===fetchConference.value?.status){\n return;\n }\n infoReload.value = setTimeout(async () => {\n await fetchConferenceStatus();\n fetchConferenceStatusLoop();\n }, 3000);\n}\nasync function fetchConferenceStatus() {\n try {\n const data = await classicApi.fetchData<ConferencePublicInfo>({\n api: 9,\n path: \"conference/info/\" + podcast.value?.conferenceId,\n });\n fetchConference.value = {...fetchConference.value, ...data};\n } catch {\n //Do nothing\n }\n}\nfunction updatePodcast(podcastUpdated: Podcast): void {\n podcast.value = podcastUpdated;\n filterStore.updateOrgaIfNecessary(podcastUpdated.organisation.id);\n}\nfunction initError(): void {\n error.value = true;\n loaded.value = true;\n}\n\nasync function getPodcastDetails(): Promise<void> {\n loaded.value = false;\n error.value = false;\n try {\n const data = await classicApi.fetchData<Podcast>({\n api: 0,\n path: \"podcast/\" + props.podcastId,\n });\n if (\n \"PUBLIC\" !== data.organisation.privacy &&\n filterStore.filterOrgaId !== data.organisation.id &&\n route.query.productor !== data.organisation.id\n ) {\n initError();\n return;\n }\n updatePodcast(data);\n generalStore.contentToDisplayUpdate(data);\n if (\n (!podcast.value.availability.visibility ||\n (\"READY_TO_RECORD\" !== podcast.value.processingStatus &&\n \"READY\" !== podcast.value.processingStatus &&\n \"PROCESSING\" !== podcast.value.processingStatus) ||\n false === podcast.value.valid) &&\n !editRight.value\n ) {\n error.value = true;\n loaded.value = true;\n return;\n }\n podcastInProcessing();\n updatePathParams(podcast.value.title);\n await commentStore.getCommentsConfig(podcast.value);\n if((fetchConference.value?.videoProfile?.includes(\"video_\") && \"READY_TO_RECORD\" === podcast.value.processingStatus) || undefined !== podcast.value.video?.videoId){\n youtubeId.value = youtubeVideoHelper.getYoutubeId(podcast.value?.tags ?? []);\n }\n loaded.value = true;\n } catch (error) {\n handle403(error as AxiosError);\n initError();\n }\n}\n\nfunction podcastInProcessing(){\n if(\"PLANNED\" !== podcast.value?.processingStatus){\n initConference();\n return;\n }\n infoReload.value = setTimeout(async () => {\n const podcast = await podcastApi.get(props.podcastId);\n updatePodcast(podcast);\n podcastInProcessing();\n }, 2000);\n}\n</script>\n","<template>\n <section class=\"page-box\">\n <template v-if=\"loaded && !error && podcast\">\n <PodcastmakerHeader\n v-if=\"isPodcastmaker\"\n :page-title=\"useEmissionTitle ? podcast.emission.name : titlePage\"\n :img-url=\"podcast.imageUrl\"\n />\n <div\n class=\"d-flex flex-column page-element\"\n :class=\"isPodcastmaker ? 'page-element-podcastmaker' : ''\"\n >\n <PodcastModuleBox\n :playing-podcast=\"playingPodcast\"\n :podcast=\"podcast\"\n :podcast-conference=\"fetchConference\"\n @update-podcast=\"updatePodcast\"\n >\n <template #recording-item-button=\"slotProps\">\n <slot name=\"recording-item-button\" v-bind=\"slotProps\" />\n </template>\n <template #edit-box=\"slotProps\">\n <slot name=\"edit-box\" v-bind=\"slotProps\" />\n </template>\n <template #alert-message=\"slotProps\">\n <slot name=\"alert-message\" v-bind=\"slotProps\" />\n </template>\n </PodcastModuleBox>\n <ShareSocialsButtons\n v-if=\"state.podcastPage.ShareButtons\"\n :organisation-id=\"podcast.organisation.id\"\n />\n <SharePlayer\n v-if=\"!isPodcastmaker && editRight && !youtubeId\"\n :podcast=\"podcast\"\n :emission=\"podcast?.emission\"\n :organisation-id=\"authOrgaId\"\n />\n <CommentSection :podcast=\"podcast\" />\n\n <!-- Suggestions -->\n <PodcastInlineList\n :emission-id=\"podcast.emission.emissionId\"\n :href=\"'/main/pub/emission/' + podcast.emission.emissionId\"\n :title=\"t('More episodes of this emission')\"\n :button-text=\"t('All podcast emission button')\"\n title-tag=\"h3\"\n />\n <section v-if=\"!hideSuggestions\">\n <ClassicLazy :min-height=\"550\">\n <PodcastInlineList\n class=\"mt-4\"\n title-tag=\"h3\"\n :organisation-id=\"[podcast.organisation.id]\"\n :podcast-id=\"podcastId\"\n :title=\"t('Suggested listening')\"\n />\n </ClassicLazy>\n <ClassicLazy v-for=\"c in categories\" :key=\"c.id\" :min-height=\"550\">\n <PodcastInlineList\n class=\"mt-4\"\n title-tag=\"h3\"\n :iab-id=\"c.id\"\n :href=\"'/main/pub/category/' + c.id\"\n :title=\"t('More episodes of this category : ', { name: c.name })\"\n :button-text=\"t('All podcast button', { name: c.name })\"\n :organisation-id=\"[podcast.organisation.id]\"\n />\n </ClassicLazy>\n </section>\n </div>\n </template>\n <ClassicLoading\n :loading-text=\"!loaded ? t('Loading content ...') : undefined\"\n :error-text=\"\n error\n ? t(`This episode is not available for (re)listening`)\n : undefined\n \"\n />\n </section>\n</template>\n\n<script setup lang=\"ts\">\nimport youtubeVideoHelper from \"../../helper/youtubeVideoHelper\";\nimport {useOrgaComputed} from \"../composable/useOrgaComputed\";\nimport PodcastInlineList from \"../display/podcasts/PodcastInlineList.vue\";\nimport PodcastModuleBox from \"../display/podcasts/PodcastModuleBox.vue\";\nimport ClassicLazy from \"../misc/ClassicLazy.vue\";\nimport ClassicLoading from \"../form/ClassicLoading.vue\";\nimport classicApi from \"../../api/classicApi\";\nimport { state } from \"../../stores/ParamSdkStore\";\nimport { useFilterStore } from \"../../stores/FilterStore\";\nimport { Podcast } from \"@/stores/class/general/podcast\";\nimport {\n Conference,\n ConferencePublicInfo,\n} from \"@/stores/class/conference/conference\";\nimport {useErrorHandler} from \"../composable/useErrorHandler\";\nimport {useSeoTitleUrl} from \"../composable/route/useSeoTitleUrl\";\nimport { computed, defineAsyncComponent, onBeforeUnmount, ref, Ref, watch } from \"vue\";\nimport { Category } from \"@/stores/class/general/category\";\nimport { useAuthStore } from \"../../stores/AuthStore\";\nimport { useGeneralStore } from \"../../stores/GeneralStore\";\nimport { AxiosError } from \"axios\";\nimport { useCommentStore } from \"../../stores/CommentStore\";\nimport { useI18n } from \"vue-i18n\";\nimport { useRoute } from \"vue-router\";\nimport { podcastApi } from \"../../api/podcastApi\";\n\nconst ShareSocialsButtons = defineAsyncComponent(\n () => import(\"../display/sharing/ShareSocialsButtons.vue\"),\n);\nconst SharePlayer = defineAsyncComponent(\n () => import(\"../display/sharing/SharePlayer.vue\"),\n);\nconst CommentSection = defineAsyncComponent(\n () => import(\"../display/comments/CommentSection.vue\"),\n);\nconst PodcastmakerHeader = defineAsyncComponent(\n () => import(\"../display/podcastmaker/PodcastmakerHeader.vue\"),\n);\n\n//Props \nconst props = defineProps<{\n updateStatus?: string;\n playingPodcast?: Podcast;\n podcastId: number;\n}>();\n\n\n//Data \nconst loaded = ref(false);\nconst error = ref(false);\nconst podcast: Ref<Podcast | undefined> = ref(undefined);\nconst fetchConference: Ref<Conference | undefined> = ref(undefined);\nconst infoReload: Ref<ReturnType<typeof setTimeout>| undefined> = ref(undefined);\nconst youtubeId: Ref<string| undefined> = ref(undefined);\n\n//Composables\nconst route = useRoute();\nconst { t } = useI18n();\nconst { isPodcastmaker, isEditRights, authOrgaId } = useOrgaComputed();\nconst { updatePathParams } = useSeoTitleUrl();\nconst {handle403} = useErrorHandler();\nconst authStore = useAuthStore();\nconst generalStore = useGeneralStore();\nconst filterStore = useFilterStore();\nconst commentStore = useCommentStore();\n\n//Computed\nconst hideSuggestions = computed(() =>{\n return (\n \"true\" ===\n (podcast.value?.emission?.annotations?.[\"HIDE_SUGGESTIONS\"] as\n | string\n | undefined)\n );\n});\nconst emissionMainCategory = computed(() =>{\n if (!podcast.value) {\n return 0;\n }\n if (podcast.value.emission.annotations?.mainIabId) {\n return parseInt(\n podcast.value.emission.annotations.mainIabId as string,\n 10,\n );\n } else if(podcast.value.emission.iabIds?.length) {\n return podcast.value.emission.iabIds[0];\n }\n return 0;\n});\n\nconst categories = computed(() =>{\n if (\"undefined\" === typeof podcast.value) return [];\n return generalStore.storedCategories\n .filter((item: Category) => {\n return (\n podcast.value?.emission.iabIds &&\n -1 !== podcast.value.emission.iabIds.indexOf(item.id)\n );\n })\n .sort((a: Category, b: Category) => {\n if (a.id === emissionMainCategory.value) return -1;\n if (b.id === emissionMainCategory.value) return 1;\n return 0;\n });\n});\n\nconst editRight = computed(() =>{\n return isEditRights(podcast.value?.organisation.id);\n});\n\nconst isLiveReadyToRecord = computed(() =>{\n return (\n undefined !== podcast.value?.conferenceId &&\n 0 !== podcast.value?.conferenceId &&\n \"READY_TO_RECORD\" === podcast.value?.processingStatus\n );\n});\n\nconst isOctopusAndAnimator = computed(() =>{\n return !isPodcastmaker.value && editRight.value && authStore.isRoleLive;\n});\n\n/** Indicates whether to display emission name in header */\nconst useEmissionTitle = computed((): boolean => {\n return state.podcastPage?.displayEmissionTitleInHeader === true;\n});\n\nconst titlePage = computed(() =>{\n return isLiveReadyToRecord.value? t(\"Live episode\"): t(\"Episode\");\n});\n\n\n//Watch\nwatch(()=>props.updateStatus, () => {\n if (fetchConference.value && null !== fetchConference.value) {\n fetchConference.value.status = props.updateStatus;\n }\n});\nwatch(()=>props.podcastId, async () => {\n await getPodcastDetails();\n if (!podcast.value || error.value) {\n return;\n }\n commentStore.initCommentUser();\n}, {immediate: true});\n\n\nonBeforeUnmount(() => {\n generalStore.contentToDisplayUpdate(null);\n clearTimeout(infoReload.value);\n});\n\n\n//Methods\nasync function initConference() {\n if (!podcast.value || undefined == podcast.value.conferenceId || \"READY_TO_RECORD\" !== podcast.value.processingStatus) return;\n fetchConference.value = { conferenceId: podcast.value.conferenceId, title: \"\" };\n if (isOctopusAndAnimator.value) {\n try {\n fetchConference.value = await classicApi.fetchData<Conference>({\n api: 9,\n path: \"conference/\" + podcast.value.conferenceId,\n });\n } catch {\n await fetchConferenceStatus();\n }\n } else {\n await fetchConferenceStatus();\n }\n if (\n fetchConference.value &&\n -1 !== fetchConference.value.conferenceId &&\n \"PUBLISHING\" !== fetchConference.value.status &&\n \"DEBRIEFING\" !== fetchConference.value.status\n ) {\n fetchConferenceStatusLoop();\n }\n}\n\nasync function fetchConferenceStatusLoop() {\n if(\"PUBLISHING\" ===fetchConference.value?.status){\n return;\n }\n infoReload.value = setTimeout(async () => {\n await fetchConferenceStatus();\n fetchConferenceStatusLoop();\n }, 3000);\n}\nasync function fetchConferenceStatus() {\n try {\n const data = await classicApi.fetchData<ConferencePublicInfo>({\n api: 9,\n path: \"conference/info/\" + podcast.value?.conferenceId,\n });\n fetchConference.value = {...fetchConference.value, ...data};\n } catch {\n //Do nothing\n }\n}\nfunction updatePodcast(podcastUpdated: Podcast): void {\n podcast.value = podcastUpdated;\n filterStore.updateOrgaIfNecessary(podcastUpdated.organisation.id);\n}\nfunction initError(): void {\n error.value = true;\n loaded.value = true;\n}\n\nasync function getPodcastDetails(): Promise<void> {\n loaded.value = false;\n error.value = false;\n try {\n const data = await classicApi.fetchData<Podcast>({\n api: 0,\n path: \"podcast/\" + props.podcastId,\n });\n if (\n \"PUBLIC\" !== data.organisation.privacy &&\n filterStore.filterOrgaId !== data.organisation.id &&\n route.query.productor !== data.organisation.id\n ) {\n initError();\n return;\n }\n updatePodcast(data);\n generalStore.contentToDisplayUpdate(data);\n if (\n (!podcast.value.availability.visibility ||\n (\"READY_TO_RECORD\" !== podcast.value.processingStatus &&\n \"READY\" !== podcast.value.processingStatus &&\n \"PROCESSING\" !== podcast.value.processingStatus) ||\n false === podcast.value.valid) &&\n !editRight.value\n ) {\n error.value = true;\n loaded.value = true;\n return;\n }\n podcastInProcessing();\n updatePathParams(podcast.value.title);\n await commentStore.getCommentsConfig(podcast.value);\n if((fetchConference.value?.videoProfile?.includes(\"video_\") && \"READY_TO_RECORD\" === podcast.value.processingStatus) || undefined !== podcast.value.video?.videoId){\n youtubeId.value = youtubeVideoHelper.getYoutubeId(podcast.value?.tags ?? []);\n }\n loaded.value = true;\n } catch (error) {\n handle403(error as AxiosError);\n initError();\n }\n}\n\nfunction podcastInProcessing(){\n if(\"PLANNED\" !== podcast.value?.processingStatus){\n initConference();\n return;\n }\n infoReload.value = setTimeout(async () => {\n const podcast = await podcastApi.get(props.podcastId);\n updatePodcast(podcast);\n podcastInProcessing();\n }, 2000);\n}\n</script>\n"],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"PodcastPage-acKIH0vO.mjs","names":[],"sources":["../src/components/display/podcasts/PodcastModuleBox.vue","../src/components/display/podcasts/PodcastModuleBox.vue","../src/components/pages/PodcastPage.vue","../src/components/pages/PodcastPage.vue"],"sourcesContent":["<template>\n <section v-if=\"podcast\" class=\"module-box\">\n <slot\n v-if=\"!!podcastConference && isLiveReadyToRecord && isOctopusAndAnimator\"\n name=\"recording-item-button\"\n :podcast=\"podcast\"\n :live=\"true\"\n :recording=\"podcastConference\"\n :on-delete-item=\"removeDeleted\"\n :on-validate-podcast=\"(p) => emit('updatePodcast', p)\"\n />\n <slot\n v-else-if=\"editRight && isEditBox\"\n name=\"edit-box\"\n :podcast=\"podcast\"\n :display-studio-access=\"isDebriefing\"\n :on-update-transcription=\"resetTranscription\"\n :on-validate-podcast=\"(p) => emit('updatePodcast', p)\"\n />\n <div class=\"mb-2 w-100\">\n <PodcastImage\n :class=\"[\n isLiveReadyToRecord &&\n podcastConference &&\n 'null' !== podcastConference &&\n podcastConference.status\n ? podcastConference.status.toLowerCase() + '-shadow'\n : '',\n ]\"\n class=\"me-3\"\n show-processing\n :hide-play=\"isLiveReadyToRecord\"\n :podcast=\"podcast\"\n :playing-podcast=\"playingPodcast\"\n :fetch-conference=\"podcastConference\"\n :is-animator-live=\"isOctopusAndAnimator\"\n />\n <div class=\"d-flex justify-content-between flex-wrap mb-2\">\n <time \n v-if=\"0 !== date.length\"\n :class=\"!isLiveReady ? 'me-5' : ''\"\n :datetime=\"podcast.pubDate\"\n >\n {{ date }}\n </time>\n <div v-if=\"isLiveReady\" class=\"text-danger\">\n {{ t(\"Episode record in live\") }}\n </div>\n <div class=\"d-flex flex-column align-items-end\">\n <time :datetime=\"durationIso\">\n {{ duration }}\n </time>\n <ShareAnonymous\n v-if=\"!editRight\"\n :podcast=\"podcast\"\n :organisation-id=\"podcast.organisation.id\"\n />\n </div>\n </div>\n <h2 :class=\"{ 'mb-3': !showSubtitle }\">\n <RightsIndicator\n :podcast=\"podcast\"\n action=\"edit\"\n inline\n />\n {{ podcast.title }}\n </h2>\n <h3 v-if=\"showSubtitle\" class=\"mb-3 text-secondary\">\n {{ podcast.annotations.subtitle }}\n </h3>\n \n <PodcastPlannedSpinner v-if=\"isPlannedInProcessor\" />\n <Countdown v-if=\"isCounter\" :time-remaining=\"timeRemaining\" />\n <!-- eslint-disable vue/no-v-html -->\n <div\n v-if=\"showSummary\"\n class=\"description-text html-wysiwyg-content\"\n :class=\"{ 'mb-4': showSummary && showDescription }\"\n v-html=\"urlify(podcast.summary)\"\n />\n <div\n v-if=\"showDescription\"\n class=\"description-text html-wysiwyg-content\"\n v-html=\"urlify(podcast.description)\"\n />\n <!-- eslint-enable -->\n <div class=\"my-3\">\n <div class=\"mb-1\">\n {{ t(\"Emission\") + \" : \" }}\n <router-link\n :to=\"{\n name: 'emission',\n params: { emissionId: podcast.emission.emissionId },\n }\"\n :title=\"t('Series name page', { name: podcast.emission.name })\"\n >\n {{ podcast.emission.name }}\n </router-link>\n </div>\n <ParticipantDescription :participants=\"podcast.animators\" />\n <ParticipantDescription\n :participants=\"podcast.guests\"\n :is-guest=\"true\"\n />\n <div v-if=\"!isPodcastmaker\" class=\"mb-1\">\n {{ t(\"Producted by : \") }}\n <router-link\n :to=\"{\n name: 'productor',\n params: { productorId: podcast.organisation.id },\n }\"\n >\n {{ podcast.organisation.name }}\n </router-link>\n </div>\n <div v-if=\"showSeasonNumber\" class=\"mb-1\">\n {{ `${t('Podcast - Season')} : ${podcast.seasonNumber}` }}\n </div>\n <div v-if=\"showSeasonEpisodeNumber\" class=\"mb-1\">\n {{ `${t('Podcast - Episode number')} : ${podcast.seasonEpisodeNumber}` }}\n </div>\n <div v-if=\"'' !== photoCredit\" class=\"mb-1\">\n {{ t(\"Photo credits\") + \" : \" + photoCredit }}\n </div>\n <div v-if=\"'' !== audioCredit\" class=\"mb-1\">\n {{ t(\"Audio credits\") + \" : \" + audioCredit }}\n </div>\n <div v-if=\"'' !== authorCredit\" class=\"mb-1\">\n {{ t(\"Author credits\") + \" : \" + authorCredit }}\n </div>\n <a\n v-if=\"podcast.article && !authStore.isGarRole\"\n class=\"btn d-flex align-items-center my-2 w-fit-content mb-1\"\n :href=\"podcast.article\"\n rel=\"noreferrer noopener\"\n target=\"_blank\"\n :title=\"t('New window', {text : t('See associated article')})\"\n >\n <NewspaperVariantOutlineIcon class=\"me-1\" />\n <div>{{ t(\"See associated article\") }}</div>\n </a>\n <PodcastPlayBar\n v-if=\"state.emissionsPage.progressBar\"\n :podcast=\"podcast\"\n />\n <div v-if=\"editRight && !isPodcastmaker\">\n <div\n v-if=\"\n podcast.annotations && 'RSS' === podcast.annotations.SOURCE_KIND\n \"\n class=\"me-5 text-secondary\"\n >\n {{ t(\"From RSS\") }}\n </div>\n <ClassicAlert\n v-if=\"alert\"\n :type=\"alert.type\"\n style=\"width: fit-content\"\n >\n <div class=\"d-flex align-items-center\">\n {{ alert.message }}\n\n <slot name=\"alert-message\" :alert=\"alert\" />\n </div>\n </ClassicAlert>\n </div>\n <div class=\"d-flex align-items-center flex-wrap\">\n <LikeSection :edit-right=\"editRight\" :podcast=\"podcast\" />\n <DownloadPodcastButton v-if=\"state.podcastPage.downloadButton\" :podcast=\"podcast\" />\n </div>\n </div>\n </div>\n <TagList\n v-if=\"showTags\"\n :tag-list=\"tags\"\n :orga-id=\"podcast.organisation.id\"\n :podcast-annotations=\"podcast.annotations\"\n :max=\"state.podcastPage.maxTags\"\n />\n <PodcastRubriqueList\n v-if=\"podcastRubriques?.length\"\n :orga-id=\"podcast.organisation.id\"\n :rubrique-ids=\"podcastRubriques\"\n />\n <PodcastRawTranscript\n ref=\"podcastRawTranscript\"\n :podcast-id=\"podcast.podcastId\"\n />\n <SubscribeButtons\n v-if=\"isPodcastmaker\"\n class=\"mt-4\"\n :content=\"podcast.emission\"\n :window-width=\"1000\"\n :justify-center=\"false\"\n />\n </section>\n</template>\n\n<script setup lang=\"ts\">\nimport NewspaperVariantOutlineIcon from \"vue-material-design-icons/NewspaperVariantOutline.vue\";\nimport PodcastImage from \"./PodcastImage.vue\";\nimport ParticipantDescription from \"./ParticipantDescription.vue\";\nimport PodcastRawTranscript from \"./PodcastRawTranscript.vue\";\nimport { state } from \"../../../stores/ParamSdkStore\";\nimport { useAuthStore } from \"../../../stores/AuthStore\";\nimport displayHelper from \"../../../helper/displayHelper\";\nimport {usePodcastView} from \"../../composable/podcasts/usePodcastView\";\nimport { Podcast } from \"../../../stores/class/general/podcast\";\nimport { Conference } from \"../../../stores/class/conference/conference\";\nimport { useI18n } from \"vue-i18n\";\nimport { useRouter } from \"vue-router\";\nimport { useSeasonsManagement } from \"../../composable/useSeasonsManagement\";\nimport { SeasonMode } from \"../../../stores/class/general/emission\";\nimport RightsIndicator from \"../RightsIndicator.vue\"; \nimport ClassicAlert from \"@/components/misc/ClassicAlert.vue\"; \n\nimport { defineAsyncComponent, toRefs, computed, useTemplateRef } from \"vue\";\nimport { useAppleVideo } from \"@/components/composable/useAppleVideo\";\nconst PodcastPlayBar = defineAsyncComponent(\n () => import(\"./PodcastPlayBar.vue\"),\n);\nconst SubscribeButtons = defineAsyncComponent(\n () => import(\"../sharing/SubscribeButtons.vue\"),\n);\nconst LikeSection = defineAsyncComponent(\n () => import(\"../comments/like/LikeSection.vue\"),\n);\nconst DownloadPodcastButton = defineAsyncComponent(\n () => import(\"./DownloadPodcastButton.vue\"),\n);\nconst PodcastPlannedSpinner = defineAsyncComponent(\n () => import(\"./PodcastPlannedSpinner.vue\"),\n);\nconst Countdown = defineAsyncComponent(() => import(\"../live/CountDown.vue\"));\nconst TagList = defineAsyncComponent(() => import(\"./TagList.vue\"));\nconst ShareAnonymous = defineAsyncComponent(() => import(\"../sharing/ShareAnonymous.vue\"));\nconst PodcastRubriqueList = defineAsyncComponent(() => import(\"./PodcastRubriqueList.vue\"));\n\n//Props \nconst props = defineProps<{\n podcast: Podcast;\n playingPodcast?: Podcast;\n podcastConference?: Conference;\n}>();\n\n//Emits\nconst emit = defineEmits([\"updatePodcast\"]);\n\n//Composables\nconst { t } = useI18n();\nconst propsRef = toRefs(props);\nconst { \n isLiveReadyToRecord,\n isCounter,\n timeRemaining,\n isPlannedInProcessor,\n date,\n duration,\n durationIso,\n isPodcastmaker,\n editRight\n} = usePodcastView(propsRef.podcast, propsRef.podcastConference);\nconst authStore = useAuthStore();\nconst router = useRouter();\nconst { areSeasonsEnabled } = useSeasonsManagement();\nconst { isErrorStatus, toGenericErrorCode } = useAppleVideo();\n\n/** Reference to the PodcastRqwTranscript */\nconst podcastRawTranscript = useTemplateRef('podcastRawTranscript');\n\n//Computed\nconst podcastRubriques = computed(() => {\n let rubriques = props.podcast?.rubriqueIds ?? [];\n if(props.podcast?.emission?.rubriqueIds){\n rubriques = [...new Set(rubriques.concat(props.podcast?.emission?.rubriqueIds))];\n }\n return rubriques;\n});\n\ninterface Alert {\n type: 'error'|'warning'|'info';\n message: string;\n code?: string;\n}\n\nconst alert = computed((): Alert|null => {\n if (\"ERROR\" === props.podcast?.processingStatus) {\n return {\n type: 'error',\n message: t(\"Podcast in ERROR, please contact Saooti\")\n };\n }\n const appleVideoStatus = props.podcast?.annotations?.appleVideoStatus as string|undefined;\n if (isErrorStatus(appleVideoStatus)) {\n return {\n type: 'error',\n message: t('Apple podcast - Error - Undefined', {\n status: appleVideoStatus\n }),\n code: toGenericErrorCode(appleVideoStatus)\n };\n }\n if (podcastNotValid.value) {\n return {\n type: 'warning',\n message: t(\"Podcast not validated\")\n };\n }\n if (appleVideoStatus === 'HLS_NOT_READY') {\n return {\n type: 'info',\n message: t('Apple podcast - Info - HLS_NOT_READY'),\n code: toGenericErrorCode(appleVideoStatus)\n };\n }\n if (!props.podcast?.availability.visibility) {\n return {\n type: 'warning',\n message: t(\"Podcast is not visible for listeners\")\n };\n }\n return null;\n});\n\nconst isLiveReady = computed(() => {\n return (\n undefined !== props.podcast?.conferenceId &&\n 0 !== props.podcast?.conferenceId &&\n \"READY\" === props.podcast?.processingStatus\n );\n});\nconst isDebriefing = computed(() => {\n return (\n undefined !== props.podcastConference &&\n \"DEBRIEFING\" === props.podcastConference.status\n );\n});\nconst isOctopusAndAnimator = computed(() => {\n return !isPodcastmaker.value && editRight.value && authStore.isRoleLive;\n});\nconst podcastNotValid = computed(() => {\n return (\n undefined !== props.podcast?.availability &&\n false === props.podcast?.valid\n );\n});\nconst photoCredit = computed(() => formatCredits(props.podcast?.annotations?.photoCredit as string|undefined));\nconst audioCredit = computed(() => formatCredits(props.podcast?.annotations?.audioCredit as string|undefined));\nconst authorCredit = computed(() => formatCredits(props.podcast?.annotations?.authorCredit as string|undefined));\nconst isEditBox = computed(() => !((state.generalParameters.podcastmaker as boolean) ?? false));\n/** The tags to display */\nconst tags = computed(() => {\n const tags = [];\n if(props.podcast.tags) {\n tags.push(...props.podcast.tags);\n }\n // Also display tags defined on emission\n if(props.podcast.emission.tags) {\n tags.push(...props.podcast.emission.tags);\n }\n return tags;\n});\n\nconst showSeasonNumber = computed((): boolean => {\n return areSeasonsEnabled(props.podcast.emission) && props.podcast.seasonNumber !== undefined;\n});\n\nconst showSeasonEpisodeNumber = computed((): boolean => {\n return props.podcast.emission.seasonMode === SeasonMode.SEASON_WITH_PODCAST_NUMBERING && props.podcast.seasonEpisodeNumber !== undefined;\n});\n\n/** Indicates whether to show subtitle */\nconst showSubtitle = computed((): boolean => {\n return props.podcast.annotations?.subtitle && state.podcastPage?.hideSubtitle !== true;\n});\n\n/** Indicates whether to show description */\nconst showDescription = computed((): boolean => {\n return state.podcastPage?.descriptionOrSummary !== 'summary';\n});\n\n/** Indicates whether to show summary */\nconst showSummary = computed((): boolean => {\n return props.podcast.summary && state.podcastPage?.descriptionOrSummary !== 'description' && state.podcastPage?.descriptionOrSummary !== undefined;\n});\n\n//Methods\nfunction formatCredits(credits: string|undefined): string {\n if (credits === undefined) {\n return '';\n }\n return credits.split(',').map(s => s.trim()).join(', ');\n}\nfunction urlify(text:string|undefined){\n return displayHelper.urlify(text);\n}\nfunction removeDeleted(): void {\n if (isLiveReadyToRecord.value) {\n router.push(\"/main/pub/lives\");\n } else if (window.history.length > 1) {\n router.go(-1);\n } else {\n router.push(\"/\");\n }\n}\n\nfunction resetTranscription(): void {\n podcastRawTranscript.value.reset();\n}\n\nconst showTags = computed((): boolean => {\n if (state.podcastPage.hideTags === true) {\n return false;\n }\n\n return undefined !== tags.value && 0 !== tags.value.length;\n});\n</script>\n","<template>\n <section v-if=\"podcast\" class=\"module-box\">\n <slot\n v-if=\"!!podcastConference && isLiveReadyToRecord && isOctopusAndAnimator\"\n name=\"recording-item-button\"\n :podcast=\"podcast\"\n :live=\"true\"\n :recording=\"podcastConference\"\n :on-delete-item=\"removeDeleted\"\n :on-validate-podcast=\"(p) => emit('updatePodcast', p)\"\n />\n <slot\n v-else-if=\"editRight && isEditBox\"\n name=\"edit-box\"\n :podcast=\"podcast\"\n :display-studio-access=\"isDebriefing\"\n :on-update-transcription=\"resetTranscription\"\n :on-validate-podcast=\"(p) => emit('updatePodcast', p)\"\n />\n <div class=\"mb-2 w-100\">\n <PodcastImage\n :class=\"[\n isLiveReadyToRecord &&\n podcastConference &&\n 'null' !== podcastConference &&\n podcastConference.status\n ? podcastConference.status.toLowerCase() + '-shadow'\n : '',\n ]\"\n class=\"me-3\"\n show-processing\n :hide-play=\"isLiveReadyToRecord\"\n :podcast=\"podcast\"\n :playing-podcast=\"playingPodcast\"\n :fetch-conference=\"podcastConference\"\n :is-animator-live=\"isOctopusAndAnimator\"\n />\n <div class=\"d-flex justify-content-between flex-wrap mb-2\">\n <time \n v-if=\"0 !== date.length\"\n :class=\"!isLiveReady ? 'me-5' : ''\"\n :datetime=\"podcast.pubDate\"\n >\n {{ date }}\n </time>\n <div v-if=\"isLiveReady\" class=\"text-danger\">\n {{ t(\"Episode record in live\") }}\n </div>\n <div class=\"d-flex flex-column align-items-end\">\n <time :datetime=\"durationIso\">\n {{ duration }}\n </time>\n <ShareAnonymous\n v-if=\"!editRight\"\n :podcast=\"podcast\"\n :organisation-id=\"podcast.organisation.id\"\n />\n </div>\n </div>\n <h2 :class=\"{ 'mb-3': !showSubtitle }\">\n <RightsIndicator\n :podcast=\"podcast\"\n action=\"edit\"\n inline\n />\n {{ podcast.title }}\n </h2>\n <h3 v-if=\"showSubtitle\" class=\"mb-3 text-secondary\">\n {{ podcast.annotations.subtitle }}\n </h3>\n \n <PodcastPlannedSpinner v-if=\"isPlannedInProcessor\" />\n <Countdown v-if=\"isCounter\" :time-remaining=\"timeRemaining\" />\n <!-- eslint-disable vue/no-v-html -->\n <div\n v-if=\"showSummary\"\n class=\"description-text html-wysiwyg-content\"\n :class=\"{ 'mb-4': showSummary && showDescription }\"\n v-html=\"urlify(podcast.summary)\"\n />\n <div\n v-if=\"showDescription\"\n class=\"description-text html-wysiwyg-content\"\n v-html=\"urlify(podcast.description)\"\n />\n <!-- eslint-enable -->\n <div class=\"my-3\">\n <div class=\"mb-1\">\n {{ t(\"Emission\") + \" : \" }}\n <router-link\n :to=\"{\n name: 'emission',\n params: { emissionId: podcast.emission.emissionId },\n }\"\n :title=\"t('Series name page', { name: podcast.emission.name })\"\n >\n {{ podcast.emission.name }}\n </router-link>\n </div>\n <ParticipantDescription :participants=\"podcast.animators\" />\n <ParticipantDescription\n :participants=\"podcast.guests\"\n :is-guest=\"true\"\n />\n <div v-if=\"!isPodcastmaker\" class=\"mb-1\">\n {{ t(\"Producted by : \") }}\n <router-link\n :to=\"{\n name: 'productor',\n params: { productorId: podcast.organisation.id },\n }\"\n >\n {{ podcast.organisation.name }}\n </router-link>\n </div>\n <div v-if=\"showSeasonNumber\" class=\"mb-1\">\n {{ `${t('Podcast - Season')} : ${podcast.seasonNumber}` }}\n </div>\n <div v-if=\"showSeasonEpisodeNumber\" class=\"mb-1\">\n {{ `${t('Podcast - Episode number')} : ${podcast.seasonEpisodeNumber}` }}\n </div>\n <div v-if=\"'' !== photoCredit\" class=\"mb-1\">\n {{ t(\"Photo credits\") + \" : \" + photoCredit }}\n </div>\n <div v-if=\"'' !== audioCredit\" class=\"mb-1\">\n {{ t(\"Audio credits\") + \" : \" + audioCredit }}\n </div>\n <div v-if=\"'' !== authorCredit\" class=\"mb-1\">\n {{ t(\"Author credits\") + \" : \" + authorCredit }}\n </div>\n <a\n v-if=\"podcast.article && !authStore.isGarRole\"\n class=\"btn d-flex align-items-center my-2 w-fit-content mb-1\"\n :href=\"podcast.article\"\n rel=\"noreferrer noopener\"\n target=\"_blank\"\n :title=\"t('New window', {text : t('See associated article')})\"\n >\n <NewspaperVariantOutlineIcon class=\"me-1\" />\n <div>{{ t(\"See associated article\") }}</div>\n </a>\n <PodcastPlayBar\n v-if=\"state.emissionsPage.progressBar\"\n :podcast=\"podcast\"\n />\n <div v-if=\"editRight && !isPodcastmaker\">\n <div\n v-if=\"\n podcast.annotations && 'RSS' === podcast.annotations.SOURCE_KIND\n \"\n class=\"me-5 text-secondary\"\n >\n {{ t(\"From RSS\") }}\n </div>\n <ClassicAlert\n v-if=\"alert\"\n :type=\"alert.type\"\n style=\"width: fit-content\"\n >\n <div class=\"d-flex align-items-center\">\n {{ alert.message }}\n\n <slot name=\"alert-message\" :alert=\"alert\" />\n </div>\n </ClassicAlert>\n </div>\n <div class=\"d-flex align-items-center flex-wrap\">\n <LikeSection :edit-right=\"editRight\" :podcast=\"podcast\" />\n <DownloadPodcastButton v-if=\"state.podcastPage.downloadButton\" :podcast=\"podcast\" />\n </div>\n </div>\n </div>\n <TagList\n v-if=\"showTags\"\n :tag-list=\"tags\"\n :orga-id=\"podcast.organisation.id\"\n :podcast-annotations=\"podcast.annotations\"\n :max=\"state.podcastPage.maxTags\"\n />\n <PodcastRubriqueList\n v-if=\"podcastRubriques?.length\"\n :orga-id=\"podcast.organisation.id\"\n :rubrique-ids=\"podcastRubriques\"\n />\n <PodcastRawTranscript\n ref=\"podcastRawTranscript\"\n :podcast-id=\"podcast.podcastId\"\n />\n <SubscribeButtons\n v-if=\"isPodcastmaker\"\n class=\"mt-4\"\n :content=\"podcast.emission\"\n :window-width=\"1000\"\n :justify-center=\"false\"\n />\n </section>\n</template>\n\n<script setup lang=\"ts\">\nimport NewspaperVariantOutlineIcon from \"vue-material-design-icons/NewspaperVariantOutline.vue\";\nimport PodcastImage from \"./PodcastImage.vue\";\nimport ParticipantDescription from \"./ParticipantDescription.vue\";\nimport PodcastRawTranscript from \"./PodcastRawTranscript.vue\";\nimport { state } from \"../../../stores/ParamSdkStore\";\nimport { useAuthStore } from \"../../../stores/AuthStore\";\nimport displayHelper from \"../../../helper/displayHelper\";\nimport {usePodcastView} from \"../../composable/podcasts/usePodcastView\";\nimport { Podcast } from \"../../../stores/class/general/podcast\";\nimport { Conference } from \"../../../stores/class/conference/conference\";\nimport { useI18n } from \"vue-i18n\";\nimport { useRouter } from \"vue-router\";\nimport { useSeasonsManagement } from \"../../composable/useSeasonsManagement\";\nimport { SeasonMode } from \"../../../stores/class/general/emission\";\nimport RightsIndicator from \"../RightsIndicator.vue\"; \nimport ClassicAlert from \"@/components/misc/ClassicAlert.vue\"; \n\nimport { defineAsyncComponent, toRefs, computed, useTemplateRef } from \"vue\";\nimport { useAppleVideo } from \"@/components/composable/useAppleVideo\";\nconst PodcastPlayBar = defineAsyncComponent(\n () => import(\"./PodcastPlayBar.vue\"),\n);\nconst SubscribeButtons = defineAsyncComponent(\n () => import(\"../sharing/SubscribeButtons.vue\"),\n);\nconst LikeSection = defineAsyncComponent(\n () => import(\"../comments/like/LikeSection.vue\"),\n);\nconst DownloadPodcastButton = defineAsyncComponent(\n () => import(\"./DownloadPodcastButton.vue\"),\n);\nconst PodcastPlannedSpinner = defineAsyncComponent(\n () => import(\"./PodcastPlannedSpinner.vue\"),\n);\nconst Countdown = defineAsyncComponent(() => import(\"../live/CountDown.vue\"));\nconst TagList = defineAsyncComponent(() => import(\"./TagList.vue\"));\nconst ShareAnonymous = defineAsyncComponent(() => import(\"../sharing/ShareAnonymous.vue\"));\nconst PodcastRubriqueList = defineAsyncComponent(() => import(\"./PodcastRubriqueList.vue\"));\n\n//Props \nconst props = defineProps<{\n podcast: Podcast;\n playingPodcast?: Podcast;\n podcastConference?: Conference;\n}>();\n\n//Emits\nconst emit = defineEmits([\"updatePodcast\"]);\n\n//Composables\nconst { t } = useI18n();\nconst propsRef = toRefs(props);\nconst { \n isLiveReadyToRecord,\n isCounter,\n timeRemaining,\n isPlannedInProcessor,\n date,\n duration,\n durationIso,\n isPodcastmaker,\n editRight\n} = usePodcastView(propsRef.podcast, propsRef.podcastConference);\nconst authStore = useAuthStore();\nconst router = useRouter();\nconst { areSeasonsEnabled } = useSeasonsManagement();\nconst { isErrorStatus, toGenericErrorCode } = useAppleVideo();\n\n/** Reference to the PodcastRqwTranscript */\nconst podcastRawTranscript = useTemplateRef('podcastRawTranscript');\n\n//Computed\nconst podcastRubriques = computed(() => {\n let rubriques = props.podcast?.rubriqueIds ?? [];\n if(props.podcast?.emission?.rubriqueIds){\n rubriques = [...new Set(rubriques.concat(props.podcast?.emission?.rubriqueIds))];\n }\n return rubriques;\n});\n\ninterface Alert {\n type: 'error'|'warning'|'info';\n message: string;\n code?: string;\n}\n\nconst alert = computed((): Alert|null => {\n if (\"ERROR\" === props.podcast?.processingStatus) {\n return {\n type: 'error',\n message: t(\"Podcast in ERROR, please contact Saooti\")\n };\n }\n const appleVideoStatus = props.podcast?.annotations?.appleVideoStatus as string|undefined;\n if (isErrorStatus(appleVideoStatus)) {\n return {\n type: 'error',\n message: t('Apple podcast - Error - Undefined', {\n status: appleVideoStatus\n }),\n code: toGenericErrorCode(appleVideoStatus)\n };\n }\n if (podcastNotValid.value) {\n return {\n type: 'warning',\n message: t(\"Podcast not validated\")\n };\n }\n if (appleVideoStatus === 'HLS_NOT_READY') {\n return {\n type: 'info',\n message: t('Apple podcast - Info - HLS_NOT_READY'),\n code: toGenericErrorCode(appleVideoStatus)\n };\n }\n if (!props.podcast?.availability.visibility) {\n return {\n type: 'warning',\n message: t(\"Podcast is not visible for listeners\")\n };\n }\n return null;\n});\n\nconst isLiveReady = computed(() => {\n return (\n undefined !== props.podcast?.conferenceId &&\n 0 !== props.podcast?.conferenceId &&\n \"READY\" === props.podcast?.processingStatus\n );\n});\nconst isDebriefing = computed(() => {\n return (\n undefined !== props.podcastConference &&\n \"DEBRIEFING\" === props.podcastConference.status\n );\n});\nconst isOctopusAndAnimator = computed(() => {\n return !isPodcastmaker.value && editRight.value && authStore.isRoleLive;\n});\nconst podcastNotValid = computed(() => {\n return (\n undefined !== props.podcast?.availability &&\n false === props.podcast?.valid\n );\n});\nconst photoCredit = computed(() => formatCredits(props.podcast?.annotations?.photoCredit as string|undefined));\nconst audioCredit = computed(() => formatCredits(props.podcast?.annotations?.audioCredit as string|undefined));\nconst authorCredit = computed(() => formatCredits(props.podcast?.annotations?.authorCredit as string|undefined));\nconst isEditBox = computed(() => !((state.generalParameters.podcastmaker as boolean) ?? false));\n/** The tags to display */\nconst tags = computed(() => {\n const tags = [];\n if(props.podcast.tags) {\n tags.push(...props.podcast.tags);\n }\n // Also display tags defined on emission\n if(props.podcast.emission.tags) {\n tags.push(...props.podcast.emission.tags);\n }\n return tags;\n});\n\nconst showSeasonNumber = computed((): boolean => {\n return areSeasonsEnabled(props.podcast.emission) && props.podcast.seasonNumber !== undefined;\n});\n\nconst showSeasonEpisodeNumber = computed((): boolean => {\n return props.podcast.emission.seasonMode === SeasonMode.SEASON_WITH_PODCAST_NUMBERING && props.podcast.seasonEpisodeNumber !== undefined;\n});\n\n/** Indicates whether to show subtitle */\nconst showSubtitle = computed((): boolean => {\n return props.podcast.annotations?.subtitle && state.podcastPage?.hideSubtitle !== true;\n});\n\n/** Indicates whether to show description */\nconst showDescription = computed((): boolean => {\n return state.podcastPage?.descriptionOrSummary !== 'summary';\n});\n\n/** Indicates whether to show summary */\nconst showSummary = computed((): boolean => {\n return props.podcast.summary && state.podcastPage?.descriptionOrSummary !== 'description' && state.podcastPage?.descriptionOrSummary !== undefined;\n});\n\n//Methods\nfunction formatCredits(credits: string|undefined): string {\n if (credits === undefined) {\n return '';\n }\n return credits.split(',').map(s => s.trim()).join(', ');\n}\nfunction urlify(text:string|undefined){\n return displayHelper.urlify(text);\n}\nfunction removeDeleted(): void {\n if (isLiveReadyToRecord.value) {\n router.push(\"/main/pub/lives\");\n } else if (window.history.length > 1) {\n router.go(-1);\n } else {\n router.push(\"/\");\n }\n}\n\nfunction resetTranscription(): void {\n podcastRawTranscript.value.reset();\n}\n\nconst showTags = computed((): boolean => {\n if (state.podcastPage.hideTags === true) {\n return false;\n }\n\n return undefined !== tags.value && 0 !== tags.value.length;\n});\n</script>\n","<template>\n <section class=\"page-box\">\n <template v-if=\"loaded && !error && podcast\">\n <PodcastmakerHeader\n v-if=\"isPodcastmaker\"\n :page-title=\"useEmissionTitle ? podcast.emission.name : titlePage\"\n :img-url=\"podcast.imageUrl\"\n />\n <div\n class=\"d-flex flex-column page-element\"\n :class=\"isPodcastmaker ? 'page-element-podcastmaker' : ''\"\n >\n <PodcastModuleBox\n :playing-podcast=\"playingPodcast\"\n :podcast=\"podcast\"\n :podcast-conference=\"fetchConference\"\n @update-podcast=\"updatePodcast\"\n >\n <template #recording-item-button=\"slotProps\">\n <slot name=\"recording-item-button\" v-bind=\"slotProps\" />\n </template>\n <template #edit-box=\"slotProps\">\n <slot name=\"edit-box\" v-bind=\"slotProps\" />\n </template>\n <template #alert-message=\"slotProps\">\n <slot name=\"alert-message\" v-bind=\"slotProps\" />\n </template>\n </PodcastModuleBox>\n <ShareSocialsButtons\n v-if=\"state.podcastPage.ShareButtons\"\n :organisation-id=\"podcast.organisation.id\"\n />\n <SharePlayer\n v-if=\"!isPodcastmaker && editRight && !youtubeId\"\n :podcast=\"podcast\"\n :emission=\"podcast?.emission\"\n :organisation-id=\"authOrgaId\"\n />\n <CommentSection :podcast=\"podcast\" />\n\n <!-- Suggestions -->\n <PodcastInlineList\n :emission-id=\"podcast.emission.emissionId\"\n :href=\"'/main/pub/emission/' + podcast.emission.emissionId\"\n :title=\"t('More episodes of this emission')\"\n :button-text=\"t('All podcast emission button')\"\n title-tag=\"h3\"\n />\n <section v-if=\"!hideSuggestions\">\n <ClassicLazy :min-height=\"550\">\n <PodcastInlineList\n class=\"mt-4\"\n title-tag=\"h3\"\n :organisation-id=\"[podcast.organisation.id]\"\n :podcast-id=\"podcastId\"\n :title=\"t('Suggested listening')\"\n />\n </ClassicLazy>\n <ClassicLazy v-for=\"c in categories\" :key=\"c.id\" :min-height=\"550\">\n <PodcastInlineList\n class=\"mt-4\"\n title-tag=\"h3\"\n :iab-id=\"c.id\"\n :href=\"'/main/pub/category/' + c.id\"\n :title=\"t('More episodes of this category : ', { name: c.name })\"\n :button-text=\"t('All podcast button', { name: c.name })\"\n :organisation-id=\"[podcast.organisation.id]\"\n />\n </ClassicLazy>\n </section>\n </div>\n </template>\n <ClassicLoading\n :loading-text=\"!loaded ? t('Loading content ...') : undefined\"\n :error-text=\"\n error\n ? t(`This episode is not available for (re)listening`)\n : undefined\n \"\n />\n </section>\n</template>\n\n<script setup lang=\"ts\">\nimport youtubeVideoHelper from \"../../helper/youtubeVideoHelper\";\nimport {useOrgaComputed} from \"../composable/useOrgaComputed\";\nimport PodcastInlineList from \"../display/podcasts/PodcastInlineList.vue\";\nimport PodcastModuleBox from \"../display/podcasts/PodcastModuleBox.vue\";\nimport ClassicLazy from \"../misc/ClassicLazy.vue\";\nimport ClassicLoading from \"../form/ClassicLoading.vue\";\nimport classicApi from \"../../api/classicApi\";\nimport { state } from \"../../stores/ParamSdkStore\";\nimport { useFilterStore } from \"../../stores/FilterStore\";\nimport { Podcast } from \"@/stores/class/general/podcast\";\nimport {\n Conference,\n ConferencePublicInfo,\n} from \"@/stores/class/conference/conference\";\nimport {useErrorHandler} from \"../composable/useErrorHandler\";\nimport {useSeoTitleUrl} from \"../composable/route/useSeoTitleUrl\";\nimport { computed, defineAsyncComponent, onBeforeUnmount, ref, Ref, watch } from \"vue\";\nimport { Category } from \"@/stores/class/general/category\";\nimport { useAuthStore } from \"../../stores/AuthStore\";\nimport { useGeneralStore } from \"../../stores/GeneralStore\";\nimport { AxiosError } from \"axios\";\nimport { useCommentStore } from \"../../stores/CommentStore\";\nimport { useI18n } from \"vue-i18n\";\nimport { useRoute } from \"vue-router\";\nimport { podcastApi } from \"../../api/podcastApi\";\n\nconst ShareSocialsButtons = defineAsyncComponent(\n () => import(\"../display/sharing/ShareSocialsButtons.vue\"),\n);\nconst SharePlayer = defineAsyncComponent(\n () => import(\"../display/sharing/SharePlayer.vue\"),\n);\nconst CommentSection = defineAsyncComponent(\n () => import(\"../display/comments/CommentSection.vue\"),\n);\nconst PodcastmakerHeader = defineAsyncComponent(\n () => import(\"../display/podcastmaker/PodcastmakerHeader.vue\"),\n);\n\n//Props \nconst props = defineProps<{\n updateStatus?: string;\n playingPodcast?: Podcast;\n podcastId: number;\n}>();\n\n\n//Data \nconst loaded = ref(false);\nconst error = ref(false);\nconst podcast: Ref<Podcast | undefined> = ref(undefined);\nconst fetchConference: Ref<Conference | undefined> = ref(undefined);\nconst infoReload: Ref<ReturnType<typeof setTimeout>| undefined> = ref(undefined);\nconst youtubeId: Ref<string| undefined> = ref(undefined);\n\n//Composables\nconst route = useRoute();\nconst { t } = useI18n();\nconst { isPodcastmaker, isEditRights, authOrgaId } = useOrgaComputed();\nconst { updatePathParams } = useSeoTitleUrl();\nconst {handle403} = useErrorHandler();\nconst authStore = useAuthStore();\nconst generalStore = useGeneralStore();\nconst filterStore = useFilterStore();\nconst commentStore = useCommentStore();\n\n//Computed\nconst hideSuggestions = computed(() =>{\n return (\n \"true\" ===\n (podcast.value?.emission?.annotations?.[\"HIDE_SUGGESTIONS\"] as\n | string\n | undefined)\n );\n});\nconst emissionMainCategory = computed(() =>{\n if (!podcast.value) {\n return 0;\n }\n if (podcast.value.emission.annotations?.mainIabId) {\n return parseInt(\n podcast.value.emission.annotations.mainIabId as string,\n 10,\n );\n } else if(podcast.value.emission.iabIds?.length) {\n return podcast.value.emission.iabIds[0];\n }\n return 0;\n});\n\nconst categories = computed(() =>{\n if (\"undefined\" === typeof podcast.value) return [];\n return generalStore.storedCategories\n .filter((item: Category) => {\n return (\n podcast.value?.emission.iabIds &&\n -1 !== podcast.value.emission.iabIds.indexOf(item.id)\n );\n })\n .sort((a: Category, b: Category) => {\n if (a.id === emissionMainCategory.value) return -1;\n if (b.id === emissionMainCategory.value) return 1;\n return 0;\n });\n});\n\nconst editRight = computed(() =>{\n return isEditRights(podcast.value?.organisation.id);\n});\n\nconst isLiveReadyToRecord = computed(() =>{\n return (\n undefined !== podcast.value?.conferenceId &&\n 0 !== podcast.value?.conferenceId &&\n \"READY_TO_RECORD\" === podcast.value?.processingStatus\n );\n});\n\nconst isOctopusAndAnimator = computed(() =>{\n return !isPodcastmaker.value && editRight.value && authStore.isRoleLive;\n});\n\n/** Indicates whether to display emission name in header */\nconst useEmissionTitle = computed((): boolean => {\n return state.podcastPage?.displayEmissionTitleInHeader === true;\n});\n\nconst titlePage = computed(() =>{\n return isLiveReadyToRecord.value? t(\"Live episode\"): t(\"Episode\");\n});\n\n\n//Watch\nwatch(()=>props.updateStatus, () => {\n if (fetchConference.value && null !== fetchConference.value) {\n fetchConference.value.status = props.updateStatus;\n }\n});\nwatch(()=>props.podcastId, async () => {\n await getPodcastDetails();\n if (!podcast.value || error.value) {\n return;\n }\n commentStore.initCommentUser();\n}, {immediate: true});\n\n\nonBeforeUnmount(() => {\n generalStore.contentToDisplayUpdate(null);\n clearTimeout(infoReload.value);\n});\n\n\n//Methods\nasync function initConference() {\n if (!podcast.value || undefined == podcast.value.conferenceId || \"READY_TO_RECORD\" !== podcast.value.processingStatus) return;\n fetchConference.value = { conferenceId: podcast.value.conferenceId, title: \"\" };\n if (isOctopusAndAnimator.value) {\n try {\n fetchConference.value = await classicApi.fetchData<Conference>({\n api: 9,\n path: \"conference/\" + podcast.value.conferenceId,\n });\n } catch {\n await fetchConferenceStatus();\n }\n } else {\n await fetchConferenceStatus();\n }\n if (\n fetchConference.value &&\n -1 !== fetchConference.value.conferenceId &&\n \"PUBLISHING\" !== fetchConference.value.status &&\n \"DEBRIEFING\" !== fetchConference.value.status\n ) {\n fetchConferenceStatusLoop();\n }\n}\n\nasync function fetchConferenceStatusLoop() {\n if(\"PUBLISHING\" ===fetchConference.value?.status){\n return;\n }\n infoReload.value = setTimeout(async () => {\n await fetchConferenceStatus();\n fetchConferenceStatusLoop();\n }, 3000);\n}\nasync function fetchConferenceStatus() {\n try {\n const data = await classicApi.fetchData<ConferencePublicInfo>({\n api: 9,\n path: \"conference/info/\" + podcast.value?.conferenceId,\n });\n fetchConference.value = {...fetchConference.value, ...data};\n } catch {\n //Do nothing\n }\n}\nfunction updatePodcast(podcastUpdated: Podcast): void {\n podcast.value = podcastUpdated;\n filterStore.updateOrgaIfNecessary(podcastUpdated.organisation.id);\n}\nfunction initError(): void {\n error.value = true;\n loaded.value = true;\n}\n\nasync function getPodcastDetails(): Promise<void> {\n loaded.value = false;\n error.value = false;\n try {\n const data = await classicApi.fetchData<Podcast>({\n api: 0,\n path: \"podcast/\" + props.podcastId,\n });\n if (\n \"PUBLIC\" !== data.organisation.privacy &&\n filterStore.filterOrgaId !== data.organisation.id &&\n route.query.productor !== data.organisation.id\n ) {\n initError();\n return;\n }\n updatePodcast(data);\n generalStore.contentToDisplayUpdate(data);\n if (\n (!podcast.value.availability.visibility ||\n (\"READY_TO_RECORD\" !== podcast.value.processingStatus &&\n \"READY\" !== podcast.value.processingStatus &&\n \"PROCESSING\" !== podcast.value.processingStatus) ||\n false === podcast.value.valid) &&\n !editRight.value\n ) {\n error.value = true;\n loaded.value = true;\n return;\n }\n podcastInProcessing();\n updatePathParams(podcast.value.title);\n await commentStore.getCommentsConfig(podcast.value);\n if((fetchConference.value?.videoProfile?.includes(\"video_\") && \"READY_TO_RECORD\" === podcast.value.processingStatus) || undefined !== podcast.value.video?.videoId){\n youtubeId.value = youtubeVideoHelper.getYoutubeId(podcast.value?.tags ?? []);\n }\n loaded.value = true;\n } catch (error) {\n handle403(error as AxiosError);\n initError();\n }\n}\n\nfunction podcastInProcessing(){\n if(\"PLANNED\" !== podcast.value?.processingStatus){\n initConference();\n return;\n }\n infoReload.value = setTimeout(async () => {\n const podcast = await podcastApi.get(props.podcastId);\n updatePodcast(podcast);\n podcastInProcessing();\n }, 2000);\n}\n</script>\n","<template>\n <section class=\"page-box\">\n <template v-if=\"loaded && !error && podcast\">\n <PodcastmakerHeader\n v-if=\"isPodcastmaker\"\n :page-title=\"useEmissionTitle ? podcast.emission.name : titlePage\"\n :img-url=\"podcast.imageUrl\"\n />\n <div\n class=\"d-flex flex-column page-element\"\n :class=\"isPodcastmaker ? 'page-element-podcastmaker' : ''\"\n >\n <PodcastModuleBox\n :playing-podcast=\"playingPodcast\"\n :podcast=\"podcast\"\n :podcast-conference=\"fetchConference\"\n @update-podcast=\"updatePodcast\"\n >\n <template #recording-item-button=\"slotProps\">\n <slot name=\"recording-item-button\" v-bind=\"slotProps\" />\n </template>\n <template #edit-box=\"slotProps\">\n <slot name=\"edit-box\" v-bind=\"slotProps\" />\n </template>\n <template #alert-message=\"slotProps\">\n <slot name=\"alert-message\" v-bind=\"slotProps\" />\n </template>\n </PodcastModuleBox>\n <ShareSocialsButtons\n v-if=\"state.podcastPage.ShareButtons\"\n :organisation-id=\"podcast.organisation.id\"\n />\n <SharePlayer\n v-if=\"!isPodcastmaker && editRight && !youtubeId\"\n :podcast=\"podcast\"\n :emission=\"podcast?.emission\"\n :organisation-id=\"authOrgaId\"\n />\n <CommentSection :podcast=\"podcast\" />\n\n <!-- Suggestions -->\n <PodcastInlineList\n :emission-id=\"podcast.emission.emissionId\"\n :href=\"'/main/pub/emission/' + podcast.emission.emissionId\"\n :title=\"t('More episodes of this emission')\"\n :button-text=\"t('All podcast emission button')\"\n title-tag=\"h3\"\n />\n <section v-if=\"!hideSuggestions\">\n <ClassicLazy :min-height=\"550\">\n <PodcastInlineList\n class=\"mt-4\"\n title-tag=\"h3\"\n :organisation-id=\"[podcast.organisation.id]\"\n :podcast-id=\"podcastId\"\n :title=\"t('Suggested listening')\"\n />\n </ClassicLazy>\n <ClassicLazy v-for=\"c in categories\" :key=\"c.id\" :min-height=\"550\">\n <PodcastInlineList\n class=\"mt-4\"\n title-tag=\"h3\"\n :iab-id=\"c.id\"\n :href=\"'/main/pub/category/' + c.id\"\n :title=\"t('More episodes of this category : ', { name: c.name })\"\n :button-text=\"t('All podcast button', { name: c.name })\"\n :organisation-id=\"[podcast.organisation.id]\"\n />\n </ClassicLazy>\n </section>\n </div>\n </template>\n <ClassicLoading\n :loading-text=\"!loaded ? t('Loading content ...') : undefined\"\n :error-text=\"\n error\n ? t(`This episode is not available for (re)listening`)\n : undefined\n \"\n />\n </section>\n</template>\n\n<script setup lang=\"ts\">\nimport youtubeVideoHelper from \"../../helper/youtubeVideoHelper\";\nimport {useOrgaComputed} from \"../composable/useOrgaComputed\";\nimport PodcastInlineList from \"../display/podcasts/PodcastInlineList.vue\";\nimport PodcastModuleBox from \"../display/podcasts/PodcastModuleBox.vue\";\nimport ClassicLazy from \"../misc/ClassicLazy.vue\";\nimport ClassicLoading from \"../form/ClassicLoading.vue\";\nimport classicApi from \"../../api/classicApi\";\nimport { state } from \"../../stores/ParamSdkStore\";\nimport { useFilterStore } from \"../../stores/FilterStore\";\nimport { Podcast } from \"@/stores/class/general/podcast\";\nimport {\n Conference,\n ConferencePublicInfo,\n} from \"@/stores/class/conference/conference\";\nimport {useErrorHandler} from \"../composable/useErrorHandler\";\nimport {useSeoTitleUrl} from \"../composable/route/useSeoTitleUrl\";\nimport { computed, defineAsyncComponent, onBeforeUnmount, ref, Ref, watch } from \"vue\";\nimport { Category } from \"@/stores/class/general/category\";\nimport { useAuthStore } from \"../../stores/AuthStore\";\nimport { useGeneralStore } from \"../../stores/GeneralStore\";\nimport { AxiosError } from \"axios\";\nimport { useCommentStore } from \"../../stores/CommentStore\";\nimport { useI18n } from \"vue-i18n\";\nimport { useRoute } from \"vue-router\";\nimport { podcastApi } from \"../../api/podcastApi\";\n\nconst ShareSocialsButtons = defineAsyncComponent(\n () => import(\"../display/sharing/ShareSocialsButtons.vue\"),\n);\nconst SharePlayer = defineAsyncComponent(\n () => import(\"../display/sharing/SharePlayer.vue\"),\n);\nconst CommentSection = defineAsyncComponent(\n () => import(\"../display/comments/CommentSection.vue\"),\n);\nconst PodcastmakerHeader = defineAsyncComponent(\n () => import(\"../display/podcastmaker/PodcastmakerHeader.vue\"),\n);\n\n//Props \nconst props = defineProps<{\n updateStatus?: string;\n playingPodcast?: Podcast;\n podcastId: number;\n}>();\n\n\n//Data \nconst loaded = ref(false);\nconst error = ref(false);\nconst podcast: Ref<Podcast | undefined> = ref(undefined);\nconst fetchConference: Ref<Conference | undefined> = ref(undefined);\nconst infoReload: Ref<ReturnType<typeof setTimeout>| undefined> = ref(undefined);\nconst youtubeId: Ref<string| undefined> = ref(undefined);\n\n//Composables\nconst route = useRoute();\nconst { t } = useI18n();\nconst { isPodcastmaker, isEditRights, authOrgaId } = useOrgaComputed();\nconst { updatePathParams } = useSeoTitleUrl();\nconst {handle403} = useErrorHandler();\nconst authStore = useAuthStore();\nconst generalStore = useGeneralStore();\nconst filterStore = useFilterStore();\nconst commentStore = useCommentStore();\n\n//Computed\nconst hideSuggestions = computed(() =>{\n return (\n \"true\" ===\n (podcast.value?.emission?.annotations?.[\"HIDE_SUGGESTIONS\"] as\n | string\n | undefined)\n );\n});\nconst emissionMainCategory = computed(() =>{\n if (!podcast.value) {\n return 0;\n }\n if (podcast.value.emission.annotations?.mainIabId) {\n return parseInt(\n podcast.value.emission.annotations.mainIabId as string,\n 10,\n );\n } else if(podcast.value.emission.iabIds?.length) {\n return podcast.value.emission.iabIds[0];\n }\n return 0;\n});\n\nconst categories = computed(() =>{\n if (\"undefined\" === typeof podcast.value) return [];\n return generalStore.storedCategories\n .filter((item: Category) => {\n return (\n podcast.value?.emission.iabIds &&\n -1 !== podcast.value.emission.iabIds.indexOf(item.id)\n );\n })\n .sort((a: Category, b: Category) => {\n if (a.id === emissionMainCategory.value) return -1;\n if (b.id === emissionMainCategory.value) return 1;\n return 0;\n });\n});\n\nconst editRight = computed(() =>{\n return isEditRights(podcast.value?.organisation.id);\n});\n\nconst isLiveReadyToRecord = computed(() =>{\n return (\n undefined !== podcast.value?.conferenceId &&\n 0 !== podcast.value?.conferenceId &&\n \"READY_TO_RECORD\" === podcast.value?.processingStatus\n );\n});\n\nconst isOctopusAndAnimator = computed(() =>{\n return !isPodcastmaker.value && editRight.value && authStore.isRoleLive;\n});\n\n/** Indicates whether to display emission name in header */\nconst useEmissionTitle = computed((): boolean => {\n return state.podcastPage?.displayEmissionTitleInHeader === true;\n});\n\nconst titlePage = computed(() =>{\n return isLiveReadyToRecord.value? t(\"Live episode\"): t(\"Episode\");\n});\n\n\n//Watch\nwatch(()=>props.updateStatus, () => {\n if (fetchConference.value && null !== fetchConference.value) {\n fetchConference.value.status = props.updateStatus;\n }\n});\nwatch(()=>props.podcastId, async () => {\n await getPodcastDetails();\n if (!podcast.value || error.value) {\n return;\n }\n commentStore.initCommentUser();\n}, {immediate: true});\n\n\nonBeforeUnmount(() => {\n generalStore.contentToDisplayUpdate(null);\n clearTimeout(infoReload.value);\n});\n\n\n//Methods\nasync function initConference() {\n if (!podcast.value || undefined == podcast.value.conferenceId || \"READY_TO_RECORD\" !== podcast.value.processingStatus) return;\n fetchConference.value = { conferenceId: podcast.value.conferenceId, title: \"\" };\n if (isOctopusAndAnimator.value) {\n try {\n fetchConference.value = await classicApi.fetchData<Conference>({\n api: 9,\n path: \"conference/\" + podcast.value.conferenceId,\n });\n } catch {\n await fetchConferenceStatus();\n }\n } else {\n await fetchConferenceStatus();\n }\n if (\n fetchConference.value &&\n -1 !== fetchConference.value.conferenceId &&\n \"PUBLISHING\" !== fetchConference.value.status &&\n \"DEBRIEFING\" !== fetchConference.value.status\n ) {\n fetchConferenceStatusLoop();\n }\n}\n\nasync function fetchConferenceStatusLoop() {\n if(\"PUBLISHING\" ===fetchConference.value?.status){\n return;\n }\n infoReload.value = setTimeout(async () => {\n await fetchConferenceStatus();\n fetchConferenceStatusLoop();\n }, 3000);\n}\nasync function fetchConferenceStatus() {\n try {\n const data = await classicApi.fetchData<ConferencePublicInfo>({\n api: 9,\n path: \"conference/info/\" + podcast.value?.conferenceId,\n });\n fetchConference.value = {...fetchConference.value, ...data};\n } catch {\n //Do nothing\n }\n}\nfunction updatePodcast(podcastUpdated: Podcast): void {\n podcast.value = podcastUpdated;\n filterStore.updateOrgaIfNecessary(podcastUpdated.organisation.id);\n}\nfunction initError(): void {\n error.value = true;\n loaded.value = true;\n}\n\nasync function getPodcastDetails(): Promise<void> {\n loaded.value = false;\n error.value = false;\n try {\n const data = await classicApi.fetchData<Podcast>({\n api: 0,\n path: \"podcast/\" + props.podcastId,\n });\n if (\n \"PUBLIC\" !== data.organisation.privacy &&\n filterStore.filterOrgaId !== data.organisation.id &&\n route.query.productor !== data.organisation.id\n ) {\n initError();\n return;\n }\n updatePodcast(data);\n generalStore.contentToDisplayUpdate(data);\n if (\n (!podcast.value.availability.visibility ||\n (\"READY_TO_RECORD\" !== podcast.value.processingStatus &&\n \"READY\" !== podcast.value.processingStatus &&\n \"PROCESSING\" !== podcast.value.processingStatus) ||\n false === podcast.value.valid) &&\n !editRight.value\n ) {\n error.value = true;\n loaded.value = true;\n return;\n }\n podcastInProcessing();\n updatePathParams(podcast.value.title);\n await commentStore.getCommentsConfig(podcast.value);\n if((fetchConference.value?.videoProfile?.includes(\"video_\") && \"READY_TO_RECORD\" === podcast.value.processingStatus) || undefined !== podcast.value.video?.videoId){\n youtubeId.value = youtubeVideoHelper.getYoutubeId(podcast.value?.tags ?? []);\n }\n loaded.value = true;\n } catch (error) {\n handle403(error as AxiosError);\n initError();\n }\n}\n\nfunction podcastInProcessing(){\n if(\"PLANNED\" !== podcast.value?.processingStatus){\n initConference();\n return;\n }\n infoReload.value = setTimeout(async () => {\n const podcast = await podcastApi.get(props.podcastId);\n updatePodcast(podcast);\n podcastInProcessing();\n }, 2000);\n}\n</script>\n"],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"PodcastPlayBar-AgtR8Ia9.mjs","names":[],"sources":["../src/components/display/podcasts/PodcastPlayBar.vue","../src/components/display/podcasts/PodcastPlayBar.vue"],"sourcesContent":["<template>\n <div class=\"d-flex align-items-center\">\n <PodcastPlayBasicButton v-if=\"displayButonPlay\" :podcast=\"podcast\"/>\n <div class=\"d-flex align-items-center podcast-play-bar flex-grow-1\">\n <div class=\"me-2\">\n {{ playedTime }}\n </div>\n <div class=\"position-relative flex-grow-1\">\n <ProgressBar\n :main-progress=\"percentProgress\"\n class=\"medium\"\n @mouseup=\"seekTo\"\n />\n </div>\n <div class=\"ms-2\">\n {{ totalTime }}\n </div>\n </div>\n </div>\n</template>\n\n<script setup lang=\"ts\">\nimport ProgressBar from \"../../misc/ProgressBar.vue\";\nimport DurationHelper from \"../../../helper/durationHelper\";\nimport { usePlayerStore } from \"../../../stores/PlayerStore\";\nimport { computed, defineAsyncComponent } from \"vue\";\nimport { Podcast } from \"@/stores/class/general/podcast\";\nconst PodcastPlayBasicButton = defineAsyncComponent(() => import(\"./PodcastPlayBasicButton.vue\"));\n\n\n//Props \nconst props = defineProps({\n podcast: { default: () => ({}), type: Object as () => Podcast },\n displayButonPlay:{ default: false, type: Boolean },\n})\n\n//Composables\nconst playerStore = usePlayerStore();\n\n//Computed\nconst percentProgress = computed(() => {\n if (props.podcast?.podcastId !== playerStore.playerPodcast?.podcastId) {\n return 0;\n }\n return !playerStore.playerElapsed ? 0 : playerStore.playerElapsed * 100;\n});\nconst playedTime = computed(() => {\n if (props.podcast?.podcastId === playerStore.playerPodcast?.podcastId) {\n if (\n playerStore.playerElapsed &&\n playerStore.playerElapsed > 0 &&\n playerStore.playerTotal &&\n playerStore.playerTotal > 0\n ) {\n return DurationHelper.formatDuration(\n Math.round(playerStore.playerElapsed * playerStore.playerTotal),\n );\n }\n }\n return \"00:00\";\n});\nconst totalTime = computed(() => DurationHelper.formatDuration(Math.round(props.podcast.duration / 1000)));\n\n//Methods\nfunction seekTo(event: MouseEvent): void {\n if (\n !playerStore.playerPodcast ||\n props.podcast?.podcastId !== playerStore.playerPodcast.podcastId\n ) {\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 playerStore.playerUpdateSeekTime(playerStore.playerTotal * percentPosition);\n}\n</script>","<template>\n <div class=\"d-flex align-items-center\">\n <PodcastPlayBasicButton v-if=\"displayButonPlay\" :podcast=\"podcast\"/>\n <div class=\"d-flex align-items-center podcast-play-bar flex-grow-1\">\n <div class=\"me-2\">\n {{ playedTime }}\n </div>\n <div class=\"position-relative flex-grow-1\">\n <ProgressBar\n :main-progress=\"percentProgress\"\n class=\"medium\"\n @mouseup=\"seekTo\"\n />\n </div>\n <div class=\"ms-2\">\n {{ totalTime }}\n </div>\n </div>\n </div>\n</template>\n\n<script setup lang=\"ts\">\nimport ProgressBar from \"../../misc/ProgressBar.vue\";\nimport DurationHelper from \"../../../helper/durationHelper\";\nimport { usePlayerStore } from \"../../../stores/PlayerStore\";\nimport { computed, defineAsyncComponent } from \"vue\";\nimport { Podcast } from \"@/stores/class/general/podcast\";\nconst PodcastPlayBasicButton = defineAsyncComponent(() => import(\"./PodcastPlayBasicButton.vue\"));\n\n\n//Props \nconst props = defineProps({\n podcast: { default: () => ({}), type: Object as () => Podcast },\n displayButonPlay:{ default: false, type: Boolean },\n})\n\n//Composables\nconst playerStore = usePlayerStore();\n\n//Computed\nconst percentProgress = computed(() => {\n if (props.podcast?.podcastId !== playerStore.playerPodcast?.podcastId) {\n return 0;\n }\n return !playerStore.playerElapsed ? 0 : playerStore.playerElapsed * 100;\n});\nconst playedTime = computed(() => {\n if (props.podcast?.podcastId === playerStore.playerPodcast?.podcastId) {\n if (\n playerStore.playerElapsed &&\n playerStore.playerElapsed > 0 &&\n playerStore.playerTotal &&\n playerStore.playerTotal > 0\n ) {\n return DurationHelper.formatDuration(\n Math.round(playerStore.playerElapsed * playerStore.playerTotal),\n );\n }\n }\n return \"00:00\";\n});\nconst totalTime = computed(() => DurationHelper.formatDuration(Math.round(props.podcast.duration / 1000)));\n\n//Methods\nfunction seekTo(event: MouseEvent): void {\n if (\n !playerStore.playerPodcast ||\n props.podcast?.podcastId !== playerStore.playerPodcast.podcastId\n ) {\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 playerStore.playerUpdateSeekTime(playerStore.playerTotal * percentPosition);\n}\n</script>"],"mappings":";;;;;;;;;;;;;;;;;;;EA2BA,MAAM,yBAAyB,2BAA2B,OAAO,wCAA+B;EAIhG,MAAM,QAAQ;EAMd,MAAM,cAAc,eAAe;EAGnC,MAAM,kBAAkB,eAAe;GACrC,IAAI,MAAM,SAAS,cAAc,YAAY,eAAe,WAC1D,OAAO;GAET,OAAO,CAAC,YAAY,gBAAgB,IAAI,YAAY,gBAAgB;EACtE,CAAC;EACD,MAAM,aAAa,eAAe;GAChC,IAAI,MAAM,SAAS,cAAc,YAAY,eAAe;QAExD,YAAY,iBACZ,YAAY,gBAAgB,KAC5B,YAAY,eACZ,YAAY,cAAc,GAE1B,OAAO,uBAAe,eACpB,KAAK,MAAM,YAAY,gBAAgB,YAAY,WAAW,CAChE;GAAA;GAGJ,OAAO;EACT,CAAC;EACD,MAAM,YAAY,eAAe,uBAAe,eAAe,KAAK,MAAM,MAAM,QAAQ,WAAW,GAAI,CAAC,CAAC;EAGzG,SAAS,OAAO,OAAyB;GACvC,IACE,CAAC,YAAY,iBACb,MAAM,SAAS,cAAc,YAAY,cAAc,WAEvD;GAEF,MAAM,OAAQ,MAAM,cAA0B,sBAAsB;GACpE,MAAM,WAAY,MAAM,cAA0B;GAElD,MAAM,mBADI,MAAM,UAAU,KAAK,QACH;GAC5B,YAAY,qBAAqB,YAAY,cAAc,eAAe;EAC5E;;;;;;;;;;;;;;;;;;;;mBC3EO,OAAM,4BAA2B;mBAE/B,OAAM,yDAAwD;mBAC5D,OAAM,OAAM;mBAGZ,OAAM,gCAA+B;mBAOrC,OAAM,OAAM;;qBAbrB,mBAiBM,OAjBN,YAiBM,CAhB0B,OAAA,oBAAA,UAAA,GAA9B,YAAoE,OAAA,2BAAA;;EAAnB,SAAS,OAAA;+DAC1D,mBAcM,OAdN,YAcM;EAbJ,mBAEM,OAFN,YAEM,gBADD,OAAA,UAAU,GAAA,CAAA;EAEf,mBAMM,OANN,YAMM,CALJ,YAIE,OAAA,gBAAA;GAHC,iBAAe,OAAA;GAChB,OAAM;GACL,WAAS,OAAA;;EAGd,mBAEM,OAFN,YAEM,gBADD,OAAA,SAAS,GAAA,CAAA"}
|