@saooti/octopus-sdk 42.2.0 → 42.2.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/AdvancedSearch-2dFT0QVN.mjs.map +1 -0
- package/dist/AdvancedSearch-C1wIVvqN.mjs.map +1 -0
- package/dist/AdvancedSearch-CMRyi6xt.mjs.map +1 -0
- package/dist/AdvancedSearch-D3fL7JeT.mjs.map +1 -0
- package/dist/AdvancedSearch-DZiuFgUy.mjs.map +1 -0
- package/dist/AdvancedSearch-fO5eaqLJ.mjs +452 -0
- package/dist/AdvancedSearch-fO5eaqLJ.mjs.map +1 -0
- package/dist/AdvancedSearch-g410kpAb.mjs.map +1 -0
- package/dist/CategoryFilter-BAfXDVAS.mjs.map +1 -0
- package/dist/CategoryFilter-BQ-Bzodr.mjs.map +1 -0
- package/dist/CategoryFilter-BetJYrqO.mjs.map +1 -0
- package/dist/CategoryFilter-Bpriv2T0.mjs.map +1 -0
- package/dist/CategoryFilter-Cu2a0YE9.mjs +237 -0
- package/dist/CategoryFilter-Cu2a0YE9.mjs.map +1 -0
- package/dist/CategoryFilter-DpYskHN2.mjs.map +1 -0
- package/dist/CategoryFilter-o1XW6RpW.mjs.map +1 -0
- package/dist/CategoryList-BfBk7TrV.mjs.map +1 -0
- package/dist/CategoryList-DXUz624_.mjs.map +1 -0
- package/dist/CategoryList-DayqDww6.mjs.map +1 -0
- package/dist/CategoryList-DkxZDrO5.mjs +182 -0
- package/dist/CategoryList-DkxZDrO5.mjs.map +1 -0
- package/dist/CategoryList-Dy24R6E3.mjs.map +1 -0
- package/dist/CategoryList-OADRuqoT.mjs.map +1 -0
- package/dist/CategoryList-eqimgvLb.mjs.map +1 -0
- package/dist/CategoryPage--iCquevZ.mjs.map +1 -0
- package/dist/CategoryPage-3HFz1i7_.mjs +57 -0
- package/dist/CategoryPage-3HFz1i7_.mjs.map +1 -0
- package/dist/CategoryPage-B-rqfMd8.mjs.map +1 -0
- package/dist/CategoryPage-B8aOBuOP.mjs.map +1 -0
- package/dist/CategoryPage-BRFxthij.mjs.map +1 -0
- package/dist/CategoryPage-BWJ07vkQ.mjs.map +1 -0
- package/dist/CategoryPage-BeQhlUbs.mjs.map +1 -0
- package/dist/CategoryPage-BfTe7LC9.mjs.map +1 -0
- package/dist/CategoryPage-BqwHb_Br.mjs.map +1 -0
- package/dist/CategoryPage-CLoTTEyO.mjs.map +1 -0
- package/dist/CategoryPage-CXAe4Uas.mjs.map +1 -0
- package/dist/CategoryPage-C_-gxSOd.mjs.map +1 -0
- package/dist/CategoryPage-CkIGR2Og.mjs.map +1 -0
- package/dist/CategoryPage-Cuq6y6wJ.mjs.map +1 -0
- package/dist/CategoryPage-D8jnksju.mjs.map +1 -0
- package/dist/CategoryPage-DSIUgeq8.mjs.map +1 -0
- package/dist/CategoryPage-DgPPX2Gf.mjs.map +1 -0
- package/dist/CategoryPage-DnfSvNnT.mjs.map +1 -0
- package/dist/CategoryPage-DpVh-QuD.mjs.map +1 -0
- package/dist/CategoryPage-_WnkLPDn.mjs.map +1 -0
- package/dist/CategoryPage-n0ldOLQX.mjs.map +1 -0
- package/dist/CategoryPage-pEfqhe4N.mjs.map +1 -0
- package/dist/CategoryPage-yHjJLgNJ.mjs.map +1 -0
- package/dist/ChapteringModal-BU4P1k1o.mjs.map +1 -0
- package/dist/ChapteringModal-B_5sdEMj.mjs.map +1 -0
- package/dist/ChapteringModal-BqBkg5Ul.mjs.map +1 -0
- package/dist/ChapteringModal-C-rdkbSz.mjs +82 -0
- package/dist/ChapteringModal-C-rdkbSz.mjs.map +1 -0
- package/dist/ChapteringModal-ChbNRifd.mjs.map +1 -0
- package/dist/ChapteringModal-DAExB_S4.mjs.map +1 -0
- package/dist/ChapteringModal-DKnnr2oA.mjs.map +1 -0
- package/dist/ChapteringModal-Dcw5AMQ9.mjs.map +1 -0
- package/dist/ChapteringModal-DiiHWxDT.mjs.map +1 -0
- package/dist/ChapteringModal-pAM56lFi.mjs.map +1 -0
- package/dist/CheckIdentityModal-BTUxaPE_.mjs.map +1 -0
- package/dist/CheckIdentityModal-C3JnC6Ua.mjs.map +1 -0
- package/dist/CheckIdentityModal-D3CUmUxu.mjs.map +1 -0
- package/dist/CheckIdentityModal-D5Y2HVnN.mjs.map +1 -0
- package/dist/CheckIdentityModal-DiIpHJD9.mjs.map +1 -0
- package/dist/CheckIdentityModal-N9h8yvhC.mjs +86 -0
- package/dist/CheckIdentityModal-N9h8yvhC.mjs.map +1 -0
- package/dist/CheckIdentityModal-Sr229a3z.mjs.map +1 -0
- package/dist/ClassicAlert-DUQplMvs.mjs +85 -0
- package/dist/ClipboardModal-599bBRbB.mjs.map +1 -0
- package/dist/ClipboardModal-BGVgZ1Ci.mjs.map +1 -0
- package/dist/ClipboardModal-BVOhCB2u.mjs.map +1 -0
- package/dist/ClipboardModal-C-tBT_RC.mjs.map +1 -0
- package/dist/ClipboardModal-CgAtp9St.mjs.map +1 -0
- package/dist/ClipboardModal-CnieIOJr.mjs +84 -0
- package/dist/ClipboardModal-CnieIOJr.mjs.map +1 -0
- package/dist/ClipboardModal-Vd6Rh9Vh.mjs.map +1 -0
- package/dist/CommentBasicView-BIiF59xV.mjs +129 -0
- package/dist/CommentInput-BVkOhxyu.mjs.map +1 -0
- package/dist/CommentInput-BayQ67gu.mjs.map +1 -0
- package/dist/CommentInput-C4zW_R4N.mjs.map +1 -0
- package/dist/CommentInput-CDNhiCg-.mjs.map +1 -0
- package/dist/CommentInput-CEioyN7X.mjs +186 -0
- package/dist/CommentInput-CEioyN7X.mjs.map +1 -0
- package/dist/CommentInput-DKAMsPz5.mjs.map +1 -0
- package/dist/CommentInput-DTspqOHp.mjs.map +1 -0
- package/dist/CommentInput-DhloQYMu.mjs.map +1 -0
- package/dist/CommentInput-DzWcAYUi.mjs.map +1 -0
- package/dist/CommentInput-KUtU0lAg.mjs.map +1 -0
- package/dist/CommentItem-3aaj5G4l.mjs.map +1 -0
- package/dist/CommentItem-8LFDrQ0n.mjs.map +1 -0
- package/dist/CommentItem-BBuAT7RO.mjs.map +1 -0
- package/dist/CommentItem-BDscwc6X.mjs.map +1 -0
- package/dist/CommentItem-BOE6hF39.mjs.map +1 -0
- package/dist/CommentItem-Bc1jUCkv.mjs.map +1 -0
- package/dist/CommentItem-BefuRoxQ.mjs +232 -0
- package/dist/CommentItem-BefuRoxQ.mjs.map +1 -0
- package/dist/CommentItem-BhGGJRy6.mjs.map +1 -0
- package/dist/CommentItem-Bmdkc6OC.mjs.map +1 -0
- package/dist/CommentItem-CXSq4sAZ.mjs.map +1 -0
- package/dist/CommentItem-CzG1afeK.mjs.map +1 -0
- package/dist/CommentItem-DYvVb3DA.mjs.map +1 -0
- package/dist/CommentItem-Dgausa7e.mjs.map +1 -0
- package/dist/CommentItem-M-xLbKB-.mjs.map +1 -0
- package/dist/CommentItem-eejiYdt8.mjs.map +1 -0
- package/dist/CommentItem-gF-drcOR.mjs.map +1 -0
- package/dist/CommentItem-pLh7ArwQ.mjs.map +1 -0
- package/dist/CommentList-BXy0blWM.mjs.map +1 -0
- package/dist/CommentList-B_PS8Skz.mjs.map +1 -0
- package/dist/CommentList-BsPwzqkf.mjs +302 -0
- package/dist/CommentList-BsPwzqkf.mjs.map +1 -0
- package/dist/CommentList-C9otjK5N.mjs.map +1 -0
- package/dist/CommentList-CFeUy4UL.mjs.map +1 -0
- package/dist/CommentList-CIAVGfiD.mjs.map +1 -0
- package/dist/CommentList-CJPk_KBN.mjs.map +1 -0
- package/dist/CommentList-CyxIQ1qn.mjs.map +1 -0
- package/dist/CommentList-DAFHgbWI.mjs.map +1 -0
- package/dist/CommentList-DE9pkl4p.mjs.map +1 -0
- package/dist/CommentList-DRV-dER_.mjs.map +1 -0
- package/dist/CommentList-DeudlV_S.mjs.map +1 -0
- package/dist/CommentList-Dkoj_ePj.mjs.map +1 -0
- package/dist/CommentList-DrLcpMjQ.mjs.map +1 -0
- package/dist/CommentList-pF-SpOrJ.mjs.map +1 -0
- package/dist/CommentList-qQRgFDcN.mjs.map +1 -0
- package/dist/CommentList-qveTgjIv.mjs.map +1 -0
- package/dist/CommentMoreActions-BABhLqqh.mjs.map +1 -0
- package/dist/CommentMoreActions-BJnJa13g.mjs.map +1 -0
- package/dist/CommentMoreActions-C86aqy8M.mjs +286 -0
- package/dist/CommentMoreActions-C86aqy8M.mjs.map +1 -0
- package/dist/CommentMoreActions-DQfDcjch.mjs.map +1 -0
- package/dist/CommentMoreActions-DjoP-Sfs.mjs.map +1 -0
- package/dist/CommentMoreActions-lT1a9TYg.mjs.map +1 -0
- package/dist/CommentMoreActions-qgHbxTRV.mjs.map +1 -0
- package/dist/CommentName-CQic86ku.mjs.map +1 -0
- package/dist/CommentName-CfCPh6ui.mjs.map +1 -0
- package/dist/CommentName-CsvZo4rZ.mjs.map +1 -0
- package/dist/CommentName-DQJPwIrw.mjs.map +1 -0
- package/dist/CommentName-DT1QyPi3.mjs +96 -0
- package/dist/CommentName-DT1QyPi3.mjs.map +1 -0
- package/dist/CommentName-DiCfWOrX.mjs.map +1 -0
- package/dist/CommentName-sihAL1Wr.mjs.map +1 -0
- package/dist/CommentParentInfo-8MncHouR.mjs.map +1 -0
- package/dist/CommentParentInfo-9Fe-3e6c.mjs +64 -0
- package/dist/CommentParentInfo-9Fe-3e6c.mjs.map +1 -0
- package/dist/CommentParentInfo-BF4eHHWU.mjs.map +1 -0
- package/dist/CommentParentInfo-Bx8ARLzD.mjs.map +1 -0
- package/dist/CommentParentInfo-CV4AzgTT.mjs.map +1 -0
- package/dist/CommentParentInfo-CfvA4yIL.mjs.map +1 -0
- package/dist/CommentParentInfo-D12GJBmR.mjs.map +1 -0
- package/dist/CommentParentInfo-DLyThSxN.mjs.map +1 -0
- package/dist/CommentParentInfo-DQw1sDxC.mjs.map +1 -0
- package/dist/CommentParentInfo-Dnret2Ad.mjs.map +1 -0
- package/dist/CommentParentInfo-oj9mOYoo.mjs.map +1 -0
- package/dist/CommentPlayer-6yXDu9T0.mjs.map +1 -0
- package/dist/CommentPlayer-8_VUjV7T.mjs.map +1 -0
- package/dist/CommentPlayer-9IRvyBTe.mjs.map +1 -0
- package/dist/CommentPlayer-B6iq28_d.mjs.map +1 -0
- package/dist/CommentPlayer-BI9plmJb.mjs.map +1 -0
- package/dist/CommentPlayer-BU2PR4EL.mjs.map +1 -0
- package/dist/CommentPlayer-CiWQM64Y.mjs +86 -0
- package/dist/CommentPlayer-CiWQM64Y.mjs.map +1 -0
- package/dist/CommentPlayer-Dc0_b-yC.mjs.map +1 -0
- package/dist/CommentPlayer-DqUw2YJ7.mjs.map +1 -0
- package/dist/CommentPlayer-ue5kqbe6.mjs.map +1 -0
- package/dist/CommentSection-B4WeWhXF.mjs.map +1 -0
- package/dist/CommentSection-B8rUVrwU.mjs.map +1 -0
- package/dist/CommentSection-BJa_x7O2.mjs.map +1 -0
- package/dist/CommentSection-BNEa9Ci9.mjs.map +1 -0
- package/dist/CommentSection-BWwk80jh.mjs.map +1 -0
- package/dist/CommentSection-Be38YIkC.mjs +141 -0
- package/dist/CommentSection-Be38YIkC.mjs.map +1 -0
- package/dist/CommentSection-C06nkCTR.mjs.map +1 -0
- package/dist/CommentSection-C3X_fhsV.mjs.map +1 -0
- package/dist/CommentSection-CdEW4oXJ.mjs.map +1 -0
- package/dist/CommentSection-D2NjubKH.mjs.map +1 -0
- package/dist/CommentSection-D5tPqMLp.mjs.map +1 -0
- package/dist/CommentSection-D9WNYZol.mjs.map +1 -0
- package/dist/CommentSection-DrM9yr4C.mjs.map +1 -0
- package/dist/CommentSection-L1HyiVs5.mjs.map +1 -0
- package/dist/CommentSection-Yf7vaq7B.mjs.map +1 -0
- package/dist/CommentSection-ZM7JYK0N.mjs.map +1 -0
- package/dist/CommentSection-b2oFBEr_.mjs.map +1 -0
- package/dist/CommentStore-B2svsN00.mjs.map +1 -0
- package/dist/CommentStore-C3OowOX1.mjs.map +1 -0
- package/dist/CommentStore-CFtaN1dW.mjs.map +1 -0
- package/dist/CommentStore-DAUUhqtc.mjs.map +1 -0
- package/dist/CommentStore-Dv7j94Uo.mjs +355 -0
- package/dist/CommentStore-Dv7j94Uo.mjs.map +1 -0
- package/dist/CommentStore-ep-u2MCN.mjs.map +1 -0
- package/dist/CommentStore-uO5F5D9e.mjs.map +1 -0
- package/dist/ContractPreviewModal-BEQZSnuJ.mjs.map +1 -0
- package/dist/ContractPreviewModal-BSQLdfGl.mjs.map +1 -0
- package/dist/ContractPreviewModal-CPT6bDpJ.mjs +101 -0
- package/dist/ContractPreviewModal-CPT6bDpJ.mjs.map +1 -0
- package/dist/ContractPreviewModal-CPfmF_Pi.mjs.map +1 -0
- package/dist/ContractPreviewModal-Dr4oJIYW.mjs.map +1 -0
- package/dist/ContractPreviewModal-VHVyIoqg.mjs.map +1 -0
- package/dist/ContractPreviewModal-ufUZPqUc.mjs.map +1 -0
- package/dist/DownloadPodcastButton-6D8qNAkT.mjs +53 -0
- package/dist/DownloadPodcastButton-6D8qNAkT.mjs.map +1 -0
- package/dist/DownloadPodcastButton-Bfs4qtOw.mjs.map +1 -0
- package/dist/DownloadPodcastButton-BzCuFKhq.mjs.map +1 -0
- package/dist/DownloadPodcastButton-CEgIRPVZ.mjs.map +1 -0
- package/dist/DownloadPodcastButton-DTM31PZK.mjs.map +1 -0
- package/dist/DownloadPodcastButton-uiXuVIRC.mjs.map +1 -0
- package/dist/DownloadPodcastButton-yDfpjibL.mjs.map +1 -0
- package/dist/EditCommentModal-B5EONiMC.mjs.map +1 -0
- package/dist/EditCommentModal-Cm0AUeZC.mjs.map +1 -0
- package/dist/EditCommentModal-DXEtAoGB.mjs.map +1 -0
- package/dist/EditCommentModal-DnIYnDgm.mjs.map +1 -0
- package/dist/EditCommentModal-aAcjhc0v.mjs +162 -0
- package/dist/EditCommentModal-aAcjhc0v.mjs.map +1 -0
- package/dist/EditCommentModal-gdIIy9S6.mjs.map +1 -0
- package/dist/EditCommentModal-ijHxyK2i.mjs.map +1 -0
- package/dist/EmissionGroupChooser-6Xr_YnPm.mjs.map +1 -0
- package/dist/EmissionGroupChooser-B4eTlGwc.mjs.map +1 -0
- package/dist/EmissionGroupChooser-CHSnH9bi.mjs.map +1 -0
- package/dist/EmissionGroupChooser-D5vIJgKa.mjs.map +1 -0
- package/dist/EmissionGroupChooser-Dbp3MRmr.mjs.map +1 -0
- package/dist/EmissionGroupChooser-Djt1IZg7.mjs +82 -0
- package/dist/EmissionGroupChooser-Djt1IZg7.mjs.map +1 -0
- package/dist/EmissionGroupChooser-V6Z1m2p9.mjs.map +1 -0
- package/dist/EmissionInlineList-B2FP-qXy.mjs.map +1 -0
- package/dist/EmissionInlineList-BA6lD39h.mjs.map +1 -0
- package/dist/EmissionInlineList-BR7vVLE1.mjs.map +1 -0
- package/dist/EmissionInlineList-BcrKpW8S.mjs +188 -0
- package/dist/EmissionInlineList-BcrKpW8S.mjs.map +1 -0
- package/dist/EmissionInlineList-Ffk1ZZnc.mjs.map +1 -0
- package/dist/EmissionInlineList-UCPcShqT.mjs.map +1 -0
- package/dist/EmissionInlineList-ceUU97Cc.mjs.map +1 -0
- package/dist/EmissionInlineList-l-1PJpCA.mjs.map +1 -0
- package/dist/EmissionInlineList-ndC4aFjC.mjs.map +1 -0
- package/dist/EmissionInlineList-oSllpvoU.mjs.map +1 -0
- package/dist/EmissionItem-B2kXySKv.mjs.map +1 -0
- package/dist/EmissionItem-B3DS4Kba.mjs.map +1 -0
- package/dist/EmissionItem-BEAKxbWX.mjs.map +1 -0
- package/dist/EmissionItem-BLFsr1Fl.mjs.map +1 -0
- package/dist/EmissionItem-BYIFr69T.mjs.map +1 -0
- package/dist/EmissionItem-BbTqH1iV.mjs.map +1 -0
- package/dist/EmissionItem-BlI05eTa.mjs.map +1 -0
- package/dist/EmissionItem-BoibZZj5.mjs.map +1 -0
- package/dist/EmissionItem-CLd1OR-k.mjs.map +1 -0
- package/dist/EmissionItem-CTC8CWgE.mjs.map +1 -0
- package/dist/EmissionItem-CohA4KNT.mjs.map +1 -0
- package/dist/EmissionItem-D6RD7IGy.mjs.map +1 -0
- package/dist/EmissionItem-D9bMQ0H_.mjs.map +1 -0
- package/dist/EmissionItem-DBNA99th.mjs.map +1 -0
- package/dist/EmissionItem-DMXggKFT.mjs.map +1 -0
- package/dist/EmissionItem-DZ7uxQTO.mjs.map +1 -0
- package/dist/EmissionItem-DfkPRcPz.mjs +183 -0
- package/dist/EmissionItem-DfkPRcPz.mjs.map +1 -0
- package/dist/EmissionList-9SJj_2Hh.mjs.map +1 -0
- package/dist/EmissionList-B-9ftShB.mjs.map +1 -0
- package/dist/EmissionList-B2EMPawu.mjs.map +1 -0
- package/dist/EmissionList-B5mU-mC-.mjs.map +1 -0
- package/dist/EmissionList-BjfjRykZ.mjs.map +1 -0
- package/dist/EmissionList-BmdfmkLr.mjs.map +1 -0
- package/dist/EmissionList-CB9P_xc7.mjs.map +1 -0
- package/dist/EmissionList-CIKE3Jrq.mjs.map +1 -0
- package/dist/EmissionList-CNhnplp2.mjs.map +1 -0
- package/dist/EmissionList-COo_dI0-.mjs.map +1 -0
- package/dist/EmissionList-CkDhqrMV.mjs.map +1 -0
- package/dist/EmissionList-Cmg3Ya3P.mjs.map +1 -0
- package/dist/EmissionList-CnbykqMn.mjs.map +1 -0
- package/dist/EmissionList-D9J0z9Pl.mjs.map +1 -0
- package/dist/EmissionList-DGBU4RVZ.mjs.map +1 -0
- package/dist/EmissionList-DSXOW3rV.mjs.map +1 -0
- package/dist/EmissionList-DSuGp0JO.mjs +325 -0
- package/dist/EmissionList-DSuGp0JO.mjs.map +1 -0
- package/dist/EmissionList-DeEkxsOh.mjs.map +1 -0
- package/dist/EmissionList-DfYoJpvf.mjs.map +1 -0
- package/dist/EmissionList-DtfqwNGP.mjs.map +1 -0
- package/dist/EmissionList-Jw50np5D.mjs.map +1 -0
- package/dist/EmissionList-VJtAKFFJ.mjs.map +1 -0
- package/dist/EmissionList-suCUhuix.mjs.map +1 -0
- package/dist/EmissionPage-B9lCpiiQ.mjs.map +1 -0
- package/dist/EmissionPage-BQo0kzLC.mjs.map +1 -0
- package/dist/EmissionPage-BW8jfnOJ.mjs.map +1 -0
- package/dist/EmissionPage-Bd05Qxt6.mjs.map +1 -0
- package/dist/EmissionPage-Bfi2hUU2.mjs.map +1 -0
- package/dist/EmissionPage-Bo9fK8HE.mjs +321 -0
- package/dist/EmissionPage-Bo9fK8HE.mjs.map +1 -0
- package/dist/EmissionPage-Bqwhwa2t.mjs.map +1 -0
- package/dist/EmissionPage-Bu01S0NP.mjs.map +1 -0
- package/dist/EmissionPage-BwX_D9d6.mjs.map +1 -0
- package/dist/EmissionPage-CPEXAZYD.mjs.map +1 -0
- package/dist/EmissionPage-CUBTWecO.mjs.map +1 -0
- package/dist/EmissionPage-Ck9-s0RV.mjs.map +1 -0
- package/dist/EmissionPage-CuFg7JOu.mjs.map +1 -0
- package/dist/EmissionPage-DQvDsQsp.mjs.map +1 -0
- package/dist/EmissionPage-DXzAtrRC.mjs.map +1 -0
- package/dist/EmissionPage-D_oqtenu.mjs.map +1 -0
- package/dist/EmissionPage-DeP8UkIy.mjs.map +1 -0
- package/dist/EmissionPage-Deqb9XUC.mjs.map +1 -0
- package/dist/EmissionPage-Dhb6H_Kl.mjs.map +1 -0
- package/dist/EmissionPage-DoDoB_CR.mjs.map +1 -0
- package/dist/EmissionPage-DonnNe4n.mjs.map +1 -0
- package/dist/EmissionPage-DyFFNjuT.mjs.map +1 -0
- package/dist/EmissionPage-EFg2ql0g.mjs.map +1 -0
- package/dist/EmissionPage-L2_noIKg.mjs.map +1 -0
- package/dist/EmissionPage-lul5cWKz.mjs.map +1 -0
- package/dist/EmissionPage-lx42zAvm.mjs.map +1 -0
- package/dist/EmissionPlayerItem-B6dASFay.mjs.map +1 -0
- package/dist/EmissionPlayerItem-BSyaaJys.mjs.map +1 -0
- package/dist/EmissionPlayerItem-Bro3PBvS.mjs.map +1 -0
- package/dist/EmissionPlayerItem-C7LGCHRg.mjs.map +1 -0
- package/dist/EmissionPlayerItem-C7bL83VF.mjs.map +1 -0
- package/dist/EmissionPlayerItem-Cd2RBeoo.mjs.map +1 -0
- package/dist/EmissionPlayerItem-D21OrPmm.mjs +167 -0
- package/dist/EmissionPlayerItem-D21OrPmm.mjs.map +1 -0
- package/dist/EmissionPlayerItem-DTUbTZN-.mjs.map +1 -0
- package/dist/EmissionPlayerItem-Dma90Loi.mjs.map +1 -0
- package/dist/EmissionPlayerItem-LpLHHTv-.mjs.map +1 -0
- package/dist/EmissionPresentationItem-B8O-2cwB.mjs.map +1 -0
- package/dist/EmissionPresentationItem-BnESRu8L.mjs.map +1 -0
- package/dist/EmissionPresentationItem-C-DQPWWd.mjs.map +1 -0
- package/dist/EmissionPresentationItem-CwDIBurH.mjs +78 -0
- package/dist/EmissionPresentationItem-CwDIBurH.mjs.map +1 -0
- package/dist/EmissionPresentationItem-Cy8f_V--.mjs.map +1 -0
- package/dist/EmissionPresentationItem-D07ln2Kl.mjs.map +1 -0
- package/dist/EmissionPresentationItem-Do2k2tXB.mjs.map +1 -0
- package/dist/EmissionPresentationList-CASI5laP.mjs +125 -0
- package/dist/EmissionPresentationList-CASI5laP.mjs.map +1 -0
- package/dist/EmissionPresentationList-CLjQOUSi.mjs.map +1 -0
- package/dist/EmissionPresentationList-ZWaIbNGQ.mjs.map +1 -0
- package/dist/EmissionPresentationList-_xKn7BVM.mjs.map +1 -0
- package/dist/EmissionPresentationList-pR7-HhE9.mjs.map +1 -0
- package/dist/EmissionPresentationList-pgnC8ila.mjs.map +1 -0
- package/dist/EmissionPresentationList-tBAjuuZ_.mjs.map +1 -0
- package/dist/EmissionsPage-1I-INlt1.mjs.map +1 -0
- package/dist/EmissionsPage-4oUca-3o.mjs.map +1 -0
- package/dist/EmissionsPage-BIaoSADL.mjs.map +1 -0
- package/dist/EmissionsPage-BT6f9dPL.mjs.map +1 -0
- package/dist/EmissionsPage-BWfhZzd7.mjs.map +1 -0
- package/dist/EmissionsPage-Btvaec6y.mjs.map +1 -0
- package/dist/EmissionsPage-Bw8Qtzlk.mjs +203 -0
- package/dist/EmissionsPage-Bw8Qtzlk.mjs.map +1 -0
- package/dist/EmissionsPage-CpGquiTH.mjs.map +1 -0
- package/dist/EmissionsPage-Cs-XfyjF.mjs.map +1 -0
- package/dist/EmissionsPage-DLV36KkX.mjs.map +1 -0
- package/dist/EmissionsPage-DSxvNWsc.mjs.map +1 -0
- package/dist/EmissionsPage-DcNKDj6A.mjs.map +1 -0
- package/dist/EmissionsPage-DdqK4f6Q.mjs.map +1 -0
- package/dist/EmissionsPage-DiPzokz0.mjs.map +1 -0
- package/dist/EmissionsPage-DoJRFsfH.mjs.map +1 -0
- package/dist/EmissionsPage-Dtr2vdm0.mjs.map +1 -0
- package/dist/EmissionsPage-DxMEWeSe.mjs.map +1 -0
- package/dist/EmissionsPage-fCTIzDmj.mjs.map +1 -0
- package/dist/EmissionsPage-lhgk24_q.mjs.map +1 -0
- package/dist/EmissionsPage-oMvRU26s.mjs.map +1 -0
- package/dist/EmissionsPage-pDSVGdi1.mjs.map +1 -0
- package/dist/EmissionsPage-uOSGXoNi.mjs.map +1 -0
- package/dist/EmissionsPage-zEtdeu9d.mjs.map +1 -0
- package/dist/Error403Page-2ZGsxyQg.mjs.map +1 -0
- package/dist/Error403Page-B6shtnfw.mjs.map +1 -0
- package/dist/Error403Page-BE_499ic.mjs.map +1 -0
- package/dist/Error403Page-Dp6UD6wV.mjs.map +1 -0
- package/dist/Error403Page-eXDhZtve.mjs.map +1 -0
- package/dist/Error403Page-nTYCHwTi.mjs +69 -0
- package/dist/Error403Page-nTYCHwTi.mjs.map +1 -0
- package/dist/Error403Page-pSI5PqlW.mjs.map +1 -0
- package/dist/ErrorMessage-D2XAzxpC.mjs +44 -0
- package/dist/FooterGarSection-B57uHzQa.mjs.map +1 -0
- package/dist/FooterGarSection-BDF9leZK.mjs.map +1 -0
- package/dist/FooterGarSection-BEPQcQat.mjs.map +1 -0
- package/dist/FooterGarSection-CjnBOMmq.mjs.map +1 -0
- package/dist/FooterGarSection-Cod8Key5.mjs +71 -0
- package/dist/FooterGarSection-Cod8Key5.mjs.map +1 -0
- package/dist/FooterGarSection-Dd2exlg7.mjs.map +1 -0
- package/dist/FooterGarSection-DlZabqqx.mjs.map +1 -0
- package/dist/FooterSection-0p2-D23p.mjs.map +1 -0
- package/dist/FooterSection-4WXBZj7c.mjs +242 -0
- package/dist/FooterSection-4WXBZj7c.mjs.map +1 -0
- package/dist/FooterSection-B4MhxsRW.mjs.map +1 -0
- package/dist/FooterSection-C0nh0fkt.mjs.map +1 -0
- package/dist/FooterSection-C5OUzabm.mjs.map +1 -0
- package/dist/FooterSection-CdNPgHa9.mjs.map +1 -0
- package/dist/FooterSection-zE__CNyU.mjs.map +1 -0
- package/dist/HomeDropdown-B2O9JXxA.mjs.map +1 -0
- package/dist/HomeDropdown-C-irmlnL.mjs.map +1 -0
- package/dist/HomeDropdown-C59VkjxF.mjs.map +1 -0
- package/dist/HomeDropdown-CVe7yF6Y.mjs +110 -0
- package/dist/HomeDropdown-CVe7yF6Y.mjs.map +1 -0
- package/dist/HomeDropdown-CvyjhjjS.mjs.map +1 -0
- package/dist/HomeDropdown-Do7pmzYN.mjs.map +1 -0
- package/dist/HomeDropdown-DrHIweWi.mjs.map +1 -0
- package/dist/HomeDropdown-JzQ8GhH9.mjs.map +1 -0
- package/dist/HomeDropdown-cDYBGunU.mjs.map +1 -0
- package/dist/HomeDropdown-oe1ivdNP.mjs.map +1 -0
- package/dist/HomePage-5az5D-Yv.mjs.map +1 -0
- package/dist/HomePage-7HQ3VlrH.mjs.map +1 -0
- package/dist/HomePage-8KEsQJpt.mjs.map +1 -0
- package/dist/HomePage-B8R4ASas.mjs.map +1 -0
- package/dist/HomePage-BRMsVAmm.mjs.map +1 -0
- package/dist/HomePage-BryU6FJO.mjs.map +1 -0
- package/dist/HomePage-BxRn4fld.mjs.map +1 -0
- package/dist/HomePage-C5EsfVOr.mjs.map +1 -0
- package/dist/HomePage-CK0o_w6i.mjs.map +1 -0
- package/dist/HomePage-CPTa3eEL.mjs.map +1 -0
- package/dist/HomePage-CimQHTL2.mjs.map +1 -0
- package/dist/HomePage-Cjvs7boa.mjs.map +1 -0
- package/dist/HomePage-CusID824.mjs.map +1 -0
- package/dist/HomePage-CwZrKhQh.mjs.map +1 -0
- package/dist/HomePage-DTY-eGSo.mjs.map +1 -0
- package/dist/HomePage-DeZAI4VG.mjs.map +1 -0
- package/dist/HomePage-DhvFKhKJ.mjs.map +1 -0
- package/dist/HomePage-DupmOw6F.mjs +166 -0
- package/dist/HomePage-DupmOw6F.mjs.map +1 -0
- package/dist/HomePage-M4Lw6H8s.mjs.map +1 -0
- package/dist/HomePage-VP6O8_Bs.mjs.map +1 -0
- package/dist/HomePage-faSBEgGz.mjs.map +1 -0
- package/dist/HomePage-lhzTXe8T.mjs.map +1 -0
- package/dist/HomePage-xKHBKtuP.mjs.map +1 -0
- package/dist/InlineRubriqueList--qtzh_Hn.mjs.map +1 -0
- package/dist/InlineRubriqueList-BFU1JbYh.mjs.map +1 -0
- package/dist/InlineRubriqueList-BUnp56-v.mjs.map +1 -0
- package/dist/InlineRubriqueList-CH8DXeJL.mjs.map +1 -0
- package/dist/InlineRubriqueList-Cl-32U4Z.mjs.map +1 -0
- package/dist/InlineRubriqueList-ULB9tKco.mjs.map +1 -0
- package/dist/LikeSection-B0v1dsWx.mjs.map +1 -0
- package/dist/LikeSection-BGVB89kL.mjs.map +1 -0
- package/dist/LikeSection-BdYecoMr.mjs.map +1 -0
- package/dist/LikeSection-DAid96g9.mjs +167 -0
- package/dist/LikeSection-DAid96g9.mjs.map +1 -0
- package/dist/LikeSection-DK8IjxJp.mjs.map +1 -0
- package/dist/LikeSection-DPiqgbt9.mjs.map +1 -0
- package/dist/LikeSection-H2vKvy-f.mjs.map +1 -0
- package/dist/ListPaginate-Bd2k_m7g.mjs.map +1 -0
- package/dist/ListPaginate-C4wfbhAy.mjs.map +1 -0
- package/dist/ListPaginate-C9saxru9.mjs +202 -0
- package/dist/ListPaginate-C9saxru9.mjs.map +1 -0
- package/dist/ListPaginate-CRLXFBE9.mjs.map +1 -0
- package/dist/ListPaginate-CoKmqjc3.mjs.map +1 -0
- package/dist/ListPaginate-CyvW8asz.mjs.map +1 -0
- package/dist/ListPaginate-Dd5Wo9Ez.mjs.map +1 -0
- package/dist/ListPaginate-DeAb3inq.mjs.map +1 -0
- package/dist/ListPaginate-JdCX7pqr.mjs.map +1 -0
- package/dist/ListPaginate-ufwR5ie8.mjs.map +1 -0
- package/dist/LiveHorizontalList-2iae53EG.mjs.map +1 -0
- package/dist/LiveHorizontalList-4V7_Xbtn.mjs.map +1 -0
- package/dist/LiveHorizontalList-BIWO3a1G.mjs.map +1 -0
- package/dist/LiveHorizontalList-BOHwFCmV.mjs.map +1 -0
- package/dist/LiveHorizontalList-BXOCxx-l.mjs.map +1 -0
- package/dist/LiveHorizontalList-BhaTufMC.mjs.map +1 -0
- package/dist/LiveHorizontalList-C1RgGoCz.mjs.map +1 -0
- package/dist/LiveHorizontalList-C49Pr62Y.mjs.map +1 -0
- package/dist/LiveHorizontalList-C5c498yh.mjs.map +1 -0
- package/dist/LiveHorizontalList-CVEFC6yj.mjs.map +1 -0
- package/dist/LiveHorizontalList-CdYuSLq-.mjs.map +1 -0
- package/dist/LiveHorizontalList-Cdb4p_5t.mjs.map +1 -0
- package/dist/LiveHorizontalList-Cj9FVcN3.mjs.map +1 -0
- package/dist/LiveHorizontalList-Cjsn7a7R.mjs.map +1 -0
- package/dist/LiveHorizontalList-CmipbrCY.mjs.map +1 -0
- package/dist/LiveHorizontalList-DnypNGd9.mjs.map +1 -0
- package/dist/LiveHorizontalList-N5kqVgHN.mjs.map +1 -0
- package/dist/LiveHorizontalList-OArlzudf.mjs +136 -0
- package/dist/LiveHorizontalList-OArlzudf.mjs.map +1 -0
- package/dist/LiveHorizontalList-TvQOWk4-.mjs.map +1 -0
- package/dist/LiveHorizontalList-nWI0qroI.mjs.map +1 -0
- package/dist/LiveHorizontalList-nr5SDpf7.mjs.map +1 -0
- package/dist/LiveHorizontalList-vctqGzhw.mjs.map +1 -0
- package/dist/LiveHorizontalList-xsK1YBk8.mjs.map +1 -0
- package/dist/LiveList-27ZK33PI.mjs.map +1 -0
- package/dist/LiveList-4CELVzQf.mjs.map +1 -0
- package/dist/LiveList-5Jr86aqP.mjs.map +1 -0
- package/dist/LiveList-BG3bYTX1.mjs.map +1 -0
- package/dist/LiveList-BVdbug8L.mjs.map +1 -0
- package/dist/LiveList-BhJzZtsK.mjs.map +1 -0
- package/dist/LiveList-BktWteQI.mjs.map +1 -0
- package/dist/LiveList-BzY2JeuX.mjs.map +1 -0
- package/dist/LiveList-COFy24Se.mjs.map +1 -0
- package/dist/LiveList-CfYytFf0.mjs.map +1 -0
- package/dist/LiveList-CnKmk6vW.mjs.map +1 -0
- package/dist/LiveList-CqFeDsPT.mjs.map +1 -0
- package/dist/LiveList-DJdSqokI.mjs.map +1 -0
- package/dist/LiveList-DPW7quuq.mjs.map +1 -0
- package/dist/LiveList-DQrc6QQJ.mjs.map +1 -0
- package/dist/LiveList-DlDxiuC9.mjs.map +1 -0
- package/dist/LiveList-Dl_p5YxR.mjs.map +1 -0
- package/dist/LiveList-EqIo_cye.mjs +324 -0
- package/dist/LiveList-EqIo_cye.mjs.map +1 -0
- package/dist/LiveList-Fy-uoUtP.mjs.map +1 -0
- package/dist/LiveList-PttlKWUz.mjs.map +1 -0
- package/dist/LiveList-QNwC_v3h.mjs.map +1 -0
- package/dist/LiveList-frCm0YUz.mjs.map +1 -0
- package/dist/LiveList-qM8p7_8L.mjs.map +1 -0
- package/dist/LivesPage-6CAOhHPM.mjs.map +1 -0
- package/dist/LivesPage-8sZKxqof.mjs.map +1 -0
- package/dist/LivesPage-B28kYZ0m.mjs.map +1 -0
- package/dist/LivesPage-B7IfxJIY.mjs.map +1 -0
- package/dist/LivesPage-BANezaiF.mjs.map +1 -0
- package/dist/LivesPage-BET6rskp.mjs.map +1 -0
- package/dist/LivesPage-BZE6Cuso.mjs.map +1 -0
- package/dist/LivesPage-BduKDDZR.mjs.map +1 -0
- package/dist/LivesPage-BmHiBN8A.mjs +76 -0
- package/dist/LivesPage-BmHiBN8A.mjs.map +1 -0
- package/dist/LivesPage-C2a99gDl.mjs.map +1 -0
- package/dist/LivesPage-CN6N1PC1.mjs.map +1 -0
- package/dist/LivesPage-C_4v__A1.mjs.map +1 -0
- package/dist/LivesPage-Csjv5D11.mjs.map +1 -0
- package/dist/LivesPage-CtcBGQ8T.mjs.map +1 -0
- package/dist/LivesPage-D40r5Lwh.mjs.map +1 -0
- package/dist/LivesPage-DJNVUt5d.mjs.map +1 -0
- package/dist/LivesPage-DTWENS6q.mjs.map +1 -0
- package/dist/LivesPage-Dd6LypFH.mjs.map +1 -0
- package/dist/LivesPage-DuoAA-lO.mjs.map +1 -0
- package/dist/LivesPage-DuufafsJ.mjs.map +1 -0
- package/dist/LivesPage-aCHG0gv6.mjs.map +1 -0
- package/dist/LivesPage-fva1WuLM.mjs.map +1 -0
- package/dist/LivesPage-oMr1p499.mjs.map +1 -0
- package/dist/MapPage-BKZn3rfC.mjs.map +1 -0
- package/dist/MapPage-DNYLnSfI.mjs.map +1 -0
- package/dist/MapPage-DNlE1kZ9.mjs.map +1 -0
- package/dist/MapPage-DQ_I97DW.mjs.map +1 -0
- package/dist/MapPage-DcXKTGGh.mjs +303 -0
- package/dist/MapPage-DcXKTGGh.mjs.map +1 -0
- package/dist/MapPage-DeJqn9eC.mjs.map +1 -0
- package/dist/MapPage-Dpo_47LR.mjs.map +1 -0
- package/dist/MapPage-HJ4ZZnMq.mjs.map +1 -0
- package/dist/MobileMenu-BiBDgk9I.mjs.map +1 -0
- package/dist/MobileMenu-BwJW2290.mjs.map +1 -0
- package/dist/MobileMenu-C0IYBWwF.mjs +187 -0
- package/dist/MobileMenu-C0IYBWwF.mjs.map +1 -0
- package/dist/MobileMenu-C0MEy9i4.mjs.map +1 -0
- package/dist/MobileMenu-C7x9kTfb.mjs.map +1 -0
- package/dist/MobileMenu-Cikp6JqC.mjs.map +1 -0
- package/dist/MobileMenu-DaReb5ay.mjs.map +1 -0
- package/dist/MobileMenu-DmSYAvzO.mjs.map +1 -0
- package/dist/MobileMenu-F6gNVILC.mjs.map +1 -0
- package/dist/MobileMenu-lyFxgs3v.mjs.map +1 -0
- package/dist/NewsletterModal-B1L2b83e.mjs.map +1 -0
- package/dist/NewsletterModal-BYf7hjjF.mjs.map +1 -0
- package/dist/NewsletterModal-Bwm1tVMY.mjs.map +1 -0
- package/dist/NewsletterModal-BzlUlz3P.mjs +82 -0
- package/dist/NewsletterModal-BzlUlz3P.mjs.map +1 -0
- package/dist/NewsletterModal-DnGU_DPG.mjs.map +1 -0
- package/dist/NewsletterModal-Lw14Nta1.mjs.map +1 -0
- package/dist/NewsletterModal-qoiuDGDv.mjs.map +1 -0
- package/dist/OrganisationChooser-B4s8-G76.mjs.map +1 -0
- package/dist/OrganisationChooser-BIZ1r5Ob.mjs.map +1 -0
- package/dist/OrganisationChooser-Bm4zqqCH.mjs +190 -0
- package/dist/OrganisationChooser-Bm4zqqCH.mjs.map +1 -0
- package/dist/OrganisationChooser-CWi5UGUR.mjs.map +1 -0
- package/dist/OrganisationChooser-Dmx0Pg9N.mjs.map +1 -0
- package/dist/OrganisationChooser-kYErGYWa.mjs.map +1 -0
- package/dist/OrganisationChooser-mf2Dujhz.mjs.map +1 -0
- package/dist/OrganisationChooserLight-BQ9B91mO.mjs +84 -0
- package/dist/OrganisationChooserLight-BQ9B91mO.mjs.map +1 -0
- package/dist/OrganisationChooserLight-BmGzDuZ7.mjs.map +1 -0
- package/dist/OrganisationChooserLight-C7MbrnxT.mjs.map +1 -0
- package/dist/OrganisationChooserLight-D4HKhLcj.mjs.map +1 -0
- package/dist/OrganisationChooserLight-DWHyc1j1.mjs.map +1 -0
- package/dist/OrganisationChooserLight-DnbEN0zj.mjs.map +1 -0
- package/dist/OrganisationChooserLight-DrQmF9rG.mjs.map +1 -0
- package/dist/PageNotFound-9Cy6R2Cf.mjs.map +1 -0
- package/dist/PageNotFound-BHJUNHoj.mjs.map +1 -0
- package/dist/PageNotFound-BVQ8M8sO.mjs +58 -0
- package/dist/PageNotFound-BVQ8M8sO.mjs.map +1 -0
- package/dist/PageNotFound-Ba-YFc_3.mjs.map +1 -0
- package/dist/PageNotFound-C9sl5i0p.mjs.map +1 -0
- package/dist/PageNotFound-Cis2CQw7.mjs.map +1 -0
- package/dist/PageNotFound-D4Eiaibz.mjs.map +1 -0
- package/dist/ParticipantInlineList-0QmS7-RU.mjs.map +1 -0
- package/dist/ParticipantInlineList-2awuAYfB.mjs.map +1 -0
- package/dist/ParticipantInlineList-BQtQZFW1.mjs +117 -0
- package/dist/ParticipantInlineList-BQtQZFW1.mjs.map +1 -0
- package/dist/ParticipantInlineList-BcjalXxU.mjs.map +1 -0
- package/dist/ParticipantInlineList-C9mZNGSZ.mjs.map +1 -0
- package/dist/ParticipantInlineList-CCY2SSkV.mjs.map +1 -0
- package/dist/ParticipantInlineList-CKOQyog2.mjs.map +1 -0
- package/dist/ParticipantInlineList-DLb2b4Gt.mjs.map +1 -0
- package/dist/ParticipantInlineList-DPnu2vTh.mjs.map +1 -0
- package/dist/ParticipantInlineList-Dj936NBW.mjs.map +1 -0
- package/dist/ParticipantInlineList-DqN6OdCz.mjs.map +1 -0
- package/dist/ParticipantItem-1XWhKUQD.mjs.map +1 -0
- package/dist/ParticipantItem-B7qsEz6M.mjs.map +1 -0
- package/dist/ParticipantItem-B88oNUfZ.mjs.map +1 -0
- package/dist/ParticipantItem-BNPAHoi3.mjs.map +1 -0
- package/dist/ParticipantItem-BmK2VRYu.mjs.map +1 -0
- package/dist/ParticipantItem-Bs_gNwGW.mjs.map +1 -0
- package/dist/ParticipantItem-Cn4-Qv_1.mjs.map +1 -0
- package/dist/ParticipantItem-DTEfkS8k.mjs.map +1 -0
- package/dist/ParticipantItem-D_Dne2h4.mjs.map +1 -0
- package/dist/ParticipantItem-DipPvAao.mjs.map +1 -0
- package/dist/ParticipantItem-EDPkxTT-.mjs +138 -0
- package/dist/ParticipantItem-EDPkxTT-.mjs.map +1 -0
- package/dist/ParticipantPage--J_EFJh8.mjs.map +1 -0
- package/dist/ParticipantPage-4hRMry0C.mjs.map +1 -0
- package/dist/ParticipantPage-AG1lEl55.mjs.map +1 -0
- package/dist/ParticipantPage-B1wkaGH3.mjs.map +1 -0
- package/dist/ParticipantPage-BF-s1oof.mjs +203 -0
- package/dist/ParticipantPage-BF-s1oof.mjs.map +1 -0
- package/dist/ParticipantPage-BNhCWYFu.mjs.map +1 -0
- package/dist/ParticipantPage-BP-T9GMa.mjs.map +1 -0
- package/dist/ParticipantPage-BTHrpoC0.mjs.map +1 -0
- package/dist/ParticipantPage-BaIKPKsv.mjs.map +1 -0
- package/dist/ParticipantPage-BiaFxBN8.mjs.map +1 -0
- package/dist/ParticipantPage-BlY0nTcW.mjs.map +1 -0
- package/dist/ParticipantPage-BpgJ2Aki.mjs.map +1 -0
- package/dist/ParticipantPage-C2bFuI6I.mjs.map +1 -0
- package/dist/ParticipantPage-CuJvnl3u.mjs.map +1 -0
- package/dist/ParticipantPage-DA_Trp_R.mjs.map +1 -0
- package/dist/ParticipantPage-DCoMqZqe.mjs.map +1 -0
- package/dist/ParticipantPage-DDm4yGpb.mjs.map +1 -0
- package/dist/ParticipantPage-DL4xWmbI.mjs.map +1 -0
- package/dist/ParticipantPage-DLNOl1Qb.mjs.map +1 -0
- package/dist/ParticipantPage-Djlce4sF.mjs.map +1 -0
- package/dist/ParticipantPage-Dm53yHRD.mjs.map +1 -0
- package/dist/ParticipantPage-DuOP6rmZ.mjs.map +1 -0
- package/dist/ParticipantPage-gmfpQwdZ.mjs.map +1 -0
- package/dist/ParticipantsPage-2M5CDcOB.mjs.map +1 -0
- package/dist/ParticipantsPage-805CIGNH.mjs.map +1 -0
- package/dist/ParticipantsPage-B3oHxdok.mjs.map +1 -0
- package/dist/ParticipantsPage-B5T1ghhB.mjs.map +1 -0
- package/dist/ParticipantsPage-BGkiNOiq.mjs.map +1 -0
- package/dist/ParticipantsPage-Bzt8Hxah.mjs +262 -0
- package/dist/ParticipantsPage-Bzt8Hxah.mjs.map +1 -0
- package/dist/ParticipantsPage-ClEqgXcX.mjs.map +1 -0
- package/dist/ParticipantsPage-CpruGkFh.mjs.map +1 -0
- package/dist/ParticipantsPage-D2SRat-R.mjs.map +1 -0
- package/dist/ParticipantsPage-DHFX8NSb.mjs.map +1 -0
- package/dist/ParticipantsPage-DNEkxU54.mjs.map +1 -0
- package/dist/ParticipantsPage-DOVeAgla.mjs.map +1 -0
- package/dist/ParticipantsPage-DRXywxK0.mjs.map +1 -0
- package/dist/ParticipantsPage-Dmg-VK72.mjs.map +1 -0
- package/dist/ParticipantsPage-Dx0eYoes.mjs.map +1 -0
- package/dist/ParticipantsPage-H3tDwQT0.mjs.map +1 -0
- package/dist/ParticipantsPage-NNKI7B9n.mjs.map +1 -0
- package/dist/PlayerAnonymousModal-BQZc00Xn.mjs.map +1 -0
- package/dist/PlayerAnonymousModal-CK7j1FMR.mjs.map +1 -0
- package/dist/PlayerAnonymousModal-CbrqO1hs.mjs +84 -0
- package/dist/PlayerAnonymousModal-CbrqO1hs.mjs.map +1 -0
- package/dist/PlayerAnonymousModal-Dijmkqu8.mjs.map +1 -0
- package/dist/PlayerAnonymousModal-_WrcKqau.mjs.map +1 -0
- package/dist/PlayerAnonymousModal-ajR4XVns.mjs.map +1 -0
- package/dist/PlayerAnonymousModal-xbNVHN1W.mjs.map +1 -0
- package/dist/PlayerCompact-B3vazvXQ.mjs.map +1 -0
- package/dist/PlayerCompact-BMFvotPc.mjs.map +1 -0
- package/dist/PlayerCompact-BtKfz384.mjs +209 -0
- package/dist/PlayerCompact-BtKfz384.mjs.map +1 -0
- package/dist/PlayerCompact-BufVX2cO.mjs.map +1 -0
- package/dist/PlayerCompact-C0qeoF6t.mjs.map +1 -0
- package/dist/PlayerCompact-C5pyXZ0r.mjs.map +1 -0
- package/dist/PlayerCompact-CPpmzSgo.mjs.map +1 -0
- package/dist/PlayerCompact-DFG_1eGA.mjs.map +1 -0
- package/dist/PlayerCompact-DhEaMjeR.mjs.map +1 -0
- package/dist/PlayerCompact-Yxet-KPH.mjs.map +1 -0
- package/dist/PlayerComponent-1miDnPlr.mjs.map +1 -0
- package/dist/PlayerComponent-7CwJe6jm.mjs.map +1 -0
- package/dist/PlayerComponent-BMRyYtfE.mjs.map +1 -0
- package/dist/PlayerComponent-BazIiHAy.mjs.map +1 -0
- package/dist/PlayerComponent-BbzxGZH-.mjs.map +1 -0
- package/dist/PlayerComponent-Be52Rt8I.mjs.map +1 -0
- package/dist/PlayerComponent-BmttQ3jo.mjs.map +1 -0
- package/dist/PlayerComponent-BnVxoj3O.mjs.map +1 -0
- package/dist/PlayerComponent-BpnCCs3E.mjs.map +1 -0
- package/dist/PlayerComponent-C2YIwb2q.mjs.map +1 -0
- package/dist/PlayerComponent-CnoZ6Y-9.mjs.map +1 -0
- package/dist/PlayerComponent-CxNkDcFc.mjs +929 -0
- package/dist/PlayerComponent-CxNkDcFc.mjs.map +1 -0
- package/dist/PlayerComponent-DEkRPZQR.mjs.map +1 -0
- package/dist/PlayerComponent-DXlHOD4w.mjs.map +1 -0
- package/dist/PlayerComponent-DyA6bMmR.mjs.map +1 -0
- package/dist/PlayerComponent-IqKYwKv1.mjs.map +1 -0
- package/dist/PlayerComponent-J0Cc9wsb.mjs.map +1 -0
- package/dist/PlayerComponent-TIoq18vF.mjs.map +1 -0
- package/dist/PlayerComponent-U0tt1h3d.mjs.map +1 -0
- package/dist/PlayerComponent-VNqZwMUm.mjs.map +1 -0
- package/dist/PlayerComponent-Xzg-pRAe.mjs.map +1 -0
- package/dist/PlayerComponent-YWZ0Vxg3.mjs.map +1 -0
- package/dist/PlayerComponent-uqqCktqA.mjs.map +1 -0
- package/dist/PlayerLarge-05dow_hZ.mjs.map +1 -0
- package/dist/PlayerLarge-B57dwz3L.mjs.map +1 -0
- package/dist/PlayerLarge-BFh3FwHg.mjs.map +1 -0
- package/dist/PlayerLarge-BH6BLQxk.mjs +190 -0
- package/dist/PlayerLarge-BH6BLQxk.mjs.map +1 -0
- package/dist/PlayerLarge-BNhwhDRC.mjs.map +1 -0
- package/dist/PlayerLarge-BVrKKbRz.mjs.map +1 -0
- package/dist/PlayerLarge-BZXXKBtl.mjs.map +1 -0
- package/dist/PlayerLarge-Bd7VO3Gm.mjs.map +1 -0
- package/dist/PlayerLarge-C3folsKJ.mjs.map +1 -0
- package/dist/PlayerLarge-CByR81Zt.mjs.map +1 -0
- package/dist/PlayerLarge-CGcC_etA.mjs.map +1 -0
- package/dist/PlayerLarge-CYtav65N.mjs.map +1 -0
- package/dist/PlayerLarge-CiEntvvh.mjs.map +1 -0
- package/dist/PlayerLarge-CvrF44iD.mjs.map +1 -0
- package/dist/PlayerLarge-D4EofBSA.mjs.map +1 -0
- package/dist/PlayerLarge-D5MSeK1K.mjs.map +1 -0
- package/dist/PlayerLarge-DJdz-os2.mjs.map +1 -0
- package/dist/PlayerLarge-DevF-ro-.mjs.map +1 -0
- package/dist/PlayerLarge-DhYPHjrD.mjs.map +1 -0
- package/dist/PlayerLarge-DxbCmLJv.mjs.map +1 -0
- package/dist/PlayerLarge-_7SvArsB.mjs.map +1 -0
- package/dist/PlayerLarge-bjFQK8Pq.mjs.map +1 -0
- package/dist/PlayerLarge-hgL_YHi1.mjs.map +1 -0
- package/dist/PlayerPlayButton-BByLT_Ul.mjs.map +1 -0
- package/dist/PlayerPlayButton-C7G0zpe1.mjs.map +1 -0
- package/dist/PlayerPlayButton-CNJC1Q1o.mjs.map +1 -0
- package/dist/PlayerPlayButton-CQctg0DC.mjs.map +1 -0
- package/dist/PlayerPlayButton-ChTtDCxC.mjs.map +1 -0
- package/dist/PlayerPlayButton-D0xWhQEA.mjs.map +1 -0
- package/dist/PlayerPlayButton-DRlPQMAR.mjs.map +1 -0
- package/dist/PlayerPlayButton-DT2OdqnI.mjs +400 -0
- package/dist/PlayerPlayButton-DT2OdqnI.mjs.map +1 -0
- package/dist/PlayerPlayButton-DXcJfKqe.mjs.map +1 -0
- package/dist/PlayerPlayButton-Da8BOzXl.mjs.map +1 -0
- package/dist/PlayerProgressBar-BVa4r4HY.mjs.map +1 -0
- package/dist/PlayerProgressBar-BubTyMNk.mjs.map +1 -0
- package/dist/PlayerProgressBar-CLOxWNjE.mjs.map +1 -0
- package/dist/PlayerProgressBar-CSNAF4gM.mjs.map +1 -0
- package/dist/PlayerProgressBar-CSYnPjZb.mjs +86 -0
- package/dist/PlayerProgressBar-CSYnPjZb.mjs.map +1 -0
- package/dist/PlayerProgressBar-DCcrFNRg.mjs.map +1 -0
- package/dist/PlayerProgressBar-Dx4O66nN.mjs.map +1 -0
- package/dist/PlayerProgressBar-iD7TCuuu.mjs.map +1 -0
- package/dist/PlayerProgressBar-vbkLNd6c.mjs.map +1 -0
- package/dist/PlayerProgressBar-xeDACSGZ.mjs.map +1 -0
- package/dist/PlayerStore-5zaKR9j0.mjs.map +1 -0
- package/dist/PlayerStore-60cKerrm.mjs.map +1 -0
- package/dist/PlayerStore-8FjLbgl2.mjs.map +1 -0
- package/dist/PlayerStore-CNnuCZlq.mjs.map +1 -0
- package/dist/PlayerStore-CRzI2s3a.mjs.map +1 -0
- package/dist/PlayerStore-CeVB4Y9L.mjs.map +1 -0
- package/dist/PlayerStore-DukkcHI_.mjs +230 -0
- package/dist/PlayerStore-DukkcHI_.mjs.map +1 -0
- package/dist/PlayerStore-GRv7Jdjd.mjs.map +1 -0
- package/dist/PlayerStore-PXL_fAz0.mjs.map +1 -1
- package/dist/PlayerStore-eQ7J_A8B.mjs.map +1 -0
- package/dist/PlayerStore-kzJYRhsu.mjs.map +1 -0
- package/dist/PlayerVideo-B9WIL8uC.mjs.map +1 -0
- package/dist/PlayerVideo-BYyvgMn7.mjs.map +1 -0
- package/dist/PlayerVideo-BuUqFzuB.mjs.map +1 -0
- package/dist/PlayerVideo-CUw-XoOv.mjs.map +1 -0
- package/dist/PlayerVideo-Cp79Q0xa.mjs.map +1 -0
- package/dist/PlayerVideo-DSBabkhM.mjs.map +1 -0
- package/dist/PlayerVideo-DT53YLfR.mjs.map +1 -0
- package/dist/PlayerVideo-DnvuuhD3.mjs.map +1 -0
- package/dist/PlayerVideo-DqCgiiXY.mjs.map +1 -0
- package/dist/PlayerVideo-_Uz00K_T.mjs +72 -0
- package/dist/PlayerVideo-_Uz00K_T.mjs.map +1 -0
- package/dist/PlayerVideoDigiteka-BJG8ITDo.mjs.map +1 -0
- package/dist/PlayerVideoDigiteka-BWIELEln.mjs.map +1 -0
- package/dist/PlayerVideoDigiteka-Bj8EI8Vh.mjs.map +1 -0
- package/dist/PlayerVideoDigiteka-CAG3rdnX.mjs.map +1 -0
- package/dist/PlayerVideoDigiteka-CiRYWcID.mjs.map +1 -0
- package/dist/PlayerVideoDigiteka-CjfuxXBF.mjs +102 -0
- package/dist/PlayerVideoDigiteka-CjfuxXBF.mjs.map +1 -0
- package/dist/PlayerVideoDigiteka-DN8n3Jxq.mjs.map +1 -0
- package/dist/PlayerVideoDigiteka-DY4OoYTJ.mjs.map +1 -0
- package/dist/PlayerVideoDigiteka-Dc4a8IkC.mjs.map +1 -0
- package/dist/PlayerVideoDigiteka-qyjjRcQQ.mjs.map +1 -0
- package/dist/PlayerVideoHls-BOFzAoa3.mjs.map +1 -0
- package/dist/PlayerVideoHls-BiWjHBsI.mjs.map +1 -0
- package/dist/PlayerVideoHls-Bik9D8KG.mjs.map +1 -0
- package/dist/PlayerVideoHls-DZLVTzRl.mjs.map +1 -0
- package/dist/PlayerVideoHls-DZZOba8L.mjs.map +1 -0
- package/dist/PlayerVideoHls-Dd9BFrew.mjs.map +1 -0
- package/dist/PlayerVideoHls-Dms7iTSo.mjs +232 -0
- package/dist/PlayerVideoHls-Dms7iTSo.mjs.map +1 -0
- package/dist/PlayerVideoHls-DyJ8irhG.mjs.map +1 -0
- package/dist/PlayerVideoHls-OOa2t3MT.mjs.map +1 -0
- package/dist/PlayerVideoHls-dr09QCjD.mjs.map +1 -0
- package/dist/PlaylistPage-B2hFKkAv.mjs.map +1 -0
- package/dist/PlaylistPage-BAJzOrcZ.mjs.map +1 -0
- package/dist/PlaylistPage-BFzaFrk8.mjs.map +1 -0
- package/dist/PlaylistPage-BWGNcb-A.mjs.map +1 -0
- package/dist/PlaylistPage-BsKXFeFm.mjs.map +1 -0
- package/dist/PlaylistPage-BvzjRZLw.mjs.map +1 -0
- package/dist/PlaylistPage-ByKMBX8O.mjs.map +1 -0
- package/dist/PlaylistPage-C4k2MCZc.mjs.map +1 -0
- package/dist/PlaylistPage-CGTvxari.mjs.map +1 -0
- package/dist/PlaylistPage-CQX0LhXn.mjs +228 -0
- package/dist/PlaylistPage-CQX0LhXn.mjs.map +1 -0
- package/dist/PlaylistPage-Cblx6kNd.mjs.map +1 -0
- package/dist/PlaylistPage-CwVpUncO.mjs.map +1 -0
- package/dist/PlaylistPage-D53unoXd.mjs.map +1 -0
- package/dist/PlaylistPage-DF6OZfEI.mjs.map +1 -0
- package/dist/PlaylistPage-DIoRS6bd.mjs.map +1 -0
- package/dist/PlaylistPage-DVDJuxke.mjs.map +1 -0
- package/dist/PlaylistPage-DcLuUZOA.mjs.map +1 -0
- package/dist/PlaylistPage-DgIsQgK7.mjs.map +1 -0
- package/dist/PlaylistPage-NJ1Hnlqo.mjs.map +1 -0
- package/dist/PlaylistPage-WTPqFXVM.mjs.map +1 -0
- package/dist/PlaylistPage-fjh0_l7f.mjs.map +1 -0
- package/dist/PlaylistPage-wGdsk4QD.mjs.map +1 -0
- package/dist/PlaylistPage-xr2bRlAd.mjs.map +1 -0
- package/dist/PlaylistsPage-B9fZRSvo.mjs.map +1 -0
- package/dist/PlaylistsPage-B_GN-39y.mjs.map +1 -0
- package/dist/PlaylistsPage-Bd-u4qlc.mjs +395 -0
- package/dist/PlaylistsPage-Bd-u4qlc.mjs.map +1 -0
- package/dist/PlaylistsPage-BtvL4wmM.mjs.map +1 -0
- package/dist/PlaylistsPage-BxDz1lU1.mjs.map +1 -0
- package/dist/PlaylistsPage-By_6bJRK.mjs.map +1 -0
- package/dist/PlaylistsPage-D5HAcyB-.mjs.map +1 -0
- package/dist/PlaylistsPage-D9cPN097.mjs.map +1 -0
- package/dist/PlaylistsPage-DkNrqJSI.mjs.map +1 -0
- package/dist/PlaylistsPage-dC5HAWiA.mjs.map +1 -0
- package/dist/PodcastFilterList-86Cn0XEU.mjs.map +1 -0
- package/dist/PodcastFilterList-AkO-iZPa.mjs.map +1 -0
- package/dist/PodcastFilterList-BQWDrkLL.mjs.map +1 -0
- package/dist/PodcastFilterList-Bo9ju0PM.mjs.map +1 -0
- package/dist/PodcastFilterList-C7dYqf5D.mjs.map +1 -0
- package/dist/PodcastFilterList-CPlb3VJu.mjs.map +1 -0
- package/dist/PodcastFilterList-CUEVTlgZ.mjs.map +1 -0
- package/dist/PodcastFilterList-CZSgPafl.mjs.map +1 -0
- package/dist/PodcastFilterList-Cb9Fb6qr.mjs.map +1 -0
- package/dist/PodcastFilterList-CdR-sy8o.mjs.map +1 -0
- package/dist/PodcastFilterList-CgUq0SrT.mjs.map +1 -0
- package/dist/PodcastFilterList-Cnl4onho.mjs.map +1 -0
- package/dist/PodcastFilterList-CxB_WaUv.mjs.map +1 -0
- package/dist/PodcastFilterList-D-cml1ny.mjs.map +1 -0
- package/dist/PodcastFilterList-DD7yvdQH.mjs.map +1 -0
- package/dist/PodcastFilterList-DDMah_Ob.mjs.map +1 -0
- package/dist/PodcastFilterList-DQNM9fR2.mjs.map +1 -0
- package/dist/PodcastFilterList-De7_1dZr.mjs.map +1 -0
- package/dist/PodcastFilterList-DkH6bqv_.mjs +254 -0
- package/dist/PodcastFilterList-DkH6bqv_.mjs.map +1 -0
- package/dist/PodcastFilterList-Dy1-7WPg.mjs.map +1 -0
- package/dist/PodcastFilterList-Rb7hFpNQ.mjs.map +1 -0
- package/dist/PodcastFilterList-liJqGorT.mjs.map +1 -0
- package/dist/PodcastFilterList-uBY-zvHm.mjs.map +1 -0
- package/dist/PodcastImage-7uun-9op.mjs.map +1 -0
- package/dist/PodcastImage-BPwJRNgo.mjs.map +1 -0
- package/dist/PodcastImage-BS9ItPN4.mjs.map +1 -0
- package/dist/PodcastImage-BjXD64T-.mjs.map +1 -0
- package/dist/PodcastImage-BlYkL6Cc.mjs.map +1 -0
- package/dist/PodcastImage-BtxcPlrh.mjs +174 -0
- package/dist/PodcastImage-BtxcPlrh.mjs.map +1 -0
- package/dist/PodcastImage-CYNYKClQ.mjs.map +1 -0
- package/dist/PodcastImage-CqMBgsP8.mjs.map +1 -0
- package/dist/PodcastImage-Cw6GPjVo.mjs.map +1 -0
- package/dist/PodcastImage-DjLGtnET.mjs.map +1 -0
- package/dist/PodcastImage-DmwqWLRU.mjs.map +1 -0
- package/dist/PodcastImage-DpPPRX6E.mjs.map +1 -0
- package/dist/PodcastImage-b4Z8jcf8.mjs.map +1 -0
- package/dist/PodcastImage-gBgtVKPH.mjs.map +1 -0
- package/dist/PodcastImage-ikvVNDYc.mjs.map +1 -0
- package/dist/PodcastImage-ljNA6Lrc.mjs.map +1 -0
- package/dist/PodcastImage-rNQd2Lc9.mjs.map +1 -0
- package/dist/PodcastInlineList-B6gt2yRj.mjs.map +1 -0
- package/dist/PodcastInlineList-BD7tj3f3.mjs.map +1 -0
- package/dist/PodcastInlineList-BMcSXWNm.mjs.map +1 -0
- package/dist/PodcastInlineList-BMj7vp3s.mjs.map +1 -0
- package/dist/PodcastInlineList-BPWpWTBE.mjs.map +1 -0
- package/dist/PodcastInlineList-BWT23hTv.mjs.map +1 -0
- package/dist/PodcastInlineList-BdnrmXJc.mjs.map +1 -0
- package/dist/PodcastInlineList-CGuB23OT.mjs.map +1 -0
- package/dist/PodcastInlineList-CLFBonil.mjs.map +1 -0
- package/dist/PodcastInlineList-CQwD4ApM.mjs.map +1 -0
- package/dist/PodcastInlineList-CVWfH5np.mjs +138 -0
- package/dist/PodcastInlineList-CVWfH5np.mjs.map +1 -0
- package/dist/PodcastInlineList-Cv5_ddYP.mjs.map +1 -0
- package/dist/PodcastInlineList-Cwkezt-j.mjs.map +1 -0
- package/dist/PodcastInlineList-CxF0UxTT.mjs.map +1 -0
- package/dist/PodcastInlineList-Cyfgl5uB.mjs.map +1 -0
- package/dist/PodcastInlineList-D1aNt-0a.mjs.map +1 -0
- package/dist/PodcastInlineList-DTA7dPax.mjs.map +1 -0
- package/dist/PodcastInlineList-Di2Ltgte.mjs.map +1 -0
- package/dist/PodcastInlineList-Dl_HVygN.mjs.map +1 -0
- package/dist/PodcastInlineList-Dx_fR8ZL.mjs.map +1 -0
- package/dist/PodcastInlineList-U2f-GGas.mjs.map +1 -0
- package/dist/PodcastInlineList-m6_-fF-i.mjs.map +1 -0
- package/dist/PodcastInlineList-yeAY_1xF.mjs.map +1 -0
- package/dist/PodcastInlineListTemplate-0UP6Pxe4.mjs.map +1 -0
- package/dist/PodcastInlineListTemplate-BWw1Ix-7.mjs +233 -0
- package/dist/PodcastInlineListTemplate-BWw1Ix-7.mjs.map +1 -0
- package/dist/PodcastInlineListTemplate-ByHnYjyI.mjs.map +1 -0
- package/dist/PodcastInlineListTemplate-DbAG8EGH.mjs.map +1 -0
- package/dist/PodcastInlineListTemplate-DqFWx-Wg.mjs.map +1 -0
- package/dist/PodcastInlineListTemplate-DyL7aOqO.mjs.map +1 -0
- package/dist/PodcastInlineListTemplate-pyWgvH5v.mjs.map +1 -0
- package/dist/PodcastIsPlaying-9h4w2yaA.mjs.map +1 -0
- package/dist/PodcastIsPlaying-B7YVeSyB.mjs +30 -0
- package/dist/PodcastIsPlaying-B7YVeSyB.mjs.map +1 -0
- package/dist/PodcastIsPlaying-BQgSISsC.mjs.map +1 -0
- package/dist/PodcastIsPlaying-DOR4VgNX.mjs.map +1 -0
- package/dist/PodcastIsPlaying-DcKCMo88.mjs.map +1 -0
- package/dist/PodcastIsPlaying-IIWRTs5M.mjs.map +1 -0
- package/dist/PodcastIsPlaying-JRa7cA5x.mjs.map +1 -0
- package/dist/PodcastIsPlaying-UUXLMSft.mjs.map +1 -0
- package/dist/PodcastIsPlaying-g04VoZNy.mjs.map +1 -0
- package/dist/PodcastIsPlaying-ugnfbWsH.mjs.map +1 -0
- package/dist/PodcastItem-0nuKLsQr.mjs.map +1 -0
- package/dist/PodcastItem-BHJDFdu3.mjs.map +1 -0
- package/dist/PodcastItem-BrSz4yQH.mjs.map +1 -0
- package/dist/PodcastItem-C0yxAO-H.mjs.map +1 -0
- package/dist/PodcastItem-C49ya6AI.mjs.map +1 -0
- package/dist/PodcastItem-CAKmPzzW.mjs.map +1 -0
- package/dist/PodcastItem-CC7GB5L3.mjs.map +1 -0
- package/dist/PodcastItem-CFk8MX9D.mjs +287 -0
- package/dist/PodcastItem-CFk8MX9D.mjs.map +1 -0
- package/dist/PodcastItem-CcMCFONS.mjs.map +1 -0
- package/dist/PodcastItem-CtpZR2pM.mjs.map +1 -0
- package/dist/PodcastItem-Cy0i9i5f.mjs.map +1 -0
- package/dist/PodcastItem-DBI0imII.mjs.map +1 -0
- package/dist/PodcastItem-DCVmaP5H.mjs.map +1 -0
- package/dist/PodcastItem-DNrV6ta-.mjs.map +1 -0
- package/dist/PodcastItem-DRp51Vrx.mjs.map +1 -0
- package/dist/PodcastItem-DjjInGdX.mjs.map +1 -0
- package/dist/PodcastItem-DkIZUMSC.mjs.map +1 -0
- package/dist/PodcastItem-Dlmrs8W-.mjs.map +1 -0
- package/dist/PodcastItem-DuuauV-X.mjs.map +1 -0
- package/dist/PodcastItem-R_--lKuz.mjs.map +1 -0
- package/dist/PodcastItem-c9hYGkh_.mjs.map +1 -0
- package/dist/PodcastItem-lTQrFsX7.mjs.map +1 -0
- package/dist/PodcastItem-vxMpBJBW.mjs.map +1 -0
- package/dist/PodcastList--dkPJ6FO.mjs.map +1 -0
- package/dist/PodcastList-9jcAr-NA.mjs.map +1 -0
- package/dist/PodcastList-B9z_57Y4.mjs.map +1 -0
- package/dist/PodcastList-BLXPFjvL.mjs +182 -0
- package/dist/PodcastList-BLXPFjvL.mjs.map +1 -0
- package/dist/PodcastList-BckGihbY.mjs.map +1 -0
- package/dist/PodcastList-Bi7-x1kF.mjs.map +1 -0
- package/dist/PodcastList-BlmGoIxM.mjs.map +1 -0
- package/dist/PodcastList-BqqKAFfS.mjs.map +1 -0
- package/dist/PodcastList-BtRgQoy_.mjs.map +1 -0
- package/dist/PodcastList-BuClu1W_.mjs.map +1 -0
- package/dist/PodcastList-Bx_t-xpa.mjs.map +1 -0
- package/dist/PodcastList-C-FQC_ex.mjs.map +1 -0
- package/dist/PodcastList-C3SaZ_3S.mjs.map +1 -0
- package/dist/PodcastList-C4rHNNzi.mjs.map +1 -0
- package/dist/PodcastList-C998_Mii.mjs.map +1 -0
- package/dist/PodcastList-CHDECufN.mjs.map +1 -0
- package/dist/PodcastList-CRDiHxsd.mjs.map +1 -0
- package/dist/PodcastList-CZMVXnxW.mjs.map +1 -0
- package/dist/PodcastList-Cboz94ca.mjs.map +1 -0
- package/dist/PodcastList-Ce8Tm-IO.mjs.map +1 -0
- package/dist/PodcastList-ChhtZFJV.mjs.map +1 -0
- package/dist/PodcastList-CjPOFOZ4.mjs.map +1 -0
- package/dist/PodcastList-CjVGrEWB.mjs.map +1 -0
- package/dist/PodcastList-Cl_tie3X.mjs.map +1 -0
- package/dist/PodcastList-Cni3stpU.mjs.map +1 -0
- package/dist/PodcastList-CpfsRAFt.mjs.map +1 -0
- package/dist/PodcastList-D4SfQEF-.mjs.map +1 -0
- package/dist/PodcastList-DJ6Gtyiw.mjs.map +1 -0
- package/dist/PodcastList-DS8NSgC1.mjs.map +1 -0
- package/dist/PodcastList-DT4o3k8J.mjs.map +1 -0
- package/dist/PodcastList-DXorh0Hg.mjs.map +1 -0
- package/dist/PodcastList-DjONmKIQ.mjs.map +1 -0
- package/dist/PodcastList-DnW1J7DX.mjs.map +1 -0
- package/dist/PodcastList-DnloX_kK.mjs.map +1 -0
- package/dist/PodcastList-DoeBisQF.mjs.map +1 -0
- package/dist/PodcastList-DryaDa27.mjs.map +1 -0
- package/dist/PodcastList-DtaF4JDQ.mjs.map +1 -0
- package/dist/PodcastList-DvOEkAm2.mjs.map +1 -0
- package/dist/PodcastList-DwTRHCHB.mjs.map +1 -0
- package/dist/PodcastList-DxQiX9ES.mjs.map +1 -0
- package/dist/PodcastList-DxW-u4N7.mjs.map +1 -0
- package/dist/PodcastList-N4TeBI8P.mjs.map +1 -0
- package/dist/PodcastList-R1wyWX7F.mjs.map +1 -0
- package/dist/PodcastList-c0Iwzakm.mjs +337 -0
- package/dist/PodcastList-c0Iwzakm.mjs.map +1 -0
- package/dist/PodcastList-klwqgRcF.mjs.map +1 -0
- package/dist/PodcastList-tJXZxVUW.mjs.map +1 -0
- package/dist/PodcastPage--YLJdvxB.mjs.map +1 -0
- package/dist/PodcastPage-4dst4q-M.mjs.map +1 -0
- package/dist/PodcastPage-B4PLHy9V.mjs.map +1 -0
- package/dist/PodcastPage-B8EtUkwl.mjs.map +1 -0
- package/dist/PodcastPage-BrUX1Pw_.mjs.map +1 -0
- package/dist/PodcastPage-BuPACjQY.mjs.map +1 -0
- package/dist/PodcastPage-C0mjMFKX.mjs.map +1 -0
- package/dist/PodcastPage-C4MYPSa2.mjs.map +1 -0
- package/dist/PodcastPage-C7bPcSm2.mjs.map +1 -0
- package/dist/PodcastPage-CCn24wcr.mjs.map +1 -0
- package/dist/PodcastPage-CJMGdqWf.mjs.map +1 -0
- package/dist/PodcastPage-CO6SBv4Y.mjs.map +1 -0
- package/dist/PodcastPage-CPCIwibb.mjs.map +1 -0
- package/dist/PodcastPage-C_d9FaS7.mjs +757 -0
- package/dist/PodcastPage-C_d9FaS7.mjs.map +1 -0
- package/dist/PodcastPage-CiHCBktw.mjs.map +1 -0
- package/dist/PodcastPage-Cii-ovwa.mjs.map +1 -0
- package/dist/PodcastPage-CmSvvdfc.mjs.map +1 -0
- package/dist/PodcastPage-Cn-F9pSB.mjs.map +1 -0
- package/dist/PodcastPage-CyeagDv4.mjs.map +1 -0
- package/dist/PodcastPage-D0_KlwQq.mjs.map +1 -0
- package/dist/PodcastPage-D3mPgHeL.mjs.map +1 -0
- package/dist/PodcastPage-D64sbMNT.mjs.map +1 -0
- package/dist/PodcastPage-D7PzRjSt.mjs.map +1 -0
- package/dist/PodcastPage-DMvlGZ1k.mjs.map +1 -0
- package/dist/PodcastPage-DP-vBdTR.mjs.map +1 -0
- package/dist/PodcastPage-DPnKa3vK.mjs.map +1 -0
- package/dist/PodcastPage-DkL72Z1y.mjs.map +1 -0
- package/dist/PodcastPage-DmK-uTdk.mjs.map +1 -0
- package/dist/PodcastPage-Dq_PsWZB.mjs.map +1 -0
- package/dist/PodcastPage-Dtm_CuYw.mjs.map +1 -0
- package/dist/PodcastPage-MMSLDWfK.mjs.map +1 -0
- package/dist/PodcastPage-NeMq-YnG.mjs.map +1 -0
- package/dist/PodcastPage-PMELmH0s.mjs.map +1 -0
- package/dist/PodcastPage-e6rJr6hV.mjs.map +1 -0
- package/dist/PodcastPage-hdMWLWpi.mjs.map +1 -0
- package/dist/PodcastPage-y0BtCLhc.mjs.map +1 -0
- package/dist/PodcastPage-zbNXMsnP.mjs.map +1 -0
- package/dist/PodcastPlayBar-B5--J956.mjs.map +1 -0
- package/dist/PodcastPlayBar-BAg_2Q0C.mjs.map +1 -0
- package/dist/PodcastPlayBar-BPGbw-cg.mjs.map +1 -0
- package/dist/PodcastPlayBar-BhvFc_aM.mjs.map +1 -0
- package/dist/PodcastPlayBar-Bu6whhel.mjs.map +1 -0
- package/dist/PodcastPlayBar-CHW1r2IU.mjs.map +1 -0
- package/dist/PodcastPlayBar-COqDDeSX.mjs.map +1 -0
- package/dist/PodcastPlayBar-CcUVE409.mjs.map +1 -0
- package/dist/PodcastPlayBar-CiDSRgOD.mjs.map +1 -0
- package/dist/PodcastPlayBar-WjGn_KlZ.mjs +83 -0
- package/dist/PodcastPlayBar-WjGn_KlZ.mjs.map +1 -0
- package/dist/PodcastPlayBasicButton-1zXA2DZ9.mjs.map +1 -0
- package/dist/PodcastPlayBasicButton-2AI00HYi.mjs.map +1 -0
- package/dist/PodcastPlayBasicButton-7Lko-Sd7.mjs.map +1 -0
- package/dist/PodcastPlayBasicButton-BESx1bOI.mjs.map +1 -0
- package/dist/PodcastPlayBasicButton-BNKlqhGR.mjs +72 -0
- package/dist/PodcastPlayBasicButton-BNKlqhGR.mjs.map +1 -0
- package/dist/PodcastPlayBasicButton-BQfmATxC.mjs.map +1 -0
- package/dist/PodcastPlayBasicButton-CZ-a7Mi-.mjs.map +1 -0
- package/dist/PodcastPlayBasicButton-Uc3tRTxu.mjs.map +1 -0
- package/dist/PodcastPlayBasicButton-Yey3goNb.mjs.map +1 -0
- package/dist/PodcastPlayBasicButton-gKBe1ZXP.mjs.map +1 -0
- package/dist/PodcastPlayButton-3jEnHVq3.mjs.map +1 -0
- package/dist/PodcastPlayButton-4FJn2J_F.mjs.map +1 -0
- package/dist/PodcastPlayButton-B9hWbPEk.mjs +236 -0
- package/dist/PodcastPlayButton-B9hWbPEk.mjs.map +1 -0
- package/dist/PodcastPlayButton-BEzpvH8k.mjs.map +1 -0
- package/dist/PodcastPlayButton-BFE7b9VV.mjs.map +1 -0
- package/dist/PodcastPlayButton-BHCAQuL9.mjs.map +1 -0
- package/dist/PodcastPlayButton-ByKbzeNd.mjs.map +1 -0
- package/dist/PodcastPlayButton-CFWIq8jA.mjs.map +1 -0
- package/dist/PodcastPlayButton-Ca5tbFLu.mjs.map +1 -0
- package/dist/PodcastPlayButton-ConCKnn3.mjs.map +1 -0
- package/dist/PodcastPlayButton-DSIZLTMK.mjs.map +1 -0
- package/dist/PodcastPlayButton-DbcN0url.mjs.map +1 -0
- package/dist/PodcastPlayButton-DcVS83R3.mjs.map +1 -0
- package/dist/PodcastPlayButton-DuRguIYl.mjs.map +1 -0
- package/dist/PodcastPlayButton-Dv20ZbyW.mjs.map +1 -0
- package/dist/PodcastPlayButton-h1LRJfPj.mjs.map +1 -0
- package/dist/PodcastPlayButton-jt0arqEL.mjs.map +1 -0
- package/dist/PodcastPlaylistInlineList-1gDiBDfh.mjs.map +1 -0
- package/dist/PodcastPlaylistInlineList-9MyKaMvW.mjs.map +1 -0
- package/dist/PodcastPlaylistInlineList-B0RsTg9f.mjs.map +1 -0
- package/dist/PodcastPlaylistInlineList-B4KEGPMM.mjs.map +1 -0
- package/dist/PodcastPlaylistInlineList-B8lpF30-.mjs.map +1 -0
- package/dist/PodcastPlaylistInlineList-BBjDaRhA.mjs.map +1 -0
- package/dist/PodcastPlaylistInlineList-BU_3T6Jj.mjs.map +1 -0
- package/dist/PodcastPlaylistInlineList-BWsmp5uu.mjs.map +1 -0
- package/dist/PodcastPlaylistInlineList-BvBtHFIG.mjs.map +1 -0
- package/dist/PodcastPlaylistInlineList-C4tCkX5x.mjs.map +1 -0
- package/dist/PodcastPlaylistInlineList-CN65zh2L.mjs.map +1 -0
- package/dist/PodcastPlaylistInlineList-CZvARIo4.mjs.map +1 -0
- package/dist/PodcastPlaylistInlineList-ClzX6E-S.mjs.map +1 -0
- package/dist/PodcastPlaylistInlineList-D1K-v3aW.mjs.map +1 -0
- package/dist/PodcastPlaylistInlineList-D6IkxaAm.mjs.map +1 -0
- package/dist/PodcastPlaylistInlineList-DV9g9nQm.mjs.map +1 -0
- package/dist/PodcastPlaylistInlineList-DYPKqbDn.mjs.map +1 -0
- package/dist/PodcastPlaylistInlineList-DZ0ICF_M.mjs.map +1 -0
- package/dist/PodcastPlaylistInlineList-DiznhWPx.mjs.map +1 -0
- package/dist/PodcastPlaylistInlineList-ZIrxaKij.mjs.map +1 -0
- package/dist/PodcastPlaylistInlineList-_csxbYAx.mjs +115 -0
- package/dist/PodcastPlaylistInlineList-_csxbYAx.mjs.map +1 -0
- package/dist/PodcastPlaylistInlineList-b8NqovDP.mjs.map +1 -0
- package/dist/PodcastPlaylistInlineList-yRlA0MAH.mjs.map +1 -0
- package/dist/PodcastPresentationList-BD8XmnW0.mjs +200 -0
- package/dist/PodcastPresentationList-BD8XmnW0.mjs.map +1 -0
- package/dist/PodcastPresentationList-BNracFjt.mjs.map +1 -0
- package/dist/PodcastPresentationList-BZr1_6F6.mjs.map +1 -0
- package/dist/PodcastPresentationList-BbdazxRv.mjs.map +1 -0
- package/dist/PodcastPresentationList-C_GDEGJU.mjs.map +1 -0
- package/dist/PodcastPresentationList-CeEenog_.mjs.map +1 -0
- package/dist/PodcastPresentationList-ChWrahwT.mjs.map +1 -0
- package/dist/PodcastPresentationList-CkEZvLK2.mjs.map +1 -0
- package/dist/PodcastPresentationList-Cqs2LDbs.mjs.map +1 -0
- package/dist/PodcastPresentationList-DBzJT8fp.mjs.map +1 -0
- package/dist/PodcastPresentationList-DxrStBb6.mjs.map +1 -0
- package/dist/PodcastPresentationList-KPoNgY0B.mjs.map +1 -0
- package/dist/PodcastPresentationList-PwLtPHvs.mjs.map +1 -0
- package/dist/PodcastPresentationList-id7ihfD-.mjs.map +1 -0
- package/dist/PodcastPresentationList-kEoSJsz5.mjs.map +1 -0
- package/dist/PodcastPresentationList-m8fFf1Kx.mjs.map +1 -0
- package/dist/PodcastPresentationList-mksFNcl5.mjs.map +1 -0
- package/dist/PodcastProgressBar-2CSNk_s2.mjs.map +1 -0
- package/dist/PodcastProgressBar-B3XOeeJx.mjs +98 -0
- package/dist/PodcastProgressBar-B3XOeeJx.mjs.map +1 -0
- package/dist/PodcastProgressBar-B76P2ukl.mjs.map +1 -0
- package/dist/PodcastProgressBar-BCNYTg72.mjs.map +1 -0
- package/dist/PodcastProgressBar-BZBCr-WW.mjs.map +1 -0
- package/dist/PodcastProgressBar-CDTvkAQB.mjs.map +1 -0
- package/dist/PodcastProgressBar-CeHAi4g6.mjs.map +1 -0
- package/dist/PodcastProgressBar-CjpukiGw.mjs.map +1 -0
- package/dist/PodcastProgressBar-CkJDdRGF.mjs.map +1 -0
- package/dist/PodcastProgressBar-T3VI322-.mjs.map +1 -0
- package/dist/PodcastRawTranscript-B5OzPrgR.mjs.map +1 -0
- package/dist/PodcastRawTranscript-BE7x6psu.mjs.map +1 -0
- package/dist/PodcastRawTranscript-BUFGx6rZ.mjs.map +1 -0
- package/dist/PodcastRawTranscript-BlirnnGL.mjs.map +1 -0
- package/dist/PodcastRawTranscript-CMfOxpLd.mjs.map +1 -0
- package/dist/PodcastRawTranscript-CN_DKXV-.mjs.map +1 -0
- package/dist/PodcastRawTranscript-CR9PTmbn.mjs.map +1 -0
- package/dist/PodcastRawTranscript-CezPpAQJ.mjs.map +1 -0
- package/dist/PodcastRawTranscript-D0Nm7jGM.mjs +184 -0
- package/dist/PodcastRawTranscript-D0Nm7jGM.mjs.map +1 -0
- package/dist/PodcastRawTranscript-D8jXfysg.mjs.map +1 -0
- package/dist/PodcastRawTranscript-DGXQVGRb.mjs.map +1 -0
- package/dist/PodcastRawTranscript-Do08hXdq.mjs.map +1 -0
- package/dist/PodcastRawTranscript-DxuuiZIk.mjs.map +1 -0
- package/dist/PodcastRawTranscript-p_W3HHS4.mjs.map +1 -0
- package/dist/PodcastRubriqueList-BeTq7IRu.mjs +83 -0
- package/dist/PodcastRubriqueList-BeTq7IRu.mjs.map +1 -0
- package/dist/PodcastRubriqueList-CKY13Hmm.mjs.map +1 -0
- package/dist/PodcastRubriqueList-Cd9JJ7t4.mjs.map +1 -0
- package/dist/PodcastRubriqueList-_TilD5Kt.mjs.map +1 -0
- package/dist/PodcastSwiperList-B3Rmq88q.mjs.map +1 -0
- package/dist/PodcastSwiperList-BFzZOdKO.mjs.map +1 -0
- package/dist/PodcastSwiperList-BMHZ_9wS.mjs.map +1 -0
- package/dist/PodcastSwiperList-BRPe_MmI.mjs.map +1 -0
- package/dist/PodcastSwiperList-B_oF8mbv.mjs.map +1 -0
- package/dist/PodcastSwiperList-Be5wQG_T.mjs.map +1 -0
- package/dist/PodcastSwiperList-BmY1xAhq.mjs.map +1 -0
- package/dist/PodcastSwiperList-CE0GA3yG.mjs.map +1 -0
- package/dist/PodcastSwiperList-CRTQCJUr.mjs.map +1 -0
- package/dist/PodcastSwiperList-CUoZh4H_.mjs.map +1 -0
- package/dist/PodcastSwiperList-CalHP6Sp.mjs.map +1 -0
- package/dist/PodcastSwiperList-Ckmkz2z_.mjs.map +1 -0
- package/dist/PodcastSwiperList-D9BHeJUn.mjs.map +1 -0
- package/dist/PodcastSwiperList-DEiZYxU0.mjs.map +1 -0
- package/dist/PodcastSwiperList-DJ0O3dqM.mjs +219 -0
- package/dist/PodcastSwiperList-DJ0O3dqM.mjs.map +1 -0
- package/dist/PodcastSwiperList-DJwulLY1.mjs.map +1 -0
- package/dist/PodcastSwiperList-DMjp1idK.mjs.map +1 -0
- package/dist/PodcastSwiperList-DS-KwJv5.mjs.map +1 -0
- package/dist/PodcastSwiperList-DWyQ1eqN.mjs.map +1 -0
- package/dist/PodcastSwiperList-Dt7ll-k2.mjs.map +1 -0
- package/dist/PodcastSwiperList-aIPyXi83.mjs.map +1 -0
- package/dist/PodcastSwiperList-cBuyrKI6.mjs.map +1 -0
- package/dist/PodcastSwiperList-qigkE1rm.mjs.map +1 -0
- package/dist/PodcastmakerHeader-4t5-e-0n.mjs.map +1 -0
- package/dist/PodcastmakerHeader-BUFIFYNW.mjs.map +1 -0
- package/dist/PodcastmakerHeader-BmINh9MO.mjs.map +1 -0
- package/dist/PodcastmakerHeader-D3SmmwFE.mjs.map +1 -0
- package/dist/PodcastmakerHeader-DAATtOG_.mjs +58 -0
- package/dist/PodcastmakerHeader-DAATtOG_.mjs.map +1 -0
- package/dist/PodcastmakerHeader-DXgSlYNO.mjs.map +1 -0
- package/dist/PodcastmakerHeader-Dv5iMHm4.mjs.map +1 -0
- package/dist/PodcastsPage-BHHO6ye1.mjs.map +1 -0
- package/dist/PodcastsPage-BIxOILl_.mjs.map +1 -0
- package/dist/PodcastsPage-B_aWL0yM.mjs.map +1 -0
- package/dist/PodcastsPage-BbzUkk6U.mjs.map +1 -0
- package/dist/PodcastsPage-Bit5FdDp.mjs.map +1 -0
- package/dist/PodcastsPage-Bl63mbuD.mjs.map +1 -0
- package/dist/PodcastsPage-C1aMiXl4.mjs.map +1 -0
- package/dist/PodcastsPage-CEA_ETPi.mjs.map +1 -0
- package/dist/PodcastsPage-COBZYvrh.mjs.map +1 -0
- package/dist/PodcastsPage-Cc_dZIpT.mjs.map +1 -0
- package/dist/PodcastsPage-Cf64aYnK.mjs.map +1 -0
- package/dist/PodcastsPage-Cj0Z2BjX.mjs.map +1 -0
- package/dist/PodcastsPage-CoyDxaTY.mjs.map +1 -0
- package/dist/PodcastsPage-DAzrzrES.mjs.map +1 -0
- package/dist/PodcastsPage-DNabkFet.mjs.map +1 -0
- package/dist/PodcastsPage-DNbmWfBG.mjs.map +1 -0
- package/dist/PodcastsPage-DdicdF2s.mjs.map +1 -0
- package/dist/PodcastsPage-DrI3Dd1V.mjs.map +1 -0
- package/dist/PodcastsPage-EGsdYkWP.mjs.map +1 -0
- package/dist/PodcastsPage-ON1tWV49.mjs.map +1 -0
- package/dist/PodcastsPage-ZhEVoMp1.mjs +227 -0
- package/dist/PodcastsPage-ZhEVoMp1.mjs.map +1 -0
- package/dist/PodcastsPage-qvoCpU0_.mjs.map +1 -0
- package/dist/PodcastsPage-tnVLgVNY.mjs.map +1 -0
- package/dist/ProductorSearch-CE8c0XeU.mjs.map +1 -0
- package/dist/ProductorSearch-CRYk_70T.mjs.map +1 -0
- package/dist/ProductorSearch-Ck16O7yn.mjs.map +1 -0
- package/dist/ProductorSearch-CkEbbGq-.mjs.map +1 -0
- package/dist/ProductorSearch-DRCsDLYs.mjs.map +1 -0
- package/dist/ProductorSearch-xs0kzX_E.mjs +161 -0
- package/dist/ProductorSearch-xs0kzX_E.mjs.map +1 -0
- package/dist/ProductorSearch-yrPGJ1gQ.mjs.map +1 -0
- package/dist/ProgressBar-0DSoUTwB.mjs +158 -0
- package/dist/ProgressBar-0DSoUTwB.mjs.map +1 -0
- package/dist/ProgressBar-C9dqh_8A.mjs.map +1 -0
- package/dist/ProgressBar-CWpZEHK9.mjs.map +1 -0
- package/dist/ProgressBar-D0Aofvh_.mjs.map +1 -0
- package/dist/ProgressBar-DEys-pEA.mjs.map +1 -0
- package/dist/ProgressBar-DXa8PKaH.mjs.map +1 -0
- package/dist/ProgressBar-HeVwY3L7.mjs.map +1 -0
- package/dist/ProgressBar-SrevuxEL.mjs.map +1 -0
- package/dist/ProgressBar-elAO_v4y.mjs.map +1 -0
- package/dist/ProgressBar-pb4hYB2h.mjs.map +1 -0
- package/dist/QrCode-BejTn_94.mjs.map +1 -0
- package/dist/QrCode-CUP2O18d.mjs +177 -0
- package/dist/QrCode-CUP2O18d.mjs.map +1 -0
- package/dist/QrCode-CY4Hob2N.mjs.map +1 -0
- package/dist/QrCode-CZy2IwTB.mjs.map +1 -0
- package/dist/QrCode-Cg6I3PM6.mjs.map +1 -0
- package/dist/QrCode-DF46wes9.mjs.map +1 -0
- package/dist/QrCode-JiRv1DV_.mjs.map +1 -0
- package/dist/QrCodeModal-4lgTAGHL.mjs.map +1 -0
- package/dist/QrCodeModal-BU96s423.mjs.map +1 -0
- package/dist/QrCodeModal-BySjwCWW.mjs.map +1 -0
- package/dist/QrCodeModal-DXBCuki7.mjs +64 -0
- package/dist/QrCodeModal-DXBCuki7.mjs.map +1 -0
- package/dist/QrCodeModal-E-A2aE39.mjs.map +1 -0
- package/dist/QrCodeModal-aMuuA2uy.mjs.map +1 -0
- package/dist/QrCodeModal-zVfj0NZ8.mjs.map +1 -0
- package/dist/RadioCurrently-BKhmEmo1.mjs.map +1 -0
- package/dist/RadioCurrently-Bgkrv8b3.mjs.map +1 -0
- package/dist/RadioCurrently-CWMKEWYl.mjs.map +1 -0
- package/dist/RadioCurrently-Cq2GqBWh.mjs.map +1 -0
- package/dist/RadioCurrently-CrhdM-uB.mjs.map +1 -0
- package/dist/RadioCurrently-D5M81oIX.mjs +112 -0
- package/dist/RadioCurrently-D5M81oIX.mjs.map +1 -0
- package/dist/RadioCurrently-DEEp9_7j.mjs.map +1 -0
- package/dist/RadioCurrently-Dc1e35FV.mjs.map +1 -0
- package/dist/RadioCurrently-HezAvSxL.mjs.map +1 -0
- package/dist/RadioCurrently-TIE98WIJ.mjs.map +1 -0
- package/dist/RadioHistory-BIXInGnR.mjs.map +1 -0
- package/dist/RadioHistory-BgOve4jk.mjs +139 -0
- package/dist/RadioHistory-BgOve4jk.mjs.map +1 -0
- package/dist/RadioHistory-Brv-CjoG.mjs.map +1 -0
- package/dist/RadioHistory-CjeDDlIt.mjs.map +1 -0
- package/dist/RadioHistory-CkYZK1DG.mjs.map +1 -0
- package/dist/RadioHistory-CrIRbRz6.mjs.map +1 -0
- package/dist/RadioHistory-CtAjORUI.mjs.map +1 -0
- package/dist/RadioHistory-DZpzgY7V.mjs.map +1 -0
- package/dist/RadioHistory-DgZbivWH.mjs.map +1 -0
- package/dist/RadioHistory-iz38RANp.mjs.map +1 -0
- package/dist/RadioImage-BAKbLKIQ.mjs.map +1 -0
- package/dist/RadioImage-BnKy4uAb.mjs.map +1 -0
- package/dist/RadioImage-C0OIwiAa.mjs.map +1 -0
- package/dist/RadioImage-COCaoZr1.mjs.map +1 -0
- package/dist/RadioImage-CUTRr3DL.mjs +85 -0
- package/dist/RadioImage-CUTRr3DL.mjs.map +1 -0
- package/dist/RadioImage-CgMGOHHN.mjs.map +1 -0
- package/dist/RadioImage-CzsquLtj.mjs.map +1 -0
- package/dist/RadioImage-D0oQtehr.mjs.map +1 -0
- package/dist/RadioImage-DtWOKWZf.mjs.map +1 -0
- package/dist/RadioImage-bU0fzap8.mjs.map +1 -0
- package/dist/RadioList-2xmWO_oH.mjs.map +1 -0
- package/dist/RadioList-B1xC5HsL.mjs.map +1 -0
- package/dist/RadioList-BECoBZpW.mjs.map +1 -0
- package/dist/RadioList-C6_2seU6.mjs.map +1 -0
- package/dist/RadioList-CVIRomw0.mjs.map +1 -0
- package/dist/RadioList-CwzOFHc1.mjs +125 -0
- package/dist/RadioList-CwzOFHc1.mjs.map +1 -0
- package/dist/RadioList-DmB0OYYN.mjs.map +1 -0
- package/dist/RadioList-glYNPywL.mjs.map +1 -0
- package/dist/RadioList-iZKd_KZH.mjs.map +1 -0
- package/dist/RadioList-oxV25FkS.mjs.map +1 -0
- package/dist/RadioPage-7o4yErAV.mjs.map +1 -0
- package/dist/RadioPage-BAy9854e.mjs.map +1 -0
- package/dist/RadioPage-BGE7oPRX.mjs.map +1 -0
- package/dist/RadioPage-BhLBsJrT.mjs.map +1 -0
- package/dist/RadioPage-CQbWnV5c.mjs.map +1 -0
- package/dist/RadioPage-CxyuKbJh.mjs.map +1 -0
- package/dist/RadioPage-DVflzCV-.mjs +137 -0
- package/dist/RadioPage-DVflzCV-.mjs.map +1 -0
- package/dist/RadioPage-DcuYbHbN.mjs.map +1 -0
- package/dist/RadioPage-Ub-cu7AR.mjs.map +1 -0
- package/dist/RadioPage-n3Ab5UGK.mjs.map +1 -0
- package/dist/RadioPlanning-B1T8as_3.mjs.map +1 -0
- package/dist/RadioPlanning-BYVFVHZs.mjs.map +1 -0
- package/dist/RadioPlanning-BtIfW4Ah.mjs.map +1 -0
- package/dist/RadioPlanning-CJ7Qqyhs.mjs +290 -0
- package/dist/RadioPlanning-CJ7Qqyhs.mjs.map +1 -0
- package/dist/RadioPlanning-Cva-oyEO.mjs.map +1 -0
- package/dist/RadioPlanning-DQciYO5X.mjs.map +1 -0
- package/dist/RadioPlanning-p9EsQBqh.mjs.map +1 -0
- package/dist/RadioProgressBar-0jyYOLGj.mjs.map +1 -0
- package/dist/RadioProgressBar-BDizQcsG.mjs.map +1 -0
- package/dist/RadioProgressBar-BaYXZqnx.mjs.map +1 -0
- package/dist/RadioProgressBar-BmJbzzQA.mjs +67 -0
- package/dist/RadioProgressBar-BmJbzzQA.mjs.map +1 -0
- package/dist/RadioProgressBar-CChGM7uF.mjs.map +1 -0
- package/dist/RadioProgressBar-CmGsHx9A.mjs.map +1 -0
- package/dist/RadioProgressBar-CvOUHP8K.mjs.map +1 -0
- package/dist/RadioProgressBar-tCLVT7lT.mjs.map +1 -0
- package/dist/RadioProgressBar-uWTmB_kd.mjs.map +1 -0
- package/dist/RadioProgressBar-zzS52gJe.mjs.map +1 -0
- package/dist/RecaptchaModal-B0NVpSBG.mjs.map +1 -0
- package/dist/RecaptchaModal-B8u7AFQM.mjs.map +1 -0
- package/dist/RecaptchaModal-BW1PiDOO.mjs.map +1 -0
- package/dist/RecaptchaModal-BoQNOCu2.mjs.map +1 -0
- package/dist/RecaptchaModal-DUUrgvsf.mjs.map +1 -0
- package/dist/RecaptchaModal-DX9rAHUg.mjs +148 -0
- package/dist/RecaptchaModal-DX9rAHUg.mjs.map +1 -0
- package/dist/RecaptchaModal-_dognZKy.mjs.map +1 -0
- package/dist/ReportAbuseModal-BD42Bwjq.mjs.map +1 -0
- package/dist/ReportAbuseModal-BpC3s9O8.mjs.map +1 -0
- package/dist/ReportAbuseModal-BvabhFZA.mjs.map +1 -0
- package/dist/ReportAbuseModal-CTyKQ_JD.mjs.map +1 -0
- package/dist/ReportAbuseModal-CVruxsnZ.mjs.map +1 -0
- package/dist/ReportAbuseModal-CYCRaFAY.mjs +134 -0
- package/dist/ReportAbuseModal-CYCRaFAY.mjs.map +1 -0
- package/dist/ReportAbuseModal-Cet3wh0h.mjs.map +1 -0
- package/dist/RightsIndicator-BspTQNOS.mjs.map +1 -0
- package/dist/RightsIndicator-BwUdzcLZ.mjs.map +1 -0
- package/dist/RightsIndicator-CBsKUIAt.mjs.map +1 -0
- package/dist/RightsIndicator-CE6A1bKi.mjs.map +1 -0
- package/dist/RightsIndicator-CFvkj6VN.mjs.map +1 -0
- package/dist/RightsIndicator-CLYRg-Qa.mjs.map +1 -0
- package/dist/RightsIndicator-CYSHxEv6.mjs.map +1 -0
- package/dist/RightsIndicator-CZvi35f7.mjs.map +1 -0
- package/dist/RightsIndicator-Cy0Kpc3W.mjs.map +1 -0
- package/dist/RightsIndicator-DR7pk3W0.mjs.map +1 -0
- package/dist/RightsIndicator-DUWZEPPa.mjs.map +1 -0
- package/dist/RightsIndicator-DgQhNhpE.mjs.map +1 -0
- package/dist/RightsIndicator-Do8r-uxQ.mjs.map +1 -0
- package/dist/RightsIndicator-DrvWXMIY.mjs.map +1 -0
- package/dist/RightsIndicator-STcmOC9U.mjs.map +1 -0
- package/dist/RightsIndicator-l63FU_-K.mjs.map +1 -0
- package/dist/RightsIndicator-qIU4_wiF.mjs +124 -0
- package/dist/RightsIndicator-qIU4_wiF.mjs.map +1 -0
- package/dist/RightsWrapper-B2rRBJRe.mjs.map +1 -0
- package/dist/RightsWrapper-B8zm4Eax.mjs.map +1 -0
- package/dist/RightsWrapper-BNxs1uN8.mjs.map +1 -0
- package/dist/RightsWrapper-BdCOpz3L.mjs.map +1 -0
- package/dist/RightsWrapper-Cs6prZ3E.mjs +212 -0
- package/dist/RightsWrapper-Cs6prZ3E.mjs.map +1 -0
- package/dist/RightsWrapper-D8Yr2tBA.mjs.map +1 -0
- package/dist/RightsWrapper-DDG7viMU.mjs.map +1 -0
- package/dist/RightsWrapper-DEYtHAry.mjs.map +1 -0
- package/dist/RightsWrapper-DXZJWnqp.mjs.map +1 -0
- package/dist/RightsWrapper-SIV9FowU.mjs.map +1 -0
- package/dist/RightsWrapper-tQnqraSy.mjs.map +1 -0
- package/dist/RubriqueFilter-BvUWgVzq.mjs.map +1 -0
- package/dist/RubriqueFilter-CG8j_NAp.mjs.map +1 -0
- package/dist/RubriqueFilter-CS9QT-rc.mjs.map +1 -0
- package/dist/RubriqueFilter-DfKJeniI.mjs.map +1 -0
- package/dist/RubriqueFilter-DxoIa3pi.mjs.map +1 -0
- package/dist/RubriqueFilter-F90ouW1I.mjs.map +1 -0
- package/dist/RubriqueFilter-OA_DJKL1.mjs +199 -0
- package/dist/RubriqueFilter-OA_DJKL1.mjs.map +1 -0
- package/dist/RubriqueList-3zO1zZRT.mjs.map +1 -0
- package/dist/RubriqueList-B94NM5yi.mjs +206 -0
- package/dist/RubriqueList-B94NM5yi.mjs.map +1 -0
- package/dist/RubriqueList-BCN0C7QF.mjs.map +1 -0
- package/dist/RubriqueList-Cw-CkXW1.mjs.map +1 -0
- package/dist/RubriqueList-D4Fq4Y9e.mjs.map +1 -0
- package/dist/RubriqueList-DYWDfwI_.mjs.map +1 -0
- package/dist/RubriqueList-FTM4mj2p.mjs.map +1 -0
- package/dist/RubriquePage-B06bcAoC.mjs.map +1 -0
- package/dist/RubriquePage-B1WHENcY.mjs.map +1 -0
- package/dist/RubriquePage-B8-uEBto.mjs.map +1 -0
- package/dist/RubriquePage-BLl8POuh.mjs.map +1 -0
- package/dist/RubriquePage-BlrmPBqw.mjs.map +1 -0
- package/dist/RubriquePage-BsXsr2yZ.mjs.map +1 -0
- package/dist/RubriquePage-CLx3DEHM.mjs.map +1 -0
- package/dist/RubriquePage-CPOfNsqM.mjs.map +1 -0
- package/dist/RubriquePage-CjObE1AH.mjs.map +1 -0
- package/dist/RubriquePage-CnGDzPlL.mjs.map +1 -0
- package/dist/RubriquePage-Cp899c77.mjs.map +1 -0
- package/dist/RubriquePage-Cs3-c97d.mjs.map +1 -0
- package/dist/RubriquePage-DB26iKvR.mjs.map +1 -0
- package/dist/RubriquePage-DLhJPSDi.mjs.map +1 -0
- package/dist/RubriquePage-DpmhA8px.mjs.map +1 -0
- package/dist/RubriquePage-DyusiBmp.mjs +108 -0
- package/dist/RubriquePage-DyusiBmp.mjs.map +1 -0
- package/dist/RubriquePage-FXjCZGhl.mjs.map +1 -0
- package/dist/RubriquePage-LHX8e3IM.mjs.map +1 -0
- package/dist/RubriquePage-MB00NDpy.mjs.map +1 -0
- package/dist/RubriquePage-aQVZqbYG.mjs.map +1 -0
- package/dist/RubriquePage-an_sMVka.mjs.map +1 -0
- package/dist/RubriquePage-icFHqhSo.mjs.map +1 -0
- package/dist/RubriquePage-vIpEC4ZH.mjs.map +1 -0
- package/dist/SearchPage-B2z0qkr6.mjs.map +1 -0
- package/dist/SearchPage-B7gvw7kS.mjs.map +1 -0
- package/dist/SearchPage-BGOBGS4j.mjs +77 -0
- package/dist/SearchPage-BGOBGS4j.mjs.map +1 -0
- package/dist/SearchPage-BJakejdU.mjs.map +1 -0
- package/dist/SearchPage-BJkQ5jaV.mjs.map +1 -0
- package/dist/SearchPage-BLDCn-bQ.mjs.map +1 -0
- package/dist/SearchPage-BMvwEUpu.mjs.map +1 -0
- package/dist/SearchPage-BS6ZtOT4.mjs.map +1 -0
- package/dist/SearchPage-Bk0xlx6g.mjs.map +1 -0
- package/dist/SearchPage-BlxTxwvi.mjs.map +1 -0
- package/dist/SearchPage-CLWENUAD.mjs.map +1 -0
- package/dist/SearchPage-D-0rX2Xi.mjs.map +1 -0
- package/dist/SearchPage-D36GMrvv.mjs.map +1 -0
- package/dist/SearchPage-D6-ZXv58.mjs.map +1 -0
- package/dist/SearchPage-DP-jnmCG.mjs.map +1 -0
- package/dist/SearchPage-DZTfGbVT.mjs.map +1 -0
- package/dist/SearchPage-D_4t35f0.mjs.map +1 -0
- package/dist/SearchPage-Da4BFohR.mjs.map +1 -0
- package/dist/SearchPage-Dh26cgQe.mjs.map +1 -0
- package/dist/SearchPage-DjKPeGAs.mjs.map +1 -0
- package/dist/SearchPage-fXdzpL1c.mjs.map +1 -0
- package/dist/SearchPage-xnIpsTgx.mjs.map +1 -0
- package/dist/SearchPage-zVdUiSfh.mjs.map +1 -0
- package/dist/ShareAnonymous-B0ww4iMu.mjs.map +1 -0
- package/dist/ShareAnonymous-BKagxRym.mjs.map +1 -0
- package/dist/ShareAnonymous-Chfdzzra.mjs +321 -0
- package/dist/ShareAnonymous-Chfdzzra.mjs.map +1 -0
- package/dist/ShareAnonymous-D3hwGr8Z.mjs.map +1 -0
- package/dist/ShareAnonymous-DEpUqKoC.mjs.map +1 -0
- package/dist/ShareAnonymous-DSg_wpI3.mjs.map +1 -0
- package/dist/ShareAnonymous-khSarER5.mjs.map +1 -0
- package/dist/ShareModalPlayer-BS9qyVNH.mjs.map +1 -0
- package/dist/ShareModalPlayer-BnFxh7Ga.mjs.map +1 -0
- package/dist/ShareModalPlayer-BztYMAPH.mjs.map +1 -0
- package/dist/ShareModalPlayer-C8wjnuw6.mjs.map +1 -0
- package/dist/ShareModalPlayer-CLY_JFFD.mjs +135 -0
- package/dist/ShareModalPlayer-CLY_JFFD.mjs.map +1 -0
- package/dist/ShareModalPlayer-DDDkm7FA.mjs.map +1 -0
- package/dist/ShareModalPlayer-PtUwdsSJ.mjs.map +1 -0
- package/dist/ShareNewsletter-B4dn4-jA.mjs +211 -0
- package/dist/ShareNewsletter-B4dn4-jA.mjs.map +1 -0
- package/dist/ShareNewsletter-BM2hE5XO.mjs.map +1 -0
- package/dist/ShareNewsletter-BrwslUOD.mjs.map +1 -0
- package/dist/ShareNewsletter-CPjvKO4R.mjs.map +1 -0
- package/dist/ShareNewsletter-Cl7VbBA9.mjs.map +1 -0
- package/dist/ShareNewsletter-D-V6qe3a.mjs.map +1 -0
- package/dist/ShareNewsletter-DsH2srdw.mjs.map +1 -0
- package/dist/SharePlayer-BWl75Ndj.mjs.map +1 -0
- package/dist/SharePlayer-BicE3QZp.mjs.map +1 -0
- package/dist/SharePlayer-BycdQRP2.mjs.map +1 -0
- package/dist/SharePlayer-C2GVaLAZ.mjs.map +1 -0
- package/dist/SharePlayer-DP-D17m8.mjs.map +1 -0
- package/dist/SharePlayer-Dw9dS5el.mjs.map +1 -0
- package/dist/SharePlayer-wHDYsWYd.mjs +378 -0
- package/dist/SharePlayer-wHDYsWYd.mjs.map +1 -0
- package/dist/SharePlayerRadio--L_AzDqY.mjs.map +1 -0
- package/dist/SharePlayerRadio-5xG5g5rM.mjs.map +1 -0
- package/dist/SharePlayerRadio-Cl4YpS-S.mjs.map +1 -0
- package/dist/SharePlayerRadio-D3LXD_gK.mjs +127 -0
- package/dist/SharePlayerRadio-D3LXD_gK.mjs.map +1 -0
- package/dist/SharePlayerRadio-Da_Ykb2L.mjs.map +1 -0
- package/dist/SharePlayerRadio-Dn4Ma5qW.mjs.map +1 -0
- package/dist/SharePlayerRadio-MAdWfHel.mjs.map +1 -0
- package/dist/SharePlayerTypes-CHKhK9YW.mjs.map +1 -0
- package/dist/SharePlayerTypes-D8X7hL3d.mjs.map +1 -0
- package/dist/SharePlayerTypes-DVlp3VcJ.mjs.map +1 -0
- package/dist/SharePlayerTypes-Dhz4uP7l.mjs.map +1 -0
- package/dist/SharePlayerTypes-P-5UOG2r.mjs.map +1 -0
- package/dist/SharePlayerTypes-RdPK0FDf.mjs.map +1 -0
- package/dist/SharePlayerTypes-eYSeVl-W.mjs +232 -0
- package/dist/SharePlayerTypes-eYSeVl-W.mjs.map +1 -0
- package/dist/ShareSocialsButtons-BLVre1Pq.mjs.map +1 -0
- package/dist/ShareSocialsButtons-CPwlk7S9.mjs.map +1 -0
- package/dist/ShareSocialsButtons-D73vUPta.mjs.map +1 -0
- package/dist/ShareSocialsButtons-DJ1FaUx3.mjs.map +1 -0
- package/dist/ShareSocialsButtons-DccMvn5_.mjs.map +1 -0
- package/dist/ShareSocialsButtons-P364piyA.mjs.map +1 -0
- package/dist/ShareSocialsButtons-iHtSoQ3K.mjs +159 -0
- package/dist/ShareSocialsButtons-iHtSoQ3K.mjs.map +1 -0
- package/dist/SimpleLayout-5mNKfg2s.mjs.map +1 -0
- package/dist/SimpleLayout-B6at-cuV.mjs.map +1 -0
- package/dist/SimpleLayout-BFqjgeh1.mjs.map +1 -0
- package/dist/SimpleLayout-BTfo6rPR.mjs.map +1 -0
- package/dist/SimpleLayout-BUrWUsa_.mjs.map +1 -0
- package/dist/SimpleLayout-BVF6fd_I.mjs.map +1 -0
- package/dist/SimpleLayout-Bk74CAAr.mjs +41 -0
- package/dist/SimpleLayout-Bk74CAAr.mjs.map +1 -0
- package/dist/SimpleLayout-BqwOh6G0.mjs.map +1 -0
- package/dist/SimpleLayout-ChIkhCEH.mjs.map +1 -0
- package/dist/SimpleLayout-CiHOZdWE.mjs.map +1 -0
- package/dist/SimpleLayout-Cwhcdh45.mjs.map +1 -0
- package/dist/SimpleLayout-CwtTjtPq.mjs.map +1 -0
- package/dist/SimpleLayout-D1QBqbyL.mjs.map +1 -0
- package/dist/SimpleLayout-DEFKs9Eu.mjs.map +1 -0
- package/dist/SimpleLayout-DJSc2eq9.mjs.map +1 -0
- package/dist/SimpleLayout-DdxeE5BZ.mjs.map +1 -0
- package/dist/SimpleLayout-DjFZlloX.mjs.map +1 -0
- package/dist/SimpleLayout-DtPUxNyC.mjs.map +1 -0
- package/dist/SimpleLayout-DvRt4wkr.mjs.map +1 -0
- package/dist/SimpleLayout-Dx6FkAfI.mjs.map +1 -0
- package/dist/SimpleLayout-KPhIS07K.mjs.map +1 -0
- package/dist/SimpleLayout-XXMBqDnb.mjs.map +1 -0
- package/dist/SimpleLayout-XZll7Ayz.mjs.map +1 -0
- package/dist/SmartLinkPage-B7-xgb7q.mjs.map +1 -0
- package/dist/SmartLinkPage-BHYoZz5d.mjs.map +1 -0
- package/dist/SmartLinkPage-BQwsfDIe.mjs.map +1 -0
- package/dist/SmartLinkPage-BSiyTH7l.mjs.map +1 -0
- package/dist/SmartLinkPage-BoBHd6cJ.mjs.map +1 -0
- package/dist/SmartLinkPage-C4SCz9NT.mjs.map +1 -0
- package/dist/SmartLinkPage-Cf8u_BeD.mjs.map +1 -0
- package/dist/SmartLinkPage-CzUMIRTu.mjs.map +1 -0
- package/dist/SmartLinkPage-DbuQT8GM.mjs +238 -0
- package/dist/SmartLinkPage-DbuQT8GM.mjs.map +1 -0
- package/dist/SmartLinkPage-XbBG8nUz.mjs.map +1 -0
- package/dist/SubscribeButtons-B1IZMhZq.mjs.map +1 -0
- package/dist/SubscribeButtons-BEyKEHFg.mjs.map +1 -0
- package/dist/SubscribeButtons-BpITqR_e.mjs.map +1 -0
- package/dist/SubscribeButtons-BrsOcGPD.mjs.map +1 -0
- package/dist/SubscribeButtons-CoiCusJH.mjs.map +1 -0
- package/dist/SubscribeButtons-D7DS-yiF.mjs.map +1 -0
- package/dist/SubscribeButtons-rnonTVzT.mjs +203 -0
- package/dist/SubscribeButtons-rnonTVzT.mjs.map +1 -0
- package/dist/SwiperList-B9Di_nl0.mjs.map +1 -0
- package/dist/SwiperList-BN401Fyh.mjs.map +1 -0
- package/dist/SwiperList-BwsTJxcN.mjs.map +1 -0
- package/dist/SwiperList-C1v0T1wx.mjs +207 -0
- package/dist/SwiperList-C1v0T1wx.mjs.map +1 -0
- package/dist/SwiperList-Ct-O9BcG.mjs.map +1 -0
- package/dist/SwiperList-DzY1ETir.mjs.map +1 -0
- package/dist/SwiperList-gPcKZiLq.mjs.map +1 -0
- package/dist/TagList-Bq1wwTRR.mjs.map +1 -0
- package/dist/TagList-CNBX1FyW.mjs.map +1 -0
- package/dist/TagList-CPShSxEG.mjs.map +1 -0
- package/dist/TagList-CskkFrFq.mjs.map +1 -0
- package/dist/TagList-J7PO-39m.mjs.map +1 -0
- package/dist/TagList-JHE5OvFW.mjs.map +1 -0
- package/dist/TagList-VeuYS_zJ.mjs +134 -0
- package/dist/TagList-VeuYS_zJ.mjs.map +1 -0
- package/dist/TagPage-BGb-Ze7R.mjs.map +1 -0
- package/dist/TagPage-BVsgClKd.mjs.map +1 -0
- package/dist/TagPage-BbFOTLNh.mjs.map +1 -0
- package/dist/TagPage-Bd81QJHn.mjs +125 -0
- package/dist/TagPage-Bd81QJHn.mjs.map +1 -0
- package/dist/TagPage-BdKTT02V.mjs.map +1 -0
- package/dist/TagPage-Bfsl19Ap.mjs.map +1 -0
- package/dist/TagPage-BwfzfFHu.mjs.map +1 -0
- package/dist/TagPage-C3KcRS7I.mjs.map +1 -0
- package/dist/TagPage-C8bwjJeN.mjs.map +1 -0
- package/dist/TagPage-CKz5KLkj.mjs.map +1 -0
- package/dist/TagPage-CZcYst8i.mjs.map +1 -0
- package/dist/TagPage-Ci2j_O0Y.mjs.map +1 -0
- package/dist/TagPage-CyAXE_8e.mjs.map +1 -0
- package/dist/TagPage-D-Ja38HA.mjs.map +1 -0
- package/dist/TagPage-DQwDyEh7.mjs.map +1 -0
- package/dist/TagPage-DUtoasfz.mjs.map +1 -0
- package/dist/TagPage-DbASBi7R.mjs.map +1 -0
- package/dist/TagPage-Dbgu3vHH.mjs.map +1 -0
- package/dist/TagPage-DheKc6nX.mjs.map +1 -0
- package/dist/TagPage-L7JAmj_e.mjs.map +1 -0
- package/dist/TagPage-d6HPH6Qh.mjs.map +1 -0
- package/dist/TagPage-iegXcIH9.mjs.map +1 -0
- package/dist/TagPage-k4ZWkqSf.mjs.map +1 -0
- package/dist/TopBar-8FeSPEYf.mjs.map +1 -0
- package/dist/TopBar-BsTEqCvQ.mjs.map +1 -0
- package/dist/TopBar-CFRGmVqb.mjs.map +1 -0
- package/dist/TopBar-CIGurQe2.mjs.map +1 -0
- package/dist/TopBar-CZVp2T7C.mjs +760 -0
- package/dist/TopBar-CZVp2T7C.mjs.map +1 -0
- package/dist/TopBar-D7YNEuE6.mjs.map +1 -0
- package/dist/TopBar-Tbxl2Elm.mjs.map +1 -0
- package/dist/TopBar-cTlaCeTY.mjs.map +1 -0
- package/dist/TopBar-dzqTNyPk.mjs.map +1 -0
- package/dist/TopBar-o0P_Zf_S.mjs.map +1 -0
- package/dist/UserButtonContent-B9FcRssv.mjs.map +1 -0
- package/dist/UserButtonContent-BGXW7qCM.mjs.map +1 -0
- package/dist/UserButtonContent-C3hEJG4A.mjs.map +1 -0
- package/dist/UserButtonContent-DazYmuO8.mjs.map +1 -0
- package/dist/UserButtonContent-DcNPbevw.mjs.map +1 -0
- package/dist/UserButtonContent-DgKC2zk0.mjs.map +1 -0
- package/dist/UserButtonContent-DmNyGmWr.mjs +185 -0
- package/dist/UserButtonContent-DmNyGmWr.mjs.map +1 -0
- package/dist/UserButtonContent-b635f01K.mjs.map +1 -0
- package/dist/UserButtonContent-gpLveDGn.mjs.map +1 -0
- package/dist/UserButtonContent-qxz-Hv4_.mjs.map +1 -0
- package/dist/VideoModuleBox-B1xqrB2D.mjs.map +1 -0
- package/dist/VideoModuleBox-BShvguCk.mjs.map +1 -0
- package/dist/VideoModuleBox-BtGq-GXa.mjs.map +1 -0
- package/dist/VideoModuleBox-BzESMA0r.mjs.map +1 -0
- package/dist/VideoModuleBox-C7fYrSi8.mjs.map +1 -0
- package/dist/VideoModuleBox-CFZrAeTN.mjs.map +1 -0
- package/dist/VideoModuleBox-CN_UTher.mjs.map +1 -0
- package/dist/VideoModuleBox-CnBBO4xv.mjs.map +1 -0
- package/dist/VideoModuleBox-Cqr8jrRx.mjs.map +1 -0
- package/dist/VideoModuleBox-CyQej4Vl.mjs.map +1 -0
- package/dist/VideoModuleBox-DGvHH4e5.mjs.map +1 -0
- package/dist/VideoModuleBox-qrxE8kRY.mjs.map +1 -0
- package/dist/VideoModuleBox-x_sGAKrY.mjs.map +1 -0
- package/dist/VideoModuleBox-yJZpgCw6.mjs +85 -0
- package/dist/VideoModuleBox-yJZpgCw6.mjs.map +1 -0
- package/dist/VideoPage-7jF7T9IO.mjs.map +1 -0
- package/dist/VideoPage-B3yTNR_M.mjs.map +1 -0
- package/dist/VideoPage-BB57V2Lk.mjs.map +1 -0
- package/dist/VideoPage-BLTlFgNf.mjs.map +1 -0
- package/dist/VideoPage-BSXTgcRL.mjs.map +1 -0
- package/dist/VideoPage-BYNVbbeO.mjs.map +1 -0
- package/dist/VideoPage-BbxLEA4X.mjs.map +1 -0
- package/dist/VideoPage-BcI8tfma.mjs.map +1 -0
- package/dist/VideoPage-Bw_QYNyr.mjs.map +1 -0
- package/dist/VideoPage-CA5DDDbS.mjs.map +1 -0
- package/dist/VideoPage-CE4D24dl.mjs.map +1 -0
- package/dist/VideoPage-CPKkuEDY.mjs.map +1 -0
- package/dist/VideoPage-CaxbxZFf.mjs.map +1 -0
- package/dist/VideoPage-Ctu6kGik.mjs.map +1 -0
- package/dist/VideoPage-D2K0YjIH.mjs.map +1 -0
- package/dist/VideoPage-D6UJ9h-C.mjs.map +1 -0
- package/dist/VideoPage-D7T3JSm4.mjs.map +1 -0
- package/dist/VideoPage-DUvS0HA0.mjs.map +1 -0
- package/dist/VideoPage-DgomqikT.mjs.map +1 -0
- package/dist/VideoPage-DsNM6QUQ.mjs.map +1 -0
- package/dist/VideoPage-Dyo4V61N.mjs.map +1 -0
- package/dist/VideoPage-EnFU5-Gi.mjs.map +1 -0
- package/dist/VideoPage-OB-XkRbO.mjs.map +1 -0
- package/dist/VideoPage-QX9CPoUi.mjs.map +1 -0
- package/dist/VideoPage-bkw4KLn0.mjs.map +1 -0
- package/dist/VideoPage-qCsKaYgW.mjs.map +1 -0
- package/dist/VideoPage-wsWCp4Wv.mjs.map +1 -0
- package/dist/VideoPage-y6G4Y2Zi.mjs +274 -0
- package/dist/VideoPage-y6G4Y2Zi.mjs.map +1 -0
- package/dist/classicApi-C2_ObUF_.mjs.map +1 -0
- package/dist/classicApi-CIbDYmHA.mjs.map +1 -0
- package/dist/classicApi-Cj_a5kO8.mjs.map +1 -0
- package/dist/classicApi-CkDHWZG1.mjs +1908 -0
- package/dist/classicApi-CkDHWZG1.mjs.map +1 -0
- package/dist/classicApi-DuzZv1Wk.mjs.map +1 -0
- package/dist/classicApi-MCXe0kfZ.mjs.map +1 -0
- package/dist/classicApi-cKpHjOS7.mjs.map +1 -0
- package/dist/downloadHelper-Bkaho1zc.mjs.map +1 -0
- package/dist/downloadHelper-BkwhRlnA.mjs.map +1 -0
- package/dist/downloadHelper-CahWbghu.mjs.map +1 -0
- package/dist/downloadHelper-CyCFvbBp.mjs.map +1 -0
- package/dist/downloadHelper-DLdkblYN.mjs +36 -0
- package/dist/downloadHelper-DLdkblYN.mjs.map +1 -0
- package/dist/downloadHelper-DZJ01GKg.mjs.map +1 -0
- package/dist/downloadHelper-YZacef66.mjs.map +1 -0
- package/dist/index.mjs +98 -98
- package/dist/messages-DcDWDvzC.mjs.map +1 -0
- package/dist/tests.mjs +2 -2
- package/dist/useAdvancedParamInit-B7G2Mvjv.mjs +168 -0
- package/dist/useAdvancedParamInit-B7G2Mvjv.mjs.map +1 -0
- package/dist/useAdvancedParamInit-BGlro-p8.mjs.map +1 -0
- package/dist/useAdvancedParamInit-BL5TjXZy.mjs.map +1 -0
- package/dist/useAdvancedParamInit-BhqSOKSb.mjs.map +1 -0
- package/dist/useAdvancedParamInit-C-rELBZG.mjs.map +1 -0
- package/dist/useAdvancedParamInit-CKFWCUSZ.mjs.map +1 -0
- package/dist/useAdvancedParamInit-CekarbAF.mjs.map +1 -0
- package/dist/useAdvancedParamInit-ClodjjZ2.mjs.map +1 -0
- package/dist/useAdvancedParamInit-_BfFlSej.mjs.map +1 -0
- package/dist/useAdvancedParamInit-dExfUM2y.mjs.map +1 -0
- package/dist/useAdvancedParamInit-lId1H_GS.mjs.map +1 -0
- package/dist/useDayjs-5DM4hTjm.mjs.map +1 -0
- package/dist/useDayjs-B4itzzdK.mjs.map +1 -0
- package/dist/useDayjs-C3cnTiDW.mjs +32 -0
- package/dist/useDayjs-C3cnTiDW.mjs.map +1 -0
- package/dist/useDayjs-C3iHRg-5.mjs.map +1 -0
- package/dist/useDayjs-CQz9XDLj.mjs.map +1 -0
- package/dist/useDayjs-CecYhpLk.mjs.map +1 -0
- package/dist/useDayjs-crlzsvXZ.mjs.map +1 -0
- package/dist/useErrorHandler-B--GpN1e.mjs.map +1 -0
- package/dist/useErrorHandler-Ba6dTuyl.mjs.map +1 -0
- package/dist/useErrorHandler-BbfY4kgg.mjs.map +1 -0
- package/dist/useErrorHandler-Bjx0sbQC.mjs.map +1 -0
- package/dist/useErrorHandler-D2zz354J.mjs.map +1 -0
- package/dist/useErrorHandler-DtLjD9t_.mjs +19 -0
- package/dist/useErrorHandler-DtLjD9t_.mjs.map +1 -0
- package/dist/useErrorHandler-r6nUtTdX.mjs.map +1 -0
- package/dist/useImageProxy-0JAtGkS7.mjs.map +1 -0
- package/dist/useImageProxy-1-PgoK1v.mjs.map +1 -0
- package/dist/useImageProxy-BMtSmGVX.mjs.map +1 -0
- package/dist/useImageProxy-Bj0cOCct.mjs +20 -0
- package/dist/useImageProxy-Bj0cOCct.mjs.map +1 -0
- package/dist/useImageProxy-D754_6C6.mjs.map +1 -0
- package/dist/useImageProxy-DRJTAfXb.mjs.map +1 -0
- package/dist/useImageProxy-DtdTZx5U.mjs.map +1 -0
- package/dist/useOrgaComputed-1LqNaB73.mjs.map +1 -0
- package/dist/useOrgaComputed-BA4YT1_0.mjs.map +1 -0
- package/dist/useOrgaComputed-BLSpEDfb.mjs +19 -0
- package/dist/useOrgaComputed-BLSpEDfb.mjs.map +1 -0
- package/dist/useOrgaComputed-C2R5Q6VI.mjs.map +1 -0
- package/dist/useOrgaComputed-CqSXXy78.mjs.map +1 -0
- package/dist/useOrgaComputed-DgAii2Fk.mjs.map +1 -0
- package/dist/useOrgaComputed-Dj3TLP9I.mjs.map +1 -0
- package/dist/usePlayerLogicProgress-75G9QMg_.mjs +108 -0
- package/dist/usePlayerLogicProgress-75G9QMg_.mjs.map +1 -0
- package/dist/usePlayerLogicProgress-AxYcMdBb.mjs.map +1 -0
- package/dist/usePlayerLogicProgress-Bb-md_ex.mjs.map +1 -0
- package/dist/usePlayerLogicProgress-Bl-5XCtm.mjs.map +1 -0
- package/dist/usePlayerLogicProgress-BlzqUdIu.mjs.map +1 -0
- package/dist/usePlayerLogicProgress-DSS2M01u.mjs.map +1 -0
- package/dist/usePlayerLogicProgress-Di0QVpAw.mjs.map +1 -0
- package/dist/usePlayerLogicProgress-p2wx52vT.mjs.map +1 -0
- package/dist/usePlayerLogicProgress-wmSniqZc.mjs.map +1 -0
- package/dist/usePlayerLogicProgress-xST5wT45.mjs.map +1 -0
- package/dist/usePodcastView-3FesTVra.mjs.map +1 -0
- package/dist/usePodcastView-BWYhUhOV.mjs.map +1 -0
- package/dist/usePodcastView-BftS642h.mjs +56 -0
- package/dist/usePodcastView-BftS642h.mjs.map +1 -0
- package/dist/usePodcastView-BgptSLHG.mjs.map +1 -0
- package/dist/usePodcastView-Bl0RcIb0.mjs.map +1 -0
- package/dist/usePodcastView-BoI-uctv.mjs.map +1 -0
- package/dist/usePodcastView-WxY7m1hl.mjs.map +1 -0
- package/dist/usePresentationItem-6oQ-o4wI.mjs.map +1 -0
- package/dist/usePresentationItem-CNXIk-Sf.mjs +190 -0
- package/dist/usePresentationItem-CNXIk-Sf.mjs.map +1 -0
- package/dist/usePresentationItem-CsfKjWnZ.mjs.map +1 -0
- package/dist/usePresentationItem-D3C_efy7.mjs.map +1 -0
- package/dist/usePresentationItem-DLtnNda9.mjs.map +1 -0
- package/dist/usePresentationItem-DpxvaEdZ.mjs.map +1 -0
- package/dist/usePresentationItem-k5rb_5gH.mjs.map +1 -0
- package/dist/useRights-BCepKkLZ.mjs.map +1 -0
- package/dist/useRights-BTWQoZpb.mjs.map +1 -0
- package/dist/useRights-Bym-4CrJ.mjs.map +1 -0
- package/dist/useRights-C1fS_hGe.mjs.map +1 -0
- package/dist/useRights-CQCFVy9H.mjs.map +1 -0
- package/dist/useRights-Co0TgD8y.mjs +276 -0
- package/dist/useRights-Co0TgD8y.mjs.map +1 -0
- package/dist/useRights-Cpf9Avm0.mjs.map +1 -0
- package/dist/useRights-CzMgcLIn.mjs.map +1 -0
- package/dist/useRights-DKzVprNw.mjs.map +1 -0
- package/dist/useRights-Db1Ometw.mjs.map +1 -0
- package/dist/useRights-dOio-pbP.mjs.map +1 -0
- package/dist/useRubriquesFilterComputed--foOVndi.mjs.map +1 -0
- package/dist/useRubriquesFilterComputed-B7qN3eYX.mjs.map +1 -0
- package/dist/useRubriquesFilterComputed-Bg8Oxixs.mjs.map +1 -0
- package/dist/useRubriquesFilterComputed-DnDEzxql.mjs.map +1 -0
- package/dist/useRubriquesFilterComputed-GKrN8k9S.mjs.map +1 -0
- package/dist/useRubriquesFilterComputed-VsdTUNL6.mjs +13 -0
- package/dist/useRubriquesFilterComputed-VsdTUNL6.mjs.map +1 -0
- package/dist/useRubriquesFilterComputed-sIRalCiS.mjs.map +1 -0
- package/dist/useRubriquesFilterParam--x07HEw1.mjs +36 -0
- package/dist/useRubriquesFilterParam--x07HEw1.mjs.map +1 -0
- package/dist/useRubriquesFilterParam-CXj2RLqc.mjs.map +1 -0
- package/dist/useRubriquesFilterParam-CnYdR701.mjs.map +1 -0
- package/dist/useRubriquesFilterParam-DOS1N2mH.mjs.map +1 -0
- package/dist/useRubriquesFilterParam-DpyKAph_.mjs.map +1 -0
- package/dist/useRubriquesFilterParam-DzyUfhmE.mjs.map +1 -0
- package/dist/useRubriquesFilterParam-FXT-0jW-.mjs.map +1 -0
- package/dist/useSharePlatforms-85i2Bc0K.mjs.map +1 -0
- package/dist/useSharePlatforms-BZ0e0F8u.mjs.map +1 -0
- package/dist/useSharePlatforms-BdrCEg5G.mjs.map +1 -0
- package/dist/useSharePlatforms-C8VqqDmV.mjs.map +1 -0
- package/dist/useSharePlatforms-CSSRTkTG.mjs +468 -0
- package/dist/useSharePlatforms-CSSRTkTG.mjs.map +1 -0
- package/dist/useSharePlatforms-CtA95ENf.mjs.map +1 -0
- package/dist/useSharePlatforms-NU0VkdLB.mjs.map +1 -0
- package/dist/useSimplePageParam-BNiVUoJU.mjs.map +1 -0
- package/dist/useSimplePageParam-C8pifq2s.mjs.map +1 -0
- package/dist/useSimplePageParam-Ck8shEdh.mjs.map +1 -0
- package/dist/useSimplePageParam-ClaGQ9yj.mjs +54 -0
- package/dist/useSimplePageParam-ClaGQ9yj.mjs.map +1 -0
- package/dist/useSimplePageParam-DlhsEEW7.mjs.map +1 -0
- package/dist/useSimplePageParam-DxND9Ysl.mjs.map +1 -0
- package/dist/useSimplePageParam-Vz7bgJAy.mjs.map +1 -0
- package/dist/useTranslation-B8RfvaP6.mjs.map +1 -0
- package/dist/useTranslation-BMKiY0MV.mjs.map +1 -0
- package/dist/useTranslation-BNshNMQT.mjs +205 -0
- package/dist/useTranslation-BNshNMQT.mjs.map +1 -0
- package/dist/useTranslation-BotwPuIT.mjs.map +1 -0
- package/dist/useTranslation-CHq_j2dC.mjs.map +1 -0
- package/dist/useTranslation-Ci8aP-vH.mjs.map +1 -0
- package/dist/useTranslation-DDcfuc32.mjs.map +1 -0
- package/dist/useTranslation-DM20BrtZ.mjs.map +1 -0
- package/dist/useTranslation-DSdvTOFs.mjs.map +1 -0
- package/dist/useTranslation-DZt6DB9m.mjs.map +1 -0
- package/dist/useTranslation-DbX-Mg6G.mjs.map +1 -0
- package/dist/useTranslation-DboWA-9y.mjs.map +1 -0
- package/dist/useTranslation-DwVIaTRm.mjs.map +1 -0
- package/dist/useTranslation-FZLxDtyr.mjs.map +1 -0
- package/dist/usefetchRadioData-C2cwiaCP.mjs +55 -0
- package/dist/usefetchRadioData-C2cwiaCP.mjs.map +1 -0
- package/dist/usefetchRadioData-CM6il3j3.mjs.map +1 -0
- package/dist/usefetchRadioData-D932rnEd.mjs.map +1 -0
- package/dist/usefetchRadioData-DSPq7oq8.mjs.map +1 -0
- package/dist/usefetchRadioData-DlY2zBGg.mjs.map +1 -0
- package/dist/usefetchRadioData-Du7e2a9J.mjs.map +1 -0
- package/dist/usefetchRadioData-E3ejoIvd.mjs.map +1 -0
- package/package.json +1 -1
- package/src/components/pages/EmissionPage.vue +5 -2
- package/src/components/pages/PodcastPage.vue +5 -2
- package/src/stores/AuthStore.ts +0 -2
- package/src/stores/ParamSdkStore.ts +7 -1
- package/dist/AdvancedSearch-DIKy8A4x.mjs +0 -452
- package/dist/CategoryFilter-BpZB6gy9.mjs +0 -237
- package/dist/CategoryList-IQKO-tO8.mjs +0 -182
- package/dist/CategoryPage-B9-hSANQ.mjs +0 -57
- package/dist/ChapteringModal-BxQwqN6-.mjs +0 -82
- package/dist/CheckIdentityModal-CFetpilI.mjs +0 -86
- package/dist/ClassicAlert-dYigdfoZ.mjs +0 -85
- package/dist/ClipboardModal-DQjZO1T9.mjs +0 -84
- package/dist/CommentBasicView-bNaLVdjT.mjs +0 -129
- package/dist/CommentInput-D8tZkOG-.mjs +0 -186
- package/dist/CommentItem-Ch41Z98I.mjs +0 -232
- package/dist/CommentList-B5mexnTc.mjs +0 -302
- package/dist/CommentMoreActions-CZqt7Ebh.mjs +0 -286
- package/dist/CommentName-BYkiaMX_.mjs +0 -96
- package/dist/CommentParentInfo-CfLIKg-a.mjs +0 -64
- package/dist/CommentPlayer-DcSLgaFs.mjs +0 -86
- package/dist/CommentSection-BIbRND09.mjs +0 -141
- package/dist/CommentStore-bKtPx6T5.mjs +0 -355
- package/dist/ContractPreviewModal-BIg6dTcF.mjs +0 -101
- package/dist/DownloadPodcastButton-BTFYgyz4.mjs +0 -53
- package/dist/EditCommentModal-Cc8Ui6Cx.mjs +0 -162
- package/dist/EmissionGroupChooser-5c7aD7hj.mjs +0 -82
- package/dist/EmissionInlineList-D1Xsv_jA.mjs +0 -188
- package/dist/EmissionItem-Bft7IM7C.mjs +0 -183
- package/dist/EmissionList-ofS3nKr2.mjs +0 -325
- package/dist/EmissionPage-CdlIsCg5.mjs +0 -322
- package/dist/EmissionPlayerItem-B9nPhS0q.mjs +0 -167
- package/dist/EmissionPresentationItem-GB4a2U55.mjs +0 -78
- package/dist/EmissionPresentationList-Dt7u5Mla.mjs +0 -125
- package/dist/EmissionsPage-DQfu2UI-.mjs +0 -203
- package/dist/Error403Page-yyOmweXn.mjs +0 -69
- package/dist/ErrorMessage-DhSwu9H_.mjs +0 -44
- package/dist/FooterGarSection-CTfWZV9U.mjs +0 -71
- package/dist/FooterSection-B7U-k8Y_.mjs +0 -242
- package/dist/HomeDropdown-BEnuQwNk.mjs +0 -110
- package/dist/HomePage-BmYeT77a.mjs +0 -166
- package/dist/LikeSection-xxZrcE6h.mjs +0 -167
- package/dist/ListPaginate-C9YUNHKq.mjs +0 -202
- package/dist/LiveHorizontalList-4qHj8EkS.mjs +0 -136
- package/dist/LiveList-BNSIdMf6.mjs +0 -324
- package/dist/LivesPage-Boq-efi1.mjs +0 -76
- package/dist/MapPage-DOYeoa-x.mjs +0 -303
- package/dist/MobileMenu-B9u1xQu8.mjs +0 -187
- package/dist/NewsletterModal-CV11PCGE.mjs +0 -82
- package/dist/OrganisationChooser-C8lM4mh-.mjs +0 -190
- package/dist/OrganisationChooserLight-B_Bn5uSJ.mjs +0 -84
- package/dist/PageNotFound-BcAeMiaz.mjs +0 -58
- package/dist/ParticipantInlineList-BP9OjWPq.mjs +0 -117
- package/dist/ParticipantItem-DROwf2Gt.mjs +0 -138
- package/dist/ParticipantPage-C93DkNt5.mjs +0 -203
- package/dist/ParticipantsPage-CuIGt0hS.mjs +0 -262
- package/dist/PlayerAnonymousModal-DShsz29z.mjs +0 -84
- package/dist/PlayerCompact-BVSkJWnf.mjs +0 -209
- package/dist/PlayerComponent-dU_bgj3K.mjs +0 -929
- package/dist/PlayerLarge-BnsLvwU7.mjs +0 -190
- package/dist/PlayerPlayButton-DPAfPfHk.mjs +0 -400
- package/dist/PlayerProgressBar-dPZf2Fgd.mjs +0 -86
- package/dist/PlayerStore-PXL_fAz0.mjs +0 -230
- package/dist/PlayerVideo--_Kz9vbZ.mjs +0 -72
- package/dist/PlayerVideoDigiteka-C2P_Q4Fe.mjs +0 -102
- package/dist/PlayerVideoHls-Rk-hz2k-.mjs +0 -232
- package/dist/PlaylistPage-U_IMEiNw.mjs +0 -228
- package/dist/PlaylistsPage-4p58SShT.mjs +0 -395
- package/dist/PodcastFilterList-gOQb-JT-.mjs +0 -254
- package/dist/PodcastImage-DticDvGz.mjs +0 -174
- package/dist/PodcastInlineList-CTD_tFe2.mjs +0 -138
- package/dist/PodcastInlineListTemplate-C9_KNnaX.mjs +0 -233
- package/dist/PodcastIsPlaying-1o91KNzu.mjs +0 -30
- package/dist/PodcastItem-CVUC3kcq.mjs +0 -287
- package/dist/PodcastList-Cl8RvbI9.mjs +0 -182
- package/dist/PodcastList-DwiKdU4Y.mjs +0 -337
- package/dist/PodcastPage-BzLU5_P6.mjs +0 -756
- package/dist/PodcastPlayBar-hxLcx9MN.mjs +0 -83
- package/dist/PodcastPlayBasicButton-0tMLmnJn.mjs +0 -72
- package/dist/PodcastPlayButton-B1ZB8WY8.mjs +0 -236
- package/dist/PodcastPlaylistInlineList-SZXCnYSe.mjs +0 -115
- package/dist/PodcastPresentationList-BYz-tlSL.mjs +0 -200
- package/dist/PodcastProgressBar-DqPW_p3w.mjs +0 -98
- package/dist/PodcastRawTranscript-a9_Oy3RK.mjs +0 -184
- package/dist/PodcastRubriqueList-DI2csHW1.mjs +0 -83
- package/dist/PodcastSwiperList-ByjpnQxI.mjs +0 -219
- package/dist/PodcastmakerHeader-DLivShWW.mjs +0 -58
- package/dist/PodcastsPage-CZMG21RP.mjs +0 -227
- package/dist/ProductorSearch-Cr79KkYG.mjs +0 -161
- package/dist/ProgressBar-DrnLNpyr.mjs +0 -158
- package/dist/QrCode-KyGeDUHb.mjs +0 -177
- package/dist/QrCodeModal-ddgi5Dn-.mjs +0 -64
- package/dist/RadioCurrently-CYE7UwdY.mjs +0 -112
- package/dist/RadioHistory-CzqQvmuY.mjs +0 -139
- package/dist/RadioImage-CFNJKVmd.mjs +0 -85
- package/dist/RadioList-CABDJH_f.mjs +0 -125
- package/dist/RadioPage-C0tjXJU4.mjs +0 -137
- package/dist/RadioPlanning-CLaptMbp.mjs +0 -290
- package/dist/RadioProgressBar-DZn1mktI.mjs +0 -67
- package/dist/RecaptchaModal-BrpWu9K9.mjs +0 -148
- package/dist/ReportAbuseModal-CqEVzw2M.mjs +0 -134
- package/dist/RightsIndicator-CaR0p4ee.mjs +0 -124
- package/dist/RightsWrapper-C7TGgPwH.mjs +0 -212
- package/dist/RubriqueFilter-BKhIFAjq.mjs +0 -199
- package/dist/RubriqueList-NVIfUrtO.mjs +0 -206
- package/dist/RubriquePage-BAlehSIS.mjs +0 -108
- package/dist/SearchPage-B10P7WGB.mjs +0 -77
- package/dist/ShareAnonymous-DjuoOwnz.mjs +0 -321
- package/dist/ShareModalPlayer-iNhuzH6E.mjs +0 -135
- package/dist/ShareNewsletter-BoTYibXG.mjs +0 -211
- package/dist/SharePlayer-ITriSrMH.mjs +0 -378
- package/dist/SharePlayerRadio-3be6M1rf.mjs +0 -127
- package/dist/SharePlayerTypes-TbHoUtLq.mjs +0 -232
- package/dist/ShareSocialsButtons-nbnbNYrr.mjs +0 -159
- package/dist/SimpleLayout-2agje2NP.mjs +0 -41
- package/dist/SmartLinkPage-Bf0nWA38.mjs +0 -238
- package/dist/SubscribeButtons-CSvoc2J7.mjs +0 -203
- package/dist/SwiperList-CTQ7Jt8y.mjs +0 -207
- package/dist/TagList-EwyNbw72.mjs +0 -134
- package/dist/TagPage-CkecFj3d.mjs +0 -125
- package/dist/TopBar-N9gAoWc2.mjs +0 -760
- package/dist/UserButtonContent-CInki_2X.mjs +0 -185
- package/dist/VideoModuleBox-CAKcfyk0.mjs +0 -85
- package/dist/VideoPage-BRSAQnkl.mjs +0 -274
- package/dist/classicApi-1jdxJdNn.mjs +0 -1899
- package/dist/downloadHelper-LQW1LToj.mjs +0 -36
- package/dist/useAdvancedParamInit-COJzBPcY.mjs +0 -168
- package/dist/useDayjs-DPNxdkJX.mjs +0 -32
- package/dist/useErrorHandler-BRfB3Nma.mjs +0 -19
- package/dist/useImageProxy-Ce8Rqjw3.mjs +0 -20
- package/dist/useOrgaComputed-DXB4jqMM.mjs +0 -19
- package/dist/usePlayerLogicProgress-BsOt5dL-.mjs +0 -108
- package/dist/usePodcastView-DUG7H7_G.mjs +0 -56
- package/dist/usePresentationItem-vnaThjqU.mjs +0 -190
- package/dist/useRights-CacvXcg_.mjs +0 -276
- package/dist/useRubriquesFilterComputed-B6yAljnV.mjs +0 -13
- package/dist/useRubriquesFilterParam-vy-84z0z.mjs +0 -36
- package/dist/useSharePlatforms-BR8_vXB0.mjs +0 -468
- package/dist/useSimplePageParam-5gqDFPw2.mjs +0 -54
- package/dist/useTranslation-BtpS4E-y.mjs +0 -205
- package/dist/usefetchRadioData-CdnOaM6A.mjs +0 -55
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useTranslation-BNshNMQT.mjs","names":[],"sources":["../src/helper/language.ts","../src/stores/class/transcript/transcriptParams.ts","../src/components/composable/useTranslation.ts"],"sourcesContent":["/**\n * Utility function to retrieve most relevant language for the user\n * @params forceToKnown When set to true (default), will limit language to one\n * one of 6 known languages. When set to false, allow all\n * languages.\n * @returns The most relevant language\n */\nexport function getLanguage(forceToKnown = true): string {\n const nameEQ = \"octopus-language=\";\n const ca = document.cookie.split(\";\");\n\n let language = \"\";\n for (const valueCookie of ca) {\n let c = valueCookie;\n while (c.startsWith(\" \")) {\n c = c.substring(1, c.length);\n }\n if (0 === c.indexOf(nameEQ)) {\n language = c.substring(nameEQ.length, c.length);\n break;\n }\n }\n\n if (0 === language.length) {\n if (forceToKnown === true) {\n // Choose best avilable language\n for (const navigatorLang of navigator.languages) {\n if (navigatorLang.includes(\"fr\")) {\n language = \"fr\";\n break;\n } else if (navigatorLang.includes(\"en\")) {\n language = \"en\";\n break;\n } else if (navigatorLang.includes(\"it\")) {\n language = \"it\";\n break;\n } else if (navigatorLang.includes(\"sl\")) {\n language = \"sl\";\n break;\n } else if (navigatorLang.includes(\"es\")) {\n language = \"es\";\n break;\n } else if (navigatorLang.includes(\"de\")) {\n language = \"de\";\n break;\n }\n }\n if (!language) {\n language = \"fr\";\n }\n } else {\n language = navigator.language;\n }\n }\n\n return language;\n}\n","export interface TranscriptParams {\n automation: string; // super, {date}, false \n ttsParams: TtsParams;\n modifyPodcast: ModifyPodcastConfig\n translationConfig: TranslationConfiguration;\n}\nexport interface TtsParams {\n super: string;\n style: string;\n pitch: number;\n speed: number;\n voice: string;\n language: string;\n}\n\nexport interface ModifyPodcastConfig {\n modifyChaptering: ModifyPodcastEnum;\n modifyKeywords: ModifyPodcastEnum;\n modifyDescription: ModifyPodcastEnum;\n createDescriptionUsingAi: boolean;\n wordsNumber: number;\n}\n\nexport enum ModifyPodcastEnum {\n SUPER = \"SUPER\",\n NO = \"NO\",\n IF_EMPTY = \"IF_EMPTY\",\n OVERWRITE=\"OVERWRITE\"\n}\n\nexport interface TranslationConfiguration {\n createTranslation:{[lang:string]: CreateTranslation};\n otherLanguage:CreateTranslation; //Cannot be ALWAYS\n}\n\nexport enum CreateTranslation {\n NEVER = \"NEVER\",\n ON_DEMAND = \"ON_DEMAND\",\n ALWAYS = \"ALWAYS\",\n SUPER=\"SUPER\"\n}\n\nexport function defaultTtsParams(): TtsParams {\n return {\n super: \"true\",\n style: \"neutral\",\n pitch: 0,\n speed: 1,\n voice: \"\",\n language: \"\"\n };\n}\n\nexport function defaultModifyPodcastConfig(): ModifyPodcastConfig {\n return {\n modifyChaptering: ModifyPodcastEnum.NO,\n modifyKeywords:ModifyPodcastEnum.NO,\n modifyDescription:ModifyPodcastEnum.NO,\n createDescriptionUsingAi: false,\n wordsNumber: 100,\n };\n}\n\n/**\n * Create a default object of TranslationConfiguration\n * @param isEmission Optional, if set and true changes default values\n * @returns The object\n */\nexport function defaultTranslationConfig(isEmission?: boolean): TranslationConfiguration {\n return {\n createTranslation:{},\n otherLanguage: isEmission ? CreateTranslation.SUPER : CreateTranslation.NEVER\n };\n}\n\nexport interface Voice {\n name: string;\n locale: string;\n displayName: string;\n gender: string;\n audioExample?: string;\n styles?: [];\n provider: string;\n}\nexport interface ProviderTts {\n name: string;\n fullName: string;\n logoPath: string;\n description: string;\n}\n","import { getLanguage } from \"../../helper/language\";\nimport { transcriptionApi, TranslationState, type PodcastTranslationData } from \"../../api/transcriptionApi\";\nimport { CreateTranslation, defaultTranslationConfig, TranslationConfiguration } from \"../../stores/class/transcript/transcriptParams\";\nimport { podcastApi } from \"../../api/podcastApi\";\nimport { Emission } from \"../../stores/class/general/emission\";\nimport { OrganisationAttributes } from \"@/stores/class/general/organisation\";\nimport { organisationApi } from \"../../api/organisationApi\";\n\nconst DEFAULT_LANGUAGE = 'en';\n\ninterface RelevantLanguages {\n /** Language which already has a generated translation */\n ready: string;\n /** Language that is more relevant but its translation is not yet generated */\n available?: string;\n}\n\nenum Availability {\n Available,\n ToGenerate,\n Unavailable\n}\n\nexport const useTranslation = () => {\n\n /**\n * Convert SRT data to plain text\n * @param srt The data to convert\n * @returns The plain text\n */\n function convertSrtToPlainText(srt: string): string {\n const srtPattern =\n /\\d+\\n[\\d:,]+\\s+-{2}>\\s+[\\d:,]+\\n([\\s\\S]*?(?=\\n{2}|$))/gm;\n const result: Array<string> = [];\n let matches: string[];\n while ((matches = srtPattern.exec(srt)) != null) {\n result.push(matches[1] + \" \");\n }\n return result.join(\"\");\n }\n\n function getApplicationConf(language: string, conf: TranslationConfiguration): CreateTranslation {\n if (language in conf.createTranslation) {\n return conf.createTranslation[language];\n }\n\n return conf.otherLanguage;\n }\n\n /**\n * Retrieve the translation configuration for a given language\n */\n function getConfigurationFor(language: string, emissionConf: TranslationConfiguration, orgaConf: TranslationConfiguration): CreateTranslation {\n const emissionSetting = getApplicationConf(language, emissionConf);\n if (emissionSetting === CreateTranslation.SUPER) {\n return getApplicationConf(language, orgaConf);\n }\n return emissionSetting;\n }\n\n function parseOrDefault(data: string|undefined, isEmission = false): TranslationConfiguration {\n return data ? JSON.parse(data) : defaultTranslationConfig(isEmission);\n }\n\n /**\n * Indicates wether the language is available (either because generated or\n * because it can be generated)\n * @param language The language to check for\n * @param emission *(optional)* If set, will also check in emission settings\n * @returns Whether the language is available or not\n */\n function getTranslationConfig(language: string, emission: Emission, orgaAttributes: OrganisationAttributes): CreateTranslation {\n const emissionTranslation = parseOrDefault(emission.annotations?.['translation-config'] as string|undefined, true);\n const orgTranslation = parseOrDefault(orgaAttributes?.['translation-config']);\n\n return getConfigurationFor(language, emissionTranslation, orgTranslation);\n }\n\n function getLanguageAvailability(language: string, emission: Emission, orgaAttributes: OrganisationAttributes, translationData: PodcastTranslationData): Availability {\n \n // 1. If language of podcast == language of browser, use that language\n if (language === translationData.nativeLanguage) {\n return Availability.Available;\n } else {\n const langConfig = getTranslationConfig(language, emission, orgaAttributes);\n\n // 2. If the language of the browser is available, use it\n if (langConfig === CreateTranslation.ALWAYS) {\n return Availability.Available;\n }\n // 2b. If the language is on demand, check if generated\n else if (langConfig === CreateTranslation.ON_DEMAND) {\n // Check if translation is already generated\n if (translationData.translations.find(t => t.language === language && t.state === TranslationState.FINISHED)) {\n return Availability.Available;\n } else {\n return Availability.ToGenerate;\n }\n }\n }\n\n return Availability.Unavailable;\n }\n\n /**\n * Get the relevant language for the current user\n * @param translationData The translation data for the podcast\n * @returns An object with properties 'ready' and 'available'\n * - *ready* Is the best language already generated\n * - *available* Is the best language not yet generated (or\n * undefined if *ready* is better)\n */\n async function getMostRelevantLanguage(translationData: PodcastTranslationData): Promise<RelevantLanguages> {\n const userLanguage = getLanguage(false);\n\n // If user language is native, do not go further\n if (userLanguage === translationData.nativeLanguage) {\n return { ready: userLanguage };\n }\n\n // Compute all available languages. Use language set on site, then\n // languages defined on browser, then default, and finally native language\n const languages: string[] = [];\n [userLanguage, ...navigator.languages, DEFAULT_LANGUAGE, translationData.nativeLanguage].forEach(l => {\n // For each language, if it is a variant (for example fr-CH), use\n // only the base language\n if (l.includes('-')) {\n l = l.split('-')[0];\n }\n\n if (!languages.includes(l)) {\n languages.push(l);\n }\n });\n\n const podcast = await podcastApi.get(translationData.podcastId);\n const emission = podcast.emission;\n const orgaAttributes = await organisationApi.getAttributes(podcast.organisation.id);\n\n let bestReady: string|null = null;\n let bestAvailable: string|null = null;\n\n for (const language of languages) {\n const avaibility = getLanguageAvailability(language, emission, orgaAttributes, translationData);\n if (avaibility === Availability.Available && bestReady === null) {\n bestReady = language;\n break;\n }\n\n if (avaibility === Availability.ToGenerate && bestAvailable === null) {\n bestAvailable = language;\n }\n }\n\n return { ready: bestReady, available: bestAvailable ?? undefined };\n }\n\n /**\n * Get the relevant translation for the current user\n * @param translationData The translation data for the podcast\n * @returns The translation\n */\n async function getMostRelevantTranslation(translationData: PodcastTranslationData): Promise<string>;\n /**\n * Get the relevant translation for the current user\n * @param podcastId The ID of the podcast\n * @returns The translation\n */\n async function getMostRelevantTranslation(podcastId: number): Promise<string>;\n\n /**\n * Get the relevant translation for the current user\n * @param translationData The translation data for the podcast\n * @returns The translation\n */\n async function getMostRelevantTranslation(data: PodcastTranslationData|number): Promise<string> {\n let translationData: PodcastTranslationData;\n if (typeof data === 'number') {\n translationData = await transcriptionApi.getTranslations(data);\n } else {\n translationData = data;\n }\n\n const { ready } = await getMostRelevantLanguage(translationData);\n\n // Finally get translation with chosen language\n const podcastId = translationData.podcastId;\n return await transcriptionApi.getTranslation(podcastId, ready);\n }\n\n return {\n convertSrtToPlainText,\n getMostRelevantLanguage,\n getMostRelevantTranslation,\n getTranslationConfig\n }\n};\n"],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useTranslation-BotwPuIT.mjs","names":[],"sources":["../src/helper/language.ts","../src/stores/class/transcript/transcriptParams.ts","../src/helper/transcriptHelper.ts","../src/components/composable/useTranslation.ts"],"sourcesContent":["/**\n * Utility function to retrieve most relevant language for the user\n * @params forceToKnown When set to true (default), will limit language to one\n * one of 6 known languages. When set to false, allow all\n * languages.\n * @returns The most relevant language\n */\nexport function getLanguage(forceToKnown = true): string {\n const nameEQ = \"octopus-language=\";\n const ca = document.cookie.split(\";\");\n\n let language = \"\";\n for (const valueCookie of ca) {\n let c = valueCookie;\n while (c.startsWith(\" \")) {\n c = c.substring(1, c.length);\n }\n if (0 === c.indexOf(nameEQ)) {\n language = c.substring(nameEQ.length, c.length);\n break;\n }\n }\n\n if (0 === language.length) {\n if (forceToKnown === true) {\n // Choose best avilable language\n for (const navigatorLang of navigator.languages) {\n if (navigatorLang.includes(\"fr\")) {\n language = \"fr\";\n break;\n } else if (navigatorLang.includes(\"en\")) {\n language = \"en\";\n break;\n } else if (navigatorLang.includes(\"it\")) {\n language = \"it\";\n break;\n } else if (navigatorLang.includes(\"sl\")) {\n language = \"sl\";\n break;\n } else if (navigatorLang.includes(\"es\")) {\n language = \"es\";\n break;\n } else if (navigatorLang.includes(\"de\")) {\n language = \"de\";\n break;\n }\n }\n if (!language) {\n language = \"fr\";\n }\n } else {\n language = navigator.language;\n }\n }\n\n return language;\n}\n","export interface TranscriptParams {\n automation: string; // super, {date}, false \n ttsParams: TtsParams;\n modifyPodcast: ModifyPodcastConfig\n translationConfig: TranslationConfiguration;\n}\nexport interface TtsParams {\n super: string;\n style: string;\n pitch: number;\n speed: number;\n voice: string;\n language: string;\n}\n\nexport interface ModifyPodcastConfig {\n modifyChaptering: ModifyPodcastEnum;\n modifyKeywords: ModifyPodcastEnum;\n modifyDescription: ModifyPodcastEnum;\n createDescriptionUsingAi: boolean;\n wordsNumber: number;\n}\n\nexport enum ModifyPodcastEnum {\n SUPER = \"SUPER\",\n NO = \"NO\",\n IF_EMPTY = \"IF_EMPTY\",\n OVERWRITE=\"OVERWRITE\"\n}\n\nexport interface TranslationConfiguration {\n createTranslation:{[lang:string]: CreateTranslation};\n otherLanguage:CreateTranslation; //Cannot be ALWAYS\n}\n\nexport enum CreateTranslation {\n NEVER = \"NEVER\",\n ON_DEMAND = \"ON_DEMAND\",\n ALWAYS = \"ALWAYS\",\n SUPER=\"SUPER\"\n}\n\nexport function defaultTtsParams(): TtsParams {\n return {\n super: \"true\",\n style: \"neutral\",\n pitch: 0,\n speed: 1,\n voice: \"\",\n language: \"\"\n };\n}\n\nexport function defaultModifyPodcastConfig(): ModifyPodcastConfig {\n return {\n modifyChaptering: ModifyPodcastEnum.NO,\n modifyKeywords:ModifyPodcastEnum.NO,\n modifyDescription:ModifyPodcastEnum.NO,\n createDescriptionUsingAi: false,\n wordsNumber: 100,\n };\n}\n\n/**\n * Create a default object of TranslationConfiguration\n * @param isEmission Optional, if set and true changes default values\n * @returns The object\n */\nexport function defaultTranslationConfig(isEmission?: boolean): TranslationConfiguration {\n return {\n createTranslation:{},\n otherLanguage: isEmission ? CreateTranslation.SUPER : CreateTranslation.NEVER\n };\n}\n\nexport interface Voice {\n name: string;\n locale: string;\n displayName: string;\n gender: string;\n audioExample?: string;\n styles?: [];\n provider: string;\n}\nexport interface ProviderTts {\n name: string;\n fullName: string;\n logoPath: string;\n description: string;\n}\n","const SRT_PARSE_PATTERN = /(\\d+)\\n([\\d:,]+)\\s+-->\\s+([\\d:,]+)\\n([\\s\\S]*?(?=\\n{2}))/gm;\n\ninterface ParsedStrSection {\n startTime: number;\n endTime: number;\n text: Array<string>;\n}\n\nfunction srtTimeToSeconds(time: string): number {\n const a = time.split(\":\");\n return +a[0] * 60 * 60 + +a[1] * 60 + parseFloat(a[2]);\n}\n\nexport function parseSrtTranscript(transcript: string): Array<ParsedStrSection> {\n const result: Array<ParsedStrSection> = [];\n transcript = transcript.replace(/\\r\\n|\\r|\\n|\\t/g, \"\\n\");\n let matches: RegExpExecArray;\n while ((matches = SRT_PARSE_PATTERN.exec(transcript)) != null) {\n const text = matches.slice(4);\n result.push({\n startTime: srtTimeToSeconds(matches[2]),\n endTime: srtTimeToSeconds(matches[3]),\n text\n });\n }\n\n return result;\n}\n","import { getLanguage } from \"../../helper/language\";\nimport { transcriptionApi, TranslationState, type PodcastTranslationData } from \"../../api/transcriptionApi\";\nimport { CreateTranslation, defaultTranslationConfig, TranslationConfiguration } from \"../../stores/class/transcript/transcriptParams\";\nimport { podcastApi } from \"../../api/podcastApi\";\nimport { Emission } from \"../../stores/class/general/emission\";\nimport { OrganisationAttributes } from \"@/stores/class/general/organisation\";\nimport { organisationApi } from \"../../api/organisationApi\";\nimport { parseSrtTranscript } from \"@/helper/transcriptHelper\";\n\nconst DEFAULT_LANGUAGE = 'en';\n\ninterface RelevantLanguages {\n /** Language which already has a generated translation */\n ready: string;\n /** Language that is more relevant but its translation is not yet generated */\n available?: string;\n}\n\nenum Availability {\n Available,\n ToGenerate,\n Unavailable\n}\n\nexport const useTranslation = () => {\n\n /**\n * Convert SRT data to plain text\n * @param srt The data to convert\n * @returns The plain text\n */\n function convertSrtToPlainText(srt: string): string {\n const parsed = parseSrtTranscript(srt);\n return parsed.flatMap(p => p.text).join(' ');\n }\n\n function getApplicationConf(language: string, conf: TranslationConfiguration): CreateTranslation {\n if (language in conf.createTranslation) {\n return conf.createTranslation[language];\n }\n\n return conf.otherLanguage;\n }\n\n /**\n * Retrieve the translation configuration for a given language\n */\n function getConfigurationFor(language: string, emissionConf: TranslationConfiguration, orgaConf: TranslationConfiguration): CreateTranslation {\n const emissionSetting = getApplicationConf(language, emissionConf);\n if (emissionSetting === CreateTranslation.SUPER) {\n return getApplicationConf(language, orgaConf);\n }\n return emissionSetting;\n }\n\n function parseOrDefault(data: string|undefined, isEmission = false): TranslationConfiguration {\n return data ? JSON.parse(data) : defaultTranslationConfig(isEmission);\n }\n\n /**\n * Indicates wether the language is available (either because generated or\n * because it can be generated)\n * @param language The language to check for\n * @param emission *(optional)* If set, will also check in emission settings\n * @returns Whether the language is available or not\n */\n function getTranslationConfig(language: string, emission: Emission, orgaAttributes: OrganisationAttributes): CreateTranslation {\n const emissionTranslation = parseOrDefault(emission.annotations?.['translation-config'] as string|undefined, true);\n const orgTranslation = parseOrDefault(orgaAttributes?.['translation-config']);\n\n return getConfigurationFor(language, emissionTranslation, orgTranslation);\n }\n\n function getLanguageAvailability(language: string, emission: Emission, orgaAttributes: OrganisationAttributes, translationData: PodcastTranslationData): Availability {\n \n // 1. If language of podcast == language of browser, use that language\n if (language === translationData.nativeLanguage) {\n return Availability.Available;\n } else {\n const langConfig = getTranslationConfig(language, emission, orgaAttributes);\n\n // 2. If the language of the browser is available, use it\n if (langConfig === CreateTranslation.ALWAYS) {\n return Availability.Available;\n }\n // 2b. If the language is on demand, check if generated\n else if (langConfig === CreateTranslation.ON_DEMAND) {\n // Check if translation is already generated\n if (translationData.translations.find(t => t.language === language && t.state === TranslationState.FINISHED)) {\n return Availability.Available;\n } else {\n return Availability.ToGenerate;\n }\n }\n }\n\n return Availability.Unavailable;\n }\n\n /**\n * Get the relevant language for the current user\n * @param translationData The translation data for the podcast\n * @returns An object with properties 'ready' and 'available'\n * - *ready* Is the best language already generated\n * - *available* Is the best language not yet generated (or\n * undefined if *ready* is better)\n */\n async function getMostRelevantLanguage(translationData: PodcastTranslationData): Promise<RelevantLanguages> {\n const userLanguage = getLanguage(false);\n\n // If user language is native, do not go further\n if (userLanguage === translationData.nativeLanguage) {\n return { ready: userLanguage };\n }\n\n // Compute all available languages. Use language set on site, then\n // languages defined on browser, then default, and finally native language\n const languages: string[] = [];\n [userLanguage, ...navigator.languages, DEFAULT_LANGUAGE, translationData.nativeLanguage].forEach(l => {\n // For each language, if it is a variant (for example fr-CH), use\n // only the base language\n if (l.includes('-')) {\n l = l.split('-')[0];\n }\n\n if (!languages.includes(l)) {\n languages.push(l);\n }\n });\n\n const podcast = await podcastApi.get(translationData.podcastId);\n const emission = podcast.emission;\n const orgaAttributes = await organisationApi.getAttributes(podcast.organisation.id);\n\n let bestReady: string|null = null;\n let bestAvailable: string|null = null;\n\n for (const language of languages) {\n const avaibility = getLanguageAvailability(language, emission, orgaAttributes, translationData);\n if (avaibility === Availability.Available && bestReady === null) {\n bestReady = language;\n break;\n }\n\n if (avaibility === Availability.ToGenerate && bestAvailable === null) {\n bestAvailable = language;\n }\n }\n\n return { ready: bestReady, available: bestAvailable ?? undefined };\n }\n\n /**\n * Get the relevant translation for the current user\n * @param translationData The translation data for the podcast\n * @returns The translation\n */\n async function getMostRelevantTranslation(translationData: PodcastTranslationData): Promise<string>;\n /**\n * Get the relevant translation for the current user\n * @param podcastId The ID of the podcast\n * @returns The translation\n */\n async function getMostRelevantTranslation(podcastId: number): Promise<string>;\n\n /**\n * Get the relevant translation for the current user\n * @param translationData The translation data for the podcast\n * @returns The translation\n */\n async function getMostRelevantTranslation(data: PodcastTranslationData|number): Promise<string> {\n let translationData: PodcastTranslationData;\n if (typeof data === 'number') {\n translationData = await transcriptionApi.getTranslations(data);\n } else {\n translationData = data;\n }\n\n const { ready } = await getMostRelevantLanguage(translationData);\n\n // Finally get translation with chosen language\n const podcastId = translationData.podcastId;\n return await transcriptionApi.getTranslation(podcastId, ready);\n }\n\n return {\n convertSrtToPlainText,\n getMostRelevantLanguage,\n getMostRelevantTranslation,\n getTranslationConfig\n }\n};\n"],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useTranslation-CHq_j2dC.mjs","names":[],"sources":["../src/helper/language.ts","../src/stores/class/transcript/transcriptParams.ts","../src/helper/transcriptHelper.ts","../src/components/composable/useTranslation.ts"],"sourcesContent":["/**\n * Utility function to retrieve most relevant language for the user\n * @params forceToKnown When set to true (default), will limit language to one\n * one of 6 known languages. When set to false, allow all\n * languages.\n * @returns The most relevant language\n */\nexport function getLanguage(forceToKnown = true): string {\n const nameEQ = \"octopus-language=\";\n const ca = document.cookie.split(\";\");\n\n let language = \"\";\n for (const valueCookie of ca) {\n let c = valueCookie;\n while (c.startsWith(\" \")) {\n c = c.substring(1, c.length);\n }\n if (0 === c.indexOf(nameEQ)) {\n language = c.substring(nameEQ.length, c.length);\n break;\n }\n }\n\n if (0 === language.length) {\n if (forceToKnown === true) {\n // Choose best avilable language\n for (const navigatorLang of navigator.languages) {\n if (navigatorLang.includes(\"fr\")) {\n language = \"fr\";\n break;\n } else if (navigatorLang.includes(\"en\")) {\n language = \"en\";\n break;\n } else if (navigatorLang.includes(\"it\")) {\n language = \"it\";\n break;\n } else if (navigatorLang.includes(\"sl\")) {\n language = \"sl\";\n break;\n } else if (navigatorLang.includes(\"es\")) {\n language = \"es\";\n break;\n } else if (navigatorLang.includes(\"de\")) {\n language = \"de\";\n break;\n }\n }\n if (!language) {\n language = \"fr\";\n }\n } else {\n language = navigator.language;\n }\n }\n\n return language;\n}\n","export interface TranscriptParams {\n automation: string; // super, {date}, false \n ttsParams: TtsParams;\n modifyPodcast: ModifyPodcastConfig\n translationConfig: TranslationConfiguration;\n}\nexport interface TtsParams {\n super: string;\n style: string;\n pitch: number;\n speed: number;\n voice: string;\n language: string;\n}\n\nexport interface ModifyPodcastConfig {\n modifyChaptering: ModifyPodcastEnum;\n modifyKeywords: ModifyPodcastEnum;\n modifyDescription: ModifyPodcastEnum;\n createDescriptionUsingAi: boolean;\n wordsNumber: number;\n}\n\nexport enum ModifyPodcastEnum {\n SUPER = \"SUPER\",\n NO = \"NO\",\n IF_EMPTY = \"IF_EMPTY\",\n OVERWRITE=\"OVERWRITE\"\n}\n\nexport interface TranslationConfiguration {\n createTranslation:{[lang:string]: CreateTranslation};\n otherLanguage:CreateTranslation; //Cannot be ALWAYS\n}\n\nexport enum CreateTranslation {\n NEVER = \"NEVER\",\n ON_DEMAND = \"ON_DEMAND\",\n ALWAYS = \"ALWAYS\",\n SUPER=\"SUPER\"\n}\n\nexport function defaultTtsParams(): TtsParams {\n return {\n super: \"true\",\n style: \"neutral\",\n pitch: 0,\n speed: 1,\n voice: \"\",\n language: \"\"\n };\n}\n\nexport function defaultModifyPodcastConfig(): ModifyPodcastConfig {\n return {\n modifyChaptering: ModifyPodcastEnum.NO,\n modifyKeywords:ModifyPodcastEnum.NO,\n modifyDescription:ModifyPodcastEnum.NO,\n createDescriptionUsingAi: false,\n wordsNumber: 100,\n };\n}\n\n/**\n * Create a default object of TranslationConfiguration\n * @param isEmission Optional, if set and true changes default values\n * @returns The object\n */\nexport function defaultTranslationConfig(isEmission?: boolean): TranslationConfiguration {\n return {\n createTranslation:{},\n otherLanguage: isEmission ? CreateTranslation.SUPER : CreateTranslation.NEVER\n };\n}\n\nexport interface Voice {\n name: string;\n locale: string;\n displayName: string;\n gender: string;\n audioExample?: string;\n styles?: [];\n provider: string;\n}\nexport interface ProviderTts {\n name: string;\n fullName: string;\n logoPath: string;\n description: string;\n}\n","const SRT_PARSE_PATTERN = /(\\d+)\\n([\\d:,]+)\\s+-->\\s+([\\d:,]+)\\n([\\s\\S]*?(?=\\n{2}|$))/g;\n\ninterface ParsedStrSection {\n startTime: number;\n endTime: number;\n text: Array<string>;\n}\n\nfunction srtTimeToSeconds(time: string): number {\n const a = time.replace(',', '.').split(\":\").map(parseFloat);\n return a[0] * 60 * 60 + a[1] * 60 + a[2];\n}\n\nexport function parseSrtTranscript(transcript: string): Array<ParsedStrSection> {\n const result: Array<ParsedStrSection> = [];\n transcript = transcript.replace(/\\r\\n|\\r|\\n|\\t/g, \"\\n\");\n let matches: RegExpExecArray;\n while ((matches = SRT_PARSE_PATTERN.exec(transcript)) != null) {\n const text = matches[4].split('\\n');\n result.push({\n startTime: srtTimeToSeconds(matches[2]),\n endTime: srtTimeToSeconds(matches[3]),\n text\n });\n }\n\n return result;\n}\n","import { getLanguage } from \"../../helper/language\";\nimport { transcriptionApi, TranslationState, type PodcastTranslationData } from \"../../api/transcriptionApi\";\nimport { CreateTranslation, defaultTranslationConfig, TranslationConfiguration } from \"../../stores/class/transcript/transcriptParams\";\nimport { podcastApi } from \"../../api/podcastApi\";\nimport { Emission } from \"../../stores/class/general/emission\";\nimport { OrganisationAttributes } from \"@/stores/class/general/organisation\";\nimport { organisationApi } from \"../../api/organisationApi\";\nimport { parseSrtTranscript } from \"@/helper/transcriptHelper\";\n\nconst DEFAULT_LANGUAGE = 'en';\n\ninterface RelevantLanguages {\n /** Language which already has a generated translation */\n ready: string;\n /** Language that is more relevant but its translation is not yet generated */\n available?: string;\n}\n\nenum Availability {\n Available,\n ToGenerate,\n Unavailable\n}\n\nexport const useTranslation = () => {\n\n /**\n * Convert SRT data to plain text\n * @param srt The data to convert\n * @returns The plain text\n */\n function convertSrtToPlainText(srt: string): string {\n const parsed = parseSrtTranscript(srt);\n return parsed.flatMap(p => p.text).join(' ');\n }\n\n function getApplicationConf(language: string, conf: TranslationConfiguration): CreateTranslation {\n if (language in conf.createTranslation) {\n return conf.createTranslation[language];\n }\n\n return conf.otherLanguage;\n }\n\n /**\n * Retrieve the translation configuration for a given language\n */\n function getConfigurationFor(language: string, emissionConf: TranslationConfiguration, orgaConf: TranslationConfiguration): CreateTranslation {\n const emissionSetting = getApplicationConf(language, emissionConf);\n if (emissionSetting === CreateTranslation.SUPER) {\n return getApplicationConf(language, orgaConf);\n }\n return emissionSetting;\n }\n\n function parseOrDefault(data: string|undefined, isEmission = false): TranslationConfiguration {\n return data ? JSON.parse(data) : defaultTranslationConfig(isEmission);\n }\n\n /**\n * Indicates wether the language is available (either because generated or\n * because it can be generated)\n * @param language The language to check for\n * @param emission *(optional)* If set, will also check in emission settings\n * @returns Whether the language is available or not\n */\n function getTranslationConfig(language: string, emission: Emission, orgaAttributes: OrganisationAttributes): CreateTranslation {\n const emissionTranslation = parseOrDefault(emission.annotations?.['translation-config'] as string|undefined, true);\n const orgTranslation = parseOrDefault(orgaAttributes?.['translation-config']);\n\n return getConfigurationFor(language, emissionTranslation, orgTranslation);\n }\n\n function getLanguageAvailability(language: string, emission: Emission, orgaAttributes: OrganisationAttributes, translationData: PodcastTranslationData): Availability {\n \n // 1. If language of podcast == language of browser, use that language\n if (language === translationData.nativeLanguage) {\n return Availability.Available;\n } else {\n const langConfig = getTranslationConfig(language, emission, orgaAttributes);\n\n // 2. If the language of the browser is available, use it\n if (langConfig === CreateTranslation.ALWAYS) {\n return Availability.Available;\n }\n // 2b. If the language is on demand, check if generated\n else if (langConfig === CreateTranslation.ON_DEMAND) {\n // Check if translation is already generated\n if (translationData.translations.find(t => t.language === language && t.state === TranslationState.FINISHED)) {\n return Availability.Available;\n } else {\n return Availability.ToGenerate;\n }\n }\n }\n\n return Availability.Unavailable;\n }\n\n /**\n * Get the relevant language for the current user\n * @param translationData The translation data for the podcast\n * @returns An object with properties 'ready' and 'available'\n * - *ready* Is the best language already generated\n * - *available* Is the best language not yet generated (or\n * undefined if *ready* is better)\n */\n async function getMostRelevantLanguage(translationData: PodcastTranslationData): Promise<RelevantLanguages> {\n const userLanguage = getLanguage(false);\n\n // If user language is native, do not go further\n if (userLanguage === translationData.nativeLanguage) {\n return { ready: userLanguage };\n }\n\n // Compute all available languages. Use language set on site, then\n // languages defined on browser, then default, and finally native language\n const languages: string[] = [];\n [userLanguage, ...navigator.languages, DEFAULT_LANGUAGE, translationData.nativeLanguage].forEach(l => {\n // For each language, if it is a variant (for example fr-CH), use\n // only the base language\n if (l.includes('-')) {\n l = l.split('-')[0];\n }\n\n if (!languages.includes(l)) {\n languages.push(l);\n }\n });\n\n const podcast = await podcastApi.get(translationData.podcastId);\n const emission = podcast.emission;\n const orgaAttributes = await organisationApi.getAttributes(podcast.organisation.id);\n\n let bestReady: string|null = null;\n let bestAvailable: string|null = null;\n\n for (const language of languages) {\n const avaibility = getLanguageAvailability(language, emission, orgaAttributes, translationData);\n if (avaibility === Availability.Available && bestReady === null) {\n bestReady = language;\n break;\n }\n\n if (avaibility === Availability.ToGenerate && bestAvailable === null) {\n bestAvailable = language;\n }\n }\n\n return { ready: bestReady, available: bestAvailable ?? undefined };\n }\n\n /**\n * Get the relevant translation for the current user\n * @param translationData The translation data for the podcast\n * @returns The translation\n */\n async function getMostRelevantTranslation(translationData: PodcastTranslationData): Promise<string>;\n /**\n * Get the relevant translation for the current user\n * @param podcastId The ID of the podcast\n * @returns The translation\n */\n async function getMostRelevantTranslation(podcastId: number): Promise<string>;\n\n /**\n * Get the relevant translation for the current user\n * @param translationData The translation data for the podcast\n * @returns The translation\n */\n async function getMostRelevantTranslation(data: PodcastTranslationData|number): Promise<string> {\n let translationData: PodcastTranslationData;\n if (typeof data === 'number') {\n translationData = await transcriptionApi.getTranslations(data);\n } else {\n translationData = data;\n }\n\n const { ready } = await getMostRelevantLanguage(translationData);\n\n // Finally get translation with chosen language\n const podcastId = translationData.podcastId;\n return await transcriptionApi.getTranslation(podcastId, ready);\n }\n\n return {\n convertSrtToPlainText,\n getMostRelevantLanguage,\n getMostRelevantTranslation,\n getTranslationConfig\n }\n};\n"],"mappings":";;;;;;;;;AAOA,SAAgB,YAAY,eAAe,MAAc;CACrD,MAAM,SAAS;CACf,MAAM,KAAK,SAAS,OAAO,MAAM,GAAG;CAEpC,IAAI,WAAW;CACf,KAAK,MAAM,eAAe,IAAI;EAC1B,IAAI,IAAI;EACR,OAAO,EAAE,WAAW,GAAG,GACnB,IAAI,EAAE,UAAU,GAAG,EAAE,MAAM;EAE/B,IAAI,MAAM,EAAE,QAAQ,MAAM,GAAG;GACzB,WAAW,EAAE,UAAU,IAAe,EAAE,MAAM;GAC9C;EACJ;CACJ;CAEA,IAAI,MAAM,SAAS,QACf,IAAI,iBAAiB,MAAM;EAEvB,KAAK,MAAM,iBAAiB,UAAU,WAClC,IAAI,cAAc,SAAS,IAAI,GAAG;GAC9B,WAAW;GACX;EACJ,OAAO,IAAI,cAAc,SAAS,IAAI,GAAG;GACrC,WAAW;GACX;EACJ,OAAO,IAAI,cAAc,SAAS,IAAI,GAAG;GACrC,WAAW;GACX;EACJ,OAAO,IAAI,cAAc,SAAS,IAAI,GAAG;GACrC,WAAW;GACX;EACJ,OAAO,IAAI,cAAc,SAAS,IAAI,GAAG;GACrC,WAAW;GACX;EACJ,OAAO,IAAI,cAAc,SAAS,IAAI,GAAG;GACrC,WAAW;GACX;EACJ;EAEJ,IAAI,CAAC,UACD,WAAW;CAEnB,OACI,WAAW,UAAU;CAI7B,OAAO;AACX;;;ACjCA,IAAY,oBAAL,yBAAA,mBAAA;CACL,kBAAA,WAAA;CACA,kBAAA,QAAA;CACA,kBAAA,cAAA;CACA,kBAAA,eAAA;;AACF,EAAA,CAAA,CAAA;AAOA,IAAY,oBAAL,yBAAA,mBAAA;CACL,kBAAA,WAAA;CACA,kBAAA,eAAA;CACA,kBAAA,YAAA;CACA,kBAAA,WAAA;;AACF,EAAA,CAAA,CAAA;AAEA,SAAgB,mBAA8B;CAC5C,OAAO;EACL,OAAO;EACP,OAAO;EACP,OAAO;EACP,OAAO;EACP,OAAO;EACP,UAAU;CACZ;AACF;AAEA,SAAgB,6BAAkD;CAChE,OAAO;EACL,kBAAA;EACA,gBAAA;EACA,mBAAA;EACA,0BAA0B;EAC1B,aAAa;CACf;AACF;;;;;;AAOA,SAAgB,yBAAyB,YAAgD;CACvF,OAAO;EACL,mBAAkB,CAAC;EACnB,eAAe,aAAA,UAAA;CACjB;AACF;;;ACzEA,IAAM,oBAAoB;AAQ1B,SAAS,iBAAiB,MAAsB;CAC5C,MAAM,IAAI,KAAK,QAAQ,KAAK,GAAG,EAAE,MAAM,GAAG,EAAE,IAAI,UAAU;CAC1D,OAAO,EAAE,KAAK,KAAK,KAAK,EAAE,KAAK,KAAK,EAAE;AAC1C;AAEA,SAAgB,mBAAmB,YAA6C;CAC5E,MAAM,SAAkC,CAAC;CACzC,aAAa,WAAW,QAAQ,kBAAkB,IAAI;CACtD,IAAI;CACJ,QAAQ,UAAU,kBAAkB,KAAK,UAAU,MAAM,MAAM;EAC3D,MAAM,OAAO,QAAQ,GAAG,MAAM,IAAI;EAClC,OAAO,KAAK;GACR,WAAW,iBAAiB,QAAQ,EAAE;GACtC,SAAS,iBAAiB,QAAQ,EAAE;GACpC;EACJ,CAAC;CACL;CAEA,OAAO;AACX;;;AClBA,IAAM,mBAAmB;AAezB,IAAa,uBAAuB;;;;;;CAOhC,SAAS,sBAAsB,KAAqB;EAEhD,OADe,mBAAmB,GAC3B,EAAO,SAAQ,MAAK,EAAE,IAAI,EAAE,KAAK,GAAG;CAC/C;CAEA,SAAS,mBAAmB,UAAkB,MAAmD;EAC7F,IAAI,YAAY,KAAK,mBACjB,OAAO,KAAK,kBAAkB;EAGlC,OAAO,KAAK;CAChB;;;;CAKA,SAAS,oBAAoB,UAAkB,cAAwC,UAAuD;EAC1I,MAAM,kBAAkB,mBAAmB,UAAU,YAAY;EACjE,IAAI,oBAAoB,kBAAkB,OACtC,OAAO,mBAAmB,UAAU,QAAQ;EAEhD,OAAO;CACX;CAEA,SAAS,eAAe,MAAwB,aAAa,OAAiC;EAC1F,OAAO,OAAO,KAAK,MAAM,IAAI,IAAI,yBAAyB,UAAU;CACxE;;;;;;;;CASA,SAAS,qBAAqB,UAAkB,UAAoB,gBAA2D;EAI3H,OAAO,oBAAoB,UAHC,eAAe,SAAS,cAAc,uBAA2C,IAGxE,GAFd,eAAe,iBAAiB,qBAEG,CAAc;CAC5E;CAEA,SAAS,wBAAwB,UAAkB,UAAoB,gBAAwC,iBAAuD;EAGlK,IAAI,aAAa,gBAAgB,gBAC7B,OAAA;OACG;GACH,MAAM,aAAa,qBAAqB,UAAU,UAAU,cAAc;GAG1E,IAAI,eAAe,kBAAkB,QACjC,OAAA;QAGC,IAAI,eAAe,kBAAkB,WAEtC,IAAI,gBAAgB,aAAa,MAAK,MAAK,EAAE,aAAa,YAAY,EAAE,UAAU,iBAAiB,QAAQ,GACvG,OAAA;QAEA,OAAA;EAGZ;EAEA,OAAA;CACJ;;;;;;;;;CAUA,eAAe,wBAAwB,iBAAqE;EACxG,MAAM,eAAe,YAAY,KAAK;EAGtC,IAAI,iBAAiB,gBAAgB,gBACjC,OAAO,EAAE,OAAO,aAAa;EAKjC,MAAM,YAAsB,CAAC;EAC7B;GAAC;GAAc,GAAG,UAAU;GAAW;GAAkB,gBAAgB;EAAc,EAAE,SAAQ,MAAK;GAGlG,IAAI,EAAE,SAAS,GAAG,GACd,IAAI,EAAE,MAAM,GAAG,EAAE;GAGrB,IAAI,CAAC,UAAU,SAAS,CAAC,GACrB,UAAU,KAAK,CAAC;EAExB,CAAC;EAED,MAAM,UAAU,MAAM,WAAW,IAAI,gBAAgB,SAAS;EAC9D,MAAM,WAAW,QAAQ;EACzB,MAAM,iBAAiB,MAAM,gBAAgB,cAAc,QAAQ,aAAa,EAAE;EAElF,IAAI,YAAyB;EAC7B,IAAI,gBAA6B;EAEjC,KAAK,MAAM,YAAY,WAAW;GAC9B,MAAM,aAAa,wBAAwB,UAAU,UAAU,gBAAgB,eAAe;GAC9F,IAAI,eAAA,KAAyC,cAAc,MAAM;IAC7D,YAAY;IACZ;GACJ;GAEA,IAAI,eAAA,KAA0C,kBAAkB,MAC5D,gBAAgB;EAExB;EAEA,OAAO;GAAE,OAAO;GAAW,WAAW,iBAAiB,KAAA;EAAU;CACrE;;;;;;CAoBA,eAAe,2BAA2B,MAAsD;EAC5F,IAAI;EACJ,IAAI,OAAO,SAAS,UAChB,kBAAkB,MAAM,iBAAiB,gBAAgB,IAAI;OAE7D,kBAAkB;EAGtB,MAAM,EAAE,UAAU,MAAM,wBAAwB,eAAe;EAG/D,MAAM,YAAY,gBAAgB;EAClC,OAAO,MAAM,iBAAiB,eAAe,WAAW,KAAK;CACjE;CAEA,OAAO;EACH;EACA;EACA;EACA;CACJ;AACJ"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useTranslation-Ci8aP-vH.mjs","names":[],"sources":["../src/helper/language.ts","../src/stores/class/transcript/transcriptParams.ts","../src/helper/transcriptHelper.ts","../src/components/composable/useTranslation.ts"],"sourcesContent":["/**\n * Utility function to retrieve most relevant language for the user\n * @params forceToKnown When set to true (default), will limit language to one\n * one of 6 known languages. When set to false, allow all\n * languages.\n * @returns The most relevant language\n */\nexport function getLanguage(forceToKnown = true): string {\n const nameEQ = \"octopus-language=\";\n const ca = document.cookie.split(\";\");\n\n let language = \"\";\n for (const valueCookie of ca) {\n let c = valueCookie;\n while (c.startsWith(\" \")) {\n c = c.substring(1, c.length);\n }\n if (0 === c.indexOf(nameEQ)) {\n language = c.substring(nameEQ.length, c.length);\n break;\n }\n }\n\n if (0 === language.length) {\n if (forceToKnown === true) {\n // Choose best avilable language\n for (const navigatorLang of navigator.languages) {\n if (navigatorLang.includes(\"fr\")) {\n language = \"fr\";\n break;\n } else if (navigatorLang.includes(\"en\")) {\n language = \"en\";\n break;\n } else if (navigatorLang.includes(\"it\")) {\n language = \"it\";\n break;\n } else if (navigatorLang.includes(\"sl\")) {\n language = \"sl\";\n break;\n } else if (navigatorLang.includes(\"es\")) {\n language = \"es\";\n break;\n } else if (navigatorLang.includes(\"de\")) {\n language = \"de\";\n break;\n }\n }\n if (!language) {\n language = \"fr\";\n }\n } else {\n language = navigator.language;\n }\n }\n\n return language;\n}\n","export interface TranscriptParams {\n automation: string; // super, {date}, false \n ttsParams: TtsParams;\n modifyPodcast: ModifyPodcastConfig\n translationConfig: TranslationConfiguration;\n}\nexport interface TtsParams {\n super: string;\n style: string;\n pitch: number;\n speed: number;\n voice: string;\n language: string;\n}\n\nexport interface ModifyPodcastConfig {\n modifyChaptering: ModifyPodcastEnum;\n modifyKeywords: ModifyPodcastEnum;\n modifyDescription: ModifyPodcastEnum;\n createDescriptionUsingAi: boolean;\n wordsNumber: number;\n}\n\nexport enum ModifyPodcastEnum {\n SUPER = \"SUPER\",\n NO = \"NO\",\n IF_EMPTY = \"IF_EMPTY\",\n OVERWRITE=\"OVERWRITE\"\n}\n\nexport interface TranslationConfiguration {\n createTranslation:{[lang:string]: CreateTranslation};\n otherLanguage:CreateTranslation; //Cannot be ALWAYS\n}\n\nexport enum CreateTranslation {\n NEVER = \"NEVER\",\n ON_DEMAND = \"ON_DEMAND\",\n ALWAYS = \"ALWAYS\",\n SUPER=\"SUPER\"\n}\n\nexport function defaultTtsParams(): TtsParams {\n return {\n super: \"true\",\n style: \"neutral\",\n pitch: 0,\n speed: 1,\n voice: \"\",\n language: \"\"\n };\n}\n\nexport function defaultModifyPodcastConfig(): ModifyPodcastConfig {\n return {\n modifyChaptering: ModifyPodcastEnum.NO,\n modifyKeywords:ModifyPodcastEnum.NO,\n modifyDescription:ModifyPodcastEnum.NO,\n createDescriptionUsingAi: false,\n wordsNumber: 100,\n };\n}\n\n/**\n * Create a default object of TranslationConfiguration\n * @param isEmission Optional, if set and true changes default values\n * @returns The object\n */\nexport function defaultTranslationConfig(isEmission?: boolean): TranslationConfiguration {\n return {\n createTranslation:{},\n otherLanguage: isEmission ? CreateTranslation.SUPER : CreateTranslation.NEVER\n };\n}\n\nexport interface Voice {\n name: string;\n locale: string;\n displayName: string;\n gender: string;\n audioExample?: string;\n styles?: [];\n provider: string;\n}\nexport interface ProviderTts {\n name: string;\n fullName: string;\n logoPath: string;\n description: string;\n}\n","const SRT_PARSE_PATTERN = /(\\d+)\\n([\\d:,]+)\\s+-->\\s+([\\d:,]+)\\n([\\s\\S]*?(?=\\n{2}|$))/g;\n\ninterface ParsedStrSection {\n startTime: number;\n endTime: number;\n text: Array<string>;\n}\n\nfunction srtTimeToSeconds(time: string): number {\n const a = time.replace(',', '.').split(\":\").map(parseFloat);\n return a[0] * 60 * 60 + a[1] * 60 + a[2];\n}\n\nexport function parseSrtTranscript(transcript: string): Array<ParsedStrSection> {\n const result: Array<ParsedStrSection> = [];\n transcript = transcript.replace(/\\r\\n|\\r|\\n|\\t/g, \"\\n\");\n let matches: RegExpExecArray;\n while ((matches = SRT_PARSE_PATTERN.exec(transcript)) != null) {\n const text = matches[4].split('\\n');\n result.push({\n startTime: srtTimeToSeconds(matches[2]),\n endTime: srtTimeToSeconds(matches[3]),\n text\n });\n }\n\n return result;\n}\n","import { getLanguage } from \"../../helper/language\";\nimport { transcriptionApi, TranslationState, type PodcastTranslationData } from \"../../api/transcriptionApi\";\nimport { CreateTranslation, defaultTranslationConfig, TranslationConfiguration } from \"../../stores/class/transcript/transcriptParams\";\nimport { podcastApi } from \"../../api/podcastApi\";\nimport { Emission } from \"../../stores/class/general/emission\";\nimport { OrganisationAttributes } from \"@/stores/class/general/organisation\";\nimport { organisationApi } from \"../../api/organisationApi\";\nimport { parseSrtTranscript } from \"@/helper/transcriptHelper\";\n\nconst DEFAULT_LANGUAGE = 'en';\n\ninterface RelevantLanguages {\n /** Language which already has a generated translation */\n ready: string;\n /** Language that is more relevant but its translation is not yet generated */\n available?: string;\n}\n\nenum Availability {\n Available,\n ToGenerate,\n Unavailable\n}\n\nexport const useTranslation = () => {\n\n /**\n * Convert SRT data to plain text\n * @param srt The data to convert\n * @returns The plain text\n */\n function convertSrtToPlainText(srt: string): string {\n const parsed = parseSrtTranscript(srt);\n return parsed.flatMap(p => p.text).join(' ');\n }\n\n function getApplicationConf(language: string, conf: TranslationConfiguration): CreateTranslation {\n if (language in conf.createTranslation) {\n return conf.createTranslation[language];\n }\n\n return conf.otherLanguage;\n }\n\n /**\n * Retrieve the translation configuration for a given language\n */\n function getConfigurationFor(language: string, emissionConf: TranslationConfiguration, orgaConf: TranslationConfiguration): CreateTranslation {\n const emissionSetting = getApplicationConf(language, emissionConf);\n if (emissionSetting === CreateTranslation.SUPER) {\n return getApplicationConf(language, orgaConf);\n }\n return emissionSetting;\n }\n\n function parseOrDefault(data: string|undefined, isEmission = false): TranslationConfiguration {\n return data ? JSON.parse(data) : defaultTranslationConfig(isEmission);\n }\n\n /**\n * Indicates wether the language is available (either because generated or\n * because it can be generated)\n * @param language The language to check for\n * @param emission *(optional)* If set, will also check in emission settings\n * @returns Whether the language is available or not\n */\n function getTranslationConfig(language: string, emission: Emission, orgaAttributes: OrganisationAttributes): CreateTranslation {\n const emissionTranslation = parseOrDefault(emission.annotations?.['translation-config'] as string|undefined, true);\n const orgTranslation = parseOrDefault(orgaAttributes?.['translation-config']);\n\n return getConfigurationFor(language, emissionTranslation, orgTranslation);\n }\n\n function getLanguageAvailability(language: string, emission: Emission, orgaAttributes: OrganisationAttributes, translationData: PodcastTranslationData): Availability {\n \n // 1. If language of podcast == language of browser, use that language\n if (language === translationData.nativeLanguage) {\n return Availability.Available;\n } else {\n const langConfig = getTranslationConfig(language, emission, orgaAttributes);\n\n // 2. If the language of the browser is available, use it\n if (langConfig === CreateTranslation.ALWAYS) {\n return Availability.Available;\n }\n // 2b. If the language is on demand, check if generated\n else if (langConfig === CreateTranslation.ON_DEMAND) {\n // Check if translation is already generated\n if (translationData.translations.find(t => t.language === language && t.state === TranslationState.FINISHED)) {\n return Availability.Available;\n } else {\n return Availability.ToGenerate;\n }\n }\n }\n\n return Availability.Unavailable;\n }\n\n /**\n * Get the relevant language for the current user\n * @param translationData The translation data for the podcast\n * @returns An object with properties 'ready' and 'available'\n * - *ready* Is the best language already generated\n * - *available* Is the best language not yet generated (or\n * undefined if *ready* is better)\n */\n async function getMostRelevantLanguage(translationData: PodcastTranslationData): Promise<RelevantLanguages> {\n const userLanguage = getLanguage(false);\n\n // If user language is native, do not go further\n if (userLanguage === translationData.nativeLanguage) {\n return { ready: userLanguage };\n }\n\n // Compute all available languages. Use language set on site, then\n // languages defined on browser, then default, and finally native language\n const languages: string[] = [];\n [userLanguage, ...navigator.languages, DEFAULT_LANGUAGE, translationData.nativeLanguage].forEach(l => {\n // For each language, if it is a variant (for example fr-CH), use\n // only the base language\n if (l.includes('-')) {\n l = l.split('-')[0];\n }\n\n if (!languages.includes(l)) {\n languages.push(l);\n }\n });\n\n const podcast = await podcastApi.get(translationData.podcastId);\n const emission = podcast.emission;\n const orgaAttributes = await organisationApi.getAttributes(podcast.organisation.id);\n\n let bestReady: string|null = null;\n let bestAvailable: string|null = null;\n\n for (const language of languages) {\n const avaibility = getLanguageAvailability(language, emission, orgaAttributes, translationData);\n if (avaibility === Availability.Available && bestReady === null) {\n bestReady = language;\n break;\n }\n\n if (avaibility === Availability.ToGenerate && bestAvailable === null) {\n bestAvailable = language;\n }\n }\n\n return { ready: bestReady, available: bestAvailable ?? undefined };\n }\n\n /**\n * Get the relevant translation for the current user\n * @param translationData The translation data for the podcast\n * @returns The translation\n */\n async function getMostRelevantTranslation(translationData: PodcastTranslationData): Promise<string>;\n /**\n * Get the relevant translation for the current user\n * @param podcastId The ID of the podcast\n * @returns The translation\n */\n async function getMostRelevantTranslation(podcastId: number): Promise<string>;\n\n /**\n * Get the relevant translation for the current user\n * @param translationData The translation data for the podcast\n * @returns The translation\n */\n async function getMostRelevantTranslation(data: PodcastTranslationData|number): Promise<string> {\n let translationData: PodcastTranslationData;\n if (typeof data === 'number') {\n translationData = await transcriptionApi.getTranslations(data);\n } else {\n translationData = data;\n }\n\n const { ready } = await getMostRelevantLanguage(translationData);\n\n // Finally get translation with chosen language\n const podcastId = translationData.podcastId;\n return await transcriptionApi.getTranslation(podcastId, ready);\n }\n\n return {\n convertSrtToPlainText,\n getMostRelevantLanguage,\n getMostRelevantTranslation,\n getTranslationConfig\n }\n};\n"],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useTranslation-DDcfuc32.mjs","names":[],"sources":["../src/helper/language.ts","../src/stores/class/transcript/transcriptParams.ts","../src/components/composable/useTranslation.ts"],"sourcesContent":["/**\n * Utility function to retrieve most relevant language for the user\n * @params forceToKnown When set to true (default), will limit language to one\n * one of 6 known languages. When set to false, allow all\n * languages.\n * @returns The most relevant language\n */\nexport function getLanguage(forceToKnown = true): string {\n const nameEQ = \"octopus-language=\";\n const ca = document.cookie.split(\";\");\n\n let language = \"\";\n for (const valueCookie of ca) {\n let c = valueCookie;\n while (c.startsWith(\" \")) {\n c = c.substring(1, c.length);\n }\n if (0 === c.indexOf(nameEQ)) {\n language = c.substring(nameEQ.length, c.length);\n break;\n }\n }\n\n if (0 === language.length) {\n if (forceToKnown === true) {\n // Choose best avilable language\n for (const navigatorLang of navigator.languages) {\n if (navigatorLang.includes(\"fr\")) {\n language = \"fr\";\n break;\n } else if (navigatorLang.includes(\"en\")) {\n language = \"en\";\n break;\n } else if (navigatorLang.includes(\"it\")) {\n language = \"it\";\n break;\n } else if (navigatorLang.includes(\"sl\")) {\n language = \"sl\";\n break;\n } else if (navigatorLang.includes(\"es\")) {\n language = \"es\";\n break;\n } else if (navigatorLang.includes(\"de\")) {\n language = \"de\";\n break;\n }\n }\n if (!language) {\n language = \"fr\";\n }\n } else {\n language = navigator.language;\n }\n }\n\n return language;\n}\n","export interface TranscriptParams {\n automation: string; // super, {date}, false \n ttsParams: TtsParams;\n modifyPodcast: ModifyPodcastConfig\n translationConfig: TranslationConfiguration;\n}\nexport interface TtsParams {\n super: string;\n style: string;\n pitch: number;\n speed: number;\n voice: string;\n language: string;\n}\n\nexport interface ModifyPodcastConfig {\n modifyChaptering: ModifyPodcastEnum;\n modifyKeywords: ModifyPodcastEnum;\n modifyDescription: ModifyPodcastEnum;\n createDescriptionUsingAi: boolean;\n wordsNumber: number;\n}\n\nexport enum ModifyPodcastEnum {\n SUPER = \"SUPER\",\n NO = \"NO\",\n IF_EMPTY = \"IF_EMPTY\",\n OVERWRITE=\"OVERWRITE\"\n}\n\nexport interface TranslationConfiguration {\n createTranslation:{[lang:string]: CreateTranslation};\n otherLanguage:CreateTranslation; //Cannot be ALWAYS\n}\n\nexport enum CreateTranslation {\n NEVER = \"NEVER\",\n ON_DEMAND = \"ON_DEMAND\",\n ALWAYS = \"ALWAYS\",\n SUPER=\"SUPER\"\n}\n\nexport function defaultTtsParams(): TtsParams {\n return {\n super: \"true\",\n style: \"neutral\",\n pitch: 0,\n speed: 1,\n voice: \"\",\n language: \"\"\n };\n}\n\nexport function defaultModifyPodcastConfig(): ModifyPodcastConfig {\n return {\n modifyChaptering: ModifyPodcastEnum.NO,\n modifyKeywords:ModifyPodcastEnum.NO,\n modifyDescription:ModifyPodcastEnum.NO,\n createDescriptionUsingAi: false,\n wordsNumber: 100,\n };\n}\n\n/**\n * Create a default object of TranslationConfiguration\n * @param isEmission Optional, if set and true changes default values\n * @returns The object\n */\nexport function defaultTranslationConfig(isEmission?: boolean): TranslationConfiguration {\n return {\n createTranslation:{},\n otherLanguage: isEmission ? CreateTranslation.SUPER : CreateTranslation.NEVER\n };\n}\n\nexport interface Voice {\n name: string;\n locale: string;\n displayName: string;\n gender: string;\n audioExample?: string;\n styles?: [];\n provider: string;\n}\nexport interface ProviderTts {\n name: string;\n fullName: string;\n logoPath: string;\n description: string;\n}\n","import { getLanguage } from \"../../helper/language\";\nimport { transcriptionApi, TranslationState, type PodcastTranslationData } from \"../../api/transcriptionApi\";\nimport { CreateTranslation, defaultTranslationConfig, TranslationConfiguration } from \"../../stores/class/transcript/transcriptParams\";\nimport { podcastApi } from \"../../api/podcastApi\";\nimport { Emission } from \"../../stores/class/general/emission\";\nimport { OrganisationAttributes } from \"@/stores/class/general/organisation\";\nimport { organisationApi } from \"../../api/organisationApi\";\n\nconst DEFAULT_LANGUAGE = 'en';\n\ninterface RelevantLanguages {\n /** Language which already has a generated translation */\n ready: string;\n /** Language that is more relevant but its translation is not yet generated */\n available?: string;\n}\n\nenum Availability {\n Available,\n ToGenerate,\n Unavailable\n}\n\nexport const useTranslation = () => {\n\n /**\n * Convert SRT data to plain text\n * @param srt The data to convert\n * @returns The plain text\n */\n function convertSrtToPlainText(srt: string): string {\n const parsed = parseSrtTranscript(srt);\n return parsed.flatMap(p => p.text).join(' ');\n }\n\n function getApplicationConf(language: string, conf: TranslationConfiguration): CreateTranslation {\n if (language in conf.createTranslation) {\n return conf.createTranslation[language];\n }\n\n return conf.otherLanguage;\n }\n\n /**\n * Retrieve the translation configuration for a given language\n */\n function getConfigurationFor(language: string, emissionConf: TranslationConfiguration, orgaConf: TranslationConfiguration): CreateTranslation {\n const emissionSetting = getApplicationConf(language, emissionConf);\n if (emissionSetting === CreateTranslation.SUPER) {\n return getApplicationConf(language, orgaConf);\n }\n return emissionSetting;\n }\n\n function parseOrDefault(data: string|undefined, isEmission = false): TranslationConfiguration {\n return data ? JSON.parse(data) : defaultTranslationConfig(isEmission);\n }\n\n /**\n * Indicates wether the language is available (either because generated or\n * because it can be generated)\n * @param language The language to check for\n * @param emission *(optional)* If set, will also check in emission settings\n * @returns Whether the language is available or not\n */\n function getTranslationConfig(language: string, emission: Emission, orgaAttributes: OrganisationAttributes): CreateTranslation {\n const emissionTranslation = parseOrDefault(emission.annotations?.['translation-config'] as string|undefined, true);\n const orgTranslation = parseOrDefault(orgaAttributes?.['translation-config']);\n\n return getConfigurationFor(language, emissionTranslation, orgTranslation);\n }\n\n function getLanguageAvailability(language: string, emission: Emission, orgaAttributes: OrganisationAttributes, translationData: PodcastTranslationData): Availability {\n \n // 1. If language of podcast == language of browser, use that language\n if (language === translationData.nativeLanguage) {\n return Availability.Available;\n } else {\n const langConfig = getTranslationConfig(language, emission, orgaAttributes);\n\n // 2. If the language of the browser is available, use it\n if (langConfig === CreateTranslation.ALWAYS) {\n return Availability.Available;\n }\n // 2b. If the language is on demand, check if generated\n else if (langConfig === CreateTranslation.ON_DEMAND) {\n // Check if translation is already generated\n if (translationData.translations.find(t => t.language === language && t.state === TranslationState.FINISHED)) {\n return Availability.Available;\n } else {\n return Availability.ToGenerate;\n }\n }\n }\n\n return Availability.Unavailable;\n }\n\n /**\n * Get the relevant language for the current user\n * @param translationData The translation data for the podcast\n * @returns An object with properties 'ready' and 'available'\n * - *ready* Is the best language already generated\n * - *available* Is the best language not yet generated (or\n * undefined if *ready* is better)\n */\n async function getMostRelevantLanguage(translationData: PodcastTranslationData): Promise<RelevantLanguages> {\n const userLanguage = getLanguage(false);\n\n // If user language is native, do not go further\n if (userLanguage === translationData.nativeLanguage) {\n return { ready: userLanguage };\n }\n\n // Compute all available languages. Use language set on site, then\n // languages defined on browser, then default, and finally native language\n const languages: string[] = [];\n [userLanguage, ...navigator.languages, DEFAULT_LANGUAGE, translationData.nativeLanguage].forEach(l => {\n // For each language, if it is a variant (for example fr-CH), use\n // only the base language\n if (l.includes('-')) {\n l = l.split('-')[0];\n }\n\n if (!languages.includes(l)) {\n languages.push(l);\n }\n });\n\n const podcast = await podcastApi.get(translationData.podcastId);\n const emission = podcast.emission;\n const orgaAttributes = await organisationApi.getAttributes(podcast.organisation.id);\n\n let bestReady: string|null = null;\n let bestAvailable: string|null = null;\n\n for (const language of languages) {\n const avaibility = getLanguageAvailability(language, emission, orgaAttributes, translationData);\n if (avaibility === Availability.Available && bestReady === null) {\n bestReady = language;\n break;\n }\n\n if (avaibility === Availability.ToGenerate && bestAvailable === null) {\n bestAvailable = language;\n }\n }\n\n return { ready: bestReady, available: bestAvailable ?? undefined };\n }\n\n /**\n * Get the relevant translation for the current user\n * @param translationData The translation data for the podcast\n * @returns The translation\n */\n async function getMostRelevantTranslation(translationData: PodcastTranslationData): Promise<string>;\n /**\n * Get the relevant translation for the current user\n * @param podcastId The ID of the podcast\n * @returns The translation\n */\n async function getMostRelevantTranslation(podcastId: number): Promise<string>;\n\n /**\n * Get the relevant translation for the current user\n * @param translationData The translation data for the podcast\n * @returns The translation\n */\n async function getMostRelevantTranslation(data: PodcastTranslationData|number): Promise<string> {\n let translationData: PodcastTranslationData;\n if (typeof data === 'number') {\n translationData = await transcriptionApi.getTranslations(data);\n } else {\n translationData = data;\n }\n\n const { ready } = await getMostRelevantLanguage(translationData);\n\n // Finally get translation with chosen language\n const podcastId = translationData.podcastId;\n return await transcriptionApi.getTranslation(podcastId, ready);\n }\n\n return {\n convertSrtToPlainText,\n getMostRelevantLanguage,\n getMostRelevantTranslation,\n getTranslationConfig\n }\n};\n"],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useTranslation-DM20BrtZ.mjs","names":[],"sources":["../src/helper/language.ts","../src/stores/class/transcript/transcriptParams.ts","../src/helper/transcriptHelper.ts","../src/components/composable/useTranslation.ts"],"sourcesContent":["/**\n * Utility function to retrieve most relevant language for the user\n * @params forceToKnown When set to true (default), will limit language to one\n * one of 6 known languages. When set to false, allow all\n * languages.\n * @returns The most relevant language\n */\nexport function getLanguage(forceToKnown = true): string {\n const nameEQ = \"octopus-language=\";\n const ca = document.cookie.split(\";\");\n\n let language = \"\";\n for (const valueCookie of ca) {\n let c = valueCookie;\n while (c.startsWith(\" \")) {\n c = c.substring(1, c.length);\n }\n if (0 === c.indexOf(nameEQ)) {\n language = c.substring(nameEQ.length, c.length);\n break;\n }\n }\n\n if (0 === language.length) {\n if (forceToKnown === true) {\n // Choose best avilable language\n for (const navigatorLang of navigator.languages) {\n if (navigatorLang.includes(\"fr\")) {\n language = \"fr\";\n break;\n } else if (navigatorLang.includes(\"en\")) {\n language = \"en\";\n break;\n } else if (navigatorLang.includes(\"it\")) {\n language = \"it\";\n break;\n } else if (navigatorLang.includes(\"sl\")) {\n language = \"sl\";\n break;\n } else if (navigatorLang.includes(\"es\")) {\n language = \"es\";\n break;\n } else if (navigatorLang.includes(\"de\")) {\n language = \"de\";\n break;\n }\n }\n if (!language) {\n language = \"fr\";\n }\n } else {\n language = navigator.language;\n }\n }\n\n return language;\n}\n","export interface TranscriptParams {\n automation: string; // super, {date}, false \n ttsParams: TtsParams;\n modifyPodcast: ModifyPodcastConfig\n translationConfig: TranslationConfiguration;\n}\nexport interface TtsParams {\n super: string;\n style: string;\n pitch: number;\n speed: number;\n voice: string;\n language: string;\n}\n\nexport interface ModifyPodcastConfig {\n modifyChaptering: ModifyPodcastEnum;\n modifyKeywords: ModifyPodcastEnum;\n modifyDescription: ModifyPodcastEnum;\n createDescriptionUsingAi: boolean;\n wordsNumber: number;\n}\n\nexport enum ModifyPodcastEnum {\n SUPER = \"SUPER\",\n NO = \"NO\",\n IF_EMPTY = \"IF_EMPTY\",\n OVERWRITE=\"OVERWRITE\"\n}\n\nexport interface TranslationConfiguration {\n createTranslation:{[lang:string]: CreateTranslation};\n otherLanguage:CreateTranslation; //Cannot be ALWAYS\n}\n\nexport enum CreateTranslation {\n NEVER = \"NEVER\",\n ON_DEMAND = \"ON_DEMAND\",\n ALWAYS = \"ALWAYS\",\n SUPER=\"SUPER\"\n}\n\nexport function defaultTtsParams(): TtsParams {\n return {\n super: \"true\",\n style: \"neutral\",\n pitch: 0,\n speed: 1,\n voice: \"\",\n language: \"\"\n };\n}\n\nexport function defaultModifyPodcastConfig(): ModifyPodcastConfig {\n return {\n modifyChaptering: ModifyPodcastEnum.NO,\n modifyKeywords:ModifyPodcastEnum.NO,\n modifyDescription:ModifyPodcastEnum.NO,\n createDescriptionUsingAi: false,\n wordsNumber: 100,\n };\n}\n\n/**\n * Create a default object of TranslationConfiguration\n * @param isEmission Optional, if set and true changes default values\n * @returns The object\n */\nexport function defaultTranslationConfig(isEmission?: boolean): TranslationConfiguration {\n return {\n createTranslation:{},\n otherLanguage: isEmission ? CreateTranslation.SUPER : CreateTranslation.NEVER\n };\n}\n\nexport interface Voice {\n name: string;\n locale: string;\n displayName: string;\n gender: string;\n audioExample?: string;\n styles?: [];\n provider: string;\n}\nexport interface ProviderTts {\n name: string;\n fullName: string;\n logoPath: string;\n description: string;\n}\n","const SRT_PARSE_PATTERN = /(\\d+)\\n([\\d:,]+)\\s+-->\\s+([\\d:,]+)\\n([\\s\\S]*?(?=\\n{2}|$))/g;\n\ninterface ParsedStrSection {\n startTime: number;\n endTime: number;\n text: Array<string>;\n}\n\nfunction srtTimeToSeconds(time: string): number {\n const a = time.split(\":\");\n return +a[0] * 60 * 60 + +a[1] * 60 + parseFloat(a[2]);\n}\n\nexport function parseSrtTranscript(transcript: string): Array<ParsedStrSection> {\n const result: Array<ParsedStrSection> = [];\n transcript = transcript.replace(/\\r\\n|\\r|\\n|\\t/g, \"\\n\");\n let matches: RegExpExecArray;\n while ((matches = SRT_PARSE_PATTERN.exec(transcript)) != null) {\n const text = matches[4].split('\\n');\n result.push({\n startTime: srtTimeToSeconds(matches[2]),\n endTime: srtTimeToSeconds(matches[3]),\n text\n });\n }\n\n return result;\n}\n","import { getLanguage } from \"../../helper/language\";\nimport { transcriptionApi, TranslationState, type PodcastTranslationData } from \"../../api/transcriptionApi\";\nimport { CreateTranslation, defaultTranslationConfig, TranslationConfiguration } from \"../../stores/class/transcript/transcriptParams\";\nimport { podcastApi } from \"../../api/podcastApi\";\nimport { Emission } from \"../../stores/class/general/emission\";\nimport { OrganisationAttributes } from \"@/stores/class/general/organisation\";\nimport { organisationApi } from \"../../api/organisationApi\";\nimport { parseSrtTranscript } from \"@/helper/transcriptHelper\";\n\nconst DEFAULT_LANGUAGE = 'en';\n\ninterface RelevantLanguages {\n /** Language which already has a generated translation */\n ready: string;\n /** Language that is more relevant but its translation is not yet generated */\n available?: string;\n}\n\nenum Availability {\n Available,\n ToGenerate,\n Unavailable\n}\n\nexport const useTranslation = () => {\n\n /**\n * Convert SRT data to plain text\n * @param srt The data to convert\n * @returns The plain text\n */\n function convertSrtToPlainText(srt: string): string {\n const parsed = parseSrtTranscript(srt);\n return parsed.flatMap(p => p.text).join(' ');\n }\n\n function getApplicationConf(language: string, conf: TranslationConfiguration): CreateTranslation {\n if (language in conf.createTranslation) {\n return conf.createTranslation[language];\n }\n\n return conf.otherLanguage;\n }\n\n /**\n * Retrieve the translation configuration for a given language\n */\n function getConfigurationFor(language: string, emissionConf: TranslationConfiguration, orgaConf: TranslationConfiguration): CreateTranslation {\n const emissionSetting = getApplicationConf(language, emissionConf);\n if (emissionSetting === CreateTranslation.SUPER) {\n return getApplicationConf(language, orgaConf);\n }\n return emissionSetting;\n }\n\n function parseOrDefault(data: string|undefined, isEmission = false): TranslationConfiguration {\n return data ? JSON.parse(data) : defaultTranslationConfig(isEmission);\n }\n\n /**\n * Indicates wether the language is available (either because generated or\n * because it can be generated)\n * @param language The language to check for\n * @param emission *(optional)* If set, will also check in emission settings\n * @returns Whether the language is available or not\n */\n function getTranslationConfig(language: string, emission: Emission, orgaAttributes: OrganisationAttributes): CreateTranslation {\n const emissionTranslation = parseOrDefault(emission.annotations?.['translation-config'] as string|undefined, true);\n const orgTranslation = parseOrDefault(orgaAttributes?.['translation-config']);\n\n return getConfigurationFor(language, emissionTranslation, orgTranslation);\n }\n\n function getLanguageAvailability(language: string, emission: Emission, orgaAttributes: OrganisationAttributes, translationData: PodcastTranslationData): Availability {\n \n // 1. If language of podcast == language of browser, use that language\n if (language === translationData.nativeLanguage) {\n return Availability.Available;\n } else {\n const langConfig = getTranslationConfig(language, emission, orgaAttributes);\n\n // 2. If the language of the browser is available, use it\n if (langConfig === CreateTranslation.ALWAYS) {\n return Availability.Available;\n }\n // 2b. If the language is on demand, check if generated\n else if (langConfig === CreateTranslation.ON_DEMAND) {\n // Check if translation is already generated\n if (translationData.translations.find(t => t.language === language && t.state === TranslationState.FINISHED)) {\n return Availability.Available;\n } else {\n return Availability.ToGenerate;\n }\n }\n }\n\n return Availability.Unavailable;\n }\n\n /**\n * Get the relevant language for the current user\n * @param translationData The translation data for the podcast\n * @returns An object with properties 'ready' and 'available'\n * - *ready* Is the best language already generated\n * - *available* Is the best language not yet generated (or\n * undefined if *ready* is better)\n */\n async function getMostRelevantLanguage(translationData: PodcastTranslationData): Promise<RelevantLanguages> {\n const userLanguage = getLanguage(false);\n\n // If user language is native, do not go further\n if (userLanguage === translationData.nativeLanguage) {\n return { ready: userLanguage };\n }\n\n // Compute all available languages. Use language set on site, then\n // languages defined on browser, then default, and finally native language\n const languages: string[] = [];\n [userLanguage, ...navigator.languages, DEFAULT_LANGUAGE, translationData.nativeLanguage].forEach(l => {\n // For each language, if it is a variant (for example fr-CH), use\n // only the base language\n if (l.includes('-')) {\n l = l.split('-')[0];\n }\n\n if (!languages.includes(l)) {\n languages.push(l);\n }\n });\n\n const podcast = await podcastApi.get(translationData.podcastId);\n const emission = podcast.emission;\n const orgaAttributes = await organisationApi.getAttributes(podcast.organisation.id);\n\n let bestReady: string|null = null;\n let bestAvailable: string|null = null;\n\n for (const language of languages) {\n const avaibility = getLanguageAvailability(language, emission, orgaAttributes, translationData);\n if (avaibility === Availability.Available && bestReady === null) {\n bestReady = language;\n break;\n }\n\n if (avaibility === Availability.ToGenerate && bestAvailable === null) {\n bestAvailable = language;\n }\n }\n\n return { ready: bestReady, available: bestAvailable ?? undefined };\n }\n\n /**\n * Get the relevant translation for the current user\n * @param translationData The translation data for the podcast\n * @returns The translation\n */\n async function getMostRelevantTranslation(translationData: PodcastTranslationData): Promise<string>;\n /**\n * Get the relevant translation for the current user\n * @param podcastId The ID of the podcast\n * @returns The translation\n */\n async function getMostRelevantTranslation(podcastId: number): Promise<string>;\n\n /**\n * Get the relevant translation for the current user\n * @param translationData The translation data for the podcast\n * @returns The translation\n */\n async function getMostRelevantTranslation(data: PodcastTranslationData|number): Promise<string> {\n let translationData: PodcastTranslationData;\n if (typeof data === 'number') {\n translationData = await transcriptionApi.getTranslations(data);\n } else {\n translationData = data;\n }\n\n const { ready } = await getMostRelevantLanguage(translationData);\n\n // Finally get translation with chosen language\n const podcastId = translationData.podcastId;\n return await transcriptionApi.getTranslation(podcastId, ready);\n }\n\n return {\n convertSrtToPlainText,\n getMostRelevantLanguage,\n getMostRelevantTranslation,\n getTranslationConfig\n }\n};\n"],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useTranslation-DSdvTOFs.mjs","names":[],"sources":["../src/helper/language.ts","../src/stores/class/transcript/transcriptParams.ts","../src/components/composable/useTranslation.ts"],"sourcesContent":["/**\n * Utility function to retrieve most relevant language for the user\n * @params forceToKnown When set to true (default), will limit language to one\n * one of 6 known languages. When set to false, allow all\n * languages.\n * @returns The most relevant language\n */\nexport function getLanguage(forceToKnown = true): string {\n const nameEQ = \"octopus-language=\";\n const ca = document.cookie.split(\";\");\n\n let language = \"\";\n for (const valueCookie of ca) {\n let c = valueCookie;\n while (c.startsWith(\" \")) {\n c = c.substring(1, c.length);\n }\n if (0 === c.indexOf(nameEQ)) {\n language = c.substring(nameEQ.length, c.length);\n break;\n }\n }\n\n if (0 === language.length) {\n if (forceToKnown === true) {\n // Choose best avilable language\n for (const navigatorLang of navigator.languages) {\n if (navigatorLang.includes(\"fr\")) {\n language = \"fr\";\n break;\n } else if (navigatorLang.includes(\"en\")) {\n language = \"en\";\n break;\n } else if (navigatorLang.includes(\"it\")) {\n language = \"it\";\n break;\n } else if (navigatorLang.includes(\"sl\")) {\n language = \"sl\";\n break;\n } else if (navigatorLang.includes(\"es\")) {\n language = \"es\";\n break;\n } else if (navigatorLang.includes(\"de\")) {\n language = \"de\";\n break;\n }\n }\n if (!language) {\n language = \"fr\";\n }\n } else {\n language = navigator.language;\n }\n }\n\n return language;\n}\n","export interface TranscriptParams {\n automation: string; // super, {date}, false \n ttsParams: TtsParams;\n modifyPodcast: ModifyPodcastConfig\n translationConfig: TranslationConfiguration;\n}\nexport interface TtsParams {\n super: string;\n style: string;\n pitch: number;\n speed: number;\n voice: string;\n language: string;\n}\n\nexport interface ModifyPodcastConfig {\n modifyChaptering: ModifyPodcastEnum;\n modifyKeywords: ModifyPodcastEnum;\n modifyDescription: ModifyPodcastEnum;\n createDescriptionUsingAi: boolean;\n wordsNumber: number;\n}\n\nexport enum ModifyPodcastEnum {\n SUPER = \"SUPER\",\n NO = \"NO\",\n IF_EMPTY = \"IF_EMPTY\",\n OVERWRITE=\"OVERWRITE\"\n}\n\nexport interface TranslationConfiguration {\n createTranslation:{[lang:string]: CreateTranslation};\n otherLanguage:CreateTranslation; //Cannot be ALWAYS\n}\n\nexport enum CreateTranslation {\n NEVER = \"NEVER\",\n ON_DEMAND = \"ON_DEMAND\",\n ALWAYS = \"ALWAYS\",\n SUPER=\"SUPER\"\n}\n\nexport function defaultTtsParams(): TtsParams {\n return {\n super: \"true\",\n style: \"neutral\",\n pitch: 0,\n speed: 1,\n voice: \"\",\n language: \"\"\n };\n}\n\nexport function defaultModifyPodcastConfig(): ModifyPodcastConfig {\n return {\n modifyChaptering: ModifyPodcastEnum.NO,\n modifyKeywords:ModifyPodcastEnum.NO,\n modifyDescription:ModifyPodcastEnum.NO,\n createDescriptionUsingAi: false,\n wordsNumber: 100,\n };\n}\n\n/**\n * Create a default object of TranslationConfiguration\n * @param isEmission Optional, if set and true changes default values\n * @returns The object\n */\nexport function defaultTranslationConfig(isEmission?: boolean): TranslationConfiguration {\n return {\n createTranslation:{},\n otherLanguage: isEmission ? CreateTranslation.SUPER : CreateTranslation.NEVER\n };\n}\n\nexport interface Voice {\n name: string;\n locale: string;\n displayName: string;\n gender: string;\n audioExample?: string;\n styles?: [];\n provider: string;\n}\nexport interface ProviderTts {\n name: string;\n fullName: string;\n logoPath: string;\n description: string;\n}\n","import { getLanguage } from \"../../helper/language\";\nimport { transcriptionApi, TranslationState, type PodcastTranslationData } from \"../../api/transcriptionApi\";\nimport { CreateTranslation, defaultTranslationConfig, TranslationConfiguration } from \"../../stores/class/transcript/transcriptParams\";\nimport { podcastApi } from \"../../api/podcastApi\";\nimport { Emission } from \"../../stores/class/general/emission\";\nimport { OrganisationAttributes } from \"@/stores/class/general/organisation\";\nimport { organisationApi } from \"../../api/organisationApi\";\n\nconst DEFAULT_LANGUAGE = 'en';\n\ninterface RelevantLanguages {\n /** Language which already has a generated translation */\n ready: string;\n /** Language that is more relevant but its translation is not yet generated */\n available?: string;\n}\n\nenum Availability {\n Available,\n ToGenerate,\n Unavailable\n}\n\nexport const useTranslation = () => {\n\n /**\n * Convert SRT data to plain text\n * @param srt The data to convert\n * @returns The plain text\n */\n function convertSrtToPlainText(srt: string): string {\n const srtPattern =\n /\\d+\\n[\\d:,]+\\s+-{2}>\\s+[\\d:,]+\\n([\\s\\S]*?(?=\\n{2}|$))/gm;\n const result: Array<string> = [];\n let matches: string[];\n while ((matches = srtPattern.exec(srt)) != null) {\n result.push(matches[1] + \" \");\n }\n return result.join(\"\");\n }\n\n function getApplicationConf(language: string, conf: TranslationConfiguration): CreateTranslation {\n if (language in conf.createTranslation) {\n return conf.createTranslation[language];\n }\n\n return conf.otherLanguage;\n }\n\n /**\n * Retrieve the translation configuration for a given language\n */\n function getConfigurationFor(language: string, emissionConf: TranslationConfiguration, orgaConf: TranslationConfiguration): CreateTranslation {\n const emissionSetting = getApplicationConf(language, emissionConf);\n if (emissionSetting === CreateTranslation.SUPER) {\n return getApplicationConf(language, orgaConf);\n }\n return emissionSetting;\n }\n\n function parseOrDefault(data: string|undefined, isEmission = false): TranslationConfiguration {\n return data ? JSON.parse(data) : defaultTranslationConfig(isEmission);\n }\n\n /**\n * Indicates wether the language is available (either because generated or\n * because it can be generated)\n * @param language The language to check for\n * @param emission *(optional)* If set, will also check in emission settings\n * @returns Whether the language is available or not\n */\n function getTranslationConfig(language: string, emission: Emission, orgaAttributes: OrganisationAttributes): CreateTranslation {\n const emissionTranslation = parseOrDefault(emission.annotations?.['translation-config'] as string|undefined, true);\n const orgTranslation = parseOrDefault(orgaAttributes?.['translation-config']);\n\n return getConfigurationFor(language, emissionTranslation, orgTranslation);\n }\n\n function getLanguageAvailability(language: string, emission: Emission, orgaAttributes: OrganisationAttributes, translationData: PodcastTranslationData): Availability {\n \n // 1. If language of podcast == language of browser, use that language\n if (language === translationData.nativeLanguage) {\n return Availability.Available;\n } else {\n const langConfig = getTranslationConfig(language, emission, orgaAttributes);\n\n // 2. If the language of the browser is available, use it\n if (langConfig === CreateTranslation.ALWAYS) {\n return Availability.Available;\n }\n // 2b. If the language is on demand, check if generated\n else if (langConfig === CreateTranslation.ON_DEMAND) {\n // Check if translation is already generated\n if (translationData.translations.find(t => t.language === language && t.state === TranslationState.FINISHED)) {\n return Availability.Available;\n } else {\n return Availability.ToGenerate;\n }\n }\n }\n\n return Availability.Unavailable;\n }\n\n /**\n * Get the relevant language for the current user\n * @param translationData The translation data for the podcast\n * @returns An object with properties 'ready' and 'available'\n * - *ready* Is the best language already generated\n * - *available* Is the best language not yet generated (or\n * undefined if *ready* is better)\n */\n async function getMostRelevantLanguage(translationData: PodcastTranslationData): Promise<RelevantLanguages> {\n const userLanguage = getLanguage(false);\n\n // If user language is native, do not go further\n if (userLanguage === translationData.nativeLanguage) {\n return { ready: userLanguage };\n }\n\n // Compute all available languages. Use language set on site, then\n // languages defined on browser, then default, and finally native language\n const languages: string[] = [];\n [userLanguage, ...navigator.languages, DEFAULT_LANGUAGE, translationData.nativeLanguage].forEach(l => {\n // For each language, if it is a variant (for example fr-CH), use\n // only the base language\n if (l.includes('-')) {\n l = l.split('-')[0];\n }\n\n if (!languages.includes(l)) {\n languages.push(l);\n }\n });\n\n const podcast = await podcastApi.get(translationData.podcastId);\n const emission = podcast.emission;\n const orgaAttributes = await organisationApi.getAttributes(podcast.organisation.id);\n\n let bestReady: string|null = null;\n let bestAvailable: string|null = null;\n\n for (const language of languages) {\n const avaibility = getLanguageAvailability(language, emission, orgaAttributes, translationData);\n if (avaibility === Availability.Available && bestReady === null) {\n bestReady = language;\n break;\n }\n\n if (avaibility === Availability.ToGenerate && bestAvailable === null) {\n bestAvailable = language;\n }\n }\n\n return { ready: bestReady, available: bestAvailable ?? undefined };\n }\n\n /**\n * Get the relevant translation for the current user\n * @param translationData The translation data for the podcast\n * @returns The translation\n */\n async function getMostRelevantTranslation(translationData: PodcastTranslationData): Promise<string>;\n /**\n * Get the relevant translation for the current user\n * @param podcastId The ID of the podcast\n * @returns The translation\n */\n async function getMostRelevantTranslation(podcastId: number): Promise<string>;\n\n /**\n * Get the relevant translation for the current user\n * @param translationData The translation data for the podcast\n * @returns The translation\n */\n async function getMostRelevantTranslation(data: PodcastTranslationData|number): Promise<string> {\n let translationData: PodcastTranslationData;\n if (typeof data === 'number') {\n translationData = await transcriptionApi.getTranslations(data);\n } else {\n translationData = data;\n }\n\n const { ready } = await getMostRelevantLanguage(translationData);\n\n // Finally get translation with chosen language\n const podcastId = translationData.podcastId;\n return await transcriptionApi.getTranslation(podcastId, ready);\n }\n\n return {\n convertSrtToPlainText,\n getMostRelevantLanguage,\n getMostRelevantTranslation,\n getTranslationConfig\n }\n};\n"],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useTranslation-DZt6DB9m.mjs","names":[],"sources":["../src/helper/language.ts","../src/stores/class/transcript/transcriptParams.ts","../src/helper/transcriptHelper.ts","../src/components/composable/useTranslation.ts"],"sourcesContent":["/**\n * Utility function to retrieve most relevant language for the user\n * @params forceToKnown When set to true (default), will limit language to one\n * one of 6 known languages. When set to false, allow all\n * languages.\n * @returns The most relevant language\n */\nexport function getLanguage(forceToKnown = true): string {\n const nameEQ = \"octopus-language=\";\n const ca = document.cookie.split(\";\");\n\n let language = \"\";\n for (const valueCookie of ca) {\n let c = valueCookie;\n while (c.startsWith(\" \")) {\n c = c.substring(1, c.length);\n }\n if (0 === c.indexOf(nameEQ)) {\n language = c.substring(nameEQ.length, c.length);\n break;\n }\n }\n\n if (0 === language.length) {\n if (forceToKnown === true) {\n // Choose best avilable language\n for (const navigatorLang of navigator.languages) {\n if (navigatorLang.includes(\"fr\")) {\n language = \"fr\";\n break;\n } else if (navigatorLang.includes(\"en\")) {\n language = \"en\";\n break;\n } else if (navigatorLang.includes(\"it\")) {\n language = \"it\";\n break;\n } else if (navigatorLang.includes(\"sl\")) {\n language = \"sl\";\n break;\n } else if (navigatorLang.includes(\"es\")) {\n language = \"es\";\n break;\n } else if (navigatorLang.includes(\"de\")) {\n language = \"de\";\n break;\n }\n }\n if (!language) {\n language = \"fr\";\n }\n } else {\n language = navigator.language;\n }\n }\n\n return language;\n}\n","export interface TranscriptParams {\n automation: string; // super, {date}, false \n ttsParams: TtsParams;\n modifyPodcast: ModifyPodcastConfig\n translationConfig: TranslationConfiguration;\n}\nexport interface TtsParams {\n super: string;\n style: string;\n pitch: number;\n speed: number;\n voice: string;\n language: string;\n}\n\nexport interface ModifyPodcastConfig {\n modifyChaptering: ModifyPodcastEnum;\n modifyKeywords: ModifyPodcastEnum;\n modifyDescription: ModifyPodcastEnum;\n createDescriptionUsingAi: boolean;\n wordsNumber: number;\n}\n\nexport enum ModifyPodcastEnum {\n SUPER = \"SUPER\",\n NO = \"NO\",\n IF_EMPTY = \"IF_EMPTY\",\n OVERWRITE=\"OVERWRITE\"\n}\n\nexport interface TranslationConfiguration {\n createTranslation:{[lang:string]: CreateTranslation};\n otherLanguage:CreateTranslation; //Cannot be ALWAYS\n}\n\nexport enum CreateTranslation {\n NEVER = \"NEVER\",\n ON_DEMAND = \"ON_DEMAND\",\n ALWAYS = \"ALWAYS\",\n SUPER=\"SUPER\"\n}\n\nexport function defaultTtsParams(): TtsParams {\n return {\n super: \"true\",\n style: \"neutral\",\n pitch: 0,\n speed: 1,\n voice: \"\",\n language: \"\"\n };\n}\n\nexport function defaultModifyPodcastConfig(): ModifyPodcastConfig {\n return {\n modifyChaptering: ModifyPodcastEnum.NO,\n modifyKeywords:ModifyPodcastEnum.NO,\n modifyDescription:ModifyPodcastEnum.NO,\n createDescriptionUsingAi: false,\n wordsNumber: 100,\n };\n}\n\n/**\n * Create a default object of TranslationConfiguration\n * @param isEmission Optional, if set and true changes default values\n * @returns The object\n */\nexport function defaultTranslationConfig(isEmission?: boolean): TranslationConfiguration {\n return {\n createTranslation:{},\n otherLanguage: isEmission ? CreateTranslation.SUPER : CreateTranslation.NEVER\n };\n}\n\nexport interface Voice {\n name: string;\n locale: string;\n displayName: string;\n gender: string;\n audioExample?: string;\n styles?: [];\n provider: string;\n}\nexport interface ProviderTts {\n name: string;\n fullName: string;\n logoPath: string;\n description: string;\n}\n","const SRT_PARSE_PATTERN = /(\\d+)\\n([\\d:,]+)\\s+-->\\s+([\\d:,]+)\\n([\\s\\S]*?)(?=\\n{2})/gm;\n\ninterface ParsedStrSection {\n startTime: number;\n endTime: number;\n text: Array<string>;\n}\n\nfunction srtTimeToSeconds(time: string): number {\n const a = time.split(\":\");\n return +a[0] * 60 * 60 + +a[1] * 60 + parseFloat(a[2]);\n}\n\nexport function parseSrtTranscript(transcript: string): Array<ParsedStrSection> {\n const result: Array<ParsedStrSection> = [];\n transcript = transcript.replace(/\\r\\n|\\r|\\n|\\t/g, \"\\n\");\n let matches: RegExpExecArray;\n while ((matches = SRT_PARSE_PATTERN.exec(transcript)) != null) {\n const text = matches[4].split('\\n');\n result.push({\n startTime: srtTimeToSeconds(matches[2]),\n endTime: srtTimeToSeconds(matches[3]),\n text\n });\n }\n\n return result;\n}\n","import { getLanguage } from \"../../helper/language\";\nimport { transcriptionApi, TranslationState, type PodcastTranslationData } from \"../../api/transcriptionApi\";\nimport { CreateTranslation, defaultTranslationConfig, TranslationConfiguration } from \"../../stores/class/transcript/transcriptParams\";\nimport { podcastApi } from \"../../api/podcastApi\";\nimport { Emission } from \"../../stores/class/general/emission\";\nimport { OrganisationAttributes } from \"@/stores/class/general/organisation\";\nimport { organisationApi } from \"../../api/organisationApi\";\nimport { parseSrtTranscript } from \"@/helper/transcriptHelper\";\n\nconst DEFAULT_LANGUAGE = 'en';\n\ninterface RelevantLanguages {\n /** Language which already has a generated translation */\n ready: string;\n /** Language that is more relevant but its translation is not yet generated */\n available?: string;\n}\n\nenum Availability {\n Available,\n ToGenerate,\n Unavailable\n}\n\nexport const useTranslation = () => {\n\n /**\n * Convert SRT data to plain text\n * @param srt The data to convert\n * @returns The plain text\n */\n function convertSrtToPlainText(srt: string): string {\n const parsed = parseSrtTranscript(srt);\n return parsed.flatMap(p => p.text).join(' ');\n }\n\n function getApplicationConf(language: string, conf: TranslationConfiguration): CreateTranslation {\n if (language in conf.createTranslation) {\n return conf.createTranslation[language];\n }\n\n return conf.otherLanguage;\n }\n\n /**\n * Retrieve the translation configuration for a given language\n */\n function getConfigurationFor(language: string, emissionConf: TranslationConfiguration, orgaConf: TranslationConfiguration): CreateTranslation {\n const emissionSetting = getApplicationConf(language, emissionConf);\n if (emissionSetting === CreateTranslation.SUPER) {\n return getApplicationConf(language, orgaConf);\n }\n return emissionSetting;\n }\n\n function parseOrDefault(data: string|undefined, isEmission = false): TranslationConfiguration {\n return data ? JSON.parse(data) : defaultTranslationConfig(isEmission);\n }\n\n /**\n * Indicates wether the language is available (either because generated or\n * because it can be generated)\n * @param language The language to check for\n * @param emission *(optional)* If set, will also check in emission settings\n * @returns Whether the language is available or not\n */\n function getTranslationConfig(language: string, emission: Emission, orgaAttributes: OrganisationAttributes): CreateTranslation {\n const emissionTranslation = parseOrDefault(emission.annotations?.['translation-config'] as string|undefined, true);\n const orgTranslation = parseOrDefault(orgaAttributes?.['translation-config']);\n\n return getConfigurationFor(language, emissionTranslation, orgTranslation);\n }\n\n function getLanguageAvailability(language: string, emission: Emission, orgaAttributes: OrganisationAttributes, translationData: PodcastTranslationData): Availability {\n \n // 1. If language of podcast == language of browser, use that language\n if (language === translationData.nativeLanguage) {\n return Availability.Available;\n } else {\n const langConfig = getTranslationConfig(language, emission, orgaAttributes);\n\n // 2. If the language of the browser is available, use it\n if (langConfig === CreateTranslation.ALWAYS) {\n return Availability.Available;\n }\n // 2b. If the language is on demand, check if generated\n else if (langConfig === CreateTranslation.ON_DEMAND) {\n // Check if translation is already generated\n if (translationData.translations.find(t => t.language === language && t.state === TranslationState.FINISHED)) {\n return Availability.Available;\n } else {\n return Availability.ToGenerate;\n }\n }\n }\n\n return Availability.Unavailable;\n }\n\n /**\n * Get the relevant language for the current user\n * @param translationData The translation data for the podcast\n * @returns An object with properties 'ready' and 'available'\n * - *ready* Is the best language already generated\n * - *available* Is the best language not yet generated (or\n * undefined if *ready* is better)\n */\n async function getMostRelevantLanguage(translationData: PodcastTranslationData): Promise<RelevantLanguages> {\n const userLanguage = getLanguage(false);\n\n // If user language is native, do not go further\n if (userLanguage === translationData.nativeLanguage) {\n return { ready: userLanguage };\n }\n\n // Compute all available languages. Use language set on site, then\n // languages defined on browser, then default, and finally native language\n const languages: string[] = [];\n [userLanguage, ...navigator.languages, DEFAULT_LANGUAGE, translationData.nativeLanguage].forEach(l => {\n // For each language, if it is a variant (for example fr-CH), use\n // only the base language\n if (l.includes('-')) {\n l = l.split('-')[0];\n }\n\n if (!languages.includes(l)) {\n languages.push(l);\n }\n });\n\n const podcast = await podcastApi.get(translationData.podcastId);\n const emission = podcast.emission;\n const orgaAttributes = await organisationApi.getAttributes(podcast.organisation.id);\n\n let bestReady: string|null = null;\n let bestAvailable: string|null = null;\n\n for (const language of languages) {\n const avaibility = getLanguageAvailability(language, emission, orgaAttributes, translationData);\n if (avaibility === Availability.Available && bestReady === null) {\n bestReady = language;\n break;\n }\n\n if (avaibility === Availability.ToGenerate && bestAvailable === null) {\n bestAvailable = language;\n }\n }\n\n return { ready: bestReady, available: bestAvailable ?? undefined };\n }\n\n /**\n * Get the relevant translation for the current user\n * @param translationData The translation data for the podcast\n * @returns The translation\n */\n async function getMostRelevantTranslation(translationData: PodcastTranslationData): Promise<string>;\n /**\n * Get the relevant translation for the current user\n * @param podcastId The ID of the podcast\n * @returns The translation\n */\n async function getMostRelevantTranslation(podcastId: number): Promise<string>;\n\n /**\n * Get the relevant translation for the current user\n * @param translationData The translation data for the podcast\n * @returns The translation\n */\n async function getMostRelevantTranslation(data: PodcastTranslationData|number): Promise<string> {\n let translationData: PodcastTranslationData;\n if (typeof data === 'number') {\n translationData = await transcriptionApi.getTranslations(data);\n } else {\n translationData = data;\n }\n\n const { ready } = await getMostRelevantLanguage(translationData);\n\n // Finally get translation with chosen language\n const podcastId = translationData.podcastId;\n return await transcriptionApi.getTranslation(podcastId, ready);\n }\n\n return {\n convertSrtToPlainText,\n getMostRelevantLanguage,\n getMostRelevantTranslation,\n getTranslationConfig\n }\n};\n"],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useTranslation-DbX-Mg6G.mjs","names":[],"sources":["../src/helper/language.ts","../src/stores/class/transcript/transcriptParams.ts","../src/components/composable/useTranslation.ts"],"sourcesContent":["/**\n * Utility function to retrieve most relevant language for the user\n * @params forceToKnown When set to true (default), will limit language to one\n * one of 6 known languages. When set to false, allow all\n * languages.\n * @returns The most relevant language\n */\nexport function getLanguage(forceToKnown = true): string {\n const nameEQ = \"octopus-language=\";\n const ca = document.cookie.split(\";\");\n\n let language = \"\";\n for (const valueCookie of ca) {\n let c = valueCookie;\n while (c.startsWith(\" \")) {\n c = c.substring(1, c.length);\n }\n if (0 === c.indexOf(nameEQ)) {\n language = c.substring(nameEQ.length, c.length);\n break;\n }\n }\n\n if (0 === language.length) {\n if (forceToKnown === true) {\n // Choose best avilable language\n for (const navigatorLang of navigator.languages) {\n if (navigatorLang.includes(\"fr\")) {\n language = \"fr\";\n break;\n } else if (navigatorLang.includes(\"en\")) {\n language = \"en\";\n break;\n } else if (navigatorLang.includes(\"it\")) {\n language = \"it\";\n break;\n } else if (navigatorLang.includes(\"sl\")) {\n language = \"sl\";\n break;\n } else if (navigatorLang.includes(\"es\")) {\n language = \"es\";\n break;\n } else if (navigatorLang.includes(\"de\")) {\n language = \"de\";\n break;\n }\n }\n if (!language) {\n language = \"fr\";\n }\n } else {\n language = navigator.language;\n }\n }\n\n return language;\n}\n","export interface TranscriptParams {\n automation: string; // super, {date}, false \n ttsParams: TtsParams;\n modifyPodcast: ModifyPodcastConfig\n translationConfig: TranslationConfiguration;\n}\nexport interface TtsParams {\n super: string;\n style: string;\n pitch: number;\n speed: number;\n voice: string;\n language: string;\n}\n\nexport interface ModifyPodcastConfig {\n modifyChaptering: ModifyPodcastEnum;\n modifyKeywords: ModifyPodcastEnum;\n modifyDescription: ModifyPodcastEnum;\n createDescriptionUsingAi: boolean;\n wordsNumber: number;\n}\n\nexport enum ModifyPodcastEnum {\n SUPER = \"SUPER\",\n NO = \"NO\",\n IF_EMPTY = \"IF_EMPTY\",\n OVERWRITE=\"OVERWRITE\"\n}\n\nexport interface TranslationConfiguration {\n createTranslation:{[lang:string]: CreateTranslation};\n otherLanguage:CreateTranslation; //Cannot be ALWAYS\n}\n\nexport enum CreateTranslation {\n NEVER = \"NEVER\",\n ON_DEMAND = \"ON_DEMAND\",\n ALWAYS = \"ALWAYS\",\n SUPER=\"SUPER\"\n}\n\nexport function defaultTtsParams(): TtsParams {\n return {\n super: \"true\",\n style: \"neutral\",\n pitch: 0,\n speed: 1,\n voice: \"\",\n language: \"\"\n };\n}\n\nexport function defaultModifyPodcastConfig(): ModifyPodcastConfig {\n return {\n modifyChaptering: ModifyPodcastEnum.NO,\n modifyKeywords:ModifyPodcastEnum.NO,\n modifyDescription:ModifyPodcastEnum.NO,\n createDescriptionUsingAi: false,\n wordsNumber: 100,\n };\n}\n\n/**\n * Create a default object of TranslationConfiguration\n * @param isEmission Optional, if set and true changes default values\n * @returns The object\n */\nexport function defaultTranslationConfig(isEmission?: boolean): TranslationConfiguration {\n return {\n createTranslation:{},\n otherLanguage: isEmission ? CreateTranslation.SUPER : CreateTranslation.NEVER\n };\n}\n\nexport interface Voice {\n name: string;\n locale: string;\n displayName: string;\n gender: string;\n audioExample?: string;\n styles?: [];\n provider: string;\n}\nexport interface ProviderTts {\n name: string;\n fullName: string;\n logoPath: string;\n description: string;\n}\n","import { getLanguage } from \"../../helper/language\";\nimport { transcriptionApi, TranslationState, type PodcastTranslationData } from \"../../api/transcriptionApi\";\nimport { CreateTranslation, defaultTranslationConfig, TranslationConfiguration } from \"../../stores/class/transcript/transcriptParams\";\nimport { podcastApi } from \"../../api/podcastApi\";\nimport { Emission } from \"../../stores/class/general/emission\";\nimport { OrganisationAttributes } from \"@/stores/class/general/organisation\";\nimport { organisationApi } from \"../../api/organisationApi\";\n\nconst DEFAULT_LANGUAGE = 'en';\n\ninterface RelevantLanguages {\n /** Language which already has a generated translation */\n ready: string;\n /** Language that is more relevant but its translation is not yet generated */\n available?: string;\n}\n\nenum Availability {\n Available,\n ToGenerate,\n Unavailable\n}\n\nexport const useTranslation = () => {\n\n /**\n * Convert SRT data to plain text\n * @param srt The data to convert\n * @returns The plain text\n */\n function convertSrtToPlainText(srt: string): string {\n const srtPattern =\n /\\d+\\n[\\d:,]+\\s+-{2}>\\s+[\\d:,]+\\n([\\s\\S]*?(?=\\n{2}|$))/gm;\n const result: Array<string> = [];\n let matches: string[];\n while ((matches = srtPattern.exec(srt)) != null) {\n result.push(matches[1] + \" \");\n }\n return result.join(\"\");\n }\n\n function getApplicationConf(language: string, conf: TranslationConfiguration): CreateTranslation {\n if (language in conf.createTranslation) {\n return conf.createTranslation[language];\n }\n\n return conf.otherLanguage;\n }\n\n /**\n * Retrieve the translation configuration for a given language\n */\n function getConfigurationFor(language: string, emissionConf: TranslationConfiguration, orgaConf: TranslationConfiguration): CreateTranslation {\n const emissionSetting = getApplicationConf(language, emissionConf);\n if (emissionSetting === CreateTranslation.SUPER) {\n return getApplicationConf(language, orgaConf);\n }\n return emissionSetting;\n }\n\n function parseOrDefault(data: string|undefined, isEmission = false): TranslationConfiguration {\n return data ? JSON.parse(data) : defaultTranslationConfig(isEmission);\n }\n\n /**\n * Indicates wether the language is available (either because generated or\n * because it can be generated)\n * @param language The language to check for\n * @param emission *(optional)* If set, will also check in emission settings\n * @returns Whether the language is available or not\n */\n function getTranslationConfig(language: string, emission: Emission, orgaAttributes: OrganisationAttributes): CreateTranslation {\n const emissionTranslation = parseOrDefault(emission.annotations?.['translation-config'] as string|undefined, true);\n const orgTranslation = parseOrDefault(orgaAttributes?.['translation-config']);\n\n return getConfigurationFor(language, emissionTranslation, orgTranslation);\n }\n\n function getLanguageAvailability(language: string, emission: Emission, orgaAttributes: OrganisationAttributes, translationData: PodcastTranslationData): Availability {\n \n // 1. If language of podcast == language of browser, use that language\n if (language === translationData.nativeLanguage) {\n return Availability.Available;\n } else {\n const langConfig = getTranslationConfig(language, emission, orgaAttributes);\n\n // 2. If the language of the browser is available, use it\n if (langConfig === CreateTranslation.ALWAYS) {\n return Availability.Available;\n }\n // 2b. If the language is on demand, check if generated\n else if (langConfig === CreateTranslation.ON_DEMAND) {\n // Check if translation is already generated\n if (translationData.translations.find(t => t.language === language && t.state === TranslationState.FINISHED)) {\n return Availability.Available;\n } else {\n return Availability.ToGenerate;\n }\n }\n }\n\n return Availability.Unavailable;\n }\n\n /**\n * Get the relevant language for the current user\n * @param translationData The translation data for the podcast\n * @returns An object with properties 'ready' and 'available'\n * - *ready* Is the best language already generated\n * - *available* Is the best language not yet generated (or\n * undefined if *ready* is better)\n */\n async function getMostRelevantLanguage(translationData: PodcastTranslationData): Promise<RelevantLanguages> {\n const userLanguage = getLanguage(false);\n\n // If user language is native, do not go further\n if (userLanguage === translationData.nativeLanguage) {\n return { ready: userLanguage };\n }\n\n // Compute all available languages. Use language set on site, then\n // languages defined on browser, then default, and finally native language\n const languages: string[] = [];\n [userLanguage, ...navigator.languages, DEFAULT_LANGUAGE, translationData.nativeLanguage].forEach(l => {\n // For each language, if it is a variant (for example fr-CH), use\n // only the base language\n if (l.includes('-')) {\n l = l.split('-')[0];\n }\n\n if (!languages.includes(l)) {\n languages.push(l);\n }\n });\n\n const podcast = await podcastApi.get(translationData.podcastId);\n const emission = podcast.emission;\n const orgaAttributes = await organisationApi.getAttributes(podcast.organisation.id);\n\n let bestReady: string|null = null;\n let bestAvailable: string|null = null;\n\n for (const language of languages) {\n const avaibility = getLanguageAvailability(language, emission, orgaAttributes, translationData);\n if (avaibility === Availability.Available && bestReady === null) {\n bestReady = language;\n break;\n }\n\n if (avaibility === Availability.ToGenerate && bestAvailable === null) {\n bestAvailable = language;\n }\n }\n\n return { ready: bestReady, available: bestAvailable ?? undefined };\n }\n\n /**\n * Get the relevant translation for the current user\n * @param translationData The translation data for the podcast\n * @returns The translation\n */\n async function getMostRelevantTranslation(translationData: PodcastTranslationData): Promise<string>;\n /**\n * Get the relevant translation for the current user\n * @param podcastId The ID of the podcast\n * @returns The translation\n */\n async function getMostRelevantTranslation(podcastId: number): Promise<string>;\n\n /**\n * Get the relevant translation for the current user\n * @param translationData The translation data for the podcast\n * @returns The translation\n */\n async function getMostRelevantTranslation(data: PodcastTranslationData|number): Promise<string> {\n let translationData: PodcastTranslationData;\n if (typeof data === 'number') {\n translationData = await transcriptionApi.getTranslations(data);\n } else {\n translationData = data;\n }\n\n const { ready } = await getMostRelevantLanguage(translationData);\n\n // Finally get translation with chosen language\n const podcastId = translationData.podcastId;\n return await transcriptionApi.getTranslation(podcastId, ready);\n }\n\n return {\n convertSrtToPlainText,\n getMostRelevantLanguage,\n getMostRelevantTranslation,\n getTranslationConfig\n }\n};\n"],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useTranslation-DboWA-9y.mjs","names":[],"sources":["../src/helper/language.ts","../src/stores/class/transcript/transcriptParams.ts","../src/helper/transcriptHelper.ts","../src/components/composable/useTranslation.ts"],"sourcesContent":["/**\n * Utility function to retrieve most relevant language for the user\n * @params forceToKnown When set to true (default), will limit language to one\n * one of 6 known languages. When set to false, allow all\n * languages.\n * @returns The most relevant language\n */\nexport function getLanguage(forceToKnown = true): string {\n const nameEQ = \"octopus-language=\";\n const ca = document.cookie.split(\";\");\n\n let language = \"\";\n for (const valueCookie of ca) {\n let c = valueCookie;\n while (c.startsWith(\" \")) {\n c = c.substring(1, c.length);\n }\n if (0 === c.indexOf(nameEQ)) {\n language = c.substring(nameEQ.length, c.length);\n break;\n }\n }\n\n if (0 === language.length) {\n if (forceToKnown === true) {\n // Choose best avilable language\n for (const navigatorLang of navigator.languages) {\n if (navigatorLang.includes(\"fr\")) {\n language = \"fr\";\n break;\n } else if (navigatorLang.includes(\"en\")) {\n language = \"en\";\n break;\n } else if (navigatorLang.includes(\"it\")) {\n language = \"it\";\n break;\n } else if (navigatorLang.includes(\"sl\")) {\n language = \"sl\";\n break;\n } else if (navigatorLang.includes(\"es\")) {\n language = \"es\";\n break;\n } else if (navigatorLang.includes(\"de\")) {\n language = \"de\";\n break;\n }\n }\n if (!language) {\n language = \"fr\";\n }\n } else {\n language = navigator.language;\n }\n }\n\n return language;\n}\n","export interface TranscriptParams {\n automation: string; // super, {date}, false \n ttsParams: TtsParams;\n modifyPodcast: ModifyPodcastConfig\n translationConfig: TranslationConfiguration;\n}\nexport interface TtsParams {\n super: string;\n style: string;\n pitch: number;\n speed: number;\n voice: string;\n language: string;\n}\n\nexport interface ModifyPodcastConfig {\n modifyChaptering: ModifyPodcastEnum;\n modifyKeywords: ModifyPodcastEnum;\n modifyDescription: ModifyPodcastEnum;\n createDescriptionUsingAi: boolean;\n wordsNumber: number;\n}\n\nexport enum ModifyPodcastEnum {\n SUPER = \"SUPER\",\n NO = \"NO\",\n IF_EMPTY = \"IF_EMPTY\",\n OVERWRITE=\"OVERWRITE\"\n}\n\nexport interface TranslationConfiguration {\n createTranslation:{[lang:string]: CreateTranslation};\n otherLanguage:CreateTranslation; //Cannot be ALWAYS\n}\n\nexport enum CreateTranslation {\n NEVER = \"NEVER\",\n ON_DEMAND = \"ON_DEMAND\",\n ALWAYS = \"ALWAYS\",\n SUPER=\"SUPER\"\n}\n\nexport function defaultTtsParams(): TtsParams {\n return {\n super: \"true\",\n style: \"neutral\",\n pitch: 0,\n speed: 1,\n voice: \"\",\n language: \"\"\n };\n}\n\nexport function defaultModifyPodcastConfig(): ModifyPodcastConfig {\n return {\n modifyChaptering: ModifyPodcastEnum.NO,\n modifyKeywords:ModifyPodcastEnum.NO,\n modifyDescription:ModifyPodcastEnum.NO,\n createDescriptionUsingAi: false,\n wordsNumber: 100,\n };\n}\n\n/**\n * Create a default object of TranslationConfiguration\n * @param isEmission Optional, if set and true changes default values\n * @returns The object\n */\nexport function defaultTranslationConfig(isEmission?: boolean): TranslationConfiguration {\n return {\n createTranslation:{},\n otherLanguage: isEmission ? CreateTranslation.SUPER : CreateTranslation.NEVER\n };\n}\n\nexport interface Voice {\n name: string;\n locale: string;\n displayName: string;\n gender: string;\n audioExample?: string;\n styles?: [];\n provider: string;\n}\nexport interface ProviderTts {\n name: string;\n fullName: string;\n logoPath: string;\n description: string;\n}\n","const SRT_PARSE_PATTERN = /(\\d+)\\n([\\d:,]+)\\s+-->\\s+([\\d:,]+)\\n([\\s\\S]*?(?=\\n{2}|$))/g;\n\ninterface ParsedStrSection {\n startTime: number;\n endTime: number;\n text: Array<string>;\n}\n\nfunction srtTimeToSeconds(time: string): number {\n const a = time.replace(',', '.').split(\":\").map(parseFloat);\n return a[0] * 60 * 60 + a[1] * 60 + a[2];\n}\n\nexport function parseSrtTranscript(transcript: string): Array<ParsedStrSection> {\n const result: Array<ParsedStrSection> = [];\n transcript = transcript.replace(/\\r\\n|\\r|\\n|\\t/g, \"\\n\");\n let matches: RegExpExecArray;\n while ((matches = SRT_PARSE_PATTERN.exec(transcript)) != null) {\n const text = matches[4].split('\\n');\n result.push({\n startTime: srtTimeToSeconds(matches[2]),\n endTime: srtTimeToSeconds(matches[3]),\n text\n });\n }\n\n return result;\n}\n","import { getLanguage } from \"../../helper/language\";\nimport { transcriptionApi, TranslationState, type PodcastTranslationData } from \"../../api/transcriptionApi\";\nimport { CreateTranslation, defaultTranslationConfig, TranslationConfiguration } from \"../../stores/class/transcript/transcriptParams\";\nimport { podcastApi } from \"../../api/podcastApi\";\nimport { Emission } from \"../../stores/class/general/emission\";\nimport { OrganisationAttributes } from \"@/stores/class/general/organisation\";\nimport { organisationApi } from \"../../api/organisationApi\";\nimport { parseSrtTranscript } from \"@/helper/transcriptHelper\";\n\nconst DEFAULT_LANGUAGE = 'en';\n\ninterface RelevantLanguages {\n /** Language which already has a generated translation */\n ready: string;\n /** Language that is more relevant but its translation is not yet generated */\n available?: string;\n}\n\nenum Availability {\n Available,\n ToGenerate,\n Unavailable\n}\n\nexport const useTranslation = () => {\n\n /**\n * Convert SRT data to plain text\n * @param srt The data to convert\n * @returns The plain text\n */\n function convertSrtToPlainText(srt: string): string {\n const parsed = parseSrtTranscript(srt);\n return parsed.flatMap(p => p.text).join(' ');\n }\n\n function getApplicationConf(language: string, conf: TranslationConfiguration): CreateTranslation {\n if (language in conf.createTranslation) {\n return conf.createTranslation[language];\n }\n\n return conf.otherLanguage;\n }\n\n /**\n * Retrieve the translation configuration for a given language\n */\n function getConfigurationFor(language: string, emissionConf: TranslationConfiguration, orgaConf: TranslationConfiguration): CreateTranslation {\n const emissionSetting = getApplicationConf(language, emissionConf);\n if (emissionSetting === CreateTranslation.SUPER) {\n return getApplicationConf(language, orgaConf);\n }\n return emissionSetting;\n }\n\n function parseOrDefault(data: string|undefined, isEmission = false): TranslationConfiguration {\n return data ? JSON.parse(data) : defaultTranslationConfig(isEmission);\n }\n\n /**\n * Indicates wether the language is available (either because generated or\n * because it can be generated)\n * @param language The language to check for\n * @param emission *(optional)* If set, will also check in emission settings\n * @returns Whether the language is available or not\n */\n function getTranslationConfig(language: string, emission: Emission, orgaAttributes: OrganisationAttributes): CreateTranslation {\n const emissionTranslation = parseOrDefault(emission.annotations?.['translation-config'] as string|undefined, true);\n const orgTranslation = parseOrDefault(orgaAttributes?.['translation-config']);\n\n return getConfigurationFor(language, emissionTranslation, orgTranslation);\n }\n\n function getLanguageAvailability(language: string, emission: Emission, orgaAttributes: OrganisationAttributes, translationData: PodcastTranslationData): Availability {\n \n // 1. If language of podcast == language of browser, use that language\n if (language === translationData.nativeLanguage) {\n return Availability.Available;\n } else {\n const langConfig = getTranslationConfig(language, emission, orgaAttributes);\n\n // 2. If the language of the browser is available, use it\n if (langConfig === CreateTranslation.ALWAYS) {\n return Availability.Available;\n }\n // 2b. If the language is on demand, check if generated\n else if (langConfig === CreateTranslation.ON_DEMAND) {\n // Check if translation is already generated\n if (translationData.translations.find(t => t.language === language && t.state === TranslationState.FINISHED)) {\n return Availability.Available;\n } else {\n return Availability.ToGenerate;\n }\n }\n }\n\n return Availability.Unavailable;\n }\n\n /**\n * Get the relevant language for the current user\n * @param translationData The translation data for the podcast\n * @returns An object with properties 'ready' and 'available'\n * - *ready* Is the best language already generated\n * - *available* Is the best language not yet generated (or\n * undefined if *ready* is better)\n */\n async function getMostRelevantLanguage(translationData: PodcastTranslationData): Promise<RelevantLanguages> {\n const userLanguage = getLanguage(false);\n\n // If user language is native, do not go further\n if (userLanguage === translationData.nativeLanguage) {\n return { ready: userLanguage };\n }\n\n // Compute all available languages. Use language set on site, then\n // languages defined on browser, then default, and finally native language\n const languages: string[] = [];\n [userLanguage, ...navigator.languages, DEFAULT_LANGUAGE, translationData.nativeLanguage].forEach(l => {\n // For each language, if it is a variant (for example fr-CH), use\n // only the base language\n if (l.includes('-')) {\n l = l.split('-')[0];\n }\n\n if (!languages.includes(l)) {\n languages.push(l);\n }\n });\n\n const podcast = await podcastApi.get(translationData.podcastId);\n const emission = podcast.emission;\n const orgaAttributes = await organisationApi.getAttributes(podcast.organisation.id);\n\n let bestReady: string|null = null;\n let bestAvailable: string|null = null;\n\n for (const language of languages) {\n const avaibility = getLanguageAvailability(language, emission, orgaAttributes, translationData);\n if (avaibility === Availability.Available && bestReady === null) {\n bestReady = language;\n break;\n }\n\n if (avaibility === Availability.ToGenerate && bestAvailable === null) {\n bestAvailable = language;\n }\n }\n\n return { ready: bestReady, available: bestAvailable ?? undefined };\n }\n\n /**\n * Get the relevant translation for the current user\n * @param translationData The translation data for the podcast\n * @returns The translation\n */\n async function getMostRelevantTranslation(translationData: PodcastTranslationData): Promise<string>;\n /**\n * Get the relevant translation for the current user\n * @param podcastId The ID of the podcast\n * @returns The translation\n */\n async function getMostRelevantTranslation(podcastId: number): Promise<string>;\n\n /**\n * Get the relevant translation for the current user\n * @param translationData The translation data for the podcast\n * @returns The translation\n */\n async function getMostRelevantTranslation(data: PodcastTranslationData|number): Promise<string> {\n let translationData: PodcastTranslationData;\n if (typeof data === 'number') {\n translationData = await transcriptionApi.getTranslations(data);\n } else {\n translationData = data;\n }\n\n const { ready } = await getMostRelevantLanguage(translationData);\n\n // Finally get translation with chosen language\n const podcastId = translationData.podcastId;\n return await transcriptionApi.getTranslation(podcastId, ready);\n }\n\n return {\n convertSrtToPlainText,\n getMostRelevantLanguage,\n getMostRelevantTranslation,\n getTranslationConfig\n }\n};\n"],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useTranslation-DwVIaTRm.mjs","names":[],"sources":["../src/helper/language.ts","../src/stores/class/transcript/transcriptParams.ts","../src/helper/transcriptHelper.ts","../src/components/composable/useTranslation.ts"],"sourcesContent":["/**\n * Utility function to retrieve most relevant language for the user\n * @params forceToKnown When set to true (default), will limit language to one\n * one of 6 known languages. When set to false, allow all\n * languages.\n * @returns The most relevant language\n */\nexport function getLanguage(forceToKnown = true): string {\n const nameEQ = \"octopus-language=\";\n const ca = document.cookie.split(\";\");\n\n let language = \"\";\n for (const valueCookie of ca) {\n let c = valueCookie;\n while (c.startsWith(\" \")) {\n c = c.substring(1, c.length);\n }\n if (0 === c.indexOf(nameEQ)) {\n language = c.substring(nameEQ.length, c.length);\n break;\n }\n }\n\n if (0 === language.length) {\n if (forceToKnown === true) {\n // Choose best avilable language\n for (const navigatorLang of navigator.languages) {\n if (navigatorLang.includes(\"fr\")) {\n language = \"fr\";\n break;\n } else if (navigatorLang.includes(\"en\")) {\n language = \"en\";\n break;\n } else if (navigatorLang.includes(\"it\")) {\n language = \"it\";\n break;\n } else if (navigatorLang.includes(\"sl\")) {\n language = \"sl\";\n break;\n } else if (navigatorLang.includes(\"es\")) {\n language = \"es\";\n break;\n } else if (navigatorLang.includes(\"de\")) {\n language = \"de\";\n break;\n }\n }\n if (!language) {\n language = \"fr\";\n }\n } else {\n language = navigator.language;\n }\n }\n\n return language;\n}\n","export interface TranscriptParams {\n automation: string; // super, {date}, false \n ttsParams: TtsParams;\n modifyPodcast: ModifyPodcastConfig\n translationConfig: TranslationConfiguration;\n}\nexport interface TtsParams {\n super: string;\n style: string;\n pitch: number;\n speed: number;\n voice: string;\n language: string;\n}\n\nexport interface ModifyPodcastConfig {\n modifyChaptering: ModifyPodcastEnum;\n modifyKeywords: ModifyPodcastEnum;\n modifyDescription: ModifyPodcastEnum;\n createDescriptionUsingAi: boolean;\n wordsNumber: number;\n}\n\nexport enum ModifyPodcastEnum {\n SUPER = \"SUPER\",\n NO = \"NO\",\n IF_EMPTY = \"IF_EMPTY\",\n OVERWRITE=\"OVERWRITE\"\n}\n\nexport interface TranslationConfiguration {\n createTranslation:{[lang:string]: CreateTranslation};\n otherLanguage:CreateTranslation; //Cannot be ALWAYS\n}\n\nexport enum CreateTranslation {\n NEVER = \"NEVER\",\n ON_DEMAND = \"ON_DEMAND\",\n ALWAYS = \"ALWAYS\",\n SUPER=\"SUPER\"\n}\n\nexport function defaultTtsParams(): TtsParams {\n return {\n super: \"true\",\n style: \"neutral\",\n pitch: 0,\n speed: 1,\n voice: \"\",\n language: \"\"\n };\n}\n\nexport function defaultModifyPodcastConfig(): ModifyPodcastConfig {\n return {\n modifyChaptering: ModifyPodcastEnum.NO,\n modifyKeywords:ModifyPodcastEnum.NO,\n modifyDescription:ModifyPodcastEnum.NO,\n createDescriptionUsingAi: false,\n wordsNumber: 100,\n };\n}\n\n/**\n * Create a default object of TranslationConfiguration\n * @param isEmission Optional, if set and true changes default values\n * @returns The object\n */\nexport function defaultTranslationConfig(isEmission?: boolean): TranslationConfiguration {\n return {\n createTranslation:{},\n otherLanguage: isEmission ? CreateTranslation.SUPER : CreateTranslation.NEVER\n };\n}\n\nexport interface Voice {\n name: string;\n locale: string;\n displayName: string;\n gender: string;\n audioExample?: string;\n styles?: [];\n provider: string;\n}\nexport interface ProviderTts {\n name: string;\n fullName: string;\n logoPath: string;\n description: string;\n}\n","const SRT_PARSE_PATTERN = /(\\d+)\\n([\\d:,]+)\\s+-->\\s+([\\d:,]+)\\n([\\s\\S]*?(?=\\n{2}|$))/g;\n\ninterface ParsedStrSection {\n startTime: number;\n endTime: number;\n text: Array<string>;\n}\n\nfunction srtTimeToSeconds(time: string): number {\n const a = time.replace(',', '.').split(\":\").map(parseFloat);\n return a[0] * 60 * 60 + a[1] * 60 + a[2];\n}\n\nexport function parseSrtTranscript(transcript: string): Array<ParsedStrSection> {\n const result: Array<ParsedStrSection> = [];\n transcript = transcript.replace(/\\r\\n|\\r|\\n|\\t/g, \"\\n\");\n let matches: RegExpExecArray;\n while ((matches = SRT_PARSE_PATTERN.exec(transcript)) != null) {\n const text = matches[4].split('\\n');\n result.push({\n startTime: srtTimeToSeconds(matches[2]),\n endTime: srtTimeToSeconds(matches[3]),\n text\n });\n }\n\n return result;\n}\n","import { getLanguage } from \"../../helper/language\";\nimport { transcriptionApi, TranslationState, type PodcastTranslationData } from \"../../api/transcriptionApi\";\nimport { CreateTranslation, defaultTranslationConfig, TranslationConfiguration } from \"../../stores/class/transcript/transcriptParams\";\nimport { podcastApi } from \"../../api/podcastApi\";\nimport { Emission } from \"../../stores/class/general/emission\";\nimport { OrganisationAttributes } from \"@/stores/class/general/organisation\";\nimport { organisationApi } from \"../../api/organisationApi\";\nimport { parseSrtTranscript } from \"@/helper/transcriptHelper\";\n\nconst DEFAULT_LANGUAGE = 'en';\n\ninterface RelevantLanguages {\n /** Language which already has a generated translation */\n ready: string;\n /** Language that is more relevant but its translation is not yet generated */\n available?: string;\n}\n\nenum Availability {\n Available,\n ToGenerate,\n Unavailable\n}\n\nexport const useTranslation = () => {\n\n /**\n * Convert SRT data to plain text\n * @param srt The data to convert\n * @returns The plain text\n */\n function convertSrtToPlainText(srt: string): string {\n const parsed = parseSrtTranscript(srt);\n return parsed.flatMap(p => p.text).join(' ');\n }\n\n function getApplicationConf(language: string, conf: TranslationConfiguration): CreateTranslation {\n if (language in conf.createTranslation) {\n return conf.createTranslation[language];\n }\n\n return conf.otherLanguage;\n }\n\n /**\n * Retrieve the translation configuration for a given language\n */\n function getConfigurationFor(language: string, emissionConf: TranslationConfiguration, orgaConf: TranslationConfiguration): CreateTranslation {\n const emissionSetting = getApplicationConf(language, emissionConf);\n if (emissionSetting === CreateTranslation.SUPER) {\n return getApplicationConf(language, orgaConf);\n }\n return emissionSetting;\n }\n\n function parseOrDefault(data: string|undefined, isEmission = false): TranslationConfiguration {\n return data ? JSON.parse(data) : defaultTranslationConfig(isEmission);\n }\n\n /**\n * Indicates wether the language is available (either because generated or\n * because it can be generated)\n * @param language The language to check for\n * @param emission *(optional)* If set, will also check in emission settings\n * @returns Whether the language is available or not\n */\n function getTranslationConfig(language: string, emission: Emission, orgaAttributes: OrganisationAttributes): CreateTranslation {\n const emissionTranslation = parseOrDefault(emission.annotations?.['translation-config'] as string|undefined, true);\n const orgTranslation = parseOrDefault(orgaAttributes?.['translation-config']);\n\n return getConfigurationFor(language, emissionTranslation, orgTranslation);\n }\n\n function getLanguageAvailability(language: string, emission: Emission, orgaAttributes: OrganisationAttributes, translationData: PodcastTranslationData): Availability {\n \n // 1. If language of podcast == language of browser, use that language\n if (language === translationData.nativeLanguage) {\n return Availability.Available;\n } else {\n const langConfig = getTranslationConfig(language, emission, orgaAttributes);\n\n // 2. If the language of the browser is available, use it\n if (langConfig === CreateTranslation.ALWAYS) {\n return Availability.Available;\n }\n // 2b. If the language is on demand, check if generated\n else if (langConfig === CreateTranslation.ON_DEMAND) {\n // Check if translation is already generated\n if (translationData.translations.find(t => t.language === language && t.state === TranslationState.FINISHED)) {\n return Availability.Available;\n } else {\n return Availability.ToGenerate;\n }\n }\n }\n\n return Availability.Unavailable;\n }\n\n /**\n * Get the relevant language for the current user\n * @param translationData The translation data for the podcast\n * @returns An object with properties 'ready' and 'available'\n * - *ready* Is the best language already generated\n * - *available* Is the best language not yet generated (or\n * undefined if *ready* is better)\n */\n async function getMostRelevantLanguage(translationData: PodcastTranslationData): Promise<RelevantLanguages> {\n const userLanguage = getLanguage(false);\n\n // If user language is native, do not go further\n if (userLanguage === translationData.nativeLanguage) {\n return { ready: userLanguage };\n }\n\n // Compute all available languages. Use language set on site, then\n // languages defined on browser, then default, and finally native language\n const languages: string[] = [];\n [userLanguage, ...navigator.languages, DEFAULT_LANGUAGE, translationData.nativeLanguage].forEach(l => {\n // For each language, if it is a variant (for example fr-CH), use\n // only the base language\n if (l.includes('-')) {\n l = l.split('-')[0];\n }\n\n if (!languages.includes(l)) {\n languages.push(l);\n }\n });\n\n const podcast = await podcastApi.get(translationData.podcastId);\n const emission = podcast.emission;\n const orgaAttributes = await organisationApi.getAttributes(podcast.organisation.id);\n\n let bestReady: string|null = null;\n let bestAvailable: string|null = null;\n\n for (const language of languages) {\n const avaibility = getLanguageAvailability(language, emission, orgaAttributes, translationData);\n if (avaibility === Availability.Available && bestReady === null) {\n bestReady = language;\n break;\n }\n\n if (avaibility === Availability.ToGenerate && bestAvailable === null) {\n bestAvailable = language;\n }\n }\n\n return { ready: bestReady, available: bestAvailable ?? undefined };\n }\n\n /**\n * Get the relevant translation for the current user\n * @param translationData The translation data for the podcast\n * @returns The translation\n */\n async function getMostRelevantTranslation(translationData: PodcastTranslationData): Promise<string>;\n /**\n * Get the relevant translation for the current user\n * @param podcastId The ID of the podcast\n * @returns The translation\n */\n async function getMostRelevantTranslation(podcastId: number): Promise<string>;\n\n /**\n * Get the relevant translation for the current user\n * @param translationData The translation data for the podcast\n * @returns The translation\n */\n async function getMostRelevantTranslation(data: PodcastTranslationData|number): Promise<string> {\n let translationData: PodcastTranslationData;\n if (typeof data === 'number') {\n translationData = await transcriptionApi.getTranslations(data);\n } else {\n translationData = data;\n }\n\n const { ready } = await getMostRelevantLanguage(translationData);\n\n // Finally get translation with chosen language\n const podcastId = translationData.podcastId;\n return await transcriptionApi.getTranslation(podcastId, ready);\n }\n\n return {\n convertSrtToPlainText,\n getMostRelevantLanguage,\n getMostRelevantTranslation,\n getTranslationConfig\n }\n};\n"],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useTranslation-FZLxDtyr.mjs","names":[],"sources":["../src/helper/language.ts","../src/stores/class/transcript/transcriptParams.ts","../src/components/composable/useTranslation.ts"],"sourcesContent":["/**\n * Utility function to retrieve most relevant language for the user\n * @params forceToKnown When set to true (default), will limit language to one\n * one of 6 known languages. When set to false, allow all\n * languages.\n * @returns The most relevant language\n */\nexport function getLanguage(forceToKnown = true): string {\n const nameEQ = \"octopus-language=\";\n const ca = document.cookie.split(\";\");\n\n let language = \"\";\n for (const valueCookie of ca) {\n let c = valueCookie;\n while (c.startsWith(\" \")) {\n c = c.substring(1, c.length);\n }\n if (0 === c.indexOf(nameEQ)) {\n language = c.substring(nameEQ.length, c.length);\n break;\n }\n }\n\n if (0 === language.length) {\n if (forceToKnown === true) {\n // Choose best avilable language\n for (const navigatorLang of navigator.languages) {\n if (navigatorLang.includes(\"fr\")) {\n language = \"fr\";\n break;\n } else if (navigatorLang.includes(\"en\")) {\n language = \"en\";\n break;\n } else if (navigatorLang.includes(\"it\")) {\n language = \"it\";\n break;\n } else if (navigatorLang.includes(\"sl\")) {\n language = \"sl\";\n break;\n } else if (navigatorLang.includes(\"es\")) {\n language = \"es\";\n break;\n } else if (navigatorLang.includes(\"de\")) {\n language = \"de\";\n break;\n }\n }\n if (!language) {\n language = \"fr\";\n }\n } else {\n language = navigator.language;\n }\n }\n\n return language;\n}\n","export interface TranscriptParams {\n automation: string; // super, {date}, false \n ttsParams: TtsParams;\n modifyPodcast: ModifyPodcastConfig\n translationConfig: TranslationConfiguration;\n}\nexport interface TtsParams {\n super: string;\n style: string;\n pitch: number;\n speed: number;\n voice: string;\n language: string;\n}\n\nexport interface ModifyPodcastConfig {\n modifyChaptering: ModifyPodcastEnum;\n modifyKeywords: ModifyPodcastEnum;\n modifyDescription: ModifyPodcastEnum;\n createDescriptionUsingAi: boolean;\n wordsNumber: number;\n}\n\nexport enum ModifyPodcastEnum {\n SUPER = \"SUPER\",\n NO = \"NO\",\n IF_EMPTY = \"IF_EMPTY\",\n OVERWRITE=\"OVERWRITE\"\n}\n\nexport interface TranslationConfiguration {\n createTranslation:{[lang:string]: CreateTranslation};\n otherLanguage:CreateTranslation; //Cannot be ALWAYS\n}\n\nexport enum CreateTranslation {\n NEVER = \"NEVER\",\n ON_DEMAND = \"ON_DEMAND\",\n ALWAYS = \"ALWAYS\",\n SUPER=\"SUPER\"\n}\n\nexport function defaultTtsParams(): TtsParams {\n return {\n super: \"true\",\n style: \"neutral\",\n pitch: 0,\n speed: 1,\n voice: \"\",\n language: \"\"\n };\n}\n\nexport function defaultModifyPodcastConfig(): ModifyPodcastConfig {\n return {\n modifyChaptering: ModifyPodcastEnum.NO,\n modifyKeywords:ModifyPodcastEnum.NO,\n modifyDescription:ModifyPodcastEnum.NO,\n createDescriptionUsingAi: false,\n wordsNumber: 100,\n };\n}\n\n/**\n * Create a default object of TranslationConfiguration\n * @param isEmission Optional, if set and true changes default values\n * @returns The object\n */\nexport function defaultTranslationConfig(isEmission?: boolean): TranslationConfiguration {\n return {\n createTranslation:{},\n otherLanguage: isEmission ? CreateTranslation.SUPER : CreateTranslation.NEVER\n };\n}\n\nexport interface Voice {\n name: string;\n locale: string;\n displayName: string;\n gender: string;\n audioExample?: string;\n styles?: [];\n provider: string;\n}\nexport interface ProviderTts {\n name: string;\n fullName: string;\n logoPath: string;\n description: string;\n}\n","import { getLanguage } from \"../../helper/language\";\nimport { transcriptionApi, TranslationState, type PodcastTranslationData } from \"../../api/transcriptionApi\";\nimport { CreateTranslation, defaultTranslationConfig, TranslationConfiguration } from \"../../stores/class/transcript/transcriptParams\";\nimport { podcastApi } from \"../../api/podcastApi\";\nimport { Emission } from \"../../stores/class/general/emission\";\nimport { OrganisationAttributes } from \"@/stores/class/general/organisation\";\nimport { organisationApi } from \"../../api/organisationApi\";\n\nconst DEFAULT_LANGUAGE = 'en';\n\ninterface RelevantLanguages {\n /** Language which already has a generated translation */\n ready: string;\n /** Language that is more relevant but its translation is not yet generated */\n available?: string;\n}\n\nenum Availability {\n Available,\n ToGenerate,\n Unavailable\n}\n\nexport const useTranslation = () => {\n\n /**\n * Convert SRT data to plain text\n * @param srt The data to convert\n * @returns The plain text\n */\n function convertSrtToPlainText(srt: string): string {\n const srtPattern =\n /\\d+\\n[\\d:,]+\\s+-->\\s+[\\d:,]+\\n([\\s\\S]*?(?=\\n{2}))/gm;\n const result: Array<string> = [];\n let matches: string[];\n while ((matches = srtPattern.exec(srt)) != null) {\n const split = matches[1].split('\\n');\n result.push(split.join(' ') + \" \");\n }\n return result.join(\"\");\n }\n\n function getApplicationConf(language: string, conf: TranslationConfiguration): CreateTranslation {\n if (language in conf.createTranslation) {\n return conf.createTranslation[language];\n }\n\n return conf.otherLanguage;\n }\n\n /**\n * Retrieve the translation configuration for a given language\n */\n function getConfigurationFor(language: string, emissionConf: TranslationConfiguration, orgaConf: TranslationConfiguration): CreateTranslation {\n const emissionSetting = getApplicationConf(language, emissionConf);\n if (emissionSetting === CreateTranslation.SUPER) {\n return getApplicationConf(language, orgaConf);\n }\n return emissionSetting;\n }\n\n function parseOrDefault(data: string|undefined, isEmission = false): TranslationConfiguration {\n return data ? JSON.parse(data) : defaultTranslationConfig(isEmission);\n }\n\n /**\n * Indicates wether the language is available (either because generated or\n * because it can be generated)\n * @param language The language to check for\n * @param emission *(optional)* If set, will also check in emission settings\n * @returns Whether the language is available or not\n */\n function getTranslationConfig(language: string, emission: Emission, orgaAttributes: OrganisationAttributes): CreateTranslation {\n const emissionTranslation = parseOrDefault(emission.annotations?.['translation-config'] as string|undefined, true);\n const orgTranslation = parseOrDefault(orgaAttributes?.['translation-config']);\n\n return getConfigurationFor(language, emissionTranslation, orgTranslation);\n }\n\n function getLanguageAvailability(language: string, emission: Emission, orgaAttributes: OrganisationAttributes, translationData: PodcastTranslationData): Availability {\n \n // 1. If language of podcast == language of browser, use that language\n if (language === translationData.nativeLanguage) {\n return Availability.Available;\n } else {\n const langConfig = getTranslationConfig(language, emission, orgaAttributes);\n\n // 2. If the language of the browser is available, use it\n if (langConfig === CreateTranslation.ALWAYS) {\n return Availability.Available;\n }\n // 2b. If the language is on demand, check if generated\n else if (langConfig === CreateTranslation.ON_DEMAND) {\n // Check if translation is already generated\n if (translationData.translations.find(t => t.language === language && t.state === TranslationState.FINISHED)) {\n return Availability.Available;\n } else {\n return Availability.ToGenerate;\n }\n }\n }\n\n return Availability.Unavailable;\n }\n\n /**\n * Get the relevant language for the current user\n * @param translationData The translation data for the podcast\n * @returns An object with properties 'ready' and 'available'\n * - *ready* Is the best language already generated\n * - *available* Is the best language not yet generated (or\n * undefined if *ready* is better)\n */\n async function getMostRelevantLanguage(translationData: PodcastTranslationData): Promise<RelevantLanguages> {\n const userLanguage = getLanguage(false);\n\n // If user language is native, do not go further\n if (userLanguage === translationData.nativeLanguage) {\n return { ready: userLanguage };\n }\n\n // Compute all available languages. Use language set on site, then\n // languages defined on browser, then default, and finally native language\n const languages: string[] = [];\n [userLanguage, ...navigator.languages, DEFAULT_LANGUAGE, translationData.nativeLanguage].forEach(l => {\n // For each language, if it is a variant (for example fr-CH), use\n // only the base language\n if (l.includes('-')) {\n l = l.split('-')[0];\n }\n\n if (!languages.includes(l)) {\n languages.push(l);\n }\n });\n\n const podcast = await podcastApi.get(translationData.podcastId);\n const emission = podcast.emission;\n const orgaAttributes = await organisationApi.getAttributes(podcast.organisation.id);\n\n let bestReady: string|null = null;\n let bestAvailable: string|null = null;\n\n for (const language of languages) {\n const avaibility = getLanguageAvailability(language, emission, orgaAttributes, translationData);\n if (avaibility === Availability.Available && bestReady === null) {\n bestReady = language;\n break;\n }\n\n if (avaibility === Availability.ToGenerate && bestAvailable === null) {\n bestAvailable = language;\n }\n }\n\n return { ready: bestReady, available: bestAvailable ?? undefined };\n }\n\n /**\n * Get the relevant translation for the current user\n * @param translationData The translation data for the podcast\n * @returns The translation\n */\n async function getMostRelevantTranslation(translationData: PodcastTranslationData): Promise<string>;\n /**\n * Get the relevant translation for the current user\n * @param podcastId The ID of the podcast\n * @returns The translation\n */\n async function getMostRelevantTranslation(podcastId: number): Promise<string>;\n\n /**\n * Get the relevant translation for the current user\n * @param translationData The translation data for the podcast\n * @returns The translation\n */\n async function getMostRelevantTranslation(data: PodcastTranslationData|number): Promise<string> {\n let translationData: PodcastTranslationData;\n if (typeof data === 'number') {\n translationData = await transcriptionApi.getTranslations(data);\n } else {\n translationData = data;\n }\n\n const { ready } = await getMostRelevantLanguage(translationData);\n\n // Finally get translation with chosen language\n const podcastId = translationData.podcastId;\n return await transcriptionApi.getTranslation(podcastId, ready);\n }\n\n return {\n convertSrtToPlainText,\n getMostRelevantLanguage,\n getMostRelevantTranslation,\n getTranslationConfig\n }\n};\n"],"mappings":"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"}
|
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
import { t as classicApi_default } from "./classicApi-CkDHWZG1.mjs";
|
|
2
|
+
import { onBeforeUnmount, ref } from "vue";
|
|
3
|
+
import { useI18n } from "vue-i18n";
|
|
4
|
+
import dayjs from "dayjs";
|
|
5
|
+
//#region src/components/composable/radio/usefetchRadioData.ts
|
|
6
|
+
var useFetchRadio = () => {
|
|
7
|
+
const radioInterval = ref(void 0);
|
|
8
|
+
const { t } = useI18n();
|
|
9
|
+
async function fetchRadioMetadata(canalId, previousTitle, callbackMetadata, callbackAdvertising) {
|
|
10
|
+
const metadata = await classicApi_default.fetchData({
|
|
11
|
+
api: 14,
|
|
12
|
+
path: "player/playing/" + canalId
|
|
13
|
+
});
|
|
14
|
+
if (callbackAdvertising) callbackAdvertising(metadata.nextAdvertising);
|
|
15
|
+
const arrayMetadata = metadata.previously;
|
|
16
|
+
if (null !== metadata.currently) {
|
|
17
|
+
arrayMetadata.unshift(metadata.currently);
|
|
18
|
+
for (let index = 0, len = arrayMetadata.length; index < len; index++) if (dayjs().valueOf() - 18e3 > dayjs(arrayMetadata[index].startDate).valueOf()) {
|
|
19
|
+
await useCallbackIfNewMetadata(previousTitle, arrayMetadata, index, len, callbackMetadata);
|
|
20
|
+
return;
|
|
21
|
+
}
|
|
22
|
+
} else callbackMetadata(void 0, void 0, arrayMetadata);
|
|
23
|
+
}
|
|
24
|
+
async function useCallbackIfNewMetadata(previousTitle, arrayMetadata, index, len, callbackMetadata) {
|
|
25
|
+
if (previousTitle !== arrayMetadata[index].title) {
|
|
26
|
+
const historyIndex = index + 1 < len ? index + 1 : index;
|
|
27
|
+
const history = arrayMetadata.slice(historyIndex, len);
|
|
28
|
+
if (arrayMetadata[index].podcastId) {
|
|
29
|
+
const data = await classicApi_default.fetchData({
|
|
30
|
+
api: 0,
|
|
31
|
+
path: "podcast/" + arrayMetadata[index].podcastId
|
|
32
|
+
});
|
|
33
|
+
callbackMetadata(arrayMetadata[index], data, history);
|
|
34
|
+
} else callbackMetadata(arrayMetadata[index], void 0, history);
|
|
35
|
+
}
|
|
36
|
+
}
|
|
37
|
+
function displayTitle(metadata) {
|
|
38
|
+
if (!metadata) return t("Silent stream");
|
|
39
|
+
let title = "";
|
|
40
|
+
if (metadata?.title) title += metadata.title;
|
|
41
|
+
if (metadata?.artist) title += " - " + metadata.artist;
|
|
42
|
+
return title;
|
|
43
|
+
}
|
|
44
|
+
onBeforeUnmount(() => {
|
|
45
|
+
clearInterval(radioInterval.value);
|
|
46
|
+
});
|
|
47
|
+
return {
|
|
48
|
+
fetchRadioMetadata,
|
|
49
|
+
displayTitle
|
|
50
|
+
};
|
|
51
|
+
};
|
|
52
|
+
//#endregion
|
|
53
|
+
export { useFetchRadio as t };
|
|
54
|
+
|
|
55
|
+
//# sourceMappingURL=usefetchRadioData-C2cwiaCP.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"usefetchRadioData-C2cwiaCP.mjs","names":[],"sources":["../src/components/composable/radio/usefetchRadioData.ts"],"sourcesContent":["import classicApi from \"../../../api/classicApi\";\nimport { MediaRadio, MetadataRadio, NextAdvertising } from '@/stores/class/general/player';\nimport { Podcast } from '@/stores/class/general/podcast';\nimport dayjs from 'dayjs';\nimport {onBeforeUnmount, Ref, ref} from 'vue';\nimport { useI18n } from \"vue-i18n\";\nexport const useFetchRadio = ()=>{\n\n const radioInterval : Ref<ReturnType<typeof setTimeout> | undefined> = ref(undefined);\n\n const {t} = useI18n();\n \n async function fetchRadioMetadata(\n canalId: number,\n previousTitle: string,\n callbackMetadata: (\n metadata: MediaRadio|undefined,\n podcast: Podcast | undefined,\n history: Array<MediaRadio>\n ) => void,\n callbackAdvertising?: (\n nextAdvertising: NextAdvertising\n ) => void,\n ): Promise<void> {\n const metadata = await classicApi.fetchData<MetadataRadio>({\n api: 14,\n path: \"player/playing/\" + canalId,\n });\n /*{\n \"adCount\": 1,\n \"startDate\": \"2025-03-04T13:12:00Z\",\n \"tag\": \"5e385e1b51c86\"\n }; */\n if(callbackAdvertising){\n callbackAdvertising(metadata.nextAdvertising);\n }\n const arrayMetadata = metadata.previously;\n if(null!==metadata.currently){\n arrayMetadata.unshift(metadata.currently);\n for (let index = 0, len = arrayMetadata.length; index < len; index++) {\n if (\n dayjs().valueOf() - 18000 >\n dayjs(arrayMetadata[index].startDate).valueOf()\n ) {\n await useCallbackIfNewMetadata(previousTitle, arrayMetadata, index, len,callbackMetadata);\n return;\n }\n }\n }else{\n callbackMetadata(undefined, undefined, arrayMetadata);\n }\n }\n async function useCallbackIfNewMetadata(previousTitle: string, arrayMetadata: Array<MediaRadio>, index:number, len: number, callbackMetadata: (\n metadata: MediaRadio,\n podcast: Podcast | undefined,\n history: Array<MediaRadio>\n ) => void){\n if (previousTitle !== arrayMetadata[index].title) {\n const historyIndex = index + 1 < len ? index + 1 : index;\n const history = arrayMetadata.slice(historyIndex, len);\n if (arrayMetadata[index].podcastId) {\n const data: Podcast = await classicApi.fetchData<Podcast>({\n api: 0,\n path: \"podcast/\" + arrayMetadata[index].podcastId,\n });\n callbackMetadata(arrayMetadata[index], data, history);\n } else {\n callbackMetadata(arrayMetadata[index], undefined, history);\n }\n }\n }\n function displayTitle(metadata: MediaRadio|undefined): string {\n if(!metadata){\n return t(\"Silent stream\");\n }\n let title = \"\";\n if (metadata?.title) {\n title += metadata.title;\n }\n if (metadata?.artist) {\n title += \" - \" + metadata.artist;\n }\n return title;\n }\n\n\n\n onBeforeUnmount(() => {\n clearInterval(radioInterval.value as unknown as number);\n })\n\n\n\treturn {\n fetchRadioMetadata,\n displayTitle\n\t}\n}\n"],"mappings":";;;;;AAMA,IAAa,sBAAoB;CAE/B,MAAM,gBAAiE,IAAI,KAAA,CAAS;CAEpF,MAAM,EAAC,MAAK,QAAQ;CAEpB,eAAe,mBACb,SACA,eACA,kBAKA,qBAGe;EACf,MAAM,WAAW,MAAM,mBAAW,UAAyB;GACzD,KAAK;GACL,MAAO,oBAAoB;EAC7B,CAAC;EAMD,IAAG,qBACD,oBAAoB,SAAS,eAAe;EAE9C,MAAM,gBAAgB,SAAS;EAC/B,IAAG,SAAO,SAAS,WAAU;GAC3B,cAAc,QAAQ,SAAS,SAAS;GACxC,KAAK,IAAI,QAAQ,GAAG,MAAM,cAAc,QAAQ,QAAQ,KAAK,SAC3D,IACE,MAAM,EAAE,QAAQ,IAAI,OACpB,MAAM,cAAc,OAAO,SAAS,EAAE,QAAQ,GAC9C;IACA,MAAM,yBAAyB,eAAe,eAAe,OAAO,KAAI,gBAAgB;IACxF;GACF;EAEJ,OACE,iBAAiB,KAAA,GAAW,KAAA,GAAW,aAAa;CAExD;CACA,eAAe,yBAAyB,eAAuB,eAAkC,OAAc,KAAa,kBAIlH;EACR,IAAI,kBAAkB,cAAc,OAAO,OAAO;GAChD,MAAM,eAAe,QAAQ,IAAI,MAAM,QAAQ,IAAI;GACnD,MAAM,UAAU,cAAc,MAAM,cAAc,GAAG;GACrD,IAAI,cAAc,OAAO,WAAW;IAClC,MAAM,OAAgB,MAAM,mBAAW,UAAmB;KACxD,KAAK;KACL,MAAM,aAAa,cAAc,OAAO;IAC1C,CAAC;IACD,iBAAiB,cAAc,QAAQ,MAAM,OAAO;GACtD,OACE,iBAAiB,cAAc,QAAQ,KAAA,GAAW,OAAO;EAE7D;CACF;CACA,SAAS,aAAa,UAAwC;EAC5D,IAAG,CAAC,UACF,OAAO,EAAE,eAAe;EAE1B,IAAI,QAAQ;EACZ,IAAI,UAAU,OACZ,SAAS,SAAS;EAEpB,IAAI,UAAU,QACZ,SAAS,QAAQ,SAAS;EAE5B,OAAO;CACT;CAIA,sBAAsB;EACpB,cAAc,cAAc,KAA0B;CACxD,CAAC;CAGF,OAAO;EACJ;EACA;CACH;AACD"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"usefetchRadioData-CM6il3j3.mjs","names":[],"sources":["../src/components/composable/radio/usefetchRadioData.ts"],"sourcesContent":["import classicApi from \"../../../api/classicApi\";\nimport { MediaRadio, MetadataRadio, NextAdvertising } from '@/stores/class/general/player';\nimport { Podcast } from '@/stores/class/general/podcast';\nimport dayjs from 'dayjs';\nimport {onBeforeUnmount, Ref, ref} from 'vue';\nimport { useI18n } from \"vue-i18n\";\nexport const useFetchRadio = ()=>{\n\n const radioInterval : Ref<ReturnType<typeof setTimeout> | undefined> = ref(undefined);\n\n const {t} = useI18n();\n \n async function fetchRadioMetadata(\n canalId: number,\n previousTitle: string,\n callbackMetadata: (\n metadata: MediaRadio|undefined,\n podcast: Podcast | undefined,\n history: Array<MediaRadio>\n ) => void,\n callbackAdvertising?: (\n nextAdvertising: NextAdvertising\n ) => void,\n ): Promise<void> {\n const metadata = await classicApi.fetchData<MetadataRadio>({\n api: 14,\n path: \"player/playing/\" + canalId,\n });\n /*{\n \"adCount\": 1,\n \"startDate\": \"2025-03-04T13:12:00Z\",\n \"tag\": \"5e385e1b51c86\"\n }; */\n if(callbackAdvertising){\n callbackAdvertising(metadata.nextAdvertising);\n }\n const arrayMetadata = metadata.previously;\n if(null!==metadata.currently){\n arrayMetadata.unshift(metadata.currently);\n for (let index = 0, len = arrayMetadata.length; index < len; index++) {\n if (\n dayjs().valueOf() - 18000 >\n dayjs(arrayMetadata[index].startDate).valueOf()\n ) {\n await useCallbackIfNewMetadata(previousTitle, arrayMetadata, index, len,callbackMetadata);\n return;\n }\n }\n }else{\n callbackMetadata(undefined, undefined, arrayMetadata);\n }\n }\n async function useCallbackIfNewMetadata(previousTitle: string, arrayMetadata: Array<MediaRadio>, index:number, len: number, callbackMetadata: (\n metadata: MediaRadio,\n podcast: Podcast | undefined,\n history: Array<MediaRadio>\n ) => void){\n if (previousTitle !== arrayMetadata[index].title) {\n const historyIndex = index + 1 < len ? index + 1 : index;\n const history = arrayMetadata.slice(historyIndex, len);\n if (arrayMetadata[index].podcastId) {\n const data: Podcast = await classicApi.fetchData<Podcast>({\n api: 0,\n path: \"podcast/\" + arrayMetadata[index].podcastId,\n });\n callbackMetadata(arrayMetadata[index], data, history);\n } else {\n callbackMetadata(arrayMetadata[index], undefined, history);\n }\n }\n }\n function displayTitle(metadata: MediaRadio|undefined): string {\n if(!metadata){\n return t(\"Silent stream\");\n }\n let title = \"\";\n if (metadata?.title) {\n title += metadata.title;\n }\n if (metadata?.artist) {\n title += \" - \" + metadata.artist;\n }\n return title;\n }\n\n\n\n onBeforeUnmount(() => {\n clearInterval(radioInterval.value as unknown as number);\n })\n\n\n\treturn {\n fetchRadioMetadata,\n displayTitle\n\t}\n}\n"],"mappings":";;;;;AAMA,IAAa,sBAAoB;CAE/B,MAAM,gBAAiE,IAAI,KAAA,CAAS;CAEpF,MAAM,EAAC,MAAK,QAAQ;CAEpB,eAAe,mBACb,SACA,eACA,kBAKA,qBAGe;EACf,MAAM,WAAW,MAAM,mBAAW,UAAyB;GACzD,KAAK;GACL,MAAO,oBAAoB;EAC7B,CAAC;EAMD,IAAG,qBACD,oBAAoB,SAAS,eAAe;EAE9C,MAAM,gBAAgB,SAAS;EAC/B,IAAG,SAAO,SAAS,WAAU;GAC3B,cAAc,QAAQ,SAAS,SAAS;GACxC,KAAK,IAAI,QAAQ,GAAG,MAAM,cAAc,QAAQ,QAAQ,KAAK,SAC3D,IACE,MAAM,EAAE,QAAQ,IAAI,OACpB,MAAM,cAAc,OAAO,SAAS,EAAE,QAAQ,GAC9C;IACA,MAAM,yBAAyB,eAAe,eAAe,OAAO,KAAI,gBAAgB;IACxF;GACF;EAEJ,OACE,iBAAiB,KAAA,GAAW,KAAA,GAAW,aAAa;CAExD;CACA,eAAe,yBAAyB,eAAuB,eAAkC,OAAc,KAAa,kBAIlH;EACR,IAAI,kBAAkB,cAAc,OAAO,OAAO;GAChD,MAAM,eAAe,QAAQ,IAAI,MAAM,QAAQ,IAAI;GACnD,MAAM,UAAU,cAAc,MAAM,cAAc,GAAG;GACrD,IAAI,cAAc,OAAO,WAAW;IAClC,MAAM,OAAgB,MAAM,mBAAW,UAAmB;KACxD,KAAK;KACL,MAAM,aAAa,cAAc,OAAO;IAC1C,CAAC;IACD,iBAAiB,cAAc,QAAQ,MAAM,OAAO;GACtD,OACE,iBAAiB,cAAc,QAAQ,KAAA,GAAW,OAAO;EAE7D;CACF;CACA,SAAS,aAAa,UAAwC;EAC5D,IAAG,CAAC,UACF,OAAO,EAAE,eAAe;EAE1B,IAAI,QAAQ;EACZ,IAAI,UAAU,OACZ,SAAS,SAAS;EAEpB,IAAI,UAAU,QACZ,SAAS,QAAQ,SAAS;EAE5B,OAAO;CACT;CAIA,sBAAsB;EACpB,cAAc,cAAc,KAA0B;CACxD,CAAC;CAGF,OAAO;EACJ;EACA;CACH;AACD"}
|