@saooti/octopus-sdk 42.3.0 → 42.3.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/{AdvancedSearch-DEh3iiuK.mjs → AdvancedSearch-BTbYmlMm.mjs} +8 -8
- package/dist/AdvancedSearch-C6BJzvGT.mjs.map +1 -0
- package/dist/AdvancedSearch-ChnJq71j.mjs.map +1 -0
- package/dist/AdvancedSearch-ChtUj3vS.mjs.map +1 -0
- package/dist/AdvancedSearch-D-9o5KzI.mjs.map +1 -0
- package/dist/AdvancedSearch-DH5YTENK.mjs.map +1 -0
- package/dist/AdvancedSearch-DN3WFduh.mjs.map +1 -0
- package/dist/AdvancedSearch-EpYd6K3d.mjs.map +1 -0
- package/dist/AdvancedSearch-PRJyRSID.mjs.map +1 -0
- package/dist/AdvancedSearch-_E2nwQ-A.mjs.map +1 -0
- package/dist/AdvancedSearch-cLjakm-6.mjs.map +1 -0
- package/dist/AdvancedSearch-k-fQfSBk.mjs.map +1 -0
- package/dist/AdvancedSearch-zFJq-WlO.mjs.map +1 -0
- package/dist/CategoryChooser-CSUjIA0D.mjs.map +1 -0
- package/dist/{CategoryChooser-CeF4n-nw.mjs → CategoryChooser-fAUMJNHu.mjs} +1 -1
- package/dist/CategoryFilter-B0S_nCvS.mjs.map +1 -0
- package/dist/CategoryFilter-BVrLO_pV.mjs.map +1 -0
- package/dist/{CategoryFilter-Djmal5bY.mjs → CategoryFilter-CsYCvEnz.mjs} +3 -3
- package/dist/CategoryFilter-DVwCpHLx.mjs.map +1 -0
- package/dist/CategoryList-B_9GG6Z9.mjs.map +1 -0
- package/dist/{CategoryList-Dksp79Lm.mjs → CategoryList-CDoIfrDw.mjs} +2 -2
- package/dist/CategoryList-CUae_phb.mjs.map +1 -0
- package/dist/CategoryList-DxR0fpKd.mjs.map +1 -0
- package/dist/CategoryPage-C7aKDtgs.mjs.map +1 -0
- package/dist/{CategoryPage-DC8fMny_.mjs → CategoryPage-Cl5Yuxnu.mjs} +2 -2
- package/dist/CategoryPage-DlnAp05t.mjs.map +1 -0
- package/dist/CategoryPage-Dlq5XQBS.mjs.map +1 -0
- package/dist/{CategorySearchFilter-KVYBscdd.mjs → CategorySearchFilter-Cce5zxZB.mjs} +1 -1
- package/dist/CategorySearchFilter-EULpSE2e.mjs.map +1 -0
- package/dist/ChapteringModal-BplEGZj2.mjs.map +1 -0
- package/dist/ChapteringModal-C9yuW_IU.mjs.map +1 -0
- package/dist/{ChapteringModal-Be9FF1yz.mjs → ChapteringModal-DiiVSG7s.mjs} +1 -1
- package/dist/{CheckIdentityModal-nMszYOsW.mjs → CheckIdentityModal-BrnYeGdk.mjs} +3 -3
- package/dist/CheckIdentityModal-BtGdsv2v.mjs.map +1 -0
- package/dist/CheckIdentityModal-CpRO7ehH.mjs.map +1 -0
- package/dist/CheckIdentityModal-Cry9ra4J.mjs.map +1 -0
- package/dist/ClassicDatePicker--q1yYb-S.mjs.map +1 -0
- package/dist/ClassicDatePicker-4ouU5ov9.mjs.map +1 -0
- package/dist/ClassicDatePicker-B8bI9QfF.mjs.map +1 -0
- package/dist/ClassicDatePicker-BTJWityQ.mjs +186 -0
- package/dist/ClassicDatePicker-CChR9LBd.mjs.map +1 -0
- package/dist/ClassicDatePicker-CopJVkF0.mjs.map +1 -0
- package/dist/ClassicDatePicker-DgcJCevR.mjs.map +1 -0
- package/dist/ClassicDatePicker-NxGNQxHE.mjs.map +1 -0
- package/dist/ClassicDatePicker-dgdGXcRk.mjs.map +1 -0
- package/dist/{ClassicEmojiPicker-B4TAlZvo.mjs → ClassicEmojiPicker-C0gm-DA2.mjs} +1 -1
- package/dist/ClassicEmojiPicker-CJZD8H7L.mjs.map +1 -0
- package/dist/{ClassicHelpButton-DT7T8tMe.mjs → ClassicHelpButton-BnRLmYuh.mjs} +1 -1
- package/dist/ClassicHelpButton-Qb4AwvWI.mjs.map +1 -0
- package/dist/{ClassicInputText-DJ5kURGM.mjs → ClassicInputText-YsntJkHk.mjs} +1 -1
- package/dist/ClassicInputText-npkVSUoH.mjs.map +1 -0
- package/dist/ClassicMultiselect-2I2K-o4R.mjs.map +1 -0
- package/dist/{ClassicMultiselect-CDHdJjjV.mjs → ClassicMultiselect-C0yzVQ8Y.mjs} +1 -1
- package/dist/{ClassicNotifications-DEpVRRHg.mjs → ClassicNotifications-8CVfGSqL.mjs} +1 -1
- package/dist/ClassicNotifications-BFQ-R6kO.mjs.map +1 -0
- package/dist/ClassicNotifications-DR0PM1Xp.mjs.map +1 -0
- package/dist/{ClassicPopover-DWR50Nxi.mjs → ClassicPopover-BUb-1WMB.mjs} +1 -1
- package/dist/ClassicPopover-BhMY2SMo.mjs.map +1 -0
- package/dist/ClipboardModal-B_SZ6jDk.mjs.map +1 -0
- package/dist/{ClipboardModal-BUKwZYOf.mjs → ClipboardModal-ByVXPcKD.mjs} +1 -1
- package/dist/ClipboardModal-DjrZQRtY.mjs.map +1 -0
- package/dist/{CommentInput-US8ZtNj1.mjs → CommentInput-CrRstzua.mjs} +4 -4
- package/dist/CommentInput-DPMj47uE.mjs.map +1 -0
- package/dist/CommentInput-DbhOyi7c.mjs.map +1 -0
- package/dist/CommentInput-I97yysBW.mjs.map +1 -0
- package/dist/CommentItem-AItzrTBi.mjs.map +1 -0
- package/dist/CommentItem-B7vvJwZI.mjs.map +1 -0
- package/dist/{CommentItem-CqWZPmbj.mjs → CommentItem-BYU67TIu.mjs} +4 -4
- package/dist/CommentItem-CvNbH7Hf.mjs.map +1 -0
- package/dist/CommentList-BTyyCcX4.mjs.map +1 -0
- package/dist/CommentList-CWrf45Di.mjs.map +1 -0
- package/dist/CommentList-DP6wk4PD.mjs.map +1 -0
- package/dist/{CommentList-CSYpqgNM.mjs → CommentList-snIIudVC.mjs} +2 -2
- package/dist/CommentMoreActions-BNajG7wk.mjs.map +1 -0
- package/dist/CommentMoreActions-C1l4Y_HY.mjs.map +1 -0
- package/dist/CommentMoreActions-DPbJnEEV.mjs.map +1 -0
- package/dist/{CommentMoreActions-T5RN6BGq.mjs → CommentMoreActions-y202UxL5.mjs} +3 -3
- package/dist/{CommentName-DslRo9jg.mjs → CommentName-CHBlEM7I.mjs} +3 -3
- package/dist/CommentName-D5HN8bGE.mjs.map +1 -0
- package/dist/CommentName-DMom_kwo.mjs.map +1 -0
- package/dist/CommentName-OJrxjSxu.mjs.map +1 -0
- package/dist/CommentParentInfo-DWVF5Ewh.mjs.map +1 -0
- package/dist/CommentParentInfo-Do3IlO95.mjs.map +1 -0
- package/dist/{CommentParentInfo-DMX3nkCb.mjs → CommentParentInfo-DoEeaQGU.mjs} +2 -2
- package/dist/CommentParentInfo-DqHfDpKs.mjs.map +1 -0
- package/dist/{CommentPlayer-D3JEVPKX.mjs → CommentPlayer-B4MXG-gG.mjs} +2 -2
- package/dist/CommentPlayer-B67saxPf.mjs.map +1 -0
- package/dist/CommentPlayer-BUtEvkoV.mjs.map +1 -0
- package/dist/CommentSection-BIZMRePu.mjs.map +1 -0
- package/dist/CommentSection-CSehg6MD.mjs.map +1 -0
- package/dist/{CommentSection-Brn0VQcc.mjs → CommentSection-DZf04NxT.mjs} +3 -3
- package/dist/CommentSection-MDKioQWf.mjs.map +1 -0
- package/dist/CommentStore-BBm8MjxW.mjs.map +1 -0
- package/dist/{CommentStore-hPTYaDGr.mjs → CommentStore-CysGkBHp.mjs} +8 -8
- package/dist/CommentStore-F5MVSrDw.mjs.map +1 -0
- package/dist/ContractPreviewModal-CFSkXgB4.mjs.map +1 -0
- package/dist/ContractPreviewModal-CKL6Rb_V.mjs.map +1 -0
- package/dist/{ContractPreviewModal-48Je4Wuy.mjs → ContractPreviewModal-Dd-1KasR.mjs} +2 -2
- package/dist/DateFilter-BwYSwGc-.mjs.map +1 -0
- package/dist/DateFilter-CGTz76bp.mjs.map +1 -0
- package/dist/DateFilter-CfeYepTO.mjs.map +1 -0
- package/dist/{DateFilter-DztHuPm8.mjs → DateFilter-Cnb_S8Up.mjs} +1 -1
- package/dist/DateFilter-DFw66D2V.mjs.map +1 -0
- package/dist/DateFilter-DMOUMeCh.mjs.map +1 -0
- package/dist/DateFilter-DdbvVu9Q.mjs.map +1 -0
- package/dist/DateFilter-Dr1nRuvZ.mjs.map +1 -0
- package/dist/DateFilter-QGaXHkcu.mjs.map +1 -0
- package/dist/{DownloadPodcastButton-BYWuLoNg.mjs → DownloadPodcastButton-6HtR84aE.mjs} +2 -2
- package/dist/DownloadPodcastButton-D2qeKDPT.mjs.map +1 -0
- package/dist/DownloadPodcastButton-Tr_Y4qMu.mjs.map +1 -0
- package/dist/{EditCommentModal-DacFxzLx.mjs → EditCommentModal-BQ03B6LC.mjs} +2 -2
- package/dist/EditCommentModal-BZitN0Ir.mjs.map +1 -0
- package/dist/EditCommentModal-CcmCx_My.mjs.map +1 -0
- package/dist/EditCommentModal-sj0yXd7-.mjs.map +1 -0
- package/dist/EmissionGroupChooser--428fdeK.mjs.map +1 -0
- package/dist/EmissionGroupChooser-BJCKekKM.mjs.map +1 -0
- package/dist/EmissionGroupChooser-ByqGmsGw.mjs.map +1 -0
- package/dist/EmissionGroupChooser-Cb3CF0uc.mjs.map +1 -0
- package/dist/EmissionGroupChooser-D4vMQH8g.mjs.map +1 -0
- package/dist/{EmissionGroupChooser-KmzQjp7d.mjs → EmissionGroupChooser-De_IpEhW.mjs} +2 -2
- package/dist/EmissionInlineList-CdHQBjfR.mjs.map +1 -0
- package/dist/EmissionInlineList-CnA0d_k2.mjs.map +1 -0
- package/dist/EmissionInlineList-DLUvPBNl.mjs.map +1 -0
- package/dist/{EmissionInlineList-BoEIAbLu.mjs → EmissionInlineList-dlb4gUOP.mjs} +5 -5
- package/dist/EmissionItem-B39oFnXF.mjs.map +1 -0
- package/dist/EmissionItem-BkPLFhAo.mjs.map +1 -0
- package/dist/EmissionItem-CjAUdLb7.mjs.map +1 -0
- package/dist/{EmissionItem-BeQWw-UT.mjs → EmissionItem-Dm_IGNkw.mjs} +4 -4
- package/dist/EmissionList-B0UntYdC.mjs.map +1 -0
- package/dist/EmissionList-BQSI4xbi.mjs.map +1 -0
- package/dist/{EmissionList-DB7O1nj5.mjs → EmissionList-C4JEYLyK.mjs} +4 -4
- package/dist/EmissionList-C7lQBdlW.mjs.map +1 -0
- package/dist/EmissionPage-BF6s2ySo.mjs.map +1 -0
- package/dist/EmissionPage-B_-nDP5x.mjs.map +1 -0
- package/dist/EmissionPage-C-ESprrZ.mjs.map +1 -0
- package/dist/{EmissionPage-CNYJ1Puo.mjs → EmissionPage-C4XUdzzm.mjs} +10 -10
- package/dist/EmissionPage-CPXcNHGS.mjs.map +1 -0
- package/dist/EmissionPage-EMgXCVhK.mjs.map +1 -0
- package/dist/EmissionPage-mXbUqOh9.mjs.map +1 -0
- package/dist/{EmissionPlayerItem-S_yqupad.mjs → EmissionPlayerItem-BLIdolRe.mjs} +3 -3
- package/dist/EmissionPlayerItem-C27zJBhY.mjs.map +1 -0
- package/dist/EmissionPlayerItem-C3fkgEaL.mjs.map +1 -0
- package/dist/EmissionPlayerItem-DxXG20G1.mjs.map +1 -0
- package/dist/EmissionPresentationItem-BNnDSWGQ.mjs.map +1 -0
- package/dist/EmissionPresentationItem-BeETY65I.mjs.map +1 -0
- package/dist/{EmissionPresentationItem-kJgKN7Ju.mjs → EmissionPresentationItem-DYDwfqwp.mjs} +1 -1
- package/dist/EmissionPresentationList-BD7rIUok.mjs.map +1 -0
- package/dist/EmissionPresentationList-CGMyY_iu.mjs.map +1 -0
- package/dist/{EmissionPresentationList-Bg9X3CJP.mjs → EmissionPresentationList-Cxi7QnIs.mjs} +3 -3
- package/dist/EmissionsPage-4To0aRBA.mjs.map +1 -0
- package/dist/{EmissionsPage-BLpGH_PR.mjs → EmissionsPage-B0bXLncg.mjs} +5 -5
- package/dist/EmissionsPage-BIspB5uq.mjs.map +1 -0
- package/dist/EmissionsPage-BhUjdpEu.mjs.map +1 -0
- package/dist/EmissionsPage-Bn1R_ipo.mjs.map +1 -0
- package/dist/EmissionsPage-CNXwdJuV.mjs.map +1 -0
- package/dist/EmissionsPage-CPmhIbFf.mjs.map +1 -0
- package/dist/EmissionsPage-Cgzvn2h8.mjs.map +1 -0
- package/dist/EmissionsPage-D09zTpGb.mjs.map +1 -0
- package/dist/EmissionsPage-Dl7qaQT1.mjs.map +1 -0
- package/dist/EmissionsPage-DyleZtu_.mjs.map +1 -0
- package/dist/EmissionsPage-OVpc7k1Z.mjs.map +1 -0
- package/dist/EmissionsPage-wjKBLFM6.mjs.map +1 -0
- package/dist/Error403Page-B6Q7ijY3.mjs.map +1 -0
- package/dist/Error403Page-DF08mgCL.mjs.map +1 -0
- package/dist/{Error403Page-BB69doEn.mjs → Error403Page-DVmC5AOd.mjs} +2 -2
- package/dist/FooterGarSection-BWahCyz0.mjs.map +1 -0
- package/dist/{FooterGarSection-B9nsnpfF.mjs → FooterGarSection-BqPggI3o.mjs} +3 -3
- package/dist/FooterGarSection-CN8ZfO7e.mjs.map +1 -0
- package/dist/FooterSection-BOjr1LRb.mjs.map +1 -0
- package/dist/{FooterSection-DdGtlbk-.mjs → FooterSection-C5FEIJlU.mjs} +11 -11
- package/dist/FooterSection-nVRzKSYN.mjs.map +1 -0
- package/dist/HomeDropdown-3fl_xltN.mjs.map +1 -0
- package/dist/HomeDropdown-DGNkJhG2.mjs.map +1 -0
- package/dist/{HomeDropdown-BqwwLStt.mjs → HomeDropdown-Fx6kQAuH.mjs} +3 -3
- package/dist/HomeDropdown-PvmOUzYb.mjs.map +1 -0
- package/dist/{HomePage-JOUAKKfP.mjs → HomePage-7PT7HmHs.mjs} +3 -3
- package/dist/HomePage-D0Pbu_h1.mjs.map +1 -0
- package/dist/HomePage-D6_D1f33.mjs.map +1 -0
- package/dist/HomePage-ry0NfX1M.mjs.map +1 -0
- package/dist/InlineRubriqueList-BdpS1pVc.mjs.map +1 -0
- package/dist/InlineRubriqueList-BlcjQ4wR.mjs.map +1 -0
- package/dist/{InlineRubriqueList-BzcHKvM4.mjs → InlineRubriqueList-ezgexR-O.mjs} +1 -1
- package/dist/{LikeSection-MmbHMunb.mjs → LikeSection-CGu4yOCr.mjs} +3 -3
- package/dist/LikeSection-Cqj4y7qZ.mjs.map +1 -0
- package/dist/LikeSection-D95IMsZE.mjs.map +1 -0
- package/dist/LikeSection-HJla-zgI.mjs.map +1 -0
- package/dist/{ListPaginate-5uRK_QKJ.mjs → ListPaginate-BPdnBcpe.mjs} +2 -2
- package/dist/ListPaginate-DYzRnp-2.mjs.map +1 -0
- package/dist/ListPaginate-DyR7HLIc.mjs.map +1 -0
- package/dist/LiveHorizontalList-Bqe351Ut.mjs.map +1 -0
- package/dist/{LiveHorizontalList-CpoIRd4C.mjs → LiveHorizontalList-Bs-Rz5Ws.mjs} +3 -3
- package/dist/LiveHorizontalList-CaujYMT3.mjs.map +1 -0
- package/dist/LiveHorizontalList-DhsOZPT3.mjs.map +1 -0
- package/dist/{LiveList-DYFBrNgg.mjs → LiveList-BVOEnAEc.mjs} +5 -5
- package/dist/LiveList-DMB3FxUM.mjs.map +1 -0
- package/dist/LiveList-DOi4GV1x.mjs.map +1 -0
- package/dist/LiveList-Dh1mJVs7.mjs.map +1 -0
- package/dist/LivesPage-BvDLscOE.mjs.map +1 -0
- package/dist/{LivesPage-FSkmBdVw.mjs → LivesPage-DG5VY4HF.mjs} +2 -2
- package/dist/LivesPage-DmSlg7iH.mjs.map +1 -0
- package/dist/LivesPage-yy_5pI8R.mjs.map +1 -0
- package/dist/MapPage-3n-rigBK.mjs.map +1 -0
- package/dist/MapPage-5GwE8Z4E.mjs.map +1 -0
- package/dist/{MapPage-DpBt2gWF.mjs → MapPage-bIe2a9O1.mjs} +2 -2
- package/dist/MobileMenu-BSos17v3.mjs.map +1 -0
- package/dist/{MobileMenu-CjNMfHUP.mjs → MobileMenu-BZ5nOrYw.mjs} +5 -5
- package/dist/MobileMenu-C6W37oJg.mjs.map +1 -0
- package/dist/MobileMenu-K0rNwrW1.mjs.map +1 -0
- package/dist/NewsletterModal-CFGXBtID.mjs.map +1 -0
- package/dist/NewsletterModal-CZNwpCK5.mjs.map +1 -0
- package/dist/{NewsletterModal-BurqHTFc.mjs → NewsletterModal-DZk0mSVC.mjs} +1 -1
- package/dist/OctopusMultiselect-CFUGyzeM.mjs.map +1 -0
- package/dist/OctopusMultiselect-Cn1lqbQo.mjs.map +1 -0
- package/dist/OctopusMultiselect-esu8BY0J.mjs.map +1 -0
- package/dist/{OctopusMultiselect-C8qljiaH.mjs → OctopusMultiselect-noQPQMZQ.mjs} +7 -5
- package/dist/OrganisationChooser-BKfXLT4G.mjs.map +1 -0
- package/dist/{OrganisationChooser-Dx-OT7MW.mjs → OrganisationChooser-C48cWqbY.mjs} +3 -3
- package/dist/OrganisationChooser-PpO7MD7f.mjs.map +1 -0
- package/dist/OrganisationChooser-Y_jO6oXv.mjs.map +1 -0
- package/dist/{OrganisationChooserLight-BF5fT5pV.mjs → OrganisationChooserLight-Bcltbv-v.mjs} +1 -1
- package/dist/OrganisationChooserLight-Dh7wMH40.mjs.map +1 -0
- package/dist/OrganisationChooserLight-Dx_rkvpP.mjs.map +1 -0
- package/dist/PageNotFound-DeW-K_hL.mjs.map +1 -0
- package/dist/{PageNotFound-Cj-3Gv8T.mjs → PageNotFound-DogaoIFX.mjs} +2 -2
- package/dist/PageNotFound-gRuMWYCp.mjs.map +1 -0
- package/dist/ParticipantInlineList-CY_s6aJm.mjs.map +1 -0
- package/dist/{ParticipantInlineList-DEWqM1Io.mjs → ParticipantInlineList-D9pkOlvP.mjs} +4 -4
- package/dist/ParticipantInlineList-DSatB75C.mjs.map +1 -0
- package/dist/ParticipantItem-BG7yqRvD.mjs.map +1 -0
- package/dist/ParticipantItem-BTK25HID.mjs.map +1 -0
- package/dist/{ParticipantItem-BZAUIeSR.mjs → ParticipantItem-CbHOfVon.mjs} +3 -3
- package/dist/ParticipantPage-B4VnV8Yc.mjs.map +1 -0
- package/dist/ParticipantPage-B6Gzg6ul.mjs.map +1 -0
- package/dist/ParticipantPage-CNRNKTtC.mjs.map +1 -0
- package/dist/ParticipantPage-CpkhQjN2.mjs.map +1 -0
- package/dist/ParticipantPage-D61CCIqy.mjs.map +1 -0
- package/dist/ParticipantPage-Dh4JJCmJ.mjs.map +1 -0
- package/dist/{ParticipantPage-CzaHoWij.mjs → ParticipantPage-nTp2MbgB.mjs} +6 -6
- package/dist/{ParticipantsPage-goxJZQZZ.mjs → ParticipantsPage-Bbz9lQ_0.mjs} +6 -6
- package/dist/ParticipantsPage-COaQrVID.mjs.map +1 -0
- package/dist/ParticipantsPage-DRVVU7qp.mjs.map +1 -0
- package/dist/ParticipantsPage-DhKCWwKE.mjs.map +1 -0
- package/dist/{PlayerAnonymousModal-By96BtpA.mjs → PlayerAnonymousModal-B1iZ34O8.mjs} +2 -2
- package/dist/PlayerAnonymousModal-CBZStK-L.mjs.map +1 -0
- package/dist/PlayerAnonymousModal-Cq6-Dn49.mjs.map +1 -0
- package/dist/PlayerAnonymousModal-Cu2GGoAh.mjs.map +1 -0
- package/dist/PlayerAnonymousModal-DiXWtNmM.mjs.map +1 -0
- package/dist/PlayerAnonymousModal-DrQvDDym.mjs.map +1 -0
- package/dist/PlayerCompact-B9oeGx_g.mjs.map +1 -0
- package/dist/PlayerCompact-DtMginEc.mjs.map +1 -0
- package/dist/PlayerCompact-E8ydrdJ4.mjs.map +1 -0
- package/dist/{PlayerCompact-CjU8xxVH.mjs → PlayerCompact-_39FpkWo.mjs} +4 -4
- package/dist/PlayerComponent-4Wj5XlrS.mjs.map +1 -0
- package/dist/{PlayerComponent-B58O6U6i.mjs → PlayerComponent-B1RsmSf0.mjs} +47 -47
- package/dist/PlayerComponent-BGVzhVz9.mjs.map +1 -0
- package/dist/PlayerComponent-BIshvul2.mjs.map +1 -0
- package/dist/PlayerComponent-BO7wUL2M.mjs.map +1 -0
- package/dist/PlayerComponent-C222I0kT.mjs.map +1 -0
- package/dist/PlayerComponent-CjNZNKKz.mjs.map +1 -0
- package/dist/PlayerComponent-UG_c6_yr.mjs.map +1 -0
- package/dist/{PlayerLarge-CWL5SDzD.mjs → PlayerLarge-BxdyYLOt.mjs} +5 -5
- package/dist/PlayerLarge-CPUAoR9q.mjs.map +1 -0
- package/dist/PlayerLarge-DP7RsA83.mjs.map +1 -0
- package/dist/PlayerLarge-DpiFO7gk.mjs.map +1 -0
- package/dist/PlayerLarge-Dwtmu4gz.mjs.map +1 -0
- package/dist/PlayerLarge-HvRHSw4j.mjs.map +1 -0
- package/dist/PlayerLarge-X5uYCbyS.mjs.map +1 -0
- package/dist/PlayerLarge-qwr3iWSX.mjs.map +1 -0
- package/dist/{PlayerPlayButton-DmvV2YDi.mjs → PlayerPlayButton-BIsfgj0d.mjs} +4 -4
- package/dist/PlayerPlayButton-BQ4zJOrE.mjs.map +1 -0
- package/dist/PlayerPlayButton-kh4ZCdWh.mjs.map +1 -0
- package/dist/PlayerProgressBar-C-I3dk3l.mjs.map +1 -0
- package/dist/PlayerProgressBar-Dr-aFk7O.mjs.map +1 -0
- package/dist/{PlayerProgressBar-Cl_mF4nD.mjs → PlayerProgressBar-dSschgez.mjs} +2 -2
- package/dist/PlayerProgressBar-xc1ZFPJY.mjs.map +1 -0
- package/dist/PlayerStore-Aq_ukXXS.mjs.map +1 -0
- package/dist/PlayerStore-C_QCHbT3.mjs.map +1 -0
- package/dist/{PlayerStore-CKprkxa0.mjs → PlayerStore-DggKki80.mjs} +1 -1
- package/dist/PlayerVideo-BNfhaNUn.mjs.map +1 -0
- package/dist/{PlayerVideo-CVUU7nHT.mjs → PlayerVideo-BWyvKlJT.mjs} +3 -3
- package/dist/PlayerVideo-Bhok6qYS.mjs.map +1 -0
- package/dist/PlayerVideo-CN609whx.mjs.map +1 -0
- package/dist/PlayerVideo-DXG_PsWA.mjs.map +1 -0
- package/dist/PlayerVideo-DzUapxuZ.mjs.map +1 -0
- package/dist/PlayerVideoDigiteka-B1rRVLzy.mjs.map +1 -0
- package/dist/PlayerVideoDigiteka-B6qODy7b.mjs.map +1 -0
- package/dist/{PlayerVideoDigiteka-DZIqqN8a.mjs → PlayerVideoDigiteka-Dxx63XHI.mjs} +2 -2
- package/dist/PlayerVideoHls-BoAbvi2b.mjs.map +1 -0
- package/dist/PlayerVideoHls-BsHaaJB-.mjs.map +1 -0
- package/dist/PlayerVideoHls-C0ddorEn.mjs.map +1 -0
- package/dist/PlayerVideoHls-DBODDRmV.mjs.map +1 -0
- package/dist/PlayerVideoHls-DVNHm_O2.mjs.map +1 -0
- package/dist/{PlayerVideoHls-BirHOkZD.mjs → PlayerVideoHls-DzbyXZsQ.mjs} +9 -7
- package/dist/{PlaylistPage-DljbABur.mjs → PlaylistPage-BdbqXFwR.mjs} +35 -35
- package/dist/PlaylistPage-BgUaPJet.mjs.map +1 -0
- package/dist/PlaylistPage-BwF2VdGb.mjs.map +1 -0
- package/dist/PlaylistPage-CINwx3zE.mjs.map +1 -0
- package/dist/PlaylistPage-CPB647jC.mjs.map +1 -0
- package/dist/PlaylistPage-DDzE5GQs.mjs.map +1 -0
- package/dist/PlaylistPage-bm1nWKMg.mjs.map +1 -0
- package/dist/PlaylistsPage-BwkVSYIp.mjs.map +1 -0
- package/dist/PlaylistsPage-C62NUvz4.mjs.map +1 -0
- package/dist/{PlaylistsPage-BSW-uPWF.mjs → PlaylistsPage-D08i24b2.mjs} +13 -13
- package/dist/PlaylistsPage-Dvh77ql6.mjs.map +1 -0
- package/dist/PodcastFilterList-BBhzOM64.mjs.map +1 -0
- package/dist/PodcastFilterList-BKBjd36i.mjs.map +1 -0
- package/dist/{PodcastFilterList-YM90eN60.mjs → PodcastFilterList-CL5ebQ69.mjs} +3 -3
- package/dist/PodcastFilterList-D9NTYS1v.mjs.map +1 -0
- package/dist/{PodcastImage-BtiQlrb3.mjs → PodcastImage-BFA22TgZ.mjs} +6 -6
- package/dist/PodcastImage-BhQKB5te.mjs.map +1 -0
- package/dist/PodcastImage-CHx3bUzt.mjs.map +1 -0
- package/dist/PodcastInlineList-CcNd_Hbs.mjs.map +1 -0
- package/dist/{PodcastInlineList-B32BSFqN.mjs → PodcastInlineList-H6BxXx0A.mjs} +1 -1
- package/dist/PodcastInlineList-akLivgog.mjs.map +1 -0
- package/dist/PodcastInlineList-jI2EvXSo.mjs.map +1 -0
- package/dist/{PodcastInlineListTemplate-DTrS1UiG.mjs → PodcastInlineListTemplate-Chbi8aME.mjs} +3 -3
- package/dist/PodcastInlineListTemplate-DT9ZRs61.mjs.map +1 -0
- package/dist/PodcastInlineListTemplate-Dh1xF6xT.mjs.map +1 -0
- package/dist/PodcastIsPlaying-C0jcpBQd.mjs.map +1 -0
- package/dist/PodcastIsPlaying-H6P1CHAI.mjs.map +1 -0
- package/dist/{PodcastIsPlaying-BtmHnQi9.mjs → PodcastIsPlaying-ugHcefCy.mjs} +1 -1
- package/dist/{PodcastItem-TdtzApJ6.mjs → PodcastItem-Baki7W0q.mjs} +6 -6
- package/dist/PodcastItem-BfvK4ion.mjs.map +1 -0
- package/dist/PodcastItem-DEhA78z9.mjs.map +1 -0
- package/dist/PodcastItem-DwK_Yu1G.mjs.map +1 -0
- package/dist/PodcastList-B4ic6Cij.mjs.map +1 -0
- package/dist/PodcastList-C2R92m6S.mjs.map +1 -0
- package/dist/PodcastList-DWl6zz_z.mjs.map +1 -0
- package/dist/PodcastList-Dbt4nmKg.mjs.map +1 -0
- package/dist/PodcastList-KaQBRbR9.mjs.map +1 -0
- package/dist/{PodcastList-BAOJhQ7G.mjs → PodcastList-N_XOE-hI.mjs} +5 -5
- package/dist/PodcastList-d3SGLPvF.mjs.map +1 -0
- package/dist/{PodcastList-Bbe3yWiu.mjs → PodcastList-yjd_exFg.mjs} +4 -4
- package/dist/PodcastPage-B0pbZ5o_.mjs.map +1 -0
- package/dist/PodcastPage-BOA44Us4.mjs.map +1 -0
- package/dist/PodcastPage-Bs1wz-0E.mjs.map +1 -0
- package/dist/PodcastPage-C37Wa-qH.mjs.map +1 -0
- package/dist/PodcastPage-D0HYJxaK.mjs.map +1 -0
- package/dist/PodcastPage-D0U6-etV.mjs.map +1 -0
- package/dist/PodcastPage-DwMPY4po.mjs.map +1 -0
- package/dist/{PodcastPage-CAxub2do.mjs → PodcastPage-SUEm-Enm.mjs} +26 -26
- package/dist/PodcastPlayBar-Bo-W_dSK.mjs.map +1 -0
- package/dist/PodcastPlayBar-CBtMWlVc.mjs.map +1 -0
- package/dist/{PodcastPlayBar-gAEttclo.mjs → PodcastPlayBar-COU17bnm.mjs} +3 -3
- package/dist/PodcastPlayBar-Cpr3Ff7J.mjs.map +1 -0
- package/dist/PodcastPlayBasicButton-BvJPrxpI.mjs.map +1 -0
- package/dist/PodcastPlayBasicButton-CS5TNlmX.mjs.map +1 -0
- package/dist/{PodcastPlayBasicButton-7w91y2ow.mjs → PodcastPlayBasicButton-CVXhEUHB.mjs} +1 -1
- package/dist/{PodcastPlayButton-CQY0d6f-.mjs → PodcastPlayButton--gjzxW0o.mjs} +3 -3
- package/dist/PodcastPlayButton-BqvE4ZUl.mjs.map +1 -0
- package/dist/PodcastPlayButton-DW5Feest.mjs.map +1 -0
- package/dist/PodcastPlaylistInlineList-BV31HaB2.mjs.map +1 -0
- package/dist/PodcastPlaylistInlineList-C-WYs6aE.mjs.map +1 -0
- package/dist/{PodcastPlaylistInlineList-BE5L8pSP.mjs → PodcastPlaylistInlineList-DsEHaYGZ.mjs} +7 -7
- package/dist/PodcastPlaylistInlineList-HEdFAq1l.mjs.map +1 -0
- package/dist/{PodcastPresentationList-DH6Rq0Z4.mjs → PodcastPresentationList-B9vORr36.mjs} +4 -4
- package/dist/PodcastPresentationList-ChqvdXY0.mjs.map +1 -0
- package/dist/PodcastPresentationList-Dit6HvJr.mjs.map +1 -0
- package/dist/{PodcastProgressBar-DoeG7lDj.mjs → PodcastProgressBar-B0FwZOTT.mjs} +3 -3
- package/dist/PodcastProgressBar-B8ONWq-Z.mjs.map +1 -0
- package/dist/PodcastProgressBar-BoGtJPAa.mjs.map +1 -0
- package/dist/PodcastProgressBar-DTRhKzW-.mjs.map +1 -0
- package/dist/{PodcastRawTranscript-Cktqtbcg.mjs → PodcastRawTranscript-BiuftXu-.mjs} +2 -2
- package/dist/PodcastRawTranscript-C8SJcaQE.mjs.map +1 -0
- package/dist/PodcastRawTranscript-nfzHM0k_.mjs.map +1 -0
- package/dist/PodcastRawTranscript-r5pRtZDg.mjs.map +1 -0
- package/dist/{PodcastSwiperList-DZ26-8xy.mjs → PodcastSwiperList-BKOYhrsH.mjs} +4 -4
- package/dist/PodcastSwiperList-Bsg0q89o.mjs.map +1 -0
- package/dist/PodcastSwiperList-BxsEv7_8.mjs.map +1 -0
- package/dist/PodcastSwiperList-Cju5VHcH.mjs.map +1 -0
- package/dist/PodcastmakerHeader-6fIwE70J.mjs.map +1 -0
- package/dist/PodcastmakerHeader-BBPEy__r.mjs.map +1 -0
- package/dist/{PodcastmakerHeader-MhdOrssb.mjs → PodcastmakerHeader-CIoJwm1L.mjs} +1 -1
- package/dist/PodcastsPage-967SI8kL.mjs.map +1 -0
- package/dist/{PodcastsPage-BXjTDNhn.mjs → PodcastsPage-B5NwPMyn.mjs} +5 -5
- package/dist/PodcastsPage-B7j2XxPZ.mjs.map +1 -0
- package/dist/PodcastsPage-BOzszXpc.mjs.map +1 -0
- package/dist/PodcastsPage-Bw0tzWoX.mjs.map +1 -0
- package/dist/PodcastsPage-D3TAYJV8.mjs.map +1 -0
- package/dist/PodcastsPage-DJsgHs7V.mjs.map +1 -0
- package/dist/PodcastsPage-DKWHzNNA.mjs.map +1 -0
- package/dist/PodcastsPage-DONqoMkB.mjs.map +1 -0
- package/dist/PodcastsPage-DUcfPeLD.mjs.map +1 -0
- package/dist/PodcastsPage-DWBgwD6o.mjs.map +1 -0
- package/dist/PodcastsPage-DZO4H1Ff.mjs.map +1 -0
- package/dist/PodcastsPage-DhEMPqCT.mjs.map +1 -0
- package/dist/ProductorSearch-BgmV_RCq.mjs.map +1 -0
- package/dist/{ProductorSearch-Z36zTZK4.mjs → ProductorSearch-BiUEs7mG.mjs} +3 -3
- package/dist/ProductorSearch-C4Nv2HzS.mjs.map +1 -0
- package/dist/ProductorSearch-DtVe_rU9.mjs.map +1 -0
- package/dist/ProgressBar-BMeSiueh.mjs.map +1 -0
- package/dist/ProgressBar-C15ih0uL.mjs.map +1 -0
- package/dist/{ProgressBar-CTOa-MDz.mjs → ProgressBar-CXB5q3-H.mjs} +2 -2
- package/dist/ProgressBar-DAUOWol1.mjs.map +1 -0
- package/dist/QrCode-BYLxjhwi.mjs.map +1 -0
- package/dist/QrCode-CCigeTaZ.mjs +109 -0
- package/dist/QrCode-CaXoOjo-.mjs.map +1 -0
- package/dist/QrCode-CcQR60hB.mjs.map +1 -0
- package/dist/QrCode-S_eLVZoz.mjs.map +1 -0
- package/dist/QrCode-XZMMiaX5.mjs.map +1 -0
- package/dist/QrCodeModal-BJOu1pAV.mjs.map +1 -0
- package/dist/QrCodeModal-BjT-0P0w.mjs.map +1 -0
- package/dist/QrCodeModal-BrabSTzq.mjs.map +1 -0
- package/dist/QrCodeModal-CjvbRYLW.mjs.map +1 -0
- package/dist/{QrCodeModal-DE3juCsN.mjs → QrCodeModal-Dpw_tCQ6.mjs} +1 -1
- package/dist/QrCodeModal-N2fjbP4S.mjs.map +1 -0
- package/dist/RadioCurrently-B_b8DV2w.mjs.map +1 -0
- package/dist/RadioCurrently-DufvDqm1.mjs.map +1 -0
- package/dist/{RadioCurrently-BlAhcc9E.mjs → RadioCurrently-ysRKhxKU.mjs} +3 -3
- package/dist/RadioHistory-B03bYMxm.mjs.map +1 -0
- package/dist/{RadioHistory-C7S79sZD.mjs → RadioHistory-DjsqvRgH.mjs} +2 -2
- package/dist/RadioHistory-Dv4gt9TM.mjs.map +1 -0
- package/dist/RadioImage-BFdiGgi_.mjs.map +1 -0
- package/dist/{RadioImage-BTn2Lquc.mjs → RadioImage-CSseYIVb.mjs} +4 -4
- package/dist/RadioImage-CrtD33dM.mjs.map +1 -0
- package/dist/RadioList--f7RDhHJ.mjs.map +1 -0
- package/dist/{RadioList-BD3zNwmk.mjs → RadioList-BZFFAobk.mjs} +4 -4
- package/dist/RadioList-De9NQ23Q.mjs.map +1 -0
- package/dist/RadioPage-BK1N--Kr.mjs.map +1 -0
- package/dist/RadioPage-BTtNFJI2.mjs.map +1 -0
- package/dist/RadioPage-CcK0y_5s.mjs.map +1 -0
- package/dist/RadioPage-Cqas0JX6.mjs.map +1 -0
- package/dist/{RadioPage-Bv3oupa1.mjs → RadioPage-Cwooj0wF.mjs} +4 -4
- package/dist/RadioPage-DhSB0sX5.mjs.map +1 -0
- package/dist/RadioPage-DlahFXYC.mjs.map +1 -0
- package/dist/RadioPlanning-BU1E8i4t.mjs.map +1 -0
- package/dist/{RadioPlanning-nkv_Mb_t.mjs → RadioPlanning-BmIxuUBI.mjs} +2 -2
- package/dist/RadioPlanning-Bx-N-xqX.mjs.map +1 -0
- package/dist/RadioProgressBar-0XM3ZTGU.mjs.map +1 -0
- package/dist/{RadioProgressBar-B2EgCOrK.mjs → RadioProgressBar-CQRGuPpC.mjs} +1 -1
- package/dist/RadioProgressBar-oyeS56mV.mjs.map +1 -0
- package/dist/{RecaptchaModal-w-9MlZ45.mjs → RecaptchaModal-BdW4xNlX.mjs} +1 -1
- package/dist/RecaptchaModal-DFlFQcHs.mjs.map +1 -0
- package/dist/RecaptchaModal-iLQ4UYOL.mjs.map +1 -0
- package/dist/ReportAbuseModal-BaPt2DLK.mjs.map +1 -0
- package/dist/ReportAbuseModal-BdZRe29L.mjs.map +1 -0
- package/dist/ReportAbuseModal-CH7Y153n.mjs.map +1 -0
- package/dist/{ReportAbuseModal-O1K7j7NV.mjs → ReportAbuseModal-jjGeXbB9.mjs} +4 -4
- package/dist/RightsIndicator-4pUsBq5j.mjs.map +1 -0
- package/dist/RightsIndicator-BH3jm_1O.mjs.map +1 -0
- package/dist/{RightsIndicator-D0cSu8j2.mjs → RightsIndicator-CPzWpH5Z.mjs} +1 -1
- package/dist/RightsIndicator-d8ffUFIj.mjs.map +1 -0
- package/dist/{RightsWrapper-BUj_1bwR.mjs → RightsWrapper-BTQ8GGUi.mjs} +5 -5
- package/dist/RightsWrapper-C3BRHqqo.mjs.map +1 -0
- package/dist/RightsWrapper-DJG9Ds6c.mjs.map +1 -0
- package/dist/RightsWrapper-nBURBTJX.mjs.map +1 -0
- package/dist/{RubriqueChoice-DaTWiDbl.mjs → RubriqueChoice-C-S-veJJ.mjs} +1 -1
- package/dist/RubriqueChoice-DsmnrUNs.mjs.map +1 -0
- package/dist/{RubriqueChooser-C33LorHa.mjs → RubriqueChooser-CNGn8LcP.mjs} +1 -1
- package/dist/RubriqueChooser-WmzcajTt.mjs.map +1 -0
- package/dist/RubriqueFilter-C9C_OiF5.mjs.map +1 -0
- package/dist/RubriqueFilter-DDI7DjMR.mjs.map +1 -0
- package/dist/RubriqueFilter-_8V1n9-x.mjs.map +1 -0
- package/dist/{RubriqueFilter-RgardNnQ.mjs → RubriqueFilter-rxiG8Wci.mjs} +3 -3
- package/dist/RubriqueList-99-nWSvq.mjs.map +1 -0
- package/dist/RubriqueList-BiRimk17.mjs.map +1 -0
- package/dist/RubriqueList-H_NHILuj.mjs.map +1 -0
- package/dist/{RubriqueList-DA9OYqUl.mjs → RubriqueList-rJj2IycY.mjs} +4 -4
- package/dist/RubriquePage-6KFPBPz8.mjs.map +1 -0
- package/dist/{RubriquePage-xgTOce7c.mjs → RubriquePage-BNEWnk3-.mjs} +4 -4
- package/dist/RubriquePage-Bpt-x7IK.mjs.map +1 -0
- package/dist/RubriquePage-Cwz9OqLO.mjs.map +1 -0
- package/dist/SearchPage-BtZnj3sA.mjs.map +1 -0
- package/dist/SearchPage-CbbbcXxs.mjs.map +1 -0
- package/dist/SearchPage-DMIV2AgJ.mjs.map +1 -0
- package/dist/{SearchPage-C3o5RPP0.mjs → SearchPage-DsZzPoEw.mjs} +2 -2
- package/dist/ShareAnonymous-BeSQozvM.mjs.map +1 -0
- package/dist/ShareAnonymous-BgsR6Ahp.mjs.map +1 -0
- package/dist/ShareAnonymous-CNWR1v6X.mjs.map +1 -0
- package/dist/{ShareAnonymous-bOwwEjPv.mjs → ShareAnonymous-DK2rnLl1.mjs} +3 -3
- package/dist/ShareAnonymous-DVpKBKbi.mjs.map +1 -0
- package/dist/ShareAnonymous-DWArDFT0.mjs.map +1 -0
- package/dist/ShareAnonymous-IaVbb-rp.mjs.map +1 -0
- package/dist/ShareModalPlayer-BHmsvxXF.mjs.map +1 -0
- package/dist/{ShareModalPlayer-D2oBrSly.mjs → ShareModalPlayer-Cfnk68-U.mjs} +1 -1
- package/dist/ShareModalPlayer-DLBU3lsU.mjs.map +1 -0
- package/dist/ShareModalPlayer-O-CmDObW.mjs.map +1 -0
- package/dist/ShareModalPlayer-QYu8Q9ks.mjs.map +1 -0
- package/dist/ShareModalPlayer-Vga-96DM.mjs.map +1 -0
- package/dist/{ShareNewsletter-CNw1LziN.mjs → ShareNewsletter-BWIAt47D.mjs} +1 -1
- package/dist/ShareNewsletter-BhFk6ARk.mjs.map +1 -0
- package/dist/ShareNewsletter-JCO4h7rk.mjs.map +1 -0
- package/dist/SharePlayer-C-RgIOh1.mjs.map +1 -0
- package/dist/{SharePlayer-CRri0YED.mjs → SharePlayer-C0aveOwy.mjs} +2 -2
- package/dist/SharePlayer-CNXrUj8M.mjs.map +1 -0
- package/dist/SharePlayer-D0-qY2dS.mjs.map +1 -0
- package/dist/SharePlayer-DQoFa7iv.mjs.map +1 -0
- package/dist/SharePlayer-DwNl3E7o.mjs.map +1 -0
- package/dist/{SharePlayerRadio-DVsegQMu.mjs → SharePlayerRadio-BqaeyEls.mjs} +2 -2
- package/dist/SharePlayerRadio-CHvCtKdZ.mjs.map +1 -0
- package/dist/SharePlayerRadio-CIsy-rCC.mjs.map +1 -0
- package/dist/SharePlayerRadio-ChfNulnf.mjs.map +1 -0
- package/dist/SharePlayerRadio-DA-W-306.mjs.map +1 -0
- package/dist/SharePlayerRadio-DwPeLUsk.mjs.map +1 -0
- package/dist/SharePlayerTypes-CeMV4n10.mjs.map +1 -0
- package/dist/SharePlayerTypes-DdyoQZDi.mjs.map +1 -0
- package/dist/{SharePlayerTypes-BxkEoBSL.mjs → SharePlayerTypes-DyrqFDVJ.mjs} +1 -1
- package/dist/ShareSocialsButtons-BHWzJVne.mjs.map +1 -0
- package/dist/ShareSocialsButtons-Bjx2ONvj.mjs.map +1 -0
- package/dist/{ShareSocialsButtons-BJ3DqvIO.mjs → ShareSocialsButtons-PqMXhFEk.mjs} +1 -1
- package/dist/{SimpleLayout-BJlcQjx9.mjs → SimpleLayout-9O9FZ69Q.mjs} +2 -2
- package/dist/SimpleLayout-B-QSfHeQ.mjs.map +1 -0
- package/dist/SimpleLayout-BauUacaf.mjs.map +1 -0
- package/dist/SimpleLayout-C29bPtbd.mjs.map +1 -0
- package/dist/SimpleLayout-Cjc3Q9Mb.mjs.map +1 -0
- package/dist/SimpleLayout-D4sVjQGu.mjs.map +1 -0
- package/dist/SimpleLayout-DaoXS--3.mjs.map +1 -0
- package/dist/SimpleLayout-vkWEZHLi.mjs.map +1 -0
- package/dist/{SmartLinkPage-DpD90wc7.mjs → SmartLinkPage-6HgX8LDv.mjs} +16 -16
- package/dist/SmartLinkPage-BcQmox7e.mjs.map +1 -0
- package/dist/SmartLinkPage-M_zB_Xp1.mjs.map +1 -0
- package/dist/SubscribeButtons-CyGYD1B1.mjs.map +1 -0
- package/dist/SubscribeButtons-DjjZQfOU.mjs.map +1 -0
- package/dist/{SubscribeButtons-zlRDGEzS.mjs → SubscribeButtons-IpzqDGIn.mjs} +3 -3
- package/dist/SubscribeButtons-yA2wowFc.mjs.map +1 -0
- package/dist/SwiperList-BNODHhLF.mjs.map +1 -0
- package/dist/SwiperList-Cqklwlg9.mjs.map +1 -0
- package/dist/{SwiperList-BlF3rPq5.mjs → SwiperList-O8nUg87R.mjs} +1 -1
- package/dist/TagList-4RDriU1J.mjs.map +1 -0
- package/dist/TagList-B5JPfT6j.mjs.map +1 -0
- package/dist/TagList-DVjqXiaA.mjs.map +1 -0
- package/dist/{TagList-BBHyaKp-.mjs → TagList-V9fAFATL.mjs} +2 -2
- package/dist/TagPage-BOsz6Bot.mjs.map +1 -0
- package/dist/TagPage-CALmJwxW.mjs.map +1 -0
- package/dist/{TagPage-DLpNBBjP.mjs → TagPage-CsFwN4sE.mjs} +3 -3
- package/dist/TagPage-DMuxYu6y.mjs.map +1 -0
- package/dist/{TopBar-CLWWRgr7.mjs → TopBar-0oG6YPlW.mjs} +37 -37
- package/dist/TopBar-CUCBss7X.mjs.map +1 -0
- package/dist/TopBar-CeQQ1hgH.mjs.map +1 -0
- package/dist/TopBar-DdxThCLR.mjs.map +1 -0
- package/dist/{UserButtonContent-BR3Rlqwp.mjs → UserButtonContent--VK68UsY.mjs} +6 -6
- package/dist/UserButtonContent-067qGenf.mjs.map +1 -0
- package/dist/UserButtonContent-Dqgyrgzv.mjs.map +1 -0
- package/dist/VideoModuleBox-9QgBI-Q-.mjs.map +1 -0
- package/dist/{VideoModuleBox-DxYJVwy3.mjs → VideoModuleBox-Bcqman6a.mjs} +1 -1
- package/dist/VideoModuleBox-BrVK2bDZ.mjs.map +1 -0
- package/dist/VideoModuleBox-DWO47_bZ.mjs.map +1 -0
- package/dist/VideoPage-4MB4zmnA.mjs.map +1 -0
- package/dist/VideoPage-BDGvtr1o.mjs.map +1 -0
- package/dist/{VideoPage-BaeTduNB.mjs → VideoPage-BjlaP2DU.mjs} +6 -6
- package/dist/VideoPage-C-yjvvhl.mjs.map +1 -0
- package/dist/VideoPage-C0_t7XMC.mjs.map +1 -0
- package/dist/VideoPage-CIDpzbkb.mjs.map +1 -0
- package/dist/VideoPage-D2V1oXGC.mjs.map +1 -0
- package/dist/VideoPage-DEJSfeFy.mjs.map +1 -0
- package/dist/{classicApi-pmODlqv5.mjs → classicApi-CGipMqf7.mjs} +267 -256
- package/dist/classicApi-CW1Z-HoF.mjs.map +1 -0
- package/dist/classicApi-OzToKuW1.mjs.map +1 -0
- package/dist/{downloadHelper-BAI-eqgA.mjs → downloadHelper-C3QooCxr.mjs} +1 -1
- package/dist/downloadHelper-D7dUpp5l.mjs.map +1 -0
- package/dist/downloadHelper-DwV3Mmd3.mjs.map +1 -0
- package/dist/index.css +1 -1
- package/dist/index.mjs +183 -183
- package/dist/src/components/form/ClassicDatePicker.vue.d.ts +24 -14
- package/dist/src/components/form/OctopusMultiselect.vue.d.ts +2 -0
- package/dist/src/i18n.d.ts +2 -0
- package/dist/tests.mjs +2 -2
- package/dist/useAdvancedParamInit-BKw9VZ53.mjs.map +1 -0
- package/dist/useAdvancedParamInit-CyRmbqqe.mjs.map +1 -0
- package/dist/{useAdvancedParamInit-Bgvt8758.mjs → useAdvancedParamInit-D5roUdHI.mjs} +10 -10
- package/dist/useDayjs-BKBB00TF.mjs.map +1 -0
- package/dist/useDayjs-UQLGUbw5.mjs.map +1 -0
- package/dist/{useDayjs-DGb3L4kJ.mjs → useDayjs-VUs19G9T.mjs} +1 -1
- package/dist/useErrorHandler-BKN3lhJ5.mjs.map +1 -0
- package/dist/useErrorHandler-C3XnRTmp.mjs.map +1 -0
- package/dist/{useErrorHandler-D9W2BURn.mjs → useErrorHandler-x9sjDYSz.mjs} +1 -1
- package/dist/useImageProxy-AEcmDpvW.mjs.map +1 -0
- package/dist/useImageProxy-BzTG_GCn.mjs.map +1 -0
- package/dist/{useImageProxy-8ndy_oTo.mjs → useImageProxy-CCpDzPmQ.mjs} +1 -1
- package/dist/useOrgaComputed-4PduqYTq.mjs.map +1 -0
- package/dist/useOrgaComputed-C2n0FBbv.mjs.map +1 -0
- package/dist/{useOrgaComputed-CBJ5sDOm.mjs → useOrgaComputed-D81Jihm-.mjs} +2 -2
- package/dist/{usePlayerLogicProgress-C2L7cMdd.mjs → usePlayerLogicProgress-BybmSAcs.mjs} +2 -2
- package/dist/usePlayerLogicProgress-CKoCod6g.mjs.map +1 -0
- package/dist/usePlayerLogicProgress-DZaPRo6p.mjs.map +1 -0
- package/dist/usePodcastView-B-2HPFAo.mjs.map +1 -0
- package/dist/{usePodcastView-CoDJJr6Y.mjs → usePodcastView-CkM-n6iO.mjs} +3 -3
- package/dist/usePodcastView-jdYTK1cW.mjs.map +1 -0
- package/dist/{usePresentationItem-DZZVm3hh.mjs → usePresentationItem-CLEGZwI3.mjs} +3 -3
- package/dist/usePresentationItem-Com4i40U.mjs.map +1 -0
- package/dist/usePresentationItem-OpMean0v.mjs.map +1 -0
- package/dist/{useRights-DOXtpjv5.mjs → useRights-BI2tXXjR.mjs} +1 -1
- package/dist/useRights-Bsv9hr7w.mjs.map +1 -0
- package/dist/useRights-DfudFDI6.mjs.map +1 -0
- package/dist/{useRubriquesFilterComputed-DoUOqOrJ.mjs → useRubriquesFilterComputed-D1yqLnK4.mjs} +1 -1
- package/dist/useRubriquesFilterComputed-DGDJp2gc.mjs.map +1 -0
- package/dist/useRubriquesFilterComputed-NNE-FElk.mjs.map +1 -0
- package/dist/{useRubriquesFilterParam-BE8BbmAQ.mjs → useRubriquesFilterParam-2eMd5ND7.mjs} +1 -1
- package/dist/useRubriquesFilterParam-DE5dYl6c.mjs.map +1 -0
- package/dist/useRubriquesFilterParam-DXYD4G0D.mjs.map +1 -0
- package/dist/useSharePlatforms-CrQ8r5vT.mjs.map +1 -0
- package/dist/useSharePlatforms-D124fJ_v.mjs.map +1 -0
- package/dist/{useSharePlatforms-ZWYDJZBy.mjs → useSharePlatforms-sXgVxsL5.mjs} +5 -5
- package/dist/{useSimplePageParam-DFKSEyiE.mjs → useSimplePageParam-BrtYXOUt.mjs} +1 -1
- package/dist/useSimplePageParam-CruL7rLG.mjs.map +1 -0
- package/dist/useSimplePageParam-SaBaPhb8.mjs.map +1 -0
- package/dist/{useTranslation-Dr7KU7Y4.mjs → useTranslation-BVQwv02Q.mjs} +9 -9
- package/dist/useTranslation-Bf2zP_6C.mjs.map +1 -0
- package/dist/useTranslation-BuhzZoI8.mjs.map +1 -0
- package/dist/useTranslation-OWqckMEl.mjs.map +1 -0
- package/dist/usefetchRadioData-D01ws733.mjs.map +1 -0
- package/dist/usefetchRadioData-DDRPoD4s.mjs.map +1 -0
- package/dist/{usefetchRadioData-SLWfXkYt.mjs → usefetchRadioData-zyQNqiV3.mjs} +1 -1
- package/package.json +1 -1
- package/src/components/composable/useTranslation.ts +2 -2
- package/src/components/display/sharing/QrCode.vue +63 -64
- package/src/components/form/ClassicDatePicker.vue +32 -20
- package/src/components/form/OctopusMultiselect.vue +3 -4
- package/src/components/misc/ClassicPopover.vue +1 -1
- package/src/components/misc/player/video/PlayerVideoHls.vue +160 -159
- package/src/i18n.ts +38 -29
- package/tests/components/form/ClassicDatePicker.spec.ts +32 -0
- package/tests/components/form/OctopusMultiselect.spec.ts +5 -4
- package/dist/ClassicDatePicker-B7UA9CqR.mjs +0 -187
- package/dist/QrCode-DuScZ7PD.mjs +0 -105
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"PodcastItem-DEhA78z9.mjs","names":["_hoisted_1","_sfc_render","_resolveComponent","_openBlock","_createElementBlock","_createVNode","_withCtx","_createTextVNode","_toDisplayString","_createCommentVNode","_sfc_main","_hoisted_1","_hoisted_2","_sfc_render","_resolveComponent","_openBlock","_createElementBlock","_createElementVNode","_toDisplayString","_createVNode","_withCtx","_createTextVNode","_createBlock","_createCommentVNode","_sfc_main","displayHelper","_openBlock","_createElementBlock","_createVNode","_normalizeClass","_createCommentVNode","_createElementVNode","_sfc_main"],"sources":["../src/components/display/podcasts/AnimatorsItem.vue","../src/components/display/podcasts/AnimatorsItem.vue","../src/components/display/podcasts/PodcastItemInfo.vue","../src/components/display/podcasts/PodcastItemInfo.vue","../src/components/display/podcasts/PodcastItem.vue","../src/components/display/podcasts/PodcastItem.vue"],"sourcesContent":["<template>\n <div\n v-if=\"animator\"\n class=\"d-flex align-items-center justify-content-start animators-item\"\n >\n <router-link\n :to=\"{\n name: 'participant',\n params: { participantId: animator.participantId },\n }\"\n :title=\"t('Participant name page', { name: animatorName })\"\n class=\"podcast-item-animator text-truncate\"\n >\n {{ animatorName }}\n </router-link>\n </div>\n</template>\n\n<script setup lang=\"ts\">\nimport { Participant } from \"@/stores/class/general/participant\";\nimport { computed } from \"vue\";\nimport { useI18n } from \"vue-i18n\";\n\n//Props \nconst props = defineProps({\n animator: { default: undefined, type: Object as () => Participant },\n})\n\n//Composables\nconst { t } = useI18n();\n\n//Computed\nconst animatorName = computed(() => `${props.animator?.firstName ?? \"\"} ${ props.animator?.lastName ?? \"\"}`.trim());\n\n</script>\n\n<style lang=\"scss\">\n.octopus-app .podcast-item-animator {\n font-size: var(--octopus-podcast-animator-font-size);\n font-weight: var(--octopus-podcast-animator-font-weight);\n color: var(--octopus-podcast-animator-text-fg);\n text-transform: capitalize;\n}\n</style>\n","<template>\n <div\n v-if=\"animator\"\n class=\"d-flex align-items-center justify-content-start animators-item\"\n >\n <router-link\n :to=\"{\n name: 'participant',\n params: { participantId: animator.participantId },\n }\"\n :title=\"t('Participant name page', { name: animatorName })\"\n class=\"podcast-item-animator text-truncate\"\n >\n {{ animatorName }}\n </router-link>\n </div>\n</template>\n\n<script setup lang=\"ts\">\nimport { Participant } from \"@/stores/class/general/participant\";\nimport { computed } from \"vue\";\nimport { useI18n } from \"vue-i18n\";\n\n//Props \nconst props = defineProps({\n animator: { default: undefined, type: Object as () => Participant },\n})\n\n//Composables\nconst { t } = useI18n();\n\n//Computed\nconst animatorName = computed(() => `${props.animator?.firstName ?? \"\"} ${ props.animator?.lastName ?? \"\"}`.trim());\n\n</script>\n\n<style lang=\"scss\">\n.octopus-app .podcast-item-animator {\n font-size: var(--octopus-podcast-animator-font-size);\n font-weight: var(--octopus-podcast-animator-font-weight);\n color: var(--octopus-podcast-animator-text-fg);\n text-transform: capitalize;\n}\n</style>\n","<template>\n <div class=\"podcast-item-info\">\n <div class=\"podcast-item-status text-secondary h6 mx-2\">\n <time :datetime=\"podcast.pubDate\">\n {{ date }}\n </time>\n\n <PodcastSeasonInfo :podcast=\"podcast\" />\n </div>\n\n <router-link\n :to=\"{\n name: 'podcast',\n params: { podcastId: podcast.podcastId },\n }\"\n class=\"text-dark flex-grow-1 title-podcast-item basic-line-clamp three-line\"\n :title=\"t('Episode name page', { name: podcast.title })\"\n >\n <RightsIndicator\n inline\n :podcast=\"podcast\"\n action=\"edit\"\n />\n {{ podcast.title }}\n </router-link>\n\n <PodcastPlayBar\n v-if=\"state.emissionsPage.progressBar\"\n :display-buton-play=\"true\"\n :podcast=\"podcast\"\n class=\"me-2\"\n />\n\n <div class=\"mx-2 d-flex align-items-center justify-content-between mt-2\">\n <div v-if=\"isPodcastmaker\" class=\"useless-div-for-podcastmaker\" />\n <AnimatorsItem\n v-if=\"podcast.animators && 0 !== podcast.animators.length\"\n class=\"w-0 flex-grow-1\"\n :animator=\"podcast.animators[0]\"\n />\n <router-link\n v-if=\"!isPodcastmaker\"\n :to=\"{\n name: 'productor',\n params: { productorId: podcast.organisation.id },\n }\"\n class=\"text-dark producer-podcast-item\"\n >\n {{ \"© \" + orgaNameDisplay }}\n </router-link>\n </div>\n </div>\n</template>\n\n<script setup lang=\"ts\">\nimport AnimatorsItem from \"./AnimatorsItem.vue\";\nimport RightsIndicator from \"../RightsIndicator.vue\"; \nimport {useOrgaComputed} from \"../../composable/useOrgaComputed\";\nimport { computed, defineAsyncComponent } from \"vue\";\nimport { Podcast } from \"../../../stores/class/general/podcast\";\nimport { state } from \"../../../stores/ParamSdkStore\";\nimport { useI18n } from \"vue-i18n\";\nimport PodcastSeasonInfo from \"./PodcastSeasonInfo.vue\";\nimport { useDayjs } from \"../../composable/useDayjs\";\n\nconst PodcastPlayBar = defineAsyncComponent(\n () => import(\"./PodcastPlayBar.vue\"),\n);\n\n//Props \nconst props = defineProps({\n podcast: { default: () => ({}), type: Object as () => Podcast },\n})\n\n//Composables\nconst { t } = useI18n();\nconst { isPodcastmaker } = useOrgaComputed();\n\n//Computed\nconst { formatDate } = useDayjs();\n\nconst date = computed((): string => {\n return formatDate(props.podcast.pubDate);\n});\n\nconst orgaNameDisplay = computed(() =>{\n if (props.podcast.organisation.name.length > 30) {\n return props.podcast.organisation.name.substring(0, 30) + \"...\";\n }\n return props.podcast.organisation.name;\n});\n</script>\n\n<style scoped lang=\"scss\">\n.title-podcast-item {\n font-weight: 700;\n margin: 0.25rem 0.5rem 0.5rem;\n flex-grow: 1;\n font-size: 0.9rem;\n min-height: 3rem;\n line-height: 1rem;\n}\n\n.producer-podcast-item {\n font-size: 0.55rem;\n color: var(--octopus-gray-text);\n flex-shrink: 0;\n}\n\n.podcast-item-status {\n display: flex;\n justify-content: space-between;\n}\n</style>\n","<template>\n <div class=\"podcast-item-info\">\n <div class=\"podcast-item-status text-secondary h6 mx-2\">\n <time :datetime=\"podcast.pubDate\">\n {{ date }}\n </time>\n\n <PodcastSeasonInfo :podcast=\"podcast\" />\n </div>\n\n <router-link\n :to=\"{\n name: 'podcast',\n params: { podcastId: podcast.podcastId },\n }\"\n class=\"text-dark flex-grow-1 title-podcast-item basic-line-clamp three-line\"\n :title=\"t('Episode name page', { name: podcast.title })\"\n >\n <RightsIndicator\n inline\n :podcast=\"podcast\"\n action=\"edit\"\n />\n {{ podcast.title }}\n </router-link>\n\n <PodcastPlayBar\n v-if=\"state.emissionsPage.progressBar\"\n :display-buton-play=\"true\"\n :podcast=\"podcast\"\n class=\"me-2\"\n />\n\n <div class=\"mx-2 d-flex align-items-center justify-content-between mt-2\">\n <div v-if=\"isPodcastmaker\" class=\"useless-div-for-podcastmaker\" />\n <AnimatorsItem\n v-if=\"podcast.animators && 0 !== podcast.animators.length\"\n class=\"w-0 flex-grow-1\"\n :animator=\"podcast.animators[0]\"\n />\n <router-link\n v-if=\"!isPodcastmaker\"\n :to=\"{\n name: 'productor',\n params: { productorId: podcast.organisation.id },\n }\"\n class=\"text-dark producer-podcast-item\"\n >\n {{ \"© \" + orgaNameDisplay }}\n </router-link>\n </div>\n </div>\n</template>\n\n<script setup lang=\"ts\">\nimport AnimatorsItem from \"./AnimatorsItem.vue\";\nimport RightsIndicator from \"../RightsIndicator.vue\"; \nimport {useOrgaComputed} from \"../../composable/useOrgaComputed\";\nimport { computed, defineAsyncComponent } from \"vue\";\nimport { Podcast } from \"../../../stores/class/general/podcast\";\nimport { state } from \"../../../stores/ParamSdkStore\";\nimport { useI18n } from \"vue-i18n\";\nimport PodcastSeasonInfo from \"./PodcastSeasonInfo.vue\";\nimport { useDayjs } from \"../../composable/useDayjs\";\n\nconst PodcastPlayBar = defineAsyncComponent(\n () => import(\"./PodcastPlayBar.vue\"),\n);\n\n//Props \nconst props = defineProps({\n podcast: { default: () => ({}), type: Object as () => Podcast },\n})\n\n//Composables\nconst { t } = useI18n();\nconst { isPodcastmaker } = useOrgaComputed();\n\n//Computed\nconst { formatDate } = useDayjs();\n\nconst date = computed((): string => {\n return formatDate(props.podcast.pubDate);\n});\n\nconst orgaNameDisplay = computed(() =>{\n if (props.podcast.organisation.name.length > 30) {\n return props.podcast.organisation.name.substring(0, 30) + \"...\";\n }\n return props.podcast.organisation.name;\n});\n</script>\n\n<style scoped lang=\"scss\">\n.title-podcast-item {\n font-weight: 700;\n margin: 0.25rem 0.5rem 0.5rem;\n flex-grow: 1;\n font-size: 0.9rem;\n min-height: 3rem;\n line-height: 1rem;\n}\n\n.producer-podcast-item {\n font-size: 0.55rem;\n color: var(--octopus-gray-text);\n flex-shrink: 0;\n}\n\n.podcast-item-status {\n display: flex;\n justify-content: space-between;\n}\n</style>\n","<template>\n <article\n class=\"podcast-item-container border\"\n :data-pubdate=\"displayDate\"\n :data-count=\"podcast.downloadCount\"\n >\n <PodcastImage\n :podcast=\"podcast\"\n :hide-play=\"hoverDesc && 0 !== description.length\"\n :display-description=\"0 !== description.length\"\n :arrow-direction=\"arrowDirection\"\n :fetch-conference=\"fetchConference\"\n @hide-description=\"hideDescription\"\n @show-description=\"showDescription\"\n />\n <div\n v-if=\"hoverDesc\"\n ref=\"descriptionPodcastContainer\"\n class=\"element-description description-podcast-item html-wysiwyg-content\"\n :class=\"[\n hoverDesc && '' !== description ? 'visible' : 'invisible',\n !isMobile && isDescriptionBig ? 'after-element-description' : 'mobile-description-podcast-item',\n ]\"\n >\n <!-- eslint-disable vue/no-v-html -->\n <div ref=\"descriptionPodcast\" v-html=\"displayHelper.urlify(description)\" />\n <!-- eslint-enable -->\n </div>\n <div\n @mouseenter=\"debounceShowDescriptionEvent\"\n @mouseleave=\"debounceHideDescriptionEvent\"\n >\n <PodcastItemInfo\n :podcast=\"podcast\"\n />\n </div>\n </article>\n</template>\n\n<script setup lang=\"ts\">\nimport debounce from '../../../helper/debounceHelper';\nimport PodcastItemInfo from \"./PodcastItemInfo.vue\";\nimport PodcastImage from \"./PodcastImage.vue\";\nimport dayjs from \"dayjs\";\nimport { Podcast } from \"../../../stores/class/general/podcast\";\nimport { computed, nextTick, onBeforeMount, ref, Ref, useTemplateRef } from \"vue\";\nimport { Conference } from \"@/stores/class/conference/conference\";\n\nimport displayHelper from \"../../../helper/displayHelper\";\n\n//Props \nconst props = defineProps<{\n podcast: Podcast;\n fetchConference?: Conference;\n}>();\n\n//Data \nconst isMobile = ref(false);\nconst firstDisplayDesc = ref(false);\nconst hoverDesc = ref(false);\nconst arrowDirection = ref(\"up\");\nconst isDescriptionBig = ref(false);\nconst debounceShowDescriptionEvent: Ref< undefined | (() => void)> = ref(undefined);\nconst debounceHideDescriptionEvent: Ref< undefined | (() => void)> = ref(undefined);\nconst descriptionPodcastRef = useTemplateRef('descriptionPodcast');\nconst descriptionPodcastContainerRef = useTemplateRef('descriptionPodcastContainer');\n\n//Computed\nconst displayDate = computed(() => dayjs(props.podcast.pubDate).format());\nconst description = computed(() => props.podcast.description ?? \"\");\n\nonBeforeMount(()=>{\n isMobile.value = window.matchMedia(\"(hover: none)\").matches;\n debounceShowDescriptionEvent.value = debounce(showDescription, 100);\n debounceHideDescriptionEvent.value = debounce(hideDescription, 100);\n})\n\n//Methods\nfunction initDescription(): void {\n if (firstDisplayDesc.value) {\n return;\n }\n const podcastDesc = descriptionPodcastRef?.value as HTMLElement;\n const podcastDescContainer = descriptionPodcastContainerRef?.value as HTMLElement;\n if (podcastDesc?.clientHeight > podcastDescContainer?.clientHeight) {\n isDescriptionBig.value = true;\n }\n firstDisplayDesc.value = true;\n}\nfunction showDescription(): void {\n arrowDirection.value = \"down\";\n hoverDesc.value = true;\n nextTick(() => {\n initDescription();\n });\n}\nfunction hideDescription(): void {\n arrowDirection.value = \"up\";\n hoverDesc.value = false;\n}\n</script>\n\n<style lang=\"scss\">\n\n.octopus-app {\n .podcast-item-container {\n display: flex;\n flex-direction: column;\n border-radius: var(--octopus-border-radius);\n position: relative;\n width: var(--octopus-podcast-size);\n height: 20.5rem;\n overflow: hidden;\n text-align: left;\n background: var(--octopus-background);\n flex-shrink: 0;\n\n .description-podcast-item {\n --octopus-max-height-description: var(--octopus-podcast-size);\n\n padding: 1rem;\n background-color: oklch(from var(--octopus-background) l c h / 90%);\n position: absolute;\n width: var(--octopus-podcast-size);\n height: var(--octopus-podcast-size);\n margin-top:0;\n\n &.mobile-description-podcast-item {\n overflow: auto;\n }\n }\n\n @media (width <= 450px) {\n width: var(--octopus-image-size);\n height: 19rem;\n\n .description-podcast-item {\n height: var(--octopus-image-size);\n width: var(--octopus-image-size);\n }\n }\n }\n}\n</style>\n","<template>\n <article\n class=\"podcast-item-container border\"\n :data-pubdate=\"displayDate\"\n :data-count=\"podcast.downloadCount\"\n >\n <PodcastImage\n :podcast=\"podcast\"\n :hide-play=\"hoverDesc && 0 !== description.length\"\n :display-description=\"0 !== description.length\"\n :arrow-direction=\"arrowDirection\"\n :fetch-conference=\"fetchConference\"\n @hide-description=\"hideDescription\"\n @show-description=\"showDescription\"\n />\n <div\n v-if=\"hoverDesc\"\n ref=\"descriptionPodcastContainer\"\n class=\"element-description description-podcast-item html-wysiwyg-content\"\n :class=\"[\n hoverDesc && '' !== description ? 'visible' : 'invisible',\n !isMobile && isDescriptionBig ? 'after-element-description' : 'mobile-description-podcast-item',\n ]\"\n >\n <!-- eslint-disable vue/no-v-html -->\n <div ref=\"descriptionPodcast\" v-html=\"displayHelper.urlify(description)\" />\n <!-- eslint-enable -->\n </div>\n <div\n @mouseenter=\"debounceShowDescriptionEvent\"\n @mouseleave=\"debounceHideDescriptionEvent\"\n >\n <PodcastItemInfo\n :podcast=\"podcast\"\n />\n </div>\n </article>\n</template>\n\n<script setup lang=\"ts\">\nimport debounce from '../../../helper/debounceHelper';\nimport PodcastItemInfo from \"./PodcastItemInfo.vue\";\nimport PodcastImage from \"./PodcastImage.vue\";\nimport dayjs from \"dayjs\";\nimport { Podcast } from \"../../../stores/class/general/podcast\";\nimport { computed, nextTick, onBeforeMount, ref, Ref, useTemplateRef } from \"vue\";\nimport { Conference } from \"@/stores/class/conference/conference\";\n\nimport displayHelper from \"../../../helper/displayHelper\";\n\n//Props \nconst props = defineProps<{\n podcast: Podcast;\n fetchConference?: Conference;\n}>();\n\n//Data \nconst isMobile = ref(false);\nconst firstDisplayDesc = ref(false);\nconst hoverDesc = ref(false);\nconst arrowDirection = ref(\"up\");\nconst isDescriptionBig = ref(false);\nconst debounceShowDescriptionEvent: Ref< undefined | (() => void)> = ref(undefined);\nconst debounceHideDescriptionEvent: Ref< undefined | (() => void)> = ref(undefined);\nconst descriptionPodcastRef = useTemplateRef('descriptionPodcast');\nconst descriptionPodcastContainerRef = useTemplateRef('descriptionPodcastContainer');\n\n//Computed\nconst displayDate = computed(() => dayjs(props.podcast.pubDate).format());\nconst description = computed(() => props.podcast.description ?? \"\");\n\nonBeforeMount(()=>{\n isMobile.value = window.matchMedia(\"(hover: none)\").matches;\n debounceShowDescriptionEvent.value = debounce(showDescription, 100);\n debounceHideDescriptionEvent.value = debounce(hideDescription, 100);\n})\n\n//Methods\nfunction initDescription(): void {\n if (firstDisplayDesc.value) {\n return;\n }\n const podcastDesc = descriptionPodcastRef?.value as HTMLElement;\n const podcastDescContainer = descriptionPodcastContainerRef?.value as HTMLElement;\n if (podcastDesc?.clientHeight > podcastDescContainer?.clientHeight) {\n isDescriptionBig.value = true;\n }\n firstDisplayDesc.value = true;\n}\nfunction showDescription(): void {\n arrowDirection.value = \"down\";\n hoverDesc.value = true;\n nextTick(() => {\n initDescription();\n });\n}\nfunction hideDescription(): void {\n arrowDirection.value = \"up\";\n hoverDesc.value = false;\n}\n</script>\n\n<style lang=\"scss\">\n\n.octopus-app {\n .podcast-item-container {\n display: flex;\n flex-direction: column;\n border-radius: var(--octopus-border-radius);\n position: relative;\n width: var(--octopus-podcast-size);\n height: 20.5rem;\n overflow: hidden;\n text-align: left;\n background: var(--octopus-background);\n flex-shrink: 0;\n\n .description-podcast-item {\n --octopus-max-height-description: var(--octopus-podcast-size);\n\n padding: 1rem;\n background-color: oklch(from var(--octopus-background) l c h / 90%);\n position: absolute;\n width: var(--octopus-podcast-size);\n height: var(--octopus-podcast-size);\n margin-top:0;\n\n &.mobile-description-podcast-item {\n overflow: auto;\n }\n }\n\n @media (width <= 450px) {\n width: var(--octopus-image-size);\n height: 19rem;\n\n .description-podcast-item {\n height: var(--octopus-image-size);\n width: var(--octopus-image-size);\n }\n }\n }\n}\n</style>\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;EAwBA,MAAM,QAAQ;EAKd,MAAM,EAAE,MAAM,QAAQ;;;;GAGD,cAAA,eAAe,GAAG,MAAM,UAAU,aAAa,GAAG,GAAI,MAAM,UAAU,YAAY,KAAK,KAAK,CAAA;;;;;;;;;;;;;CC7BzG,OAAM;;;;CADA,OAAA,OAAA,YADVG,UAAA,GAAAC,mBAcM,OAdNJ,cAcM,CAVFK,YASc,wBAAA;EART,IAAE;;GAAkF,QAAA,EAAA,eAAA,OAAA,SAAS,cAAa;;EAI1G,OAAO,OAAA,EAAC,yBAAA,EAAA,MAAkC,OAAA,aAAY,CAAA;EACvD,OAAM;;EAEN,SAAAC,cAAkB,CAAfC,gBAAAC,gBAAA,OAAA,YAAY,GAAA,CAAA,CAAA,CAAA;;;;;;;;;;;;;;;ECoD3B,MAAM,iBAAiB,2BACb,OAAO,gCACjB;EAGA,MAAM,QAAQ;EAKd,MAAM,EAAE,MAAM,QAAQ;EACtB,MAAM,EAAE,mBAAmB,gBAAgB;EAG3C,MAAM,EAAE,eAAe,SAAS;;;;;;;GAEnB,MAAA,eAAuB;IAChC,OAAO,WAAW,MAAM,QAAQ,OAAO;GAC3C,CAAA;GAEwB,iBAAA,eAAc;IAClC,IAAI,MAAM,QAAQ,aAAa,KAAK,SAAS,IACzC,OAAO,MAAM,QAAQ,aAAa,KAAK,UAAU,GAAG,EAAE,IAAI;IAE9D,OAAO,MAAM,QAAQ,aAAa;GACtC,CAAA;;;;;;;;;;;;;;;;;ACzFS,IAAAG,eAAA,EAAA,OAAM,oBAAmB;AACrB,IAAAC,eAAA,EAAA,OAAM,6CAA4C;;AA+BlD,IAAA,aAAA,EAAA,OAAM,8DAA6D;;;CACzC,OAAM;;;;CAjCzC,OAAAG,UAAA,GAAAC,mBAkDM,OAlDNL,cAkDM;EAjDFM,mBAMM,OANNL,cAMM,CALFK,mBAEO,QAAA,EAFA,UAAU,OAAA,QAAQ,QAClB,GAAAC,gBAAA,OAAA,IAAI,GAAA,GAAA,UAAA,GAGXC,YAAwC,OAAA,sBAAA,EAApB,SAAS,OAAA,QAAO,GAAA,MAAA,GAAA,CAAA,SAAA,CAAA,CAAA,CAAA;EAGxCA,YAcc,wBAAA;GAbT,IAAE;;IAA0E,QAAA,EAAA,WAAA,OAAA,QAAQ,UAAS;;GAI9F,OAAM;GACL,OAAO,OAAA,EAAC,qBAAA,EAAA,MAA8B,OAAA,QAAQ,MAAK,CAAA;;GAEpD,SAAAC,cAIE,CAJFD,YAIE,OAAA,oBAAA;IAHE,QAAA;IACC,SAAS,OAAA;IACV,QAAO;GACT,GAAA,MAAA,GAAA,CAAA,SAAA,CAAA,GAAAE,gBAAA,MACFH,gBAAG,OAAA,QAAQ,KAAK,GAAA,CAAA,CAAA,CAAA;;;EAIV,OAAA,MAAM,cAAc,eAD9BH,UAAA,GAAAO,YAKE,OAAA,mBAAA;;GAHG,sBAAoB;GACpB,SAAS,OAAA;GACV,OAAM;;EAGVL,mBAiBM,OAjBN,YAiBM;GAhBS,OAAA,kBAAXF,UAAA,GAAAC,mBAAkE,OAAlE,UAAkE,KAAAO,mBAAA,QAAA,IAAA;GAExD,OAAA,QAAQ,aAAS,MAAU,OAAA,QAAQ,UAAU,UADvDR,UAAA,GAAAO,YAIE,OAAA,kBAAA;;IAFE,OAAM;IACL,UAAU,OAAA,QAAQ,UAAS;;GAGrB,CAAA,OAAA,kBADXP,UAAA,GAAAO,YASc,wBAAA;;IAPT,IAAE;;KAAsF,QAAA,EAAA,aAAA,OAAA,QAAQ,aAAa,GAAE;;IAIhH,OAAM;;IAEN,SAAAF,cAA4B,CAAlBC,gBAAAH,gBAAA,OAAA,OAAA,eAAe,GAAA,CAAA,CAAA,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;ECGzC,MAAM,QAAQ;EAMd,MAAM,WAAW,IAAI,KAAK;EAC1B,MAAM,mBAAmB,IAAI,KAAK;EAClC,MAAM,YAAY,IAAI,KAAK;EAC3B,MAAM,iBAAiB,IAAI,IAAI;EAC/B,MAAM,mBAAmB,IAAI,KAAK;EAClC,MAAM,+BAA+D,IAAI,KAAA,CAAS;EAClF,MAAM,+BAA+D,IAAI,KAAA,CAAS;EAClF,MAAM,wBAAwB,eAAe,oBAAoB;EACjE,MAAM,iCAAiC,eAAe,6BAA6B;EAGnF,MAAM,cAAc,eAAe,MAAM,MAAM,QAAQ,OAAO,CAAC,CAAC,OAAO,CAAC;EACxE,MAAM,cAAc,eAAe,MAAM,QAAQ,eAAe,EAAE;EAElE,oBAAkB;GAChB,SAAS,QAAQ,OAAO,WAAW,eAAe,CAAC,CAAC;GACpD,6BAA6B,QAAQ,SAAS,iBAAiB,GAAG;GAClE,6BAA6B,QAAQ,SAAS,iBAAiB,GAAG;EACpE,CAAC;EAGD,SAAS,kBAAwB;GAC/B,IAAI,iBAAiB,OACnB;GAEF,MAAM,cAAc,uBAAuB;GAC3C,MAAM,uBAAuB,gCAAgC;GAC7D,IAAI,aAAa,eAAe,sBAAsB,cACpD,iBAAiB,QAAQ;GAE3B,iBAAiB,QAAQ;EAC3B;EACA,SAAS,kBAAwB;GAC/B,eAAe,QAAQ;GACvB,UAAU,QAAQ;GAClB,eAAe;IACb,gBAAgB;GAClB,CAAC;EACH;EACA,SAAS,kBAAwB;GAC/B,eAAe,QAAQ;GACvB,UAAU,QAAQ;EACpB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CClGE,OAAAQ,UAAA,GAAAC,mBAmCU,WAAA;EAlCR,OAAM;EACL,gBAAc,OAAA;EACd,cAAY,OAAA,QAAQ;;EAErBC,YAQE,OAAA,iBAAA;GAPC,SAAS,OAAA;GACT,aAAW,OAAA,aAAS,MAAU,OAAA,YAAY;GAC1C,uBAAmB,MAAQ,OAAA,YAAY;GACvC,mBAAiB,OAAA;GACjB,oBAAkB,OAAA;GAClB,mBAAkB,OAAA;GAClB,mBAAkB,OAAA;;;;;;;;EAGb,OAAA,aADRF,UAAA,GAAAC,mBAYM,OAAA;;GAVJ,KAAI;GACJ,OAAKE,eAAA,CAAC,qEAAmE,CACvD,OAAA,aAAS,OAAW,OAAA,cAAW,YAAA,aAAqC,CAAA,OAAA,YAAY,OAAA,mBAAgB,8BAAA,iCAAA,CAAA,CAAA;;GAKlHC,mBAAA,gCAAA;GACAC,mBAA2E,OAAA;IAAtE,KAAI;IAAqB,WAAQ,OAAA,cAAc,OAAO,OAAA,WAAW;;GACtED,mBAAA,iBAAA;;EAEFC,mBAOM,OAAA;GANH,cAAU,OAAA,OAAA,OAAA,MAAA,GAAA,SAAE,OAAA,gCAAA,OAAA,6BAAA,GAAA,IAAA;GACZ,cAAU,OAAA,OAAA,OAAA,MAAA,GAAA,SAAE,OAAA,gCAAA,OAAA,6BAAA,GAAA,IAAA;EAEb,GAAA,CAAAH,YAEE,OAAA,oBAAA,EADC,SAAS,OAAA,QAAO,GAAA,MAAA,GAAA,CAAA,SAAA,CAAA,CAAA,GAAA,EAAA"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"PodcastItem-DwK_Yu1G.mjs","names":["_hoisted_1","_sfc_render","_resolveComponent","_openBlock","_createElementBlock","_createVNode","_withCtx","_createTextVNode","_toDisplayString","_createCommentVNode","_sfc_main","_hoisted_1","_hoisted_2","_sfc_render","_resolveComponent","_openBlock","_createElementBlock","_createElementVNode","_toDisplayString","_createVNode","_withCtx","_createTextVNode","_createBlock","_createCommentVNode","_sfc_main","displayHelper","_openBlock","_createElementBlock","_createVNode","_normalizeClass","_createCommentVNode","_createElementVNode","_sfc_main"],"sources":["../src/components/display/podcasts/AnimatorsItem.vue","../src/components/display/podcasts/AnimatorsItem.vue","../src/components/display/podcasts/PodcastItemInfo.vue","../src/components/display/podcasts/PodcastItemInfo.vue","../src/components/display/podcasts/PodcastItem.vue","../src/components/display/podcasts/PodcastItem.vue"],"sourcesContent":["<template>\n <div\n v-if=\"animator\"\n class=\"d-flex align-items-center justify-content-start animators-item\"\n >\n <router-link\n :to=\"{\n name: 'participant',\n params: { participantId: animator.participantId },\n }\"\n :title=\"t('Participant name page', { name: animatorName })\"\n class=\"podcast-item-animator text-truncate\"\n >\n {{ animatorName }}\n </router-link>\n </div>\n</template>\n\n<script setup lang=\"ts\">\nimport { Participant } from \"@/stores/class/general/participant\";\nimport { computed } from \"vue\";\nimport { useI18n } from \"vue-i18n\";\n\n//Props \nconst props = defineProps({\n animator: { default: undefined, type: Object as () => Participant },\n})\n\n//Composables\nconst { t } = useI18n();\n\n//Computed\nconst animatorName = computed(() => `${props.animator?.firstName ?? \"\"} ${ props.animator?.lastName ?? \"\"}`.trim());\n\n</script>\n\n<style lang=\"scss\">\n.octopus-app .podcast-item-animator {\n font-size: var(--octopus-podcast-animator-font-size);\n font-weight: var(--octopus-podcast-animator-font-weight);\n color: var(--octopus-podcast-animator-text-fg);\n text-transform: capitalize;\n}\n</style>\n","<template>\n <div\n v-if=\"animator\"\n class=\"d-flex align-items-center justify-content-start animators-item\"\n >\n <router-link\n :to=\"{\n name: 'participant',\n params: { participantId: animator.participantId },\n }\"\n :title=\"t('Participant name page', { name: animatorName })\"\n class=\"podcast-item-animator text-truncate\"\n >\n {{ animatorName }}\n </router-link>\n </div>\n</template>\n\n<script setup lang=\"ts\">\nimport { Participant } from \"@/stores/class/general/participant\";\nimport { computed } from \"vue\";\nimport { useI18n } from \"vue-i18n\";\n\n//Props \nconst props = defineProps({\n animator: { default: undefined, type: Object as () => Participant },\n})\n\n//Composables\nconst { t } = useI18n();\n\n//Computed\nconst animatorName = computed(() => `${props.animator?.firstName ?? \"\"} ${ props.animator?.lastName ?? \"\"}`.trim());\n\n</script>\n\n<style lang=\"scss\">\n.octopus-app .podcast-item-animator {\n font-size: var(--octopus-podcast-animator-font-size);\n font-weight: var(--octopus-podcast-animator-font-weight);\n color: var(--octopus-podcast-animator-text-fg);\n text-transform: capitalize;\n}\n</style>\n","<template>\n <div class=\"podcast-item-info\">\n <div class=\"podcast-item-status text-secondary h6 mx-2\">\n <time :datetime=\"podcast.pubDate\">\n {{ date }}\n </time>\n\n <PodcastSeasonInfo :podcast=\"podcast\" />\n </div>\n\n <router-link\n :to=\"{\n name: 'podcast',\n params: { podcastId: podcast.podcastId },\n }\"\n class=\"text-dark flex-grow-1 title-podcast-item basic-line-clamp three-line\"\n :title=\"t('Episode name page', { name: podcast.title })\"\n >\n <RightsIndicator\n inline\n :podcast=\"podcast\"\n action=\"edit\"\n />\n {{ podcast.title }}\n </router-link>\n\n <PodcastPlayBar\n v-if=\"state.emissionsPage.progressBar\"\n :display-buton-play=\"true\"\n :podcast=\"podcast\"\n class=\"me-2\"\n />\n\n <div class=\"mx-2 d-flex align-items-center justify-content-between mt-2\">\n <div v-if=\"isPodcastmaker\" class=\"useless-div-for-podcastmaker\" />\n <AnimatorsItem\n v-if=\"podcast.animators && 0 !== podcast.animators.length\"\n class=\"w-0 flex-grow-1\"\n :animator=\"podcast.animators[0]\"\n />\n <router-link\n v-if=\"!isPodcastmaker\"\n :to=\"{\n name: 'productor',\n params: { productorId: podcast.organisation.id },\n }\"\n class=\"text-dark producer-podcast-item\"\n >\n {{ \"© \" + orgaNameDisplay }}\n </router-link>\n </div>\n </div>\n</template>\n\n<script setup lang=\"ts\">\nimport AnimatorsItem from \"./AnimatorsItem.vue\";\nimport RightsIndicator from \"../RightsIndicator.vue\"; \nimport {useOrgaComputed} from \"../../composable/useOrgaComputed\";\nimport { computed, defineAsyncComponent } from \"vue\";\nimport { Podcast } from \"../../../stores/class/general/podcast\";\nimport { state } from \"../../../stores/ParamSdkStore\";\nimport { useI18n } from \"vue-i18n\";\nimport PodcastSeasonInfo from \"./PodcastSeasonInfo.vue\";\nimport { useDayjs } from \"../../composable/useDayjs\";\n\nconst PodcastPlayBar = defineAsyncComponent(\n () => import(\"./PodcastPlayBar.vue\"),\n);\n\n//Props \nconst props = defineProps({\n podcast: { default: () => ({}), type: Object as () => Podcast },\n})\n\n//Composables\nconst { t } = useI18n();\nconst { isPodcastmaker } = useOrgaComputed();\n\n//Computed\nconst { formatDate } = useDayjs();\n\nconst date = computed((): string => {\n return formatDate(props.podcast.pubDate);\n});\n\nconst orgaNameDisplay = computed(() =>{\n if (props.podcast.organisation.name.length > 30) {\n return props.podcast.organisation.name.substring(0, 30) + \"...\";\n }\n return props.podcast.organisation.name;\n});\n</script>\n\n<style scoped lang=\"scss\">\n.title-podcast-item {\n font-weight: 700;\n margin: 0.25rem 0.5rem 0.5rem;\n flex-grow: 1;\n font-size: 0.9rem;\n min-height: 3rem;\n line-height: 1rem;\n}\n\n.producer-podcast-item {\n font-size: 0.55rem;\n color: var(--octopus-gray-text);\n flex-shrink: 0;\n}\n\n.podcast-item-status {\n display: flex;\n justify-content: space-between;\n}\n</style>\n","<template>\n <div class=\"podcast-item-info\">\n <div class=\"podcast-item-status text-secondary h6 mx-2\">\n <time :datetime=\"podcast.pubDate\">\n {{ date }}\n </time>\n\n <PodcastSeasonInfo :podcast=\"podcast\" />\n </div>\n\n <router-link\n :to=\"{\n name: 'podcast',\n params: { podcastId: podcast.podcastId },\n }\"\n class=\"text-dark flex-grow-1 title-podcast-item basic-line-clamp three-line\"\n :title=\"t('Episode name page', { name: podcast.title })\"\n >\n <RightsIndicator\n inline\n :podcast=\"podcast\"\n action=\"edit\"\n />\n {{ podcast.title }}\n </router-link>\n\n <PodcastPlayBar\n v-if=\"state.emissionsPage.progressBar\"\n :display-buton-play=\"true\"\n :podcast=\"podcast\"\n class=\"me-2\"\n />\n\n <div class=\"mx-2 d-flex align-items-center justify-content-between mt-2\">\n <div v-if=\"isPodcastmaker\" class=\"useless-div-for-podcastmaker\" />\n <AnimatorsItem\n v-if=\"podcast.animators && 0 !== podcast.animators.length\"\n class=\"w-0 flex-grow-1\"\n :animator=\"podcast.animators[0]\"\n />\n <router-link\n v-if=\"!isPodcastmaker\"\n :to=\"{\n name: 'productor',\n params: { productorId: podcast.organisation.id },\n }\"\n class=\"text-dark producer-podcast-item\"\n >\n {{ \"© \" + orgaNameDisplay }}\n </router-link>\n </div>\n </div>\n</template>\n\n<script setup lang=\"ts\">\nimport AnimatorsItem from \"./AnimatorsItem.vue\";\nimport RightsIndicator from \"../RightsIndicator.vue\"; \nimport {useOrgaComputed} from \"../../composable/useOrgaComputed\";\nimport { computed, defineAsyncComponent } from \"vue\";\nimport { Podcast } from \"../../../stores/class/general/podcast\";\nimport { state } from \"../../../stores/ParamSdkStore\";\nimport { useI18n } from \"vue-i18n\";\nimport PodcastSeasonInfo from \"./PodcastSeasonInfo.vue\";\nimport { useDayjs } from \"../../composable/useDayjs\";\n\nconst PodcastPlayBar = defineAsyncComponent(\n () => import(\"./PodcastPlayBar.vue\"),\n);\n\n//Props \nconst props = defineProps({\n podcast: { default: () => ({}), type: Object as () => Podcast },\n})\n\n//Composables\nconst { t } = useI18n();\nconst { isPodcastmaker } = useOrgaComputed();\n\n//Computed\nconst { formatDate } = useDayjs();\n\nconst date = computed((): string => {\n return formatDate(props.podcast.pubDate);\n});\n\nconst orgaNameDisplay = computed(() =>{\n if (props.podcast.organisation.name.length > 30) {\n return props.podcast.organisation.name.substring(0, 30) + \"...\";\n }\n return props.podcast.organisation.name;\n});\n</script>\n\n<style scoped lang=\"scss\">\n.title-podcast-item {\n font-weight: 700;\n margin: 0.25rem 0.5rem 0.5rem;\n flex-grow: 1;\n font-size: 0.9rem;\n min-height: 3rem;\n line-height: 1rem;\n}\n\n.producer-podcast-item {\n font-size: 0.55rem;\n color: var(--octopus-gray-text);\n flex-shrink: 0;\n}\n\n.podcast-item-status {\n display: flex;\n justify-content: space-between;\n}\n</style>\n","<template>\n <article\n class=\"podcast-item-container border\"\n :data-pubdate=\"displayDate\"\n :data-count=\"podcast.downloadCount\"\n >\n <PodcastImage\n :podcast=\"podcast\"\n :hide-play=\"hoverDesc && 0 !== description.length\"\n :display-description=\"0 !== description.length\"\n :arrow-direction=\"arrowDirection\"\n :fetch-conference=\"fetchConference\"\n @hide-description=\"hideDescription\"\n @show-description=\"showDescription\"\n />\n <div\n v-if=\"hoverDesc\"\n ref=\"descriptionPodcastContainer\"\n class=\"element-description description-podcast-item html-wysiwyg-content\"\n :class=\"[\n hoverDesc && '' !== description ? 'visible' : 'invisible',\n !isMobile && isDescriptionBig ? 'after-element-description' : 'mobile-description-podcast-item',\n ]\"\n >\n <!-- eslint-disable vue/no-v-html -->\n <div ref=\"descriptionPodcast\" v-html=\"displayHelper.urlify(description)\" />\n <!-- eslint-enable -->\n </div>\n <div\n @mouseenter=\"debounceShowDescriptionEvent\"\n @mouseleave=\"debounceHideDescriptionEvent\"\n >\n <PodcastItemInfo\n :podcast=\"podcast\"\n />\n </div>\n </article>\n</template>\n\n<script setup lang=\"ts\">\nimport debounce from '../../../helper/debounceHelper';\nimport PodcastItemInfo from \"./PodcastItemInfo.vue\";\nimport PodcastImage from \"./PodcastImage.vue\";\nimport dayjs from \"dayjs\";\nimport { Podcast } from \"../../../stores/class/general/podcast\";\nimport { computed, nextTick, onBeforeMount, ref, Ref, useTemplateRef } from \"vue\";\nimport { Conference } from \"@/stores/class/conference/conference\";\n\nimport displayHelper from \"../../../helper/displayHelper\";\n\n//Props \nconst props = defineProps<{\n podcast: Podcast;\n fetchConference?: Conference;\n}>();\n\n//Data \nconst isMobile = ref(false);\nconst firstDisplayDesc = ref(false);\nconst hoverDesc = ref(false);\nconst arrowDirection = ref(\"up\");\nconst isDescriptionBig = ref(false);\nconst debounceShowDescriptionEvent: Ref< undefined | (() => void)> = ref(undefined);\nconst debounceHideDescriptionEvent: Ref< undefined | (() => void)> = ref(undefined);\nconst descriptionPodcastRef = useTemplateRef('descriptionPodcast');\nconst descriptionPodcastContainerRef = useTemplateRef('descriptionPodcastContainer');\n\n//Computed\nconst displayDate = computed(() => dayjs(props.podcast.pubDate).format());\nconst description = computed(() => props.podcast.description ?? \"\");\n\nonBeforeMount(()=>{\n isMobile.value = window.matchMedia(\"(hover: none)\").matches;\n debounceShowDescriptionEvent.value = debounce(showDescription, 100);\n debounceHideDescriptionEvent.value = debounce(hideDescription, 100);\n})\n\n//Methods\nfunction initDescription(): void {\n if (firstDisplayDesc.value) {\n return;\n }\n const podcastDesc = descriptionPodcastRef?.value as HTMLElement;\n const podcastDescContainer = descriptionPodcastContainerRef?.value as HTMLElement;\n if (podcastDesc?.clientHeight > podcastDescContainer?.clientHeight) {\n isDescriptionBig.value = true;\n }\n firstDisplayDesc.value = true;\n}\nfunction showDescription(): void {\n arrowDirection.value = \"down\";\n hoverDesc.value = true;\n nextTick(() => {\n initDescription();\n });\n}\nfunction hideDescription(): void {\n arrowDirection.value = \"up\";\n hoverDesc.value = false;\n}\n</script>\n\n<style lang=\"scss\">\n\n.octopus-app {\n .podcast-item-container {\n display: flex;\n flex-direction: column;\n border-radius: var(--octopus-border-radius);\n position: relative;\n width: var(--octopus-podcast-size);\n height: 20.5rem;\n overflow: hidden;\n text-align: left;\n background: var(--octopus-background);\n flex-shrink: 0;\n\n .description-podcast-item {\n --octopus-max-height-description: var(--octopus-podcast-size);\n\n padding: 1rem;\n background-color: oklch(from var(--octopus-background) l c h / 90%);\n position: absolute;\n width: var(--octopus-podcast-size);\n height: var(--octopus-podcast-size);\n margin-top:0;\n\n &.mobile-description-podcast-item {\n overflow: auto;\n }\n }\n\n @media (width <= 450px) {\n width: var(--octopus-image-size);\n height: 19rem;\n\n .description-podcast-item {\n height: var(--octopus-image-size);\n width: var(--octopus-image-size);\n }\n }\n }\n}\n</style>\n","<template>\n <article\n class=\"podcast-item-container border\"\n :data-pubdate=\"displayDate\"\n :data-count=\"podcast.downloadCount\"\n >\n <PodcastImage\n :podcast=\"podcast\"\n :hide-play=\"hoverDesc && 0 !== description.length\"\n :display-description=\"0 !== description.length\"\n :arrow-direction=\"arrowDirection\"\n :fetch-conference=\"fetchConference\"\n @hide-description=\"hideDescription\"\n @show-description=\"showDescription\"\n />\n <div\n v-if=\"hoverDesc\"\n ref=\"descriptionPodcastContainer\"\n class=\"element-description description-podcast-item html-wysiwyg-content\"\n :class=\"[\n hoverDesc && '' !== description ? 'visible' : 'invisible',\n !isMobile && isDescriptionBig ? 'after-element-description' : 'mobile-description-podcast-item',\n ]\"\n >\n <!-- eslint-disable vue/no-v-html -->\n <div ref=\"descriptionPodcast\" v-html=\"displayHelper.urlify(description)\" />\n <!-- eslint-enable -->\n </div>\n <div\n @mouseenter=\"debounceShowDescriptionEvent\"\n @mouseleave=\"debounceHideDescriptionEvent\"\n >\n <PodcastItemInfo\n :podcast=\"podcast\"\n />\n </div>\n </article>\n</template>\n\n<script setup lang=\"ts\">\nimport debounce from '../../../helper/debounceHelper';\nimport PodcastItemInfo from \"./PodcastItemInfo.vue\";\nimport PodcastImage from \"./PodcastImage.vue\";\nimport dayjs from \"dayjs\";\nimport { Podcast } from \"../../../stores/class/general/podcast\";\nimport { computed, nextTick, onBeforeMount, ref, Ref, useTemplateRef } from \"vue\";\nimport { Conference } from \"@/stores/class/conference/conference\";\n\nimport displayHelper from \"../../../helper/displayHelper\";\n\n//Props \nconst props = defineProps<{\n podcast: Podcast;\n fetchConference?: Conference;\n}>();\n\n//Data \nconst isMobile = ref(false);\nconst firstDisplayDesc = ref(false);\nconst hoverDesc = ref(false);\nconst arrowDirection = ref(\"up\");\nconst isDescriptionBig = ref(false);\nconst debounceShowDescriptionEvent: Ref< undefined | (() => void)> = ref(undefined);\nconst debounceHideDescriptionEvent: Ref< undefined | (() => void)> = ref(undefined);\nconst descriptionPodcastRef = useTemplateRef('descriptionPodcast');\nconst descriptionPodcastContainerRef = useTemplateRef('descriptionPodcastContainer');\n\n//Computed\nconst displayDate = computed(() => dayjs(props.podcast.pubDate).format());\nconst description = computed(() => props.podcast.description ?? \"\");\n\nonBeforeMount(()=>{\n isMobile.value = window.matchMedia(\"(hover: none)\").matches;\n debounceShowDescriptionEvent.value = debounce(showDescription, 100);\n debounceHideDescriptionEvent.value = debounce(hideDescription, 100);\n})\n\n//Methods\nfunction initDescription(): void {\n if (firstDisplayDesc.value) {\n return;\n }\n const podcastDesc = descriptionPodcastRef?.value as HTMLElement;\n const podcastDescContainer = descriptionPodcastContainerRef?.value as HTMLElement;\n if (podcastDesc?.clientHeight > podcastDescContainer?.clientHeight) {\n isDescriptionBig.value = true;\n }\n firstDisplayDesc.value = true;\n}\nfunction showDescription(): void {\n arrowDirection.value = \"down\";\n hoverDesc.value = true;\n nextTick(() => {\n initDescription();\n });\n}\nfunction hideDescription(): void {\n arrowDirection.value = \"up\";\n hoverDesc.value = false;\n}\n</script>\n\n<style lang=\"scss\">\n\n.octopus-app {\n .podcast-item-container {\n display: flex;\n flex-direction: column;\n border-radius: var(--octopus-border-radius);\n position: relative;\n width: var(--octopus-podcast-size);\n height: 20.5rem;\n overflow: hidden;\n text-align: left;\n background: var(--octopus-background);\n flex-shrink: 0;\n\n .description-podcast-item {\n --octopus-max-height-description: var(--octopus-podcast-size);\n\n padding: 1rem;\n background-color: oklch(from var(--octopus-background) l c h / 90%);\n position: absolute;\n width: var(--octopus-podcast-size);\n height: var(--octopus-podcast-size);\n margin-top:0;\n\n &.mobile-description-podcast-item {\n overflow: auto;\n }\n }\n\n @media (width <= 450px) {\n width: var(--octopus-image-size);\n height: 19rem;\n\n .description-podcast-item {\n height: var(--octopus-image-size);\n width: var(--octopus-image-size);\n }\n }\n }\n}\n</style>\n"],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"PodcastList-B4ic6Cij.mjs","names":["_resolveComponent","_openBlock","_createBlock","_withCtx","_createElementVNode","_createElementBlock","_Fragment","_renderList","_createVNode","_createTextVNode","_toDisplayString","_createCommentVNode","_sfc_main"],"sources":["../src/components/display/podcasts/PodcastList.vue","../src/components/display/podcasts/PodcastList.vue"],"sourcesContent":["<!--\n Component displaying a list of podcast\n DO NOT confuse this with PodcastList from playlist\n-->\n<template>\n <ListPaginate\n id=\"podcastListPaginate\"\n v-model:first=\"dfirst\"\n v-model:rows-per-page=\"dsize\"\n v-model:is-mobile=\"isMobile\"\n :text-count=\"\n showCount && podcasts.length > 1\n ? t('Number podcasts', { nb: totalCount }) + sortText\n : undefined\n \"\n :total-count=\"totalCount\"\n :loading=\"loading\"\n :loading-text=\"loading ? t('Loading podcasts ...') : undefined\"\n :error-text=\"\n !loading && !podcasts.length\n ? t(`No podcast match your query`)\n : undefined\n \"\n :just-size-chosen=\"justSizeChosen\"\n :player-responsive=\"true\"\n :force-update-parameters=\"forceUpdateParameters\"\n >\n <template #list>\n <div class=\"octopus-element-list\">\n <ClassicLazy\n v-for=\"p in displayArray\"\n :key=\"p.podcastId\"\n :min-height=\"410\"\n >\n <PodcastItem\n v-if=\"0 !== p.podcastId\"\n :podcast=\"p\"\n />\n <template #preview>\n <router-link\n :to=\"{\n name: 'podcast',\n params: { podcastId: p.podcastId },\n }\"\n :title=\"t('Episode name page', { name: p.title })\"\n >\n {{ p.title }}\n </router-link>\n </template>\n </ClassicLazy>\n </div>\n </template>\n </ListPaginate>\n</template>\n\n<script setup lang=\"ts\">\nimport ListPaginate from \"../list/ListPaginate.vue\";\nimport {useErrorHandler} from \"../../composable/useErrorHandler\";\nimport PodcastItem from \"./PodcastItem.vue\";\nimport ClassicLazy from \"../../misc/ClassicLazy.vue\";\nimport { useFilterStore } from \"../../../stores/FilterStore\";\nimport { Podcast, PodcastProcessingStatus, emptyPodcastData } from \"../../../stores/class/general/podcast\";\nimport { computed, onBeforeMount, Ref, ref, watch } from \"vue\";\nimport { AxiosError } from \"axios\";\nimport { useI18n } from \"vue-i18n\";\nimport { podcastApi, PodcastMonetisation, PodcastSearchOptions, PodcastSort } from \"../../../api/podcastApi\";\nimport { EmissionGroup } from \"@/api/groupsApi\";\nimport { useAuthStore } from \"@/stores/AuthStore\";\n\n//Props \nconst props = withDefaults(defineProps<{\n first?: number;\n size?: number;\n organisationId?: Array<string>;\n emissionId?: number;\n iabId?: number;\n participantId?: number;\n query?: string;\n monetisable?: PodcastMonetisation;\n popularSort?: boolean;\n reload?: boolean;\n before?: string;\n after?: string;\n includeHidden?: boolean;\n /** Enable the display of number of items in ListPaginate */\n showCount?: boolean;\n displaySortText?: boolean;\n /** Criteria to sort on */\n sortCriteria?: PodcastSort;\n validity?: 'true'|'false'|''|boolean; // TODO improve this\n rubriqueId?: Array<number>;\n rubriquageId?: Array<number>;\n noRubriquageId?: Array<number>;\n justSizeChosen?: boolean;\n withVideo?: boolean;\n includeTag?: Array<string>;\n forceUpdateParameters?: boolean;\n /** The beneficiaries to filter on */\n beneficiaries?: Array<string>;\n /** The emission groups to filter on */\n emissionGroups?: Array<EmissionGroup>;\n /** Show only episodes created by current user */\n onlyMyEpisodes?: boolean;\n /** The seasons to filter on */\n seasons?: Array<number>;\n}>(), {\n first: 0,\n size: 30,\n popularSort: false,\n reload: false,\n includeHidden: false,\n showCount: false,\n displaySortText: true,\n validity: '',\n justSizeChosen: false,\n withVideo: undefined,\n forceUpdateParameters: false\n});\n\n//Emits\nconst emit = defineEmits([\"fetch\", \"emptyList\"]);\n\n//Data \nconst loading = ref(true);\nconst dfirst = ref(props.first);\nconst dsize = ref(props.size);\nconst totalCount = ref(0);\nconst isMobile = ref(false);\nconst podcasts: Ref<Array<Podcast>> = ref([]);\n\n//Composables\nconst { t } = useI18n();\nconst {handle403} = useErrorHandler();\nconst filterStore = useFilterStore();\nconst authStore = useAuthStore();\n\n//Computed\nconst displayArray = computed(() => {\n if (isMobile.value || props.justSizeChosen) {\n return podcasts.value;\n }\n return podcasts.value.slice(\n dfirst.value,\n Math.min(dfirst.value + dsize.value, totalCount.value),\n );\n});\nconst changePaginate = computed(() => `${props.first}|${props.size}`);\nconst changed = computed(() => {\n return `${organisation.value}|${props.emissionId}|${props.sortCriteria}|${sort.value}\n ${props.iabId}|${props.participantId}|${props.query}|${props.monetisable}|${props.popularSort}|\n ${props.rubriqueId}|${props.rubriquageId}|${props.before}|${props.after}|${props.includeHidden}|${props.noRubriquageId}|${props.validity}|\n ${props.withVideo}|${props.includeTag}|${props.beneficiaries}|${props.emissionGroups}|${props.onlyMyEpisodes}`;\n});\nconst organisation = computed(() => {\n if (props.organisationId) {\n return props.organisationId;\n }\n return filterStore.filterOrgaId ? [filterStore.filterOrgaId] : [];\n});\nconst sort = computed(() => props.popularSort ? PodcastSort.POPULARITY : (props.sortCriteria ?? PodcastSort.DATE));\nconst sortText = computed(() => {\n if (!props.displaySortText) {\n return \"\";\n }\n switch (props.sortCriteria) {\n case \"SCORE\":\n return \" \" + t(\"sort by score\");\n case \"DATE\":\n return \" \" + t(\"sort by date\");\n case \"NAME\":\n return \" \" + t(\"sort by alphabetical\");\n default:\n return \" \" + t(\"sort by date\");\n }\n});\n\n//Watch\nwatch(changePaginate, () => {\n dfirst.value = props.first;\n dsize.value = props.size;\n});\nwatch(changed, () => fetchContent(true));\nwatch(()=>props.reload, () => fetchContent(true));\nwatch(dsize, () => fetchContent(true));\nwatch(dfirst, () => {\n if (\n !podcasts.value[dfirst.value] ||\n 0 === podcasts.value[dfirst.value].podcastId\n ) {\n fetchContent(false);\n }\n});\n\nonBeforeMount(()=>fetchContent(false))\n\n//Methods\nasync function fetchContent(reset: boolean): Promise<void> {\n loading.value = true;\n\n // Sadly we kinda have no idea what will be passed as 'validity', we need to\n // handle multiple cases.\n let validity: undefined|boolean = undefined;\n if (props.validity !== undefined && props.validity !== '') {\n validity = props.validity === 'true' || props.validity === true;\n }\n \n const param: PodcastSearchOptions = {\n first: reset ? 0 : dfirst.value,\n size: dsize.value,\n organisationId: organisation.value,\n emissionId: props.emissionId,\n groupId: props.emissionGroups?.map(g => g.groupId),\n iabId: props.iabId,\n participantId: props.participantId,\n query: props.query,\n monetisable: props.monetisable,\n sort: sort.value,\n pubDateBefore: props.before,\n pubDateAfter: props.after,\n noRubriquageId: props.noRubriquageId?.length\n ? props.noRubriquageId\n : undefined,\n rubriqueId: props.rubriqueId?.length ? props.rubriqueId : undefined,\n rubriquageId: props.rubriquageId?.length ? props.rubriquageId : undefined,\n includeHidden: props.includeHidden,\n validity,\n publisherId: props.onlyMyEpisodes ? authStore.authProfile?.userId : undefined,\n processingStatus: [PodcastProcessingStatus.Ready, PodcastProcessingStatus.Processing],\n withVideo: props.withVideo,\n tags: props.includeTag?.length ? props.includeTag : undefined,\n beneficiaries: props.beneficiaries ?? undefined,\n season: props.seasons\n };\n\n try {\n const data = await podcastApi.searchFull(param, true);\n afterFetching(reset, data);\n } catch (error) {\n if (error instanceof AxiosError) {\n handle403(error as AxiosError);\n } else {\n console.error('error', error);\n }\n }\n}\nfunction afterFetching(\n reset: boolean,\n data: { count: number; result: Array<Podcast>; sort: string },\n): void {\n if (reset) {\n dfirst.value = 0;\n podcasts.value.length = 0;\n }\n if (dfirst.value > podcasts.value.length) {\n for (\n let i = podcasts.value.length - 1, len = dfirst.value + dsize.value;\n i < len;\n i++\n ) {\n podcasts.value.push(emptyPodcastData());\n }\n }\n const responsePodcasts = data.result.filter((p: Podcast | null) => {\n return null !== p;\n });\n podcasts.value = podcasts.value\n .slice(0, dfirst.value)\n .concat(responsePodcasts)\n .concat(\n podcasts.value.slice(dfirst.value + dsize.value, podcasts.value.length),\n );\n emit(\"fetch\", podcasts.value);\n totalCount.value = props.justSizeChosen ? props.size : data.count;\n if (0 === podcasts.value.length) {\n emit(\"emptyList\");\n }\n loading.value = false;\n}\n</script>\n","<!--\n Component displaying a list of podcast\n DO NOT confuse this with PodcastList from playlist\n-->\n<template>\n <ListPaginate\n id=\"podcastListPaginate\"\n v-model:first=\"dfirst\"\n v-model:rows-per-page=\"dsize\"\n v-model:is-mobile=\"isMobile\"\n :text-count=\"\n showCount && podcasts.length > 1\n ? t('Number podcasts', { nb: totalCount }) + sortText\n : undefined\n \"\n :total-count=\"totalCount\"\n :loading=\"loading\"\n :loading-text=\"loading ? t('Loading podcasts ...') : undefined\"\n :error-text=\"\n !loading && !podcasts.length\n ? t(`No podcast match your query`)\n : undefined\n \"\n :just-size-chosen=\"justSizeChosen\"\n :player-responsive=\"true\"\n :force-update-parameters=\"forceUpdateParameters\"\n >\n <template #list>\n <div class=\"octopus-element-list\">\n <ClassicLazy\n v-for=\"p in displayArray\"\n :key=\"p.podcastId\"\n :min-height=\"410\"\n >\n <PodcastItem\n v-if=\"0 !== p.podcastId\"\n :podcast=\"p\"\n />\n <template #preview>\n <router-link\n :to=\"{\n name: 'podcast',\n params: { podcastId: p.podcastId },\n }\"\n :title=\"t('Episode name page', { name: p.title })\"\n >\n {{ p.title }}\n </router-link>\n </template>\n </ClassicLazy>\n </div>\n </template>\n </ListPaginate>\n</template>\n\n<script setup lang=\"ts\">\nimport ListPaginate from \"../list/ListPaginate.vue\";\nimport {useErrorHandler} from \"../../composable/useErrorHandler\";\nimport PodcastItem from \"./PodcastItem.vue\";\nimport ClassicLazy from \"../../misc/ClassicLazy.vue\";\nimport { useFilterStore } from \"../../../stores/FilterStore\";\nimport { Podcast, PodcastProcessingStatus, emptyPodcastData } from \"../../../stores/class/general/podcast\";\nimport { computed, onBeforeMount, Ref, ref, watch } from \"vue\";\nimport { AxiosError } from \"axios\";\nimport { useI18n } from \"vue-i18n\";\nimport { podcastApi, PodcastMonetisation, PodcastSearchOptions, PodcastSort } from \"../../../api/podcastApi\";\nimport { EmissionGroup } from \"@/api/groupsApi\";\nimport { useAuthStore } from \"@/stores/AuthStore\";\n\n//Props \nconst props = withDefaults(defineProps<{\n first?: number;\n size?: number;\n organisationId?: Array<string>;\n emissionId?: number;\n iabId?: number;\n participantId?: number;\n query?: string;\n monetisable?: PodcastMonetisation;\n popularSort?: boolean;\n reload?: boolean;\n before?: string;\n after?: string;\n includeHidden?: boolean;\n /** Enable the display of number of items in ListPaginate */\n showCount?: boolean;\n displaySortText?: boolean;\n /** Criteria to sort on */\n sortCriteria?: PodcastSort;\n validity?: 'true'|'false'|''|boolean; // TODO improve this\n rubriqueId?: Array<number>;\n rubriquageId?: Array<number>;\n noRubriquageId?: Array<number>;\n justSizeChosen?: boolean;\n withVideo?: boolean;\n includeTag?: Array<string>;\n forceUpdateParameters?: boolean;\n /** The beneficiaries to filter on */\n beneficiaries?: Array<string>;\n /** The emission groups to filter on */\n emissionGroups?: Array<EmissionGroup>;\n /** Show only episodes created by current user */\n onlyMyEpisodes?: boolean;\n /** The seasons to filter on */\n seasons?: Array<number>;\n}>(), {\n first: 0,\n size: 30,\n popularSort: false,\n reload: false,\n includeHidden: false,\n showCount: false,\n displaySortText: true,\n validity: '',\n justSizeChosen: false,\n withVideo: undefined,\n forceUpdateParameters: false\n});\n\n//Emits\nconst emit = defineEmits([\"fetch\", \"emptyList\"]);\n\n//Data \nconst loading = ref(true);\nconst dfirst = ref(props.first);\nconst dsize = ref(props.size);\nconst totalCount = ref(0);\nconst isMobile = ref(false);\nconst podcasts: Ref<Array<Podcast>> = ref([]);\n\n//Composables\nconst { t } = useI18n();\nconst {handle403} = useErrorHandler();\nconst filterStore = useFilterStore();\nconst authStore = useAuthStore();\n\n//Computed\nconst displayArray = computed(() => {\n if (isMobile.value || props.justSizeChosen) {\n return podcasts.value;\n }\n return podcasts.value.slice(\n dfirst.value,\n Math.min(dfirst.value + dsize.value, totalCount.value),\n );\n});\nconst changePaginate = computed(() => `${props.first}|${props.size}`);\nconst changed = computed(() => {\n return `${organisation.value}|${props.emissionId}|${props.sortCriteria}|${sort.value}\n ${props.iabId}|${props.participantId}|${props.query}|${props.monetisable}|${props.popularSort}|\n ${props.rubriqueId}|${props.rubriquageId}|${props.before}|${props.after}|${props.includeHidden}|${props.noRubriquageId}|${props.validity}|\n ${props.withVideo}|${props.includeTag}|${props.beneficiaries}|${props.emissionGroups}|${props.onlyMyEpisodes}`;\n});\nconst organisation = computed(() => {\n if (props.organisationId) {\n return props.organisationId;\n }\n return filterStore.filterOrgaId ? [filterStore.filterOrgaId] : [];\n});\nconst sort = computed(() => props.popularSort ? PodcastSort.POPULARITY : (props.sortCriteria ?? PodcastSort.DATE));\nconst sortText = computed(() => {\n if (!props.displaySortText) {\n return \"\";\n }\n switch (props.sortCriteria) {\n case \"SCORE\":\n return \" \" + t(\"sort by score\");\n case \"DATE\":\n return \" \" + t(\"sort by date\");\n case \"NAME\":\n return \" \" + t(\"sort by alphabetical\");\n default:\n return \" \" + t(\"sort by date\");\n }\n});\n\n//Watch\nwatch(changePaginate, () => {\n dfirst.value = props.first;\n dsize.value = props.size;\n});\nwatch(changed, () => fetchContent(true));\nwatch(()=>props.reload, () => fetchContent(true));\nwatch(dsize, () => fetchContent(true));\nwatch(dfirst, () => {\n if (\n !podcasts.value[dfirst.value] ||\n 0 === podcasts.value[dfirst.value].podcastId\n ) {\n fetchContent(false);\n }\n});\n\nonBeforeMount(()=>fetchContent(false))\n\n//Methods\nasync function fetchContent(reset: boolean): Promise<void> {\n loading.value = true;\n\n // Sadly we kinda have no idea what will be passed as 'validity', we need to\n // handle multiple cases.\n let validity: undefined|boolean = undefined;\n if (props.validity !== undefined && props.validity !== '') {\n validity = props.validity === 'true' || props.validity === true;\n }\n \n const param: PodcastSearchOptions = {\n first: reset ? 0 : dfirst.value,\n size: dsize.value,\n organisationId: organisation.value,\n emissionId: props.emissionId,\n groupId: props.emissionGroups?.map(g => g.groupId),\n iabId: props.iabId,\n participantId: props.participantId,\n query: props.query,\n monetisable: props.monetisable,\n sort: sort.value,\n pubDateBefore: props.before,\n pubDateAfter: props.after,\n noRubriquageId: props.noRubriquageId?.length\n ? props.noRubriquageId\n : undefined,\n rubriqueId: props.rubriqueId?.length ? props.rubriqueId : undefined,\n rubriquageId: props.rubriquageId?.length ? props.rubriquageId : undefined,\n includeHidden: props.includeHidden,\n validity,\n publisherId: props.onlyMyEpisodes ? authStore.authProfile?.userId : undefined,\n processingStatus: [PodcastProcessingStatus.Ready, PodcastProcessingStatus.Processing],\n withVideo: props.withVideo,\n tags: props.includeTag?.length ? props.includeTag : undefined,\n beneficiaries: props.beneficiaries ?? undefined,\n season: props.seasons\n };\n\n try {\n const data = await podcastApi.searchFull(param, true);\n afterFetching(reset, data);\n } catch (error) {\n if (error instanceof AxiosError) {\n handle403(error as AxiosError);\n } else {\n console.error('error', error);\n }\n }\n}\nfunction afterFetching(\n reset: boolean,\n data: { count: number; result: Array<Podcast>; sort: string },\n): void {\n if (reset) {\n dfirst.value = 0;\n podcasts.value.length = 0;\n }\n if (dfirst.value > podcasts.value.length) {\n for (\n let i = podcasts.value.length - 1, len = dfirst.value + dsize.value;\n i < len;\n i++\n ) {\n podcasts.value.push(emptyPodcastData());\n }\n }\n const responsePodcasts = data.result.filter((p: Podcast | null) => {\n return null !== p;\n });\n podcasts.value = podcasts.value\n .slice(0, dfirst.value)\n .concat(responsePodcasts)\n .concat(\n podcasts.value.slice(dfirst.value + dsize.value, podcasts.value.length),\n );\n emit(\"fetch\", podcasts.value);\n totalCount.value = props.justSizeChosen ? props.size : data.count;\n if (0 === podcasts.value.length) {\n emit(\"emptyList\");\n }\n loading.value = false;\n}\n</script>\n"],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"PodcastList-C2R92m6S.mjs","names":["_resolveComponent","_openBlock","_createElementBlock","_createElementVNode","_toDisplayString","_createBlock","_createCommentVNode","_createVNode","_withCtx","_Fragment","_renderList","_createTextVNode","_sfc_main"],"sources":["../src/components/display/playlist/PodcastList.vue","../src/components/display/playlist/PodcastList.vue"],"sourcesContent":["<!--\n Component displaying a list of podcasts IN A PLAYLIST\n Do not confuse this with PodcastList from podcasts\n-->\n<template>\n <div>\n <h3 class=\"mb-3 align-self-baseline\">\n {{ titleList }}\n </h3>\n\n <ClassicSearch\n v-if=\"!loading && notEmptyPlaylist\"\n v-model:text-init=\"searchPattern\"\n class=\"align-self-baseline mb-2\"\n id-search=\"podcast-list-search\"\n :label=\"t('Search')\"\n />\n\n <ListPaginate\n id=\"podcastPlaylistListPaginate\"\n v-model:first=\"dfirst\"\n v-model:rows-per-page=\"dsize\"\n v-model:is-mobile=\"isMobile\"\n :text-count=\"\n podcasts.length > 1\n ? `${t('Number podcasts', { nb: podcasts.length })}`\n : undefined\n \"\n :total-count=\"podcasts.length\"\n :loading=\"loading\"\n :loading-text=\"loading ? t('Loading podcasts ...') : undefined\"\n :error-text=\"\n !loading && !podcasts.length && notEmptyPlaylist\n ? t(`No podcast match your query`)\n : undefined\n \"\n :player-responsive=\"true\"\n :force-update-parameters=\"true\"\n >\n <template #list>\n <div class=\"octopus-element-list\">\n <ClassicLazy\n v-for=\"p in podcastsDisplay\"\n :key=\"p.podcastId\"\n :min-height=\"410\"\n >\n <PodcastItem\n v-if=\"0 !== p.podcastId\"\n :podcast=\"p\"\n />\n\n <template #preview>\n <router-link\n :to=\"{\n name: 'podcast',\n params: { podcastId: p.podcastId },\n }\"\n :title=\"t('Episode name page', { name: p.title })\"\n >\n {{ p.title }}\n </router-link>\n </template>\n </ClassicLazy>\n </div>\n </template>\n </ListPaginate>\n </div>\n</template>\n\n<script setup lang=\"ts\">\nimport ListPaginate from \"../list/ListPaginate.vue\";\nimport {useErrorHandler} from \"../../composable/useErrorHandler\";\nimport {useOrgaComputed} from \"../../composable/useOrgaComputed\";\nimport PodcastItem from \"../podcasts/PodcastItem.vue\";\nimport ClassicSearch from \"../../form/ClassicSearch.vue\";\nimport ClassicLazy from \"../../misc/ClassicLazy.vue\";\nimport { Podcast } from \"@/stores/class/general/podcast\";\nimport { Playlist } from \"@/stores/class/general/playlist\";\nimport { computed, onBeforeMount, Ref, ref, watch } from \"vue\";\nimport { AxiosError } from \"axios\";\nimport { useI18n } from \"vue-i18n\";\nimport { playlistApi } from \"../../../api/playlistApi\";\n\n//Props \nconst props = defineProps({\n playlist: { default: () => ({}), type: Object as () => Playlist },\n first: { default: 0, type: Number },\n size: { default: 30, type: Number },\n query: { default: undefined, type: String },\n})\n\n//Emits\nconst emit = defineEmits([\"update:query\"]);\n\n//Data \nconst loading = ref(true);\nconst podcasts: Ref<Array<Podcast>> = ref([]);\nconst podcastsQuery: Ref<Array<Podcast>> = ref([]);\nconst dfirst = ref(props.first);\nconst dsize = ref(props.size);\nconst searchPattern = ref(\"\");\nconst isMobile = ref(false);\n\n//Composables\nconst { t } = useI18n();\nconst {handle403} = useErrorHandler();\nconst { isEditRights } = useOrgaComputed();\n\n//Computed\nconst titleList = computed(() => notEmptyPlaylist.value? t(\"Podcasts in the playlist\"): t(\"No podcasts in the playlist\"));\nconst notEmptyPlaylist = computed(() => 0 !== Object.keys(props.playlist.samplingViews ?? []).length);\nconst podcastsDisplay = computed(() => {\n if (isMobile.value) {\n return podcastsQuery.value.slice(\n 0,\n Math.min(dfirst.value + dsize.value, podcasts.value.length),\n );\n }\n return podcastsQuery.value.slice(\n dfirst.value,\n Math.min(dfirst.value + dsize.value, podcasts.value.length),\n );\n});\nconst editRight = computed(() =>isEditRights(props.playlist.organisation?.id));\n\n//Watch\nwatch(searchPattern,() => {\n emit('update:query', searchPattern.value);\n if (\"\" !== searchPattern.value) {\n podcastsQuery.value = podcasts.value.filter((el: Podcast) => {\n return el.title\n .toLowerCase()\n .includes(searchPattern.value.toLowerCase());\n });\n } else {\n podcastsQuery.value = podcasts.value;\n }\n});\n\nonBeforeMount(fetchContent);\n\n\n//Methods\nasync function fetchContent(): Promise<void> {\n if (notEmptyPlaylist.value) {\n podcasts.value.length = 0;\n loading.value = true;\n try {\n podcasts.value = await playlistApi.getContentFull(props.playlist.playlistId);\n if (!editRight.value) {\n podcasts.value = podcasts.value.filter((p: Podcast | null) => {\n return (\n null !== p &&\n (!p.availability || true === p.availability.visibility)\n );\n });\n }\n podcastsQuery.value = podcasts.value;\n searchPattern.value = props.query ?? \"\";\n } catch (error) {\n handle403(error as AxiosError);\n }\n }\n loading.value = false;\n}\n</script>\n\n","<!--\n Component displaying a list of podcasts IN A PLAYLIST\n Do not confuse this with PodcastList from podcasts\n-->\n<template>\n <div>\n <h3 class=\"mb-3 align-self-baseline\">\n {{ titleList }}\n </h3>\n\n <ClassicSearch\n v-if=\"!loading && notEmptyPlaylist\"\n v-model:text-init=\"searchPattern\"\n class=\"align-self-baseline mb-2\"\n id-search=\"podcast-list-search\"\n :label=\"t('Search')\"\n />\n\n <ListPaginate\n id=\"podcastPlaylistListPaginate\"\n v-model:first=\"dfirst\"\n v-model:rows-per-page=\"dsize\"\n v-model:is-mobile=\"isMobile\"\n :text-count=\"\n podcasts.length > 1\n ? `${t('Number podcasts', { nb: podcasts.length })}`\n : undefined\n \"\n :total-count=\"podcasts.length\"\n :loading=\"loading\"\n :loading-text=\"loading ? t('Loading podcasts ...') : undefined\"\n :error-text=\"\n !loading && !podcasts.length && notEmptyPlaylist\n ? t(`No podcast match your query`)\n : undefined\n \"\n :player-responsive=\"true\"\n :force-update-parameters=\"true\"\n >\n <template #list>\n <div class=\"octopus-element-list\">\n <ClassicLazy\n v-for=\"p in podcastsDisplay\"\n :key=\"p.podcastId\"\n :min-height=\"410\"\n >\n <PodcastItem\n v-if=\"0 !== p.podcastId\"\n :podcast=\"p\"\n />\n\n <template #preview>\n <router-link\n :to=\"{\n name: 'podcast',\n params: { podcastId: p.podcastId },\n }\"\n :title=\"t('Episode name page', { name: p.title })\"\n >\n {{ p.title }}\n </router-link>\n </template>\n </ClassicLazy>\n </div>\n </template>\n </ListPaginate>\n </div>\n</template>\n\n<script setup lang=\"ts\">\nimport ListPaginate from \"../list/ListPaginate.vue\";\nimport {useErrorHandler} from \"../../composable/useErrorHandler\";\nimport {useOrgaComputed} from \"../../composable/useOrgaComputed\";\nimport PodcastItem from \"../podcasts/PodcastItem.vue\";\nimport ClassicSearch from \"../../form/ClassicSearch.vue\";\nimport ClassicLazy from \"../../misc/ClassicLazy.vue\";\nimport { Podcast } from \"@/stores/class/general/podcast\";\nimport { Playlist } from \"@/stores/class/general/playlist\";\nimport { computed, onBeforeMount, Ref, ref, watch } from \"vue\";\nimport { AxiosError } from \"axios\";\nimport { useI18n } from \"vue-i18n\";\nimport { playlistApi } from \"../../../api/playlistApi\";\n\n//Props \nconst props = defineProps({\n playlist: { default: () => ({}), type: Object as () => Playlist },\n first: { default: 0, type: Number },\n size: { default: 30, type: Number },\n query: { default: undefined, type: String },\n})\n\n//Emits\nconst emit = defineEmits([\"update:query\"]);\n\n//Data \nconst loading = ref(true);\nconst podcasts: Ref<Array<Podcast>> = ref([]);\nconst podcastsQuery: Ref<Array<Podcast>> = ref([]);\nconst dfirst = ref(props.first);\nconst dsize = ref(props.size);\nconst searchPattern = ref(\"\");\nconst isMobile = ref(false);\n\n//Composables\nconst { t } = useI18n();\nconst {handle403} = useErrorHandler();\nconst { isEditRights } = useOrgaComputed();\n\n//Computed\nconst titleList = computed(() => notEmptyPlaylist.value? t(\"Podcasts in the playlist\"): t(\"No podcasts in the playlist\"));\nconst notEmptyPlaylist = computed(() => 0 !== Object.keys(props.playlist.samplingViews ?? []).length);\nconst podcastsDisplay = computed(() => {\n if (isMobile.value) {\n return podcastsQuery.value.slice(\n 0,\n Math.min(dfirst.value + dsize.value, podcasts.value.length),\n );\n }\n return podcastsQuery.value.slice(\n dfirst.value,\n Math.min(dfirst.value + dsize.value, podcasts.value.length),\n );\n});\nconst editRight = computed(() =>isEditRights(props.playlist.organisation?.id));\n\n//Watch\nwatch(searchPattern,() => {\n emit('update:query', searchPattern.value);\n if (\"\" !== searchPattern.value) {\n podcastsQuery.value = podcasts.value.filter((el: Podcast) => {\n return el.title\n .toLowerCase()\n .includes(searchPattern.value.toLowerCase());\n });\n } else {\n podcastsQuery.value = podcasts.value;\n }\n});\n\nonBeforeMount(fetchContent);\n\n\n//Methods\nasync function fetchContent(): Promise<void> {\n if (notEmptyPlaylist.value) {\n podcasts.value.length = 0;\n loading.value = true;\n try {\n podcasts.value = await playlistApi.getContentFull(props.playlist.playlistId);\n if (!editRight.value) {\n podcasts.value = podcasts.value.filter((p: Podcast | null) => {\n return (\n null !== p &&\n (!p.availability || true === p.availability.visibility)\n );\n });\n }\n podcastsQuery.value = podcasts.value;\n searchPattern.value = props.query ?? \"\";\n } catch (error) {\n handle403(error as AxiosError);\n }\n }\n loading.value = false;\n}\n</script>\n\n"],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"PodcastList-DWl6zz_z.mjs","names":["_resolveComponent","_openBlock","_createElementBlock","_createElementVNode","_toDisplayString","_createBlock","_createCommentVNode","_createVNode","_withCtx","_Fragment","_renderList","_createTextVNode","_sfc_main"],"sources":["../src/components/display/playlist/PodcastList.vue","../src/components/display/playlist/PodcastList.vue"],"sourcesContent":["<!--\n Component displaying a list of podcasts IN A PLAYLIST\n Do not confuse this with PodcastList from podcasts\n-->\n<template>\n <div>\n <h3 class=\"mb-3 align-self-baseline\">\n {{ titleList }}\n </h3>\n\n <ClassicSearch\n v-if=\"!loading && notEmptyPlaylist\"\n v-model:text-init=\"searchPattern\"\n class=\"align-self-baseline mb-2\"\n id-search=\"podcast-list-search\"\n :label=\"t('Search')\"\n />\n\n <ListPaginate\n id=\"podcastPlaylistListPaginate\"\n v-model:first=\"dfirst\"\n v-model:rows-per-page=\"dsize\"\n v-model:is-mobile=\"isMobile\"\n :text-count=\"\n podcasts.length > 1\n ? `${t('Number podcasts', { nb: podcasts.length })}`\n : undefined\n \"\n :total-count=\"podcasts.length\"\n :loading=\"loading\"\n :loading-text=\"loading ? t('Loading podcasts ...') : undefined\"\n :error-text=\"\n !loading && !podcasts.length && notEmptyPlaylist\n ? t(`No podcast match your query`)\n : undefined\n \"\n :player-responsive=\"true\"\n :force-update-parameters=\"true\"\n >\n <template #list>\n <div class=\"octopus-element-list\">\n <ClassicLazy\n v-for=\"p in podcastsDisplay\"\n :key=\"p.podcastId\"\n :min-height=\"410\"\n >\n <PodcastItem\n v-if=\"0 !== p.podcastId\"\n :podcast=\"p\"\n />\n\n <template #preview>\n <router-link\n :to=\"{\n name: 'podcast',\n params: { podcastId: p.podcastId },\n }\"\n :title=\"t('Episode name page', { name: p.title })\"\n >\n {{ p.title }}\n </router-link>\n </template>\n </ClassicLazy>\n </div>\n </template>\n </ListPaginate>\n </div>\n</template>\n\n<script setup lang=\"ts\">\nimport ListPaginate from \"../list/ListPaginate.vue\";\nimport {useErrorHandler} from \"../../composable/useErrorHandler\";\nimport {useOrgaComputed} from \"../../composable/useOrgaComputed\";\nimport PodcastItem from \"../podcasts/PodcastItem.vue\";\nimport ClassicSearch from \"../../form/ClassicSearch.vue\";\nimport ClassicLazy from \"../../misc/ClassicLazy.vue\";\nimport { Podcast } from \"@/stores/class/general/podcast\";\nimport { Playlist } from \"@/stores/class/general/playlist\";\nimport { computed, onBeforeMount, Ref, ref, watch } from \"vue\";\nimport { AxiosError } from \"axios\";\nimport { useI18n } from \"vue-i18n\";\nimport { playlistApi } from \"../../../api/playlistApi\";\n\n//Props \nconst props = defineProps({\n playlist: { default: () => ({}), type: Object as () => Playlist },\n first: { default: 0, type: Number },\n size: { default: 30, type: Number },\n query: { default: undefined, type: String },\n})\n\n//Emits\nconst emit = defineEmits([\"update:query\"]);\n\n//Data \nconst loading = ref(true);\nconst podcasts: Ref<Array<Podcast>> = ref([]);\nconst podcastsQuery: Ref<Array<Podcast>> = ref([]);\nconst dfirst = ref(props.first);\nconst dsize = ref(props.size);\nconst searchPattern = ref(\"\");\nconst isMobile = ref(false);\n\n//Composables\nconst { t } = useI18n();\nconst {handle403} = useErrorHandler();\nconst { isEditRights } = useOrgaComputed();\n\n//Computed\nconst titleList = computed(() => notEmptyPlaylist.value? t(\"Podcasts in the playlist\"): t(\"No podcasts in the playlist\"));\nconst notEmptyPlaylist = computed(() => 0 !== Object.keys(props.playlist.samplingViews ?? []).length);\nconst podcastsDisplay = computed(() => {\n if (isMobile.value) {\n return podcastsQuery.value.slice(\n 0,\n Math.min(dfirst.value + dsize.value, podcasts.value.length),\n );\n }\n return podcastsQuery.value.slice(\n dfirst.value,\n Math.min(dfirst.value + dsize.value, podcasts.value.length),\n );\n});\nconst editRight = computed(() =>isEditRights(props.playlist.organisation?.id));\n\n//Watch\nwatch(searchPattern,() => {\n emit('update:query', searchPattern.value);\n if (\"\" !== searchPattern.value) {\n podcastsQuery.value = podcasts.value.filter((el: Podcast) => {\n return el.title\n .toLowerCase()\n .includes(searchPattern.value.toLowerCase());\n });\n } else {\n podcastsQuery.value = podcasts.value;\n }\n});\n\nonBeforeMount(fetchContent);\n\n\n//Methods\nasync function fetchContent(): Promise<void> {\n if (notEmptyPlaylist.value) {\n podcasts.value.length = 0;\n loading.value = true;\n try {\n podcasts.value = await playlistApi.getContentFull(props.playlist.playlistId);\n if (!editRight.value) {\n podcasts.value = podcasts.value.filter((p: Podcast | null) => {\n return (\n null !== p &&\n (!p.availability || true === p.availability.visibility)\n );\n });\n }\n podcastsQuery.value = podcasts.value;\n searchPattern.value = props.query ?? \"\";\n } catch (error) {\n handle403(error as AxiosError);\n }\n }\n loading.value = false;\n}\n</script>\n\n","<!--\n Component displaying a list of podcasts IN A PLAYLIST\n Do not confuse this with PodcastList from podcasts\n-->\n<template>\n <div>\n <h3 class=\"mb-3 align-self-baseline\">\n {{ titleList }}\n </h3>\n\n <ClassicSearch\n v-if=\"!loading && notEmptyPlaylist\"\n v-model:text-init=\"searchPattern\"\n class=\"align-self-baseline mb-2\"\n id-search=\"podcast-list-search\"\n :label=\"t('Search')\"\n />\n\n <ListPaginate\n id=\"podcastPlaylistListPaginate\"\n v-model:first=\"dfirst\"\n v-model:rows-per-page=\"dsize\"\n v-model:is-mobile=\"isMobile\"\n :text-count=\"\n podcasts.length > 1\n ? `${t('Number podcasts', { nb: podcasts.length })}`\n : undefined\n \"\n :total-count=\"podcasts.length\"\n :loading=\"loading\"\n :loading-text=\"loading ? t('Loading podcasts ...') : undefined\"\n :error-text=\"\n !loading && !podcasts.length && notEmptyPlaylist\n ? t(`No podcast match your query`)\n : undefined\n \"\n :player-responsive=\"true\"\n :force-update-parameters=\"true\"\n >\n <template #list>\n <div class=\"octopus-element-list\">\n <ClassicLazy\n v-for=\"p in podcastsDisplay\"\n :key=\"p.podcastId\"\n :min-height=\"410\"\n >\n <PodcastItem\n v-if=\"0 !== p.podcastId\"\n :podcast=\"p\"\n />\n\n <template #preview>\n <router-link\n :to=\"{\n name: 'podcast',\n params: { podcastId: p.podcastId },\n }\"\n :title=\"t('Episode name page', { name: p.title })\"\n >\n {{ p.title }}\n </router-link>\n </template>\n </ClassicLazy>\n </div>\n </template>\n </ListPaginate>\n </div>\n</template>\n\n<script setup lang=\"ts\">\nimport ListPaginate from \"../list/ListPaginate.vue\";\nimport {useErrorHandler} from \"../../composable/useErrorHandler\";\nimport {useOrgaComputed} from \"../../composable/useOrgaComputed\";\nimport PodcastItem from \"../podcasts/PodcastItem.vue\";\nimport ClassicSearch from \"../../form/ClassicSearch.vue\";\nimport ClassicLazy from \"../../misc/ClassicLazy.vue\";\nimport { Podcast } from \"@/stores/class/general/podcast\";\nimport { Playlist } from \"@/stores/class/general/playlist\";\nimport { computed, onBeforeMount, Ref, ref, watch } from \"vue\";\nimport { AxiosError } from \"axios\";\nimport { useI18n } from \"vue-i18n\";\nimport { playlistApi } from \"../../../api/playlistApi\";\n\n//Props \nconst props = defineProps({\n playlist: { default: () => ({}), type: Object as () => Playlist },\n first: { default: 0, type: Number },\n size: { default: 30, type: Number },\n query: { default: undefined, type: String },\n})\n\n//Emits\nconst emit = defineEmits([\"update:query\"]);\n\n//Data \nconst loading = ref(true);\nconst podcasts: Ref<Array<Podcast>> = ref([]);\nconst podcastsQuery: Ref<Array<Podcast>> = ref([]);\nconst dfirst = ref(props.first);\nconst dsize = ref(props.size);\nconst searchPattern = ref(\"\");\nconst isMobile = ref(false);\n\n//Composables\nconst { t } = useI18n();\nconst {handle403} = useErrorHandler();\nconst { isEditRights } = useOrgaComputed();\n\n//Computed\nconst titleList = computed(() => notEmptyPlaylist.value? t(\"Podcasts in the playlist\"): t(\"No podcasts in the playlist\"));\nconst notEmptyPlaylist = computed(() => 0 !== Object.keys(props.playlist.samplingViews ?? []).length);\nconst podcastsDisplay = computed(() => {\n if (isMobile.value) {\n return podcastsQuery.value.slice(\n 0,\n Math.min(dfirst.value + dsize.value, podcasts.value.length),\n );\n }\n return podcastsQuery.value.slice(\n dfirst.value,\n Math.min(dfirst.value + dsize.value, podcasts.value.length),\n );\n});\nconst editRight = computed(() =>isEditRights(props.playlist.organisation?.id));\n\n//Watch\nwatch(searchPattern,() => {\n emit('update:query', searchPattern.value);\n if (\"\" !== searchPattern.value) {\n podcastsQuery.value = podcasts.value.filter((el: Podcast) => {\n return el.title\n .toLowerCase()\n .includes(searchPattern.value.toLowerCase());\n });\n } else {\n podcastsQuery.value = podcasts.value;\n }\n});\n\nonBeforeMount(fetchContent);\n\n\n//Methods\nasync function fetchContent(): Promise<void> {\n if (notEmptyPlaylist.value) {\n podcasts.value.length = 0;\n loading.value = true;\n try {\n podcasts.value = await playlistApi.getContentFull(props.playlist.playlistId);\n if (!editRight.value) {\n podcasts.value = podcasts.value.filter((p: Podcast | null) => {\n return (\n null !== p &&\n (!p.availability || true === p.availability.visibility)\n );\n });\n }\n podcastsQuery.value = podcasts.value;\n searchPattern.value = props.query ?? \"\";\n } catch (error) {\n handle403(error as AxiosError);\n }\n }\n loading.value = false;\n}\n</script>\n\n"],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"PodcastList-Dbt4nmKg.mjs","names":["_resolveComponent","_openBlock","_createBlock","_withCtx","_createElementVNode","_createElementBlock","_Fragment","_renderList","_createVNode","_createTextVNode","_toDisplayString","_createCommentVNode","_sfc_main"],"sources":["../src/components/display/podcasts/PodcastList.vue","../src/components/display/podcasts/PodcastList.vue"],"sourcesContent":["<!--\n Component displaying a list of podcast\n DO NOT confuse this with PodcastList from playlist\n-->\n<template>\n <ListPaginate\n id=\"podcastListPaginate\"\n v-model:first=\"dfirst\"\n v-model:rows-per-page=\"dsize\"\n v-model:is-mobile=\"isMobile\"\n :text-count=\"\n showCount && podcasts.length > 1\n ? t('Number podcasts', { nb: totalCount }) + sortText\n : undefined\n \"\n :total-count=\"totalCount\"\n :loading=\"loading\"\n :loading-text=\"loading ? t('Loading podcasts ...') : undefined\"\n :error-text=\"\n !loading && !podcasts.length\n ? t(`No podcast match your query`)\n : undefined\n \"\n :just-size-chosen=\"justSizeChosen\"\n :player-responsive=\"true\"\n :force-update-parameters=\"forceUpdateParameters\"\n >\n <template #list>\n <div class=\"octopus-element-list\">\n <ClassicLazy\n v-for=\"p in displayArray\"\n :key=\"p.podcastId\"\n :min-height=\"410\"\n >\n <PodcastItem\n v-if=\"0 !== p.podcastId\"\n :podcast=\"p\"\n />\n <template #preview>\n <router-link\n :to=\"{\n name: 'podcast',\n params: { podcastId: p.podcastId },\n }\"\n :title=\"t('Episode name page', { name: p.title })\"\n >\n {{ p.title }}\n </router-link>\n </template>\n </ClassicLazy>\n </div>\n </template>\n </ListPaginate>\n</template>\n\n<script setup lang=\"ts\">\nimport ListPaginate from \"../list/ListPaginate.vue\";\nimport {useErrorHandler} from \"../../composable/useErrorHandler\";\nimport PodcastItem from \"./PodcastItem.vue\";\nimport ClassicLazy from \"../../misc/ClassicLazy.vue\";\nimport { useFilterStore } from \"../../../stores/FilterStore\";\nimport { Podcast, PodcastProcessingStatus, emptyPodcastData } from \"../../../stores/class/general/podcast\";\nimport { computed, onBeforeMount, Ref, ref, watch } from \"vue\";\nimport { AxiosError } from \"axios\";\nimport { useI18n } from \"vue-i18n\";\nimport { podcastApi, PodcastMonetisation, PodcastSearchOptions, PodcastSort } from \"../../../api/podcastApi\";\nimport { EmissionGroup } from \"@/api/groupsApi\";\nimport { useAuthStore } from \"@/stores/AuthStore\";\n\n//Props \nconst props = withDefaults(defineProps<{\n first?: number;\n size?: number;\n organisationId?: Array<string>;\n emissionId?: number;\n iabId?: number;\n participantId?: number;\n query?: string;\n monetisable?: PodcastMonetisation;\n popularSort?: boolean;\n reload?: boolean;\n before?: string;\n after?: string;\n includeHidden?: boolean;\n /** Enable the display of number of items in ListPaginate */\n showCount?: boolean;\n displaySortText?: boolean;\n /** Criteria to sort on */\n sortCriteria?: PodcastSort;\n validity?: 'true'|'false'|''|boolean; // TODO improve this\n rubriqueId?: Array<number>;\n rubriquageId?: Array<number>;\n noRubriquageId?: Array<number>;\n justSizeChosen?: boolean;\n withVideo?: boolean;\n includeTag?: Array<string>;\n forceUpdateParameters?: boolean;\n /** The beneficiaries to filter on */\n beneficiaries?: Array<string>;\n /** The emission groups to filter on */\n emissionGroups?: Array<EmissionGroup>;\n /** Show only episodes created by current user */\n onlyMyEpisodes?: boolean;\n /** The seasons to filter on */\n seasons?: Array<number>;\n}>(), {\n first: 0,\n size: 30,\n popularSort: false,\n reload: false,\n includeHidden: false,\n showCount: false,\n displaySortText: true,\n validity: '',\n justSizeChosen: false,\n withVideo: undefined,\n forceUpdateParameters: false\n});\n\n//Emits\nconst emit = defineEmits([\"fetch\", \"emptyList\"]);\n\n//Data \nconst loading = ref(true);\nconst dfirst = ref(props.first);\nconst dsize = ref(props.size);\nconst totalCount = ref(0);\nconst isMobile = ref(false);\nconst podcasts: Ref<Array<Podcast>> = ref([]);\n\n//Composables\nconst { t } = useI18n();\nconst {handle403} = useErrorHandler();\nconst filterStore = useFilterStore();\nconst authStore = useAuthStore();\n\n//Computed\nconst displayArray = computed(() => {\n if (isMobile.value || props.justSizeChosen) {\n return podcasts.value;\n }\n return podcasts.value.slice(\n dfirst.value,\n Math.min(dfirst.value + dsize.value, totalCount.value),\n );\n});\nconst changePaginate = computed(() => `${props.first}|${props.size}`);\nconst changed = computed(() => {\n return `${organisation.value}|${props.emissionId}|${props.sortCriteria}|${sort.value}\n ${props.iabId}|${props.participantId}|${props.query}|${props.monetisable}|${props.popularSort}|\n ${props.rubriqueId}|${props.rubriquageId}|${props.before}|${props.after}|${props.includeHidden}|${props.noRubriquageId}|${props.validity}|\n ${props.withVideo}|${props.includeTag}|${props.beneficiaries}|${props.emissionGroups}|${props.onlyMyEpisodes}`;\n});\nconst organisation = computed(() => {\n if (props.organisationId) {\n return props.organisationId;\n }\n return filterStore.filterOrgaId ? [filterStore.filterOrgaId] : [];\n});\nconst sort = computed(() => props.popularSort ? PodcastSort.POPULARITY : (props.sortCriteria ?? PodcastSort.DATE));\nconst sortText = computed(() => {\n if (!props.displaySortText) {\n return \"\";\n }\n switch (props.sortCriteria) {\n case \"SCORE\":\n return \" \" + t(\"sort by score\");\n case \"DATE\":\n return \" \" + t(\"sort by date\");\n case \"NAME\":\n return \" \" + t(\"sort by alphabetical\");\n default:\n return \" \" + t(\"sort by date\");\n }\n});\n\n//Watch\nwatch(changePaginate, () => {\n dfirst.value = props.first;\n dsize.value = props.size;\n});\nwatch(changed, () => fetchContent(true));\nwatch(()=>props.reload, () => fetchContent(true));\nwatch(dsize, () => fetchContent(true));\nwatch(dfirst, () => {\n if (\n !podcasts.value[dfirst.value] ||\n 0 === podcasts.value[dfirst.value].podcastId\n ) {\n fetchContent(false);\n }\n});\n\nonBeforeMount(()=>fetchContent(false))\n\n//Methods\nasync function fetchContent(reset: boolean): Promise<void> {\n loading.value = true;\n\n // Sadly we kinda have no idea what will be passed as 'validity', we need to\n // handle multiple cases.\n let validity: undefined|boolean = undefined;\n if (props.validity !== undefined && props.validity !== '') {\n validity = props.validity === 'true' || props.validity === true;\n }\n \n const param: PodcastSearchOptions = {\n first: reset ? 0 : dfirst.value,\n size: dsize.value,\n organisationId: organisation.value,\n emissionId: props.emissionId,\n groupId: props.emissionGroups?.map(g => g.groupId),\n iabId: props.iabId,\n participantId: props.participantId,\n query: props.query,\n monetisable: props.monetisable,\n sort: sort.value,\n pubDateBefore: props.before,\n pubDateAfter: props.after,\n noRubriquageId: props.noRubriquageId?.length\n ? props.noRubriquageId\n : undefined,\n rubriqueId: props.rubriqueId?.length ? props.rubriqueId : undefined,\n rubriquageId: props.rubriquageId?.length ? props.rubriquageId : undefined,\n includeHidden: props.includeHidden,\n validity,\n publisherId: props.onlyMyEpisodes ? authStore.authProfile?.userId : undefined,\n processingStatus: [PodcastProcessingStatus.Ready, PodcastProcessingStatus.Processing],\n withVideo: props.withVideo,\n tags: props.includeTag?.length ? props.includeTag : undefined,\n beneficiaries: props.beneficiaries ?? undefined,\n season: props.seasons\n };\n\n try {\n const data = await podcastApi.searchFull(param, true);\n afterFetching(reset, data);\n } catch (error) {\n if (error instanceof AxiosError) {\n handle403(error as AxiosError);\n } else {\n console.error('error', error);\n }\n }\n}\nfunction afterFetching(\n reset: boolean,\n data: { count: number; result: Array<Podcast>; sort: string },\n): void {\n if (reset) {\n dfirst.value = 0;\n podcasts.value.length = 0;\n }\n if (dfirst.value > podcasts.value.length) {\n for (\n let i = podcasts.value.length - 1, len = dfirst.value + dsize.value;\n i < len;\n i++\n ) {\n podcasts.value.push(emptyPodcastData());\n }\n }\n const responsePodcasts = data.result.filter((p: Podcast | null) => {\n return null !== p;\n });\n podcasts.value = podcasts.value\n .slice(0, dfirst.value)\n .concat(responsePodcasts)\n .concat(\n podcasts.value.slice(dfirst.value + dsize.value, podcasts.value.length),\n );\n emit(\"fetch\", podcasts.value);\n totalCount.value = props.justSizeChosen ? props.size : data.count;\n if (0 === podcasts.value.length) {\n emit(\"emptyList\");\n }\n loading.value = false;\n}\n</script>\n","<!--\n Component displaying a list of podcast\n DO NOT confuse this with PodcastList from playlist\n-->\n<template>\n <ListPaginate\n id=\"podcastListPaginate\"\n v-model:first=\"dfirst\"\n v-model:rows-per-page=\"dsize\"\n v-model:is-mobile=\"isMobile\"\n :text-count=\"\n showCount && podcasts.length > 1\n ? t('Number podcasts', { nb: totalCount }) + sortText\n : undefined\n \"\n :total-count=\"totalCount\"\n :loading=\"loading\"\n :loading-text=\"loading ? t('Loading podcasts ...') : undefined\"\n :error-text=\"\n !loading && !podcasts.length\n ? t(`No podcast match your query`)\n : undefined\n \"\n :just-size-chosen=\"justSizeChosen\"\n :player-responsive=\"true\"\n :force-update-parameters=\"forceUpdateParameters\"\n >\n <template #list>\n <div class=\"octopus-element-list\">\n <ClassicLazy\n v-for=\"p in displayArray\"\n :key=\"p.podcastId\"\n :min-height=\"410\"\n >\n <PodcastItem\n v-if=\"0 !== p.podcastId\"\n :podcast=\"p\"\n />\n <template #preview>\n <router-link\n :to=\"{\n name: 'podcast',\n params: { podcastId: p.podcastId },\n }\"\n :title=\"t('Episode name page', { name: p.title })\"\n >\n {{ p.title }}\n </router-link>\n </template>\n </ClassicLazy>\n </div>\n </template>\n </ListPaginate>\n</template>\n\n<script setup lang=\"ts\">\nimport ListPaginate from \"../list/ListPaginate.vue\";\nimport {useErrorHandler} from \"../../composable/useErrorHandler\";\nimport PodcastItem from \"./PodcastItem.vue\";\nimport ClassicLazy from \"../../misc/ClassicLazy.vue\";\nimport { useFilterStore } from \"../../../stores/FilterStore\";\nimport { Podcast, PodcastProcessingStatus, emptyPodcastData } from \"../../../stores/class/general/podcast\";\nimport { computed, onBeforeMount, Ref, ref, watch } from \"vue\";\nimport { AxiosError } from \"axios\";\nimport { useI18n } from \"vue-i18n\";\nimport { podcastApi, PodcastMonetisation, PodcastSearchOptions, PodcastSort } from \"../../../api/podcastApi\";\nimport { EmissionGroup } from \"@/api/groupsApi\";\nimport { useAuthStore } from \"@/stores/AuthStore\";\n\n//Props \nconst props = withDefaults(defineProps<{\n first?: number;\n size?: number;\n organisationId?: Array<string>;\n emissionId?: number;\n iabId?: number;\n participantId?: number;\n query?: string;\n monetisable?: PodcastMonetisation;\n popularSort?: boolean;\n reload?: boolean;\n before?: string;\n after?: string;\n includeHidden?: boolean;\n /** Enable the display of number of items in ListPaginate */\n showCount?: boolean;\n displaySortText?: boolean;\n /** Criteria to sort on */\n sortCriteria?: PodcastSort;\n validity?: 'true'|'false'|''|boolean; // TODO improve this\n rubriqueId?: Array<number>;\n rubriquageId?: Array<number>;\n noRubriquageId?: Array<number>;\n justSizeChosen?: boolean;\n withVideo?: boolean;\n includeTag?: Array<string>;\n forceUpdateParameters?: boolean;\n /** The beneficiaries to filter on */\n beneficiaries?: Array<string>;\n /** The emission groups to filter on */\n emissionGroups?: Array<EmissionGroup>;\n /** Show only episodes created by current user */\n onlyMyEpisodes?: boolean;\n /** The seasons to filter on */\n seasons?: Array<number>;\n}>(), {\n first: 0,\n size: 30,\n popularSort: false,\n reload: false,\n includeHidden: false,\n showCount: false,\n displaySortText: true,\n validity: '',\n justSizeChosen: false,\n withVideo: undefined,\n forceUpdateParameters: false\n});\n\n//Emits\nconst emit = defineEmits([\"fetch\", \"emptyList\"]);\n\n//Data \nconst loading = ref(true);\nconst dfirst = ref(props.first);\nconst dsize = ref(props.size);\nconst totalCount = ref(0);\nconst isMobile = ref(false);\nconst podcasts: Ref<Array<Podcast>> = ref([]);\n\n//Composables\nconst { t } = useI18n();\nconst {handle403} = useErrorHandler();\nconst filterStore = useFilterStore();\nconst authStore = useAuthStore();\n\n//Computed\nconst displayArray = computed(() => {\n if (isMobile.value || props.justSizeChosen) {\n return podcasts.value;\n }\n return podcasts.value.slice(\n dfirst.value,\n Math.min(dfirst.value + dsize.value, totalCount.value),\n );\n});\nconst changePaginate = computed(() => `${props.first}|${props.size}`);\nconst changed = computed(() => {\n return `${organisation.value}|${props.emissionId}|${props.sortCriteria}|${sort.value}\n ${props.iabId}|${props.participantId}|${props.query}|${props.monetisable}|${props.popularSort}|\n ${props.rubriqueId}|${props.rubriquageId}|${props.before}|${props.after}|${props.includeHidden}|${props.noRubriquageId}|${props.validity}|\n ${props.withVideo}|${props.includeTag}|${props.beneficiaries}|${props.emissionGroups}|${props.onlyMyEpisodes}`;\n});\nconst organisation = computed(() => {\n if (props.organisationId) {\n return props.organisationId;\n }\n return filterStore.filterOrgaId ? [filterStore.filterOrgaId] : [];\n});\nconst sort = computed(() => props.popularSort ? PodcastSort.POPULARITY : (props.sortCriteria ?? PodcastSort.DATE));\nconst sortText = computed(() => {\n if (!props.displaySortText) {\n return \"\";\n }\n switch (props.sortCriteria) {\n case \"SCORE\":\n return \" \" + t(\"sort by score\");\n case \"DATE\":\n return \" \" + t(\"sort by date\");\n case \"NAME\":\n return \" \" + t(\"sort by alphabetical\");\n default:\n return \" \" + t(\"sort by date\");\n }\n});\n\n//Watch\nwatch(changePaginate, () => {\n dfirst.value = props.first;\n dsize.value = props.size;\n});\nwatch(changed, () => fetchContent(true));\nwatch(()=>props.reload, () => fetchContent(true));\nwatch(dsize, () => fetchContent(true));\nwatch(dfirst, () => {\n if (\n !podcasts.value[dfirst.value] ||\n 0 === podcasts.value[dfirst.value].podcastId\n ) {\n fetchContent(false);\n }\n});\n\nonBeforeMount(()=>fetchContent(false))\n\n//Methods\nasync function fetchContent(reset: boolean): Promise<void> {\n loading.value = true;\n\n // Sadly we kinda have no idea what will be passed as 'validity', we need to\n // handle multiple cases.\n let validity: undefined|boolean = undefined;\n if (props.validity !== undefined && props.validity !== '') {\n validity = props.validity === 'true' || props.validity === true;\n }\n \n const param: PodcastSearchOptions = {\n first: reset ? 0 : dfirst.value,\n size: dsize.value,\n organisationId: organisation.value,\n emissionId: props.emissionId,\n groupId: props.emissionGroups?.map(g => g.groupId),\n iabId: props.iabId,\n participantId: props.participantId,\n query: props.query,\n monetisable: props.monetisable,\n sort: sort.value,\n pubDateBefore: props.before,\n pubDateAfter: props.after,\n noRubriquageId: props.noRubriquageId?.length\n ? props.noRubriquageId\n : undefined,\n rubriqueId: props.rubriqueId?.length ? props.rubriqueId : undefined,\n rubriquageId: props.rubriquageId?.length ? props.rubriquageId : undefined,\n includeHidden: props.includeHidden,\n validity,\n publisherId: props.onlyMyEpisodes ? authStore.authProfile?.userId : undefined,\n processingStatus: [PodcastProcessingStatus.Ready, PodcastProcessingStatus.Processing],\n withVideo: props.withVideo,\n tags: props.includeTag?.length ? props.includeTag : undefined,\n beneficiaries: props.beneficiaries ?? undefined,\n season: props.seasons\n };\n\n try {\n const data = await podcastApi.searchFull(param, true);\n afterFetching(reset, data);\n } catch (error) {\n if (error instanceof AxiosError) {\n handle403(error as AxiosError);\n } else {\n console.error('error', error);\n }\n }\n}\nfunction afterFetching(\n reset: boolean,\n data: { count: number; result: Array<Podcast>; sort: string },\n): void {\n if (reset) {\n dfirst.value = 0;\n podcasts.value.length = 0;\n }\n if (dfirst.value > podcasts.value.length) {\n for (\n let i = podcasts.value.length - 1, len = dfirst.value + dsize.value;\n i < len;\n i++\n ) {\n podcasts.value.push(emptyPodcastData());\n }\n }\n const responsePodcasts = data.result.filter((p: Podcast | null) => {\n return null !== p;\n });\n podcasts.value = podcasts.value\n .slice(0, dfirst.value)\n .concat(responsePodcasts)\n .concat(\n podcasts.value.slice(dfirst.value + dsize.value, podcasts.value.length),\n );\n emit(\"fetch\", podcasts.value);\n totalCount.value = props.justSizeChosen ? props.size : data.count;\n if (0 === podcasts.value.length) {\n emit(\"emptyList\");\n }\n loading.value = false;\n}\n</script>\n"],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"PodcastList-KaQBRbR9.mjs","names":["_resolveComponent","_openBlock","_createBlock","_withCtx","_createElementVNode","_createElementBlock","_Fragment","_renderList","_createVNode","_createTextVNode","_toDisplayString","_createCommentVNode","_sfc_main"],"sources":["../src/components/display/podcasts/PodcastList.vue","../src/components/display/podcasts/PodcastList.vue"],"sourcesContent":["<!--\n Component displaying a list of podcast\n DO NOT confuse this with PodcastList from playlist\n-->\n<template>\n <ListPaginate\n id=\"podcastListPaginate\"\n v-model:first=\"dfirst\"\n v-model:rows-per-page=\"dsize\"\n v-model:is-mobile=\"isMobile\"\n :text-count=\"\n showCount && podcasts.length > 1\n ? t('Number podcasts', { nb: totalCount }) + sortText\n : undefined\n \"\n :total-count=\"totalCount\"\n :loading=\"loading\"\n :loading-text=\"loading ? t('Loading podcasts ...') : undefined\"\n :error-text=\"\n !loading && !podcasts.length\n ? t(`No podcast match your query`)\n : undefined\n \"\n :just-size-chosen=\"justSizeChosen\"\n :player-responsive=\"true\"\n :force-update-parameters=\"forceUpdateParameters\"\n >\n <template #list>\n <div class=\"octopus-element-list\">\n <ClassicLazy\n v-for=\"p in displayArray\"\n :key=\"p.podcastId\"\n :min-height=\"410\"\n >\n <PodcastItem\n v-if=\"0 !== p.podcastId\"\n :podcast=\"p\"\n />\n <template #preview>\n <router-link\n :to=\"{\n name: 'podcast',\n params: { podcastId: p.podcastId },\n }\"\n :title=\"t('Episode name page', { name: p.title })\"\n >\n {{ p.title }}\n </router-link>\n </template>\n </ClassicLazy>\n </div>\n </template>\n </ListPaginate>\n</template>\n\n<script setup lang=\"ts\">\nimport ListPaginate from \"../list/ListPaginate.vue\";\nimport {useErrorHandler} from \"../../composable/useErrorHandler\";\nimport PodcastItem from \"./PodcastItem.vue\";\nimport ClassicLazy from \"../../misc/ClassicLazy.vue\";\nimport { useFilterStore } from \"../../../stores/FilterStore\";\nimport { Podcast, PodcastProcessingStatus, emptyPodcastData } from \"../../../stores/class/general/podcast\";\nimport { computed, onBeforeMount, Ref, ref, watch } from \"vue\";\nimport { AxiosError } from \"axios\";\nimport { useI18n } from \"vue-i18n\";\nimport { podcastApi, PodcastMonetisation, PodcastSearchOptions, PodcastSort } from \"../../../api/podcastApi\";\nimport { EmissionGroup } from \"@/api/groupsApi\";\nimport { useAuthStore } from \"@/stores/AuthStore\";\n\n//Props \nconst props = withDefaults(defineProps<{\n first?: number;\n size?: number;\n organisationId?: Array<string>;\n emissionId?: number;\n iabId?: number;\n participantId?: number;\n query?: string;\n monetisable?: PodcastMonetisation;\n popularSort?: boolean;\n reload?: boolean;\n before?: string;\n after?: string;\n includeHidden?: boolean;\n /** Enable the display of number of items in ListPaginate */\n showCount?: boolean;\n displaySortText?: boolean;\n /** Criteria to sort on */\n sortCriteria?: PodcastSort;\n validity?: 'true'|'false'|''|boolean; // TODO improve this\n rubriqueId?: Array<number>;\n rubriquageId?: Array<number>;\n noRubriquageId?: Array<number>;\n justSizeChosen?: boolean;\n withVideo?: boolean;\n includeTag?: Array<string>;\n forceUpdateParameters?: boolean;\n /** The beneficiaries to filter on */\n beneficiaries?: Array<string>;\n /** The emission groups to filter on */\n emissionGroups?: Array<EmissionGroup>;\n /** Show only episodes created by current user */\n onlyMyEpisodes?: boolean;\n /** The seasons to filter on */\n seasons?: Array<number>;\n}>(), {\n first: 0,\n size: 30,\n popularSort: false,\n reload: false,\n includeHidden: false,\n showCount: false,\n displaySortText: true,\n validity: '',\n justSizeChosen: false,\n withVideo: undefined,\n forceUpdateParameters: false\n});\n\n//Emits\nconst emit = defineEmits([\"fetch\", \"emptyList\"]);\n\n//Data \nconst loading = ref(true);\nconst dfirst = ref(props.first);\nconst dsize = ref(props.size);\nconst totalCount = ref(0);\nconst isMobile = ref(false);\nconst podcasts: Ref<Array<Podcast>> = ref([]);\n\n//Composables\nconst { t } = useI18n();\nconst {handle403} = useErrorHandler();\nconst filterStore = useFilterStore();\nconst authStore = useAuthStore();\n\n//Computed\nconst displayArray = computed(() => {\n if (isMobile.value || props.justSizeChosen) {\n return podcasts.value;\n }\n return podcasts.value.slice(\n dfirst.value,\n Math.min(dfirst.value + dsize.value, totalCount.value),\n );\n});\nconst changePaginate = computed(() => `${props.first}|${props.size}`);\nconst changed = computed(() => {\n return `${organisation.value}|${props.emissionId}|${props.sortCriteria}|${sort.value}\n ${props.iabId}|${props.participantId}|${props.query}|${props.monetisable}|${props.popularSort}|\n ${props.rubriqueId}|${props.rubriquageId}|${props.before}|${props.after}|${props.includeHidden}|${props.noRubriquageId}|${props.validity}|\n ${props.withVideo}|${props.includeTag}|${props.beneficiaries}|${props.emissionGroups}|${props.onlyMyEpisodes}`;\n});\nconst organisation = computed(() => {\n if (props.organisationId) {\n return props.organisationId;\n }\n return filterStore.filterOrgaId ? [filterStore.filterOrgaId] : [];\n});\nconst sort = computed(() => props.popularSort ? PodcastSort.POPULARITY : (props.sortCriteria ?? PodcastSort.DATE));\nconst sortText = computed(() => {\n if (!props.displaySortText) {\n return \"\";\n }\n switch (props.sortCriteria) {\n case \"SCORE\":\n return \" \" + t(\"sort by score\");\n case \"DATE\":\n return \" \" + t(\"sort by date\");\n case \"NAME\":\n return \" \" + t(\"sort by alphabetical\");\n default:\n return \" \" + t(\"sort by date\");\n }\n});\n\n//Watch\nwatch(changePaginate, () => {\n dfirst.value = props.first;\n dsize.value = props.size;\n});\nwatch(changed, () => fetchContent(true));\nwatch(()=>props.reload, () => fetchContent(true));\nwatch(dsize, () => fetchContent(true));\nwatch(dfirst, () => {\n if (\n !podcasts.value[dfirst.value] ||\n 0 === podcasts.value[dfirst.value].podcastId\n ) {\n fetchContent(false);\n }\n});\n\nonBeforeMount(()=>fetchContent(false))\n\n//Methods\nasync function fetchContent(reset: boolean): Promise<void> {\n loading.value = true;\n\n // Sadly we kinda have no idea what will be passed as 'validity', we need to\n // handle multiple cases.\n let validity: undefined|boolean = undefined;\n if (props.validity !== undefined && props.validity !== '') {\n validity = props.validity === 'true' || props.validity === true;\n }\n \n const param: PodcastSearchOptions = {\n first: reset ? 0 : dfirst.value,\n size: dsize.value,\n organisationId: organisation.value,\n emissionId: props.emissionId,\n groupId: props.emissionGroups?.map(g => g.groupId),\n iabId: props.iabId,\n participantId: props.participantId,\n query: props.query,\n monetisable: props.monetisable,\n sort: sort.value,\n pubDateBefore: props.before,\n pubDateAfter: props.after,\n noRubriquageId: props.noRubriquageId?.length\n ? props.noRubriquageId\n : undefined,\n rubriqueId: props.rubriqueId?.length ? props.rubriqueId : undefined,\n rubriquageId: props.rubriquageId?.length ? props.rubriquageId : undefined,\n includeHidden: props.includeHidden,\n validity,\n publisherId: props.onlyMyEpisodes ? authStore.authProfile?.userId : undefined,\n processingStatus: [PodcastProcessingStatus.Ready, PodcastProcessingStatus.Processing],\n withVideo: props.withVideo,\n tags: props.includeTag?.length ? props.includeTag : undefined,\n beneficiaries: props.beneficiaries ?? undefined,\n season: props.seasons\n };\n\n try {\n const data = await podcastApi.searchFull(param, true);\n afterFetching(reset, data);\n } catch (error) {\n if (error instanceof AxiosError) {\n handle403(error as AxiosError);\n } else {\n console.error('error', error);\n }\n }\n}\nfunction afterFetching(\n reset: boolean,\n data: { count: number; result: Array<Podcast>; sort: string },\n): void {\n if (reset) {\n dfirst.value = 0;\n podcasts.value.length = 0;\n }\n if (dfirst.value > podcasts.value.length) {\n for (\n let i = podcasts.value.length - 1, len = dfirst.value + dsize.value;\n i < len;\n i++\n ) {\n podcasts.value.push(emptyPodcastData());\n }\n }\n const responsePodcasts = data.result.filter((p: Podcast | null) => {\n return null !== p;\n });\n podcasts.value = podcasts.value\n .slice(0, dfirst.value)\n .concat(responsePodcasts)\n .concat(\n podcasts.value.slice(dfirst.value + dsize.value, podcasts.value.length),\n );\n emit(\"fetch\", podcasts.value);\n totalCount.value = props.justSizeChosen ? props.size : data.count;\n if (0 === podcasts.value.length) {\n emit(\"emptyList\");\n }\n loading.value = false;\n}\n</script>\n","<!--\n Component displaying a list of podcast\n DO NOT confuse this with PodcastList from playlist\n-->\n<template>\n <ListPaginate\n id=\"podcastListPaginate\"\n v-model:first=\"dfirst\"\n v-model:rows-per-page=\"dsize\"\n v-model:is-mobile=\"isMobile\"\n :text-count=\"\n showCount && podcasts.length > 1\n ? t('Number podcasts', { nb: totalCount }) + sortText\n : undefined\n \"\n :total-count=\"totalCount\"\n :loading=\"loading\"\n :loading-text=\"loading ? t('Loading podcasts ...') : undefined\"\n :error-text=\"\n !loading && !podcasts.length\n ? t(`No podcast match your query`)\n : undefined\n \"\n :just-size-chosen=\"justSizeChosen\"\n :player-responsive=\"true\"\n :force-update-parameters=\"forceUpdateParameters\"\n >\n <template #list>\n <div class=\"octopus-element-list\">\n <ClassicLazy\n v-for=\"p in displayArray\"\n :key=\"p.podcastId\"\n :min-height=\"410\"\n >\n <PodcastItem\n v-if=\"0 !== p.podcastId\"\n :podcast=\"p\"\n />\n <template #preview>\n <router-link\n :to=\"{\n name: 'podcast',\n params: { podcastId: p.podcastId },\n }\"\n :title=\"t('Episode name page', { name: p.title })\"\n >\n {{ p.title }}\n </router-link>\n </template>\n </ClassicLazy>\n </div>\n </template>\n </ListPaginate>\n</template>\n\n<script setup lang=\"ts\">\nimport ListPaginate from \"../list/ListPaginate.vue\";\nimport {useErrorHandler} from \"../../composable/useErrorHandler\";\nimport PodcastItem from \"./PodcastItem.vue\";\nimport ClassicLazy from \"../../misc/ClassicLazy.vue\";\nimport { useFilterStore } from \"../../../stores/FilterStore\";\nimport { Podcast, PodcastProcessingStatus, emptyPodcastData } from \"../../../stores/class/general/podcast\";\nimport { computed, onBeforeMount, Ref, ref, watch } from \"vue\";\nimport { AxiosError } from \"axios\";\nimport { useI18n } from \"vue-i18n\";\nimport { podcastApi, PodcastMonetisation, PodcastSearchOptions, PodcastSort } from \"../../../api/podcastApi\";\nimport { EmissionGroup } from \"@/api/groupsApi\";\nimport { useAuthStore } from \"@/stores/AuthStore\";\n\n//Props \nconst props = withDefaults(defineProps<{\n first?: number;\n size?: number;\n organisationId?: Array<string>;\n emissionId?: number;\n iabId?: number;\n participantId?: number;\n query?: string;\n monetisable?: PodcastMonetisation;\n popularSort?: boolean;\n reload?: boolean;\n before?: string;\n after?: string;\n includeHidden?: boolean;\n /** Enable the display of number of items in ListPaginate */\n showCount?: boolean;\n displaySortText?: boolean;\n /** Criteria to sort on */\n sortCriteria?: PodcastSort;\n validity?: 'true'|'false'|''|boolean; // TODO improve this\n rubriqueId?: Array<number>;\n rubriquageId?: Array<number>;\n noRubriquageId?: Array<number>;\n justSizeChosen?: boolean;\n withVideo?: boolean;\n includeTag?: Array<string>;\n forceUpdateParameters?: boolean;\n /** The beneficiaries to filter on */\n beneficiaries?: Array<string>;\n /** The emission groups to filter on */\n emissionGroups?: Array<EmissionGroup>;\n /** Show only episodes created by current user */\n onlyMyEpisodes?: boolean;\n /** The seasons to filter on */\n seasons?: Array<number>;\n}>(), {\n first: 0,\n size: 30,\n popularSort: false,\n reload: false,\n includeHidden: false,\n showCount: false,\n displaySortText: true,\n validity: '',\n justSizeChosen: false,\n withVideo: undefined,\n forceUpdateParameters: false\n});\n\n//Emits\nconst emit = defineEmits([\"fetch\", \"emptyList\"]);\n\n//Data \nconst loading = ref(true);\nconst dfirst = ref(props.first);\nconst dsize = ref(props.size);\nconst totalCount = ref(0);\nconst isMobile = ref(false);\nconst podcasts: Ref<Array<Podcast>> = ref([]);\n\n//Composables\nconst { t } = useI18n();\nconst {handle403} = useErrorHandler();\nconst filterStore = useFilterStore();\nconst authStore = useAuthStore();\n\n//Computed\nconst displayArray = computed(() => {\n if (isMobile.value || props.justSizeChosen) {\n return podcasts.value;\n }\n return podcasts.value.slice(\n dfirst.value,\n Math.min(dfirst.value + dsize.value, totalCount.value),\n );\n});\nconst changePaginate = computed(() => `${props.first}|${props.size}`);\nconst changed = computed(() => {\n return `${organisation.value}|${props.emissionId}|${props.sortCriteria}|${sort.value}\n ${props.iabId}|${props.participantId}|${props.query}|${props.monetisable}|${props.popularSort}|\n ${props.rubriqueId}|${props.rubriquageId}|${props.before}|${props.after}|${props.includeHidden}|${props.noRubriquageId}|${props.validity}|\n ${props.withVideo}|${props.includeTag}|${props.beneficiaries}|${props.emissionGroups}|${props.onlyMyEpisodes}`;\n});\nconst organisation = computed(() => {\n if (props.organisationId) {\n return props.organisationId;\n }\n return filterStore.filterOrgaId ? [filterStore.filterOrgaId] : [];\n});\nconst sort = computed(() => props.popularSort ? PodcastSort.POPULARITY : (props.sortCriteria ?? PodcastSort.DATE));\nconst sortText = computed(() => {\n if (!props.displaySortText) {\n return \"\";\n }\n switch (props.sortCriteria) {\n case \"SCORE\":\n return \" \" + t(\"sort by score\");\n case \"DATE\":\n return \" \" + t(\"sort by date\");\n case \"NAME\":\n return \" \" + t(\"sort by alphabetical\");\n default:\n return \" \" + t(\"sort by date\");\n }\n});\n\n//Watch\nwatch(changePaginate, () => {\n dfirst.value = props.first;\n dsize.value = props.size;\n});\nwatch(changed, () => fetchContent(true));\nwatch(()=>props.reload, () => fetchContent(true));\nwatch(dsize, () => fetchContent(true));\nwatch(dfirst, () => {\n if (\n !podcasts.value[dfirst.value] ||\n 0 === podcasts.value[dfirst.value].podcastId\n ) {\n fetchContent(false);\n }\n});\n\nonBeforeMount(()=>fetchContent(false))\n\n//Methods\nasync function fetchContent(reset: boolean): Promise<void> {\n loading.value = true;\n\n // Sadly we kinda have no idea what will be passed as 'validity', we need to\n // handle multiple cases.\n let validity: undefined|boolean = undefined;\n if (props.validity !== undefined && props.validity !== '') {\n validity = props.validity === 'true' || props.validity === true;\n }\n \n const param: PodcastSearchOptions = {\n first: reset ? 0 : dfirst.value,\n size: dsize.value,\n organisationId: organisation.value,\n emissionId: props.emissionId,\n groupId: props.emissionGroups?.map(g => g.groupId),\n iabId: props.iabId,\n participantId: props.participantId,\n query: props.query,\n monetisable: props.monetisable,\n sort: sort.value,\n pubDateBefore: props.before,\n pubDateAfter: props.after,\n noRubriquageId: props.noRubriquageId?.length\n ? props.noRubriquageId\n : undefined,\n rubriqueId: props.rubriqueId?.length ? props.rubriqueId : undefined,\n rubriquageId: props.rubriquageId?.length ? props.rubriquageId : undefined,\n includeHidden: props.includeHidden,\n validity,\n publisherId: props.onlyMyEpisodes ? authStore.authProfile?.userId : undefined,\n processingStatus: [PodcastProcessingStatus.Ready, PodcastProcessingStatus.Processing],\n withVideo: props.withVideo,\n tags: props.includeTag?.length ? props.includeTag : undefined,\n beneficiaries: props.beneficiaries ?? undefined,\n season: props.seasons\n };\n\n try {\n const data = await podcastApi.searchFull(param, true);\n afterFetching(reset, data);\n } catch (error) {\n if (error instanceof AxiosError) {\n handle403(error as AxiosError);\n } else {\n console.error('error', error);\n }\n }\n}\nfunction afterFetching(\n reset: boolean,\n data: { count: number; result: Array<Podcast>; sort: string },\n): void {\n if (reset) {\n dfirst.value = 0;\n podcasts.value.length = 0;\n }\n if (dfirst.value > podcasts.value.length) {\n for (\n let i = podcasts.value.length - 1, len = dfirst.value + dsize.value;\n i < len;\n i++\n ) {\n podcasts.value.push(emptyPodcastData());\n }\n }\n const responsePodcasts = data.result.filter((p: Podcast | null) => {\n return null !== p;\n });\n podcasts.value = podcasts.value\n .slice(0, dfirst.value)\n .concat(responsePodcasts)\n .concat(\n podcasts.value.slice(dfirst.value + dsize.value, podcasts.value.length),\n );\n emit(\"fetch\", podcasts.value);\n totalCount.value = props.justSizeChosen ? props.size : data.count;\n if (0 === podcasts.value.length) {\n emit(\"emptyList\");\n }\n loading.value = false;\n}\n</script>\n"],"mappings":"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"}
|
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
import { t as e } from "./rolldown-runtime-Dy4uBu1J.mjs";
|
|
2
|
-
import {
|
|
3
|
-
import { t as n } from "./ListPaginate-
|
|
4
|
-
import { t as r } from "./useErrorHandler-
|
|
5
|
-
import { t as i } from "./useOrgaComputed-
|
|
2
|
+
import { v as t } from "./classicApi-CGipMqf7.mjs";
|
|
3
|
+
import { t as n } from "./ListPaginate-BPdnBcpe.mjs";
|
|
4
|
+
import { t as r } from "./useErrorHandler-x9sjDYSz.mjs";
|
|
5
|
+
import { t as i } from "./useOrgaComputed-D81Jihm-.mjs";
|
|
6
6
|
import { t as a } from "./ClassicLazy-CDhWc5-4.mjs";
|
|
7
7
|
import { t as o } from "./ClassicSearch-CtL1cpnF.mjs";
|
|
8
|
-
import { t as s } from "./PodcastItem-
|
|
8
|
+
import { t as s } from "./PodcastItem-Baki7W0q.mjs";
|
|
9
9
|
import { Fragment as c, computed as l, createBlock as u, createCommentVNode as d, createElementBlock as f, createElementVNode as p, createTextVNode as m, createVNode as h, defineComponent as g, onBeforeMount as _, openBlock as v, ref as y, renderList as b, resolveComponent as x, toDisplayString as S, unref as C, watch as w, withCtx as T } from "vue";
|
|
10
10
|
import { useI18n as E } from "vue-i18n";
|
|
11
11
|
//#region src/components/display/playlist/PodcastList.vue?vue&type=script&setup=true&lang.ts
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"PodcastList-d3SGLPvF.mjs","names":["_resolveComponent","_openBlock","_createElementBlock","_createElementVNode","_toDisplayString","_createBlock","_createCommentVNode","_createVNode","_withCtx","_Fragment","_renderList","_createTextVNode","_sfc_main"],"sources":["../src/components/display/playlist/PodcastList.vue","../src/components/display/playlist/PodcastList.vue"],"sourcesContent":["<!--\n Component displaying a list of podcasts IN A PLAYLIST\n Do not confuse this with PodcastList from podcasts\n-->\n<template>\n <div>\n <h3 class=\"mb-3 align-self-baseline\">\n {{ titleList }}\n </h3>\n\n <ClassicSearch\n v-if=\"!loading && notEmptyPlaylist\"\n v-model:text-init=\"searchPattern\"\n class=\"align-self-baseline mb-2\"\n id-search=\"podcast-list-search\"\n :label=\"t('Search')\"\n />\n\n <ListPaginate\n id=\"podcastPlaylistListPaginate\"\n v-model:first=\"dfirst\"\n v-model:rows-per-page=\"dsize\"\n v-model:is-mobile=\"isMobile\"\n :text-count=\"\n podcasts.length > 1\n ? `${t('Number podcasts', { nb: podcasts.length })}`\n : undefined\n \"\n :total-count=\"podcasts.length\"\n :loading=\"loading\"\n :loading-text=\"loading ? t('Loading podcasts ...') : undefined\"\n :error-text=\"\n !loading && !podcasts.length && notEmptyPlaylist\n ? t(`No podcast match your query`)\n : undefined\n \"\n :player-responsive=\"true\"\n :force-update-parameters=\"true\"\n >\n <template #list>\n <div class=\"octopus-element-list\">\n <ClassicLazy\n v-for=\"p in podcastsDisplay\"\n :key=\"p.podcastId\"\n :min-height=\"410\"\n >\n <PodcastItem\n v-if=\"0 !== p.podcastId\"\n :podcast=\"p\"\n />\n\n <template #preview>\n <router-link\n :to=\"{\n name: 'podcast',\n params: { podcastId: p.podcastId },\n }\"\n :title=\"t('Episode name page', { name: p.title })\"\n >\n {{ p.title }}\n </router-link>\n </template>\n </ClassicLazy>\n </div>\n </template>\n </ListPaginate>\n </div>\n</template>\n\n<script setup lang=\"ts\">\nimport ListPaginate from \"../list/ListPaginate.vue\";\nimport {useErrorHandler} from \"../../composable/useErrorHandler\";\nimport {useOrgaComputed} from \"../../composable/useOrgaComputed\";\nimport PodcastItem from \"../podcasts/PodcastItem.vue\";\nimport ClassicSearch from \"../../form/ClassicSearch.vue\";\nimport ClassicLazy from \"../../misc/ClassicLazy.vue\";\nimport { Podcast } from \"@/stores/class/general/podcast\";\nimport { Playlist } from \"@/stores/class/general/playlist\";\nimport { computed, onBeforeMount, Ref, ref, watch } from \"vue\";\nimport { AxiosError } from \"axios\";\nimport { useI18n } from \"vue-i18n\";\nimport { playlistApi } from \"../../../api/playlistApi\";\n\n//Props \nconst props = defineProps({\n playlist: { default: () => ({}), type: Object as () => Playlist },\n first: { default: 0, type: Number },\n size: { default: 30, type: Number },\n query: { default: undefined, type: String },\n})\n\n//Emits\nconst emit = defineEmits([\"update:query\"]);\n\n//Data \nconst loading = ref(true);\nconst podcasts: Ref<Array<Podcast>> = ref([]);\nconst podcastsQuery: Ref<Array<Podcast>> = ref([]);\nconst dfirst = ref(props.first);\nconst dsize = ref(props.size);\nconst searchPattern = ref(\"\");\nconst isMobile = ref(false);\n\n//Composables\nconst { t } = useI18n();\nconst {handle403} = useErrorHandler();\nconst { isEditRights } = useOrgaComputed();\n\n//Computed\nconst titleList = computed(() => notEmptyPlaylist.value? t(\"Podcasts in the playlist\"): t(\"No podcasts in the playlist\"));\nconst notEmptyPlaylist = computed(() => 0 !== Object.keys(props.playlist.samplingViews ?? []).length);\nconst podcastsDisplay = computed(() => {\n if (isMobile.value) {\n return podcastsQuery.value.slice(\n 0,\n Math.min(dfirst.value + dsize.value, podcasts.value.length),\n );\n }\n return podcastsQuery.value.slice(\n dfirst.value,\n Math.min(dfirst.value + dsize.value, podcasts.value.length),\n );\n});\nconst editRight = computed(() =>isEditRights(props.playlist.organisation?.id));\n\n//Watch\nwatch(searchPattern,() => {\n emit('update:query', searchPattern.value);\n if (\"\" !== searchPattern.value) {\n podcastsQuery.value = podcasts.value.filter((el: Podcast) => {\n return el.title\n .toLowerCase()\n .includes(searchPattern.value.toLowerCase());\n });\n } else {\n podcastsQuery.value = podcasts.value;\n }\n});\n\nonBeforeMount(fetchContent);\n\n\n//Methods\nasync function fetchContent(): Promise<void> {\n if (notEmptyPlaylist.value) {\n podcasts.value.length = 0;\n loading.value = true;\n try {\n podcasts.value = await playlistApi.getContentFull(props.playlist.playlistId);\n if (!editRight.value) {\n podcasts.value = podcasts.value.filter((p: Podcast | null) => {\n return (\n null !== p &&\n (!p.availability || true === p.availability.visibility)\n );\n });\n }\n podcastsQuery.value = podcasts.value;\n searchPattern.value = props.query ?? \"\";\n } catch (error) {\n handle403(error as AxiosError);\n }\n }\n loading.value = false;\n}\n</script>\n\n","<!--\n Component displaying a list of podcasts IN A PLAYLIST\n Do not confuse this with PodcastList from podcasts\n-->\n<template>\n <div>\n <h3 class=\"mb-3 align-self-baseline\">\n {{ titleList }}\n </h3>\n\n <ClassicSearch\n v-if=\"!loading && notEmptyPlaylist\"\n v-model:text-init=\"searchPattern\"\n class=\"align-self-baseline mb-2\"\n id-search=\"podcast-list-search\"\n :label=\"t('Search')\"\n />\n\n <ListPaginate\n id=\"podcastPlaylistListPaginate\"\n v-model:first=\"dfirst\"\n v-model:rows-per-page=\"dsize\"\n v-model:is-mobile=\"isMobile\"\n :text-count=\"\n podcasts.length > 1\n ? `${t('Number podcasts', { nb: podcasts.length })}`\n : undefined\n \"\n :total-count=\"podcasts.length\"\n :loading=\"loading\"\n :loading-text=\"loading ? t('Loading podcasts ...') : undefined\"\n :error-text=\"\n !loading && !podcasts.length && notEmptyPlaylist\n ? t(`No podcast match your query`)\n : undefined\n \"\n :player-responsive=\"true\"\n :force-update-parameters=\"true\"\n >\n <template #list>\n <div class=\"octopus-element-list\">\n <ClassicLazy\n v-for=\"p in podcastsDisplay\"\n :key=\"p.podcastId\"\n :min-height=\"410\"\n >\n <PodcastItem\n v-if=\"0 !== p.podcastId\"\n :podcast=\"p\"\n />\n\n <template #preview>\n <router-link\n :to=\"{\n name: 'podcast',\n params: { podcastId: p.podcastId },\n }\"\n :title=\"t('Episode name page', { name: p.title })\"\n >\n {{ p.title }}\n </router-link>\n </template>\n </ClassicLazy>\n </div>\n </template>\n </ListPaginate>\n </div>\n</template>\n\n<script setup lang=\"ts\">\nimport ListPaginate from \"../list/ListPaginate.vue\";\nimport {useErrorHandler} from \"../../composable/useErrorHandler\";\nimport {useOrgaComputed} from \"../../composable/useOrgaComputed\";\nimport PodcastItem from \"../podcasts/PodcastItem.vue\";\nimport ClassicSearch from \"../../form/ClassicSearch.vue\";\nimport ClassicLazy from \"../../misc/ClassicLazy.vue\";\nimport { Podcast } from \"@/stores/class/general/podcast\";\nimport { Playlist } from \"@/stores/class/general/playlist\";\nimport { computed, onBeforeMount, Ref, ref, watch } from \"vue\";\nimport { AxiosError } from \"axios\";\nimport { useI18n } from \"vue-i18n\";\nimport { playlistApi } from \"../../../api/playlistApi\";\n\n//Props \nconst props = defineProps({\n playlist: { default: () => ({}), type: Object as () => Playlist },\n first: { default: 0, type: Number },\n size: { default: 30, type: Number },\n query: { default: undefined, type: String },\n})\n\n//Emits\nconst emit = defineEmits([\"update:query\"]);\n\n//Data \nconst loading = ref(true);\nconst podcasts: Ref<Array<Podcast>> = ref([]);\nconst podcastsQuery: Ref<Array<Podcast>> = ref([]);\nconst dfirst = ref(props.first);\nconst dsize = ref(props.size);\nconst searchPattern = ref(\"\");\nconst isMobile = ref(false);\n\n//Composables\nconst { t } = useI18n();\nconst {handle403} = useErrorHandler();\nconst { isEditRights } = useOrgaComputed();\n\n//Computed\nconst titleList = computed(() => notEmptyPlaylist.value? t(\"Podcasts in the playlist\"): t(\"No podcasts in the playlist\"));\nconst notEmptyPlaylist = computed(() => 0 !== Object.keys(props.playlist.samplingViews ?? []).length);\nconst podcastsDisplay = computed(() => {\n if (isMobile.value) {\n return podcastsQuery.value.slice(\n 0,\n Math.min(dfirst.value + dsize.value, podcasts.value.length),\n );\n }\n return podcastsQuery.value.slice(\n dfirst.value,\n Math.min(dfirst.value + dsize.value, podcasts.value.length),\n );\n});\nconst editRight = computed(() =>isEditRights(props.playlist.organisation?.id));\n\n//Watch\nwatch(searchPattern,() => {\n emit('update:query', searchPattern.value);\n if (\"\" !== searchPattern.value) {\n podcastsQuery.value = podcasts.value.filter((el: Podcast) => {\n return el.title\n .toLowerCase()\n .includes(searchPattern.value.toLowerCase());\n });\n } else {\n podcastsQuery.value = podcasts.value;\n }\n});\n\nonBeforeMount(fetchContent);\n\n\n//Methods\nasync function fetchContent(): Promise<void> {\n if (notEmptyPlaylist.value) {\n podcasts.value.length = 0;\n loading.value = true;\n try {\n podcasts.value = await playlistApi.getContentFull(props.playlist.playlistId);\n if (!editRight.value) {\n podcasts.value = podcasts.value.filter((p: Podcast | null) => {\n return (\n null !== p &&\n (!p.availability || true === p.availability.visibility)\n );\n });\n }\n podcastsQuery.value = podcasts.value;\n searchPattern.value = props.query ?? \"\";\n } catch (error) {\n handle403(error as AxiosError);\n }\n }\n loading.value = false;\n}\n</script>\n\n"],"mappings":"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"}
|
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
import { t as e } from "./rolldown-runtime-Dy4uBu1J.mjs";
|
|
2
|
-
import { i as t, m as n, p as r, r as i } from "./classicApi-
|
|
3
|
-
import { t as a } from "./ListPaginate-
|
|
4
|
-
import { t as o } from "./useErrorHandler-
|
|
2
|
+
import { i as t, m as n, p as r, r as i } from "./classicApi-CGipMqf7.mjs";
|
|
3
|
+
import { t as a } from "./ListPaginate-BPdnBcpe.mjs";
|
|
4
|
+
import { t as o } from "./useErrorHandler-x9sjDYSz.mjs";
|
|
5
5
|
import { r as s, t as c } from "./podcast-BoNHyuLe.mjs";
|
|
6
6
|
import { t as l } from "./ClassicLazy-CDhWc5-4.mjs";
|
|
7
|
-
import { t as u } from "./PodcastItem-
|
|
7
|
+
import { t as u } from "./PodcastItem-Baki7W0q.mjs";
|
|
8
8
|
import { Fragment as d, computed as f, createBlock as p, createCommentVNode as m, createElementBlock as h, createElementVNode as g, createTextVNode as _, createVNode as v, defineComponent as y, onBeforeMount as b, openBlock as x, ref as S, renderList as C, resolveComponent as w, toDisplayString as T, unref as E, watch as D, withCtx as O } from "vue";
|
|
9
9
|
import { useI18n as k } from "vue-i18n";
|
|
10
10
|
import { AxiosError as A } from "axios";
|