@saooti/octopus-sdk 42.2.1 → 42.2.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/{AdvancedSearch-fO5eaqLJ.mjs → AdvancedSearch-C4segSRv.mjs} +6 -6
- package/dist/AdvancedSearch-C4segSRv.mjs.map +1 -0
- package/dist/AdvancedSearch-DD9tnLCw.mjs.map +1 -0
- package/dist/{CategoryFilter-Cu2a0YE9.mjs → CategoryFilter-CpplEC8n.mjs} +5 -5
- package/dist/CategoryFilter-CpplEC8n.mjs.map +1 -0
- package/dist/CategoryFilter-cbQR_ySd.mjs.map +1 -0
- package/dist/{CategoryList-DkxZDrO5.mjs → CategoryList-BTabY3vQ.mjs} +2 -2
- package/dist/CategoryList-BTabY3vQ.mjs.map +1 -0
- package/dist/CategoryList-DHEJoaez.mjs.map +1 -0
- package/dist/CategoryPage-BbsCC3Wr.mjs.map +1 -0
- package/dist/CategoryPage-BxvUmThb.mjs.map +1 -0
- package/dist/{CategoryPage-3HFz1i7_.mjs → CategoryPage-D755GvQZ.mjs} +3 -3
- package/dist/CategoryPage-D755GvQZ.mjs.map +1 -0
- package/dist/CategoryPage-DDBJ2krs.mjs.map +1 -0
- package/dist/CategoryPage-DRCYjOqG.mjs.map +1 -0
- package/dist/ChapteringModal-CSQqCWIk.mjs.map +1 -0
- package/dist/ChapteringModal-Dt8Rsauh.mjs.map +1 -0
- package/dist/{ChapteringModal-C-rdkbSz.mjs → ChapteringModal-ei6ZqVJU.mjs} +2 -2
- package/dist/ChapteringModal-ei6ZqVJU.mjs.map +1 -0
- package/dist/CheckIdentityModal-CNFVJVB_.mjs.map +1 -0
- package/dist/{CheckIdentityModal-N9h8yvhC.mjs → CheckIdentityModal-cpMOuJGv.mjs} +3 -3
- package/dist/CheckIdentityModal-cpMOuJGv.mjs.map +1 -0
- package/dist/ClipboardModal-2ZGF38VB.mjs.map +1 -0
- package/dist/{ClipboardModal-CnieIOJr.mjs → ClipboardModal-DzCUqSph.mjs} +2 -2
- package/dist/ClipboardModal-DzCUqSph.mjs.map +1 -0
- package/dist/CommentInput-CV46HJN8.mjs.map +1 -0
- package/dist/{CommentInput-CEioyN7X.mjs → CommentInput-D_p03L68.mjs} +6 -6
- package/dist/CommentInput-D_p03L68.mjs.map +1 -0
- package/dist/CommentInput-DwRbD74k.mjs.map +1 -0
- package/dist/CommentItem-B6_XUaFR.mjs.map +1 -0
- package/dist/CommentItem-CbbmwVXB.mjs.map +1 -0
- package/dist/CommentItem-DfKKazY0.mjs.map +1 -0
- package/dist/CommentItem-JRjSLmui.mjs.map +1 -0
- package/dist/{CommentItem-BefuRoxQ.mjs → CommentItem-MFN0JNW1.mjs} +8 -8
- package/dist/CommentItem-MFN0JNW1.mjs.map +1 -0
- package/dist/{CommentList-BsPwzqkf.mjs → CommentList-BkKy5ftL.mjs} +3 -3
- package/dist/CommentList-BkKy5ftL.mjs.map +1 -0
- package/dist/CommentList-BrP71Ug4.mjs.map +1 -0
- package/dist/CommentList-Ng_YXr74.mjs.map +1 -0
- package/dist/CommentList-tKA7NFHM.mjs.map +1 -0
- package/dist/CommentList-yarlxaXg.mjs.map +1 -0
- package/dist/{CommentMoreActions-C86aqy8M.mjs → CommentMoreActions-CBSvuOGJ.mjs} +5 -5
- package/dist/CommentMoreActions-CBSvuOGJ.mjs.map +1 -0
- package/dist/CommentMoreActions-D7guBdA7.mjs.map +1 -0
- package/dist/CommentName-frCHmngc.mjs.map +1 -0
- package/dist/{CommentName-DT1QyPi3.mjs → CommentName-zTMSdG4d.mjs} +3 -3
- package/dist/CommentName-zTMSdG4d.mjs.map +1 -0
- package/dist/{CommentParentInfo-9Fe-3e6c.mjs → CommentParentInfo-CRTYPb8P.mjs} +2 -2
- package/dist/CommentParentInfo-CRTYPb8P.mjs.map +1 -0
- package/dist/CommentParentInfo-D8qquB6k.mjs.map +1 -0
- package/dist/CommentParentInfo-DC4Q6wNO.mjs.map +1 -0
- package/dist/CommentParentInfo-temUvqNv.mjs.map +1 -0
- package/dist/{CommentPlayer-CiWQM64Y.mjs → CommentPlayer-BMuLmZdI.mjs} +3 -3
- package/dist/CommentPlayer-BMuLmZdI.mjs.map +1 -0
- package/dist/CommentPlayer-BPA_lEoE.mjs.map +1 -0
- package/dist/CommentPlayer-CUNi1Lxv.mjs.map +1 -0
- package/dist/{CommentSection-Be38YIkC.mjs → CommentSection-B91sHMDT.mjs} +5 -5
- package/dist/CommentSection-B91sHMDT.mjs.map +1 -0
- package/dist/CommentSection-CpYd7i8U.mjs.map +1 -0
- package/dist/CommentSection-CrqweNX4.mjs.map +1 -0
- package/dist/CommentSection-G8rMWPrM.mjs.map +1 -0
- package/dist/CommentSection-xjY6h7nn.mjs.map +1 -0
- package/dist/CommentStore-9WWuGwIj.mjs.map +1 -0
- package/dist/{CommentStore-Dv7j94Uo.mjs → CommentStore-ClU882RI.mjs} +2 -2
- package/dist/CommentStore-ClU882RI.mjs.map +1 -0
- package/dist/ContractPreviewModal-C4_20E99.mjs.map +1 -0
- package/dist/{ContractPreviewModal-CPT6bDpJ.mjs → ContractPreviewModal-Dn5MeLFo.mjs} +2 -2
- package/dist/ContractPreviewModal-Dn5MeLFo.mjs.map +1 -0
- package/dist/{DownloadPodcastButton-6D8qNAkT.mjs → DownloadPodcastButton-BI_sZWcJ.mjs} +3 -3
- package/dist/DownloadPodcastButton-BI_sZWcJ.mjs.map +1 -0
- package/dist/DownloadPodcastButton-CSRcg8Nl.mjs.map +1 -0
- package/dist/EditCommentModal-KAP1l9RK.mjs.map +1 -0
- package/dist/{EditCommentModal-aAcjhc0v.mjs → EditCommentModal-RbVMVDOp.mjs} +2 -2
- package/dist/EditCommentModal-RbVMVDOp.mjs.map +1 -0
- package/dist/{EmissionGroupChooser-Djt1IZg7.mjs → EmissionGroupChooser-BXqM4iXP.mjs} +2 -2
- package/dist/EmissionGroupChooser-BXqM4iXP.mjs.map +1 -0
- package/dist/EmissionGroupChooser-CO1WBOUi.mjs.map +1 -0
- package/dist/EmissionInlineList-B-r4eI3D.mjs.map +1 -0
- package/dist/{EmissionInlineList-BcrKpW8S.mjs → EmissionInlineList-Cy1lbYKY.mjs} +6 -6
- package/dist/EmissionInlineList-Cy1lbYKY.mjs.map +1 -0
- package/dist/EmissionInlineList-IKPyjBTQ.mjs.map +1 -0
- package/dist/EmissionItem-982WkWkg.mjs.map +1 -0
- package/dist/EmissionItem-B8q9hnN5.mjs.map +1 -0
- package/dist/{EmissionItem-DfkPRcPz.mjs → EmissionItem-BwXm3nNx.mjs} +5 -5
- package/dist/EmissionItem-BwXm3nNx.mjs.map +1 -0
- package/dist/EmissionItem-ZDlQ7B9S.mjs.map +1 -0
- package/dist/{EmissionList-DSuGp0JO.mjs → EmissionList-C8OxrndH.mjs} +6 -6
- package/dist/EmissionList-C8OxrndH.mjs.map +1 -0
- package/dist/EmissionList-C9-UUWMV.mjs.map +1 -0
- package/dist/EmissionList-Dk9xS4s_.mjs.map +1 -0
- package/dist/EmissionList-nrY7ASws.mjs.map +1 -0
- package/dist/EmissionList-vH4NX1NW.mjs.map +1 -0
- package/dist/EmissionPage-BHAPlZw-.mjs.map +1 -0
- package/dist/EmissionPage-B_2JalGG.mjs.map +1 -0
- package/dist/EmissionPage-D4PjyZzN.mjs.map +1 -0
- package/dist/EmissionPage-HGPCRuZD.mjs.map +1 -0
- package/dist/{EmissionPage-Bo9fK8HE.mjs → EmissionPage-nCNIiWCo.mjs} +25 -18
- package/dist/EmissionPage-nCNIiWCo.mjs.map +1 -0
- package/dist/EmissionPlayerItem-B_wRzikv.mjs.map +1 -0
- package/dist/{EmissionPlayerItem-D21OrPmm.mjs → EmissionPlayerItem-Degbnz9F.mjs} +5 -5
- package/dist/EmissionPlayerItem-Degbnz9F.mjs.map +1 -0
- package/dist/EmissionPlayerItem-Dkd0o1ee.mjs.map +1 -0
- package/dist/EmissionPresentationItem-BQ7HhOlC.mjs.map +1 -0
- package/dist/{EmissionPresentationItem-CwDIBurH.mjs → EmissionPresentationItem-CwBGPIgz.mjs} +2 -2
- package/dist/EmissionPresentationItem-CwBGPIgz.mjs.map +1 -0
- package/dist/{EmissionPresentationList-CASI5laP.mjs → EmissionPresentationList-BKI5mQdw.mjs} +4 -4
- package/dist/EmissionPresentationList-BKI5mQdw.mjs.map +1 -0
- package/dist/EmissionPresentationList-CLli23rs.mjs.map +1 -0
- package/dist/EmissionsPage-CO2xgVOR.mjs.map +1 -0
- package/dist/{EmissionsPage-Bw8Qtzlk.mjs → EmissionsPage-Cj7su56Z.mjs} +5 -5
- package/dist/EmissionsPage-Cj7su56Z.mjs.map +1 -0
- package/dist/EmissionsPage-DJdy0re_.mjs.map +1 -0
- package/dist/EmissionsPage-DR9r7_gH.mjs.map +1 -0
- package/dist/EmissionsPage-OVNfLKFu.mjs.map +1 -0
- package/dist/Error403Page-Ch535DfU.mjs.map +1 -0
- package/dist/{Error403Page-nTYCHwTi.mjs → Error403Page-DW2kK8ZZ.mjs} +2 -2
- package/dist/Error403Page-DW2kK8ZZ.mjs.map +1 -0
- package/dist/FooterGarSection-B76j-WZS.mjs.map +1 -0
- package/dist/{FooterGarSection-Cod8Key5.mjs → FooterGarSection-DVdF5RFq.mjs} +4 -4
- package/dist/FooterGarSection-DVdF5RFq.mjs.map +1 -0
- package/dist/FooterSection-BQiO-D1p.mjs.map +1 -0
- package/dist/{FooterSection-4WXBZj7c.mjs → FooterSection-CpYI9OGH.mjs} +5 -5
- package/dist/FooterSection-CpYI9OGH.mjs.map +1 -0
- package/dist/{HomeDropdown-CVe7yF6Y.mjs → HomeDropdown-D7FezAO8.mjs} +3 -3
- package/dist/HomeDropdown-D7FezAO8.mjs.map +1 -0
- package/dist/HomeDropdown-DQoMvBgU.mjs.map +1 -0
- package/dist/HomePage-BWs_az04.mjs.map +1 -0
- package/dist/HomePage-CMPKjRFA.mjs.map +1 -0
- package/dist/HomePage-CsXaeTCW.mjs.map +1 -0
- package/dist/HomePage-NH7OxpA_.mjs.map +1 -0
- package/dist/{HomePage-DupmOw6F.mjs → HomePage-vo6At2bL.mjs} +4 -4
- package/dist/HomePage-vo6At2bL.mjs.map +1 -0
- package/dist/{PodcastRubriqueList-BeTq7IRu.mjs → InlineRubriqueList-3ZVN9GJk.mjs} +14 -12
- package/dist/InlineRubriqueList-3ZVN9GJk.mjs.map +1 -0
- package/dist/InlineRubriqueList-D03VCzg8.mjs.map +1 -0
- package/dist/LikeSection-DtthHZj6.mjs.map +1 -0
- package/dist/{LikeSection-DAid96g9.mjs → LikeSection-jKjhnj88.mjs} +4 -4
- package/dist/LikeSection-jKjhnj88.mjs.map +1 -0
- package/dist/{ListPaginate-C9saxru9.mjs → ListPaginate-BXNnw_I8.mjs} +3 -3
- package/dist/ListPaginate-BXNnw_I8.mjs.map +1 -0
- package/dist/ListPaginate-COsL4t78.mjs.map +1 -0
- package/dist/ListPaginate-JuC0L113.mjs.map +1 -0
- package/dist/LiveHorizontalList-CFs9mGYs.mjs.map +1 -0
- package/dist/LiveHorizontalList-CWBQkS78.mjs.map +1 -0
- package/dist/LiveHorizontalList-DwPVmnvH.mjs.map +1 -0
- package/dist/LiveHorizontalList-jducN58c.mjs.map +1 -0
- package/dist/{LiveHorizontalList-OArlzudf.mjs → LiveHorizontalList-wgXkgFLv.mjs} +4 -4
- package/dist/LiveHorizontalList-wgXkgFLv.mjs.map +1 -0
- package/dist/LiveList-Bp-feBp9.mjs.map +1 -0
- package/dist/LiveList-ByyCyWUl.mjs.map +1 -0
- package/dist/{LiveList-EqIo_cye.mjs → LiveList-CA5n6VeN.mjs} +6 -6
- package/dist/LiveList-CA5n6VeN.mjs.map +1 -0
- package/dist/LiveList-Cah5VFun.mjs.map +1 -0
- package/dist/LiveList-DTAnN32j.mjs.map +1 -0
- package/dist/LivesPage-CNPMz3xS.mjs.map +1 -0
- package/dist/{LivesPage-BmHiBN8A.mjs → LivesPage-CTjXgU-Y.mjs} +5 -5
- package/dist/LivesPage-CTjXgU-Y.mjs.map +1 -0
- package/dist/LivesPage-CdhWyikV.mjs.map +1 -0
- package/dist/LivesPage-CwvFSl6G.mjs.map +1 -0
- package/dist/LivesPage-DyIfBEPX.mjs.map +1 -0
- package/dist/{MapPage-DcXKTGGh.mjs → MapPage-C_nGG0_5.mjs} +3 -3
- package/dist/MapPage-C_nGG0_5.mjs.map +1 -0
- package/dist/MapPage-DXV40zWN.mjs.map +1 -0
- package/dist/{MobileMenu-C0IYBWwF.mjs → MobileMenu-C95GAIm0.mjs} +4 -4
- package/dist/MobileMenu-C95GAIm0.mjs.map +1 -0
- package/dist/MobileMenu-CfHqWqsL.mjs.map +1 -0
- package/dist/NewsletterModal-4Lei4Y59.mjs.map +1 -0
- package/dist/{NewsletterModal-BzlUlz3P.mjs → NewsletterModal-B6ky7DBC.mjs} +2 -2
- package/dist/NewsletterModal-B6ky7DBC.mjs.map +1 -0
- package/dist/OrganisationChooser-BufDZsSd.mjs.map +1 -0
- package/dist/{OrganisationChooser-Bm4zqqCH.mjs → OrganisationChooser-CA0_LiTH.mjs} +3 -3
- package/dist/OrganisationChooser-CA0_LiTH.mjs.map +1 -0
- package/dist/{OrganisationChooserLight-BQ9B91mO.mjs → OrganisationChooserLight-BwG5mNdW.mjs} +2 -2
- package/dist/OrganisationChooserLight-BwG5mNdW.mjs.map +1 -0
- package/dist/OrganisationChooserLight-C2oGlc9Z.mjs.map +1 -0
- package/dist/{PageNotFound-BVQ8M8sO.mjs → PageNotFound-BHpjyNDo.mjs} +3 -3
- package/dist/PageNotFound-BHpjyNDo.mjs.map +1 -0
- package/dist/PageNotFound-IMnfLZqX.mjs.map +1 -0
- package/dist/{ParticipantInlineList-BQtQZFW1.mjs → ParticipantInlineList-A8UwjE4m.mjs} +5 -5
- package/dist/ParticipantInlineList-A8UwjE4m.mjs.map +1 -0
- package/dist/ParticipantInlineList-BpVOpEBm.mjs.map +1 -0
- package/dist/ParticipantInlineList-C5jWxedt.mjs.map +1 -0
- package/dist/ParticipantInlineList-C78uhskc.mjs.map +1 -0
- package/dist/ParticipantItem--Wv16z3V.mjs.map +1 -0
- package/dist/ParticipantItem-B3k4mf2V.mjs.map +1 -0
- package/dist/ParticipantItem-DAPOMGZD.mjs.map +1 -0
- package/dist/{ParticipantItem-EDPkxTT-.mjs → ParticipantItem-Szz8WXI6.mjs} +4 -4
- package/dist/ParticipantItem-Szz8WXI6.mjs.map +1 -0
- package/dist/ParticipantPage-BbKUwNKL.mjs.map +1 -0
- package/dist/ParticipantPage-Byq-9aCQ.mjs.map +1 -0
- package/dist/ParticipantPage-D4RVBlE-.mjs.map +1 -0
- package/dist/ParticipantPage-DfLxuZf-.mjs.map +1 -0
- package/dist/{ParticipantPage-BF-s1oof.mjs → ParticipantPage-y3OoBod8.mjs} +9 -9
- package/dist/ParticipantPage-y3OoBod8.mjs.map +1 -0
- package/dist/{ParticipantsPage-Bzt8Hxah.mjs → ParticipantsPage--BxmzVwz.mjs} +7 -7
- package/dist/ParticipantsPage--BxmzVwz.mjs.map +1 -0
- package/dist/ParticipantsPage-BEPHaCy5.mjs.map +1 -0
- package/dist/ParticipantsPage-BlQavFT6.mjs.map +1 -0
- package/dist/ParticipantsPage-D8ja25F9.mjs.map +1 -0
- package/dist/ParticipantsPage-R8LVrDFY.mjs.map +1 -0
- package/dist/{PlayerAnonymousModal-CbrqO1hs.mjs → PlayerAnonymousModal-BGPpTBPW.mjs} +3 -3
- package/dist/PlayerAnonymousModal-BGPpTBPW.mjs.map +1 -0
- package/dist/PlayerAnonymousModal-BW239BiA.mjs.map +1 -0
- package/dist/PlayerCompact-BFC95d7Y.mjs.map +1 -0
- package/dist/PlayerCompact-C-WCTFZN.mjs.map +1 -0
- package/dist/{PlayerCompact-BtKfz384.mjs → PlayerCompact-DnJns8S2.mjs} +4 -4
- package/dist/PlayerCompact-DnJns8S2.mjs.map +1 -0
- package/dist/PlayerComponent-B8AGq9pg.mjs.map +1 -0
- package/dist/{PlayerComponent-CxNkDcFc.mjs → PlayerComponent-BRBrXVjI.mjs} +27 -39
- package/dist/PlayerComponent-BRBrXVjI.mjs.map +1 -0
- package/dist/PlayerComponent-BbvNS7sy.mjs.map +1 -0
- package/dist/PlayerComponent-By_JAwx_.mjs.map +1 -0
- package/dist/PlayerComponent-C425OWjX.mjs.map +1 -0
- package/dist/PlayerComponent-C5PNQ3TW.mjs.map +1 -0
- package/dist/PlayerComponent-Cnk_vePj.mjs.map +1 -0
- package/dist/PlayerComponent-CovfufPB.mjs.map +1 -0
- package/dist/PlayerComponent-DC4jQIwE.mjs.map +1 -0
- package/dist/PlayerComponent-DEUmVv0M.mjs.map +1 -0
- package/dist/PlayerComponent-DOXY0vL0.mjs.map +1 -0
- package/dist/PlayerComponent-DajZbHv7.mjs.map +1 -0
- package/dist/PlayerComponent-DejSC061.mjs.map +1 -0
- package/dist/PlayerComponent-p7W2UNk6.mjs.map +1 -0
- package/dist/PlayerLarge-3zzN7qom.mjs.map +1 -0
- package/dist/{PlayerLarge-BH6BLQxk.mjs → PlayerLarge-B97rRmrJ.mjs} +12 -10
- package/dist/PlayerLarge-B97rRmrJ.mjs.map +1 -0
- package/dist/PlayerLarge-BzwrEgVR.mjs.map +1 -0
- package/dist/PlayerLarge-CLOwDO6Q.mjs.map +1 -0
- package/dist/PlayerLarge-Chv7pMOU.mjs.map +1 -0
- package/dist/PlayerLarge-CkWGaDiY.mjs.map +1 -0
- package/dist/PlayerLarge-D0NMzCRi.mjs.map +1 -0
- package/dist/PlayerLarge-D3obSnYt.mjs.map +1 -0
- package/dist/PlayerLarge-DLGXpE3K.mjs.map +1 -0
- package/dist/PlayerLarge-QtUrqNm5.mjs.map +1 -0
- package/dist/PlayerLarge-juuY9yOX.mjs.map +1 -0
- package/dist/PlayerLarge-n7zyM6b_.mjs.map +1 -0
- package/dist/PlayerLarge-o4FVk0QB.mjs.map +1 -0
- package/dist/PlayerLarge-tMW3v2La.mjs.map +1 -0
- package/dist/PlayerPlayButton-CTu0337E.mjs.map +1 -0
- package/dist/PlayerPlayButton-CfJWIpoP.mjs.map +1 -0
- package/dist/{PlayerPlayButton-DT2OdqnI.mjs → PlayerPlayButton-zKdHGzFr.mjs} +5 -5
- package/dist/PlayerPlayButton-zKdHGzFr.mjs.map +1 -0
- package/dist/{PlayerProgressBar-CSYnPjZb.mjs → PlayerProgressBar-BG5NG596.mjs} +4 -4
- package/dist/PlayerProgressBar-BG5NG596.mjs.map +1 -0
- package/dist/PlayerProgressBar-Cjv8JVY2.mjs.map +1 -0
- package/dist/PlayerProgressBar-Co0_YEF3.mjs.map +1 -0
- package/dist/PlayerStore-B-L2PQ_b.mjs.map +1 -0
- package/dist/PlayerStore-C2XzSrF5.mjs.map +1 -0
- package/dist/{PlayerStore-DukkcHI_.mjs → PlayerStore-vYmnOEA_.mjs} +3 -3
- package/dist/PlayerStore-vYmnOEA_.mjs.map +1 -0
- package/dist/PlayerVideo-DD6NaGkU.mjs.map +1 -0
- package/dist/{PlayerVideo-_Uz00K_T.mjs → PlayerVideo-Ds0oYeTC.mjs} +5 -5
- package/dist/PlayerVideo-Ds0oYeTC.mjs.map +1 -0
- package/dist/PlayerVideo-cYHZOYMv.mjs.map +1 -0
- package/dist/PlayerVideoDigiteka-BPJdJNEB.mjs.map +1 -0
- package/dist/{PlayerVideoDigiteka-CjfuxXBF.mjs → PlayerVideoDigiteka-C7xb0ndg.mjs} +3 -3
- package/dist/PlayerVideoDigiteka-C7xb0ndg.mjs.map +1 -0
- package/dist/PlayerVideoDigiteka-oqtYXqYK.mjs.map +1 -0
- package/dist/PlayerVideoHls-CB4psqbz.mjs.map +1 -0
- package/dist/{PlayerVideoHls-Dms7iTSo.mjs → PlayerVideoHls-xSNqzBEw.mjs} +4 -4
- package/dist/PlayerVideoHls-xSNqzBEw.mjs.map +1 -0
- package/dist/PlayerVideoHls-zNbegJFp.mjs.map +1 -0
- package/dist/PlaylistPage-BUj1Lzfp.mjs.map +1 -0
- package/dist/PlaylistPage-BhcJkM15.mjs.map +1 -0
- package/dist/PlaylistPage-BsHMB2nn.mjs.map +1 -0
- package/dist/{PlaylistPage-CQX0LhXn.mjs → PlaylistPage-D4mcAo00.mjs} +12 -12
- package/dist/PlaylistPage-D4mcAo00.mjs.map +1 -0
- package/dist/PlaylistPage-DjAgejp8.mjs.map +1 -0
- package/dist/PlaylistsPage-B3V5-WT9.mjs.map +1 -0
- package/dist/PlaylistsPage-DSjvWTw5.mjs.map +1 -0
- package/dist/{PlaylistsPage-Bd-u4qlc.mjs → PlaylistsPage-Dr6HKHf8.mjs} +7 -7
- package/dist/PlaylistsPage-Dr6HKHf8.mjs.map +1 -0
- package/dist/PodcastFilterList-C-8AF1Dn.mjs.map +1 -0
- package/dist/{PodcastFilterList-DkH6bqv_.mjs → PodcastFilterList-CYwPiGko.mjs} +3 -3
- package/dist/PodcastFilterList-CYwPiGko.mjs.map +1 -0
- package/dist/PodcastFilterList-C_d1SyTB.mjs.map +1 -0
- package/dist/PodcastFilterList-ClMsIUaO.mjs.map +1 -0
- package/dist/PodcastFilterList-DBS0kvW6.mjs.map +1 -0
- package/dist/PodcastImage-B8o3T5zK.mjs.map +1 -0
- package/dist/{PodcastImage-BtxcPlrh.mjs → PodcastImage-Bs1lpubL.mjs} +4 -4
- package/dist/PodcastImage-Bs1lpubL.mjs.map +1 -0
- package/dist/PodcastImage-DBB5689n.mjs.map +1 -0
- package/dist/PodcastImage-DNLZH0dY.mjs.map +1 -0
- package/dist/PodcastImage-DrV8oxG8.mjs.map +1 -0
- package/dist/{PodcastInlineList-CVWfH5np.mjs → PodcastInlineList-B7-2QswT.mjs} +2 -2
- package/dist/PodcastInlineList-B7-2QswT.mjs.map +1 -0
- package/dist/PodcastInlineList-BVMV6Wvd.mjs.map +1 -0
- package/dist/PodcastInlineList-BXPpF0YD.mjs.map +1 -0
- package/dist/PodcastInlineList-CLjO1SpD.mjs.map +1 -0
- package/dist/PodcastInlineList-Cf5YF0j9.mjs.map +1 -0
- package/dist/PodcastInlineListTemplate-BX0tXOFx.mjs.map +1 -0
- package/dist/{PodcastInlineListTemplate-BWw1Ix-7.mjs → PodcastInlineListTemplate-DCWn3r7s.mjs} +4 -4
- package/dist/PodcastInlineListTemplate-DCWn3r7s.mjs.map +1 -0
- package/dist/PodcastIsPlaying-BG1_FgVX.mjs.map +1 -0
- package/dist/{PodcastIsPlaying-B7YVeSyB.mjs → PodcastIsPlaying-BsObdQGR.mjs} +2 -2
- package/dist/PodcastIsPlaying-BsObdQGR.mjs.map +1 -0
- package/dist/PodcastIsPlaying-Csd-C2jr.mjs.map +1 -0
- package/dist/PodcastItem-CGmEwYT4.mjs.map +1 -0
- package/dist/PodcastItem-CN6gwARQ.mjs.map +1 -0
- package/dist/PodcastItem-CdLjZKxf.mjs.map +1 -0
- package/dist/PodcastItem-D1MwHzhE.mjs.map +1 -0
- package/dist/{PodcastItem-CFk8MX9D.mjs → PodcastItem-_8ErwIDG.mjs} +7 -7
- package/dist/PodcastItem-_8ErwIDG.mjs.map +1 -0
- package/dist/PodcastList-BXla7F3u.mjs.map +1 -0
- package/dist/PodcastList-BqE8dwdc.mjs.map +1 -0
- package/dist/PodcastList-BvC6iOS6.mjs.map +1 -0
- package/dist/PodcastList-CRwA-s7F.mjs.map +1 -0
- package/dist/PodcastList-CVFr9WNS.mjs.map +1 -0
- package/dist/PodcastList-DZKxDulS.mjs.map +1 -0
- package/dist/{PodcastList-BLXPFjvL.mjs → PodcastList-DgLQjL0d.mjs} +6 -6
- package/dist/PodcastList-DgLQjL0d.mjs.map +1 -0
- package/dist/{PodcastList-c0Iwzakm.mjs → PodcastList-DhKeiBbv.mjs} +5 -5
- package/dist/PodcastList-DhKeiBbv.mjs.map +1 -0
- package/dist/PodcastList-Dtq6kEG4.mjs.map +1 -0
- package/dist/PodcastList-Dx-mo7Wo.mjs.map +1 -0
- package/dist/{PodcastPage-C_d9FaS7.mjs → PodcastPage-C5OCwW8q.mjs} +23 -23
- package/dist/PodcastPage-C5OCwW8q.mjs.map +1 -0
- package/dist/PodcastPage-CsVqOGWc.mjs.map +1 -0
- package/dist/PodcastPage-DQInD9ry.mjs.map +1 -0
- package/dist/PodcastPage-Dka9GEzi.mjs.map +1 -0
- package/dist/PodcastPage-acKIH0vO.mjs.map +1 -0
- package/dist/PodcastPlayBar-AgtR8Ia9.mjs.map +1 -0
- package/dist/PodcastPlayBar-D7CyLEM4.mjs.map +1 -0
- package/dist/{PodcastPlayBar-WjGn_KlZ.mjs → PodcastPlayBar-DC5HCx76.mjs} +4 -4
- package/dist/PodcastPlayBar-DC5HCx76.mjs.map +1 -0
- package/dist/PodcastPlayBasicButton-DHYxw3NX.mjs.map +1 -0
- package/dist/{PodcastPlayBasicButton-BNKlqhGR.mjs → PodcastPlayBasicButton-PJHza4d_.mjs} +2 -2
- package/dist/PodcastPlayBasicButton-PJHza4d_.mjs.map +1 -0
- package/dist/PodcastPlayBasicButton-gK82n3YL.mjs.map +1 -0
- package/dist/{PodcastPlayButton-B9hWbPEk.mjs → PodcastPlayButton-1eaXWTlG.mjs} +4 -4
- package/dist/PodcastPlayButton-1eaXWTlG.mjs.map +1 -0
- package/dist/PodcastPlayButton-Bosq5ozq.mjs.map +1 -0
- package/dist/PodcastPlayButton-DIQi57Oh.mjs.map +1 -0
- package/dist/PodcastPlayButton-DcjbCnlT.mjs.map +1 -0
- package/dist/PodcastPlayButton-DgSCyhrd.mjs.map +1 -0
- package/dist/PodcastPlaylistInlineList-C0HZum5z.mjs.map +1 -0
- package/dist/PodcastPlaylistInlineList-CSziI2j4.mjs.map +1 -0
- package/dist/PodcastPlaylistInlineList-CvX2rauY.mjs.map +1 -0
- package/dist/PodcastPlaylistInlineList-H_rnCHag.mjs.map +1 -0
- package/dist/{PodcastPlaylistInlineList-_csxbYAx.mjs → PodcastPlaylistInlineList-XTbhC8OJ.mjs} +5 -5
- package/dist/PodcastPlaylistInlineList-XTbhC8OJ.mjs.map +1 -0
- package/dist/{PodcastPresentationList-BD8XmnW0.mjs → PodcastPresentationList-BUl5Rq83.mjs} +5 -5
- package/dist/PodcastPresentationList-BUl5Rq83.mjs.map +1 -0
- package/dist/PodcastPresentationList-BvkEDbtG.mjs.map +1 -0
- package/dist/PodcastPresentationList-C0n-xr5w.mjs.map +1 -0
- package/dist/PodcastPresentationList-CnrMkINf.mjs.map +1 -0
- package/dist/PodcastPresentationList-DC-Oi_eK.mjs.map +1 -0
- package/dist/PodcastProgressBar-CP-0ptRF.mjs.map +1 -0
- package/dist/{PodcastProgressBar-B3XOeeJx.mjs → PodcastProgressBar-VG-mRcpi.mjs} +4 -4
- package/dist/PodcastProgressBar-VG-mRcpi.mjs.map +1 -0
- package/dist/PodcastProgressBar-jY43GoFx.mjs.map +1 -0
- package/dist/PodcastRawTranscript-BAu-dt2V.mjs.map +1 -0
- package/dist/{PodcastRawTranscript-D0Nm7jGM.mjs → PodcastRawTranscript-Bf6f5yNd.mjs} +3 -3
- package/dist/PodcastRawTranscript-Bf6f5yNd.mjs.map +1 -0
- package/dist/{PodcastSwiperList-DJ0O3dqM.mjs → PodcastSwiperList-BhulNkN-.mjs} +5 -5
- package/dist/PodcastSwiperList-BhulNkN-.mjs.map +1 -0
- package/dist/PodcastSwiperList-CGeumBPj.mjs.map +1 -0
- package/dist/PodcastSwiperList-CzUkS6M6.mjs.map +1 -0
- package/dist/PodcastSwiperList-DLKOAjUS.mjs.map +1 -0
- package/dist/PodcastSwiperList-DaTHwrHm.mjs.map +1 -0
- package/dist/PodcastmakerHeader-BZT-U0KX.mjs.map +1 -0
- package/dist/{PodcastmakerHeader-DAATtOG_.mjs → PodcastmakerHeader-Df0g2dCr.mjs} +2 -2
- package/dist/PodcastmakerHeader-Df0g2dCr.mjs.map +1 -0
- package/dist/PodcastsPage-B-Qzlif0.mjs.map +1 -0
- package/dist/PodcastsPage-BoK55Z9G.mjs.map +1 -0
- package/dist/PodcastsPage-CTzbr2VD.mjs.map +1 -0
- package/dist/{PodcastsPage-ZhEVoMp1.mjs → PodcastsPage-DSJUPRZE.mjs} +5 -5
- package/dist/PodcastsPage-DSJUPRZE.mjs.map +1 -0
- package/dist/PodcastsPage-Jg_jAix6.mjs.map +1 -0
- package/dist/{ProductorSearch-xs0kzX_E.mjs → ProductorSearch-BTj9gIOs.mjs} +3 -3
- package/dist/ProductorSearch-BTj9gIOs.mjs.map +1 -0
- package/dist/ProductorSearch-ziDbxrDd.mjs.map +1 -0
- package/dist/ProgressBar-BOq9RfZ2.mjs.map +1 -0
- package/dist/{ProgressBar-0DSoUTwB.mjs → ProgressBar-BVc0_6Lv.mjs} +2 -2
- package/dist/ProgressBar-BVc0_6Lv.mjs.map +1 -0
- package/dist/ProgressBar-Cgt2PqnO.mjs.map +1 -0
- package/dist/QrCode-DNiPIFIA.mjs.map +1 -0
- package/dist/{QrCode-CUP2O18d.mjs → QrCode-MCv4t_Bn.mjs} +2 -2
- package/dist/QrCode-MCv4t_Bn.mjs.map +1 -0
- package/dist/{QrCodeModal-DXBCuki7.mjs → QrCodeModal-Be8E0JlC.mjs} +2 -2
- package/dist/QrCodeModal-Be8E0JlC.mjs.map +1 -0
- package/dist/QrCodeModal-DYDKLLuw.mjs.map +1 -0
- package/dist/RadioCurrently-BJOmCSby.mjs.map +1 -0
- package/dist/RadioCurrently-CZePLInZ.mjs.map +1 -0
- package/dist/{RadioCurrently-D5M81oIX.mjs → RadioCurrently-DWySwV64.mjs} +4 -4
- package/dist/RadioCurrently-DWySwV64.mjs.map +1 -0
- package/dist/RadioHistory-7EGvEAMx.mjs.map +1 -0
- package/dist/RadioHistory-BdMa013x.mjs.map +1 -0
- package/dist/{RadioHistory-BgOve4jk.mjs → RadioHistory-DlQFZYp2.mjs} +3 -3
- package/dist/RadioHistory-DlQFZYp2.mjs.map +1 -0
- package/dist/{RadioImage-CUTRr3DL.mjs → RadioImage-BIe2KpG_.mjs} +5 -5
- package/dist/RadioImage-BIe2KpG_.mjs.map +1 -0
- package/dist/RadioImage-CXFZXN1N.mjs.map +1 -0
- package/dist/RadioImage-CpJmuc8a.mjs.map +1 -0
- package/dist/{RadioList-CwzOFHc1.mjs → RadioList-B23gsiEF.mjs} +5 -5
- package/dist/RadioList-B23gsiEF.mjs.map +1 -0
- package/dist/RadioList-BwzgNcMO.mjs.map +1 -0
- package/dist/RadioList-KvAacjmD.mjs.map +1 -0
- package/dist/RadioPage-CM_4A1AQ.mjs.map +1 -0
- package/dist/RadioPage-DkBL81mI.mjs.map +1 -0
- package/dist/{RadioPage-DVflzCV-.mjs → RadioPage-Jg2kmtna.mjs} +11 -11
- package/dist/RadioPage-Jg2kmtna.mjs.map +1 -0
- package/dist/{RadioPlanning-CJ7Qqyhs.mjs → RadioPlanning-2aWTnbZb.mjs} +3 -3
- package/dist/RadioPlanning-2aWTnbZb.mjs.map +1 -0
- package/dist/RadioPlanning-DHxcBVQo.mjs.map +1 -0
- package/dist/RadioProgressBar-BHAawrHe.mjs.map +1 -0
- package/dist/RadioProgressBar-CPjLAoPB.mjs.map +1 -0
- package/dist/{RadioProgressBar-BmJbzzQA.mjs → RadioProgressBar-yIz1oI5d.mjs} +2 -2
- package/dist/RadioProgressBar-yIz1oI5d.mjs.map +1 -0
- package/dist/RecaptchaModal-DKugsU7h.mjs.map +1 -0
- package/dist/{RecaptchaModal-DX9rAHUg.mjs → RecaptchaModal-dfMCfebx.mjs} +2 -2
- package/dist/RecaptchaModal-dfMCfebx.mjs.map +1 -0
- package/dist/ReportAbuseModal-Bxr7NTvH.mjs.map +1 -0
- package/dist/{ReportAbuseModal-CYCRaFAY.mjs → ReportAbuseModal-DZKRbYXJ.mjs} +4 -4
- package/dist/ReportAbuseModal-DZKRbYXJ.mjs.map +1 -0
- package/dist/RightsIndicator-BgW0q3af.mjs.map +1 -0
- package/dist/RightsIndicator-BtzqiPWc.mjs.map +1 -0
- package/dist/{RightsIndicator-qIU4_wiF.mjs → RightsIndicator-D5I3DOfO.mjs} +2 -2
- package/dist/RightsIndicator-D5I3DOfO.mjs.map +1 -0
- package/dist/RightsIndicator-NOZ05rEh.mjs.map +1 -0
- package/dist/RightsWrapper-Cv41FXNO.mjs.map +1 -0
- package/dist/{RightsWrapper-Cs6prZ3E.mjs → RightsWrapper-HasUbnny.mjs} +3 -3
- package/dist/RightsWrapper-HasUbnny.mjs.map +1 -0
- package/dist/{RubriqueFilter-OA_DJKL1.mjs → RubriqueFilter-3SPVH4nT.mjs} +3 -3
- package/dist/RubriqueFilter-3SPVH4nT.mjs.map +1 -0
- package/dist/RubriqueFilter-B_F2fyA0.mjs.map +1 -0
- package/dist/RubriqueList-CalsqgcR.mjs.map +1 -0
- package/dist/{RubriqueList-B94NM5yi.mjs → RubriqueList-TnVM2-Ry.mjs} +3 -3
- package/dist/RubriqueList-TnVM2-Ry.mjs.map +1 -0
- package/dist/RubriquePage-BhneK7GY.mjs.map +1 -0
- package/dist/RubriquePage-CPV9lztT.mjs.map +1 -0
- package/dist/{RubriquePage-DyusiBmp.mjs → RubriquePage-D223TaA2.mjs} +5 -5
- package/dist/RubriquePage-D223TaA2.mjs.map +1 -0
- package/dist/RubriquePage-DriBVVmv.mjs.map +1 -0
- package/dist/RubriquePage-x_tOmQCH.mjs.map +1 -0
- package/dist/SearchPage-B-KDO-5r.mjs.map +1 -0
- package/dist/{SearchPage-BGOBGS4j.mjs → SearchPage-BH1gYkHn.mjs} +3 -3
- package/dist/SearchPage-BH1gYkHn.mjs.map +1 -0
- package/dist/SearchPage-CXOoJF_2.mjs.map +1 -0
- package/dist/SearchPage-DyX_tEm5.mjs.map +1 -0
- package/dist/SearchPage-IvX74fSJ.mjs.map +1 -0
- package/dist/{ShareAnonymous-Chfdzzra.mjs → ShareAnonymous-4UxjKrIe.mjs} +6 -6
- package/dist/ShareAnonymous-4UxjKrIe.mjs.map +1 -0
- package/dist/ShareAnonymous-C4xPMrgf.mjs.map +1 -0
- package/dist/{ShareModalPlayer-CLY_JFFD.mjs → ShareModalPlayer-B0wPlpdU.mjs} +2 -2
- package/dist/ShareModalPlayer-B0wPlpdU.mjs.map +1 -0
- package/dist/ShareModalPlayer-CEvDV-I_.mjs.map +1 -0
- package/dist/ShareNewsletter-Bno5t4ay.mjs.map +1 -0
- package/dist/{ShareNewsletter-B4dn4-jA.mjs → ShareNewsletter-Cf9w-I6c.mjs} +2 -2
- package/dist/ShareNewsletter-Cf9w-I6c.mjs.map +1 -0
- package/dist/SharePlayer-BLqYnywl.mjs.map +1 -0
- package/dist/{SharePlayer-wHDYsWYd.mjs → SharePlayer-Oy1pWckd.mjs} +4 -4
- package/dist/SharePlayer-Oy1pWckd.mjs.map +1 -0
- package/dist/{SharePlayerRadio-D3LXD_gK.mjs → SharePlayerRadio-CI6glNuI.mjs} +3 -3
- package/dist/SharePlayerRadio-CI6glNuI.mjs.map +1 -0
- package/dist/SharePlayerRadio-c_HFTupz.mjs.map +1 -0
- package/dist/SharePlayerTypes-Dkmmw2We.mjs.map +1 -0
- package/dist/{SharePlayerTypes-eYSeVl-W.mjs → SharePlayerTypes-cUgCFZ65.mjs} +2 -2
- package/dist/SharePlayerTypes-cUgCFZ65.mjs.map +1 -0
- package/dist/{ShareSocialsButtons-iHtSoQ3K.mjs → ShareSocialsButtons-BYsXc2Jr.mjs} +2 -2
- package/dist/ShareSocialsButtons-BYsXc2Jr.mjs.map +1 -0
- package/dist/ShareSocialsButtons-DZLZc1c6.mjs.map +1 -0
- package/dist/SimpleLayout-BCsUQENG.mjs.map +1 -0
- package/dist/SimpleLayout-BGKNHHjx.mjs.map +1 -0
- package/dist/SimpleLayout-BHIdltFB.mjs.map +1 -0
- package/dist/SimpleLayout-BKkwQmN6.mjs.map +1 -0
- package/dist/SimpleLayout-BORx9hRX.mjs.map +1 -0
- package/dist/{SimpleLayout-Bk74CAAr.mjs → SimpleLayout-BTJyAJO6.mjs} +3 -3
- package/dist/SimpleLayout-BTJyAJO6.mjs.map +1 -0
- package/dist/SimpleLayout-BvOAauzs.mjs.map +1 -0
- package/dist/SimpleLayout-C3xekYgM.mjs.map +1 -0
- package/dist/SimpleLayout-C4xNk0R4.mjs.map +1 -0
- package/dist/SimpleLayout-CDcsE-Be.mjs.map +1 -0
- package/dist/SimpleLayout-D3M_c1Eu.mjs.map +1 -0
- package/dist/SimpleLayout-DJgC3LcZ.mjs.map +1 -0
- package/dist/SimpleLayout-DkvEZxow.mjs.map +1 -0
- package/dist/SimpleLayout-gtbBGlVV.mjs.map +1 -0
- package/dist/SmartLinkPage-BF8hfaWZ.mjs.map +1 -0
- package/dist/{SmartLinkPage-DbuQT8GM.mjs → SmartLinkPage-DQljzYa-.mjs} +5 -5
- package/dist/SmartLinkPage-DQljzYa-.mjs.map +1 -0
- package/dist/SmartLinkPage-DmlqwhYP.mjs.map +1 -0
- package/dist/SubscribeButtons-DO4MRuDr.mjs.map +1 -0
- package/dist/{SubscribeButtons-rnonTVzT.mjs → SubscribeButtons-lAAMYQCm.mjs} +3 -3
- package/dist/SubscribeButtons-lAAMYQCm.mjs.map +1 -0
- package/dist/{SwiperList-C1v0T1wx.mjs → SwiperList-C51H-enh.mjs} +2 -2
- package/dist/SwiperList-C51H-enh.mjs.map +1 -0
- package/dist/SwiperList-Dsq1MFX6.mjs.map +1 -0
- package/dist/TagList-B5C9zojs.mjs.map +1 -0
- package/dist/{TagList-VeuYS_zJ.mjs → TagList-D3Bn2fIn.mjs} +2 -2
- package/dist/TagList-D3Bn2fIn.mjs.map +1 -0
- package/dist/TagPage-B71pZpRY.mjs.map +1 -0
- package/dist/{TagPage-Bd81QJHn.mjs → TagPage-Brw9iL1F.mjs} +4 -4
- package/dist/TagPage-Brw9iL1F.mjs.map +1 -0
- package/dist/TagPage-CWRyUZkD.mjs.map +1 -0
- package/dist/TagPage-DFo25ZeP.mjs.map +1 -0
- package/dist/TagPage-sI917OpV.mjs.map +1 -0
- package/dist/TopBar-CaCA8kOs.mjs.map +1 -0
- package/dist/{TopBar-CZVp2T7C.mjs → TopBar-DIdhyJi_.mjs} +7 -7
- package/dist/TopBar-DIdhyJi_.mjs.map +1 -0
- package/dist/{UserButtonContent-DmNyGmWr.mjs → UserButtonContent-D13cVA34.mjs} +7 -7
- package/dist/UserButtonContent-D13cVA34.mjs.map +1 -0
- package/dist/UserButtonContent-DMKyXEmF.mjs.map +1 -0
- package/dist/{VideoModuleBox-yJZpgCw6.mjs → VideoModuleBox-CFQmvPrA.mjs} +2 -2
- package/dist/VideoModuleBox-CFQmvPrA.mjs.map +1 -0
- package/dist/VideoModuleBox-DsBLAMrh.mjs.map +1 -0
- package/dist/VideoPage-CfJeWV-R.mjs.map +1 -0
- package/dist/VideoPage-CnIZYz-k.mjs.map +1 -0
- package/dist/VideoPage-D6UNKt2D.mjs.map +1 -0
- package/dist/{VideoPage-y6G4Y2Zi.mjs → VideoPage-DU9dJviO.mjs} +10 -10
- package/dist/VideoPage-DU9dJviO.mjs.map +1 -0
- package/dist/VideoPage-OIb28KAS.mjs.map +1 -0
- package/dist/classicApi-C70YSK8J.mjs.map +1 -0
- package/dist/classicApi-DuzZv1Wk.mjs.map +1 -1
- package/dist/{classicApi-CkDHWZG1.mjs → classicApi-xjOqAovv.mjs} +11 -8
- package/dist/classicApi-xjOqAovv.mjs.map +1 -0
- package/dist/downloadHelper-C4q0i5xN.mjs.map +1 -0
- package/dist/{downloadHelper-DLdkblYN.mjs → downloadHelper-DY3fF3dA.mjs} +2 -2
- package/dist/downloadHelper-DY3fF3dA.mjs.map +1 -0
- package/dist/index.mjs +102 -97
- package/dist/index.mjs.map +1 -1
- package/dist/tests.mjs +2 -2
- package/dist/{useAdvancedParamInit-B7G2Mvjv.mjs → useAdvancedParamInit-CCprE3H2.mjs} +6 -6
- package/dist/useAdvancedParamInit-CCprE3H2.mjs.map +1 -0
- package/dist/useAdvancedParamInit-CT8CdPFW.mjs.map +1 -0
- package/dist/useDayjs-BPXVSBns.mjs.map +1 -0
- package/dist/{useDayjs-C3cnTiDW.mjs → useDayjs-DPVjvJPN.mjs} +2 -2
- package/dist/useDayjs-DPVjvJPN.mjs.map +1 -0
- package/dist/useErrorHandler-BxQT9ZGf.mjs.map +1 -0
- package/dist/{useErrorHandler-DtLjD9t_.mjs → useErrorHandler-D3XVxUh6.mjs} +2 -2
- package/dist/useErrorHandler-D3XVxUh6.mjs.map +1 -0
- package/dist/{useImageProxy-Bj0cOCct.mjs → useImageProxy-BdQJmj4a.mjs} +2 -2
- package/dist/useImageProxy-BdQJmj4a.mjs.map +1 -0
- package/dist/useImageProxy-DROuweGY.mjs.map +1 -0
- package/dist/{useOrgaComputed-BLSpEDfb.mjs → useOrgaComputed-B2Bq0VBT.mjs} +2 -2
- package/dist/useOrgaComputed-B2Bq0VBT.mjs.map +1 -0
- package/dist/useOrgaComputed-CGomgs0r.mjs.map +1 -0
- package/dist/{usePlayerLogicProgress-75G9QMg_.mjs → usePlayerLogicProgress-DcHbYGOR.mjs} +3 -3
- package/dist/usePlayerLogicProgress-DcHbYGOR.mjs.map +1 -0
- package/dist/usePlayerLogicProgress-Dchl5sUO.mjs.map +1 -0
- package/dist/usePlayerLogicProgress-lqnQ5qNd.mjs.map +1 -0
- package/dist/{usePodcastView-BftS642h.mjs → usePodcastView-BDZ6CGQj.mjs} +4 -4
- package/dist/usePodcastView-BDZ6CGQj.mjs.map +1 -0
- package/dist/usePodcastView-CI5le-WW.mjs.map +1 -0
- package/dist/usePresentationItem-Cw9fBYUi.mjs.map +1 -0
- package/dist/{usePresentationItem-CNXIk-Sf.mjs → usePresentationItem-UwAuhVqo.mjs} +4 -4
- package/dist/usePresentationItem-UwAuhVqo.mjs.map +1 -0
- package/dist/useRights-D8CLzCMH.mjs.map +1 -0
- package/dist/{useRights-Co0TgD8y.mjs → useRights-DSZ-5pFg.mjs} +2 -2
- package/dist/useRights-DSZ-5pFg.mjs.map +1 -0
- package/dist/{useRubriquesFilterComputed-VsdTUNL6.mjs → useRubriquesFilterComputed-BkDeXTf-.mjs} +2 -2
- package/dist/useRubriquesFilterComputed-BkDeXTf-.mjs.map +1 -0
- package/dist/useRubriquesFilterComputed-Bkre15fg.mjs.map +1 -0
- package/dist/useRubriquesFilterParam-BmE8v1fS.mjs.map +1 -0
- package/dist/{useRubriquesFilterParam--x07HEw1.mjs → useRubriquesFilterParam-Delgf48y.mjs} +2 -2
- package/dist/useRubriquesFilterParam-Delgf48y.mjs.map +1 -0
- package/dist/{useSharePlatforms-CSSRTkTG.mjs → useSharePlatforms-07n3JYu2.mjs} +3 -3
- package/dist/useSharePlatforms-07n3JYu2.mjs.map +1 -0
- package/dist/useSharePlatforms-B_3OwBFv.mjs.map +1 -0
- package/dist/{useSimplePageParam-ClaGQ9yj.mjs → useSimplePageParam-CsY_ie3c.mjs} +2 -2
- package/dist/useSimplePageParam-CsY_ie3c.mjs.map +1 -0
- package/dist/useSimplePageParam-ki2VyM-X.mjs.map +1 -0
- package/dist/{useTranslation-BNshNMQT.mjs → useTranslation-ChEasnl9.mjs} +25 -8
- package/dist/useTranslation-ChEasnl9.mjs.map +1 -0
- package/dist/useTranslation-D0R0BSx9.mjs.map +1 -0
- package/dist/usefetchRadioData-BPmkztGC.mjs.map +1 -0
- package/dist/{usefetchRadioData-C2cwiaCP.mjs → usefetchRadioData-CkrAfN1c.mjs} +2 -2
- package/dist/usefetchRadioData-CkrAfN1c.mjs.map +1 -0
- package/package.json +1 -1
- package/src/components/composable/player/usePlayerLive.ts +8 -7
- package/src/stores/AuthStore.ts +2 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"RadioPage-DkBL81mI.mjs","names":[],"sources":["../src/components/pages/RadioPage.vue","../src/components/pages/RadioPage.vue"],"sourcesContent":["<template>\n <section class=\"page-box\">\n <template v-if=\"loaded && !error && radio\">\n <PodcastmakerHeader\n v-if=\"isPodcastmaker\"\n :page-title=\"t('Radio')\"\n :img-url=\"radio.imageUrl\"\n />\n <div\n v-if=\"radio\"\n class=\"d-flex flex-column page-element\"\n :class=\"isPodcastmaker ? 'page-element-podcastmaker' : ''\"\n >\n <section class=\"module-box\">\n <div class=\"mb-5 description-text\">\n <RadioImage :radio=\"radio\" />\n <div class=\"d-flex align-items-center justify-content-between\">\n <h2>{{ radio.name }}</h2>\n <ShareAnonymous class=\"d-flex justify-content-end flex-grow-1\" :organisation-id=\"radio.organisationId\"/>\n </div>\n <div v-if=\"radio.description\">\n {{ radio.description }}\n </div>\n </div>\n <RadioCurrently :radio=\"radio\" />\n <slot v-if=\"editRight\" name=\"edit-box-radio\" :radio=\"radio\" />\n </section>\n <ShareSocialsButtons :organisation-id=\"radio.organisationId\" />\n <RadioPlanning :radio=\"radio\" />\n <SharePlayerRadio\n v-if=\"editRight\"\n :canal=\"radio\"\n :organisation-id=\"authOrgaId\"\n />\n </div>\n </template>\n <ClassicLoading\n :loading-text=\"!loaded ? t('Loading content ...') : undefined\"\n :error-text=\"error ? t(`Emission doesn't exist`) : undefined\"\n />\n </section>\n</template>\n\n<script setup lang=\"ts\">\nimport { useGeneralStore } from \"../../stores/GeneralStore\";\nimport classicApi from \"../../api/classicApi\";\nimport {useSeoTitleUrl} from \"../composable/route/useSeoTitleUrl\";\nimport {useOrgaComputed} from \"../composable/useOrgaComputed\";\nimport {useErrorHandler} from \"../composable/useErrorHandler\";\nimport ClassicLoading from \"../form/ClassicLoading.vue\";\nimport { defineAsyncComponent, ref, Ref, computed, watch, onBeforeUnmount } from \"vue\";\nimport { AxiosError } from \"axios\";\nimport { Canal } from \"@/stores/class/radio/canal\";\nimport { useAuthStore } from \"../../stores/AuthStore\";\nimport { useI18n } from \"vue-i18n\";\nconst SharePlayerRadio = defineAsyncComponent(\n () => import(\"../display/sharing/SharePlayerRadio.vue\"),\n);\nconst ShareSocialsButtons = defineAsyncComponent(\n () => import(\"../display/sharing/ShareSocialsButtons.vue\"),\n);\nconst RadioCurrently = defineAsyncComponent(\n () => import(\"../display/live/RadioCurrently.vue\"),\n);\nconst RadioImage = defineAsyncComponent(\n () => import(\"../display/live/RadioImage.vue\"),\n);\nconst RadioPlanning = defineAsyncComponent(\n () => import(\"../display/live/RadioPlanning.vue\"),\n);\nconst PodcastmakerHeader = defineAsyncComponent(\n () => import(\"../display/podcastmaker/PodcastmakerHeader.vue\"),\n);\nconst ShareAnonymous = defineAsyncComponent(() => import(\"../display/sharing/ShareAnonymous.vue\"));\n \n//Props \nconst props = defineProps({\n canalId: { default: undefined, type: Number },\n});\n\n\n//Data \nconst loaded = ref(false);\nconst error = ref(false);\nconst radio: Ref<Canal|undefined> = ref(undefined);\n\n\n//Composables\nconst { t } = useI18n();\nconst { isPodcastmaker, isEditRights, authOrgaId } = useOrgaComputed();\nconst { updatePathParams } = useSeoTitleUrl();\nconst {handle403} = useErrorHandler();\nconst authStore = useAuthStore();\nconst generalStore = useGeneralStore();\n\n\n//Computed\nconst editRight = computed(() =>isEditRights(radio.value?.organisationId, authStore.isRoleRadio));\n\n\n//Watch\nwatch(()=>props.canalId, () => {getRadioDetails()}, {immediate: true});\n\n\nonBeforeUnmount(() => {\n generalStore.contentToDisplayUpdate(null);\n});\n\n\n//Methods\nasync function getRadioDetails(): Promise<void> {\n loaded.value = false;\n loaded.value = false;\n try {\n radio.value = await classicApi.fetchData<Canal>({\n api: 14,\n path: \"canal/\" + props.canalId,\n });\n generalStore.contentToDisplayUpdate(radio.value);\n updatePathParams(radio.value.name);\n } catch (error) {\n handle403(error as AxiosError);\n loaded.value = true;\n }\n loaded.value = true;\n}\n</script>\n","<template>\n <section class=\"page-box\">\n <template v-if=\"loaded && !error && radio\">\n <PodcastmakerHeader\n v-if=\"isPodcastmaker\"\n :page-title=\"t('Radio')\"\n :img-url=\"radio.imageUrl\"\n />\n <div\n v-if=\"radio\"\n class=\"d-flex flex-column page-element\"\n :class=\"isPodcastmaker ? 'page-element-podcastmaker' : ''\"\n >\n <section class=\"module-box\">\n <div class=\"mb-5 description-text\">\n <RadioImage :radio=\"radio\" />\n <div class=\"d-flex align-items-center justify-content-between\">\n <h2>{{ radio.name }}</h2>\n <ShareAnonymous class=\"d-flex justify-content-end flex-grow-1\" :organisation-id=\"radio.organisationId\"/>\n </div>\n <div v-if=\"radio.description\">\n {{ radio.description }}\n </div>\n </div>\n <RadioCurrently :radio=\"radio\" />\n <slot v-if=\"editRight\" name=\"edit-box-radio\" :radio=\"radio\" />\n </section>\n <ShareSocialsButtons :organisation-id=\"radio.organisationId\" />\n <RadioPlanning :radio=\"radio\" />\n <SharePlayerRadio\n v-if=\"editRight\"\n :canal=\"radio\"\n :organisation-id=\"authOrgaId\"\n />\n </div>\n </template>\n <ClassicLoading\n :loading-text=\"!loaded ? t('Loading content ...') : undefined\"\n :error-text=\"error ? t(`Emission doesn't exist`) : undefined\"\n />\n </section>\n</template>\n\n<script setup lang=\"ts\">\nimport { useGeneralStore } from \"../../stores/GeneralStore\";\nimport classicApi from \"../../api/classicApi\";\nimport {useSeoTitleUrl} from \"../composable/route/useSeoTitleUrl\";\nimport {useOrgaComputed} from \"../composable/useOrgaComputed\";\nimport {useErrorHandler} from \"../composable/useErrorHandler\";\nimport ClassicLoading from \"../form/ClassicLoading.vue\";\nimport { defineAsyncComponent, ref, Ref, computed, watch, onBeforeUnmount } from \"vue\";\nimport { AxiosError } from \"axios\";\nimport { Canal } from \"@/stores/class/radio/canal\";\nimport { useAuthStore } from \"../../stores/AuthStore\";\nimport { useI18n } from \"vue-i18n\";\nconst SharePlayerRadio = defineAsyncComponent(\n () => import(\"../display/sharing/SharePlayerRadio.vue\"),\n);\nconst ShareSocialsButtons = defineAsyncComponent(\n () => import(\"../display/sharing/ShareSocialsButtons.vue\"),\n);\nconst RadioCurrently = defineAsyncComponent(\n () => import(\"../display/live/RadioCurrently.vue\"),\n);\nconst RadioImage = defineAsyncComponent(\n () => import(\"../display/live/RadioImage.vue\"),\n);\nconst RadioPlanning = defineAsyncComponent(\n () => import(\"../display/live/RadioPlanning.vue\"),\n);\nconst PodcastmakerHeader = defineAsyncComponent(\n () => import(\"../display/podcastmaker/PodcastmakerHeader.vue\"),\n);\nconst ShareAnonymous = defineAsyncComponent(() => import(\"../display/sharing/ShareAnonymous.vue\"));\n \n//Props \nconst props = defineProps({\n canalId: { default: undefined, type: Number },\n});\n\n\n//Data \nconst loaded = ref(false);\nconst error = ref(false);\nconst radio: Ref<Canal|undefined> = ref(undefined);\n\n\n//Composables\nconst { t } = useI18n();\nconst { isPodcastmaker, isEditRights, authOrgaId } = useOrgaComputed();\nconst { updatePathParams } = useSeoTitleUrl();\nconst {handle403} = useErrorHandler();\nconst authStore = useAuthStore();\nconst generalStore = useGeneralStore();\n\n\n//Computed\nconst editRight = computed(() =>isEditRights(radio.value?.organisationId, authStore.isRoleRadio));\n\n\n//Watch\nwatch(()=>props.canalId, () => {getRadioDetails()}, {immediate: true});\n\n\nonBeforeUnmount(() => {\n generalStore.contentToDisplayUpdate(null);\n});\n\n\n//Methods\nasync function getRadioDetails(): Promise<void> {\n loaded.value = false;\n loaded.value = false;\n try {\n radio.value = await classicApi.fetchData<Canal>({\n api: 14,\n path: \"canal/\" + props.canalId,\n });\n generalStore.contentToDisplayUpdate(radio.value);\n updatePathParams(radio.value.name);\n } catch (error) {\n handle403(error as AxiosError);\n loaded.value = true;\n }\n loaded.value = true;\n}\n</script>\n"],"mappings":"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"}
|
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
import { t as _plugin_vue_export_helper_default } from "./_plugin-vue_export-helper-BOaGB7Aw.mjs";
|
|
2
2
|
import { t as ClassicLoading_default } from "./ClassicLoading-Crlw7cAx.mjs";
|
|
3
|
-
import { i as useAuthStore, t as classicApi_default } from "./classicApi-
|
|
3
|
+
import { i as useAuthStore, t as classicApi_default } from "./classicApi-xjOqAovv.mjs";
|
|
4
4
|
import { t as useGeneralStore } from "./GeneralStore-CUlq_NjO.mjs";
|
|
5
|
-
import { t as useErrorHandler } from "./useErrorHandler-
|
|
5
|
+
import { t as useErrorHandler } from "./useErrorHandler-D3XVxUh6.mjs";
|
|
6
6
|
import { t as useSeoTitleUrl } from "./useSeoTitleUrl-CrM1YzAc.mjs";
|
|
7
|
-
import { t as useOrgaComputed } from "./useOrgaComputed-
|
|
7
|
+
import { t as useOrgaComputed } from "./useOrgaComputed-B2Bq0VBT.mjs";
|
|
8
8
|
import { Fragment, computed, createBlock, createCommentVNode, createElementBlock, createElementVNode, createVNode, defineAsyncComponent, defineComponent, normalizeClass, onBeforeUnmount, openBlock, ref, renderSlot, toDisplayString, watch } from "vue";
|
|
9
9
|
import { useI18n } from "vue-i18n";
|
|
10
10
|
//#region src/components/pages/RadioPage.vue?vue&type=script&setup=true&lang.ts
|
|
@@ -16,13 +16,13 @@ var RadioPage_vue_vue_type_script_setup_true_lang_default = /*@__PURE__*/ define
|
|
|
16
16
|
} },
|
|
17
17
|
setup(__props, { expose: __expose }) {
|
|
18
18
|
__expose();
|
|
19
|
-
const SharePlayerRadio = defineAsyncComponent(() => import("./SharePlayerRadio-
|
|
20
|
-
const ShareSocialsButtons = defineAsyncComponent(() => import("./ShareSocialsButtons-
|
|
21
|
-
const RadioCurrently = defineAsyncComponent(() => import("./RadioCurrently-
|
|
22
|
-
const RadioImage = defineAsyncComponent(() => import("./RadioImage-
|
|
23
|
-
const RadioPlanning = defineAsyncComponent(() => import("./RadioPlanning-
|
|
24
|
-
const PodcastmakerHeader = defineAsyncComponent(() => import("./PodcastmakerHeader-
|
|
25
|
-
const ShareAnonymous = defineAsyncComponent(() => import("./ShareAnonymous-
|
|
19
|
+
const SharePlayerRadio = defineAsyncComponent(() => import("./SharePlayerRadio-CI6glNuI.mjs"));
|
|
20
|
+
const ShareSocialsButtons = defineAsyncComponent(() => import("./ShareSocialsButtons-BYsXc2Jr.mjs"));
|
|
21
|
+
const RadioCurrently = defineAsyncComponent(() => import("./RadioCurrently-DWySwV64.mjs").then((n) => n.n));
|
|
22
|
+
const RadioImage = defineAsyncComponent(() => import("./RadioImage-BIe2KpG_.mjs").then((n) => n.n));
|
|
23
|
+
const RadioPlanning = defineAsyncComponent(() => import("./RadioPlanning-2aWTnbZb.mjs"));
|
|
24
|
+
const PodcastmakerHeader = defineAsyncComponent(() => import("./PodcastmakerHeader-Df0g2dCr.mjs"));
|
|
25
|
+
const ShareAnonymous = defineAsyncComponent(() => import("./ShareAnonymous-4UxjKrIe.mjs"));
|
|
26
26
|
const props = __props;
|
|
27
27
|
const loaded = ref(false);
|
|
28
28
|
const error = ref(false);
|
|
@@ -134,4 +134,4 @@ var RadioPage_default = /*#__PURE__*/ _plugin_vue_export_helper_default(RadioPag
|
|
|
134
134
|
//#endregion
|
|
135
135
|
export { RadioPage_default as default };
|
|
136
136
|
|
|
137
|
-
//# sourceMappingURL=RadioPage-
|
|
137
|
+
//# sourceMappingURL=RadioPage-Jg2kmtna.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"RadioPage-Jg2kmtna.mjs","names":[],"sources":["../src/components/pages/RadioPage.vue","../src/components/pages/RadioPage.vue"],"sourcesContent":["<template>\n <section class=\"page-box\">\n <template v-if=\"loaded && !error && radio\">\n <PodcastmakerHeader\n v-if=\"isPodcastmaker\"\n :page-title=\"t('Radio')\"\n :img-url=\"radio.imageUrl\"\n />\n <div\n v-if=\"radio\"\n class=\"d-flex flex-column page-element\"\n :class=\"isPodcastmaker ? 'page-element-podcastmaker' : ''\"\n >\n <section class=\"module-box\">\n <div class=\"mb-5 description-text\">\n <RadioImage :radio=\"radio\" />\n <div class=\"d-flex align-items-center justify-content-between\">\n <h2>{{ radio.name }}</h2>\n <ShareAnonymous class=\"d-flex justify-content-end flex-grow-1\" :organisation-id=\"radio.organisationId\"/>\n </div>\n <div v-if=\"radio.description\">\n {{ radio.description }}\n </div>\n </div>\n <RadioCurrently :radio=\"radio\" />\n <slot v-if=\"editRight\" name=\"edit-box-radio\" :radio=\"radio\" />\n </section>\n <ShareSocialsButtons :organisation-id=\"radio.organisationId\" />\n <RadioPlanning :radio=\"radio\" />\n <SharePlayerRadio\n v-if=\"editRight\"\n :canal=\"radio\"\n :organisation-id=\"authOrgaId\"\n />\n </div>\n </template>\n <ClassicLoading\n :loading-text=\"!loaded ? t('Loading content ...') : undefined\"\n :error-text=\"error ? t(`Emission doesn't exist`) : undefined\"\n />\n </section>\n</template>\n\n<script setup lang=\"ts\">\nimport { useGeneralStore } from \"../../stores/GeneralStore\";\nimport classicApi from \"../../api/classicApi\";\nimport {useSeoTitleUrl} from \"../composable/route/useSeoTitleUrl\";\nimport {useOrgaComputed} from \"../composable/useOrgaComputed\";\nimport {useErrorHandler} from \"../composable/useErrorHandler\";\nimport ClassicLoading from \"../form/ClassicLoading.vue\";\nimport { defineAsyncComponent, ref, Ref, computed, watch, onBeforeUnmount } from \"vue\";\nimport { AxiosError } from \"axios\";\nimport { Canal } from \"@/stores/class/radio/canal\";\nimport { useAuthStore } from \"../../stores/AuthStore\";\nimport { useI18n } from \"vue-i18n\";\nconst SharePlayerRadio = defineAsyncComponent(\n () => import(\"../display/sharing/SharePlayerRadio.vue\"),\n);\nconst ShareSocialsButtons = defineAsyncComponent(\n () => import(\"../display/sharing/ShareSocialsButtons.vue\"),\n);\nconst RadioCurrently = defineAsyncComponent(\n () => import(\"../display/live/RadioCurrently.vue\"),\n);\nconst RadioImage = defineAsyncComponent(\n () => import(\"../display/live/RadioImage.vue\"),\n);\nconst RadioPlanning = defineAsyncComponent(\n () => import(\"../display/live/RadioPlanning.vue\"),\n);\nconst PodcastmakerHeader = defineAsyncComponent(\n () => import(\"../display/podcastmaker/PodcastmakerHeader.vue\"),\n);\nconst ShareAnonymous = defineAsyncComponent(() => import(\"../display/sharing/ShareAnonymous.vue\"));\n \n//Props \nconst props = defineProps({\n canalId: { default: undefined, type: Number },\n});\n\n\n//Data \nconst loaded = ref(false);\nconst error = ref(false);\nconst radio: Ref<Canal|undefined> = ref(undefined);\n\n\n//Composables\nconst { t } = useI18n();\nconst { isPodcastmaker, isEditRights, authOrgaId } = useOrgaComputed();\nconst { updatePathParams } = useSeoTitleUrl();\nconst {handle403} = useErrorHandler();\nconst authStore = useAuthStore();\nconst generalStore = useGeneralStore();\n\n\n//Computed\nconst editRight = computed(() =>isEditRights(radio.value?.organisationId, authStore.isRoleRadio));\n\n\n//Watch\nwatch(()=>props.canalId, () => {getRadioDetails()}, {immediate: true});\n\n\nonBeforeUnmount(() => {\n generalStore.contentToDisplayUpdate(null);\n});\n\n\n//Methods\nasync function getRadioDetails(): Promise<void> {\n loaded.value = false;\n loaded.value = false;\n try {\n radio.value = await classicApi.fetchData<Canal>({\n api: 14,\n path: \"canal/\" + props.canalId,\n });\n generalStore.contentToDisplayUpdate(radio.value);\n updatePathParams(radio.value.name);\n } catch (error) {\n handle403(error as AxiosError);\n loaded.value = true;\n }\n loaded.value = true;\n}\n</script>\n","<template>\n <section class=\"page-box\">\n <template v-if=\"loaded && !error && radio\">\n <PodcastmakerHeader\n v-if=\"isPodcastmaker\"\n :page-title=\"t('Radio')\"\n :img-url=\"radio.imageUrl\"\n />\n <div\n v-if=\"radio\"\n class=\"d-flex flex-column page-element\"\n :class=\"isPodcastmaker ? 'page-element-podcastmaker' : ''\"\n >\n <section class=\"module-box\">\n <div class=\"mb-5 description-text\">\n <RadioImage :radio=\"radio\" />\n <div class=\"d-flex align-items-center justify-content-between\">\n <h2>{{ radio.name }}</h2>\n <ShareAnonymous class=\"d-flex justify-content-end flex-grow-1\" :organisation-id=\"radio.organisationId\"/>\n </div>\n <div v-if=\"radio.description\">\n {{ radio.description }}\n </div>\n </div>\n <RadioCurrently :radio=\"radio\" />\n <slot v-if=\"editRight\" name=\"edit-box-radio\" :radio=\"radio\" />\n </section>\n <ShareSocialsButtons :organisation-id=\"radio.organisationId\" />\n <RadioPlanning :radio=\"radio\" />\n <SharePlayerRadio\n v-if=\"editRight\"\n :canal=\"radio\"\n :organisation-id=\"authOrgaId\"\n />\n </div>\n </template>\n <ClassicLoading\n :loading-text=\"!loaded ? t('Loading content ...') : undefined\"\n :error-text=\"error ? t(`Emission doesn't exist`) : undefined\"\n />\n </section>\n</template>\n\n<script setup lang=\"ts\">\nimport { useGeneralStore } from \"../../stores/GeneralStore\";\nimport classicApi from \"../../api/classicApi\";\nimport {useSeoTitleUrl} from \"../composable/route/useSeoTitleUrl\";\nimport {useOrgaComputed} from \"../composable/useOrgaComputed\";\nimport {useErrorHandler} from \"../composable/useErrorHandler\";\nimport ClassicLoading from \"../form/ClassicLoading.vue\";\nimport { defineAsyncComponent, ref, Ref, computed, watch, onBeforeUnmount } from \"vue\";\nimport { AxiosError } from \"axios\";\nimport { Canal } from \"@/stores/class/radio/canal\";\nimport { useAuthStore } from \"../../stores/AuthStore\";\nimport { useI18n } from \"vue-i18n\";\nconst SharePlayerRadio = defineAsyncComponent(\n () => import(\"../display/sharing/SharePlayerRadio.vue\"),\n);\nconst ShareSocialsButtons = defineAsyncComponent(\n () => import(\"../display/sharing/ShareSocialsButtons.vue\"),\n);\nconst RadioCurrently = defineAsyncComponent(\n () => import(\"../display/live/RadioCurrently.vue\"),\n);\nconst RadioImage = defineAsyncComponent(\n () => import(\"../display/live/RadioImage.vue\"),\n);\nconst RadioPlanning = defineAsyncComponent(\n () => import(\"../display/live/RadioPlanning.vue\"),\n);\nconst PodcastmakerHeader = defineAsyncComponent(\n () => import(\"../display/podcastmaker/PodcastmakerHeader.vue\"),\n);\nconst ShareAnonymous = defineAsyncComponent(() => import(\"../display/sharing/ShareAnonymous.vue\"));\n \n//Props \nconst props = defineProps({\n canalId: { default: undefined, type: Number },\n});\n\n\n//Data \nconst loaded = ref(false);\nconst error = ref(false);\nconst radio: Ref<Canal|undefined> = ref(undefined);\n\n\n//Composables\nconst { t } = useI18n();\nconst { isPodcastmaker, isEditRights, authOrgaId } = useOrgaComputed();\nconst { updatePathParams } = useSeoTitleUrl();\nconst {handle403} = useErrorHandler();\nconst authStore = useAuthStore();\nconst generalStore = useGeneralStore();\n\n\n//Computed\nconst editRight = computed(() =>isEditRights(radio.value?.organisationId, authStore.isRoleRadio));\n\n\n//Watch\nwatch(()=>props.canalId, () => {getRadioDetails()}, {immediate: true});\n\n\nonBeforeUnmount(() => {\n generalStore.contentToDisplayUpdate(null);\n});\n\n\n//Methods\nasync function getRadioDetails(): Promise<void> {\n loaded.value = false;\n loaded.value = false;\n try {\n radio.value = await classicApi.fetchData<Canal>({\n api: 14,\n path: \"canal/\" + props.canalId,\n });\n generalStore.contentToDisplayUpdate(radio.value);\n updatePathParams(radio.value.name);\n } catch (error) {\n handle403(error as AxiosError);\n loaded.value = true;\n }\n loaded.value = true;\n}\n</script>\n"],"mappings":"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"}
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import { t as _plugin_vue_export_helper_default } from "./_plugin-vue_export-helper-BOaGB7Aw.mjs";
|
|
2
2
|
import { t as ClassicLoading_default } from "./ClassicLoading-Crlw7cAx.mjs";
|
|
3
|
-
import { t as classicApi_default } from "./classicApi-
|
|
3
|
+
import { t as classicApi_default } from "./classicApi-xjOqAovv.mjs";
|
|
4
4
|
import { t as useResizePhone } from "./useResizePhone-CpfFUmfV.mjs";
|
|
5
|
-
import { t as useImageProxy } from "./useImageProxy-
|
|
5
|
+
import { t as useImageProxy } from "./useImageProxy-BdQJmj4a.mjs";
|
|
6
6
|
import { Fragment, computed, createCommentVNode, createElementBlock, createElementVNode, createTextVNode, createVNode, defineComponent, nextTick, normalizeClass, onMounted, openBlock, ref, renderList, resolveComponent, resolveDirective, toDisplayString, withCtx, withDirectives } from "vue";
|
|
7
7
|
import { useI18n } from "vue-i18n";
|
|
8
8
|
import dayjs from "dayjs";
|
|
@@ -287,4 +287,4 @@ var RadioPlanning_default = /*#__PURE__*/ _plugin_vue_export_helper_default(Radi
|
|
|
287
287
|
//#endregion
|
|
288
288
|
export { RadioPlanning_default as default };
|
|
289
289
|
|
|
290
|
-
//# sourceMappingURL=RadioPlanning-
|
|
290
|
+
//# sourceMappingURL=RadioPlanning-2aWTnbZb.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"RadioPlanning-2aWTnbZb.mjs","names":[],"sources":["../src/components/display/live/RadioPlanning.vue","../src/components/display/live/RadioPlanning.vue"],"sourcesContent":["<template>\n <section class=\"module-box\">\n <h2 class=\"mb-3\">\n {{ t(\"Program\") }}\n </h2>\n <div class=\"py-3\">\n <div class=\"d-flex align-items-center w-100 mb-3\">\n <button\n v-for=\"day in displayArrayDays\"\n :key=\"day.date\"\n class=\"button-date border\"\n :class=\"day.date == daySelected ? 'bg-primary' : ''\"\n @click=\"changeDate(day.date)\"\n >\n <span class=\"text-capitalize\" >{{ day.dayOfWeek }}</span>\n <time :datetime=\"day.iso\">{{ day.title }}</time>\n </button>\n </div>\n <button v-if=\"isPhone\" class=\"btn btn-primary mb-3 mx-0\" @click=\"showAllDays = !showAllDays\">\n <template v-if=\"!showAllDays\">{{ t('Show more days') }}</template>\n <template v-else>{{ t('Show fewer days') }}</template>\n </button>\n <div\n class=\"d-flex align-items-center justify-content-center border-bottom\"\n >\n <button\n v-for=\"period in periodOfDay\"\n :key=\"period.id\"\n class=\"btn btn-underline mb-2\"\n @click=\"scrollToElement('planning-period-' + period.id)\"\n >\n {{ period.title }}\n </button>\n <button class=\"btn btn-underline mb-2\" @click=\"changePeriodNow\">\n {{ t(\"Now\") }}\n </button>\n </div>\n\n <div class=\"d-flex flex-column p-3\">\n <ClassicLoading\n :loading-text=\"loading ? t('Loading content ...') : undefined\"\n :error-text=\"error ? t(`Error`) : undefined\"\n />\n <template v-if=\"!loading && !error\">\n <div v-if=\"!planningLength[daySelected]\" class=\"text-center\">\n {{ t(\"No programming\") }}\n </div>\n <div v-for=\"period in periodOfDay\" v-else :key=\"period.id\">\n <template v-if=\"planning[daySelected][period.id].length\">\n <div\n :id=\"'planning-period-' + period.id\"\n class=\"fw-bold my-3 pb-2 border-bottom border-primary text-primary\"\n >\n {{ period.title }}\n </div>\n <div\n v-for=\"planningItem in planning[daySelected][period.id]\"\n :id=\"\n 'planning-occurrence-' +\n planningItem.occurrenceId +\n '' +\n planningItem.liveId\n \"\n :key=\"planningItem.occurrenceId + '' + planningItem.liveId\"\n class=\"d-flex align-items-center mb-3\"\n >\n <time :datetime=\"planningItem.startDate\" class=\"program-item-date fw-bold flex-shrink-0\">\n {{ dateDisplay(planningItem.startDate) }}\n </time>\n <router-link\n class=\"d-flex align-items-center flex-nowrap text-dark\"\n :to=\"{\n name: 'podcast',\n params: { podcastId: planningItem.podcastId },\n }\"\n :title=\"t('Episode name page', { name: planningItem.title })\"\n >\n <img\n v-lazy=\"\n useProxyImageUrl(planningItem.podcastData.imageUrl, '150')\n \"\n width=\"150\"\n height=\"150\"\n class=\"m-2 program-item-img\"\n aria-hidden=\"true\"\n alt=\"\"\n \n :title=\"\n t('Episode name image', {\n name: planningItem.podcastData.title,\n })\n \"\n />\n <div class=\"d-flex flex-column\">\n <div class=\"d-flex align-items-center mb-2\">\n <div\n v-if=\"planningItem.liveId\"\n class=\"bg-complementary text-white p-1 me-1\"\n >\n {{ t(\"Live\") }}\n </div>\n <div class=\"flex-grow-1 fw-bold\">\n {{ planningItem.podcastData.title }}\n </div>\n </div>\n </div>\n </router-link>\n </div>\n </template>\n </div>\n </template>\n </div>\n </div>\n </section>\n</template>\n\n<script setup lang=\"ts\">\nimport dayjs from \"dayjs\";\nimport utc from \"dayjs/plugin/utc\";\ndayjs.extend(utc);\nimport classicApi from \"../../../api/classicApi\";\nimport {useImageProxy} from \"../../composable/useImageProxy\";\nimport {useResizePhone} from \"../../composable/useResizePhone\";\nimport ClassicLoading from \"../../form/ClassicLoading.vue\";\nimport { computed, nextTick, onMounted, ref, Ref } from \"vue\";\nimport { Canal } from \"@/stores/class/radio/canal\";\nimport { PlanningOccurrence } from \"@/stores/class/radio/recurrence\";\nimport { PlanningLive } from \"@/stores/class/radio/live\";\nimport { useI18n } from \"vue-i18n\";\n\n//Props \nconst props = defineProps({\n radio: { default: undefined, type: Object as () => Canal },\n})\n\n//Data \nconst planning: Ref<{\n [key: number]: {\n morning: Array<PlanningOccurrence | PlanningLive>;\n afternoon: Array<PlanningOccurrence | PlanningLive>;\n evening: Array<PlanningOccurrence | PlanningLive>;\n };\n}> = ref({});\nconst planningLength: Ref<{ [key: number]: number }> = ref({});\nconst daySelected = ref(dayjs().valueOf());\nconst arrayDays: Ref<Array<{\n title: string;\n date: number;\n dayOfWeek: string;\n iso: string;\n}>> = ref([]);\nconst loading = ref(true);\nconst error = ref(false);\nconst showAllDays = ref(false);\n\n\n//Composables\nconst { t } = useI18n();\nconst { isPhone } = useResizePhone();\nconst { useProxyImageUrl } = useImageProxy();\n\n//Computed\nconst startOfDay = computed(() => dayjs(daySelected.value).startOf(\"date\").toISOString());\nconst endOfDay = computed(() => dayjs(daySelected.value).endOf(\"date\").toISOString());\nconst periodOfDay = computed(() => {\n return [\n {\n id: \"morning\",\n title: t(\"Morning\"),\n end: dayjs(daySelected.value)\n .hour(14)\n .minute(0)\n .second(0)\n .millisecond(0),\n },\n {\n id: \"afternoon\",\n title: t(\"Afternoon\"),\n end: dayjs(daySelected.value)\n .hour(19)\n .minute(0)\n .second(0)\n .millisecond(0),\n },\n {\n id: \"evening\",\n title: t(\"Evening\"),\n end: dayjs(daySelected.value).endOf(\"date\"),\n },\n ];\n});\nconst displayArrayDays = computed(() => {\n if(isPhone && !showAllDays.value){\n return arrayDays.value.slice(6, 9);\n }\n return arrayDays.value;\n});\n\n\nonMounted(()=>{\n createArrayDays();\n fetchOccurrences();\n})\n\n\n//Mounted\nfunction scrollToElement(id: string) {\n const element = document.getElementById(id);\n if (element) {\n const yOffset = -110;\n const y =\n element.getBoundingClientRect().top + window.scrollY + yOffset;\n window.scrollTo({ top: y, behavior: \"smooth\" });\n }\n}\nfunction changePeriodNow() {\n const now = dayjs();\n if (!dayjs(daySelected.value).isSame(now, \"day\")) {\n changeDate(arrayDays.value[7].date);\n }\n nextTick(() => {\n if (!planningLength.value[daySelected.value]) {\n return;\n }\n const arrayOccurrences = Object.values(\n planning.value[daySelected.value],\n ).reduce((r, c) => r.concat(c), []);\n let selectedOccurrence = arrayOccurrences[0];\n for (const occ of arrayOccurrences) {\n selectedOccurrence = occ;\n if (dayjs(occ.endDate).isAfter(now)) {\n break;\n }\n }\n scrollToElement(\n \"planning-occurrence-\" +\n selectedOccurrence.occurrenceId +\n \"\" +\n selectedOccurrence.liveId,\n );\n });\n}\nfunction createArrayDays() {\n for (let index = -7; index < 3; index++) {\n const dayToAdd = dayjs().add(index, \"day\");\n if (0 === index) {\n daySelected.value = dayToAdd.valueOf();\n }\n arrayDays.value.push({\n title: dayToAdd.format(\"D/MM\"),\n dayOfWeek: dayToAdd.format(\"dddd\"),\n date: dayToAdd.valueOf(),\n iso: dayToAdd.format(\"MM-DD\"),\n });\n }\n}\nasync function fetchOccurrencesAndLives(): Promise<Array<PlanningOccurrence|PlanningLive>> {\n const params = {\n canalId: props.radio?.id,\n from:startOfDay.value,\n to:endOfDay.value,\n };\n let occurrences: Array<PlanningOccurrence | PlanningLive> =\n await classicApi.fetchData<Array<PlanningOccurrence>>({\n api: 14,\n path: \"planning/occurrence/list\",\n parameters: params,\n });\n const lives: Array<PlanningOccurrence> = await classicApi.fetchData<\n Array<PlanningOccurrence>\n >({\n api: 14,\n path: \"live/list\",\n parameters: params,\n });\n\n if (lives.length) {\n occurrences = occurrences.concat(lives);\n occurrences.sort((a, b) => {\n if (a.startDate > b.startDate) {\n return 1;\n }\n return b.startDate > a.startDate ? -1 : 0;\n });\n }\n return occurrences;\n}\n\nasync function fetchOccurrences(): Promise<void> {\n if (planning.value[daySelected.value]) {\n return;\n }\n planning.value[daySelected.value] = {\n morning: [],\n afternoon: [],\n evening: [],\n };\n planningLength.value[daySelected.value] = 0;\n loading.value = true;\n error.value = false;\n try {\n const occurrences = await fetchOccurrencesAndLives();\n let periodDayIndex = 0;\n for (const occ of occurrences) {\n if (!occ.podcastId) {\n continue;\n }\n if (\n !dayjs(occ.startDate).isBefore(periodOfDay.value[periodDayIndex].end)\n ) {\n periodDayIndex += 1;\n }\n\n switch (periodOfDay.value[periodDayIndex].id) {\n case \"morning\":\n planning.value[daySelected.value].morning.push(occ);\n break;\n case \"afternoon\":\n planning.value[daySelected.value].afternoon.push(occ);\n break;\n case \"evening\":\n planning.value[daySelected.value].evening.push(occ);\n break;\n default:\n break;\n }\n planningLength.value[daySelected.value] += 1;\n }\n } catch(e) {\n error.value = true;\n console.error(e);\n }\n loading.value = false;\n}\nfunction changeDate(date: number) {\n daySelected.value = date;\n fetchOccurrences();\n}\nfunction dateDisplay(date: Date): string {\n return dayjs(date).format(\"HH:mm\");\n}\n</script>\n<style lang=\"scss\">\n.octopus-app {\n .program-item-date {\n width: 100px;\n font-size: 1.1rem;\n\n @media (width <= 960px) {\n\t\t\tfont-size: 0.8rem;\n\t\t}\n }\n\n .program-item-img{\n @media (width <= 960px) {\n\t\t\twidth: 80px;\n height: 80px;\n margin: 0.5rem 0.5rem 0 0 !important;\n\t\t}\n }\n\n .button-date {\n display: flex;\n flex-direction: column;\n align-items: center;\n flex-grow: 1;\n padding: 0.5rem;\n\n &.bg-primary{\n color: var(--octopus-color-on-primary) !important;\n }\n\n &:hover {\n background: var(--octopus-secondary);\n }\n\n @media (width <= 960px) {\n\t\t\twidth: 80px;\n\t\t}\n }\n}\n</style>\n","<template>\n <section class=\"module-box\">\n <h2 class=\"mb-3\">\n {{ t(\"Program\") }}\n </h2>\n <div class=\"py-3\">\n <div class=\"d-flex align-items-center w-100 mb-3\">\n <button\n v-for=\"day in displayArrayDays\"\n :key=\"day.date\"\n class=\"button-date border\"\n :class=\"day.date == daySelected ? 'bg-primary' : ''\"\n @click=\"changeDate(day.date)\"\n >\n <span class=\"text-capitalize\" >{{ day.dayOfWeek }}</span>\n <time :datetime=\"day.iso\">{{ day.title }}</time>\n </button>\n </div>\n <button v-if=\"isPhone\" class=\"btn btn-primary mb-3 mx-0\" @click=\"showAllDays = !showAllDays\">\n <template v-if=\"!showAllDays\">{{ t('Show more days') }}</template>\n <template v-else>{{ t('Show fewer days') }}</template>\n </button>\n <div\n class=\"d-flex align-items-center justify-content-center border-bottom\"\n >\n <button\n v-for=\"period in periodOfDay\"\n :key=\"period.id\"\n class=\"btn btn-underline mb-2\"\n @click=\"scrollToElement('planning-period-' + period.id)\"\n >\n {{ period.title }}\n </button>\n <button class=\"btn btn-underline mb-2\" @click=\"changePeriodNow\">\n {{ t(\"Now\") }}\n </button>\n </div>\n\n <div class=\"d-flex flex-column p-3\">\n <ClassicLoading\n :loading-text=\"loading ? t('Loading content ...') : undefined\"\n :error-text=\"error ? t(`Error`) : undefined\"\n />\n <template v-if=\"!loading && !error\">\n <div v-if=\"!planningLength[daySelected]\" class=\"text-center\">\n {{ t(\"No programming\") }}\n </div>\n <div v-for=\"period in periodOfDay\" v-else :key=\"period.id\">\n <template v-if=\"planning[daySelected][period.id].length\">\n <div\n :id=\"'planning-period-' + period.id\"\n class=\"fw-bold my-3 pb-2 border-bottom border-primary text-primary\"\n >\n {{ period.title }}\n </div>\n <div\n v-for=\"planningItem in planning[daySelected][period.id]\"\n :id=\"\n 'planning-occurrence-' +\n planningItem.occurrenceId +\n '' +\n planningItem.liveId\n \"\n :key=\"planningItem.occurrenceId + '' + planningItem.liveId\"\n class=\"d-flex align-items-center mb-3\"\n >\n <time :datetime=\"planningItem.startDate\" class=\"program-item-date fw-bold flex-shrink-0\">\n {{ dateDisplay(planningItem.startDate) }}\n </time>\n <router-link\n class=\"d-flex align-items-center flex-nowrap text-dark\"\n :to=\"{\n name: 'podcast',\n params: { podcastId: planningItem.podcastId },\n }\"\n :title=\"t('Episode name page', { name: planningItem.title })\"\n >\n <img\n v-lazy=\"\n useProxyImageUrl(planningItem.podcastData.imageUrl, '150')\n \"\n width=\"150\"\n height=\"150\"\n class=\"m-2 program-item-img\"\n aria-hidden=\"true\"\n alt=\"\"\n \n :title=\"\n t('Episode name image', {\n name: planningItem.podcastData.title,\n })\n \"\n />\n <div class=\"d-flex flex-column\">\n <div class=\"d-flex align-items-center mb-2\">\n <div\n v-if=\"planningItem.liveId\"\n class=\"bg-complementary text-white p-1 me-1\"\n >\n {{ t(\"Live\") }}\n </div>\n <div class=\"flex-grow-1 fw-bold\">\n {{ planningItem.podcastData.title }}\n </div>\n </div>\n </div>\n </router-link>\n </div>\n </template>\n </div>\n </template>\n </div>\n </div>\n </section>\n</template>\n\n<script setup lang=\"ts\">\nimport dayjs from \"dayjs\";\nimport utc from \"dayjs/plugin/utc\";\ndayjs.extend(utc);\nimport classicApi from \"../../../api/classicApi\";\nimport {useImageProxy} from \"../../composable/useImageProxy\";\nimport {useResizePhone} from \"../../composable/useResizePhone\";\nimport ClassicLoading from \"../../form/ClassicLoading.vue\";\nimport { computed, nextTick, onMounted, ref, Ref } from \"vue\";\nimport { Canal } from \"@/stores/class/radio/canal\";\nimport { PlanningOccurrence } from \"@/stores/class/radio/recurrence\";\nimport { PlanningLive } from \"@/stores/class/radio/live\";\nimport { useI18n } from \"vue-i18n\";\n\n//Props \nconst props = defineProps({\n radio: { default: undefined, type: Object as () => Canal },\n})\n\n//Data \nconst planning: Ref<{\n [key: number]: {\n morning: Array<PlanningOccurrence | PlanningLive>;\n afternoon: Array<PlanningOccurrence | PlanningLive>;\n evening: Array<PlanningOccurrence | PlanningLive>;\n };\n}> = ref({});\nconst planningLength: Ref<{ [key: number]: number }> = ref({});\nconst daySelected = ref(dayjs().valueOf());\nconst arrayDays: Ref<Array<{\n title: string;\n date: number;\n dayOfWeek: string;\n iso: string;\n}>> = ref([]);\nconst loading = ref(true);\nconst error = ref(false);\nconst showAllDays = ref(false);\n\n\n//Composables\nconst { t } = useI18n();\nconst { isPhone } = useResizePhone();\nconst { useProxyImageUrl } = useImageProxy();\n\n//Computed\nconst startOfDay = computed(() => dayjs(daySelected.value).startOf(\"date\").toISOString());\nconst endOfDay = computed(() => dayjs(daySelected.value).endOf(\"date\").toISOString());\nconst periodOfDay = computed(() => {\n return [\n {\n id: \"morning\",\n title: t(\"Morning\"),\n end: dayjs(daySelected.value)\n .hour(14)\n .minute(0)\n .second(0)\n .millisecond(0),\n },\n {\n id: \"afternoon\",\n title: t(\"Afternoon\"),\n end: dayjs(daySelected.value)\n .hour(19)\n .minute(0)\n .second(0)\n .millisecond(0),\n },\n {\n id: \"evening\",\n title: t(\"Evening\"),\n end: dayjs(daySelected.value).endOf(\"date\"),\n },\n ];\n});\nconst displayArrayDays = computed(() => {\n if(isPhone && !showAllDays.value){\n return arrayDays.value.slice(6, 9);\n }\n return arrayDays.value;\n});\n\n\nonMounted(()=>{\n createArrayDays();\n fetchOccurrences();\n})\n\n\n//Mounted\nfunction scrollToElement(id: string) {\n const element = document.getElementById(id);\n if (element) {\n const yOffset = -110;\n const y =\n element.getBoundingClientRect().top + window.scrollY + yOffset;\n window.scrollTo({ top: y, behavior: \"smooth\" });\n }\n}\nfunction changePeriodNow() {\n const now = dayjs();\n if (!dayjs(daySelected.value).isSame(now, \"day\")) {\n changeDate(arrayDays.value[7].date);\n }\n nextTick(() => {\n if (!planningLength.value[daySelected.value]) {\n return;\n }\n const arrayOccurrences = Object.values(\n planning.value[daySelected.value],\n ).reduce((r, c) => r.concat(c), []);\n let selectedOccurrence = arrayOccurrences[0];\n for (const occ of arrayOccurrences) {\n selectedOccurrence = occ;\n if (dayjs(occ.endDate).isAfter(now)) {\n break;\n }\n }\n scrollToElement(\n \"planning-occurrence-\" +\n selectedOccurrence.occurrenceId +\n \"\" +\n selectedOccurrence.liveId,\n );\n });\n}\nfunction createArrayDays() {\n for (let index = -7; index < 3; index++) {\n const dayToAdd = dayjs().add(index, \"day\");\n if (0 === index) {\n daySelected.value = dayToAdd.valueOf();\n }\n arrayDays.value.push({\n title: dayToAdd.format(\"D/MM\"),\n dayOfWeek: dayToAdd.format(\"dddd\"),\n date: dayToAdd.valueOf(),\n iso: dayToAdd.format(\"MM-DD\"),\n });\n }\n}\nasync function fetchOccurrencesAndLives(): Promise<Array<PlanningOccurrence|PlanningLive>> {\n const params = {\n canalId: props.radio?.id,\n from:startOfDay.value,\n to:endOfDay.value,\n };\n let occurrences: Array<PlanningOccurrence | PlanningLive> =\n await classicApi.fetchData<Array<PlanningOccurrence>>({\n api: 14,\n path: \"planning/occurrence/list\",\n parameters: params,\n });\n const lives: Array<PlanningOccurrence> = await classicApi.fetchData<\n Array<PlanningOccurrence>\n >({\n api: 14,\n path: \"live/list\",\n parameters: params,\n });\n\n if (lives.length) {\n occurrences = occurrences.concat(lives);\n occurrences.sort((a, b) => {\n if (a.startDate > b.startDate) {\n return 1;\n }\n return b.startDate > a.startDate ? -1 : 0;\n });\n }\n return occurrences;\n}\n\nasync function fetchOccurrences(): Promise<void> {\n if (planning.value[daySelected.value]) {\n return;\n }\n planning.value[daySelected.value] = {\n morning: [],\n afternoon: [],\n evening: [],\n };\n planningLength.value[daySelected.value] = 0;\n loading.value = true;\n error.value = false;\n try {\n const occurrences = await fetchOccurrencesAndLives();\n let periodDayIndex = 0;\n for (const occ of occurrences) {\n if (!occ.podcastId) {\n continue;\n }\n if (\n !dayjs(occ.startDate).isBefore(periodOfDay.value[periodDayIndex].end)\n ) {\n periodDayIndex += 1;\n }\n\n switch (periodOfDay.value[periodDayIndex].id) {\n case \"morning\":\n planning.value[daySelected.value].morning.push(occ);\n break;\n case \"afternoon\":\n planning.value[daySelected.value].afternoon.push(occ);\n break;\n case \"evening\":\n planning.value[daySelected.value].evening.push(occ);\n break;\n default:\n break;\n }\n planningLength.value[daySelected.value] += 1;\n }\n } catch(e) {\n error.value = true;\n console.error(e);\n }\n loading.value = false;\n}\nfunction changeDate(date: number) {\n daySelected.value = date;\n fetchOccurrences();\n}\nfunction dateDisplay(date: Date): string {\n return dayjs(date).format(\"HH:mm\");\n}\n</script>\n<style lang=\"scss\">\n.octopus-app {\n .program-item-date {\n width: 100px;\n font-size: 1.1rem;\n\n @media (width <= 960px) {\n\t\t\tfont-size: 0.8rem;\n\t\t}\n }\n\n .program-item-img{\n @media (width <= 960px) {\n\t\t\twidth: 80px;\n height: 80px;\n margin: 0.5rem 0.5rem 0 0 !important;\n\t\t}\n }\n\n .button-date {\n display: flex;\n flex-direction: column;\n align-items: center;\n flex-grow: 1;\n padding: 0.5rem;\n\n &.bg-primary{\n color: var(--octopus-color-on-primary) !important;\n }\n\n &:hover {\n background: var(--octopus-secondary);\n }\n\n @media (width <= 960px) {\n\t\t\twidth: 80px;\n\t\t}\n }\n}\n</style>\n"],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"RadioPlanning-DHxcBVQo.mjs","names":[],"sources":["../src/components/display/live/RadioPlanning.vue","../src/components/display/live/RadioPlanning.vue"],"sourcesContent":["<template>\n <section class=\"module-box\">\n <h2 class=\"mb-3\">\n {{ t(\"Program\") }}\n </h2>\n <div class=\"py-3\">\n <div class=\"d-flex align-items-center w-100 mb-3\">\n <button\n v-for=\"day in displayArrayDays\"\n :key=\"day.date\"\n class=\"button-date border\"\n :class=\"day.date == daySelected ? 'bg-primary' : ''\"\n @click=\"changeDate(day.date)\"\n >\n <span class=\"text-capitalize\" >{{ day.dayOfWeek }}</span>\n <time :datetime=\"day.iso\">{{ day.title }}</time>\n </button>\n </div>\n <button v-if=\"isPhone\" class=\"btn btn-primary mb-3 mx-0\" @click=\"showAllDays = !showAllDays\">\n <template v-if=\"!showAllDays\">{{ t('Show more days') }}</template>\n <template v-else>{{ t('Show fewer days') }}</template>\n </button>\n <div\n class=\"d-flex align-items-center justify-content-center border-bottom\"\n >\n <button\n v-for=\"period in periodOfDay\"\n :key=\"period.id\"\n class=\"btn btn-underline mb-2\"\n @click=\"scrollToElement('planning-period-' + period.id)\"\n >\n {{ period.title }}\n </button>\n <button class=\"btn btn-underline mb-2\" @click=\"changePeriodNow\">\n {{ t(\"Now\") }}\n </button>\n </div>\n\n <div class=\"d-flex flex-column p-3\">\n <ClassicLoading\n :loading-text=\"loading ? t('Loading content ...') : undefined\"\n :error-text=\"error ? t(`Error`) : undefined\"\n />\n <template v-if=\"!loading && !error\">\n <div v-if=\"!planningLength[daySelected]\" class=\"text-center\">\n {{ t(\"No programming\") }}\n </div>\n <div v-for=\"period in periodOfDay\" v-else :key=\"period.id\">\n <template v-if=\"planning[daySelected][period.id].length\">\n <div\n :id=\"'planning-period-' + period.id\"\n class=\"fw-bold my-3 pb-2 border-bottom border-primary text-primary\"\n >\n {{ period.title }}\n </div>\n <div\n v-for=\"planningItem in planning[daySelected][period.id]\"\n :id=\"\n 'planning-occurrence-' +\n planningItem.occurrenceId +\n '' +\n planningItem.liveId\n \"\n :key=\"planningItem.occurrenceId + '' + planningItem.liveId\"\n class=\"d-flex align-items-center mb-3\"\n >\n <time :datetime=\"planningItem.startDate\" class=\"program-item-date fw-bold flex-shrink-0\">\n {{ dateDisplay(planningItem.startDate) }}\n </time>\n <router-link\n class=\"d-flex align-items-center flex-nowrap text-dark\"\n :to=\"{\n name: 'podcast',\n params: { podcastId: planningItem.podcastId },\n }\"\n :title=\"t('Episode name page', { name: planningItem.title })\"\n >\n <img\n v-lazy=\"\n useProxyImageUrl(planningItem.podcastData.imageUrl, '150')\n \"\n width=\"150\"\n height=\"150\"\n class=\"m-2 program-item-img\"\n aria-hidden=\"true\"\n alt=\"\"\n \n :title=\"\n t('Episode name image', {\n name: planningItem.podcastData.title,\n })\n \"\n />\n <div class=\"d-flex flex-column\">\n <div class=\"d-flex align-items-center mb-2\">\n <div\n v-if=\"planningItem.liveId\"\n class=\"bg-complementary text-white p-1 me-1\"\n >\n {{ t(\"Live\") }}\n </div>\n <div class=\"flex-grow-1 fw-bold\">\n {{ planningItem.podcastData.title }}\n </div>\n </div>\n </div>\n </router-link>\n </div>\n </template>\n </div>\n </template>\n </div>\n </div>\n </section>\n</template>\n\n<script setup lang=\"ts\">\nimport dayjs from \"dayjs\";\nimport utc from \"dayjs/plugin/utc\";\ndayjs.extend(utc);\nimport classicApi from \"../../../api/classicApi\";\nimport {useImageProxy} from \"../../composable/useImageProxy\";\nimport {useResizePhone} from \"../../composable/useResizePhone\";\nimport ClassicLoading from \"../../form/ClassicLoading.vue\";\nimport { computed, nextTick, onMounted, ref, Ref } from \"vue\";\nimport { Canal } from \"@/stores/class/radio/canal\";\nimport { PlanningOccurrence } from \"@/stores/class/radio/recurrence\";\nimport { PlanningLive } from \"@/stores/class/radio/live\";\nimport { useI18n } from \"vue-i18n\";\n\n//Props \nconst props = defineProps({\n radio: { default: undefined, type: Object as () => Canal },\n})\n\n//Data \nconst planning: Ref<{\n [key: number]: {\n morning: Array<PlanningOccurrence | PlanningLive>;\n afternoon: Array<PlanningOccurrence | PlanningLive>;\n evening: Array<PlanningOccurrence | PlanningLive>;\n };\n}> = ref({});\nconst planningLength: Ref<{ [key: number]: number }> = ref({});\nconst daySelected = ref(dayjs().valueOf());\nconst arrayDays: Ref<Array<{\n title: string;\n date: number;\n dayOfWeek: string;\n iso: string;\n}>> = ref([]);\nconst loading = ref(true);\nconst error = ref(false);\nconst showAllDays = ref(false);\n\n\n//Composables\nconst { t } = useI18n();\nconst { isPhone } = useResizePhone();\nconst { useProxyImageUrl } = useImageProxy();\n\n//Computed\nconst startOfDay = computed(() => dayjs(daySelected.value).startOf(\"date\").toISOString());\nconst endOfDay = computed(() => dayjs(daySelected.value).endOf(\"date\").toISOString());\nconst periodOfDay = computed(() => {\n return [\n {\n id: \"morning\",\n title: t(\"Morning\"),\n end: dayjs(daySelected.value)\n .hour(14)\n .minute(0)\n .second(0)\n .millisecond(0),\n },\n {\n id: \"afternoon\",\n title: t(\"Afternoon\"),\n end: dayjs(daySelected.value)\n .hour(19)\n .minute(0)\n .second(0)\n .millisecond(0),\n },\n {\n id: \"evening\",\n title: t(\"Evening\"),\n end: dayjs(daySelected.value).endOf(\"date\"),\n },\n ];\n});\nconst displayArrayDays = computed(() => {\n if(isPhone && !showAllDays.value){\n return arrayDays.value.slice(6, 9);\n }\n return arrayDays.value;\n});\n\n\nonMounted(()=>{\n createArrayDays();\n fetchOccurrences();\n})\n\n\n//Mounted\nfunction scrollToElement(id: string) {\n const element = document.getElementById(id);\n if (element) {\n const yOffset = -110;\n const y =\n element.getBoundingClientRect().top + window.scrollY + yOffset;\n window.scrollTo({ top: y, behavior: \"smooth\" });\n }\n}\nfunction changePeriodNow() {\n const now = dayjs();\n if (!dayjs(daySelected.value).isSame(now, \"day\")) {\n changeDate(arrayDays.value[7].date);\n }\n nextTick(() => {\n if (!planningLength.value[daySelected.value]) {\n return;\n }\n const arrayOccurrences = Object.values(\n planning.value[daySelected.value],\n ).reduce((r, c) => r.concat(c), []);\n let selectedOccurrence = arrayOccurrences[0];\n for (const occ of arrayOccurrences) {\n selectedOccurrence = occ;\n if (dayjs(occ.endDate).isAfter(now)) {\n break;\n }\n }\n scrollToElement(\n \"planning-occurrence-\" +\n selectedOccurrence.occurrenceId +\n \"\" +\n selectedOccurrence.liveId,\n );\n });\n}\nfunction createArrayDays() {\n for (let index = -7; index < 3; index++) {\n const dayToAdd = dayjs().add(index, \"day\");\n if (0 === index) {\n daySelected.value = dayToAdd.valueOf();\n }\n arrayDays.value.push({\n title: dayToAdd.format(\"D/MM\"),\n dayOfWeek: dayToAdd.format(\"dddd\"),\n date: dayToAdd.valueOf(),\n iso: dayToAdd.format(\"MM-DD\"),\n });\n }\n}\nasync function fetchOccurrencesAndLives(): Promise<Array<PlanningOccurrence|PlanningLive>> {\n const params = {\n canalId: props.radio?.id,\n from:startOfDay.value,\n to:endOfDay.value,\n };\n let occurrences: Array<PlanningOccurrence | PlanningLive> =\n await classicApi.fetchData<Array<PlanningOccurrence>>({\n api: 14,\n path: \"planning/occurrence/list\",\n parameters: params,\n });\n const lives: Array<PlanningOccurrence> = await classicApi.fetchData<\n Array<PlanningOccurrence>\n >({\n api: 14,\n path: \"live/list\",\n parameters: params,\n });\n\n if (lives.length) {\n occurrences = occurrences.concat(lives);\n occurrences.sort((a, b) => {\n if (a.startDate > b.startDate) {\n return 1;\n }\n return b.startDate > a.startDate ? -1 : 0;\n });\n }\n return occurrences;\n}\n\nasync function fetchOccurrences(): Promise<void> {\n if (planning.value[daySelected.value]) {\n return;\n }\n planning.value[daySelected.value] = {\n morning: [],\n afternoon: [],\n evening: [],\n };\n planningLength.value[daySelected.value] = 0;\n loading.value = true;\n error.value = false;\n try {\n const occurrences = await fetchOccurrencesAndLives();\n let periodDayIndex = 0;\n for (const occ of occurrences) {\n if (!occ.podcastId) {\n continue;\n }\n if (\n !dayjs(occ.startDate).isBefore(periodOfDay.value[periodDayIndex].end)\n ) {\n periodDayIndex += 1;\n }\n\n switch (periodOfDay.value[periodDayIndex].id) {\n case \"morning\":\n planning.value[daySelected.value].morning.push(occ);\n break;\n case \"afternoon\":\n planning.value[daySelected.value].afternoon.push(occ);\n break;\n case \"evening\":\n planning.value[daySelected.value].evening.push(occ);\n break;\n default:\n break;\n }\n planningLength.value[daySelected.value] += 1;\n }\n } catch(e) {\n error.value = true;\n console.error(e);\n }\n loading.value = false;\n}\nfunction changeDate(date: number) {\n daySelected.value = date;\n fetchOccurrences();\n}\nfunction dateDisplay(date: Date): string {\n return dayjs(date).format(\"HH:mm\");\n}\n</script>\n<style lang=\"scss\">\n.octopus-app {\n .program-item-date {\n width: 100px;\n font-size: 1.1rem;\n\n @media (width <= 960px) {\n\t\t\tfont-size: 0.8rem;\n\t\t}\n }\n\n .program-item-img{\n @media (width <= 960px) {\n\t\t\twidth: 80px;\n height: 80px;\n margin: 0.5rem 0.5rem 0 0 !important;\n\t\t}\n }\n\n .button-date {\n display: flex;\n flex-direction: column;\n align-items: center;\n flex-grow: 1;\n padding: 0.5rem;\n\n &.bg-primary{\n color: var(--octopus-color-on-primary) !important;\n }\n\n &:hover {\n background: var(--octopus-secondary);\n }\n\n @media (width <= 960px) {\n\t\t\twidth: 80px;\n\t\t}\n }\n}\n</style>\n","<template>\n <section class=\"module-box\">\n <h2 class=\"mb-3\">\n {{ t(\"Program\") }}\n </h2>\n <div class=\"py-3\">\n <div class=\"d-flex align-items-center w-100 mb-3\">\n <button\n v-for=\"day in displayArrayDays\"\n :key=\"day.date\"\n class=\"button-date border\"\n :class=\"day.date == daySelected ? 'bg-primary' : ''\"\n @click=\"changeDate(day.date)\"\n >\n <span class=\"text-capitalize\" >{{ day.dayOfWeek }}</span>\n <time :datetime=\"day.iso\">{{ day.title }}</time>\n </button>\n </div>\n <button v-if=\"isPhone\" class=\"btn btn-primary mb-3 mx-0\" @click=\"showAllDays = !showAllDays\">\n <template v-if=\"!showAllDays\">{{ t('Show more days') }}</template>\n <template v-else>{{ t('Show fewer days') }}</template>\n </button>\n <div\n class=\"d-flex align-items-center justify-content-center border-bottom\"\n >\n <button\n v-for=\"period in periodOfDay\"\n :key=\"period.id\"\n class=\"btn btn-underline mb-2\"\n @click=\"scrollToElement('planning-period-' + period.id)\"\n >\n {{ period.title }}\n </button>\n <button class=\"btn btn-underline mb-2\" @click=\"changePeriodNow\">\n {{ t(\"Now\") }}\n </button>\n </div>\n\n <div class=\"d-flex flex-column p-3\">\n <ClassicLoading\n :loading-text=\"loading ? t('Loading content ...') : undefined\"\n :error-text=\"error ? t(`Error`) : undefined\"\n />\n <template v-if=\"!loading && !error\">\n <div v-if=\"!planningLength[daySelected]\" class=\"text-center\">\n {{ t(\"No programming\") }}\n </div>\n <div v-for=\"period in periodOfDay\" v-else :key=\"period.id\">\n <template v-if=\"planning[daySelected][period.id].length\">\n <div\n :id=\"'planning-period-' + period.id\"\n class=\"fw-bold my-3 pb-2 border-bottom border-primary text-primary\"\n >\n {{ period.title }}\n </div>\n <div\n v-for=\"planningItem in planning[daySelected][period.id]\"\n :id=\"\n 'planning-occurrence-' +\n planningItem.occurrenceId +\n '' +\n planningItem.liveId\n \"\n :key=\"planningItem.occurrenceId + '' + planningItem.liveId\"\n class=\"d-flex align-items-center mb-3\"\n >\n <time :datetime=\"planningItem.startDate\" class=\"program-item-date fw-bold flex-shrink-0\">\n {{ dateDisplay(planningItem.startDate) }}\n </time>\n <router-link\n class=\"d-flex align-items-center flex-nowrap text-dark\"\n :to=\"{\n name: 'podcast',\n params: { podcastId: planningItem.podcastId },\n }\"\n :title=\"t('Episode name page', { name: planningItem.title })\"\n >\n <img\n v-lazy=\"\n useProxyImageUrl(planningItem.podcastData.imageUrl, '150')\n \"\n width=\"150\"\n height=\"150\"\n class=\"m-2 program-item-img\"\n aria-hidden=\"true\"\n alt=\"\"\n \n :title=\"\n t('Episode name image', {\n name: planningItem.podcastData.title,\n })\n \"\n />\n <div class=\"d-flex flex-column\">\n <div class=\"d-flex align-items-center mb-2\">\n <div\n v-if=\"planningItem.liveId\"\n class=\"bg-complementary text-white p-1 me-1\"\n >\n {{ t(\"Live\") }}\n </div>\n <div class=\"flex-grow-1 fw-bold\">\n {{ planningItem.podcastData.title }}\n </div>\n </div>\n </div>\n </router-link>\n </div>\n </template>\n </div>\n </template>\n </div>\n </div>\n </section>\n</template>\n\n<script setup lang=\"ts\">\nimport dayjs from \"dayjs\";\nimport utc from \"dayjs/plugin/utc\";\ndayjs.extend(utc);\nimport classicApi from \"../../../api/classicApi\";\nimport {useImageProxy} from \"../../composable/useImageProxy\";\nimport {useResizePhone} from \"../../composable/useResizePhone\";\nimport ClassicLoading from \"../../form/ClassicLoading.vue\";\nimport { computed, nextTick, onMounted, ref, Ref } from \"vue\";\nimport { Canal } from \"@/stores/class/radio/canal\";\nimport { PlanningOccurrence } from \"@/stores/class/radio/recurrence\";\nimport { PlanningLive } from \"@/stores/class/radio/live\";\nimport { useI18n } from \"vue-i18n\";\n\n//Props \nconst props = defineProps({\n radio: { default: undefined, type: Object as () => Canal },\n})\n\n//Data \nconst planning: Ref<{\n [key: number]: {\n morning: Array<PlanningOccurrence | PlanningLive>;\n afternoon: Array<PlanningOccurrence | PlanningLive>;\n evening: Array<PlanningOccurrence | PlanningLive>;\n };\n}> = ref({});\nconst planningLength: Ref<{ [key: number]: number }> = ref({});\nconst daySelected = ref(dayjs().valueOf());\nconst arrayDays: Ref<Array<{\n title: string;\n date: number;\n dayOfWeek: string;\n iso: string;\n}>> = ref([]);\nconst loading = ref(true);\nconst error = ref(false);\nconst showAllDays = ref(false);\n\n\n//Composables\nconst { t } = useI18n();\nconst { isPhone } = useResizePhone();\nconst { useProxyImageUrl } = useImageProxy();\n\n//Computed\nconst startOfDay = computed(() => dayjs(daySelected.value).startOf(\"date\").toISOString());\nconst endOfDay = computed(() => dayjs(daySelected.value).endOf(\"date\").toISOString());\nconst periodOfDay = computed(() => {\n return [\n {\n id: \"morning\",\n title: t(\"Morning\"),\n end: dayjs(daySelected.value)\n .hour(14)\n .minute(0)\n .second(0)\n .millisecond(0),\n },\n {\n id: \"afternoon\",\n title: t(\"Afternoon\"),\n end: dayjs(daySelected.value)\n .hour(19)\n .minute(0)\n .second(0)\n .millisecond(0),\n },\n {\n id: \"evening\",\n title: t(\"Evening\"),\n end: dayjs(daySelected.value).endOf(\"date\"),\n },\n ];\n});\nconst displayArrayDays = computed(() => {\n if(isPhone && !showAllDays.value){\n return arrayDays.value.slice(6, 9);\n }\n return arrayDays.value;\n});\n\n\nonMounted(()=>{\n createArrayDays();\n fetchOccurrences();\n})\n\n\n//Mounted\nfunction scrollToElement(id: string) {\n const element = document.getElementById(id);\n if (element) {\n const yOffset = -110;\n const y =\n element.getBoundingClientRect().top + window.scrollY + yOffset;\n window.scrollTo({ top: y, behavior: \"smooth\" });\n }\n}\nfunction changePeriodNow() {\n const now = dayjs();\n if (!dayjs(daySelected.value).isSame(now, \"day\")) {\n changeDate(arrayDays.value[7].date);\n }\n nextTick(() => {\n if (!planningLength.value[daySelected.value]) {\n return;\n }\n const arrayOccurrences = Object.values(\n planning.value[daySelected.value],\n ).reduce((r, c) => r.concat(c), []);\n let selectedOccurrence = arrayOccurrences[0];\n for (const occ of arrayOccurrences) {\n selectedOccurrence = occ;\n if (dayjs(occ.endDate).isAfter(now)) {\n break;\n }\n }\n scrollToElement(\n \"planning-occurrence-\" +\n selectedOccurrence.occurrenceId +\n \"\" +\n selectedOccurrence.liveId,\n );\n });\n}\nfunction createArrayDays() {\n for (let index = -7; index < 3; index++) {\n const dayToAdd = dayjs().add(index, \"day\");\n if (0 === index) {\n daySelected.value = dayToAdd.valueOf();\n }\n arrayDays.value.push({\n title: dayToAdd.format(\"D/MM\"),\n dayOfWeek: dayToAdd.format(\"dddd\"),\n date: dayToAdd.valueOf(),\n iso: dayToAdd.format(\"MM-DD\"),\n });\n }\n}\nasync function fetchOccurrencesAndLives(): Promise<Array<PlanningOccurrence|PlanningLive>> {\n const params = {\n canalId: props.radio?.id,\n from:startOfDay.value,\n to:endOfDay.value,\n };\n let occurrences: Array<PlanningOccurrence | PlanningLive> =\n await classicApi.fetchData<Array<PlanningOccurrence>>({\n api: 14,\n path: \"planning/occurrence/list\",\n parameters: params,\n });\n const lives: Array<PlanningOccurrence> = await classicApi.fetchData<\n Array<PlanningOccurrence>\n >({\n api: 14,\n path: \"live/list\",\n parameters: params,\n });\n\n if (lives.length) {\n occurrences = occurrences.concat(lives);\n occurrences.sort((a, b) => {\n if (a.startDate > b.startDate) {\n return 1;\n }\n return b.startDate > a.startDate ? -1 : 0;\n });\n }\n return occurrences;\n}\n\nasync function fetchOccurrences(): Promise<void> {\n if (planning.value[daySelected.value]) {\n return;\n }\n planning.value[daySelected.value] = {\n morning: [],\n afternoon: [],\n evening: [],\n };\n planningLength.value[daySelected.value] = 0;\n loading.value = true;\n error.value = false;\n try {\n const occurrences = await fetchOccurrencesAndLives();\n let periodDayIndex = 0;\n for (const occ of occurrences) {\n if (!occ.podcastId) {\n continue;\n }\n if (\n !dayjs(occ.startDate).isBefore(periodOfDay.value[periodDayIndex].end)\n ) {\n periodDayIndex += 1;\n }\n\n switch (periodOfDay.value[periodDayIndex].id) {\n case \"morning\":\n planning.value[daySelected.value].morning.push(occ);\n break;\n case \"afternoon\":\n planning.value[daySelected.value].afternoon.push(occ);\n break;\n case \"evening\":\n planning.value[daySelected.value].evening.push(occ);\n break;\n default:\n break;\n }\n planningLength.value[daySelected.value] += 1;\n }\n } catch(e) {\n error.value = true;\n console.error(e);\n }\n loading.value = false;\n}\nfunction changeDate(date: number) {\n daySelected.value = date;\n fetchOccurrences();\n}\nfunction dateDisplay(date: Date): string {\n return dayjs(date).format(\"HH:mm\");\n}\n</script>\n<style lang=\"scss\">\n.octopus-app {\n .program-item-date {\n width: 100px;\n font-size: 1.1rem;\n\n @media (width <= 960px) {\n\t\t\tfont-size: 0.8rem;\n\t\t}\n }\n\n .program-item-img{\n @media (width <= 960px) {\n\t\t\twidth: 80px;\n height: 80px;\n margin: 0.5rem 0.5rem 0 0 !important;\n\t\t}\n }\n\n .button-date {\n display: flex;\n flex-direction: column;\n align-items: center;\n flex-grow: 1;\n padding: 0.5rem;\n\n &.bg-primary{\n color: var(--octopus-color-on-primary) !important;\n }\n\n &:hover {\n background: var(--octopus-secondary);\n }\n\n @media (width <= 960px) {\n\t\t\twidth: 80px;\n\t\t}\n }\n}\n</style>\n"],"mappings":";;;;;;;;;;;;;;;;;;EAuHA,MAAM,OAAO,GAAG;EAYhB,MAAM,QAAQ;EAKd,MAAM,WAMD,IAAI,CAAC,CAAC;EACX,MAAM,iBAAiD,IAAI,CAAC,CAAC;EAC7D,MAAM,cAAc,IAAI,MAAM,EAAE,QAAQ,CAAC;EACzC,MAAM,YAKA,IAAI,CAAC,CAAC;EACZ,MAAM,UAAU,IAAI,IAAI;EACxB,MAAM,QAAQ,IAAI,KAAK;EACvB,MAAM,cAAc,IAAI,KAAK;EAI7B,MAAM,EAAE,MAAM,QAAQ;EACtB,MAAM,EAAE,YAAY,eAAe;EACnC,MAAM,EAAE,qBAAqB,cAAc;EAG3C,MAAM,aAAa,eAAe,MAAM,YAAY,KAAK,EAAE,QAAQ,MAAM,EAAE,YAAY,CAAC;EACxF,MAAM,WAAW,eAAe,MAAM,YAAY,KAAK,EAAE,MAAM,MAAM,EAAE,YAAY,CAAC;EACpF,MAAM,cAAc,eAAe;GACjC,OAAO;IACL;KACE,IAAI;KACJ,OAAO,EAAE,SAAS;KAClB,KAAK,MAAM,YAAY,KAAK,EACzB,KAAK,EAAE,EACP,OAAO,CAAC,EACR,OAAO,CAAC,EACR,YAAY,CAAC;IAClB;IACA;KACE,IAAI;KACJ,OAAO,EAAE,WAAW;KACpB,KAAK,MAAM,YAAY,KAAK,EACzB,KAAK,EAAE,EACP,OAAO,CAAC,EACR,OAAO,CAAC,EACR,YAAY,CAAC;IAClB;IACA;KACE,IAAI;KACJ,OAAO,EAAE,SAAS;KAClB,KAAK,MAAM,YAAY,KAAK,EAAE,MAAM,MAAM;IAC5C;GACF;EACF,CAAC;EACD,MAAM,mBAAmB,eAAe;GACtC,IAAG,WAAW,CAAC,YAAY,OACzB,OAAO,UAAU,MAAM,MAAM,GAAG,CAAC;GAEnC,OAAO,UAAU;EACnB,CAAC;EAGD,gBAAc;GACZ,gBAAgB;GAChB,iBAAiB;EACnB,CAAC;EAID,SAAS,gBAAgB,IAAY;GACnC,MAAM,UAAU,SAAS,eAAe,EAAE;GAC1C,IAAI,SAAS;IAEX,MAAM,IACJ,QAAQ,sBAAsB,EAAE,MAAM,OAAO,UAAU;IACzD,OAAO,SAAS;KAAE,KAAK;KAAG,UAAU;IAAS,CAAC;GAChD;EACF;EACA,SAAS,kBAAkB;GACzB,MAAM,MAAM,MAAM;GAClB,IAAI,CAAC,MAAM,YAAY,KAAK,EAAE,OAAO,KAAK,KAAK,GAC7C,WAAW,UAAU,MAAM,GAAG,IAAI;GAEpC,eAAe;IACb,IAAI,CAAC,eAAe,MAAM,YAAY,QACpC;IAEF,MAAM,mBAAmB,OAAO,OAC9B,SAAS,MAAM,YAAY,MAC7B,EAAE,QAAQ,GAAG,MAAM,EAAE,OAAO,CAAC,GAAG,CAAC,CAAC;IAClC,IAAI,qBAAqB,iBAAiB;IAC1C,KAAK,MAAM,OAAO,kBAAkB;KAClC,qBAAqB;KACrB,IAAI,MAAM,IAAI,OAAO,EAAE,QAAQ,GAAG,GAChC;IAEJ;IACA,gBACE,yBACE,mBAAmB,eAEnB,mBAAmB,MACvB;GACF,CAAC;EACH;EACA,SAAS,kBAAkB;GACzB,KAAK,IAAI,QAAQ,IAAI,QAAQ,GAAG,SAAS;IACvC,MAAM,WAAW,MAAM,EAAE,IAAI,OAAO,KAAK;IACzC,IAAI,MAAM,OACR,YAAY,QAAQ,SAAS,QAAQ;IAEvC,UAAU,MAAM,KAAK;KACnB,OAAO,SAAS,OAAO,MAAM;KAC7B,WAAW,SAAS,OAAO,MAAM;KACjC,MAAM,SAAS,QAAQ;KACvB,KAAK,SAAS,OAAO,OAAO;IAC9B,CAAC;GACH;EACF;EACA,eAAe,2BAA4E;GACzF,MAAM,SAAS;IACb,SAAS,MAAM,OAAO;IACtB,MAAK,WAAW;IAChB,IAAG,SAAS;GACd;GACA,IAAI,cACF,MAAM,mBAAW,UAAqC;IACpD,KAAK;IACL,MAAM;IACN,YAAY;GACd,CAAC;GACH,MAAM,QAAmC,MAAM,mBAAW,UAExD;IACA,KAAK;IACL,MAAM;IACN,YAAY;GACd,CAAC;GAED,IAAI,MAAM,QAAQ;IAChB,cAAc,YAAY,OAAO,KAAK;IACtC,YAAY,MAAM,GAAG,MAAM;KACzB,IAAI,EAAE,YAAY,EAAE,WAClB,OAAO;KAET,OAAO,EAAE,YAAY,EAAE,YAAY,KAAK;IAC1C,CAAC;GACH;GACA,OAAO;EACT;EAEA,eAAe,mBAAkC;GAC/C,IAAI,SAAS,MAAM,YAAY,QAC7B;GAEF,SAAS,MAAM,YAAY,SAAS;IAClC,SAAS,CAAC;IACV,WAAW,CAAC;IACZ,SAAS,CAAC;GACZ;GACA,eAAe,MAAM,YAAY,SAAS;GAC1C,QAAQ,QAAQ;GAChB,MAAM,QAAQ;GACd,IAAI;IACF,MAAM,cAAc,MAAM,yBAAyB;IACnD,IAAI,iBAAiB;IACrB,KAAK,MAAM,OAAO,aAAa;KAC7B,IAAI,CAAC,IAAI,WACP;KAEF,IACE,CAAC,MAAM,IAAI,SAAS,EAAE,SAAS,YAAY,MAAM,gBAAgB,GAAG,GAEpE,kBAAkB;KAGpB,QAAQ,YAAY,MAAM,gBAAgB,IAA1C;MACE,KAAK;OACH,SAAS,MAAM,YAAY,OAAO,QAAQ,KAAK,GAAG;OAClD;MACF,KAAK;OACH,SAAS,MAAM,YAAY,OAAO,UAAU,KAAK,GAAG;OACpD;MACF,KAAK;OACH,SAAS,MAAM,YAAY,OAAO,QAAQ,KAAK,GAAG;OAClD;MACF,SACE;KACJ;KACA,eAAe,MAAM,YAAY,UAAU;IAC7C;GACF,SAAQ,GAAG;IACT,MAAM,QAAQ;IACd,QAAQ,MAAM,CAAC;GACjB;GACA,QAAQ,QAAQ;EAClB;EACA,SAAS,WAAW,MAAc;GAChC,YAAY,QAAQ;GACpB,iBAAiB;EACnB;EACA,SAAS,YAAY,MAAoB;GACvC,OAAO,MAAM,IAAI,EAAE,OAAO,OAAO;EACnC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;mBCnVW,OAAM,aAAY;mBACrB,OAAM,OAAM;mBAGX,OAAM,OAAM;mBACV,OAAM,uCAAsC;;mBAQvC,OAAM,kBAAiB;;mBAS/B,OAAM,iEAAgE;;oBAenE,OAAM,yBAAwB;;;CAMU,OAAM;;;;;;oBAiDlC,OAAM,qBAAoB;oBACxB,OAAM,iCAAgC;;;CAGvC,OAAM;;oBAIH,OAAM,sBAAqB;;;;qBApGpD,mBAgHU,WAhHV,YAgHU,CA/GR,mBAEK,MAFL,YAEK,gBADA,OAAA,EAAC,SAAA,CAAA,GAAA,CAAA,GAEN,mBA2GM,OA3GN,YA2GM;EA1GJ,mBAWM,OAXN,YAWM,EAAA,UAAA,IAAA,GAVJ,mBASS,UAAA,MAAA,WARO,OAAA,mBAAP,QAAG;uBADZ,mBASS,UAAA;IAPN,KAAK,IAAI;IACV,OAAK,eAAA,CAAC,sBACE,IAAI,QAAQ,OAAA,cAAW,eAAA,EAAA,CAAA;IAC9B,UAAK,WAAE,OAAA,WAAW,IAAI,IAAI;OAE3B,mBAAyD,QAAzD,YAAyD,gBAAvB,IAAI,SAAS,GAAA,CAAA,GAC/C,mBAAgD,QAAA,EAAzC,UAAU,IAAI,IAAA,GAAA,gBAAQ,IAAI,KAAK,GAAA,GAAA,UAAA,CAAA,GAAA,IAAA,UAAA;;EAG5B,OAAA,WAAA,UAAA,GAAd,mBAGS,UAAA;;GAHc,OAAM;GAA6B,SAAK,OAAA,OAAA,OAAA,MAAA,WAAE,OAAA,cAAW,CAAI,OAAA;OAC7D,OAAA,eAAA,UAAA,GAAjB,mBAAkE,UAAA,EAAA,KAAA,EAAA,GAAA,CAAA,gBAAA,gBAAjC,OAAA,EAAC,gBAAA,CAAA,GAAA,CAAA,CAAA,GAAA,EAAA,MAAA,UAAA,GAClC,mBAAsD,UAAA,EAAA,KAAA,EAAA,GAAA,CAAA,gBAAA,gBAAlC,OAAA,EAAC,iBAAA,CAAA,GAAA,CAAA,CAAA,GAAA,EAAA,EAAA,CAAA,KAAA,mBAAA,QAAA,IAAA;EAEvB,mBAcM,OAdN,YAcM,EAAA,UAAA,IAAA,GAXJ,mBAOS,UAAA,MAAA,WANU,OAAA,cAAV,WAAM;uBADf,mBAOS,UAAA;IALN,KAAK,OAAO;IACb,OAAM;IACL,UAAK,WAAE,OAAA,gBAAe,qBAAsB,OAAO,EAAE;sBAEnD,OAAO,KAAK,GAAA,GAAA,UAAA;aAEjB,mBAES,UAAA;GAFD,OAAM;GAA0B,SAAO,OAAA;qBAC1C,OAAA,EAAC,KAAA,CAAA,GAAA,CAAA,CAAA,CAAA;EAIR,mBAyEM,OAzEN,aAyEM,CAxEJ,YAGE,OAAA,mBAAA;GAFC,gBAAc,OAAA,UAAU,OAAA,EAAC,qBAAA,IAA0B,KAAA;GACnD,cAAY,OAAA,QAAQ,OAAA,EAAC,OAAA,IAAY,KAAA;gDAEnB,OAAA,WAAO,CAAK,OAAA,SAAA,UAAA,GAA7B,mBAmEW,UAAA,EAAA,KAAA,EAAA,GAAA,CAAA,CAlEG,OAAA,eAAe,OAAA,gBAAA,UAAA,GAA3B,mBAEM,OAFN,aAEM,gBADD,OAAA,EAAC,gBAAA,CAAA,GAAA,CAAA,MAAA,UAAA,IAAA,GAEN,mBA8DM,UAAA,EAAA,KAAA,EAAA,GAAA,WA9DgB,OAAA,cAAV,WAAM;uBAAlB,mBA8DM,OAAA,EA9DqC,KAAK,OAAO,GAAA,GAAA,CACrC,OAAA,SAAS,OAAA,aAAa,OAAO,IAAI,UAAA,UAAA,GAAjD,mBA4DW,UAAA,EAAA,KAAA,EAAA,GAAA,CA3DT,mBAKM,OAAA;IAJH,IAAE,qBAAuB,OAAO;IACjC,OAAM;sBAEH,OAAO,KAAK,GAAA,GAAA,WAAA,IAAA,UAAA,IAAA,GAEjB,mBAoDM,UAAA,MAAA,WAnDmB,OAAA,SAAS,OAAA,aAAa,OAAO,MAA7C,iBAAY;wBADrB,mBAoDM,OAAA;KAlDH,IAAA,yBAAkE,aAAa,eAAwD,aAAa;KAMpJ,KAAK,aAAa,eAAY,KAAQ,aAAa;KACpD,OAAM;QAEN,mBAEO,QAAA;KAFA,UAAU,aAAa;KAAW,OAAM;uBAC1C,OAAA,YAAY,aAAa,SAAS,CAAA,GAAA,GAAA,WAAA,GAEvC,YAqCc,wBAAA;KApCZ,OAAM;KACL,IAAE;;2BAAkF,aAAa,UAAS;;KAI1G,OAAO,OAAA,EAAC,qBAAA,EAAA,MAA8B,aAAa,MAAK,CAAA;;4BAiBvD,CAAA,eAfF,mBAeE,OAAA;MAXA,OAAM;MACN,QAAO;MACP,OAAM;MACN,eAAY;MACxB,KAAI;MAES,OAA8B,OAAA,EAAC,sBAAA,EAAA,MAAuD,aAAa,YAAY,MAAA,CAAA;kDATjF,OAAA,iBAAiB,aAAa,YAAY,UAAQ,KAAA,CAAA,CAAA,CAAA,GAenF,mBAYM,OAZN,aAYM,CAXJ,mBAUM,OAVN,aAUM,CARI,aAAa,UAAA,UAAA,GADrB,mBAKM,OALN,aAKM,gBADD,OAAA,EAAC,MAAA,CAAA,GAAA,CAAA,KAAA,mBAAA,QAAA,IAAA,GAEN,mBAEM,OAFN,aAEM,gBADD,aAAa,YAAY,KAAK,GAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"RadioProgressBar-BHAawrHe.mjs","names":[],"sources":["../src/components/misc/player/radio/RadioProgressBar.vue","../src/components/misc/player/radio/RadioProgressBar.vue"],"sourcesContent":["<template>\n <progress\n class=\"c-hand-auto mt-1\"\n min=\"0\"\n max=\"100\"\n :value=\"percentProgress\"\n :aria-label=\"t('Radio')\"\n :class=\"isAmbiance ? 'ambiance-progress' : ''\"\n />\n</template>\n\n<script setup lang=\"ts\">\nimport { usePlayerStore } from \"../../../../stores/PlayerStore\";\nimport dayjs from \"dayjs\";\nimport { useI18n } from \"vue-i18n\";\nimport { computed, onMounted, onUnmounted, ref, Ref } from \"vue\";\n\n//Data \nconst percentInterval: Ref<ReturnType<typeof setTimeout> | undefined> = ref(undefined);\n\n//Composables\nconst { t } = useI18n();\nconst playerStore = usePlayerStore();\n\n\n//Computed\nconst isAmbiance = computed(() => !playerStore.playerRadio?.podcast?.podcastId);\nconst percentProgress = computed(() => {\n if (!playerStore.playerElapsed) {\n return 0;\n }\n return playerStore.playerElapsed * 100;\n});\n\n\nonMounted(()=>handlePercentInterval())\nonUnmounted(()=>clearInterval(percentInterval.value as unknown as number))\n\n\n//Methods\nfunction handlePercentInterval(): void {\n percentInterval.value = setInterval(() => {calculatePercent();}, 1000);\n}\nfunction calculatePercent(): void {\n if (!playerStore.playerRadio?.metadata) {\n return;\n }\n const actualMilliSecondsPlayed = dayjs()\n .subtract(18, \"second\")\n .diff(dayjs(playerStore.playerRadio.metadata.startDate));\n const percentPlayed =\n actualMilliSecondsPlayed /\n (playerStore.playerRadio?.metadata.playDuration * 1000);\n playerStore.playerUpdateElapsed(\n percentPlayed,\n playerStore.playerRadio?.metadata.playDuration,\n );\n}\n</script>\n\n<style scoped lang=\"scss\">\n.octopus-app {\n progress {\n background-color: var(--octopus-player-progress-background-color);\n border-radius: var(--octopus-border-radius);\n accent-color: var(--octopus-player-progress-color-current);\n color: var(--octopus-player-progress-color-current);\n border: none;\n\n &::-moz-progress-bar, &::-webkit-progress-value {\n background: var(--octopus-player-progress-color-current);\n }\n }\n}\n</style>\n","<template>\n <progress\n class=\"c-hand-auto mt-1\"\n min=\"0\"\n max=\"100\"\n :value=\"percentProgress\"\n :aria-label=\"t('Radio')\"\n :class=\"isAmbiance ? 'ambiance-progress' : ''\"\n />\n</template>\n\n<script setup lang=\"ts\">\nimport { usePlayerStore } from \"../../../../stores/PlayerStore\";\nimport dayjs from \"dayjs\";\nimport { useI18n } from \"vue-i18n\";\nimport { computed, onMounted, onUnmounted, ref, Ref } from \"vue\";\n\n//Data \nconst percentInterval: Ref<ReturnType<typeof setTimeout> | undefined> = ref(undefined);\n\n//Composables\nconst { t } = useI18n();\nconst playerStore = usePlayerStore();\n\n\n//Computed\nconst isAmbiance = computed(() => !playerStore.playerRadio?.podcast?.podcastId);\nconst percentProgress = computed(() => {\n if (!playerStore.playerElapsed) {\n return 0;\n }\n return playerStore.playerElapsed * 100;\n});\n\n\nonMounted(()=>handlePercentInterval())\nonUnmounted(()=>clearInterval(percentInterval.value as unknown as number))\n\n\n//Methods\nfunction handlePercentInterval(): void {\n percentInterval.value = setInterval(() => {calculatePercent();}, 1000);\n}\nfunction calculatePercent(): void {\n if (!playerStore.playerRadio?.metadata) {\n return;\n }\n const actualMilliSecondsPlayed = dayjs()\n .subtract(18, \"second\")\n .diff(dayjs(playerStore.playerRadio.metadata.startDate));\n const percentPlayed =\n actualMilliSecondsPlayed /\n (playerStore.playerRadio?.metadata.playDuration * 1000);\n playerStore.playerUpdateElapsed(\n percentPlayed,\n playerStore.playerRadio?.metadata.playDuration,\n );\n}\n</script>\n\n<style scoped lang=\"scss\">\n.octopus-app {\n progress {\n background-color: var(--octopus-player-progress-background-color);\n border-radius: var(--octopus-border-radius);\n accent-color: var(--octopus-player-progress-color-current);\n color: var(--octopus-player-progress-color-current);\n border: none;\n\n &::-moz-progress-bar, &::-webkit-progress-value {\n background: var(--octopus-player-progress-color-current);\n }\n }\n}\n</style>\n"],"mappings":";;;;;;;;;;EAkBA,MAAM,kBAAkE,IAAI,KAAA,CAAS;EAGrF,MAAM,EAAE,MAAM,QAAQ;EACtB,MAAM,cAAc,eAAe;EAInC,MAAM,aAAa,eAAe,CAAC,YAAY,aAAa,SAAS,SAAS;EAC9E,MAAM,kBAAkB,eAAe;GACrC,IAAI,CAAC,YAAY,eACf,OAAO;GAET,OAAO,YAAY,gBAAgB;EACrC,CAAC;EAGD,gBAAc,sBAAsB,CAAC;EACrC,kBAAgB,cAAc,gBAAgB,KAA0B,CAAC;EAIzE,SAAS,wBAA8B;GACrC,gBAAgB,QAAQ,kBAAkB;IAAC,iBAAiB;GAAE,GAAG,GAAI;EACvE;EACA,SAAS,mBAAyB;GAChC,IAAI,CAAC,YAAY,aAAa,UAC5B;GAKF,MAAM,gBAH2B,MAAM,EACpC,SAAS,IAAI,QAAQ,EACrB,KAAK,MAAM,YAAY,YAAY,SAAS,SAAS,CAEtD,KACC,YAAY,aAAa,SAAS,eAAe;GAClD,YAAY,oBACZ,eACA,YAAY,aAAa,SAAS,YACpC;EACF;;;;;;;;;;;;;;;;;;;;;qBCxDE,mBAOE,YAAA;EANA,OAAK,eAAA,CAAC,oBAKE,OAAA,aAAU,sBAAA,EAAA,CAAA;EAJlB,KAAI;EACJ,KAAI;EACH,OAAO,OAAA;EACP,cAAY,OAAA,EAAC,OAAA"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"RadioProgressBar-CPjLAoPB.mjs","names":[],"sources":["../src/components/misc/player/radio/RadioProgressBar.vue","../src/components/misc/player/radio/RadioProgressBar.vue"],"sourcesContent":["<template>\n <progress\n class=\"c-hand-auto mt-1\"\n min=\"0\"\n max=\"100\"\n :value=\"percentProgress\"\n :aria-label=\"t('Radio')\"\n :class=\"isAmbiance ? 'ambiance-progress' : ''\"\n />\n</template>\n\n<script setup lang=\"ts\">\nimport { usePlayerStore } from \"../../../../stores/PlayerStore\";\nimport dayjs from \"dayjs\";\nimport { useI18n } from \"vue-i18n\";\nimport { computed, onMounted, onUnmounted, ref, Ref } from \"vue\";\n\n//Data \nconst percentInterval: Ref<ReturnType<typeof setTimeout> | undefined> = ref(undefined);\n\n//Composables\nconst { t } = useI18n();\nconst playerStore = usePlayerStore();\n\n\n//Computed\nconst isAmbiance = computed(() => !playerStore.playerRadio?.podcast?.podcastId);\nconst percentProgress = computed(() => {\n if (!playerStore.playerElapsed) {\n return 0;\n }\n return playerStore.playerElapsed * 100;\n});\n\n\nonMounted(()=>handlePercentInterval())\nonUnmounted(()=>clearInterval(percentInterval.value as unknown as number))\n\n\n//Methods\nfunction handlePercentInterval(): void {\n percentInterval.value = setInterval(() => {calculatePercent();}, 1000);\n}\nfunction calculatePercent(): void {\n if (!playerStore.playerRadio?.metadata) {\n return;\n }\n const actualMilliSecondsPlayed = dayjs()\n .subtract(18, \"second\")\n .diff(dayjs(playerStore.playerRadio.metadata.startDate));\n const percentPlayed =\n actualMilliSecondsPlayed /\n (playerStore.playerRadio?.metadata.playDuration * 1000);\n playerStore.playerUpdateElapsed(\n percentPlayed,\n playerStore.playerRadio?.metadata.playDuration,\n );\n}\n</script>\n\n<style scoped lang=\"scss\">\n.octopus-app {\n progress {\n background-color: var(--octopus-player-progress-background-color);\n border-radius: var(--octopus-border-radius);\n accent-color: var(--octopus-player-progress-color-current);\n color: var(--octopus-player-progress-color-current);\n border: none;\n\n &::-moz-progress-bar, &::-webkit-progress-value {\n background: var(--octopus-player-progress-color-current);\n }\n }\n}\n</style>\n","<template>\n <progress\n class=\"c-hand-auto mt-1\"\n min=\"0\"\n max=\"100\"\n :value=\"percentProgress\"\n :aria-label=\"t('Radio')\"\n :class=\"isAmbiance ? 'ambiance-progress' : ''\"\n />\n</template>\n\n<script setup lang=\"ts\">\nimport { usePlayerStore } from \"../../../../stores/PlayerStore\";\nimport dayjs from \"dayjs\";\nimport { useI18n } from \"vue-i18n\";\nimport { computed, onMounted, onUnmounted, ref, Ref } from \"vue\";\n\n//Data \nconst percentInterval: Ref<ReturnType<typeof setTimeout> | undefined> = ref(undefined);\n\n//Composables\nconst { t } = useI18n();\nconst playerStore = usePlayerStore();\n\n\n//Computed\nconst isAmbiance = computed(() => !playerStore.playerRadio?.podcast?.podcastId);\nconst percentProgress = computed(() => {\n if (!playerStore.playerElapsed) {\n return 0;\n }\n return playerStore.playerElapsed * 100;\n});\n\n\nonMounted(()=>handlePercentInterval())\nonUnmounted(()=>clearInterval(percentInterval.value as unknown as number))\n\n\n//Methods\nfunction handlePercentInterval(): void {\n percentInterval.value = setInterval(() => {calculatePercent();}, 1000);\n}\nfunction calculatePercent(): void {\n if (!playerStore.playerRadio?.metadata) {\n return;\n }\n const actualMilliSecondsPlayed = dayjs()\n .subtract(18, \"second\")\n .diff(dayjs(playerStore.playerRadio.metadata.startDate));\n const percentPlayed =\n actualMilliSecondsPlayed /\n (playerStore.playerRadio?.metadata.playDuration * 1000);\n playerStore.playerUpdateElapsed(\n percentPlayed,\n playerStore.playerRadio?.metadata.playDuration,\n );\n}\n</script>\n\n<style scoped lang=\"scss\">\n.octopus-app {\n progress {\n background-color: var(--octopus-player-progress-background-color);\n border-radius: var(--octopus-border-radius);\n accent-color: var(--octopus-player-progress-color-current);\n color: var(--octopus-player-progress-color-current);\n border: none;\n\n &::-moz-progress-bar, &::-webkit-progress-value {\n background: var(--octopus-player-progress-color-current);\n }\n }\n}\n</style>\n"],"mappings":";;;;;;;;;;EAkBA,MAAM,kBAAkE,IAAI,KAAA,CAAS;EAGrF,MAAM,EAAE,MAAM,QAAQ;EACtB,MAAM,cAAc,eAAe;EAInC,MAAM,aAAa,eAAe,CAAC,YAAY,aAAa,SAAS,SAAS;EAC9E,MAAM,kBAAkB,eAAe;GACrC,IAAI,CAAC,YAAY,eACf,OAAO;GAET,OAAO,YAAY,gBAAgB;EACrC,CAAC;EAGD,gBAAc,sBAAsB,CAAC;EACrC,kBAAgB,cAAc,gBAAgB,KAA0B,CAAC;EAIzE,SAAS,wBAA8B;GACrC,gBAAgB,QAAQ,kBAAkB;IAAC,iBAAiB;GAAE,GAAG,GAAI;EACvE;EACA,SAAS,mBAAyB;GAChC,IAAI,CAAC,YAAY,aAAa,UAC5B;GAKF,MAAM,gBAH2B,MAAM,EACpC,SAAS,IAAI,QAAQ,EACrB,KAAK,MAAM,YAAY,YAAY,SAAS,SAAS,CAEtD,KACC,YAAY,aAAa,SAAS,eAAe;GAClD,YAAY,oBACZ,eACA,YAAY,aAAa,SAAS,YACpC;EACF;;;;;;;;;;;;;;;;;;;;;qBCxDE,mBAOE,YAAA;EANA,OAAK,eAAA,CAAC,oBAKE,OAAA,aAAU,sBAAA,EAAA,CAAA;EAJlB,KAAI;EACJ,KAAI;EACH,OAAO,OAAA;EACP,cAAY,OAAA,EAAC,OAAA"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { t as _plugin_vue_export_helper_default } from "./_plugin-vue_export-helper-BOaGB7Aw.mjs";
|
|
2
|
-
import { n as usePlayerStore } from "./PlayerStore-
|
|
2
|
+
import { n as usePlayerStore } from "./PlayerStore-vYmnOEA_.mjs";
|
|
3
3
|
import { computed, createElementBlock, defineComponent, normalizeClass, onMounted, onUnmounted, openBlock, ref } from "vue";
|
|
4
4
|
import { useI18n } from "vue-i18n";
|
|
5
5
|
import dayjs from "dayjs";
|
|
@@ -64,4 +64,4 @@ var RadioProgressBar_default = /*#__PURE__*/ _plugin_vue_export_helper_default(R
|
|
|
64
64
|
//#endregion
|
|
65
65
|
export { RadioProgressBar_default as default };
|
|
66
66
|
|
|
67
|
-
//# sourceMappingURL=RadioProgressBar-
|
|
67
|
+
//# sourceMappingURL=RadioProgressBar-yIz1oI5d.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"RadioProgressBar-yIz1oI5d.mjs","names":[],"sources":["../src/components/misc/player/radio/RadioProgressBar.vue","../src/components/misc/player/radio/RadioProgressBar.vue"],"sourcesContent":["<template>\n <progress\n class=\"c-hand-auto mt-1\"\n min=\"0\"\n max=\"100\"\n :value=\"percentProgress\"\n :aria-label=\"t('Radio')\"\n :class=\"isAmbiance ? 'ambiance-progress' : ''\"\n />\n</template>\n\n<script setup lang=\"ts\">\nimport { usePlayerStore } from \"../../../../stores/PlayerStore\";\nimport dayjs from \"dayjs\";\nimport { useI18n } from \"vue-i18n\";\nimport { computed, onMounted, onUnmounted, ref, Ref } from \"vue\";\n\n//Data \nconst percentInterval: Ref<ReturnType<typeof setTimeout> | undefined> = ref(undefined);\n\n//Composables\nconst { t } = useI18n();\nconst playerStore = usePlayerStore();\n\n\n//Computed\nconst isAmbiance = computed(() => !playerStore.playerRadio?.podcast?.podcastId);\nconst percentProgress = computed(() => {\n if (!playerStore.playerElapsed) {\n return 0;\n }\n return playerStore.playerElapsed * 100;\n});\n\n\nonMounted(()=>handlePercentInterval())\nonUnmounted(()=>clearInterval(percentInterval.value as unknown as number))\n\n\n//Methods\nfunction handlePercentInterval(): void {\n percentInterval.value = setInterval(() => {calculatePercent();}, 1000);\n}\nfunction calculatePercent(): void {\n if (!playerStore.playerRadio?.metadata) {\n return;\n }\n const actualMilliSecondsPlayed = dayjs()\n .subtract(18, \"second\")\n .diff(dayjs(playerStore.playerRadio.metadata.startDate));\n const percentPlayed =\n actualMilliSecondsPlayed /\n (playerStore.playerRadio?.metadata.playDuration * 1000);\n playerStore.playerUpdateElapsed(\n percentPlayed,\n playerStore.playerRadio?.metadata.playDuration,\n );\n}\n</script>\n\n<style scoped lang=\"scss\">\n.octopus-app {\n progress {\n background-color: var(--octopus-player-progress-background-color);\n border-radius: var(--octopus-border-radius);\n accent-color: var(--octopus-player-progress-color-current);\n color: var(--octopus-player-progress-color-current);\n border: none;\n\n &::-moz-progress-bar, &::-webkit-progress-value {\n background: var(--octopus-player-progress-color-current);\n }\n }\n}\n</style>\n","<template>\n <progress\n class=\"c-hand-auto mt-1\"\n min=\"0\"\n max=\"100\"\n :value=\"percentProgress\"\n :aria-label=\"t('Radio')\"\n :class=\"isAmbiance ? 'ambiance-progress' : ''\"\n />\n</template>\n\n<script setup lang=\"ts\">\nimport { usePlayerStore } from \"../../../../stores/PlayerStore\";\nimport dayjs from \"dayjs\";\nimport { useI18n } from \"vue-i18n\";\nimport { computed, onMounted, onUnmounted, ref, Ref } from \"vue\";\n\n//Data \nconst percentInterval: Ref<ReturnType<typeof setTimeout> | undefined> = ref(undefined);\n\n//Composables\nconst { t } = useI18n();\nconst playerStore = usePlayerStore();\n\n\n//Computed\nconst isAmbiance = computed(() => !playerStore.playerRadio?.podcast?.podcastId);\nconst percentProgress = computed(() => {\n if (!playerStore.playerElapsed) {\n return 0;\n }\n return playerStore.playerElapsed * 100;\n});\n\n\nonMounted(()=>handlePercentInterval())\nonUnmounted(()=>clearInterval(percentInterval.value as unknown as number))\n\n\n//Methods\nfunction handlePercentInterval(): void {\n percentInterval.value = setInterval(() => {calculatePercent();}, 1000);\n}\nfunction calculatePercent(): void {\n if (!playerStore.playerRadio?.metadata) {\n return;\n }\n const actualMilliSecondsPlayed = dayjs()\n .subtract(18, \"second\")\n .diff(dayjs(playerStore.playerRadio.metadata.startDate));\n const percentPlayed =\n actualMilliSecondsPlayed /\n (playerStore.playerRadio?.metadata.playDuration * 1000);\n playerStore.playerUpdateElapsed(\n percentPlayed,\n playerStore.playerRadio?.metadata.playDuration,\n );\n}\n</script>\n\n<style scoped lang=\"scss\">\n.octopus-app {\n progress {\n background-color: var(--octopus-player-progress-background-color);\n border-radius: var(--octopus-border-radius);\n accent-color: var(--octopus-player-progress-color-current);\n color: var(--octopus-player-progress-color-current);\n border: none;\n\n &::-moz-progress-bar, &::-webkit-progress-value {\n background: var(--octopus-player-progress-color-current);\n }\n }\n}\n</style>\n"],"mappings":";;;;;;;;;;EAkBA,MAAM,kBAAkE,IAAI,KAAA,CAAS;EAGrF,MAAM,EAAE,MAAM,QAAQ;EACtB,MAAM,cAAc,eAAe;EAInC,MAAM,aAAa,eAAe,CAAC,YAAY,aAAa,SAAS,SAAS;EAC9E,MAAM,kBAAkB,eAAe;GACrC,IAAI,CAAC,YAAY,eACf,OAAO;GAET,OAAO,YAAY,gBAAgB;EACrC,CAAC;EAGD,gBAAc,sBAAsB,CAAC;EACrC,kBAAgB,cAAc,gBAAgB,KAA0B,CAAC;EAIzE,SAAS,wBAA8B;GACrC,gBAAgB,QAAQ,kBAAkB;IAAC,iBAAiB;GAAE,GAAG,GAAI;EACvE;EACA,SAAS,mBAAyB;GAChC,IAAI,CAAC,YAAY,aAAa,UAC5B;GAKF,MAAM,gBAH2B,MAAM,EACpC,SAAS,IAAI,QAAQ,EACrB,KAAK,MAAM,YAAY,YAAY,SAAS,SAAS,CAEtD,KACC,YAAY,aAAa,SAAS,eAAe;GAClD,YAAY,oBACZ,eACA,YAAY,aAAa,SAAS,YACpC;EACF;;;;;;;;;;;;;;;;;;;;;qBCxDE,mBAOE,YAAA;EANA,OAAK,eAAA,CAAC,oBAKE,OAAA,aAAU,sBAAA,EAAA,CAAA;EAJlB,KAAI;EACJ,KAAI;EACH,OAAO,OAAA;EACP,cAAY,OAAA,EAAC,OAAA"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"RecaptchaModal-DKugsU7h.mjs","names":[],"sources":["../src/components/display/comments/modal/RecaptchaModal.vue","../src/components/display/comments/modal/RecaptchaModal.vue"],"sourcesContent":["<template>\n <ClassicModal\n :id-modal=\"idModal\"\n :title-modal=\"titleModal\"\n :closable=\"false\"\n @close=\"closePopup\"\n >\n <template #body>\n <div class=\"text-center text-danger\">{{ errorRecaptchaText }}</div>\n <slot v-if=\"!isInTreatment\" name=\"form\" />\n <ClassicLoading\n v-else\n :loading-text=\"\n isInTreatment && !errorText && !successText\n ? t('Loading content ...')\n : undefined\n \"\n :error-text=\"errorText\"\n />\n <div v-if=\"successText\" class=\"text-center h3\">{{ successText }}</div>\n </template>\n <template #footer>\n <button class=\"btn m-1\" @click=\"closePopup\">\n {{ t(\"Close\") }}\n </button>\n <vue-recaptcha\n v-if=\"!isVerify\"\n ref=\"invisibleRecaptcha\"\n :load-recaptcha-script=\"true\"\n size=\"invisible\"\n sitekey=\"6LfyP_4ZAAAAAPODj8nov2LvosIwcX0GYeBSungh\"\n @verify=\"handleSuccess\"\n @expired=\"handleError\"\n />\n <button\n v-if=\"!errorText && !successText\"\n class=\"btn btn-primary m-1\"\n :disabled=\"disableValidate || isInTreatment\"\n @click=\"submit\"\n >\n {{ t(\"Yes\") }}\n </button>\n </template>\n </ClassicModal>\n</template>\n\n<script setup lang=\"ts\">\nimport { state } from \"../../../../stores/ParamSdkStore\";\nimport ClassicLoading from \"../../../form/ClassicLoading.vue\";\nimport ClassicModal from \"../../../misc/modal/ClassicModal.vue\";\nimport { CHECK_TOKEN_KEY } from \"../../../composable/keys\";\nimport { VueRecaptcha } from \"vue-recaptcha\";\nimport { computed, inject, ref, useTemplateRef } from \"vue\";\nimport { useI18n } from \"vue-i18n\";\n\n//Props \ndefineProps({\n idModal: { default: undefined, type: String },\n titleModal: { default: undefined, type: String },\n disableValidate: { default: false, type: Boolean },\n errorText: { default: undefined, type: String },\n successText: { default: undefined, type: String },\n})\n\n//Emits\nconst emit = defineEmits([\"close\", \"validate\"]);\n\n//Data \nconst sendError = ref(false);\nconst isVerify = ref(false);\nconst isInTreatment = ref(false);\nconst captchRef = useTemplateRef('invisibleRecaptcha');\n\n\n//Composables\nconst { t } = useI18n();\n// checkToken is not defined in the SDK: it is resolved at runtime from the\n// consuming app's globally provided implementation (app.provide()), and\n// defaults to always-verified when the app hasn't provided one.\nconst checkToken = inject(CHECK_TOKEN_KEY, async () => true);\n\n//Computed\nconst errorRecaptchaText = computed(() =>{\n if (isCaptchaTest.value) {\n return t(\"Recaptcha not active\");\n }\n return sendError.value ? t(\"Recaptcha error\") : \"\";\n});\nconst isCaptchaTest = computed(() => state.generalParameters.isCaptchaTest as boolean);\n\n\n//Methods\nasync function handleSuccess(token: string) {\n isVerify.value = await checkToken(token);\n sendAction();\n}\nfunction handleError() {\n isVerify.value = false;\n sendError.value = true;\n}\nasync function submit(): Promise<void> {\n isInTreatment.value = true;\n if (!isVerify.value && !isCaptchaTest.value) {\n (captchRef?.value as InstanceType<typeof VueRecaptcha>).execute();\n }\n sendAction();\n}\nfunction closePopup(): void {\n emit(\"close\");\n}\nfunction sendAction(): void {\n emit(\"validate\");\n}\n</script>\n","<template>\n <ClassicModal\n :id-modal=\"idModal\"\n :title-modal=\"titleModal\"\n :closable=\"false\"\n @close=\"closePopup\"\n >\n <template #body>\n <div class=\"text-center text-danger\">{{ errorRecaptchaText }}</div>\n <slot v-if=\"!isInTreatment\" name=\"form\" />\n <ClassicLoading\n v-else\n :loading-text=\"\n isInTreatment && !errorText && !successText\n ? t('Loading content ...')\n : undefined\n \"\n :error-text=\"errorText\"\n />\n <div v-if=\"successText\" class=\"text-center h3\">{{ successText }}</div>\n </template>\n <template #footer>\n <button class=\"btn m-1\" @click=\"closePopup\">\n {{ t(\"Close\") }}\n </button>\n <vue-recaptcha\n v-if=\"!isVerify\"\n ref=\"invisibleRecaptcha\"\n :load-recaptcha-script=\"true\"\n size=\"invisible\"\n sitekey=\"6LfyP_4ZAAAAAPODj8nov2LvosIwcX0GYeBSungh\"\n @verify=\"handleSuccess\"\n @expired=\"handleError\"\n />\n <button\n v-if=\"!errorText && !successText\"\n class=\"btn btn-primary m-1\"\n :disabled=\"disableValidate || isInTreatment\"\n @click=\"submit\"\n >\n {{ t(\"Yes\") }}\n </button>\n </template>\n </ClassicModal>\n</template>\n\n<script setup lang=\"ts\">\nimport { state } from \"../../../../stores/ParamSdkStore\";\nimport ClassicLoading from \"../../../form/ClassicLoading.vue\";\nimport ClassicModal from \"../../../misc/modal/ClassicModal.vue\";\nimport { CHECK_TOKEN_KEY } from \"../../../composable/keys\";\nimport { VueRecaptcha } from \"vue-recaptcha\";\nimport { computed, inject, ref, useTemplateRef } from \"vue\";\nimport { useI18n } from \"vue-i18n\";\n\n//Props \ndefineProps({\n idModal: { default: undefined, type: String },\n titleModal: { default: undefined, type: String },\n disableValidate: { default: false, type: Boolean },\n errorText: { default: undefined, type: String },\n successText: { default: undefined, type: String },\n})\n\n//Emits\nconst emit = defineEmits([\"close\", \"validate\"]);\n\n//Data \nconst sendError = ref(false);\nconst isVerify = ref(false);\nconst isInTreatment = ref(false);\nconst captchRef = useTemplateRef('invisibleRecaptcha');\n\n\n//Composables\nconst { t } = useI18n();\n// checkToken is not defined in the SDK: it is resolved at runtime from the\n// consuming app's globally provided implementation (app.provide()), and\n// defaults to always-verified when the app hasn't provided one.\nconst checkToken = inject(CHECK_TOKEN_KEY, async () => true);\n\n//Computed\nconst errorRecaptchaText = computed(() =>{\n if (isCaptchaTest.value) {\n return t(\"Recaptcha not active\");\n }\n return sendError.value ? t(\"Recaptcha error\") : \"\";\n});\nconst isCaptchaTest = computed(() => state.generalParameters.isCaptchaTest as boolean);\n\n\n//Methods\nasync function handleSuccess(token: string) {\n isVerify.value = await checkToken(token);\n sendAction();\n}\nfunction handleError() {\n isVerify.value = false;\n sendError.value = true;\n}\nasync function submit(): Promise<void> {\n isInTreatment.value = true;\n if (!isVerify.value && !isCaptchaTest.value) {\n (captchRef?.value as InstanceType<typeof VueRecaptcha>).execute();\n }\n sendAction();\n}\nfunction closePopup(): void {\n emit(\"close\");\n}\nfunction sendAction(): void {\n emit(\"validate\");\n}\n</script>\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAiEA,MAAM,OAAO;EAGb,MAAM,YAAY,IAAI,KAAK;EAC3B,MAAM,WAAW,IAAI,KAAK;EAC1B,MAAM,gBAAgB,IAAI,KAAK;EAC/B,MAAM,YAAY,eAAe,oBAAoB;EAIrD,MAAM,EAAE,MAAM,QAAQ;EAItB,MAAM,aAAa,OAAO,iBAAiB,YAAY,IAAI;EAG3D,MAAM,qBAAqB,eAAc;GACvC,IAAI,cAAc,OAChB,OAAO,EAAE,sBAAsB;GAEjC,OAAO,UAAU,QAAQ,EAAE,iBAAiB,IAAI;EAClD,CAAC;EACD,MAAM,gBAAgB,eAAe,MAAM,kBAAkB,aAAwB;EAIrF,eAAe,cAAc,OAAe;GAC1C,SAAS,QAAQ,MAAM,WAAW,KAAK;GACvC,WAAW;EACb;EACA,SAAS,cAAc;GACrB,SAAS,QAAQ;GACjB,UAAU,QAAQ;EACpB;EACA,eAAe,SAAwB;GACrC,cAAc,QAAQ;GACtB,IAAI,CAAC,SAAS,SAAS,CAAC,cAAc,OACpC,CAAC,WAAW,OAA4C,QAAQ;GAElE,WAAW;EACb;EACA,SAAS,aAAmB;GAC1B,KAAK,OAAO;EACd;EACA,SAAS,aAAmB;GAC1B,KAAK,UAAU;EACjB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;mBCxGW,OAAM,0BAAyB;;;CAWZ,OAAM;;;;qBAlBlC,YA0Ce,OAAA,iBAAA;EAzCZ,YAAU,OAAA;EACV,eAAa,OAAA;EACb,UAAU;EACV,SAAO,OAAA;;EAEG,MAAI,cACsD;GAAnE,mBAAmE,OAAnE,YAAmE,gBAA3B,OAAA,kBAAkB,GAAA,CAAA;IAC7C,OAAA,gBAAb,WAA0C,KAAA,QAAA,QAAA,EAAA,KAAA,EAAA,CAAA,KAAA,UAAA,GAC1C,YAQE,OAAA,mBAAA;;IANC,gBAAyB,OAAA,iBAAa,CAAK,OAAA,aAAS,CAAK,OAAA,cAA0B,OAAA,EAAC,qBAAA,IAAsC,KAAA;IAK1H,cAAY,OAAA;;GAEJ,OAAA,eAAA,UAAA,GAAX,mBAAsE,OAAtE,YAAsE,gBAApB,OAAA,WAAW,GAAA,CAAA,KAAA,mBAAA,QAAA,IAAA;;EAEpD,QAAM,cAGN;GAFT,mBAES,UAAA;IAFD,OAAM;IAAW,SAAO,OAAA;sBAC3B,OAAA,EAAC,OAAA,CAAA,GAAA,CAAA;IAGG,OAAA,YAAA,UAAA,GADT,YAQE,OAAA,iBAAA;;IANA,KAAI;IACH,yBAAuB;IACxB,MAAK;IACL,SAAQ;IACP,UAAQ,OAAA;IACR,WAAS,OAAA;;IAGH,OAAA,aAAS,CAAK,OAAA,eAAA,UAAA,GADvB,mBAOS,UAAA;;IALP,OAAM;IACL,UAAU,OAAA,mBAAmB,OAAA;IAC7B,SAAO,OAAA;sBAEL,OAAA,EAAC,KAAA,CAAA,GAAA,GAAA,UAAA,KAAA,mBAAA,QAAA,IAAA"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { t as _plugin_vue_export_helper_default } from "./_plugin-vue_export-helper-BOaGB7Aw.mjs";
|
|
2
2
|
import { t as ClassicLoading_default } from "./ClassicLoading-Crlw7cAx.mjs";
|
|
3
|
-
import { A as state } from "./classicApi-
|
|
3
|
+
import { A as state } from "./classicApi-xjOqAovv.mjs";
|
|
4
4
|
import { t as ClassicModal_default } from "./ClassicModal-CilwHp9p.mjs";
|
|
5
5
|
import { t as CHECK_TOKEN_KEY } from "./keys-TjlLYNQE.mjs";
|
|
6
6
|
import { computed, createBlock, createCommentVNode, createElementBlock, createElementVNode, defineComponent, inject, openBlock, ref, renderSlot, toDisplayString, useTemplateRef, withCtx } from "vue";
|
|
@@ -145,4 +145,4 @@ var RecaptchaModal_default = /*#__PURE__*/ _plugin_vue_export_helper_default(Rec
|
|
|
145
145
|
//#endregion
|
|
146
146
|
export { RecaptchaModal_default as t };
|
|
147
147
|
|
|
148
|
-
//# sourceMappingURL=RecaptchaModal-
|
|
148
|
+
//# sourceMappingURL=RecaptchaModal-dfMCfebx.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"RecaptchaModal-dfMCfebx.mjs","names":[],"sources":["../src/components/display/comments/modal/RecaptchaModal.vue","../src/components/display/comments/modal/RecaptchaModal.vue"],"sourcesContent":["<template>\n <ClassicModal\n :id-modal=\"idModal\"\n :title-modal=\"titleModal\"\n :closable=\"false\"\n @close=\"closePopup\"\n >\n <template #body>\n <div class=\"text-center text-danger\">{{ errorRecaptchaText }}</div>\n <slot v-if=\"!isInTreatment\" name=\"form\" />\n <ClassicLoading\n v-else\n :loading-text=\"\n isInTreatment && !errorText && !successText\n ? t('Loading content ...')\n : undefined\n \"\n :error-text=\"errorText\"\n />\n <div v-if=\"successText\" class=\"text-center h3\">{{ successText }}</div>\n </template>\n <template #footer>\n <button class=\"btn m-1\" @click=\"closePopup\">\n {{ t(\"Close\") }}\n </button>\n <vue-recaptcha\n v-if=\"!isVerify\"\n ref=\"invisibleRecaptcha\"\n :load-recaptcha-script=\"true\"\n size=\"invisible\"\n sitekey=\"6LfyP_4ZAAAAAPODj8nov2LvosIwcX0GYeBSungh\"\n @verify=\"handleSuccess\"\n @expired=\"handleError\"\n />\n <button\n v-if=\"!errorText && !successText\"\n class=\"btn btn-primary m-1\"\n :disabled=\"disableValidate || isInTreatment\"\n @click=\"submit\"\n >\n {{ t(\"Yes\") }}\n </button>\n </template>\n </ClassicModal>\n</template>\n\n<script setup lang=\"ts\">\nimport { state } from \"../../../../stores/ParamSdkStore\";\nimport ClassicLoading from \"../../../form/ClassicLoading.vue\";\nimport ClassicModal from \"../../../misc/modal/ClassicModal.vue\";\nimport { CHECK_TOKEN_KEY } from \"../../../composable/keys\";\nimport { VueRecaptcha } from \"vue-recaptcha\";\nimport { computed, inject, ref, useTemplateRef } from \"vue\";\nimport { useI18n } from \"vue-i18n\";\n\n//Props \ndefineProps({\n idModal: { default: undefined, type: String },\n titleModal: { default: undefined, type: String },\n disableValidate: { default: false, type: Boolean },\n errorText: { default: undefined, type: String },\n successText: { default: undefined, type: String },\n})\n\n//Emits\nconst emit = defineEmits([\"close\", \"validate\"]);\n\n//Data \nconst sendError = ref(false);\nconst isVerify = ref(false);\nconst isInTreatment = ref(false);\nconst captchRef = useTemplateRef('invisibleRecaptcha');\n\n\n//Composables\nconst { t } = useI18n();\n// checkToken is not defined in the SDK: it is resolved at runtime from the\n// consuming app's globally provided implementation (app.provide()), and\n// defaults to always-verified when the app hasn't provided one.\nconst checkToken = inject(CHECK_TOKEN_KEY, async () => true);\n\n//Computed\nconst errorRecaptchaText = computed(() =>{\n if (isCaptchaTest.value) {\n return t(\"Recaptcha not active\");\n }\n return sendError.value ? t(\"Recaptcha error\") : \"\";\n});\nconst isCaptchaTest = computed(() => state.generalParameters.isCaptchaTest as boolean);\n\n\n//Methods\nasync function handleSuccess(token: string) {\n isVerify.value = await checkToken(token);\n sendAction();\n}\nfunction handleError() {\n isVerify.value = false;\n sendError.value = true;\n}\nasync function submit(): Promise<void> {\n isInTreatment.value = true;\n if (!isVerify.value && !isCaptchaTest.value) {\n (captchRef?.value as InstanceType<typeof VueRecaptcha>).execute();\n }\n sendAction();\n}\nfunction closePopup(): void {\n emit(\"close\");\n}\nfunction sendAction(): void {\n emit(\"validate\");\n}\n</script>\n","<template>\n <ClassicModal\n :id-modal=\"idModal\"\n :title-modal=\"titleModal\"\n :closable=\"false\"\n @close=\"closePopup\"\n >\n <template #body>\n <div class=\"text-center text-danger\">{{ errorRecaptchaText }}</div>\n <slot v-if=\"!isInTreatment\" name=\"form\" />\n <ClassicLoading\n v-else\n :loading-text=\"\n isInTreatment && !errorText && !successText\n ? t('Loading content ...')\n : undefined\n \"\n :error-text=\"errorText\"\n />\n <div v-if=\"successText\" class=\"text-center h3\">{{ successText }}</div>\n </template>\n <template #footer>\n <button class=\"btn m-1\" @click=\"closePopup\">\n {{ t(\"Close\") }}\n </button>\n <vue-recaptcha\n v-if=\"!isVerify\"\n ref=\"invisibleRecaptcha\"\n :load-recaptcha-script=\"true\"\n size=\"invisible\"\n sitekey=\"6LfyP_4ZAAAAAPODj8nov2LvosIwcX0GYeBSungh\"\n @verify=\"handleSuccess\"\n @expired=\"handleError\"\n />\n <button\n v-if=\"!errorText && !successText\"\n class=\"btn btn-primary m-1\"\n :disabled=\"disableValidate || isInTreatment\"\n @click=\"submit\"\n >\n {{ t(\"Yes\") }}\n </button>\n </template>\n </ClassicModal>\n</template>\n\n<script setup lang=\"ts\">\nimport { state } from \"../../../../stores/ParamSdkStore\";\nimport ClassicLoading from \"../../../form/ClassicLoading.vue\";\nimport ClassicModal from \"../../../misc/modal/ClassicModal.vue\";\nimport { CHECK_TOKEN_KEY } from \"../../../composable/keys\";\nimport { VueRecaptcha } from \"vue-recaptcha\";\nimport { computed, inject, ref, useTemplateRef } from \"vue\";\nimport { useI18n } from \"vue-i18n\";\n\n//Props \ndefineProps({\n idModal: { default: undefined, type: String },\n titleModal: { default: undefined, type: String },\n disableValidate: { default: false, type: Boolean },\n errorText: { default: undefined, type: String },\n successText: { default: undefined, type: String },\n})\n\n//Emits\nconst emit = defineEmits([\"close\", \"validate\"]);\n\n//Data \nconst sendError = ref(false);\nconst isVerify = ref(false);\nconst isInTreatment = ref(false);\nconst captchRef = useTemplateRef('invisibleRecaptcha');\n\n\n//Composables\nconst { t } = useI18n();\n// checkToken is not defined in the SDK: it is resolved at runtime from the\n// consuming app's globally provided implementation (app.provide()), and\n// defaults to always-verified when the app hasn't provided one.\nconst checkToken = inject(CHECK_TOKEN_KEY, async () => true);\n\n//Computed\nconst errorRecaptchaText = computed(() =>{\n if (isCaptchaTest.value) {\n return t(\"Recaptcha not active\");\n }\n return sendError.value ? t(\"Recaptcha error\") : \"\";\n});\nconst isCaptchaTest = computed(() => state.generalParameters.isCaptchaTest as boolean);\n\n\n//Methods\nasync function handleSuccess(token: string) {\n isVerify.value = await checkToken(token);\n sendAction();\n}\nfunction handleError() {\n isVerify.value = false;\n sendError.value = true;\n}\nasync function submit(): Promise<void> {\n isInTreatment.value = true;\n if (!isVerify.value && !isCaptchaTest.value) {\n (captchRef?.value as InstanceType<typeof VueRecaptcha>).execute();\n }\n sendAction();\n}\nfunction closePopup(): void {\n emit(\"close\");\n}\nfunction sendAction(): void {\n emit(\"validate\");\n}\n</script>\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAiEA,MAAM,OAAO;EAGb,MAAM,YAAY,IAAI,KAAK;EAC3B,MAAM,WAAW,IAAI,KAAK;EAC1B,MAAM,gBAAgB,IAAI,KAAK;EAC/B,MAAM,YAAY,eAAe,oBAAoB;EAIrD,MAAM,EAAE,MAAM,QAAQ;EAItB,MAAM,aAAa,OAAO,iBAAiB,YAAY,IAAI;EAG3D,MAAM,qBAAqB,eAAc;GACvC,IAAI,cAAc,OAChB,OAAO,EAAE,sBAAsB;GAEjC,OAAO,UAAU,QAAQ,EAAE,iBAAiB,IAAI;EAClD,CAAC;EACD,MAAM,gBAAgB,eAAe,MAAM,kBAAkB,aAAwB;EAIrF,eAAe,cAAc,OAAe;GAC1C,SAAS,QAAQ,MAAM,WAAW,KAAK;GACvC,WAAW;EACb;EACA,SAAS,cAAc;GACrB,SAAS,QAAQ;GACjB,UAAU,QAAQ;EACpB;EACA,eAAe,SAAwB;GACrC,cAAc,QAAQ;GACtB,IAAI,CAAC,SAAS,SAAS,CAAC,cAAc,OACpC,CAAC,WAAW,OAA4C,QAAQ;GAElE,WAAW;EACb;EACA,SAAS,aAAmB;GAC1B,KAAK,OAAO;EACd;EACA,SAAS,aAAmB;GAC1B,KAAK,UAAU;EACjB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;mBCxGW,OAAM,0BAAyB;;;CAWZ,OAAM;;;;qBAlBlC,YA0Ce,OAAA,iBAAA;EAzCZ,YAAU,OAAA;EACV,eAAa,OAAA;EACb,UAAU;EACV,SAAO,OAAA;;EAEG,MAAI,cACsD;GAAnE,mBAAmE,OAAnE,YAAmE,gBAA3B,OAAA,kBAAkB,GAAA,CAAA;IAC7C,OAAA,gBAAb,WAA0C,KAAA,QAAA,QAAA,EAAA,KAAA,EAAA,CAAA,KAAA,UAAA,GAC1C,YAQE,OAAA,mBAAA;;IANC,gBAAyB,OAAA,iBAAa,CAAK,OAAA,aAAS,CAAK,OAAA,cAA0B,OAAA,EAAC,qBAAA,IAAsC,KAAA;IAK1H,cAAY,OAAA;;GAEJ,OAAA,eAAA,UAAA,GAAX,mBAAsE,OAAtE,YAAsE,gBAApB,OAAA,WAAW,GAAA,CAAA,KAAA,mBAAA,QAAA,IAAA;;EAEpD,QAAM,cAGN;GAFT,mBAES,UAAA;IAFD,OAAM;IAAW,SAAO,OAAA;sBAC3B,OAAA,EAAC,OAAA,CAAA,GAAA,CAAA;IAGG,OAAA,YAAA,UAAA,GADT,YAQE,OAAA,iBAAA;;IANA,KAAI;IACH,yBAAuB;IACxB,MAAK;IACL,SAAQ;IACP,UAAQ,OAAA;IACR,WAAS,OAAA;;IAGH,OAAA,aAAS,CAAK,OAAA,eAAA,UAAA,GADvB,mBAOS,UAAA;;IALP,OAAM;IACL,UAAU,OAAA,mBAAmB,OAAA;IAC7B,SAAO,OAAA;sBAEL,OAAA,EAAC,KAAA,CAAA,GAAA,GAAA,UAAA,KAAA,mBAAA,QAAA,IAAA"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ReportAbuseModal-Bxr7NTvH.mjs","names":[],"sources":["../src/components/display/comments/modal/ReportAbuseModal.vue","../src/components/display/comments/modal/ReportAbuseModal.vue"],"sourcesContent":["<template>\n <RecaptchaModal\n id-modal=\"report-abuse-modal\"\n :title-modal=\"t('Report abuse')\"\n :disable-validate=\"errorName || abuseDescriptionError\"\n :error-text=\"errorSendAbuse\"\n :success-text=\"successText\"\n @close=\"emit('close')\"\n @validate=\"reportAbuse\"\n >\n <template #form>\n <ClassicInputText\n v-if=\"!commentStore.commentUser?.name\"\n v-model:text-init=\"name\"\n v-model:error-variable=\"errorName\"\n input-id=\"comment-user-name\"\n focus\n :label=\"t('Let\\'s get acquainted :')\"\n :max-length=\"Constants.MAX_COMMENT_NAME\"\n :placeholder=\"t('Your name')\"\n autocomplete-type=\"name\"\n />\n <ClassicInputText\n v-model:text-init=\"abuseDescription\"\n v-model:error-variable=\"abuseDescriptionError\"\n :is-textarea=\"true\"\n input-id=\"abuse-description\"\n :label=\"t('Describe the reason for the report')\"\n :max-length=\"Constants.MAX_COMMENT\"\n :focus=\"true\"\n />\n </template>\n </RecaptchaModal>\n</template>\n\n<script setup lang=\"ts\">\nimport Constants from \"../../../../../public/config\";\nimport ClassicInputText from \"../../../form/ClassicInputText.vue\";\nimport RecaptchaModal from \"./RecaptchaModal.vue\";\nimport { Ref, ref } from \"vue\";\nimport { useCommentStore } from \"../../../../stores/CommentStore\";\nimport classicApi from \"../../../../api/classicApi\";\nimport {\n CommentAbuseInfo,\n CommentPodcast,\n} from \"@/stores/class/general/comment\";\nimport { useI18n } from \"vue-i18n\";\n\n\n//Props \nconst props = defineProps({\n comment: { default: undefined, type: Object as () => CommentPodcast },\n})\n\n//Emits\nconst emit = defineEmits([\"close\", \"update:comment\"]);\n\n//Data \nconst errorName = ref(false);\nconst name: Ref<string | undefined> = ref(undefined);\nconst abuseDescription: Ref<string | undefined> = ref(undefined);\nconst abuseDescriptionError = ref(true);\nconst errorSendAbuse: Ref<string | undefined> = ref(undefined);\nconst successText: Ref<string | undefined> = ref(undefined);\n\n\n//Composables\nconst { t } = useI18n();\nconst commentStore = useCommentStore();\n\n//Methods\nasync function reportAbuse(): Promise<void> {\n if (!commentStore.commentUser?.name) {\n commentStore.setCommentUser(name.value ?? \"\");\n }\n try {\n const abuseObject = {\n commentId: props.comment?.commentId,\n description: abuseDescription.value,\n uuid: commentStore.commentUser?.uuid,\n };\n const commentAbuseInfo = await classicApi.postData<CommentAbuseInfo>({\n api: 2,\n path: \"abuse/\",\n dataToSend: abuseObject,\n });\n emit(\"update:comment\", {\n ...props.comment,\n ...{ abuse: commentAbuseInfo.abuseCount },\n });\n successText.value = t(\"Thank you for reporting abuse\");\n } catch {\n errorSendAbuse.value = t(\n \"Error occurs while post your comment...\",\n );\n }\n}\n</script>\n","<template>\n <RecaptchaModal\n id-modal=\"report-abuse-modal\"\n :title-modal=\"t('Report abuse')\"\n :disable-validate=\"errorName || abuseDescriptionError\"\n :error-text=\"errorSendAbuse\"\n :success-text=\"successText\"\n @close=\"emit('close')\"\n @validate=\"reportAbuse\"\n >\n <template #form>\n <ClassicInputText\n v-if=\"!commentStore.commentUser?.name\"\n v-model:text-init=\"name\"\n v-model:error-variable=\"errorName\"\n input-id=\"comment-user-name\"\n focus\n :label=\"t('Let\\'s get acquainted :')\"\n :max-length=\"Constants.MAX_COMMENT_NAME\"\n :placeholder=\"t('Your name')\"\n autocomplete-type=\"name\"\n />\n <ClassicInputText\n v-model:text-init=\"abuseDescription\"\n v-model:error-variable=\"abuseDescriptionError\"\n :is-textarea=\"true\"\n input-id=\"abuse-description\"\n :label=\"t('Describe the reason for the report')\"\n :max-length=\"Constants.MAX_COMMENT\"\n :focus=\"true\"\n />\n </template>\n </RecaptchaModal>\n</template>\n\n<script setup lang=\"ts\">\nimport Constants from \"../../../../../public/config\";\nimport ClassicInputText from \"../../../form/ClassicInputText.vue\";\nimport RecaptchaModal from \"./RecaptchaModal.vue\";\nimport { Ref, ref } from \"vue\";\nimport { useCommentStore } from \"../../../../stores/CommentStore\";\nimport classicApi from \"../../../../api/classicApi\";\nimport {\n CommentAbuseInfo,\n CommentPodcast,\n} from \"@/stores/class/general/comment\";\nimport { useI18n } from \"vue-i18n\";\n\n\n//Props \nconst props = defineProps({\n comment: { default: undefined, type: Object as () => CommentPodcast },\n})\n\n//Emits\nconst emit = defineEmits([\"close\", \"update:comment\"]);\n\n//Data \nconst errorName = ref(false);\nconst name: Ref<string | undefined> = ref(undefined);\nconst abuseDescription: Ref<string | undefined> = ref(undefined);\nconst abuseDescriptionError = ref(true);\nconst errorSendAbuse: Ref<string | undefined> = ref(undefined);\nconst successText: Ref<string | undefined> = ref(undefined);\n\n\n//Composables\nconst { t } = useI18n();\nconst commentStore = useCommentStore();\n\n//Methods\nasync function reportAbuse(): Promise<void> {\n if (!commentStore.commentUser?.name) {\n commentStore.setCommentUser(name.value ?? \"\");\n }\n try {\n const abuseObject = {\n commentId: props.comment?.commentId,\n description: abuseDescription.value,\n uuid: commentStore.commentUser?.uuid,\n };\n const commentAbuseInfo = await classicApi.postData<CommentAbuseInfo>({\n api: 2,\n path: \"abuse/\",\n dataToSend: abuseObject,\n });\n emit(\"update:comment\", {\n ...props.comment,\n ...{ abuse: commentAbuseInfo.abuseCount },\n });\n successText.value = t(\"Thank you for reporting abuse\");\n } catch {\n errorSendAbuse.value = t(\n \"Error occurs while post your comment...\",\n );\n }\n}\n</script>\n"],"mappings":";;;;;;;;;;;;;;;;;;EAkDA,MAAM,QAAQ;EAKd,MAAM,OAAO;EAGb,MAAM,YAAY,IAAI,KAAK;EAC3B,MAAM,OAAgC,IAAI,KAAA,CAAS;EACnD,MAAM,mBAA4C,IAAI,KAAA,CAAS;EAC/D,MAAM,wBAAwB,IAAI,IAAI;EACtC,MAAM,iBAA0C,IAAI,KAAA,CAAS;EAC7D,MAAM,cAAuC,IAAI,KAAA,CAAS;EAI1D,MAAM,EAAE,MAAM,QAAQ;EACtB,MAAM,eAAe,gBAAgB;EAGrC,eAAe,cAA6B;GAC1C,IAAI,CAAC,aAAa,aAAa,MAC7B,aAAa,eAAe,KAAK,SAAS,EAAE;GAE9C,IAAI;IACF,MAAM,cAAc;KAClB,WAAW,MAAM,SAAS;KAC1B,aAAa,iBAAiB;KAC9B,MAAM,aAAa,aAAa;IAClC;IACA,MAAM,mBAAmB,MAAM,mBAAW,SAA2B;KACnE,KAAK;KACL,MAAM;KACN,YAAY;IACd,CAAC;IACD,KAAK,kBAAkB;KACrB,GAAG,MAAM;KACJ,OAAO,iBAAiB;IAC/B,CAAC;IACD,YAAY,QAAQ,EAAE,+BAA+B;GACvD,QAAQ;IACN,eAAe,QAAQ,EACrB,yCACF;GACF;EACF;;;;;;;;;;;;;;;;;;;;;;;;;;;;;qBC/FE,YA+BiB,OAAA,mBAAA;EA9Bf,YAAS;EACR,eAAa,OAAA,EAAC,cAAA;EACd,oBAAkB,OAAA,aAAa,OAAA;EAC/B,cAAY,OAAA;EACZ,gBAAc,OAAA;EACd,SAAK,OAAA,OAAA,OAAA,MAAA,WAAE,OAAA,KAAI,OAAA;EACX,YAAU,OAAA;;EAEA,MAAI,cAWX,CAAA,CATO,OAAA,aAAa,aAAa,QAAA,UAAA,GADnC,YAUE,OAAA,qBAAA;;GARQ,aAAW,OAAA;8DAAA,OAAA,OAAI;GACf,kBAAgB,OAAA;mEAAA,OAAA,YAAS;GACjC,YAAS;GACT,OAAA;GACC,OAAO,OAAA,EAAC,wBAAA;GACR,cAAY,OAAA,UAAU;GACtB,aAAa,OAAA,EAAC,WAAA;GACf,qBAAkB;;;;;;;0CAEpB,YAQE,OAAA,qBAAA;GAPQ,aAAW,OAAA;8DAAA,OAAA,mBAAgB;GAC3B,kBAAgB,OAAA;mEAAA,OAAA,wBAAqB;GAC5C,eAAa;GACd,YAAS;GACR,OAAO,OAAA,EAAC,oCAAA;GACR,cAAY,OAAA,UAAU;GACtB,OAAO"}
|
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
import { t as _plugin_vue_export_helper_default } from "./_plugin-vue_export-helper-BOaGB7Aw.mjs";
|
|
2
|
-
import { t as classicApi_default } from "./classicApi-
|
|
3
|
-
import { t as useCommentStore } from "./CommentStore-
|
|
2
|
+
import { t as classicApi_default } from "./classicApi-xjOqAovv.mjs";
|
|
3
|
+
import { t as useCommentStore } from "./CommentStore-ClU882RI.mjs";
|
|
4
4
|
import { t as config_default } from "./config-C73GMJpz.mjs";
|
|
5
5
|
import { t as ClassicInputText_default } from "./ClassicInputText-D2wR2cwa.mjs";
|
|
6
|
-
import { t as RecaptchaModal_default } from "./RecaptchaModal-
|
|
6
|
+
import { t as RecaptchaModal_default } from "./RecaptchaModal-dfMCfebx.mjs";
|
|
7
7
|
import { createBlock, createCommentVNode, createVNode, defineComponent, openBlock, ref, withCtx } from "vue";
|
|
8
8
|
import { useI18n } from "vue-i18n";
|
|
9
9
|
//#region src/components/display/comments/modal/ReportAbuseModal.vue?vue&type=script&setup=true&lang.ts
|
|
@@ -131,4 +131,4 @@ var ReportAbuseModal_default = /*#__PURE__*/ _plugin_vue_export_helper_default(R
|
|
|
131
131
|
//#endregion
|
|
132
132
|
export { ReportAbuseModal_default as default };
|
|
133
133
|
|
|
134
|
-
//# sourceMappingURL=ReportAbuseModal-
|
|
134
|
+
//# sourceMappingURL=ReportAbuseModal-DZKRbYXJ.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ReportAbuseModal-DZKRbYXJ.mjs","names":[],"sources":["../src/components/display/comments/modal/ReportAbuseModal.vue","../src/components/display/comments/modal/ReportAbuseModal.vue"],"sourcesContent":["<template>\n <RecaptchaModal\n id-modal=\"report-abuse-modal\"\n :title-modal=\"t('Report abuse')\"\n :disable-validate=\"errorName || abuseDescriptionError\"\n :error-text=\"errorSendAbuse\"\n :success-text=\"successText\"\n @close=\"emit('close')\"\n @validate=\"reportAbuse\"\n >\n <template #form>\n <ClassicInputText\n v-if=\"!commentStore.commentUser?.name\"\n v-model:text-init=\"name\"\n v-model:error-variable=\"errorName\"\n input-id=\"comment-user-name\"\n focus\n :label=\"t('Let\\'s get acquainted :')\"\n :max-length=\"Constants.MAX_COMMENT_NAME\"\n :placeholder=\"t('Your name')\"\n autocomplete-type=\"name\"\n />\n <ClassicInputText\n v-model:text-init=\"abuseDescription\"\n v-model:error-variable=\"abuseDescriptionError\"\n :is-textarea=\"true\"\n input-id=\"abuse-description\"\n :label=\"t('Describe the reason for the report')\"\n :max-length=\"Constants.MAX_COMMENT\"\n :focus=\"true\"\n />\n </template>\n </RecaptchaModal>\n</template>\n\n<script setup lang=\"ts\">\nimport Constants from \"../../../../../public/config\";\nimport ClassicInputText from \"../../../form/ClassicInputText.vue\";\nimport RecaptchaModal from \"./RecaptchaModal.vue\";\nimport { Ref, ref } from \"vue\";\nimport { useCommentStore } from \"../../../../stores/CommentStore\";\nimport classicApi from \"../../../../api/classicApi\";\nimport {\n CommentAbuseInfo,\n CommentPodcast,\n} from \"@/stores/class/general/comment\";\nimport { useI18n } from \"vue-i18n\";\n\n\n//Props \nconst props = defineProps({\n comment: { default: undefined, type: Object as () => CommentPodcast },\n})\n\n//Emits\nconst emit = defineEmits([\"close\", \"update:comment\"]);\n\n//Data \nconst errorName = ref(false);\nconst name: Ref<string | undefined> = ref(undefined);\nconst abuseDescription: Ref<string | undefined> = ref(undefined);\nconst abuseDescriptionError = ref(true);\nconst errorSendAbuse: Ref<string | undefined> = ref(undefined);\nconst successText: Ref<string | undefined> = ref(undefined);\n\n\n//Composables\nconst { t } = useI18n();\nconst commentStore = useCommentStore();\n\n//Methods\nasync function reportAbuse(): Promise<void> {\n if (!commentStore.commentUser?.name) {\n commentStore.setCommentUser(name.value ?? \"\");\n }\n try {\n const abuseObject = {\n commentId: props.comment?.commentId,\n description: abuseDescription.value,\n uuid: commentStore.commentUser?.uuid,\n };\n const commentAbuseInfo = await classicApi.postData<CommentAbuseInfo>({\n api: 2,\n path: \"abuse/\",\n dataToSend: abuseObject,\n });\n emit(\"update:comment\", {\n ...props.comment,\n ...{ abuse: commentAbuseInfo.abuseCount },\n });\n successText.value = t(\"Thank you for reporting abuse\");\n } catch {\n errorSendAbuse.value = t(\n \"Error occurs while post your comment...\",\n );\n }\n}\n</script>\n","<template>\n <RecaptchaModal\n id-modal=\"report-abuse-modal\"\n :title-modal=\"t('Report abuse')\"\n :disable-validate=\"errorName || abuseDescriptionError\"\n :error-text=\"errorSendAbuse\"\n :success-text=\"successText\"\n @close=\"emit('close')\"\n @validate=\"reportAbuse\"\n >\n <template #form>\n <ClassicInputText\n v-if=\"!commentStore.commentUser?.name\"\n v-model:text-init=\"name\"\n v-model:error-variable=\"errorName\"\n input-id=\"comment-user-name\"\n focus\n :label=\"t('Let\\'s get acquainted :')\"\n :max-length=\"Constants.MAX_COMMENT_NAME\"\n :placeholder=\"t('Your name')\"\n autocomplete-type=\"name\"\n />\n <ClassicInputText\n v-model:text-init=\"abuseDescription\"\n v-model:error-variable=\"abuseDescriptionError\"\n :is-textarea=\"true\"\n input-id=\"abuse-description\"\n :label=\"t('Describe the reason for the report')\"\n :max-length=\"Constants.MAX_COMMENT\"\n :focus=\"true\"\n />\n </template>\n </RecaptchaModal>\n</template>\n\n<script setup lang=\"ts\">\nimport Constants from \"../../../../../public/config\";\nimport ClassicInputText from \"../../../form/ClassicInputText.vue\";\nimport RecaptchaModal from \"./RecaptchaModal.vue\";\nimport { Ref, ref } from \"vue\";\nimport { useCommentStore } from \"../../../../stores/CommentStore\";\nimport classicApi from \"../../../../api/classicApi\";\nimport {\n CommentAbuseInfo,\n CommentPodcast,\n} from \"@/stores/class/general/comment\";\nimport { useI18n } from \"vue-i18n\";\n\n\n//Props \nconst props = defineProps({\n comment: { default: undefined, type: Object as () => CommentPodcast },\n})\n\n//Emits\nconst emit = defineEmits([\"close\", \"update:comment\"]);\n\n//Data \nconst errorName = ref(false);\nconst name: Ref<string | undefined> = ref(undefined);\nconst abuseDescription: Ref<string | undefined> = ref(undefined);\nconst abuseDescriptionError = ref(true);\nconst errorSendAbuse: Ref<string | undefined> = ref(undefined);\nconst successText: Ref<string | undefined> = ref(undefined);\n\n\n//Composables\nconst { t } = useI18n();\nconst commentStore = useCommentStore();\n\n//Methods\nasync function reportAbuse(): Promise<void> {\n if (!commentStore.commentUser?.name) {\n commentStore.setCommentUser(name.value ?? \"\");\n }\n try {\n const abuseObject = {\n commentId: props.comment?.commentId,\n description: abuseDescription.value,\n uuid: commentStore.commentUser?.uuid,\n };\n const commentAbuseInfo = await classicApi.postData<CommentAbuseInfo>({\n api: 2,\n path: \"abuse/\",\n dataToSend: abuseObject,\n });\n emit(\"update:comment\", {\n ...props.comment,\n ...{ abuse: commentAbuseInfo.abuseCount },\n });\n successText.value = t(\"Thank you for reporting abuse\");\n } catch {\n errorSendAbuse.value = t(\n \"Error occurs while post your comment...\",\n );\n }\n}\n</script>\n"],"mappings":";;;;;;;;;;;;;;;;;;EAkDA,MAAM,QAAQ;EAKd,MAAM,OAAO;EAGb,MAAM,YAAY,IAAI,KAAK;EAC3B,MAAM,OAAgC,IAAI,KAAA,CAAS;EACnD,MAAM,mBAA4C,IAAI,KAAA,CAAS;EAC/D,MAAM,wBAAwB,IAAI,IAAI;EACtC,MAAM,iBAA0C,IAAI,KAAA,CAAS;EAC7D,MAAM,cAAuC,IAAI,KAAA,CAAS;EAI1D,MAAM,EAAE,MAAM,QAAQ;EACtB,MAAM,eAAe,gBAAgB;EAGrC,eAAe,cAA6B;GAC1C,IAAI,CAAC,aAAa,aAAa,MAC7B,aAAa,eAAe,KAAK,SAAS,EAAE;GAE9C,IAAI;IACF,MAAM,cAAc;KAClB,WAAW,MAAM,SAAS;KAC1B,aAAa,iBAAiB;KAC9B,MAAM,aAAa,aAAa;IAClC;IACA,MAAM,mBAAmB,MAAM,mBAAW,SAA2B;KACnE,KAAK;KACL,MAAM;KACN,YAAY;IACd,CAAC;IACD,KAAK,kBAAkB;KACrB,GAAG,MAAM;KACJ,OAAO,iBAAiB;IAC/B,CAAC;IACD,YAAY,QAAQ,EAAE,+BAA+B;GACvD,QAAQ;IACN,eAAe,QAAQ,EACrB,yCACF;GACF;EACF;;;;;;;;;;;;;;;;;;;;;;;;;;;;;qBC/FE,YA+BiB,OAAA,mBAAA;EA9Bf,YAAS;EACR,eAAa,OAAA,EAAC,cAAA;EACd,oBAAkB,OAAA,aAAa,OAAA;EAC/B,cAAY,OAAA;EACZ,gBAAc,OAAA;EACd,SAAK,OAAA,OAAA,OAAA,MAAA,WAAE,OAAA,KAAI,OAAA;EACX,YAAU,OAAA;;EAEA,MAAI,cAWX,CAAA,CATO,OAAA,aAAa,aAAa,QAAA,UAAA,GADnC,YAUE,OAAA,qBAAA;;GARQ,aAAW,OAAA;8DAAA,OAAA,OAAI;GACf,kBAAgB,OAAA;mEAAA,OAAA,YAAS;GACjC,YAAS;GACT,OAAA;GACC,OAAO,OAAA,EAAC,wBAAA;GACR,cAAY,OAAA,UAAU;GACtB,aAAa,OAAA,EAAC,WAAA;GACf,qBAAkB;;;;;;;0CAEpB,YAQE,OAAA,qBAAA;GAPQ,aAAW,OAAA;8DAAA,OAAA,mBAAgB;GAC3B,kBAAgB,OAAA;mEAAA,OAAA,wBAAqB;GAC5C,eAAa;GACd,YAAS;GACR,OAAO,OAAA,EAAC,oCAAA;GACR,cAAY,OAAA,UAAU;GACtB,OAAO"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"RightsIndicator-BgW0q3af.mjs","names":[],"sources":["../src/components/display/RightsIndicator.vue","../src/components/display/RightsIndicator.vue"],"sourcesContent":["<template>\n <div\n v-if=\"displayIndicator\"\n :class=\"{ inline: inline }\"\n title=\"\"\n >\n <RightsWrapper\n v-if=\"!text\"\n v-slot=\"{ id }\"\n v-bind=\"props\"\n >\n <Icon\n :id=\"id\"\n class=\"rights-indicator-icon\"\n :class=\"{ invisible: hasAccess }\"\n aria-hidden=\"true\"\n fill-color=\"var(--octopus-primary)\"\n :size=\"inline ? 20 : 24\"\n />\n </RightsWrapper>\n <div aria-live=\"polite\" aria-atomic=\"true\">\n <ClassicAlert\n v-if=\"text && !hasAccess\"\n type=\"info\"\n >\n <template #icon>\n <Icon\n aria-hidden=\"true\"\n fill-color=\"var(--octopus-primary)\"\n />\n </template>\n {{ message }}\n </ClassicAlert>\n </div>\n </div>\n</template>\n\n<script setup lang=\"ts\">\nimport ClassicAlert from '../misc/ClassicAlert.vue';\nimport Icons from '@/components/icons'; \nimport RightsWrapper from './RightsWrapper.vue'; \nimport { RightsProps, useRightsIndicator } from '../composable/useRightsIndicator';\n\nconst Icon = Icons.RightsIndicator;\n\ntype PropsBase = RightsProps & {\n /** Display reason as text instead of only tooltip */\n text?: boolean;\n /** Use inline instead of block */\n inline?: boolean;\n}\n\nconst props = defineProps<PropsBase>();\n\nconst { displayIndicator, hasAccess, message } = useRightsIndicator(props);\n</script>\n\n<style scoped lang=\"scss\">\ndiv.inline {\n display: inline;\n // Properly align text with it\n vertical-align: top;\n}\n\n.inline div {\n display: inline;\n}\n\n.inline .rights-indicator-icon {\n display: inline-flex;\n // Propertly align content\n position: relative;\n bottom: -4px;\n // Ensure it doesn't take place in the text\n height: 1px;\n}\n\n.inline .invisible {\n display: none;\n}\n\n/** Helper class to keep the data accessible for screen readers */\n.rights-visually-hidden {\n position: absolute;\n width: 1px;\n height: 1px;\n padding: 0;\n margin: -1px;\n overflow: hidden;\n clip: rect(0, 0, 0, 0);\n white-space: nowrap;\n border: 0;\n}\n</style>\n","<template>\n <div\n v-if=\"displayIndicator\"\n :class=\"{ inline: inline }\"\n title=\"\"\n >\n <RightsWrapper\n v-if=\"!text\"\n v-slot=\"{ id }\"\n v-bind=\"props\"\n >\n <Icon\n :id=\"id\"\n class=\"rights-indicator-icon\"\n :class=\"{ invisible: hasAccess }\"\n aria-hidden=\"true\"\n fill-color=\"var(--octopus-primary)\"\n :size=\"inline ? 20 : 24\"\n />\n </RightsWrapper>\n <div aria-live=\"polite\" aria-atomic=\"true\">\n <ClassicAlert\n v-if=\"text && !hasAccess\"\n type=\"info\"\n >\n <template #icon>\n <Icon\n aria-hidden=\"true\"\n fill-color=\"var(--octopus-primary)\"\n />\n </template>\n {{ message }}\n </ClassicAlert>\n </div>\n </div>\n</template>\n\n<script setup lang=\"ts\">\nimport ClassicAlert from '../misc/ClassicAlert.vue';\nimport Icons from '@/components/icons'; \nimport RightsWrapper from './RightsWrapper.vue'; \nimport { RightsProps, useRightsIndicator } from '../composable/useRightsIndicator';\n\nconst Icon = Icons.RightsIndicator;\n\ntype PropsBase = RightsProps & {\n /** Display reason as text instead of only tooltip */\n text?: boolean;\n /** Use inline instead of block */\n inline?: boolean;\n}\n\nconst props = defineProps<PropsBase>();\n\nconst { displayIndicator, hasAccess, message } = useRightsIndicator(props);\n</script>\n\n<style scoped lang=\"scss\">\ndiv.inline {\n display: inline;\n // Properly align text with it\n vertical-align: top;\n}\n\n.inline div {\n display: inline;\n}\n\n.inline .rights-indicator-icon {\n display: inline-flex;\n // Propertly align content\n position: relative;\n bottom: -4px;\n // Ensure it doesn't take place in the text\n height: 1px;\n}\n\n.inline .invisible {\n display: none;\n}\n\n/** Helper class to keep the data accessible for screen readers */\n.rights-visually-hidden {\n position: absolute;\n width: 1px;\n height: 1px;\n padding: 0;\n margin: -1px;\n overflow: hidden;\n clip: rect(0, 0, 0, 0);\n white-space: nowrap;\n border: 0;\n}\n</style>\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EA2CA,MAAM,OAAO,cAAM;EASnB,MAAM,QAAQ;EAEd,MAAM,EAAE,kBAAkB,WAAW,YAAY,mBAAmB,KAAK;;;;;;;;;;;;;;;;;;;;;CClC5D,aAAU;CAAS,eAAY;;;QAlB9B,OAAA,oBAAA,UAAA,GADV,mBAiCM,OAAA;;EA/BD,OAAK,eAAA,EAAA,QAAY,OAAA,OAAM,CAAA;EACxB,OAAM;MAGK,OAAA,QAAA,UAAA,GADX,YAagB,OAAA,kBAAA,eAAA,WAAA,EAAA,KAAA,EAAA,GAVJ,OAAA,KAAK,CAAA,GAAA;oBASX,EAVQ,SAAE,CAGZ,YAOE,OAAA,SAAA;GANO;GACL,OAAK,eAAA,CAAC,yBAAuB,EAAA,WACR,OAAA,UAAS,CAAA,CAAA;GAC9B,eAAY;GACZ,cAAW;GACV,MAAM,OAAA,SAAM,KAAA;;;;;;;6CAGrB,mBAaM,OAbN,YAaM,CAXQ,OAAA,QAAI,CAAK,OAAA,aAAA,UAAA,GADnB,YAWe,OAAA,iBAAA;;EATX,MAAK;;EAEM,MAAI,cAIT,CAHF,YAGE,OAAA,SAAA;GAFE,eAAY;GACZ,cAAW;;yBAGnB,CAAA,gBADW,MACX,gBAAG,OAAA,OAAO,GAAA,CAAA,CAAA,CAAA"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"RightsIndicator-BtzqiPWc.mjs","names":[],"sources":["../src/components/display/RightsIndicator.vue","../src/components/display/RightsIndicator.vue"],"sourcesContent":["<template>\n <div\n v-if=\"displayIndicator\"\n :class=\"{ inline: inline }\"\n title=\"\"\n >\n <RightsWrapper\n v-if=\"!text\"\n v-slot=\"{ id }\"\n v-bind=\"props\"\n >\n <Icon\n :id=\"id\"\n class=\"rights-indicator-icon\"\n :class=\"{ invisible: hasAccess }\"\n aria-hidden=\"true\"\n fill-color=\"var(--octopus-primary)\"\n :size=\"inline ? 20 : 24\"\n />\n </RightsWrapper>\n <div aria-live=\"polite\" aria-atomic=\"true\">\n <ClassicAlert\n v-if=\"text && !hasAccess\"\n type=\"info\"\n >\n <template #icon>\n <Icon\n aria-hidden=\"true\"\n fill-color=\"var(--octopus-primary)\"\n />\n </template>\n {{ message }}\n </ClassicAlert>\n </div>\n </div>\n</template>\n\n<script setup lang=\"ts\">\nimport ClassicAlert from '../misc/ClassicAlert.vue';\nimport Icons from '@/components/icons'; \nimport RightsWrapper from './RightsWrapper.vue'; \nimport { RightsProps, useRightsIndicator } from '../composable/useRightsIndicator';\n\nconst Icon = Icons.RightsIndicator;\n\ntype PropsBase = RightsProps & {\n /** Display reason as text instead of only tooltip */\n text?: boolean;\n /** Use inline instead of block */\n inline?: boolean;\n}\n\nconst props = defineProps<PropsBase>();\n\nconst { displayIndicator, hasAccess, message } = useRightsIndicator(props);\n</script>\n\n<style scoped lang=\"scss\">\ndiv.inline {\n display: inline;\n // Properly align text with it\n vertical-align: top;\n}\n\n.inline div {\n display: inline;\n}\n\n.inline .rights-indicator-icon {\n display: inline-flex;\n // Propertly align content\n position: relative;\n bottom: -4px;\n // Ensure it doesn't take place in the text\n height: 1px;\n}\n\n.inline .invisible {\n display: none;\n}\n\n/** Helper class to keep the data accessible for screen readers */\n.rights-visually-hidden {\n position: absolute;\n width: 1px;\n height: 1px;\n padding: 0;\n margin: -1px;\n overflow: hidden;\n clip: rect(0, 0, 0, 0);\n white-space: nowrap;\n border: 0;\n}\n</style>\n","<template>\n <div\n v-if=\"displayIndicator\"\n :class=\"{ inline: inline }\"\n title=\"\"\n >\n <RightsWrapper\n v-if=\"!text\"\n v-slot=\"{ id }\"\n v-bind=\"props\"\n >\n <Icon\n :id=\"id\"\n class=\"rights-indicator-icon\"\n :class=\"{ invisible: hasAccess }\"\n aria-hidden=\"true\"\n fill-color=\"var(--octopus-primary)\"\n :size=\"inline ? 20 : 24\"\n />\n </RightsWrapper>\n <div aria-live=\"polite\" aria-atomic=\"true\">\n <ClassicAlert\n v-if=\"text && !hasAccess\"\n type=\"info\"\n >\n <template #icon>\n <Icon\n aria-hidden=\"true\"\n fill-color=\"var(--octopus-primary)\"\n />\n </template>\n {{ message }}\n </ClassicAlert>\n </div>\n </div>\n</template>\n\n<script setup lang=\"ts\">\nimport ClassicAlert from '../misc/ClassicAlert.vue';\nimport Icons from '@/components/icons'; \nimport RightsWrapper from './RightsWrapper.vue'; \nimport { RightsProps, useRightsIndicator } from '../composable/useRightsIndicator';\n\nconst Icon = Icons.RightsIndicator;\n\ntype PropsBase = RightsProps & {\n /** Display reason as text instead of only tooltip */\n text?: boolean;\n /** Use inline instead of block */\n inline?: boolean;\n}\n\nconst props = defineProps<PropsBase>();\n\nconst { displayIndicator, hasAccess, message } = useRightsIndicator(props);\n</script>\n\n<style scoped lang=\"scss\">\ndiv.inline {\n display: inline;\n // Properly align text with it\n vertical-align: top;\n}\n\n.inline div {\n display: inline;\n}\n\n.inline .rights-indicator-icon {\n display: inline-flex;\n // Propertly align content\n position: relative;\n bottom: -4px;\n // Ensure it doesn't take place in the text\n height: 1px;\n}\n\n.inline .invisible {\n display: none;\n}\n\n/** Helper class to keep the data accessible for screen readers */\n.rights-visually-hidden {\n position: absolute;\n width: 1px;\n height: 1px;\n padding: 0;\n margin: -1px;\n overflow: hidden;\n clip: rect(0, 0, 0, 0);\n white-space: nowrap;\n border: 0;\n}\n</style>\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EA2CA,MAAM,OAAO,cAAM;EASnB,MAAM,QAAQ;EAEd,MAAM,EAAE,kBAAkB,WAAW,YAAY,mBAAmB,KAAK;;;;;;;;;;;;;;;;;;;;;CClC5D,aAAU;CAAS,eAAY;;;QAlB9B,OAAA,oBAAA,UAAA,GADV,mBAiCM,OAAA;;EA/BD,OAAK,eAAA,EAAA,QAAY,OAAA,OAAM,CAAA;EACxB,OAAM;MAGK,OAAA,QAAA,UAAA,GADX,YAagB,OAAA,kBAAA,eAAA,WAAA,EAAA,KAAA,EAAA,GAVJ,OAAA,KAAK,CAAA,GAAA;oBASX,EAVQ,SAAE,CAGZ,YAOE,OAAA,SAAA;GANO;GACL,OAAK,eAAA,CAAC,yBAAuB,EAAA,WACR,OAAA,UAAS,CAAA,CAAA;GAC9B,eAAY;GACZ,cAAW;GACV,MAAM,OAAA,SAAM,KAAA;;;;;;;6CAGrB,mBAaM,OAbN,YAaM,CAXQ,OAAA,QAAI,CAAK,OAAA,aAAA,UAAA,GADnB,YAWe,OAAA,iBAAA;;EATX,MAAK;;EAEM,MAAI,cAIT,CAHF,YAGE,OAAA,SAAA;GAFE,eAAY;GACZ,cAAW;;yBAGnB,CAAA,gBADW,MACX,gBAAG,OAAA,OAAO,GAAA,CAAA,CAAA,CAAA"}
|
|
@@ -2,7 +2,7 @@ import { t as __exportAll } from "./rolldown-runtime-D7D4PA-g.mjs";
|
|
|
2
2
|
import { t as _plugin_vue_export_helper_default } from "./_plugin-vue_export-helper-BOaGB7Aw.mjs";
|
|
3
3
|
import { t as icons_default } from "./icons-1GR2yFzw.mjs";
|
|
4
4
|
import { t as ClassicAlert_default } from "./ClassicAlert-DUQplMvs.mjs";
|
|
5
|
-
import { r as useRightsIndicator, t as RightsWrapper_default } from "./RightsWrapper-
|
|
5
|
+
import { r as useRightsIndicator, t as RightsWrapper_default } from "./RightsWrapper-HasUbnny.mjs";
|
|
6
6
|
import { createBlock, createCommentVNode, createElementBlock, createElementVNode, createTextVNode, createVNode, defineComponent, mergeProps, normalizeClass, normalizeProps, openBlock, toDisplayString, withCtx } from "vue";
|
|
7
7
|
//#region src/components/display/RightsIndicator.vue?vue&type=script&setup=true&lang.ts
|
|
8
8
|
var RightsIndicator_vue_vue_type_script_setup_true_lang_default = /*@__PURE__*/ defineComponent({
|
|
@@ -121,4 +121,4 @@ var RightsIndicator_default = /*#__PURE__*/ _plugin_vue_export_helper_default(Ri
|
|
|
121
121
|
//#endregion
|
|
122
122
|
export { RightsIndicator_exports as n, RightsIndicator_default as t };
|
|
123
123
|
|
|
124
|
-
//# sourceMappingURL=RightsIndicator-
|
|
124
|
+
//# sourceMappingURL=RightsIndicator-D5I3DOfO.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"RightsIndicator-D5I3DOfO.mjs","names":[],"sources":["../src/components/display/RightsIndicator.vue","../src/components/display/RightsIndicator.vue"],"sourcesContent":["<template>\n <div\n v-if=\"displayIndicator\"\n :class=\"{ inline: inline }\"\n title=\"\"\n >\n <RightsWrapper\n v-if=\"!text\"\n v-slot=\"{ id }\"\n v-bind=\"props\"\n >\n <Icon\n :id=\"id\"\n class=\"rights-indicator-icon\"\n :class=\"{ invisible: hasAccess }\"\n aria-hidden=\"true\"\n fill-color=\"var(--octopus-primary)\"\n :size=\"inline ? 20 : 24\"\n />\n </RightsWrapper>\n <div aria-live=\"polite\" aria-atomic=\"true\">\n <ClassicAlert\n v-if=\"text && !hasAccess\"\n type=\"info\"\n >\n <template #icon>\n <Icon\n aria-hidden=\"true\"\n fill-color=\"var(--octopus-primary)\"\n />\n </template>\n {{ message }}\n </ClassicAlert>\n </div>\n </div>\n</template>\n\n<script setup lang=\"ts\">\nimport ClassicAlert from '../misc/ClassicAlert.vue';\nimport Icons from '@/components/icons'; \nimport RightsWrapper from './RightsWrapper.vue'; \nimport { RightsProps, useRightsIndicator } from '../composable/useRightsIndicator';\n\nconst Icon = Icons.RightsIndicator;\n\ntype PropsBase = RightsProps & {\n /** Display reason as text instead of only tooltip */\n text?: boolean;\n /** Use inline instead of block */\n inline?: boolean;\n}\n\nconst props = defineProps<PropsBase>();\n\nconst { displayIndicator, hasAccess, message } = useRightsIndicator(props);\n</script>\n\n<style scoped lang=\"scss\">\ndiv.inline {\n display: inline;\n // Properly align text with it\n vertical-align: top;\n}\n\n.inline div {\n display: inline;\n}\n\n.inline .rights-indicator-icon {\n display: inline-flex;\n // Propertly align content\n position: relative;\n bottom: -4px;\n // Ensure it doesn't take place in the text\n height: 1px;\n}\n\n.inline .invisible {\n display: none;\n}\n\n/** Helper class to keep the data accessible for screen readers */\n.rights-visually-hidden {\n position: absolute;\n width: 1px;\n height: 1px;\n padding: 0;\n margin: -1px;\n overflow: hidden;\n clip: rect(0, 0, 0, 0);\n white-space: nowrap;\n border: 0;\n}\n</style>\n","<template>\n <div\n v-if=\"displayIndicator\"\n :class=\"{ inline: inline }\"\n title=\"\"\n >\n <RightsWrapper\n v-if=\"!text\"\n v-slot=\"{ id }\"\n v-bind=\"props\"\n >\n <Icon\n :id=\"id\"\n class=\"rights-indicator-icon\"\n :class=\"{ invisible: hasAccess }\"\n aria-hidden=\"true\"\n fill-color=\"var(--octopus-primary)\"\n :size=\"inline ? 20 : 24\"\n />\n </RightsWrapper>\n <div aria-live=\"polite\" aria-atomic=\"true\">\n <ClassicAlert\n v-if=\"text && !hasAccess\"\n type=\"info\"\n >\n <template #icon>\n <Icon\n aria-hidden=\"true\"\n fill-color=\"var(--octopus-primary)\"\n />\n </template>\n {{ message }}\n </ClassicAlert>\n </div>\n </div>\n</template>\n\n<script setup lang=\"ts\">\nimport ClassicAlert from '../misc/ClassicAlert.vue';\nimport Icons from '@/components/icons'; \nimport RightsWrapper from './RightsWrapper.vue'; \nimport { RightsProps, useRightsIndicator } from '../composable/useRightsIndicator';\n\nconst Icon = Icons.RightsIndicator;\n\ntype PropsBase = RightsProps & {\n /** Display reason as text instead of only tooltip */\n text?: boolean;\n /** Use inline instead of block */\n inline?: boolean;\n}\n\nconst props = defineProps<PropsBase>();\n\nconst { displayIndicator, hasAccess, message } = useRightsIndicator(props);\n</script>\n\n<style scoped lang=\"scss\">\ndiv.inline {\n display: inline;\n // Properly align text with it\n vertical-align: top;\n}\n\n.inline div {\n display: inline;\n}\n\n.inline .rights-indicator-icon {\n display: inline-flex;\n // Propertly align content\n position: relative;\n bottom: -4px;\n // Ensure it doesn't take place in the text\n height: 1px;\n}\n\n.inline .invisible {\n display: none;\n}\n\n/** Helper class to keep the data accessible for screen readers */\n.rights-visually-hidden {\n position: absolute;\n width: 1px;\n height: 1px;\n padding: 0;\n margin: -1px;\n overflow: hidden;\n clip: rect(0, 0, 0, 0);\n white-space: nowrap;\n border: 0;\n}\n</style>\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EA2CA,MAAM,OAAO,cAAM;EASnB,MAAM,QAAQ;EAEd,MAAM,EAAE,kBAAkB,WAAW,YAAY,mBAAmB,KAAK;;;;;;;;;;;;;;;;;;;;;CClC5D,aAAU;CAAS,eAAY;;;QAlB9B,OAAA,oBAAA,UAAA,GADV,mBAiCM,OAAA;;EA/BD,OAAK,eAAA,EAAA,QAAY,OAAA,OAAM,CAAA;EACxB,OAAM;MAGK,OAAA,QAAA,UAAA,GADX,YAagB,OAAA,kBAAA,eAAA,WAAA,EAAA,KAAA,EAAA,GAVJ,OAAA,KAAK,CAAA,GAAA;oBASX,EAVQ,SAAE,CAGZ,YAOE,OAAA,SAAA;GANO;GACL,OAAK,eAAA,CAAC,yBAAuB,EAAA,WACR,OAAA,UAAS,CAAA,CAAA;GAC9B,eAAY;GACZ,cAAW;GACV,MAAM,OAAA,SAAM,KAAA;;;;;;;6CAGrB,mBAaM,OAbN,YAaM,CAXQ,OAAA,QAAI,CAAK,OAAA,aAAA,UAAA,GADnB,YAWe,OAAA,iBAAA;;EATX,MAAK;;EAEM,MAAI,cAIT,CAHF,YAGE,OAAA,SAAA;GAFE,eAAY;GACZ,cAAW;;yBAGnB,CAAA,gBADW,MACX,gBAAG,OAAA,OAAO,GAAA,CAAA,CAAA,CAAA"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"RightsIndicator-NOZ05rEh.mjs","names":[],"sources":["../src/components/display/RightsIndicator.vue","../src/components/display/RightsIndicator.vue"],"sourcesContent":["<template>\n <div\n v-if=\"displayIndicator\"\n :class=\"{ inline: inline }\"\n title=\"\"\n >\n <RightsWrapper\n v-if=\"!text\"\n v-slot=\"{ id }\"\n v-bind=\"props\"\n >\n <Icon\n :id=\"id\"\n class=\"rights-indicator-icon\"\n :class=\"{ invisible: hasAccess }\"\n aria-hidden=\"true\"\n fill-color=\"var(--octopus-primary)\"\n :size=\"inline ? 20 : 24\"\n />\n </RightsWrapper>\n <div aria-live=\"polite\" aria-atomic=\"true\">\n <ClassicAlert\n v-if=\"text && !hasAccess\"\n type=\"info\"\n >\n <template #icon>\n <Icon\n aria-hidden=\"true\"\n fill-color=\"var(--octopus-primary)\"\n />\n </template>\n {{ message }}\n </ClassicAlert>\n </div>\n </div>\n</template>\n\n<script setup lang=\"ts\">\nimport ClassicAlert from '../misc/ClassicAlert.vue';\nimport Icons from '@/components/icons'; \nimport RightsWrapper from './RightsWrapper.vue'; \nimport { RightsProps, useRightsIndicator } from '../composable/useRightsIndicator';\n\nconst Icon = Icons.RightsIndicator;\n\ntype PropsBase = RightsProps & {\n /** Display reason as text instead of only tooltip */\n text?: boolean;\n /** Use inline instead of block */\n inline?: boolean;\n}\n\nconst props = defineProps<PropsBase>();\n\nconst { displayIndicator, hasAccess, message } = useRightsIndicator(props);\n</script>\n\n<style scoped lang=\"scss\">\ndiv.inline {\n display: inline;\n // Properly align text with it\n vertical-align: top;\n}\n\n.inline div {\n display: inline;\n}\n\n.inline .rights-indicator-icon {\n display: inline-flex;\n // Propertly align content\n position: relative;\n bottom: -4px;\n // Ensure it doesn't take place in the text\n height: 1px;\n}\n\n.inline .invisible {\n display: none;\n}\n\n/** Helper class to keep the data accessible for screen readers */\n.rights-visually-hidden {\n position: absolute;\n width: 1px;\n height: 1px;\n padding: 0;\n margin: -1px;\n overflow: hidden;\n clip: rect(0, 0, 0, 0);\n white-space: nowrap;\n border: 0;\n}\n</style>\n","<template>\n <div\n v-if=\"displayIndicator\"\n :class=\"{ inline: inline }\"\n title=\"\"\n >\n <RightsWrapper\n v-if=\"!text\"\n v-slot=\"{ id }\"\n v-bind=\"props\"\n >\n <Icon\n :id=\"id\"\n class=\"rights-indicator-icon\"\n :class=\"{ invisible: hasAccess }\"\n aria-hidden=\"true\"\n fill-color=\"var(--octopus-primary)\"\n :size=\"inline ? 20 : 24\"\n />\n </RightsWrapper>\n <div aria-live=\"polite\" aria-atomic=\"true\">\n <ClassicAlert\n v-if=\"text && !hasAccess\"\n type=\"info\"\n >\n <template #icon>\n <Icon\n aria-hidden=\"true\"\n fill-color=\"var(--octopus-primary)\"\n />\n </template>\n {{ message }}\n </ClassicAlert>\n </div>\n </div>\n</template>\n\n<script setup lang=\"ts\">\nimport ClassicAlert from '../misc/ClassicAlert.vue';\nimport Icons from '@/components/icons'; \nimport RightsWrapper from './RightsWrapper.vue'; \nimport { RightsProps, useRightsIndicator } from '../composable/useRightsIndicator';\n\nconst Icon = Icons.RightsIndicator;\n\ntype PropsBase = RightsProps & {\n /** Display reason as text instead of only tooltip */\n text?: boolean;\n /** Use inline instead of block */\n inline?: boolean;\n}\n\nconst props = defineProps<PropsBase>();\n\nconst { displayIndicator, hasAccess, message } = useRightsIndicator(props);\n</script>\n\n<style scoped lang=\"scss\">\ndiv.inline {\n display: inline;\n // Properly align text with it\n vertical-align: top;\n}\n\n.inline div {\n display: inline;\n}\n\n.inline .rights-indicator-icon {\n display: inline-flex;\n // Propertly align content\n position: relative;\n bottom: -4px;\n // Ensure it doesn't take place in the text\n height: 1px;\n}\n\n.inline .invisible {\n display: none;\n}\n\n/** Helper class to keep the data accessible for screen readers */\n.rights-visually-hidden {\n position: absolute;\n width: 1px;\n height: 1px;\n padding: 0;\n margin: -1px;\n overflow: hidden;\n clip: rect(0, 0, 0, 0);\n white-space: nowrap;\n border: 0;\n}\n</style>\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EA2CA,MAAM,OAAO,cAAM;EASnB,MAAM,QAAQ;EAEd,MAAM,EAAE,kBAAkB,WAAW,YAAY,mBAAmB,KAAK;;;;;;;;;;;;;;;;;;;;;CClC5D,aAAU;CAAS,eAAY;;;QAlB9B,OAAA,oBAAA,UAAA,GADV,mBAiCM,OAAA;;EA/BD,OAAK,eAAA,EAAA,QAAY,OAAA,OAAM,CAAA;EACxB,OAAM;MAGK,OAAA,QAAA,UAAA,GADX,YAagB,OAAA,kBAAA,eAAA,WAAA,EAAA,KAAA,EAAA,GAVJ,OAAA,KAAK,CAAA,GAAA;oBASX,EAVQ,SAAE,CAGZ,YAOE,OAAA,SAAA;GANO;GACL,OAAK,eAAA,CAAC,yBAAuB,EAAA,WACR,OAAA,UAAS,CAAA,CAAA;GAC9B,eAAY;GACZ,cAAW;GACV,MAAM,OAAA,SAAM,KAAA;;;;;;;6CAGrB,mBAaM,OAbN,YAaM,CAXQ,OAAA,QAAI,CAAK,OAAA,aAAA,UAAA,GADnB,YAWe,OAAA,iBAAA;;EATX,MAAK;;EAEM,MAAI,cAIT,CAHF,YAGE,OAAA,SAAA;GAFE,eAAY;GACZ,cAAW;;yBAGnB,CAAA,gBADW,MACX,gBAAG,OAAA,OAAO,GAAA,CAAA,CAAA,CAAA"}
|