@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":"PlayerVideoDigiteka-Dn3neAtr.mjs","names":[],"sources":["../src/api/videoApi.ts","../src/components/misc/player/video/PlayerVideoDigiteka.vue","../src/components/misc/player/video/PlayerVideoDigiteka.vue"],"sourcesContent":["import { ModuleApi } from \"./apiConnection\";\nimport classicApi from \"./classicApi\";\n\n/**\n * Request the download ID from a video\n * @param podcastId The id of the podcast to be watched\n */\nasync function watchPodcast(podcastId: number): Promise<string> {\n return classicApi.fetchData<string>({\n api: ModuleApi.DEFAULT,\n path: 'video/watch/' + podcastId\n });\n}\n\nexport const videoApi = {\n watchPodcast\n}\n","<template>\n <div :class=\"responsive ? 'video-responsive-wrapper' : ''\">\n <iframe\n v-if=\"videoId\"\n ref=\"iframeVideo\"\n :src=\"srcVideo\"\n :title=\"t('Video')\"\n width=\"500\"\n height=\"281\"\n style=\"z-index: 1\"\n ebkitallowfullscreen=\"true\"\n mozallowfullscreen=\"true\"\n allowfullscreen=\"true\"\n allow=\"fullscreen; autoplay\"\n referrerpolicy=\"no-referrer-when-downgrade\"\n ></iframe>\n <SnackBar ref=\"snackbar\" position=\"bottom-left\" />\n </div>\n</template>\n\n<script setup lang=\"ts\">\nimport { useI18n } from \"vue-i18n\";\nimport SnackBar from \"../../SnackBar.vue\";\nimport { computed, onMounted, useTemplateRef } from \"vue\";\n\nimport { usePlayerLogicProgress } from \"../../../composable/player/usePlayerLogicProgress\";\nimport { videoApi } from \"../../../../api/videoApi\";\n\n//Props \nconst props = defineProps({\n videoId: { type: String, required: true },\n podcastId: { type: Number, required: false, default: null },\n responsive: { default: false, type: Boolean },\n})\n\n//Data\nconst snackBarRef = useTemplateRef('snackbar');\n\n//Composables\nconst { t } = useI18n();\nconst { onTimeUpdateProgress, setDownloadId } = usePlayerLogicProgress();\n\n//Computed\nconst srcVideo = computed(() => {\n return (\n \"//www.ultimedia.com/deliver/generic/iframe/mdtk/01009833/zone/1/showtitle/1/src/\" +\n props.videoId +\n \"/sound/yes/autoplay/1\"\n );\n});\n\nonMounted(async()=>{\n if (undefined === props.videoId) {\n (snackBarRef?.value as InstanceType<typeof SnackBar>).open(t(\"Podcast play error\"));\n }\n\n // #14118 cf https://support.digiteka.com/fr/API/Iframe#h-3-r%C3%A9ception-des-%C3%A9v%C3%A9nements-du-player\n window.addEventListener('message', event => {\n if (typeof event.data !== 'string') {\n return;\n }\n\n const data = Object.fromEntries(event.data.split('&').map(d => d.split('=')));\n if (data.event === 'timeupdate') {\n onTimeUpdateProgress(parseFloat(data.time));\n }\n });\n\n if (props.podcastId !== undefined) {\n const downloadId = await videoApi.watchPodcast(props.podcastId);\n setDownloadId(downloadId);\n }\n})\n</script>\n\n<style scoped lang=\"scss\">\n@use \"../../../../style/videoPlayer\";\n</style>\n","<template>\n <div :class=\"responsive ? 'video-responsive-wrapper' : ''\">\n <iframe\n v-if=\"videoId\"\n ref=\"iframeVideo\"\n :src=\"srcVideo\"\n :title=\"t('Video')\"\n width=\"500\"\n height=\"281\"\n style=\"z-index: 1\"\n ebkitallowfullscreen=\"true\"\n mozallowfullscreen=\"true\"\n allowfullscreen=\"true\"\n allow=\"fullscreen; autoplay\"\n referrerpolicy=\"no-referrer-when-downgrade\"\n ></iframe>\n <SnackBar ref=\"snackbar\" position=\"bottom-left\" />\n </div>\n</template>\n\n<script setup lang=\"ts\">\nimport { useI18n } from \"vue-i18n\";\nimport SnackBar from \"../../SnackBar.vue\";\nimport { computed, onMounted, useTemplateRef } from \"vue\";\n\nimport { usePlayerLogicProgress } from \"../../../composable/player/usePlayerLogicProgress\";\nimport { videoApi } from \"../../../../api/videoApi\";\n\n//Props \nconst props = defineProps({\n videoId: { type: String, required: true },\n podcastId: { type: Number, required: false, default: null },\n responsive: { default: false, type: Boolean },\n})\n\n//Data\nconst snackBarRef = useTemplateRef('snackbar');\n\n//Composables\nconst { t } = useI18n();\nconst { onTimeUpdateProgress, setDownloadId } = usePlayerLogicProgress();\n\n//Computed\nconst srcVideo = computed(() => {\n return (\n \"//www.ultimedia.com/deliver/generic/iframe/mdtk/01009833/zone/1/showtitle/1/src/\" +\n props.videoId +\n \"/sound/yes/autoplay/1\"\n );\n});\n\nonMounted(async()=>{\n if (undefined === props.videoId) {\n (snackBarRef?.value as InstanceType<typeof SnackBar>).open(t(\"Podcast play error\"));\n }\n\n // #14118 cf https://support.digiteka.com/fr/API/Iframe#h-3-r%C3%A9ception-des-%C3%A9v%C3%A9nements-du-player\n window.addEventListener('message', event => {\n if (typeof event.data !== 'string') {\n return;\n }\n\n const data = Object.fromEntries(event.data.split('&').map(d => d.split('=')));\n if (data.event === 'timeupdate') {\n onTimeUpdateProgress(parseFloat(data.time));\n }\n });\n\n if (props.podcastId !== undefined) {\n const downloadId = await videoApi.watchPodcast(props.podcastId);\n setDownloadId(downloadId);\n }\n})\n</script>\n\n<style scoped lang=\"scss\">\n@use \"../../../../style/videoPlayer\";\n</style>\n"],"mappings":";;;;;;;;;;;AAOA,eAAe,aAAa,WAAoC;CAC5D,OAAO,mBAAW,UAAkB;EAChC,KAAK,UAAU;EACf,MAAM,iBAAiB;CAC3B,CAAC;AACL;AAEA,IAAa,WAAW,EACpB,aACJ;;;;;;;;;;;;;;;;;;;;;;ECaA,MAAM,QAAQ;EAOd,MAAM,cAAc,eAAe,UAAU;EAG7C,MAAM,EAAE,MAAM,QAAQ;EACtB,MAAM,EAAE,sBAAsB,kBAAkB,uBAAuB;EAGvE,MAAM,WAAW,eAAe;GAC9B,OACE,qFACA,MAAM,UACN;EAEJ,CAAC;EAED,UAAU,YAAS;GACjB,IAAI,KAAA,MAAc,MAAM,SACtB,CAAC,aAAa,OAAwC,KAAK,EAAE,oBAAoB,CAAC;GAIpF,OAAO,iBAAiB,YAAW,UAAS;IAC1C,IAAI,OAAO,MAAM,SAAS,UACxB;IAGF,MAAM,OAAO,OAAO,YAAY,MAAM,KAAK,MAAM,GAAG,EAAE,KAAI,MAAK,EAAE,MAAM,GAAG,CAAC,CAAC;IAC5E,IAAI,KAAK,UAAU,cACjB,qBAAqB,WAAW,KAAK,IAAI,CAAC;GAE9C,CAAC;GAED,IAAI,MAAM,cAAc,KAAA,GAEtB,cAAc,MADW,SAAS,aAAa,MAAM,SAAS,CACtC;EAE5B,CAAC;;;;;;;;;;;;;;;;;;;;;qBCvEC,mBAgBM,OAAA,EAhBA,OAAK,eAAE,OAAA,aAAU,6BAAA,EAAA,EAAA,GAAA,CAEb,OAAA,WAAA,UAAA,GADR,mBAaU,UAAA;;EAXR,KAAI;EACH,KAAK,OAAA;EACL,OAAO,OAAA,EAAC,OAAA;EACT,OAAM;EACN,QAAO;EACP,OAAA,EAAA,WAAA,IAAA;EACA,sBAAqB;EACrB,oBAAmB;EACnB,iBAAgB;EAChB,OAAM;EACN,gBAAe;8DAEjB,YAAkD,OAAA,aAAA;EAAxC,KAAI;EAAW,UAAS"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"PlayerVideoHls-BJj1m924.mjs","names":[],"sources":["../src/components/misc/player/video/PlayerVideoHls.vue","../src/components/misc/player/video/PlayerVideoHls.vue"],"sourcesContent":["<template>\n <div\n id=\"player-video-hls\"\n class=\"video-player\"\n :class=\"responsive ? 'video-responsive-wrapper' : ''\"\n >\n <div v-if=\"errorPlay.length\" class=\"video-live-error\">{{ errorPlay }}</div>\n <video\n id=\"video-element-hls\"\n ref=\"videoelement\"\n class=\"video-js\"\n playsinline\n ></video>\n </div>\n</template>\n<script setup lang=\"ts\">\nimport { usePlayerStore } from \"../../../../stores/PlayerStore\";\nimport {usePlayerLogicProgress} from \"../../../composable/player/usePlayerLogicProgress\";\nimport videojs, { VideoJsPlayer } from \"video.js\";\nimport qualitySelectorHls from \"videojs-quality-selector-hls\";\nif (undefined === videojs.getPlugin(\"qualitySelectorHls\")) {\n videojs.registerPlugin(\"qualitySelectorHls\", qualitySelectorHls);\n}\nimport { computed, onMounted, onUnmounted, Ref, ref, useTemplateRef } from \"vue\";\nimport { useAuthStore } from \"../../../../stores/AuthStore\";\nimport { useI18n } from \"vue-i18n\";\n\n//Props \nconst props = defineProps({\n hlsUrl: { default: \"\", type: String },\n responsive: { default: false, type: Boolean },\n isSecured: { default: true, type: Boolean },\n})\n\n//Data\nconst errorPlay = ref(\"\");\nconst useVideoSrc = ref(false);\nconst player: Ref<VideoJsPlayer | undefined> = ref(false);\nconst playing = ref(false);\nconst isPaused = ref(false);\nconst stalledTimout: Ref<ReturnType<typeof setTimeout> | undefined> = ref(undefined);\nconst videoElementRef = useTemplateRef('videoelement');\n\n\n//Composables\nconst { t } = useI18n();\nconst { downloadId, initLiveDownloadId, onTimeUpdateProgress, endListeningProgress} = usePlayerLogicProgress();\nconst authStore = useAuthStore();\nconst playerStore = usePlayerStore();\n\n\n\n//Computed\nconst videoElement = computed(() => {\n return videoElementRef?.value as HTMLVideoElement;\n});\nconst videoOptions = computed(() => {\n return {\n autoplay: true,\n controls: true,\n liveui: true,\n sources: [\n {\n src: props.hlsUrl,\n type: \"application/x-mpegURL\",\n },\n ],\n html5: {\n vhs: {\n overrideNative: !videojs.browser.IS_SAFARI,\n },\n nativeAudioTracks: false,\n nativeVideoTracks: false,\n },\n };\n});\n\n\nonMounted(()=>{\n playerStore.playerUpdatePlayerHlsUrl(props.hlsUrl);\n useVideoSrc.value =\n \"\" !== videoElement.value.canPlayType(\"application/vnd.apple.mpegurl\") &&\n !navigator.userAgent.includes(\"Android\");\n playLive();\n})\n\nonUnmounted(()=>{\n if (playing.value) {\n stopLive();\n }\n})\n\n\n//Methods\nfunction definedStalledTimeout() {\n isPaused.value = false;\n stalledTimout.value = setTimeout(() => {\n if (isPaused.value) {\n return;\n }\n videoClean();\n playLive();\n }, 15000);\n}\nasync function playLive(): Promise<void> {\n clearTimeout(stalledTimout.value);\n definedStalledTimeout();\n await initLiveDownloadId();\n if (useVideoSrc.value) {\n playLiveIos();\n return;\n }\n if (props.isSecured && authStore.authParam.accessToken) {\n const globalXhrRequestHook = (options: any) => {\n options.beforeSend = (xhr: XMLHttpRequest) => {\n xhr.setRequestHeader(\"Authorization\", \"Bearer \"+authStore.authParam.accessToken);\n };\n return options;\n };\n videojs.Vhs.xhr.onRequest(globalXhrRequestHook);\n }\n player.value = videojs(\n document.getElementById(\"video-element-hls\") as Element,\n videoOptions.value,\n () => {\n player.value.qualitySelectorHls({ displayCurrentQuality: true });\n errorPlay.value = \"\";\n playing.value = true;\n },\n );\n player.value.on(\"error\", (error: any) => {\n stopLive();\n if (error.description?.includes(\"403\")) {\n errorPlay.value = t(\"Video is unavailable\");\n } else {\n errorPlay.value = t(\"Podcast play error\");\n }\n });\n player.value.on(\"seeking\", () => {\n playerStore.playerUpdateSeekTime(player.value?.currentTime() ?? 0);\n });\n player.value.on(\"pause\", () => {\n isPaused.value = true;\n });\n player.value.on(\"timeupdate\", () => {\n clearTimeout(stalledTimout.value);\n definedStalledTimeout();\n onTimeUpdateVideo();\n });\n player.value.on(\"seeking\", () => {\n playerStore.playerUpdateSeekTime(player.value?.currentTime() ?? 0);\n });\n}\n\nasync function playLiveIos(): Promise<void> {\n videoElement.value.onloadedmetadata = () => {\n const playPromise = videoElement.value.play();\n if (playPromise !== undefined) {\n playPromise\n .then(() => {\n errorPlay.value = \"\";\n playing.value = true;\n })\n .catch(() => {\n playing.value = false;\n });\n }\n };\n videoElement.value.onerror = async () => {\n stopLive();\n errorPlay.value = t(\"Podcast play error\");\n };\n videoElement.value.ontimeupdate = async () => {\n clearTimeout(stalledTimout.value);\n definedStalledTimeout();\n onTimeUpdateVideo();\n };\n videoElement.value.onpause = async () => {\n isPaused.value = true;\n };\n videoElement.value.onseeking = async () => {\n playerStore.playerUpdateSeekTime(videoElement.value.currentTime);\n };\n if (props.isSecured && authStore.authParam.accessToken) {\n videoElement.value.src = props.hlsUrl + \"access_token=\"+authStore.authParam.accessToken;\n }else{\n videoElement.value.src = props.hlsUrl;\n }\n videoElement.value.src = props.hlsUrl;\n}\n\nfunction videoClean(): void {\n if (useVideoSrc.value) {\n videoElement.value.pause();\n videoElement.value.removeAttribute(\"src\");\n videoElement.value.load();\n return;\n }\n if (player.value) {\n player.value.dispose();\n //Redraw\n const video_parent = document.getElementById(\"player-video-hls\");\n if (video_parent) {\n const video = document.createElement(\"video\");\n video.id = \"video-element-hls\";\n video.className = \"video-js\";\n video.preload = \"auto\";\n video.setAttribute(\"playsinline\", \"true\");\n video_parent.appendChild(video);\n }\n }\n}\nfunction stopLive(): void {\n clearTimeout(stalledTimout.value);\n errorPlay.value = \"\";\n videoClean();\n playing.value = false;\n endListeningProgress();\n}\nfunction onTimeUpdateVideo(): void {\n if (!downloadId.value) {\n return;\n }\n const currentTime =player.value?.currentTime() ?? videoElement.value.currentTime;\n onTimeUpdateProgress(currentTime);\n}\n</script>\n\n<style lang=\"scss\">\n@use \"video.js\";\n@use \"../../../../style/videoPlayer\";\n\n.octopus-app {\n .video-live-error {\n text-align: center;\n width: 100%;\n font-size: 1rem;\n font-weight: bold;\n padding: 0.2rem 0;\n color: white;\n position: absolute;\n top: 0;\n background: var(--octopus-danger);\n z-index: 1;\n }\n\n .video-js {\n width: 500px;\n height: 281px;\n }\n}\n</style>\n","<template>\n <div\n id=\"player-video-hls\"\n class=\"video-player\"\n :class=\"responsive ? 'video-responsive-wrapper' : ''\"\n >\n <div v-if=\"errorPlay.length\" class=\"video-live-error\">{{ errorPlay }}</div>\n <video\n id=\"video-element-hls\"\n ref=\"videoelement\"\n class=\"video-js\"\n playsinline\n ></video>\n </div>\n</template>\n<script setup lang=\"ts\">\nimport { usePlayerStore } from \"../../../../stores/PlayerStore\";\nimport {usePlayerLogicProgress} from \"../../../composable/player/usePlayerLogicProgress\";\nimport videojs, { VideoJsPlayer } from \"video.js\";\nimport qualitySelectorHls from \"videojs-quality-selector-hls\";\nif (undefined === videojs.getPlugin(\"qualitySelectorHls\")) {\n videojs.registerPlugin(\"qualitySelectorHls\", qualitySelectorHls);\n}\nimport { computed, onMounted, onUnmounted, Ref, ref, useTemplateRef } from \"vue\";\nimport { useAuthStore } from \"../../../../stores/AuthStore\";\nimport { useI18n } from \"vue-i18n\";\n\n//Props \nconst props = defineProps({\n hlsUrl: { default: \"\", type: String },\n responsive: { default: false, type: Boolean },\n isSecured: { default: true, type: Boolean },\n})\n\n//Data\nconst errorPlay = ref(\"\");\nconst useVideoSrc = ref(false);\nconst player: Ref<VideoJsPlayer | undefined> = ref(false);\nconst playing = ref(false);\nconst isPaused = ref(false);\nconst stalledTimout: Ref<ReturnType<typeof setTimeout> | undefined> = ref(undefined);\nconst videoElementRef = useTemplateRef('videoelement');\n\n\n//Composables\nconst { t } = useI18n();\nconst { downloadId, initLiveDownloadId, onTimeUpdateProgress, endListeningProgress} = usePlayerLogicProgress();\nconst authStore = useAuthStore();\nconst playerStore = usePlayerStore();\n\n\n\n//Computed\nconst videoElement = computed(() => {\n return videoElementRef?.value as HTMLVideoElement;\n});\nconst videoOptions = computed(() => {\n return {\n autoplay: true,\n controls: true,\n liveui: true,\n sources: [\n {\n src: props.hlsUrl,\n type: \"application/x-mpegURL\",\n },\n ],\n html5: {\n vhs: {\n overrideNative: !videojs.browser.IS_SAFARI,\n },\n nativeAudioTracks: false,\n nativeVideoTracks: false,\n },\n };\n});\n\n\nonMounted(()=>{\n playerStore.playerUpdatePlayerHlsUrl(props.hlsUrl);\n useVideoSrc.value =\n \"\" !== videoElement.value.canPlayType(\"application/vnd.apple.mpegurl\") &&\n !navigator.userAgent.includes(\"Android\");\n playLive();\n})\n\nonUnmounted(()=>{\n if (playing.value) {\n stopLive();\n }\n})\n\n\n//Methods\nfunction definedStalledTimeout() {\n isPaused.value = false;\n stalledTimout.value = setTimeout(() => {\n if (isPaused.value) {\n return;\n }\n videoClean();\n playLive();\n }, 15000);\n}\nasync function playLive(): Promise<void> {\n clearTimeout(stalledTimout.value);\n definedStalledTimeout();\n await initLiveDownloadId();\n if (useVideoSrc.value) {\n playLiveIos();\n return;\n }\n if (props.isSecured && authStore.authParam.accessToken) {\n const globalXhrRequestHook = (options: any) => {\n options.beforeSend = (xhr: XMLHttpRequest) => {\n xhr.setRequestHeader(\"Authorization\", \"Bearer \"+authStore.authParam.accessToken);\n };\n return options;\n };\n videojs.Vhs.xhr.onRequest(globalXhrRequestHook);\n }\n player.value = videojs(\n document.getElementById(\"video-element-hls\") as Element,\n videoOptions.value,\n () => {\n player.value.qualitySelectorHls({ displayCurrentQuality: true });\n errorPlay.value = \"\";\n playing.value = true;\n },\n );\n player.value.on(\"error\", (error: any) => {\n stopLive();\n if (error.description?.includes(\"403\")) {\n errorPlay.value = t(\"Video is unavailable\");\n } else {\n errorPlay.value = t(\"Podcast play error\");\n }\n });\n player.value.on(\"seeking\", () => {\n playerStore.playerUpdateSeekTime(player.value?.currentTime() ?? 0);\n });\n player.value.on(\"pause\", () => {\n isPaused.value = true;\n });\n player.value.on(\"timeupdate\", () => {\n clearTimeout(stalledTimout.value);\n definedStalledTimeout();\n onTimeUpdateVideo();\n });\n player.value.on(\"seeking\", () => {\n playerStore.playerUpdateSeekTime(player.value?.currentTime() ?? 0);\n });\n}\n\nasync function playLiveIos(): Promise<void> {\n videoElement.value.onloadedmetadata = () => {\n const playPromise = videoElement.value.play();\n if (playPromise !== undefined) {\n playPromise\n .then(() => {\n errorPlay.value = \"\";\n playing.value = true;\n })\n .catch(() => {\n playing.value = false;\n });\n }\n };\n videoElement.value.onerror = async () => {\n stopLive();\n errorPlay.value = t(\"Podcast play error\");\n };\n videoElement.value.ontimeupdate = async () => {\n clearTimeout(stalledTimout.value);\n definedStalledTimeout();\n onTimeUpdateVideo();\n };\n videoElement.value.onpause = async () => {\n isPaused.value = true;\n };\n videoElement.value.onseeking = async () => {\n playerStore.playerUpdateSeekTime(videoElement.value.currentTime);\n };\n if (props.isSecured && authStore.authParam.accessToken) {\n videoElement.value.src = props.hlsUrl + \"access_token=\"+authStore.authParam.accessToken;\n }else{\n videoElement.value.src = props.hlsUrl;\n }\n videoElement.value.src = props.hlsUrl;\n}\n\nfunction videoClean(): void {\n if (useVideoSrc.value) {\n videoElement.value.pause();\n videoElement.value.removeAttribute(\"src\");\n videoElement.value.load();\n return;\n }\n if (player.value) {\n player.value.dispose();\n //Redraw\n const video_parent = document.getElementById(\"player-video-hls\");\n if (video_parent) {\n const video = document.createElement(\"video\");\n video.id = \"video-element-hls\";\n video.className = \"video-js\";\n video.preload = \"auto\";\n video.setAttribute(\"playsinline\", \"true\");\n video_parent.appendChild(video);\n }\n }\n}\nfunction stopLive(): void {\n clearTimeout(stalledTimout.value);\n errorPlay.value = \"\";\n videoClean();\n playing.value = false;\n endListeningProgress();\n}\nfunction onTimeUpdateVideo(): void {\n if (!downloadId.value) {\n return;\n }\n const currentTime =player.value?.currentTime() ?? videoElement.value.currentTime;\n onTimeUpdateProgress(currentTime);\n}\n</script>\n\n<style lang=\"scss\">\n@use \"video.js\";\n@use \"../../../../style/videoPlayer\";\n\n.octopus-app {\n .video-live-error {\n text-align: center;\n width: 100%;\n font-size: 1rem;\n font-weight: bold;\n padding: 0.2rem 0;\n color: white;\n position: absolute;\n top: 0;\n background: var(--octopus-danger);\n z-index: 1;\n }\n\n .video-js {\n width: 500px;\n height: 281px;\n }\n}\n</style>\n"],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"PlayerVideoHls-D909ECaY.mjs","names":[],"sources":["../src/components/misc/player/video/PlayerVideoHls.vue","../src/components/misc/player/video/PlayerVideoHls.vue"],"sourcesContent":["<template>\n <div\n id=\"player-video-hls\"\n class=\"video-player\"\n :class=\"responsive ? 'video-responsive-wrapper' : ''\"\n >\n <div v-if=\"errorPlay.length\" class=\"video-live-error\">{{ errorPlay }}</div>\n <video\n id=\"video-element-hls\"\n ref=\"videoelement\"\n class=\"video-js\"\n playsinline\n ></video>\n </div>\n</template>\n<script setup lang=\"ts\">\nimport { usePlayerStore } from \"../../../../stores/PlayerStore\";\nimport {usePlayerLogicProgress} from \"../../../composable/player/usePlayerLogicProgress\";\nimport videojs, { VideoJsPlayer } from \"video.js\";\nimport qualitySelectorHls from \"videojs-quality-selector-hls\";\nif (undefined === videojs.getPlugin(\"qualitySelectorHls\")) {\n videojs.registerPlugin(\"qualitySelectorHls\", qualitySelectorHls);\n}\nimport { computed, onMounted, onUnmounted, Ref, ref, useTemplateRef } from \"vue\";\nimport { useAuthStore } from \"../../../../stores/AuthStore\";\nimport { useI18n } from \"vue-i18n\";\n\n//Props \nconst props = defineProps({\n hlsUrl: { default: \"\", type: String },\n responsive: { default: false, type: Boolean },\n isSecured: { default: true, type: Boolean },\n})\n\n//Data\nconst errorPlay = ref(\"\");\nconst useVideoSrc = ref(false);\nconst player: Ref<VideoJsPlayer | undefined> = ref(false);\nconst playing = ref(false);\nconst isPaused = ref(false);\nconst stalledTimout: Ref<ReturnType<typeof setTimeout> | undefined> = ref(undefined);\nconst videoElementRef = useTemplateRef('videoelement');\n\n\n//Composables\nconst { t } = useI18n();\nconst { downloadId, initLiveDownloadId, onTimeUpdateProgress, endListeningProgress} = usePlayerLogicProgress();\nconst authStore = useAuthStore();\nconst playerStore = usePlayerStore();\n\n\n\n//Computed\nconst videoElement = computed(() => {\n return videoElementRef?.value as HTMLVideoElement;\n});\nconst videoOptions = computed(() => {\n return {\n autoplay: true,\n controls: true,\n liveui: true,\n sources: [\n {\n src: props.hlsUrl,\n type: \"application/x-mpegURL\",\n },\n ],\n html5: {\n vhs: {\n overrideNative: !videojs.browser.IS_SAFARI,\n },\n nativeAudioTracks: false,\n nativeVideoTracks: false,\n },\n };\n});\n\n\nonMounted(()=>{\n playerStore.playerUpdatePlayerHlsUrl(props.hlsUrl);\n useVideoSrc.value =\n \"\" !== videoElement.value.canPlayType(\"application/vnd.apple.mpegurl\") &&\n !navigator.userAgent.includes(\"Android\");\n playLive();\n})\n\nonUnmounted(()=>{\n if (playing.value) {\n stopLive();\n }\n})\n\n\n//Methods\nfunction definedStalledTimeout() {\n isPaused.value = false;\n stalledTimout.value = setTimeout(() => {\n if (isPaused.value) {\n return;\n }\n videoClean();\n playLive();\n }, 15000);\n}\nasync function playLive(): Promise<void> {\n clearTimeout(stalledTimout.value);\n definedStalledTimeout();\n await initLiveDownloadId();\n if (useVideoSrc.value) {\n playLiveIos();\n return;\n }\n if (props.isSecured && authStore.authParam.accessToken) {\n const globalXhrRequestHook = (options: any) => {\n options.beforeSend = (xhr: XMLHttpRequest) => {\n xhr.setRequestHeader(\"Authorization\", \"Bearer \"+authStore.authParam.accessToken);\n };\n return options;\n };\n videojs.Vhs.xhr.onRequest(globalXhrRequestHook);\n }\n player.value = videojs(\n document.getElementById(\"video-element-hls\") as Element,\n videoOptions.value,\n () => {\n player.value.qualitySelectorHls({ displayCurrentQuality: true });\n errorPlay.value = \"\";\n playing.value = true;\n },\n );\n player.value.on(\"error\", (error: any) => {\n stopLive();\n if (error.description?.includes(\"403\")) {\n errorPlay.value = t(\"Video is unavailable\");\n } else {\n errorPlay.value = t(\"Podcast play error\");\n }\n });\n player.value.on(\"seeking\", () => {\n playerStore.playerUpdateSeekTime(player.value?.currentTime() ?? 0);\n });\n player.value.on(\"pause\", () => {\n isPaused.value = true;\n });\n player.value.on(\"timeupdate\", () => {\n clearTimeout(stalledTimout.value);\n definedStalledTimeout();\n onTimeUpdateVideo();\n });\n player.value.on(\"seeking\", () => {\n playerStore.playerUpdateSeekTime(player.value?.currentTime() ?? 0);\n });\n}\n\nasync function playLiveIos(): Promise<void> {\n videoElement.value.onloadedmetadata = () => {\n const playPromise = videoElement.value.play();\n if (playPromise !== undefined) {\n playPromise\n .then(() => {\n errorPlay.value = \"\";\n playing.value = true;\n })\n .catch(() => {\n playing.value = false;\n });\n }\n };\n videoElement.value.onerror = async () => {\n stopLive();\n errorPlay.value = t(\"Podcast play error\");\n };\n videoElement.value.ontimeupdate = async () => {\n clearTimeout(stalledTimout.value);\n definedStalledTimeout();\n onTimeUpdateVideo();\n };\n videoElement.value.onpause = async () => {\n isPaused.value = true;\n };\n videoElement.value.onseeking = async () => {\n playerStore.playerUpdateSeekTime(videoElement.value.currentTime);\n };\n if (props.isSecured && authStore.authParam.accessToken) {\n videoElement.value.src = props.hlsUrl + \"access_token=\"+authStore.authParam.accessToken;\n }else{\n videoElement.value.src = props.hlsUrl;\n }\n videoElement.value.src = props.hlsUrl;\n}\n\nfunction videoClean(): void {\n if (useVideoSrc.value) {\n videoElement.value.pause();\n videoElement.value.removeAttribute(\"src\");\n videoElement.value.load();\n return;\n }\n if (player.value) {\n player.value.dispose();\n //Redraw\n const video_parent = document.getElementById(\"player-video-hls\");\n if (video_parent) {\n const video = document.createElement(\"video\");\n video.id = \"video-element-hls\";\n video.className = \"video-js\";\n video.preload = \"auto\";\n video.setAttribute(\"playsinline\", \"true\");\n video_parent.appendChild(video);\n }\n }\n}\nfunction stopLive(): void {\n clearTimeout(stalledTimout.value);\n errorPlay.value = \"\";\n videoClean();\n playing.value = false;\n endListeningProgress();\n}\nfunction onTimeUpdateVideo(): void {\n if (!downloadId.value) {\n return;\n }\n const currentTime =player.value?.currentTime() ?? videoElement.value.currentTime;\n onTimeUpdateProgress(currentTime);\n}\n</script>\n\n<style lang=\"scss\">\n@use \"video.js\";\n@use \"../../../../style/videoPlayer\";\n\n.octopus-app {\n .video-live-error {\n text-align: center;\n width: 100%;\n font-size: 1rem;\n font-weight: bold;\n padding: 0.2rem 0;\n color: white;\n position: absolute;\n top: 0;\n background: var(--octopus-danger);\n z-index: 1;\n }\n\n .video-js {\n width: 500px;\n height: 281px;\n }\n}\n</style>\n","<template>\n <div\n id=\"player-video-hls\"\n class=\"video-player\"\n :class=\"responsive ? 'video-responsive-wrapper' : ''\"\n >\n <div v-if=\"errorPlay.length\" class=\"video-live-error\">{{ errorPlay }}</div>\n <video\n id=\"video-element-hls\"\n ref=\"videoelement\"\n class=\"video-js\"\n playsinline\n ></video>\n </div>\n</template>\n<script setup lang=\"ts\">\nimport { usePlayerStore } from \"../../../../stores/PlayerStore\";\nimport {usePlayerLogicProgress} from \"../../../composable/player/usePlayerLogicProgress\";\nimport videojs, { VideoJsPlayer } from \"video.js\";\nimport qualitySelectorHls from \"videojs-quality-selector-hls\";\nif (undefined === videojs.getPlugin(\"qualitySelectorHls\")) {\n videojs.registerPlugin(\"qualitySelectorHls\", qualitySelectorHls);\n}\nimport { computed, onMounted, onUnmounted, Ref, ref, useTemplateRef } from \"vue\";\nimport { useAuthStore } from \"../../../../stores/AuthStore\";\nimport { useI18n } from \"vue-i18n\";\n\n//Props \nconst props = defineProps({\n hlsUrl: { default: \"\", type: String },\n responsive: { default: false, type: Boolean },\n isSecured: { default: true, type: Boolean },\n})\n\n//Data\nconst errorPlay = ref(\"\");\nconst useVideoSrc = ref(false);\nconst player: Ref<VideoJsPlayer | undefined> = ref(false);\nconst playing = ref(false);\nconst isPaused = ref(false);\nconst stalledTimout: Ref<ReturnType<typeof setTimeout> | undefined> = ref(undefined);\nconst videoElementRef = useTemplateRef('videoelement');\n\n\n//Composables\nconst { t } = useI18n();\nconst { downloadId, initLiveDownloadId, onTimeUpdateProgress, endListeningProgress} = usePlayerLogicProgress();\nconst authStore = useAuthStore();\nconst playerStore = usePlayerStore();\n\n\n\n//Computed\nconst videoElement = computed(() => {\n return videoElementRef?.value as HTMLVideoElement;\n});\nconst videoOptions = computed(() => {\n return {\n autoplay: true,\n controls: true,\n liveui: true,\n sources: [\n {\n src: props.hlsUrl,\n type: \"application/x-mpegURL\",\n },\n ],\n html5: {\n vhs: {\n overrideNative: !videojs.browser.IS_SAFARI,\n },\n nativeAudioTracks: false,\n nativeVideoTracks: false,\n },\n };\n});\n\n\nonMounted(()=>{\n playerStore.playerUpdatePlayerHlsUrl(props.hlsUrl);\n useVideoSrc.value =\n \"\" !== videoElement.value.canPlayType(\"application/vnd.apple.mpegurl\") &&\n !navigator.userAgent.includes(\"Android\");\n playLive();\n})\n\nonUnmounted(()=>{\n if (playing.value) {\n stopLive();\n }\n})\n\n\n//Methods\nfunction definedStalledTimeout() {\n isPaused.value = false;\n stalledTimout.value = setTimeout(() => {\n if (isPaused.value) {\n return;\n }\n videoClean();\n playLive();\n }, 15000);\n}\nasync function playLive(): Promise<void> {\n clearTimeout(stalledTimout.value);\n definedStalledTimeout();\n await initLiveDownloadId();\n if (useVideoSrc.value) {\n playLiveIos();\n return;\n }\n if (props.isSecured && authStore.authParam.accessToken) {\n const globalXhrRequestHook = (options: any) => {\n options.beforeSend = (xhr: XMLHttpRequest) => {\n xhr.setRequestHeader(\"Authorization\", \"Bearer \"+authStore.authParam.accessToken);\n };\n return options;\n };\n videojs.Vhs.xhr.onRequest(globalXhrRequestHook);\n }\n player.value = videojs(\n document.getElementById(\"video-element-hls\") as Element,\n videoOptions.value,\n () => {\n player.value.qualitySelectorHls({ displayCurrentQuality: true });\n errorPlay.value = \"\";\n playing.value = true;\n },\n );\n player.value.on(\"error\", (error: any) => {\n stopLive();\n if (error.description?.includes(\"403\")) {\n errorPlay.value = t(\"Video is unavailable\");\n } else {\n errorPlay.value = t(\"Podcast play error\");\n }\n });\n player.value.on(\"seeking\", () => {\n playerStore.playerUpdateSeekTime(player.value?.currentTime() ?? 0);\n });\n player.value.on(\"pause\", () => {\n isPaused.value = true;\n });\n player.value.on(\"timeupdate\", () => {\n clearTimeout(stalledTimout.value);\n definedStalledTimeout();\n onTimeUpdateVideo();\n });\n player.value.on(\"seeking\", () => {\n playerStore.playerUpdateSeekTime(player.value?.currentTime() ?? 0);\n });\n}\n\nasync function playLiveIos(): Promise<void> {\n videoElement.value.onloadedmetadata = () => {\n const playPromise = videoElement.value.play();\n if (playPromise !== undefined) {\n playPromise\n .then(() => {\n errorPlay.value = \"\";\n playing.value = true;\n })\n .catch(() => {\n playing.value = false;\n });\n }\n };\n videoElement.value.onerror = async () => {\n stopLive();\n errorPlay.value = t(\"Podcast play error\");\n };\n videoElement.value.ontimeupdate = async () => {\n clearTimeout(stalledTimout.value);\n definedStalledTimeout();\n onTimeUpdateVideo();\n };\n videoElement.value.onpause = async () => {\n isPaused.value = true;\n };\n videoElement.value.onseeking = async () => {\n playerStore.playerUpdateSeekTime(videoElement.value.currentTime);\n };\n if (props.isSecured && authStore.authParam.accessToken) {\n videoElement.value.src = props.hlsUrl + \"access_token=\"+authStore.authParam.accessToken;\n }else{\n videoElement.value.src = props.hlsUrl;\n }\n videoElement.value.src = props.hlsUrl;\n}\n\nfunction videoClean(): void {\n if (useVideoSrc.value) {\n videoElement.value.pause();\n videoElement.value.removeAttribute(\"src\");\n videoElement.value.load();\n return;\n }\n if (player.value) {\n player.value.dispose();\n //Redraw\n const video_parent = document.getElementById(\"player-video-hls\");\n if (video_parent) {\n const video = document.createElement(\"video\");\n video.id = \"video-element-hls\";\n video.className = \"video-js\";\n video.preload = \"auto\";\n video.setAttribute(\"playsinline\", \"true\");\n video_parent.appendChild(video);\n }\n }\n}\nfunction stopLive(): void {\n clearTimeout(stalledTimout.value);\n errorPlay.value = \"\";\n videoClean();\n playing.value = false;\n endListeningProgress();\n}\nfunction onTimeUpdateVideo(): void {\n if (!downloadId.value) {\n return;\n }\n const currentTime =player.value?.currentTime() ?? videoElement.value.currentTime;\n onTimeUpdateProgress(currentTime);\n}\n</script>\n\n<style lang=\"scss\">\n@use \"video.js\";\n@use \"../../../../style/videoPlayer\";\n\n.octopus-app {\n .video-live-error {\n text-align: center;\n width: 100%;\n font-size: 1rem;\n font-weight: bold;\n padding: 0.2rem 0;\n color: white;\n position: absolute;\n top: 0;\n background: var(--octopus-danger);\n z-index: 1;\n }\n\n .video-js {\n width: 500px;\n height: 281px;\n }\n}\n</style>\n"],"mappings":"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"}
|
|
@@ -0,0 +1,199 @@
|
|
|
1
|
+
import { i as useAuthStore } from "./classicApi-BKNiWOG4.mjs";
|
|
2
|
+
import { n as usePlayerStore } from "./PlayerStore-DB5dkc3c.mjs";
|
|
3
|
+
import { t as usePlayerLogicProgress } from "./usePlayerLogicProgress-CSdUmqxN.mjs";
|
|
4
|
+
import { computed, createCommentVNode, createElementBlock, createElementVNode, defineComponent, normalizeClass, onMounted, onUnmounted, openBlock, ref, toDisplayString, useTemplateRef } from "vue";
|
|
5
|
+
import { useI18n } from "vue-i18n";
|
|
6
|
+
import videojs from "video.js";
|
|
7
|
+
import qualitySelectorHls from "videojs-quality-selector-hls";
|
|
8
|
+
//#region src/components/misc/player/video/PlayerVideoHls.vue?vue&type=script&setup=true&lang.ts
|
|
9
|
+
var _hoisted_1 = {
|
|
10
|
+
key: 0,
|
|
11
|
+
class: "video-live-error"
|
|
12
|
+
};
|
|
13
|
+
var _hoisted_2 = {
|
|
14
|
+
id: "video-element-hls",
|
|
15
|
+
ref: "videoelement",
|
|
16
|
+
class: "video-js",
|
|
17
|
+
playsinline: ""
|
|
18
|
+
};
|
|
19
|
+
//#endregion
|
|
20
|
+
//#region src/components/misc/player/video/PlayerVideoHls.vue
|
|
21
|
+
var PlayerVideoHls_default = /* @__PURE__ */ defineComponent({
|
|
22
|
+
__name: "PlayerVideoHls",
|
|
23
|
+
props: {
|
|
24
|
+
hlsUrl: {
|
|
25
|
+
default: "",
|
|
26
|
+
type: String
|
|
27
|
+
},
|
|
28
|
+
responsive: {
|
|
29
|
+
default: false,
|
|
30
|
+
type: Boolean
|
|
31
|
+
},
|
|
32
|
+
isSecured: {
|
|
33
|
+
default: true,
|
|
34
|
+
type: Boolean
|
|
35
|
+
}
|
|
36
|
+
},
|
|
37
|
+
setup(__props) {
|
|
38
|
+
if (void 0 === videojs.getPlugin("qualitySelectorHls")) videojs.registerPlugin("qualitySelectorHls", qualitySelectorHls);
|
|
39
|
+
const props = __props;
|
|
40
|
+
const errorPlay = ref("");
|
|
41
|
+
const useVideoSrc = ref(false);
|
|
42
|
+
const player = ref(false);
|
|
43
|
+
const playing = ref(false);
|
|
44
|
+
const isPaused = ref(false);
|
|
45
|
+
const stalledTimout = ref(void 0);
|
|
46
|
+
const videoElementRef = useTemplateRef("videoelement");
|
|
47
|
+
const { t } = useI18n();
|
|
48
|
+
const { downloadId, initLiveDownloadId, onTimeUpdateProgress, endListeningProgress } = usePlayerLogicProgress();
|
|
49
|
+
const authStore = useAuthStore();
|
|
50
|
+
const playerStore = usePlayerStore();
|
|
51
|
+
const videoElement = computed(() => {
|
|
52
|
+
return videoElementRef?.value;
|
|
53
|
+
});
|
|
54
|
+
const videoOptions = computed(() => {
|
|
55
|
+
return {
|
|
56
|
+
autoplay: true,
|
|
57
|
+
controls: true,
|
|
58
|
+
liveui: true,
|
|
59
|
+
sources: [{
|
|
60
|
+
src: props.hlsUrl,
|
|
61
|
+
type: "application/x-mpegURL"
|
|
62
|
+
}],
|
|
63
|
+
html5: {
|
|
64
|
+
vhs: { overrideNative: !videojs.browser.IS_SAFARI },
|
|
65
|
+
nativeAudioTracks: false,
|
|
66
|
+
nativeVideoTracks: false
|
|
67
|
+
}
|
|
68
|
+
};
|
|
69
|
+
});
|
|
70
|
+
onMounted(() => {
|
|
71
|
+
playerStore.playerUpdatePlayerHlsUrl(props.hlsUrl);
|
|
72
|
+
useVideoSrc.value = "" !== videoElement.value.canPlayType("application/vnd.apple.mpegurl") && !navigator.userAgent.includes("Android");
|
|
73
|
+
playLive();
|
|
74
|
+
});
|
|
75
|
+
onUnmounted(() => {
|
|
76
|
+
if (playing.value) stopLive();
|
|
77
|
+
});
|
|
78
|
+
function definedStalledTimeout() {
|
|
79
|
+
isPaused.value = false;
|
|
80
|
+
stalledTimout.value = setTimeout(() => {
|
|
81
|
+
if (isPaused.value) return;
|
|
82
|
+
videoClean();
|
|
83
|
+
playLive();
|
|
84
|
+
}, 15e3);
|
|
85
|
+
}
|
|
86
|
+
async function playLive() {
|
|
87
|
+
clearTimeout(stalledTimout.value);
|
|
88
|
+
definedStalledTimeout();
|
|
89
|
+
await initLiveDownloadId();
|
|
90
|
+
if (useVideoSrc.value) {
|
|
91
|
+
playLiveIos();
|
|
92
|
+
return;
|
|
93
|
+
}
|
|
94
|
+
if (props.isSecured && authStore.authParam.accessToken) {
|
|
95
|
+
const globalXhrRequestHook = (options) => {
|
|
96
|
+
options.beforeSend = (xhr) => {
|
|
97
|
+
xhr.setRequestHeader("Authorization", "Bearer " + authStore.authParam.accessToken);
|
|
98
|
+
};
|
|
99
|
+
return options;
|
|
100
|
+
};
|
|
101
|
+
videojs.Vhs.xhr.onRequest(globalXhrRequestHook);
|
|
102
|
+
}
|
|
103
|
+
player.value = videojs(document.getElementById("video-element-hls"), videoOptions.value, () => {
|
|
104
|
+
player.value.qualitySelectorHls({ displayCurrentQuality: true });
|
|
105
|
+
errorPlay.value = "";
|
|
106
|
+
playing.value = true;
|
|
107
|
+
});
|
|
108
|
+
player.value.on("error", (error) => {
|
|
109
|
+
stopLive();
|
|
110
|
+
if (error.description?.includes("403")) errorPlay.value = t("Video is unavailable");
|
|
111
|
+
else errorPlay.value = t("Podcast play error");
|
|
112
|
+
});
|
|
113
|
+
player.value.on("seeking", () => {
|
|
114
|
+
playerStore.playerUpdateSeekTime(player.value?.currentTime() ?? 0);
|
|
115
|
+
});
|
|
116
|
+
player.value.on("pause", () => {
|
|
117
|
+
isPaused.value = true;
|
|
118
|
+
});
|
|
119
|
+
player.value.on("timeupdate", () => {
|
|
120
|
+
clearTimeout(stalledTimout.value);
|
|
121
|
+
definedStalledTimeout();
|
|
122
|
+
onTimeUpdateVideo();
|
|
123
|
+
});
|
|
124
|
+
player.value.on("seeking", () => {
|
|
125
|
+
playerStore.playerUpdateSeekTime(player.value?.currentTime() ?? 0);
|
|
126
|
+
});
|
|
127
|
+
}
|
|
128
|
+
async function playLiveIos() {
|
|
129
|
+
videoElement.value.onloadedmetadata = () => {
|
|
130
|
+
const playPromise = videoElement.value.play();
|
|
131
|
+
if (playPromise !== void 0) playPromise.then(() => {
|
|
132
|
+
errorPlay.value = "";
|
|
133
|
+
playing.value = true;
|
|
134
|
+
}).catch(() => {
|
|
135
|
+
playing.value = false;
|
|
136
|
+
});
|
|
137
|
+
};
|
|
138
|
+
videoElement.value.onerror = async () => {
|
|
139
|
+
stopLive();
|
|
140
|
+
errorPlay.value = t("Podcast play error");
|
|
141
|
+
};
|
|
142
|
+
videoElement.value.ontimeupdate = async () => {
|
|
143
|
+
clearTimeout(stalledTimout.value);
|
|
144
|
+
definedStalledTimeout();
|
|
145
|
+
onTimeUpdateVideo();
|
|
146
|
+
};
|
|
147
|
+
videoElement.value.onpause = async () => {
|
|
148
|
+
isPaused.value = true;
|
|
149
|
+
};
|
|
150
|
+
videoElement.value.onseeking = async () => {
|
|
151
|
+
playerStore.playerUpdateSeekTime(videoElement.value.currentTime);
|
|
152
|
+
};
|
|
153
|
+
if (props.isSecured && authStore.authParam.accessToken) videoElement.value.src = props.hlsUrl + "access_token=" + authStore.authParam.accessToken;
|
|
154
|
+
else videoElement.value.src = props.hlsUrl;
|
|
155
|
+
videoElement.value.src = props.hlsUrl;
|
|
156
|
+
}
|
|
157
|
+
function videoClean() {
|
|
158
|
+
if (useVideoSrc.value) {
|
|
159
|
+
videoElement.value.pause();
|
|
160
|
+
videoElement.value.removeAttribute("src");
|
|
161
|
+
videoElement.value.load();
|
|
162
|
+
return;
|
|
163
|
+
}
|
|
164
|
+
if (player.value) {
|
|
165
|
+
player.value.dispose();
|
|
166
|
+
const video_parent = document.getElementById("player-video-hls");
|
|
167
|
+
if (video_parent) {
|
|
168
|
+
const video = document.createElement("video");
|
|
169
|
+
video.id = "video-element-hls";
|
|
170
|
+
video.className = "video-js";
|
|
171
|
+
video.preload = "auto";
|
|
172
|
+
video.setAttribute("playsinline", "true");
|
|
173
|
+
video_parent.appendChild(video);
|
|
174
|
+
}
|
|
175
|
+
}
|
|
176
|
+
}
|
|
177
|
+
function stopLive() {
|
|
178
|
+
clearTimeout(stalledTimout.value);
|
|
179
|
+
errorPlay.value = "";
|
|
180
|
+
videoClean();
|
|
181
|
+
playing.value = false;
|
|
182
|
+
endListeningProgress();
|
|
183
|
+
}
|
|
184
|
+
function onTimeUpdateVideo() {
|
|
185
|
+
if (!downloadId.value) return;
|
|
186
|
+
onTimeUpdateProgress(player.value?.currentTime() ?? videoElement.value.currentTime);
|
|
187
|
+
}
|
|
188
|
+
return (_ctx, _cache) => {
|
|
189
|
+
return openBlock(), createElementBlock("div", {
|
|
190
|
+
id: "player-video-hls",
|
|
191
|
+
class: normalizeClass(["video-player", __props.responsive ? "video-responsive-wrapper" : ""])
|
|
192
|
+
}, [errorPlay.value.length ? (openBlock(), createElementBlock("div", _hoisted_1, toDisplayString(errorPlay.value), 1)) : createCommentVNode("", true), createElementVNode("video", _hoisted_2, null, 512)], 2);
|
|
193
|
+
};
|
|
194
|
+
}
|
|
195
|
+
});
|
|
196
|
+
//#endregion
|
|
197
|
+
export { PlayerVideoHls_default as default };
|
|
198
|
+
|
|
199
|
+
//# sourceMappingURL=PlayerVideoHls-DjAlSV39.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"PlayerVideoHls-DjAlSV39.mjs","names":[],"sources":["../src/components/misc/player/video/PlayerVideoHls.vue","../src/components/misc/player/video/PlayerVideoHls.vue"],"sourcesContent":["<template>\n <div\n id=\"player-video-hls\"\n class=\"video-player\"\n :class=\"responsive ? 'video-responsive-wrapper' : ''\"\n >\n <div v-if=\"errorPlay.length\" class=\"video-live-error\">{{ errorPlay }}</div>\n <video\n id=\"video-element-hls\"\n ref=\"videoelement\"\n class=\"video-js\"\n playsinline\n ></video>\n </div>\n</template>\n<script setup lang=\"ts\">\nimport { usePlayerStore } from \"../../../../stores/PlayerStore\";\nimport {usePlayerLogicProgress} from \"../../../composable/player/usePlayerLogicProgress\";\nimport videojs, { VideoJsPlayer } from \"video.js\";\nimport qualitySelectorHls from \"videojs-quality-selector-hls\";\nif (undefined === videojs.getPlugin(\"qualitySelectorHls\")) {\n videojs.registerPlugin(\"qualitySelectorHls\", qualitySelectorHls);\n}\nimport { computed, onMounted, onUnmounted, Ref, ref, useTemplateRef } from \"vue\";\nimport { useAuthStore } from \"../../../../stores/AuthStore\";\nimport { useI18n } from \"vue-i18n\";\n\n//Props \nconst props = defineProps({\n hlsUrl: { default: \"\", type: String },\n responsive: { default: false, type: Boolean },\n isSecured: { default: true, type: Boolean },\n})\n\n//Data\nconst errorPlay = ref(\"\");\nconst useVideoSrc = ref(false);\nconst player: Ref<VideoJsPlayer | undefined> = ref(false);\nconst playing = ref(false);\nconst isPaused = ref(false);\nconst stalledTimout: Ref<ReturnType<typeof setTimeout> | undefined> = ref(undefined);\nconst videoElementRef = useTemplateRef('videoelement');\n\n\n//Composables\nconst { t } = useI18n();\nconst { downloadId, initLiveDownloadId, onTimeUpdateProgress, endListeningProgress} = usePlayerLogicProgress();\nconst authStore = useAuthStore();\nconst playerStore = usePlayerStore();\n\n\n\n//Computed\nconst videoElement = computed(() => {\n return videoElementRef?.value as HTMLVideoElement;\n});\nconst videoOptions = computed(() => {\n return {\n autoplay: true,\n controls: true,\n liveui: true,\n sources: [\n {\n src: props.hlsUrl,\n type: \"application/x-mpegURL\",\n },\n ],\n html5: {\n vhs: {\n overrideNative: !videojs.browser.IS_SAFARI,\n },\n nativeAudioTracks: false,\n nativeVideoTracks: false,\n },\n };\n});\n\n\nonMounted(()=>{\n playerStore.playerUpdatePlayerHlsUrl(props.hlsUrl);\n useVideoSrc.value =\n \"\" !== videoElement.value.canPlayType(\"application/vnd.apple.mpegurl\") &&\n !navigator.userAgent.includes(\"Android\");\n playLive();\n})\n\nonUnmounted(()=>{\n if (playing.value) {\n stopLive();\n }\n})\n\n\n//Methods\nfunction definedStalledTimeout() {\n isPaused.value = false;\n stalledTimout.value = setTimeout(() => {\n if (isPaused.value) {\n return;\n }\n videoClean();\n playLive();\n }, 15000);\n}\nasync function playLive(): Promise<void> {\n clearTimeout(stalledTimout.value);\n definedStalledTimeout();\n await initLiveDownloadId();\n if (useVideoSrc.value) {\n playLiveIos();\n return;\n }\n if (props.isSecured && authStore.authParam.accessToken) {\n const globalXhrRequestHook = (options: any) => {\n options.beforeSend = (xhr: XMLHttpRequest) => {\n xhr.setRequestHeader(\"Authorization\", \"Bearer \"+authStore.authParam.accessToken);\n };\n return options;\n };\n videojs.Vhs.xhr.onRequest(globalXhrRequestHook);\n }\n player.value = videojs(\n document.getElementById(\"video-element-hls\") as Element,\n videoOptions.value,\n () => {\n player.value.qualitySelectorHls({ displayCurrentQuality: true });\n errorPlay.value = \"\";\n playing.value = true;\n },\n );\n player.value.on(\"error\", (error: any) => {\n stopLive();\n if (error.description?.includes(\"403\")) {\n errorPlay.value = t(\"Video is unavailable\");\n } else {\n errorPlay.value = t(\"Podcast play error\");\n }\n });\n player.value.on(\"seeking\", () => {\n playerStore.playerUpdateSeekTime(player.value?.currentTime() ?? 0);\n });\n player.value.on(\"pause\", () => {\n isPaused.value = true;\n });\n player.value.on(\"timeupdate\", () => {\n clearTimeout(stalledTimout.value);\n definedStalledTimeout();\n onTimeUpdateVideo();\n });\n player.value.on(\"seeking\", () => {\n playerStore.playerUpdateSeekTime(player.value?.currentTime() ?? 0);\n });\n}\n\nasync function playLiveIos(): Promise<void> {\n videoElement.value.onloadedmetadata = () => {\n const playPromise = videoElement.value.play();\n if (playPromise !== undefined) {\n playPromise\n .then(() => {\n errorPlay.value = \"\";\n playing.value = true;\n })\n .catch(() => {\n playing.value = false;\n });\n }\n };\n videoElement.value.onerror = async () => {\n stopLive();\n errorPlay.value = t(\"Podcast play error\");\n };\n videoElement.value.ontimeupdate = async () => {\n clearTimeout(stalledTimout.value);\n definedStalledTimeout();\n onTimeUpdateVideo();\n };\n videoElement.value.onpause = async () => {\n isPaused.value = true;\n };\n videoElement.value.onseeking = async () => {\n playerStore.playerUpdateSeekTime(videoElement.value.currentTime);\n };\n if (props.isSecured && authStore.authParam.accessToken) {\n videoElement.value.src = props.hlsUrl + \"access_token=\"+authStore.authParam.accessToken;\n }else{\n videoElement.value.src = props.hlsUrl;\n }\n videoElement.value.src = props.hlsUrl;\n}\n\nfunction videoClean(): void {\n if (useVideoSrc.value) {\n videoElement.value.pause();\n videoElement.value.removeAttribute(\"src\");\n videoElement.value.load();\n return;\n }\n if (player.value) {\n player.value.dispose();\n //Redraw\n const video_parent = document.getElementById(\"player-video-hls\");\n if (video_parent) {\n const video = document.createElement(\"video\");\n video.id = \"video-element-hls\";\n video.className = \"video-js\";\n video.preload = \"auto\";\n video.setAttribute(\"playsinline\", \"true\");\n video_parent.appendChild(video);\n }\n }\n}\nfunction stopLive(): void {\n clearTimeout(stalledTimout.value);\n errorPlay.value = \"\";\n videoClean();\n playing.value = false;\n endListeningProgress();\n}\nfunction onTimeUpdateVideo(): void {\n if (!downloadId.value) {\n return;\n }\n const currentTime =player.value?.currentTime() ?? videoElement.value.currentTime;\n onTimeUpdateProgress(currentTime);\n}\n</script>\n\n<style lang=\"scss\">\n@use \"video.js\";\n@use \"../../../../style/videoPlayer\";\n\n.octopus-app {\n .video-live-error {\n text-align: center;\n width: 100%;\n font-size: 1rem;\n font-weight: bold;\n padding: 0.2rem 0;\n color: white;\n position: absolute;\n top: 0;\n background: var(--octopus-danger);\n z-index: 1;\n }\n\n .video-js {\n width: 500px;\n height: 281px;\n }\n}\n</style>\n","<template>\n <div\n id=\"player-video-hls\"\n class=\"video-player\"\n :class=\"responsive ? 'video-responsive-wrapper' : ''\"\n >\n <div v-if=\"errorPlay.length\" class=\"video-live-error\">{{ errorPlay }}</div>\n <video\n id=\"video-element-hls\"\n ref=\"videoelement\"\n class=\"video-js\"\n playsinline\n ></video>\n </div>\n</template>\n<script setup lang=\"ts\">\nimport { usePlayerStore } from \"../../../../stores/PlayerStore\";\nimport {usePlayerLogicProgress} from \"../../../composable/player/usePlayerLogicProgress\";\nimport videojs, { VideoJsPlayer } from \"video.js\";\nimport qualitySelectorHls from \"videojs-quality-selector-hls\";\nif (undefined === videojs.getPlugin(\"qualitySelectorHls\")) {\n videojs.registerPlugin(\"qualitySelectorHls\", qualitySelectorHls);\n}\nimport { computed, onMounted, onUnmounted, Ref, ref, useTemplateRef } from \"vue\";\nimport { useAuthStore } from \"../../../../stores/AuthStore\";\nimport { useI18n } from \"vue-i18n\";\n\n//Props \nconst props = defineProps({\n hlsUrl: { default: \"\", type: String },\n responsive: { default: false, type: Boolean },\n isSecured: { default: true, type: Boolean },\n})\n\n//Data\nconst errorPlay = ref(\"\");\nconst useVideoSrc = ref(false);\nconst player: Ref<VideoJsPlayer | undefined> = ref(false);\nconst playing = ref(false);\nconst isPaused = ref(false);\nconst stalledTimout: Ref<ReturnType<typeof setTimeout> | undefined> = ref(undefined);\nconst videoElementRef = useTemplateRef('videoelement');\n\n\n//Composables\nconst { t } = useI18n();\nconst { downloadId, initLiveDownloadId, onTimeUpdateProgress, endListeningProgress} = usePlayerLogicProgress();\nconst authStore = useAuthStore();\nconst playerStore = usePlayerStore();\n\n\n\n//Computed\nconst videoElement = computed(() => {\n return videoElementRef?.value as HTMLVideoElement;\n});\nconst videoOptions = computed(() => {\n return {\n autoplay: true,\n controls: true,\n liveui: true,\n sources: [\n {\n src: props.hlsUrl,\n type: \"application/x-mpegURL\",\n },\n ],\n html5: {\n vhs: {\n overrideNative: !videojs.browser.IS_SAFARI,\n },\n nativeAudioTracks: false,\n nativeVideoTracks: false,\n },\n };\n});\n\n\nonMounted(()=>{\n playerStore.playerUpdatePlayerHlsUrl(props.hlsUrl);\n useVideoSrc.value =\n \"\" !== videoElement.value.canPlayType(\"application/vnd.apple.mpegurl\") &&\n !navigator.userAgent.includes(\"Android\");\n playLive();\n})\n\nonUnmounted(()=>{\n if (playing.value) {\n stopLive();\n }\n})\n\n\n//Methods\nfunction definedStalledTimeout() {\n isPaused.value = false;\n stalledTimout.value = setTimeout(() => {\n if (isPaused.value) {\n return;\n }\n videoClean();\n playLive();\n }, 15000);\n}\nasync function playLive(): Promise<void> {\n clearTimeout(stalledTimout.value);\n definedStalledTimeout();\n await initLiveDownloadId();\n if (useVideoSrc.value) {\n playLiveIos();\n return;\n }\n if (props.isSecured && authStore.authParam.accessToken) {\n const globalXhrRequestHook = (options: any) => {\n options.beforeSend = (xhr: XMLHttpRequest) => {\n xhr.setRequestHeader(\"Authorization\", \"Bearer \"+authStore.authParam.accessToken);\n };\n return options;\n };\n videojs.Vhs.xhr.onRequest(globalXhrRequestHook);\n }\n player.value = videojs(\n document.getElementById(\"video-element-hls\") as Element,\n videoOptions.value,\n () => {\n player.value.qualitySelectorHls({ displayCurrentQuality: true });\n errorPlay.value = \"\";\n playing.value = true;\n },\n );\n player.value.on(\"error\", (error: any) => {\n stopLive();\n if (error.description?.includes(\"403\")) {\n errorPlay.value = t(\"Video is unavailable\");\n } else {\n errorPlay.value = t(\"Podcast play error\");\n }\n });\n player.value.on(\"seeking\", () => {\n playerStore.playerUpdateSeekTime(player.value?.currentTime() ?? 0);\n });\n player.value.on(\"pause\", () => {\n isPaused.value = true;\n });\n player.value.on(\"timeupdate\", () => {\n clearTimeout(stalledTimout.value);\n definedStalledTimeout();\n onTimeUpdateVideo();\n });\n player.value.on(\"seeking\", () => {\n playerStore.playerUpdateSeekTime(player.value?.currentTime() ?? 0);\n });\n}\n\nasync function playLiveIos(): Promise<void> {\n videoElement.value.onloadedmetadata = () => {\n const playPromise = videoElement.value.play();\n if (playPromise !== undefined) {\n playPromise\n .then(() => {\n errorPlay.value = \"\";\n playing.value = true;\n })\n .catch(() => {\n playing.value = false;\n });\n }\n };\n videoElement.value.onerror = async () => {\n stopLive();\n errorPlay.value = t(\"Podcast play error\");\n };\n videoElement.value.ontimeupdate = async () => {\n clearTimeout(stalledTimout.value);\n definedStalledTimeout();\n onTimeUpdateVideo();\n };\n videoElement.value.onpause = async () => {\n isPaused.value = true;\n };\n videoElement.value.onseeking = async () => {\n playerStore.playerUpdateSeekTime(videoElement.value.currentTime);\n };\n if (props.isSecured && authStore.authParam.accessToken) {\n videoElement.value.src = props.hlsUrl + \"access_token=\"+authStore.authParam.accessToken;\n }else{\n videoElement.value.src = props.hlsUrl;\n }\n videoElement.value.src = props.hlsUrl;\n}\n\nfunction videoClean(): void {\n if (useVideoSrc.value) {\n videoElement.value.pause();\n videoElement.value.removeAttribute(\"src\");\n videoElement.value.load();\n return;\n }\n if (player.value) {\n player.value.dispose();\n //Redraw\n const video_parent = document.getElementById(\"player-video-hls\");\n if (video_parent) {\n const video = document.createElement(\"video\");\n video.id = \"video-element-hls\";\n video.className = \"video-js\";\n video.preload = \"auto\";\n video.setAttribute(\"playsinline\", \"true\");\n video_parent.appendChild(video);\n }\n }\n}\nfunction stopLive(): void {\n clearTimeout(stalledTimout.value);\n errorPlay.value = \"\";\n videoClean();\n playing.value = false;\n endListeningProgress();\n}\nfunction onTimeUpdateVideo(): void {\n if (!downloadId.value) {\n return;\n }\n const currentTime =player.value?.currentTime() ?? videoElement.value.currentTime;\n onTimeUpdateProgress(currentTime);\n}\n</script>\n\n<style lang=\"scss\">\n@use \"video.js\";\n@use \"../../../../style/videoPlayer\";\n\n.octopus-app {\n .video-live-error {\n text-align: center;\n width: 100%;\n font-size: 1rem;\n font-weight: bold;\n padding: 0.2rem 0;\n color: white;\n position: absolute;\n top: 0;\n background: var(--octopus-danger);\n z-index: 1;\n }\n\n .video-js {\n width: 500px;\n height: 281px;\n }\n}\n</style>\n"],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"PlayerYoutubeEmbed-D0A4EWhU.mjs","names":[],"sources":["../src/components/misc/player/video/PlayerYoutubeEmbed.vue","../src/components/misc/player/video/PlayerYoutubeEmbed.vue"],"sourcesContent":["<template>\n <iframe \n width=\"500\"\n height=\"281\"\n :title=\"t('Video')\"\n class=\"youtube-iframe\"\n :src=\"'https://www.youtube.com/embed/'+youtubeId\"\n allow=\"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share\"\n referrerpolicy=\"strict-origin-when-cross-origin\"\n allowfullscreen>\n </iframe>\n</template>\n\n<script setup lang=\"ts\">\nimport { useI18n } from \"vue-i18n\";\n\n//Props \ndefineProps({\n youtubeId: { default: undefined, type: String },\n})\n\n//Composables\nconst { t } = useI18n();\n</script>\n<style lang=\"scss\">\n@use \"../../../../style/videoPlayer\";\n</style>\n","<template>\n <iframe \n width=\"500\"\n height=\"281\"\n :title=\"t('Video')\"\n class=\"youtube-iframe\"\n :src=\"'https://www.youtube.com/embed/'+youtubeId\"\n allow=\"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share\"\n referrerpolicy=\"strict-origin-when-cross-origin\"\n allowfullscreen>\n </iframe>\n</template>\n\n<script setup lang=\"ts\">\nimport { useI18n } from \"vue-i18n\";\n\n//Props \ndefineProps({\n youtubeId: { default: undefined, type: String },\n})\n\n//Composables\nconst { t } = useI18n();\n</script>\n<style lang=\"scss\">\n@use \"../../../../style/videoPlayer\";\n</style>\n"],"mappings":";;;;;;;;;;;;EAsBA,MAAM,EAAE,MAAM,QAAQ;;;;;;;;;;;;;qBCrBpB,mBASS,UAAA;EARP,OAAM;EACN,QAAO;EACN,OAAO,OAAA,EAAC,OAAA;EACT,OAAM;EACL,KAAG,mCAAmC,OAAA;EACvC,OAAM;EACN,gBAAe;EACf,iBAAA"}
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
import { createElementBlock, defineComponent, openBlock, unref } from "vue";
|
|
2
|
+
import { useI18n } from "vue-i18n";
|
|
3
|
+
//#region src/components/misc/player/video/PlayerYoutubeEmbed.vue?vue&type=script&setup=true&lang.ts
|
|
4
|
+
var _hoisted_1 = ["title", "src"];
|
|
5
|
+
//#endregion
|
|
6
|
+
//#region src/components/misc/player/video/PlayerYoutubeEmbed.vue
|
|
7
|
+
var PlayerYoutubeEmbed_default = /* @__PURE__ */ defineComponent({
|
|
8
|
+
__name: "PlayerYoutubeEmbed",
|
|
9
|
+
props: { youtubeId: {
|
|
10
|
+
default: void 0,
|
|
11
|
+
type: String
|
|
12
|
+
} },
|
|
13
|
+
setup(__props) {
|
|
14
|
+
const { t } = useI18n();
|
|
15
|
+
return (_ctx, _cache) => {
|
|
16
|
+
return openBlock(), createElementBlock("iframe", {
|
|
17
|
+
width: "500",
|
|
18
|
+
height: "281",
|
|
19
|
+
title: unref(t)("Video"),
|
|
20
|
+
class: "youtube-iframe",
|
|
21
|
+
src: "https://www.youtube.com/embed/" + __props.youtubeId,
|
|
22
|
+
allow: "accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share",
|
|
23
|
+
referrerpolicy: "strict-origin-when-cross-origin",
|
|
24
|
+
allowfullscreen: ""
|
|
25
|
+
}, null, 8, _hoisted_1);
|
|
26
|
+
};
|
|
27
|
+
}
|
|
28
|
+
});
|
|
29
|
+
//#endregion
|
|
30
|
+
export { PlayerYoutubeEmbed_default as default };
|
|
31
|
+
|
|
32
|
+
//# sourceMappingURL=PlayerYoutubeEmbed-D5ZhaHbv.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"PlayerYoutubeEmbed-D5ZhaHbv.mjs","names":[],"sources":["../src/components/misc/player/video/PlayerYoutubeEmbed.vue","../src/components/misc/player/video/PlayerYoutubeEmbed.vue"],"sourcesContent":["<template>\n <iframe \n width=\"500\"\n height=\"281\"\n :title=\"t('Video')\"\n class=\"youtube-iframe\"\n :src=\"'https://www.youtube.com/embed/'+youtubeId\"\n allow=\"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share\"\n referrerpolicy=\"strict-origin-when-cross-origin\"\n allowfullscreen>\n </iframe>\n</template>\n\n<script setup lang=\"ts\">\nimport { useI18n } from \"vue-i18n\";\n\n//Props \ndefineProps({\n youtubeId: { default: undefined, type: String },\n})\n\n//Composables\nconst { t } = useI18n();\n</script>\n<style lang=\"scss\">\n@use \"../../../../style/videoPlayer\";\n</style>\n","<template>\n <iframe \n width=\"500\"\n height=\"281\"\n :title=\"t('Video')\"\n class=\"youtube-iframe\"\n :src=\"'https://www.youtube.com/embed/'+youtubeId\"\n allow=\"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share\"\n referrerpolicy=\"strict-origin-when-cross-origin\"\n allowfullscreen>\n </iframe>\n</template>\n\n<script setup lang=\"ts\">\nimport { useI18n } from \"vue-i18n\";\n\n//Props \ndefineProps({\n youtubeId: { default: undefined, type: String },\n})\n\n//Composables\nconst { t } = useI18n();\n</script>\n<style lang=\"scss\">\n@use \"../../../../style/videoPlayer\";\n</style>\n"],"mappings":";;;;;;;;;;;;;EAsBA,MAAM,EAAE,MAAM,QAAQ;;uBArBpB,mBASS,UAAA;IARP,OAAM;IACN,QAAO;IACN,OAAO,MAAA,CAAA,EAAC,OAAA;IACT,OAAM;IACL,KAAG,mCAAmC,QAAA;IACvC,OAAM;IACN,gBAAe;IACf,iBAAA"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"PlaylistPage-B-qoOMDN.mjs","names":[],"sources":["../src/components/pages/PlaylistPage.vue","../src/components/pages/PlaylistPage.vue"],"sourcesContent":["<template>\n <section class=\"page-box\">\n <template v-if=\"loaded && !error && playlist\">\n <PodcastmakerHeader\n v-if=\"isPodcastmaker\"\n :page-title=\"pageTitle\"\n :img-url=\"playlist.imageUrl\"\n />\n <div\n class=\"d-flex flex-column page-element\"\n :class=\"isPodcastmaker ? 'page-element-podcastmaker' : ''\"\n >\n <section class=\"module-box\">\n <slot\n v-if=\"editRight && !isPodcastmaker\"\n name=\"edit-box\"\n :playlist=\"playlist\"\n />\n\n <div class=\"mb-5 mt-3 description-text\">\n <img\n v-lazy=\"useProxyImageUrl(playlist.imageUrl, '250')\"\n width=\"250\"\n height=\"250\"\n aria-hidden=\"true\"\n alt=\"\"\n :title=\"t('Playlist name image', { name: name })\"\n class=\"img-box float-start me-3 mb-3\"\n />\n <div class=\"d-flex align-items-center justify-content-between\">\n <h2>{{ name }}</h2>\n <ShareAnonymous v-if=\"!editRight\" class=\"d-flex justify-content-end flex-grow-1\" :playlist=\"playlist\" :organisation-id=\"playlist.organisation?.id\"/>\n </div>\n <!-- eslint-disable vue/no-v-html -->\n <p class=\"html-wysiwyg-content\" v-html=\"urlify(description)\" />\n <!-- eslint-enable -->\n </div>\n <SubscribeButtons\n v-if=\"isPodcastmaker\"\n class=\"mt-4\"\n :content=\"playlist\"\n :window-width=\"1000\"\n :justify-center=\"false\"\n />\n </section>\n <SharePlayer\n v-if=\"!isPodcastmaker && editRight\"\n :playlist=\"playlist\"\n :organisation-id=\"authOrgaId\"\n />\n <ShareSocialsButtons\n v-if=\"state.podcastPage.ShareButtons\"\n :organisation-id=\"playlist.organisation.id\"\n />\n <section class=\"module-box\">\n <PodcastList \n v-if=\"isInit\"\n v-model:query=\"searchPattern\"\n :first=\"paginateFirst\"\n :size=\"ps\"\n :playlist=\"playlist\"\n />\n </section>\n </div>\n\n <slot name=\"bottom\" v-bind=\"{ playlist }\" />\n </template>\n <ClassicLoading\n :loading-text=\"!loaded ? t('Loading content ...') : undefined\"\n :error-text=\"error ? t(`Playlist doesn't exist`) : undefined\"\n />\n </section>\n</template>\n\n<script setup lang=\"ts\">\nimport { useGeneralStore } from \"../../stores/GeneralStore\";\nimport { useAuthStore } from \"../../stores/AuthStore\";\nimport {useOrgaComputed} from \"../composable/useOrgaComputed\";\nimport {useSeoTitleUrl} from \"../composable/route/useSeoTitleUrl\";\nimport ClassicLoading from \"../form/ClassicLoading.vue\";\nimport PodcastList from \"../display/playlist/PodcastList.vue\";\nimport { useFilterStore } from \"../../stores/FilterStore\";\nimport { state } from \"../../stores/ParamSdkStore\";\nimport displayHelper from \"../../helper/displayHelper\";\nimport {useImageProxy} from \"../composable/useImageProxy\";\nimport {useErrorHandler} from \"../composable/useErrorHandler\";\nimport { Playlist } from \"@/stores/class/general/playlist\";\nimport {defineAsyncComponent, ref, Ref, computed, watch, onBeforeUnmount } from \"vue\";\nimport { AxiosError } from \"axios\";\nimport { useI18n } from \"vue-i18n\";\nimport { useRoute } from \"vue-router\";\nimport { useSimplePageParam } from \"../composable/route/useSimplePageParam\";\nimport { playlistApi } from \"../../api/playlistApi\";\n\nimport SubscribeButtons from \"../display/sharing/SubscribeButtons.vue\"; \nconst ShareSocialsButtons = defineAsyncComponent(\n () => import(\"../display/sharing/ShareSocialsButtons.vue\"),\n);\nconst SharePlayer = defineAsyncComponent(\n () => import(\"../display/sharing/SharePlayer.vue\"),\n);\nconst PodcastmakerHeader = defineAsyncComponent(\n () => import(\"../display/podcastmaker/PodcastmakerHeader.vue\"),\n);\nconst ShareAnonymous = defineAsyncComponent(() => import(\"../display/sharing/ShareAnonymous.vue\"));\n\n\n//Props\nconst props = defineProps({\n playlistId: { default: undefined, type: Number },\n pr: { default: 0, type: Number },\n ps: { default: 30, type: Number },\n routeQuery: { default: \"\", type: String },\n});\n\n\n//Data \nconst loaded = ref(false);\nconst error = ref(false);\nconst playlist : Ref<Playlist | undefined> = ref(undefined);\n\n\n//Composables\nconst route = useRoute();\nconst { t } = useI18n();\nconst { useProxyImageUrl } = useImageProxy();\nconst { isPodcastmaker, isEditRights, authOrgaId } = useOrgaComputed();\nconst { updatePathParams } = useSeoTitleUrl();\nconst {handle403} = useErrorHandler();\nconst authStore = useAuthStore();\nconst filterStore = useFilterStore();\nconst generalStore = useGeneralStore();\nconst {\n searchPattern,\n paginateFirst,\n isInit\n} = useSimplePageParam(props, true);\n\n\n//Computed\nconst playlistRadio = computed(() =>{\n return (\n \"AMBIANCE\" === playlist.value?.ambianceType ||\n \"AMBIANCE_PROGRAMMED\" === playlist.value?.ambianceType\n );\n});\nconst pageTitle = computed(() =>playlistRadio.value? t(\"Mix of episodes\"): t(\"Playlist\"));\nconst name = computed(() =>playlist.value?.title ?? \"\");\nconst description = computed(() =>playlist.value?.description ?? \"\");\nconst editRight = computed(() =>{\n return isEditRights(\n playlist.value?.organisation?.id,\n authStore.isRolePlaylists,\n );\n});\n\n\n//Watch\nwatch(()=>props.playlistId, () => {getPlaylistDetails()}, {immediate: true});\n\n\nonBeforeUnmount(() => {\n generalStore.contentToDisplayUpdate(null);\n});\n\n\n//Methods\nfunction urlify(text:string|undefined){\n return displayHelper.urlify(text);\n}\nfunction initError(): void {\n error.value = true;\n loaded.value = true;\n}\nasync function getPlaylistDetails(): Promise<void> {\n try {\n loaded.value = false;\n error.value = false;\n playlist.value = await playlistApi.get(props.playlistId);\n filterStore.updateOrgaIfNecessary(playlist.value.organisation?.id);\n if (\n (!editRight.value && playlistRadio.value) ||\n (\"PUBLIC\" !== playlist.value.organisation?.privacy &&\n filterStore.filterOrgaId !== playlist.value.organisation?.id &&\n route.query.productor !== playlist.value.organisation?.id)\n ) {\n initError();\n return;\n }\n generalStore.contentToDisplayUpdate(playlist.value);\n updatePathParams(playlist.value.title);\n } catch (error) {\n handle403(error as AxiosError);\n initError();\n }\n loaded.value = true;\n}\n\n</script>\n","<template>\n <section class=\"page-box\">\n <template v-if=\"loaded && !error && playlist\">\n <PodcastmakerHeader\n v-if=\"isPodcastmaker\"\n :page-title=\"pageTitle\"\n :img-url=\"playlist.imageUrl\"\n />\n <div\n class=\"d-flex flex-column page-element\"\n :class=\"isPodcastmaker ? 'page-element-podcastmaker' : ''\"\n >\n <section class=\"module-box\">\n <slot\n v-if=\"editRight && !isPodcastmaker\"\n name=\"edit-box\"\n :playlist=\"playlist\"\n />\n\n <div class=\"mb-5 mt-3 description-text\">\n <img\n v-lazy=\"useProxyImageUrl(playlist.imageUrl, '250')\"\n width=\"250\"\n height=\"250\"\n aria-hidden=\"true\"\n alt=\"\"\n :title=\"t('Playlist name image', { name: name })\"\n class=\"img-box float-start me-3 mb-3\"\n />\n <div class=\"d-flex align-items-center justify-content-between\">\n <h2>{{ name }}</h2>\n <ShareAnonymous v-if=\"!editRight\" class=\"d-flex justify-content-end flex-grow-1\" :playlist=\"playlist\" :organisation-id=\"playlist.organisation?.id\"/>\n </div>\n <!-- eslint-disable vue/no-v-html -->\n <p class=\"html-wysiwyg-content\" v-html=\"urlify(description)\" />\n <!-- eslint-enable -->\n </div>\n <SubscribeButtons\n v-if=\"isPodcastmaker\"\n class=\"mt-4\"\n :content=\"playlist\"\n :window-width=\"1000\"\n :justify-center=\"false\"\n />\n </section>\n <SharePlayer\n v-if=\"!isPodcastmaker && editRight\"\n :playlist=\"playlist\"\n :organisation-id=\"authOrgaId\"\n />\n <ShareSocialsButtons\n v-if=\"state.podcastPage.ShareButtons\"\n :organisation-id=\"playlist.organisation.id\"\n />\n <section class=\"module-box\">\n <PodcastList \n v-if=\"isInit\"\n v-model:query=\"searchPattern\"\n :first=\"paginateFirst\"\n :size=\"ps\"\n :playlist=\"playlist\"\n />\n </section>\n </div>\n\n <slot name=\"bottom\" v-bind=\"{ playlist }\" />\n </template>\n <ClassicLoading\n :loading-text=\"!loaded ? t('Loading content ...') : undefined\"\n :error-text=\"error ? t(`Playlist doesn't exist`) : undefined\"\n />\n </section>\n</template>\n\n<script setup lang=\"ts\">\nimport { useGeneralStore } from \"../../stores/GeneralStore\";\nimport { useAuthStore } from \"../../stores/AuthStore\";\nimport {useOrgaComputed} from \"../composable/useOrgaComputed\";\nimport {useSeoTitleUrl} from \"../composable/route/useSeoTitleUrl\";\nimport ClassicLoading from \"../form/ClassicLoading.vue\";\nimport PodcastList from \"../display/playlist/PodcastList.vue\";\nimport { useFilterStore } from \"../../stores/FilterStore\";\nimport { state } from \"../../stores/ParamSdkStore\";\nimport displayHelper from \"../../helper/displayHelper\";\nimport {useImageProxy} from \"../composable/useImageProxy\";\nimport {useErrorHandler} from \"../composable/useErrorHandler\";\nimport { Playlist } from \"@/stores/class/general/playlist\";\nimport {defineAsyncComponent, ref, Ref, computed, watch, onBeforeUnmount } from \"vue\";\nimport { AxiosError } from \"axios\";\nimport { useI18n } from \"vue-i18n\";\nimport { useRoute } from \"vue-router\";\nimport { useSimplePageParam } from \"../composable/route/useSimplePageParam\";\nimport { playlistApi } from \"../../api/playlistApi\";\n\nimport SubscribeButtons from \"../display/sharing/SubscribeButtons.vue\"; \nconst ShareSocialsButtons = defineAsyncComponent(\n () => import(\"../display/sharing/ShareSocialsButtons.vue\"),\n);\nconst SharePlayer = defineAsyncComponent(\n () => import(\"../display/sharing/SharePlayer.vue\"),\n);\nconst PodcastmakerHeader = defineAsyncComponent(\n () => import(\"../display/podcastmaker/PodcastmakerHeader.vue\"),\n);\nconst ShareAnonymous = defineAsyncComponent(() => import(\"../display/sharing/ShareAnonymous.vue\"));\n\n\n//Props\nconst props = defineProps({\n playlistId: { default: undefined, type: Number },\n pr: { default: 0, type: Number },\n ps: { default: 30, type: Number },\n routeQuery: { default: \"\", type: String },\n});\n\n\n//Data \nconst loaded = ref(false);\nconst error = ref(false);\nconst playlist : Ref<Playlist | undefined> = ref(undefined);\n\n\n//Composables\nconst route = useRoute();\nconst { t } = useI18n();\nconst { useProxyImageUrl } = useImageProxy();\nconst { isPodcastmaker, isEditRights, authOrgaId } = useOrgaComputed();\nconst { updatePathParams } = useSeoTitleUrl();\nconst {handle403} = useErrorHandler();\nconst authStore = useAuthStore();\nconst filterStore = useFilterStore();\nconst generalStore = useGeneralStore();\nconst {\n searchPattern,\n paginateFirst,\n isInit\n} = useSimplePageParam(props, true);\n\n\n//Computed\nconst playlistRadio = computed(() =>{\n return (\n \"AMBIANCE\" === playlist.value?.ambianceType ||\n \"AMBIANCE_PROGRAMMED\" === playlist.value?.ambianceType\n );\n});\nconst pageTitle = computed(() =>playlistRadio.value? t(\"Mix of episodes\"): t(\"Playlist\"));\nconst name = computed(() =>playlist.value?.title ?? \"\");\nconst description = computed(() =>playlist.value?.description ?? \"\");\nconst editRight = computed(() =>{\n return isEditRights(\n playlist.value?.organisation?.id,\n authStore.isRolePlaylists,\n );\n});\n\n\n//Watch\nwatch(()=>props.playlistId, () => {getPlaylistDetails()}, {immediate: true});\n\n\nonBeforeUnmount(() => {\n generalStore.contentToDisplayUpdate(null);\n});\n\n\n//Methods\nfunction urlify(text:string|undefined){\n return displayHelper.urlify(text);\n}\nfunction initError(): void {\n error.value = true;\n loaded.value = true;\n}\nasync function getPlaylistDetails(): Promise<void> {\n try {\n loaded.value = false;\n error.value = false;\n playlist.value = await playlistApi.get(props.playlistId);\n filterStore.updateOrgaIfNecessary(playlist.value.organisation?.id);\n if (\n (!editRight.value && playlistRadio.value) ||\n (\"PUBLIC\" !== playlist.value.organisation?.privacy &&\n filterStore.filterOrgaId !== playlist.value.organisation?.id &&\n route.query.productor !== playlist.value.organisation?.id)\n ) {\n initError();\n return;\n }\n generalStore.contentToDisplayUpdate(playlist.value);\n updatePathParams(playlist.value.title);\n } catch (error) {\n handle403(error as AxiosError);\n initError();\n }\n loaded.value = true;\n}\n\n</script>\n"],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"PlaylistPage-Botg5_jv.mjs","names":[],"sources":["../src/components/pages/PlaylistPage.vue","../src/components/pages/PlaylistPage.vue"],"sourcesContent":["<template>\n <section class=\"page-box\">\n <template v-if=\"loaded && !error && playlist\">\n <PodcastmakerHeader\n v-if=\"isPodcastmaker\"\n :page-title=\"pageTitle\"\n :img-url=\"playlist.imageUrl\"\n />\n <div\n class=\"d-flex flex-column page-element\"\n :class=\"isPodcastmaker ? 'page-element-podcastmaker' : ''\"\n >\n <section class=\"module-box\">\n <slot\n v-if=\"editRight && !isPodcastmaker\"\n name=\"edit-box\"\n :playlist=\"playlist\"\n />\n\n <div class=\"mb-5 mt-3 description-text\">\n <img\n v-lazy=\"useProxyImageUrl(playlist.imageUrl, '250')\"\n width=\"250\"\n height=\"250\"\n aria-hidden=\"true\"\n alt=\"\"\n :title=\"t('Playlist name image', { name: name })\"\n class=\"img-box float-start me-3 mb-3\"\n />\n <div class=\"d-flex align-items-center justify-content-between\">\n <h2>{{ name }}</h2>\n <ShareAnonymous v-if=\"!editRight\" class=\"d-flex justify-content-end flex-grow-1\" :playlist=\"playlist\" :organisation-id=\"playlist.organisation?.id\"/>\n </div>\n <!-- eslint-disable vue/no-v-html -->\n <p class=\"html-wysiwyg-content\" v-html=\"urlify(description)\" />\n <!-- eslint-enable -->\n </div>\n <SubscribeButtons\n v-if=\"isPodcastmaker\"\n class=\"mt-4\"\n :content=\"playlist\"\n :window-width=\"1000\"\n :justify-center=\"false\"\n />\n </section>\n <SharePlayer\n v-if=\"!isPodcastmaker && editRight\"\n :playlist=\"playlist\"\n :organisation-id=\"authOrgaId\"\n />\n <ShareSocialsButtons\n v-if=\"state.podcastPage.ShareButtons\"\n :organisation-id=\"playlist.organisation.id\"\n />\n <section class=\"module-box\">\n <PodcastList \n v-if=\"isInit\"\n v-model:query=\"searchPattern\"\n :first=\"paginateFirst\"\n :size=\"ps\"\n :playlist=\"playlist\"\n />\n </section>\n </div>\n\n <slot name=\"bottom\" v-bind=\"{ playlist }\" />\n </template>\n <ClassicLoading\n :loading-text=\"!loaded ? t('Loading content ...') : undefined\"\n :error-text=\"error ? t(`Playlist doesn't exist`) : undefined\"\n />\n </section>\n</template>\n\n<script setup lang=\"ts\">\nimport { useGeneralStore } from \"../../stores/GeneralStore\";\nimport { useAuthStore } from \"../../stores/AuthStore\";\nimport {useOrgaComputed} from \"../composable/useOrgaComputed\";\nimport {useSeoTitleUrl} from \"../composable/route/useSeoTitleUrl\";\nimport ClassicLoading from \"../form/ClassicLoading.vue\";\nimport PodcastList from \"../display/playlist/PodcastList.vue\";\nimport { useFilterStore } from \"../../stores/FilterStore\";\nimport { state } from \"../../stores/ParamSdkStore\";\nimport displayHelper from \"../../helper/displayHelper\";\nimport {useImageProxy} from \"../composable/useImageProxy\";\nimport {useErrorHandler} from \"../composable/useErrorHandler\";\nimport { Playlist } from \"@/stores/class/general/playlist\";\nimport {defineAsyncComponent, ref, Ref, computed, watch, onBeforeUnmount } from \"vue\";\nimport { AxiosError } from \"axios\";\nimport { useI18n } from \"vue-i18n\";\nimport { useRoute } from \"vue-router\";\nimport { useSimplePageParam } from \"../composable/route/useSimplePageParam\";\nimport { playlistApi } from \"../../api/playlistApi\";\n\nimport SubscribeButtons from \"../display/sharing/SubscribeButtons.vue\"; \nconst ShareSocialsButtons = defineAsyncComponent(\n () => import(\"../display/sharing/ShareSocialsButtons.vue\"),\n);\nconst SharePlayer = defineAsyncComponent(\n () => import(\"../display/sharing/SharePlayer.vue\"),\n);\nconst PodcastmakerHeader = defineAsyncComponent(\n () => import(\"../display/podcastmaker/PodcastmakerHeader.vue\"),\n);\nconst ShareAnonymous = defineAsyncComponent(() => import(\"../display/sharing/ShareAnonymous.vue\"));\n\n\n//Props\nconst props = defineProps({\n playlistId: { default: undefined, type: Number },\n pr: { default: 0, type: Number },\n ps: { default: 30, type: Number },\n routeQuery: { default: \"\", type: String },\n});\n\n\n//Data \nconst loaded = ref(false);\nconst error = ref(false);\nconst playlist : Ref<Playlist | undefined> = ref(undefined);\n\n\n//Composables\nconst route = useRoute();\nconst { t } = useI18n();\nconst { useProxyImageUrl } = useImageProxy();\nconst { isPodcastmaker, isEditRights, authOrgaId } = useOrgaComputed();\nconst { updatePathParams } = useSeoTitleUrl();\nconst {handle403} = useErrorHandler();\nconst authStore = useAuthStore();\nconst filterStore = useFilterStore();\nconst generalStore = useGeneralStore();\nconst {\n searchPattern,\n paginateFirst,\n isInit\n} = useSimplePageParam(props, true);\n\n\n//Computed\nconst playlistRadio = computed(() =>{\n return (\n \"AMBIANCE\" === playlist.value?.ambianceType ||\n \"AMBIANCE_PROGRAMMED\" === playlist.value?.ambianceType\n );\n});\nconst pageTitle = computed(() =>playlistRadio.value? t(\"Mix of episodes\"): t(\"Playlist\"));\nconst name = computed(() =>playlist.value?.title ?? \"\");\nconst description = computed(() =>playlist.value?.description ?? \"\");\nconst editRight = computed(() =>{\n return isEditRights(\n playlist.value?.organisation?.id,\n authStore.isRolePlaylists,\n );\n});\n\n\n//Watch\nwatch(()=>props.playlistId, () => {getPlaylistDetails()}, {immediate: true});\n\n\nonBeforeUnmount(() => {\n generalStore.contentToDisplayUpdate(null);\n});\n\n\n//Methods\nfunction urlify(text:string|undefined){\n return displayHelper.urlify(text);\n}\nfunction initError(): void {\n error.value = true;\n loaded.value = true;\n}\nasync function getPlaylistDetails(): Promise<void> {\n try {\n loaded.value = false;\n error.value = false;\n playlist.value = await playlistApi.get(props.playlistId);\n filterStore.updateOrgaIfNecessary(playlist.value.organisation?.id);\n if (\n (!editRight.value && playlistRadio.value) ||\n (\"PUBLIC\" !== playlist.value.organisation?.privacy &&\n filterStore.filterOrgaId !== playlist.value.organisation?.id &&\n route.query.productor !== playlist.value.organisation?.id)\n ) {\n initError();\n return;\n }\n generalStore.contentToDisplayUpdate(playlist.value);\n updatePathParams(playlist.value.title);\n } catch (error) {\n handle403(error as AxiosError);\n initError();\n }\n loaded.value = true;\n}\n\n</script>\n","<template>\n <section class=\"page-box\">\n <template v-if=\"loaded && !error && playlist\">\n <PodcastmakerHeader\n v-if=\"isPodcastmaker\"\n :page-title=\"pageTitle\"\n :img-url=\"playlist.imageUrl\"\n />\n <div\n class=\"d-flex flex-column page-element\"\n :class=\"isPodcastmaker ? 'page-element-podcastmaker' : ''\"\n >\n <section class=\"module-box\">\n <slot\n v-if=\"editRight && !isPodcastmaker\"\n name=\"edit-box\"\n :playlist=\"playlist\"\n />\n\n <div class=\"mb-5 mt-3 description-text\">\n <img\n v-lazy=\"useProxyImageUrl(playlist.imageUrl, '250')\"\n width=\"250\"\n height=\"250\"\n aria-hidden=\"true\"\n alt=\"\"\n :title=\"t('Playlist name image', { name: name })\"\n class=\"img-box float-start me-3 mb-3\"\n />\n <div class=\"d-flex align-items-center justify-content-between\">\n <h2>{{ name }}</h2>\n <ShareAnonymous v-if=\"!editRight\" class=\"d-flex justify-content-end flex-grow-1\" :playlist=\"playlist\" :organisation-id=\"playlist.organisation?.id\"/>\n </div>\n <!-- eslint-disable vue/no-v-html -->\n <p class=\"html-wysiwyg-content\" v-html=\"urlify(description)\" />\n <!-- eslint-enable -->\n </div>\n <SubscribeButtons\n v-if=\"isPodcastmaker\"\n class=\"mt-4\"\n :content=\"playlist\"\n :window-width=\"1000\"\n :justify-center=\"false\"\n />\n </section>\n <SharePlayer\n v-if=\"!isPodcastmaker && editRight\"\n :playlist=\"playlist\"\n :organisation-id=\"authOrgaId\"\n />\n <ShareSocialsButtons\n v-if=\"state.podcastPage.ShareButtons\"\n :organisation-id=\"playlist.organisation.id\"\n />\n <section class=\"module-box\">\n <PodcastList \n v-if=\"isInit\"\n v-model:query=\"searchPattern\"\n :first=\"paginateFirst\"\n :size=\"ps\"\n :playlist=\"playlist\"\n />\n </section>\n </div>\n\n <slot name=\"bottom\" v-bind=\"{ playlist }\" />\n </template>\n <ClassicLoading\n :loading-text=\"!loaded ? t('Loading content ...') : undefined\"\n :error-text=\"error ? t(`Playlist doesn't exist`) : undefined\"\n />\n </section>\n</template>\n\n<script setup lang=\"ts\">\nimport { useGeneralStore } from \"../../stores/GeneralStore\";\nimport { useAuthStore } from \"../../stores/AuthStore\";\nimport {useOrgaComputed} from \"../composable/useOrgaComputed\";\nimport {useSeoTitleUrl} from \"../composable/route/useSeoTitleUrl\";\nimport ClassicLoading from \"../form/ClassicLoading.vue\";\nimport PodcastList from \"../display/playlist/PodcastList.vue\";\nimport { useFilterStore } from \"../../stores/FilterStore\";\nimport { state } from \"../../stores/ParamSdkStore\";\nimport displayHelper from \"../../helper/displayHelper\";\nimport {useImageProxy} from \"../composable/useImageProxy\";\nimport {useErrorHandler} from \"../composable/useErrorHandler\";\nimport { Playlist } from \"@/stores/class/general/playlist\";\nimport {defineAsyncComponent, ref, Ref, computed, watch, onBeforeUnmount } from \"vue\";\nimport { AxiosError } from \"axios\";\nimport { useI18n } from \"vue-i18n\";\nimport { useRoute } from \"vue-router\";\nimport { useSimplePageParam } from \"../composable/route/useSimplePageParam\";\nimport { playlistApi } from \"../../api/playlistApi\";\n\nimport SubscribeButtons from \"../display/sharing/SubscribeButtons.vue\"; \nconst ShareSocialsButtons = defineAsyncComponent(\n () => import(\"../display/sharing/ShareSocialsButtons.vue\"),\n);\nconst SharePlayer = defineAsyncComponent(\n () => import(\"../display/sharing/SharePlayer.vue\"),\n);\nconst PodcastmakerHeader = defineAsyncComponent(\n () => import(\"../display/podcastmaker/PodcastmakerHeader.vue\"),\n);\nconst ShareAnonymous = defineAsyncComponent(() => import(\"../display/sharing/ShareAnonymous.vue\"));\n\n\n//Props\nconst props = defineProps({\n playlistId: { default: undefined, type: Number },\n pr: { default: 0, type: Number },\n ps: { default: 30, type: Number },\n routeQuery: { default: \"\", type: String },\n});\n\n\n//Data \nconst loaded = ref(false);\nconst error = ref(false);\nconst playlist : Ref<Playlist | undefined> = ref(undefined);\n\n\n//Composables\nconst route = useRoute();\nconst { t } = useI18n();\nconst { useProxyImageUrl } = useImageProxy();\nconst { isPodcastmaker, isEditRights, authOrgaId } = useOrgaComputed();\nconst { updatePathParams } = useSeoTitleUrl();\nconst {handle403} = useErrorHandler();\nconst authStore = useAuthStore();\nconst filterStore = useFilterStore();\nconst generalStore = useGeneralStore();\nconst {\n searchPattern,\n paginateFirst,\n isInit\n} = useSimplePageParam(props, true);\n\n\n//Computed\nconst playlistRadio = computed(() =>{\n return (\n \"AMBIANCE\" === playlist.value?.ambianceType ||\n \"AMBIANCE_PROGRAMMED\" === playlist.value?.ambianceType\n );\n});\nconst pageTitle = computed(() =>playlistRadio.value? t(\"Mix of episodes\"): t(\"Playlist\"));\nconst name = computed(() =>playlist.value?.title ?? \"\");\nconst description = computed(() =>playlist.value?.description ?? \"\");\nconst editRight = computed(() =>{\n return isEditRights(\n playlist.value?.organisation?.id,\n authStore.isRolePlaylists,\n );\n});\n\n\n//Watch\nwatch(()=>props.playlistId, () => {getPlaylistDetails()}, {immediate: true});\n\n\nonBeforeUnmount(() => {\n generalStore.contentToDisplayUpdate(null);\n});\n\n\n//Methods\nfunction urlify(text:string|undefined){\n return displayHelper.urlify(text);\n}\nfunction initError(): void {\n error.value = true;\n loaded.value = true;\n}\nasync function getPlaylistDetails(): Promise<void> {\n try {\n loaded.value = false;\n error.value = false;\n playlist.value = await playlistApi.get(props.playlistId);\n filterStore.updateOrgaIfNecessary(playlist.value.organisation?.id);\n if (\n (!editRight.value && playlistRadio.value) ||\n (\"PUBLIC\" !== playlist.value.organisation?.privacy &&\n filterStore.filterOrgaId !== playlist.value.organisation?.id &&\n route.query.productor !== playlist.value.organisation?.id)\n ) {\n initError();\n return;\n }\n generalStore.contentToDisplayUpdate(playlist.value);\n updatePathParams(playlist.value.title);\n } catch (error) {\n handle403(error as AxiosError);\n initError();\n }\n loaded.value = true;\n}\n\n</script>\n"],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"PlaylistPage-C56-smtp.mjs","names":[],"sources":["../src/components/pages/PlaylistPage.vue","../src/components/pages/PlaylistPage.vue"],"sourcesContent":["<template>\n <section class=\"page-box\">\n <template v-if=\"loaded && !error && playlist\">\n <PodcastmakerHeader\n v-if=\"isPodcastmaker\"\n :page-title=\"pageTitle\"\n :img-url=\"playlist.imageUrl\"\n />\n <div\n class=\"d-flex flex-column page-element\"\n :class=\"isPodcastmaker ? 'page-element-podcastmaker' : ''\"\n >\n <section class=\"module-box\">\n <slot\n v-if=\"editRight && !isPodcastmaker\"\n name=\"edit-box\"\n :playlist=\"playlist\"\n />\n\n <div class=\"mb-5 mt-3 description-text\">\n <img\n v-lazy=\"useProxyImageUrl(playlist.imageUrl, '250')\"\n width=\"250\"\n height=\"250\"\n aria-hidden=\"true\"\n alt=\"\"\n :title=\"t('Playlist name image', { name: name })\"\n class=\"img-box float-start me-3 mb-3\"\n />\n <div class=\"d-flex align-items-center justify-content-between\">\n <h2>{{ name }}</h2>\n <ShareAnonymous v-if=\"!editRight\" class=\"d-flex justify-content-end flex-grow-1\" :playlist=\"playlist\" :organisation-id=\"playlist.organisation?.id\"/>\n </div>\n <!-- eslint-disable vue/no-v-html -->\n <p class=\"html-wysiwyg-content\" v-html=\"urlify(description)\" />\n <!-- eslint-enable -->\n </div>\n <SubscribeButtons\n v-if=\"isPodcastmaker\"\n class=\"mt-4\"\n :content=\"playlist\"\n :window-width=\"1000\"\n :justify-center=\"false\"\n />\n </section>\n <SharePlayer\n v-if=\"!isPodcastmaker && editRight\"\n :playlist=\"playlist\"\n :organisation-id=\"authOrgaId\"\n />\n <ShareSocialsButtons\n v-if=\"state.podcastPage.ShareButtons\"\n :organisation-id=\"playlist.organisation.id\"\n />\n <section class=\"module-box\">\n <PodcastList \n v-if=\"isInit\"\n v-model:query=\"searchPattern\"\n :first=\"paginateFirst\"\n :size=\"ps\"\n :playlist=\"playlist\"\n />\n </section>\n </div>\n\n <slot name=\"bottom\" v-bind=\"{ playlist }\" />\n </template>\n <ClassicLoading\n :loading-text=\"!loaded ? t('Loading content ...') : undefined\"\n :error-text=\"error ? t(`Playlist doesn't exist`) : undefined\"\n />\n </section>\n</template>\n\n<script setup lang=\"ts\">\nimport { useGeneralStore } from \"../../stores/GeneralStore\";\nimport { useAuthStore } from \"../../stores/AuthStore\";\nimport {useOrgaComputed} from \"../composable/useOrgaComputed\";\nimport {useSeoTitleUrl} from \"../composable/route/useSeoTitleUrl\";\nimport ClassicLoading from \"../form/ClassicLoading.vue\";\nimport PodcastList from \"../display/playlist/PodcastList.vue\";\nimport { useFilterStore } from \"../../stores/FilterStore\";\nimport { state } from \"../../stores/ParamSdkStore\";\nimport displayHelper from \"../../helper/displayHelper\";\nimport {useImageProxy} from \"../composable/useImageProxy\";\nimport {useErrorHandler} from \"../composable/useErrorHandler\";\nimport { Playlist } from \"@/stores/class/general/playlist\";\nimport {defineAsyncComponent, ref, Ref, computed, watch, onBeforeUnmount } from \"vue\";\nimport { AxiosError } from \"axios\";\nimport { useI18n } from \"vue-i18n\";\nimport { useRoute } from \"vue-router\";\nimport { useSimplePageParam } from \"../composable/route/useSimplePageParam\";\nimport { playlistApi } from \"../../api/playlistApi\";\n\nimport SubscribeButtons from \"../display/sharing/SubscribeButtons.vue\"; \nconst ShareSocialsButtons = defineAsyncComponent(\n () => import(\"../display/sharing/ShareSocialsButtons.vue\"),\n);\nconst SharePlayer = defineAsyncComponent(\n () => import(\"../display/sharing/SharePlayer.vue\"),\n);\nconst PodcastmakerHeader = defineAsyncComponent(\n () => import(\"../display/podcastmaker/PodcastmakerHeader.vue\"),\n);\nconst ShareAnonymous = defineAsyncComponent(() => import(\"../display/sharing/ShareAnonymous.vue\"));\n\n\n//Props\nconst props = defineProps({\n playlistId: { default: undefined, type: Number },\n pr: { default: 0, type: Number },\n ps: { default: 30, type: Number },\n routeQuery: { default: \"\", type: String },\n});\n\n\n//Data \nconst loaded = ref(false);\nconst error = ref(false);\nconst playlist : Ref<Playlist | undefined> = ref(undefined);\n\n\n//Composables\nconst route = useRoute();\nconst { t } = useI18n();\nconst { useProxyImageUrl } = useImageProxy();\nconst { isPodcastmaker, isEditRights, authOrgaId } = useOrgaComputed();\nconst { updatePathParams } = useSeoTitleUrl();\nconst {handle403} = useErrorHandler();\nconst authStore = useAuthStore();\nconst filterStore = useFilterStore();\nconst generalStore = useGeneralStore();\nconst {\n searchPattern,\n paginateFirst,\n isInit\n} = useSimplePageParam(props, true);\n\n\n//Computed\nconst playlistRadio = computed(() =>{\n return (\n \"AMBIANCE\" === playlist.value?.ambianceType ||\n \"AMBIANCE_PROGRAMMED\" === playlist.value?.ambianceType\n );\n});\nconst pageTitle = computed(() =>playlistRadio.value? t(\"Mix of episodes\"): t(\"Playlist\"));\nconst name = computed(() =>playlist.value?.title ?? \"\");\nconst description = computed(() =>playlist.value?.description ?? \"\");\nconst editRight = computed(() =>{\n return isEditRights(\n playlist.value?.organisation?.id,\n authStore.isRolePlaylists,\n );\n});\n\n\n//Watch\nwatch(()=>props.playlistId, () => {getPlaylistDetails()}, {immediate: true});\n\n\nonBeforeUnmount(() => {\n generalStore.contentToDisplayUpdate(null);\n});\n\n\n//Methods\nfunction urlify(text:string|undefined){\n return displayHelper.urlify(text);\n}\nfunction initError(): void {\n error.value = true;\n loaded.value = true;\n}\nasync function getPlaylistDetails(): Promise<void> {\n try {\n loaded.value = false;\n error.value = false;\n playlist.value = await playlistApi.get(props.playlistId);\n filterStore.updateOrgaIfNecessary(playlist.value.organisation?.id);\n if (\n (!editRight.value && playlistRadio.value) ||\n (\"PUBLIC\" !== playlist.value.organisation?.privacy &&\n filterStore.filterOrgaId !== playlist.value.organisation?.id &&\n route.query.productor !== playlist.value.organisation?.id)\n ) {\n initError();\n return;\n }\n generalStore.contentToDisplayUpdate(playlist.value);\n updatePathParams(playlist.value.title);\n } catch (error) {\n handle403(error as AxiosError);\n initError();\n }\n loaded.value = true;\n}\n\n</script>\n","<template>\n <section class=\"page-box\">\n <template v-if=\"loaded && !error && playlist\">\n <PodcastmakerHeader\n v-if=\"isPodcastmaker\"\n :page-title=\"pageTitle\"\n :img-url=\"playlist.imageUrl\"\n />\n <div\n class=\"d-flex flex-column page-element\"\n :class=\"isPodcastmaker ? 'page-element-podcastmaker' : ''\"\n >\n <section class=\"module-box\">\n <slot\n v-if=\"editRight && !isPodcastmaker\"\n name=\"edit-box\"\n :playlist=\"playlist\"\n />\n\n <div class=\"mb-5 mt-3 description-text\">\n <img\n v-lazy=\"useProxyImageUrl(playlist.imageUrl, '250')\"\n width=\"250\"\n height=\"250\"\n aria-hidden=\"true\"\n alt=\"\"\n :title=\"t('Playlist name image', { name: name })\"\n class=\"img-box float-start me-3 mb-3\"\n />\n <div class=\"d-flex align-items-center justify-content-between\">\n <h2>{{ name }}</h2>\n <ShareAnonymous v-if=\"!editRight\" class=\"d-flex justify-content-end flex-grow-1\" :playlist=\"playlist\" :organisation-id=\"playlist.organisation?.id\"/>\n </div>\n <!-- eslint-disable vue/no-v-html -->\n <p class=\"html-wysiwyg-content\" v-html=\"urlify(description)\" />\n <!-- eslint-enable -->\n </div>\n <SubscribeButtons\n v-if=\"isPodcastmaker\"\n class=\"mt-4\"\n :content=\"playlist\"\n :window-width=\"1000\"\n :justify-center=\"false\"\n />\n </section>\n <SharePlayer\n v-if=\"!isPodcastmaker && editRight\"\n :playlist=\"playlist\"\n :organisation-id=\"authOrgaId\"\n />\n <ShareSocialsButtons\n v-if=\"state.podcastPage.ShareButtons\"\n :organisation-id=\"playlist.organisation.id\"\n />\n <section class=\"module-box\">\n <PodcastList \n v-if=\"isInit\"\n v-model:query=\"searchPattern\"\n :first=\"paginateFirst\"\n :size=\"ps\"\n :playlist=\"playlist\"\n />\n </section>\n </div>\n\n <slot name=\"bottom\" v-bind=\"{ playlist }\" />\n </template>\n <ClassicLoading\n :loading-text=\"!loaded ? t('Loading content ...') : undefined\"\n :error-text=\"error ? t(`Playlist doesn't exist`) : undefined\"\n />\n </section>\n</template>\n\n<script setup lang=\"ts\">\nimport { useGeneralStore } from \"../../stores/GeneralStore\";\nimport { useAuthStore } from \"../../stores/AuthStore\";\nimport {useOrgaComputed} from \"../composable/useOrgaComputed\";\nimport {useSeoTitleUrl} from \"../composable/route/useSeoTitleUrl\";\nimport ClassicLoading from \"../form/ClassicLoading.vue\";\nimport PodcastList from \"../display/playlist/PodcastList.vue\";\nimport { useFilterStore } from \"../../stores/FilterStore\";\nimport { state } from \"../../stores/ParamSdkStore\";\nimport displayHelper from \"../../helper/displayHelper\";\nimport {useImageProxy} from \"../composable/useImageProxy\";\nimport {useErrorHandler} from \"../composable/useErrorHandler\";\nimport { Playlist } from \"@/stores/class/general/playlist\";\nimport {defineAsyncComponent, ref, Ref, computed, watch, onBeforeUnmount } from \"vue\";\nimport { AxiosError } from \"axios\";\nimport { useI18n } from \"vue-i18n\";\nimport { useRoute } from \"vue-router\";\nimport { useSimplePageParam } from \"../composable/route/useSimplePageParam\";\nimport { playlistApi } from \"../../api/playlistApi\";\n\nimport SubscribeButtons from \"../display/sharing/SubscribeButtons.vue\"; \nconst ShareSocialsButtons = defineAsyncComponent(\n () => import(\"../display/sharing/ShareSocialsButtons.vue\"),\n);\nconst SharePlayer = defineAsyncComponent(\n () => import(\"../display/sharing/SharePlayer.vue\"),\n);\nconst PodcastmakerHeader = defineAsyncComponent(\n () => import(\"../display/podcastmaker/PodcastmakerHeader.vue\"),\n);\nconst ShareAnonymous = defineAsyncComponent(() => import(\"../display/sharing/ShareAnonymous.vue\"));\n\n\n//Props\nconst props = defineProps({\n playlistId: { default: undefined, type: Number },\n pr: { default: 0, type: Number },\n ps: { default: 30, type: Number },\n routeQuery: { default: \"\", type: String },\n});\n\n\n//Data \nconst loaded = ref(false);\nconst error = ref(false);\nconst playlist : Ref<Playlist | undefined> = ref(undefined);\n\n\n//Composables\nconst route = useRoute();\nconst { t } = useI18n();\nconst { useProxyImageUrl } = useImageProxy();\nconst { isPodcastmaker, isEditRights, authOrgaId } = useOrgaComputed();\nconst { updatePathParams } = useSeoTitleUrl();\nconst {handle403} = useErrorHandler();\nconst authStore = useAuthStore();\nconst filterStore = useFilterStore();\nconst generalStore = useGeneralStore();\nconst {\n searchPattern,\n paginateFirst,\n isInit\n} = useSimplePageParam(props, true);\n\n\n//Computed\nconst playlistRadio = computed(() =>{\n return (\n \"AMBIANCE\" === playlist.value?.ambianceType ||\n \"AMBIANCE_PROGRAMMED\" === playlist.value?.ambianceType\n );\n});\nconst pageTitle = computed(() =>playlistRadio.value? t(\"Mix of episodes\"): t(\"Playlist\"));\nconst name = computed(() =>playlist.value?.title ?? \"\");\nconst description = computed(() =>playlist.value?.description ?? \"\");\nconst editRight = computed(() =>{\n return isEditRights(\n playlist.value?.organisation?.id,\n authStore.isRolePlaylists,\n );\n});\n\n\n//Watch\nwatch(()=>props.playlistId, () => {getPlaylistDetails()}, {immediate: true});\n\n\nonBeforeUnmount(() => {\n generalStore.contentToDisplayUpdate(null);\n});\n\n\n//Methods\nfunction urlify(text:string|undefined){\n return displayHelper.urlify(text);\n}\nfunction initError(): void {\n error.value = true;\n loaded.value = true;\n}\nasync function getPlaylistDetails(): Promise<void> {\n try {\n loaded.value = false;\n error.value = false;\n playlist.value = await playlistApi.get(props.playlistId);\n filterStore.updateOrgaIfNecessary(playlist.value.organisation?.id);\n if (\n (!editRight.value && playlistRadio.value) ||\n (\"PUBLIC\" !== playlist.value.organisation?.privacy &&\n filterStore.filterOrgaId !== playlist.value.organisation?.id &&\n route.query.productor !== playlist.value.organisation?.id)\n ) {\n initError();\n return;\n }\n generalStore.contentToDisplayUpdate(playlist.value);\n updatePathParams(playlist.value.title);\n } catch (error) {\n handle403(error as AxiosError);\n initError();\n }\n loaded.value = true;\n}\n\n</script>\n"],"mappings":"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"}
|