@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":"UserButtonContent-DMKyXEmF.mjs","names":[],"sources":["../src/components/misc/UserButtonContent.vue","../src/components/misc/UserButtonContent.vue"],"sourcesContent":["<template>\n <nav :aria-label=\"navLabel\">\n <ul class=\"p-0 m-0\">\n <template v-if=\"specificRoutes.length\">\n <li\n v-for=\"routerBack in specificRoutes\"\n :key=\"routerBack.path\"\n class=\"li-style-none\"\n >\n <router-link\n v-if=\"!state.generalParameters.podcastmaker && routerBack.condition\"\n :class=\"routerBack.class\"\n :to=\"routerBack.path\"\n >\n {{ routerBack.title }}\n </router-link>\n </li>\n <hr v-if=\"displayUserContent\">\n </template>\n <template v-if=\"displayUserContent\">\n <template v-if=\"!isAuthenticated\">\n <li class=\"li-style-none\">\n <a class=\"octopus-dropdown-item realLink\" :href=\"pathLogin\">\n {{ t(\"Login\") }}\n </a>\n </li>\n <li class=\"li-style-none\">\n <router-link\n v-if=\"!state.generalParameters.podcastmaker\"\n class=\"octopus-dropdown-item\"\n to=\"/main/pub/create\"\n >\n {{ t(\"Create an account\") }}\n </router-link>\n </li>\n </template>\n <template v-else>\n <li\n v-for=\"routeBackoffice in routerBackoffice\"\n :key=\"routeBackoffice.path\"\n class=\"li-style-none\"\n >\n <router-link\n v-if=\"!state.generalParameters.podcastmaker && routeBackoffice.condition\"\n :class=\"routeBackoffice.class\"\n :to=\"routeBackoffice.path\"\n >\n {{ routeBackoffice.title }}\n </router-link>\n </li>\n <hr>\n <template v-if=\"helpLinks.length\">\n <li\n v-for=\"helpLink in helpLinks\"\n :key=\"helpLink.title\"\n class=\"li-style-none\"\n >\n <a\n :href=\"helpLink.href\"\n class=\"octopus-dropdown-item realLink\"\n rel=\"noreferrer noopener\"\n target=\"_blank\"\n :title=\"t('New window', {text: helpLink.title})\"\n >\n {{ helpLink.title }}\n <OpenInNewIcon class=\"ms-1\" :size=\"15\" />\n </a>\n </li>\n <hr>\n </template>\n <li class=\"li-style-none\">\n <a class=\"octopus-dropdown-item c-hand\" href=\"/logout\">\n {{ t(\"Logout\") }}\n </a>\n </li>\n </template>\n <li class=\"li-style-none\">\n <router-link\n v-if=\"!authStore.isGarRole\"\n class=\"octopus-dropdown-item\"\n to=\"/main/pub/contact\"\n >\n {{ t(\"Contact\") }}\n </router-link>\n </li>\n </template>\n </ul>\n </nav>\n</template>\n\n<script setup lang=\"ts\">\nimport OpenInNewIcon from \"vue-material-design-icons/OpenInNew.vue\";\nimport { state } from \"../../stores/ParamSdkStore\";\nimport { useAuthStore } from \"../../stores/AuthStore\";\nimport { computed } from \"vue\";\nimport { useApiStore } from \"../../stores/ApiStore\";\nimport { useI18n } from \"vue-i18n\";\nimport { RouteLocationAsPathGeneric, RouteLocationAsRelativeGeneric, useRoute } from \"vue-router\";\n\n//Interface\ninterface RouteInfo{\n title: string;\n class: string;\n path: string | RouteLocationAsRelativeGeneric | RouteLocationAsPathGeneric;\n condition: boolean\n}\n\n//Props \nconst props = defineProps({\n isEducation: { default: false, type: Boolean },\n navLabel: { default: \"\", type: String },\n specificRoutes: { default: ()=>[], type: Array as ()=> Array<RouteInfo> },\n displayUserContent: { default: true, type: Boolean },\n})\n\n//Composables\nconst { t } = useI18n();\nconst authStore = useAuthStore();\nconst apiStore = useApiStore();\nconst route = useRoute();\n\n//Computed\nconst isAuthenticated = computed(() => undefined !== authStore.authProfile?.userId);\nconst pathLogin = computed(() => \"/sso/login?redirect_url=\"+encodeURI(apiStore.frontendUrl + route.fullPath));\nconst isAuthenticatedWithOrga = computed(() => undefined !== authStore.authOrgaId);\nconst organisationsAvailable = computed(() => authStore.authProfile?.organisations ?? []);\n\nconst helpLinks = computed(() => {\n if (authStore.isGarRole || props.isEducation) {\n return [];\n }\n return [\n { title:t(\"Help\"), href: \"https://help.octopus.saooti.com/Aide/\"},\n { title: t(\"TutoMag\"), href: \"https://help.octopus.saooti.com/\" },\n ];\n});\nconst routerBackoffice = computed(() => {\n if(!isAuthenticated.value){\n return [];\n }\n\n return [\n {\n title: t(\"My space\"),\n class: \"octopus-dropdown-item show-small-screen\",\n path: { name: \"backoffice\" },\n condition: isAuthenticatedWithOrga.value,\n },\n {\n title: t(\"Upload\"),\n class: \"octopus-dropdown-item show-small-screen\",\n path: { name: \"upload-podcast\" },\n condition: isAuthenticatedWithOrga.value && authStore.isRoleContribution,\n },\n {\n title: t(\"User profile - Title - My profile\"),\n class: \"octopus-dropdown-item\",\n path: { name: \"my-profile\" },\n condition: true,\n },\n {\n title: t(\"Edit my organisation\"),\n class: \"octopus-dropdown-item\",\n path: { name: \"edit-organisation\" },\n condition:\n isAuthenticatedWithOrga.value &&\n (authStore.isRoleOrganisation || 1 < organisationsAvailable.value.length),\n },\n ];\n});\n\n</script>\n","<template>\n <nav :aria-label=\"navLabel\">\n <ul class=\"p-0 m-0\">\n <template v-if=\"specificRoutes.length\">\n <li\n v-for=\"routerBack in specificRoutes\"\n :key=\"routerBack.path\"\n class=\"li-style-none\"\n >\n <router-link\n v-if=\"!state.generalParameters.podcastmaker && routerBack.condition\"\n :class=\"routerBack.class\"\n :to=\"routerBack.path\"\n >\n {{ routerBack.title }}\n </router-link>\n </li>\n <hr v-if=\"displayUserContent\">\n </template>\n <template v-if=\"displayUserContent\">\n <template v-if=\"!isAuthenticated\">\n <li class=\"li-style-none\">\n <a class=\"octopus-dropdown-item realLink\" :href=\"pathLogin\">\n {{ t(\"Login\") }}\n </a>\n </li>\n <li class=\"li-style-none\">\n <router-link\n v-if=\"!state.generalParameters.podcastmaker\"\n class=\"octopus-dropdown-item\"\n to=\"/main/pub/create\"\n >\n {{ t(\"Create an account\") }}\n </router-link>\n </li>\n </template>\n <template v-else>\n <li\n v-for=\"routeBackoffice in routerBackoffice\"\n :key=\"routeBackoffice.path\"\n class=\"li-style-none\"\n >\n <router-link\n v-if=\"!state.generalParameters.podcastmaker && routeBackoffice.condition\"\n :class=\"routeBackoffice.class\"\n :to=\"routeBackoffice.path\"\n >\n {{ routeBackoffice.title }}\n </router-link>\n </li>\n <hr>\n <template v-if=\"helpLinks.length\">\n <li\n v-for=\"helpLink in helpLinks\"\n :key=\"helpLink.title\"\n class=\"li-style-none\"\n >\n <a\n :href=\"helpLink.href\"\n class=\"octopus-dropdown-item realLink\"\n rel=\"noreferrer noopener\"\n target=\"_blank\"\n :title=\"t('New window', {text: helpLink.title})\"\n >\n {{ helpLink.title }}\n <OpenInNewIcon class=\"ms-1\" :size=\"15\" />\n </a>\n </li>\n <hr>\n </template>\n <li class=\"li-style-none\">\n <a class=\"octopus-dropdown-item c-hand\" href=\"/logout\">\n {{ t(\"Logout\") }}\n </a>\n </li>\n </template>\n <li class=\"li-style-none\">\n <router-link\n v-if=\"!authStore.isGarRole\"\n class=\"octopus-dropdown-item\"\n to=\"/main/pub/contact\"\n >\n {{ t(\"Contact\") }}\n </router-link>\n </li>\n </template>\n </ul>\n </nav>\n</template>\n\n<script setup lang=\"ts\">\nimport OpenInNewIcon from \"vue-material-design-icons/OpenInNew.vue\";\nimport { state } from \"../../stores/ParamSdkStore\";\nimport { useAuthStore } from \"../../stores/AuthStore\";\nimport { computed } from \"vue\";\nimport { useApiStore } from \"../../stores/ApiStore\";\nimport { useI18n } from \"vue-i18n\";\nimport { RouteLocationAsPathGeneric, RouteLocationAsRelativeGeneric, useRoute } from \"vue-router\";\n\n//Interface\ninterface RouteInfo{\n title: string;\n class: string;\n path: string | RouteLocationAsRelativeGeneric | RouteLocationAsPathGeneric;\n condition: boolean\n}\n\n//Props \nconst props = defineProps({\n isEducation: { default: false, type: Boolean },\n navLabel: { default: \"\", type: String },\n specificRoutes: { default: ()=>[], type: Array as ()=> Array<RouteInfo> },\n displayUserContent: { default: true, type: Boolean },\n})\n\n//Composables\nconst { t } = useI18n();\nconst authStore = useAuthStore();\nconst apiStore = useApiStore();\nconst route = useRoute();\n\n//Computed\nconst isAuthenticated = computed(() => undefined !== authStore.authProfile?.userId);\nconst pathLogin = computed(() => \"/sso/login?redirect_url=\"+encodeURI(apiStore.frontendUrl + route.fullPath));\nconst isAuthenticatedWithOrga = computed(() => undefined !== authStore.authOrgaId);\nconst organisationsAvailable = computed(() => authStore.authProfile?.organisations ?? []);\n\nconst helpLinks = computed(() => {\n if (authStore.isGarRole || props.isEducation) {\n return [];\n }\n return [\n { title:t(\"Help\"), href: \"https://help.octopus.saooti.com/Aide/\"},\n { title: t(\"TutoMag\"), href: \"https://help.octopus.saooti.com/\" },\n ];\n});\nconst routerBackoffice = computed(() => {\n if(!isAuthenticated.value){\n return [];\n }\n\n return [\n {\n title: t(\"My space\"),\n class: \"octopus-dropdown-item show-small-screen\",\n path: { name: \"backoffice\" },\n condition: isAuthenticatedWithOrga.value,\n },\n {\n title: t(\"Upload\"),\n class: \"octopus-dropdown-item show-small-screen\",\n path: { name: \"upload-podcast\" },\n condition: isAuthenticatedWithOrga.value && authStore.isRoleContribution,\n },\n {\n title: t(\"User profile - Title - My profile\"),\n class: \"octopus-dropdown-item\",\n path: { name: \"my-profile\" },\n condition: true,\n },\n {\n title: t(\"Edit my organisation\"),\n class: \"octopus-dropdown-item\",\n path: { name: \"edit-organisation\" },\n condition:\n isAuthenticatedWithOrga.value &&\n (authStore.isRoleOrganisation || 1 < organisationsAvailable.value.length),\n },\n ];\n});\n\n</script>\n"],"mappings":"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"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { t as _plugin_vue_export_helper_default } from "./_plugin-vue_export-helper-BOaGB7Aw.mjs";
|
|
2
2
|
import { t as displayHelper_default } from "./displayHelper-CpXshNzz.mjs";
|
|
3
|
-
import { t as PodcastRawTranscript_default } from "./PodcastRawTranscript-
|
|
3
|
+
import { t as PodcastRawTranscript_default } from "./PodcastRawTranscript-Bf6f5yNd.mjs";
|
|
4
4
|
import { createCommentVNode, createElementBlock, createElementVNode, createVNode, defineAsyncComponent, defineComponent, openBlock, toDisplayString } from "vue";
|
|
5
5
|
//#region src/components/display/podcasts/VideoModuleBox.vue?vue&type=script&setup=true&lang.ts
|
|
6
6
|
var VideoModuleBox_vue_vue_type_script_setup_true_lang_default = /*@__PURE__*/ defineComponent({
|
|
@@ -82,4 +82,4 @@ var VideoModuleBox_default = /*#__PURE__*/ _plugin_vue_export_helper_default(Vid
|
|
|
82
82
|
//#endregion
|
|
83
83
|
export { VideoModuleBox_default as default };
|
|
84
84
|
|
|
85
|
-
//# sourceMappingURL=VideoModuleBox-
|
|
85
|
+
//# sourceMappingURL=VideoModuleBox-CFQmvPrA.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"VideoModuleBox-CFQmvPrA.mjs","names":[],"sources":["../src/components/display/podcasts/VideoModuleBox.vue","../src/components/display/podcasts/VideoModuleBox.vue"],"sourcesContent":["<template>\n <section v-if=\"podcast\" class=\"d-flex flex-column flex-grow-1 mt-2\">\n <div class=\"d-flex justify-content-between flex-wrap\">\n <time v-if=\"0 !== date.length\" class=\"me-2\" :datetime=\"podcast.pubDate\">\n {{ date }}\n </time>\n <time :datetime=\"durationIso\">\n {{ duration }}\n </time>\n </div>\n <div class=\"my-3 h3\">{{ podcast.title }}</div>\n <!-- eslint-disable vue/no-v-html -->\n <div\n v-if=\"podcast.description\"\n class=\"description-text html-wysiwyg-content mb-3\"\n v-html=\"urlify(podcast.description)\"\n />\n <!-- eslint-enable -->\n <ParticipantDescription :participants=\"podcast.animators\" />\n <ParticipantDescription :participants=\"podcast.guests\" :is-guest=\"true\" />\n <PodcastRawTranscript class=\"mt-3\" :podcast-id=\"podcast.podcastId\" />\n </section>\n</template>\n\n<script setup lang=\"ts\">\nimport { Podcast } from \"@/stores/class/general/podcast\";\nimport displayHelper from \"../../../helper/displayHelper\";\nimport PodcastRawTranscript from \"./PodcastRawTranscript.vue\";\nimport { defineAsyncComponent } from \"vue\";\nconst ParticipantDescription = defineAsyncComponent(\n () => import(\"./ParticipantDescription.vue\"),\n);\n\n//Props \ndefineProps({\n podcast: { default: undefined, type: Object as () => Podcast },\n date: { default: \"\", type: String },\n duration: { default: \"\", type: String },\n durationIso: { default: \"\", type: String },\n})\n\n//Methods\nfunction urlify(text:string|undefined){\n return displayHelper.urlify(text);\n}\n</script>\n","<template>\n <section v-if=\"podcast\" class=\"d-flex flex-column flex-grow-1 mt-2\">\n <div class=\"d-flex justify-content-between flex-wrap\">\n <time v-if=\"0 !== date.length\" class=\"me-2\" :datetime=\"podcast.pubDate\">\n {{ date }}\n </time>\n <time :datetime=\"durationIso\">\n {{ duration }}\n </time>\n </div>\n <div class=\"my-3 h3\">{{ podcast.title }}</div>\n <!-- eslint-disable vue/no-v-html -->\n <div\n v-if=\"podcast.description\"\n class=\"description-text html-wysiwyg-content mb-3\"\n v-html=\"urlify(podcast.description)\"\n />\n <!-- eslint-enable -->\n <ParticipantDescription :participants=\"podcast.animators\" />\n <ParticipantDescription :participants=\"podcast.guests\" :is-guest=\"true\" />\n <PodcastRawTranscript class=\"mt-3\" :podcast-id=\"podcast.podcastId\" />\n </section>\n</template>\n\n<script setup lang=\"ts\">\nimport { Podcast } from \"@/stores/class/general/podcast\";\nimport displayHelper from \"../../../helper/displayHelper\";\nimport PodcastRawTranscript from \"./PodcastRawTranscript.vue\";\nimport { defineAsyncComponent } from \"vue\";\nconst ParticipantDescription = defineAsyncComponent(\n () => import(\"./ParticipantDescription.vue\"),\n);\n\n//Props \ndefineProps({\n podcast: { default: undefined, type: Object as () => Podcast },\n date: { default: \"\", type: String },\n duration: { default: \"\", type: String },\n durationIso: { default: \"\", type: String },\n})\n\n//Methods\nfunction urlify(text:string|undefined){\n return displayHelper.urlify(text);\n}\n</script>\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;EA6BA,MAAM,yBAAyB,2BACvB,OAAO,yCAAA,MAAA,MAAA,EAAA,CAAA,CACf;EAWA,SAAS,OAAO,MAAsB;GACpC,OAAO,sBAAc,OAAO,IAAI;EAClC;;;;;;;;;;;;;;;;;CC3C0B,OAAM;;mBACvB,OAAM,2CAA0C;;;mBAQhD,OAAM,UAAS;;;QATP,OAAA,WAAA,UAAA,GAAf,mBAoBU,WApBV,YAoBU;EAnBR,mBAOM,OAPN,YAOM,CAAA,MANc,OAAA,KAAK,UAAA,UAAA,GAAvB,mBAEO,QAAA;;GAFwB,OAAM;GAAQ,UAAU,OAAA,QAAQ;qBAC1D,OAAA,IAAI,GAAA,GAAA,UAAA,KAAA,mBAAA,QAAA,IAAA,GAET,mBAEO,QAAA,EAFA,UAAU,OAAA,YAAW,GAAA,gBACvB,OAAA,QAAQ,GAAA,GAAA,UAAA,CAAA,CAAA;EAGf,mBAA8C,OAA9C,YAA8C,gBAAtB,OAAA,QAAQ,KAAK,GAAA,CAAA;EACrC,mBAAA,gCAAA;EAEQ,OAAA,QAAQ,eAAA,UAAA,GADhB,mBAIE,OAAA;;GAFA,OAAM;GACN,WAAQ,OAAA,OAAO,OAAA,QAAQ,WAAW;;EAEpC,mBAAA,iBAAA;EACA,YAA4D,OAAA,2BAAA,EAAnC,cAAc,OAAA,QAAQ,UAAA,GAAA,MAAA,GAAA,CAAA,cAAA,CAAA;EAC/C,YAA0E,OAAA,2BAAA;GAAjD,cAAc,OAAA,QAAQ;GAAS,YAAU;;EAClE,YAAqE,OAAA,yBAAA;GAA/C,OAAM;GAAQ,cAAY,OAAA,QAAQ"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"VideoModuleBox-DsBLAMrh.mjs","names":[],"sources":["../src/components/display/podcasts/VideoModuleBox.vue","../src/components/display/podcasts/VideoModuleBox.vue"],"sourcesContent":["<template>\n <section v-if=\"podcast\" class=\"d-flex flex-column flex-grow-1 mt-2\">\n <div class=\"d-flex justify-content-between flex-wrap\">\n <time v-if=\"0 !== date.length\" class=\"me-2\" :datetime=\"podcast.pubDate\">\n {{ date }}\n </time>\n <time :datetime=\"durationIso\">\n {{ duration }}\n </time>\n </div>\n <div class=\"my-3 h3\">{{ podcast.title }}</div>\n <!-- eslint-disable vue/no-v-html -->\n <div\n v-if=\"podcast.description\"\n class=\"description-text html-wysiwyg-content mb-3\"\n v-html=\"urlify(podcast.description)\"\n />\n <!-- eslint-enable -->\n <ParticipantDescription :participants=\"podcast.animators\" />\n <ParticipantDescription :participants=\"podcast.guests\" :is-guest=\"true\" />\n <PodcastRawTranscript class=\"mt-3\" :podcast-id=\"podcast.podcastId\" />\n </section>\n</template>\n\n<script setup lang=\"ts\">\nimport { Podcast } from \"@/stores/class/general/podcast\";\nimport displayHelper from \"../../../helper/displayHelper\";\nimport PodcastRawTranscript from \"./PodcastRawTranscript.vue\";\nimport { defineAsyncComponent } from \"vue\";\nconst ParticipantDescription = defineAsyncComponent(\n () => import(\"./ParticipantDescription.vue\"),\n);\n\n//Props \ndefineProps({\n podcast: { default: undefined, type: Object as () => Podcast },\n date: { default: \"\", type: String },\n duration: { default: \"\", type: String },\n durationIso: { default: \"\", type: String },\n})\n\n//Methods\nfunction urlify(text:string|undefined){\n return displayHelper.urlify(text);\n}\n</script>\n","<template>\n <section v-if=\"podcast\" class=\"d-flex flex-column flex-grow-1 mt-2\">\n <div class=\"d-flex justify-content-between flex-wrap\">\n <time v-if=\"0 !== date.length\" class=\"me-2\" :datetime=\"podcast.pubDate\">\n {{ date }}\n </time>\n <time :datetime=\"durationIso\">\n {{ duration }}\n </time>\n </div>\n <div class=\"my-3 h3\">{{ podcast.title }}</div>\n <!-- eslint-disable vue/no-v-html -->\n <div\n v-if=\"podcast.description\"\n class=\"description-text html-wysiwyg-content mb-3\"\n v-html=\"urlify(podcast.description)\"\n />\n <!-- eslint-enable -->\n <ParticipantDescription :participants=\"podcast.animators\" />\n <ParticipantDescription :participants=\"podcast.guests\" :is-guest=\"true\" />\n <PodcastRawTranscript class=\"mt-3\" :podcast-id=\"podcast.podcastId\" />\n </section>\n</template>\n\n<script setup lang=\"ts\">\nimport { Podcast } from \"@/stores/class/general/podcast\";\nimport displayHelper from \"../../../helper/displayHelper\";\nimport PodcastRawTranscript from \"./PodcastRawTranscript.vue\";\nimport { defineAsyncComponent } from \"vue\";\nconst ParticipantDescription = defineAsyncComponent(\n () => import(\"./ParticipantDescription.vue\"),\n);\n\n//Props \ndefineProps({\n podcast: { default: undefined, type: Object as () => Podcast },\n date: { default: \"\", type: String },\n duration: { default: \"\", type: String },\n durationIso: { default: \"\", type: String },\n})\n\n//Methods\nfunction urlify(text:string|undefined){\n return displayHelper.urlify(text);\n}\n</script>\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;EA6BA,MAAM,yBAAyB,2BACvB,OAAO,yCAAA,MAAA,MAAA,EAAA,CAAA,CACf;EAWA,SAAS,OAAO,MAAsB;GACpC,OAAO,sBAAc,OAAO,IAAI;EAClC;;;;;;;;;;;;;;;;;CC3C0B,OAAM;;mBACvB,OAAM,2CAA0C;;;mBAQhD,OAAM,UAAS;;;QATP,OAAA,WAAA,UAAA,GAAf,mBAoBU,WApBV,YAoBU;EAnBR,mBAOM,OAPN,YAOM,CAAA,MANc,OAAA,KAAK,UAAA,UAAA,GAAvB,mBAEO,QAAA;;GAFwB,OAAM;GAAQ,UAAU,OAAA,QAAQ;qBAC1D,OAAA,IAAI,GAAA,GAAA,UAAA,KAAA,mBAAA,QAAA,IAAA,GAET,mBAEO,QAAA,EAFA,UAAU,OAAA,YAAW,GAAA,gBACvB,OAAA,QAAQ,GAAA,GAAA,UAAA,CAAA,CAAA;EAGf,mBAA8C,OAA9C,YAA8C,gBAAtB,OAAA,QAAQ,KAAK,GAAA,CAAA;EACrC,mBAAA,gCAAA;EAEQ,OAAA,QAAQ,eAAA,UAAA,GADhB,mBAIE,OAAA;;GAFA,OAAM;GACN,WAAQ,OAAA,OAAO,OAAA,QAAQ,WAAW;;EAEpC,mBAAA,iBAAA;EACA,YAA4D,OAAA,2BAAA,EAAnC,cAAc,OAAA,QAAQ,UAAA,GAAA,MAAA,GAAA,CAAA,cAAA,CAAA;EAC/C,YAA0E,OAAA,2BAAA;GAAjD,cAAc,OAAA,QAAQ;GAAS,YAAU;;EAClE,YAAqE,OAAA,yBAAA;GAA/C,OAAM;GAAQ,cAAY,OAAA,QAAQ"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"VideoPage-CfJeWV-R.mjs","names":[],"sources":["../src/components/pages/VideoPage.vue","../src/components/pages/VideoPage.vue"],"sourcesContent":["<template>\n <section class=\"page-box\">\n <template v-if=\"loaded && !error\">\n <router-link\n :to=\"{\n name: 'podcast',\n params: { podcastId: podcastId },\n }\"\n class=\"mt-3 mb-3 w-fit-content d-flex align-items-center\"\n :title=\"t('Episode name page', { name: podcast?.title })\"\n >\n <ChevronLeftIcon />{{ t(\"Episode page\") }}\n </router-link>\n <div\n v-if=\"videoId || isLiveReadyToRecord\"\n class=\"d-flex video-page-container\"\n >\n <div class=\"w-70-responsive\">\n <template v-if=\"isLiveReadyToRecord\">\n <PlayerVideoHls\n v-if=\"recordingLive\"\n :hls-url=\"hlsVideoUrl\"\n :is-secured=\"isSecured\"\n :responsive=\"true\"\n />\n <div\n v-if=\"isCounter || overrideText\"\n class=\"d-flex flex-column align-items-center flex-grow-1 blue-bg p-3\"\n >\n <CountdownOctopus\n :time-remaining=\"timeRemaining\"\n :override-text=\"overrideText\"\n />\n </div>\n </template>\n <PlayerVideoDigiteka\n v-else\n :video-id=\"videoId\"\n :podcast-id=\"podcastId\"\n responsive\n />\n </div>\n <div class=\"w-30-responsive info-video-container\">\n <div class=\"d-flex flex-column flex-grow-1 w-100\">\n <ClassicNav\n v-if=\"tabs.length\"\n v-model:active-tab=\"activeTab\"\n :tab-number=\"tabs.length\"\n :transparent=\"true\"\n >\n <template v-for=\"(tab, index) in tabs\" #[index]>\n {{ tab }}\n </template>\n <template #tab0>\n <VideoModuleBox\n :podcast=\"podcast\"\n :date=\"date\"\n :duration=\"duration\"\n />\n </template>\n <template #tab1>\n <section>\n <CommentSection\n :podcast=\"podcast\"\n class=\"module-box-transparent\"\n />\n </section>\n </template>\n </ClassicNav>\n <VideoModuleBox\n v-else\n class=\"p-2 video-module-box\"\n :podcast=\"podcast\"\n :date=\"date\"\n :duration=\"duration\"\n :duration-iso=\"durationIso\"\n />\n </div>\n </div>\n </div>\n </template>\n <div\n v-if=\"!error && !videoId && !isLiveReadyToRecord\"\n class=\"text-center text-danger h3\"\n >\n {{ t(\"The episode does not have an associated video\") }}\n </div>\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 ChevronLeftIcon from \"vue-material-design-icons/ChevronLeft.vue\";\nimport ClassicLoading from \"../form/ClassicLoading.vue\";\nimport classicApi from \"../../api/classicApi\";\nimport { Podcast } from \"@/stores/class/general/podcast\";\nimport ClassicNav from \"../misc/ClassicNav.vue\";\nimport {useSeoTitleUrl} from \"../composable/route/useSeoTitleUrl\";\nimport {usePodcastView} from \"../composable/podcasts/usePodcastView\";\nimport { computed, defineAsyncComponent, onBeforeUnmount, Ref, ref, watch } from \"vue\";\nimport { AxiosError } from \"axios\";\nimport { useFilterStore } from \"../../stores/FilterStore\";\nimport { useAuthStore } from \"../../stores/AuthStore\";\nimport { useCommentStore } from \"../../stores/CommentStore\";\nimport { useApiStore } from \"../../stores/ApiStore\";\nimport { CommentsConfig } from \"@/stores/class/config/commentsConfig\";\nimport {\n Conference,\n ConferencePublicInfo,\n} from \"@/stores/class/conference/conference\";\nimport { usePlayerStore } from \"../../stores/PlayerStore\";\nimport { useGeneralStore } from \"../../stores/GeneralStore\";\nimport { useI18n } from \"vue-i18n\";\nimport { useRoute } from \"vue-router\";\nimport { useErrorHandler } from \"../composable/useErrorHandler\";\nconst PlayerVideoDigiteka = defineAsyncComponent(\n () => import(\"../misc/player/video/PlayerVideoDigiteka.vue\"),\n);\nconst PlayerVideoHls = defineAsyncComponent(\n () => import(\"../misc/player/video/PlayerVideoHls.vue\"),\n);\nconst CommentSection = defineAsyncComponent(\n () => import(\"../display/comments/CommentSection.vue\"),\n);\nconst VideoModuleBox = defineAsyncComponent(\n () => import(\"../display/podcasts/VideoModuleBox.vue\"),\n);\nconst CountdownOctopus = defineAsyncComponent(\n () => import(\"../display/live/CountdownOctopus.vue\"),\n);\n\n//Props \nconst props = defineProps({\n podcastId:{ default: 0, type: Number },\n})\n\n//Data \nconst loaded = ref(false);\nconst podcast: Ref<Podcast | undefined> = ref(undefined);\nconst error = ref(false);\nconst activeTab = ref(0);\nconst configPodcast: Ref<CommentsConfig | undefined> = ref(undefined);\nconst podcastConference: Ref<Conference | undefined> = ref(undefined);\nconst intervalStatusConference: Ref<ReturnType<typeof setTimeout> | undefined> = ref(undefined);\n\n//Composables\nconst { \n isLiveReadyToRecord,\n isCounter,\n timeRemaining,\n date,\n duration,\n durationIso,\n editRight\n} = usePodcastView(podcast, podcastConference);\nconst {handle403} = useErrorHandler();\nconst { updatePathParams } = useSeoTitleUrl();\nconst authStore = useAuthStore();\nconst apiStore = useApiStore();\nconst generalStore = useGeneralStore();\nconst playerStore = usePlayerStore();\nconst filterStore = useFilterStore();\nconst commentStore = useCommentStore();\nconst {t} = useI18n();\nconst route = useRoute();\n\n//Computed\nconst videoId = computed(() => podcast.value?.video?.videoId);\nconst canPostComment = computed(() => {\n return commentStore.getCanPostComment(\n configPodcast.value,\n podcast.value,\n undefined !== authStore.authOrgaId,\n );\n});\nconst tabs = computed(() => {\n if (canPostComment.value) {\n return [t(\"Information\"), t(\"Comments\")];\n }\n return [];\n});\nconst recordingLive = computed(() => {\n return (\n undefined !== podcastConference.value &&\n -1 !== podcastConference.value.conferenceId &&\n (\"RECORDING\" === podcastConference.value.status ||\n \"PENDING\" === podcastConference.value.status)\n );\n});\nconst hlsVideoUrl = computed(() => {\n if (!recordingLive.value || !podcastConference.value) {\n return \"\";\n }\n return `${apiStore.hlsUrl}live/video_${podcastConference.value.hlsIdentifier}/index.m3u8`;\n});\nconst isSecured = computed(() => {\n return \"SECURED\" === podcast.value?.organisation?.privacy;\n});\nconst overrideText = computed(() => {\n if (\"PUBLISHING\" !== podcastConference.value?.status) {\n return;\n }\n return t(\"In the process of being published\");\n});\n\n//Watch\nwatch(()=>props.podcastId, async () => {\n await getPodcastDetails();\n if (!podcast.value) {\n return;\n }\n commentStore.initCommentUser();\n configPodcast.value = await commentStore.getCommentsConfig(podcast.value);\n}, {immediate: true});\n\n\nonBeforeUnmount(() => {\n clearInterval(intervalStatusConference.value as unknown as number);\n})\n\n//Methods\nasync function getPodcastDetails(): Promise<void> {\n loaded.value = false;\n error.value = false;\n try {\n podcast.value = await classicApi.fetchData<Podcast>({\n api: 0,\n path: \"podcast/\" + props.podcastId,\n });\n document.title = podcast.value.title + \" - \"+generalStore.metaTitle;\n const orga = podcast.value.organisation;\n const privateAccess =\n \"PUBLIC\" !== orga.privacy &&\n filterStore.filterOrgaId !== orga.id &&\n route.query.productor !== orga.id;\n const notValid =\n (!podcast.value.availability.visibility ||\n ![\"READY_TO_RECORD\", \"READY\", \"PROCESSING\"].includes(\n podcast.value.processingStatus ?? \"\",\n ) ||\n !podcast.value.valid) &&\n !editRight.value;\n if (privateAccess || notValid) {\n error.value = true;\n } else {\n updatePathParams(podcast.value.title);\n if (\n podcast.value.conferenceId &&\n \"READY\" !== podcast.value.processingStatus\n ) {\n await fetchConferenceStatus();\n intervalStatusConference.value = setInterval(() => { fetchConferenceStatus(); }, 3000);\n playerStore.playerPlay(\n {\n ...podcast.value,\n ...{ \n conferenceId: podcast.value.conferenceId,\n hlsIdentifier: podcastConference.value?.hlsIdentifier,\n },\n },\n true,\n );\n }\n }\n } catch (errorCatched) {\n handle403(errorCatched as AxiosError);\n error.value = true;\n }\n loaded.value = true;\n}\n\nasync function fetchConferenceStatus() {\n if (!podcast.value?.conferenceId) {\n return;\n }\n const data = await classicApi.fetchData<ConferencePublicInfo>({\n api: 9,\n path: \"conference/info/\" + podcast.value.conferenceId,\n });\n podcastConference.value = {\n ...data,\n ...{\n conferenceId: podcast.value.conferenceId,\n title: \"\",\n },\n };\n if (\"DEBRIEFING\" === data.status) {\n clearInterval(intervalStatusConference.value as unknown as number);\n }\n}\n</script>\n<style lang=\"scss\">\n.octopus-app .video-page-container {\n align-items: stretch;\n flex-grow: 1;\n background: var(--octopus-primary-really-transparent);\n border-radius: var(--octopus-border-radius);\n box-shadow: 0 0 10px 1px var(--octopus-primary-transparent);\n\n .info-video-container {\n display: flex;\n flex-direction: column;\n\n .octopus-tab-pane,\n .video-module-box {\n height: 0;\n overflow-y: auto;\n\n @media (width <= 960px) {\n height: inherit;\n }\n }\n\n .classic-nav-tab-container {\n flex-direction: column;\n }\n }\n\n .module-box.module-box-transparent {\n margin: 0;\n background: transparent;\n border: 0;\n padding: 0;\n }\n\n .w-70-responsive {\n width: 70%;\n aspect-ratio: 16/9;\n }\n\n .w-30-responsive {\n width: 30%;\n }\n\n .w-70-responsive,\n .w-30-responsive {\n display: flex;\n align-items: stretch;\n flex-grow: 1;\n\n @media (width <= 960px) {\n width: 100%;\n padding: 0 !important;\n }\n }\n\n .really-light-secondary-bg {\n background: white;\n }\n}\n</style>\n","<template>\n <section class=\"page-box\">\n <template v-if=\"loaded && !error\">\n <router-link\n :to=\"{\n name: 'podcast',\n params: { podcastId: podcastId },\n }\"\n class=\"mt-3 mb-3 w-fit-content d-flex align-items-center\"\n :title=\"t('Episode name page', { name: podcast?.title })\"\n >\n <ChevronLeftIcon />{{ t(\"Episode page\") }}\n </router-link>\n <div\n v-if=\"videoId || isLiveReadyToRecord\"\n class=\"d-flex video-page-container\"\n >\n <div class=\"w-70-responsive\">\n <template v-if=\"isLiveReadyToRecord\">\n <PlayerVideoHls\n v-if=\"recordingLive\"\n :hls-url=\"hlsVideoUrl\"\n :is-secured=\"isSecured\"\n :responsive=\"true\"\n />\n <div\n v-if=\"isCounter || overrideText\"\n class=\"d-flex flex-column align-items-center flex-grow-1 blue-bg p-3\"\n >\n <CountdownOctopus\n :time-remaining=\"timeRemaining\"\n :override-text=\"overrideText\"\n />\n </div>\n </template>\n <PlayerVideoDigiteka\n v-else\n :video-id=\"videoId\"\n :podcast-id=\"podcastId\"\n responsive\n />\n </div>\n <div class=\"w-30-responsive info-video-container\">\n <div class=\"d-flex flex-column flex-grow-1 w-100\">\n <ClassicNav\n v-if=\"tabs.length\"\n v-model:active-tab=\"activeTab\"\n :tab-number=\"tabs.length\"\n :transparent=\"true\"\n >\n <template v-for=\"(tab, index) in tabs\" #[index]>\n {{ tab }}\n </template>\n <template #tab0>\n <VideoModuleBox\n :podcast=\"podcast\"\n :date=\"date\"\n :duration=\"duration\"\n />\n </template>\n <template #tab1>\n <section>\n <CommentSection\n :podcast=\"podcast\"\n class=\"module-box-transparent\"\n />\n </section>\n </template>\n </ClassicNav>\n <VideoModuleBox\n v-else\n class=\"p-2 video-module-box\"\n :podcast=\"podcast\"\n :date=\"date\"\n :duration=\"duration\"\n :duration-iso=\"durationIso\"\n />\n </div>\n </div>\n </div>\n </template>\n <div\n v-if=\"!error && !videoId && !isLiveReadyToRecord\"\n class=\"text-center text-danger h3\"\n >\n {{ t(\"The episode does not have an associated video\") }}\n </div>\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 ChevronLeftIcon from \"vue-material-design-icons/ChevronLeft.vue\";\nimport ClassicLoading from \"../form/ClassicLoading.vue\";\nimport classicApi from \"../../api/classicApi\";\nimport { Podcast } from \"@/stores/class/general/podcast\";\nimport ClassicNav from \"../misc/ClassicNav.vue\";\nimport {useSeoTitleUrl} from \"../composable/route/useSeoTitleUrl\";\nimport {usePodcastView} from \"../composable/podcasts/usePodcastView\";\nimport { computed, defineAsyncComponent, onBeforeUnmount, Ref, ref, watch } from \"vue\";\nimport { AxiosError } from \"axios\";\nimport { useFilterStore } from \"../../stores/FilterStore\";\nimport { useAuthStore } from \"../../stores/AuthStore\";\nimport { useCommentStore } from \"../../stores/CommentStore\";\nimport { useApiStore } from \"../../stores/ApiStore\";\nimport { CommentsConfig } from \"@/stores/class/config/commentsConfig\";\nimport {\n Conference,\n ConferencePublicInfo,\n} from \"@/stores/class/conference/conference\";\nimport { usePlayerStore } from \"../../stores/PlayerStore\";\nimport { useGeneralStore } from \"../../stores/GeneralStore\";\nimport { useI18n } from \"vue-i18n\";\nimport { useRoute } from \"vue-router\";\nimport { useErrorHandler } from \"../composable/useErrorHandler\";\nconst PlayerVideoDigiteka = defineAsyncComponent(\n () => import(\"../misc/player/video/PlayerVideoDigiteka.vue\"),\n);\nconst PlayerVideoHls = defineAsyncComponent(\n () => import(\"../misc/player/video/PlayerVideoHls.vue\"),\n);\nconst CommentSection = defineAsyncComponent(\n () => import(\"../display/comments/CommentSection.vue\"),\n);\nconst VideoModuleBox = defineAsyncComponent(\n () => import(\"../display/podcasts/VideoModuleBox.vue\"),\n);\nconst CountdownOctopus = defineAsyncComponent(\n () => import(\"../display/live/CountdownOctopus.vue\"),\n);\n\n//Props \nconst props = defineProps({\n podcastId:{ default: 0, type: Number },\n})\n\n//Data \nconst loaded = ref(false);\nconst podcast: Ref<Podcast | undefined> = ref(undefined);\nconst error = ref(false);\nconst activeTab = ref(0);\nconst configPodcast: Ref<CommentsConfig | undefined> = ref(undefined);\nconst podcastConference: Ref<Conference | undefined> = ref(undefined);\nconst intervalStatusConference: Ref<ReturnType<typeof setTimeout> | undefined> = ref(undefined);\n\n//Composables\nconst { \n isLiveReadyToRecord,\n isCounter,\n timeRemaining,\n date,\n duration,\n durationIso,\n editRight\n} = usePodcastView(podcast, podcastConference);\nconst {handle403} = useErrorHandler();\nconst { updatePathParams } = useSeoTitleUrl();\nconst authStore = useAuthStore();\nconst apiStore = useApiStore();\nconst generalStore = useGeneralStore();\nconst playerStore = usePlayerStore();\nconst filterStore = useFilterStore();\nconst commentStore = useCommentStore();\nconst {t} = useI18n();\nconst route = useRoute();\n\n//Computed\nconst videoId = computed(() => podcast.value?.video?.videoId);\nconst canPostComment = computed(() => {\n return commentStore.getCanPostComment(\n configPodcast.value,\n podcast.value,\n undefined !== authStore.authOrgaId,\n );\n});\nconst tabs = computed(() => {\n if (canPostComment.value) {\n return [t(\"Information\"), t(\"Comments\")];\n }\n return [];\n});\nconst recordingLive = computed(() => {\n return (\n undefined !== podcastConference.value &&\n -1 !== podcastConference.value.conferenceId &&\n (\"RECORDING\" === podcastConference.value.status ||\n \"PENDING\" === podcastConference.value.status)\n );\n});\nconst hlsVideoUrl = computed(() => {\n if (!recordingLive.value || !podcastConference.value) {\n return \"\";\n }\n return `${apiStore.hlsUrl}live/video_${podcastConference.value.hlsIdentifier}/index.m3u8`;\n});\nconst isSecured = computed(() => {\n return \"SECURED\" === podcast.value?.organisation?.privacy;\n});\nconst overrideText = computed(() => {\n if (\"PUBLISHING\" !== podcastConference.value?.status) {\n return;\n }\n return t(\"In the process of being published\");\n});\n\n//Watch\nwatch(()=>props.podcastId, async () => {\n await getPodcastDetails();\n if (!podcast.value) {\n return;\n }\n commentStore.initCommentUser();\n configPodcast.value = await commentStore.getCommentsConfig(podcast.value);\n}, {immediate: true});\n\n\nonBeforeUnmount(() => {\n clearInterval(intervalStatusConference.value as unknown as number);\n})\n\n//Methods\nasync function getPodcastDetails(): Promise<void> {\n loaded.value = false;\n error.value = false;\n try {\n podcast.value = await classicApi.fetchData<Podcast>({\n api: 0,\n path: \"podcast/\" + props.podcastId,\n });\n document.title = podcast.value.title + \" - \"+generalStore.metaTitle;\n const orga = podcast.value.organisation;\n const privateAccess =\n \"PUBLIC\" !== orga.privacy &&\n filterStore.filterOrgaId !== orga.id &&\n route.query.productor !== orga.id;\n const notValid =\n (!podcast.value.availability.visibility ||\n ![\"READY_TO_RECORD\", \"READY\", \"PROCESSING\"].includes(\n podcast.value.processingStatus ?? \"\",\n ) ||\n !podcast.value.valid) &&\n !editRight.value;\n if (privateAccess || notValid) {\n error.value = true;\n } else {\n updatePathParams(podcast.value.title);\n if (\n podcast.value.conferenceId &&\n \"READY\" !== podcast.value.processingStatus\n ) {\n await fetchConferenceStatus();\n intervalStatusConference.value = setInterval(() => { fetchConferenceStatus(); }, 3000);\n playerStore.playerPlay(\n {\n ...podcast.value,\n ...{ \n conferenceId: podcast.value.conferenceId,\n hlsIdentifier: podcastConference.value?.hlsIdentifier,\n },\n },\n true,\n );\n }\n }\n } catch (errorCatched) {\n handle403(errorCatched as AxiosError);\n error.value = true;\n }\n loaded.value = true;\n}\n\nasync function fetchConferenceStatus() {\n if (!podcast.value?.conferenceId) {\n return;\n }\n const data = await classicApi.fetchData<ConferencePublicInfo>({\n api: 9,\n path: \"conference/info/\" + podcast.value.conferenceId,\n });\n podcastConference.value = {\n ...data,\n ...{\n conferenceId: podcast.value.conferenceId,\n title: \"\",\n },\n };\n if (\"DEBRIEFING\" === data.status) {\n clearInterval(intervalStatusConference.value as unknown as number);\n }\n}\n</script>\n<style lang=\"scss\">\n.octopus-app .video-page-container {\n align-items: stretch;\n flex-grow: 1;\n background: var(--octopus-primary-really-transparent);\n border-radius: var(--octopus-border-radius);\n box-shadow: 0 0 10px 1px var(--octopus-primary-transparent);\n\n .info-video-container {\n display: flex;\n flex-direction: column;\n\n .octopus-tab-pane,\n .video-module-box {\n height: 0;\n overflow-y: auto;\n\n @media (width <= 960px) {\n height: inherit;\n }\n }\n\n .classic-nav-tab-container {\n flex-direction: column;\n }\n }\n\n .module-box.module-box-transparent {\n margin: 0;\n background: transparent;\n border: 0;\n padding: 0;\n }\n\n .w-70-responsive {\n width: 70%;\n aspect-ratio: 16/9;\n }\n\n .w-30-responsive {\n width: 30%;\n }\n\n .w-70-responsive,\n .w-30-responsive {\n display: flex;\n align-items: stretch;\n flex-grow: 1;\n\n @media (width <= 960px) {\n width: 100%;\n padding: 0 !important;\n }\n }\n\n .really-light-secondary-bg {\n background: white;\n }\n}\n</style>\n"],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"VideoPage-CnIZYz-k.mjs","names":[],"sources":["../src/components/pages/VideoPage.vue","../src/components/pages/VideoPage.vue"],"sourcesContent":["<template>\n <section class=\"page-box\">\n <template v-if=\"loaded && !error\">\n <router-link\n :to=\"{\n name: 'podcast',\n params: { podcastId: podcastId },\n }\"\n class=\"mt-3 mb-3 w-fit-content d-flex align-items-center\"\n :title=\"t('Episode name page', { name: podcast?.title })\"\n >\n <ChevronLeftIcon />{{ t(\"Episode page\") }}\n </router-link>\n <div\n v-if=\"videoId || isLiveReadyToRecord\"\n class=\"d-flex video-page-container\"\n >\n <div class=\"w-70-responsive\">\n <template v-if=\"isLiveReadyToRecord\">\n <PlayerVideoHls\n v-if=\"recordingLive\"\n :hls-url=\"hlsVideoUrl\"\n :is-secured=\"isSecured\"\n :responsive=\"true\"\n />\n <div\n v-if=\"isCounter || overrideText\"\n class=\"d-flex flex-column align-items-center flex-grow-1 blue-bg p-3\"\n >\n <CountdownOctopus\n :time-remaining=\"timeRemaining\"\n :override-text=\"overrideText\"\n />\n </div>\n </template>\n <PlayerVideoDigiteka\n v-else\n :video-id=\"videoId\"\n :podcast-id=\"podcastId\"\n responsive\n />\n </div>\n <div class=\"w-30-responsive info-video-container\">\n <div class=\"d-flex flex-column flex-grow-1 w-100\">\n <ClassicNav\n v-if=\"tabs.length\"\n v-model:active-tab=\"activeTab\"\n :tab-number=\"tabs.length\"\n :transparent=\"true\"\n >\n <template v-for=\"(tab, index) in tabs\" #[index]>\n {{ tab }}\n </template>\n <template #tab0>\n <VideoModuleBox\n :podcast=\"podcast\"\n :date=\"date\"\n :duration=\"duration\"\n />\n </template>\n <template #tab1>\n <section>\n <CommentSection\n :podcast=\"podcast\"\n class=\"module-box-transparent\"\n />\n </section>\n </template>\n </ClassicNav>\n <VideoModuleBox\n v-else\n class=\"p-2 video-module-box\"\n :podcast=\"podcast\"\n :date=\"date\"\n :duration=\"duration\"\n :duration-iso=\"durationIso\"\n />\n </div>\n </div>\n </div>\n </template>\n <div\n v-if=\"!error && !videoId && !isLiveReadyToRecord\"\n class=\"text-center text-danger h3\"\n >\n {{ t(\"The episode does not have an associated video\") }}\n </div>\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 ChevronLeftIcon from \"vue-material-design-icons/ChevronLeft.vue\";\nimport ClassicLoading from \"../form/ClassicLoading.vue\";\nimport classicApi from \"../../api/classicApi\";\nimport { Podcast } from \"@/stores/class/general/podcast\";\nimport ClassicNav from \"../misc/ClassicNav.vue\";\nimport {useSeoTitleUrl} from \"../composable/route/useSeoTitleUrl\";\nimport {usePodcastView} from \"../composable/podcasts/usePodcastView\";\nimport { computed, defineAsyncComponent, onBeforeUnmount, Ref, ref, watch } from \"vue\";\nimport { AxiosError } from \"axios\";\nimport { useFilterStore } from \"../../stores/FilterStore\";\nimport { useAuthStore } from \"../../stores/AuthStore\";\nimport { useCommentStore } from \"../../stores/CommentStore\";\nimport { useApiStore } from \"../../stores/ApiStore\";\nimport { CommentsConfig } from \"@/stores/class/config/commentsConfig\";\nimport {\n Conference,\n ConferencePublicInfo,\n} from \"@/stores/class/conference/conference\";\nimport { usePlayerStore } from \"../../stores/PlayerStore\";\nimport { useGeneralStore } from \"../../stores/GeneralStore\";\nimport { useI18n } from \"vue-i18n\";\nimport { useRoute } from \"vue-router\";\nimport { useErrorHandler } from \"../composable/useErrorHandler\";\nconst PlayerVideoDigiteka = defineAsyncComponent(\n () => import(\"../misc/player/video/PlayerVideoDigiteka.vue\"),\n);\nconst PlayerVideoHls = defineAsyncComponent(\n () => import(\"../misc/player/video/PlayerVideoHls.vue\"),\n);\nconst CommentSection = defineAsyncComponent(\n () => import(\"../display/comments/CommentSection.vue\"),\n);\nconst VideoModuleBox = defineAsyncComponent(\n () => import(\"../display/podcasts/VideoModuleBox.vue\"),\n);\nconst CountdownOctopus = defineAsyncComponent(\n () => import(\"../display/live/CountdownOctopus.vue\"),\n);\n\n//Props \nconst props = defineProps({\n podcastId:{ default: 0, type: Number },\n})\n\n//Data \nconst loaded = ref(false);\nconst podcast: Ref<Podcast | undefined> = ref(undefined);\nconst error = ref(false);\nconst activeTab = ref(0);\nconst configPodcast: Ref<CommentsConfig | undefined> = ref(undefined);\nconst podcastConference: Ref<Conference | undefined> = ref(undefined);\nconst intervalStatusConference: Ref<ReturnType<typeof setTimeout> | undefined> = ref(undefined);\n\n//Composables\nconst { \n isLiveReadyToRecord,\n isCounter,\n timeRemaining,\n date,\n duration,\n durationIso,\n editRight\n} = usePodcastView(podcast, podcastConference);\nconst {handle403} = useErrorHandler();\nconst { updatePathParams } = useSeoTitleUrl();\nconst authStore = useAuthStore();\nconst apiStore = useApiStore();\nconst generalStore = useGeneralStore();\nconst playerStore = usePlayerStore();\nconst filterStore = useFilterStore();\nconst commentStore = useCommentStore();\nconst {t} = useI18n();\nconst route = useRoute();\n\n//Computed\nconst videoId = computed(() => podcast.value?.video?.videoId);\nconst canPostComment = computed(() => {\n return commentStore.getCanPostComment(\n configPodcast.value,\n podcast.value,\n undefined !== authStore.authOrgaId,\n );\n});\nconst tabs = computed(() => {\n if (canPostComment.value) {\n return [t(\"Information\"), t(\"Comments\")];\n }\n return [];\n});\nconst recordingLive = computed(() => {\n return (\n undefined !== podcastConference.value &&\n -1 !== podcastConference.value.conferenceId &&\n (\"RECORDING\" === podcastConference.value.status ||\n \"PENDING\" === podcastConference.value.status)\n );\n});\nconst hlsVideoUrl = computed(() => {\n if (!recordingLive.value || !podcastConference.value) {\n return \"\";\n }\n return `${apiStore.hlsUrl}live/video_${podcastConference.value.hlsIdentifier}/index.m3u8`;\n});\nconst isSecured = computed(() => {\n return \"SECURED\" === podcast.value?.organisation?.privacy;\n});\nconst overrideText = computed(() => {\n if (\"PUBLISHING\" !== podcastConference.value?.status) {\n return;\n }\n return t(\"In the process of being published\");\n});\n\n//Watch\nwatch(()=>props.podcastId, async () => {\n await getPodcastDetails();\n if (!podcast.value) {\n return;\n }\n commentStore.initCommentUser();\n configPodcast.value = await commentStore.getCommentsConfig(podcast.value);\n}, {immediate: true});\n\n\nonBeforeUnmount(() => {\n clearInterval(intervalStatusConference.value as unknown as number);\n})\n\n//Methods\nasync function getPodcastDetails(): Promise<void> {\n loaded.value = false;\n error.value = false;\n try {\n podcast.value = await classicApi.fetchData<Podcast>({\n api: 0,\n path: \"podcast/\" + props.podcastId,\n });\n document.title = podcast.value.title + \" - \"+generalStore.metaTitle;\n const orga = podcast.value.organisation;\n const privateAccess =\n \"PUBLIC\" !== orga.privacy &&\n filterStore.filterOrgaId !== orga.id &&\n route.query.productor !== orga.id;\n const notValid =\n (!podcast.value.availability.visibility ||\n ![\"READY_TO_RECORD\", \"READY\", \"PROCESSING\"].includes(\n podcast.value.processingStatus ?? \"\",\n ) ||\n !podcast.value.valid) &&\n !editRight.value;\n if (privateAccess || notValid) {\n error.value = true;\n } else {\n updatePathParams(podcast.value.title);\n if (\n podcast.value.conferenceId &&\n \"READY\" !== podcast.value.processingStatus\n ) {\n await fetchConferenceStatus();\n intervalStatusConference.value = setInterval(() => { fetchConferenceStatus(); }, 3000);\n playerStore.playerPlay(\n {\n ...podcast.value,\n ...{ \n conferenceId: podcast.value.conferenceId,\n hlsIdentifier: podcastConference.value?.hlsIdentifier,\n },\n },\n true,\n );\n }\n }\n } catch (errorCatched) {\n handle403(errorCatched as AxiosError);\n error.value = true;\n }\n loaded.value = true;\n}\n\nasync function fetchConferenceStatus() {\n if (!podcast.value?.conferenceId) {\n return;\n }\n const data = await classicApi.fetchData<ConferencePublicInfo>({\n api: 9,\n path: \"conference/info/\" + podcast.value.conferenceId,\n });\n podcastConference.value = {\n ...data,\n ...{\n conferenceId: podcast.value.conferenceId,\n title: \"\",\n },\n };\n if (\"DEBRIEFING\" === data.status) {\n clearInterval(intervalStatusConference.value as unknown as number);\n }\n}\n</script>\n<style lang=\"scss\">\n.octopus-app .video-page-container {\n align-items: stretch;\n flex-grow: 1;\n background: var(--octopus-primary-really-transparent);\n border-radius: var(--octopus-border-radius);\n box-shadow: 0 0 10px 1px var(--octopus-primary-transparent);\n\n .info-video-container {\n display: flex;\n flex-direction: column;\n\n .octopus-tab-pane,\n .video-module-box {\n height: 0;\n overflow-y: auto;\n\n @media (width <= 960px) {\n height: inherit;\n }\n }\n\n .classic-nav-tab-container {\n flex-direction: column;\n }\n }\n\n .module-box.module-box-transparent {\n margin: 0;\n background: transparent;\n border: 0;\n padding: 0;\n }\n\n .w-70-responsive {\n width: 70%;\n aspect-ratio: 16/9;\n }\n\n .w-30-responsive {\n width: 30%;\n }\n\n .w-70-responsive,\n .w-30-responsive {\n display: flex;\n align-items: stretch;\n flex-grow: 1;\n\n @media (width <= 960px) {\n width: 100%;\n padding: 0 !important;\n }\n }\n\n .really-light-secondary-bg {\n background: white;\n }\n}\n</style>\n","<template>\n <section class=\"page-box\">\n <template v-if=\"loaded && !error\">\n <router-link\n :to=\"{\n name: 'podcast',\n params: { podcastId: podcastId },\n }\"\n class=\"mt-3 mb-3 w-fit-content d-flex align-items-center\"\n :title=\"t('Episode name page', { name: podcast?.title })\"\n >\n <ChevronLeftIcon />{{ t(\"Episode page\") }}\n </router-link>\n <div\n v-if=\"videoId || isLiveReadyToRecord\"\n class=\"d-flex video-page-container\"\n >\n <div class=\"w-70-responsive\">\n <template v-if=\"isLiveReadyToRecord\">\n <PlayerVideoHls\n v-if=\"recordingLive\"\n :hls-url=\"hlsVideoUrl\"\n :is-secured=\"isSecured\"\n :responsive=\"true\"\n />\n <div\n v-if=\"isCounter || overrideText\"\n class=\"d-flex flex-column align-items-center flex-grow-1 blue-bg p-3\"\n >\n <CountdownOctopus\n :time-remaining=\"timeRemaining\"\n :override-text=\"overrideText\"\n />\n </div>\n </template>\n <PlayerVideoDigiteka\n v-else\n :video-id=\"videoId\"\n :podcast-id=\"podcastId\"\n responsive\n />\n </div>\n <div class=\"w-30-responsive info-video-container\">\n <div class=\"d-flex flex-column flex-grow-1 w-100\">\n <ClassicNav\n v-if=\"tabs.length\"\n v-model:active-tab=\"activeTab\"\n :tab-number=\"tabs.length\"\n :transparent=\"true\"\n >\n <template v-for=\"(tab, index) in tabs\" #[index]>\n {{ tab }}\n </template>\n <template #tab0>\n <VideoModuleBox\n :podcast=\"podcast\"\n :date=\"date\"\n :duration=\"duration\"\n />\n </template>\n <template #tab1>\n <section>\n <CommentSection\n :podcast=\"podcast\"\n class=\"module-box-transparent\"\n />\n </section>\n </template>\n </ClassicNav>\n <VideoModuleBox\n v-else\n class=\"p-2 video-module-box\"\n :podcast=\"podcast\"\n :date=\"date\"\n :duration=\"duration\"\n :duration-iso=\"durationIso\"\n />\n </div>\n </div>\n </div>\n </template>\n <div\n v-if=\"!error && !videoId && !isLiveReadyToRecord\"\n class=\"text-center text-danger h3\"\n >\n {{ t(\"The episode does not have an associated video\") }}\n </div>\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 ChevronLeftIcon from \"vue-material-design-icons/ChevronLeft.vue\";\nimport ClassicLoading from \"../form/ClassicLoading.vue\";\nimport classicApi from \"../../api/classicApi\";\nimport { Podcast } from \"@/stores/class/general/podcast\";\nimport ClassicNav from \"../misc/ClassicNav.vue\";\nimport {useSeoTitleUrl} from \"../composable/route/useSeoTitleUrl\";\nimport {usePodcastView} from \"../composable/podcasts/usePodcastView\";\nimport { computed, defineAsyncComponent, onBeforeUnmount, Ref, ref, watch } from \"vue\";\nimport { AxiosError } from \"axios\";\nimport { useFilterStore } from \"../../stores/FilterStore\";\nimport { useAuthStore } from \"../../stores/AuthStore\";\nimport { useCommentStore } from \"../../stores/CommentStore\";\nimport { useApiStore } from \"../../stores/ApiStore\";\nimport { CommentsConfig } from \"@/stores/class/config/commentsConfig\";\nimport {\n Conference,\n ConferencePublicInfo,\n} from \"@/stores/class/conference/conference\";\nimport { usePlayerStore } from \"../../stores/PlayerStore\";\nimport { useGeneralStore } from \"../../stores/GeneralStore\";\nimport { useI18n } from \"vue-i18n\";\nimport { useRoute } from \"vue-router\";\nimport { useErrorHandler } from \"../composable/useErrorHandler\";\nconst PlayerVideoDigiteka = defineAsyncComponent(\n () => import(\"../misc/player/video/PlayerVideoDigiteka.vue\"),\n);\nconst PlayerVideoHls = defineAsyncComponent(\n () => import(\"../misc/player/video/PlayerVideoHls.vue\"),\n);\nconst CommentSection = defineAsyncComponent(\n () => import(\"../display/comments/CommentSection.vue\"),\n);\nconst VideoModuleBox = defineAsyncComponent(\n () => import(\"../display/podcasts/VideoModuleBox.vue\"),\n);\nconst CountdownOctopus = defineAsyncComponent(\n () => import(\"../display/live/CountdownOctopus.vue\"),\n);\n\n//Props \nconst props = defineProps({\n podcastId:{ default: 0, type: Number },\n})\n\n//Data \nconst loaded = ref(false);\nconst podcast: Ref<Podcast | undefined> = ref(undefined);\nconst error = ref(false);\nconst activeTab = ref(0);\nconst configPodcast: Ref<CommentsConfig | undefined> = ref(undefined);\nconst podcastConference: Ref<Conference | undefined> = ref(undefined);\nconst intervalStatusConference: Ref<ReturnType<typeof setTimeout> | undefined> = ref(undefined);\n\n//Composables\nconst { \n isLiveReadyToRecord,\n isCounter,\n timeRemaining,\n date,\n duration,\n durationIso,\n editRight\n} = usePodcastView(podcast, podcastConference);\nconst {handle403} = useErrorHandler();\nconst { updatePathParams } = useSeoTitleUrl();\nconst authStore = useAuthStore();\nconst apiStore = useApiStore();\nconst generalStore = useGeneralStore();\nconst playerStore = usePlayerStore();\nconst filterStore = useFilterStore();\nconst commentStore = useCommentStore();\nconst {t} = useI18n();\nconst route = useRoute();\n\n//Computed\nconst videoId = computed(() => podcast.value?.video?.videoId);\nconst canPostComment = computed(() => {\n return commentStore.getCanPostComment(\n configPodcast.value,\n podcast.value,\n undefined !== authStore.authOrgaId,\n );\n});\nconst tabs = computed(() => {\n if (canPostComment.value) {\n return [t(\"Information\"), t(\"Comments\")];\n }\n return [];\n});\nconst recordingLive = computed(() => {\n return (\n undefined !== podcastConference.value &&\n -1 !== podcastConference.value.conferenceId &&\n (\"RECORDING\" === podcastConference.value.status ||\n \"PENDING\" === podcastConference.value.status)\n );\n});\nconst hlsVideoUrl = computed(() => {\n if (!recordingLive.value || !podcastConference.value) {\n return \"\";\n }\n return `${apiStore.hlsUrl}live/video_${podcastConference.value.hlsIdentifier}/index.m3u8`;\n});\nconst isSecured = computed(() => {\n return \"SECURED\" === podcast.value?.organisation?.privacy;\n});\nconst overrideText = computed(() => {\n if (\"PUBLISHING\" !== podcastConference.value?.status) {\n return;\n }\n return t(\"In the process of being published\");\n});\n\n//Watch\nwatch(()=>props.podcastId, async () => {\n await getPodcastDetails();\n if (!podcast.value) {\n return;\n }\n commentStore.initCommentUser();\n configPodcast.value = await commentStore.getCommentsConfig(podcast.value);\n}, {immediate: true});\n\n\nonBeforeUnmount(() => {\n clearInterval(intervalStatusConference.value as unknown as number);\n})\n\n//Methods\nasync function getPodcastDetails(): Promise<void> {\n loaded.value = false;\n error.value = false;\n try {\n podcast.value = await classicApi.fetchData<Podcast>({\n api: 0,\n path: \"podcast/\" + props.podcastId,\n });\n document.title = podcast.value.title + \" - \"+generalStore.metaTitle;\n const orga = podcast.value.organisation;\n const privateAccess =\n \"PUBLIC\" !== orga.privacy &&\n filterStore.filterOrgaId !== orga.id &&\n route.query.productor !== orga.id;\n const notValid =\n (!podcast.value.availability.visibility ||\n ![\"READY_TO_RECORD\", \"READY\", \"PROCESSING\"].includes(\n podcast.value.processingStatus ?? \"\",\n ) ||\n !podcast.value.valid) &&\n !editRight.value;\n if (privateAccess || notValid) {\n error.value = true;\n } else {\n updatePathParams(podcast.value.title);\n if (\n podcast.value.conferenceId &&\n \"READY\" !== podcast.value.processingStatus\n ) {\n await fetchConferenceStatus();\n intervalStatusConference.value = setInterval(() => { fetchConferenceStatus(); }, 3000);\n playerStore.playerPlay(\n {\n ...podcast.value,\n ...{ \n conferenceId: podcast.value.conferenceId,\n hlsIdentifier: podcastConference.value?.hlsIdentifier,\n },\n },\n true,\n );\n }\n }\n } catch (errorCatched) {\n handle403(errorCatched as AxiosError);\n error.value = true;\n }\n loaded.value = true;\n}\n\nasync function fetchConferenceStatus() {\n if (!podcast.value?.conferenceId) {\n return;\n }\n const data = await classicApi.fetchData<ConferencePublicInfo>({\n api: 9,\n path: \"conference/info/\" + podcast.value.conferenceId,\n });\n podcastConference.value = {\n ...data,\n ...{\n conferenceId: podcast.value.conferenceId,\n title: \"\",\n },\n };\n if (\"DEBRIEFING\" === data.status) {\n clearInterval(intervalStatusConference.value as unknown as number);\n }\n}\n</script>\n<style lang=\"scss\">\n.octopus-app .video-page-container {\n align-items: stretch;\n flex-grow: 1;\n background: var(--octopus-primary-really-transparent);\n border-radius: var(--octopus-border-radius);\n box-shadow: 0 0 10px 1px var(--octopus-primary-transparent);\n\n .info-video-container {\n display: flex;\n flex-direction: column;\n\n .octopus-tab-pane,\n .video-module-box {\n height: 0;\n overflow-y: auto;\n\n @media (width <= 960px) {\n height: inherit;\n }\n }\n\n .classic-nav-tab-container {\n flex-direction: column;\n }\n }\n\n .module-box.module-box-transparent {\n margin: 0;\n background: transparent;\n border: 0;\n padding: 0;\n }\n\n .w-70-responsive {\n width: 70%;\n aspect-ratio: 16/9;\n }\n\n .w-30-responsive {\n width: 30%;\n }\n\n .w-70-responsive,\n .w-30-responsive {\n display: flex;\n align-items: stretch;\n flex-grow: 1;\n\n @media (width <= 960px) {\n width: 100%;\n padding: 0 !important;\n }\n }\n\n .really-light-secondary-bg {\n background: white;\n }\n}\n</style>\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;EA0HA,MAAM,sBAAsB,2BACpB,OAAO,qCACf;EACA,MAAM,iBAAiB,2BACf,OAAO,gCACf;EACA,MAAM,iBAAiB,2BACf,OAAO,gCACf;EACA,MAAM,iBAAiB,2BACf,OAAO,gCACf;EACA,MAAM,mBAAmB,2BACjB,OAAO,kCACf;EAGA,MAAM,QAAQ;EAKd,MAAM,SAAS,IAAI,KAAK;EACxB,MAAM,UAAoC,IAAI,KAAA,CAAS;EACvD,MAAM,QAAQ,IAAI,KAAK;EACvB,MAAM,YAAY,IAAI,CAAC;EACvB,MAAM,gBAAiD,IAAI,KAAA,CAAS;EACpE,MAAM,oBAAiD,IAAI,KAAA,CAAS;EACpE,MAAM,2BAA2E,IAAI,KAAA,CAAS;EAG9F,MAAM,EACJ,qBACA,WACA,eACA,MACA,UACA,aACA,cACE,eAAe,SAAS,iBAAiB;EAC7C,MAAM,EAAC,cAAa,gBAAgB;EACpC,MAAM,EAAE,qBAAqB,eAAe;EAC5C,MAAM,YAAY,aAAa;EAC/B,MAAM,WAAW,YAAY;EAC7B,MAAM,eAAe,gBAAgB;EACrC,MAAM,cAAc,eAAe;EACnC,MAAM,cAAc,eAAe;EACnC,MAAM,eAAe,gBAAgB;EACrC,MAAM,EAAC,MAAK,QAAQ;EACpB,MAAM,QAAQ,SAAS;EAGvB,MAAM,UAAU,eAAe,QAAQ,OAAO,OAAO,OAAO;EAC5D,MAAM,iBAAiB,eAAe;GACpC,OAAO,aAAa,kBAClB,cAAc,OACd,QAAQ,OACR,KAAA,MAAc,UAAU,UAC1B;EACF,CAAC;EACD,MAAM,OAAO,eAAe;GAC1B,IAAI,eAAe,OACjB,OAAO,CAAC,EAAE,aAAa,GAAG,EAAE,UAAU,CAAC;GAEzC,OAAO,CAAC;EACV,CAAC;EACD,MAAM,gBAAgB,eAAe;GACnC,OACM,KAAA,MAAc,kBAAkB,SAChC,OAAO,kBAAkB,MAAM,iBAC9B,gBAAgB,kBAAkB,MAAM,UACvC,cAAc,kBAAkB,MAAM;EAEhD,CAAC;EACD,MAAM,cAAc,eAAe;GACjC,IAAI,CAAC,cAAc,SAAS,CAAC,kBAAkB,OAC7C,OAAO;GAET,OAAO,GAAG,SAAS,OAAO,aAAa,kBAAkB,MAAM,cAAc;EAC/E,CAAC;EACD,MAAM,YAAY,eAAe;GAC/B,OAAO,cAAc,QAAQ,OAAO,cAAc;EACpD,CAAC;EACD,MAAM,eAAe,eAAe;GAClC,IAAI,iBAAiB,kBAAkB,OAAO,QAC5C;GAEF,OAAO,EAAE,mCAAmC;EAC9C,CAAC;EAGD,YAAU,MAAM,WAAW,YAAY;GACrC,MAAM,kBAAkB;GACxB,IAAI,CAAC,QAAQ,OACX;GAEF,aAAa,gBAAgB;GAC7B,cAAc,QAAQ,MAAM,aAAa,kBAAkB,QAAQ,KAAK;EAC1E,GAAG,EAAC,WAAW,KAAI,CAAC;EAGpB,sBAAsB;GACpB,cAAc,yBAAyB,KAA0B;EACnE,CAAC;EAGD,eAAe,oBAAmC;GAChD,OAAO,QAAQ;GACf,MAAM,QAAQ;GACd,IAAI;IACF,QAAQ,QAAQ,MAAM,mBAAW,UAAmB;KAClD,KAAK;KACL,MAAM,aAAa,MAAM;IAC3B,CAAC;IACD,SAAS,QAAQ,QAAQ,MAAM,QAAQ,QAAM,aAAa;IAC1D,MAAM,OAAO,QAAQ,MAAM;IAC3B,MAAM,gBACJ,aAAa,KAAK,WAClB,YAAY,iBAAiB,KAAK,MAClC,MAAM,MAAM,cAAc,KAAK;IACjC,MAAM,YACH,CAAC,QAAQ,MAAM,aAAa,cAC3B,CAAC;KAAC;KAAmB;KAAS;IAAY,EAAE,SAC1C,QAAQ,MAAM,oBAAoB,EACpC,KACA,CAAC,QAAQ,MAAM,UACjB,CAAC,UAAU;IACb,IAAI,iBAAiB,UACnB,MAAM,QAAQ;SACT;KACL,iBAAiB,QAAQ,MAAM,KAAK;KACpC,IACE,QAAQ,MAAM,gBACd,YAAY,QAAQ,MAAM,kBAC1B;MACA,MAAM,sBAAsB;MAC5B,yBAAyB,QAAQ,kBAAkB;OAAE,sBAAsB;MAAG,GAAG,GAAI;MACrF,YAAY,WACV;OACE,GAAG,QAAQ;OAET,cAAc,QAAQ,MAAM;OAC5B,eAAe,kBAAkB,OAAO;MAE5C,GACA,IACF;KACF;IACF;GACF,SAAS,cAAc;IACrB,UAAU,YAA0B;IACpC,MAAM,QAAQ;GAChB;GACA,OAAO,QAAQ;EACjB;EAEA,eAAe,wBAAwB;GACrC,IAAI,CAAC,QAAQ,OAAO,cAClB;GAEF,MAAM,OAAO,MAAM,mBAAW,UAAgC;IAC5D,KAAK;IACL,MAAM,qBAAqB,QAAQ,MAAM;GAC3C,CAAC;GACD,kBAAkB,QAAQ;IACxB,GAAG;IAED,cAAc,QAAQ,MAAM;IAC5B,OAAO;GAEX;GACA,IAAI,iBAAiB,KAAK,QACxB,cAAc,yBAAyB,KAA0B;EAErE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;mBCvSW,OAAM,WAAU;;;CAcnB,OAAM;;mBAED,OAAM,kBAAiB;;;CAUtB,OAAM;;mBAeP,OAAM,uCAAsC;mBAC1C,OAAM,uCAAsC;;;CAwCrD,OAAM;;;;qBAlFV,mBA8FU,WA9FV,YA8FU;EA7FQ,OAAA,UAAM,CAAK,OAAA,SAAA,UAAA,GAA3B,mBA8EW,UAAA,EAAA,KAAA,EAAA,GAAA,CA7ET,YASc,wBAAA;GARX,IAAE;;yBAA8D,OAAA,UAAS;;GAI1E,OAAM;GACL,OAAO,OAAA,EAAC,qBAAA,EAAA,MAA8B,OAAA,SAAS,MAAK,CAAA;;0BAElC,CAAnB,YAAmB,OAAA,kBAAA,GAAA,gBAAA,gBAAG,OAAA,EAAC,cAAA,CAAA,GAAA,CAAA,CAAA,CAAA;;0BAGjB,OAAA,WAAW,OAAA,uBAAA,UAAA,GADnB,mBAkEM,OAlEN,YAkEM,CA9DJ,mBAwBM,OAxBN,YAwBM,CAvBY,OAAA,uBAAA,UAAA,GAAhB,mBAgBW,UAAA,EAAA,KAAA,EAAA,GAAA,CAdD,OAAA,iBAAA,UAAA,GADR,YAKE,OAAA,mBAAA;;GAHC,WAAS,OAAA;GACT,cAAY,OAAA;GACZ,YAAY;8EAGP,OAAA,aAAa,OAAA,gBAAA,UAAA,GADrB,mBAQM,OARN,YAQM,CAJJ,YAGE,OAAA,qBAAA;GAFC,kBAAgB,OAAA;GAChB,iBAAe,OAAA;gHAItB,YAKE,OAAA,wBAAA;;GAHC,YAAU,OAAA;GACV,cAAY,OAAA;GACb,YAAA;8CAGJ,mBAoCM,OApCN,YAoCM,CAnCJ,mBAkCM,OAlCN,YAkCM,CAhCI,OAAA,KAAK,UAAA,UAAA,GADb,YAwBa,OAAA,eAAA;;GAtBH,cAAY,OAAA;+DAAA,OAAA,YAAS;GAC5B,cAAY,OAAA,KAAK;GACjB,aAAa;;GAKH,MAAI,cAKX,CAJF,YAIE,OAAA,mBAAA;IAHC,SAAS,OAAA;IACT,MAAM,OAAA;IACN,UAAU,OAAA;;;;;;GAGJ,MAAI,cAMH,CALV,mBAKU,WAAA,MAAA,CAJR,YAGE,OAAA,mBAAA;IAFC,SAAS,OAAA;IACV,OAAM;;;iBAdqB,OAAA,OAAf,KAAK,UAAK;;UAAY;sBAC7B,CAAA,gBAAA,gBAAN,GAAG,GAAA,CAAA,CAAA,CAAA;;6DAkBV,YAOE,OAAA,mBAAA;;GALA,OAAM;GACL,SAAS,OAAA;GACT,MAAM,OAAA;GACN,UAAU,OAAA;GACV,gBAAc,OAAA;;;;;;;GAOhB,OAAA,SAAK,CAAK,OAAA,WAAO,CAAK,OAAA,uBAAA,UAAA,GAD/B,mBAKM,OALN,YAKM,gBADD,OAAA,EAAC,+CAAA,CAAA,GAAA,CAAA,KAAA,mBAAA,QAAA,IAAA;EAEN,YAOE,OAAA,mBAAA;GANC,gBAAY,CAAG,OAAA,SAAS,OAAA,EAAC,qBAAA,IAA0B,KAAA;GACnD,cAAqB,OAAA,QAAkB,OAAA,EAAC,iDAAA,IAAgE,KAAA"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"VideoPage-D6UNKt2D.mjs","names":[],"sources":["../src/components/pages/VideoPage.vue","../src/components/pages/VideoPage.vue"],"sourcesContent":["<template>\n <section class=\"page-box\">\n <template v-if=\"loaded && !error\">\n <router-link\n :to=\"{\n name: 'podcast',\n params: { podcastId: podcastId },\n }\"\n class=\"mt-3 mb-3 w-fit-content d-flex align-items-center\"\n :title=\"t('Episode name page', { name: podcast?.title })\"\n >\n <ChevronLeftIcon />{{ t(\"Episode page\") }}\n </router-link>\n <div\n v-if=\"videoId || isLiveReadyToRecord\"\n class=\"d-flex video-page-container\"\n >\n <div class=\"w-70-responsive\">\n <template v-if=\"isLiveReadyToRecord\">\n <PlayerVideoHls\n v-if=\"recordingLive\"\n :hls-url=\"hlsVideoUrl\"\n :is-secured=\"isSecured\"\n :responsive=\"true\"\n />\n <div\n v-if=\"isCounter || overrideText\"\n class=\"d-flex flex-column align-items-center flex-grow-1 blue-bg p-3\"\n >\n <CountdownOctopus\n :time-remaining=\"timeRemaining\"\n :override-text=\"overrideText\"\n />\n </div>\n </template>\n <PlayerVideoDigiteka\n v-else\n :video-id=\"videoId\"\n :podcast-id=\"podcastId\"\n responsive\n />\n </div>\n <div class=\"w-30-responsive info-video-container\">\n <div class=\"d-flex flex-column flex-grow-1 w-100\">\n <ClassicNav\n v-if=\"tabs.length\"\n v-model:active-tab=\"activeTab\"\n :tab-number=\"tabs.length\"\n :transparent=\"true\"\n >\n <template v-for=\"(tab, index) in tabs\" #[index]>\n {{ tab }}\n </template>\n <template #tab0>\n <VideoModuleBox\n :podcast=\"podcast\"\n :date=\"date\"\n :duration=\"duration\"\n />\n </template>\n <template #tab1>\n <section>\n <CommentSection\n :podcast=\"podcast\"\n class=\"module-box-transparent\"\n />\n </section>\n </template>\n </ClassicNav>\n <VideoModuleBox\n v-else\n class=\"p-2 video-module-box\"\n :podcast=\"podcast\"\n :date=\"date\"\n :duration=\"duration\"\n :duration-iso=\"durationIso\"\n />\n </div>\n </div>\n </div>\n </template>\n <div\n v-if=\"!error && !videoId && !isLiveReadyToRecord\"\n class=\"text-center text-danger h3\"\n >\n {{ t(\"The episode does not have an associated video\") }}\n </div>\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 ChevronLeftIcon from \"vue-material-design-icons/ChevronLeft.vue\";\nimport ClassicLoading from \"../form/ClassicLoading.vue\";\nimport classicApi from \"../../api/classicApi\";\nimport { Podcast } from \"@/stores/class/general/podcast\";\nimport ClassicNav from \"../misc/ClassicNav.vue\";\nimport {useSeoTitleUrl} from \"../composable/route/useSeoTitleUrl\";\nimport {usePodcastView} from \"../composable/podcasts/usePodcastView\";\nimport { computed, defineAsyncComponent, onBeforeUnmount, Ref, ref, watch } from \"vue\";\nimport { AxiosError } from \"axios\";\nimport { useFilterStore } from \"../../stores/FilterStore\";\nimport { useAuthStore } from \"../../stores/AuthStore\";\nimport { useCommentStore } from \"../../stores/CommentStore\";\nimport { useApiStore } from \"../../stores/ApiStore\";\nimport { CommentsConfig } from \"@/stores/class/config/commentsConfig\";\nimport {\n Conference,\n ConferencePublicInfo,\n} from \"@/stores/class/conference/conference\";\nimport { usePlayerStore } from \"../../stores/PlayerStore\";\nimport { useGeneralStore } from \"../../stores/GeneralStore\";\nimport { useI18n } from \"vue-i18n\";\nimport { useRoute } from \"vue-router\";\nimport { useErrorHandler } from \"../composable/useErrorHandler\";\nconst PlayerVideoDigiteka = defineAsyncComponent(\n () => import(\"../misc/player/video/PlayerVideoDigiteka.vue\"),\n);\nconst PlayerVideoHls = defineAsyncComponent(\n () => import(\"../misc/player/video/PlayerVideoHls.vue\"),\n);\nconst CommentSection = defineAsyncComponent(\n () => import(\"../display/comments/CommentSection.vue\"),\n);\nconst VideoModuleBox = defineAsyncComponent(\n () => import(\"../display/podcasts/VideoModuleBox.vue\"),\n);\nconst CountdownOctopus = defineAsyncComponent(\n () => import(\"../display/live/CountdownOctopus.vue\"),\n);\n\n//Props \nconst props = defineProps({\n podcastId:{ default: 0, type: Number },\n})\n\n//Data \nconst loaded = ref(false);\nconst podcast: Ref<Podcast | undefined> = ref(undefined);\nconst error = ref(false);\nconst activeTab = ref(0);\nconst configPodcast: Ref<CommentsConfig | undefined> = ref(undefined);\nconst podcastConference: Ref<Conference | undefined> = ref(undefined);\nconst intervalStatusConference: Ref<ReturnType<typeof setTimeout> | undefined> = ref(undefined);\n\n//Composables\nconst { \n isLiveReadyToRecord,\n isCounter,\n timeRemaining,\n date,\n duration,\n durationIso,\n editRight\n} = usePodcastView(podcast, podcastConference);\nconst {handle403} = useErrorHandler();\nconst { updatePathParams } = useSeoTitleUrl();\nconst authStore = useAuthStore();\nconst apiStore = useApiStore();\nconst generalStore = useGeneralStore();\nconst playerStore = usePlayerStore();\nconst filterStore = useFilterStore();\nconst commentStore = useCommentStore();\nconst {t} = useI18n();\nconst route = useRoute();\n\n//Computed\nconst videoId = computed(() => podcast.value?.video?.videoId);\nconst canPostComment = computed(() => {\n return commentStore.getCanPostComment(\n configPodcast.value,\n podcast.value,\n undefined !== authStore.authOrgaId,\n );\n});\nconst tabs = computed(() => {\n if (canPostComment.value) {\n return [t(\"Information\"), t(\"Comments\")];\n }\n return [];\n});\nconst recordingLive = computed(() => {\n return (\n undefined !== podcastConference.value &&\n -1 !== podcastConference.value.conferenceId &&\n (\"RECORDING\" === podcastConference.value.status ||\n \"PENDING\" === podcastConference.value.status)\n );\n});\nconst hlsVideoUrl = computed(() => {\n if (!recordingLive.value || !podcastConference.value) {\n return \"\";\n }\n return `${apiStore.hlsUrl}live/video_${podcastConference.value.hlsIdentifier}/index.m3u8`;\n});\nconst isSecured = computed(() => {\n return \"SECURED\" === podcast.value?.organisation?.privacy;\n});\nconst overrideText = computed(() => {\n if (\"PUBLISHING\" !== podcastConference.value?.status) {\n return;\n }\n return t(\"In the process of being published\");\n});\n\n//Watch\nwatch(()=>props.podcastId, async () => {\n await getPodcastDetails();\n if (!podcast.value) {\n return;\n }\n commentStore.initCommentUser();\n configPodcast.value = await commentStore.getCommentsConfig(podcast.value);\n}, {immediate: true});\n\n\nonBeforeUnmount(() => {\n clearInterval(intervalStatusConference.value as unknown as number);\n})\n\n//Methods\nasync function getPodcastDetails(): Promise<void> {\n loaded.value = false;\n error.value = false;\n try {\n podcast.value = await classicApi.fetchData<Podcast>({\n api: 0,\n path: \"podcast/\" + props.podcastId,\n });\n document.title = podcast.value.title + \" - \"+generalStore.metaTitle;\n const orga = podcast.value.organisation;\n const privateAccess =\n \"PUBLIC\" !== orga.privacy &&\n filterStore.filterOrgaId !== orga.id &&\n route.query.productor !== orga.id;\n const notValid =\n (!podcast.value.availability.visibility ||\n ![\"READY_TO_RECORD\", \"READY\", \"PROCESSING\"].includes(\n podcast.value.processingStatus ?? \"\",\n ) ||\n !podcast.value.valid) &&\n !editRight.value;\n if (privateAccess || notValid) {\n error.value = true;\n } else {\n updatePathParams(podcast.value.title);\n if (\n podcast.value.conferenceId &&\n \"READY\" !== podcast.value.processingStatus\n ) {\n await fetchConferenceStatus();\n intervalStatusConference.value = setInterval(() => { fetchConferenceStatus(); }, 3000);\n playerStore.playerPlay(\n {\n ...podcast.value,\n ...{ \n conferenceId: podcast.value.conferenceId,\n hlsIdentifier: podcastConference.value?.hlsIdentifier,\n },\n },\n true,\n );\n }\n }\n } catch (errorCatched) {\n handle403(errorCatched as AxiosError);\n error.value = true;\n }\n loaded.value = true;\n}\n\nasync function fetchConferenceStatus() {\n if (!podcast.value?.conferenceId) {\n return;\n }\n const data = await classicApi.fetchData<ConferencePublicInfo>({\n api: 9,\n path: \"conference/info/\" + podcast.value.conferenceId,\n });\n podcastConference.value = {\n ...data,\n ...{\n conferenceId: podcast.value.conferenceId,\n title: \"\",\n },\n };\n if (\"DEBRIEFING\" === data.status) {\n clearInterval(intervalStatusConference.value as unknown as number);\n }\n}\n</script>\n<style lang=\"scss\">\n.octopus-app .video-page-container {\n align-items: stretch;\n flex-grow: 1;\n background: var(--octopus-primary-really-transparent);\n border-radius: var(--octopus-border-radius);\n box-shadow: 0 0 10px 1px var(--octopus-primary-transparent);\n\n .info-video-container {\n display: flex;\n flex-direction: column;\n\n .octopus-tab-pane,\n .video-module-box {\n height: 0;\n overflow-y: auto;\n\n @media (width <= 960px) {\n height: inherit;\n }\n }\n\n .classic-nav-tab-container {\n flex-direction: column;\n }\n }\n\n .module-box.module-box-transparent {\n margin: 0;\n background: transparent;\n border: 0;\n padding: 0;\n }\n\n .w-70-responsive {\n width: 70%;\n aspect-ratio: 16/9;\n }\n\n .w-30-responsive {\n width: 30%;\n }\n\n .w-70-responsive,\n .w-30-responsive {\n display: flex;\n align-items: stretch;\n flex-grow: 1;\n\n @media (width <= 960px) {\n width: 100%;\n padding: 0 !important;\n }\n }\n\n .really-light-secondary-bg {\n background: white;\n }\n}\n</style>\n","<template>\n <section class=\"page-box\">\n <template v-if=\"loaded && !error\">\n <router-link\n :to=\"{\n name: 'podcast',\n params: { podcastId: podcastId },\n }\"\n class=\"mt-3 mb-3 w-fit-content d-flex align-items-center\"\n :title=\"t('Episode name page', { name: podcast?.title })\"\n >\n <ChevronLeftIcon />{{ t(\"Episode page\") }}\n </router-link>\n <div\n v-if=\"videoId || isLiveReadyToRecord\"\n class=\"d-flex video-page-container\"\n >\n <div class=\"w-70-responsive\">\n <template v-if=\"isLiveReadyToRecord\">\n <PlayerVideoHls\n v-if=\"recordingLive\"\n :hls-url=\"hlsVideoUrl\"\n :is-secured=\"isSecured\"\n :responsive=\"true\"\n />\n <div\n v-if=\"isCounter || overrideText\"\n class=\"d-flex flex-column align-items-center flex-grow-1 blue-bg p-3\"\n >\n <CountdownOctopus\n :time-remaining=\"timeRemaining\"\n :override-text=\"overrideText\"\n />\n </div>\n </template>\n <PlayerVideoDigiteka\n v-else\n :video-id=\"videoId\"\n :podcast-id=\"podcastId\"\n responsive\n />\n </div>\n <div class=\"w-30-responsive info-video-container\">\n <div class=\"d-flex flex-column flex-grow-1 w-100\">\n <ClassicNav\n v-if=\"tabs.length\"\n v-model:active-tab=\"activeTab\"\n :tab-number=\"tabs.length\"\n :transparent=\"true\"\n >\n <template v-for=\"(tab, index) in tabs\" #[index]>\n {{ tab }}\n </template>\n <template #tab0>\n <VideoModuleBox\n :podcast=\"podcast\"\n :date=\"date\"\n :duration=\"duration\"\n />\n </template>\n <template #tab1>\n <section>\n <CommentSection\n :podcast=\"podcast\"\n class=\"module-box-transparent\"\n />\n </section>\n </template>\n </ClassicNav>\n <VideoModuleBox\n v-else\n class=\"p-2 video-module-box\"\n :podcast=\"podcast\"\n :date=\"date\"\n :duration=\"duration\"\n :duration-iso=\"durationIso\"\n />\n </div>\n </div>\n </div>\n </template>\n <div\n v-if=\"!error && !videoId && !isLiveReadyToRecord\"\n class=\"text-center text-danger h3\"\n >\n {{ t(\"The episode does not have an associated video\") }}\n </div>\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 ChevronLeftIcon from \"vue-material-design-icons/ChevronLeft.vue\";\nimport ClassicLoading from \"../form/ClassicLoading.vue\";\nimport classicApi from \"../../api/classicApi\";\nimport { Podcast } from \"@/stores/class/general/podcast\";\nimport ClassicNav from \"../misc/ClassicNav.vue\";\nimport {useSeoTitleUrl} from \"../composable/route/useSeoTitleUrl\";\nimport {usePodcastView} from \"../composable/podcasts/usePodcastView\";\nimport { computed, defineAsyncComponent, onBeforeUnmount, Ref, ref, watch } from \"vue\";\nimport { AxiosError } from \"axios\";\nimport { useFilterStore } from \"../../stores/FilterStore\";\nimport { useAuthStore } from \"../../stores/AuthStore\";\nimport { useCommentStore } from \"../../stores/CommentStore\";\nimport { useApiStore } from \"../../stores/ApiStore\";\nimport { CommentsConfig } from \"@/stores/class/config/commentsConfig\";\nimport {\n Conference,\n ConferencePublicInfo,\n} from \"@/stores/class/conference/conference\";\nimport { usePlayerStore } from \"../../stores/PlayerStore\";\nimport { useGeneralStore } from \"../../stores/GeneralStore\";\nimport { useI18n } from \"vue-i18n\";\nimport { useRoute } from \"vue-router\";\nimport { useErrorHandler } from \"../composable/useErrorHandler\";\nconst PlayerVideoDigiteka = defineAsyncComponent(\n () => import(\"../misc/player/video/PlayerVideoDigiteka.vue\"),\n);\nconst PlayerVideoHls = defineAsyncComponent(\n () => import(\"../misc/player/video/PlayerVideoHls.vue\"),\n);\nconst CommentSection = defineAsyncComponent(\n () => import(\"../display/comments/CommentSection.vue\"),\n);\nconst VideoModuleBox = defineAsyncComponent(\n () => import(\"../display/podcasts/VideoModuleBox.vue\"),\n);\nconst CountdownOctopus = defineAsyncComponent(\n () => import(\"../display/live/CountdownOctopus.vue\"),\n);\n\n//Props \nconst props = defineProps({\n podcastId:{ default: 0, type: Number },\n})\n\n//Data \nconst loaded = ref(false);\nconst podcast: Ref<Podcast | undefined> = ref(undefined);\nconst error = ref(false);\nconst activeTab = ref(0);\nconst configPodcast: Ref<CommentsConfig | undefined> = ref(undefined);\nconst podcastConference: Ref<Conference | undefined> = ref(undefined);\nconst intervalStatusConference: Ref<ReturnType<typeof setTimeout> | undefined> = ref(undefined);\n\n//Composables\nconst { \n isLiveReadyToRecord,\n isCounter,\n timeRemaining,\n date,\n duration,\n durationIso,\n editRight\n} = usePodcastView(podcast, podcastConference);\nconst {handle403} = useErrorHandler();\nconst { updatePathParams } = useSeoTitleUrl();\nconst authStore = useAuthStore();\nconst apiStore = useApiStore();\nconst generalStore = useGeneralStore();\nconst playerStore = usePlayerStore();\nconst filterStore = useFilterStore();\nconst commentStore = useCommentStore();\nconst {t} = useI18n();\nconst route = useRoute();\n\n//Computed\nconst videoId = computed(() => podcast.value?.video?.videoId);\nconst canPostComment = computed(() => {\n return commentStore.getCanPostComment(\n configPodcast.value,\n podcast.value,\n undefined !== authStore.authOrgaId,\n );\n});\nconst tabs = computed(() => {\n if (canPostComment.value) {\n return [t(\"Information\"), t(\"Comments\")];\n }\n return [];\n});\nconst recordingLive = computed(() => {\n return (\n undefined !== podcastConference.value &&\n -1 !== podcastConference.value.conferenceId &&\n (\"RECORDING\" === podcastConference.value.status ||\n \"PENDING\" === podcastConference.value.status)\n );\n});\nconst hlsVideoUrl = computed(() => {\n if (!recordingLive.value || !podcastConference.value) {\n return \"\";\n }\n return `${apiStore.hlsUrl}live/video_${podcastConference.value.hlsIdentifier}/index.m3u8`;\n});\nconst isSecured = computed(() => {\n return \"SECURED\" === podcast.value?.organisation?.privacy;\n});\nconst overrideText = computed(() => {\n if (\"PUBLISHING\" !== podcastConference.value?.status) {\n return;\n }\n return t(\"In the process of being published\");\n});\n\n//Watch\nwatch(()=>props.podcastId, async () => {\n await getPodcastDetails();\n if (!podcast.value) {\n return;\n }\n commentStore.initCommentUser();\n configPodcast.value = await commentStore.getCommentsConfig(podcast.value);\n}, {immediate: true});\n\n\nonBeforeUnmount(() => {\n clearInterval(intervalStatusConference.value as unknown as number);\n})\n\n//Methods\nasync function getPodcastDetails(): Promise<void> {\n loaded.value = false;\n error.value = false;\n try {\n podcast.value = await classicApi.fetchData<Podcast>({\n api: 0,\n path: \"podcast/\" + props.podcastId,\n });\n document.title = podcast.value.title + \" - \"+generalStore.metaTitle;\n const orga = podcast.value.organisation;\n const privateAccess =\n \"PUBLIC\" !== orga.privacy &&\n filterStore.filterOrgaId !== orga.id &&\n route.query.productor !== orga.id;\n const notValid =\n (!podcast.value.availability.visibility ||\n ![\"READY_TO_RECORD\", \"READY\", \"PROCESSING\"].includes(\n podcast.value.processingStatus ?? \"\",\n ) ||\n !podcast.value.valid) &&\n !editRight.value;\n if (privateAccess || notValid) {\n error.value = true;\n } else {\n updatePathParams(podcast.value.title);\n if (\n podcast.value.conferenceId &&\n \"READY\" !== podcast.value.processingStatus\n ) {\n await fetchConferenceStatus();\n intervalStatusConference.value = setInterval(() => { fetchConferenceStatus(); }, 3000);\n playerStore.playerPlay(\n {\n ...podcast.value,\n ...{ \n conferenceId: podcast.value.conferenceId,\n hlsIdentifier: podcastConference.value?.hlsIdentifier,\n },\n },\n true,\n );\n }\n }\n } catch (errorCatched) {\n handle403(errorCatched as AxiosError);\n error.value = true;\n }\n loaded.value = true;\n}\n\nasync function fetchConferenceStatus() {\n if (!podcast.value?.conferenceId) {\n return;\n }\n const data = await classicApi.fetchData<ConferencePublicInfo>({\n api: 9,\n path: \"conference/info/\" + podcast.value.conferenceId,\n });\n podcastConference.value = {\n ...data,\n ...{\n conferenceId: podcast.value.conferenceId,\n title: \"\",\n },\n };\n if (\"DEBRIEFING\" === data.status) {\n clearInterval(intervalStatusConference.value as unknown as number);\n }\n}\n</script>\n<style lang=\"scss\">\n.octopus-app .video-page-container {\n align-items: stretch;\n flex-grow: 1;\n background: var(--octopus-primary-really-transparent);\n border-radius: var(--octopus-border-radius);\n box-shadow: 0 0 10px 1px var(--octopus-primary-transparent);\n\n .info-video-container {\n display: flex;\n flex-direction: column;\n\n .octopus-tab-pane,\n .video-module-box {\n height: 0;\n overflow-y: auto;\n\n @media (width <= 960px) {\n height: inherit;\n }\n }\n\n .classic-nav-tab-container {\n flex-direction: column;\n }\n }\n\n .module-box.module-box-transparent {\n margin: 0;\n background: transparent;\n border: 0;\n padding: 0;\n }\n\n .w-70-responsive {\n width: 70%;\n aspect-ratio: 16/9;\n }\n\n .w-30-responsive {\n width: 30%;\n }\n\n .w-70-responsive,\n .w-30-responsive {\n display: flex;\n align-items: stretch;\n flex-grow: 1;\n\n @media (width <= 960px) {\n width: 100%;\n padding: 0 !important;\n }\n }\n\n .really-light-secondary-bg {\n background: white;\n }\n}\n</style>\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;EA0HA,MAAM,sBAAsB,2BACpB,OAAO,qCACf;EACA,MAAM,iBAAiB,2BACf,OAAO,gCACf;EACA,MAAM,iBAAiB,2BACf,OAAO,gCACf;EACA,MAAM,iBAAiB,2BACf,OAAO,gCACf;EACA,MAAM,mBAAmB,2BACjB,OAAO,kCACf;EAGA,MAAM,QAAQ;EAKd,MAAM,SAAS,IAAI,KAAK;EACxB,MAAM,UAAoC,IAAI,KAAA,CAAS;EACvD,MAAM,QAAQ,IAAI,KAAK;EACvB,MAAM,YAAY,IAAI,CAAC;EACvB,MAAM,gBAAiD,IAAI,KAAA,CAAS;EACpE,MAAM,oBAAiD,IAAI,KAAA,CAAS;EACpE,MAAM,2BAA2E,IAAI,KAAA,CAAS;EAG9F,MAAM,EACJ,qBACA,WACA,eACA,MACA,UACA,aACA,cACE,eAAe,SAAS,iBAAiB;EAC7C,MAAM,EAAC,cAAa,gBAAgB;EACpC,MAAM,EAAE,qBAAqB,eAAe;EAC5C,MAAM,YAAY,aAAa;EAC/B,MAAM,WAAW,YAAY;EAC7B,MAAM,eAAe,gBAAgB;EACrC,MAAM,cAAc,eAAe;EACnC,MAAM,cAAc,eAAe;EACnC,MAAM,eAAe,gBAAgB;EACrC,MAAM,EAAC,MAAK,QAAQ;EACpB,MAAM,QAAQ,SAAS;EAGvB,MAAM,UAAU,eAAe,QAAQ,OAAO,OAAO,OAAO;EAC5D,MAAM,iBAAiB,eAAe;GACpC,OAAO,aAAa,kBAClB,cAAc,OACd,QAAQ,OACR,KAAA,MAAc,UAAU,UAC1B;EACF,CAAC;EACD,MAAM,OAAO,eAAe;GAC1B,IAAI,eAAe,OACjB,OAAO,CAAC,EAAE,aAAa,GAAG,EAAE,UAAU,CAAC;GAEzC,OAAO,CAAC;EACV,CAAC;EACD,MAAM,gBAAgB,eAAe;GACnC,OACM,KAAA,MAAc,kBAAkB,SAChC,OAAO,kBAAkB,MAAM,iBAC9B,gBAAgB,kBAAkB,MAAM,UACvC,cAAc,kBAAkB,MAAM;EAEhD,CAAC;EACD,MAAM,cAAc,eAAe;GACjC,IAAI,CAAC,cAAc,SAAS,CAAC,kBAAkB,OAC7C,OAAO;GAET,OAAO,GAAG,SAAS,OAAO,aAAa,kBAAkB,MAAM,cAAc;EAC/E,CAAC;EACD,MAAM,YAAY,eAAe;GAC/B,OAAO,cAAc,QAAQ,OAAO,cAAc;EACpD,CAAC;EACD,MAAM,eAAe,eAAe;GAClC,IAAI,iBAAiB,kBAAkB,OAAO,QAC5C;GAEF,OAAO,EAAE,mCAAmC;EAC9C,CAAC;EAGD,YAAU,MAAM,WAAW,YAAY;GACrC,MAAM,kBAAkB;GACxB,IAAI,CAAC,QAAQ,OACX;GAEF,aAAa,gBAAgB;GAC7B,cAAc,QAAQ,MAAM,aAAa,kBAAkB,QAAQ,KAAK;EAC1E,GAAG,EAAC,WAAW,KAAI,CAAC;EAGpB,sBAAsB;GACpB,cAAc,yBAAyB,KAA0B;EACnE,CAAC;EAGD,eAAe,oBAAmC;GAChD,OAAO,QAAQ;GACf,MAAM,QAAQ;GACd,IAAI;IACF,QAAQ,QAAQ,MAAM,mBAAW,UAAmB;KAClD,KAAK;KACL,MAAM,aAAa,MAAM;IAC3B,CAAC;IACD,SAAS,QAAQ,QAAQ,MAAM,QAAQ,QAAM,aAAa;IAC1D,MAAM,OAAO,QAAQ,MAAM;IAC3B,MAAM,gBACJ,aAAa,KAAK,WAClB,YAAY,iBAAiB,KAAK,MAClC,MAAM,MAAM,cAAc,KAAK;IACjC,MAAM,YACH,CAAC,QAAQ,MAAM,aAAa,cAC3B,CAAC;KAAC;KAAmB;KAAS;IAAY,EAAE,SAC1C,QAAQ,MAAM,oBAAoB,EACpC,KACA,CAAC,QAAQ,MAAM,UACjB,CAAC,UAAU;IACb,IAAI,iBAAiB,UACnB,MAAM,QAAQ;SACT;KACL,iBAAiB,QAAQ,MAAM,KAAK;KACpC,IACE,QAAQ,MAAM,gBACd,YAAY,QAAQ,MAAM,kBAC1B;MACA,MAAM,sBAAsB;MAC5B,yBAAyB,QAAQ,kBAAkB;OAAE,sBAAsB;MAAG,GAAG,GAAI;MACrF,YAAY,WACV;OACE,GAAG,QAAQ;OAET,cAAc,QAAQ,MAAM;OAC5B,eAAe,kBAAkB,OAAO;MAE5C,GACA,IACF;KACF;IACF;GACF,SAAS,cAAc;IACrB,UAAU,YAA0B;IACpC,MAAM,QAAQ;GAChB;GACA,OAAO,QAAQ;EACjB;EAEA,eAAe,wBAAwB;GACrC,IAAI,CAAC,QAAQ,OAAO,cAClB;GAEF,MAAM,OAAO,MAAM,mBAAW,UAAgC;IAC5D,KAAK;IACL,MAAM,qBAAqB,QAAQ,MAAM;GAC3C,CAAC;GACD,kBAAkB,QAAQ;IACxB,GAAG;IAED,cAAc,QAAQ,MAAM;IAC5B,OAAO;GAEX;GACA,IAAI,iBAAiB,KAAK,QACxB,cAAc,yBAAyB,KAA0B;EAErE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;mBCvSW,OAAM,WAAU;;;CAcnB,OAAM;;mBAED,OAAM,kBAAiB;;;CAUtB,OAAM;;mBAeP,OAAM,uCAAsC;mBAC1C,OAAM,uCAAsC;;;CAwCrD,OAAM;;;;qBAlFV,mBA8FU,WA9FV,YA8FU;EA7FQ,OAAA,UAAM,CAAK,OAAA,SAAA,UAAA,GAA3B,mBA8EW,UAAA,EAAA,KAAA,EAAA,GAAA,CA7ET,YASc,wBAAA;GARX,IAAE;;yBAA8D,OAAA,UAAS;;GAI1E,OAAM;GACL,OAAO,OAAA,EAAC,qBAAA,EAAA,MAA8B,OAAA,SAAS,MAAK,CAAA;;0BAElC,CAAnB,YAAmB,OAAA,kBAAA,GAAA,gBAAA,gBAAG,OAAA,EAAC,cAAA,CAAA,GAAA,CAAA,CAAA,CAAA;;0BAGjB,OAAA,WAAW,OAAA,uBAAA,UAAA,GADnB,mBAkEM,OAlEN,YAkEM,CA9DJ,mBAwBM,OAxBN,YAwBM,CAvBY,OAAA,uBAAA,UAAA,GAAhB,mBAgBW,UAAA,EAAA,KAAA,EAAA,GAAA,CAdD,OAAA,iBAAA,UAAA,GADR,YAKE,OAAA,mBAAA;;GAHC,WAAS,OAAA;GACT,cAAY,OAAA;GACZ,YAAY;8EAGP,OAAA,aAAa,OAAA,gBAAA,UAAA,GADrB,mBAQM,OARN,YAQM,CAJJ,YAGE,OAAA,qBAAA;GAFC,kBAAgB,OAAA;GAChB,iBAAe,OAAA;gHAItB,YAKE,OAAA,wBAAA;;GAHC,YAAU,OAAA;GACV,cAAY,OAAA;GACb,YAAA;8CAGJ,mBAoCM,OApCN,YAoCM,CAnCJ,mBAkCM,OAlCN,YAkCM,CAhCI,OAAA,KAAK,UAAA,UAAA,GADb,YAwBa,OAAA,eAAA;;GAtBH,cAAY,OAAA;+DAAA,OAAA,YAAS;GAC5B,cAAY,OAAA,KAAK;GACjB,aAAa;;GAKH,MAAI,cAKX,CAJF,YAIE,OAAA,mBAAA;IAHC,SAAS,OAAA;IACT,MAAM,OAAA;IACN,UAAU,OAAA;;;;;;GAGJ,MAAI,cAMH,CALV,mBAKU,WAAA,MAAA,CAJR,YAGE,OAAA,mBAAA;IAFC,SAAS,OAAA;IACV,OAAM;;;iBAdqB,OAAA,OAAf,KAAK,UAAK;;UAAY;sBAC7B,CAAA,gBAAA,gBAAN,GAAG,GAAA,CAAA,CAAA,CAAA;;6DAkBV,YAOE,OAAA,mBAAA;;GALA,OAAM;GACL,SAAS,OAAA;GACT,MAAM,OAAA;GACN,UAAU,OAAA;GACV,gBAAc,OAAA;;;;;;;GAOhB,OAAA,SAAK,CAAK,OAAA,WAAO,CAAK,OAAA,uBAAA,UAAA,GAD/B,mBAKM,OALN,YAKM,gBADD,OAAA,EAAC,+CAAA,CAAA,GAAA,CAAA,KAAA,mBAAA,QAAA,IAAA;EAEN,YAOE,OAAA,mBAAA;GANC,gBAAY,CAAG,OAAA,SAAS,OAAA,EAAC,qBAAA,IAA0B,KAAA;GACnD,cAAqB,OAAA,QAAkB,OAAA,EAAC,iDAAA,IAAgE,KAAA"}
|
|
@@ -1,13 +1,13 @@
|
|
|
1
1
|
import { t as _plugin_vue_export_helper_default } from "./_plugin-vue_export-helper-BOaGB7Aw.mjs";
|
|
2
2
|
import { t as ClassicLoading_default } from "./ClassicLoading-Crlw7cAx.mjs";
|
|
3
|
-
import { O as useApiStore, i as useAuthStore, r as useFilterStore, t as classicApi_default } from "./classicApi-
|
|
4
|
-
import { n as usePlayerStore } from "./PlayerStore-
|
|
3
|
+
import { O as useApiStore, i as useAuthStore, r as useFilterStore, t as classicApi_default } from "./classicApi-xjOqAovv.mjs";
|
|
4
|
+
import { n as usePlayerStore } from "./PlayerStore-vYmnOEA_.mjs";
|
|
5
5
|
import { t as useGeneralStore } from "./GeneralStore-CUlq_NjO.mjs";
|
|
6
|
-
import { t as useErrorHandler } from "./useErrorHandler-
|
|
6
|
+
import { t as useErrorHandler } from "./useErrorHandler-D3XVxUh6.mjs";
|
|
7
7
|
import { t as useSeoTitleUrl } from "./useSeoTitleUrl-CrM1YzAc.mjs";
|
|
8
|
-
import { t as useCommentStore } from "./CommentStore-
|
|
8
|
+
import { t as useCommentStore } from "./CommentStore-ClU882RI.mjs";
|
|
9
9
|
import { t as ClassicNav_default } from "./ClassicNav-Dvm8faD9.mjs";
|
|
10
|
-
import { t as usePodcastView } from "./usePodcastView-
|
|
10
|
+
import { t as usePodcastView } from "./usePodcastView-BDZ6CGQj.mjs";
|
|
11
11
|
import { Fragment, computed, createBlock, createCommentVNode, createElementBlock, createElementVNode, createSlots, createTextVNode, createVNode, defineAsyncComponent, defineComponent, onBeforeUnmount, openBlock, ref, renderList, resolveComponent, toDisplayString, watch, withCtx } from "vue";
|
|
12
12
|
import { useI18n } from "vue-i18n";
|
|
13
13
|
import { useRoute } from "vue-router";
|
|
@@ -21,10 +21,10 @@ var VideoPage_vue_vue_type_script_setup_true_lang_default = /*@__PURE__*/ define
|
|
|
21
21
|
} },
|
|
22
22
|
setup(__props, { expose: __expose }) {
|
|
23
23
|
__expose();
|
|
24
|
-
const PlayerVideoDigiteka = defineAsyncComponent(() => import("./PlayerVideoDigiteka-
|
|
25
|
-
const PlayerVideoHls = defineAsyncComponent(() => import("./PlayerVideoHls-
|
|
26
|
-
const CommentSection = defineAsyncComponent(() => import("./CommentSection-
|
|
27
|
-
const VideoModuleBox = defineAsyncComponent(() => import("./VideoModuleBox-
|
|
24
|
+
const PlayerVideoDigiteka = defineAsyncComponent(() => import("./PlayerVideoDigiteka-C7xb0ndg.mjs"));
|
|
25
|
+
const PlayerVideoHls = defineAsyncComponent(() => import("./PlayerVideoHls-xSNqzBEw.mjs"));
|
|
26
|
+
const CommentSection = defineAsyncComponent(() => import("./CommentSection-B91sHMDT.mjs"));
|
|
27
|
+
const VideoModuleBox = defineAsyncComponent(() => import("./VideoModuleBox-CFQmvPrA.mjs"));
|
|
28
28
|
const CountdownOctopus = defineAsyncComponent(() => import("./CountdownOctopus-i6-l0aLA.mjs"));
|
|
29
29
|
const props = __props;
|
|
30
30
|
const loaded = ref(false);
|
|
@@ -271,4 +271,4 @@ var VideoPage_default = /*#__PURE__*/ _plugin_vue_export_helper_default(VideoPag
|
|
|
271
271
|
//#endregion
|
|
272
272
|
export { VideoPage_default as default };
|
|
273
273
|
|
|
274
|
-
//# sourceMappingURL=VideoPage-
|
|
274
|
+
//# sourceMappingURL=VideoPage-DU9dJviO.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"VideoPage-DU9dJviO.mjs","names":[],"sources":["../src/components/pages/VideoPage.vue","../src/components/pages/VideoPage.vue"],"sourcesContent":["<template>\n <section class=\"page-box\">\n <template v-if=\"loaded && !error\">\n <router-link\n :to=\"{\n name: 'podcast',\n params: { podcastId: podcastId },\n }\"\n class=\"mt-3 mb-3 w-fit-content d-flex align-items-center\"\n :title=\"t('Episode name page', { name: podcast?.title })\"\n >\n <ChevronLeftIcon />{{ t(\"Episode page\") }}\n </router-link>\n <div\n v-if=\"videoId || isLiveReadyToRecord\"\n class=\"d-flex video-page-container\"\n >\n <div class=\"w-70-responsive\">\n <template v-if=\"isLiveReadyToRecord\">\n <PlayerVideoHls\n v-if=\"recordingLive\"\n :hls-url=\"hlsVideoUrl\"\n :is-secured=\"isSecured\"\n :responsive=\"true\"\n />\n <div\n v-if=\"isCounter || overrideText\"\n class=\"d-flex flex-column align-items-center flex-grow-1 blue-bg p-3\"\n >\n <CountdownOctopus\n :time-remaining=\"timeRemaining\"\n :override-text=\"overrideText\"\n />\n </div>\n </template>\n <PlayerVideoDigiteka\n v-else\n :video-id=\"videoId\"\n :podcast-id=\"podcastId\"\n responsive\n />\n </div>\n <div class=\"w-30-responsive info-video-container\">\n <div class=\"d-flex flex-column flex-grow-1 w-100\">\n <ClassicNav\n v-if=\"tabs.length\"\n v-model:active-tab=\"activeTab\"\n :tab-number=\"tabs.length\"\n :transparent=\"true\"\n >\n <template v-for=\"(tab, index) in tabs\" #[index]>\n {{ tab }}\n </template>\n <template #tab0>\n <VideoModuleBox\n :podcast=\"podcast\"\n :date=\"date\"\n :duration=\"duration\"\n />\n </template>\n <template #tab1>\n <section>\n <CommentSection\n :podcast=\"podcast\"\n class=\"module-box-transparent\"\n />\n </section>\n </template>\n </ClassicNav>\n <VideoModuleBox\n v-else\n class=\"p-2 video-module-box\"\n :podcast=\"podcast\"\n :date=\"date\"\n :duration=\"duration\"\n :duration-iso=\"durationIso\"\n />\n </div>\n </div>\n </div>\n </template>\n <div\n v-if=\"!error && !videoId && !isLiveReadyToRecord\"\n class=\"text-center text-danger h3\"\n >\n {{ t(\"The episode does not have an associated video\") }}\n </div>\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 ChevronLeftIcon from \"vue-material-design-icons/ChevronLeft.vue\";\nimport ClassicLoading from \"../form/ClassicLoading.vue\";\nimport classicApi from \"../../api/classicApi\";\nimport { Podcast } from \"@/stores/class/general/podcast\";\nimport ClassicNav from \"../misc/ClassicNav.vue\";\nimport {useSeoTitleUrl} from \"../composable/route/useSeoTitleUrl\";\nimport {usePodcastView} from \"../composable/podcasts/usePodcastView\";\nimport { computed, defineAsyncComponent, onBeforeUnmount, Ref, ref, watch } from \"vue\";\nimport { AxiosError } from \"axios\";\nimport { useFilterStore } from \"../../stores/FilterStore\";\nimport { useAuthStore } from \"../../stores/AuthStore\";\nimport { useCommentStore } from \"../../stores/CommentStore\";\nimport { useApiStore } from \"../../stores/ApiStore\";\nimport { CommentsConfig } from \"@/stores/class/config/commentsConfig\";\nimport {\n Conference,\n ConferencePublicInfo,\n} from \"@/stores/class/conference/conference\";\nimport { usePlayerStore } from \"../../stores/PlayerStore\";\nimport { useGeneralStore } from \"../../stores/GeneralStore\";\nimport { useI18n } from \"vue-i18n\";\nimport { useRoute } from \"vue-router\";\nimport { useErrorHandler } from \"../composable/useErrorHandler\";\nconst PlayerVideoDigiteka = defineAsyncComponent(\n () => import(\"../misc/player/video/PlayerVideoDigiteka.vue\"),\n);\nconst PlayerVideoHls = defineAsyncComponent(\n () => import(\"../misc/player/video/PlayerVideoHls.vue\"),\n);\nconst CommentSection = defineAsyncComponent(\n () => import(\"../display/comments/CommentSection.vue\"),\n);\nconst VideoModuleBox = defineAsyncComponent(\n () => import(\"../display/podcasts/VideoModuleBox.vue\"),\n);\nconst CountdownOctopus = defineAsyncComponent(\n () => import(\"../display/live/CountdownOctopus.vue\"),\n);\n\n//Props \nconst props = defineProps({\n podcastId:{ default: 0, type: Number },\n})\n\n//Data \nconst loaded = ref(false);\nconst podcast: Ref<Podcast | undefined> = ref(undefined);\nconst error = ref(false);\nconst activeTab = ref(0);\nconst configPodcast: Ref<CommentsConfig | undefined> = ref(undefined);\nconst podcastConference: Ref<Conference | undefined> = ref(undefined);\nconst intervalStatusConference: Ref<ReturnType<typeof setTimeout> | undefined> = ref(undefined);\n\n//Composables\nconst { \n isLiveReadyToRecord,\n isCounter,\n timeRemaining,\n date,\n duration,\n durationIso,\n editRight\n} = usePodcastView(podcast, podcastConference);\nconst {handle403} = useErrorHandler();\nconst { updatePathParams } = useSeoTitleUrl();\nconst authStore = useAuthStore();\nconst apiStore = useApiStore();\nconst generalStore = useGeneralStore();\nconst playerStore = usePlayerStore();\nconst filterStore = useFilterStore();\nconst commentStore = useCommentStore();\nconst {t} = useI18n();\nconst route = useRoute();\n\n//Computed\nconst videoId = computed(() => podcast.value?.video?.videoId);\nconst canPostComment = computed(() => {\n return commentStore.getCanPostComment(\n configPodcast.value,\n podcast.value,\n undefined !== authStore.authOrgaId,\n );\n});\nconst tabs = computed(() => {\n if (canPostComment.value) {\n return [t(\"Information\"), t(\"Comments\")];\n }\n return [];\n});\nconst recordingLive = computed(() => {\n return (\n undefined !== podcastConference.value &&\n -1 !== podcastConference.value.conferenceId &&\n (\"RECORDING\" === podcastConference.value.status ||\n \"PENDING\" === podcastConference.value.status)\n );\n});\nconst hlsVideoUrl = computed(() => {\n if (!recordingLive.value || !podcastConference.value) {\n return \"\";\n }\n return `${apiStore.hlsUrl}live/video_${podcastConference.value.hlsIdentifier}/index.m3u8`;\n});\nconst isSecured = computed(() => {\n return \"SECURED\" === podcast.value?.organisation?.privacy;\n});\nconst overrideText = computed(() => {\n if (\"PUBLISHING\" !== podcastConference.value?.status) {\n return;\n }\n return t(\"In the process of being published\");\n});\n\n//Watch\nwatch(()=>props.podcastId, async () => {\n await getPodcastDetails();\n if (!podcast.value) {\n return;\n }\n commentStore.initCommentUser();\n configPodcast.value = await commentStore.getCommentsConfig(podcast.value);\n}, {immediate: true});\n\n\nonBeforeUnmount(() => {\n clearInterval(intervalStatusConference.value as unknown as number);\n})\n\n//Methods\nasync function getPodcastDetails(): Promise<void> {\n loaded.value = false;\n error.value = false;\n try {\n podcast.value = await classicApi.fetchData<Podcast>({\n api: 0,\n path: \"podcast/\" + props.podcastId,\n });\n document.title = podcast.value.title + \" - \"+generalStore.metaTitle;\n const orga = podcast.value.organisation;\n const privateAccess =\n \"PUBLIC\" !== orga.privacy &&\n filterStore.filterOrgaId !== orga.id &&\n route.query.productor !== orga.id;\n const notValid =\n (!podcast.value.availability.visibility ||\n ![\"READY_TO_RECORD\", \"READY\", \"PROCESSING\"].includes(\n podcast.value.processingStatus ?? \"\",\n ) ||\n !podcast.value.valid) &&\n !editRight.value;\n if (privateAccess || notValid) {\n error.value = true;\n } else {\n updatePathParams(podcast.value.title);\n if (\n podcast.value.conferenceId &&\n \"READY\" !== podcast.value.processingStatus\n ) {\n await fetchConferenceStatus();\n intervalStatusConference.value = setInterval(() => { fetchConferenceStatus(); }, 3000);\n playerStore.playerPlay(\n {\n ...podcast.value,\n ...{ \n conferenceId: podcast.value.conferenceId,\n hlsIdentifier: podcastConference.value?.hlsIdentifier,\n },\n },\n true,\n );\n }\n }\n } catch (errorCatched) {\n handle403(errorCatched as AxiosError);\n error.value = true;\n }\n loaded.value = true;\n}\n\nasync function fetchConferenceStatus() {\n if (!podcast.value?.conferenceId) {\n return;\n }\n const data = await classicApi.fetchData<ConferencePublicInfo>({\n api: 9,\n path: \"conference/info/\" + podcast.value.conferenceId,\n });\n podcastConference.value = {\n ...data,\n ...{\n conferenceId: podcast.value.conferenceId,\n title: \"\",\n },\n };\n if (\"DEBRIEFING\" === data.status) {\n clearInterval(intervalStatusConference.value as unknown as number);\n }\n}\n</script>\n<style lang=\"scss\">\n.octopus-app .video-page-container {\n align-items: stretch;\n flex-grow: 1;\n background: var(--octopus-primary-really-transparent);\n border-radius: var(--octopus-border-radius);\n box-shadow: 0 0 10px 1px var(--octopus-primary-transparent);\n\n .info-video-container {\n display: flex;\n flex-direction: column;\n\n .octopus-tab-pane,\n .video-module-box {\n height: 0;\n overflow-y: auto;\n\n @media (width <= 960px) {\n height: inherit;\n }\n }\n\n .classic-nav-tab-container {\n flex-direction: column;\n }\n }\n\n .module-box.module-box-transparent {\n margin: 0;\n background: transparent;\n border: 0;\n padding: 0;\n }\n\n .w-70-responsive {\n width: 70%;\n aspect-ratio: 16/9;\n }\n\n .w-30-responsive {\n width: 30%;\n }\n\n .w-70-responsive,\n .w-30-responsive {\n display: flex;\n align-items: stretch;\n flex-grow: 1;\n\n @media (width <= 960px) {\n width: 100%;\n padding: 0 !important;\n }\n }\n\n .really-light-secondary-bg {\n background: white;\n }\n}\n</style>\n","<template>\n <section class=\"page-box\">\n <template v-if=\"loaded && !error\">\n <router-link\n :to=\"{\n name: 'podcast',\n params: { podcastId: podcastId },\n }\"\n class=\"mt-3 mb-3 w-fit-content d-flex align-items-center\"\n :title=\"t('Episode name page', { name: podcast?.title })\"\n >\n <ChevronLeftIcon />{{ t(\"Episode page\") }}\n </router-link>\n <div\n v-if=\"videoId || isLiveReadyToRecord\"\n class=\"d-flex video-page-container\"\n >\n <div class=\"w-70-responsive\">\n <template v-if=\"isLiveReadyToRecord\">\n <PlayerVideoHls\n v-if=\"recordingLive\"\n :hls-url=\"hlsVideoUrl\"\n :is-secured=\"isSecured\"\n :responsive=\"true\"\n />\n <div\n v-if=\"isCounter || overrideText\"\n class=\"d-flex flex-column align-items-center flex-grow-1 blue-bg p-3\"\n >\n <CountdownOctopus\n :time-remaining=\"timeRemaining\"\n :override-text=\"overrideText\"\n />\n </div>\n </template>\n <PlayerVideoDigiteka\n v-else\n :video-id=\"videoId\"\n :podcast-id=\"podcastId\"\n responsive\n />\n </div>\n <div class=\"w-30-responsive info-video-container\">\n <div class=\"d-flex flex-column flex-grow-1 w-100\">\n <ClassicNav\n v-if=\"tabs.length\"\n v-model:active-tab=\"activeTab\"\n :tab-number=\"tabs.length\"\n :transparent=\"true\"\n >\n <template v-for=\"(tab, index) in tabs\" #[index]>\n {{ tab }}\n </template>\n <template #tab0>\n <VideoModuleBox\n :podcast=\"podcast\"\n :date=\"date\"\n :duration=\"duration\"\n />\n </template>\n <template #tab1>\n <section>\n <CommentSection\n :podcast=\"podcast\"\n class=\"module-box-transparent\"\n />\n </section>\n </template>\n </ClassicNav>\n <VideoModuleBox\n v-else\n class=\"p-2 video-module-box\"\n :podcast=\"podcast\"\n :date=\"date\"\n :duration=\"duration\"\n :duration-iso=\"durationIso\"\n />\n </div>\n </div>\n </div>\n </template>\n <div\n v-if=\"!error && !videoId && !isLiveReadyToRecord\"\n class=\"text-center text-danger h3\"\n >\n {{ t(\"The episode does not have an associated video\") }}\n </div>\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 ChevronLeftIcon from \"vue-material-design-icons/ChevronLeft.vue\";\nimport ClassicLoading from \"../form/ClassicLoading.vue\";\nimport classicApi from \"../../api/classicApi\";\nimport { Podcast } from \"@/stores/class/general/podcast\";\nimport ClassicNav from \"../misc/ClassicNav.vue\";\nimport {useSeoTitleUrl} from \"../composable/route/useSeoTitleUrl\";\nimport {usePodcastView} from \"../composable/podcasts/usePodcastView\";\nimport { computed, defineAsyncComponent, onBeforeUnmount, Ref, ref, watch } from \"vue\";\nimport { AxiosError } from \"axios\";\nimport { useFilterStore } from \"../../stores/FilterStore\";\nimport { useAuthStore } from \"../../stores/AuthStore\";\nimport { useCommentStore } from \"../../stores/CommentStore\";\nimport { useApiStore } from \"../../stores/ApiStore\";\nimport { CommentsConfig } from \"@/stores/class/config/commentsConfig\";\nimport {\n Conference,\n ConferencePublicInfo,\n} from \"@/stores/class/conference/conference\";\nimport { usePlayerStore } from \"../../stores/PlayerStore\";\nimport { useGeneralStore } from \"../../stores/GeneralStore\";\nimport { useI18n } from \"vue-i18n\";\nimport { useRoute } from \"vue-router\";\nimport { useErrorHandler } from \"../composable/useErrorHandler\";\nconst PlayerVideoDigiteka = defineAsyncComponent(\n () => import(\"../misc/player/video/PlayerVideoDigiteka.vue\"),\n);\nconst PlayerVideoHls = defineAsyncComponent(\n () => import(\"../misc/player/video/PlayerVideoHls.vue\"),\n);\nconst CommentSection = defineAsyncComponent(\n () => import(\"../display/comments/CommentSection.vue\"),\n);\nconst VideoModuleBox = defineAsyncComponent(\n () => import(\"../display/podcasts/VideoModuleBox.vue\"),\n);\nconst CountdownOctopus = defineAsyncComponent(\n () => import(\"../display/live/CountdownOctopus.vue\"),\n);\n\n//Props \nconst props = defineProps({\n podcastId:{ default: 0, type: Number },\n})\n\n//Data \nconst loaded = ref(false);\nconst podcast: Ref<Podcast | undefined> = ref(undefined);\nconst error = ref(false);\nconst activeTab = ref(0);\nconst configPodcast: Ref<CommentsConfig | undefined> = ref(undefined);\nconst podcastConference: Ref<Conference | undefined> = ref(undefined);\nconst intervalStatusConference: Ref<ReturnType<typeof setTimeout> | undefined> = ref(undefined);\n\n//Composables\nconst { \n isLiveReadyToRecord,\n isCounter,\n timeRemaining,\n date,\n duration,\n durationIso,\n editRight\n} = usePodcastView(podcast, podcastConference);\nconst {handle403} = useErrorHandler();\nconst { updatePathParams } = useSeoTitleUrl();\nconst authStore = useAuthStore();\nconst apiStore = useApiStore();\nconst generalStore = useGeneralStore();\nconst playerStore = usePlayerStore();\nconst filterStore = useFilterStore();\nconst commentStore = useCommentStore();\nconst {t} = useI18n();\nconst route = useRoute();\n\n//Computed\nconst videoId = computed(() => podcast.value?.video?.videoId);\nconst canPostComment = computed(() => {\n return commentStore.getCanPostComment(\n configPodcast.value,\n podcast.value,\n undefined !== authStore.authOrgaId,\n );\n});\nconst tabs = computed(() => {\n if (canPostComment.value) {\n return [t(\"Information\"), t(\"Comments\")];\n }\n return [];\n});\nconst recordingLive = computed(() => {\n return (\n undefined !== podcastConference.value &&\n -1 !== podcastConference.value.conferenceId &&\n (\"RECORDING\" === podcastConference.value.status ||\n \"PENDING\" === podcastConference.value.status)\n );\n});\nconst hlsVideoUrl = computed(() => {\n if (!recordingLive.value || !podcastConference.value) {\n return \"\";\n }\n return `${apiStore.hlsUrl}live/video_${podcastConference.value.hlsIdentifier}/index.m3u8`;\n});\nconst isSecured = computed(() => {\n return \"SECURED\" === podcast.value?.organisation?.privacy;\n});\nconst overrideText = computed(() => {\n if (\"PUBLISHING\" !== podcastConference.value?.status) {\n return;\n }\n return t(\"In the process of being published\");\n});\n\n//Watch\nwatch(()=>props.podcastId, async () => {\n await getPodcastDetails();\n if (!podcast.value) {\n return;\n }\n commentStore.initCommentUser();\n configPodcast.value = await commentStore.getCommentsConfig(podcast.value);\n}, {immediate: true});\n\n\nonBeforeUnmount(() => {\n clearInterval(intervalStatusConference.value as unknown as number);\n})\n\n//Methods\nasync function getPodcastDetails(): Promise<void> {\n loaded.value = false;\n error.value = false;\n try {\n podcast.value = await classicApi.fetchData<Podcast>({\n api: 0,\n path: \"podcast/\" + props.podcastId,\n });\n document.title = podcast.value.title + \" - \"+generalStore.metaTitle;\n const orga = podcast.value.organisation;\n const privateAccess =\n \"PUBLIC\" !== orga.privacy &&\n filterStore.filterOrgaId !== orga.id &&\n route.query.productor !== orga.id;\n const notValid =\n (!podcast.value.availability.visibility ||\n ![\"READY_TO_RECORD\", \"READY\", \"PROCESSING\"].includes(\n podcast.value.processingStatus ?? \"\",\n ) ||\n !podcast.value.valid) &&\n !editRight.value;\n if (privateAccess || notValid) {\n error.value = true;\n } else {\n updatePathParams(podcast.value.title);\n if (\n podcast.value.conferenceId &&\n \"READY\" !== podcast.value.processingStatus\n ) {\n await fetchConferenceStatus();\n intervalStatusConference.value = setInterval(() => { fetchConferenceStatus(); }, 3000);\n playerStore.playerPlay(\n {\n ...podcast.value,\n ...{ \n conferenceId: podcast.value.conferenceId,\n hlsIdentifier: podcastConference.value?.hlsIdentifier,\n },\n },\n true,\n );\n }\n }\n } catch (errorCatched) {\n handle403(errorCatched as AxiosError);\n error.value = true;\n }\n loaded.value = true;\n}\n\nasync function fetchConferenceStatus() {\n if (!podcast.value?.conferenceId) {\n return;\n }\n const data = await classicApi.fetchData<ConferencePublicInfo>({\n api: 9,\n path: \"conference/info/\" + podcast.value.conferenceId,\n });\n podcastConference.value = {\n ...data,\n ...{\n conferenceId: podcast.value.conferenceId,\n title: \"\",\n },\n };\n if (\"DEBRIEFING\" === data.status) {\n clearInterval(intervalStatusConference.value as unknown as number);\n }\n}\n</script>\n<style lang=\"scss\">\n.octopus-app .video-page-container {\n align-items: stretch;\n flex-grow: 1;\n background: var(--octopus-primary-really-transparent);\n border-radius: var(--octopus-border-radius);\n box-shadow: 0 0 10px 1px var(--octopus-primary-transparent);\n\n .info-video-container {\n display: flex;\n flex-direction: column;\n\n .octopus-tab-pane,\n .video-module-box {\n height: 0;\n overflow-y: auto;\n\n @media (width <= 960px) {\n height: inherit;\n }\n }\n\n .classic-nav-tab-container {\n flex-direction: column;\n }\n }\n\n .module-box.module-box-transparent {\n margin: 0;\n background: transparent;\n border: 0;\n padding: 0;\n }\n\n .w-70-responsive {\n width: 70%;\n aspect-ratio: 16/9;\n }\n\n .w-30-responsive {\n width: 30%;\n }\n\n .w-70-responsive,\n .w-30-responsive {\n display: flex;\n align-items: stretch;\n flex-grow: 1;\n\n @media (width <= 960px) {\n width: 100%;\n padding: 0 !important;\n }\n }\n\n .really-light-secondary-bg {\n background: white;\n }\n}\n</style>\n"],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"VideoPage-OIb28KAS.mjs","names":[],"sources":["../src/components/pages/VideoPage.vue","../src/components/pages/VideoPage.vue"],"sourcesContent":["<template>\n <section class=\"page-box\">\n <template v-if=\"loaded && !error\">\n <router-link\n :to=\"{\n name: 'podcast',\n params: { podcastId: podcastId },\n }\"\n class=\"mt-3 mb-3 w-fit-content d-flex align-items-center\"\n :title=\"t('Episode name page', { name: podcast?.title })\"\n >\n <ChevronLeftIcon />{{ t(\"Episode page\") }}\n </router-link>\n <div\n v-if=\"videoId || isLiveReadyToRecord\"\n class=\"d-flex video-page-container\"\n >\n <div class=\"w-70-responsive\">\n <template v-if=\"isLiveReadyToRecord\">\n <PlayerVideoHls\n v-if=\"recordingLive\"\n :hls-url=\"hlsVideoUrl\"\n :is-secured=\"isSecured\"\n :responsive=\"true\"\n />\n <div\n v-if=\"isCounter || overrideText\"\n class=\"d-flex flex-column align-items-center flex-grow-1 blue-bg p-3\"\n >\n <CountdownOctopus\n :time-remaining=\"timeRemaining\"\n :override-text=\"overrideText\"\n />\n </div>\n </template>\n <PlayerVideoDigiteka\n v-else\n :video-id=\"videoId\"\n :podcast-id=\"podcastId\"\n responsive\n />\n </div>\n <div class=\"w-30-responsive info-video-container\">\n <div class=\"d-flex flex-column flex-grow-1 w-100\">\n <ClassicNav\n v-if=\"tabs.length\"\n v-model:active-tab=\"activeTab\"\n :tab-number=\"tabs.length\"\n :transparent=\"true\"\n >\n <template v-for=\"(tab, index) in tabs\" #[index]>\n {{ tab }}\n </template>\n <template #tab0>\n <VideoModuleBox\n :podcast=\"podcast\"\n :date=\"date\"\n :duration=\"duration\"\n />\n </template>\n <template #tab1>\n <section>\n <CommentSection\n :podcast=\"podcast\"\n class=\"module-box-transparent\"\n />\n </section>\n </template>\n </ClassicNav>\n <VideoModuleBox\n v-else\n class=\"p-2 video-module-box\"\n :podcast=\"podcast\"\n :date=\"date\"\n :duration=\"duration\"\n :duration-iso=\"durationIso\"\n />\n </div>\n </div>\n </div>\n </template>\n <div\n v-if=\"!error && !videoId && !isLiveReadyToRecord\"\n class=\"text-center text-danger h3\"\n >\n {{ t(\"The episode does not have an associated video\") }}\n </div>\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 ChevronLeftIcon from \"vue-material-design-icons/ChevronLeft.vue\";\nimport ClassicLoading from \"../form/ClassicLoading.vue\";\nimport classicApi from \"../../api/classicApi\";\nimport { Podcast } from \"@/stores/class/general/podcast\";\nimport ClassicNav from \"../misc/ClassicNav.vue\";\nimport {useSeoTitleUrl} from \"../composable/route/useSeoTitleUrl\";\nimport {usePodcastView} from \"../composable/podcasts/usePodcastView\";\nimport { computed, defineAsyncComponent, onBeforeUnmount, Ref, ref, watch } from \"vue\";\nimport { AxiosError } from \"axios\";\nimport { useFilterStore } from \"../../stores/FilterStore\";\nimport { useAuthStore } from \"../../stores/AuthStore\";\nimport { useCommentStore } from \"../../stores/CommentStore\";\nimport { useApiStore } from \"../../stores/ApiStore\";\nimport { CommentsConfig } from \"@/stores/class/config/commentsConfig\";\nimport {\n Conference,\n ConferencePublicInfo,\n} from \"@/stores/class/conference/conference\";\nimport { usePlayerStore } from \"../../stores/PlayerStore\";\nimport { useGeneralStore } from \"../../stores/GeneralStore\";\nimport { useI18n } from \"vue-i18n\";\nimport { useRoute } from \"vue-router\";\nimport { useErrorHandler } from \"../composable/useErrorHandler\";\nconst PlayerVideoDigiteka = defineAsyncComponent(\n () => import(\"../misc/player/video/PlayerVideoDigiteka.vue\"),\n);\nconst PlayerVideoHls = defineAsyncComponent(\n () => import(\"../misc/player/video/PlayerVideoHls.vue\"),\n);\nconst CommentSection = defineAsyncComponent(\n () => import(\"../display/comments/CommentSection.vue\"),\n);\nconst VideoModuleBox = defineAsyncComponent(\n () => import(\"../display/podcasts/VideoModuleBox.vue\"),\n);\nconst CountdownOctopus = defineAsyncComponent(\n () => import(\"../display/live/CountdownOctopus.vue\"),\n);\n\n//Props \nconst props = defineProps({\n podcastId:{ default: 0, type: Number },\n})\n\n//Data \nconst loaded = ref(false);\nconst podcast: Ref<Podcast | undefined> = ref(undefined);\nconst error = ref(false);\nconst activeTab = ref(0);\nconst configPodcast: Ref<CommentsConfig | undefined> = ref(undefined);\nconst podcastConference: Ref<Conference | undefined> = ref(undefined);\nconst intervalStatusConference: Ref<ReturnType<typeof setTimeout> | undefined> = ref(undefined);\n\n//Composables\nconst { \n isLiveReadyToRecord,\n isCounter,\n timeRemaining,\n date,\n duration,\n durationIso,\n editRight\n} = usePodcastView(podcast, podcastConference);\nconst {handle403} = useErrorHandler();\nconst { updatePathParams } = useSeoTitleUrl();\nconst authStore = useAuthStore();\nconst apiStore = useApiStore();\nconst generalStore = useGeneralStore();\nconst playerStore = usePlayerStore();\nconst filterStore = useFilterStore();\nconst commentStore = useCommentStore();\nconst {t} = useI18n();\nconst route = useRoute();\n\n//Computed\nconst videoId = computed(() => podcast.value?.video?.videoId);\nconst canPostComment = computed(() => {\n return commentStore.getCanPostComment(\n configPodcast.value,\n podcast.value,\n undefined !== authStore.authOrgaId,\n );\n});\nconst tabs = computed(() => {\n if (canPostComment.value) {\n return [t(\"Information\"), t(\"Comments\")];\n }\n return [];\n});\nconst recordingLive = computed(() => {\n return (\n undefined !== podcastConference.value &&\n -1 !== podcastConference.value.conferenceId &&\n (\"RECORDING\" === podcastConference.value.status ||\n \"PENDING\" === podcastConference.value.status)\n );\n});\nconst hlsVideoUrl = computed(() => {\n if (!recordingLive.value || !podcastConference.value) {\n return \"\";\n }\n return `${apiStore.hlsUrl}live/video_${podcastConference.value.hlsIdentifier}/index.m3u8`;\n});\nconst isSecured = computed(() => {\n return \"SECURED\" === podcast.value?.organisation?.privacy;\n});\nconst overrideText = computed(() => {\n if (\"PUBLISHING\" !== podcastConference.value?.status) {\n return;\n }\n return t(\"In the process of being published\");\n});\n\n//Watch\nwatch(()=>props.podcastId, async () => {\n await getPodcastDetails();\n if (!podcast.value) {\n return;\n }\n commentStore.initCommentUser();\n configPodcast.value = await commentStore.getCommentsConfig(podcast.value);\n}, {immediate: true});\n\n\nonBeforeUnmount(() => {\n clearInterval(intervalStatusConference.value as unknown as number);\n})\n\n//Methods\nasync function getPodcastDetails(): Promise<void> {\n loaded.value = false;\n error.value = false;\n try {\n podcast.value = await classicApi.fetchData<Podcast>({\n api: 0,\n path: \"podcast/\" + props.podcastId,\n });\n document.title = podcast.value.title + \" - \"+generalStore.metaTitle;\n const orga = podcast.value.organisation;\n const privateAccess =\n \"PUBLIC\" !== orga.privacy &&\n filterStore.filterOrgaId !== orga.id &&\n route.query.productor !== orga.id;\n const notValid =\n (!podcast.value.availability.visibility ||\n ![\"READY_TO_RECORD\", \"READY\", \"PROCESSING\"].includes(\n podcast.value.processingStatus ?? \"\",\n ) ||\n !podcast.value.valid) &&\n !editRight.value;\n if (privateAccess || notValid) {\n error.value = true;\n } else {\n updatePathParams(podcast.value.title);\n if (\n podcast.value.conferenceId &&\n \"READY\" !== podcast.value.processingStatus\n ) {\n await fetchConferenceStatus();\n intervalStatusConference.value = setInterval(() => { fetchConferenceStatus(); }, 3000);\n playerStore.playerPlay(\n {\n ...podcast.value,\n ...{ \n conferenceId: podcast.value.conferenceId,\n hlsIdentifier: podcastConference.value?.hlsIdentifier,\n },\n },\n true,\n );\n }\n }\n } catch (errorCatched) {\n handle403(errorCatched as AxiosError);\n error.value = true;\n }\n loaded.value = true;\n}\n\nasync function fetchConferenceStatus() {\n if (!podcast.value?.conferenceId) {\n return;\n }\n const data = await classicApi.fetchData<ConferencePublicInfo>({\n api: 9,\n path: \"conference/info/\" + podcast.value.conferenceId,\n });\n podcastConference.value = {\n ...data,\n ...{\n conferenceId: podcast.value.conferenceId,\n title: \"\",\n },\n };\n if (\"DEBRIEFING\" === data.status) {\n clearInterval(intervalStatusConference.value as unknown as number);\n }\n}\n</script>\n<style lang=\"scss\">\n.octopus-app .video-page-container {\n align-items: stretch;\n flex-grow: 1;\n background: var(--octopus-primary-really-transparent);\n border-radius: var(--octopus-border-radius);\n box-shadow: 0 0 10px 1px var(--octopus-primary-transparent);\n\n .info-video-container {\n display: flex;\n flex-direction: column;\n\n .octopus-tab-pane,\n .video-module-box {\n height: 0;\n overflow-y: auto;\n\n @media (width <= 960px) {\n height: inherit;\n }\n }\n\n .classic-nav-tab-container {\n flex-direction: column;\n }\n }\n\n .module-box.module-box-transparent {\n margin: 0;\n background: transparent;\n border: 0;\n padding: 0;\n }\n\n .w-70-responsive {\n width: 70%;\n aspect-ratio: 16/9;\n }\n\n .w-30-responsive {\n width: 30%;\n }\n\n .w-70-responsive,\n .w-30-responsive {\n display: flex;\n align-items: stretch;\n flex-grow: 1;\n\n @media (width <= 960px) {\n width: 100%;\n padding: 0 !important;\n }\n }\n\n .really-light-secondary-bg {\n background: white;\n }\n}\n</style>\n","<template>\n <section class=\"page-box\">\n <template v-if=\"loaded && !error\">\n <router-link\n :to=\"{\n name: 'podcast',\n params: { podcastId: podcastId },\n }\"\n class=\"mt-3 mb-3 w-fit-content d-flex align-items-center\"\n :title=\"t('Episode name page', { name: podcast?.title })\"\n >\n <ChevronLeftIcon />{{ t(\"Episode page\") }}\n </router-link>\n <div\n v-if=\"videoId || isLiveReadyToRecord\"\n class=\"d-flex video-page-container\"\n >\n <div class=\"w-70-responsive\">\n <template v-if=\"isLiveReadyToRecord\">\n <PlayerVideoHls\n v-if=\"recordingLive\"\n :hls-url=\"hlsVideoUrl\"\n :is-secured=\"isSecured\"\n :responsive=\"true\"\n />\n <div\n v-if=\"isCounter || overrideText\"\n class=\"d-flex flex-column align-items-center flex-grow-1 blue-bg p-3\"\n >\n <CountdownOctopus\n :time-remaining=\"timeRemaining\"\n :override-text=\"overrideText\"\n />\n </div>\n </template>\n <PlayerVideoDigiteka\n v-else\n :video-id=\"videoId\"\n :podcast-id=\"podcastId\"\n responsive\n />\n </div>\n <div class=\"w-30-responsive info-video-container\">\n <div class=\"d-flex flex-column flex-grow-1 w-100\">\n <ClassicNav\n v-if=\"tabs.length\"\n v-model:active-tab=\"activeTab\"\n :tab-number=\"tabs.length\"\n :transparent=\"true\"\n >\n <template v-for=\"(tab, index) in tabs\" #[index]>\n {{ tab }}\n </template>\n <template #tab0>\n <VideoModuleBox\n :podcast=\"podcast\"\n :date=\"date\"\n :duration=\"duration\"\n />\n </template>\n <template #tab1>\n <section>\n <CommentSection\n :podcast=\"podcast\"\n class=\"module-box-transparent\"\n />\n </section>\n </template>\n </ClassicNav>\n <VideoModuleBox\n v-else\n class=\"p-2 video-module-box\"\n :podcast=\"podcast\"\n :date=\"date\"\n :duration=\"duration\"\n :duration-iso=\"durationIso\"\n />\n </div>\n </div>\n </div>\n </template>\n <div\n v-if=\"!error && !videoId && !isLiveReadyToRecord\"\n class=\"text-center text-danger h3\"\n >\n {{ t(\"The episode does not have an associated video\") }}\n </div>\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 ChevronLeftIcon from \"vue-material-design-icons/ChevronLeft.vue\";\nimport ClassicLoading from \"../form/ClassicLoading.vue\";\nimport classicApi from \"../../api/classicApi\";\nimport { Podcast } from \"@/stores/class/general/podcast\";\nimport ClassicNav from \"../misc/ClassicNav.vue\";\nimport {useSeoTitleUrl} from \"../composable/route/useSeoTitleUrl\";\nimport {usePodcastView} from \"../composable/podcasts/usePodcastView\";\nimport { computed, defineAsyncComponent, onBeforeUnmount, Ref, ref, watch } from \"vue\";\nimport { AxiosError } from \"axios\";\nimport { useFilterStore } from \"../../stores/FilterStore\";\nimport { useAuthStore } from \"../../stores/AuthStore\";\nimport { useCommentStore } from \"../../stores/CommentStore\";\nimport { useApiStore } from \"../../stores/ApiStore\";\nimport { CommentsConfig } from \"@/stores/class/config/commentsConfig\";\nimport {\n Conference,\n ConferencePublicInfo,\n} from \"@/stores/class/conference/conference\";\nimport { usePlayerStore } from \"../../stores/PlayerStore\";\nimport { useGeneralStore } from \"../../stores/GeneralStore\";\nimport { useI18n } from \"vue-i18n\";\nimport { useRoute } from \"vue-router\";\nimport { useErrorHandler } from \"../composable/useErrorHandler\";\nconst PlayerVideoDigiteka = defineAsyncComponent(\n () => import(\"../misc/player/video/PlayerVideoDigiteka.vue\"),\n);\nconst PlayerVideoHls = defineAsyncComponent(\n () => import(\"../misc/player/video/PlayerVideoHls.vue\"),\n);\nconst CommentSection = defineAsyncComponent(\n () => import(\"../display/comments/CommentSection.vue\"),\n);\nconst VideoModuleBox = defineAsyncComponent(\n () => import(\"../display/podcasts/VideoModuleBox.vue\"),\n);\nconst CountdownOctopus = defineAsyncComponent(\n () => import(\"../display/live/CountdownOctopus.vue\"),\n);\n\n//Props \nconst props = defineProps({\n podcastId:{ default: 0, type: Number },\n})\n\n//Data \nconst loaded = ref(false);\nconst podcast: Ref<Podcast | undefined> = ref(undefined);\nconst error = ref(false);\nconst activeTab = ref(0);\nconst configPodcast: Ref<CommentsConfig | undefined> = ref(undefined);\nconst podcastConference: Ref<Conference | undefined> = ref(undefined);\nconst intervalStatusConference: Ref<ReturnType<typeof setTimeout> | undefined> = ref(undefined);\n\n//Composables\nconst { \n isLiveReadyToRecord,\n isCounter,\n timeRemaining,\n date,\n duration,\n durationIso,\n editRight\n} = usePodcastView(podcast, podcastConference);\nconst {handle403} = useErrorHandler();\nconst { updatePathParams } = useSeoTitleUrl();\nconst authStore = useAuthStore();\nconst apiStore = useApiStore();\nconst generalStore = useGeneralStore();\nconst playerStore = usePlayerStore();\nconst filterStore = useFilterStore();\nconst commentStore = useCommentStore();\nconst {t} = useI18n();\nconst route = useRoute();\n\n//Computed\nconst videoId = computed(() => podcast.value?.video?.videoId);\nconst canPostComment = computed(() => {\n return commentStore.getCanPostComment(\n configPodcast.value,\n podcast.value,\n undefined !== authStore.authOrgaId,\n );\n});\nconst tabs = computed(() => {\n if (canPostComment.value) {\n return [t(\"Information\"), t(\"Comments\")];\n }\n return [];\n});\nconst recordingLive = computed(() => {\n return (\n undefined !== podcastConference.value &&\n -1 !== podcastConference.value.conferenceId &&\n (\"RECORDING\" === podcastConference.value.status ||\n \"PENDING\" === podcastConference.value.status)\n );\n});\nconst hlsVideoUrl = computed(() => {\n if (!recordingLive.value || !podcastConference.value) {\n return \"\";\n }\n return `${apiStore.hlsUrl}live/video_${podcastConference.value.hlsIdentifier}/index.m3u8`;\n});\nconst isSecured = computed(() => {\n return \"SECURED\" === podcast.value?.organisation?.privacy;\n});\nconst overrideText = computed(() => {\n if (\"PUBLISHING\" !== podcastConference.value?.status) {\n return;\n }\n return t(\"In the process of being published\");\n});\n\n//Watch\nwatch(()=>props.podcastId, async () => {\n await getPodcastDetails();\n if (!podcast.value) {\n return;\n }\n commentStore.initCommentUser();\n configPodcast.value = await commentStore.getCommentsConfig(podcast.value);\n}, {immediate: true});\n\n\nonBeforeUnmount(() => {\n clearInterval(intervalStatusConference.value as unknown as number);\n})\n\n//Methods\nasync function getPodcastDetails(): Promise<void> {\n loaded.value = false;\n error.value = false;\n try {\n podcast.value = await classicApi.fetchData<Podcast>({\n api: 0,\n path: \"podcast/\" + props.podcastId,\n });\n document.title = podcast.value.title + \" - \"+generalStore.metaTitle;\n const orga = podcast.value.organisation;\n const privateAccess =\n \"PUBLIC\" !== orga.privacy &&\n filterStore.filterOrgaId !== orga.id &&\n route.query.productor !== orga.id;\n const notValid =\n (!podcast.value.availability.visibility ||\n ![\"READY_TO_RECORD\", \"READY\", \"PROCESSING\"].includes(\n podcast.value.processingStatus ?? \"\",\n ) ||\n !podcast.value.valid) &&\n !editRight.value;\n if (privateAccess || notValid) {\n error.value = true;\n } else {\n updatePathParams(podcast.value.title);\n if (\n podcast.value.conferenceId &&\n \"READY\" !== podcast.value.processingStatus\n ) {\n await fetchConferenceStatus();\n intervalStatusConference.value = setInterval(() => { fetchConferenceStatus(); }, 3000);\n playerStore.playerPlay(\n {\n ...podcast.value,\n ...{ \n conferenceId: podcast.value.conferenceId,\n hlsIdentifier: podcastConference.value?.hlsIdentifier,\n },\n },\n true,\n );\n }\n }\n } catch (errorCatched) {\n handle403(errorCatched as AxiosError);\n error.value = true;\n }\n loaded.value = true;\n}\n\nasync function fetchConferenceStatus() {\n if (!podcast.value?.conferenceId) {\n return;\n }\n const data = await classicApi.fetchData<ConferencePublicInfo>({\n api: 9,\n path: \"conference/info/\" + podcast.value.conferenceId,\n });\n podcastConference.value = {\n ...data,\n ...{\n conferenceId: podcast.value.conferenceId,\n title: \"\",\n },\n };\n if (\"DEBRIEFING\" === data.status) {\n clearInterval(intervalStatusConference.value as unknown as number);\n }\n}\n</script>\n<style lang=\"scss\">\n.octopus-app .video-page-container {\n align-items: stretch;\n flex-grow: 1;\n background: var(--octopus-primary-really-transparent);\n border-radius: var(--octopus-border-radius);\n box-shadow: 0 0 10px 1px var(--octopus-primary-transparent);\n\n .info-video-container {\n display: flex;\n flex-direction: column;\n\n .octopus-tab-pane,\n .video-module-box {\n height: 0;\n overflow-y: auto;\n\n @media (width <= 960px) {\n height: inherit;\n }\n }\n\n .classic-nav-tab-container {\n flex-direction: column;\n }\n }\n\n .module-box.module-box-transparent {\n margin: 0;\n background: transparent;\n border: 0;\n padding: 0;\n }\n\n .w-70-responsive {\n width: 70%;\n aspect-ratio: 16/9;\n }\n\n .w-30-responsive {\n width: 30%;\n }\n\n .w-70-responsive,\n .w-30-responsive {\n display: flex;\n align-items: stretch;\n flex-grow: 1;\n\n @media (width <= 960px) {\n width: 100%;\n padding: 0 !important;\n }\n }\n\n .really-light-secondary-bg {\n background: white;\n }\n}\n</style>\n"],"mappings":"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"}
|