@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.
Files changed (1882) hide show
  1. package/dist/AdvancedSearch-2dFT0QVN.mjs.map +1 -0
  2. package/dist/AdvancedSearch-C1wIVvqN.mjs.map +1 -0
  3. package/dist/AdvancedSearch-CMRyi6xt.mjs.map +1 -0
  4. package/dist/AdvancedSearch-D3fL7JeT.mjs.map +1 -0
  5. package/dist/AdvancedSearch-DZiuFgUy.mjs.map +1 -0
  6. package/dist/AdvancedSearch-fO5eaqLJ.mjs +452 -0
  7. package/dist/AdvancedSearch-fO5eaqLJ.mjs.map +1 -0
  8. package/dist/AdvancedSearch-g410kpAb.mjs.map +1 -0
  9. package/dist/CategoryFilter-BAfXDVAS.mjs.map +1 -0
  10. package/dist/CategoryFilter-BQ-Bzodr.mjs.map +1 -0
  11. package/dist/CategoryFilter-BetJYrqO.mjs.map +1 -0
  12. package/dist/CategoryFilter-Bpriv2T0.mjs.map +1 -0
  13. package/dist/CategoryFilter-Cu2a0YE9.mjs +237 -0
  14. package/dist/CategoryFilter-Cu2a0YE9.mjs.map +1 -0
  15. package/dist/CategoryFilter-DpYskHN2.mjs.map +1 -0
  16. package/dist/CategoryFilter-o1XW6RpW.mjs.map +1 -0
  17. package/dist/CategoryList-BfBk7TrV.mjs.map +1 -0
  18. package/dist/CategoryList-DXUz624_.mjs.map +1 -0
  19. package/dist/CategoryList-DayqDww6.mjs.map +1 -0
  20. package/dist/CategoryList-DkxZDrO5.mjs +182 -0
  21. package/dist/CategoryList-DkxZDrO5.mjs.map +1 -0
  22. package/dist/CategoryList-Dy24R6E3.mjs.map +1 -0
  23. package/dist/CategoryList-OADRuqoT.mjs.map +1 -0
  24. package/dist/CategoryList-eqimgvLb.mjs.map +1 -0
  25. package/dist/CategoryPage--iCquevZ.mjs.map +1 -0
  26. package/dist/CategoryPage-3HFz1i7_.mjs +57 -0
  27. package/dist/CategoryPage-3HFz1i7_.mjs.map +1 -0
  28. package/dist/CategoryPage-B-rqfMd8.mjs.map +1 -0
  29. package/dist/CategoryPage-B8aOBuOP.mjs.map +1 -0
  30. package/dist/CategoryPage-BRFxthij.mjs.map +1 -0
  31. package/dist/CategoryPage-BWJ07vkQ.mjs.map +1 -0
  32. package/dist/CategoryPage-BeQhlUbs.mjs.map +1 -0
  33. package/dist/CategoryPage-BfTe7LC9.mjs.map +1 -0
  34. package/dist/CategoryPage-BqwHb_Br.mjs.map +1 -0
  35. package/dist/CategoryPage-CLoTTEyO.mjs.map +1 -0
  36. package/dist/CategoryPage-CXAe4Uas.mjs.map +1 -0
  37. package/dist/CategoryPage-C_-gxSOd.mjs.map +1 -0
  38. package/dist/CategoryPage-CkIGR2Og.mjs.map +1 -0
  39. package/dist/CategoryPage-Cuq6y6wJ.mjs.map +1 -0
  40. package/dist/CategoryPage-D8jnksju.mjs.map +1 -0
  41. package/dist/CategoryPage-DSIUgeq8.mjs.map +1 -0
  42. package/dist/CategoryPage-DgPPX2Gf.mjs.map +1 -0
  43. package/dist/CategoryPage-DnfSvNnT.mjs.map +1 -0
  44. package/dist/CategoryPage-DpVh-QuD.mjs.map +1 -0
  45. package/dist/CategoryPage-_WnkLPDn.mjs.map +1 -0
  46. package/dist/CategoryPage-n0ldOLQX.mjs.map +1 -0
  47. package/dist/CategoryPage-pEfqhe4N.mjs.map +1 -0
  48. package/dist/CategoryPage-yHjJLgNJ.mjs.map +1 -0
  49. package/dist/ChapteringModal-BU4P1k1o.mjs.map +1 -0
  50. package/dist/ChapteringModal-B_5sdEMj.mjs.map +1 -0
  51. package/dist/ChapteringModal-BqBkg5Ul.mjs.map +1 -0
  52. package/dist/ChapteringModal-C-rdkbSz.mjs +82 -0
  53. package/dist/ChapteringModal-C-rdkbSz.mjs.map +1 -0
  54. package/dist/ChapteringModal-ChbNRifd.mjs.map +1 -0
  55. package/dist/ChapteringModal-DAExB_S4.mjs.map +1 -0
  56. package/dist/ChapteringModal-DKnnr2oA.mjs.map +1 -0
  57. package/dist/ChapteringModal-Dcw5AMQ9.mjs.map +1 -0
  58. package/dist/ChapteringModal-DiiHWxDT.mjs.map +1 -0
  59. package/dist/ChapteringModal-pAM56lFi.mjs.map +1 -0
  60. package/dist/CheckIdentityModal-BTUxaPE_.mjs.map +1 -0
  61. package/dist/CheckIdentityModal-C3JnC6Ua.mjs.map +1 -0
  62. package/dist/CheckIdentityModal-D3CUmUxu.mjs.map +1 -0
  63. package/dist/CheckIdentityModal-D5Y2HVnN.mjs.map +1 -0
  64. package/dist/CheckIdentityModal-DiIpHJD9.mjs.map +1 -0
  65. package/dist/CheckIdentityModal-N9h8yvhC.mjs +86 -0
  66. package/dist/CheckIdentityModal-N9h8yvhC.mjs.map +1 -0
  67. package/dist/CheckIdentityModal-Sr229a3z.mjs.map +1 -0
  68. package/dist/ClassicAlert-DUQplMvs.mjs +85 -0
  69. package/dist/ClipboardModal-599bBRbB.mjs.map +1 -0
  70. package/dist/ClipboardModal-BGVgZ1Ci.mjs.map +1 -0
  71. package/dist/ClipboardModal-BVOhCB2u.mjs.map +1 -0
  72. package/dist/ClipboardModal-C-tBT_RC.mjs.map +1 -0
  73. package/dist/ClipboardModal-CgAtp9St.mjs.map +1 -0
  74. package/dist/ClipboardModal-CnieIOJr.mjs +84 -0
  75. package/dist/ClipboardModal-CnieIOJr.mjs.map +1 -0
  76. package/dist/ClipboardModal-Vd6Rh9Vh.mjs.map +1 -0
  77. package/dist/CommentBasicView-BIiF59xV.mjs +129 -0
  78. package/dist/CommentInput-BVkOhxyu.mjs.map +1 -0
  79. package/dist/CommentInput-BayQ67gu.mjs.map +1 -0
  80. package/dist/CommentInput-C4zW_R4N.mjs.map +1 -0
  81. package/dist/CommentInput-CDNhiCg-.mjs.map +1 -0
  82. package/dist/CommentInput-CEioyN7X.mjs +186 -0
  83. package/dist/CommentInput-CEioyN7X.mjs.map +1 -0
  84. package/dist/CommentInput-DKAMsPz5.mjs.map +1 -0
  85. package/dist/CommentInput-DTspqOHp.mjs.map +1 -0
  86. package/dist/CommentInput-DhloQYMu.mjs.map +1 -0
  87. package/dist/CommentInput-DzWcAYUi.mjs.map +1 -0
  88. package/dist/CommentInput-KUtU0lAg.mjs.map +1 -0
  89. package/dist/CommentItem-3aaj5G4l.mjs.map +1 -0
  90. package/dist/CommentItem-8LFDrQ0n.mjs.map +1 -0
  91. package/dist/CommentItem-BBuAT7RO.mjs.map +1 -0
  92. package/dist/CommentItem-BDscwc6X.mjs.map +1 -0
  93. package/dist/CommentItem-BOE6hF39.mjs.map +1 -0
  94. package/dist/CommentItem-Bc1jUCkv.mjs.map +1 -0
  95. package/dist/CommentItem-BefuRoxQ.mjs +232 -0
  96. package/dist/CommentItem-BefuRoxQ.mjs.map +1 -0
  97. package/dist/CommentItem-BhGGJRy6.mjs.map +1 -0
  98. package/dist/CommentItem-Bmdkc6OC.mjs.map +1 -0
  99. package/dist/CommentItem-CXSq4sAZ.mjs.map +1 -0
  100. package/dist/CommentItem-CzG1afeK.mjs.map +1 -0
  101. package/dist/CommentItem-DYvVb3DA.mjs.map +1 -0
  102. package/dist/CommentItem-Dgausa7e.mjs.map +1 -0
  103. package/dist/CommentItem-M-xLbKB-.mjs.map +1 -0
  104. package/dist/CommentItem-eejiYdt8.mjs.map +1 -0
  105. package/dist/CommentItem-gF-drcOR.mjs.map +1 -0
  106. package/dist/CommentItem-pLh7ArwQ.mjs.map +1 -0
  107. package/dist/CommentList-BXy0blWM.mjs.map +1 -0
  108. package/dist/CommentList-B_PS8Skz.mjs.map +1 -0
  109. package/dist/CommentList-BsPwzqkf.mjs +302 -0
  110. package/dist/CommentList-BsPwzqkf.mjs.map +1 -0
  111. package/dist/CommentList-C9otjK5N.mjs.map +1 -0
  112. package/dist/CommentList-CFeUy4UL.mjs.map +1 -0
  113. package/dist/CommentList-CIAVGfiD.mjs.map +1 -0
  114. package/dist/CommentList-CJPk_KBN.mjs.map +1 -0
  115. package/dist/CommentList-CyxIQ1qn.mjs.map +1 -0
  116. package/dist/CommentList-DAFHgbWI.mjs.map +1 -0
  117. package/dist/CommentList-DE9pkl4p.mjs.map +1 -0
  118. package/dist/CommentList-DRV-dER_.mjs.map +1 -0
  119. package/dist/CommentList-DeudlV_S.mjs.map +1 -0
  120. package/dist/CommentList-Dkoj_ePj.mjs.map +1 -0
  121. package/dist/CommentList-DrLcpMjQ.mjs.map +1 -0
  122. package/dist/CommentList-pF-SpOrJ.mjs.map +1 -0
  123. package/dist/CommentList-qQRgFDcN.mjs.map +1 -0
  124. package/dist/CommentList-qveTgjIv.mjs.map +1 -0
  125. package/dist/CommentMoreActions-BABhLqqh.mjs.map +1 -0
  126. package/dist/CommentMoreActions-BJnJa13g.mjs.map +1 -0
  127. package/dist/CommentMoreActions-C86aqy8M.mjs +286 -0
  128. package/dist/CommentMoreActions-C86aqy8M.mjs.map +1 -0
  129. package/dist/CommentMoreActions-DQfDcjch.mjs.map +1 -0
  130. package/dist/CommentMoreActions-DjoP-Sfs.mjs.map +1 -0
  131. package/dist/CommentMoreActions-lT1a9TYg.mjs.map +1 -0
  132. package/dist/CommentMoreActions-qgHbxTRV.mjs.map +1 -0
  133. package/dist/CommentName-CQic86ku.mjs.map +1 -0
  134. package/dist/CommentName-CfCPh6ui.mjs.map +1 -0
  135. package/dist/CommentName-CsvZo4rZ.mjs.map +1 -0
  136. package/dist/CommentName-DQJPwIrw.mjs.map +1 -0
  137. package/dist/CommentName-DT1QyPi3.mjs +96 -0
  138. package/dist/CommentName-DT1QyPi3.mjs.map +1 -0
  139. package/dist/CommentName-DiCfWOrX.mjs.map +1 -0
  140. package/dist/CommentName-sihAL1Wr.mjs.map +1 -0
  141. package/dist/CommentParentInfo-8MncHouR.mjs.map +1 -0
  142. package/dist/CommentParentInfo-9Fe-3e6c.mjs +64 -0
  143. package/dist/CommentParentInfo-9Fe-3e6c.mjs.map +1 -0
  144. package/dist/CommentParentInfo-BF4eHHWU.mjs.map +1 -0
  145. package/dist/CommentParentInfo-Bx8ARLzD.mjs.map +1 -0
  146. package/dist/CommentParentInfo-CV4AzgTT.mjs.map +1 -0
  147. package/dist/CommentParentInfo-CfvA4yIL.mjs.map +1 -0
  148. package/dist/CommentParentInfo-D12GJBmR.mjs.map +1 -0
  149. package/dist/CommentParentInfo-DLyThSxN.mjs.map +1 -0
  150. package/dist/CommentParentInfo-DQw1sDxC.mjs.map +1 -0
  151. package/dist/CommentParentInfo-Dnret2Ad.mjs.map +1 -0
  152. package/dist/CommentParentInfo-oj9mOYoo.mjs.map +1 -0
  153. package/dist/CommentPlayer-6yXDu9T0.mjs.map +1 -0
  154. package/dist/CommentPlayer-8_VUjV7T.mjs.map +1 -0
  155. package/dist/CommentPlayer-9IRvyBTe.mjs.map +1 -0
  156. package/dist/CommentPlayer-B6iq28_d.mjs.map +1 -0
  157. package/dist/CommentPlayer-BI9plmJb.mjs.map +1 -0
  158. package/dist/CommentPlayer-BU2PR4EL.mjs.map +1 -0
  159. package/dist/CommentPlayer-CiWQM64Y.mjs +86 -0
  160. package/dist/CommentPlayer-CiWQM64Y.mjs.map +1 -0
  161. package/dist/CommentPlayer-Dc0_b-yC.mjs.map +1 -0
  162. package/dist/CommentPlayer-DqUw2YJ7.mjs.map +1 -0
  163. package/dist/CommentPlayer-ue5kqbe6.mjs.map +1 -0
  164. package/dist/CommentSection-B4WeWhXF.mjs.map +1 -0
  165. package/dist/CommentSection-B8rUVrwU.mjs.map +1 -0
  166. package/dist/CommentSection-BJa_x7O2.mjs.map +1 -0
  167. package/dist/CommentSection-BNEa9Ci9.mjs.map +1 -0
  168. package/dist/CommentSection-BWwk80jh.mjs.map +1 -0
  169. package/dist/CommentSection-Be38YIkC.mjs +141 -0
  170. package/dist/CommentSection-Be38YIkC.mjs.map +1 -0
  171. package/dist/CommentSection-C06nkCTR.mjs.map +1 -0
  172. package/dist/CommentSection-C3X_fhsV.mjs.map +1 -0
  173. package/dist/CommentSection-CdEW4oXJ.mjs.map +1 -0
  174. package/dist/CommentSection-D2NjubKH.mjs.map +1 -0
  175. package/dist/CommentSection-D5tPqMLp.mjs.map +1 -0
  176. package/dist/CommentSection-D9WNYZol.mjs.map +1 -0
  177. package/dist/CommentSection-DrM9yr4C.mjs.map +1 -0
  178. package/dist/CommentSection-L1HyiVs5.mjs.map +1 -0
  179. package/dist/CommentSection-Yf7vaq7B.mjs.map +1 -0
  180. package/dist/CommentSection-ZM7JYK0N.mjs.map +1 -0
  181. package/dist/CommentSection-b2oFBEr_.mjs.map +1 -0
  182. package/dist/CommentStore-B2svsN00.mjs.map +1 -0
  183. package/dist/CommentStore-C3OowOX1.mjs.map +1 -0
  184. package/dist/CommentStore-CFtaN1dW.mjs.map +1 -0
  185. package/dist/CommentStore-DAUUhqtc.mjs.map +1 -0
  186. package/dist/CommentStore-Dv7j94Uo.mjs +355 -0
  187. package/dist/CommentStore-Dv7j94Uo.mjs.map +1 -0
  188. package/dist/CommentStore-ep-u2MCN.mjs.map +1 -0
  189. package/dist/CommentStore-uO5F5D9e.mjs.map +1 -0
  190. package/dist/ContractPreviewModal-BEQZSnuJ.mjs.map +1 -0
  191. package/dist/ContractPreviewModal-BSQLdfGl.mjs.map +1 -0
  192. package/dist/ContractPreviewModal-CPT6bDpJ.mjs +101 -0
  193. package/dist/ContractPreviewModal-CPT6bDpJ.mjs.map +1 -0
  194. package/dist/ContractPreviewModal-CPfmF_Pi.mjs.map +1 -0
  195. package/dist/ContractPreviewModal-Dr4oJIYW.mjs.map +1 -0
  196. package/dist/ContractPreviewModal-VHVyIoqg.mjs.map +1 -0
  197. package/dist/ContractPreviewModal-ufUZPqUc.mjs.map +1 -0
  198. package/dist/DownloadPodcastButton-6D8qNAkT.mjs +53 -0
  199. package/dist/DownloadPodcastButton-6D8qNAkT.mjs.map +1 -0
  200. package/dist/DownloadPodcastButton-Bfs4qtOw.mjs.map +1 -0
  201. package/dist/DownloadPodcastButton-BzCuFKhq.mjs.map +1 -0
  202. package/dist/DownloadPodcastButton-CEgIRPVZ.mjs.map +1 -0
  203. package/dist/DownloadPodcastButton-DTM31PZK.mjs.map +1 -0
  204. package/dist/DownloadPodcastButton-uiXuVIRC.mjs.map +1 -0
  205. package/dist/DownloadPodcastButton-yDfpjibL.mjs.map +1 -0
  206. package/dist/EditCommentModal-B5EONiMC.mjs.map +1 -0
  207. package/dist/EditCommentModal-Cm0AUeZC.mjs.map +1 -0
  208. package/dist/EditCommentModal-DXEtAoGB.mjs.map +1 -0
  209. package/dist/EditCommentModal-DnIYnDgm.mjs.map +1 -0
  210. package/dist/EditCommentModal-aAcjhc0v.mjs +162 -0
  211. package/dist/EditCommentModal-aAcjhc0v.mjs.map +1 -0
  212. package/dist/EditCommentModal-gdIIy9S6.mjs.map +1 -0
  213. package/dist/EditCommentModal-ijHxyK2i.mjs.map +1 -0
  214. package/dist/EmissionGroupChooser-6Xr_YnPm.mjs.map +1 -0
  215. package/dist/EmissionGroupChooser-B4eTlGwc.mjs.map +1 -0
  216. package/dist/EmissionGroupChooser-CHSnH9bi.mjs.map +1 -0
  217. package/dist/EmissionGroupChooser-D5vIJgKa.mjs.map +1 -0
  218. package/dist/EmissionGroupChooser-Dbp3MRmr.mjs.map +1 -0
  219. package/dist/EmissionGroupChooser-Djt1IZg7.mjs +82 -0
  220. package/dist/EmissionGroupChooser-Djt1IZg7.mjs.map +1 -0
  221. package/dist/EmissionGroupChooser-V6Z1m2p9.mjs.map +1 -0
  222. package/dist/EmissionInlineList-B2FP-qXy.mjs.map +1 -0
  223. package/dist/EmissionInlineList-BA6lD39h.mjs.map +1 -0
  224. package/dist/EmissionInlineList-BR7vVLE1.mjs.map +1 -0
  225. package/dist/EmissionInlineList-BcrKpW8S.mjs +188 -0
  226. package/dist/EmissionInlineList-BcrKpW8S.mjs.map +1 -0
  227. package/dist/EmissionInlineList-Ffk1ZZnc.mjs.map +1 -0
  228. package/dist/EmissionInlineList-UCPcShqT.mjs.map +1 -0
  229. package/dist/EmissionInlineList-ceUU97Cc.mjs.map +1 -0
  230. package/dist/EmissionInlineList-l-1PJpCA.mjs.map +1 -0
  231. package/dist/EmissionInlineList-ndC4aFjC.mjs.map +1 -0
  232. package/dist/EmissionInlineList-oSllpvoU.mjs.map +1 -0
  233. package/dist/EmissionItem-B2kXySKv.mjs.map +1 -0
  234. package/dist/EmissionItem-B3DS4Kba.mjs.map +1 -0
  235. package/dist/EmissionItem-BEAKxbWX.mjs.map +1 -0
  236. package/dist/EmissionItem-BLFsr1Fl.mjs.map +1 -0
  237. package/dist/EmissionItem-BYIFr69T.mjs.map +1 -0
  238. package/dist/EmissionItem-BbTqH1iV.mjs.map +1 -0
  239. package/dist/EmissionItem-BlI05eTa.mjs.map +1 -0
  240. package/dist/EmissionItem-BoibZZj5.mjs.map +1 -0
  241. package/dist/EmissionItem-CLd1OR-k.mjs.map +1 -0
  242. package/dist/EmissionItem-CTC8CWgE.mjs.map +1 -0
  243. package/dist/EmissionItem-CohA4KNT.mjs.map +1 -0
  244. package/dist/EmissionItem-D6RD7IGy.mjs.map +1 -0
  245. package/dist/EmissionItem-D9bMQ0H_.mjs.map +1 -0
  246. package/dist/EmissionItem-DBNA99th.mjs.map +1 -0
  247. package/dist/EmissionItem-DMXggKFT.mjs.map +1 -0
  248. package/dist/EmissionItem-DZ7uxQTO.mjs.map +1 -0
  249. package/dist/EmissionItem-DfkPRcPz.mjs +183 -0
  250. package/dist/EmissionItem-DfkPRcPz.mjs.map +1 -0
  251. package/dist/EmissionList-9SJj_2Hh.mjs.map +1 -0
  252. package/dist/EmissionList-B-9ftShB.mjs.map +1 -0
  253. package/dist/EmissionList-B2EMPawu.mjs.map +1 -0
  254. package/dist/EmissionList-B5mU-mC-.mjs.map +1 -0
  255. package/dist/EmissionList-BjfjRykZ.mjs.map +1 -0
  256. package/dist/EmissionList-BmdfmkLr.mjs.map +1 -0
  257. package/dist/EmissionList-CB9P_xc7.mjs.map +1 -0
  258. package/dist/EmissionList-CIKE3Jrq.mjs.map +1 -0
  259. package/dist/EmissionList-CNhnplp2.mjs.map +1 -0
  260. package/dist/EmissionList-COo_dI0-.mjs.map +1 -0
  261. package/dist/EmissionList-CkDhqrMV.mjs.map +1 -0
  262. package/dist/EmissionList-Cmg3Ya3P.mjs.map +1 -0
  263. package/dist/EmissionList-CnbykqMn.mjs.map +1 -0
  264. package/dist/EmissionList-D9J0z9Pl.mjs.map +1 -0
  265. package/dist/EmissionList-DGBU4RVZ.mjs.map +1 -0
  266. package/dist/EmissionList-DSXOW3rV.mjs.map +1 -0
  267. package/dist/EmissionList-DSuGp0JO.mjs +325 -0
  268. package/dist/EmissionList-DSuGp0JO.mjs.map +1 -0
  269. package/dist/EmissionList-DeEkxsOh.mjs.map +1 -0
  270. package/dist/EmissionList-DfYoJpvf.mjs.map +1 -0
  271. package/dist/EmissionList-DtfqwNGP.mjs.map +1 -0
  272. package/dist/EmissionList-Jw50np5D.mjs.map +1 -0
  273. package/dist/EmissionList-VJtAKFFJ.mjs.map +1 -0
  274. package/dist/EmissionList-suCUhuix.mjs.map +1 -0
  275. package/dist/EmissionPage-B9lCpiiQ.mjs.map +1 -0
  276. package/dist/EmissionPage-BQo0kzLC.mjs.map +1 -0
  277. package/dist/EmissionPage-BW8jfnOJ.mjs.map +1 -0
  278. package/dist/EmissionPage-Bd05Qxt6.mjs.map +1 -0
  279. package/dist/EmissionPage-Bfi2hUU2.mjs.map +1 -0
  280. package/dist/EmissionPage-Bo9fK8HE.mjs +321 -0
  281. package/dist/EmissionPage-Bo9fK8HE.mjs.map +1 -0
  282. package/dist/EmissionPage-Bqwhwa2t.mjs.map +1 -0
  283. package/dist/EmissionPage-Bu01S0NP.mjs.map +1 -0
  284. package/dist/EmissionPage-BwX_D9d6.mjs.map +1 -0
  285. package/dist/EmissionPage-CPEXAZYD.mjs.map +1 -0
  286. package/dist/EmissionPage-CUBTWecO.mjs.map +1 -0
  287. package/dist/EmissionPage-Ck9-s0RV.mjs.map +1 -0
  288. package/dist/EmissionPage-CuFg7JOu.mjs.map +1 -0
  289. package/dist/EmissionPage-DQvDsQsp.mjs.map +1 -0
  290. package/dist/EmissionPage-DXzAtrRC.mjs.map +1 -0
  291. package/dist/EmissionPage-D_oqtenu.mjs.map +1 -0
  292. package/dist/EmissionPage-DeP8UkIy.mjs.map +1 -0
  293. package/dist/EmissionPage-Deqb9XUC.mjs.map +1 -0
  294. package/dist/EmissionPage-Dhb6H_Kl.mjs.map +1 -0
  295. package/dist/EmissionPage-DoDoB_CR.mjs.map +1 -0
  296. package/dist/EmissionPage-DonnNe4n.mjs.map +1 -0
  297. package/dist/EmissionPage-DyFFNjuT.mjs.map +1 -0
  298. package/dist/EmissionPage-EFg2ql0g.mjs.map +1 -0
  299. package/dist/EmissionPage-L2_noIKg.mjs.map +1 -0
  300. package/dist/EmissionPage-lul5cWKz.mjs.map +1 -0
  301. package/dist/EmissionPage-lx42zAvm.mjs.map +1 -0
  302. package/dist/EmissionPlayerItem-B6dASFay.mjs.map +1 -0
  303. package/dist/EmissionPlayerItem-BSyaaJys.mjs.map +1 -0
  304. package/dist/EmissionPlayerItem-Bro3PBvS.mjs.map +1 -0
  305. package/dist/EmissionPlayerItem-C7LGCHRg.mjs.map +1 -0
  306. package/dist/EmissionPlayerItem-C7bL83VF.mjs.map +1 -0
  307. package/dist/EmissionPlayerItem-Cd2RBeoo.mjs.map +1 -0
  308. package/dist/EmissionPlayerItem-D21OrPmm.mjs +167 -0
  309. package/dist/EmissionPlayerItem-D21OrPmm.mjs.map +1 -0
  310. package/dist/EmissionPlayerItem-DTUbTZN-.mjs.map +1 -0
  311. package/dist/EmissionPlayerItem-Dma90Loi.mjs.map +1 -0
  312. package/dist/EmissionPlayerItem-LpLHHTv-.mjs.map +1 -0
  313. package/dist/EmissionPresentationItem-B8O-2cwB.mjs.map +1 -0
  314. package/dist/EmissionPresentationItem-BnESRu8L.mjs.map +1 -0
  315. package/dist/EmissionPresentationItem-C-DQPWWd.mjs.map +1 -0
  316. package/dist/EmissionPresentationItem-CwDIBurH.mjs +78 -0
  317. package/dist/EmissionPresentationItem-CwDIBurH.mjs.map +1 -0
  318. package/dist/EmissionPresentationItem-Cy8f_V--.mjs.map +1 -0
  319. package/dist/EmissionPresentationItem-D07ln2Kl.mjs.map +1 -0
  320. package/dist/EmissionPresentationItem-Do2k2tXB.mjs.map +1 -0
  321. package/dist/EmissionPresentationList-CASI5laP.mjs +125 -0
  322. package/dist/EmissionPresentationList-CASI5laP.mjs.map +1 -0
  323. package/dist/EmissionPresentationList-CLjQOUSi.mjs.map +1 -0
  324. package/dist/EmissionPresentationList-ZWaIbNGQ.mjs.map +1 -0
  325. package/dist/EmissionPresentationList-_xKn7BVM.mjs.map +1 -0
  326. package/dist/EmissionPresentationList-pR7-HhE9.mjs.map +1 -0
  327. package/dist/EmissionPresentationList-pgnC8ila.mjs.map +1 -0
  328. package/dist/EmissionPresentationList-tBAjuuZ_.mjs.map +1 -0
  329. package/dist/EmissionsPage-1I-INlt1.mjs.map +1 -0
  330. package/dist/EmissionsPage-4oUca-3o.mjs.map +1 -0
  331. package/dist/EmissionsPage-BIaoSADL.mjs.map +1 -0
  332. package/dist/EmissionsPage-BT6f9dPL.mjs.map +1 -0
  333. package/dist/EmissionsPage-BWfhZzd7.mjs.map +1 -0
  334. package/dist/EmissionsPage-Btvaec6y.mjs.map +1 -0
  335. package/dist/EmissionsPage-Bw8Qtzlk.mjs +203 -0
  336. package/dist/EmissionsPage-Bw8Qtzlk.mjs.map +1 -0
  337. package/dist/EmissionsPage-CpGquiTH.mjs.map +1 -0
  338. package/dist/EmissionsPage-Cs-XfyjF.mjs.map +1 -0
  339. package/dist/EmissionsPage-DLV36KkX.mjs.map +1 -0
  340. package/dist/EmissionsPage-DSxvNWsc.mjs.map +1 -0
  341. package/dist/EmissionsPage-DcNKDj6A.mjs.map +1 -0
  342. package/dist/EmissionsPage-DdqK4f6Q.mjs.map +1 -0
  343. package/dist/EmissionsPage-DiPzokz0.mjs.map +1 -0
  344. package/dist/EmissionsPage-DoJRFsfH.mjs.map +1 -0
  345. package/dist/EmissionsPage-Dtr2vdm0.mjs.map +1 -0
  346. package/dist/EmissionsPage-DxMEWeSe.mjs.map +1 -0
  347. package/dist/EmissionsPage-fCTIzDmj.mjs.map +1 -0
  348. package/dist/EmissionsPage-lhgk24_q.mjs.map +1 -0
  349. package/dist/EmissionsPage-oMvRU26s.mjs.map +1 -0
  350. package/dist/EmissionsPage-pDSVGdi1.mjs.map +1 -0
  351. package/dist/EmissionsPage-uOSGXoNi.mjs.map +1 -0
  352. package/dist/EmissionsPage-zEtdeu9d.mjs.map +1 -0
  353. package/dist/Error403Page-2ZGsxyQg.mjs.map +1 -0
  354. package/dist/Error403Page-B6shtnfw.mjs.map +1 -0
  355. package/dist/Error403Page-BE_499ic.mjs.map +1 -0
  356. package/dist/Error403Page-Dp6UD6wV.mjs.map +1 -0
  357. package/dist/Error403Page-eXDhZtve.mjs.map +1 -0
  358. package/dist/Error403Page-nTYCHwTi.mjs +69 -0
  359. package/dist/Error403Page-nTYCHwTi.mjs.map +1 -0
  360. package/dist/Error403Page-pSI5PqlW.mjs.map +1 -0
  361. package/dist/ErrorMessage-D2XAzxpC.mjs +44 -0
  362. package/dist/FooterGarSection-B57uHzQa.mjs.map +1 -0
  363. package/dist/FooterGarSection-BDF9leZK.mjs.map +1 -0
  364. package/dist/FooterGarSection-BEPQcQat.mjs.map +1 -0
  365. package/dist/FooterGarSection-CjnBOMmq.mjs.map +1 -0
  366. package/dist/FooterGarSection-Cod8Key5.mjs +71 -0
  367. package/dist/FooterGarSection-Cod8Key5.mjs.map +1 -0
  368. package/dist/FooterGarSection-Dd2exlg7.mjs.map +1 -0
  369. package/dist/FooterGarSection-DlZabqqx.mjs.map +1 -0
  370. package/dist/FooterSection-0p2-D23p.mjs.map +1 -0
  371. package/dist/FooterSection-4WXBZj7c.mjs +242 -0
  372. package/dist/FooterSection-4WXBZj7c.mjs.map +1 -0
  373. package/dist/FooterSection-B4MhxsRW.mjs.map +1 -0
  374. package/dist/FooterSection-C0nh0fkt.mjs.map +1 -0
  375. package/dist/FooterSection-C5OUzabm.mjs.map +1 -0
  376. package/dist/FooterSection-CdNPgHa9.mjs.map +1 -0
  377. package/dist/FooterSection-zE__CNyU.mjs.map +1 -0
  378. package/dist/HomeDropdown-B2O9JXxA.mjs.map +1 -0
  379. package/dist/HomeDropdown-C-irmlnL.mjs.map +1 -0
  380. package/dist/HomeDropdown-C59VkjxF.mjs.map +1 -0
  381. package/dist/HomeDropdown-CVe7yF6Y.mjs +110 -0
  382. package/dist/HomeDropdown-CVe7yF6Y.mjs.map +1 -0
  383. package/dist/HomeDropdown-CvyjhjjS.mjs.map +1 -0
  384. package/dist/HomeDropdown-Do7pmzYN.mjs.map +1 -0
  385. package/dist/HomeDropdown-DrHIweWi.mjs.map +1 -0
  386. package/dist/HomeDropdown-JzQ8GhH9.mjs.map +1 -0
  387. package/dist/HomeDropdown-cDYBGunU.mjs.map +1 -0
  388. package/dist/HomeDropdown-oe1ivdNP.mjs.map +1 -0
  389. package/dist/HomePage-5az5D-Yv.mjs.map +1 -0
  390. package/dist/HomePage-7HQ3VlrH.mjs.map +1 -0
  391. package/dist/HomePage-8KEsQJpt.mjs.map +1 -0
  392. package/dist/HomePage-B8R4ASas.mjs.map +1 -0
  393. package/dist/HomePage-BRMsVAmm.mjs.map +1 -0
  394. package/dist/HomePage-BryU6FJO.mjs.map +1 -0
  395. package/dist/HomePage-BxRn4fld.mjs.map +1 -0
  396. package/dist/HomePage-C5EsfVOr.mjs.map +1 -0
  397. package/dist/HomePage-CK0o_w6i.mjs.map +1 -0
  398. package/dist/HomePage-CPTa3eEL.mjs.map +1 -0
  399. package/dist/HomePage-CimQHTL2.mjs.map +1 -0
  400. package/dist/HomePage-Cjvs7boa.mjs.map +1 -0
  401. package/dist/HomePage-CusID824.mjs.map +1 -0
  402. package/dist/HomePage-CwZrKhQh.mjs.map +1 -0
  403. package/dist/HomePage-DTY-eGSo.mjs.map +1 -0
  404. package/dist/HomePage-DeZAI4VG.mjs.map +1 -0
  405. package/dist/HomePage-DhvFKhKJ.mjs.map +1 -0
  406. package/dist/HomePage-DupmOw6F.mjs +166 -0
  407. package/dist/HomePage-DupmOw6F.mjs.map +1 -0
  408. package/dist/HomePage-M4Lw6H8s.mjs.map +1 -0
  409. package/dist/HomePage-VP6O8_Bs.mjs.map +1 -0
  410. package/dist/HomePage-faSBEgGz.mjs.map +1 -0
  411. package/dist/HomePage-lhzTXe8T.mjs.map +1 -0
  412. package/dist/HomePage-xKHBKtuP.mjs.map +1 -0
  413. package/dist/InlineRubriqueList--qtzh_Hn.mjs.map +1 -0
  414. package/dist/InlineRubriqueList-BFU1JbYh.mjs.map +1 -0
  415. package/dist/InlineRubriqueList-BUnp56-v.mjs.map +1 -0
  416. package/dist/InlineRubriqueList-CH8DXeJL.mjs.map +1 -0
  417. package/dist/InlineRubriqueList-Cl-32U4Z.mjs.map +1 -0
  418. package/dist/InlineRubriqueList-ULB9tKco.mjs.map +1 -0
  419. package/dist/LikeSection-B0v1dsWx.mjs.map +1 -0
  420. package/dist/LikeSection-BGVB89kL.mjs.map +1 -0
  421. package/dist/LikeSection-BdYecoMr.mjs.map +1 -0
  422. package/dist/LikeSection-DAid96g9.mjs +167 -0
  423. package/dist/LikeSection-DAid96g9.mjs.map +1 -0
  424. package/dist/LikeSection-DK8IjxJp.mjs.map +1 -0
  425. package/dist/LikeSection-DPiqgbt9.mjs.map +1 -0
  426. package/dist/LikeSection-H2vKvy-f.mjs.map +1 -0
  427. package/dist/ListPaginate-Bd2k_m7g.mjs.map +1 -0
  428. package/dist/ListPaginate-C4wfbhAy.mjs.map +1 -0
  429. package/dist/ListPaginate-C9saxru9.mjs +202 -0
  430. package/dist/ListPaginate-C9saxru9.mjs.map +1 -0
  431. package/dist/ListPaginate-CRLXFBE9.mjs.map +1 -0
  432. package/dist/ListPaginate-CoKmqjc3.mjs.map +1 -0
  433. package/dist/ListPaginate-CyvW8asz.mjs.map +1 -0
  434. package/dist/ListPaginate-Dd5Wo9Ez.mjs.map +1 -0
  435. package/dist/ListPaginate-DeAb3inq.mjs.map +1 -0
  436. package/dist/ListPaginate-JdCX7pqr.mjs.map +1 -0
  437. package/dist/ListPaginate-ufwR5ie8.mjs.map +1 -0
  438. package/dist/LiveHorizontalList-2iae53EG.mjs.map +1 -0
  439. package/dist/LiveHorizontalList-4V7_Xbtn.mjs.map +1 -0
  440. package/dist/LiveHorizontalList-BIWO3a1G.mjs.map +1 -0
  441. package/dist/LiveHorizontalList-BOHwFCmV.mjs.map +1 -0
  442. package/dist/LiveHorizontalList-BXOCxx-l.mjs.map +1 -0
  443. package/dist/LiveHorizontalList-BhaTufMC.mjs.map +1 -0
  444. package/dist/LiveHorizontalList-C1RgGoCz.mjs.map +1 -0
  445. package/dist/LiveHorizontalList-C49Pr62Y.mjs.map +1 -0
  446. package/dist/LiveHorizontalList-C5c498yh.mjs.map +1 -0
  447. package/dist/LiveHorizontalList-CVEFC6yj.mjs.map +1 -0
  448. package/dist/LiveHorizontalList-CdYuSLq-.mjs.map +1 -0
  449. package/dist/LiveHorizontalList-Cdb4p_5t.mjs.map +1 -0
  450. package/dist/LiveHorizontalList-Cj9FVcN3.mjs.map +1 -0
  451. package/dist/LiveHorizontalList-Cjsn7a7R.mjs.map +1 -0
  452. package/dist/LiveHorizontalList-CmipbrCY.mjs.map +1 -0
  453. package/dist/LiveHorizontalList-DnypNGd9.mjs.map +1 -0
  454. package/dist/LiveHorizontalList-N5kqVgHN.mjs.map +1 -0
  455. package/dist/LiveHorizontalList-OArlzudf.mjs +136 -0
  456. package/dist/LiveHorizontalList-OArlzudf.mjs.map +1 -0
  457. package/dist/LiveHorizontalList-TvQOWk4-.mjs.map +1 -0
  458. package/dist/LiveHorizontalList-nWI0qroI.mjs.map +1 -0
  459. package/dist/LiveHorizontalList-nr5SDpf7.mjs.map +1 -0
  460. package/dist/LiveHorizontalList-vctqGzhw.mjs.map +1 -0
  461. package/dist/LiveHorizontalList-xsK1YBk8.mjs.map +1 -0
  462. package/dist/LiveList-27ZK33PI.mjs.map +1 -0
  463. package/dist/LiveList-4CELVzQf.mjs.map +1 -0
  464. package/dist/LiveList-5Jr86aqP.mjs.map +1 -0
  465. package/dist/LiveList-BG3bYTX1.mjs.map +1 -0
  466. package/dist/LiveList-BVdbug8L.mjs.map +1 -0
  467. package/dist/LiveList-BhJzZtsK.mjs.map +1 -0
  468. package/dist/LiveList-BktWteQI.mjs.map +1 -0
  469. package/dist/LiveList-BzY2JeuX.mjs.map +1 -0
  470. package/dist/LiveList-COFy24Se.mjs.map +1 -0
  471. package/dist/LiveList-CfYytFf0.mjs.map +1 -0
  472. package/dist/LiveList-CnKmk6vW.mjs.map +1 -0
  473. package/dist/LiveList-CqFeDsPT.mjs.map +1 -0
  474. package/dist/LiveList-DJdSqokI.mjs.map +1 -0
  475. package/dist/LiveList-DPW7quuq.mjs.map +1 -0
  476. package/dist/LiveList-DQrc6QQJ.mjs.map +1 -0
  477. package/dist/LiveList-DlDxiuC9.mjs.map +1 -0
  478. package/dist/LiveList-Dl_p5YxR.mjs.map +1 -0
  479. package/dist/LiveList-EqIo_cye.mjs +324 -0
  480. package/dist/LiveList-EqIo_cye.mjs.map +1 -0
  481. package/dist/LiveList-Fy-uoUtP.mjs.map +1 -0
  482. package/dist/LiveList-PttlKWUz.mjs.map +1 -0
  483. package/dist/LiveList-QNwC_v3h.mjs.map +1 -0
  484. package/dist/LiveList-frCm0YUz.mjs.map +1 -0
  485. package/dist/LiveList-qM8p7_8L.mjs.map +1 -0
  486. package/dist/LivesPage-6CAOhHPM.mjs.map +1 -0
  487. package/dist/LivesPage-8sZKxqof.mjs.map +1 -0
  488. package/dist/LivesPage-B28kYZ0m.mjs.map +1 -0
  489. package/dist/LivesPage-B7IfxJIY.mjs.map +1 -0
  490. package/dist/LivesPage-BANezaiF.mjs.map +1 -0
  491. package/dist/LivesPage-BET6rskp.mjs.map +1 -0
  492. package/dist/LivesPage-BZE6Cuso.mjs.map +1 -0
  493. package/dist/LivesPage-BduKDDZR.mjs.map +1 -0
  494. package/dist/LivesPage-BmHiBN8A.mjs +76 -0
  495. package/dist/LivesPage-BmHiBN8A.mjs.map +1 -0
  496. package/dist/LivesPage-C2a99gDl.mjs.map +1 -0
  497. package/dist/LivesPage-CN6N1PC1.mjs.map +1 -0
  498. package/dist/LivesPage-C_4v__A1.mjs.map +1 -0
  499. package/dist/LivesPage-Csjv5D11.mjs.map +1 -0
  500. package/dist/LivesPage-CtcBGQ8T.mjs.map +1 -0
  501. package/dist/LivesPage-D40r5Lwh.mjs.map +1 -0
  502. package/dist/LivesPage-DJNVUt5d.mjs.map +1 -0
  503. package/dist/LivesPage-DTWENS6q.mjs.map +1 -0
  504. package/dist/LivesPage-Dd6LypFH.mjs.map +1 -0
  505. package/dist/LivesPage-DuoAA-lO.mjs.map +1 -0
  506. package/dist/LivesPage-DuufafsJ.mjs.map +1 -0
  507. package/dist/LivesPage-aCHG0gv6.mjs.map +1 -0
  508. package/dist/LivesPage-fva1WuLM.mjs.map +1 -0
  509. package/dist/LivesPage-oMr1p499.mjs.map +1 -0
  510. package/dist/MapPage-BKZn3rfC.mjs.map +1 -0
  511. package/dist/MapPage-DNYLnSfI.mjs.map +1 -0
  512. package/dist/MapPage-DNlE1kZ9.mjs.map +1 -0
  513. package/dist/MapPage-DQ_I97DW.mjs.map +1 -0
  514. package/dist/MapPage-DcXKTGGh.mjs +303 -0
  515. package/dist/MapPage-DcXKTGGh.mjs.map +1 -0
  516. package/dist/MapPage-DeJqn9eC.mjs.map +1 -0
  517. package/dist/MapPage-Dpo_47LR.mjs.map +1 -0
  518. package/dist/MapPage-HJ4ZZnMq.mjs.map +1 -0
  519. package/dist/MobileMenu-BiBDgk9I.mjs.map +1 -0
  520. package/dist/MobileMenu-BwJW2290.mjs.map +1 -0
  521. package/dist/MobileMenu-C0IYBWwF.mjs +187 -0
  522. package/dist/MobileMenu-C0IYBWwF.mjs.map +1 -0
  523. package/dist/MobileMenu-C0MEy9i4.mjs.map +1 -0
  524. package/dist/MobileMenu-C7x9kTfb.mjs.map +1 -0
  525. package/dist/MobileMenu-Cikp6JqC.mjs.map +1 -0
  526. package/dist/MobileMenu-DaReb5ay.mjs.map +1 -0
  527. package/dist/MobileMenu-DmSYAvzO.mjs.map +1 -0
  528. package/dist/MobileMenu-F6gNVILC.mjs.map +1 -0
  529. package/dist/MobileMenu-lyFxgs3v.mjs.map +1 -0
  530. package/dist/NewsletterModal-B1L2b83e.mjs.map +1 -0
  531. package/dist/NewsletterModal-BYf7hjjF.mjs.map +1 -0
  532. package/dist/NewsletterModal-Bwm1tVMY.mjs.map +1 -0
  533. package/dist/NewsletterModal-BzlUlz3P.mjs +82 -0
  534. package/dist/NewsletterModal-BzlUlz3P.mjs.map +1 -0
  535. package/dist/NewsletterModal-DnGU_DPG.mjs.map +1 -0
  536. package/dist/NewsletterModal-Lw14Nta1.mjs.map +1 -0
  537. package/dist/NewsletterModal-qoiuDGDv.mjs.map +1 -0
  538. package/dist/OrganisationChooser-B4s8-G76.mjs.map +1 -0
  539. package/dist/OrganisationChooser-BIZ1r5Ob.mjs.map +1 -0
  540. package/dist/OrganisationChooser-Bm4zqqCH.mjs +190 -0
  541. package/dist/OrganisationChooser-Bm4zqqCH.mjs.map +1 -0
  542. package/dist/OrganisationChooser-CWi5UGUR.mjs.map +1 -0
  543. package/dist/OrganisationChooser-Dmx0Pg9N.mjs.map +1 -0
  544. package/dist/OrganisationChooser-kYErGYWa.mjs.map +1 -0
  545. package/dist/OrganisationChooser-mf2Dujhz.mjs.map +1 -0
  546. package/dist/OrganisationChooserLight-BQ9B91mO.mjs +84 -0
  547. package/dist/OrganisationChooserLight-BQ9B91mO.mjs.map +1 -0
  548. package/dist/OrganisationChooserLight-BmGzDuZ7.mjs.map +1 -0
  549. package/dist/OrganisationChooserLight-C7MbrnxT.mjs.map +1 -0
  550. package/dist/OrganisationChooserLight-D4HKhLcj.mjs.map +1 -0
  551. package/dist/OrganisationChooserLight-DWHyc1j1.mjs.map +1 -0
  552. package/dist/OrganisationChooserLight-DnbEN0zj.mjs.map +1 -0
  553. package/dist/OrganisationChooserLight-DrQmF9rG.mjs.map +1 -0
  554. package/dist/PageNotFound-9Cy6R2Cf.mjs.map +1 -0
  555. package/dist/PageNotFound-BHJUNHoj.mjs.map +1 -0
  556. package/dist/PageNotFound-BVQ8M8sO.mjs +58 -0
  557. package/dist/PageNotFound-BVQ8M8sO.mjs.map +1 -0
  558. package/dist/PageNotFound-Ba-YFc_3.mjs.map +1 -0
  559. package/dist/PageNotFound-C9sl5i0p.mjs.map +1 -0
  560. package/dist/PageNotFound-Cis2CQw7.mjs.map +1 -0
  561. package/dist/PageNotFound-D4Eiaibz.mjs.map +1 -0
  562. package/dist/ParticipantInlineList-0QmS7-RU.mjs.map +1 -0
  563. package/dist/ParticipantInlineList-2awuAYfB.mjs.map +1 -0
  564. package/dist/ParticipantInlineList-BQtQZFW1.mjs +117 -0
  565. package/dist/ParticipantInlineList-BQtQZFW1.mjs.map +1 -0
  566. package/dist/ParticipantInlineList-BcjalXxU.mjs.map +1 -0
  567. package/dist/ParticipantInlineList-C9mZNGSZ.mjs.map +1 -0
  568. package/dist/ParticipantInlineList-CCY2SSkV.mjs.map +1 -0
  569. package/dist/ParticipantInlineList-CKOQyog2.mjs.map +1 -0
  570. package/dist/ParticipantInlineList-DLb2b4Gt.mjs.map +1 -0
  571. package/dist/ParticipantInlineList-DPnu2vTh.mjs.map +1 -0
  572. package/dist/ParticipantInlineList-Dj936NBW.mjs.map +1 -0
  573. package/dist/ParticipantInlineList-DqN6OdCz.mjs.map +1 -0
  574. package/dist/ParticipantItem-1XWhKUQD.mjs.map +1 -0
  575. package/dist/ParticipantItem-B7qsEz6M.mjs.map +1 -0
  576. package/dist/ParticipantItem-B88oNUfZ.mjs.map +1 -0
  577. package/dist/ParticipantItem-BNPAHoi3.mjs.map +1 -0
  578. package/dist/ParticipantItem-BmK2VRYu.mjs.map +1 -0
  579. package/dist/ParticipantItem-Bs_gNwGW.mjs.map +1 -0
  580. package/dist/ParticipantItem-Cn4-Qv_1.mjs.map +1 -0
  581. package/dist/ParticipantItem-DTEfkS8k.mjs.map +1 -0
  582. package/dist/ParticipantItem-D_Dne2h4.mjs.map +1 -0
  583. package/dist/ParticipantItem-DipPvAao.mjs.map +1 -0
  584. package/dist/ParticipantItem-EDPkxTT-.mjs +138 -0
  585. package/dist/ParticipantItem-EDPkxTT-.mjs.map +1 -0
  586. package/dist/ParticipantPage--J_EFJh8.mjs.map +1 -0
  587. package/dist/ParticipantPage-4hRMry0C.mjs.map +1 -0
  588. package/dist/ParticipantPage-AG1lEl55.mjs.map +1 -0
  589. package/dist/ParticipantPage-B1wkaGH3.mjs.map +1 -0
  590. package/dist/ParticipantPage-BF-s1oof.mjs +203 -0
  591. package/dist/ParticipantPage-BF-s1oof.mjs.map +1 -0
  592. package/dist/ParticipantPage-BNhCWYFu.mjs.map +1 -0
  593. package/dist/ParticipantPage-BP-T9GMa.mjs.map +1 -0
  594. package/dist/ParticipantPage-BTHrpoC0.mjs.map +1 -0
  595. package/dist/ParticipantPage-BaIKPKsv.mjs.map +1 -0
  596. package/dist/ParticipantPage-BiaFxBN8.mjs.map +1 -0
  597. package/dist/ParticipantPage-BlY0nTcW.mjs.map +1 -0
  598. package/dist/ParticipantPage-BpgJ2Aki.mjs.map +1 -0
  599. package/dist/ParticipantPage-C2bFuI6I.mjs.map +1 -0
  600. package/dist/ParticipantPage-CuJvnl3u.mjs.map +1 -0
  601. package/dist/ParticipantPage-DA_Trp_R.mjs.map +1 -0
  602. package/dist/ParticipantPage-DCoMqZqe.mjs.map +1 -0
  603. package/dist/ParticipantPage-DDm4yGpb.mjs.map +1 -0
  604. package/dist/ParticipantPage-DL4xWmbI.mjs.map +1 -0
  605. package/dist/ParticipantPage-DLNOl1Qb.mjs.map +1 -0
  606. package/dist/ParticipantPage-Djlce4sF.mjs.map +1 -0
  607. package/dist/ParticipantPage-Dm53yHRD.mjs.map +1 -0
  608. package/dist/ParticipantPage-DuOP6rmZ.mjs.map +1 -0
  609. package/dist/ParticipantPage-gmfpQwdZ.mjs.map +1 -0
  610. package/dist/ParticipantsPage-2M5CDcOB.mjs.map +1 -0
  611. package/dist/ParticipantsPage-805CIGNH.mjs.map +1 -0
  612. package/dist/ParticipantsPage-B3oHxdok.mjs.map +1 -0
  613. package/dist/ParticipantsPage-B5T1ghhB.mjs.map +1 -0
  614. package/dist/ParticipantsPage-BGkiNOiq.mjs.map +1 -0
  615. package/dist/ParticipantsPage-Bzt8Hxah.mjs +262 -0
  616. package/dist/ParticipantsPage-Bzt8Hxah.mjs.map +1 -0
  617. package/dist/ParticipantsPage-ClEqgXcX.mjs.map +1 -0
  618. package/dist/ParticipantsPage-CpruGkFh.mjs.map +1 -0
  619. package/dist/ParticipantsPage-D2SRat-R.mjs.map +1 -0
  620. package/dist/ParticipantsPage-DHFX8NSb.mjs.map +1 -0
  621. package/dist/ParticipantsPage-DNEkxU54.mjs.map +1 -0
  622. package/dist/ParticipantsPage-DOVeAgla.mjs.map +1 -0
  623. package/dist/ParticipantsPage-DRXywxK0.mjs.map +1 -0
  624. package/dist/ParticipantsPage-Dmg-VK72.mjs.map +1 -0
  625. package/dist/ParticipantsPage-Dx0eYoes.mjs.map +1 -0
  626. package/dist/ParticipantsPage-H3tDwQT0.mjs.map +1 -0
  627. package/dist/ParticipantsPage-NNKI7B9n.mjs.map +1 -0
  628. package/dist/PlayerAnonymousModal-BQZc00Xn.mjs.map +1 -0
  629. package/dist/PlayerAnonymousModal-CK7j1FMR.mjs.map +1 -0
  630. package/dist/PlayerAnonymousModal-CbrqO1hs.mjs +84 -0
  631. package/dist/PlayerAnonymousModal-CbrqO1hs.mjs.map +1 -0
  632. package/dist/PlayerAnonymousModal-Dijmkqu8.mjs.map +1 -0
  633. package/dist/PlayerAnonymousModal-_WrcKqau.mjs.map +1 -0
  634. package/dist/PlayerAnonymousModal-ajR4XVns.mjs.map +1 -0
  635. package/dist/PlayerAnonymousModal-xbNVHN1W.mjs.map +1 -0
  636. package/dist/PlayerCompact-B3vazvXQ.mjs.map +1 -0
  637. package/dist/PlayerCompact-BMFvotPc.mjs.map +1 -0
  638. package/dist/PlayerCompact-BtKfz384.mjs +209 -0
  639. package/dist/PlayerCompact-BtKfz384.mjs.map +1 -0
  640. package/dist/PlayerCompact-BufVX2cO.mjs.map +1 -0
  641. package/dist/PlayerCompact-C0qeoF6t.mjs.map +1 -0
  642. package/dist/PlayerCompact-C5pyXZ0r.mjs.map +1 -0
  643. package/dist/PlayerCompact-CPpmzSgo.mjs.map +1 -0
  644. package/dist/PlayerCompact-DFG_1eGA.mjs.map +1 -0
  645. package/dist/PlayerCompact-DhEaMjeR.mjs.map +1 -0
  646. package/dist/PlayerCompact-Yxet-KPH.mjs.map +1 -0
  647. package/dist/PlayerComponent-1miDnPlr.mjs.map +1 -0
  648. package/dist/PlayerComponent-7CwJe6jm.mjs.map +1 -0
  649. package/dist/PlayerComponent-BMRyYtfE.mjs.map +1 -0
  650. package/dist/PlayerComponent-BazIiHAy.mjs.map +1 -0
  651. package/dist/PlayerComponent-BbzxGZH-.mjs.map +1 -0
  652. package/dist/PlayerComponent-Be52Rt8I.mjs.map +1 -0
  653. package/dist/PlayerComponent-BmttQ3jo.mjs.map +1 -0
  654. package/dist/PlayerComponent-BnVxoj3O.mjs.map +1 -0
  655. package/dist/PlayerComponent-BpnCCs3E.mjs.map +1 -0
  656. package/dist/PlayerComponent-C2YIwb2q.mjs.map +1 -0
  657. package/dist/PlayerComponent-CnoZ6Y-9.mjs.map +1 -0
  658. package/dist/PlayerComponent-CxNkDcFc.mjs +929 -0
  659. package/dist/PlayerComponent-CxNkDcFc.mjs.map +1 -0
  660. package/dist/PlayerComponent-DEkRPZQR.mjs.map +1 -0
  661. package/dist/PlayerComponent-DXlHOD4w.mjs.map +1 -0
  662. package/dist/PlayerComponent-DyA6bMmR.mjs.map +1 -0
  663. package/dist/PlayerComponent-IqKYwKv1.mjs.map +1 -0
  664. package/dist/PlayerComponent-J0Cc9wsb.mjs.map +1 -0
  665. package/dist/PlayerComponent-TIoq18vF.mjs.map +1 -0
  666. package/dist/PlayerComponent-U0tt1h3d.mjs.map +1 -0
  667. package/dist/PlayerComponent-VNqZwMUm.mjs.map +1 -0
  668. package/dist/PlayerComponent-Xzg-pRAe.mjs.map +1 -0
  669. package/dist/PlayerComponent-YWZ0Vxg3.mjs.map +1 -0
  670. package/dist/PlayerComponent-uqqCktqA.mjs.map +1 -0
  671. package/dist/PlayerLarge-05dow_hZ.mjs.map +1 -0
  672. package/dist/PlayerLarge-B57dwz3L.mjs.map +1 -0
  673. package/dist/PlayerLarge-BFh3FwHg.mjs.map +1 -0
  674. package/dist/PlayerLarge-BH6BLQxk.mjs +190 -0
  675. package/dist/PlayerLarge-BH6BLQxk.mjs.map +1 -0
  676. package/dist/PlayerLarge-BNhwhDRC.mjs.map +1 -0
  677. package/dist/PlayerLarge-BVrKKbRz.mjs.map +1 -0
  678. package/dist/PlayerLarge-BZXXKBtl.mjs.map +1 -0
  679. package/dist/PlayerLarge-Bd7VO3Gm.mjs.map +1 -0
  680. package/dist/PlayerLarge-C3folsKJ.mjs.map +1 -0
  681. package/dist/PlayerLarge-CByR81Zt.mjs.map +1 -0
  682. package/dist/PlayerLarge-CGcC_etA.mjs.map +1 -0
  683. package/dist/PlayerLarge-CYtav65N.mjs.map +1 -0
  684. package/dist/PlayerLarge-CiEntvvh.mjs.map +1 -0
  685. package/dist/PlayerLarge-CvrF44iD.mjs.map +1 -0
  686. package/dist/PlayerLarge-D4EofBSA.mjs.map +1 -0
  687. package/dist/PlayerLarge-D5MSeK1K.mjs.map +1 -0
  688. package/dist/PlayerLarge-DJdz-os2.mjs.map +1 -0
  689. package/dist/PlayerLarge-DevF-ro-.mjs.map +1 -0
  690. package/dist/PlayerLarge-DhYPHjrD.mjs.map +1 -0
  691. package/dist/PlayerLarge-DxbCmLJv.mjs.map +1 -0
  692. package/dist/PlayerLarge-_7SvArsB.mjs.map +1 -0
  693. package/dist/PlayerLarge-bjFQK8Pq.mjs.map +1 -0
  694. package/dist/PlayerLarge-hgL_YHi1.mjs.map +1 -0
  695. package/dist/PlayerPlayButton-BByLT_Ul.mjs.map +1 -0
  696. package/dist/PlayerPlayButton-C7G0zpe1.mjs.map +1 -0
  697. package/dist/PlayerPlayButton-CNJC1Q1o.mjs.map +1 -0
  698. package/dist/PlayerPlayButton-CQctg0DC.mjs.map +1 -0
  699. package/dist/PlayerPlayButton-ChTtDCxC.mjs.map +1 -0
  700. package/dist/PlayerPlayButton-D0xWhQEA.mjs.map +1 -0
  701. package/dist/PlayerPlayButton-DRlPQMAR.mjs.map +1 -0
  702. package/dist/PlayerPlayButton-DT2OdqnI.mjs +400 -0
  703. package/dist/PlayerPlayButton-DT2OdqnI.mjs.map +1 -0
  704. package/dist/PlayerPlayButton-DXcJfKqe.mjs.map +1 -0
  705. package/dist/PlayerPlayButton-Da8BOzXl.mjs.map +1 -0
  706. package/dist/PlayerProgressBar-BVa4r4HY.mjs.map +1 -0
  707. package/dist/PlayerProgressBar-BubTyMNk.mjs.map +1 -0
  708. package/dist/PlayerProgressBar-CLOxWNjE.mjs.map +1 -0
  709. package/dist/PlayerProgressBar-CSNAF4gM.mjs.map +1 -0
  710. package/dist/PlayerProgressBar-CSYnPjZb.mjs +86 -0
  711. package/dist/PlayerProgressBar-CSYnPjZb.mjs.map +1 -0
  712. package/dist/PlayerProgressBar-DCcrFNRg.mjs.map +1 -0
  713. package/dist/PlayerProgressBar-Dx4O66nN.mjs.map +1 -0
  714. package/dist/PlayerProgressBar-iD7TCuuu.mjs.map +1 -0
  715. package/dist/PlayerProgressBar-vbkLNd6c.mjs.map +1 -0
  716. package/dist/PlayerProgressBar-xeDACSGZ.mjs.map +1 -0
  717. package/dist/PlayerStore-5zaKR9j0.mjs.map +1 -0
  718. package/dist/PlayerStore-60cKerrm.mjs.map +1 -0
  719. package/dist/PlayerStore-8FjLbgl2.mjs.map +1 -0
  720. package/dist/PlayerStore-CNnuCZlq.mjs.map +1 -0
  721. package/dist/PlayerStore-CRzI2s3a.mjs.map +1 -0
  722. package/dist/PlayerStore-CeVB4Y9L.mjs.map +1 -0
  723. package/dist/PlayerStore-DukkcHI_.mjs +230 -0
  724. package/dist/PlayerStore-DukkcHI_.mjs.map +1 -0
  725. package/dist/PlayerStore-GRv7Jdjd.mjs.map +1 -0
  726. package/dist/PlayerStore-PXL_fAz0.mjs.map +1 -1
  727. package/dist/PlayerStore-eQ7J_A8B.mjs.map +1 -0
  728. package/dist/PlayerStore-kzJYRhsu.mjs.map +1 -0
  729. package/dist/PlayerVideo-B9WIL8uC.mjs.map +1 -0
  730. package/dist/PlayerVideo-BYyvgMn7.mjs.map +1 -0
  731. package/dist/PlayerVideo-BuUqFzuB.mjs.map +1 -0
  732. package/dist/PlayerVideo-CUw-XoOv.mjs.map +1 -0
  733. package/dist/PlayerVideo-Cp79Q0xa.mjs.map +1 -0
  734. package/dist/PlayerVideo-DSBabkhM.mjs.map +1 -0
  735. package/dist/PlayerVideo-DT53YLfR.mjs.map +1 -0
  736. package/dist/PlayerVideo-DnvuuhD3.mjs.map +1 -0
  737. package/dist/PlayerVideo-DqCgiiXY.mjs.map +1 -0
  738. package/dist/PlayerVideo-_Uz00K_T.mjs +72 -0
  739. package/dist/PlayerVideo-_Uz00K_T.mjs.map +1 -0
  740. package/dist/PlayerVideoDigiteka-BJG8ITDo.mjs.map +1 -0
  741. package/dist/PlayerVideoDigiteka-BWIELEln.mjs.map +1 -0
  742. package/dist/PlayerVideoDigiteka-Bj8EI8Vh.mjs.map +1 -0
  743. package/dist/PlayerVideoDigiteka-CAG3rdnX.mjs.map +1 -0
  744. package/dist/PlayerVideoDigiteka-CiRYWcID.mjs.map +1 -0
  745. package/dist/PlayerVideoDigiteka-CjfuxXBF.mjs +102 -0
  746. package/dist/PlayerVideoDigiteka-CjfuxXBF.mjs.map +1 -0
  747. package/dist/PlayerVideoDigiteka-DN8n3Jxq.mjs.map +1 -0
  748. package/dist/PlayerVideoDigiteka-DY4OoYTJ.mjs.map +1 -0
  749. package/dist/PlayerVideoDigiteka-Dc4a8IkC.mjs.map +1 -0
  750. package/dist/PlayerVideoDigiteka-qyjjRcQQ.mjs.map +1 -0
  751. package/dist/PlayerVideoHls-BOFzAoa3.mjs.map +1 -0
  752. package/dist/PlayerVideoHls-BiWjHBsI.mjs.map +1 -0
  753. package/dist/PlayerVideoHls-Bik9D8KG.mjs.map +1 -0
  754. package/dist/PlayerVideoHls-DZLVTzRl.mjs.map +1 -0
  755. package/dist/PlayerVideoHls-DZZOba8L.mjs.map +1 -0
  756. package/dist/PlayerVideoHls-Dd9BFrew.mjs.map +1 -0
  757. package/dist/PlayerVideoHls-Dms7iTSo.mjs +232 -0
  758. package/dist/PlayerVideoHls-Dms7iTSo.mjs.map +1 -0
  759. package/dist/PlayerVideoHls-DyJ8irhG.mjs.map +1 -0
  760. package/dist/PlayerVideoHls-OOa2t3MT.mjs.map +1 -0
  761. package/dist/PlayerVideoHls-dr09QCjD.mjs.map +1 -0
  762. package/dist/PlaylistPage-B2hFKkAv.mjs.map +1 -0
  763. package/dist/PlaylistPage-BAJzOrcZ.mjs.map +1 -0
  764. package/dist/PlaylistPage-BFzaFrk8.mjs.map +1 -0
  765. package/dist/PlaylistPage-BWGNcb-A.mjs.map +1 -0
  766. package/dist/PlaylistPage-BsKXFeFm.mjs.map +1 -0
  767. package/dist/PlaylistPage-BvzjRZLw.mjs.map +1 -0
  768. package/dist/PlaylistPage-ByKMBX8O.mjs.map +1 -0
  769. package/dist/PlaylistPage-C4k2MCZc.mjs.map +1 -0
  770. package/dist/PlaylistPage-CGTvxari.mjs.map +1 -0
  771. package/dist/PlaylistPage-CQX0LhXn.mjs +228 -0
  772. package/dist/PlaylistPage-CQX0LhXn.mjs.map +1 -0
  773. package/dist/PlaylistPage-Cblx6kNd.mjs.map +1 -0
  774. package/dist/PlaylistPage-CwVpUncO.mjs.map +1 -0
  775. package/dist/PlaylistPage-D53unoXd.mjs.map +1 -0
  776. package/dist/PlaylistPage-DF6OZfEI.mjs.map +1 -0
  777. package/dist/PlaylistPage-DIoRS6bd.mjs.map +1 -0
  778. package/dist/PlaylistPage-DVDJuxke.mjs.map +1 -0
  779. package/dist/PlaylistPage-DcLuUZOA.mjs.map +1 -0
  780. package/dist/PlaylistPage-DgIsQgK7.mjs.map +1 -0
  781. package/dist/PlaylistPage-NJ1Hnlqo.mjs.map +1 -0
  782. package/dist/PlaylistPage-WTPqFXVM.mjs.map +1 -0
  783. package/dist/PlaylistPage-fjh0_l7f.mjs.map +1 -0
  784. package/dist/PlaylistPage-wGdsk4QD.mjs.map +1 -0
  785. package/dist/PlaylistPage-xr2bRlAd.mjs.map +1 -0
  786. package/dist/PlaylistsPage-B9fZRSvo.mjs.map +1 -0
  787. package/dist/PlaylistsPage-B_GN-39y.mjs.map +1 -0
  788. package/dist/PlaylistsPage-Bd-u4qlc.mjs +395 -0
  789. package/dist/PlaylistsPage-Bd-u4qlc.mjs.map +1 -0
  790. package/dist/PlaylistsPage-BtvL4wmM.mjs.map +1 -0
  791. package/dist/PlaylistsPage-BxDz1lU1.mjs.map +1 -0
  792. package/dist/PlaylistsPage-By_6bJRK.mjs.map +1 -0
  793. package/dist/PlaylistsPage-D5HAcyB-.mjs.map +1 -0
  794. package/dist/PlaylistsPage-D9cPN097.mjs.map +1 -0
  795. package/dist/PlaylistsPage-DkNrqJSI.mjs.map +1 -0
  796. package/dist/PlaylistsPage-dC5HAWiA.mjs.map +1 -0
  797. package/dist/PodcastFilterList-86Cn0XEU.mjs.map +1 -0
  798. package/dist/PodcastFilterList-AkO-iZPa.mjs.map +1 -0
  799. package/dist/PodcastFilterList-BQWDrkLL.mjs.map +1 -0
  800. package/dist/PodcastFilterList-Bo9ju0PM.mjs.map +1 -0
  801. package/dist/PodcastFilterList-C7dYqf5D.mjs.map +1 -0
  802. package/dist/PodcastFilterList-CPlb3VJu.mjs.map +1 -0
  803. package/dist/PodcastFilterList-CUEVTlgZ.mjs.map +1 -0
  804. package/dist/PodcastFilterList-CZSgPafl.mjs.map +1 -0
  805. package/dist/PodcastFilterList-Cb9Fb6qr.mjs.map +1 -0
  806. package/dist/PodcastFilterList-CdR-sy8o.mjs.map +1 -0
  807. package/dist/PodcastFilterList-CgUq0SrT.mjs.map +1 -0
  808. package/dist/PodcastFilterList-Cnl4onho.mjs.map +1 -0
  809. package/dist/PodcastFilterList-CxB_WaUv.mjs.map +1 -0
  810. package/dist/PodcastFilterList-D-cml1ny.mjs.map +1 -0
  811. package/dist/PodcastFilterList-DD7yvdQH.mjs.map +1 -0
  812. package/dist/PodcastFilterList-DDMah_Ob.mjs.map +1 -0
  813. package/dist/PodcastFilterList-DQNM9fR2.mjs.map +1 -0
  814. package/dist/PodcastFilterList-De7_1dZr.mjs.map +1 -0
  815. package/dist/PodcastFilterList-DkH6bqv_.mjs +254 -0
  816. package/dist/PodcastFilterList-DkH6bqv_.mjs.map +1 -0
  817. package/dist/PodcastFilterList-Dy1-7WPg.mjs.map +1 -0
  818. package/dist/PodcastFilterList-Rb7hFpNQ.mjs.map +1 -0
  819. package/dist/PodcastFilterList-liJqGorT.mjs.map +1 -0
  820. package/dist/PodcastFilterList-uBY-zvHm.mjs.map +1 -0
  821. package/dist/PodcastImage-7uun-9op.mjs.map +1 -0
  822. package/dist/PodcastImage-BPwJRNgo.mjs.map +1 -0
  823. package/dist/PodcastImage-BS9ItPN4.mjs.map +1 -0
  824. package/dist/PodcastImage-BjXD64T-.mjs.map +1 -0
  825. package/dist/PodcastImage-BlYkL6Cc.mjs.map +1 -0
  826. package/dist/PodcastImage-BtxcPlrh.mjs +174 -0
  827. package/dist/PodcastImage-BtxcPlrh.mjs.map +1 -0
  828. package/dist/PodcastImage-CYNYKClQ.mjs.map +1 -0
  829. package/dist/PodcastImage-CqMBgsP8.mjs.map +1 -0
  830. package/dist/PodcastImage-Cw6GPjVo.mjs.map +1 -0
  831. package/dist/PodcastImage-DjLGtnET.mjs.map +1 -0
  832. package/dist/PodcastImage-DmwqWLRU.mjs.map +1 -0
  833. package/dist/PodcastImage-DpPPRX6E.mjs.map +1 -0
  834. package/dist/PodcastImage-b4Z8jcf8.mjs.map +1 -0
  835. package/dist/PodcastImage-gBgtVKPH.mjs.map +1 -0
  836. package/dist/PodcastImage-ikvVNDYc.mjs.map +1 -0
  837. package/dist/PodcastImage-ljNA6Lrc.mjs.map +1 -0
  838. package/dist/PodcastImage-rNQd2Lc9.mjs.map +1 -0
  839. package/dist/PodcastInlineList-B6gt2yRj.mjs.map +1 -0
  840. package/dist/PodcastInlineList-BD7tj3f3.mjs.map +1 -0
  841. package/dist/PodcastInlineList-BMcSXWNm.mjs.map +1 -0
  842. package/dist/PodcastInlineList-BMj7vp3s.mjs.map +1 -0
  843. package/dist/PodcastInlineList-BPWpWTBE.mjs.map +1 -0
  844. package/dist/PodcastInlineList-BWT23hTv.mjs.map +1 -0
  845. package/dist/PodcastInlineList-BdnrmXJc.mjs.map +1 -0
  846. package/dist/PodcastInlineList-CGuB23OT.mjs.map +1 -0
  847. package/dist/PodcastInlineList-CLFBonil.mjs.map +1 -0
  848. package/dist/PodcastInlineList-CQwD4ApM.mjs.map +1 -0
  849. package/dist/PodcastInlineList-CVWfH5np.mjs +138 -0
  850. package/dist/PodcastInlineList-CVWfH5np.mjs.map +1 -0
  851. package/dist/PodcastInlineList-Cv5_ddYP.mjs.map +1 -0
  852. package/dist/PodcastInlineList-Cwkezt-j.mjs.map +1 -0
  853. package/dist/PodcastInlineList-CxF0UxTT.mjs.map +1 -0
  854. package/dist/PodcastInlineList-Cyfgl5uB.mjs.map +1 -0
  855. package/dist/PodcastInlineList-D1aNt-0a.mjs.map +1 -0
  856. package/dist/PodcastInlineList-DTA7dPax.mjs.map +1 -0
  857. package/dist/PodcastInlineList-Di2Ltgte.mjs.map +1 -0
  858. package/dist/PodcastInlineList-Dl_HVygN.mjs.map +1 -0
  859. package/dist/PodcastInlineList-Dx_fR8ZL.mjs.map +1 -0
  860. package/dist/PodcastInlineList-U2f-GGas.mjs.map +1 -0
  861. package/dist/PodcastInlineList-m6_-fF-i.mjs.map +1 -0
  862. package/dist/PodcastInlineList-yeAY_1xF.mjs.map +1 -0
  863. package/dist/PodcastInlineListTemplate-0UP6Pxe4.mjs.map +1 -0
  864. package/dist/PodcastInlineListTemplate-BWw1Ix-7.mjs +233 -0
  865. package/dist/PodcastInlineListTemplate-BWw1Ix-7.mjs.map +1 -0
  866. package/dist/PodcastInlineListTemplate-ByHnYjyI.mjs.map +1 -0
  867. package/dist/PodcastInlineListTemplate-DbAG8EGH.mjs.map +1 -0
  868. package/dist/PodcastInlineListTemplate-DqFWx-Wg.mjs.map +1 -0
  869. package/dist/PodcastInlineListTemplate-DyL7aOqO.mjs.map +1 -0
  870. package/dist/PodcastInlineListTemplate-pyWgvH5v.mjs.map +1 -0
  871. package/dist/PodcastIsPlaying-9h4w2yaA.mjs.map +1 -0
  872. package/dist/PodcastIsPlaying-B7YVeSyB.mjs +30 -0
  873. package/dist/PodcastIsPlaying-B7YVeSyB.mjs.map +1 -0
  874. package/dist/PodcastIsPlaying-BQgSISsC.mjs.map +1 -0
  875. package/dist/PodcastIsPlaying-DOR4VgNX.mjs.map +1 -0
  876. package/dist/PodcastIsPlaying-DcKCMo88.mjs.map +1 -0
  877. package/dist/PodcastIsPlaying-IIWRTs5M.mjs.map +1 -0
  878. package/dist/PodcastIsPlaying-JRa7cA5x.mjs.map +1 -0
  879. package/dist/PodcastIsPlaying-UUXLMSft.mjs.map +1 -0
  880. package/dist/PodcastIsPlaying-g04VoZNy.mjs.map +1 -0
  881. package/dist/PodcastIsPlaying-ugnfbWsH.mjs.map +1 -0
  882. package/dist/PodcastItem-0nuKLsQr.mjs.map +1 -0
  883. package/dist/PodcastItem-BHJDFdu3.mjs.map +1 -0
  884. package/dist/PodcastItem-BrSz4yQH.mjs.map +1 -0
  885. package/dist/PodcastItem-C0yxAO-H.mjs.map +1 -0
  886. package/dist/PodcastItem-C49ya6AI.mjs.map +1 -0
  887. package/dist/PodcastItem-CAKmPzzW.mjs.map +1 -0
  888. package/dist/PodcastItem-CC7GB5L3.mjs.map +1 -0
  889. package/dist/PodcastItem-CFk8MX9D.mjs +287 -0
  890. package/dist/PodcastItem-CFk8MX9D.mjs.map +1 -0
  891. package/dist/PodcastItem-CcMCFONS.mjs.map +1 -0
  892. package/dist/PodcastItem-CtpZR2pM.mjs.map +1 -0
  893. package/dist/PodcastItem-Cy0i9i5f.mjs.map +1 -0
  894. package/dist/PodcastItem-DBI0imII.mjs.map +1 -0
  895. package/dist/PodcastItem-DCVmaP5H.mjs.map +1 -0
  896. package/dist/PodcastItem-DNrV6ta-.mjs.map +1 -0
  897. package/dist/PodcastItem-DRp51Vrx.mjs.map +1 -0
  898. package/dist/PodcastItem-DjjInGdX.mjs.map +1 -0
  899. package/dist/PodcastItem-DkIZUMSC.mjs.map +1 -0
  900. package/dist/PodcastItem-Dlmrs8W-.mjs.map +1 -0
  901. package/dist/PodcastItem-DuuauV-X.mjs.map +1 -0
  902. package/dist/PodcastItem-R_--lKuz.mjs.map +1 -0
  903. package/dist/PodcastItem-c9hYGkh_.mjs.map +1 -0
  904. package/dist/PodcastItem-lTQrFsX7.mjs.map +1 -0
  905. package/dist/PodcastItem-vxMpBJBW.mjs.map +1 -0
  906. package/dist/PodcastList--dkPJ6FO.mjs.map +1 -0
  907. package/dist/PodcastList-9jcAr-NA.mjs.map +1 -0
  908. package/dist/PodcastList-B9z_57Y4.mjs.map +1 -0
  909. package/dist/PodcastList-BLXPFjvL.mjs +182 -0
  910. package/dist/PodcastList-BLXPFjvL.mjs.map +1 -0
  911. package/dist/PodcastList-BckGihbY.mjs.map +1 -0
  912. package/dist/PodcastList-Bi7-x1kF.mjs.map +1 -0
  913. package/dist/PodcastList-BlmGoIxM.mjs.map +1 -0
  914. package/dist/PodcastList-BqqKAFfS.mjs.map +1 -0
  915. package/dist/PodcastList-BtRgQoy_.mjs.map +1 -0
  916. package/dist/PodcastList-BuClu1W_.mjs.map +1 -0
  917. package/dist/PodcastList-Bx_t-xpa.mjs.map +1 -0
  918. package/dist/PodcastList-C-FQC_ex.mjs.map +1 -0
  919. package/dist/PodcastList-C3SaZ_3S.mjs.map +1 -0
  920. package/dist/PodcastList-C4rHNNzi.mjs.map +1 -0
  921. package/dist/PodcastList-C998_Mii.mjs.map +1 -0
  922. package/dist/PodcastList-CHDECufN.mjs.map +1 -0
  923. package/dist/PodcastList-CRDiHxsd.mjs.map +1 -0
  924. package/dist/PodcastList-CZMVXnxW.mjs.map +1 -0
  925. package/dist/PodcastList-Cboz94ca.mjs.map +1 -0
  926. package/dist/PodcastList-Ce8Tm-IO.mjs.map +1 -0
  927. package/dist/PodcastList-ChhtZFJV.mjs.map +1 -0
  928. package/dist/PodcastList-CjPOFOZ4.mjs.map +1 -0
  929. package/dist/PodcastList-CjVGrEWB.mjs.map +1 -0
  930. package/dist/PodcastList-Cl_tie3X.mjs.map +1 -0
  931. package/dist/PodcastList-Cni3stpU.mjs.map +1 -0
  932. package/dist/PodcastList-CpfsRAFt.mjs.map +1 -0
  933. package/dist/PodcastList-D4SfQEF-.mjs.map +1 -0
  934. package/dist/PodcastList-DJ6Gtyiw.mjs.map +1 -0
  935. package/dist/PodcastList-DS8NSgC1.mjs.map +1 -0
  936. package/dist/PodcastList-DT4o3k8J.mjs.map +1 -0
  937. package/dist/PodcastList-DXorh0Hg.mjs.map +1 -0
  938. package/dist/PodcastList-DjONmKIQ.mjs.map +1 -0
  939. package/dist/PodcastList-DnW1J7DX.mjs.map +1 -0
  940. package/dist/PodcastList-DnloX_kK.mjs.map +1 -0
  941. package/dist/PodcastList-DoeBisQF.mjs.map +1 -0
  942. package/dist/PodcastList-DryaDa27.mjs.map +1 -0
  943. package/dist/PodcastList-DtaF4JDQ.mjs.map +1 -0
  944. package/dist/PodcastList-DvOEkAm2.mjs.map +1 -0
  945. package/dist/PodcastList-DwTRHCHB.mjs.map +1 -0
  946. package/dist/PodcastList-DxQiX9ES.mjs.map +1 -0
  947. package/dist/PodcastList-DxW-u4N7.mjs.map +1 -0
  948. package/dist/PodcastList-N4TeBI8P.mjs.map +1 -0
  949. package/dist/PodcastList-R1wyWX7F.mjs.map +1 -0
  950. package/dist/PodcastList-c0Iwzakm.mjs +337 -0
  951. package/dist/PodcastList-c0Iwzakm.mjs.map +1 -0
  952. package/dist/PodcastList-klwqgRcF.mjs.map +1 -0
  953. package/dist/PodcastList-tJXZxVUW.mjs.map +1 -0
  954. package/dist/PodcastPage--YLJdvxB.mjs.map +1 -0
  955. package/dist/PodcastPage-4dst4q-M.mjs.map +1 -0
  956. package/dist/PodcastPage-B4PLHy9V.mjs.map +1 -0
  957. package/dist/PodcastPage-B8EtUkwl.mjs.map +1 -0
  958. package/dist/PodcastPage-BrUX1Pw_.mjs.map +1 -0
  959. package/dist/PodcastPage-BuPACjQY.mjs.map +1 -0
  960. package/dist/PodcastPage-C0mjMFKX.mjs.map +1 -0
  961. package/dist/PodcastPage-C4MYPSa2.mjs.map +1 -0
  962. package/dist/PodcastPage-C7bPcSm2.mjs.map +1 -0
  963. package/dist/PodcastPage-CCn24wcr.mjs.map +1 -0
  964. package/dist/PodcastPage-CJMGdqWf.mjs.map +1 -0
  965. package/dist/PodcastPage-CO6SBv4Y.mjs.map +1 -0
  966. package/dist/PodcastPage-CPCIwibb.mjs.map +1 -0
  967. package/dist/PodcastPage-C_d9FaS7.mjs +757 -0
  968. package/dist/PodcastPage-C_d9FaS7.mjs.map +1 -0
  969. package/dist/PodcastPage-CiHCBktw.mjs.map +1 -0
  970. package/dist/PodcastPage-Cii-ovwa.mjs.map +1 -0
  971. package/dist/PodcastPage-CmSvvdfc.mjs.map +1 -0
  972. package/dist/PodcastPage-Cn-F9pSB.mjs.map +1 -0
  973. package/dist/PodcastPage-CyeagDv4.mjs.map +1 -0
  974. package/dist/PodcastPage-D0_KlwQq.mjs.map +1 -0
  975. package/dist/PodcastPage-D3mPgHeL.mjs.map +1 -0
  976. package/dist/PodcastPage-D64sbMNT.mjs.map +1 -0
  977. package/dist/PodcastPage-D7PzRjSt.mjs.map +1 -0
  978. package/dist/PodcastPage-DMvlGZ1k.mjs.map +1 -0
  979. package/dist/PodcastPage-DP-vBdTR.mjs.map +1 -0
  980. package/dist/PodcastPage-DPnKa3vK.mjs.map +1 -0
  981. package/dist/PodcastPage-DkL72Z1y.mjs.map +1 -0
  982. package/dist/PodcastPage-DmK-uTdk.mjs.map +1 -0
  983. package/dist/PodcastPage-Dq_PsWZB.mjs.map +1 -0
  984. package/dist/PodcastPage-Dtm_CuYw.mjs.map +1 -0
  985. package/dist/PodcastPage-MMSLDWfK.mjs.map +1 -0
  986. package/dist/PodcastPage-NeMq-YnG.mjs.map +1 -0
  987. package/dist/PodcastPage-PMELmH0s.mjs.map +1 -0
  988. package/dist/PodcastPage-e6rJr6hV.mjs.map +1 -0
  989. package/dist/PodcastPage-hdMWLWpi.mjs.map +1 -0
  990. package/dist/PodcastPage-y0BtCLhc.mjs.map +1 -0
  991. package/dist/PodcastPage-zbNXMsnP.mjs.map +1 -0
  992. package/dist/PodcastPlayBar-B5--J956.mjs.map +1 -0
  993. package/dist/PodcastPlayBar-BAg_2Q0C.mjs.map +1 -0
  994. package/dist/PodcastPlayBar-BPGbw-cg.mjs.map +1 -0
  995. package/dist/PodcastPlayBar-BhvFc_aM.mjs.map +1 -0
  996. package/dist/PodcastPlayBar-Bu6whhel.mjs.map +1 -0
  997. package/dist/PodcastPlayBar-CHW1r2IU.mjs.map +1 -0
  998. package/dist/PodcastPlayBar-COqDDeSX.mjs.map +1 -0
  999. package/dist/PodcastPlayBar-CcUVE409.mjs.map +1 -0
  1000. package/dist/PodcastPlayBar-CiDSRgOD.mjs.map +1 -0
  1001. package/dist/PodcastPlayBar-WjGn_KlZ.mjs +83 -0
  1002. package/dist/PodcastPlayBar-WjGn_KlZ.mjs.map +1 -0
  1003. package/dist/PodcastPlayBasicButton-1zXA2DZ9.mjs.map +1 -0
  1004. package/dist/PodcastPlayBasicButton-2AI00HYi.mjs.map +1 -0
  1005. package/dist/PodcastPlayBasicButton-7Lko-Sd7.mjs.map +1 -0
  1006. package/dist/PodcastPlayBasicButton-BESx1bOI.mjs.map +1 -0
  1007. package/dist/PodcastPlayBasicButton-BNKlqhGR.mjs +72 -0
  1008. package/dist/PodcastPlayBasicButton-BNKlqhGR.mjs.map +1 -0
  1009. package/dist/PodcastPlayBasicButton-BQfmATxC.mjs.map +1 -0
  1010. package/dist/PodcastPlayBasicButton-CZ-a7Mi-.mjs.map +1 -0
  1011. package/dist/PodcastPlayBasicButton-Uc3tRTxu.mjs.map +1 -0
  1012. package/dist/PodcastPlayBasicButton-Yey3goNb.mjs.map +1 -0
  1013. package/dist/PodcastPlayBasicButton-gKBe1ZXP.mjs.map +1 -0
  1014. package/dist/PodcastPlayButton-3jEnHVq3.mjs.map +1 -0
  1015. package/dist/PodcastPlayButton-4FJn2J_F.mjs.map +1 -0
  1016. package/dist/PodcastPlayButton-B9hWbPEk.mjs +236 -0
  1017. package/dist/PodcastPlayButton-B9hWbPEk.mjs.map +1 -0
  1018. package/dist/PodcastPlayButton-BEzpvH8k.mjs.map +1 -0
  1019. package/dist/PodcastPlayButton-BFE7b9VV.mjs.map +1 -0
  1020. package/dist/PodcastPlayButton-BHCAQuL9.mjs.map +1 -0
  1021. package/dist/PodcastPlayButton-ByKbzeNd.mjs.map +1 -0
  1022. package/dist/PodcastPlayButton-CFWIq8jA.mjs.map +1 -0
  1023. package/dist/PodcastPlayButton-Ca5tbFLu.mjs.map +1 -0
  1024. package/dist/PodcastPlayButton-ConCKnn3.mjs.map +1 -0
  1025. package/dist/PodcastPlayButton-DSIZLTMK.mjs.map +1 -0
  1026. package/dist/PodcastPlayButton-DbcN0url.mjs.map +1 -0
  1027. package/dist/PodcastPlayButton-DcVS83R3.mjs.map +1 -0
  1028. package/dist/PodcastPlayButton-DuRguIYl.mjs.map +1 -0
  1029. package/dist/PodcastPlayButton-Dv20ZbyW.mjs.map +1 -0
  1030. package/dist/PodcastPlayButton-h1LRJfPj.mjs.map +1 -0
  1031. package/dist/PodcastPlayButton-jt0arqEL.mjs.map +1 -0
  1032. package/dist/PodcastPlaylistInlineList-1gDiBDfh.mjs.map +1 -0
  1033. package/dist/PodcastPlaylistInlineList-9MyKaMvW.mjs.map +1 -0
  1034. package/dist/PodcastPlaylistInlineList-B0RsTg9f.mjs.map +1 -0
  1035. package/dist/PodcastPlaylistInlineList-B4KEGPMM.mjs.map +1 -0
  1036. package/dist/PodcastPlaylistInlineList-B8lpF30-.mjs.map +1 -0
  1037. package/dist/PodcastPlaylistInlineList-BBjDaRhA.mjs.map +1 -0
  1038. package/dist/PodcastPlaylistInlineList-BU_3T6Jj.mjs.map +1 -0
  1039. package/dist/PodcastPlaylistInlineList-BWsmp5uu.mjs.map +1 -0
  1040. package/dist/PodcastPlaylistInlineList-BvBtHFIG.mjs.map +1 -0
  1041. package/dist/PodcastPlaylistInlineList-C4tCkX5x.mjs.map +1 -0
  1042. package/dist/PodcastPlaylistInlineList-CN65zh2L.mjs.map +1 -0
  1043. package/dist/PodcastPlaylistInlineList-CZvARIo4.mjs.map +1 -0
  1044. package/dist/PodcastPlaylistInlineList-ClzX6E-S.mjs.map +1 -0
  1045. package/dist/PodcastPlaylistInlineList-D1K-v3aW.mjs.map +1 -0
  1046. package/dist/PodcastPlaylistInlineList-D6IkxaAm.mjs.map +1 -0
  1047. package/dist/PodcastPlaylistInlineList-DV9g9nQm.mjs.map +1 -0
  1048. package/dist/PodcastPlaylistInlineList-DYPKqbDn.mjs.map +1 -0
  1049. package/dist/PodcastPlaylistInlineList-DZ0ICF_M.mjs.map +1 -0
  1050. package/dist/PodcastPlaylistInlineList-DiznhWPx.mjs.map +1 -0
  1051. package/dist/PodcastPlaylistInlineList-ZIrxaKij.mjs.map +1 -0
  1052. package/dist/PodcastPlaylistInlineList-_csxbYAx.mjs +115 -0
  1053. package/dist/PodcastPlaylistInlineList-_csxbYAx.mjs.map +1 -0
  1054. package/dist/PodcastPlaylistInlineList-b8NqovDP.mjs.map +1 -0
  1055. package/dist/PodcastPlaylistInlineList-yRlA0MAH.mjs.map +1 -0
  1056. package/dist/PodcastPresentationList-BD8XmnW0.mjs +200 -0
  1057. package/dist/PodcastPresentationList-BD8XmnW0.mjs.map +1 -0
  1058. package/dist/PodcastPresentationList-BNracFjt.mjs.map +1 -0
  1059. package/dist/PodcastPresentationList-BZr1_6F6.mjs.map +1 -0
  1060. package/dist/PodcastPresentationList-BbdazxRv.mjs.map +1 -0
  1061. package/dist/PodcastPresentationList-C_GDEGJU.mjs.map +1 -0
  1062. package/dist/PodcastPresentationList-CeEenog_.mjs.map +1 -0
  1063. package/dist/PodcastPresentationList-ChWrahwT.mjs.map +1 -0
  1064. package/dist/PodcastPresentationList-CkEZvLK2.mjs.map +1 -0
  1065. package/dist/PodcastPresentationList-Cqs2LDbs.mjs.map +1 -0
  1066. package/dist/PodcastPresentationList-DBzJT8fp.mjs.map +1 -0
  1067. package/dist/PodcastPresentationList-DxrStBb6.mjs.map +1 -0
  1068. package/dist/PodcastPresentationList-KPoNgY0B.mjs.map +1 -0
  1069. package/dist/PodcastPresentationList-PwLtPHvs.mjs.map +1 -0
  1070. package/dist/PodcastPresentationList-id7ihfD-.mjs.map +1 -0
  1071. package/dist/PodcastPresentationList-kEoSJsz5.mjs.map +1 -0
  1072. package/dist/PodcastPresentationList-m8fFf1Kx.mjs.map +1 -0
  1073. package/dist/PodcastPresentationList-mksFNcl5.mjs.map +1 -0
  1074. package/dist/PodcastProgressBar-2CSNk_s2.mjs.map +1 -0
  1075. package/dist/PodcastProgressBar-B3XOeeJx.mjs +98 -0
  1076. package/dist/PodcastProgressBar-B3XOeeJx.mjs.map +1 -0
  1077. package/dist/PodcastProgressBar-B76P2ukl.mjs.map +1 -0
  1078. package/dist/PodcastProgressBar-BCNYTg72.mjs.map +1 -0
  1079. package/dist/PodcastProgressBar-BZBCr-WW.mjs.map +1 -0
  1080. package/dist/PodcastProgressBar-CDTvkAQB.mjs.map +1 -0
  1081. package/dist/PodcastProgressBar-CeHAi4g6.mjs.map +1 -0
  1082. package/dist/PodcastProgressBar-CjpukiGw.mjs.map +1 -0
  1083. package/dist/PodcastProgressBar-CkJDdRGF.mjs.map +1 -0
  1084. package/dist/PodcastProgressBar-T3VI322-.mjs.map +1 -0
  1085. package/dist/PodcastRawTranscript-B5OzPrgR.mjs.map +1 -0
  1086. package/dist/PodcastRawTranscript-BE7x6psu.mjs.map +1 -0
  1087. package/dist/PodcastRawTranscript-BUFGx6rZ.mjs.map +1 -0
  1088. package/dist/PodcastRawTranscript-BlirnnGL.mjs.map +1 -0
  1089. package/dist/PodcastRawTranscript-CMfOxpLd.mjs.map +1 -0
  1090. package/dist/PodcastRawTranscript-CN_DKXV-.mjs.map +1 -0
  1091. package/dist/PodcastRawTranscript-CR9PTmbn.mjs.map +1 -0
  1092. package/dist/PodcastRawTranscript-CezPpAQJ.mjs.map +1 -0
  1093. package/dist/PodcastRawTranscript-D0Nm7jGM.mjs +184 -0
  1094. package/dist/PodcastRawTranscript-D0Nm7jGM.mjs.map +1 -0
  1095. package/dist/PodcastRawTranscript-D8jXfysg.mjs.map +1 -0
  1096. package/dist/PodcastRawTranscript-DGXQVGRb.mjs.map +1 -0
  1097. package/dist/PodcastRawTranscript-Do08hXdq.mjs.map +1 -0
  1098. package/dist/PodcastRawTranscript-DxuuiZIk.mjs.map +1 -0
  1099. package/dist/PodcastRawTranscript-p_W3HHS4.mjs.map +1 -0
  1100. package/dist/PodcastRubriqueList-BeTq7IRu.mjs +83 -0
  1101. package/dist/PodcastRubriqueList-BeTq7IRu.mjs.map +1 -0
  1102. package/dist/PodcastRubriqueList-CKY13Hmm.mjs.map +1 -0
  1103. package/dist/PodcastRubriqueList-Cd9JJ7t4.mjs.map +1 -0
  1104. package/dist/PodcastRubriqueList-_TilD5Kt.mjs.map +1 -0
  1105. package/dist/PodcastSwiperList-B3Rmq88q.mjs.map +1 -0
  1106. package/dist/PodcastSwiperList-BFzZOdKO.mjs.map +1 -0
  1107. package/dist/PodcastSwiperList-BMHZ_9wS.mjs.map +1 -0
  1108. package/dist/PodcastSwiperList-BRPe_MmI.mjs.map +1 -0
  1109. package/dist/PodcastSwiperList-B_oF8mbv.mjs.map +1 -0
  1110. package/dist/PodcastSwiperList-Be5wQG_T.mjs.map +1 -0
  1111. package/dist/PodcastSwiperList-BmY1xAhq.mjs.map +1 -0
  1112. package/dist/PodcastSwiperList-CE0GA3yG.mjs.map +1 -0
  1113. package/dist/PodcastSwiperList-CRTQCJUr.mjs.map +1 -0
  1114. package/dist/PodcastSwiperList-CUoZh4H_.mjs.map +1 -0
  1115. package/dist/PodcastSwiperList-CalHP6Sp.mjs.map +1 -0
  1116. package/dist/PodcastSwiperList-Ckmkz2z_.mjs.map +1 -0
  1117. package/dist/PodcastSwiperList-D9BHeJUn.mjs.map +1 -0
  1118. package/dist/PodcastSwiperList-DEiZYxU0.mjs.map +1 -0
  1119. package/dist/PodcastSwiperList-DJ0O3dqM.mjs +219 -0
  1120. package/dist/PodcastSwiperList-DJ0O3dqM.mjs.map +1 -0
  1121. package/dist/PodcastSwiperList-DJwulLY1.mjs.map +1 -0
  1122. package/dist/PodcastSwiperList-DMjp1idK.mjs.map +1 -0
  1123. package/dist/PodcastSwiperList-DS-KwJv5.mjs.map +1 -0
  1124. package/dist/PodcastSwiperList-DWyQ1eqN.mjs.map +1 -0
  1125. package/dist/PodcastSwiperList-Dt7ll-k2.mjs.map +1 -0
  1126. package/dist/PodcastSwiperList-aIPyXi83.mjs.map +1 -0
  1127. package/dist/PodcastSwiperList-cBuyrKI6.mjs.map +1 -0
  1128. package/dist/PodcastSwiperList-qigkE1rm.mjs.map +1 -0
  1129. package/dist/PodcastmakerHeader-4t5-e-0n.mjs.map +1 -0
  1130. package/dist/PodcastmakerHeader-BUFIFYNW.mjs.map +1 -0
  1131. package/dist/PodcastmakerHeader-BmINh9MO.mjs.map +1 -0
  1132. package/dist/PodcastmakerHeader-D3SmmwFE.mjs.map +1 -0
  1133. package/dist/PodcastmakerHeader-DAATtOG_.mjs +58 -0
  1134. package/dist/PodcastmakerHeader-DAATtOG_.mjs.map +1 -0
  1135. package/dist/PodcastmakerHeader-DXgSlYNO.mjs.map +1 -0
  1136. package/dist/PodcastmakerHeader-Dv5iMHm4.mjs.map +1 -0
  1137. package/dist/PodcastsPage-BHHO6ye1.mjs.map +1 -0
  1138. package/dist/PodcastsPage-BIxOILl_.mjs.map +1 -0
  1139. package/dist/PodcastsPage-B_aWL0yM.mjs.map +1 -0
  1140. package/dist/PodcastsPage-BbzUkk6U.mjs.map +1 -0
  1141. package/dist/PodcastsPage-Bit5FdDp.mjs.map +1 -0
  1142. package/dist/PodcastsPage-Bl63mbuD.mjs.map +1 -0
  1143. package/dist/PodcastsPage-C1aMiXl4.mjs.map +1 -0
  1144. package/dist/PodcastsPage-CEA_ETPi.mjs.map +1 -0
  1145. package/dist/PodcastsPage-COBZYvrh.mjs.map +1 -0
  1146. package/dist/PodcastsPage-Cc_dZIpT.mjs.map +1 -0
  1147. package/dist/PodcastsPage-Cf64aYnK.mjs.map +1 -0
  1148. package/dist/PodcastsPage-Cj0Z2BjX.mjs.map +1 -0
  1149. package/dist/PodcastsPage-CoyDxaTY.mjs.map +1 -0
  1150. package/dist/PodcastsPage-DAzrzrES.mjs.map +1 -0
  1151. package/dist/PodcastsPage-DNabkFet.mjs.map +1 -0
  1152. package/dist/PodcastsPage-DNbmWfBG.mjs.map +1 -0
  1153. package/dist/PodcastsPage-DdicdF2s.mjs.map +1 -0
  1154. package/dist/PodcastsPage-DrI3Dd1V.mjs.map +1 -0
  1155. package/dist/PodcastsPage-EGsdYkWP.mjs.map +1 -0
  1156. package/dist/PodcastsPage-ON1tWV49.mjs.map +1 -0
  1157. package/dist/PodcastsPage-ZhEVoMp1.mjs +227 -0
  1158. package/dist/PodcastsPage-ZhEVoMp1.mjs.map +1 -0
  1159. package/dist/PodcastsPage-qvoCpU0_.mjs.map +1 -0
  1160. package/dist/PodcastsPage-tnVLgVNY.mjs.map +1 -0
  1161. package/dist/ProductorSearch-CE8c0XeU.mjs.map +1 -0
  1162. package/dist/ProductorSearch-CRYk_70T.mjs.map +1 -0
  1163. package/dist/ProductorSearch-Ck16O7yn.mjs.map +1 -0
  1164. package/dist/ProductorSearch-CkEbbGq-.mjs.map +1 -0
  1165. package/dist/ProductorSearch-DRCsDLYs.mjs.map +1 -0
  1166. package/dist/ProductorSearch-xs0kzX_E.mjs +161 -0
  1167. package/dist/ProductorSearch-xs0kzX_E.mjs.map +1 -0
  1168. package/dist/ProductorSearch-yrPGJ1gQ.mjs.map +1 -0
  1169. package/dist/ProgressBar-0DSoUTwB.mjs +158 -0
  1170. package/dist/ProgressBar-0DSoUTwB.mjs.map +1 -0
  1171. package/dist/ProgressBar-C9dqh_8A.mjs.map +1 -0
  1172. package/dist/ProgressBar-CWpZEHK9.mjs.map +1 -0
  1173. package/dist/ProgressBar-D0Aofvh_.mjs.map +1 -0
  1174. package/dist/ProgressBar-DEys-pEA.mjs.map +1 -0
  1175. package/dist/ProgressBar-DXa8PKaH.mjs.map +1 -0
  1176. package/dist/ProgressBar-HeVwY3L7.mjs.map +1 -0
  1177. package/dist/ProgressBar-SrevuxEL.mjs.map +1 -0
  1178. package/dist/ProgressBar-elAO_v4y.mjs.map +1 -0
  1179. package/dist/ProgressBar-pb4hYB2h.mjs.map +1 -0
  1180. package/dist/QrCode-BejTn_94.mjs.map +1 -0
  1181. package/dist/QrCode-CUP2O18d.mjs +177 -0
  1182. package/dist/QrCode-CUP2O18d.mjs.map +1 -0
  1183. package/dist/QrCode-CY4Hob2N.mjs.map +1 -0
  1184. package/dist/QrCode-CZy2IwTB.mjs.map +1 -0
  1185. package/dist/QrCode-Cg6I3PM6.mjs.map +1 -0
  1186. package/dist/QrCode-DF46wes9.mjs.map +1 -0
  1187. package/dist/QrCode-JiRv1DV_.mjs.map +1 -0
  1188. package/dist/QrCodeModal-4lgTAGHL.mjs.map +1 -0
  1189. package/dist/QrCodeModal-BU96s423.mjs.map +1 -0
  1190. package/dist/QrCodeModal-BySjwCWW.mjs.map +1 -0
  1191. package/dist/QrCodeModal-DXBCuki7.mjs +64 -0
  1192. package/dist/QrCodeModal-DXBCuki7.mjs.map +1 -0
  1193. package/dist/QrCodeModal-E-A2aE39.mjs.map +1 -0
  1194. package/dist/QrCodeModal-aMuuA2uy.mjs.map +1 -0
  1195. package/dist/QrCodeModal-zVfj0NZ8.mjs.map +1 -0
  1196. package/dist/RadioCurrently-BKhmEmo1.mjs.map +1 -0
  1197. package/dist/RadioCurrently-Bgkrv8b3.mjs.map +1 -0
  1198. package/dist/RadioCurrently-CWMKEWYl.mjs.map +1 -0
  1199. package/dist/RadioCurrently-Cq2GqBWh.mjs.map +1 -0
  1200. package/dist/RadioCurrently-CrhdM-uB.mjs.map +1 -0
  1201. package/dist/RadioCurrently-D5M81oIX.mjs +112 -0
  1202. package/dist/RadioCurrently-D5M81oIX.mjs.map +1 -0
  1203. package/dist/RadioCurrently-DEEp9_7j.mjs.map +1 -0
  1204. package/dist/RadioCurrently-Dc1e35FV.mjs.map +1 -0
  1205. package/dist/RadioCurrently-HezAvSxL.mjs.map +1 -0
  1206. package/dist/RadioCurrently-TIE98WIJ.mjs.map +1 -0
  1207. package/dist/RadioHistory-BIXInGnR.mjs.map +1 -0
  1208. package/dist/RadioHistory-BgOve4jk.mjs +139 -0
  1209. package/dist/RadioHistory-BgOve4jk.mjs.map +1 -0
  1210. package/dist/RadioHistory-Brv-CjoG.mjs.map +1 -0
  1211. package/dist/RadioHistory-CjeDDlIt.mjs.map +1 -0
  1212. package/dist/RadioHistory-CkYZK1DG.mjs.map +1 -0
  1213. package/dist/RadioHistory-CrIRbRz6.mjs.map +1 -0
  1214. package/dist/RadioHistory-CtAjORUI.mjs.map +1 -0
  1215. package/dist/RadioHistory-DZpzgY7V.mjs.map +1 -0
  1216. package/dist/RadioHistory-DgZbivWH.mjs.map +1 -0
  1217. package/dist/RadioHistory-iz38RANp.mjs.map +1 -0
  1218. package/dist/RadioImage-BAKbLKIQ.mjs.map +1 -0
  1219. package/dist/RadioImage-BnKy4uAb.mjs.map +1 -0
  1220. package/dist/RadioImage-C0OIwiAa.mjs.map +1 -0
  1221. package/dist/RadioImage-COCaoZr1.mjs.map +1 -0
  1222. package/dist/RadioImage-CUTRr3DL.mjs +85 -0
  1223. package/dist/RadioImage-CUTRr3DL.mjs.map +1 -0
  1224. package/dist/RadioImage-CgMGOHHN.mjs.map +1 -0
  1225. package/dist/RadioImage-CzsquLtj.mjs.map +1 -0
  1226. package/dist/RadioImage-D0oQtehr.mjs.map +1 -0
  1227. package/dist/RadioImage-DtWOKWZf.mjs.map +1 -0
  1228. package/dist/RadioImage-bU0fzap8.mjs.map +1 -0
  1229. package/dist/RadioList-2xmWO_oH.mjs.map +1 -0
  1230. package/dist/RadioList-B1xC5HsL.mjs.map +1 -0
  1231. package/dist/RadioList-BECoBZpW.mjs.map +1 -0
  1232. package/dist/RadioList-C6_2seU6.mjs.map +1 -0
  1233. package/dist/RadioList-CVIRomw0.mjs.map +1 -0
  1234. package/dist/RadioList-CwzOFHc1.mjs +125 -0
  1235. package/dist/RadioList-CwzOFHc1.mjs.map +1 -0
  1236. package/dist/RadioList-DmB0OYYN.mjs.map +1 -0
  1237. package/dist/RadioList-glYNPywL.mjs.map +1 -0
  1238. package/dist/RadioList-iZKd_KZH.mjs.map +1 -0
  1239. package/dist/RadioList-oxV25FkS.mjs.map +1 -0
  1240. package/dist/RadioPage-7o4yErAV.mjs.map +1 -0
  1241. package/dist/RadioPage-BAy9854e.mjs.map +1 -0
  1242. package/dist/RadioPage-BGE7oPRX.mjs.map +1 -0
  1243. package/dist/RadioPage-BhLBsJrT.mjs.map +1 -0
  1244. package/dist/RadioPage-CQbWnV5c.mjs.map +1 -0
  1245. package/dist/RadioPage-CxyuKbJh.mjs.map +1 -0
  1246. package/dist/RadioPage-DVflzCV-.mjs +137 -0
  1247. package/dist/RadioPage-DVflzCV-.mjs.map +1 -0
  1248. package/dist/RadioPage-DcuYbHbN.mjs.map +1 -0
  1249. package/dist/RadioPage-Ub-cu7AR.mjs.map +1 -0
  1250. package/dist/RadioPage-n3Ab5UGK.mjs.map +1 -0
  1251. package/dist/RadioPlanning-B1T8as_3.mjs.map +1 -0
  1252. package/dist/RadioPlanning-BYVFVHZs.mjs.map +1 -0
  1253. package/dist/RadioPlanning-BtIfW4Ah.mjs.map +1 -0
  1254. package/dist/RadioPlanning-CJ7Qqyhs.mjs +290 -0
  1255. package/dist/RadioPlanning-CJ7Qqyhs.mjs.map +1 -0
  1256. package/dist/RadioPlanning-Cva-oyEO.mjs.map +1 -0
  1257. package/dist/RadioPlanning-DQciYO5X.mjs.map +1 -0
  1258. package/dist/RadioPlanning-p9EsQBqh.mjs.map +1 -0
  1259. package/dist/RadioProgressBar-0jyYOLGj.mjs.map +1 -0
  1260. package/dist/RadioProgressBar-BDizQcsG.mjs.map +1 -0
  1261. package/dist/RadioProgressBar-BaYXZqnx.mjs.map +1 -0
  1262. package/dist/RadioProgressBar-BmJbzzQA.mjs +67 -0
  1263. package/dist/RadioProgressBar-BmJbzzQA.mjs.map +1 -0
  1264. package/dist/RadioProgressBar-CChGM7uF.mjs.map +1 -0
  1265. package/dist/RadioProgressBar-CmGsHx9A.mjs.map +1 -0
  1266. package/dist/RadioProgressBar-CvOUHP8K.mjs.map +1 -0
  1267. package/dist/RadioProgressBar-tCLVT7lT.mjs.map +1 -0
  1268. package/dist/RadioProgressBar-uWTmB_kd.mjs.map +1 -0
  1269. package/dist/RadioProgressBar-zzS52gJe.mjs.map +1 -0
  1270. package/dist/RecaptchaModal-B0NVpSBG.mjs.map +1 -0
  1271. package/dist/RecaptchaModal-B8u7AFQM.mjs.map +1 -0
  1272. package/dist/RecaptchaModal-BW1PiDOO.mjs.map +1 -0
  1273. package/dist/RecaptchaModal-BoQNOCu2.mjs.map +1 -0
  1274. package/dist/RecaptchaModal-DUUrgvsf.mjs.map +1 -0
  1275. package/dist/RecaptchaModal-DX9rAHUg.mjs +148 -0
  1276. package/dist/RecaptchaModal-DX9rAHUg.mjs.map +1 -0
  1277. package/dist/RecaptchaModal-_dognZKy.mjs.map +1 -0
  1278. package/dist/ReportAbuseModal-BD42Bwjq.mjs.map +1 -0
  1279. package/dist/ReportAbuseModal-BpC3s9O8.mjs.map +1 -0
  1280. package/dist/ReportAbuseModal-BvabhFZA.mjs.map +1 -0
  1281. package/dist/ReportAbuseModal-CTyKQ_JD.mjs.map +1 -0
  1282. package/dist/ReportAbuseModal-CVruxsnZ.mjs.map +1 -0
  1283. package/dist/ReportAbuseModal-CYCRaFAY.mjs +134 -0
  1284. package/dist/ReportAbuseModal-CYCRaFAY.mjs.map +1 -0
  1285. package/dist/ReportAbuseModal-Cet3wh0h.mjs.map +1 -0
  1286. package/dist/RightsIndicator-BspTQNOS.mjs.map +1 -0
  1287. package/dist/RightsIndicator-BwUdzcLZ.mjs.map +1 -0
  1288. package/dist/RightsIndicator-CBsKUIAt.mjs.map +1 -0
  1289. package/dist/RightsIndicator-CE6A1bKi.mjs.map +1 -0
  1290. package/dist/RightsIndicator-CFvkj6VN.mjs.map +1 -0
  1291. package/dist/RightsIndicator-CLYRg-Qa.mjs.map +1 -0
  1292. package/dist/RightsIndicator-CYSHxEv6.mjs.map +1 -0
  1293. package/dist/RightsIndicator-CZvi35f7.mjs.map +1 -0
  1294. package/dist/RightsIndicator-Cy0Kpc3W.mjs.map +1 -0
  1295. package/dist/RightsIndicator-DR7pk3W0.mjs.map +1 -0
  1296. package/dist/RightsIndicator-DUWZEPPa.mjs.map +1 -0
  1297. package/dist/RightsIndicator-DgQhNhpE.mjs.map +1 -0
  1298. package/dist/RightsIndicator-Do8r-uxQ.mjs.map +1 -0
  1299. package/dist/RightsIndicator-DrvWXMIY.mjs.map +1 -0
  1300. package/dist/RightsIndicator-STcmOC9U.mjs.map +1 -0
  1301. package/dist/RightsIndicator-l63FU_-K.mjs.map +1 -0
  1302. package/dist/RightsIndicator-qIU4_wiF.mjs +124 -0
  1303. package/dist/RightsIndicator-qIU4_wiF.mjs.map +1 -0
  1304. package/dist/RightsWrapper-B2rRBJRe.mjs.map +1 -0
  1305. package/dist/RightsWrapper-B8zm4Eax.mjs.map +1 -0
  1306. package/dist/RightsWrapper-BNxs1uN8.mjs.map +1 -0
  1307. package/dist/RightsWrapper-BdCOpz3L.mjs.map +1 -0
  1308. package/dist/RightsWrapper-Cs6prZ3E.mjs +212 -0
  1309. package/dist/RightsWrapper-Cs6prZ3E.mjs.map +1 -0
  1310. package/dist/RightsWrapper-D8Yr2tBA.mjs.map +1 -0
  1311. package/dist/RightsWrapper-DDG7viMU.mjs.map +1 -0
  1312. package/dist/RightsWrapper-DEYtHAry.mjs.map +1 -0
  1313. package/dist/RightsWrapper-DXZJWnqp.mjs.map +1 -0
  1314. package/dist/RightsWrapper-SIV9FowU.mjs.map +1 -0
  1315. package/dist/RightsWrapper-tQnqraSy.mjs.map +1 -0
  1316. package/dist/RubriqueFilter-BvUWgVzq.mjs.map +1 -0
  1317. package/dist/RubriqueFilter-CG8j_NAp.mjs.map +1 -0
  1318. package/dist/RubriqueFilter-CS9QT-rc.mjs.map +1 -0
  1319. package/dist/RubriqueFilter-DfKJeniI.mjs.map +1 -0
  1320. package/dist/RubriqueFilter-DxoIa3pi.mjs.map +1 -0
  1321. package/dist/RubriqueFilter-F90ouW1I.mjs.map +1 -0
  1322. package/dist/RubriqueFilter-OA_DJKL1.mjs +199 -0
  1323. package/dist/RubriqueFilter-OA_DJKL1.mjs.map +1 -0
  1324. package/dist/RubriqueList-3zO1zZRT.mjs.map +1 -0
  1325. package/dist/RubriqueList-B94NM5yi.mjs +206 -0
  1326. package/dist/RubriqueList-B94NM5yi.mjs.map +1 -0
  1327. package/dist/RubriqueList-BCN0C7QF.mjs.map +1 -0
  1328. package/dist/RubriqueList-Cw-CkXW1.mjs.map +1 -0
  1329. package/dist/RubriqueList-D4Fq4Y9e.mjs.map +1 -0
  1330. package/dist/RubriqueList-DYWDfwI_.mjs.map +1 -0
  1331. package/dist/RubriqueList-FTM4mj2p.mjs.map +1 -0
  1332. package/dist/RubriquePage-B06bcAoC.mjs.map +1 -0
  1333. package/dist/RubriquePage-B1WHENcY.mjs.map +1 -0
  1334. package/dist/RubriquePage-B8-uEBto.mjs.map +1 -0
  1335. package/dist/RubriquePage-BLl8POuh.mjs.map +1 -0
  1336. package/dist/RubriquePage-BlrmPBqw.mjs.map +1 -0
  1337. package/dist/RubriquePage-BsXsr2yZ.mjs.map +1 -0
  1338. package/dist/RubriquePage-CLx3DEHM.mjs.map +1 -0
  1339. package/dist/RubriquePage-CPOfNsqM.mjs.map +1 -0
  1340. package/dist/RubriquePage-CjObE1AH.mjs.map +1 -0
  1341. package/dist/RubriquePage-CnGDzPlL.mjs.map +1 -0
  1342. package/dist/RubriquePage-Cp899c77.mjs.map +1 -0
  1343. package/dist/RubriquePage-Cs3-c97d.mjs.map +1 -0
  1344. package/dist/RubriquePage-DB26iKvR.mjs.map +1 -0
  1345. package/dist/RubriquePage-DLhJPSDi.mjs.map +1 -0
  1346. package/dist/RubriquePage-DpmhA8px.mjs.map +1 -0
  1347. package/dist/RubriquePage-DyusiBmp.mjs +108 -0
  1348. package/dist/RubriquePage-DyusiBmp.mjs.map +1 -0
  1349. package/dist/RubriquePage-FXjCZGhl.mjs.map +1 -0
  1350. package/dist/RubriquePage-LHX8e3IM.mjs.map +1 -0
  1351. package/dist/RubriquePage-MB00NDpy.mjs.map +1 -0
  1352. package/dist/RubriquePage-aQVZqbYG.mjs.map +1 -0
  1353. package/dist/RubriquePage-an_sMVka.mjs.map +1 -0
  1354. package/dist/RubriquePage-icFHqhSo.mjs.map +1 -0
  1355. package/dist/RubriquePage-vIpEC4ZH.mjs.map +1 -0
  1356. package/dist/SearchPage-B2z0qkr6.mjs.map +1 -0
  1357. package/dist/SearchPage-B7gvw7kS.mjs.map +1 -0
  1358. package/dist/SearchPage-BGOBGS4j.mjs +77 -0
  1359. package/dist/SearchPage-BGOBGS4j.mjs.map +1 -0
  1360. package/dist/SearchPage-BJakejdU.mjs.map +1 -0
  1361. package/dist/SearchPage-BJkQ5jaV.mjs.map +1 -0
  1362. package/dist/SearchPage-BLDCn-bQ.mjs.map +1 -0
  1363. package/dist/SearchPage-BMvwEUpu.mjs.map +1 -0
  1364. package/dist/SearchPage-BS6ZtOT4.mjs.map +1 -0
  1365. package/dist/SearchPage-Bk0xlx6g.mjs.map +1 -0
  1366. package/dist/SearchPage-BlxTxwvi.mjs.map +1 -0
  1367. package/dist/SearchPage-CLWENUAD.mjs.map +1 -0
  1368. package/dist/SearchPage-D-0rX2Xi.mjs.map +1 -0
  1369. package/dist/SearchPage-D36GMrvv.mjs.map +1 -0
  1370. package/dist/SearchPage-D6-ZXv58.mjs.map +1 -0
  1371. package/dist/SearchPage-DP-jnmCG.mjs.map +1 -0
  1372. package/dist/SearchPage-DZTfGbVT.mjs.map +1 -0
  1373. package/dist/SearchPage-D_4t35f0.mjs.map +1 -0
  1374. package/dist/SearchPage-Da4BFohR.mjs.map +1 -0
  1375. package/dist/SearchPage-Dh26cgQe.mjs.map +1 -0
  1376. package/dist/SearchPage-DjKPeGAs.mjs.map +1 -0
  1377. package/dist/SearchPage-fXdzpL1c.mjs.map +1 -0
  1378. package/dist/SearchPage-xnIpsTgx.mjs.map +1 -0
  1379. package/dist/SearchPage-zVdUiSfh.mjs.map +1 -0
  1380. package/dist/ShareAnonymous-B0ww4iMu.mjs.map +1 -0
  1381. package/dist/ShareAnonymous-BKagxRym.mjs.map +1 -0
  1382. package/dist/ShareAnonymous-Chfdzzra.mjs +321 -0
  1383. package/dist/ShareAnonymous-Chfdzzra.mjs.map +1 -0
  1384. package/dist/ShareAnonymous-D3hwGr8Z.mjs.map +1 -0
  1385. package/dist/ShareAnonymous-DEpUqKoC.mjs.map +1 -0
  1386. package/dist/ShareAnonymous-DSg_wpI3.mjs.map +1 -0
  1387. package/dist/ShareAnonymous-khSarER5.mjs.map +1 -0
  1388. package/dist/ShareModalPlayer-BS9qyVNH.mjs.map +1 -0
  1389. package/dist/ShareModalPlayer-BnFxh7Ga.mjs.map +1 -0
  1390. package/dist/ShareModalPlayer-BztYMAPH.mjs.map +1 -0
  1391. package/dist/ShareModalPlayer-C8wjnuw6.mjs.map +1 -0
  1392. package/dist/ShareModalPlayer-CLY_JFFD.mjs +135 -0
  1393. package/dist/ShareModalPlayer-CLY_JFFD.mjs.map +1 -0
  1394. package/dist/ShareModalPlayer-DDDkm7FA.mjs.map +1 -0
  1395. package/dist/ShareModalPlayer-PtUwdsSJ.mjs.map +1 -0
  1396. package/dist/ShareNewsletter-B4dn4-jA.mjs +211 -0
  1397. package/dist/ShareNewsletter-B4dn4-jA.mjs.map +1 -0
  1398. package/dist/ShareNewsletter-BM2hE5XO.mjs.map +1 -0
  1399. package/dist/ShareNewsletter-BrwslUOD.mjs.map +1 -0
  1400. package/dist/ShareNewsletter-CPjvKO4R.mjs.map +1 -0
  1401. package/dist/ShareNewsletter-Cl7VbBA9.mjs.map +1 -0
  1402. package/dist/ShareNewsletter-D-V6qe3a.mjs.map +1 -0
  1403. package/dist/ShareNewsletter-DsH2srdw.mjs.map +1 -0
  1404. package/dist/SharePlayer-BWl75Ndj.mjs.map +1 -0
  1405. package/dist/SharePlayer-BicE3QZp.mjs.map +1 -0
  1406. package/dist/SharePlayer-BycdQRP2.mjs.map +1 -0
  1407. package/dist/SharePlayer-C2GVaLAZ.mjs.map +1 -0
  1408. package/dist/SharePlayer-DP-D17m8.mjs.map +1 -0
  1409. package/dist/SharePlayer-Dw9dS5el.mjs.map +1 -0
  1410. package/dist/SharePlayer-wHDYsWYd.mjs +378 -0
  1411. package/dist/SharePlayer-wHDYsWYd.mjs.map +1 -0
  1412. package/dist/SharePlayerRadio--L_AzDqY.mjs.map +1 -0
  1413. package/dist/SharePlayerRadio-5xG5g5rM.mjs.map +1 -0
  1414. package/dist/SharePlayerRadio-Cl4YpS-S.mjs.map +1 -0
  1415. package/dist/SharePlayerRadio-D3LXD_gK.mjs +127 -0
  1416. package/dist/SharePlayerRadio-D3LXD_gK.mjs.map +1 -0
  1417. package/dist/SharePlayerRadio-Da_Ykb2L.mjs.map +1 -0
  1418. package/dist/SharePlayerRadio-Dn4Ma5qW.mjs.map +1 -0
  1419. package/dist/SharePlayerRadio-MAdWfHel.mjs.map +1 -0
  1420. package/dist/SharePlayerTypes-CHKhK9YW.mjs.map +1 -0
  1421. package/dist/SharePlayerTypes-D8X7hL3d.mjs.map +1 -0
  1422. package/dist/SharePlayerTypes-DVlp3VcJ.mjs.map +1 -0
  1423. package/dist/SharePlayerTypes-Dhz4uP7l.mjs.map +1 -0
  1424. package/dist/SharePlayerTypes-P-5UOG2r.mjs.map +1 -0
  1425. package/dist/SharePlayerTypes-RdPK0FDf.mjs.map +1 -0
  1426. package/dist/SharePlayerTypes-eYSeVl-W.mjs +232 -0
  1427. package/dist/SharePlayerTypes-eYSeVl-W.mjs.map +1 -0
  1428. package/dist/ShareSocialsButtons-BLVre1Pq.mjs.map +1 -0
  1429. package/dist/ShareSocialsButtons-CPwlk7S9.mjs.map +1 -0
  1430. package/dist/ShareSocialsButtons-D73vUPta.mjs.map +1 -0
  1431. package/dist/ShareSocialsButtons-DJ1FaUx3.mjs.map +1 -0
  1432. package/dist/ShareSocialsButtons-DccMvn5_.mjs.map +1 -0
  1433. package/dist/ShareSocialsButtons-P364piyA.mjs.map +1 -0
  1434. package/dist/ShareSocialsButtons-iHtSoQ3K.mjs +159 -0
  1435. package/dist/ShareSocialsButtons-iHtSoQ3K.mjs.map +1 -0
  1436. package/dist/SimpleLayout-5mNKfg2s.mjs.map +1 -0
  1437. package/dist/SimpleLayout-B6at-cuV.mjs.map +1 -0
  1438. package/dist/SimpleLayout-BFqjgeh1.mjs.map +1 -0
  1439. package/dist/SimpleLayout-BTfo6rPR.mjs.map +1 -0
  1440. package/dist/SimpleLayout-BUrWUsa_.mjs.map +1 -0
  1441. package/dist/SimpleLayout-BVF6fd_I.mjs.map +1 -0
  1442. package/dist/SimpleLayout-Bk74CAAr.mjs +41 -0
  1443. package/dist/SimpleLayout-Bk74CAAr.mjs.map +1 -0
  1444. package/dist/SimpleLayout-BqwOh6G0.mjs.map +1 -0
  1445. package/dist/SimpleLayout-ChIkhCEH.mjs.map +1 -0
  1446. package/dist/SimpleLayout-CiHOZdWE.mjs.map +1 -0
  1447. package/dist/SimpleLayout-Cwhcdh45.mjs.map +1 -0
  1448. package/dist/SimpleLayout-CwtTjtPq.mjs.map +1 -0
  1449. package/dist/SimpleLayout-D1QBqbyL.mjs.map +1 -0
  1450. package/dist/SimpleLayout-DEFKs9Eu.mjs.map +1 -0
  1451. package/dist/SimpleLayout-DJSc2eq9.mjs.map +1 -0
  1452. package/dist/SimpleLayout-DdxeE5BZ.mjs.map +1 -0
  1453. package/dist/SimpleLayout-DjFZlloX.mjs.map +1 -0
  1454. package/dist/SimpleLayout-DtPUxNyC.mjs.map +1 -0
  1455. package/dist/SimpleLayout-DvRt4wkr.mjs.map +1 -0
  1456. package/dist/SimpleLayout-Dx6FkAfI.mjs.map +1 -0
  1457. package/dist/SimpleLayout-KPhIS07K.mjs.map +1 -0
  1458. package/dist/SimpleLayout-XXMBqDnb.mjs.map +1 -0
  1459. package/dist/SimpleLayout-XZll7Ayz.mjs.map +1 -0
  1460. package/dist/SmartLinkPage-B7-xgb7q.mjs.map +1 -0
  1461. package/dist/SmartLinkPage-BHYoZz5d.mjs.map +1 -0
  1462. package/dist/SmartLinkPage-BQwsfDIe.mjs.map +1 -0
  1463. package/dist/SmartLinkPage-BSiyTH7l.mjs.map +1 -0
  1464. package/dist/SmartLinkPage-BoBHd6cJ.mjs.map +1 -0
  1465. package/dist/SmartLinkPage-C4SCz9NT.mjs.map +1 -0
  1466. package/dist/SmartLinkPage-Cf8u_BeD.mjs.map +1 -0
  1467. package/dist/SmartLinkPage-CzUMIRTu.mjs.map +1 -0
  1468. package/dist/SmartLinkPage-DbuQT8GM.mjs +238 -0
  1469. package/dist/SmartLinkPage-DbuQT8GM.mjs.map +1 -0
  1470. package/dist/SmartLinkPage-XbBG8nUz.mjs.map +1 -0
  1471. package/dist/SubscribeButtons-B1IZMhZq.mjs.map +1 -0
  1472. package/dist/SubscribeButtons-BEyKEHFg.mjs.map +1 -0
  1473. package/dist/SubscribeButtons-BpITqR_e.mjs.map +1 -0
  1474. package/dist/SubscribeButtons-BrsOcGPD.mjs.map +1 -0
  1475. package/dist/SubscribeButtons-CoiCusJH.mjs.map +1 -0
  1476. package/dist/SubscribeButtons-D7DS-yiF.mjs.map +1 -0
  1477. package/dist/SubscribeButtons-rnonTVzT.mjs +203 -0
  1478. package/dist/SubscribeButtons-rnonTVzT.mjs.map +1 -0
  1479. package/dist/SwiperList-B9Di_nl0.mjs.map +1 -0
  1480. package/dist/SwiperList-BN401Fyh.mjs.map +1 -0
  1481. package/dist/SwiperList-BwsTJxcN.mjs.map +1 -0
  1482. package/dist/SwiperList-C1v0T1wx.mjs +207 -0
  1483. package/dist/SwiperList-C1v0T1wx.mjs.map +1 -0
  1484. package/dist/SwiperList-Ct-O9BcG.mjs.map +1 -0
  1485. package/dist/SwiperList-DzY1ETir.mjs.map +1 -0
  1486. package/dist/SwiperList-gPcKZiLq.mjs.map +1 -0
  1487. package/dist/TagList-Bq1wwTRR.mjs.map +1 -0
  1488. package/dist/TagList-CNBX1FyW.mjs.map +1 -0
  1489. package/dist/TagList-CPShSxEG.mjs.map +1 -0
  1490. package/dist/TagList-CskkFrFq.mjs.map +1 -0
  1491. package/dist/TagList-J7PO-39m.mjs.map +1 -0
  1492. package/dist/TagList-JHE5OvFW.mjs.map +1 -0
  1493. package/dist/TagList-VeuYS_zJ.mjs +134 -0
  1494. package/dist/TagList-VeuYS_zJ.mjs.map +1 -0
  1495. package/dist/TagPage-BGb-Ze7R.mjs.map +1 -0
  1496. package/dist/TagPage-BVsgClKd.mjs.map +1 -0
  1497. package/dist/TagPage-BbFOTLNh.mjs.map +1 -0
  1498. package/dist/TagPage-Bd81QJHn.mjs +125 -0
  1499. package/dist/TagPage-Bd81QJHn.mjs.map +1 -0
  1500. package/dist/TagPage-BdKTT02V.mjs.map +1 -0
  1501. package/dist/TagPage-Bfsl19Ap.mjs.map +1 -0
  1502. package/dist/TagPage-BwfzfFHu.mjs.map +1 -0
  1503. package/dist/TagPage-C3KcRS7I.mjs.map +1 -0
  1504. package/dist/TagPage-C8bwjJeN.mjs.map +1 -0
  1505. package/dist/TagPage-CKz5KLkj.mjs.map +1 -0
  1506. package/dist/TagPage-CZcYst8i.mjs.map +1 -0
  1507. package/dist/TagPage-Ci2j_O0Y.mjs.map +1 -0
  1508. package/dist/TagPage-CyAXE_8e.mjs.map +1 -0
  1509. package/dist/TagPage-D-Ja38HA.mjs.map +1 -0
  1510. package/dist/TagPage-DQwDyEh7.mjs.map +1 -0
  1511. package/dist/TagPage-DUtoasfz.mjs.map +1 -0
  1512. package/dist/TagPage-DbASBi7R.mjs.map +1 -0
  1513. package/dist/TagPage-Dbgu3vHH.mjs.map +1 -0
  1514. package/dist/TagPage-DheKc6nX.mjs.map +1 -0
  1515. package/dist/TagPage-L7JAmj_e.mjs.map +1 -0
  1516. package/dist/TagPage-d6HPH6Qh.mjs.map +1 -0
  1517. package/dist/TagPage-iegXcIH9.mjs.map +1 -0
  1518. package/dist/TagPage-k4ZWkqSf.mjs.map +1 -0
  1519. package/dist/TopBar-8FeSPEYf.mjs.map +1 -0
  1520. package/dist/TopBar-BsTEqCvQ.mjs.map +1 -0
  1521. package/dist/TopBar-CFRGmVqb.mjs.map +1 -0
  1522. package/dist/TopBar-CIGurQe2.mjs.map +1 -0
  1523. package/dist/TopBar-CZVp2T7C.mjs +760 -0
  1524. package/dist/TopBar-CZVp2T7C.mjs.map +1 -0
  1525. package/dist/TopBar-D7YNEuE6.mjs.map +1 -0
  1526. package/dist/TopBar-Tbxl2Elm.mjs.map +1 -0
  1527. package/dist/TopBar-cTlaCeTY.mjs.map +1 -0
  1528. package/dist/TopBar-dzqTNyPk.mjs.map +1 -0
  1529. package/dist/TopBar-o0P_Zf_S.mjs.map +1 -0
  1530. package/dist/UserButtonContent-B9FcRssv.mjs.map +1 -0
  1531. package/dist/UserButtonContent-BGXW7qCM.mjs.map +1 -0
  1532. package/dist/UserButtonContent-C3hEJG4A.mjs.map +1 -0
  1533. package/dist/UserButtonContent-DazYmuO8.mjs.map +1 -0
  1534. package/dist/UserButtonContent-DcNPbevw.mjs.map +1 -0
  1535. package/dist/UserButtonContent-DgKC2zk0.mjs.map +1 -0
  1536. package/dist/UserButtonContent-DmNyGmWr.mjs +185 -0
  1537. package/dist/UserButtonContent-DmNyGmWr.mjs.map +1 -0
  1538. package/dist/UserButtonContent-b635f01K.mjs.map +1 -0
  1539. package/dist/UserButtonContent-gpLveDGn.mjs.map +1 -0
  1540. package/dist/UserButtonContent-qxz-Hv4_.mjs.map +1 -0
  1541. package/dist/VideoModuleBox-B1xqrB2D.mjs.map +1 -0
  1542. package/dist/VideoModuleBox-BShvguCk.mjs.map +1 -0
  1543. package/dist/VideoModuleBox-BtGq-GXa.mjs.map +1 -0
  1544. package/dist/VideoModuleBox-BzESMA0r.mjs.map +1 -0
  1545. package/dist/VideoModuleBox-C7fYrSi8.mjs.map +1 -0
  1546. package/dist/VideoModuleBox-CFZrAeTN.mjs.map +1 -0
  1547. package/dist/VideoModuleBox-CN_UTher.mjs.map +1 -0
  1548. package/dist/VideoModuleBox-CnBBO4xv.mjs.map +1 -0
  1549. package/dist/VideoModuleBox-Cqr8jrRx.mjs.map +1 -0
  1550. package/dist/VideoModuleBox-CyQej4Vl.mjs.map +1 -0
  1551. package/dist/VideoModuleBox-DGvHH4e5.mjs.map +1 -0
  1552. package/dist/VideoModuleBox-qrxE8kRY.mjs.map +1 -0
  1553. package/dist/VideoModuleBox-x_sGAKrY.mjs.map +1 -0
  1554. package/dist/VideoModuleBox-yJZpgCw6.mjs +85 -0
  1555. package/dist/VideoModuleBox-yJZpgCw6.mjs.map +1 -0
  1556. package/dist/VideoPage-7jF7T9IO.mjs.map +1 -0
  1557. package/dist/VideoPage-B3yTNR_M.mjs.map +1 -0
  1558. package/dist/VideoPage-BB57V2Lk.mjs.map +1 -0
  1559. package/dist/VideoPage-BLTlFgNf.mjs.map +1 -0
  1560. package/dist/VideoPage-BSXTgcRL.mjs.map +1 -0
  1561. package/dist/VideoPage-BYNVbbeO.mjs.map +1 -0
  1562. package/dist/VideoPage-BbxLEA4X.mjs.map +1 -0
  1563. package/dist/VideoPage-BcI8tfma.mjs.map +1 -0
  1564. package/dist/VideoPage-Bw_QYNyr.mjs.map +1 -0
  1565. package/dist/VideoPage-CA5DDDbS.mjs.map +1 -0
  1566. package/dist/VideoPage-CE4D24dl.mjs.map +1 -0
  1567. package/dist/VideoPage-CPKkuEDY.mjs.map +1 -0
  1568. package/dist/VideoPage-CaxbxZFf.mjs.map +1 -0
  1569. package/dist/VideoPage-Ctu6kGik.mjs.map +1 -0
  1570. package/dist/VideoPage-D2K0YjIH.mjs.map +1 -0
  1571. package/dist/VideoPage-D6UJ9h-C.mjs.map +1 -0
  1572. package/dist/VideoPage-D7T3JSm4.mjs.map +1 -0
  1573. package/dist/VideoPage-DUvS0HA0.mjs.map +1 -0
  1574. package/dist/VideoPage-DgomqikT.mjs.map +1 -0
  1575. package/dist/VideoPage-DsNM6QUQ.mjs.map +1 -0
  1576. package/dist/VideoPage-Dyo4V61N.mjs.map +1 -0
  1577. package/dist/VideoPage-EnFU5-Gi.mjs.map +1 -0
  1578. package/dist/VideoPage-OB-XkRbO.mjs.map +1 -0
  1579. package/dist/VideoPage-QX9CPoUi.mjs.map +1 -0
  1580. package/dist/VideoPage-bkw4KLn0.mjs.map +1 -0
  1581. package/dist/VideoPage-qCsKaYgW.mjs.map +1 -0
  1582. package/dist/VideoPage-wsWCp4Wv.mjs.map +1 -0
  1583. package/dist/VideoPage-y6G4Y2Zi.mjs +274 -0
  1584. package/dist/VideoPage-y6G4Y2Zi.mjs.map +1 -0
  1585. package/dist/classicApi-C2_ObUF_.mjs.map +1 -0
  1586. package/dist/classicApi-CIbDYmHA.mjs.map +1 -0
  1587. package/dist/classicApi-Cj_a5kO8.mjs.map +1 -0
  1588. package/dist/classicApi-CkDHWZG1.mjs +1908 -0
  1589. package/dist/classicApi-CkDHWZG1.mjs.map +1 -0
  1590. package/dist/classicApi-DuzZv1Wk.mjs.map +1 -0
  1591. package/dist/classicApi-MCXe0kfZ.mjs.map +1 -0
  1592. package/dist/classicApi-cKpHjOS7.mjs.map +1 -0
  1593. package/dist/downloadHelper-Bkaho1zc.mjs.map +1 -0
  1594. package/dist/downloadHelper-BkwhRlnA.mjs.map +1 -0
  1595. package/dist/downloadHelper-CahWbghu.mjs.map +1 -0
  1596. package/dist/downloadHelper-CyCFvbBp.mjs.map +1 -0
  1597. package/dist/downloadHelper-DLdkblYN.mjs +36 -0
  1598. package/dist/downloadHelper-DLdkblYN.mjs.map +1 -0
  1599. package/dist/downloadHelper-DZJ01GKg.mjs.map +1 -0
  1600. package/dist/downloadHelper-YZacef66.mjs.map +1 -0
  1601. package/dist/index.mjs +98 -98
  1602. package/dist/messages-DcDWDvzC.mjs.map +1 -0
  1603. package/dist/tests.mjs +2 -2
  1604. package/dist/useAdvancedParamInit-B7G2Mvjv.mjs +168 -0
  1605. package/dist/useAdvancedParamInit-B7G2Mvjv.mjs.map +1 -0
  1606. package/dist/useAdvancedParamInit-BGlro-p8.mjs.map +1 -0
  1607. package/dist/useAdvancedParamInit-BL5TjXZy.mjs.map +1 -0
  1608. package/dist/useAdvancedParamInit-BhqSOKSb.mjs.map +1 -0
  1609. package/dist/useAdvancedParamInit-C-rELBZG.mjs.map +1 -0
  1610. package/dist/useAdvancedParamInit-CKFWCUSZ.mjs.map +1 -0
  1611. package/dist/useAdvancedParamInit-CekarbAF.mjs.map +1 -0
  1612. package/dist/useAdvancedParamInit-ClodjjZ2.mjs.map +1 -0
  1613. package/dist/useAdvancedParamInit-_BfFlSej.mjs.map +1 -0
  1614. package/dist/useAdvancedParamInit-dExfUM2y.mjs.map +1 -0
  1615. package/dist/useAdvancedParamInit-lId1H_GS.mjs.map +1 -0
  1616. package/dist/useDayjs-5DM4hTjm.mjs.map +1 -0
  1617. package/dist/useDayjs-B4itzzdK.mjs.map +1 -0
  1618. package/dist/useDayjs-C3cnTiDW.mjs +32 -0
  1619. package/dist/useDayjs-C3cnTiDW.mjs.map +1 -0
  1620. package/dist/useDayjs-C3iHRg-5.mjs.map +1 -0
  1621. package/dist/useDayjs-CQz9XDLj.mjs.map +1 -0
  1622. package/dist/useDayjs-CecYhpLk.mjs.map +1 -0
  1623. package/dist/useDayjs-crlzsvXZ.mjs.map +1 -0
  1624. package/dist/useErrorHandler-B--GpN1e.mjs.map +1 -0
  1625. package/dist/useErrorHandler-Ba6dTuyl.mjs.map +1 -0
  1626. package/dist/useErrorHandler-BbfY4kgg.mjs.map +1 -0
  1627. package/dist/useErrorHandler-Bjx0sbQC.mjs.map +1 -0
  1628. package/dist/useErrorHandler-D2zz354J.mjs.map +1 -0
  1629. package/dist/useErrorHandler-DtLjD9t_.mjs +19 -0
  1630. package/dist/useErrorHandler-DtLjD9t_.mjs.map +1 -0
  1631. package/dist/useErrorHandler-r6nUtTdX.mjs.map +1 -0
  1632. package/dist/useImageProxy-0JAtGkS7.mjs.map +1 -0
  1633. package/dist/useImageProxy-1-PgoK1v.mjs.map +1 -0
  1634. package/dist/useImageProxy-BMtSmGVX.mjs.map +1 -0
  1635. package/dist/useImageProxy-Bj0cOCct.mjs +20 -0
  1636. package/dist/useImageProxy-Bj0cOCct.mjs.map +1 -0
  1637. package/dist/useImageProxy-D754_6C6.mjs.map +1 -0
  1638. package/dist/useImageProxy-DRJTAfXb.mjs.map +1 -0
  1639. package/dist/useImageProxy-DtdTZx5U.mjs.map +1 -0
  1640. package/dist/useOrgaComputed-1LqNaB73.mjs.map +1 -0
  1641. package/dist/useOrgaComputed-BA4YT1_0.mjs.map +1 -0
  1642. package/dist/useOrgaComputed-BLSpEDfb.mjs +19 -0
  1643. package/dist/useOrgaComputed-BLSpEDfb.mjs.map +1 -0
  1644. package/dist/useOrgaComputed-C2R5Q6VI.mjs.map +1 -0
  1645. package/dist/useOrgaComputed-CqSXXy78.mjs.map +1 -0
  1646. package/dist/useOrgaComputed-DgAii2Fk.mjs.map +1 -0
  1647. package/dist/useOrgaComputed-Dj3TLP9I.mjs.map +1 -0
  1648. package/dist/usePlayerLogicProgress-75G9QMg_.mjs +108 -0
  1649. package/dist/usePlayerLogicProgress-75G9QMg_.mjs.map +1 -0
  1650. package/dist/usePlayerLogicProgress-AxYcMdBb.mjs.map +1 -0
  1651. package/dist/usePlayerLogicProgress-Bb-md_ex.mjs.map +1 -0
  1652. package/dist/usePlayerLogicProgress-Bl-5XCtm.mjs.map +1 -0
  1653. package/dist/usePlayerLogicProgress-BlzqUdIu.mjs.map +1 -0
  1654. package/dist/usePlayerLogicProgress-DSS2M01u.mjs.map +1 -0
  1655. package/dist/usePlayerLogicProgress-Di0QVpAw.mjs.map +1 -0
  1656. package/dist/usePlayerLogicProgress-p2wx52vT.mjs.map +1 -0
  1657. package/dist/usePlayerLogicProgress-wmSniqZc.mjs.map +1 -0
  1658. package/dist/usePlayerLogicProgress-xST5wT45.mjs.map +1 -0
  1659. package/dist/usePodcastView-3FesTVra.mjs.map +1 -0
  1660. package/dist/usePodcastView-BWYhUhOV.mjs.map +1 -0
  1661. package/dist/usePodcastView-BftS642h.mjs +56 -0
  1662. package/dist/usePodcastView-BftS642h.mjs.map +1 -0
  1663. package/dist/usePodcastView-BgptSLHG.mjs.map +1 -0
  1664. package/dist/usePodcastView-Bl0RcIb0.mjs.map +1 -0
  1665. package/dist/usePodcastView-BoI-uctv.mjs.map +1 -0
  1666. package/dist/usePodcastView-WxY7m1hl.mjs.map +1 -0
  1667. package/dist/usePresentationItem-6oQ-o4wI.mjs.map +1 -0
  1668. package/dist/usePresentationItem-CNXIk-Sf.mjs +190 -0
  1669. package/dist/usePresentationItem-CNXIk-Sf.mjs.map +1 -0
  1670. package/dist/usePresentationItem-CsfKjWnZ.mjs.map +1 -0
  1671. package/dist/usePresentationItem-D3C_efy7.mjs.map +1 -0
  1672. package/dist/usePresentationItem-DLtnNda9.mjs.map +1 -0
  1673. package/dist/usePresentationItem-DpxvaEdZ.mjs.map +1 -0
  1674. package/dist/usePresentationItem-k5rb_5gH.mjs.map +1 -0
  1675. package/dist/useRights-BCepKkLZ.mjs.map +1 -0
  1676. package/dist/useRights-BTWQoZpb.mjs.map +1 -0
  1677. package/dist/useRights-Bym-4CrJ.mjs.map +1 -0
  1678. package/dist/useRights-C1fS_hGe.mjs.map +1 -0
  1679. package/dist/useRights-CQCFVy9H.mjs.map +1 -0
  1680. package/dist/useRights-Co0TgD8y.mjs +276 -0
  1681. package/dist/useRights-Co0TgD8y.mjs.map +1 -0
  1682. package/dist/useRights-Cpf9Avm0.mjs.map +1 -0
  1683. package/dist/useRights-CzMgcLIn.mjs.map +1 -0
  1684. package/dist/useRights-DKzVprNw.mjs.map +1 -0
  1685. package/dist/useRights-Db1Ometw.mjs.map +1 -0
  1686. package/dist/useRights-dOio-pbP.mjs.map +1 -0
  1687. package/dist/useRubriquesFilterComputed--foOVndi.mjs.map +1 -0
  1688. package/dist/useRubriquesFilterComputed-B7qN3eYX.mjs.map +1 -0
  1689. package/dist/useRubriquesFilterComputed-Bg8Oxixs.mjs.map +1 -0
  1690. package/dist/useRubriquesFilterComputed-DnDEzxql.mjs.map +1 -0
  1691. package/dist/useRubriquesFilterComputed-GKrN8k9S.mjs.map +1 -0
  1692. package/dist/useRubriquesFilterComputed-VsdTUNL6.mjs +13 -0
  1693. package/dist/useRubriquesFilterComputed-VsdTUNL6.mjs.map +1 -0
  1694. package/dist/useRubriquesFilterComputed-sIRalCiS.mjs.map +1 -0
  1695. package/dist/useRubriquesFilterParam--x07HEw1.mjs +36 -0
  1696. package/dist/useRubriquesFilterParam--x07HEw1.mjs.map +1 -0
  1697. package/dist/useRubriquesFilterParam-CXj2RLqc.mjs.map +1 -0
  1698. package/dist/useRubriquesFilterParam-CnYdR701.mjs.map +1 -0
  1699. package/dist/useRubriquesFilterParam-DOS1N2mH.mjs.map +1 -0
  1700. package/dist/useRubriquesFilterParam-DpyKAph_.mjs.map +1 -0
  1701. package/dist/useRubriquesFilterParam-DzyUfhmE.mjs.map +1 -0
  1702. package/dist/useRubriquesFilterParam-FXT-0jW-.mjs.map +1 -0
  1703. package/dist/useSharePlatforms-85i2Bc0K.mjs.map +1 -0
  1704. package/dist/useSharePlatforms-BZ0e0F8u.mjs.map +1 -0
  1705. package/dist/useSharePlatforms-BdrCEg5G.mjs.map +1 -0
  1706. package/dist/useSharePlatforms-C8VqqDmV.mjs.map +1 -0
  1707. package/dist/useSharePlatforms-CSSRTkTG.mjs +468 -0
  1708. package/dist/useSharePlatforms-CSSRTkTG.mjs.map +1 -0
  1709. package/dist/useSharePlatforms-CtA95ENf.mjs.map +1 -0
  1710. package/dist/useSharePlatforms-NU0VkdLB.mjs.map +1 -0
  1711. package/dist/useSimplePageParam-BNiVUoJU.mjs.map +1 -0
  1712. package/dist/useSimplePageParam-C8pifq2s.mjs.map +1 -0
  1713. package/dist/useSimplePageParam-Ck8shEdh.mjs.map +1 -0
  1714. package/dist/useSimplePageParam-ClaGQ9yj.mjs +54 -0
  1715. package/dist/useSimplePageParam-ClaGQ9yj.mjs.map +1 -0
  1716. package/dist/useSimplePageParam-DlhsEEW7.mjs.map +1 -0
  1717. package/dist/useSimplePageParam-DxND9Ysl.mjs.map +1 -0
  1718. package/dist/useSimplePageParam-Vz7bgJAy.mjs.map +1 -0
  1719. package/dist/useTranslation-B8RfvaP6.mjs.map +1 -0
  1720. package/dist/useTranslation-BMKiY0MV.mjs.map +1 -0
  1721. package/dist/useTranslation-BNshNMQT.mjs +205 -0
  1722. package/dist/useTranslation-BNshNMQT.mjs.map +1 -0
  1723. package/dist/useTranslation-BotwPuIT.mjs.map +1 -0
  1724. package/dist/useTranslation-CHq_j2dC.mjs.map +1 -0
  1725. package/dist/useTranslation-Ci8aP-vH.mjs.map +1 -0
  1726. package/dist/useTranslation-DDcfuc32.mjs.map +1 -0
  1727. package/dist/useTranslation-DM20BrtZ.mjs.map +1 -0
  1728. package/dist/useTranslation-DSdvTOFs.mjs.map +1 -0
  1729. package/dist/useTranslation-DZt6DB9m.mjs.map +1 -0
  1730. package/dist/useTranslation-DbX-Mg6G.mjs.map +1 -0
  1731. package/dist/useTranslation-DboWA-9y.mjs.map +1 -0
  1732. package/dist/useTranslation-DwVIaTRm.mjs.map +1 -0
  1733. package/dist/useTranslation-FZLxDtyr.mjs.map +1 -0
  1734. package/dist/usefetchRadioData-C2cwiaCP.mjs +55 -0
  1735. package/dist/usefetchRadioData-C2cwiaCP.mjs.map +1 -0
  1736. package/dist/usefetchRadioData-CM6il3j3.mjs.map +1 -0
  1737. package/dist/usefetchRadioData-D932rnEd.mjs.map +1 -0
  1738. package/dist/usefetchRadioData-DSPq7oq8.mjs.map +1 -0
  1739. package/dist/usefetchRadioData-DlY2zBGg.mjs.map +1 -0
  1740. package/dist/usefetchRadioData-Du7e2a9J.mjs.map +1 -0
  1741. package/dist/usefetchRadioData-E3ejoIvd.mjs.map +1 -0
  1742. package/package.json +1 -1
  1743. package/src/components/pages/EmissionPage.vue +5 -2
  1744. package/src/components/pages/PodcastPage.vue +5 -2
  1745. package/src/stores/AuthStore.ts +0 -2
  1746. package/src/stores/ParamSdkStore.ts +7 -1
  1747. package/dist/AdvancedSearch-DIKy8A4x.mjs +0 -452
  1748. package/dist/CategoryFilter-BpZB6gy9.mjs +0 -237
  1749. package/dist/CategoryList-IQKO-tO8.mjs +0 -182
  1750. package/dist/CategoryPage-B9-hSANQ.mjs +0 -57
  1751. package/dist/ChapteringModal-BxQwqN6-.mjs +0 -82
  1752. package/dist/CheckIdentityModal-CFetpilI.mjs +0 -86
  1753. package/dist/ClassicAlert-dYigdfoZ.mjs +0 -85
  1754. package/dist/ClipboardModal-DQjZO1T9.mjs +0 -84
  1755. package/dist/CommentBasicView-bNaLVdjT.mjs +0 -129
  1756. package/dist/CommentInput-D8tZkOG-.mjs +0 -186
  1757. package/dist/CommentItem-Ch41Z98I.mjs +0 -232
  1758. package/dist/CommentList-B5mexnTc.mjs +0 -302
  1759. package/dist/CommentMoreActions-CZqt7Ebh.mjs +0 -286
  1760. package/dist/CommentName-BYkiaMX_.mjs +0 -96
  1761. package/dist/CommentParentInfo-CfLIKg-a.mjs +0 -64
  1762. package/dist/CommentPlayer-DcSLgaFs.mjs +0 -86
  1763. package/dist/CommentSection-BIbRND09.mjs +0 -141
  1764. package/dist/CommentStore-bKtPx6T5.mjs +0 -355
  1765. package/dist/ContractPreviewModal-BIg6dTcF.mjs +0 -101
  1766. package/dist/DownloadPodcastButton-BTFYgyz4.mjs +0 -53
  1767. package/dist/EditCommentModal-Cc8Ui6Cx.mjs +0 -162
  1768. package/dist/EmissionGroupChooser-5c7aD7hj.mjs +0 -82
  1769. package/dist/EmissionInlineList-D1Xsv_jA.mjs +0 -188
  1770. package/dist/EmissionItem-Bft7IM7C.mjs +0 -183
  1771. package/dist/EmissionList-ofS3nKr2.mjs +0 -325
  1772. package/dist/EmissionPage-CdlIsCg5.mjs +0 -322
  1773. package/dist/EmissionPlayerItem-B9nPhS0q.mjs +0 -167
  1774. package/dist/EmissionPresentationItem-GB4a2U55.mjs +0 -78
  1775. package/dist/EmissionPresentationList-Dt7u5Mla.mjs +0 -125
  1776. package/dist/EmissionsPage-DQfu2UI-.mjs +0 -203
  1777. package/dist/Error403Page-yyOmweXn.mjs +0 -69
  1778. package/dist/ErrorMessage-DhSwu9H_.mjs +0 -44
  1779. package/dist/FooterGarSection-CTfWZV9U.mjs +0 -71
  1780. package/dist/FooterSection-B7U-k8Y_.mjs +0 -242
  1781. package/dist/HomeDropdown-BEnuQwNk.mjs +0 -110
  1782. package/dist/HomePage-BmYeT77a.mjs +0 -166
  1783. package/dist/LikeSection-xxZrcE6h.mjs +0 -167
  1784. package/dist/ListPaginate-C9YUNHKq.mjs +0 -202
  1785. package/dist/LiveHorizontalList-4qHj8EkS.mjs +0 -136
  1786. package/dist/LiveList-BNSIdMf6.mjs +0 -324
  1787. package/dist/LivesPage-Boq-efi1.mjs +0 -76
  1788. package/dist/MapPage-DOYeoa-x.mjs +0 -303
  1789. package/dist/MobileMenu-B9u1xQu8.mjs +0 -187
  1790. package/dist/NewsletterModal-CV11PCGE.mjs +0 -82
  1791. package/dist/OrganisationChooser-C8lM4mh-.mjs +0 -190
  1792. package/dist/OrganisationChooserLight-B_Bn5uSJ.mjs +0 -84
  1793. package/dist/PageNotFound-BcAeMiaz.mjs +0 -58
  1794. package/dist/ParticipantInlineList-BP9OjWPq.mjs +0 -117
  1795. package/dist/ParticipantItem-DROwf2Gt.mjs +0 -138
  1796. package/dist/ParticipantPage-C93DkNt5.mjs +0 -203
  1797. package/dist/ParticipantsPage-CuIGt0hS.mjs +0 -262
  1798. package/dist/PlayerAnonymousModal-DShsz29z.mjs +0 -84
  1799. package/dist/PlayerCompact-BVSkJWnf.mjs +0 -209
  1800. package/dist/PlayerComponent-dU_bgj3K.mjs +0 -929
  1801. package/dist/PlayerLarge-BnsLvwU7.mjs +0 -190
  1802. package/dist/PlayerPlayButton-DPAfPfHk.mjs +0 -400
  1803. package/dist/PlayerProgressBar-dPZf2Fgd.mjs +0 -86
  1804. package/dist/PlayerStore-PXL_fAz0.mjs +0 -230
  1805. package/dist/PlayerVideo--_Kz9vbZ.mjs +0 -72
  1806. package/dist/PlayerVideoDigiteka-C2P_Q4Fe.mjs +0 -102
  1807. package/dist/PlayerVideoHls-Rk-hz2k-.mjs +0 -232
  1808. package/dist/PlaylistPage-U_IMEiNw.mjs +0 -228
  1809. package/dist/PlaylistsPage-4p58SShT.mjs +0 -395
  1810. package/dist/PodcastFilterList-gOQb-JT-.mjs +0 -254
  1811. package/dist/PodcastImage-DticDvGz.mjs +0 -174
  1812. package/dist/PodcastInlineList-CTD_tFe2.mjs +0 -138
  1813. package/dist/PodcastInlineListTemplate-C9_KNnaX.mjs +0 -233
  1814. package/dist/PodcastIsPlaying-1o91KNzu.mjs +0 -30
  1815. package/dist/PodcastItem-CVUC3kcq.mjs +0 -287
  1816. package/dist/PodcastList-Cl8RvbI9.mjs +0 -182
  1817. package/dist/PodcastList-DwiKdU4Y.mjs +0 -337
  1818. package/dist/PodcastPage-BzLU5_P6.mjs +0 -756
  1819. package/dist/PodcastPlayBar-hxLcx9MN.mjs +0 -83
  1820. package/dist/PodcastPlayBasicButton-0tMLmnJn.mjs +0 -72
  1821. package/dist/PodcastPlayButton-B1ZB8WY8.mjs +0 -236
  1822. package/dist/PodcastPlaylistInlineList-SZXCnYSe.mjs +0 -115
  1823. package/dist/PodcastPresentationList-BYz-tlSL.mjs +0 -200
  1824. package/dist/PodcastProgressBar-DqPW_p3w.mjs +0 -98
  1825. package/dist/PodcastRawTranscript-a9_Oy3RK.mjs +0 -184
  1826. package/dist/PodcastRubriqueList-DI2csHW1.mjs +0 -83
  1827. package/dist/PodcastSwiperList-ByjpnQxI.mjs +0 -219
  1828. package/dist/PodcastmakerHeader-DLivShWW.mjs +0 -58
  1829. package/dist/PodcastsPage-CZMG21RP.mjs +0 -227
  1830. package/dist/ProductorSearch-Cr79KkYG.mjs +0 -161
  1831. package/dist/ProgressBar-DrnLNpyr.mjs +0 -158
  1832. package/dist/QrCode-KyGeDUHb.mjs +0 -177
  1833. package/dist/QrCodeModal-ddgi5Dn-.mjs +0 -64
  1834. package/dist/RadioCurrently-CYE7UwdY.mjs +0 -112
  1835. package/dist/RadioHistory-CzqQvmuY.mjs +0 -139
  1836. package/dist/RadioImage-CFNJKVmd.mjs +0 -85
  1837. package/dist/RadioList-CABDJH_f.mjs +0 -125
  1838. package/dist/RadioPage-C0tjXJU4.mjs +0 -137
  1839. package/dist/RadioPlanning-CLaptMbp.mjs +0 -290
  1840. package/dist/RadioProgressBar-DZn1mktI.mjs +0 -67
  1841. package/dist/RecaptchaModal-BrpWu9K9.mjs +0 -148
  1842. package/dist/ReportAbuseModal-CqEVzw2M.mjs +0 -134
  1843. package/dist/RightsIndicator-CaR0p4ee.mjs +0 -124
  1844. package/dist/RightsWrapper-C7TGgPwH.mjs +0 -212
  1845. package/dist/RubriqueFilter-BKhIFAjq.mjs +0 -199
  1846. package/dist/RubriqueList-NVIfUrtO.mjs +0 -206
  1847. package/dist/RubriquePage-BAlehSIS.mjs +0 -108
  1848. package/dist/SearchPage-B10P7WGB.mjs +0 -77
  1849. package/dist/ShareAnonymous-DjuoOwnz.mjs +0 -321
  1850. package/dist/ShareModalPlayer-iNhuzH6E.mjs +0 -135
  1851. package/dist/ShareNewsletter-BoTYibXG.mjs +0 -211
  1852. package/dist/SharePlayer-ITriSrMH.mjs +0 -378
  1853. package/dist/SharePlayerRadio-3be6M1rf.mjs +0 -127
  1854. package/dist/SharePlayerTypes-TbHoUtLq.mjs +0 -232
  1855. package/dist/ShareSocialsButtons-nbnbNYrr.mjs +0 -159
  1856. package/dist/SimpleLayout-2agje2NP.mjs +0 -41
  1857. package/dist/SmartLinkPage-Bf0nWA38.mjs +0 -238
  1858. package/dist/SubscribeButtons-CSvoc2J7.mjs +0 -203
  1859. package/dist/SwiperList-CTQ7Jt8y.mjs +0 -207
  1860. package/dist/TagList-EwyNbw72.mjs +0 -134
  1861. package/dist/TagPage-CkecFj3d.mjs +0 -125
  1862. package/dist/TopBar-N9gAoWc2.mjs +0 -760
  1863. package/dist/UserButtonContent-CInki_2X.mjs +0 -185
  1864. package/dist/VideoModuleBox-CAKcfyk0.mjs +0 -85
  1865. package/dist/VideoPage-BRSAQnkl.mjs +0 -274
  1866. package/dist/classicApi-1jdxJdNn.mjs +0 -1899
  1867. package/dist/downloadHelper-LQW1LToj.mjs +0 -36
  1868. package/dist/useAdvancedParamInit-COJzBPcY.mjs +0 -168
  1869. package/dist/useDayjs-DPNxdkJX.mjs +0 -32
  1870. package/dist/useErrorHandler-BRfB3Nma.mjs +0 -19
  1871. package/dist/useImageProxy-Ce8Rqjw3.mjs +0 -20
  1872. package/dist/useOrgaComputed-DXB4jqMM.mjs +0 -19
  1873. package/dist/usePlayerLogicProgress-BsOt5dL-.mjs +0 -108
  1874. package/dist/usePodcastView-DUG7H7_G.mjs +0 -56
  1875. package/dist/usePresentationItem-vnaThjqU.mjs +0 -190
  1876. package/dist/useRights-CacvXcg_.mjs +0 -276
  1877. package/dist/useRubriquesFilterComputed-B6yAljnV.mjs +0 -13
  1878. package/dist/useRubriquesFilterParam-vy-84z0z.mjs +0 -36
  1879. package/dist/useSharePlatforms-BR8_vXB0.mjs +0 -468
  1880. package/dist/useSimplePageParam-5gqDFPw2.mjs +0 -54
  1881. package/dist/useTranslation-BtpS4E-y.mjs +0 -205
  1882. 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":";;;;;;;;;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;;;ACjEA,IAAM,mBAAmB;AAezB,IAAa,uBAAuB;;;;;;CAOhC,SAAS,sBAAsB,KAAqB;EAChD,MAAM,aACF;EACJ,MAAM,SAAwB,CAAC;EAC/B,IAAI;EACJ,QAAQ,UAAU,WAAW,KAAK,GAAG,MAAM,MACvC,OAAO,KAAK,QAAQ,KAAK,GAAG;EAEhC,OAAO,OAAO,KAAK,EAAE;CACzB;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-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":"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"}
@@ -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":";;;;;;;;;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-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":";;;;;;;;;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,MAAM,GAAG;CACxB,OAAO,CAAC,EAAE,KAAK,KAAK,KAAK,CAAC,EAAE,KAAK,KAAK,WAAW,EAAE,EAAE;AACzD;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-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":";;;;;;;;;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;;;ACjEA,IAAM,mBAAmB;AAezB,IAAa,uBAAuB;;;;;;CAOhC,SAAS,sBAAsB,KAAqB;EAChD,MAAM,aACF;EACJ,MAAM,SAAwB,CAAC;EAC/B,IAAI;EACJ,QAAQ,UAAU,WAAW,KAAK,GAAG,MAAM,MAAM;GAC7C,MAAM,QAAQ,QAAQ,GAAG,MAAM,IAAI;GACnC,OAAO,KAAK,MAAM,KAAK,GAAG,IAAI,GAAG;EACrC;EACA,OAAO,OAAO,KAAK,EAAE;CACzB;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,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"}