@saooti/octopus-sdk 42.0.3 → 42.0.5
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/AccessibilityModal-Bk-lyxlI.mjs +119 -0
- package/dist/AccessibilityModal-Bk-lyxlI.mjs.map +1 -0
- package/dist/AccessibilityModal-DqRtmHwG.mjs.map +1 -0
- package/dist/AdsProgressBar-B6Mi09W8.mjs +28 -0
- package/dist/AdsProgressBar-B6Mi09W8.mjs.map +1 -0
- package/dist/AdsProgressBar-CAP7Zj--.mjs.map +1 -0
- package/dist/AdvancedSearch-CVglkFkt.mjs.map +1 -0
- package/dist/AdvancedSearch-D6vwfxo5.mjs +317 -0
- package/dist/AdvancedSearch-D6vwfxo5.mjs.map +1 -0
- package/dist/AdvancedSearch-DINUCkA8.mjs.map +1 -0
- package/dist/AdvancedSearch-XvvmHfah.mjs.map +1 -0
- package/dist/AmazonMusicIcon-BbyyRbP4.mjs +49 -0
- package/dist/AmazonMusicIcon-BbyyRbP4.mjs.map +1 -0
- package/dist/AmazonMusicIcon-D5vNh4HG.mjs.map +1 -0
- package/dist/ApplePodcastIcon-Cq5SSyRm.mjs +51 -0
- package/dist/ApplePodcastIcon-Cq5SSyRm.mjs.map +1 -0
- package/dist/ApplePodcastIcon-DtC4TS8H.mjs.map +1 -0
- package/dist/CategoryChooser-DWEL9V5p.mjs.map +1 -0
- package/dist/CategoryChooser-DklLXzrz.mjs +216 -0
- package/dist/CategoryChooser-DklLXzrz.mjs.map +1 -0
- package/dist/CategoryFilter-BYG8Fnzn.mjs.map +1 -0
- package/dist/CategoryFilter-Bg279Zhp.mjs.map +1 -0
- package/dist/CategoryFilter-CmS3Ny_9.mjs +205 -0
- package/dist/CategoryFilter-CmS3Ny_9.mjs.map +1 -0
- package/dist/CategoryList-CfMKagU8.mjs +153 -0
- package/dist/CategoryList-CfMKagU8.mjs.map +1 -0
- package/dist/CategoryList-CtYJ1Otd.mjs.map +1 -0
- package/dist/CategoryList-fb__vBIZ.mjs.map +1 -0
- package/dist/CategoryPage-BXpFZSoD.mjs.map +1 -0
- package/dist/CategoryPage-CjFCzM5T.mjs.map +1 -0
- package/dist/CategoryPage-D8ZeqW_O.mjs +41 -0
- package/dist/CategoryPage-D8ZeqW_O.mjs.map +1 -0
- package/dist/CategoryPage-DOpUFF1y.mjs.map +1 -0
- package/dist/CategorySearchFilter-1oMd2Mm5.mjs +54 -0
- package/dist/CategorySearchFilter-1oMd2Mm5.mjs.map +1 -0
- package/dist/CategorySearchFilter-CEGWqMSt.mjs.map +1 -0
- package/dist/ChapteringModal-Bj_VrtB1.mjs.map +1 -0
- package/dist/ChapteringModal-C35ILBs7.mjs +64 -0
- package/dist/ChapteringModal-C35ILBs7.mjs.map +1 -0
- package/dist/ChapteringModal-CN-qJH9j.mjs.map +1 -0
- package/dist/CheckIdentityModal-4XD5uK5v.mjs.map +1 -0
- package/dist/CheckIdentityModal-RQYssX9o.mjs.map +1 -0
- package/dist/CheckIdentityModal-ekQqQKIU.mjs +62 -0
- package/dist/CheckIdentityModal-ekQqQKIU.mjs.map +1 -0
- package/dist/ChooseEpisodesNumber-BbsEFK07.mjs +50 -0
- package/dist/ChooseEpisodesNumber-BbsEFK07.mjs.map +1 -0
- package/dist/ChooseEpisodesNumber-OlhXXsCa.mjs.map +1 -0
- package/dist/ClassicAccordion-H690GTb-.mjs +87 -0
- package/dist/ClassicAccordion-H690GTb-.mjs.map +1 -0
- package/dist/ClassicAccordion-S0e-IhFa.mjs.map +1 -0
- package/dist/ClassicAlert-D51F43qS.mjs +57 -0
- package/dist/ClassicAlert-D51F43qS.mjs.map +1 -0
- package/dist/ClassicAlert-DUQplMvs.mjs.map +1 -0
- package/dist/ClassicBigChip-BbWdjK3W.mjs.map +1 -0
- package/dist/ClassicBigChip-CMefjO08.mjs.map +1 -0
- package/dist/ClassicBigChip-CaUJ5EI5.mjs +33 -0
- package/dist/ClassicBigChip-CaUJ5EI5.mjs.map +1 -0
- package/dist/ClassicCheckbox-BHKCPtLR.mjs.map +1 -0
- package/dist/ClassicCheckbox-CqA5WUGc.mjs +113 -0
- package/dist/ClassicCheckbox-CqA5WUGc.mjs.map +1 -0
- package/dist/ClassicContentEditable-BSsnA6oo.mjs.map +1 -0
- package/dist/ClassicContentEditable-R2O8-zPZ.mjs +52 -0
- package/dist/ClassicContentEditable-R2O8-zPZ.mjs.map +1 -0
- package/dist/ClassicCopyButton-M9AP3MKD.mjs.map +1 -0
- package/dist/ClassicCopyButton-y5PyWjLR.mjs +69 -0
- package/dist/ClassicCopyButton-y5PyWjLR.mjs.map +1 -0
- package/dist/ClassicDatePicker-CS5ufjLj.mjs +226 -0
- package/dist/ClassicDatePicker-CS5ufjLj.mjs.map +1 -0
- package/dist/ClassicDatePicker-DWVn4oHu.mjs.map +1 -0
- package/dist/ClassicEmojiPicker-BJeHH_oM.mjs +74 -0
- package/dist/ClassicEmojiPicker-BJeHH_oM.mjs.map +1 -0
- package/dist/ClassicEmojiPicker-EQy5H_zL.mjs.map +1 -0
- package/dist/ClassicHelpButton-B6jXpEKT.mjs.map +1 -0
- package/dist/ClassicHelpButton-DkCQoPpA.mjs +57 -0
- package/dist/ClassicHelpButton-DkCQoPpA.mjs.map +1 -0
- package/dist/ClassicInputText-B7EAwP2N.mjs.map +1 -0
- package/dist/ClassicInputText-adAE0MPy.mjs +335 -0
- package/dist/ClassicInputText-adAE0MPy.mjs.map +1 -0
- package/dist/ClassicLazy-7mFHxG6O.mjs.map +1 -0
- package/dist/ClassicLazy-DKgiCdDI.mjs +92 -0
- package/dist/ClassicLazy-DKgiCdDI.mjs.map +1 -0
- package/dist/ClassicLoading-Crlw7cAx.mjs.map +1 -0
- package/dist/ClassicLoading-DZLIyuUd.mjs +52 -0
- package/dist/ClassicLoading-DZLIyuUd.mjs.map +1 -0
- package/dist/ClassicModal-CilwHp9p.mjs.map +1 -0
- package/dist/ClassicModal-DbRPVcJr.mjs +87 -0
- package/dist/ClassicModal-DbRPVcJr.mjs.map +1 -0
- package/dist/ClassicModalInBody-BkaRcZZx.mjs.map +1 -0
- package/dist/ClassicModalInBody-Dq9PBoaB.mjs +77 -0
- package/dist/ClassicModalInBody-Dq9PBoaB.mjs.map +1 -0
- package/dist/ClassicMultiselect-BEY-HpGk.mjs.map +1 -0
- package/dist/ClassicMultiselect-wJ9U_4b2.mjs +246 -0
- package/dist/ClassicMultiselect-wJ9U_4b2.mjs.map +1 -0
- package/dist/ClassicNav-Dvm8faD9.mjs.map +1 -0
- package/dist/ClassicNav-P2h4OFEY.mjs +65 -0
- package/dist/ClassicNav-P2h4OFEY.mjs.map +1 -0
- package/dist/ClassicPopover-BIyLKorz.mjs.map +1 -0
- package/dist/ClassicPopover-Bk5kf37e.mjs +261 -0
- package/dist/ClassicPopover-Bk5kf37e.mjs.map +1 -0
- package/dist/ClassicRadio-BwylgGYF.mjs.map +1 -0
- package/dist/ClassicRadio-Dr6od5uM.mjs +78 -0
- package/dist/ClassicRadio-Dr6od5uM.mjs.map +1 -0
- package/dist/ClassicRadioLabel-DIij8S-y.mjs +86 -0
- package/dist/ClassicRadioLabel-DIij8S-y.mjs.map +1 -0
- package/dist/ClassicRadioLabel-ynBzFxC2.mjs.map +1 -0
- package/dist/ClassicSearch-BPWOTzhw.mjs +76 -0
- package/dist/ClassicSearch-BPWOTzhw.mjs.map +1 -0
- package/dist/ClassicSearch-D5yT0JRA.mjs.map +1 -0
- package/dist/ClassicSelect-BaY2yvwP.mjs.map +1 -0
- package/dist/ClassicSelect-BeCuKMad.mjs +138 -0
- package/dist/ClassicSelect-BeCuKMad.mjs.map +1 -0
- package/dist/ClassicSpinner-CL99QR-h.mjs +39 -0
- package/dist/ClassicSpinner-CL99QR-h.mjs.map +1 -0
- package/dist/ClassicSpinner-lNq7TnmD.mjs.map +1 -0
- package/dist/ClassicTabs-Bcine4_p.mjs.map +1 -0
- package/dist/ClassicTabs-sNP268jp.mjs +52 -0
- package/dist/ClassicTabs-sNP268jp.mjs.map +1 -0
- package/dist/ClassicTagInput-DrIZVI0X.mjs +82 -0
- package/dist/ClassicTagInput-DrIZVI0X.mjs.map +1 -0
- package/dist/ClassicTagInput-HM3VUbHp.mjs.map +1 -0
- package/dist/ClassicWysiwyg-BKq8ExjM.mjs.map +1 -0
- package/dist/ClassicWysiwyg-CRx5L0lR.mjs +200 -0
- package/dist/ClassicWysiwyg-CRx5L0lR.mjs.map +1 -0
- package/dist/ClipboardModal-DcUIqJGT.mjs +64 -0
- package/dist/ClipboardModal-DcUIqJGT.mjs.map +1 -0
- package/dist/ClipboardModal-MJw-Q5H5.mjs.map +1 -0
- package/dist/ClipboardModal-VRWz6S2A.mjs.map +1 -0
- package/dist/CommentBasicView-BIiF59xV.mjs.map +1 -0
- package/dist/CommentBasicView-CmDziW-M.mjs +103 -0
- package/dist/CommentBasicView-CmDziW-M.mjs.map +1 -0
- package/dist/CommentInput-BH-j4xYE.mjs.map +1 -0
- package/dist/CommentInput-CCpv7RF8.mjs +150 -0
- package/dist/CommentInput-CCpv7RF8.mjs.map +1 -0
- package/dist/CommentInput-DOuugk5A.mjs.map +1 -0
- package/dist/CommentItem-B1wXPEZZ.mjs +194 -0
- package/dist/CommentItem-B1wXPEZZ.mjs.map +1 -0
- package/dist/CommentItem-DuJsZoIk.mjs.map +1 -0
- package/dist/CommentItem-XLeueLaZ.mjs.map +1 -0
- package/dist/CommentList-ByBLWHYE.mjs.map +1 -0
- package/dist/CommentList-CIoNgXiD.mjs.map +1 -0
- package/dist/CommentList-dSoD09Di.mjs +262 -0
- package/dist/CommentList-dSoD09Di.mjs.map +1 -0
- package/dist/CommentMoreActions-CnczLaid.mjs +248 -0
- package/dist/CommentMoreActions-CnczLaid.mjs.map +1 -0
- package/dist/CommentMoreActions-CyEIOrzQ.mjs.map +1 -0
- package/dist/CommentMoreActions-X9tC_I0A.mjs.map +1 -0
- package/dist/CommentName-CkGKXK3_.mjs +73 -0
- package/dist/CommentName-CkGKXK3_.mjs.map +1 -0
- package/dist/CommentName-rapSs0fp.mjs.map +1 -0
- package/dist/CommentName-sabBJAA8.mjs.map +1 -0
- package/dist/CommentParentInfo-CQXTtdBn.mjs.map +1 -0
- package/dist/CommentParentInfo-D3nI0C85.mjs.map +1 -0
- package/dist/CommentParentInfo-J1vHOCm3.mjs +47 -0
- package/dist/CommentParentInfo-J1vHOCm3.mjs.map +1 -0
- package/dist/CommentPlayer-70dIz2Rg.mjs +67 -0
- package/dist/CommentPlayer-70dIz2Rg.mjs.map +1 -0
- package/dist/CommentPlayer-BVhVIPgD.mjs.map +1 -0
- package/dist/CommentPlayer-Cfa-z5qQ.mjs.map +1 -0
- package/dist/CommentSection-2kJz9TRg.mjs.map +1 -0
- package/dist/CommentSection-Bz6q4N6d.mjs +113 -0
- package/dist/CommentSection-Bz6q4N6d.mjs.map +1 -0
- package/dist/CommentSection-DRpvhHqB.mjs.map +1 -0
- package/dist/CommentStore-BFkEAz_S.mjs.map +1 -0
- package/dist/CommentStore-BjQ0AGHa.mjs +355 -0
- package/dist/CommentStore-BjQ0AGHa.mjs.map +1 -0
- package/dist/ContractPreviewModal-DhoEBsqo.mjs +75 -0
- package/dist/ContractPreviewModal-DhoEBsqo.mjs.map +1 -0
- package/dist/ContractPreviewModal-DjCwrq7e.mjs.map +1 -0
- package/dist/ContractPreviewModal-Dqyo5xUg.mjs.map +1 -0
- package/dist/CountDown-CAUtA0Vp.mjs.map +1 -0
- package/dist/CountDown-Ce0nxiby.mjs +28 -0
- package/dist/CountDown-Ce0nxiby.mjs.map +1 -0
- package/dist/CountdownOctopus-CR9zvBmW.mjs +34 -0
- package/dist/CountdownOctopus-CR9zvBmW.mjs.map +1 -0
- package/dist/CountdownOctopus-i6-l0aLA.mjs.map +1 -0
- package/dist/DateFilter-DD9cY_la.mjs.map +1 -0
- package/dist/DateFilter-DkU1MSa-.mjs +101 -0
- package/dist/DateFilter-DkU1MSa-.mjs.map +1 -0
- package/dist/DeezerIcon-BUdIKeqN.mjs.map +1 -0
- package/dist/DeezerIcon-D4cq4iPQ.mjs +49 -0
- package/dist/DeezerIcon-D4cq4iPQ.mjs.map +1 -0
- package/dist/DownloadPodcastButton-C5jl5QoM.mjs.map +1 -0
- package/dist/DownloadPodcastButton-Cbtq6s60.mjs.map +1 -0
- package/dist/DownloadPodcastButton-DLMz5Siw.mjs +39 -0
- package/dist/DownloadPodcastButton-DLMz5Siw.mjs.map +1 -0
- package/dist/EditCommentModal-3jlBtPco.mjs.map +1 -0
- package/dist/EditCommentModal-B5xc_AC2.mjs.map +1 -0
- package/dist/EditCommentModal-_iEit4p4.mjs +134 -0
- package/dist/EditCommentModal-_iEit4p4.mjs.map +1 -0
- package/dist/EditFtpIcon-D5VaHXWl.mjs.map +1 -0
- package/dist/EditFtpIcon-Do2G7rmM.mjs +47 -0
- package/dist/EditFtpIcon-Do2G7rmM.mjs.map +1 -0
- package/dist/EmissionGroupChooser-CQ6wTihw.mjs.map +1 -0
- package/dist/EmissionGroupChooser-D3xCu4tW.mjs +55 -0
- package/dist/EmissionGroupChooser-D3xCu4tW.mjs.map +1 -0
- package/dist/EmissionGroupChooser-DheKnUrA.mjs.map +1 -0
- package/dist/EmissionInlineList-CPgw-_jC.mjs +129 -0
- package/dist/EmissionInlineList-CPgw-_jC.mjs.map +1 -0
- package/dist/EmissionInlineList-CeCcnsfP.mjs.map +1 -0
- package/dist/EmissionInlineList-DD5tKHdg.mjs.map +1 -0
- package/dist/EmissionItem-Cl53in7H.mjs +144 -0
- package/dist/EmissionItem-Cl53in7H.mjs.map +1 -0
- package/dist/EmissionItem-DO1G4P7I.mjs.map +1 -0
- package/dist/EmissionItem-Dyamdgqm.mjs.map +1 -0
- package/dist/EmissionItem-NQh_dIN1.mjs.map +1 -0
- package/dist/EmissionList-CNizEXC9.mjs.map +1 -0
- package/dist/EmissionList-D4DFhKPt.mjs +286 -0
- package/dist/EmissionList-D4DFhKPt.mjs.map +1 -0
- package/dist/EmissionList-DfhK6dgl.mjs.map +1 -0
- package/dist/EmissionList-JEE2Remj.mjs.map +1 -0
- package/dist/EmissionPage-B1OhP9b5.mjs.map +1 -0
- package/dist/EmissionPage-B3fju1Sc.mjs +247 -0
- package/dist/EmissionPage-B3fju1Sc.mjs.map +1 -0
- package/dist/EmissionPage-Cizyfg77.mjs.map +1 -0
- package/dist/EmissionPage-Dq4ECbbk.mjs.map +1 -0
- package/dist/EmissionPlayerItem-BzFck8k6.mjs +148 -0
- package/dist/EmissionPlayerItem-BzFck8k6.mjs.map +1 -0
- package/dist/EmissionPlayerItem-DhOuAEBr.mjs.map +1 -0
- package/dist/EmissionPlayerItem-DiM1VHun.mjs.map +1 -0
- package/dist/EmissionPresentationItem-CEjtj9mf.mjs +54 -0
- package/dist/EmissionPresentationItem-CEjtj9mf.mjs.map +1 -0
- package/dist/EmissionPresentationItem-DSCyFHjR.mjs.map +1 -0
- package/dist/EmissionPresentationItem-TpmURnni.mjs.map +1 -0
- package/dist/EmissionPresentationList-C80QlXif.mjs.map +1 -0
- package/dist/EmissionPresentationList-D1UcWrLn.mjs +104 -0
- package/dist/EmissionPresentationList-D1UcWrLn.mjs.map +1 -0
- package/dist/EmissionPresentationList-uApAVXPy.mjs.map +1 -0
- package/dist/EmissionsPage-B-Lgftdx.mjs.map +1 -0
- package/dist/EmissionsPage-CQm8C671.mjs +120 -0
- package/dist/EmissionsPage-CQm8C671.mjs.map +1 -0
- package/dist/EmissionsPage-CiV3jjrr.mjs.map +1 -0
- package/dist/EmissionsPage-Dop7rOfp.mjs.map +1 -0
- package/dist/Error403Page-8Z8InpBQ.mjs.map +1 -0
- package/dist/Error403Page-B4wfiYPh.mjs +56 -0
- package/dist/Error403Page-B4wfiYPh.mjs.map +1 -0
- package/dist/Error403Page-Du1eHk-4.mjs.map +1 -0
- package/dist/ErrorMessage-D2XAzxpC.mjs.map +1 -0
- package/dist/ErrorMessage-DcUdnqSU.mjs +33 -0
- package/dist/ErrorMessage-DcUdnqSU.mjs.map +1 -0
- package/dist/FooterGarSection-BlQXLOSL.mjs.map +1 -0
- package/dist/FooterGarSection-CFtIQW51.mjs.map +1 -0
- package/dist/FooterGarSection-DSu-iiPb.mjs +54 -0
- package/dist/FooterGarSection-DSu-iiPb.mjs.map +1 -0
- package/dist/FooterSection-CAGk8GmW.mjs +196 -0
- package/dist/FooterSection-CAGk8GmW.mjs.map +1 -0
- package/dist/FooterSection-CYVlRfnp.mjs.map +1 -0
- package/dist/FooterSection-LpLoB0-0.mjs.map +1 -0
- package/dist/GeneralStore-CUlq_NjO.mjs +45 -0
- package/dist/GeneralStore-CUlq_NjO.mjs.map +1 -0
- package/dist/HomeDropdown-DWCPphGw.mjs.map +1 -0
- package/dist/HomeDropdown-Dcyt9IM6.mjs +81 -0
- package/dist/HomeDropdown-Dcyt9IM6.mjs.map +1 -0
- package/dist/HomeDropdown-j5CLhQP9.mjs.map +1 -0
- package/dist/HomePage-D947-CtJ.mjs.map +1 -0
- package/dist/HomePage-DoZG25gj.mjs +142 -0
- package/dist/HomePage-DoZG25gj.mjs.map +1 -0
- package/dist/HomePage-DvbT5DWY.mjs.map +1 -0
- package/dist/HomePage-o7H3mupQ.mjs.map +1 -0
- package/dist/IHeartIcon-70F_rHQh.mjs.map +1 -0
- package/dist/IHeartIcon-D9X-Udgq.mjs +53 -0
- package/dist/IHeartIcon-D9X-Udgq.mjs.map +1 -0
- package/dist/LikeButton-DFkrvbgE.mjs.map +1 -0
- package/dist/LikeButton-gkh5hlOU.mjs +61 -0
- package/dist/LikeButton-gkh5hlOU.mjs.map +1 -0
- package/dist/LikeSection-BLrRZGlp.mjs +137 -0
- package/dist/LikeSection-BLrRZGlp.mjs.map +1 -0
- package/dist/LikeSection-DGKUdmkX.mjs.map +1 -0
- package/dist/LikeSection-no5OlBSF.mjs.map +1 -0
- package/dist/ListPaginate-BWWtCWZX.mjs +174 -0
- package/dist/ListPaginate-BWWtCWZX.mjs.map +1 -0
- package/dist/ListPaginate-DwmCOplg.mjs.map +1 -0
- package/dist/ListPaginate-QZ7t7y81.mjs.map +1 -0
- package/dist/LiveHorizontalList-BObeVsFj.mjs.map +1 -0
- package/dist/LiveHorizontalList-CDS6piq6.mjs +111 -0
- package/dist/LiveHorizontalList-CDS6piq6.mjs.map +1 -0
- package/dist/LiveHorizontalList-D_GkeFWa.mjs.map +1 -0
- package/dist/LiveHorizontalList-bMtchMkz.mjs.map +1 -0
- package/dist/LiveList-Bf2IwhCb.mjs +265 -0
- package/dist/LiveList-Bf2IwhCb.mjs.map +1 -0
- package/dist/LiveList-CLi1Bq0h.mjs.map +1 -0
- package/dist/LiveList-DZy0OfFl.mjs.map +1 -0
- package/dist/LiveList-uGUcdGMJ.mjs.map +1 -0
- package/dist/LivesPage-4xpcvJSQ.mjs.map +1 -0
- package/dist/LivesPage-BqEg0zT2.mjs.map +1 -0
- package/dist/LivesPage-CNPiAlnt.mjs.map +1 -0
- package/dist/LivesPage-CfYmRxnV.mjs +55 -0
- package/dist/LivesPage-CfYmRxnV.mjs.map +1 -0
- package/dist/MapPage-BDhnH1Kl.mjs.map +1 -0
- package/dist/MapPage-DjLcn4uk.mjs +276 -0
- package/dist/MapPage-DjLcn4uk.mjs.map +1 -0
- package/dist/MapPage-gETfgUu-.mjs.map +1 -0
- package/dist/MessageModal-B35dCbWB.mjs.map +1 -0
- package/dist/MessageModal-BWI3HTM0.mjs +116 -0
- package/dist/MessageModal-BWI3HTM0.mjs.map +1 -0
- package/dist/MobileMenu-B51ClvR4.mjs.map +1 -0
- package/dist/MobileMenu-BPtGG3Nt.mjs.map +1 -0
- package/dist/MobileMenu-CdvJhI_5.mjs +162 -0
- package/dist/MobileMenu-CdvJhI_5.mjs.map +1 -0
- package/dist/MonetizableFilter-BGQTUtwX.mjs.map +1 -0
- package/dist/MonetizableFilter-DOlNz4IP.mjs +66 -0
- package/dist/MonetizableFilter-DOlNz4IP.mjs.map +1 -0
- package/dist/NewsletterModal-3Hv1lNuN.mjs.map +1 -0
- package/dist/NewsletterModal-Cit-Ckrg.mjs.map +1 -0
- package/dist/NewsletterModal-Cq-ZW_Y_.mjs +64 -0
- package/dist/NewsletterModal-Cq-ZW_Y_.mjs.map +1 -0
- package/dist/OctopusMultiselect-CDijfV8W.mjs +325 -0
- package/dist/OctopusMultiselect-CDijfV8W.mjs.map +1 -0
- package/dist/OctopusMultiselect-tXNIWVpp.mjs.map +1 -0
- package/dist/OrganisationChooser-CH20oK8w.mjs +164 -0
- package/dist/OrganisationChooser-CH20oK8w.mjs.map +1 -0
- package/dist/OrganisationChooser-foPC-Rwo.mjs.map +1 -0
- package/dist/OrganisationChooser-m6bJKDBa.mjs.map +1 -0
- package/dist/OrganisationChooserLight-BGPuDaCx.mjs.map +1 -0
- package/dist/OrganisationChooserLight-DJHyYp6k.mjs.map +1 -0
- package/dist/OrganisationChooserLight-DqO0gfx7.mjs +63 -0
- package/dist/OrganisationChooserLight-DqO0gfx7.mjs.map +1 -0
- package/dist/PageLogout-Bc8zBpoo.mjs.map +1 -0
- package/dist/PageLogout-xQXWO2UF.mjs +21 -0
- package/dist/PageLogout-xQXWO2UF.mjs.map +1 -0
- package/dist/PageNotFound-BPFW-fzo.mjs.map +1 -0
- package/dist/PageNotFound-Dpv0tY-G.mjs +45 -0
- package/dist/PageNotFound-Dpv0tY-G.mjs.map +1 -0
- package/dist/PageNotFound-r_6Ei8S9.mjs.map +1 -0
- package/dist/PaginateParams-CbAaMAAM.mjs.map +1 -0
- package/dist/PaginateParams-CjJoKjUD.mjs +90 -0
- package/dist/PaginateParams-CjJoKjUD.mjs.map +1 -0
- package/dist/PaginateSection-BJ6iQai2.mjs.map +1 -0
- package/dist/PaginateSection-I875HiC5.mjs +184 -0
- package/dist/PaginateSection-I875HiC5.mjs.map +1 -0
- package/dist/ParticipantDescription-BsS6OEz9.mjs +57 -0
- package/dist/ParticipantDescription-BsS6OEz9.mjs.map +1 -0
- package/dist/ParticipantDescription-CwREwvZy.mjs.map +1 -0
- package/dist/ParticipantInlineList-BmE7OeIA.mjs.map +1 -0
- package/dist/ParticipantInlineList-C1BElB13.mjs +95 -0
- package/dist/ParticipantInlineList-C1BElB13.mjs.map +1 -0
- package/dist/ParticipantInlineList-DasTqo5z.mjs.map +1 -0
- package/dist/ParticipantItem-B3n9mXtJ.mjs +113 -0
- package/dist/ParticipantItem-B3n9mXtJ.mjs.map +1 -0
- package/dist/ParticipantItem-BOYW9dkV.mjs.map +1 -0
- package/dist/ParticipantItem-DiD5ANdf.mjs.map +1 -0
- package/dist/ParticipantPage-DI9J2hc9.mjs +161 -0
- package/dist/ParticipantPage-DI9J2hc9.mjs.map +1 -0
- package/dist/ParticipantPage-Dd0RQWvi.mjs.map +1 -0
- package/dist/ParticipantPage-DpEOyLsF.mjs.map +1 -0
- package/dist/ParticipantPage-KSNX-i8c.mjs.map +1 -0
- package/dist/ParticipantsPage-CC--r1ny.mjs.map +1 -0
- package/dist/ParticipantsPage-CVfRUkIM.mjs +215 -0
- package/dist/ParticipantsPage-CVfRUkIM.mjs.map +1 -0
- package/dist/ParticipantsPage-DF_C3M6I.mjs.map +1 -0
- package/dist/PlayVideoIcon-CQJTc1O7.mjs.map +1 -0
- package/dist/PlayVideoIcon-QfmloAS6.mjs +50 -0
- package/dist/PlayVideoIcon-QfmloAS6.mjs.map +1 -0
- package/dist/PlayerAnonymousModal-B_IyhbMR.mjs +67 -0
- package/dist/PlayerAnonymousModal-B_IyhbMR.mjs.map +1 -0
- package/dist/PlayerAnonymousModal-C_13dRO7.mjs.map +1 -0
- package/dist/PlayerAnonymousModal-DH3k1hXl.mjs.map +1 -0
- package/dist/PlayerCommonParameters-BF8-HN2S.mjs +32 -0
- package/dist/PlayerCommonParameters-BF8-HN2S.mjs.map +1 -0
- package/dist/PlayerCommonParameters-Dn-OIiO8.mjs.map +1 -0
- package/dist/PlayerCompact-BFLLRuDe.mjs.map +1 -0
- package/dist/PlayerCompact-DEeOaAfG.mjs.map +1 -0
- package/dist/PlayerCompact-DdCp2i_P.mjs +157 -0
- package/dist/PlayerCompact-DdCp2i_P.mjs.map +1 -0
- package/dist/PlayerComponent-BA2dlmRD.mjs.map +1 -0
- package/dist/PlayerComponent-CWtN6Je1.mjs +894 -0
- package/dist/PlayerComponent-CWtN6Je1.mjs.map +1 -0
- package/dist/PlayerComponent-im3MzRzo.mjs.map +1 -0
- package/dist/PlayerFmIcon-BGCKu8Y2.mjs +49 -0
- package/dist/PlayerFmIcon-BGCKu8Y2.mjs.map +1 -0
- package/dist/PlayerFmIcon-BxQ1g45P.mjs.map +1 -0
- package/dist/PlayerLarge-3OMY0_Tt.mjs.map +1 -0
- package/dist/PlayerLarge-BqjHyRf7.mjs.map +1 -0
- package/dist/PlayerLarge-I7FONG3B.mjs +153 -0
- package/dist/PlayerLarge-I7FONG3B.mjs.map +1 -0
- package/dist/PlayerParameters-fpNIoYO9.mjs.map +1 -0
- package/dist/PlayerParameters-y4IXdHiE.mjs +195 -0
- package/dist/PlayerParameters-y4IXdHiE.mjs.map +1 -0
- package/dist/PlayerPlayButton-Bm6Rp8bS.mjs +327 -0
- package/dist/PlayerPlayButton-Bm6Rp8bS.mjs.map +1 -0
- package/dist/PlayerPlayButton-DdIezDHQ.mjs.map +1 -0
- package/dist/PlayerPlayButton-T1Fr5nWh.mjs.map +1 -0
- package/dist/PlayerProgressBar-5jLv6Y7S.mjs.map +1 -0
- package/dist/PlayerProgressBar-8Q9iCyLs.mjs.map +1 -0
- package/dist/PlayerProgressBar-C38YCi9Z.mjs +75 -0
- package/dist/PlayerProgressBar-C38YCi9Z.mjs.map +1 -0
- package/dist/PlayerStore-BVK7ItEM.mjs.map +1 -0
- package/dist/PlayerStore-DB5dkc3c.mjs +230 -0
- package/dist/PlayerStore-DB5dkc3c.mjs.map +1 -0
- package/dist/PlayerVideo-Bud1rcxU.mjs +52 -0
- package/dist/PlayerVideo-Bud1rcxU.mjs.map +1 -0
- package/dist/PlayerVideo-CX3JS9bK.mjs.map +1 -0
- package/dist/PlayerVideo-D0mTmRCq.mjs.map +1 -0
- package/dist/PlayerVideoDigiteka-CiTtloWK.mjs +82 -0
- package/dist/PlayerVideoDigiteka-CiTtloWK.mjs.map +1 -0
- package/dist/PlayerVideoDigiteka-DjlfXgIZ.mjs.map +1 -0
- package/dist/PlayerVideoDigiteka-Dn3neAtr.mjs.map +1 -0
- package/dist/PlayerVideoHls-BJj1m924.mjs.map +1 -0
- package/dist/PlayerVideoHls-D909ECaY.mjs.map +1 -0
- package/dist/PlayerVideoHls-DjAlSV39.mjs +199 -0
- package/dist/PlayerVideoHls-DjAlSV39.mjs.map +1 -0
- package/dist/PlayerYoutubeEmbed-D0A4EWhU.mjs.map +1 -0
- package/dist/PlayerYoutubeEmbed-D5ZhaHbv.mjs +32 -0
- package/dist/PlayerYoutubeEmbed-D5ZhaHbv.mjs.map +1 -0
- package/dist/PlaylistPage-B-qoOMDN.mjs.map +1 -0
- package/dist/PlaylistPage-Botg5_jv.mjs.map +1 -0
- package/dist/PlaylistPage-C56-smtp.mjs.map +1 -0
- package/dist/PlaylistPage-aIWF8InW.mjs +180 -0
- package/dist/PlaylistPage-aIWF8InW.mjs.map +1 -0
- package/dist/PlaylistsPage-BSNE0BZ9.mjs.map +1 -0
- package/dist/PlaylistsPage-D2QbHMQu.mjs.map +1 -0
- package/dist/PlaylistsPage-Pnn895N-.mjs +322 -0
- package/dist/PlaylistsPage-Pnn895N-.mjs.map +1 -0
- package/dist/PocketCastIcon-Nm45VN7b.mjs.map +1 -0
- package/dist/PocketCastIcon-RfG93aY3.mjs +49 -0
- package/dist/PocketCastIcon-RfG93aY3.mjs.map +1 -0
- package/dist/PodcastAddictIcon-DRF7w4QM.mjs.map +1 -0
- package/dist/PodcastAddictIcon-v149CijV.mjs +52 -0
- package/dist/PodcastAddictIcon-v149CijV.mjs.map +1 -0
- package/dist/PodcastFilterList-CQ8vxYW7.mjs.map +1 -0
- package/dist/PodcastFilterList-CZzD028O.mjs.map +1 -0
- package/dist/PodcastFilterList-Khjz0Dny.mjs +179 -0
- package/dist/PodcastFilterList-Khjz0Dny.mjs.map +1 -0
- package/dist/PodcastFilterList-NSECjEDk.mjs.map +1 -0
- package/dist/PodcastImage-B-_N0gS4.mjs.map +1 -0
- package/dist/PodcastImage-BrfDAORW.mjs +148 -0
- package/dist/PodcastImage-BrfDAORW.mjs.map +1 -0
- package/dist/PodcastImage-DTrISr_U.mjs.map +1 -0
- package/dist/PodcastInlineList-BkHA9K7I.mjs +126 -0
- package/dist/PodcastInlineList-BkHA9K7I.mjs.map +1 -0
- package/dist/PodcastInlineList-Bq-uF-n4.mjs.map +1 -0
- package/dist/PodcastInlineList-DOkuKLLe.mjs.map +1 -0
- package/dist/PodcastInlineList-cWF3ymZw.mjs.map +1 -0
- package/dist/PodcastInlineListTemplate-BWUKzZU9.mjs.map +1 -0
- package/dist/PodcastInlineListTemplate-Bc479tGK.mjs.map +1 -0
- package/dist/PodcastInlineListTemplate-CiuRCR7t.mjs +206 -0
- package/dist/PodcastInlineListTemplate-CiuRCR7t.mjs.map +1 -0
- package/dist/PodcastIsPlaying-B2uIZI7V.mjs.map +1 -0
- package/dist/PodcastIsPlaying-DEviEW23.mjs +21 -0
- package/dist/PodcastIsPlaying-DEviEW23.mjs.map +1 -0
- package/dist/PodcastIsPlaying-DzzRwggt.mjs.map +1 -0
- package/dist/PodcastItem-6qkOg90q.mjs +213 -0
- package/dist/PodcastItem-6qkOg90q.mjs.map +1 -0
- package/dist/PodcastItem-DLD5hfk7.mjs.map +1 -0
- package/dist/PodcastItem-ltLOqm-_.mjs.map +1 -0
- package/dist/PodcastItem-naoxNwra.mjs.map +1 -0
- package/dist/PodcastList-5vFekv1m.mjs.map +1 -0
- package/dist/PodcastList-B60tYB2G.mjs.map +1 -0
- package/dist/PodcastList-B9xZlEH4.mjs +152 -0
- package/dist/PodcastList-B9xZlEH4.mjs.map +1 -0
- package/dist/PodcastList-BYBjpOL8.mjs.map +1 -0
- package/dist/PodcastList-BuDcObSr.mjs.map +1 -0
- package/dist/PodcastList-DQanN0Bb.mjs.map +1 -0
- package/dist/PodcastList-gdQbPtGY.mjs +234 -0
- package/dist/PodcastList-gdQbPtGY.mjs.map +1 -0
- package/dist/PodcastList-jCzCt_eR.mjs.map +1 -0
- package/dist/PodcastPage-B5WpXRPn.mjs.map +1 -0
- package/dist/PodcastPage-BFjlYZGL.mjs.map +1 -0
- package/dist/PodcastPage-BUlluWvM.mjs.map +1 -0
- package/dist/PodcastPage-D3aBkgdA.mjs +585 -0
- package/dist/PodcastPage-D3aBkgdA.mjs.map +1 -0
- package/dist/PodcastPlannedSpinner-BJDQ4VPx.mjs +20 -0
- package/dist/PodcastPlannedSpinner-BJDQ4VPx.mjs.map +1 -0
- package/dist/PodcastPlannedSpinner-BN7unEqf.mjs.map +1 -0
- package/dist/PodcastPlayBar-BotWFQoJ.mjs.map +1 -0
- package/dist/PodcastPlayBar-C7pDzmXr.mjs +65 -0
- package/dist/PodcastPlayBar-C7pDzmXr.mjs.map +1 -0
- package/dist/PodcastPlayBar-Dc71_DSn.mjs.map +1 -0
- package/dist/PodcastPlayBasicButton-9u92vEzq.mjs.map +1 -0
- package/dist/PodcastPlayBasicButton-BRbHFpVR.mjs +52 -0
- package/dist/PodcastPlayBasicButton-BRbHFpVR.mjs.map +1 -0
- package/dist/PodcastPlayBasicButton-Ds_kg-b1.mjs.map +1 -0
- package/dist/PodcastPlayButton-CMaudNx5.mjs +203 -0
- package/dist/PodcastPlayButton-CMaudNx5.mjs.map +1 -0
- package/dist/PodcastPlayButton-RjnyBBYO.mjs.map +1 -0
- package/dist/PodcastPlayButton-TpwW09jp.mjs.map +1 -0
- package/dist/PodcastPlaylistInlineList-BLAD7cMN.mjs.map +1 -0
- package/dist/PodcastPlaylistInlineList-BllOtctp.mjs +82 -0
- package/dist/PodcastPlaylistInlineList-BllOtctp.mjs.map +1 -0
- package/dist/PodcastPlaylistInlineList-CSITiCoX.mjs.map +1 -0
- package/dist/PodcastPlaylistInlineList-kO0naL9A.mjs.map +1 -0
- package/dist/PodcastPresentationList-BcKJ9XZ7.mjs +152 -0
- package/dist/PodcastPresentationList-BcKJ9XZ7.mjs.map +1 -0
- package/dist/PodcastPresentationList-CRCO4abw.mjs.map +1 -0
- package/dist/PodcastPresentationList-CSWhzlnX.mjs.map +1 -0
- package/dist/PodcastProgressBar-Ctp0I77F.mjs.map +1 -0
- package/dist/PodcastProgressBar-Dih-EtLn.mjs.map +1 -0
- package/dist/PodcastProgressBar-xAMieMIt.mjs +80 -0
- package/dist/PodcastProgressBar-xAMieMIt.mjs.map +1 -0
- package/dist/PodcastRawTranscript-BbCPFt3l.mjs.map +1 -0
- package/dist/PodcastRawTranscript-CdKhzP8l.mjs +146 -0
- package/dist/PodcastRawTranscript-CdKhzP8l.mjs.map +1 -0
- package/dist/PodcastRawTranscript-Cp0XSlnz.mjs.map +1 -0
- package/dist/PodcastRubriqueList-BGiDpOsb.mjs.map +1 -0
- package/dist/PodcastRubriqueList-BqhnhoEz.mjs +65 -0
- package/dist/PodcastRubriqueList-BqhnhoEz.mjs.map +1 -0
- package/dist/PodcastRubriqueList-CPaVKHY5.mjs.map +1 -0
- package/dist/PodcastSeasonInfo-BwD--f9z.mjs +37 -0
- package/dist/PodcastSeasonInfo-BwD--f9z.mjs.map +1 -0
- package/dist/PodcastSeasonInfo-DL_CsYTY.mjs.map +1 -0
- package/dist/PodcastSwiperList-C2H-uWk9.mjs.map +1 -0
- package/dist/PodcastSwiperList-CY2NOyCN.mjs.map +1 -0
- package/dist/PodcastSwiperList-Cj4G10ln.mjs.map +1 -0
- package/dist/PodcastSwiperList-DI-90c4F.mjs +191 -0
- package/dist/PodcastSwiperList-DI-90c4F.mjs.map +1 -0
- package/dist/PodcastmakerHeader-BubtZY7u.mjs.map +1 -0
- package/dist/PodcastmakerHeader-CURC8nyy.mjs.map +1 -0
- package/dist/PodcastmakerHeader-DLy0YSgm.mjs +46 -0
- package/dist/PodcastmakerHeader-DLy0YSgm.mjs.map +1 -0
- package/dist/PodcastsPage-CYG8bXaW.mjs.map +1 -0
- package/dist/PodcastsPage-DZlGTlaX.mjs +135 -0
- package/dist/PodcastsPage-DZlGTlaX.mjs.map +1 -0
- package/dist/PodcastsPage-PTwwATNT.mjs.map +1 -0
- package/dist/PodcastsPage-dOgLCDY5.mjs.map +1 -0
- package/dist/PresentationLayout-BWueEtST.mjs +70 -0
- package/dist/PresentationLayout-BWueEtST.mjs.map +1 -0
- package/dist/PresentationLayout-BmcVqEo8.mjs.map +1 -0
- package/dist/ProductorSearch-Bp7S8Sut.mjs.map +1 -0
- package/dist/ProductorSearch-ir5rkehT.mjs +132 -0
- package/dist/ProductorSearch-ir5rkehT.mjs.map +1 -0
- package/dist/ProductorSearch-yQPCj7Pa.mjs.map +1 -0
- package/dist/ProgressBar-B6z6oHHm.mjs.map +1 -0
- package/dist/ProgressBar-DLbzpY3L.mjs.map +1 -0
- package/dist/ProgressBar-ubd7c7H0.mjs +135 -0
- package/dist/ProgressBar-ubd7c7H0.mjs.map +1 -0
- package/dist/QrCode-BR3jPdJS.mjs +140 -0
- package/dist/QrCode-BR3jPdJS.mjs.map +1 -0
- package/dist/QrCode-C7IL9c3c.mjs.map +1 -0
- package/dist/QrCode-D86qgrdm.mjs.map +1 -0
- package/dist/QrCodeModal-9PCWJenP.mjs.map +1 -0
- package/dist/QrCodeModal-Cf1O9nwT.mjs.map +1 -0
- package/dist/QrCodeModal-DnREe0Jk.mjs +48 -0
- package/dist/QrCodeModal-DnREe0Jk.mjs.map +1 -0
- package/dist/RadioCurrently-BNzaJNoY.mjs +89 -0
- package/dist/RadioCurrently-BNzaJNoY.mjs.map +1 -0
- package/dist/RadioCurrently-Bz4kKaGc.mjs.map +1 -0
- package/dist/RadioCurrently-COaGoNF8.mjs.map +1 -0
- package/dist/RadioHistory-B_PBz6hY.mjs.map +1 -0
- package/dist/RadioHistory-DMGTXE4V.mjs +116 -0
- package/dist/RadioHistory-DMGTXE4V.mjs.map +1 -0
- package/dist/RadioHistory-Yhqmee1d.mjs.map +1 -0
- package/dist/RadioImage-B5jrzD8s.mjs.map +1 -0
- package/dist/RadioImage-BgrUZZIa.mjs +66 -0
- package/dist/RadioImage-BgrUZZIa.mjs.map +1 -0
- package/dist/RadioImage-D2MFmuqR.mjs.map +1 -0
- package/dist/RadioList-Bab4Pj9m.mjs.map +1 -0
- package/dist/RadioList-Bh8ub58m.mjs +95 -0
- package/dist/RadioList-Bh8ub58m.mjs.map +1 -0
- package/dist/RadioList-Ctbf98I9.mjs.map +1 -0
- package/dist/RadioPage-BY7YU_yL.mjs.map +1 -0
- package/dist/RadioPage-BtsGEI5i.mjs +105 -0
- package/dist/RadioPage-BtsGEI5i.mjs.map +1 -0
- package/dist/RadioPage-DtS3r-48.mjs.map +1 -0
- package/dist/RadioPlanning-B-sRUVGb.mjs.map +1 -0
- package/dist/RadioPlanning-D2RNEdEQ.mjs.map +1 -0
- package/dist/RadioPlanning-DMighzUU.mjs +257 -0
- package/dist/RadioPlanning-DMighzUU.mjs.map +1 -0
- package/dist/RadioProgressBar-4MT37o9a.mjs.map +1 -0
- package/dist/RadioProgressBar-CiapCPN-.mjs +47 -0
- package/dist/RadioProgressBar-CiapCPN-.mjs.map +1 -0
- package/dist/RadioProgressBar-DrxSXvmY.mjs.map +1 -0
- package/dist/RadiolineIcon-CIePjE9k.mjs.map +1 -0
- package/dist/RadiolineIcon-QP88nzG8.mjs +50 -0
- package/dist/RadiolineIcon-QP88nzG8.mjs.map +1 -0
- package/dist/RecaptchaModal-BThWkUuj.mjs.map +1 -0
- package/dist/RecaptchaModal-BkETInqb.mjs.map +1 -0
- package/dist/RecaptchaModal-DlThDzSF.mjs +119 -0
- package/dist/RecaptchaModal-DlThDzSF.mjs.map +1 -0
- package/dist/ReportAbuseModal-BfYBle6z.mjs.map +1 -0
- package/dist/ReportAbuseModal-Bnhfpowa.mjs.map +1 -0
- package/dist/ReportAbuseModal-Pd8P9tNB.mjs +107 -0
- package/dist/ReportAbuseModal-Pd8P9tNB.mjs.map +1 -0
- package/dist/RightsIndicator-COEtdoj_.mjs.map +1 -0
- package/dist/RightsIndicator-CZtSrb5K.mjs.map +1 -0
- package/dist/RightsIndicator-DNmA3L9O.mjs.map +1 -0
- package/dist/RightsIndicator-DYhqEbAB.mjs +69 -0
- package/dist/RightsIndicator-DYhqEbAB.mjs.map +1 -0
- package/dist/RightsWrapper-BHIinXXL.mjs.map +1 -0
- package/dist/RightsWrapper-CewAJoDY.mjs.map +1 -0
- package/dist/RightsWrapper-Cz5TnSUC.mjs +164 -0
- package/dist/RightsWrapper-Cz5TnSUC.mjs.map +1 -0
- package/dist/RubriqueChoice-BN4nirmx.mjs +120 -0
- package/dist/RubriqueChoice-BN4nirmx.mjs.map +1 -0
- package/dist/RubriqueChoice-BxmZoBZL.mjs.map +1 -0
- package/dist/RubriqueChoice-C4rglHV1.mjs.map +1 -0
- package/dist/RubriqueChooser-BceFw2x2.mjs.map +1 -0
- package/dist/RubriqueChooser-BgIvDDv7.mjs +213 -0
- package/dist/RubriqueChooser-BgIvDDv7.mjs.map +1 -0
- package/dist/RubriqueFilter-BwBU4kpV.mjs +168 -0
- package/dist/RubriqueFilter-BwBU4kpV.mjs.map +1 -0
- package/dist/RubriqueFilter-C7lAoJNq.mjs.map +1 -0
- package/dist/RubriqueFilter-CKF-seUZ.mjs.map +1 -0
- package/dist/RubriqueFilter-oDd4AytG.mjs.map +1 -0
- package/dist/RubriqueList-Cr0vXMew.mjs.map +1 -0
- package/dist/RubriqueList-D2PPns3m.mjs +169 -0
- package/dist/RubriqueList-D2PPns3m.mjs.map +1 -0
- package/dist/RubriqueList-zHKQE6OL.mjs.map +1 -0
- package/dist/RubriquePage-2ITwxYLr.mjs.map +1 -0
- package/dist/RubriquePage-Bpt2wwjK.mjs.map +1 -0
- package/dist/RubriquePage-CFrQ5Hw-.mjs +86 -0
- package/dist/RubriquePage-CFrQ5Hw-.mjs.map +1 -0
- package/dist/RubriquePage-Cf9QJQJB.mjs.map +1 -0
- package/dist/SearchOrder-CJ0Fj6Wd.mjs.map +1 -0
- package/dist/SearchOrder-CLl5slg5.mjs +70 -0
- package/dist/SearchOrder-CLl5slg5.mjs.map +1 -0
- package/dist/SearchPage-BopqRW_4.mjs.map +1 -0
- package/dist/SearchPage-BskiH0Hg.mjs +58 -0
- package/dist/SearchPage-BskiH0Hg.mjs.map +1 -0
- package/dist/SearchPage-D0Tz8ELe.mjs.map +1 -0
- package/dist/SearchPage-DLj9zYeL.mjs.map +1 -0
- package/dist/ShareAnonymous-B16PsWEJ.mjs +249 -0
- package/dist/ShareAnonymous-B16PsWEJ.mjs.map +1 -0
- package/dist/ShareAnonymous-CBVGRI6L.mjs.map +1 -0
- package/dist/ShareAnonymous-DmDaW3PH.mjs.map +1 -0
- package/dist/ShareModalPlayer-BV_1CKus.mjs.map +1 -0
- package/dist/ShareModalPlayer-SIkm_vpv.mjs.map +1 -0
- package/dist/ShareModalPlayer-lGW9vRFS.mjs +111 -0
- package/dist/ShareModalPlayer-lGW9vRFS.mjs.map +1 -0
- package/dist/ShareNewsletter-BigVU8EV.mjs.map +1 -0
- package/dist/ShareNewsletter-CRQBK_3P.mjs +181 -0
- package/dist/ShareNewsletter-CRQBK_3P.mjs.map +1 -0
- package/dist/ShareNewsletter-CleivWOu.mjs.map +1 -0
- package/dist/SharePlayer-CGlvYVn4.mjs.map +1 -0
- package/dist/SharePlayer-CSKYsE9H.mjs.map +1 -0
- package/dist/SharePlayer-Cdjz1NrC.mjs +319 -0
- package/dist/SharePlayer-Cdjz1NrC.mjs.map +1 -0
- package/dist/SharePlayerColors-D-9MoYm6.mjs.map +1 -0
- package/dist/SharePlayerColors-p_LreBcc.mjs +61 -0
- package/dist/SharePlayerColors-p_LreBcc.mjs.map +1 -0
- package/dist/SharePlayerRadio-BJBbDNn5.mjs.map +1 -0
- package/dist/SharePlayerRadio-DbHw7Vcn.mjs +99 -0
- package/dist/SharePlayerRadio-DbHw7Vcn.mjs.map +1 -0
- package/dist/SharePlayerRadio-OMXyRc4D.mjs.map +1 -0
- package/dist/SharePlayerTypes-BTWxUJWi.mjs +206 -0
- package/dist/SharePlayerTypes-BTWxUJWi.mjs.map +1 -0
- package/dist/SharePlayerTypes-C2_JNU6C.mjs.map +1 -0
- package/dist/SharePlayerTypes-DBERUe0_.mjs.map +1 -0
- package/dist/ShareSocialsButtons-Bwh9bMoR.mjs +132 -0
- package/dist/ShareSocialsButtons-Bwh9bMoR.mjs.map +1 -0
- package/dist/ShareSocialsButtons-CMOEQdYB.mjs.map +1 -0
- package/dist/ShareSocialsButtons-D0b8OawP.mjs.map +1 -0
- package/dist/SimpleLayout-BRjk598k.mjs.map +1 -0
- package/dist/SimpleLayout-D9uJF7mS.mjs +28 -0
- package/dist/SimpleLayout-D9uJF7mS.mjs.map +1 -0
- package/dist/SimpleLayout-b-QQv5aQ.mjs.map +1 -0
- package/dist/SmartLinkPage-CSTfusv3.mjs.map +1 -0
- package/dist/SmartLinkPage-CeGDzza8.mjs +187 -0
- package/dist/SmartLinkPage-CeGDzza8.mjs.map +1 -0
- package/dist/SmartLinkPage-DGRvD-vv.mjs.map +1 -0
- package/dist/SnackBar-DdE1dYhi.mjs.map +1 -0
- package/dist/SnackBar-jRnNt--Z.mjs +150 -0
- package/dist/SnackBar-jRnNt--Z.mjs.map +1 -0
- package/dist/SubscribeButtons-CHsq-Vk7.mjs +160 -0
- package/dist/SubscribeButtons-CHsq-Vk7.mjs.map +1 -0
- package/dist/SubscribeButtons-CJhlLSWX.mjs.map +1 -0
- package/dist/SubscribeButtons-ChrHIXBv.mjs.map +1 -0
- package/dist/SwiperList-BKiF8jIc.mjs +170 -0
- package/dist/SwiperList-BKiF8jIc.mjs.map +1 -0
- package/dist/SwiperList-BoALb00d.mjs.map +1 -0
- package/dist/SwiperList-DBmjvvCX.mjs.map +1 -0
- package/dist/TagList-BECg0vNz.mjs.map +1 -0
- package/dist/TagList-DRJvO9Gr.mjs.map +1 -0
- package/dist/TagList-DiGc-7Rj.mjs +110 -0
- package/dist/TagList-DiGc-7Rj.mjs.map +1 -0
- package/dist/TagPage-Bn2cVKpN.mjs.map +1 -0
- package/dist/TagPage-C9x5XWOd.mjs.map +1 -0
- package/dist/TagPage-DchdAQV2.mjs.map +1 -0
- package/dist/TagPage-Vd8JH7-r.mjs +99 -0
- package/dist/TagPage-Vd8JH7-r.mjs.map +1 -0
- package/dist/TopBar-B20_SqNY.mjs.map +1 -0
- package/dist/TopBar-DRclhhd6.mjs.map +1 -0
- package/dist/TopBar-FHuZ4j9H.mjs +358 -0
- package/dist/TopBar-FHuZ4j9H.mjs.map +1 -0
- package/dist/TuninIcon-BplDWgtD.mjs.map +1 -0
- package/dist/TuninIcon-SHr7Y1qJ.mjs +49 -0
- package/dist/TuninIcon-SHr7Y1qJ.mjs.map +1 -0
- package/dist/UserButtonContent-B-AMExwJ.mjs.map +1 -0
- package/dist/UserButtonContent-Btivzl2V.mjs.map +1 -0
- package/dist/UserButtonContent-I7ahjnuS.mjs +163 -0
- package/dist/UserButtonContent-I7ahjnuS.mjs.map +1 -0
- package/dist/VastStore-BPwOrXvb.mjs +80 -0
- package/dist/VastStore-BPwOrXvb.mjs.map +1 -0
- package/dist/VideoModuleBox-Bw0xu9_f.mjs.map +1 -0
- package/dist/VideoModuleBox-C8zDhbqA.mjs.map +1 -0
- package/dist/VideoModuleBox-Cl6YoznO.mjs +70 -0
- package/dist/VideoModuleBox-Cl6YoznO.mjs.map +1 -0
- package/dist/VideoPage-B-lgTFnX.mjs.map +1 -0
- package/dist/VideoPage-B5Tp2PMs.mjs +222 -0
- package/dist/VideoPage-B5Tp2PMs.mjs.map +1 -0
- package/dist/VideoPage-X3dZyaQH.mjs.map +1 -0
- package/dist/XIcon-DAVMitPh.mjs +49 -0
- package/dist/XIcon-DAVMitPh.mjs.map +1 -0
- package/dist/XIcon-Dz4rI_Hd.mjs.map +1 -0
- package/dist/_plugin-vue_export-helper-BOaGB7Aw.mjs +8 -0
- package/dist/aggregatorsApi-hyFtV8aL.mjs.map +1 -0
- package/dist/api-tznrp2lH.mjs.map +1 -0
- package/dist/apiUtils-D4ULJJbh.mjs.map +1 -0
- package/dist/buttons-cdGcewjB.mjs.map +1 -0
- package/dist/buttons-kyb_6P3e.mjs.map +1 -0
- package/dist/buttons-uGrbDDaA.mjs +113 -0
- package/dist/buttons-uGrbDDaA.mjs.map +1 -0
- package/dist/classicApi-BKNiWOG4.mjs +1790 -0
- package/dist/classicApi-BKNiWOG4.mjs.map +1 -0
- package/dist/classicApi-DC7iamat.mjs.map +1 -0
- package/dist/config-C73GMJpz.mjs +9 -0
- package/dist/config-C73GMJpz.mjs.map +1 -0
- package/dist/cookiesHelper-BQksSais.mjs +23 -0
- package/dist/cookiesHelper-BQksSais.mjs.map +1 -0
- package/dist/displayHelper-CpXshNzz.mjs +22 -0
- package/dist/displayHelper-CpXshNzz.mjs.map +1 -0
- package/dist/domHelper-DTMIrMbs.mjs +15 -0
- package/dist/domHelper-DTMIrMbs.mjs.map +1 -0
- package/dist/downloadHelper-CWLRMcjc.mjs +36 -0
- package/dist/downloadHelper-CWLRMcjc.mjs.map +1 -0
- package/dist/downloadHelper-DB969RNb.mjs.map +1 -0
- package/dist/educationen-B0PNsHqt.mjs +18 -0
- package/dist/educationen-B0PNsHqt.mjs.map +1 -0
- package/dist/educationfr-DnXyASTX.mjs +6 -0
- package/dist/educationfr-DnXyASTX.mjs.map +1 -0
- package/dist/emission-ByePXT9Y.mjs +33 -0
- package/dist/emission-ByePXT9Y.mjs.map +1 -0
- package/dist/emissionApi-WS6yl56a.mjs.map +1 -0
- package/dist/groupsApi-CecqFbyg.mjs.map +1 -0
- package/dist/i18n-l4HCrPF3.mjs.map +1 -0
- package/dist/icons-1GR2yFzw.mjs.map +1 -0
- package/dist/icons-B4eHXcRy.mjs +18 -0
- package/dist/icons-B4eHXcRy.mjs.map +1 -0
- package/dist/index.css +7208 -2
- package/dist/index.d.ts +1 -0
- package/dist/index.mjs +735 -408
- package/dist/index.mjs.map +1 -0
- package/dist/keys-TjlLYNQE.mjs +18 -0
- package/dist/keys-TjlLYNQE.mjs.map +1 -0
- package/dist/localisation-iXoGtJ3j.mjs +13 -0
- package/dist/localisation-iXoGtJ3j.mjs.map +1 -0
- package/dist/logo_saooti_play_black-BLx_RUuM.mjs +6 -0
- package/dist/logo_saooti_play_black-BLx_RUuM.mjs.map +1 -0
- package/dist/messages-Czjqh0tU.mjs +2679 -0
- package/dist/messages-Czjqh0tU.mjs.map +1 -0
- package/dist/organisation-CxyRYjC0.mjs +19 -0
- package/dist/organisation-CxyRYjC0.mjs.map +1 -0
- package/dist/ouest_france_logo-WOgdbVGH.mjs +6 -0
- package/dist/ouest_france_logo-WOgdbVGH.mjs.map +1 -0
- package/dist/playlistApi-LcxgQmJH.mjs.map +1 -0
- package/dist/podcast-Da9L7I5Q.mjs +76 -0
- package/dist/podcast-Da9L7I5Q.mjs.map +1 -0
- package/dist/podcastApi-5-MtD1l_.mjs.map +1 -0
- package/dist/rolldown-runtime-D7D4PA-g.mjs +13 -0
- package/dist/src/components/composable/usePresentationItem.d.ts +1 -1
- package/dist/src/i18n.d.ts +8 -1
- package/dist/src/locale/messages.d.ts +30 -0
- package/dist/src/stores/ParamSdkStore.d.ts +6 -1
- package/dist/src/stores/class/general/organisation.d.ts +2 -0
- package/dist/stringHelper-DFr4Khve.mjs +15 -0
- package/dist/stringHelper-DFr4Khve.mjs.map +1 -0
- package/dist/tests-mocks.mjs +16 -14
- package/dist/tests-mocks.mjs.map +1 -0
- package/dist/tests.mjs +86 -51
- package/dist/tests.mjs.map +1 -0
- package/dist/transcriptionApi-Drk3sv6J.mjs.map +1 -0
- package/dist/types-8roXR0of.mjs +11 -0
- package/dist/types-8roXR0of.mjs.map +1 -0
- package/dist/useAdvancedParamInit-Ci4c333p.mjs +162 -0
- package/dist/useAdvancedParamInit-Ci4c333p.mjs.map +1 -0
- package/dist/useAdvancedParamInit-CpNDHede.mjs.map +1 -0
- package/dist/useCountdown-DPweZzmz.mjs +51 -0
- package/dist/useCountdown-DPweZzmz.mjs.map +1 -0
- package/dist/useDayjs-BqojyoqU.mjs +32 -0
- package/dist/useDayjs-BqojyoqU.mjs.map +1 -0
- package/dist/useDayjs-zt5R5ZIe.mjs.map +1 -0
- package/dist/useErrorHandler-DNz9da5N.mjs +19 -0
- package/dist/useErrorHandler-DNz9da5N.mjs.map +1 -0
- package/dist/useErrorHandler-Nce0QKlB.mjs.map +1 -0
- package/dist/useImageProxy-B2vNJKgd.mjs +20 -0
- package/dist/useImageProxy-B2vNJKgd.mjs.map +1 -0
- package/dist/useImageProxy-C7wjiN0F.mjs.map +1 -0
- package/dist/useOrgaComputed-D8ikvtGw.mjs.map +1 -0
- package/dist/useOrgaComputed-T8Mhcne0.mjs +19 -0
- package/dist/useOrgaComputed-T8Mhcne0.mjs.map +1 -0
- package/dist/usePlayerLogicProgress-CSdUmqxN.mjs +108 -0
- package/dist/usePlayerLogicProgress-CSdUmqxN.mjs.map +1 -0
- package/dist/usePlayerLogicProgress-DnNbZCWg.mjs.map +1 -0
- package/dist/usePodcastView-BJw3J1sE.mjs.map +1 -0
- package/dist/usePodcastView-DR83HM0j.mjs +56 -0
- package/dist/usePodcastView-DR83HM0j.mjs.map +1 -0
- package/dist/usePresentationItem-BLUjp4Le.mjs.map +1 -0
- package/dist/usePresentationItem-C28KKH4P.mjs.map +1 -0
- package/dist/usePresentationItem-rJkFlZFu.mjs +144 -0
- package/dist/usePresentationItem-rJkFlZFu.mjs.map +1 -0
- package/dist/useResizePhone-CpfFUmfV.mjs +37 -0
- package/dist/useResizePhone-CpfFUmfV.mjs.map +1 -0
- package/dist/useRights-JVTbEOUh.mjs +276 -0
- package/dist/useRights-JVTbEOUh.mjs.map +1 -0
- package/dist/useRights-Z6_G-y4s.mjs.map +1 -0
- package/dist/useRouteUpdateParams-DurlddRA.mjs +59 -0
- package/dist/useRouteUpdateParams-DurlddRA.mjs.map +1 -0
- package/dist/useRubriquesFilterComputed-CQxqKOWL.mjs.map +1 -0
- package/dist/useRubriquesFilterComputed-CWUxRSYK.mjs +13 -0
- package/dist/useRubriquesFilterComputed-CWUxRSYK.mjs.map +1 -0
- package/dist/useRubriquesFilterParam-D7JQhKT5.mjs.map +1 -0
- package/dist/useRubriquesFilterParam-U-wcZUul.mjs +36 -0
- package/dist/useRubriquesFilterParam-U-wcZUul.mjs.map +1 -0
- package/dist/useSeasonsManagement-D-ngDipg.mjs +44 -0
- package/dist/useSeasonsManagement-D-ngDipg.mjs.map +1 -0
- package/dist/useSelenium-DwQtyBRt.mjs +11 -0
- package/dist/useSelenium-DwQtyBRt.mjs.map +1 -0
- package/dist/useSeoTitleUrl-CrM1YzAc.mjs +31 -0
- package/dist/useSeoTitleUrl-CrM1YzAc.mjs.map +1 -0
- package/dist/useSharePath-Vh29oc9Z.mjs +70 -0
- package/dist/useSharePath-Vh29oc9Z.mjs.map +1 -0
- package/dist/useSharePlatforms-B8R3fZy9.mjs.map +1 -0
- package/dist/useSharePlatforms-D0v8XOk3.mjs.map +1 -0
- package/dist/useSharePlatforms-aq487WBa.mjs +415 -0
- package/dist/useSharePlatforms-aq487WBa.mjs.map +1 -0
- package/dist/useSimplePageParam-CL9Tbu3B.mjs.map +1 -0
- package/dist/useSimplePageParam-CPjjYD88.mjs +54 -0
- package/dist/useSimplePageParam-CPjjYD88.mjs.map +1 -0
- package/dist/useTagOf-JxYdEyRm.mjs +20 -0
- package/dist/useTagOf-JxYdEyRm.mjs.map +1 -0
- package/dist/useTranslation-B-nJSPAk.mjs +205 -0
- package/dist/useTranslation-B-nJSPAk.mjs.map +1 -0
- package/dist/useTranslation-DjbHwIm7.mjs.map +1 -0
- package/dist/usefetchRadioData-CHglTIFu.mjs.map +1 -0
- package/dist/usefetchRadioData-gMdg1_Yh.mjs +55 -0
- package/dist/usefetchRadioData-gMdg1_Yh.mjs.map +1 -0
- package/dist/youtubeVideoHelper-DOeaXxVp.mjs +16 -0
- package/dist/youtubeVideoHelper-DOeaXxVp.mjs.map +1 -0
- package/package.json +8 -8
- package/src/components/composable/usePresentationItem.ts +3 -1
- package/src/components/display/live/RadioCurrently.vue +3 -4
- package/src/components/layouts/PresentationItem.vue +8 -1
- package/src/components/layouts/PresentationLayout.vue +9 -3
- package/src/components/misc/ProgressBar.vue +0 -1
- package/src/components/misc/player/ads/AdsProgressBar.vue +17 -1
- package/src/components/misc/player/radio/RadioProgressBar.vue +16 -0
- package/src/stores/AuthStore.ts +10 -1
- package/dist/AccessibilityModal-CBIb3UQS.mjs +0 -93
- package/dist/AdsProgressBar-BwRrrKOT.mjs +0 -19
- package/dist/AdvancedSearch-CRM10skn.mjs +0 -249
- package/dist/AmazonMusicIcon-6zqZK6Q9.mjs +0 -39
- package/dist/ApplePodcastIcon-C3ogP5y5.mjs +0 -40
- package/dist/CategoryChooser-Ct0No4RM.mjs +0 -173
- package/dist/CategoryFilter-Brp-KFg7.mjs +0 -146
- package/dist/CategoryList-CMOJ2PnA.mjs +0 -107
- package/dist/CategoryPage-Bc37UcZy.mjs +0 -28
- package/dist/CategorySearchFilter-BRfxF0yK.mjs +0 -39
- package/dist/ChapteringModal-CyH6QLeE.mjs +0 -46
- package/dist/CheckIdentityModal-CHV9trKX.mjs +0 -51
- package/dist/ChooseEpisodesNumber-CXJO5dfs.mjs +0 -33
- package/dist/ClassicAccordion-Czni43ek.mjs +0 -71
- package/dist/ClassicAlert-1IB6N33c.mjs +0 -35
- package/dist/ClassicBigChip-D6QO8W-G.mjs +0 -25
- package/dist/ClassicCheckbox-xPu56Drn.mjs +0 -89
- package/dist/ClassicContentEditable-CWmtRihd.mjs +0 -45
- package/dist/ClassicCopyButton-DJ9T09fS.mjs +0 -52
- package/dist/ClassicDatePicker-BrPx6CHY.mjs +0 -187
- package/dist/ClassicEmojiPicker-2c55qjy6.mjs +0 -63
- package/dist/ClassicHelpButton-DdEJu6tX.mjs +0 -34
- package/dist/ClassicInputText-ILQDQz8R.mjs +0 -270
- package/dist/ClassicLazy-DhdsXyI4.mjs +0 -56
- package/dist/ClassicLoading-CXfMjpyl.mjs +0 -40
- package/dist/ClassicModal-Dl2IdzXZ.mjs +0 -63
- package/dist/ClassicModalInBody-D5-RfQ8Z.mjs +0 -58
- package/dist/ClassicMultiselect-DKdQdAtp.mjs +0 -201
- package/dist/ClassicNav-DYez6p1J.mjs +0 -47
- package/dist/ClassicPopover-6uo-YUgO.mjs +0 -167
- package/dist/ClassicRadio-BbJEgMB7.mjs +0 -61
- package/dist/ClassicRadioLabel-DgimkkQe.mjs +0 -76
- package/dist/ClassicSearch-CtL1cpnF.mjs +0 -63
- package/dist/ClassicSelect-BpA0jKN6.mjs +0 -111
- package/dist/ClassicSpinner-DFRDD51g.mjs +0 -28
- package/dist/ClassicTabs-DYOZLNK2.mjs +0 -40
- package/dist/ClassicTagInput-DiRwA8CF.mjs +0 -62
- package/dist/ClassicWysiwyg-CbBzD-21.mjs +0 -164
- package/dist/ClipboardModal-B0Jt9ME7.mjs +0 -56
- package/dist/CommentBasicView-CJgGRZXW.mjs +0 -76
- package/dist/CommentInput-ChEnqzNa.mjs +0 -111
- package/dist/CommentItem-BE3-5CFl.mjs +0 -155
- package/dist/CommentList-B0fDtqIH.mjs +0 -204
- package/dist/CommentMoreActions-DFTHxzHB.mjs +0 -191
- package/dist/CommentName-ByE5TV4u.mjs +0 -56
- package/dist/CommentParentInfo-DyzP495k.mjs +0 -36
- package/dist/CommentPlayer-2eRUFpll.mjs +0 -47
- package/dist/CommentSection-DQx3qX6H.mjs +0 -79
- package/dist/CommentStore-C4lkShsH.mjs +0 -279
- package/dist/ContractPreviewModal-BxOE6aiU.mjs +0 -53
- package/dist/CountDown-o6ye6yv1.mjs +0 -17
- package/dist/CountdownOctopus-D0X5hVBu.mjs +0 -23
- package/dist/DateFilter-67VvJ4ez.mjs +0 -79
- package/dist/DeezerIcon-CybxfijL.mjs +0 -39
- package/dist/DownloadPodcastButton-Dcgt8FfA.mjs +0 -30
- package/dist/EditCommentModal-K6D1-4gU.mjs +0 -114
- package/dist/EditFtpIcon-B1FO4hqc.mjs +0 -39
- package/dist/EmissionGroupChooser-B0UXS-d_.mjs +0 -44
- package/dist/EmissionInlineList-CRJ4pIxb.mjs +0 -113
- package/dist/EmissionItem-8WTkKsCa.mjs +0 -116
- package/dist/EmissionList-ucpW_ejS.mjs +0 -230
- package/dist/EmissionPage-B8Nlb52Y.mjs +0 -188
- package/dist/EmissionPlayerItem-BzuNcAsq.mjs +0 -119
- package/dist/EmissionPresentationItem-ZU93UKW2.mjs +0 -41
- package/dist/EmissionPresentationList-LY-FEWC2.mjs +0 -92
- package/dist/EmissionsPage-wzpDLmzO.mjs +0 -112
- package/dist/Error403Page-DLaOyud0.mjs +0 -40
- package/dist/ErrorMessage-B4gtlriP.mjs +0 -22
- package/dist/FooterGarSection-BwFRytaV.mjs +0 -39
- package/dist/FooterSection-VGdzyEZf.mjs +0 -148
- package/dist/GeneralStore-Darfv4af.mjs +0 -39
- package/dist/HomeDropdown-CNSPuJot.mjs +0 -66
- package/dist/HomePage-CGaCXQBm.mjs +0 -106
- package/dist/IHeartIcon-DP1otYre.mjs +0 -42
- package/dist/LikeButton-Cu8jAJHx.mjs +0 -40
- package/dist/LikeSection-D_q391TU.mjs +0 -96
- package/dist/ListPaginate-B-PYbP3K.mjs +0 -147
- package/dist/LiveHorizontalList-CDIDwBWJ.mjs +0 -77
- package/dist/LiveList-Dvxk12Cc.mjs +0 -206
- package/dist/LivesPage-BByFveAd.mjs +0 -40
- package/dist/MapPage-w7hUFr9g.mjs +0 -240
- package/dist/MessageModal-BcqS77v6.mjs +0 -101
- package/dist/MobileMenu-D19pTUkT.mjs +0 -136
- package/dist/MonetizableFilter-B7NHzXEY.mjs +0 -58
- package/dist/NewsletterModal-BekCWfJB.mjs +0 -53
- package/dist/OctopusMultiselect-CaLjXg_3.mjs +0 -234
- package/dist/OrganisationChooser-ywDaRPU9.mjs +0 -133
- package/dist/OrganisationChooserLight-CMNA-YR5.mjs +0 -48
- package/dist/PageLogout-CVZHOw8c.mjs +0 -12
- package/dist/PageNotFound-kY0Vk237.mjs +0 -37
- package/dist/PaginateParams-Bjz3ZI-5.mjs +0 -75
- package/dist/PaginateSection-Oip_5JHt.mjs +0 -137
- package/dist/ParticipantDescription-DVSfKvtg.mjs +0 -46
- package/dist/ParticipantInlineList-n3IcMXXU.mjs +0 -84
- package/dist/ParticipantItem-CoS5qVct.mjs +0 -91
- package/dist/ParticipantPage-CqwpZDjv.mjs +0 -129
- package/dist/ParticipantsPage-BzZFxuAX.mjs +0 -168
- package/dist/PlayVideoIcon-BhTQpMyL.mjs +0 -40
- package/dist/PlayerAnonymousModal-Clf2m_PO.mjs +0 -61
- package/dist/PlayerCommonParameters-x0zV7AoW.mjs +0 -27
- package/dist/PlayerCompact-ff2-h0Ys.mjs +0 -128
- package/dist/PlayerComponent-BIZ29VAP.mjs +0 -592
- package/dist/PlayerFmIcon-D7gURz4r.mjs +0 -39
- package/dist/PlayerLarge-C958Fkm_.mjs +0 -128
- package/dist/PlayerParameters-kVBMXQIb.mjs +0 -173
- package/dist/PlayerPlayButton-DL0e7DAU.mjs +0 -231
- package/dist/PlayerProgressBar-DK9ClWaE.mjs +0 -67
- package/dist/PlayerStore-DlQZRxsf.mjs +0 -166
- package/dist/PlayerVideo-BRkaIXH7.mjs +0 -35
- package/dist/PlayerVideoDigiteka-CNfWw0hs.mjs +0 -59
- package/dist/PlayerVideoHls-Czu2Xvob.mjs +0 -125
- package/dist/PlayerYoutubeEmbed-D-UrFhXm.mjs +0 -25
- package/dist/PlaylistPage-BV_3q5Pg.mjs +0 -135
- package/dist/PlaylistsPage-g82vXz51.mjs +0 -254
- package/dist/PocketCastIcon-CM5NDsDa.mjs +0 -39
- package/dist/PodcastAddictIcon-CW3Uxj4I.mjs +0 -42
- package/dist/PodcastFilterList-CpH9ALL0.mjs +0 -139
- package/dist/PodcastImage-Kr7qE9PW.mjs +0 -115
- package/dist/PodcastInlineList-CSPSuPXn.mjs +0 -117
- package/dist/PodcastInlineListTemplate-CBGWengl.mjs +0 -180
- package/dist/PodcastIsPlaying-CvZMCgrV.mjs +0 -17
- package/dist/PodcastItem-B6xZ9spO.mjs +0 -158
- package/dist/PodcastList-DM2kODR9.mjs +0 -113
- package/dist/PodcastList-DN7U6G3x.mjs +0 -184
- package/dist/PodcastPage-ClPlzjJY.mjs +0 -409
- package/dist/PodcastPlannedSpinner-DcDDays8.mjs +0 -12
- package/dist/PodcastPlayBar-C-7lR6Or.mjs +0 -39
- package/dist/PodcastPlayBasicButton-akh9XtTL.mjs +0 -44
- package/dist/PodcastPlayButton-CqjJC_GT.mjs +0 -118
- package/dist/PodcastPlaylistInlineList-DTJpiuMG.mjs +0 -63
- package/dist/PodcastPresentationList-B0D9wjP2.mjs +0 -130
- package/dist/PodcastProgressBar-CIf_zX6H.mjs +0 -66
- package/dist/PodcastRawTranscript-EqIv2k5F.mjs +0 -100
- package/dist/PodcastRubriqueList-DCchX3n9.mjs +0 -46
- package/dist/PodcastSeasonInfo-DDGSqj8M.mjs +0 -28
- package/dist/PodcastSwiperList-PSwifeRx.mjs +0 -164
- package/dist/PodcastmakerHeader-DpCkSoQE.mjs +0 -33
- package/dist/PodcastsPage-CSWymx6J.mjs +0 -123
- package/dist/PresentationLayout-LcZqb8bn.mjs +0 -62
- package/dist/ProductorSearch-l_LHvS3J.mjs +0 -91
- package/dist/ProgressBar-CB9kEepm.mjs +0 -112
- package/dist/QrCode-D-3wdYEC.mjs +0 -105
- package/dist/QrCodeModal-BAk2VQzU.mjs +0 -43
- package/dist/RadioCurrently-r21pyYBe.mjs +0 -57
- package/dist/RadioHistory-BNqw7gzG.mjs +0 -89
- package/dist/RadioImage-IbBgMDUL.mjs +0 -46
- package/dist/RadioList-CLjDwo6u.mjs +0 -70
- package/dist/RadioPage-Bx4i1Mpi.mjs +0 -72
- package/dist/RadioPlanning-Br27Ttix.mjs +0 -183
- package/dist/RadioProgressBar-Cb3AfYLQ.mjs +0 -31
- package/dist/RadiolineIcon-CxHZGhfr.mjs +0 -40
- package/dist/RecaptchaModal-CxtAdOpC.mjs +0 -95
- package/dist/ReportAbuseModal-iggcskxa.mjs +0 -92
- package/dist/RightsIndicator-D_7amy65.mjs +0 -58
- package/dist/RightsWrapper-Bo6Xza5_.mjs +0 -104
- package/dist/RubriqueChoice-DWvVVaMg.mjs +0 -101
- package/dist/RubriqueChooser-B7wvJeQc.mjs +0 -165
- package/dist/RubriqueFilter-CJDRNtiD.mjs +0 -119
- package/dist/RubriqueList-CISdSdFN.mjs +0 -117
- package/dist/RubriquePage-C8CF_iFS.mjs +0 -71
- package/dist/SearchOrder-D_dAhj9M.mjs +0 -62
- package/dist/SearchPage-DvLjGwKI.mjs +0 -38
- package/dist/ShareAnonymous-GQ600Owz.mjs +0 -189
- package/dist/ShareModalPlayer-pB-HAwc-.mjs +0 -87
- package/dist/ShareNewsletter-Cdyw0GB9.mjs +0 -143
- package/dist/SharePlayer-XribbnSm.mjs +0 -210
- package/dist/SharePlayerColors-BpdifsHh.mjs +0 -49
- package/dist/SharePlayerRadio-Co0G90iE.mjs +0 -66
- package/dist/SharePlayerTypes-Crlc6fV2.mjs +0 -148
- package/dist/ShareSocialsButtons-oPwpAJiG.mjs +0 -100
- package/dist/SimpleLayout-DO6e66-u.mjs +0 -22
- package/dist/SmartLinkPage-Bfe3J2rs.mjs +0 -131
- package/dist/SnackBar-BL-mLRun.mjs +0 -128
- package/dist/SubscribeButtons-BsUSeVE2.mjs +0 -120
- package/dist/SwiperList-05VP6fwg.mjs +0 -119
- package/dist/TagList-CpH_cvNv.mjs +0 -80
- package/dist/TagPage-B7mbRbqr.mjs +0 -79
- package/dist/TopBar-DljepaOt.mjs +0 -260
- package/dist/TuninIcon-DENNxlP8.mjs +0 -39
- package/dist/UserButtonContent-B20fPV-J.mjs +0 -125
- package/dist/VastStore-8IiEgtQW.mjs +0 -71
- package/dist/VideoModuleBox-DJdYQGMX.mjs +0 -58
- package/dist/VideoPage-Bllo2Q-Y.mjs +0 -148
- package/dist/XIcon-DNBT2Zgf.mjs +0 -39
- package/dist/_plugin-vue_export-helper-B3ysoDQm.mjs +0 -8
- package/dist/buttons-CWMRsA_g.mjs +0 -79
- package/dist/classicApi-CT9k0xvp.mjs +0 -1176
- package/dist/config-DMjLBcZ2.mjs +0 -7
- package/dist/cookiesHelper-BQ3M1-Xr.mjs +0 -20
- package/dist/displayHelper-DQtoqc_6.mjs +0 -11
- package/dist/domHelper-BPw2kGCL.mjs +0 -12
- package/dist/downloadHelper-DkfB6XQg.mjs +0 -23
- package/dist/educationen-KT401RLo.mjs +0 -16
- package/dist/educationfr-BIafOUp-.mjs +0 -4
- package/dist/emission-CQ1VuxRc.mjs +0 -22
- package/dist/icons-aOUoelo6.mjs +0 -11
- package/dist/keys-CV5SBM1i.mjs +0 -4
- package/dist/localisation-CBnt682X.mjs +0 -9
- package/dist/logo_saooti_play_black-Doe3es2H.mjs +0 -4
- package/dist/messages-DxUrH00s.mjs +0 -2677
- package/dist/organisation-JgfYj1Jp.mjs +0 -17
- package/dist/ouest_france_logo-9dPaEPNA.mjs +0 -4
- package/dist/podcast-BoNHyuLe.mjs +0 -53
- package/dist/rolldown-runtime-Dy4uBu1J.mjs +0 -11
- package/dist/stringHelper-8Cu4x0-T.mjs +0 -13
- package/dist/types-BMNwRfo9.mjs +0 -8
- package/dist/useAdvancedParamInit-Y3eC3aep.mjs +0 -111
- package/dist/useCountdown-vXzlLAgF.mjs +0 -32
- package/dist/useDayjs-ayZHsoc2.mjs +0 -28
- package/dist/useErrorHandler-Chh24Net.mjs +0 -12
- package/dist/useImageProxy-C_wlfbSP.mjs +0 -16
- package/dist/useOrgaComputed-CmlIJ5XC.mjs +0 -16
- package/dist/usePlayerLogicProgress-B0mjPIEj.mjs +0 -68
- package/dist/usePodcastView-wkow7peQ.mjs +0 -31
- package/dist/usePresentationItem-C37nsJnQ.mjs +0 -100
- package/dist/useResizePhone-4hSkK5pa.mjs +0 -28
- package/dist/useRights-CXa0yDii.mjs +0 -221
- package/dist/useRouteUpdateParams-DJLm3IAI.mjs +0 -55
- package/dist/useRubriquesFilterComputed-goozXeIB.mjs +0 -11
- package/dist/useRubriquesFilterParam-CrsdD0Oj.mjs +0 -32
- package/dist/useSeasonsManagement-DwbmJywJ.mjs +0 -24
- package/dist/useSelenium-DAM6EF3J.mjs +0 -9
- package/dist/useSeoTitleUrl-UfPXDCPa.mjs +0 -25
- package/dist/useSharePath-D9G8Jdlb.mjs +0 -40
- package/dist/useSharePlatforms-B7Xnf_If.mjs +0 -322
- package/dist/useSimplePageParam-D6TmZIPG.mjs +0 -39
- package/dist/useTagOf-Btweq3v2.mjs +0 -17
- package/dist/useTranslation-D3t40JaE.mjs +0 -139
- package/dist/usefetchRadioData-knVpkZCB.mjs +0 -48
- package/dist/youtubeVideoHelper-Cdlokujb.mjs +0 -14
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"VideoPage-B-lgTFnX.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,222 @@
|
|
|
1
|
+
import { t as ClassicLoading_default } from "./ClassicLoading-DZLIyuUd.mjs";
|
|
2
|
+
import { i as useAuthStore, r as useFilterStore, t as classicApi_default, w as useApiStore } from "./classicApi-BKNiWOG4.mjs";
|
|
3
|
+
import { n as usePlayerStore } from "./PlayerStore-DB5dkc3c.mjs";
|
|
4
|
+
import { t as useGeneralStore } from "./GeneralStore-CUlq_NjO.mjs";
|
|
5
|
+
import { t as useErrorHandler } from "./useErrorHandler-DNz9da5N.mjs";
|
|
6
|
+
import { t as useSeoTitleUrl } from "./useSeoTitleUrl-CrM1YzAc.mjs";
|
|
7
|
+
import { t as useCommentStore } from "./CommentStore-BjQ0AGHa.mjs";
|
|
8
|
+
import { t as ClassicNav_default } from "./ClassicNav-P2h4OFEY.mjs";
|
|
9
|
+
import { t as usePodcastView } from "./usePodcastView-DR83HM0j.mjs";
|
|
10
|
+
import { Fragment, computed, createBlock, createCommentVNode, createElementBlock, createElementVNode, createSlots, createTextVNode, createVNode, defineAsyncComponent, defineComponent, onBeforeUnmount, openBlock, ref, renderList, resolveComponent, toDisplayString, unref, watch, withCtx } from "vue";
|
|
11
|
+
import { useI18n } from "vue-i18n";
|
|
12
|
+
import { useRoute } from "vue-router";
|
|
13
|
+
import ChevronLeftIcon from "vue-material-design-icons/ChevronLeft.vue";
|
|
14
|
+
//#region src/components/pages/VideoPage.vue?vue&type=script&setup=true&lang.ts
|
|
15
|
+
var _hoisted_1 = { class: "page-box" };
|
|
16
|
+
var _hoisted_2 = {
|
|
17
|
+
key: 0,
|
|
18
|
+
class: "d-flex video-page-container"
|
|
19
|
+
};
|
|
20
|
+
var _hoisted_3 = { class: "w-70-responsive" };
|
|
21
|
+
var _hoisted_4 = {
|
|
22
|
+
key: 1,
|
|
23
|
+
class: "d-flex flex-column align-items-center flex-grow-1 blue-bg p-3"
|
|
24
|
+
};
|
|
25
|
+
var _hoisted_5 = { class: "w-30-responsive info-video-container" };
|
|
26
|
+
var _hoisted_6 = { class: "d-flex flex-column flex-grow-1 w-100" };
|
|
27
|
+
var _hoisted_7 = {
|
|
28
|
+
key: 1,
|
|
29
|
+
class: "text-center text-danger h3"
|
|
30
|
+
};
|
|
31
|
+
//#endregion
|
|
32
|
+
//#region src/components/pages/VideoPage.vue
|
|
33
|
+
var VideoPage_default = /* @__PURE__ */ defineComponent({
|
|
34
|
+
__name: "VideoPage",
|
|
35
|
+
props: { podcastId: {
|
|
36
|
+
default: 0,
|
|
37
|
+
type: Number
|
|
38
|
+
} },
|
|
39
|
+
setup(__props) {
|
|
40
|
+
const PlayerVideoDigiteka = defineAsyncComponent(() => import("./PlayerVideoDigiteka-CiTtloWK.mjs"));
|
|
41
|
+
const PlayerVideoHls = defineAsyncComponent(() => import("./PlayerVideoHls-DjAlSV39.mjs"));
|
|
42
|
+
const CommentSection = defineAsyncComponent(() => import("./CommentSection-Bz6q4N6d.mjs"));
|
|
43
|
+
const VideoModuleBox = defineAsyncComponent(() => import("./VideoModuleBox-Cl6YoznO.mjs"));
|
|
44
|
+
const CountdownOctopus = defineAsyncComponent(() => import("./CountdownOctopus-CR9zvBmW.mjs"));
|
|
45
|
+
const props = __props;
|
|
46
|
+
const loaded = ref(false);
|
|
47
|
+
const podcast = ref(void 0);
|
|
48
|
+
const error = ref(false);
|
|
49
|
+
const activeTab = ref(0);
|
|
50
|
+
const configPodcast = ref(void 0);
|
|
51
|
+
const podcastConference = ref(void 0);
|
|
52
|
+
const intervalStatusConference = ref(void 0);
|
|
53
|
+
const { isLiveReadyToRecord, isCounter, timeRemaining, date, duration, durationIso, editRight } = usePodcastView(podcast, podcastConference);
|
|
54
|
+
const { handle403 } = useErrorHandler();
|
|
55
|
+
const { updatePathParams } = useSeoTitleUrl();
|
|
56
|
+
const authStore = useAuthStore();
|
|
57
|
+
const apiStore = useApiStore();
|
|
58
|
+
const generalStore = useGeneralStore();
|
|
59
|
+
const playerStore = usePlayerStore();
|
|
60
|
+
const filterStore = useFilterStore();
|
|
61
|
+
const commentStore = useCommentStore();
|
|
62
|
+
const { t } = useI18n();
|
|
63
|
+
const route = useRoute();
|
|
64
|
+
const videoId = computed(() => podcast.value?.video?.videoId);
|
|
65
|
+
const canPostComment = computed(() => {
|
|
66
|
+
return commentStore.getCanPostComment(configPodcast.value, podcast.value, void 0 !== authStore.authOrgaId);
|
|
67
|
+
});
|
|
68
|
+
const tabs = computed(() => {
|
|
69
|
+
if (canPostComment.value) return [t("Information"), t("Comments")];
|
|
70
|
+
return [];
|
|
71
|
+
});
|
|
72
|
+
const recordingLive = computed(() => {
|
|
73
|
+
return void 0 !== podcastConference.value && -1 !== podcastConference.value.conferenceId && ("RECORDING" === podcastConference.value.status || "PENDING" === podcastConference.value.status);
|
|
74
|
+
});
|
|
75
|
+
const hlsVideoUrl = computed(() => {
|
|
76
|
+
if (!recordingLive.value || !podcastConference.value) return "";
|
|
77
|
+
return `${apiStore.hlsUrl}live/video_${podcastConference.value.hlsIdentifier}/index.m3u8`;
|
|
78
|
+
});
|
|
79
|
+
const isSecured = computed(() => {
|
|
80
|
+
return "SECURED" === podcast.value?.organisation?.privacy;
|
|
81
|
+
});
|
|
82
|
+
const overrideText = computed(() => {
|
|
83
|
+
if ("PUBLISHING" !== podcastConference.value?.status) return;
|
|
84
|
+
return t("In the process of being published");
|
|
85
|
+
});
|
|
86
|
+
watch(() => props.podcastId, async () => {
|
|
87
|
+
await getPodcastDetails();
|
|
88
|
+
if (!podcast.value) return;
|
|
89
|
+
commentStore.initCommentUser();
|
|
90
|
+
configPodcast.value = await commentStore.getCommentsConfig(podcast.value);
|
|
91
|
+
}, { immediate: true });
|
|
92
|
+
onBeforeUnmount(() => {
|
|
93
|
+
clearInterval(intervalStatusConference.value);
|
|
94
|
+
});
|
|
95
|
+
async function getPodcastDetails() {
|
|
96
|
+
loaded.value = false;
|
|
97
|
+
error.value = false;
|
|
98
|
+
try {
|
|
99
|
+
podcast.value = await classicApi_default.fetchData({
|
|
100
|
+
api: 0,
|
|
101
|
+
path: "podcast/" + props.podcastId
|
|
102
|
+
});
|
|
103
|
+
document.title = podcast.value.title + " - " + generalStore.metaTitle;
|
|
104
|
+
const orga = podcast.value.organisation;
|
|
105
|
+
const privateAccess = "PUBLIC" !== orga.privacy && filterStore.filterOrgaId !== orga.id && route.query.productor !== orga.id;
|
|
106
|
+
const notValid = (!podcast.value.availability.visibility || ![
|
|
107
|
+
"READY_TO_RECORD",
|
|
108
|
+
"READY",
|
|
109
|
+
"PROCESSING"
|
|
110
|
+
].includes(podcast.value.processingStatus ?? "") || !podcast.value.valid) && !editRight.value;
|
|
111
|
+
if (privateAccess || notValid) error.value = true;
|
|
112
|
+
else {
|
|
113
|
+
updatePathParams(podcast.value.title);
|
|
114
|
+
if (podcast.value.conferenceId && "READY" !== podcast.value.processingStatus) {
|
|
115
|
+
await fetchConferenceStatus();
|
|
116
|
+
intervalStatusConference.value = setInterval(() => {
|
|
117
|
+
fetchConferenceStatus();
|
|
118
|
+
}, 3e3);
|
|
119
|
+
playerStore.playerPlay({
|
|
120
|
+
...podcast.value,
|
|
121
|
+
conferenceId: podcast.value.conferenceId,
|
|
122
|
+
hlsIdentifier: podcastConference.value?.hlsIdentifier
|
|
123
|
+
}, true);
|
|
124
|
+
}
|
|
125
|
+
}
|
|
126
|
+
} catch (errorCatched) {
|
|
127
|
+
handle403(errorCatched);
|
|
128
|
+
error.value = true;
|
|
129
|
+
}
|
|
130
|
+
loaded.value = true;
|
|
131
|
+
}
|
|
132
|
+
async function fetchConferenceStatus() {
|
|
133
|
+
if (!podcast.value?.conferenceId) return;
|
|
134
|
+
const data = await classicApi_default.fetchData({
|
|
135
|
+
api: 9,
|
|
136
|
+
path: "conference/info/" + podcast.value.conferenceId
|
|
137
|
+
});
|
|
138
|
+
podcastConference.value = {
|
|
139
|
+
...data,
|
|
140
|
+
conferenceId: podcast.value.conferenceId,
|
|
141
|
+
title: ""
|
|
142
|
+
};
|
|
143
|
+
if ("DEBRIEFING" === data.status) clearInterval(intervalStatusConference.value);
|
|
144
|
+
}
|
|
145
|
+
return (_ctx, _cache) => {
|
|
146
|
+
const _component_router_link = resolveComponent("router-link");
|
|
147
|
+
return openBlock(), createElementBlock("section", _hoisted_1, [
|
|
148
|
+
loaded.value && !error.value ? (openBlock(), createElementBlock(Fragment, { key: 0 }, [createVNode(_component_router_link, {
|
|
149
|
+
to: {
|
|
150
|
+
name: "podcast",
|
|
151
|
+
params: { podcastId: __props.podcastId }
|
|
152
|
+
},
|
|
153
|
+
class: "mt-3 mb-3 w-fit-content d-flex align-items-center",
|
|
154
|
+
title: unref(t)("Episode name page", { name: podcast.value?.title })
|
|
155
|
+
}, {
|
|
156
|
+
default: withCtx(() => [createVNode(ChevronLeftIcon), createTextVNode(toDisplayString(unref(t)("Episode page")), 1)]),
|
|
157
|
+
_: 1
|
|
158
|
+
}, 8, ["to", "title"]), videoId.value || unref(isLiveReadyToRecord) ? (openBlock(), createElementBlock("div", _hoisted_2, [createElementVNode("div", _hoisted_3, [unref(isLiveReadyToRecord) ? (openBlock(), createElementBlock(Fragment, { key: 0 }, [recordingLive.value ? (openBlock(), createBlock(unref(PlayerVideoHls), {
|
|
159
|
+
key: 0,
|
|
160
|
+
"hls-url": hlsVideoUrl.value,
|
|
161
|
+
"is-secured": isSecured.value,
|
|
162
|
+
responsive: true
|
|
163
|
+
}, null, 8, ["hls-url", "is-secured"])) : createCommentVNode("", true), unref(isCounter) || overrideText.value ? (openBlock(), createElementBlock("div", _hoisted_4, [createVNode(unref(CountdownOctopus), {
|
|
164
|
+
"time-remaining": unref(timeRemaining),
|
|
165
|
+
"override-text": overrideText.value
|
|
166
|
+
}, null, 8, ["time-remaining", "override-text"])])) : createCommentVNode("", true)], 64)) : (openBlock(), createBlock(unref(PlayerVideoDigiteka), {
|
|
167
|
+
key: 1,
|
|
168
|
+
"video-id": videoId.value,
|
|
169
|
+
"podcast-id": __props.podcastId,
|
|
170
|
+
responsive: ""
|
|
171
|
+
}, null, 8, ["video-id", "podcast-id"]))]), createElementVNode("div", _hoisted_5, [createElementVNode("div", _hoisted_6, [tabs.value.length ? (openBlock(), createBlock(ClassicNav_default, {
|
|
172
|
+
key: 0,
|
|
173
|
+
"active-tab": activeTab.value,
|
|
174
|
+
"onUpdate:activeTab": _cache[0] || (_cache[0] = ($event) => activeTab.value = $event),
|
|
175
|
+
"tab-number": tabs.value.length,
|
|
176
|
+
transparent: true
|
|
177
|
+
}, createSlots({
|
|
178
|
+
tab0: withCtx(() => [createVNode(unref(VideoModuleBox), {
|
|
179
|
+
podcast: podcast.value,
|
|
180
|
+
date: unref(date),
|
|
181
|
+
duration: unref(duration)
|
|
182
|
+
}, null, 8, [
|
|
183
|
+
"podcast",
|
|
184
|
+
"date",
|
|
185
|
+
"duration"
|
|
186
|
+
])]),
|
|
187
|
+
tab1: withCtx(() => [createElementVNode("section", null, [createVNode(unref(CommentSection), {
|
|
188
|
+
podcast: podcast.value,
|
|
189
|
+
class: "module-box-transparent"
|
|
190
|
+
}, null, 8, ["podcast"])])]),
|
|
191
|
+
_: 2
|
|
192
|
+
}, [renderList(tabs.value, (tab, index) => {
|
|
193
|
+
return {
|
|
194
|
+
name: index,
|
|
195
|
+
fn: withCtx(() => [createTextVNode(toDisplayString(tab), 1)])
|
|
196
|
+
};
|
|
197
|
+
})]), 1032, ["active-tab", "tab-number"])) : (openBlock(), createBlock(unref(VideoModuleBox), {
|
|
198
|
+
key: 1,
|
|
199
|
+
class: "p-2 video-module-box",
|
|
200
|
+
podcast: podcast.value,
|
|
201
|
+
date: unref(date),
|
|
202
|
+
duration: unref(duration),
|
|
203
|
+
"duration-iso": unref(durationIso)
|
|
204
|
+
}, null, 8, [
|
|
205
|
+
"podcast",
|
|
206
|
+
"date",
|
|
207
|
+
"duration",
|
|
208
|
+
"duration-iso"
|
|
209
|
+
]))])])])) : createCommentVNode("", true)], 64)) : createCommentVNode("", true),
|
|
210
|
+
!error.value && !videoId.value && !unref(isLiveReadyToRecord) ? (openBlock(), createElementBlock("div", _hoisted_7, toDisplayString(unref(t)("The episode does not have an associated video")), 1)) : createCommentVNode("", true),
|
|
211
|
+
createVNode(ClassicLoading_default, {
|
|
212
|
+
"loading-text": !loaded.value ? unref(t)("Loading content ...") : void 0,
|
|
213
|
+
"error-text": error.value ? unref(t)(`This episode is not available for (re)listening`) : void 0
|
|
214
|
+
}, null, 8, ["loading-text", "error-text"])
|
|
215
|
+
]);
|
|
216
|
+
};
|
|
217
|
+
}
|
|
218
|
+
});
|
|
219
|
+
//#endregion
|
|
220
|
+
export { VideoPage_default as default };
|
|
221
|
+
|
|
222
|
+
//# sourceMappingURL=VideoPage-B5Tp2PMs.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"VideoPage-B5Tp2PMs.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-X3dZyaQH.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,49 @@
|
|
|
1
|
+
import { t as __exportAll } from "./rolldown-runtime-D7D4PA-g.mjs";
|
|
2
|
+
import { createElementBlock, createElementVNode, defineComponent, openBlock } from "vue";
|
|
3
|
+
//#region src/components/icons/XIcon.vue?vue&type=script&setup=true&lang.ts
|
|
4
|
+
var _hoisted_1 = ["aria-hidden", "title"];
|
|
5
|
+
var _hoisted_2 = [
|
|
6
|
+
"fill",
|
|
7
|
+
"height",
|
|
8
|
+
"width"
|
|
9
|
+
];
|
|
10
|
+
var XIcon_vue_vue_type_script_setup_true_lang_default = /*@__PURE__*/ defineComponent({
|
|
11
|
+
__name: "XIcon",
|
|
12
|
+
props: {
|
|
13
|
+
size: {
|
|
14
|
+
default: 24,
|
|
15
|
+
type: Number
|
|
16
|
+
},
|
|
17
|
+
title: {
|
|
18
|
+
default: void 0,
|
|
19
|
+
type: String
|
|
20
|
+
},
|
|
21
|
+
fillColor: {
|
|
22
|
+
default: "currentColor",
|
|
23
|
+
type: String
|
|
24
|
+
}
|
|
25
|
+
},
|
|
26
|
+
setup(__props) {
|
|
27
|
+
return (_ctx, _cache) => {
|
|
28
|
+
return openBlock(), createElementBlock("span", {
|
|
29
|
+
"aria-hidden": !__props.title,
|
|
30
|
+
class: "material-design-icon",
|
|
31
|
+
title: __props.title
|
|
32
|
+
}, [(openBlock(), createElementBlock("svg", {
|
|
33
|
+
xmlns: "http://www.w3.org/2000/svg",
|
|
34
|
+
viewBox: "-300 -300 1800 1827",
|
|
35
|
+
fill: __props.fillColor,
|
|
36
|
+
height: __props.size,
|
|
37
|
+
width: __props.size
|
|
38
|
+
}, [..._cache[0] || (_cache[0] = [createElementVNode("path", { d: "M714.163 519.284L1160.89 0H1055.03L667.137 450.887L357.328 0H0L468.492 681.821L0 1226.37H105.866L515.491 750.218L842.672 1226.37H1200L714.137 519.284H714.163ZM569.165 687.828L521.697 619.934L144.011 79.6944H306.615L611.412 515.685L658.88 583.579L1055.08 1150.3H892.476L569.165 687.854V687.828Z" }, null, -1)])], 8, _hoisted_2))], 8, _hoisted_1);
|
|
39
|
+
};
|
|
40
|
+
}
|
|
41
|
+
});
|
|
42
|
+
//#endregion
|
|
43
|
+
//#region src/components/icons/XIcon.vue
|
|
44
|
+
var XIcon_exports = /* @__PURE__ */ __exportAll({ default: () => XIcon_default });
|
|
45
|
+
var XIcon_default = XIcon_vue_vue_type_script_setup_true_lang_default;
|
|
46
|
+
//#endregion
|
|
47
|
+
export { XIcon_exports as n, XIcon_default as t };
|
|
48
|
+
|
|
49
|
+
//# sourceMappingURL=XIcon-DAVMitPh.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"XIcon-DAVMitPh.mjs","names":[],"sources":["../src/components/icons/XIcon.vue","../src/components/icons/XIcon.vue"],"sourcesContent":["<template>\n <span\n :aria-hidden=\"!title\"\n class=\"material-design-icon\"\n :title=\"title\"\n >\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n viewBox=\"-300 -300 1800 1827\"\n :fill=\"fillColor\"\n :height=\"size\"\n :width=\"size\"\n >\n <path\n d=\"M714.163 519.284L1160.89 0H1055.03L667.137 450.887L357.328 0H0L468.492 681.821L0 1226.37H105.866L515.491 750.218L842.672 1226.37H1200L714.137 519.284H714.163ZM569.165 687.828L521.697 619.934L144.011 79.6944H306.615L611.412 515.685L658.88 583.579L1055.08 1150.3H892.476L569.165 687.854V687.828Z\"\n />\n </svg>\n </span>\n</template>\n\n<script setup lang=\"ts\">\n//Props \ndefineProps({\n size: { default: 24, type: Number },\n title: { default: undefined, type: String },\n fillColor: { default: \"currentColor\", type: String },\n})\n</script>\n","<template>\n <span\n :aria-hidden=\"!title\"\n class=\"material-design-icon\"\n :title=\"title\"\n >\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n viewBox=\"-300 -300 1800 1827\"\n :fill=\"fillColor\"\n :height=\"size\"\n :width=\"size\"\n >\n <path\n d=\"M714.163 519.284L1160.89 0H1055.03L667.137 450.887L357.328 0H0L468.492 681.821L0 1226.37H105.866L515.491 750.218L842.672 1226.37H1200L714.137 519.284H714.163ZM569.165 687.828L521.697 619.934L144.011 79.6944H306.615L611.412 515.685L658.88 583.579L1055.08 1150.3H892.476L569.165 687.854V687.828Z\"\n />\n </svg>\n </span>\n</template>\n\n<script setup lang=\"ts\">\n//Props \ndefineProps({\n size: { default: 24, type: Number },\n title: { default: undefined, type: String },\n fillColor: { default: \"currentColor\", type: String },\n})\n</script>\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;uBACE,mBAgBO,QAAA;IAfJ,eAAW,CAAG,QAAA;IACf,OAAM;IACL,OAAO,QAAA;qBAER,mBAUM,OAAA;IATJ,OAAM;IACN,SAAQ;IACP,MAAM,QAAA;IACN,QAAQ,QAAA;IACR,OAAO,QAAA;qCAER,mBAEE,QAAA,EADA,GAAE,wSAAuS,GAAA,MAAA,EAAA,CAAA,EAAA,GAAA,GAAA,UAAA,EAAA,GAAA,GAAA,UAAA"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"XIcon-Dz4rI_Hd.mjs","names":[],"sources":["../src/components/icons/XIcon.vue","../src/components/icons/XIcon.vue"],"sourcesContent":["<template>\n <span\n :aria-hidden=\"!title\"\n class=\"material-design-icon\"\n :title=\"title\"\n >\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n viewBox=\"-300 -300 1800 1827\"\n :fill=\"fillColor\"\n :height=\"size\"\n :width=\"size\"\n >\n <path\n d=\"M714.163 519.284L1160.89 0H1055.03L667.137 450.887L357.328 0H0L468.492 681.821L0 1226.37H105.866L515.491 750.218L842.672 1226.37H1200L714.137 519.284H714.163ZM569.165 687.828L521.697 619.934L144.011 79.6944H306.615L611.412 515.685L658.88 583.579L1055.08 1150.3H892.476L569.165 687.854V687.828Z\"\n />\n </svg>\n </span>\n</template>\n\n<script setup lang=\"ts\">\n//Props \ndefineProps({\n size: { default: 24, type: Number },\n title: { default: undefined, type: String },\n fillColor: { default: \"currentColor\", type: String },\n})\n</script>\n","<template>\n <span\n :aria-hidden=\"!title\"\n class=\"material-design-icon\"\n :title=\"title\"\n >\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n viewBox=\"-300 -300 1800 1827\"\n :fill=\"fillColor\"\n :height=\"size\"\n :width=\"size\"\n >\n <path\n d=\"M714.163 519.284L1160.89 0H1055.03L667.137 450.887L357.328 0H0L468.492 681.821L0 1226.37H105.866L515.491 750.218L842.672 1226.37H1200L714.137 519.284H714.163ZM569.165 687.828L521.697 619.934L144.011 79.6944H306.615L611.412 515.685L658.88 583.579L1055.08 1150.3H892.476L569.165 687.854V687.828Z\"\n />\n </svg>\n </span>\n</template>\n\n<script setup lang=\"ts\">\n//Props \ndefineProps({\n size: { default: 24, type: Number },\n title: { default: undefined, type: String },\n fillColor: { default: \"currentColor\", type: String },\n})\n</script>\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;qBCCE,mBAgBO,QAAA;EAfJ,eAAW,CAAG,OAAA;EACf,OAAM;EACL,OAAO,OAAA;mBAER,mBAUM,OAAA;EATJ,OAAM;EACN,SAAQ;EACP,MAAM,OAAA;EACN,QAAQ,OAAA;EACR,OAAO,OAAA;mCAER,mBAEE,QAAA,EADA,GAAE,wSAAuS,GAAA,MAAA,EAAA,CAAA,EAAA,GAAA,GAAA,UAAA,EAAA,GAAA,GAAA,UAAA"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
//#region \0plugin-vue:export-helper
|
|
2
|
+
var _plugin_vue_export_helper_default = (sfc, props) => {
|
|
3
|
+
const target = sfc.__vccOpts || sfc;
|
|
4
|
+
for (const [key, val] of props) target[key] = val;
|
|
5
|
+
return target;
|
|
6
|
+
};
|
|
7
|
+
//#endregion
|
|
8
|
+
export { _plugin_vue_export_helper_default as t };
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"aggregatorsApi-hyFtV8aL.mjs","names":[],"sources":["../src/api/aggregatorsApi.ts"],"sourcesContent":["import { ModuleApi } from \"./apiConnection\";\nimport classicApi from \"./classicApi\";\n\nexport interface Aggregator {\n /** ID of the aggregator */\n aggregatorId: number;\n /** Name of the aggregator */\n name: string;\n /** User who created this aggregator */\n createdBy: string;\n /** Link to image for aggregator */\n image?: string;\n /** IP criteria */\n ip?: string;\n /** IP range criteria */\n ipRange?: string;\n /** Regex for referer criteria */\n refererRegexp?: string;\n /** Slug criteria */\n slug?: string;\n /** Regex for user agent criteria */\n uaRegexp?: string;\n}\n\nexport type PredefinedAggregator = Pick<Aggregator, 'name' | 'image'>;\n\n/**\n * Return the list of predefined aggregators\n */\nasync function getPredefined(): Promise<Array<PredefinedAggregator>> {\n return classicApi.fetchData<Array<PredefinedAggregator>>({\n api: ModuleApi.DEFAULT,\n path: 'rss/aggregator/distributions'\n });\n}\n\n/**\n * Return the list of all user-defined aggregators\n * @param organisationId If defined, the aggregators will be filtered for this\n * organisation\n */\nasync function getAll(organisationId?: string): Promise<Array<Aggregator>> {\n return classicApi.fetchData<Array<Aggregator>>({\n api: ModuleApi.DEFAULT,\n path: 'rss/aggregator/list',\n parameters: organisationId ? { organisationId } : undefined\n });\n}\n\n/**\n * Return the list of all user-defined aggregators, without filter data.\n * This doesn't require to be authenticated.\n * @param organisationId If defined, the aggregators will be filtered for this\n * organisation\n */\nasync function getAllNoAuth(organisationId?: string): Promise<Array<PredefinedAggregator>> {\n return classicApi.fetchData<Array<Aggregator>>({\n api: ModuleApi.DEFAULT,\n path: 'rss/aggregator/noauth/list',\n parameters: organisationId ? { organisationId } : undefined\n });\n}\n\nexport const aggregatorsApi = {\n getPredefined,\n getAll,\n getAllNoAuth\n};\n"],"mappings":";;;;;AA6BA,eAAe,gBAAsD;CACjE,OAAO,mBAAW,UAAuC;EACrD,KAAK,UAAU;EACf,MAAM;CACV,CAAC;AACL;;;;;;AAOA,eAAe,OAAO,gBAAqD;CACvE,OAAO,mBAAW,UAA6B;EAC3C,KAAK,UAAU;EACf,MAAM;EACN,YAAY,iBAAiB,EAAE,eAAe,IAAI,KAAA;CACtD,CAAC;AACL;;;;;;;AAQA,eAAe,aAAa,gBAA+D;CACvF,OAAO,mBAAW,UAA6B;EAC3C,KAAK,UAAU;EACf,MAAM;EACN,YAAY,iBAAiB,EAAE,eAAe,IAAI,KAAA;CACtD,CAAC;AACL;AAEA,IAAa,iBAAiB;CAC1B;CACA;CACA;AACJ"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"api-tznrp2lH.mjs","names":[],"sources":["../src/api/radioApi.ts","../src/api/mediathequeApi.ts","../src/stores/CacheStore.ts","../src/api/rubriquesApi.ts"],"sourcesContent":["import { Ambiance, Canal } from \"../stores/class/radio/canal\";\nimport classicApi from \"./classicApi\";\nimport { ModuleApi } from \"./apiConnection\";\n\n/**\n * Retrieve a radio canal by its id\n * @param radioId Id of the radio to retrieve\n * @returns The canal data\n */\nasync function get(radioId: number): Promise<Canal> {\n return classicApi.fetchData<Canal>({\n api: ModuleApi.RADIO,\n path: `canal/${radioId}`\n });\n}\n\n/**\n * Retrieve all radio canal by organisation\n * @param organisationId Id of the organisation\n * @returns The list of canal data\n */\nasync function getAll(organisationId: string): Promise<Array<Canal>> {\n return await classicApi.fetchData<Array<Canal>>({\n api: ModuleApi.RADIO,\n path: \"canal/orga/\" + organisationId + \"/\"\n });\n}\n\n/**\n * Set the default ambiance for the given canal\n * @param canalId ID of the canal to change\n * @param ambiance New ambiance settings\n * @returns The modified ambiance\n */\nasync function setDefaultAmbiance(canalId: number, ambiance: Ambiance): Promise<Ambiance> {\n return await classicApi.putData<Ambiance>({\n api: ModuleApi.RADIO,\n path: `ambiance/canal/${canalId}/default`,\n dataToSend: ambiance\n });\n \n}\n\nexport const radioApi = {\n get,\n getAll,\n setDefaultAmbiance\n};\n","import { PlaylistMedia } from \"../stores/class/radio/playlistMedia\";\nimport { Mix } from \"../stores/class/radio/mix\";\nimport { ModuleApi } from \"./apiConnection\";\nimport classicApi from \"./classicApi\";\nimport { Cartouchier } from \"@/stores/class/cartouchier/cartouchier\";\n\n/**\n * Retrieve all cartouchier from the given organisation\n * @param organisationId The ID of the organisation\n * @param options Filtering options\n * @returns List of cartouchier belonging to the organisation\n */\nasync function getAllCartouchiers(organisationId: string, options?: { ownerId?: string }): Promise<Array<Cartouchier>> {\n return classicApi.fetchData<Array<Cartouchier>>({\n api: ModuleApi.MEDIA,\n path: `cartouchier/list/${organisationId}`,\n parameters: options\n });\n}\n\n/**\n * Retrieve all mix from the given organisation\n * @param organisationId The ID of the organisation\n * @returns List of mix belonging to the organisation\n */\nasync function getAllMix(organisationId: string): Promise<Array<Mix>> {\n return classicApi.fetchData<Array<Mix>>({\n api: ModuleApi.MEDIA,\n path: `mix/${organisationId}`\n });\n}\n\n/**\n * Delete mix with the given id\n * @param mixId The ID of the mix to delete\n */\nasync function deleteMix(mixId: number): Promise<void> {\n await classicApi.deleteData({\n api: ModuleApi.MEDIA,\n path: `mix/${mixId}`\n });\n}\n\n/**\n * Retrieve all playlist from the given organisation\n * @param organisationId The ID of the organisation\n * @param options Filtering options\n * @returns List of playlist belonging to the organisation\n */\nasync function getAllPlaylists(organisationId: string, options?: { ownerId?: string }): Promise<Array<PlaylistMedia>> {\n return classicApi.fetchData<Array<PlaylistMedia>>({\n api: ModuleApi.MEDIA,\n path: `playlist/${organisationId}`,\n parameters: options\n });\n}\n\n/**\n * Delete playlist with the given id\n * @param playlistId The ID of the playlist to delete\n */\nasync function deletePlaylist(playlistId: number): Promise<void> {\n await classicApi.deleteData({\n api: ModuleApi.MEDIA,\n path: `playlist/${playlistId}`\n });\n}\n\nexport const mediathequeApi = {\n getAllCartouchiers,\n getAllMix,\n deleteMix,\n getAllPlaylists,\n deletePlaylist\n}\n","import dayjs, { Dayjs } from \"dayjs\";\nimport { defineStore } from \"pinia\";\n\n/**\n * Type for cache storage\n */\ninterface CachedData<T> {\n /** The in-flight or resolved data, shared by concurrent callers */\n data: Promise<T>;\n /** Expiration date of the cached data */\n expiration: Dayjs;\n}\n\nexport const useCacheStore = defineStore('cache', () => {\n\n const cachedData: Record<string, CachedData<unknown>> = {};\n\n async function getData<T>(key: string, callback: () => Promise<T>): Promise<T> {\n let cache = cachedData[key] as CachedData<T>|undefined;\n if (isDataEmptyOrExpired(cache)) {\n // Store the promise immediately so concurrent callers share this fetch\n const data = callback();\n const expiration = dayjs().add(30, 'minutes');\n cache = { data, expiration };\n cachedData[key] = cache;\n // Don't keep a failed fetch cached: let the next call retry\n data.catch(() => invalidate(key));\n }\n\n return cache.data;\n }\n\n function invalidate(key: string): void {\n delete cachedData[key];\n }\n\n function isDataEmptyOrExpired(data: CachedData<unknown>|undefined): boolean {\n if (!data) {\n return true;\n } else {\n return dayjs().isAfter(data.expiration);\n }\n }\n\n return {\n getData,\n invalidate\n };\n});\n","import { Rubrique } from \"@/stores/class/rubrique/rubrique\";\nimport { Rubriquage } from \"@/stores/class/rubrique/rubriquage\";\nimport { useCacheStore } from \"@/stores/CacheStore\";\nimport classicApi, { type APIOptions } from \"./classicApi\";\nimport { ModuleApi } from \"./apiConnection\";\n\n////////////////////////////////////////////////////////////////////////////////\n// Rubriquage\n////////////////////////////////////////////////////////////////////////////////\n/**\n * Find rubriquages according to criterias\n * @param organisationIds List of organisation IDs for which to retrieve the\n * rubriquage\n * @param searchOptions Additional search options\n */\nasync function searchRubriquages(organisationIds: Array<string>, searchOptions?: {\n rubriquageId?: number;\n organisationId?: string|Array<string>;\n query?: string;\n}, options?: APIOptions): Promise<Array<Rubriquage>> {\n return classicApi.fetchData<Array<Rubriquage>>({\n api: ModuleApi.DEFAULT,\n path: 'rubriquage/find',\n parameters: {\n organisationId: organisationIds,\n ...searchOptions\n },\n specialTreatement: options?.adaptParameters\n });\n}\n/**\n * Create a new rubriquage\n * @param data The new rubriquage data\n * @returns The created rubriquage\n */\nasync function createRubriquage(data: Omit<Rubriquage, 'rubriquageId'>): Promise<Rubriquage> {\n return classicApi.postData<Rubriquage>({\n api: ModuleApi.DEFAULT,\n path: \"rubriquage/\",\n dataToSend: data\n });\n}\n\n/**\n * Fetch rubriquage data by ID\n * @param rubriquageId ID of the rubriquage to fetch\n * @returns The rubriquage\n */\nasync function getRubriquage(rubriquageId: number): Promise<Rubriquage> {\n return classicApi.fetchData<Rubriquage>({\n api: ModuleApi.DEFAULT,\n path: `rubriquage/${rubriquageId}`\n });\n}\n\n/**\n * Update the values of the rubriquage\n * @param data The new rubriquage data\n * @returns The updated rubriquage\n */\nasync function updateRubriquage(data: Rubriquage): Promise<Rubriquage> {\n return classicApi.putData<Rubriquage>({\n api: ModuleApi.DEFAULT,\n path: \"rubriquage/\",\n dataToSend: data\n });\n}\n\n/**\n * Delete a rubriquage\n * @param data Either the rubriquage to delete, or its ID\n * @returns An empty promise\n */\nasync function deleteRubriquage(data: Rubriquage|number): Promise<void> {\n const rubriquageId = typeof data === 'object' ?\n data.rubriquageId :\n data;\n \n await classicApi.deleteData<void>({\n api: ModuleApi.DEFAULT,\n path: \"rubriquage/\" + rubriquageId\n });\n}\n\n////////////////////////////////////////////////////////////////////////////////\n// Rubriques\n////////////////////////////////////////////////////////////////////////////////\nasync function searchRubriques(searchOptions?: {\n rubriquageId?: number;\n organisationId?: string|Array<string>;\n query?: string;\n}): Promise<Array<Rubrique>> {\n return classicApi.fetchData<Array<Rubrique>>({\n api: ModuleApi.DEFAULT,\n path: 'rubrique/search',\n parameters: searchOptions\n });\n}\n\n/**\n * Fetch rubrique data by ID\n * @see getCachedRubrique\n * @param rubriqueId ID of the rubrique to fetch\n * @returns The rubrique\n */\nasync function getRubrique(rubriqueId: number): Promise<Rubrique> {\n return classicApi.fetchData<Rubrique>({\n api: ModuleApi.DEFAULT,\n path: `rubrique/${rubriqueId}`\n });\n}\n\n/**\n * Fetch rubrique data by ID\n * If the rubrique is available in the cache, return it from the cache\n * @param rubriqueId ID of the rubrique to fetch\n * @returns The rubrique\n */\nasync function getCachedRubrique(rubriqueId: number): Promise<Rubrique> {\n const cacheStore = useCacheStore();\n return cacheStore.getData(`rubrique-${rubriqueId}`, () => getRubrique(rubriqueId));\n}\n\n////////////////////////////////////////////////////////////////////////////////\n// Scope\n////////////////////////////////////////////////////////////////////////////////\n/**\n * List the rubrique IDS associated to the given user\n * @param userId The ID of the user for which to retrieve this data\n * @returns The list of IDs of rubriques\n */\nasync function listUserScope(userId: string): Promise<Array<number>> {\n return classicApi.fetchData<Array<number>>({\n api: ModuleApi.DEFAULT,\n path: `rubrique/user/list/rubriques/${userId}`\n });\n}\n\n/**\n * List the user IDS associated to the given rubrique\n * @param rubriqueId The ID of the rubrique for which to retrieve this data\n * @returns The list of IDs of users\n */\nasync function listUsersScopedByRubrique(rubriqueId: string): Promise<Array<string>> {\n return classicApi.fetchData<Array<string>>({\n api: ModuleApi.DEFAULT,\n path: `rubrique/user/list/users/${rubriqueId}`\n });\n}\n\n/**\n * Update the associated rubriques to the user\n * @param userId The ID of the user for which to change the rights scope\n * @param previousScope Previous rubrique IDs\n * @param rubriqueIds New rubrique IDs to set\n * @returns A promise\n */\nasync function setUserScope(userId: string, previousScope: Array<number>, rubriqueIds: Array<number>): Promise<void> {\n\n const associatedIds: Array<number> = [];\n const dissociatedIds: Array<number> = [];\n const promises: Array<Promise<void>> = [];\n\n // Create a set containing all ids, will iterare over all of them to check\n // whether to add or remove them\n const allIds = new Set<number>();\n previousScope.forEach(allIds.add, allIds);\n rubriqueIds.forEach(allIds.add, allIds);\n\n\n // Find out which IDs need to be added/remove\n allIds.forEach(id => {\n const inOld = previousScope.includes(id);\n const inNew = rubriqueIds.includes(id);\n\n if (inOld && !inNew) {\n dissociatedIds.push(id);\n } else if (!inOld && inNew) {\n associatedIds.push(id);\n }\n })\n\n // API call for adding rubriques\n if (associatedIds.length > 0) {\n promises.push(classicApi.postData({\n api: ModuleApi.DEFAULT,\n path: 'rubrique/user/associate',\n dataToSend: {\n rubriqueIds: associatedIds,\n userIds: [userId]\n }\n }));\n }\n\n // API call for removing rubriques\n if (dissociatedIds.length > 0) {\n promises.push(classicApi.postData({\n api: ModuleApi.DEFAULT,\n path: 'rubrique/user/dissociate',\n dataToSend: {\n rubriqueIds: dissociatedIds,\n userIds: [userId]\n }\n }));\n }\n\n return Promise.all(promises).then();\n}\n\nexport const rubriquesApi = {\n createRubriquage,\n getRubriquage,\n getRubrique,\n getCachedRubrique,\n searchRubriquages,\n searchRubriques,\n updateRubriquage,\n deleteRubriquage,\n listUserScope,\n listUsersScopedByRubrique,\n setUserScope\n};\n"],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"apiUtils-D4ULJJbh.mjs","names":[],"sources":["../src/api/apiUtils.ts"],"sourcesContent":["/**\n * Utility function to easily convert a list of IDs to a map of id => element\n * @param ID The type of ID for the element\n * @param T The type of element to retrieve\n * @param ids The list of ids\n * @param getter A function that given an ID, returns a promise of the matching element\n * @param key The key for the ID\n * @return A promise containing a map of ID => element\n */\nexport async function mapFromGetAll<ID extends string|number, T extends object >(ids: Array<ID>, getter: (id: ID) => Promise<T>, key: keyof T): Promise<Record<string, T>> {\n const results: Record<string, T> = {};\n const promises: Array<Promise<T>> = [];\n\n // Retrieve data for each id\n ids.forEach((id: ID) => {\n const promise = getter(id).then(elt => results['' + elt[key]] = elt);\n promises.push(promise);\n });\n\n // Wait for all promises to finish\n await Promise.all(promises);\n\n return results;\n}\n\n"],"mappings":";;;;;;;;;;AASA,eAAsB,cAA2D,KAAgB,QAAgC,KAA0C;CACvK,MAAM,UAA6B,CAAC;CACpC,MAAM,WAA8B,CAAC;CAGrC,IAAI,SAAS,OAAW;EACpB,MAAM,UAAU,OAAO,EAAE,EAAE,MAAK,QAAO,QAAQ,KAAK,IAAI,QAAQ,GAAG;EACnE,SAAS,KAAK,OAAO;CACzB,CAAC;CAGD,MAAM,QAAQ,IAAI,QAAQ;CAE1B,OAAO;AACX"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"buttons-cdGcewjB.mjs","names":[],"sources":["../src/components/buttons/ActionButton.vue","../src/components/buttons/ActionButton.vue","../src/components/buttons/ClassicButton.vue","../src/components/buttons/ClassicButton.vue"],"sourcesContent":["<template>\n <div>\n <!-- The button with an icon to trigger the action -->\n <button\n class=\"btn btn-transparent\"\n :title=\"action\"\n @click=\"onClick\"\n >\n <component :is=\"icon\" />\n </button>\n\n <!-- Modal to ask for confirmation -->\n <MessageModal\n v-if=\"showModal\"\n :title=\"confirmModal.title\"\n :message=\"confirmModal.message\"\n :validatetext=\"$t('Yes')\"\n :canceltext=\"$t('No')\"\n @validate=\"onConfirmModal\"\n @cancel=\"showModal = false\"\n @close=\"showModal = false\"\n />\n </div>\n</template>\n\n<script setup lang=\"ts\">\nimport { type Component, computed, ref } from 'vue';\nimport MessageModal from '../misc/modal/MessageModal.vue'; \nimport Icons from '../icons';\n\n/** Actions available to the button */\nenum Action {\n Edit = 'edit',\n Delete = 'delete'\n}\n\nexport interface ConfirmModalData {\n title: string;\n message: string;\n}\n\nconst { action, confirmModal } = defineProps<{\n /** The type of action provided by the button */\n action: Action;\n /** When set, clicking on the button will first open a confirm modal */\n confirmModal?: ConfirmModalData;\n}>();\n\nconst emit = defineEmits<{\n /**\n * Event trigger when the button is clicked, or after confirmation in the\n * modal if `withConfirmModal` is true.\n */\n (e: 'click'): void\n}>();\n\n/************************\n * Using button\n ***********************/\n\n/** Method called when clicking on button */\nfunction onClick(): void {\n if (confirmModal === undefined) {\n emit('click');\n } else {\n showModal.value = true;\n }\n}\n\n/***********************\n * Modal\n **********************/\n/** Display modal when true */\nconst showModal = ref(false);\n\n/** Method called when the modal is validated */\nfunction onConfirmModal(): void {\n showModal.value = false;\n emit('click');\n}\n\n/***********************\n * Button appearance\n **********************/\n\n/** The icon displayed by the button */\nconst icon = computed((): Component => {\n switch (action) {\n case Action.Edit:\n return Icons.Edit;\n\n case Action.Delete:\n return Icons.Delete;\n\n default:\n return;\n }\n});\n</script>\n","<template>\n <div>\n <!-- The button with an icon to trigger the action -->\n <button\n class=\"btn btn-transparent\"\n :title=\"action\"\n @click=\"onClick\"\n >\n <component :is=\"icon\" />\n </button>\n\n <!-- Modal to ask for confirmation -->\n <MessageModal\n v-if=\"showModal\"\n :title=\"confirmModal.title\"\n :message=\"confirmModal.message\"\n :validatetext=\"$t('Yes')\"\n :canceltext=\"$t('No')\"\n @validate=\"onConfirmModal\"\n @cancel=\"showModal = false\"\n @close=\"showModal = false\"\n />\n </div>\n</template>\n\n<script setup lang=\"ts\">\nimport { type Component, computed, ref } from 'vue';\nimport MessageModal from '../misc/modal/MessageModal.vue'; \nimport Icons from '../icons';\n\n/** Actions available to the button */\nenum Action {\n Edit = 'edit',\n Delete = 'delete'\n}\n\nexport interface ConfirmModalData {\n title: string;\n message: string;\n}\n\nconst { action, confirmModal } = defineProps<{\n /** The type of action provided by the button */\n action: Action;\n /** When set, clicking on the button will first open a confirm modal */\n confirmModal?: ConfirmModalData;\n}>();\n\nconst emit = defineEmits<{\n /**\n * Event trigger when the button is clicked, or after confirmation in the\n * modal if `withConfirmModal` is true.\n */\n (e: 'click'): void\n}>();\n\n/************************\n * Using button\n ***********************/\n\n/** Method called when clicking on button */\nfunction onClick(): void {\n if (confirmModal === undefined) {\n emit('click');\n } else {\n showModal.value = true;\n }\n}\n\n/***********************\n * Modal\n **********************/\n/** Display modal when true */\nconst showModal = ref(false);\n\n/** Method called when the modal is validated */\nfunction onConfirmModal(): void {\n showModal.value = false;\n emit('click');\n}\n\n/***********************\n * Button appearance\n **********************/\n\n/** The icon displayed by the button */\nconst icon = computed((): Component => {\n switch (action) {\n case Action.Edit:\n return Icons.Edit;\n\n case Action.Delete:\n return Icons.Delete;\n\n default:\n return;\n }\n});\n</script>\n","<!-- A simple button with accessibility in mind -->\n<template>\n <button\n :class=\"classes\"\n :aria-disabled=\"disabled\"\n :title=\"title\"\n :aria-label=\"title\"\n @click=\"onClick\"\n >\n <slot />\n </button>\n</template>\n\n<script setup lang=\"ts\">\nimport { computed } from 'vue';\n\nconst props = defineProps<{\n /** Disable the button */\n disabled?: boolean;\n /** Title of the button */\n title?: string;\n /** Primary style for button */\n primary?: boolean;\n /** Icon style for button */\n icon?: boolean;\n}>();\n\nconst emit = defineEmits<{\n /** Emitted when the user clicks on the button */\n (e: 'click'): void;\n}>();\n\nconst classes = computed((): Array<string> => {\n const ary: Array<string> = ['btn', 'd-flex'];\n if (props.primary) {\n ary.push('btn-primary');\n }\n if (props.icon) {\n ary.push('btn-icon');\n }\n return ary;\n});\n\nfunction onClick(): void {\n if (!props.disabled) {\n emit('click');\n }\n}\n</script>\n","<!-- A simple button with accessibility in mind -->\n<template>\n <button\n :class=\"classes\"\n :aria-disabled=\"disabled\"\n :title=\"title\"\n :aria-label=\"title\"\n @click=\"onClick\"\n >\n <slot />\n </button>\n</template>\n\n<script setup lang=\"ts\">\nimport { computed } from 'vue';\n\nconst props = defineProps<{\n /** Disable the button */\n disabled?: boolean;\n /** Title of the button */\n title?: string;\n /** Primary style for button */\n primary?: boolean;\n /** Icon style for button */\n icon?: boolean;\n}>();\n\nconst emit = defineEmits<{\n /** Emitted when the user clicks on the button */\n (e: 'click'): void;\n}>();\n\nconst classes = computed((): Array<string> => {\n const ary: Array<string> = ['btn', 'd-flex'];\n if (props.primary) {\n ary.push('btn-primary');\n }\n if (props.icon) {\n ary.push('btn-icon');\n }\n return ary;\n});\n\nfunction onClick(): void {\n if (!props.disabled) {\n emit('click');\n }\n}\n</script>\n"],"mappings":";;;;;;AA+BA,IAAK,SAAL,yBAAA,QAAA;CACI,OAAA,UAAA;CACA,OAAA,YAAA;;AACJ,EAHK,UAAA,CAAA,CAGL;;;;;;;;;;;;;;;;EAcA,MAAM,OAAO;;;;;EAab,SAAS,UAAgB;GACrB,IAAI,QAAA,iBAAiB,KAAA,GACjB,KAAK,OAAO;QAEZ,UAAU,QAAQ;EAE1B;;;;;EAMA,MAAM,YAAY,IAAI,KAAK;;EAG3B,SAAS,iBAAuB;GAC5B,UAAU,QAAQ;GAClB,KAAK,OAAO;EAChB;;;;;;;SAOa,eAA0B;IACnC,QAAQ,QAAA,QAAR;KACI,KAAA,QACI,OAAO,cAAM;KAEjB,KAAA,UACI,OAAO,cAAM;KAEjB,SACI;IACR;GACJ,CAAA;;;;;;;;;;;;;;qBChGI,mBAqBM,OAAA,MAAA;EApBF,mBAAA,iDAAA;EACA,mBAMS,UAAA;GALL,OAAM;GACL,OAAO,OAAA;GACP,SAAO,OAAA;oBAER,YAAwB,wBAAR,OAAA,IAAI,CAAA,EAAA,GAAA,GAAA,YAAA;EAGxB,mBAAA,iCAAA;EAEU,OAAA,aAAA,UAAA,GADV,YASE,OAAA,iBAAA;;GAPG,OAAO,OAAA,aAAa;GACpB,SAAS,OAAA,aAAa;GACtB,cAAc,KAAA,GAAE,KAAA;GAChB,YAAY,KAAA,GAAE,IAAA;GACd,YAAU,OAAA;GACV,UAAM,OAAA,OAAA,OAAA,MAAA,WAAE,OAAA,YAAS;GACjB,SAAK,OAAA,OAAA,OAAA,MAAA,WAAE,OAAA,YAAS;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ECJ7B,MAAM,QAAQ;EAWd,MAAM,OAAO;EAKb,MAAM,UAAU,eAA8B;GAC1C,MAAM,MAAqB,CAAC,OAAO,QAAQ;GAC3C,IAAI,MAAM,SACN,IAAI,KAAK,aAAa;GAE1B,IAAI,MAAM,MACN,IAAI,KAAK,UAAU;GAEvB,OAAO;EACX,CAAC;EAED,SAAS,UAAgB;GACrB,IAAI,CAAC,MAAM,UACP,KAAK,OAAO;EAEpB;;;;;;;;;;;;;;;;;;;;;;qBC7CI,mBAQS,UAAA;EAPJ,OAAK,eAAE,OAAA,OAAO;EACd,iBAAe,OAAA;EACf,OAAO,OAAA;EACP,cAAY,OAAA;EACZ,SAAO,OAAA;KAER,WAAQ,KAAA,QAAA,SAAA,CAAA,GAAA,IAAA,UAAA"}
|