@saooti/octopus-sdk 42.3.0 → 42.3.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (615) hide show
  1. package/dist/{AdvancedSearch-DEh3iiuK.mjs → AdvancedSearch-BTbYmlMm.mjs} +8 -8
  2. package/dist/AdvancedSearch-C6BJzvGT.mjs.map +1 -0
  3. package/dist/AdvancedSearch-ChnJq71j.mjs.map +1 -0
  4. package/dist/AdvancedSearch-ChtUj3vS.mjs.map +1 -0
  5. package/dist/AdvancedSearch-D-9o5KzI.mjs.map +1 -0
  6. package/dist/AdvancedSearch-DH5YTENK.mjs.map +1 -0
  7. package/dist/AdvancedSearch-DN3WFduh.mjs.map +1 -0
  8. package/dist/AdvancedSearch-EpYd6K3d.mjs.map +1 -0
  9. package/dist/AdvancedSearch-PRJyRSID.mjs.map +1 -0
  10. package/dist/AdvancedSearch-_E2nwQ-A.mjs.map +1 -0
  11. package/dist/AdvancedSearch-cLjakm-6.mjs.map +1 -0
  12. package/dist/AdvancedSearch-k-fQfSBk.mjs.map +1 -0
  13. package/dist/AdvancedSearch-zFJq-WlO.mjs.map +1 -0
  14. package/dist/CategoryChooser-CSUjIA0D.mjs.map +1 -0
  15. package/dist/{CategoryChooser-CeF4n-nw.mjs → CategoryChooser-fAUMJNHu.mjs} +1 -1
  16. package/dist/CategoryFilter-B0S_nCvS.mjs.map +1 -0
  17. package/dist/CategoryFilter-BVrLO_pV.mjs.map +1 -0
  18. package/dist/{CategoryFilter-Djmal5bY.mjs → CategoryFilter-CsYCvEnz.mjs} +3 -3
  19. package/dist/CategoryFilter-DVwCpHLx.mjs.map +1 -0
  20. package/dist/CategoryList-B_9GG6Z9.mjs.map +1 -0
  21. package/dist/{CategoryList-Dksp79Lm.mjs → CategoryList-CDoIfrDw.mjs} +2 -2
  22. package/dist/CategoryList-CUae_phb.mjs.map +1 -0
  23. package/dist/CategoryList-DxR0fpKd.mjs.map +1 -0
  24. package/dist/CategoryPage-C7aKDtgs.mjs.map +1 -0
  25. package/dist/{CategoryPage-DC8fMny_.mjs → CategoryPage-Cl5Yuxnu.mjs} +2 -2
  26. package/dist/CategoryPage-DlnAp05t.mjs.map +1 -0
  27. package/dist/CategoryPage-Dlq5XQBS.mjs.map +1 -0
  28. package/dist/{CategorySearchFilter-KVYBscdd.mjs → CategorySearchFilter-Cce5zxZB.mjs} +1 -1
  29. package/dist/CategorySearchFilter-EULpSE2e.mjs.map +1 -0
  30. package/dist/ChapteringModal-BplEGZj2.mjs.map +1 -0
  31. package/dist/ChapteringModal-C9yuW_IU.mjs.map +1 -0
  32. package/dist/{ChapteringModal-Be9FF1yz.mjs → ChapteringModal-DiiVSG7s.mjs} +1 -1
  33. package/dist/{CheckIdentityModal-nMszYOsW.mjs → CheckIdentityModal-BrnYeGdk.mjs} +3 -3
  34. package/dist/CheckIdentityModal-BtGdsv2v.mjs.map +1 -0
  35. package/dist/CheckIdentityModal-CpRO7ehH.mjs.map +1 -0
  36. package/dist/CheckIdentityModal-Cry9ra4J.mjs.map +1 -0
  37. package/dist/ClassicDatePicker--q1yYb-S.mjs.map +1 -0
  38. package/dist/ClassicDatePicker-4ouU5ov9.mjs.map +1 -0
  39. package/dist/ClassicDatePicker-B8bI9QfF.mjs.map +1 -0
  40. package/dist/ClassicDatePicker-BTJWityQ.mjs +186 -0
  41. package/dist/ClassicDatePicker-CChR9LBd.mjs.map +1 -0
  42. package/dist/ClassicDatePicker-CopJVkF0.mjs.map +1 -0
  43. package/dist/ClassicDatePicker-DgcJCevR.mjs.map +1 -0
  44. package/dist/ClassicDatePicker-NxGNQxHE.mjs.map +1 -0
  45. package/dist/ClassicDatePicker-dgdGXcRk.mjs.map +1 -0
  46. package/dist/{ClassicEmojiPicker-B4TAlZvo.mjs → ClassicEmojiPicker-C0gm-DA2.mjs} +1 -1
  47. package/dist/ClassicEmojiPicker-CJZD8H7L.mjs.map +1 -0
  48. package/dist/{ClassicHelpButton-DT7T8tMe.mjs → ClassicHelpButton-BnRLmYuh.mjs} +1 -1
  49. package/dist/ClassicHelpButton-Qb4AwvWI.mjs.map +1 -0
  50. package/dist/{ClassicInputText-DJ5kURGM.mjs → ClassicInputText-YsntJkHk.mjs} +1 -1
  51. package/dist/ClassicInputText-npkVSUoH.mjs.map +1 -0
  52. package/dist/ClassicMultiselect-2I2K-o4R.mjs.map +1 -0
  53. package/dist/{ClassicMultiselect-CDHdJjjV.mjs → ClassicMultiselect-C0yzVQ8Y.mjs} +1 -1
  54. package/dist/{ClassicNotifications-DEpVRRHg.mjs → ClassicNotifications-8CVfGSqL.mjs} +1 -1
  55. package/dist/ClassicNotifications-BFQ-R6kO.mjs.map +1 -0
  56. package/dist/ClassicNotifications-DR0PM1Xp.mjs.map +1 -0
  57. package/dist/{ClassicPopover-DWR50Nxi.mjs → ClassicPopover-BUb-1WMB.mjs} +1 -1
  58. package/dist/ClassicPopover-BhMY2SMo.mjs.map +1 -0
  59. package/dist/ClipboardModal-B_SZ6jDk.mjs.map +1 -0
  60. package/dist/{ClipboardModal-BUKwZYOf.mjs → ClipboardModal-ByVXPcKD.mjs} +1 -1
  61. package/dist/ClipboardModal-DjrZQRtY.mjs.map +1 -0
  62. package/dist/{CommentInput-US8ZtNj1.mjs → CommentInput-CrRstzua.mjs} +4 -4
  63. package/dist/CommentInput-DPMj47uE.mjs.map +1 -0
  64. package/dist/CommentInput-DbhOyi7c.mjs.map +1 -0
  65. package/dist/CommentInput-I97yysBW.mjs.map +1 -0
  66. package/dist/CommentItem-AItzrTBi.mjs.map +1 -0
  67. package/dist/CommentItem-B7vvJwZI.mjs.map +1 -0
  68. package/dist/{CommentItem-CqWZPmbj.mjs → CommentItem-BYU67TIu.mjs} +4 -4
  69. package/dist/CommentItem-CvNbH7Hf.mjs.map +1 -0
  70. package/dist/CommentList-BTyyCcX4.mjs.map +1 -0
  71. package/dist/CommentList-CWrf45Di.mjs.map +1 -0
  72. package/dist/CommentList-DP6wk4PD.mjs.map +1 -0
  73. package/dist/{CommentList-CSYpqgNM.mjs → CommentList-snIIudVC.mjs} +2 -2
  74. package/dist/CommentMoreActions-BNajG7wk.mjs.map +1 -0
  75. package/dist/CommentMoreActions-C1l4Y_HY.mjs.map +1 -0
  76. package/dist/CommentMoreActions-DPbJnEEV.mjs.map +1 -0
  77. package/dist/{CommentMoreActions-T5RN6BGq.mjs → CommentMoreActions-y202UxL5.mjs} +3 -3
  78. package/dist/{CommentName-DslRo9jg.mjs → CommentName-CHBlEM7I.mjs} +3 -3
  79. package/dist/CommentName-D5HN8bGE.mjs.map +1 -0
  80. package/dist/CommentName-DMom_kwo.mjs.map +1 -0
  81. package/dist/CommentName-OJrxjSxu.mjs.map +1 -0
  82. package/dist/CommentParentInfo-DWVF5Ewh.mjs.map +1 -0
  83. package/dist/CommentParentInfo-Do3IlO95.mjs.map +1 -0
  84. package/dist/{CommentParentInfo-DMX3nkCb.mjs → CommentParentInfo-DoEeaQGU.mjs} +2 -2
  85. package/dist/CommentParentInfo-DqHfDpKs.mjs.map +1 -0
  86. package/dist/{CommentPlayer-D3JEVPKX.mjs → CommentPlayer-B4MXG-gG.mjs} +2 -2
  87. package/dist/CommentPlayer-B67saxPf.mjs.map +1 -0
  88. package/dist/CommentPlayer-BUtEvkoV.mjs.map +1 -0
  89. package/dist/CommentSection-BIZMRePu.mjs.map +1 -0
  90. package/dist/CommentSection-CSehg6MD.mjs.map +1 -0
  91. package/dist/{CommentSection-Brn0VQcc.mjs → CommentSection-DZf04NxT.mjs} +3 -3
  92. package/dist/CommentSection-MDKioQWf.mjs.map +1 -0
  93. package/dist/CommentStore-BBm8MjxW.mjs.map +1 -0
  94. package/dist/{CommentStore-hPTYaDGr.mjs → CommentStore-CysGkBHp.mjs} +8 -8
  95. package/dist/CommentStore-F5MVSrDw.mjs.map +1 -0
  96. package/dist/ContractPreviewModal-CFSkXgB4.mjs.map +1 -0
  97. package/dist/ContractPreviewModal-CKL6Rb_V.mjs.map +1 -0
  98. package/dist/{ContractPreviewModal-48Je4Wuy.mjs → ContractPreviewModal-Dd-1KasR.mjs} +2 -2
  99. package/dist/DateFilter-BwYSwGc-.mjs.map +1 -0
  100. package/dist/DateFilter-CGTz76bp.mjs.map +1 -0
  101. package/dist/DateFilter-CfeYepTO.mjs.map +1 -0
  102. package/dist/{DateFilter-DztHuPm8.mjs → DateFilter-Cnb_S8Up.mjs} +1 -1
  103. package/dist/DateFilter-DFw66D2V.mjs.map +1 -0
  104. package/dist/DateFilter-DMOUMeCh.mjs.map +1 -0
  105. package/dist/DateFilter-DdbvVu9Q.mjs.map +1 -0
  106. package/dist/DateFilter-Dr1nRuvZ.mjs.map +1 -0
  107. package/dist/DateFilter-QGaXHkcu.mjs.map +1 -0
  108. package/dist/{DownloadPodcastButton-BYWuLoNg.mjs → DownloadPodcastButton-6HtR84aE.mjs} +2 -2
  109. package/dist/DownloadPodcastButton-D2qeKDPT.mjs.map +1 -0
  110. package/dist/DownloadPodcastButton-Tr_Y4qMu.mjs.map +1 -0
  111. package/dist/{EditCommentModal-DacFxzLx.mjs → EditCommentModal-BQ03B6LC.mjs} +2 -2
  112. package/dist/EditCommentModal-BZitN0Ir.mjs.map +1 -0
  113. package/dist/EditCommentModal-CcmCx_My.mjs.map +1 -0
  114. package/dist/EditCommentModal-sj0yXd7-.mjs.map +1 -0
  115. package/dist/EmissionGroupChooser--428fdeK.mjs.map +1 -0
  116. package/dist/EmissionGroupChooser-BJCKekKM.mjs.map +1 -0
  117. package/dist/EmissionGroupChooser-ByqGmsGw.mjs.map +1 -0
  118. package/dist/EmissionGroupChooser-Cb3CF0uc.mjs.map +1 -0
  119. package/dist/EmissionGroupChooser-D4vMQH8g.mjs.map +1 -0
  120. package/dist/{EmissionGroupChooser-KmzQjp7d.mjs → EmissionGroupChooser-De_IpEhW.mjs} +2 -2
  121. package/dist/EmissionInlineList-CdHQBjfR.mjs.map +1 -0
  122. package/dist/EmissionInlineList-CnA0d_k2.mjs.map +1 -0
  123. package/dist/EmissionInlineList-DLUvPBNl.mjs.map +1 -0
  124. package/dist/{EmissionInlineList-BoEIAbLu.mjs → EmissionInlineList-dlb4gUOP.mjs} +5 -5
  125. package/dist/EmissionItem-B39oFnXF.mjs.map +1 -0
  126. package/dist/EmissionItem-BkPLFhAo.mjs.map +1 -0
  127. package/dist/EmissionItem-CjAUdLb7.mjs.map +1 -0
  128. package/dist/{EmissionItem-BeQWw-UT.mjs → EmissionItem-Dm_IGNkw.mjs} +4 -4
  129. package/dist/EmissionList-B0UntYdC.mjs.map +1 -0
  130. package/dist/EmissionList-BQSI4xbi.mjs.map +1 -0
  131. package/dist/{EmissionList-DB7O1nj5.mjs → EmissionList-C4JEYLyK.mjs} +4 -4
  132. package/dist/EmissionList-C7lQBdlW.mjs.map +1 -0
  133. package/dist/EmissionPage-BF6s2ySo.mjs.map +1 -0
  134. package/dist/EmissionPage-B_-nDP5x.mjs.map +1 -0
  135. package/dist/EmissionPage-C-ESprrZ.mjs.map +1 -0
  136. package/dist/{EmissionPage-CNYJ1Puo.mjs → EmissionPage-C4XUdzzm.mjs} +10 -10
  137. package/dist/EmissionPage-CPXcNHGS.mjs.map +1 -0
  138. package/dist/EmissionPage-EMgXCVhK.mjs.map +1 -0
  139. package/dist/EmissionPage-mXbUqOh9.mjs.map +1 -0
  140. package/dist/{EmissionPlayerItem-S_yqupad.mjs → EmissionPlayerItem-BLIdolRe.mjs} +3 -3
  141. package/dist/EmissionPlayerItem-C27zJBhY.mjs.map +1 -0
  142. package/dist/EmissionPlayerItem-C3fkgEaL.mjs.map +1 -0
  143. package/dist/EmissionPlayerItem-DxXG20G1.mjs.map +1 -0
  144. package/dist/EmissionPresentationItem-BNnDSWGQ.mjs.map +1 -0
  145. package/dist/EmissionPresentationItem-BeETY65I.mjs.map +1 -0
  146. package/dist/{EmissionPresentationItem-kJgKN7Ju.mjs → EmissionPresentationItem-DYDwfqwp.mjs} +1 -1
  147. package/dist/EmissionPresentationList-BD7rIUok.mjs.map +1 -0
  148. package/dist/EmissionPresentationList-CGMyY_iu.mjs.map +1 -0
  149. package/dist/{EmissionPresentationList-Bg9X3CJP.mjs → EmissionPresentationList-Cxi7QnIs.mjs} +3 -3
  150. package/dist/EmissionsPage-4To0aRBA.mjs.map +1 -0
  151. package/dist/{EmissionsPage-BLpGH_PR.mjs → EmissionsPage-B0bXLncg.mjs} +5 -5
  152. package/dist/EmissionsPage-BIspB5uq.mjs.map +1 -0
  153. package/dist/EmissionsPage-BhUjdpEu.mjs.map +1 -0
  154. package/dist/EmissionsPage-Bn1R_ipo.mjs.map +1 -0
  155. package/dist/EmissionsPage-CNXwdJuV.mjs.map +1 -0
  156. package/dist/EmissionsPage-CPmhIbFf.mjs.map +1 -0
  157. package/dist/EmissionsPage-Cgzvn2h8.mjs.map +1 -0
  158. package/dist/EmissionsPage-D09zTpGb.mjs.map +1 -0
  159. package/dist/EmissionsPage-Dl7qaQT1.mjs.map +1 -0
  160. package/dist/EmissionsPage-DyleZtu_.mjs.map +1 -0
  161. package/dist/EmissionsPage-OVpc7k1Z.mjs.map +1 -0
  162. package/dist/EmissionsPage-wjKBLFM6.mjs.map +1 -0
  163. package/dist/Error403Page-B6Q7ijY3.mjs.map +1 -0
  164. package/dist/Error403Page-DF08mgCL.mjs.map +1 -0
  165. package/dist/{Error403Page-BB69doEn.mjs → Error403Page-DVmC5AOd.mjs} +2 -2
  166. package/dist/FooterGarSection-BWahCyz0.mjs.map +1 -0
  167. package/dist/{FooterGarSection-B9nsnpfF.mjs → FooterGarSection-BqPggI3o.mjs} +3 -3
  168. package/dist/FooterGarSection-CN8ZfO7e.mjs.map +1 -0
  169. package/dist/FooterSection-BOjr1LRb.mjs.map +1 -0
  170. package/dist/{FooterSection-DdGtlbk-.mjs → FooterSection-C5FEIJlU.mjs} +11 -11
  171. package/dist/FooterSection-nVRzKSYN.mjs.map +1 -0
  172. package/dist/HomeDropdown-3fl_xltN.mjs.map +1 -0
  173. package/dist/HomeDropdown-DGNkJhG2.mjs.map +1 -0
  174. package/dist/{HomeDropdown-BqwwLStt.mjs → HomeDropdown-Fx6kQAuH.mjs} +3 -3
  175. package/dist/HomeDropdown-PvmOUzYb.mjs.map +1 -0
  176. package/dist/{HomePage-JOUAKKfP.mjs → HomePage-7PT7HmHs.mjs} +3 -3
  177. package/dist/HomePage-D0Pbu_h1.mjs.map +1 -0
  178. package/dist/HomePage-D6_D1f33.mjs.map +1 -0
  179. package/dist/HomePage-ry0NfX1M.mjs.map +1 -0
  180. package/dist/InlineRubriqueList-BdpS1pVc.mjs.map +1 -0
  181. package/dist/InlineRubriqueList-BlcjQ4wR.mjs.map +1 -0
  182. package/dist/{InlineRubriqueList-BzcHKvM4.mjs → InlineRubriqueList-ezgexR-O.mjs} +1 -1
  183. package/dist/{LikeSection-MmbHMunb.mjs → LikeSection-CGu4yOCr.mjs} +3 -3
  184. package/dist/LikeSection-Cqj4y7qZ.mjs.map +1 -0
  185. package/dist/LikeSection-D95IMsZE.mjs.map +1 -0
  186. package/dist/LikeSection-HJla-zgI.mjs.map +1 -0
  187. package/dist/{ListPaginate-5uRK_QKJ.mjs → ListPaginate-BPdnBcpe.mjs} +2 -2
  188. package/dist/ListPaginate-DYzRnp-2.mjs.map +1 -0
  189. package/dist/ListPaginate-DyR7HLIc.mjs.map +1 -0
  190. package/dist/LiveHorizontalList-Bqe351Ut.mjs.map +1 -0
  191. package/dist/{LiveHorizontalList-CpoIRd4C.mjs → LiveHorizontalList-Bs-Rz5Ws.mjs} +3 -3
  192. package/dist/LiveHorizontalList-CaujYMT3.mjs.map +1 -0
  193. package/dist/LiveHorizontalList-DhsOZPT3.mjs.map +1 -0
  194. package/dist/{LiveList-DYFBrNgg.mjs → LiveList-BVOEnAEc.mjs} +5 -5
  195. package/dist/LiveList-DMB3FxUM.mjs.map +1 -0
  196. package/dist/LiveList-DOi4GV1x.mjs.map +1 -0
  197. package/dist/LiveList-Dh1mJVs7.mjs.map +1 -0
  198. package/dist/LivesPage-BvDLscOE.mjs.map +1 -0
  199. package/dist/{LivesPage-FSkmBdVw.mjs → LivesPage-DG5VY4HF.mjs} +2 -2
  200. package/dist/LivesPage-DmSlg7iH.mjs.map +1 -0
  201. package/dist/LivesPage-yy_5pI8R.mjs.map +1 -0
  202. package/dist/MapPage-3n-rigBK.mjs.map +1 -0
  203. package/dist/MapPage-5GwE8Z4E.mjs.map +1 -0
  204. package/dist/{MapPage-DpBt2gWF.mjs → MapPage-bIe2a9O1.mjs} +2 -2
  205. package/dist/MobileMenu-BSos17v3.mjs.map +1 -0
  206. package/dist/{MobileMenu-CjNMfHUP.mjs → MobileMenu-BZ5nOrYw.mjs} +5 -5
  207. package/dist/MobileMenu-C6W37oJg.mjs.map +1 -0
  208. package/dist/MobileMenu-K0rNwrW1.mjs.map +1 -0
  209. package/dist/NewsletterModal-CFGXBtID.mjs.map +1 -0
  210. package/dist/NewsletterModal-CZNwpCK5.mjs.map +1 -0
  211. package/dist/{NewsletterModal-BurqHTFc.mjs → NewsletterModal-DZk0mSVC.mjs} +1 -1
  212. package/dist/OctopusMultiselect-CFUGyzeM.mjs.map +1 -0
  213. package/dist/OctopusMultiselect-Cn1lqbQo.mjs.map +1 -0
  214. package/dist/OctopusMultiselect-esu8BY0J.mjs.map +1 -0
  215. package/dist/{OctopusMultiselect-C8qljiaH.mjs → OctopusMultiselect-noQPQMZQ.mjs} +7 -5
  216. package/dist/OrganisationChooser-BKfXLT4G.mjs.map +1 -0
  217. package/dist/{OrganisationChooser-Dx-OT7MW.mjs → OrganisationChooser-C48cWqbY.mjs} +3 -3
  218. package/dist/OrganisationChooser-PpO7MD7f.mjs.map +1 -0
  219. package/dist/OrganisationChooser-Y_jO6oXv.mjs.map +1 -0
  220. package/dist/{OrganisationChooserLight-BF5fT5pV.mjs → OrganisationChooserLight-Bcltbv-v.mjs} +1 -1
  221. package/dist/OrganisationChooserLight-Dh7wMH40.mjs.map +1 -0
  222. package/dist/OrganisationChooserLight-Dx_rkvpP.mjs.map +1 -0
  223. package/dist/PageNotFound-DeW-K_hL.mjs.map +1 -0
  224. package/dist/{PageNotFound-Cj-3Gv8T.mjs → PageNotFound-DogaoIFX.mjs} +2 -2
  225. package/dist/PageNotFound-gRuMWYCp.mjs.map +1 -0
  226. package/dist/ParticipantInlineList-CY_s6aJm.mjs.map +1 -0
  227. package/dist/{ParticipantInlineList-DEWqM1Io.mjs → ParticipantInlineList-D9pkOlvP.mjs} +4 -4
  228. package/dist/ParticipantInlineList-DSatB75C.mjs.map +1 -0
  229. package/dist/ParticipantItem-BG7yqRvD.mjs.map +1 -0
  230. package/dist/ParticipantItem-BTK25HID.mjs.map +1 -0
  231. package/dist/{ParticipantItem-BZAUIeSR.mjs → ParticipantItem-CbHOfVon.mjs} +3 -3
  232. package/dist/ParticipantPage-B4VnV8Yc.mjs.map +1 -0
  233. package/dist/ParticipantPage-B6Gzg6ul.mjs.map +1 -0
  234. package/dist/ParticipantPage-CNRNKTtC.mjs.map +1 -0
  235. package/dist/ParticipantPage-CpkhQjN2.mjs.map +1 -0
  236. package/dist/ParticipantPage-D61CCIqy.mjs.map +1 -0
  237. package/dist/ParticipantPage-Dh4JJCmJ.mjs.map +1 -0
  238. package/dist/{ParticipantPage-CzaHoWij.mjs → ParticipantPage-nTp2MbgB.mjs} +6 -6
  239. package/dist/{ParticipantsPage-goxJZQZZ.mjs → ParticipantsPage-Bbz9lQ_0.mjs} +6 -6
  240. package/dist/ParticipantsPage-COaQrVID.mjs.map +1 -0
  241. package/dist/ParticipantsPage-DRVVU7qp.mjs.map +1 -0
  242. package/dist/ParticipantsPage-DhKCWwKE.mjs.map +1 -0
  243. package/dist/{PlayerAnonymousModal-By96BtpA.mjs → PlayerAnonymousModal-B1iZ34O8.mjs} +2 -2
  244. package/dist/PlayerAnonymousModal-CBZStK-L.mjs.map +1 -0
  245. package/dist/PlayerAnonymousModal-Cq6-Dn49.mjs.map +1 -0
  246. package/dist/PlayerAnonymousModal-Cu2GGoAh.mjs.map +1 -0
  247. package/dist/PlayerAnonymousModal-DiXWtNmM.mjs.map +1 -0
  248. package/dist/PlayerAnonymousModal-DrQvDDym.mjs.map +1 -0
  249. package/dist/PlayerCompact-B9oeGx_g.mjs.map +1 -0
  250. package/dist/PlayerCompact-DtMginEc.mjs.map +1 -0
  251. package/dist/PlayerCompact-E8ydrdJ4.mjs.map +1 -0
  252. package/dist/{PlayerCompact-CjU8xxVH.mjs → PlayerCompact-_39FpkWo.mjs} +4 -4
  253. package/dist/PlayerComponent-4Wj5XlrS.mjs.map +1 -0
  254. package/dist/{PlayerComponent-B58O6U6i.mjs → PlayerComponent-B1RsmSf0.mjs} +47 -47
  255. package/dist/PlayerComponent-BGVzhVz9.mjs.map +1 -0
  256. package/dist/PlayerComponent-BIshvul2.mjs.map +1 -0
  257. package/dist/PlayerComponent-BO7wUL2M.mjs.map +1 -0
  258. package/dist/PlayerComponent-C222I0kT.mjs.map +1 -0
  259. package/dist/PlayerComponent-CjNZNKKz.mjs.map +1 -0
  260. package/dist/PlayerComponent-UG_c6_yr.mjs.map +1 -0
  261. package/dist/{PlayerLarge-CWL5SDzD.mjs → PlayerLarge-BxdyYLOt.mjs} +5 -5
  262. package/dist/PlayerLarge-CPUAoR9q.mjs.map +1 -0
  263. package/dist/PlayerLarge-DP7RsA83.mjs.map +1 -0
  264. package/dist/PlayerLarge-DpiFO7gk.mjs.map +1 -0
  265. package/dist/PlayerLarge-Dwtmu4gz.mjs.map +1 -0
  266. package/dist/PlayerLarge-HvRHSw4j.mjs.map +1 -0
  267. package/dist/PlayerLarge-X5uYCbyS.mjs.map +1 -0
  268. package/dist/PlayerLarge-qwr3iWSX.mjs.map +1 -0
  269. package/dist/{PlayerPlayButton-DmvV2YDi.mjs → PlayerPlayButton-BIsfgj0d.mjs} +4 -4
  270. package/dist/PlayerPlayButton-BQ4zJOrE.mjs.map +1 -0
  271. package/dist/PlayerPlayButton-kh4ZCdWh.mjs.map +1 -0
  272. package/dist/PlayerProgressBar-C-I3dk3l.mjs.map +1 -0
  273. package/dist/PlayerProgressBar-Dr-aFk7O.mjs.map +1 -0
  274. package/dist/{PlayerProgressBar-Cl_mF4nD.mjs → PlayerProgressBar-dSschgez.mjs} +2 -2
  275. package/dist/PlayerProgressBar-xc1ZFPJY.mjs.map +1 -0
  276. package/dist/PlayerStore-Aq_ukXXS.mjs.map +1 -0
  277. package/dist/PlayerStore-C_QCHbT3.mjs.map +1 -0
  278. package/dist/{PlayerStore-CKprkxa0.mjs → PlayerStore-DggKki80.mjs} +1 -1
  279. package/dist/PlayerVideo-BNfhaNUn.mjs.map +1 -0
  280. package/dist/{PlayerVideo-CVUU7nHT.mjs → PlayerVideo-BWyvKlJT.mjs} +3 -3
  281. package/dist/PlayerVideo-Bhok6qYS.mjs.map +1 -0
  282. package/dist/PlayerVideo-CN609whx.mjs.map +1 -0
  283. package/dist/PlayerVideo-DXG_PsWA.mjs.map +1 -0
  284. package/dist/PlayerVideo-DzUapxuZ.mjs.map +1 -0
  285. package/dist/PlayerVideoDigiteka-B1rRVLzy.mjs.map +1 -0
  286. package/dist/PlayerVideoDigiteka-B6qODy7b.mjs.map +1 -0
  287. package/dist/{PlayerVideoDigiteka-DZIqqN8a.mjs → PlayerVideoDigiteka-Dxx63XHI.mjs} +2 -2
  288. package/dist/PlayerVideoHls-BoAbvi2b.mjs.map +1 -0
  289. package/dist/PlayerVideoHls-BsHaaJB-.mjs.map +1 -0
  290. package/dist/PlayerVideoHls-C0ddorEn.mjs.map +1 -0
  291. package/dist/PlayerVideoHls-DBODDRmV.mjs.map +1 -0
  292. package/dist/PlayerVideoHls-DVNHm_O2.mjs.map +1 -0
  293. package/dist/{PlayerVideoHls-BirHOkZD.mjs → PlayerVideoHls-DzbyXZsQ.mjs} +9 -7
  294. package/dist/{PlaylistPage-DljbABur.mjs → PlaylistPage-BdbqXFwR.mjs} +35 -35
  295. package/dist/PlaylistPage-BgUaPJet.mjs.map +1 -0
  296. package/dist/PlaylistPage-BwF2VdGb.mjs.map +1 -0
  297. package/dist/PlaylistPage-CINwx3zE.mjs.map +1 -0
  298. package/dist/PlaylistPage-CPB647jC.mjs.map +1 -0
  299. package/dist/PlaylistPage-DDzE5GQs.mjs.map +1 -0
  300. package/dist/PlaylistPage-bm1nWKMg.mjs.map +1 -0
  301. package/dist/PlaylistsPage-BwkVSYIp.mjs.map +1 -0
  302. package/dist/PlaylistsPage-C62NUvz4.mjs.map +1 -0
  303. package/dist/{PlaylistsPage-BSW-uPWF.mjs → PlaylistsPage-D08i24b2.mjs} +13 -13
  304. package/dist/PlaylistsPage-Dvh77ql6.mjs.map +1 -0
  305. package/dist/PodcastFilterList-BBhzOM64.mjs.map +1 -0
  306. package/dist/PodcastFilterList-BKBjd36i.mjs.map +1 -0
  307. package/dist/{PodcastFilterList-YM90eN60.mjs → PodcastFilterList-CL5ebQ69.mjs} +3 -3
  308. package/dist/PodcastFilterList-D9NTYS1v.mjs.map +1 -0
  309. package/dist/{PodcastImage-BtiQlrb3.mjs → PodcastImage-BFA22TgZ.mjs} +6 -6
  310. package/dist/PodcastImage-BhQKB5te.mjs.map +1 -0
  311. package/dist/PodcastImage-CHx3bUzt.mjs.map +1 -0
  312. package/dist/PodcastInlineList-CcNd_Hbs.mjs.map +1 -0
  313. package/dist/{PodcastInlineList-B32BSFqN.mjs → PodcastInlineList-H6BxXx0A.mjs} +1 -1
  314. package/dist/PodcastInlineList-akLivgog.mjs.map +1 -0
  315. package/dist/PodcastInlineList-jI2EvXSo.mjs.map +1 -0
  316. package/dist/{PodcastInlineListTemplate-DTrS1UiG.mjs → PodcastInlineListTemplate-Chbi8aME.mjs} +3 -3
  317. package/dist/PodcastInlineListTemplate-DT9ZRs61.mjs.map +1 -0
  318. package/dist/PodcastInlineListTemplate-Dh1xF6xT.mjs.map +1 -0
  319. package/dist/PodcastIsPlaying-C0jcpBQd.mjs.map +1 -0
  320. package/dist/PodcastIsPlaying-H6P1CHAI.mjs.map +1 -0
  321. package/dist/{PodcastIsPlaying-BtmHnQi9.mjs → PodcastIsPlaying-ugHcefCy.mjs} +1 -1
  322. package/dist/{PodcastItem-TdtzApJ6.mjs → PodcastItem-Baki7W0q.mjs} +6 -6
  323. package/dist/PodcastItem-BfvK4ion.mjs.map +1 -0
  324. package/dist/PodcastItem-DEhA78z9.mjs.map +1 -0
  325. package/dist/PodcastItem-DwK_Yu1G.mjs.map +1 -0
  326. package/dist/PodcastList-B4ic6Cij.mjs.map +1 -0
  327. package/dist/PodcastList-C2R92m6S.mjs.map +1 -0
  328. package/dist/PodcastList-DWl6zz_z.mjs.map +1 -0
  329. package/dist/PodcastList-Dbt4nmKg.mjs.map +1 -0
  330. package/dist/PodcastList-KaQBRbR9.mjs.map +1 -0
  331. package/dist/{PodcastList-BAOJhQ7G.mjs → PodcastList-N_XOE-hI.mjs} +5 -5
  332. package/dist/PodcastList-d3SGLPvF.mjs.map +1 -0
  333. package/dist/{PodcastList-Bbe3yWiu.mjs → PodcastList-yjd_exFg.mjs} +4 -4
  334. package/dist/PodcastPage-B0pbZ5o_.mjs.map +1 -0
  335. package/dist/PodcastPage-BOA44Us4.mjs.map +1 -0
  336. package/dist/PodcastPage-Bs1wz-0E.mjs.map +1 -0
  337. package/dist/PodcastPage-C37Wa-qH.mjs.map +1 -0
  338. package/dist/PodcastPage-D0HYJxaK.mjs.map +1 -0
  339. package/dist/PodcastPage-D0U6-etV.mjs.map +1 -0
  340. package/dist/PodcastPage-DwMPY4po.mjs.map +1 -0
  341. package/dist/{PodcastPage-CAxub2do.mjs → PodcastPage-SUEm-Enm.mjs} +26 -26
  342. package/dist/PodcastPlayBar-Bo-W_dSK.mjs.map +1 -0
  343. package/dist/PodcastPlayBar-CBtMWlVc.mjs.map +1 -0
  344. package/dist/{PodcastPlayBar-gAEttclo.mjs → PodcastPlayBar-COU17bnm.mjs} +3 -3
  345. package/dist/PodcastPlayBar-Cpr3Ff7J.mjs.map +1 -0
  346. package/dist/PodcastPlayBasicButton-BvJPrxpI.mjs.map +1 -0
  347. package/dist/PodcastPlayBasicButton-CS5TNlmX.mjs.map +1 -0
  348. package/dist/{PodcastPlayBasicButton-7w91y2ow.mjs → PodcastPlayBasicButton-CVXhEUHB.mjs} +1 -1
  349. package/dist/{PodcastPlayButton-CQY0d6f-.mjs → PodcastPlayButton--gjzxW0o.mjs} +3 -3
  350. package/dist/PodcastPlayButton-BqvE4ZUl.mjs.map +1 -0
  351. package/dist/PodcastPlayButton-DW5Feest.mjs.map +1 -0
  352. package/dist/PodcastPlaylistInlineList-BV31HaB2.mjs.map +1 -0
  353. package/dist/PodcastPlaylistInlineList-C-WYs6aE.mjs.map +1 -0
  354. package/dist/{PodcastPlaylistInlineList-BE5L8pSP.mjs → PodcastPlaylistInlineList-DsEHaYGZ.mjs} +7 -7
  355. package/dist/PodcastPlaylistInlineList-HEdFAq1l.mjs.map +1 -0
  356. package/dist/{PodcastPresentationList-DH6Rq0Z4.mjs → PodcastPresentationList-B9vORr36.mjs} +4 -4
  357. package/dist/PodcastPresentationList-ChqvdXY0.mjs.map +1 -0
  358. package/dist/PodcastPresentationList-Dit6HvJr.mjs.map +1 -0
  359. package/dist/{PodcastProgressBar-DoeG7lDj.mjs → PodcastProgressBar-B0FwZOTT.mjs} +3 -3
  360. package/dist/PodcastProgressBar-B8ONWq-Z.mjs.map +1 -0
  361. package/dist/PodcastProgressBar-BoGtJPAa.mjs.map +1 -0
  362. package/dist/PodcastProgressBar-DTRhKzW-.mjs.map +1 -0
  363. package/dist/{PodcastRawTranscript-Cktqtbcg.mjs → PodcastRawTranscript-BiuftXu-.mjs} +2 -2
  364. package/dist/PodcastRawTranscript-C8SJcaQE.mjs.map +1 -0
  365. package/dist/PodcastRawTranscript-nfzHM0k_.mjs.map +1 -0
  366. package/dist/PodcastRawTranscript-r5pRtZDg.mjs.map +1 -0
  367. package/dist/{PodcastSwiperList-DZ26-8xy.mjs → PodcastSwiperList-BKOYhrsH.mjs} +4 -4
  368. package/dist/PodcastSwiperList-Bsg0q89o.mjs.map +1 -0
  369. package/dist/PodcastSwiperList-BxsEv7_8.mjs.map +1 -0
  370. package/dist/PodcastSwiperList-Cju5VHcH.mjs.map +1 -0
  371. package/dist/PodcastmakerHeader-6fIwE70J.mjs.map +1 -0
  372. package/dist/PodcastmakerHeader-BBPEy__r.mjs.map +1 -0
  373. package/dist/{PodcastmakerHeader-MhdOrssb.mjs → PodcastmakerHeader-CIoJwm1L.mjs} +1 -1
  374. package/dist/PodcastsPage-967SI8kL.mjs.map +1 -0
  375. package/dist/{PodcastsPage-BXjTDNhn.mjs → PodcastsPage-B5NwPMyn.mjs} +5 -5
  376. package/dist/PodcastsPage-B7j2XxPZ.mjs.map +1 -0
  377. package/dist/PodcastsPage-BOzszXpc.mjs.map +1 -0
  378. package/dist/PodcastsPage-Bw0tzWoX.mjs.map +1 -0
  379. package/dist/PodcastsPage-D3TAYJV8.mjs.map +1 -0
  380. package/dist/PodcastsPage-DJsgHs7V.mjs.map +1 -0
  381. package/dist/PodcastsPage-DKWHzNNA.mjs.map +1 -0
  382. package/dist/PodcastsPage-DONqoMkB.mjs.map +1 -0
  383. package/dist/PodcastsPage-DUcfPeLD.mjs.map +1 -0
  384. package/dist/PodcastsPage-DWBgwD6o.mjs.map +1 -0
  385. package/dist/PodcastsPage-DZO4H1Ff.mjs.map +1 -0
  386. package/dist/PodcastsPage-DhEMPqCT.mjs.map +1 -0
  387. package/dist/ProductorSearch-BgmV_RCq.mjs.map +1 -0
  388. package/dist/{ProductorSearch-Z36zTZK4.mjs → ProductorSearch-BiUEs7mG.mjs} +3 -3
  389. package/dist/ProductorSearch-C4Nv2HzS.mjs.map +1 -0
  390. package/dist/ProductorSearch-DtVe_rU9.mjs.map +1 -0
  391. package/dist/ProgressBar-BMeSiueh.mjs.map +1 -0
  392. package/dist/ProgressBar-C15ih0uL.mjs.map +1 -0
  393. package/dist/{ProgressBar-CTOa-MDz.mjs → ProgressBar-CXB5q3-H.mjs} +2 -2
  394. package/dist/ProgressBar-DAUOWol1.mjs.map +1 -0
  395. package/dist/QrCode-BYLxjhwi.mjs.map +1 -0
  396. package/dist/QrCode-CCigeTaZ.mjs +109 -0
  397. package/dist/QrCode-CaXoOjo-.mjs.map +1 -0
  398. package/dist/QrCode-CcQR60hB.mjs.map +1 -0
  399. package/dist/QrCode-S_eLVZoz.mjs.map +1 -0
  400. package/dist/QrCode-XZMMiaX5.mjs.map +1 -0
  401. package/dist/QrCodeModal-BJOu1pAV.mjs.map +1 -0
  402. package/dist/QrCodeModal-BjT-0P0w.mjs.map +1 -0
  403. package/dist/QrCodeModal-BrabSTzq.mjs.map +1 -0
  404. package/dist/QrCodeModal-CjvbRYLW.mjs.map +1 -0
  405. package/dist/{QrCodeModal-DE3juCsN.mjs → QrCodeModal-Dpw_tCQ6.mjs} +1 -1
  406. package/dist/QrCodeModal-N2fjbP4S.mjs.map +1 -0
  407. package/dist/RadioCurrently-B_b8DV2w.mjs.map +1 -0
  408. package/dist/RadioCurrently-DufvDqm1.mjs.map +1 -0
  409. package/dist/{RadioCurrently-BlAhcc9E.mjs → RadioCurrently-ysRKhxKU.mjs} +3 -3
  410. package/dist/RadioHistory-B03bYMxm.mjs.map +1 -0
  411. package/dist/{RadioHistory-C7S79sZD.mjs → RadioHistory-DjsqvRgH.mjs} +2 -2
  412. package/dist/RadioHistory-Dv4gt9TM.mjs.map +1 -0
  413. package/dist/RadioImage-BFdiGgi_.mjs.map +1 -0
  414. package/dist/{RadioImage-BTn2Lquc.mjs → RadioImage-CSseYIVb.mjs} +4 -4
  415. package/dist/RadioImage-CrtD33dM.mjs.map +1 -0
  416. package/dist/RadioList--f7RDhHJ.mjs.map +1 -0
  417. package/dist/{RadioList-BD3zNwmk.mjs → RadioList-BZFFAobk.mjs} +4 -4
  418. package/dist/RadioList-De9NQ23Q.mjs.map +1 -0
  419. package/dist/RadioPage-BK1N--Kr.mjs.map +1 -0
  420. package/dist/RadioPage-BTtNFJI2.mjs.map +1 -0
  421. package/dist/RadioPage-CcK0y_5s.mjs.map +1 -0
  422. package/dist/RadioPage-Cqas0JX6.mjs.map +1 -0
  423. package/dist/{RadioPage-Bv3oupa1.mjs → RadioPage-Cwooj0wF.mjs} +4 -4
  424. package/dist/RadioPage-DhSB0sX5.mjs.map +1 -0
  425. package/dist/RadioPage-DlahFXYC.mjs.map +1 -0
  426. package/dist/RadioPlanning-BU1E8i4t.mjs.map +1 -0
  427. package/dist/{RadioPlanning-nkv_Mb_t.mjs → RadioPlanning-BmIxuUBI.mjs} +2 -2
  428. package/dist/RadioPlanning-Bx-N-xqX.mjs.map +1 -0
  429. package/dist/RadioProgressBar-0XM3ZTGU.mjs.map +1 -0
  430. package/dist/{RadioProgressBar-B2EgCOrK.mjs → RadioProgressBar-CQRGuPpC.mjs} +1 -1
  431. package/dist/RadioProgressBar-oyeS56mV.mjs.map +1 -0
  432. package/dist/{RecaptchaModal-w-9MlZ45.mjs → RecaptchaModal-BdW4xNlX.mjs} +1 -1
  433. package/dist/RecaptchaModal-DFlFQcHs.mjs.map +1 -0
  434. package/dist/RecaptchaModal-iLQ4UYOL.mjs.map +1 -0
  435. package/dist/ReportAbuseModal-BaPt2DLK.mjs.map +1 -0
  436. package/dist/ReportAbuseModal-BdZRe29L.mjs.map +1 -0
  437. package/dist/ReportAbuseModal-CH7Y153n.mjs.map +1 -0
  438. package/dist/{ReportAbuseModal-O1K7j7NV.mjs → ReportAbuseModal-jjGeXbB9.mjs} +4 -4
  439. package/dist/RightsIndicator-4pUsBq5j.mjs.map +1 -0
  440. package/dist/RightsIndicator-BH3jm_1O.mjs.map +1 -0
  441. package/dist/{RightsIndicator-D0cSu8j2.mjs → RightsIndicator-CPzWpH5Z.mjs} +1 -1
  442. package/dist/RightsIndicator-d8ffUFIj.mjs.map +1 -0
  443. package/dist/{RightsWrapper-BUj_1bwR.mjs → RightsWrapper-BTQ8GGUi.mjs} +5 -5
  444. package/dist/RightsWrapper-C3BRHqqo.mjs.map +1 -0
  445. package/dist/RightsWrapper-DJG9Ds6c.mjs.map +1 -0
  446. package/dist/RightsWrapper-nBURBTJX.mjs.map +1 -0
  447. package/dist/{RubriqueChoice-DaTWiDbl.mjs → RubriqueChoice-C-S-veJJ.mjs} +1 -1
  448. package/dist/RubriqueChoice-DsmnrUNs.mjs.map +1 -0
  449. package/dist/{RubriqueChooser-C33LorHa.mjs → RubriqueChooser-CNGn8LcP.mjs} +1 -1
  450. package/dist/RubriqueChooser-WmzcajTt.mjs.map +1 -0
  451. package/dist/RubriqueFilter-C9C_OiF5.mjs.map +1 -0
  452. package/dist/RubriqueFilter-DDI7DjMR.mjs.map +1 -0
  453. package/dist/RubriqueFilter-_8V1n9-x.mjs.map +1 -0
  454. package/dist/{RubriqueFilter-RgardNnQ.mjs → RubriqueFilter-rxiG8Wci.mjs} +3 -3
  455. package/dist/RubriqueList-99-nWSvq.mjs.map +1 -0
  456. package/dist/RubriqueList-BiRimk17.mjs.map +1 -0
  457. package/dist/RubriqueList-H_NHILuj.mjs.map +1 -0
  458. package/dist/{RubriqueList-DA9OYqUl.mjs → RubriqueList-rJj2IycY.mjs} +4 -4
  459. package/dist/RubriquePage-6KFPBPz8.mjs.map +1 -0
  460. package/dist/{RubriquePage-xgTOce7c.mjs → RubriquePage-BNEWnk3-.mjs} +4 -4
  461. package/dist/RubriquePage-Bpt-x7IK.mjs.map +1 -0
  462. package/dist/RubriquePage-Cwz9OqLO.mjs.map +1 -0
  463. package/dist/SearchPage-BtZnj3sA.mjs.map +1 -0
  464. package/dist/SearchPage-CbbbcXxs.mjs.map +1 -0
  465. package/dist/SearchPage-DMIV2AgJ.mjs.map +1 -0
  466. package/dist/{SearchPage-C3o5RPP0.mjs → SearchPage-DsZzPoEw.mjs} +2 -2
  467. package/dist/ShareAnonymous-BeSQozvM.mjs.map +1 -0
  468. package/dist/ShareAnonymous-BgsR6Ahp.mjs.map +1 -0
  469. package/dist/ShareAnonymous-CNWR1v6X.mjs.map +1 -0
  470. package/dist/{ShareAnonymous-bOwwEjPv.mjs → ShareAnonymous-DK2rnLl1.mjs} +3 -3
  471. package/dist/ShareAnonymous-DVpKBKbi.mjs.map +1 -0
  472. package/dist/ShareAnonymous-DWArDFT0.mjs.map +1 -0
  473. package/dist/ShareAnonymous-IaVbb-rp.mjs.map +1 -0
  474. package/dist/ShareModalPlayer-BHmsvxXF.mjs.map +1 -0
  475. package/dist/{ShareModalPlayer-D2oBrSly.mjs → ShareModalPlayer-Cfnk68-U.mjs} +1 -1
  476. package/dist/ShareModalPlayer-DLBU3lsU.mjs.map +1 -0
  477. package/dist/ShareModalPlayer-O-CmDObW.mjs.map +1 -0
  478. package/dist/ShareModalPlayer-QYu8Q9ks.mjs.map +1 -0
  479. package/dist/ShareModalPlayer-Vga-96DM.mjs.map +1 -0
  480. package/dist/{ShareNewsletter-CNw1LziN.mjs → ShareNewsletter-BWIAt47D.mjs} +1 -1
  481. package/dist/ShareNewsletter-BhFk6ARk.mjs.map +1 -0
  482. package/dist/ShareNewsletter-JCO4h7rk.mjs.map +1 -0
  483. package/dist/SharePlayer-C-RgIOh1.mjs.map +1 -0
  484. package/dist/{SharePlayer-CRri0YED.mjs → SharePlayer-C0aveOwy.mjs} +2 -2
  485. package/dist/SharePlayer-CNXrUj8M.mjs.map +1 -0
  486. package/dist/SharePlayer-D0-qY2dS.mjs.map +1 -0
  487. package/dist/SharePlayer-DQoFa7iv.mjs.map +1 -0
  488. package/dist/SharePlayer-DwNl3E7o.mjs.map +1 -0
  489. package/dist/{SharePlayerRadio-DVsegQMu.mjs → SharePlayerRadio-BqaeyEls.mjs} +2 -2
  490. package/dist/SharePlayerRadio-CHvCtKdZ.mjs.map +1 -0
  491. package/dist/SharePlayerRadio-CIsy-rCC.mjs.map +1 -0
  492. package/dist/SharePlayerRadio-ChfNulnf.mjs.map +1 -0
  493. package/dist/SharePlayerRadio-DA-W-306.mjs.map +1 -0
  494. package/dist/SharePlayerRadio-DwPeLUsk.mjs.map +1 -0
  495. package/dist/SharePlayerTypes-CeMV4n10.mjs.map +1 -0
  496. package/dist/SharePlayerTypes-DdyoQZDi.mjs.map +1 -0
  497. package/dist/{SharePlayerTypes-BxkEoBSL.mjs → SharePlayerTypes-DyrqFDVJ.mjs} +1 -1
  498. package/dist/ShareSocialsButtons-BHWzJVne.mjs.map +1 -0
  499. package/dist/ShareSocialsButtons-Bjx2ONvj.mjs.map +1 -0
  500. package/dist/{ShareSocialsButtons-BJ3DqvIO.mjs → ShareSocialsButtons-PqMXhFEk.mjs} +1 -1
  501. package/dist/{SimpleLayout-BJlcQjx9.mjs → SimpleLayout-9O9FZ69Q.mjs} +2 -2
  502. package/dist/SimpleLayout-B-QSfHeQ.mjs.map +1 -0
  503. package/dist/SimpleLayout-BauUacaf.mjs.map +1 -0
  504. package/dist/SimpleLayout-C29bPtbd.mjs.map +1 -0
  505. package/dist/SimpleLayout-Cjc3Q9Mb.mjs.map +1 -0
  506. package/dist/SimpleLayout-D4sVjQGu.mjs.map +1 -0
  507. package/dist/SimpleLayout-DaoXS--3.mjs.map +1 -0
  508. package/dist/SimpleLayout-vkWEZHLi.mjs.map +1 -0
  509. package/dist/{SmartLinkPage-DpD90wc7.mjs → SmartLinkPage-6HgX8LDv.mjs} +16 -16
  510. package/dist/SmartLinkPage-BcQmox7e.mjs.map +1 -0
  511. package/dist/SmartLinkPage-M_zB_Xp1.mjs.map +1 -0
  512. package/dist/SubscribeButtons-CyGYD1B1.mjs.map +1 -0
  513. package/dist/SubscribeButtons-DjjZQfOU.mjs.map +1 -0
  514. package/dist/{SubscribeButtons-zlRDGEzS.mjs → SubscribeButtons-IpzqDGIn.mjs} +3 -3
  515. package/dist/SubscribeButtons-yA2wowFc.mjs.map +1 -0
  516. package/dist/SwiperList-BNODHhLF.mjs.map +1 -0
  517. package/dist/SwiperList-Cqklwlg9.mjs.map +1 -0
  518. package/dist/{SwiperList-BlF3rPq5.mjs → SwiperList-O8nUg87R.mjs} +1 -1
  519. package/dist/TagList-4RDriU1J.mjs.map +1 -0
  520. package/dist/TagList-B5JPfT6j.mjs.map +1 -0
  521. package/dist/TagList-DVjqXiaA.mjs.map +1 -0
  522. package/dist/{TagList-BBHyaKp-.mjs → TagList-V9fAFATL.mjs} +2 -2
  523. package/dist/TagPage-BOsz6Bot.mjs.map +1 -0
  524. package/dist/TagPage-CALmJwxW.mjs.map +1 -0
  525. package/dist/{TagPage-DLpNBBjP.mjs → TagPage-CsFwN4sE.mjs} +3 -3
  526. package/dist/TagPage-DMuxYu6y.mjs.map +1 -0
  527. package/dist/{TopBar-CLWWRgr7.mjs → TopBar-0oG6YPlW.mjs} +37 -37
  528. package/dist/TopBar-CUCBss7X.mjs.map +1 -0
  529. package/dist/TopBar-CeQQ1hgH.mjs.map +1 -0
  530. package/dist/TopBar-DdxThCLR.mjs.map +1 -0
  531. package/dist/{UserButtonContent-BR3Rlqwp.mjs → UserButtonContent--VK68UsY.mjs} +6 -6
  532. package/dist/UserButtonContent-067qGenf.mjs.map +1 -0
  533. package/dist/UserButtonContent-Dqgyrgzv.mjs.map +1 -0
  534. package/dist/VideoModuleBox-9QgBI-Q-.mjs.map +1 -0
  535. package/dist/{VideoModuleBox-DxYJVwy3.mjs → VideoModuleBox-Bcqman6a.mjs} +1 -1
  536. package/dist/VideoModuleBox-BrVK2bDZ.mjs.map +1 -0
  537. package/dist/VideoModuleBox-DWO47_bZ.mjs.map +1 -0
  538. package/dist/VideoPage-4MB4zmnA.mjs.map +1 -0
  539. package/dist/VideoPage-BDGvtr1o.mjs.map +1 -0
  540. package/dist/{VideoPage-BaeTduNB.mjs → VideoPage-BjlaP2DU.mjs} +6 -6
  541. package/dist/VideoPage-C-yjvvhl.mjs.map +1 -0
  542. package/dist/VideoPage-C0_t7XMC.mjs.map +1 -0
  543. package/dist/VideoPage-CIDpzbkb.mjs.map +1 -0
  544. package/dist/VideoPage-D2V1oXGC.mjs.map +1 -0
  545. package/dist/VideoPage-DEJSfeFy.mjs.map +1 -0
  546. package/dist/{classicApi-pmODlqv5.mjs → classicApi-CGipMqf7.mjs} +267 -256
  547. package/dist/classicApi-CW1Z-HoF.mjs.map +1 -0
  548. package/dist/classicApi-OzToKuW1.mjs.map +1 -0
  549. package/dist/{downloadHelper-BAI-eqgA.mjs → downloadHelper-C3QooCxr.mjs} +1 -1
  550. package/dist/downloadHelper-D7dUpp5l.mjs.map +1 -0
  551. package/dist/downloadHelper-DwV3Mmd3.mjs.map +1 -0
  552. package/dist/index.css +1 -1
  553. package/dist/index.mjs +183 -183
  554. package/dist/src/components/form/ClassicDatePicker.vue.d.ts +24 -14
  555. package/dist/src/components/form/OctopusMultiselect.vue.d.ts +2 -0
  556. package/dist/src/i18n.d.ts +2 -0
  557. package/dist/tests.mjs +2 -2
  558. package/dist/useAdvancedParamInit-BKw9VZ53.mjs.map +1 -0
  559. package/dist/useAdvancedParamInit-CyRmbqqe.mjs.map +1 -0
  560. package/dist/{useAdvancedParamInit-Bgvt8758.mjs → useAdvancedParamInit-D5roUdHI.mjs} +10 -10
  561. package/dist/useDayjs-BKBB00TF.mjs.map +1 -0
  562. package/dist/useDayjs-UQLGUbw5.mjs.map +1 -0
  563. package/dist/{useDayjs-DGb3L4kJ.mjs → useDayjs-VUs19G9T.mjs} +1 -1
  564. package/dist/useErrorHandler-BKN3lhJ5.mjs.map +1 -0
  565. package/dist/useErrorHandler-C3XnRTmp.mjs.map +1 -0
  566. package/dist/{useErrorHandler-D9W2BURn.mjs → useErrorHandler-x9sjDYSz.mjs} +1 -1
  567. package/dist/useImageProxy-AEcmDpvW.mjs.map +1 -0
  568. package/dist/useImageProxy-BzTG_GCn.mjs.map +1 -0
  569. package/dist/{useImageProxy-8ndy_oTo.mjs → useImageProxy-CCpDzPmQ.mjs} +1 -1
  570. package/dist/useOrgaComputed-4PduqYTq.mjs.map +1 -0
  571. package/dist/useOrgaComputed-C2n0FBbv.mjs.map +1 -0
  572. package/dist/{useOrgaComputed-CBJ5sDOm.mjs → useOrgaComputed-D81Jihm-.mjs} +2 -2
  573. package/dist/{usePlayerLogicProgress-C2L7cMdd.mjs → usePlayerLogicProgress-BybmSAcs.mjs} +2 -2
  574. package/dist/usePlayerLogicProgress-CKoCod6g.mjs.map +1 -0
  575. package/dist/usePlayerLogicProgress-DZaPRo6p.mjs.map +1 -0
  576. package/dist/usePodcastView-B-2HPFAo.mjs.map +1 -0
  577. package/dist/{usePodcastView-CoDJJr6Y.mjs → usePodcastView-CkM-n6iO.mjs} +3 -3
  578. package/dist/usePodcastView-jdYTK1cW.mjs.map +1 -0
  579. package/dist/{usePresentationItem-DZZVm3hh.mjs → usePresentationItem-CLEGZwI3.mjs} +3 -3
  580. package/dist/usePresentationItem-Com4i40U.mjs.map +1 -0
  581. package/dist/usePresentationItem-OpMean0v.mjs.map +1 -0
  582. package/dist/{useRights-DOXtpjv5.mjs → useRights-BI2tXXjR.mjs} +1 -1
  583. package/dist/useRights-Bsv9hr7w.mjs.map +1 -0
  584. package/dist/useRights-DfudFDI6.mjs.map +1 -0
  585. package/dist/{useRubriquesFilterComputed-DoUOqOrJ.mjs → useRubriquesFilterComputed-D1yqLnK4.mjs} +1 -1
  586. package/dist/useRubriquesFilterComputed-DGDJp2gc.mjs.map +1 -0
  587. package/dist/useRubriquesFilterComputed-NNE-FElk.mjs.map +1 -0
  588. package/dist/{useRubriquesFilterParam-BE8BbmAQ.mjs → useRubriquesFilterParam-2eMd5ND7.mjs} +1 -1
  589. package/dist/useRubriquesFilterParam-DE5dYl6c.mjs.map +1 -0
  590. package/dist/useRubriquesFilterParam-DXYD4G0D.mjs.map +1 -0
  591. package/dist/useSharePlatforms-CrQ8r5vT.mjs.map +1 -0
  592. package/dist/useSharePlatforms-D124fJ_v.mjs.map +1 -0
  593. package/dist/{useSharePlatforms-ZWYDJZBy.mjs → useSharePlatforms-sXgVxsL5.mjs} +5 -5
  594. package/dist/{useSimplePageParam-DFKSEyiE.mjs → useSimplePageParam-BrtYXOUt.mjs} +1 -1
  595. package/dist/useSimplePageParam-CruL7rLG.mjs.map +1 -0
  596. package/dist/useSimplePageParam-SaBaPhb8.mjs.map +1 -0
  597. package/dist/{useTranslation-Dr7KU7Y4.mjs → useTranslation-BVQwv02Q.mjs} +9 -9
  598. package/dist/useTranslation-Bf2zP_6C.mjs.map +1 -0
  599. package/dist/useTranslation-BuhzZoI8.mjs.map +1 -0
  600. package/dist/useTranslation-OWqckMEl.mjs.map +1 -0
  601. package/dist/usefetchRadioData-D01ws733.mjs.map +1 -0
  602. package/dist/usefetchRadioData-DDRPoD4s.mjs.map +1 -0
  603. package/dist/{usefetchRadioData-SLWfXkYt.mjs → usefetchRadioData-zyQNqiV3.mjs} +1 -1
  604. package/package.json +1 -1
  605. package/src/components/composable/useTranslation.ts +2 -2
  606. package/src/components/display/sharing/QrCode.vue +63 -64
  607. package/src/components/form/ClassicDatePicker.vue +32 -20
  608. package/src/components/form/OctopusMultiselect.vue +3 -4
  609. package/src/components/misc/ClassicPopover.vue +1 -1
  610. package/src/components/misc/player/video/PlayerVideoHls.vue +160 -159
  611. package/src/i18n.ts +38 -29
  612. package/tests/components/form/ClassicDatePicker.spec.ts +32 -0
  613. package/tests/components/form/OctopusMultiselect.spec.ts +5 -4
  614. package/dist/ClassicDatePicker-B7UA9CqR.mjs +0 -187
  615. package/dist/QrCode-DuScZ7PD.mjs +0 -105
@@ -0,0 +1 @@
1
+ {"version":3,"file":"PlayerComponent-CjNZNKKz.mjs","names":["stringHelper","classicApi","fetchHelper","classicApi","fetchHelper","sdkParams","_openBlock","_createElementBlock","_normalizeClass","_normalizeStyle","_createElementVNode","_Fragment","_renderSlot","_createBlock","_createCommentVNode","_sfc_main"],"sources":["../src/components/composable/player/usePlayerLive.ts","../src/helper/loadScript.ts","../src/components/composable/player/usePlayerVast.ts","../src/components/composable/player/usePlayerStitching.ts","../src/components/composable/player/usePlayerTranscript.ts","../src/stores/class/securisation/privateOrganisation.ts","../src/components/composable/player/usePlayerLogic.ts","../src/components/misc/player/PlayerComponent.vue","../src/components/misc/player/PlayerComponent.vue"],"sourcesContent":["import stringHelper from \"../../../helper/stringHelper\";\nimport { usePlayerLogicProgress } from \"./usePlayerLogicProgress\";\nimport { Ref, ref } from \"vue\";\nimport { usePlayerStore, PlayerStatus } from \"../../../stores/PlayerStore\";\nimport { useApiStore } from \"../../../stores/ApiStore\";\nimport { useAuthStore } from \"../../../stores/AuthStore\";\nimport { useDayjs } from \"../useDayjs\";\n/* eslint-disable*/\nlet Hls:any = null;\n/* eslint-enable*/\nconst maxMinutesSessionId = 1;\nexport const usePlayerLive = (hlsReady: Ref<boolean>)=>{\n\n const { listenTime, initLiveDownloadId, setDownloadId, onTimeUpdateProgress } = usePlayerLogicProgress();\n\n const audioElement: Ref<HTMLAudioElement | null>= ref(null);\n const hls: Ref<any>= ref(null);\n const hlsRetryTimeout: Ref<ReturnType<typeof setTimeout> | undefined>= ref(undefined);\n const playPromise: Ref<Promise<void>|undefined>= ref(undefined);\n const errorHls= ref(false);\n\n\n const playerStore = usePlayerStore();\n const apiStore = useApiStore();\n const authStore = useAuthStore();\n const { dayjs } = useDayjs();\n\n function needToAddToken(url: string): boolean { \n if (authStore.authParam.accessToken && (\"SECURED\" === playerStore.playerLive?.organisation?.privacy || playerStore.playerRadio?.secured)) {\n // Add token only if request is on the same host as the playlist (segments may be served by an\n // S3-compatible storage that rejects any non-AWS Authorization header)\n const streamHost = new URL(playerStore.playerHlsUrl ?? '', location.href).host;\n return new URL(url, location.href).host === streamHost;\n }\n return false;\n }\n\n function onPlay(): void {\n playerStore.playerChangeStatus(PlayerStatus.PAUSED === playerStore.playerStatus);\n }\n\n function playRadio() {\n if (!playerStore.playerRadio) {\n return;\n }\n handleSessionIdRadio();\n playerStore.playerUpdatePlayerHlsUrl(playerStore.playerRadio.url+\"?origin=octopus&sessionId=\"+playerStore.playerRadio.sessionId);\n playHls();\n }\n\n function handleSessionIdRadio(){\n if(!playerStore.playerRadio) {\n return;\n }\n if(playerStore.playerRadio.sessionId && dayjs().diff(dayjs(playerStore.playerRadio.dateSessionId), 'm')<maxMinutesSessionId){\n return;\n }\n playerStore.playerRadio.sessionId = stringHelper.uuidv4();\n }\n\n function playLive() {\n if (!playerStore.playerHlsIdentifier) {\n return;\n }\n playerStore.playerUpdatePlayerHlsUrl(`${apiStore.hlsUrl}live/${playerStore.playerHlsIdentifier}/index.m3u8`);\n playHls();\n }\n\n async function playHls(): Promise<void> {\n try {\n if(null===audioElement.value){\n audioElement.value = document.getElementById(\"audio-player\") as HTMLAudioElement;\n }\n if (null === audioElement.value || !playerStore.playerHlsUrl) {\n setTimeout(playHls, 1000);\n return;\n }\n const ua = navigator.userAgent.toLowerCase();\n const isAndroid = ua.indexOf(\"android\") > -1; //&& ua.indexOf(\"mobile\");\n const isChrome = ua.indexOf(\"chrome\") > -1;\n if (\n audioElement.value.canPlayType(\"application/vnd.apple.mpegurl\") &&\n !isChrome &&\n !isAndroid\n ) {\n let url = playerStore.playerHlsUrl;\n if(needToAddToken(url)) {\n if (url.includes('?')) {\n url += \"&access_token=\"+authStore.authParam.accessToken;\n } else {\n url += \"?access_token=\"+authStore.authParam.accessToken;\n }\n }\n audioElement.value.src = url;\n await initLiveDownloadId();\n hlsReady.value = true;\n await audioElement.value.play();\n onPlay();\n } else {\n await initHls();\n }\n } catch(e) {\n console.error(e);\n onHlsError();\n }\n }\n\n function onHlsError(){\n if(\"STOPPED\"!==playerStore.playerStatus && undefined===hlsRetryTimeout.value){\n hlsRetryTimeout.value = setTimeout(() => {\n errorHls.value = false;\n playHls();\n hlsRetryTimeout.value = undefined;\n }, 5000);\n }\n }\n\n async function initHls() {\n if (null === Hls) {\n await import(\"hls.js\").then((hlsLibrary) => {\n Hls = hlsLibrary.default;\n });\n }\n if (!Hls.isSupported()) {\n throw new Error(\"Hls is not supported ! \");\n }\n hls.value = new Hls({\n autoStartLoad: true,\n liveDurationInfinity:true,\n backBufferLength:10,\n maxBufferLength:60,\n\n xhrSetup: (xhr: XMLHttpRequest, url: string) => {\n if (needToAddToken(url)) {\n xhr.setRequestHeader(\"Authorization\", \"Bearer \" +authStore.authParam.accessToken);\n }\n }\n });\n hls.value.on(Hls.Events.MANIFEST_PARSED, async () => {\n await initLiveDownloadId();\n hlsReady.value = true;\n if(true===errorHls.value){\n return;\n }\n setTimeout(() => {\n playPromise.value = (audioElement.value as HTMLAudioElement).play();\n playPromise.value.then(() =>{\n playPromise.value = undefined;\n onPlay();\n }).catch((e)=>{\n console.error(e);\n onHlsError();\n playPromise.value = undefined;\n });\n }, 500);\n });\n hls.value.on(Hls.Events.ERROR, async (name: string, data:any) => {\n // Stalling, we don't have enough data\n if (data.details === 'bufferStalledError') {\n // Some logs to be able to follow what's happening\n console.warn('playback is stalling…');\n playerStore.playerStatus = PlayerStatus.LOADING;\n // Destroy current instance\n hls.value.destroy();\n // Wait a bit before restarting playback\n setTimeout(initHls, 500);\n return;\n }\n console.error('An error occured: ' + name + ' / ' + data.details, data);\n if (data.fatal && data.type === Hls.ErrorTypes.MEDIA_ERROR) {\n console.warn('Trying to recover...');\n hls.value.recoverMediaError();\n }\n errorHls.value = true;\n if(undefined===playPromise.value && data.fatal){\n onHlsError();\n }\n });\n hls.value.loadSource(playerStore.playerHlsUrl);\n hls.value.attachMedia(audioElement.value as HTMLAudioElement);\n }\n\n async function endingLive(): Promise<void> {\n clearTimeout(hlsRetryTimeout.value);\n hlsRetryTimeout.value = undefined;\n if(null===audioElement.value){\n return;\n }\n audioElement.value = null;\n const audio: HTMLElement | null = document.getElementById(\"audio-player\");\n if (audio && hls.value) {\n hls.value.destroy();\n hls.value = null;\n }else{\n (audio as HTMLAudioElement).pause();\n }\n (audio as HTMLAudioElement).src = \"\";\n }\n\n\treturn {\n listenTime,\n setDownloadId,\n onTimeUpdateProgress,\n playLive,\n endingLive,\n playRadio,\n onPlay\n\t}\n}\n","function loadScript(src: string, async:boolean, callback: (isLoaded:boolean) => void) {\n const firstElement = document.getElementsByTagName('head')[0] || document.documentElement,\n scriptElement = document.createElement('script');\n scriptElement.type = 'text/javascript';\n scriptElement.src = src;\n scriptElement.async = async;\n scriptElement.addEventListener('load', function() {\n if(callback && typeof callback === 'function') {\n callback(true);\n }\n }, false);\n scriptElement.addEventListener('error', function() {\n firstElement.removeChild(scriptElement);\n if(callback && typeof callback === 'function') {\n callback(false);\n }\n }, false);\n firstElement.insertBefore(scriptElement, firstElement.firstChild);\n}\nexport {\n loadScript\n}\n","import { usePlayerStore } from \"../../../stores/PlayerStore\";\nimport { useVastStore } from \"../../../stores/VastStore\";\nimport { loadScript } from \"../../../helper/loadScript\";\nimport {nextTick, Ref, ref, watch} from 'vue';\nimport dayjs from \"dayjs\";\nlet adsLoader: google.ima.AdsLoader;\nlet adsManager:google.ima.AdsManager;\nlet adDisplayContainer:google.ima.AdDisplayContainer;\nlet adsRequest: google.ima.AdsRequest;\nexport const usePlayerVast = ()=>{\n const imaLoaded = ref(false);\n const isContentFinished = ref(false);\n const audioContainer : Ref<HTMLAudioElement|null>= ref(null);\n const isAdRequested = ref(false);\n const statusPlayerWhenLoaded = ref(\"\");\n const dateForSessionId: Ref<string|undefined> = ref(undefined);\n\n const playerStore = usePlayerStore();\n const vastStore = useVastStore();\n\n watch(() => vastStore.isAdPaused, () => {onAdChangePlayingStatus();});\n watch(() => vastStore.isAdSkipped, () => {onAdSkipped();});\n\n function prepareIMA(){\n if(!imaLoaded.value){\n imaLoaded.value = true;\n loadIMA();\n }else{\n initializeIMA();\n }\n }\n\n function loadIMA(){\n loadScript('//imasdk.googleapis.com/js/sdkloader/ima3.js', true, (isIMALoaded:boolean) => {\n if(isIMALoaded) {\n initializeIMA();\n }\n });\n }\n\n function initializeIMA(): void {\n console.log(\"Initialize IMA\");\n initializeDisplayContainer();\n if(!adDisplayContainer || !adsLoader){\n return;\n }\n }\n\n function onRequestAd(vastUrl: string){\n isAdRequested.value = true;\n console.log(\"Request ad \"+vastUrl);\n initializeAdsRequest(vastUrl);\n adsLoader.requestAds(adsRequest);\n }\n\n function initializeDisplayContainer():void{\n if(adDisplayContainer){return};\n audioContainer.value = (document.getElementById('audio-player') as HTMLAudioElement); \n if(null===audioContainer.value){return;}\n adDisplayContainer = new google.ima.AdDisplayContainer(document.getElementById('ad-container'), audioContainer.value);\n adDisplayContainer.initialize();\n initializeAdsLoader();\n }\n\n function initializeAdsLoader():void{\n adsLoader = new google.ima.AdsLoader(adDisplayContainer);\n adsManager = null;\n adsLoader.addEventListener(\n google.ima.AdsManagerLoadedEvent.Type.ADS_MANAGER_LOADED,\n onAdsManagerLoaded,\n false\n );\n adsLoader.addEventListener(\n google.ima.AdErrorEvent.Type.AD_ERROR,\n onAdError,\n false\n );\n }\n\n function initializeAdsRequest(vastUrl: string):void{\n adsRequest = new google.ima.AdsRequest();\n adsRequest.setAdWillAutoPlay(true);\n adsRequest.adTagUrl = vastUrl;\n }\n\n function onAdsManagerLoaded(adsManagerLoadedEvent: google.ima.AdsManagerLoadedEvent) {\n const adsRenderingSettings = new google.ima.AdsRenderingSettings();\n adsRenderingSettings.restoreCustomPlaybackStateOnAdBreakComplete = true;\n adsManager = adsManagerLoadedEvent.getAdsManager(audioContainer.value, adsRenderingSettings);\n startAdManager();\n }\n\n function startAdManager(){\n console.log(\"Start manager\");\n initAdManagerEvents();\n try {\n adsManager.init(0, 0, google.ima.ViewMode.NORMAL);\n adsManager.start();\n } catch (adError) {\n console.log(adError);\n playerStore.playerChangeStatus(false);\n destroyAdManager();\n }\n }\n\n function initAdManagerEvents(){\n adsManager.addEventListener(google.ima.AdErrorEvent.Type.AD_ERROR,onAdError);\n adsManager.addEventListener(google.ima.AdEvent.Type.CONTENT_PAUSE_REQUESTED, onContentPauseRequested);\n adsManager.addEventListener(google.ima.AdEvent.Type.CONTENT_RESUME_REQUESTED, onContentResumeRequested);\n const events = [\n google.ima.AdEvent.Type.ALL_ADS_COMPLETED, google.ima.AdEvent.Type.AD_PROGRESS,\n google.ima.AdEvent.Type.COMPLETE, google.ima.AdEvent.Type.LOADED, \n google.ima.AdEvent.Type.PAUSED, google.ima.AdEvent.Type.STARTED,\n ];\n for (const index in events) {\n adsManager.addEventListener(events[index], onAdEvent);\n }\n }\n\n function onAdError(adErrorEvent: google.ima.AdErrorEvent) {\n console.log(adErrorEvent.getError());\n destroyAdManager();\n }\n\n function destroyAdManager(){\n if(!adsManager){return;}\n console.log(\"Destroy manager\");\n adsManager?.destroy();\n adsManager = null;\n vastStore.restartVastData();\n isContentFinished.value =false;\n isAdRequested.value = false;\n }\n\n function onAdEvent(adEvent: google.ima.AdEvent) {\n const ad = adEvent.getAd();\n if(ad){\n vastStore.updateCurrentAd(ad);\n }\n switch (adEvent.type) {\n case google.ima.AdEvent.Type.LOADED:\n statusPlayerWhenLoaded.value = playerStore.playerStatus;\n if (!ad.isLinear()) {\n playerStore.playerChangeStatus(false);\n isAdRequested.value = false;\n }\n break;\n case google.ima.AdEvent.Type.STARTED:\n console.log(\"Launched status : \"+statusPlayerWhenLoaded.value);\n if(\"PLAYING\"!==statusPlayerWhenLoaded.value){\n vastStore.updateIsAdPaused(true);\n adsManager.pause();\n }\n break;\n case google.ima.AdEvent.Type.AD_PROGRESS:{\n isAdRequested.value = false;\n const adProgressData = adEvent.getAdData();\n vastStore.updateProgressionData(adProgressData.duration,adProgressData.currentTime);\n vastStore.updateSkippableData(\n vastStore.currentAd.getSkipTimeOffset()!== -1,\n adsManager.getAdSkippableState(),\n Math.ceil(vastStore.currentAd.getSkipTimeOffset() - adProgressData.currentTime));\n break;\n }\n }\n }\n\n function onContentPauseRequested() {\n vastStore.updateIsAdPlaying(true);\n playerStore.playerChangeStatus(true);\n }\n\n function onContentResumeRequested() {\n if (!isContentFinished.value) {\n playerStore.playerChangeStatus(false);\n }\n nextTick(() => {\n vastStore.updateIsAdPlaying(false);\n vastStore.updateResetSessionId(false);\n });\n }\n\n function contentEndedAdsLoader():void{\n if (vastStore.isAdPlaying) return;\n isContentFinished.value = true;\n adsLoader?.contentComplete();\n }\n\n function onAdChangePlayingStatus(){\n if(!adsManager){return;}\n if(vastStore.isAdPaused){\n adsManager.pause();\n dateForSessionId.value = dayjs().toISOString();\n }else{\n adsManager.resume();\n if(!vastStore.resetSessionId &&dayjs().diff(dayjs(dateForSessionId.value), 'm')>1){\n vastStore.updateResetSessionId(true);\n }\n }\n }\n\n function onAdSkipped(){\n if(vastStore.isAdSkipped){\n adsManager.skip();\n }\n }\n\n\n\treturn {\n isAdRequested,\n prepareIMA,\n onRequestAd,\n destroyAdManager,\n contentEndedAdsLoader\n\t}\n}\n","import { usePlayerStore } from \"../../../stores/PlayerStore\";\nimport { useVastStore } from \"../../../stores/VastStore\";\nimport { useSaveFetchStore } from \"../../../stores/SaveFetchStore\";\nimport { usePlayerVast } from \"./usePlayerVast\";\nimport fetchHelper from \"../../../helper/fetchHelper\";\n\nimport {computed, onMounted, Ref, ref, watch} from 'vue';\nimport { useRoute } from \"vue-router\";\nimport dayjs from \"dayjs\";\nimport classicApi from \"../../../api/classicApi\";\nimport { AdserverOtherEmission } from \"@/stores/class/adserver/adserverOtherEmission\";\nimport { AdPosition } from \"@/stores/class/adserver/adPosition\";\nimport { AdserverTiming } from \"@/stores/class/adserver/adserverTiming\";\n\nexport const usePlayerStitching = ()=>{\n\n const { isAdRequested, prepareIMA, onRequestAd,destroyAdManager, contentEndedAdsLoader } = usePlayerVast();\n\n const radioInterval : Ref<ReturnType<typeof setTimeout> | undefined> = ref(undefined);\n\n const route = useRoute()\n const playerStore = usePlayerStore();\n const vastStore = useVastStore();\n const saveFetchStore= useSaveFetchStore();\n\n const radioNextAdvertisingStartDate = computed(() => { \n return playerStore.playerRadio?.nextAdvertising?.startDate;\n });\n\n\n watch(() => playerStore.playerCurrentChange, () => {\n if(playerStore.playerCurrentChange && playerStore.playerCurrentChange > 0 && !checkUsePlayerPodcastStitching()){return;}\n onPlayerChange();\n });\n\n //launch advertising for podcast\n watch(() => playerStore.playerElapsedSeconds, () => {\n if(!checkUsePlayerPodcastStitching()){return;}\n if(!isAdRequested.value && checkAdNeedToBeLaunch()){\n onRequestAd(vastStore.adPositionsPodcasts[playerStore.playerCurrentChange??0][vastStore.adPositionIndex].vastUrl);\n vastStore.updateAdPositionIndex(vastStore.adPositionIndex+1); \n }\n });\n\n // launch advertising for radio\n watch(radioNextAdvertisingStartDate, () => {\n if(!radioNextAdvertisingStartDate.value){\n return;\n }\n defineRadioInterval();\n }, { immediate: true });\n\n\n onMounted(() => {\n vastStore.updateuseVastPlayerPodcast(\"true\"===route.query.vast);\n })\n\n function checkUsePlayerPodcastStitching():boolean{\n return vastStore.useVastPlayerPodcast;\n }\n\n function defineRadioInterval(){\n clearRadioInterval();\n const timeRemaining = dayjs(radioNextAdvertisingStartDate.value).diff(dayjs(), \"millisecond\");\n console.log(\"TimeRemaining \"+timeRemaining);\n if(timeRemaining < 0){\n return;\n }\n radioInterval.value = setTimeout(() => {\n radioIntervalExecute();\n }, timeRemaining);\n }\n\n async function radioIntervalExecute(){\n //If pause when ad needs to be played then skipped (TO THINK)\n if(\"PAUSED\"===playerStore.playerStatus){return;}\n const vastUrl = await getVastUrl(playerStore.playerRadio?.nextAdvertising?.tag ??\"5e385e1b51c86\", playerStore.playerRadio?.nextAdvertising?.adCount ?? 1);\n console.log(\"vastUrl \"+vastUrl);\n onRequestAd(vastUrl);\n }\n\n function clearRadioInterval() {\n clearInterval(radioInterval.value as unknown as number);\n radioInterval.value = undefined;\n }\n\n function checkAdNeedToBeLaunch(){\n if(!playerStore.playerCurrentChange || !vastStore.adPositionsPodcasts[playerStore.playerCurrentChange]?.[vastStore.adPositionIndex]){return false;}\n return vastStore.adPositionsPodcasts[playerStore.playerCurrentChange][vastStore.adPositionIndex]?.seconds <= playerStore.playerElapsedSeconds;\n }\n\n async function onPlayerChange(){\n destroyAdManager();\n if(null==playerStore.playerCurrentChange){return;}\n prepareIMA();\n await fetchPodcastAdConfig();\n }\n\n async function fetchPodcastAdConfig(){\n if(!playerStore.playerCurrentChange || !playerStore.playerPodcast ||(playerStore.playerCurrentChange && vastStore.adPositionsPodcasts[playerStore.playerCurrentChange])){\n return;\n }\n const adserverConfig = await classicApi.fetchData<AdserverOtherEmission>({\n api:0,\n path: `ad/test/podcast/${playerStore.playerCurrentChange}`,\n isNotAuth:true\n });\n if(!adserverConfig || \"SOUNDCAST_VAST\"!==adserverConfig.config?.server){\n vastStore.updateAdPositionsPodcasts(playerStore.playerCurrentChange, []);\n return;\n }\n const podcastDurationSeconds = Math.round((playerStore.playerPodcast?.duration??0) / 1000);\n const allAdPositions =generateAllAdPositions(adserverConfig.config.doublets, podcastDurationSeconds);\n const selectedAdPositions = await selectCorrectAdPositions(allAdPositions, podcastDurationSeconds, adserverConfig.config.minIntervalDuration, adserverConfig.config.minTailDuration);\n vastStore.updateAdPositionsPodcasts(playerStore.playerCurrentChange, selectedAdPositions);\n }\n\n function generateAllAdPositions(doublets: Array<AdserverTiming>, podcastDuration: number): Array<AdPosition>{\n const adPositions: Array<AdPosition> = [];\n if(doublets.some((element: AdserverTiming)=>{return \"TAG_NO_AD\"===element.tag})){\n return [];\n }\n for (const doublet of doublets) {\n if(!doublet.tag){continue;}\n let seconds = 0;\n if(\"post\"===doublet.timing.insertion){\n seconds = podcastDuration;\n }else if(\"mid\"===doublet.timing.insertion){\n const mesure = doublet.timing.mesure ?? 0;\n switch (doublet.timing.unit){\n case \"MILLISECOND\": seconds = mesure * 1000; break;\n case \"MINUTE\": seconds = Math.round(mesure / 60); break;\n case \"PERCENT\": seconds = Math.round((mesure * podcastDuration) / 100); break;\n default: seconds = mesure; break;\n }\n }\n adPositions.push({\n impressId: doublet.tag,\n policy: doublet.timing.insertion,\n seconds: seconds,\n vastUrl: \"\"\n });\n }\n return adPositions.sort((a: AdPosition, b: AdPosition) => {\n if (a.seconds > b.seconds) {\n return 1;\n }\n return b.seconds > a.seconds ? -1 : 0;\n });\n }\n\n async function selectCorrectAdPositions(allAdPositions: Array<AdPosition>, podcastDuration: number, minIntervalDuration:number, minTailDuration:number): Promise<Array<AdPosition>>{\n const adPositions: Array<AdPosition> = [];\n let previousPosition = -1;\n for(const adPosition of allAdPositions){\n switch (adPosition.policy) {\n case \"pre\":\n adPositions.push(await defineVastUrl(adPosition));\n previousPosition = 0;\n break;\n case \"mid\":\n if (adPosition.seconds > podcastDuration - minTailDuration) {\n //Too close to end\n continue;\n }\n if (previousPosition >= 0 && adPosition.seconds < previousPosition + minIntervalDuration) {\n //Too close to previous ad\n continue;\n }\n adPositions.push(await defineVastUrl(adPosition));\n previousPosition = adPosition.seconds;\n break;\n case \"post\":\n if (previousPosition >= 0 && previousPosition > podcastDuration - minIntervalDuration) {\n //Too close to previous ad\n continue;\n }\n adPositions.push(await defineVastUrl(adPosition));\n break;\n default:break;\n }\n }\n return adPositions;\n }\n\n async function defineVastUrl(adPosition: AdPosition): Promise<AdPosition>{\n adPosition.vastUrl = await getVastUrl(adPosition.impressId, 1);\n return adPosition;\n }\n\n async function getVastUrl(tag: string, adCount: number): Promise<string>{\n const baseUrl = \"https://api.soundcast.io/v1/vast/\"+tag;\n let keywords: Array<string> = [];\n if(playerStore.playerPodcast?.tags?.length){\n const attributes = await saveFetchStore.getOrgaAttributes(playerStore.playerPodcast.organisation.id);\n if (\"true\"===attributes[\"AD_CONFIG_PODCAST_TAG\"]) {\n keywords = playerStore.playerPodcast.tags.map((e) => {\n return \"tag:\" + e;\n });\n }\n }\n const parameters = fetchHelper.getUriSearchParams({\n adCount: adCount ?? 1,\n pageUrl:document.referrer,\n keywords:keywords\n });\n return baseUrl + '?' + parameters.toString();\n }\n\n\treturn {\n contentEndedAdsLoader\n\t}\n}\n","import { usePlayerStore } from \"../../../stores/PlayerStore\";\nimport { useVastStore } from \"../../../stores/VastStore\";\nimport classicApi from \"../../../api/classicApi\";\nimport { AdserverOtherEmission } from \"@/stores/class/adserver/adserverOtherEmission\";\nimport { useTranslation } from \"../useTranslation\";\nimport { transcriptionApi } from \"../../../api/transcriptionApi\";\nimport { ref } from \"vue\";\nimport { parseSrtTranscript } from \"@/helper/transcriptHelper\";\n\n/** Contains the language of the transcript being generated */\nconst generatingTranscriptLanguage = ref<string|null>(null);\n\nexport const usePlayerTranscript = ()=>{\n\n const playerStore = usePlayerStore();\n const vastStore = useVastStore();\n const { getMostRelevantLanguage } = useTranslation();\n\n async function checkDelaytWithStitching(){\n playerStore.playerUpdateDelayStitching(0);\n if(vastStore.useVastPlayerPodcast){\n return;\n }\n\n const audioPlayer = document.querySelector(\"#audio-player\") as HTMLAudioElement;\n if (!playerStore.playerTranscript || !audioPlayer || !playerStore.playerPodcast ||\n audioPlayer.duration <= playerStore.playerPodcast.duration / 1000 + 5) {\n return;\n }\n\n const adserverConfig = await classicApi.fetchData<AdserverOtherEmission>({\n api:0,\n path:`ad/test/podcast/${playerStore.playerPodcast.podcastId}`,\n isNotAuth:true\n });\n\n // In case of midroll ads, we can't properly display transcription, so\n // we disable it.\n const hasOtherThanPreOrPost = adserverConfig.config.doublets\n .filter(doublet => !([\"pre\", \"post\"].includes(doublet.timing.insertion)))\n .length > 0;\n if (hasOtherThanPreOrPost) {\n console.warn(\"This episode's ad settings doesn't allow for transcription\");\n playerStore.playerUpdateChaptering();\n playerStore.playerUpdateTranscript();\n return;\n }\n\n // In case of preroll ads, delay start of transcription\n const hasPre = adserverConfig.config.doublets\n .filter(doublet => doublet.timing.insertion === \"pre\")\n .length > 0;\n if(hasPre) {\n // Since we have the expected time (from playerStore) and effective time\n // (from audioPlayer, which include ads), we just delay by the delta\n playerStore.playerUpdateDelayStitching( audioPlayer.duration - (playerStore.playerPodcast.duration / 1000));\n }\n }\n\n async function getTranscription(): Promise<void> {\n generatingTranscriptLanguage.value = null;\n if (!playerStore.playerPodcast) {\n playerStore.playerUpdateTranscript();\n return;\n }\n\n // Retrieve best language for transcription\n const podcastId = playerStore.playerPodcast.podcastId;\n const translationData = await transcriptionApi.getTranslations(podcastId);\n const { ready, available } = await getMostRelevantLanguage(translationData);\n\n // Retrieve transcription\n const result = await transcriptionApi.getTranslation(podcastId, ready);\n\n const arrayTranscript = parseSrt(result);\n const currentText =\n arrayTranscript?.[0]?.startTime === 0 ? arrayTranscript[0].text : \"\";\n if(!arrayTranscript){\n return;\n }\n playerStore.playerUpdateTranscript({\n current: 0,\n currentText: currentText,\n value: arrayTranscript\n });\n\n if (available !== undefined && ready !== available) {\n generatingTranscriptLanguage.value = available;\n\n // If there's a better language available, trigger its generation\n const result = await transcriptionApi.getTranslation(podcastId, available, true);\n\n const arrayTranscript = parseSrt(result);\n const currentText =\n arrayTranscript?.[0]?.startTime === 0 ? arrayTranscript[0].text : \"\";\n if(!arrayTranscript){\n return;\n }\n playerStore.playerUpdateTranscript({\n current: playerStore.playerTranscript?.current,\n currentText,\n value: arrayTranscript\n });\n generatingTranscriptLanguage.value = null;\n }\n }\n\n function parseSrt(transcript: string) {\n if (typeof transcript != \"string\") {\n return;\n }\n if (transcript == null) {\n return;\n }\n\n return parseSrtTranscript(transcript);\n }\n\n function onTimeUpdateTranscript(currentTime: number) {\n if(!playerStore.playerTranscript?.value.length){\n return;\n }\n const startTime = (playerStore.playerTranscript.value[playerStore.playerTranscript.current]?.startTime ?? 0) + playerStore.playerDelayStitching;\n if (startTime <= currentTime) {\n playerStore.playerTranscript.currentText = playerStore.playerTranscript.value[playerStore.playerTranscript?.current]?.text ?? [];\n }\n if (\n (playerStore.playerTranscript.value[playerStore.playerTranscript.current]?.endTime ??Infinity) + playerStore.playerDelayStitching< currentTime\n ) {\n playerStore.playerTranscript.current += 1;\n playerStore.playerTranscript.currentText =\n playerStore.playerTranscript?.value[playerStore.playerTranscript.current]?.text ?? [];\n }\n }\n \n function onSeekedTranscript(currentTime: number) {\n if (playerStore.playerTranscript) {\n let newCurrent = 0;\n while (currentTime >(playerStore.playerTranscript.value[newCurrent]?.endTime ?? Infinity) + playerStore.playerDelayStitching) {\n newCurrent += 1;\n }\n playerStore.playerTranscript.current = newCurrent;\n }\n }\n\n return {\n checkDelaytWithStitching,\n getTranscription,\n onTimeUpdateTranscript,\n onSeekedTranscript,\n generatingTranscriptLanguage\n }\n}\n","export enum OrganisationPrivacy {\n SECURED = 'SECURED',\n PRIVATE = 'PRIVATE',\n PUBLIC = 'PUBLIC'\n}\n\nexport interface PrivateOrganisation {\n privacy: OrganisationPrivacy;\n accountCreation: string; // ENABLED DISABLED\n referrers: Array<string>;\n cidrs: Array<string>;\n mailDomains: Array<string>;\n}\n\nexport function emptyPrivateOrganisation(): PrivateOrganisation {\n return {\n privacy: OrganisationPrivacy.PUBLIC,\n accountCreation: \"DISABLED\",\n referrers: [],\n cidrs: [],\n mailDomains: [],\n };\n}\n","\nimport { usePlayerLive } from \"./usePlayerLive\";\nimport { usePlayerStitching } from \"./usePlayerStitching\";\nimport { usePlayerTranscript } from \"./usePlayerTranscript\";\nimport { nextTick, Ref, ref, watch } from \"vue\";\nimport { usePlayerStore } from \"../../../stores/PlayerStore\";\nimport { useAuthStore } from \"../../../stores/AuthStore\";\nimport { useGeneralStore } from \"../../../stores/GeneralStore\";\nimport { useVastStore } from \"../../../stores/VastStore\";\nimport { state as sdkParams } from \"../../../stores/ParamSdkStore\";\nimport fetchHelper from \"../../../helper/fetchHelper\";\nimport dayjs from \"dayjs\";\nimport { FetchParam } from \"@/stores/class/general/fetchParam\";\nimport { podcastApi } from \"../../../api/podcastApi\";\nimport { Organisation } from \"../../../stores/class/general/organisation\";\nimport { organisationApi } from \"../../../api/organisationApi\";\nimport { OrganisationPrivacy } from \"../../../stores/class/securisation/privateOrganisation\";\n\nexport const usePlayerLogic = (forceHide: Ref<boolean, boolean>) => {\n const hlsReady = ref(false);\n\n const { listenTime, onPlay, setDownloadId, onTimeUpdateProgress, playLive, endingLive, playRadio} = usePlayerLive(hlsReady);\n const { contentEndedAdsLoader } = usePlayerStitching();\n const { getTranscription, onTimeUpdateTranscript, onSeekedTranscript, checkDelaytWithStitching } = usePlayerTranscript();\n\n const playerError= ref(false);\n const listenError= ref(false);\n const percentLiveProgress= ref(0);\n const durationLivePosition= ref(0);\n const displayAlertBar= ref(false);\n const audioUrlToPlay= ref(\"\");\n\n\n const playerStore = usePlayerStore();\n const generalStore = useGeneralStore();\n const vastStore = useVastStore();\n const authStore = useAuthStore();\n\n watch(()=>getAudioUrl(), async () => {\n playerError.value = false;\n\n // In some cases, the audio does not go through normal download endpoint\n // Mostly when the podcast is not available to users\n let download = true;\n if (\n playerStore.playerMedia ||\n !playerStore.playerPodcast ||\n playerStore.playerVideo ||\n !playerStore.playerPodcast.availability.visibility ||\n listenError.value\n ) {\n download = false;\n\n // Not yet available podcasts in secured organisations go through\n // download if possible (see #14228)\n const podcast = playerStore.playerPodcast;\n if (podcast && !podcast.availability.visibility) {\n let organisation: Organisation|null = null;\n if (podcast.organisation) {\n organisation = podcast.organisation;\n } else if ('organisationId' in podcast) {\n // Handle case of missing organisation (for example for SimplifiedPodcast)\n organisation = await organisationApi.get(podcast.organisationId as string);\n }\n if (organisation.privacy === OrganisationPrivacy.SECURED) {\n download = true;\n }\n }\n }\n\n if (download) {\n const response = await podcastApi.downloadRegister(playerStore.playerPodcast.podcastId, getAudioUrlParameters());\n setDownloadId(response.downloadId.toString());\n audioUrlToPlay.value = response.location;\n } else {\n audioUrlToPlay.value = getAudioUrl();\n }\n });\n\n watch(()=>playerStore.playerPodcast, async () => {\n reInitPlayer();\n getTranscription();\n }, {deep:true});\n\n watch(()=>playerStore.playerLive, async (_, oldLive) => {\n if(playerStore.playerVideo){\n return;\n }\n nextTick(async () => {\n hlsReady.value = false;\n reInitPlayer(oldLive!==undefined);\n playLive();\n });\n }, {deep:true});\n\n watch(()=>playerStore.playerRadio, async (_, oldRadio) => {\n nextTick(async () => {\n hlsReady.value = false;\n reInitPlayer(oldRadio !== undefined);\n playRadio();\n });\n });\n\n watch(()=>playerStore.playerStatus, async () => {\n const audioPlayer: HTMLAudioElement | null =\n document.querySelector(\"#audio-player\");\n if (!audioPlayer) return;\n if (playerStore.playerLive && !hlsReady.value) {\n /* audioPlayer.pause();\n percentLiveProgress.value = 0;\n durationLivePosition.value = 0; */\n return;\n }\n if (\"PAUSED\" === playerStore.playerStatus && playerStore.playerRadio) {\n playerStore.playerRadio.dateSessionId = dayjs().toISOString();\n hlsReady.value = false;\n reInitPlayer();\n endingLive();\n } else if (\"PAUSED\" === playerStore.playerStatus) {\n audioPlayer.pause();\n } else if (\"PLAYING\" === playerStore.playerStatus && playerStore.playerRadio) {\n handlePlayRadio();\n } else if (\"PLAYING\" === playerStore.playerStatus) {\n audioPlayer.play();\n }\n });\n\n function handlePlayRadio(){\n if(!playerStore.playerRadio){\n return;\n }\n if (playerStore.playerRadio.isInit) {\n if(vastStore.isAdPlaying && !vastStore.resetSessionId){\n playerStore.playerRadio.dateSessionId = dayjs().toISOString();\n }\n playRadio();\n } else {\n playerStore.playerRadio.isInit = true;\n }\n }\n\n function getAudioUrlParameters(addToken?: boolean): FetchParam {\n if (!playerStore.playerPodcast) {\n return {};\n }\n \n const parameters: FetchParam = {\n origin: \"octopus\",\n accepted: vastStore.useVastPlayerPodcast\n };\n if (authStore.authOrgaId) {\n parameters.distributorId = authStore.authOrgaId;\n }\n if (generalStore.consentTcf) {\n parameters.consent = generalStore.consentTcf;\n }\n if (\n addToken &&\n \"SECURED\" === playerStore.playerPodcast.organisation.privacy &&\n authStore.authParam.accessToken\n ) {\n parameters.access_token = authStore.authParam.accessToken;\n }\n return parameters;\n }\n\n function getAudioUrl(): string {\n if (playerStore.playerMedia){\n return playerStore.playerMedia.audioUrl ?? \"\";\n }\n if (!playerStore.playerPodcast || playerStore.playerVideo) {\n return \"\";\n }\n if (\n !playerStore.playerPodcast.availability.visibility ||\n \"PROCESSING\" === playerStore.playerPodcast.processingStatus\n ) {\n return playerStore.playerPodcast.audioStorageUrl;\n }\n if (listenError.value) {\n return playerStore.playerPodcast.audioStorageUrl;\n }\n return playerStore.playerPodcast.podcastId + \".mp3?\"+fetchHelper.getUriSearchParams(getAudioUrlParameters(), true);\n }\n\n function reInitPlayer(force=false): void {\n setDownloadId(null);\n listenError.value = false;\n if (force || playerStore.playerLive || playerStore.playerRadio) {\n endingLive();\n }\n }\n\n function stopPlayer(): void {\n playerStore.playerPlay();\n }\n\n function onError(): void {\n if (\n playerStore.playerPodcast &&\n \"\" !== audioUrlToPlay.value &&\n !listenError.value\n ) {\n listenError.value = true;\n } else if (\n (playerStore.playerPodcast && \"\" !== audioUrlToPlay.value) ||\n playerStore.playerMedia\n ) {\n playerError.value = true;\n }\n }\n\n function streamDurationForSafari(mediaTarget: HTMLMediaElement) {\n let streamDuration = mediaTarget.duration;\n if (Infinity === streamDuration) {\n const seekable = mediaTarget.seekable;\n if (seekable && seekable.length > 0) {\n try {\n streamDuration = seekable.end(seekable.length - 1);\n } catch (e) {\n console.error(e);\n }\n } else {\n streamDuration = mediaTarget.currentTime;\n }\n }\n return streamDuration;\n }\n\n function onTimeUpdatePodcast(streamDuration: number, currentTime: number) {\n displayAlertBar.value = false;\n percentLiveProgress.value = 0;\n playerStore.playerUpdateElapsed(currentTime / streamDuration, streamDuration);\n onTimeUpdateTranscript(currentTime);\n }\n\n function onTimeUpdateLive(streamDuration: number, currentTime: number) {\n if (!playerStore.playerLive) {\n return;\n }\n const scheduledDuration = playerStore.playerLive.duration / 1000;\n if (scheduledDuration > streamDuration) {\n displayAlertBar.value = false;\n percentLiveProgress.value = (streamDuration / scheduledDuration) * 100;\n playerStore.playerUpdateElapsed(\n currentTime / scheduledDuration,\n scheduledDuration,\n );\n } else {\n percentLiveProgress.value = 100;\n displayAlertBar.value = true;\n durationLivePosition.value = (scheduledDuration / streamDuration) * 100;\n playerStore.playerUpdateElapsed(currentTime / streamDuration, streamDuration);\n }\n }\n\n function onTimeUpdate(event: Event): void {\n if (playerStore.playerRadio) {\n return;\n }\n const mediaTarget = event.currentTarget as HTMLMediaElement;\n if (playerStore.playerPodcast || playerStore.playerLive) {\n onTimeUpdateProgress(mediaTarget.currentTime);\n }\n const streamDuration = streamDurationForSafari(mediaTarget);\n if (!streamDuration) return;\n if (!mediaTarget.currentTime) return;\n if (!playerStore.playerLive) {\n onTimeUpdatePodcast(streamDuration, mediaTarget.currentTime);\n return;\n }\n onTimeUpdateLive(streamDuration, mediaTarget.currentTime);\n }\n\n function onSeeked(event: Event): void {\n const mediaTarget = event.currentTarget as HTMLMediaElement;\n const currentTime = mediaTarget.currentTime;\n onSeekedTranscript(currentTime);\n }\n\n function onFinished(): void {\n setDownloadId(null);\n contentEndedAdsLoader();\n if (playerStore.playerLive) {\n endingLive();\n }\n\n if (sdkParams.player.stayOpenOnFinish !== true) {\n forceHide.value = true;\n }\n }\n\n\n return {\n audioUrlToPlay,\n listenTime,\n playerError,\n percentLiveProgress,\n durationLivePosition,\n displayAlertBar,\n hlsReady,\n checkDelaytWithStitching,\n stopPlayer,\n onError,\n onTimeUpdate,\n onSeeked,\n onFinished,\n onPlay\n }\n}\n","<template>\n <section\n id=\"octopus-player-component\"\n class=\"player-container\"\n :class=\"{ \n 'player-video': playerStore.playerVideo,\n 'overflow-hidden': !display\n }\"\n :style=\"{ height: playerStore.playerHeight }\"\n @transitionend=\"onHidden\"\n >\n <audio\n id=\"audio-player\"\n :src=\"!playerStore.playerLive && !playerStore.playerRadio ? audioUrlToPlay : undefined\"\n autoplay\n @timeupdate=\"onTimeUpdate\"\n @ended=\"onFinished\"\n @playing=\"onPlay\"\n @durationChange=\"onTimeUpdate\"\n @error=\"onError\"\n @seeked=\"onSeeked\"\n @pause=\"onPause\"\n @loadedmetadata=\"checkDelaytWithStitching\"\n />\n <div id=\"ad-container\" />\n\n <template v-if=\"displayWithTimeout\">\n\n <slot name=\"above\" />\n \n <PlayerVideo v-if=\"playerStore.playerVideo && isNotVideoPage\" />\n <template v-else-if=\"!playerStore.playerVideo\">\n <PlayerCompact\n v-if=\"!playerStore.playerLargeVersion\"\n :player-error=\"playerError\"\n :display-alert-bar=\"displayAlertBar\"\n :percent-live-progress=\"percentLiveProgress\"\n :duration-live-position=\"durationLivePosition\"\n :listen-time=\"listenTime\"\n :hls-ready=\"hlsReady\"\n @stop-player=\"stopPlayer\"\n @change-player-large-version=\"playerStore.playerUpdateLargeVersion(true)\"\n />\n <PlayerLarge\n v-else\n :player-error=\"playerError\"\n :display-alert-bar=\"displayAlertBar\"\n :percent-live-progress=\"percentLiveProgress\"\n :duration-live-position=\"durationLivePosition\"\n :listen-time=\"listenTime\"\n :hls-ready=\"hlsReady\"\n @stop-player=\"stopPlayer\"\n @change-player-large-version=\"playerStore.playerUpdateLargeVersion(false)\"\n />\n </template>\n </template>\n </section>\n</template>\n\n<script setup lang=\"ts\">\nimport {usePlayerLogic} from \"../../composable/player/usePlayerLogic\";\nimport { usePlayerStore } from \"../../../stores/PlayerStore\";\nimport { defineAsyncComponent, ref, computed, watch } from \"vue\";\nimport { useRoute } from \"vue-router\";\nconst PlayerVideo = defineAsyncComponent(\n () => import(\"./video/PlayerVideo.vue\"),\n);\nconst PlayerCompact = defineAsyncComponent(\n () => import(\"../player/PlayerCompact.vue\"),\n);\nconst PlayerLarge = defineAsyncComponent(\n () => import(\"../player/PlayerLarge.vue\"),\n);\n\n//Emits\nconst emit = defineEmits(['hide']);\n\n//Data\nconst displayWithTimeout= ref(false);\nconst forceHide= ref(false);\n\n//Composable\nconst {\n audioUrlToPlay,\n listenTime,\n playerError,\n percentLiveProgress, \n durationLivePosition,\n displayAlertBar,\n hlsReady, \n checkDelaytWithStitching, \n stopPlayer, \n onError, \n onTimeUpdate, \n onSeeked, \n onFinished, \n onPlay\n} = usePlayerLogic(forceHide);\nconst playerStore = usePlayerStore();\nconst route = useRoute();\n\n// Computed\nconst display = computed(() => { return \"STOPPED\" !== playerStore.playerStatus;});\nconst isNotVideoPage = computed(() => { return \"video\" !== route.name});\n\n// Watch\nwatch(()=>playerStore.playerHeight, async () => {\n emit(\"hide\", 0 === playerStore.playerHeight);\n});\nwatch(display, async () => {\n if (display.value) {\n displayWithTimeout.value = display.value;\n } else {\n setTimeout(() => {\n displayWithTimeout.value = display.value;\n }, 3000);\n }\n});\n\n//Methods\nfunction onHidden(): void {\n if (forceHide.value) {\n playerStore.playerPlay();\n forceHide.value = false;\n }\n}\nfunction onPause() {\n if (\"PLAYING\" === playerStore.playerStatus) {\n playerStore.playerChangeStatus(true);\n }\n}\n</script>\n\n<style lang=\"scss\">\n.octopus-app {\n .player-container {\n max-height: 94%;\n position: sticky;\n overflow: visible;\n z-index: 12;\n width: 100%;\n bottom: 0;\n display: flex;\n flex-direction: column;\n transition: height 1s;\n background: var(--octopus-player-color) !important;\n font-size: 1rem;\n\n .medium-text {\n font-size: 0.65rem;\n }\n\n .small-text {\n font-size: 0.5rem;\n }\n\n @media (width <= 960px) {\n .d-flex {\n flex-wrap: nowrap !important;\n }\n }\n }\n\n #ad-container {\n display: none;\n }\n}\n</style>\n","<template>\n <section\n id=\"octopus-player-component\"\n class=\"player-container\"\n :class=\"{ \n 'player-video': playerStore.playerVideo,\n 'overflow-hidden': !display\n }\"\n :style=\"{ height: playerStore.playerHeight }\"\n @transitionend=\"onHidden\"\n >\n <audio\n id=\"audio-player\"\n :src=\"!playerStore.playerLive && !playerStore.playerRadio ? audioUrlToPlay : undefined\"\n autoplay\n @timeupdate=\"onTimeUpdate\"\n @ended=\"onFinished\"\n @playing=\"onPlay\"\n @durationChange=\"onTimeUpdate\"\n @error=\"onError\"\n @seeked=\"onSeeked\"\n @pause=\"onPause\"\n @loadedmetadata=\"checkDelaytWithStitching\"\n />\n <div id=\"ad-container\" />\n\n <template v-if=\"displayWithTimeout\">\n\n <slot name=\"above\" />\n \n <PlayerVideo v-if=\"playerStore.playerVideo && isNotVideoPage\" />\n <template v-else-if=\"!playerStore.playerVideo\">\n <PlayerCompact\n v-if=\"!playerStore.playerLargeVersion\"\n :player-error=\"playerError\"\n :display-alert-bar=\"displayAlertBar\"\n :percent-live-progress=\"percentLiveProgress\"\n :duration-live-position=\"durationLivePosition\"\n :listen-time=\"listenTime\"\n :hls-ready=\"hlsReady\"\n @stop-player=\"stopPlayer\"\n @change-player-large-version=\"playerStore.playerUpdateLargeVersion(true)\"\n />\n <PlayerLarge\n v-else\n :player-error=\"playerError\"\n :display-alert-bar=\"displayAlertBar\"\n :percent-live-progress=\"percentLiveProgress\"\n :duration-live-position=\"durationLivePosition\"\n :listen-time=\"listenTime\"\n :hls-ready=\"hlsReady\"\n @stop-player=\"stopPlayer\"\n @change-player-large-version=\"playerStore.playerUpdateLargeVersion(false)\"\n />\n </template>\n </template>\n </section>\n</template>\n\n<script setup lang=\"ts\">\nimport {usePlayerLogic} from \"../../composable/player/usePlayerLogic\";\nimport { usePlayerStore } from \"../../../stores/PlayerStore\";\nimport { defineAsyncComponent, ref, computed, watch } from \"vue\";\nimport { useRoute } from \"vue-router\";\nconst PlayerVideo = defineAsyncComponent(\n () => import(\"./video/PlayerVideo.vue\"),\n);\nconst PlayerCompact = defineAsyncComponent(\n () => import(\"../player/PlayerCompact.vue\"),\n);\nconst PlayerLarge = defineAsyncComponent(\n () => import(\"../player/PlayerLarge.vue\"),\n);\n\n//Emits\nconst emit = defineEmits(['hide']);\n\n//Data\nconst displayWithTimeout= ref(false);\nconst forceHide= ref(false);\n\n//Composable\nconst {\n audioUrlToPlay,\n listenTime,\n playerError,\n percentLiveProgress, \n durationLivePosition,\n displayAlertBar,\n hlsReady, \n checkDelaytWithStitching, \n stopPlayer, \n onError, \n onTimeUpdate, \n onSeeked, \n onFinished, \n onPlay\n} = usePlayerLogic(forceHide);\nconst playerStore = usePlayerStore();\nconst route = useRoute();\n\n// Computed\nconst display = computed(() => { return \"STOPPED\" !== playerStore.playerStatus;});\nconst isNotVideoPage = computed(() => { return \"video\" !== route.name});\n\n// Watch\nwatch(()=>playerStore.playerHeight, async () => {\n emit(\"hide\", 0 === playerStore.playerHeight);\n});\nwatch(display, async () => {\n if (display.value) {\n displayWithTimeout.value = display.value;\n } else {\n setTimeout(() => {\n displayWithTimeout.value = display.value;\n }, 3000);\n }\n});\n\n//Methods\nfunction onHidden(): void {\n if (forceHide.value) {\n playerStore.playerPlay();\n forceHide.value = false;\n }\n}\nfunction onPause() {\n if (\"PLAYING\" === playerStore.playerStatus) {\n playerStore.playerChangeStatus(true);\n }\n}\n</script>\n\n<style lang=\"scss\">\n.octopus-app {\n .player-container {\n max-height: 94%;\n position: sticky;\n overflow: visible;\n z-index: 12;\n width: 100%;\n bottom: 0;\n display: flex;\n flex-direction: column;\n transition: height 1s;\n background: var(--octopus-player-color) !important;\n font-size: 1rem;\n\n .medium-text {\n font-size: 0.65rem;\n }\n\n .small-text {\n font-size: 0.5rem;\n }\n\n @media (width <= 960px) {\n .d-flex {\n flex-wrap: nowrap !important;\n }\n }\n }\n\n #ad-container {\n display: none;\n }\n}\n</style>\n"],"mappings":"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"}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"PlayerComponent-UG_c6_yr.mjs","names":["stringHelper","classicApi","fetchHelper","classicApi","fetchHelper","sdkParams","_openBlock","_createElementBlock","_normalizeClass","_normalizeStyle","_createElementVNode","_Fragment","_renderSlot","_createBlock","_createCommentVNode","_sfc_main"],"sources":["../src/components/composable/player/usePlayerLive.ts","../src/helper/loadScript.ts","../src/components/composable/player/usePlayerVast.ts","../src/components/composable/player/usePlayerStitching.ts","../src/components/composable/player/usePlayerTranscript.ts","../src/stores/class/securisation/privateOrganisation.ts","../src/components/composable/player/usePlayerLogic.ts","../src/components/misc/player/PlayerComponent.vue","../src/components/misc/player/PlayerComponent.vue"],"sourcesContent":["import stringHelper from \"../../../helper/stringHelper\";\nimport { usePlayerLogicProgress } from \"./usePlayerLogicProgress\";\nimport { Ref, ref } from \"vue\";\nimport { usePlayerStore, PlayerStatus } from \"../../../stores/PlayerStore\";\nimport { useApiStore } from \"../../../stores/ApiStore\";\nimport { useAuthStore } from \"../../../stores/AuthStore\";\nimport { useDayjs } from \"../useDayjs\";\n/* eslint-disable*/\nlet Hls:any = null;\n/* eslint-enable*/\nconst maxMinutesSessionId = 1;\nexport const usePlayerLive = (hlsReady: Ref<boolean>)=>{\n\n const { listenTime, initLiveDownloadId, setDownloadId, onTimeUpdateProgress } = usePlayerLogicProgress();\n\n const audioElement: Ref<HTMLAudioElement | null>= ref(null);\n const hls: Ref<any>= ref(null);\n const hlsRetryTimeout: Ref<ReturnType<typeof setTimeout> | undefined>= ref(undefined);\n const playPromise: Ref<Promise<void>|undefined>= ref(undefined);\n const errorHls= ref(false);\n\n\n const playerStore = usePlayerStore();\n const apiStore = useApiStore();\n const authStore = useAuthStore();\n const { dayjs } = useDayjs();\n\n function needToAddToken(url: string): boolean { \n if (authStore.authParam.accessToken && (\"SECURED\" === playerStore.playerLive?.organisation?.privacy || playerStore.playerRadio?.secured)) {\n // Add token only if request is on the same host as the playlist (segments may be served by an\n // S3-compatible storage that rejects any non-AWS Authorization header)\n const streamHost = new URL(playerStore.playerHlsUrl ?? '', location.href).host;\n return new URL(url, location.href).host === streamHost;\n }\n return false;\n }\n\n function onPlay(): void {\n playerStore.playerChangeStatus(PlayerStatus.PAUSED === playerStore.playerStatus);\n }\n\n function playRadio() {\n if (!playerStore.playerRadio) {\n return;\n }\n handleSessionIdRadio();\n playerStore.playerUpdatePlayerHlsUrl(playerStore.playerRadio.url+\"?origin=octopus&sessionId=\"+playerStore.playerRadio.sessionId);\n playHls();\n }\n\n function handleSessionIdRadio(){\n if(!playerStore.playerRadio) {\n return;\n }\n if(playerStore.playerRadio.sessionId && dayjs().diff(dayjs(playerStore.playerRadio.dateSessionId), 'm')<maxMinutesSessionId){\n return;\n }\n playerStore.playerRadio.sessionId = stringHelper.uuidv4();\n }\n\n function playLive() {\n if (!playerStore.playerHlsIdentifier) {\n return;\n }\n playerStore.playerUpdatePlayerHlsUrl(`${apiStore.hlsUrl}live/${playerStore.playerHlsIdentifier}/index.m3u8`);\n playHls();\n }\n\n async function playHls(): Promise<void> {\n try {\n if(null===audioElement.value){\n audioElement.value = document.getElementById(\"audio-player\") as HTMLAudioElement;\n }\n if (null === audioElement.value || !playerStore.playerHlsUrl) {\n setTimeout(playHls, 1000);\n return;\n }\n const ua = navigator.userAgent.toLowerCase();\n const isAndroid = ua.indexOf(\"android\") > -1; //&& ua.indexOf(\"mobile\");\n const isChrome = ua.indexOf(\"chrome\") > -1;\n if (\n audioElement.value.canPlayType(\"application/vnd.apple.mpegurl\") &&\n !isChrome &&\n !isAndroid\n ) {\n let url = playerStore.playerHlsUrl;\n if(needToAddToken(url)) {\n if (url.includes('?')) {\n url += \"&access_token=\"+authStore.authParam.accessToken;\n } else {\n url += \"?access_token=\"+authStore.authParam.accessToken;\n }\n }\n audioElement.value.src = url;\n await initLiveDownloadId();\n hlsReady.value = true;\n await audioElement.value.play();\n onPlay();\n } else {\n await initHls();\n }\n } catch(e) {\n console.error(e);\n onHlsError();\n }\n }\n\n function onHlsError(){\n if(\"STOPPED\"!==playerStore.playerStatus && undefined===hlsRetryTimeout.value){\n hlsRetryTimeout.value = setTimeout(() => {\n errorHls.value = false;\n playHls();\n hlsRetryTimeout.value = undefined;\n }, 5000);\n }\n }\n\n async function initHls() {\n if (null === Hls) {\n await import(\"hls.js\").then((hlsLibrary) => {\n Hls = hlsLibrary.default;\n });\n }\n if (!Hls.isSupported()) {\n throw new Error(\"Hls is not supported ! \");\n }\n hls.value = new Hls({\n autoStartLoad: true,\n liveDurationInfinity:true,\n backBufferLength:10,\n maxBufferLength:60,\n\n xhrSetup: (xhr: XMLHttpRequest, url: string) => {\n if (needToAddToken(url)) {\n xhr.setRequestHeader(\"Authorization\", \"Bearer \" +authStore.authParam.accessToken);\n }\n }\n });\n hls.value.on(Hls.Events.MANIFEST_PARSED, async () => {\n await initLiveDownloadId();\n hlsReady.value = true;\n if(true===errorHls.value){\n return;\n }\n setTimeout(() => {\n playPromise.value = (audioElement.value as HTMLAudioElement).play();\n playPromise.value.then(() =>{\n playPromise.value = undefined;\n onPlay();\n }).catch((e)=>{\n console.error(e);\n onHlsError();\n playPromise.value = undefined;\n });\n }, 500);\n });\n hls.value.on(Hls.Events.ERROR, async (name: string, data:any) => {\n // Stalling, we don't have enough data\n if (data.details === 'bufferStalledError') {\n // Some logs to be able to follow what's happening\n console.warn('playback is stalling…');\n playerStore.playerStatus = PlayerStatus.LOADING;\n // Destroy current instance\n hls.value.destroy();\n // Wait a bit before restarting playback\n setTimeout(initHls, 500);\n return;\n }\n console.error('An error occured: ' + name + ' / ' + data.details, data);\n if (data.fatal && data.type === Hls.ErrorTypes.MEDIA_ERROR) {\n console.warn('Trying to recover...');\n hls.value.recoverMediaError();\n }\n errorHls.value = true;\n if(undefined===playPromise.value && data.fatal){\n onHlsError();\n }\n });\n hls.value.loadSource(playerStore.playerHlsUrl);\n hls.value.attachMedia(audioElement.value as HTMLAudioElement);\n }\n\n async function endingLive(): Promise<void> {\n clearTimeout(hlsRetryTimeout.value);\n hlsRetryTimeout.value = undefined;\n if(null===audioElement.value){\n return;\n }\n audioElement.value = null;\n const audio: HTMLElement | null = document.getElementById(\"audio-player\");\n if (audio && hls.value) {\n hls.value.destroy();\n hls.value = null;\n }else{\n (audio as HTMLAudioElement).pause();\n }\n (audio as HTMLAudioElement).src = \"\";\n }\n\n\treturn {\n listenTime,\n setDownloadId,\n onTimeUpdateProgress,\n playLive,\n endingLive,\n playRadio,\n onPlay\n\t}\n}\n","function loadScript(src: string, async:boolean, callback: (isLoaded:boolean) => void) {\n const firstElement = document.getElementsByTagName('head')[0] || document.documentElement,\n scriptElement = document.createElement('script');\n scriptElement.type = 'text/javascript';\n scriptElement.src = src;\n scriptElement.async = async;\n scriptElement.addEventListener('load', function() {\n if(callback && typeof callback === 'function') {\n callback(true);\n }\n }, false);\n scriptElement.addEventListener('error', function() {\n firstElement.removeChild(scriptElement);\n if(callback && typeof callback === 'function') {\n callback(false);\n }\n }, false);\n firstElement.insertBefore(scriptElement, firstElement.firstChild);\n}\nexport {\n loadScript\n}\n","import { usePlayerStore } from \"../../../stores/PlayerStore\";\nimport { useVastStore } from \"../../../stores/VastStore\";\nimport { loadScript } from \"../../../helper/loadScript\";\nimport {nextTick, Ref, ref, watch} from 'vue';\nimport dayjs from \"dayjs\";\nlet adsLoader: google.ima.AdsLoader;\nlet adsManager:google.ima.AdsManager;\nlet adDisplayContainer:google.ima.AdDisplayContainer;\nlet adsRequest: google.ima.AdsRequest;\nexport const usePlayerVast = ()=>{\n const imaLoaded = ref(false);\n const isContentFinished = ref(false);\n const audioContainer : Ref<HTMLAudioElement|null>= ref(null);\n const isAdRequested = ref(false);\n const statusPlayerWhenLoaded = ref(\"\");\n const dateForSessionId: Ref<string|undefined> = ref(undefined);\n\n const playerStore = usePlayerStore();\n const vastStore = useVastStore();\n\n watch(() => vastStore.isAdPaused, () => {onAdChangePlayingStatus();});\n watch(() => vastStore.isAdSkipped, () => {onAdSkipped();});\n\n function prepareIMA(){\n if(!imaLoaded.value){\n imaLoaded.value = true;\n loadIMA();\n }else{\n initializeIMA();\n }\n }\n\n function loadIMA(){\n loadScript('//imasdk.googleapis.com/js/sdkloader/ima3.js', true, (isIMALoaded:boolean) => {\n if(isIMALoaded) {\n initializeIMA();\n }\n });\n }\n\n function initializeIMA(): void {\n console.log(\"Initialize IMA\");\n initializeDisplayContainer();\n if(!adDisplayContainer || !adsLoader){\n return;\n }\n }\n\n function onRequestAd(vastUrl: string){\n isAdRequested.value = true;\n console.log(\"Request ad \"+vastUrl);\n initializeAdsRequest(vastUrl);\n adsLoader.requestAds(adsRequest);\n }\n\n function initializeDisplayContainer():void{\n if(adDisplayContainer){return};\n audioContainer.value = (document.getElementById('audio-player') as HTMLAudioElement); \n if(null===audioContainer.value){return;}\n adDisplayContainer = new google.ima.AdDisplayContainer(document.getElementById('ad-container'), audioContainer.value);\n adDisplayContainer.initialize();\n initializeAdsLoader();\n }\n\n function initializeAdsLoader():void{\n adsLoader = new google.ima.AdsLoader(adDisplayContainer);\n adsManager = null;\n adsLoader.addEventListener(\n google.ima.AdsManagerLoadedEvent.Type.ADS_MANAGER_LOADED,\n onAdsManagerLoaded,\n false\n );\n adsLoader.addEventListener(\n google.ima.AdErrorEvent.Type.AD_ERROR,\n onAdError,\n false\n );\n }\n\n function initializeAdsRequest(vastUrl: string):void{\n adsRequest = new google.ima.AdsRequest();\n adsRequest.setAdWillAutoPlay(true);\n adsRequest.adTagUrl = vastUrl;\n }\n\n function onAdsManagerLoaded(adsManagerLoadedEvent: google.ima.AdsManagerLoadedEvent) {\n const adsRenderingSettings = new google.ima.AdsRenderingSettings();\n adsRenderingSettings.restoreCustomPlaybackStateOnAdBreakComplete = true;\n adsManager = adsManagerLoadedEvent.getAdsManager(audioContainer.value, adsRenderingSettings);\n startAdManager();\n }\n\n function startAdManager(){\n console.log(\"Start manager\");\n initAdManagerEvents();\n try {\n adsManager.init(0, 0, google.ima.ViewMode.NORMAL);\n adsManager.start();\n } catch (adError) {\n console.log(adError);\n playerStore.playerChangeStatus(false);\n destroyAdManager();\n }\n }\n\n function initAdManagerEvents(){\n adsManager.addEventListener(google.ima.AdErrorEvent.Type.AD_ERROR,onAdError);\n adsManager.addEventListener(google.ima.AdEvent.Type.CONTENT_PAUSE_REQUESTED, onContentPauseRequested);\n adsManager.addEventListener(google.ima.AdEvent.Type.CONTENT_RESUME_REQUESTED, onContentResumeRequested);\n const events = [\n google.ima.AdEvent.Type.ALL_ADS_COMPLETED, google.ima.AdEvent.Type.AD_PROGRESS,\n google.ima.AdEvent.Type.COMPLETE, google.ima.AdEvent.Type.LOADED, \n google.ima.AdEvent.Type.PAUSED, google.ima.AdEvent.Type.STARTED,\n ];\n for (const index in events) {\n adsManager.addEventListener(events[index], onAdEvent);\n }\n }\n\n function onAdError(adErrorEvent: google.ima.AdErrorEvent) {\n console.log(adErrorEvent.getError());\n destroyAdManager();\n }\n\n function destroyAdManager(){\n if(!adsManager){return;}\n console.log(\"Destroy manager\");\n adsManager?.destroy();\n adsManager = null;\n vastStore.restartVastData();\n isContentFinished.value =false;\n isAdRequested.value = false;\n }\n\n function onAdEvent(adEvent: google.ima.AdEvent) {\n const ad = adEvent.getAd();\n if(ad){\n vastStore.updateCurrentAd(ad);\n }\n switch (adEvent.type) {\n case google.ima.AdEvent.Type.LOADED:\n statusPlayerWhenLoaded.value = playerStore.playerStatus;\n if (!ad.isLinear()) {\n playerStore.playerChangeStatus(false);\n isAdRequested.value = false;\n }\n break;\n case google.ima.AdEvent.Type.STARTED:\n console.log(\"Launched status : \"+statusPlayerWhenLoaded.value);\n if(\"PLAYING\"!==statusPlayerWhenLoaded.value){\n vastStore.updateIsAdPaused(true);\n adsManager.pause();\n }\n break;\n case google.ima.AdEvent.Type.AD_PROGRESS:{\n isAdRequested.value = false;\n const adProgressData = adEvent.getAdData();\n vastStore.updateProgressionData(adProgressData.duration,adProgressData.currentTime);\n vastStore.updateSkippableData(\n vastStore.currentAd.getSkipTimeOffset()!== -1,\n adsManager.getAdSkippableState(),\n Math.ceil(vastStore.currentAd.getSkipTimeOffset() - adProgressData.currentTime));\n break;\n }\n }\n }\n\n function onContentPauseRequested() {\n vastStore.updateIsAdPlaying(true);\n playerStore.playerChangeStatus(true);\n }\n\n function onContentResumeRequested() {\n if (!isContentFinished.value) {\n playerStore.playerChangeStatus(false);\n }\n nextTick(() => {\n vastStore.updateIsAdPlaying(false);\n vastStore.updateResetSessionId(false);\n });\n }\n\n function contentEndedAdsLoader():void{\n if (vastStore.isAdPlaying) return;\n isContentFinished.value = true;\n adsLoader?.contentComplete();\n }\n\n function onAdChangePlayingStatus(){\n if(!adsManager){return;}\n if(vastStore.isAdPaused){\n adsManager.pause();\n dateForSessionId.value = dayjs().toISOString();\n }else{\n adsManager.resume();\n if(!vastStore.resetSessionId &&dayjs().diff(dayjs(dateForSessionId.value), 'm')>1){\n vastStore.updateResetSessionId(true);\n }\n }\n }\n\n function onAdSkipped(){\n if(vastStore.isAdSkipped){\n adsManager.skip();\n }\n }\n\n\n\treturn {\n isAdRequested,\n prepareIMA,\n onRequestAd,\n destroyAdManager,\n contentEndedAdsLoader\n\t}\n}\n","import { usePlayerStore } from \"../../../stores/PlayerStore\";\nimport { useVastStore } from \"../../../stores/VastStore\";\nimport { useSaveFetchStore } from \"../../../stores/SaveFetchStore\";\nimport { usePlayerVast } from \"./usePlayerVast\";\nimport fetchHelper from \"../../../helper/fetchHelper\";\n\nimport {computed, onMounted, Ref, ref, watch} from 'vue';\nimport { useRoute } from \"vue-router\";\nimport dayjs from \"dayjs\";\nimport classicApi from \"../../../api/classicApi\";\nimport { AdserverOtherEmission } from \"@/stores/class/adserver/adserverOtherEmission\";\nimport { AdPosition } from \"@/stores/class/adserver/adPosition\";\nimport { AdserverTiming } from \"@/stores/class/adserver/adserverTiming\";\n\nexport const usePlayerStitching = ()=>{\n\n const { isAdRequested, prepareIMA, onRequestAd,destroyAdManager, contentEndedAdsLoader } = usePlayerVast();\n\n const radioInterval : Ref<ReturnType<typeof setTimeout> | undefined> = ref(undefined);\n\n const route = useRoute()\n const playerStore = usePlayerStore();\n const vastStore = useVastStore();\n const saveFetchStore= useSaveFetchStore();\n\n const radioNextAdvertisingStartDate = computed(() => { \n return playerStore.playerRadio?.nextAdvertising?.startDate;\n });\n\n\n watch(() => playerStore.playerCurrentChange, () => {\n if(playerStore.playerCurrentChange && playerStore.playerCurrentChange > 0 && !checkUsePlayerPodcastStitching()){return;}\n onPlayerChange();\n });\n\n //launch advertising for podcast\n watch(() => playerStore.playerElapsedSeconds, () => {\n if(!checkUsePlayerPodcastStitching()){return;}\n if(!isAdRequested.value && checkAdNeedToBeLaunch()){\n onRequestAd(vastStore.adPositionsPodcasts[playerStore.playerCurrentChange??0][vastStore.adPositionIndex].vastUrl);\n vastStore.updateAdPositionIndex(vastStore.adPositionIndex+1); \n }\n });\n\n // launch advertising for radio\n watch(radioNextAdvertisingStartDate, () => {\n if(!radioNextAdvertisingStartDate.value){\n return;\n }\n defineRadioInterval();\n }, { immediate: true });\n\n\n onMounted(() => {\n vastStore.updateuseVastPlayerPodcast(\"true\"===route.query.vast);\n })\n\n function checkUsePlayerPodcastStitching():boolean{\n return vastStore.useVastPlayerPodcast;\n }\n\n function defineRadioInterval(){\n clearRadioInterval();\n const timeRemaining = dayjs(radioNextAdvertisingStartDate.value).diff(dayjs(), \"millisecond\");\n console.log(\"TimeRemaining \"+timeRemaining);\n if(timeRemaining < 0){\n return;\n }\n radioInterval.value = setTimeout(() => {\n radioIntervalExecute();\n }, timeRemaining);\n }\n\n async function radioIntervalExecute(){\n //If pause when ad needs to be played then skipped (TO THINK)\n if(\"PAUSED\"===playerStore.playerStatus){return;}\n const vastUrl = await getVastUrl(playerStore.playerRadio?.nextAdvertising?.tag ??\"5e385e1b51c86\", playerStore.playerRadio?.nextAdvertising?.adCount ?? 1);\n console.log(\"vastUrl \"+vastUrl);\n onRequestAd(vastUrl);\n }\n\n function clearRadioInterval() {\n clearInterval(radioInterval.value as unknown as number);\n radioInterval.value = undefined;\n }\n\n function checkAdNeedToBeLaunch(){\n if(!playerStore.playerCurrentChange || !vastStore.adPositionsPodcasts[playerStore.playerCurrentChange]?.[vastStore.adPositionIndex]){return false;}\n return vastStore.adPositionsPodcasts[playerStore.playerCurrentChange][vastStore.adPositionIndex]?.seconds <= playerStore.playerElapsedSeconds;\n }\n\n async function onPlayerChange(){\n destroyAdManager();\n if(null==playerStore.playerCurrentChange){return;}\n prepareIMA();\n await fetchPodcastAdConfig();\n }\n\n async function fetchPodcastAdConfig(){\n if(!playerStore.playerCurrentChange || !playerStore.playerPodcast ||(playerStore.playerCurrentChange && vastStore.adPositionsPodcasts[playerStore.playerCurrentChange])){\n return;\n }\n const adserverConfig = await classicApi.fetchData<AdserverOtherEmission>({\n api:0,\n path: `ad/test/podcast/${playerStore.playerCurrentChange}`,\n isNotAuth:true\n });\n if(!adserverConfig || \"SOUNDCAST_VAST\"!==adserverConfig.config?.server){\n vastStore.updateAdPositionsPodcasts(playerStore.playerCurrentChange, []);\n return;\n }\n const podcastDurationSeconds = Math.round((playerStore.playerPodcast?.duration??0) / 1000);\n const allAdPositions =generateAllAdPositions(adserverConfig.config.doublets, podcastDurationSeconds);\n const selectedAdPositions = await selectCorrectAdPositions(allAdPositions, podcastDurationSeconds, adserverConfig.config.minIntervalDuration, adserverConfig.config.minTailDuration);\n vastStore.updateAdPositionsPodcasts(playerStore.playerCurrentChange, selectedAdPositions);\n }\n\n function generateAllAdPositions(doublets: Array<AdserverTiming>, podcastDuration: number): Array<AdPosition>{\n const adPositions: Array<AdPosition> = [];\n if(doublets.some((element: AdserverTiming)=>{return \"TAG_NO_AD\"===element.tag})){\n return [];\n }\n for (const doublet of doublets) {\n if(!doublet.tag){continue;}\n let seconds = 0;\n if(\"post\"===doublet.timing.insertion){\n seconds = podcastDuration;\n }else if(\"mid\"===doublet.timing.insertion){\n const mesure = doublet.timing.mesure ?? 0;\n switch (doublet.timing.unit){\n case \"MILLISECOND\": seconds = mesure * 1000; break;\n case \"MINUTE\": seconds = Math.round(mesure / 60); break;\n case \"PERCENT\": seconds = Math.round((mesure * podcastDuration) / 100); break;\n default: seconds = mesure; break;\n }\n }\n adPositions.push({\n impressId: doublet.tag,\n policy: doublet.timing.insertion,\n seconds: seconds,\n vastUrl: \"\"\n });\n }\n return adPositions.sort((a: AdPosition, b: AdPosition) => {\n if (a.seconds > b.seconds) {\n return 1;\n }\n return b.seconds > a.seconds ? -1 : 0;\n });\n }\n\n async function selectCorrectAdPositions(allAdPositions: Array<AdPosition>, podcastDuration: number, minIntervalDuration:number, minTailDuration:number): Promise<Array<AdPosition>>{\n const adPositions: Array<AdPosition> = [];\n let previousPosition = -1;\n for(const adPosition of allAdPositions){\n switch (adPosition.policy) {\n case \"pre\":\n adPositions.push(await defineVastUrl(adPosition));\n previousPosition = 0;\n break;\n case \"mid\":\n if (adPosition.seconds > podcastDuration - minTailDuration) {\n //Too close to end\n continue;\n }\n if (previousPosition >= 0 && adPosition.seconds < previousPosition + minIntervalDuration) {\n //Too close to previous ad\n continue;\n }\n adPositions.push(await defineVastUrl(adPosition));\n previousPosition = adPosition.seconds;\n break;\n case \"post\":\n if (previousPosition >= 0 && previousPosition > podcastDuration - minIntervalDuration) {\n //Too close to previous ad\n continue;\n }\n adPositions.push(await defineVastUrl(adPosition));\n break;\n default:break;\n }\n }\n return adPositions;\n }\n\n async function defineVastUrl(adPosition: AdPosition): Promise<AdPosition>{\n adPosition.vastUrl = await getVastUrl(adPosition.impressId, 1);\n return adPosition;\n }\n\n async function getVastUrl(tag: string, adCount: number): Promise<string>{\n const baseUrl = \"https://api.soundcast.io/v1/vast/\"+tag;\n let keywords: Array<string> = [];\n if(playerStore.playerPodcast?.tags?.length){\n const attributes = await saveFetchStore.getOrgaAttributes(playerStore.playerPodcast.organisation.id);\n if (\"true\"===attributes[\"AD_CONFIG_PODCAST_TAG\"]) {\n keywords = playerStore.playerPodcast.tags.map((e) => {\n return \"tag:\" + e;\n });\n }\n }\n const parameters = fetchHelper.getUriSearchParams({\n adCount: adCount ?? 1,\n pageUrl:document.referrer,\n keywords:keywords\n });\n return baseUrl + '?' + parameters.toString();\n }\n\n\treturn {\n contentEndedAdsLoader\n\t}\n}\n","import { usePlayerStore } from \"../../../stores/PlayerStore\";\nimport { useVastStore } from \"../../../stores/VastStore\";\nimport classicApi from \"../../../api/classicApi\";\nimport { AdserverOtherEmission } from \"@/stores/class/adserver/adserverOtherEmission\";\nimport { useTranslation } from \"../useTranslation\";\nimport { transcriptionApi } from \"../../../api/transcriptionApi\";\nimport { ref } from \"vue\";\nimport { parseSrtTranscript } from \"@/helper/transcriptHelper\";\n\n/** Contains the language of the transcript being generated */\nconst generatingTranscriptLanguage = ref<string|null>(null);\n\nexport const usePlayerTranscript = ()=>{\n\n const playerStore = usePlayerStore();\n const vastStore = useVastStore();\n const { getMostRelevantLanguage } = useTranslation();\n\n async function checkDelaytWithStitching(){\n playerStore.playerUpdateDelayStitching(0);\n if(vastStore.useVastPlayerPodcast){\n return;\n }\n\n const audioPlayer = document.querySelector(\"#audio-player\") as HTMLAudioElement;\n if (!playerStore.playerTranscript || !audioPlayer || !playerStore.playerPodcast ||\n audioPlayer.duration <= playerStore.playerPodcast.duration / 1000 + 5) {\n return;\n }\n\n const adserverConfig = await classicApi.fetchData<AdserverOtherEmission>({\n api:0,\n path:`ad/test/podcast/${playerStore.playerPodcast.podcastId}`,\n isNotAuth:true\n });\n\n // In case of midroll ads, we can't properly display transcription, so\n // we disable it.\n const hasOtherThanPreOrPost = adserverConfig.config.doublets\n .filter(doublet => !([\"pre\", \"post\"].includes(doublet.timing.insertion)))\n .length > 0;\n if (hasOtherThanPreOrPost) {\n console.warn(\"This episode's ad settings doesn't allow for transcription\");\n playerStore.playerUpdateChaptering();\n playerStore.playerUpdateTranscript();\n return;\n }\n\n // In case of preroll ads, delay start of transcription\n const hasPre = adserverConfig.config.doublets\n .filter(doublet => doublet.timing.insertion === \"pre\")\n .length > 0;\n if(hasPre) {\n // Since we have the expected time (from playerStore) and effective time\n // (from audioPlayer, which include ads), we just delay by the delta\n playerStore.playerUpdateDelayStitching( audioPlayer.duration - (playerStore.playerPodcast.duration / 1000));\n }\n }\n\n async function getTranscription(): Promise<void> {\n generatingTranscriptLanguage.value = null;\n if (!playerStore.playerPodcast) {\n playerStore.playerUpdateTranscript();\n return;\n }\n\n // Retrieve best language for transcription\n const podcastId = playerStore.playerPodcast.podcastId;\n const translationData = await transcriptionApi.getTranslations(podcastId);\n const { ready, available } = await getMostRelevantLanguage(translationData);\n\n // Retrieve transcription\n const result = await transcriptionApi.getTranslation(podcastId, ready);\n\n const arrayTranscript = parseSrt(result);\n const currentText =\n arrayTranscript?.[0]?.startTime === 0 ? arrayTranscript[0].text : \"\";\n if(!arrayTranscript){\n return;\n }\n playerStore.playerUpdateTranscript({\n current: 0,\n currentText: currentText,\n value: arrayTranscript\n });\n\n if (available !== undefined && ready !== available) {\n generatingTranscriptLanguage.value = available;\n\n // If there's a better language available, trigger its generation\n const result = await transcriptionApi.getTranslation(podcastId, available, true);\n\n const arrayTranscript = parseSrt(result);\n const currentText =\n arrayTranscript?.[0]?.startTime === 0 ? arrayTranscript[0].text : \"\";\n if(!arrayTranscript){\n return;\n }\n playerStore.playerUpdateTranscript({\n current: playerStore.playerTranscript?.current,\n currentText,\n value: arrayTranscript\n });\n generatingTranscriptLanguage.value = null;\n }\n }\n\n function parseSrt(transcript: string) {\n if (typeof transcript != \"string\") {\n return;\n }\n if (transcript == null) {\n return;\n }\n\n return parseSrtTranscript(transcript);\n }\n\n function onTimeUpdateTranscript(currentTime: number) {\n if(!playerStore.playerTranscript?.value.length){\n return;\n }\n const startTime = (playerStore.playerTranscript.value[playerStore.playerTranscript.current]?.startTime ?? 0) + playerStore.playerDelayStitching;\n if (startTime <= currentTime) {\n playerStore.playerTranscript.currentText = playerStore.playerTranscript.value[playerStore.playerTranscript?.current]?.text ?? [];\n }\n if (\n (playerStore.playerTranscript.value[playerStore.playerTranscript.current]?.endTime ??Infinity) + playerStore.playerDelayStitching< currentTime\n ) {\n playerStore.playerTranscript.current += 1;\n playerStore.playerTranscript.currentText =\n playerStore.playerTranscript?.value[playerStore.playerTranscript.current]?.text ?? [];\n }\n }\n \n function onSeekedTranscript(currentTime: number) {\n if (playerStore.playerTranscript) {\n let newCurrent = 0;\n while (currentTime >(playerStore.playerTranscript.value[newCurrent]?.endTime ?? Infinity) + playerStore.playerDelayStitching) {\n newCurrent += 1;\n }\n playerStore.playerTranscript.current = newCurrent;\n }\n }\n\n return {\n checkDelaytWithStitching,\n getTranscription,\n onTimeUpdateTranscript,\n onSeekedTranscript,\n generatingTranscriptLanguage\n }\n}\n","export enum OrganisationPrivacy {\n SECURED = 'SECURED',\n PRIVATE = 'PRIVATE',\n PUBLIC = 'PUBLIC'\n}\n\nexport interface PrivateOrganisation {\n privacy: OrganisationPrivacy;\n accountCreation: string; // ENABLED DISABLED\n referrers: Array<string>;\n cidrs: Array<string>;\n mailDomains: Array<string>;\n}\n\nexport function emptyPrivateOrganisation(): PrivateOrganisation {\n return {\n privacy: OrganisationPrivacy.PUBLIC,\n accountCreation: \"DISABLED\",\n referrers: [],\n cidrs: [],\n mailDomains: [],\n };\n}\n","\nimport { usePlayerLive } from \"./usePlayerLive\";\nimport { usePlayerStitching } from \"./usePlayerStitching\";\nimport { usePlayerTranscript } from \"./usePlayerTranscript\";\nimport { nextTick, Ref, ref, watch } from \"vue\";\nimport { usePlayerStore } from \"../../../stores/PlayerStore\";\nimport { useAuthStore } from \"../../../stores/AuthStore\";\nimport { useGeneralStore } from \"../../../stores/GeneralStore\";\nimport { useVastStore } from \"../../../stores/VastStore\";\nimport { state as sdkParams } from \"../../../stores/ParamSdkStore\";\nimport fetchHelper from \"../../../helper/fetchHelper\";\nimport dayjs from \"dayjs\";\nimport { FetchParam } from \"@/stores/class/general/fetchParam\";\nimport { podcastApi } from \"../../../api/podcastApi\";\nimport { Organisation } from \"../../../stores/class/general/organisation\";\nimport { organisationApi } from \"../../../api/organisationApi\";\nimport { OrganisationPrivacy } from \"../../../stores/class/securisation/privateOrganisation\";\n\nexport const usePlayerLogic = (forceHide: Ref<boolean, boolean>) => {\n const hlsReady = ref(false);\n\n const { listenTime, onPlay, setDownloadId, onTimeUpdateProgress, playLive, endingLive, playRadio} = usePlayerLive(hlsReady);\n const { contentEndedAdsLoader } = usePlayerStitching();\n const { getTranscription, onTimeUpdateTranscript, onSeekedTranscript, checkDelaytWithStitching } = usePlayerTranscript();\n\n const playerError= ref(false);\n const listenError= ref(false);\n const percentLiveProgress= ref(0);\n const durationLivePosition= ref(0);\n const displayAlertBar= ref(false);\n const audioUrlToPlay= ref(\"\");\n\n\n const playerStore = usePlayerStore();\n const generalStore = useGeneralStore();\n const vastStore = useVastStore();\n const authStore = useAuthStore();\n\n watch(()=>getAudioUrl(), async () => {\n playerError.value = false;\n\n // In some cases, the audio does not go through normal download endpoint\n // Mostly when the podcast is not available to users\n let download = true;\n if (\n playerStore.playerMedia ||\n !playerStore.playerPodcast ||\n playerStore.playerVideo ||\n !playerStore.playerPodcast.availability.visibility ||\n listenError.value\n ) {\n download = false;\n\n // Not yet available podcasts in secured organisations go through\n // download if possible (see #14228)\n const podcast = playerStore.playerPodcast;\n if (podcast && !podcast.availability.visibility) {\n let organisation: Organisation|null = null;\n if (podcast.organisation) {\n organisation = podcast.organisation;\n } else if ('organisationId' in podcast) {\n // Handle case of missing organisation (for example for SimplifiedPodcast)\n organisation = await organisationApi.get(podcast.organisationId as string);\n }\n if (organisation.privacy === OrganisationPrivacy.SECURED) {\n download = true;\n }\n }\n }\n\n if (download) {\n const response = await podcastApi.downloadRegister(playerStore.playerPodcast.podcastId, getAudioUrlParameters());\n setDownloadId(response.downloadId.toString());\n audioUrlToPlay.value = response.location;\n } else {\n audioUrlToPlay.value = getAudioUrl();\n }\n });\n\n watch(()=>playerStore.playerPodcast, async () => {\n reInitPlayer();\n getTranscription();\n }, {deep:true});\n\n watch(()=>playerStore.playerLive, async (_, oldLive) => {\n if(playerStore.playerVideo){\n return;\n }\n nextTick(async () => {\n hlsReady.value = false;\n reInitPlayer(oldLive!==undefined);\n playLive();\n });\n }, {deep:true});\n\n watch(()=>playerStore.playerRadio, async (_, oldRadio) => {\n nextTick(async () => {\n hlsReady.value = false;\n reInitPlayer(oldRadio !== undefined);\n playRadio();\n });\n });\n\n watch(()=>playerStore.playerStatus, async () => {\n const audioPlayer: HTMLAudioElement | null =\n document.querySelector(\"#audio-player\");\n if (!audioPlayer) return;\n if (playerStore.playerLive && !hlsReady.value) {\n /* audioPlayer.pause();\n percentLiveProgress.value = 0;\n durationLivePosition.value = 0; */\n return;\n }\n if (\"PAUSED\" === playerStore.playerStatus && playerStore.playerRadio) {\n playerStore.playerRadio.dateSessionId = dayjs().toISOString();\n hlsReady.value = false;\n reInitPlayer();\n endingLive();\n } else if (\"PAUSED\" === playerStore.playerStatus) {\n audioPlayer.pause();\n } else if (\"PLAYING\" === playerStore.playerStatus && playerStore.playerRadio) {\n handlePlayRadio();\n } else if (\"PLAYING\" === playerStore.playerStatus) {\n audioPlayer.play();\n }\n });\n\n function handlePlayRadio(){\n if(!playerStore.playerRadio){\n return;\n }\n if (playerStore.playerRadio.isInit) {\n if(vastStore.isAdPlaying && !vastStore.resetSessionId){\n playerStore.playerRadio.dateSessionId = dayjs().toISOString();\n }\n playRadio();\n } else {\n playerStore.playerRadio.isInit = true;\n }\n }\n\n function getAudioUrlParameters(addToken?: boolean): FetchParam {\n if (!playerStore.playerPodcast) {\n return {};\n }\n \n const parameters: FetchParam = {\n origin: \"octopus\",\n accepted: vastStore.useVastPlayerPodcast\n };\n if (authStore.authOrgaId) {\n parameters.distributorId = authStore.authOrgaId;\n }\n if (generalStore.consentTcf) {\n parameters.consent = generalStore.consentTcf;\n }\n if (\n addToken &&\n \"SECURED\" === playerStore.playerPodcast.organisation.privacy &&\n authStore.authParam.accessToken\n ) {\n parameters.access_token = authStore.authParam.accessToken;\n }\n return parameters;\n }\n\n function getAudioUrl(): string {\n if (playerStore.playerMedia){\n return playerStore.playerMedia.audioUrl ?? \"\";\n }\n if (!playerStore.playerPodcast || playerStore.playerVideo) {\n return \"\";\n }\n if (\n !playerStore.playerPodcast.availability.visibility ||\n \"PROCESSING\" === playerStore.playerPodcast.processingStatus\n ) {\n return playerStore.playerPodcast.audioStorageUrl;\n }\n if (listenError.value) {\n return playerStore.playerPodcast.audioStorageUrl;\n }\n return playerStore.playerPodcast.podcastId + \".mp3?\"+fetchHelper.getUriSearchParams(getAudioUrlParameters(), true);\n }\n\n function reInitPlayer(force=false): void {\n setDownloadId(null);\n listenError.value = false;\n if (force || playerStore.playerLive || playerStore.playerRadio) {\n endingLive();\n }\n }\n\n function stopPlayer(): void {\n playerStore.playerPlay();\n }\n\n function onError(): void {\n if (\n playerStore.playerPodcast &&\n \"\" !== audioUrlToPlay.value &&\n !listenError.value\n ) {\n listenError.value = true;\n } else if (\n (playerStore.playerPodcast && \"\" !== audioUrlToPlay.value) ||\n playerStore.playerMedia\n ) {\n playerError.value = true;\n }\n }\n\n function streamDurationForSafari(mediaTarget: HTMLMediaElement) {\n let streamDuration = mediaTarget.duration;\n if (Infinity === streamDuration) {\n const seekable = mediaTarget.seekable;\n if (seekable && seekable.length > 0) {\n try {\n streamDuration = seekable.end(seekable.length - 1);\n } catch (e) {\n console.error(e);\n }\n } else {\n streamDuration = mediaTarget.currentTime;\n }\n }\n return streamDuration;\n }\n\n function onTimeUpdatePodcast(streamDuration: number, currentTime: number) {\n displayAlertBar.value = false;\n percentLiveProgress.value = 0;\n playerStore.playerUpdateElapsed(currentTime / streamDuration, streamDuration);\n onTimeUpdateTranscript(currentTime);\n }\n\n function onTimeUpdateLive(streamDuration: number, currentTime: number) {\n if (!playerStore.playerLive) {\n return;\n }\n const scheduledDuration = playerStore.playerLive.duration / 1000;\n if (scheduledDuration > streamDuration) {\n displayAlertBar.value = false;\n percentLiveProgress.value = (streamDuration / scheduledDuration) * 100;\n playerStore.playerUpdateElapsed(\n currentTime / scheduledDuration,\n scheduledDuration,\n );\n } else {\n percentLiveProgress.value = 100;\n displayAlertBar.value = true;\n durationLivePosition.value = (scheduledDuration / streamDuration) * 100;\n playerStore.playerUpdateElapsed(currentTime / streamDuration, streamDuration);\n }\n }\n\n function onTimeUpdate(event: Event): void {\n if (playerStore.playerRadio) {\n return;\n }\n const mediaTarget = event.currentTarget as HTMLMediaElement;\n if (playerStore.playerPodcast || playerStore.playerLive) {\n onTimeUpdateProgress(mediaTarget.currentTime);\n }\n const streamDuration = streamDurationForSafari(mediaTarget);\n if (!streamDuration) return;\n if (!mediaTarget.currentTime) return;\n if (!playerStore.playerLive) {\n onTimeUpdatePodcast(streamDuration, mediaTarget.currentTime);\n return;\n }\n onTimeUpdateLive(streamDuration, mediaTarget.currentTime);\n }\n\n function onSeeked(event: Event): void {\n const mediaTarget = event.currentTarget as HTMLMediaElement;\n const currentTime = mediaTarget.currentTime;\n onSeekedTranscript(currentTime);\n }\n\n function onFinished(): void {\n setDownloadId(null);\n contentEndedAdsLoader();\n if (playerStore.playerLive) {\n endingLive();\n }\n\n if (sdkParams.player.stayOpenOnFinish !== true) {\n forceHide.value = true;\n }\n }\n\n\n return {\n audioUrlToPlay,\n listenTime,\n playerError,\n percentLiveProgress,\n durationLivePosition,\n displayAlertBar,\n hlsReady,\n checkDelaytWithStitching,\n stopPlayer,\n onError,\n onTimeUpdate,\n onSeeked,\n onFinished,\n onPlay\n }\n}\n","<template>\n <section\n id=\"octopus-player-component\"\n class=\"player-container\"\n :class=\"{ \n 'player-video': playerStore.playerVideo,\n 'overflow-hidden': !display\n }\"\n :style=\"{ height: playerStore.playerHeight }\"\n @transitionend=\"onHidden\"\n >\n <audio\n id=\"audio-player\"\n :src=\"!playerStore.playerLive && !playerStore.playerRadio ? audioUrlToPlay : undefined\"\n autoplay\n @timeupdate=\"onTimeUpdate\"\n @ended=\"onFinished\"\n @playing=\"onPlay\"\n @durationChange=\"onTimeUpdate\"\n @error=\"onError\"\n @seeked=\"onSeeked\"\n @pause=\"onPause\"\n @loadedmetadata=\"checkDelaytWithStitching\"\n />\n <div id=\"ad-container\" />\n\n <template v-if=\"displayWithTimeout\">\n\n <slot name=\"above\" />\n \n <PlayerVideo v-if=\"playerStore.playerVideo && isNotVideoPage\" />\n <template v-else-if=\"!playerStore.playerVideo\">\n <PlayerCompact\n v-if=\"!playerStore.playerLargeVersion\"\n :player-error=\"playerError\"\n :display-alert-bar=\"displayAlertBar\"\n :percent-live-progress=\"percentLiveProgress\"\n :duration-live-position=\"durationLivePosition\"\n :listen-time=\"listenTime\"\n :hls-ready=\"hlsReady\"\n @stop-player=\"stopPlayer\"\n @change-player-large-version=\"playerStore.playerUpdateLargeVersion(true)\"\n />\n <PlayerLarge\n v-else\n :player-error=\"playerError\"\n :display-alert-bar=\"displayAlertBar\"\n :percent-live-progress=\"percentLiveProgress\"\n :duration-live-position=\"durationLivePosition\"\n :listen-time=\"listenTime\"\n :hls-ready=\"hlsReady\"\n @stop-player=\"stopPlayer\"\n @change-player-large-version=\"playerStore.playerUpdateLargeVersion(false)\"\n />\n </template>\n </template>\n </section>\n</template>\n\n<script setup lang=\"ts\">\nimport {usePlayerLogic} from \"../../composable/player/usePlayerLogic\";\nimport { usePlayerStore } from \"../../../stores/PlayerStore\";\nimport { defineAsyncComponent, ref, computed, watch } from \"vue\";\nimport { useRoute } from \"vue-router\";\nconst PlayerVideo = defineAsyncComponent(\n () => import(\"./video/PlayerVideo.vue\"),\n);\nconst PlayerCompact = defineAsyncComponent(\n () => import(\"../player/PlayerCompact.vue\"),\n);\nconst PlayerLarge = defineAsyncComponent(\n () => import(\"../player/PlayerLarge.vue\"),\n);\n\n//Emits\nconst emit = defineEmits(['hide']);\n\n//Data\nconst displayWithTimeout= ref(false);\nconst forceHide= ref(false);\n\n//Composable\nconst {\n audioUrlToPlay,\n listenTime,\n playerError,\n percentLiveProgress, \n durationLivePosition,\n displayAlertBar,\n hlsReady, \n checkDelaytWithStitching, \n stopPlayer, \n onError, \n onTimeUpdate, \n onSeeked, \n onFinished, \n onPlay\n} = usePlayerLogic(forceHide);\nconst playerStore = usePlayerStore();\nconst route = useRoute();\n\n// Computed\nconst display = computed(() => { return \"STOPPED\" !== playerStore.playerStatus;});\nconst isNotVideoPage = computed(() => { return \"video\" !== route.name});\n\n// Watch\nwatch(()=>playerStore.playerHeight, async () => {\n emit(\"hide\", 0 === playerStore.playerHeight);\n});\nwatch(display, async () => {\n if (display.value) {\n displayWithTimeout.value = display.value;\n } else {\n setTimeout(() => {\n displayWithTimeout.value = display.value;\n }, 3000);\n }\n});\n\n//Methods\nfunction onHidden(): void {\n if (forceHide.value) {\n playerStore.playerPlay();\n forceHide.value = false;\n }\n}\nfunction onPause() {\n if (\"PLAYING\" === playerStore.playerStatus) {\n playerStore.playerChangeStatus(true);\n }\n}\n</script>\n\n<style lang=\"scss\">\n.octopus-app {\n .player-container {\n max-height: 94%;\n position: sticky;\n overflow: visible;\n z-index: 12;\n width: 100%;\n bottom: 0;\n display: flex;\n flex-direction: column;\n transition: height 1s;\n background: var(--octopus-player-color) !important;\n font-size: 1rem;\n\n .medium-text {\n font-size: 0.65rem;\n }\n\n .small-text {\n font-size: 0.5rem;\n }\n\n @media (width <= 960px) {\n .d-flex {\n flex-wrap: nowrap !important;\n }\n }\n }\n\n #ad-container {\n display: none;\n }\n}\n</style>\n","<template>\n <section\n id=\"octopus-player-component\"\n class=\"player-container\"\n :class=\"{ \n 'player-video': playerStore.playerVideo,\n 'overflow-hidden': !display\n }\"\n :style=\"{ height: playerStore.playerHeight }\"\n @transitionend=\"onHidden\"\n >\n <audio\n id=\"audio-player\"\n :src=\"!playerStore.playerLive && !playerStore.playerRadio ? audioUrlToPlay : undefined\"\n autoplay\n @timeupdate=\"onTimeUpdate\"\n @ended=\"onFinished\"\n @playing=\"onPlay\"\n @durationChange=\"onTimeUpdate\"\n @error=\"onError\"\n @seeked=\"onSeeked\"\n @pause=\"onPause\"\n @loadedmetadata=\"checkDelaytWithStitching\"\n />\n <div id=\"ad-container\" />\n\n <template v-if=\"displayWithTimeout\">\n\n <slot name=\"above\" />\n \n <PlayerVideo v-if=\"playerStore.playerVideo && isNotVideoPage\" />\n <template v-else-if=\"!playerStore.playerVideo\">\n <PlayerCompact\n v-if=\"!playerStore.playerLargeVersion\"\n :player-error=\"playerError\"\n :display-alert-bar=\"displayAlertBar\"\n :percent-live-progress=\"percentLiveProgress\"\n :duration-live-position=\"durationLivePosition\"\n :listen-time=\"listenTime\"\n :hls-ready=\"hlsReady\"\n @stop-player=\"stopPlayer\"\n @change-player-large-version=\"playerStore.playerUpdateLargeVersion(true)\"\n />\n <PlayerLarge\n v-else\n :player-error=\"playerError\"\n :display-alert-bar=\"displayAlertBar\"\n :percent-live-progress=\"percentLiveProgress\"\n :duration-live-position=\"durationLivePosition\"\n :listen-time=\"listenTime\"\n :hls-ready=\"hlsReady\"\n @stop-player=\"stopPlayer\"\n @change-player-large-version=\"playerStore.playerUpdateLargeVersion(false)\"\n />\n </template>\n </template>\n </section>\n</template>\n\n<script setup lang=\"ts\">\nimport {usePlayerLogic} from \"../../composable/player/usePlayerLogic\";\nimport { usePlayerStore } from \"../../../stores/PlayerStore\";\nimport { defineAsyncComponent, ref, computed, watch } from \"vue\";\nimport { useRoute } from \"vue-router\";\nconst PlayerVideo = defineAsyncComponent(\n () => import(\"./video/PlayerVideo.vue\"),\n);\nconst PlayerCompact = defineAsyncComponent(\n () => import(\"../player/PlayerCompact.vue\"),\n);\nconst PlayerLarge = defineAsyncComponent(\n () => import(\"../player/PlayerLarge.vue\"),\n);\n\n//Emits\nconst emit = defineEmits(['hide']);\n\n//Data\nconst displayWithTimeout= ref(false);\nconst forceHide= ref(false);\n\n//Composable\nconst {\n audioUrlToPlay,\n listenTime,\n playerError,\n percentLiveProgress, \n durationLivePosition,\n displayAlertBar,\n hlsReady, \n checkDelaytWithStitching, \n stopPlayer, \n onError, \n onTimeUpdate, \n onSeeked, \n onFinished, \n onPlay\n} = usePlayerLogic(forceHide);\nconst playerStore = usePlayerStore();\nconst route = useRoute();\n\n// Computed\nconst display = computed(() => { return \"STOPPED\" !== playerStore.playerStatus;});\nconst isNotVideoPage = computed(() => { return \"video\" !== route.name});\n\n// Watch\nwatch(()=>playerStore.playerHeight, async () => {\n emit(\"hide\", 0 === playerStore.playerHeight);\n});\nwatch(display, async () => {\n if (display.value) {\n displayWithTimeout.value = display.value;\n } else {\n setTimeout(() => {\n displayWithTimeout.value = display.value;\n }, 3000);\n }\n});\n\n//Methods\nfunction onHidden(): void {\n if (forceHide.value) {\n playerStore.playerPlay();\n forceHide.value = false;\n }\n}\nfunction onPause() {\n if (\"PLAYING\" === playerStore.playerStatus) {\n playerStore.playerChangeStatus(true);\n }\n}\n</script>\n\n<style lang=\"scss\">\n.octopus-app {\n .player-container {\n max-height: 94%;\n position: sticky;\n overflow: visible;\n z-index: 12;\n width: 100%;\n bottom: 0;\n display: flex;\n flex-direction: column;\n transition: height 1s;\n background: var(--octopus-player-color) !important;\n font-size: 1rem;\n\n .medium-text {\n font-size: 0.65rem;\n }\n\n .small-text {\n font-size: 0.5rem;\n }\n\n @media (width <= 960px) {\n .d-flex {\n flex-wrap: nowrap !important;\n }\n }\n }\n\n #ad-container {\n display: none;\n }\n}\n</style>\n"],"mappings":";;;;;;;;;;;;;;AAQA,IAAI,MAAU;AAEd,IAAM,sBAAsB;AAC5B,IAAa,iBAAiB,aAAyB;CAErD,MAAM,EAAE,YAAY,oBAAoB,eAAe,yBAAyB,uBAAuB;CAEvG,MAAM,eAA4C,IAAI,IAAI;CAC1D,MAAM,MAAe,IAAI,IAAI;CAC7B,MAAM,kBAAiE,IAAI,KAAA,CAAS;CACpF,MAAM,cAA2C,IAAI,KAAA,CAAS;CAC9D,MAAM,WAAU,IAAI,KAAK;CAGzB,MAAM,cAAc,eAAe;CACnC,MAAM,WAAW,YAAY;CAC7B,MAAM,YAAY,aAAa;CAC/B,MAAM,EAAE,UAAU,SAAS;CAE3B,SAAS,eAAe,KAAsB;EAC5C,IAAI,UAAU,UAAU,gBAAgB,cAAc,YAAY,YAAY,cAAc,WAAW,YAAY,aAAa,UAAU;GAGxI,MAAM,aAAa,IAAI,IAAI,YAAY,gBAAgB,IAAI,SAAS,IAAI,CAAC,CAAC;GAC1E,OAAO,IAAI,IAAI,KAAK,SAAS,IAAI,CAAC,CAAC,SAAS;EAC9C;EACA,OAAO;CACT;CAEA,SAAS,SAAe;EACtB,YAAY,mBAAmB,aAAa,WAAW,YAAY,YAAY;CACjF;CAEA,SAAS,YAAY;EACnB,IAAI,CAAC,YAAY,aACf;EAEF,qBAAqB;EACrB,YAAY,yBAAyB,YAAY,YAAY,MAAI,+BAA6B,YAAY,YAAY,SAAS;EAC/H,QAAQ;CACV;CAEA,SAAS,uBAAsB;EAC7B,IAAG,CAAC,YAAY,aACd;EAEF,IAAG,YAAY,YAAY,aAAa,MAAM,CAAC,CAAC,KAAK,MAAM,YAAY,YAAY,aAAa,GAAG,GAAG,IAAE,qBACtG;EAEF,YAAY,YAAY,YAAYA,qBAAa,OAAO;CAC1D;CAEA,SAAS,WAAW;EAClB,IAAI,CAAC,YAAY,qBACf;EAEF,YAAY,yBAAyB,GAAG,SAAS,OAAO,OAAO,YAAY,oBAAoB,YAAY;EAC3G,QAAQ;CACV;CAEA,eAAe,UAAyB;EACtC,IAAI;GACF,IAAG,SAAO,aAAa,OACrB,aAAa,QAAQ,SAAS,eAAe,cAAc;GAE7D,IAAI,SAAS,aAAa,SAAS,CAAC,YAAY,cAAc;IAC5D,WAAW,SAAS,GAAI;IACxB;GACF;GACA,MAAM,KAAK,UAAU,UAAU,YAAY;GAC3C,MAAM,YAAY,GAAG,QAAQ,SAAS,IAAI;GAC1C,MAAM,WAAW,GAAG,QAAQ,QAAQ,IAAI;GACxC,IACE,aAAa,MAAM,YAAY,+BAA+B,KAC9D,CAAC,YACD,CAAC,WACD;IACA,IAAI,MAAM,YAAY;IACtB,IAAG,eAAe,GAAG,GAAG;KACtB,IAAI,IAAI,SAAS,GAAG,GAClB,OAAO,mBAAiB,UAAU,UAAU;UAE5C,OAAO,mBAAiB,UAAU,UAAU;IAEhD;IACA,aAAa,MAAM,MAAM;IACzB,MAAM,mBAAmB;IACzB,SAAS,QAAQ;IACjB,MAAM,aAAa,MAAM,KAAK;IAC9B,OAAO;GACT,OACE,MAAM,QAAQ;EAElB,SAAQ,GAAG;GACT,QAAQ,MAAM,CAAC;GACf,WAAW;EACb;CACF;CAEA,SAAS,aAAY;EACnB,IAAG,cAAY,YAAY,gBAAgB,KAAA,MAAY,gBAAgB,OACrE,gBAAgB,QAAQ,iBAAiB;GACvC,SAAS,QAAQ;GACjB,QAAQ;GACR,gBAAgB,QAAQ,KAAA;EAC1B,GAAG,GAAI;CAEX;CAEA,eAAe,UAAU;EACvB,IAAI,SAAS,KACX,MAAM,OAAO,SAAS,CAAC,MAAM,eAAe;GAC1C,MAAM,WAAW;EACnB,CAAC;EAEH,IAAI,CAAC,IAAI,YAAY,GACnB,MAAM,IAAI,MAAM,yBAAyB;EAE3C,IAAI,QAAQ,IAAI,IAAI;GAClB,eAAe;GACf,sBAAqB;GACrB,kBAAiB;GACjB,iBAAgB;GAEhB,WAAW,KAAqB,QAAgB;IAC9C,IAAI,eAAe,GAAG,GACpB,IAAI,iBAAiB,iBAAiB,YAAW,UAAU,UAAU,WAAW;GAEpF;EACF,CAAC;EACD,IAAI,MAAM,GAAG,IAAI,OAAO,iBAAiB,YAAY;GACnD,MAAM,mBAAmB;GACzB,SAAS,QAAQ;GACjB,IAAG,SAAO,SAAS,OACjB;GAEF,iBAAiB;IACf,YAAY,QAAS,aAAa,MAA2B,KAAK;IAClE,YAAY,MAAM,WAAU;KAC1B,YAAY,QAAQ,KAAA;KACpB,OAAO;IACT,CAAC,CAAC,CAAC,OAAO,MAAI;KACZ,QAAQ,MAAM,CAAC;KACf,WAAW;KACX,YAAY,QAAQ,KAAA;IACtB,CAAC;GACH,GAAG,GAAG;EACR,CAAC;EACD,IAAI,MAAM,GAAG,IAAI,OAAO,OAAO,OAAO,MAAc,SAAa;GAE/D,IAAI,KAAK,YAAY,sBAAsB;IAEzC,QAAQ,KAAK,uBAAuB;IACpC,YAAY,eAAe,aAAa;IAExC,IAAI,MAAM,QAAQ;IAElB,WAAW,SAAS,GAAG;IACvB;GACF;GACA,QAAQ,MAAM,uBAAuB,OAAO,QAAQ,KAAK,SAAS,IAAI;GACtE,IAAI,KAAK,SAAS,KAAK,SAAS,IAAI,WAAW,aAAa;IAC1D,QAAQ,KAAK,sBAAsB;IACnC,IAAI,MAAM,kBAAkB;GAC9B;GACA,SAAS,QAAQ;GACjB,IAAG,KAAA,MAAY,YAAY,SAAS,KAAK,OACvC,WAAW;EAEf,CAAC;EACD,IAAI,MAAM,WAAW,YAAY,YAAY;EAC7C,IAAI,MAAM,YAAY,aAAa,KAAyB;CAC9D;CAEA,eAAe,aAA4B;EACzC,aAAa,gBAAgB,KAAK;EAClC,gBAAgB,QAAQ,KAAA;EACxB,IAAG,SAAO,aAAa,OACrB;EAEF,aAAa,QAAQ;EACrB,MAAM,QAA4B,SAAS,eAAe,cAAc;EACxE,IAAI,SAAS,IAAI,OAAO;GACtB,IAAI,MAAM,QAAQ;GAClB,IAAI,QAAQ;EACd,OACE,MAA4B,MAAM;EAEpC,MAA4B,MAAM;CACpC;CAED,OAAO;EACJ;EACA;EACA;EACA;EACA;EACA;EACA;CACH;AACD;;;AChNA,SAAS,WAAW,KAAa,OAAe,UAAsC;CACpF,MAAM,eAAe,SAAS,qBAAqB,MAAM,CAAC,CAAC,MAAM,SAAS,iBAC1E,gBAAgB,SAAS,cAAc,QAAQ;CAC/C,cAAc,OAAO;CACrB,cAAc,MAAM;CACpB,cAAc,QAAQ;CACtB,cAAc,iBAAiB,QAAQ,WAAW;EAChD,IAAG,YAAY,OAAO,aAAa,YACjC,SAAS,IAAI;CAEjB,GAAG,KAAK;CACR,cAAc,iBAAiB,SAAS,WAAW;EACjD,aAAa,YAAY,aAAa;EACtC,IAAG,YAAY,OAAO,aAAa,YACjC,SAAS,KAAK;CAElB,GAAG,KAAK;CACR,aAAa,aAAa,eAAe,aAAa,UAAU;AAClE;;;ACbA,IAAI;AACJ,IAAI;AACJ,IAAI;AACJ,IAAI;AACJ,IAAa,sBAAoB;CAC/B,MAAM,YAAY,IAAI,KAAK;CAC3B,MAAM,oBAAoB,IAAI,KAAK;CACnC,MAAM,iBAA6C,IAAI,IAAI;CAC3D,MAAM,gBAAgB,IAAI,KAAK;CAC/B,MAAM,yBAAyB,IAAI,EAAE;CACrC,MAAM,mBAA0C,IAAI,KAAA,CAAS;CAE7D,MAAM,cAAc,eAAe;CACnC,MAAM,YAAY,aAAa;CAE/B,YAAY,UAAU,kBAAkB;EAAC,wBAAwB;CAAE,CAAC;CACpE,YAAY,UAAU,mBAAmB;EAAC,YAAY;CAAE,CAAC;CAEzD,SAAS,aAAY;EACnB,IAAG,CAAC,UAAU,OAAM;GAClB,UAAU,QAAQ;GAClB,QAAQ;EACV,OACE,cAAc;CAElB;CAEA,SAAS,UAAS;EAChB,WAAW,gDAAgD,OAAO,gBAAwB;GACxF,IAAG,aACD,cAAc;EAElB,CAAC;CACH;CAEA,SAAS,gBAAsB;EAC7B,QAAQ,IAAI,gBAAgB;EAC5B,2BAA2B;EAC3B,IAAG,CAAC,sBAAsB,CAAC,WACzB;CAEJ;CAEA,SAAS,YAAY,SAAgB;EACnC,cAAc,QAAQ;EACtB,QAAQ,IAAI,gBAAc,OAAO;EACjC,qBAAqB,OAAO;EAC5B,UAAU,WAAW,UAAU;CACjC;CAEA,SAAS,6BAAiC;EACxC,IAAG,oBAAoB;EACvB,eAAe,QAAS,SAAS,eAAe,cAAc;EAC9D,IAAG,SAAO,eAAe,OAAO;EAChC,qBAAqB,IAAI,OAAO,IAAI,mBAAmB,SAAS,eAAe,cAAc,GAAG,eAAe,KAAK;EACpH,mBAAmB,WAAW;EAC9B,oBAAoB;CACtB;CAEA,SAAS,sBAA0B;EACjC,YAAY,IAAI,OAAO,IAAI,UAAU,kBAAkB;EACvD,aAAa;EACb,UAAU,iBACR,OAAO,IAAI,sBAAsB,KAAK,oBACtC,oBACA,KACF;EACA,UAAU,iBACR,OAAO,IAAI,aAAa,KAAK,UAC7B,WACA,KACF;CACF;CAEA,SAAS,qBAAqB,SAAqB;EACjD,aAAa,IAAI,OAAO,IAAI,WAAW;EACvC,WAAW,kBAAkB,IAAI;EACjC,WAAW,WAAW;CACxB;CAEA,SAAS,mBAAmB,uBAAyD;EACnF,MAAM,uBAAuB,IAAI,OAAO,IAAI,qBAAqB;EACjE,qBAAqB,8CAA8C;EACnE,aAAa,sBAAsB,cAAc,eAAe,OAAO,oBAAoB;EAC3F,eAAe;CACjB;CAEA,SAAS,iBAAgB;EACvB,QAAQ,IAAI,eAAe;EAC3B,oBAAoB;EACpB,IAAI;GACF,WAAW,KAAK,GAAG,GAAG,OAAO,IAAI,SAAS,MAAM;GAChD,WAAW,MAAM;EACnB,SAAS,SAAS;GAChB,QAAQ,IAAI,OAAO;GACnB,YAAY,mBAAmB,KAAK;GACpC,iBAAiB;EACnB;CACF;CAEA,SAAS,sBAAqB;EAC5B,WAAW,iBAAiB,OAAO,IAAI,aAAa,KAAK,UAAS,SAAS;EAC3E,WAAW,iBAAiB,OAAO,IAAI,QAAQ,KAAK,yBAAyB,uBAAuB;EACpG,WAAW,iBAAiB,OAAO,IAAI,QAAQ,KAAK,0BAA0B,wBAAwB;EACtG,MAAM,SAAS;GACb,OAAO,IAAI,QAAQ,KAAK;GAAmB,OAAO,IAAI,QAAQ,KAAK;GACnE,OAAO,IAAI,QAAQ,KAAK;GAAU,OAAO,IAAI,QAAQ,KAAK;GAC1D,OAAO,IAAI,QAAQ,KAAK;GAAQ,OAAO,IAAI,QAAQ,KAAK;EAC1D;EACA,KAAK,MAAM,SAAS,QAClB,WAAW,iBAAiB,OAAO,QAAQ,SAAS;CAExD;CAEA,SAAS,UAAU,cAAuC;EACxD,QAAQ,IAAI,aAAa,SAAS,CAAC;EACnC,iBAAiB;CACnB;CAEA,SAAS,mBAAkB;EACzB,IAAG,CAAC,YAAY;EAChB,QAAQ,IAAI,iBAAiB;EAC7B,YAAY,QAAQ;EACpB,aAAa;EACb,UAAU,gBAAgB;EAC1B,kBAAkB,QAAO;EACzB,cAAc,QAAQ;CACxB;CAEA,SAAS,UAAU,SAA6B;EAC9C,MAAM,KAAK,QAAQ,MAAM;EACzB,IAAG,IACD,UAAU,gBAAgB,EAAE;EAE9B,QAAQ,QAAQ,MAAhB;GACE,KAAK,OAAO,IAAI,QAAQ,KAAK;IAC3B,uBAAuB,QAAQ,YAAY;IAC3C,IAAI,CAAC,GAAG,SAAS,GAAG;KAClB,YAAY,mBAAmB,KAAK;KACpC,cAAc,QAAQ;IACxB;IACA;GACF,KAAK,OAAO,IAAI,QAAQ,KAAK;IAC3B,QAAQ,IAAI,uBAAqB,uBAAuB,KAAK;IAC7D,IAAG,cAAY,uBAAuB,OAAM;KAC1C,UAAU,iBAAiB,IAAI;KAC/B,WAAW,MAAM;IACnB;IACA;GACF,KAAK,OAAO,IAAI,QAAQ,KAAK,aAAY;IACvC,cAAc,QAAQ;IACtB,MAAM,iBAAiB,QAAQ,UAAU;IACzC,UAAU,sBAAsB,eAAe,UAAS,eAAe,WAAW;IAClF,UAAU,oBACR,UAAU,UAAU,kBAAkB,MAAK,IAC3C,WAAW,oBAAoB,GAC/B,KAAK,KAAK,UAAU,UAAU,kBAAkB,IAAI,eAAe,WAAW,CAAC;IACjF;GACF;EACF;CACF;CAEA,SAAS,0BAA0B;EACjC,UAAU,kBAAkB,IAAI;EAChC,YAAY,mBAAmB,IAAI;CACrC;CAEA,SAAS,2BAA2B;EAClC,IAAI,CAAC,kBAAkB,OACrB,YAAY,mBAAmB,KAAK;EAEtC,eAAe;GACb,UAAU,kBAAkB,KAAK;GACjC,UAAU,qBAAqB,KAAK;EACtC,CAAC;CACH;CAEA,SAAS,wBAA4B;EACnC,IAAI,UAAU,aAAa;EAC3B,kBAAkB,QAAQ;EAC1B,WAAW,gBAAgB;CAC7B;CAEA,SAAS,0BAAyB;EAChC,IAAG,CAAC,YAAY;EAChB,IAAG,UAAU,YAAW;GACtB,WAAW,MAAM;GACjB,iBAAiB,QAAQ,MAAM,CAAC,CAAC,YAAY;EAC/C,OAAK;GACH,WAAW,OAAO;GAClB,IAAG,CAAC,UAAU,kBAAiB,MAAM,CAAC,CAAC,KAAK,MAAM,iBAAiB,KAAK,GAAG,GAAG,IAAE,GAC9E,UAAU,qBAAqB,IAAI;EAEvC;CACF;CAEA,SAAS,cAAa;EACpB,IAAG,UAAU,aACX,WAAW,KAAK;CAEpB;CAGD,OAAO;EACJ;EACA;EACA;EACA;EACA;CACH;AACD;;;ACzMA,IAAa,2BAAyB;CAEpC,MAAM,EAAE,eAAe,YAAY,aAAY,kBAAkB,0BAA0B,cAAc;CAEzG,MAAM,gBAAiE,IAAI,KAAA,CAAS;CAEpF,MAAM,QAAQ,SAAS;CACvB,MAAM,cAAc,eAAe;CACnC,MAAM,YAAY,aAAa;CAC/B,MAAM,iBAAgB,kBAAkB;CAExC,MAAM,gCAAgC,eAAe;EACnD,OAAO,YAAY,aAAa,iBAAiB;CACnD,CAAC;CAGD,YAAY,YAAY,2BAA2B;EACjD,IAAG,YAAY,uBAAuB,YAAY,sBAAsB,KAAK,CAAC,+BAA+B,GAAG;EAChH,eAAe;CACjB,CAAC;CAGD,YAAY,YAAY,4BAA4B;EAClD,IAAG,CAAC,+BAA+B,GAAG;EACtC,IAAG,CAAC,cAAc,SAAS,sBAAsB,GAAE;GACjD,YAAY,UAAU,oBAAoB,YAAY,uBAAqB,EAAE,CAAC,UAAU,gBAAgB,CAAC,OAAO;GAChH,UAAU,sBAAsB,UAAU,kBAAgB,CAAC;EAC7D;CACF,CAAC;CAGD,MAAM,qCAAqC;EACzC,IAAG,CAAC,8BAA8B,OAChC;EAEF,oBAAoB;CACtB,GAAG,EAAE,WAAW,KAAK,CAAC;CAGtB,gBAAgB;EACd,UAAU,2BAA2B,WAAS,MAAM,MAAM,IAAI;CAChE,CAAC;CAED,SAAS,iCAAwC;EAC/C,OAAO,UAAU;CACnB;CAEA,SAAS,sBAAqB;EAC5B,mBAAmB;EACnB,MAAM,gBAAgB,MAAM,8BAA8B,KAAK,CAAC,CAAC,KAAK,MAAM,GAAG,aAAa;EAC5F,QAAQ,IAAI,mBAAiB,aAAa;EAC1C,IAAG,gBAAgB,GACjB;EAEF,cAAc,QAAQ,iBAAiB;GACrC,qBAAqB;EACvB,GAAG,aAAa;CAClB;CAEA,eAAe,uBAAsB;EAEnC,IAAG,aAAW,YAAY,cAAc;EACxC,MAAM,UAAU,MAAM,WAAW,YAAY,aAAa,iBAAiB,OAAM,iBAAiB,YAAY,aAAa,iBAAiB,WAAW,CAAC;EACxJ,QAAQ,IAAI,aAAW,OAAO;EAC9B,YAAY,OAAO;CACrB;CAEA,SAAS,qBAAqB;EAC5B,cAAc,cAAc,KAA0B;EACtD,cAAc,QAAQ,KAAA;CACxB;CAEA,SAAS,wBAAuB;EAC9B,IAAG,CAAC,YAAY,uBAAuB,CAAC,UAAU,oBAAoB,YAAY,oBAAoB,GAAG,UAAU,kBAAkB,OAAO;EAC5I,OAAO,UAAU,oBAAoB,YAAY,oBAAoB,CAAC,UAAU,gBAAgB,EAAE,WAAW,YAAY;CAC3H;CAEA,eAAe,iBAAgB;EAC7B,iBAAiB;EACjB,IAAG,QAAM,YAAY,qBAAqB;EAC1C,WAAW;EACX,MAAM,qBAAqB;CAC7B;CAEA,eAAe,uBAAsB;EACnC,IAAG,CAAC,YAAY,uBAAuB,CAAC,YAAY,iBAAiB,YAAY,uBAAuB,UAAU,oBAAoB,YAAY,sBAChJ;EAEF,MAAM,iBAAiB,MAAMC,mBAAW,UAAiC;GACvE,KAAI;GACJ,MAAM,mBAAmB,YAAY;GACrC,WAAU;EACZ,CAAC;EACD,IAAG,CAAC,kBAAkB,qBAAmB,eAAe,QAAQ,QAAO;GACrE,UAAU,0BAA0B,YAAY,qBAAqB,CAAC,CAAC;GACvE;EACF;EACA,MAAM,yBAAyB,KAAK,OAAO,YAAY,eAAe,YAAU,KAAK,GAAI;EAEzF,MAAM,sBAAsB,MAAM,yBADZ,uBAAuB,eAAe,OAAO,UAAU,sBAClB,GAAgB,wBAAwB,eAAe,OAAO,qBAAqB,eAAe,OAAO,eAAe;EACnL,UAAU,0BAA0B,YAAY,qBAAqB,mBAAmB;CAC1F;CAEA,SAAS,uBAAuB,UAAiC,iBAA2C;EAC1G,MAAM,cAAiC,CAAC;EACxC,IAAG,SAAS,MAAM,YAA0B;GAAC,OAAO,gBAAc,QAAQ;EAAG,CAAC,GAC5E,OAAO,CAAC;EAEV,KAAK,MAAM,WAAW,UAAU;GAC9B,IAAG,CAAC,QAAQ,KAAK;GACjB,IAAI,UAAU;GACd,IAAG,WAAS,QAAQ,OAAO,WACzB,UAAU;QACN,IAAG,UAAQ,QAAQ,OAAO,WAAU;IACxC,MAAM,SAAS,QAAQ,OAAO,UAAU;IACxC,QAAQ,QAAQ,OAAO,MAAvB;KACE,KAAK;MAAe,UAAU,SAAS;MAAM;KAC7C,KAAK;MAAU,UAAU,KAAK,MAAM,SAAS,EAAE;MAAG;KAClD,KAAK;MAAW,UAAU,KAAK,MAAO,SAAS,kBAAmB,GAAG;MAAG;KACxE,SAAS,UAAU;IACrB;GACF;GACA,YAAY,KAAK;IACf,WAAW,QAAQ;IACnB,QAAQ,QAAQ,OAAO;IACd;IACT,SAAS;GACX,CAAC;EACH;EACA,OAAO,YAAY,MAAM,GAAe,MAAkB;GACxD,IAAI,EAAE,UAAU,EAAE,SAChB,OAAO;GAET,OAAO,EAAE,UAAU,EAAE,UAAU,KAAK;EACtC,CAAC;CACH;CAEA,eAAe,yBAAyB,gBAAmC,iBAAyB,qBAA4B,iBAAmD;EACjL,MAAM,cAAiC,CAAC;EACxC,IAAI,mBAAmB;EACvB,KAAI,MAAM,cAAc,gBACtB,QAAQ,WAAW,QAAnB;GACE,KAAK;IACH,YAAY,KAAK,MAAM,cAAc,UAAU,CAAC;IAChD,mBAAmB;IACnB;GACF,KAAK;IACH,IAAI,WAAW,UAAU,kBAAkB,iBAEzC;IAEF,IAAI,oBAAoB,KAAK,WAAW,UAAU,mBAAmB,qBAEnE;IAEF,YAAY,KAAK,MAAM,cAAc,UAAU,CAAC;IAChD,mBAAmB,WAAW;IAC9B;GACF,KAAK;IACH,IAAI,oBAAoB,KAAK,mBAAmB,kBAAkB,qBAEhE;IAEF,YAAY,KAAK,MAAM,cAAc,UAAU,CAAC;EAGpD;EAEF,OAAO;CACT;CAEA,eAAe,cAAc,YAA4C;EACvE,WAAW,UAAU,MAAM,WAAW,WAAW,WAAW,CAAC;EAC7D,OAAO;CACT;CAEA,eAAe,WAAW,KAAa,SAAiC;EACtE,MAAM,UAAU,sCAAoC;EACpD,IAAI,WAA0B,CAAC;EAC/B,IAAG,YAAY,eAAe,MAAM,QAE9B;OAAA,YAAS,MADY,eAAe,kBAAkB,YAAY,cAAc,aAAa,EAAE,EAAA,CAC3E,0BACtB,WAAW,YAAY,cAAc,KAAK,KAAK,MAAM;IACnD,OAAO,SAAS;GAClB,CAAC;EAAA;EAGL,MAAM,aAAaC,oBAAY,mBAAmB;GAChD,SAAS,WAAW;GACpB,SAAQ,SAAS;GACR;EACX,CAAC;EACD,OAAO,UAAU,MAAM,WAAW,SAAS;CAC7C;CAED,OAAO,EACJ,sBACH;AACD;;;;AC1MA,IAAM,+BAA+B,IAAiB,IAAI;AAE1D,IAAa,4BAA0B;CAEnC,MAAM,cAAc,eAAe;CACnC,MAAM,YAAY,aAAa;CAC/B,MAAM,EAAE,4BAA4B,eAAe;CAEnD,eAAe,2BAA0B;EACrC,YAAY,2BAA2B,CAAC;EACxC,IAAG,UAAU,sBACT;EAGJ,MAAM,cAAc,SAAS,cAAc,eAAe;EAC1D,IAAI,CAAC,YAAY,oBAAoB,CAAC,eAAe,CAAC,YAAY,iBACpE,YAAY,YAAY,YAAY,cAAc,WAAW,MAAO,GAC9D;EAGJ,MAAM,iBAAiB,MAAMC,mBAAW,UAAiC;GACrE,KAAI;GACJ,MAAK,mBAAmB,YAAY,cAAc;GAClD,WAAU;EACd,CAAC;EAOD,IAH8B,eAAe,OAAO,SAC/C,QAAO,YAAW,CAAE,CAAC,OAAO,MAAM,CAAC,CAAC,SAAS,QAAQ,OAAO,SAAS,CAAE,CAAC,CACxE,SAAS,GACa;GACvB,QAAQ,KAAK,4DAA4D;GACzE,YAAY,uBAAuB;GACnC,YAAY,uBAAuB;GACnC;EACJ;EAMA,IAHe,eAAe,OAAO,SAChC,QAAO,YAAW,QAAQ,OAAO,cAAc,KAAK,CAAC,CACrD,SAAS,GAIV,YAAY,2BAA4B,YAAY,WAAY,YAAY,cAAc,WAAW,GAAK;CAElH;CAEA,eAAe,mBAAkC;EAC7C,6BAA6B,QAAQ;EACrC,IAAI,CAAC,YAAY,eAAe;GAC5B,YAAY,uBAAuB;GACnC;EACJ;EAGA,MAAM,YAAY,YAAY,cAAc;EAC5C,MAAM,kBAAkB,MAAM,iBAAiB,gBAAgB,SAAS;EACxE,MAAM,EAAE,OAAO,cAAc,MAAM,wBAAwB,eAAe;EAK1E,MAAM,kBAAkB,SAAS,MAFZ,iBAAiB,eAAe,WAAW,KAAK,CAE9B;EACvC,MAAM,cACF,kBAAkB,EAAE,EAAE,cAAc,IAAI,gBAAgB,EAAE,CAAC,OAAO;EACtE,IAAG,CAAC,iBACA;EAEJ,YAAY,uBAAuB;GAC/B,SAAS;GACI;GACb,OAAO;EACX,CAAC;EAED,IAAI,cAAc,KAAA,KAAa,UAAU,WAAW;GAChD,6BAA6B,QAAQ;GAKrC,MAAM,kBAAkB,SAAS,MAFZ,iBAAiB,eAAe,WAAW,WAAW,IAAI,CAExC;GACvC,MAAM,cACF,kBAAkB,EAAE,EAAE,cAAc,IAAI,gBAAgB,EAAE,CAAC,OAAO;GACtE,IAAG,CAAC,iBACA;GAEJ,YAAY,uBAAuB;IAC/B,SAAS,YAAY,kBAAkB;IACvC;IACA,OAAO;GACX,CAAC;GACD,6BAA6B,QAAQ;EACzC;CACJ;CAEA,SAAS,SAAS,YAAoB;EAClC,IAAI,OAAO,cAAc,UACrB;EAEJ,IAAI,cAAc,MACd;EAGJ,OAAO,mBAAmB,UAAU;CACxC;CAEA,SAAS,uBAAuB,aAAqB;EACjD,IAAG,CAAC,YAAY,kBAAkB,MAAM,QACpC;EAGJ,KADmB,YAAY,iBAAiB,MAAM,YAAY,iBAAiB,QAAQ,EAAE,aAAa,KAAK,YAAY,wBAC1G,aACb,YAAY,iBAAiB,cAAc,YAAY,iBAAiB,MAAM,YAAY,kBAAkB,QAAQ,EAAE,QAAQ,CAAC;EAEnI,KACK,YAAY,iBAAiB,MAAM,YAAY,iBAAiB,QAAQ,EAAE,WAAU,YAAY,YAAY,uBAAsB,aACrI;GACE,YAAY,iBAAiB,WAAW;GACxC,YAAY,iBAAiB,cACzB,YAAY,kBAAkB,MAAM,YAAY,iBAAiB,QAAQ,EAAE,QAAQ,CAAC;EAC5F;CACJ;CAEA,SAAS,mBAAmB,aAAqB;EAC7C,IAAI,YAAY,kBAAkB;GAC9B,IAAI,aAAa;GACjB,OAAO,eAAc,YAAY,iBAAiB,MAAM,WAAW,EAAE,WAAW,YAAY,YAAY,sBACpG,cAAc;GAElB,YAAY,iBAAiB,UAAU;EAC3C;CACJ;CAEA,OAAO;EACH;EACA;EACA;EACA;EACA;CACJ;AACJ;;;ACxJA,IAAY,sBAAL,yBAAA,qBAAA;CACL,oBAAA,aAAA;CACA,oBAAA,aAAA;CACA,oBAAA,YAAA;;AACF,EAAA,CAAA,CAAA;;;ACcA,IAAa,kBAAkB,cAAqC;CAClE,MAAM,WAAW,IAAI,KAAK;CAE1B,MAAM,EAAE,YAAY,QAAQ,eAAe,sBAAsB,UAAU,YAAY,cAAa,cAAc,QAAQ;CAC1H,MAAM,EAAE,0BAA0B,mBAAmB;CACrD,MAAM,EAAE,kBAAkB,wBAAwB,oBAAoB,6BAA6B,oBAAoB;CAEvH,MAAM,cAAa,IAAI,KAAK;CAC5B,MAAM,cAAa,IAAI,KAAK;CAC5B,MAAM,sBAAqB,IAAI,CAAC;CAChC,MAAM,uBAAsB,IAAI,CAAC;CACjC,MAAM,kBAAiB,IAAI,KAAK;CAChC,MAAM,iBAAgB,IAAI,EAAE;CAG5B,MAAM,cAAc,eAAe;CACnC,MAAM,eAAe,gBAAgB;CACrC,MAAM,YAAY,aAAa;CAC/B,MAAM,YAAY,aAAa;CAE/B,YAAU,YAAY,GAAG,YAAY;EACnC,YAAY,QAAQ;EAIpB,IAAI,WAAW;EACf,IACE,YAAY,eACZ,CAAC,YAAY,iBACb,YAAY,eACZ,CAAC,YAAY,cAAc,aAAa,cACxC,YAAY,OACZ;GACE,WAAW;GAIX,MAAM,UAAU,YAAY;GAC5B,IAAI,WAAW,CAAC,QAAQ,aAAa,YAAY;IAC/C,IAAI,eAAkC;IACtC,IAAI,QAAQ,cACV,eAAe,QAAQ;SAClB,IAAI,oBAAoB,SAE7B,eAAe,MAAM,gBAAgB,IAAI,QAAQ,cAAwB;IAE3E,IAAI,aAAa,YAAY,oBAAoB,SAC/C,WAAW;GAEf;EACJ;EAEA,IAAI,UAAU;GACZ,MAAM,WAAW,MAAM,WAAW,iBAAiB,YAAY,cAAc,WAAW,sBAAsB,CAAC;GAC/G,cAAc,SAAS,WAAW,SAAS,CAAC;GAC5C,eAAe,QAAQ,SAAS;EAClC,OACE,eAAe,QAAQ,YAAY;CAEvC,CAAC;CAED,YAAU,YAAY,eAAe,YAAY;EAC/C,aAAa;EACb,iBAAiB;CACnB,GAAG,EAAC,MAAK,KAAI,CAAC;CAEd,YAAU,YAAY,YAAY,OAAO,GAAG,YAAY;EACtD,IAAG,YAAY,aACb;EAEF,SAAS,YAAY;GACnB,SAAS,QAAQ;GACjB,aAAa,YAAU,KAAA,CAAS;GAChC,SAAS;EACX,CAAC;CACH,GAAG,EAAC,MAAK,KAAI,CAAC;CAEd,YAAU,YAAY,aAAa,OAAO,GAAG,aAAa;EACxD,SAAS,YAAY;GACnB,SAAS,QAAQ;GACjB,aAAa,aAAa,KAAA,CAAS;GACnC,UAAU;EACZ,CAAC;CACH,CAAC;CAED,YAAU,YAAY,cAAc,YAAY;EAC9C,MAAM,cACJ,SAAS,cAAc,eAAe;EACxC,IAAI,CAAC,aAAa;EAClB,IAAI,YAAY,cAAc,CAAC,SAAS,OAItC;EAEF,IAAI,aAAa,YAAY,gBAAgB,YAAY,aAAa;GACpE,YAAY,YAAY,gBAAgB,MAAM,CAAC,CAAC,YAAY;GAC5D,SAAS,QAAQ;GACjB,aAAa;GACb,WAAW;EACb,OAAO,IAAI,aAAa,YAAY,cAClC,YAAY,MAAM;OACb,IAAI,cAAc,YAAY,gBAAgB,YAAY,aAC/D,gBAAgB;OACX,IAAI,cAAc,YAAY,cACnC,YAAY,KAAK;CAErB,CAAC;CAED,SAAS,kBAAiB;EACxB,IAAG,CAAC,YAAY,aACd;EAEF,IAAI,YAAY,YAAY,QAAQ;GAClC,IAAG,UAAU,eAAe,CAAC,UAAU,gBACrC,YAAY,YAAY,gBAAgB,MAAM,CAAC,CAAC,YAAY;GAE9D,UAAU;EACZ,OACE,YAAY,YAAY,SAAS;CAErC;CAEA,SAAS,sBAAsB,UAAgC;EAC7D,IAAI,CAAC,YAAY,eACf,OAAO,CAAC;EAGV,MAAM,aAAyB;GAC7B,QAAQ;GACR,UAAU,UAAU;EACtB;EACA,IAAI,UAAU,YACZ,WAAW,gBAAgB,UAAU;EAEvC,IAAI,aAAa,YACf,WAAW,UAAU,aAAa;EAEpC,IACE,YACA,cAAc,YAAY,cAAc,aAAa,WACrD,UAAU,UAAU,aAEpB,WAAW,eAAe,UAAU,UAAU;EAEhD,OAAO;CACT;CAEA,SAAS,cAAsB;EAC7B,IAAI,YAAY,aACd,OAAO,YAAY,YAAY,YAAY;EAE7C,IAAI,CAAC,YAAY,iBAAiB,YAAY,aAC5C,OAAO;EAET,IACE,CAAC,YAAY,cAAc,aAAa,cACxC,iBAAiB,YAAY,cAAc,kBAE3C,OAAO,YAAY,cAAc;EAEnC,IAAI,YAAY,OACd,OAAO,YAAY,cAAc;EAEnC,OAAO,YAAY,cAAc,YAAY,UAAQC,oBAAY,mBAAmB,sBAAsB,GAAG,IAAI;CACnH;CAEA,SAAS,aAAa,QAAM,OAAa;EACvC,cAAc,IAAI;EAClB,YAAY,QAAQ;EACpB,IAAI,SAAS,YAAY,cAAc,YAAY,aACjD,WAAW;CAEf;CAEA,SAAS,aAAmB;EAC1B,YAAY,WAAW;CACzB;CAEA,SAAS,UAAgB;EACvB,IACE,YAAY,iBACZ,OAAO,eAAe,SACtB,CAAC,YAAY,OAEb,YAAY,QAAQ;OACf,IACJ,YAAY,iBAAiB,OAAO,eAAe,SACpD,YAAY,aAEZ,YAAY,QAAQ;CAExB;CAEA,SAAS,wBAAwB,aAA+B;EAC9D,IAAI,iBAAiB,YAAY;EACjC,IAAI,aAAa,gBAAgB;GAC/B,MAAM,WAAW,YAAY;GAC7B,IAAI,YAAY,SAAS,SAAS,GAChC,IAAI;IACF,iBAAiB,SAAS,IAAI,SAAS,SAAS,CAAC;GACnD,SAAS,GAAG;IACV,QAAQ,MAAM,CAAC;GACjB;QAEA,iBAAiB,YAAY;EAEjC;EACA,OAAO;CACT;CAEA,SAAS,oBAAoB,gBAAwB,aAAqB;EACxE,gBAAgB,QAAQ;EACxB,oBAAoB,QAAQ;EAC5B,YAAY,oBAAoB,cAAc,gBAAgB,cAAc;EAC5E,uBAAuB,WAAW;CACpC;CAEA,SAAS,iBAAiB,gBAAwB,aAAqB;EACrE,IAAI,CAAC,YAAY,YACf;EAEF,MAAM,oBAAoB,YAAY,WAAW,WAAW;EAC5D,IAAI,oBAAoB,gBAAgB;GACtC,gBAAgB,QAAQ;GACxB,oBAAoB,QAAS,iBAAiB,oBAAqB;GACnE,YAAY,oBACV,cAAc,mBACd,iBACF;EACF,OAAO;GACL,oBAAoB,QAAQ;GAC5B,gBAAgB,QAAQ;GACxB,qBAAqB,QAAS,oBAAoB,iBAAkB;GACpE,YAAY,oBAAoB,cAAc,gBAAgB,cAAc;EAC9E;CACF;CAEA,SAAS,aAAa,OAAoB;EACxC,IAAI,YAAY,aACd;EAEF,MAAM,cAAc,MAAM;EAC1B,IAAI,YAAY,iBAAiB,YAAY,YAC3C,qBAAqB,YAAY,WAAW;EAE9C,MAAM,iBAAiB,wBAAwB,WAAW;EAC1D,IAAI,CAAC,gBAAgB;EACrB,IAAI,CAAC,YAAY,aAAa;EAC9B,IAAI,CAAC,YAAY,YAAY;GAC3B,oBAAoB,gBAAgB,YAAY,WAAW;GAC3D;EACF;EACA,iBAAiB,gBAAgB,YAAY,WAAW;CAC1D;CAEA,SAAS,SAAS,OAAoB;EAEpC,MAAM,cADc,MAAM,cACM;EAChC,mBAAmB,WAAW;CAChC;CAEA,SAAS,aAAmB;EAC1B,cAAc,IAAI;EAClB,sBAAsB;EACtB,IAAI,YAAY,YACd,WAAW;EAGb,IAAIC,MAAU,OAAO,qBAAqB,MACxC,UAAU,QAAQ;CAEtB;CAGA,OAAO;EACL;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;CACF;AACF;;;;;;;;ECrPA,MAAM,cAAc,2BACZ,OAAO,6BACf;EACA,MAAM,gBAAgB,2BACd,OAAO,+BACf;EACA,MAAM,cAAc,2BACZ,OAAO,6BACf;EAGA,MAAM,OAAO;EAGb,MAAM,qBAAoB,IAAI,KAAK;EACnC,MAAM,YAAW,IAAI,KAAK;EAG1B,MAAM,EACJ,gBACA,YACA,aACA,qBACA,sBACA,iBACA,UACA,0BACA,YACA,SACA,cACA,UACA,YACA,WACE,eAAe,SAAS;EAC5B,MAAM,cAAc,eAAe;EACnC,MAAM,QAAQ,SAAS;EAGvB,MAAM,UAAU,eAAe;GAAE,OAAO,cAAc,YAAY;EAAa,CAAC;EAChF,MAAM,iBAAiB,eAAe;GAAE,OAAO,YAAY,MAAM;EAAI,CAAC;EAGtE,YAAU,YAAY,cAAc,YAAY;GAC9C,KAAK,QAAQ,MAAM,YAAY,YAAY;EAC7C,CAAC;EACD,MAAM,SAAS,YAAY;GACzB,IAAI,QAAQ,OACV,mBAAmB,QAAQ,QAAQ;QAEnC,iBAAiB;IACf,mBAAmB,QAAQ,QAAQ;GACrC,GAAG,GAAI;EAEX,CAAC;EAGD,SAAS,WAAiB;GACxB,IAAI,UAAU,OAAO;IACnB,YAAY,WAAW;IACvB,UAAU,QAAQ;GACpB;EACF;EACA,SAAS,UAAU;GACjB,IAAI,cAAc,YAAY,cAC5B,YAAY,mBAAmB,IAAI;EAEvC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CCjIE,OAAAC,UAAA,GAAAC,mBAuDU,WAAA;EAtDR,IAAG;EACH,OAAKC,eAAA,CAAC,oBAAkB;GACS,gBAAA,OAAA,YAAY;GAAuC,mBAAA,CAAA,OAAA;;EAInF,OAAKC,eAAA,EAAA,QAAY,OAAA,YAAY,aAAY,CAAA;EACzC,iBAAe,OAAA;;EAEhBC,mBAYE,SAAA;GAXA,IAAG;GACF,KAAG,CAAG,OAAA,YAAY,cAAU,CAAK,OAAA,YAAY,cAAc,OAAA,iBAAiB,KAAA;GAC7E,UAAA;GACC,cAAU,OAAA,OAAA,OAAA,MAAA,GAAA,SAAE,OAAA,gBAAA,OAAA,aAAA,GAAA,IAAA;GACZ,SAAK,OAAA,OAAA,OAAA,MAAA,GAAA,SAAE,OAAA,cAAA,OAAA,WAAA,GAAA,IAAA;GACP,WAAO,OAAA,OAAA,OAAA,MAAA,GAAA,SAAE,OAAA,UAAA,OAAA,OAAA,GAAA,IAAA;GACT,qBAAc,OAAA,OAAA,OAAA,MAAA,GAAA,SAAE,OAAA,gBAAA,OAAA,aAAA,GAAA,IAAA;GAChB,SAAK,OAAA,OAAA,OAAA,MAAA,GAAA,SAAE,OAAA,WAAA,OAAA,QAAA,GAAA,IAAA;GACP,UAAM,OAAA,OAAA,OAAA,MAAA,GAAA,SAAE,OAAA,YAAA,OAAA,SAAA,GAAA,IAAA;GACR,SAAO,OAAA;GACP,kBAAc,OAAA,OAAA,OAAA,MAAA,GAAA,SAAE,OAAA,4BAAA,OAAA,yBAAA,GAAA,IAAA;;EAEnB,OAAA,OAAA,OAAA,KAAAA,mBAAyB,OAAA,EAApB,IAAG,eAAc,GAAA,MAAA,EAAA;EAEN,OAAA,sBAAhBJ,UAAA,GAAAC,mBA6BWI,UAAA,EAAA,KAAA,EAAA,GAAA,CA3BTC,WAAqB,KAAA,QAAA,OAAA,GAEF,OAAA,YAAY,eAAe,OAAA,kBAA9CN,UAAA,GAAAO,YAAgE,OAAA,gBAAA,EAAA,KAAA,EAAA,CAAA,KAC1C,CAAA,OAAA,YAAY,eAAlCP,UAAA,GAAAC,mBAuBWI,UAAA,EAAA,KAAA,EAAA,GAAA,CArBA,CAAA,OAAA,YAAY,sBADrBL,UAAA,GAAAO,YAUE,OAAA,kBAAA;;GARC,gBAAc,OAAA;GACd,qBAAmB,OAAA;GACnB,yBAAuB,OAAA;GACvB,0BAAwB,OAAA;GACxB,eAAa,OAAA;GACb,aAAW,OAAA;GACX,cAAa,OAAA;GACb,4BAA2B,OAAA,OAAA,OAAA,MAAA,WAAE,OAAA,YAAY,yBAAwB,IAAA;;;;;;;;;EAEpE,CAAA,MAAAP,UAAA,GAAAO,YAUE,OAAA,gBAAA;;GARC,gBAAc,OAAA;GACd,qBAAmB,OAAA;GACnB,yBAAuB,OAAA;GACvB,0BAAwB,OAAA;GACxB,eAAa,OAAA;GACb,aAAW,OAAA;GACX,cAAa,OAAA;GACb,4BAA2B,OAAA,OAAA,OAAA,MAAA,WAAE,OAAA,YAAY,yBAAwB,KAAA"}
@@ -1,9 +1,9 @@
1
1
  import { t as e } from "./ClassicLoading-CXfMjpyl.mjs";
2
- import { A as t } from "./classicApi-pmODlqv5.mjs";
3
- import { n } from "./PlayerStore-CKprkxa0.mjs";
2
+ import { j as t } from "./classicApi-CGipMqf7.mjs";
3
+ import { n } from "./PlayerStore-DggKki80.mjs";
4
4
  import { t as r } from "./_plugin-vue_export-helper-B3ysoDQm.mjs";
5
- import { a as i, i as a, n as o, r as s, t as c } from "./PlayerPlayButton-DmvV2YDi.mjs";
6
- import { r as l } from "./PlayerComponent-B58O6U6i.mjs";
5
+ import { a as i, i as a, n as o, r as s, t as c } from "./PlayerPlayButton-BIsfgj0d.mjs";
6
+ import { r as l } from "./PlayerComponent-B1RsmSf0.mjs";
7
7
  import { Fragment as u, computed as d, createBlock as f, createCommentVNode as p, createElementBlock as m, createElementVNode as h, createVNode as g, defineAsyncComponent as _, defineComponent as v, openBlock as y, renderList as b, toDisplayString as x, unref as S } from "vue";
8
8
  import { useI18n as C } from "vue-i18n";
9
9
  import w from "vue-material-design-icons/ChevronDown.vue";
@@ -49,7 +49,7 @@ var D = { class: "d-flex flex-column align-items-center my-2 flex-grow-1 player-
49
49
  },
50
50
  emits: ["changePlayerLargeVersion"],
51
51
  setup(r, { emit: v }) {
52
- let L = _(() => import("./RadioHistory-C7S79sZD.mjs")), R = _(() => import("./PlayerProgressBar-Cl_mF4nD.mjs")), z = v, { transcriptText: B, radioUrl: V, isAdPlaying: H, displayPlayTime: U, displayTotalTime: W } = i(), { t: G } = C(), K = n(), { generatingTranscriptLanguage: q } = l(), J = d(() => {
52
+ let L = _(() => import("./RadioHistory-DjsqvRgH.mjs")), R = _(() => import("./PlayerProgressBar-dSschgez.mjs")), z = v, { transcriptText: B, radioUrl: V, isAdPlaying: H, displayPlayTime: U, displayTotalTime: W } = i(), { t: G } = C(), K = n(), { generatingTranscriptLanguage: q } = l(), J = d(() => {
53
53
  if (t.player.showAITranscriptWarning === !0) return G("Player - Transcription - AI Warning");
54
54
  });
55
55
  function Y() {
@@ -0,0 +1 @@
1
+ {"version":3,"file":"PlayerLarge-CPUAoR9q.mjs","names":["sdkParams","_openBlock","_createElementBlock","_createElementVNode","_createVNode","_toDisplayString","_createCommentVNode","_createBlock","_Fragment","_renderList","_sfc_main"],"sources":["../src/components/misc/player/PlayerLarge.vue","../src/components/misc/player/PlayerLarge.vue"],"sourcesContent":["<template>\n <div\n class=\"d-flex flex-column align-items-center my-2 flex-grow-1 player-text position-relative overflow-y-auto\"\n >\n <button\n :title=\"t('Reduce')\"\n class=\"player-reduce-button btn bg-transparent player-text\"\n @click=\"changePlayerLargeVersion\"\n >\n <ChevronDownIcon :size=\"40\" />\n </button>\n <PlayerImage :image-width=\"200\" />\n <PlayerTitle\n :player-error=\"playerError\"\n :hls-ready=\"hlsReady\"\n title-class=\"h3\"\n />\n <PlayerChaptering class=\"justify-content-center w-100\" />\n <div class=\"player-grow-large-content\">\n <PlayerProgressBar\n class-progress=\"large\"\n :show-comments=\"true\"\n :display-alert-bar=\"displayAlertBar\"\n :percent-live-progress=\"percentLiveProgress\"\n :duration-live-position=\"durationLivePosition\"\n :player-error=\"playerError\"\n :listen-time=\"listenTime\"\n />\n <div\n v-if=\"!playerError && (!radioUrl || isAdPlaying)\"\n class=\"d-flex justify-content-between\"\n >\n <div>{{ displayPlayTime }}</div>\n <div>{{ displayTotalTime }}</div>\n </div>\n <RadioHistory v-if=\"radioUrl\" />\n </div>\n\n\n <!-- Transcription -->\n <div\n v-if=\"transcriptText.length > 0 && !isAdPlaying\"\n class=\"transcript\"\n >\n <div class=\"flex-grow-1 p-1 text-center w-100 transcript-bg rounded\">\n <div\n v-for=\"line, i in transcriptText\"\n :key=\"i\"\n >\n {{ line }}\n </div>\n </div>\n <ClassicLoading\n v-if=\"generatingTranscriptLanguage\"\n small\n spinner-color=\"white\"\n :loading-text=\"$t('Player - Generating subtitles', { language: generatingTranscriptLanguage })\"\n />\n\n <div\n v-if=\"transcriptInfo\"\n class=\"flex-grow-1 p-1 text-center transcript-info rounded\"\n >\n {{ transcriptInfo }}\n </div>\n </div>\n\n <!-- Buttons -->\n <div class=\"d-flex align-items-center flex-grow-1\">\n <button\n title=\"-15''\"\n class=\"btn bg-transparent player-text\"\n :disabled=\"isAdPlaying\"\n @click=\"seekClick(-15)\"\n >\n <Rewind15Icon :size=\"44\" />\n </button>\n <PlayerPlayButton :player-error=\"playerError\" :is-big-button=\"true\" />\n\n <button\n title=\"+15''\"\n class=\"btn bg-transparent player-text\"\n :disabled=\"isAdPlaying\"\n @click=\"seekClick(15)\"\n >\n <FastForward15Icon :size=\"44\" />\n </button>\n </div>\n </div>\n</template>\n\n<script setup lang=\"ts\">\nimport Rewind15Icon from \"vue-material-design-icons/Rewind15.vue\";\nimport FastForward15Icon from \"vue-material-design-icons/FastForward15.vue\";\nimport ChevronDownIcon from \"vue-material-design-icons/ChevronDown.vue\";\nimport {usePlayerDisplayTime} from \"../../composable/player/usePlayerDisplayTime\";\nimport PlayerChaptering from \"./chaptering/PlayerChaptering.vue\";\nimport PlayerImage from \"./elements/PlayerImage.vue\";\nimport PlayerTitle from \"./elements/PlayerTitle.vue\";\nimport PlayerPlayButton from \"./elements/PlayerPlayButton.vue\";\nimport { computed, defineAsyncComponent } from \"vue\";\nimport { usePlayerStore } from \"../../../stores/PlayerStore\";\nimport { useI18n } from \"vue-i18n\";\nimport { state as sdkParams } from \"../../../stores/ParamSdkStore\";\nimport ClassicLoading from \"../../form/ClassicLoading.vue\";\nimport { usePlayerTranscript } from \"../../composable/player/usePlayerTranscript\";\n\nconst RadioHistory = defineAsyncComponent(\n () => import(\"./radio/RadioHistory.vue\"),\n);\nconst PlayerProgressBar = defineAsyncComponent(\n () => import(\"./progressbar/PlayerProgressBar.vue\"),\n);\n\n//Props\ndefineProps( {\n playerError: { default: false, type: Boolean },\n displayAlertBar: { default: false, type: Boolean },\n percentLiveProgress: { default: 0, type: Number },\n durationLivePosition: { default: 0, type: Number },\n listenTime: { default: 0, type: Number },\n hlsReady: { default: false, type: Boolean },\n});\n\n//Emits\nconst emit = defineEmits(['changePlayerLargeVersion']);\n\n//Composables\nconst { \n transcriptText,\n radioUrl,\n isAdPlaying,\n displayPlayTime,\n displayTotalTime,\n} = usePlayerDisplayTime();\nconst { t } = useI18n();\nconst playerStore = usePlayerStore();\nconst { generatingTranscriptLanguage } = usePlayerTranscript();\n\n/** Info message to display regarding transcript */\nconst transcriptInfo = computed((): string|undefined => {\n if (sdkParams.player.showAITranscriptWarning === true) {\n return t('Player - Transcription - AI Warning');\n }\n return undefined;\n});\n\n//Methods\nfunction changePlayerLargeVersion() {\n emit(\"changePlayerLargeVersion\");\n}\nfunction seekClick(addTime: number): void {\n const audioPlayer: HTMLAudioElement | null =\n document.querySelector(\"#audio-player\");\n if (!audioPlayer) {\n return;\n }\n const seekTo = audioPlayer.currentTime + addTime;\n if (playerStore.playerPodcast || playerStore.playerLive) {\n playerStore.playerUpdateSeekTime(seekTo > 0 ? seekTo : 0);\n }\n audioPlayer.currentTime = seekTo > 0 ? seekTo : 0;\n}\n</script>\n\n<style scoped lang=\"scss\">\n.octopus-app {\n .player-container .img-box {\n width: 10rem;\n height: 10rem;\n }\n\n .player-reduce-button {\n position: absolute;\n right: 0;\n font-size: 1.2rem !important;\n }\n\n .player-grow-large-content {\n width: 100%;\n padding: 1rem 2rem;\n\n @media (width <= 960px) {\n padding: 0.5rem;\n }\n }\n\n .transcript {\n display: flex;\n flex-direction: column;\n padding: 0 1rem;\n width: 100%;\n \n .transcript-info {\n font-style: italic;\n font-size: 16px;\n }\n }\n\n .transcript-bg {\n background: var(--octopus-player-transcript-bg-color);\n }\n}\n\n.player-text {\n color: var(--octopus-player-text-color);\n}\n</style>\n","<template>\n <div\n class=\"d-flex flex-column align-items-center my-2 flex-grow-1 player-text position-relative overflow-y-auto\"\n >\n <button\n :title=\"t('Reduce')\"\n class=\"player-reduce-button btn bg-transparent player-text\"\n @click=\"changePlayerLargeVersion\"\n >\n <ChevronDownIcon :size=\"40\" />\n </button>\n <PlayerImage :image-width=\"200\" />\n <PlayerTitle\n :player-error=\"playerError\"\n :hls-ready=\"hlsReady\"\n title-class=\"h3\"\n />\n <PlayerChaptering class=\"justify-content-center w-100\" />\n <div class=\"player-grow-large-content\">\n <PlayerProgressBar\n class-progress=\"large\"\n :show-comments=\"true\"\n :display-alert-bar=\"displayAlertBar\"\n :percent-live-progress=\"percentLiveProgress\"\n :duration-live-position=\"durationLivePosition\"\n :player-error=\"playerError\"\n :listen-time=\"listenTime\"\n />\n <div\n v-if=\"!playerError && (!radioUrl || isAdPlaying)\"\n class=\"d-flex justify-content-between\"\n >\n <div>{{ displayPlayTime }}</div>\n <div>{{ displayTotalTime }}</div>\n </div>\n <RadioHistory v-if=\"radioUrl\" />\n </div>\n\n\n <!-- Transcription -->\n <div\n v-if=\"transcriptText.length > 0 && !isAdPlaying\"\n class=\"transcript\"\n >\n <div class=\"flex-grow-1 p-1 text-center w-100 transcript-bg rounded\">\n <div\n v-for=\"line, i in transcriptText\"\n :key=\"i\"\n >\n {{ line }}\n </div>\n </div>\n <ClassicLoading\n v-if=\"generatingTranscriptLanguage\"\n small\n spinner-color=\"white\"\n :loading-text=\"$t('Player - Generating subtitles', { language: generatingTranscriptLanguage })\"\n />\n\n <div\n v-if=\"transcriptInfo\"\n class=\"flex-grow-1 p-1 text-center transcript-info rounded\"\n >\n {{ transcriptInfo }}\n </div>\n </div>\n\n <!-- Buttons -->\n <div class=\"d-flex align-items-center flex-grow-1\">\n <button\n title=\"-15''\"\n class=\"btn bg-transparent player-text\"\n :disabled=\"isAdPlaying\"\n @click=\"seekClick(-15)\"\n >\n <Rewind15Icon :size=\"44\" />\n </button>\n <PlayerPlayButton :player-error=\"playerError\" :is-big-button=\"true\" />\n\n <button\n title=\"+15''\"\n class=\"btn bg-transparent player-text\"\n :disabled=\"isAdPlaying\"\n @click=\"seekClick(15)\"\n >\n <FastForward15Icon :size=\"44\" />\n </button>\n </div>\n </div>\n</template>\n\n<script setup lang=\"ts\">\nimport Rewind15Icon from \"vue-material-design-icons/Rewind15.vue\";\nimport FastForward15Icon from \"vue-material-design-icons/FastForward15.vue\";\nimport ChevronDownIcon from \"vue-material-design-icons/ChevronDown.vue\";\nimport {usePlayerDisplayTime} from \"../../composable/player/usePlayerDisplayTime\";\nimport PlayerChaptering from \"./chaptering/PlayerChaptering.vue\";\nimport PlayerImage from \"./elements/PlayerImage.vue\";\nimport PlayerTitle from \"./elements/PlayerTitle.vue\";\nimport PlayerPlayButton from \"./elements/PlayerPlayButton.vue\";\nimport { computed, defineAsyncComponent } from \"vue\";\nimport { usePlayerStore } from \"../../../stores/PlayerStore\";\nimport { useI18n } from \"vue-i18n\";\nimport { state as sdkParams } from \"../../../stores/ParamSdkStore\";\nimport ClassicLoading from \"../../form/ClassicLoading.vue\";\nimport { usePlayerTranscript } from \"../../composable/player/usePlayerTranscript\";\n\nconst RadioHistory = defineAsyncComponent(\n () => import(\"./radio/RadioHistory.vue\"),\n);\nconst PlayerProgressBar = defineAsyncComponent(\n () => import(\"./progressbar/PlayerProgressBar.vue\"),\n);\n\n//Props\ndefineProps( {\n playerError: { default: false, type: Boolean },\n displayAlertBar: { default: false, type: Boolean },\n percentLiveProgress: { default: 0, type: Number },\n durationLivePosition: { default: 0, type: Number },\n listenTime: { default: 0, type: Number },\n hlsReady: { default: false, type: Boolean },\n});\n\n//Emits\nconst emit = defineEmits(['changePlayerLargeVersion']);\n\n//Composables\nconst { \n transcriptText,\n radioUrl,\n isAdPlaying,\n displayPlayTime,\n displayTotalTime,\n} = usePlayerDisplayTime();\nconst { t } = useI18n();\nconst playerStore = usePlayerStore();\nconst { generatingTranscriptLanguage } = usePlayerTranscript();\n\n/** Info message to display regarding transcript */\nconst transcriptInfo = computed((): string|undefined => {\n if (sdkParams.player.showAITranscriptWarning === true) {\n return t('Player - Transcription - AI Warning');\n }\n return undefined;\n});\n\n//Methods\nfunction changePlayerLargeVersion() {\n emit(\"changePlayerLargeVersion\");\n}\nfunction seekClick(addTime: number): void {\n const audioPlayer: HTMLAudioElement | null =\n document.querySelector(\"#audio-player\");\n if (!audioPlayer) {\n return;\n }\n const seekTo = audioPlayer.currentTime + addTime;\n if (playerStore.playerPodcast || playerStore.playerLive) {\n playerStore.playerUpdateSeekTime(seekTo > 0 ? seekTo : 0);\n }\n audioPlayer.currentTime = seekTo > 0 ? seekTo : 0;\n}\n</script>\n\n<style scoped lang=\"scss\">\n.octopus-app {\n .player-container .img-box {\n width: 10rem;\n height: 10rem;\n }\n\n .player-reduce-button {\n position: absolute;\n right: 0;\n font-size: 1.2rem !important;\n }\n\n .player-grow-large-content {\n width: 100%;\n padding: 1rem 2rem;\n\n @media (width <= 960px) {\n padding: 0.5rem;\n }\n }\n\n .transcript {\n display: flex;\n flex-direction: column;\n padding: 0 1rem;\n width: 100%;\n \n .transcript-info {\n font-style: italic;\n font-size: 16px;\n }\n }\n\n .transcript-bg {\n background: var(--octopus-player-transcript-bg-color);\n }\n}\n\n.player-text {\n color: var(--octopus-player-text-color);\n}\n</style>\n"],"mappings":"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"}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"PlayerLarge-DP7RsA83.mjs","names":["sdkParams","_openBlock","_createElementBlock","_createElementVNode","_createVNode","_toDisplayString","_createCommentVNode","_createBlock","_Fragment","_renderList","_sfc_main"],"sources":["../src/components/misc/player/PlayerLarge.vue","../src/components/misc/player/PlayerLarge.vue"],"sourcesContent":["<template>\n <div\n class=\"d-flex flex-column align-items-center my-2 flex-grow-1 player-text position-relative overflow-y-auto\"\n >\n <button\n :title=\"t('Reduce')\"\n class=\"player-reduce-button btn bg-transparent player-text\"\n @click=\"changePlayerLargeVersion\"\n >\n <ChevronDownIcon :size=\"40\" />\n </button>\n <PlayerImage :image-width=\"200\" />\n <PlayerTitle\n :player-error=\"playerError\"\n :hls-ready=\"hlsReady\"\n title-class=\"h3\"\n />\n <PlayerChaptering class=\"justify-content-center w-100\" />\n <div class=\"player-grow-large-content\">\n <PlayerProgressBar\n class-progress=\"large\"\n :show-comments=\"true\"\n :display-alert-bar=\"displayAlertBar\"\n :percent-live-progress=\"percentLiveProgress\"\n :duration-live-position=\"durationLivePosition\"\n :player-error=\"playerError\"\n :listen-time=\"listenTime\"\n />\n <div\n v-if=\"!playerError && (!radioUrl || isAdPlaying)\"\n class=\"d-flex justify-content-between\"\n >\n <div>{{ displayPlayTime }}</div>\n <div>{{ displayTotalTime }}</div>\n </div>\n <RadioHistory v-if=\"radioUrl\" />\n </div>\n\n\n <!-- Transcription -->\n <div\n v-if=\"transcriptText.length > 0 && !isAdPlaying\"\n class=\"transcript\"\n >\n <div class=\"flex-grow-1 p-1 text-center w-100 transcript-bg rounded\">\n <div\n v-for=\"line, i in transcriptText\"\n :key=\"i\"\n >\n {{ line }}\n </div>\n </div>\n <ClassicLoading\n v-if=\"generatingTranscriptLanguage\"\n small\n spinner-color=\"white\"\n :loading-text=\"$t('Player - Generating subtitles', { language: generatingTranscriptLanguage })\"\n />\n\n <div\n v-if=\"transcriptInfo\"\n class=\"flex-grow-1 p-1 text-center transcript-info rounded\"\n >\n {{ transcriptInfo }}\n </div>\n </div>\n\n <!-- Buttons -->\n <div class=\"d-flex align-items-center flex-grow-1\">\n <button\n title=\"-15''\"\n class=\"btn bg-transparent player-text\"\n :disabled=\"isAdPlaying\"\n @click=\"seekClick(-15)\"\n >\n <Rewind15Icon :size=\"44\" />\n </button>\n <PlayerPlayButton :player-error=\"playerError\" :is-big-button=\"true\" />\n\n <button\n title=\"+15''\"\n class=\"btn bg-transparent player-text\"\n :disabled=\"isAdPlaying\"\n @click=\"seekClick(15)\"\n >\n <FastForward15Icon :size=\"44\" />\n </button>\n </div>\n </div>\n</template>\n\n<script setup lang=\"ts\">\nimport Rewind15Icon from \"vue-material-design-icons/Rewind15.vue\";\nimport FastForward15Icon from \"vue-material-design-icons/FastForward15.vue\";\nimport ChevronDownIcon from \"vue-material-design-icons/ChevronDown.vue\";\nimport {usePlayerDisplayTime} from \"../../composable/player/usePlayerDisplayTime\";\nimport PlayerChaptering from \"./chaptering/PlayerChaptering.vue\";\nimport PlayerImage from \"./elements/PlayerImage.vue\";\nimport PlayerTitle from \"./elements/PlayerTitle.vue\";\nimport PlayerPlayButton from \"./elements/PlayerPlayButton.vue\";\nimport { computed, defineAsyncComponent } from \"vue\";\nimport { usePlayerStore } from \"../../../stores/PlayerStore\";\nimport { useI18n } from \"vue-i18n\";\nimport { state as sdkParams } from \"../../../stores/ParamSdkStore\";\nimport ClassicLoading from \"../../form/ClassicLoading.vue\";\nimport { usePlayerTranscript } from \"../../composable/player/usePlayerTranscript\";\n\nconst RadioHistory = defineAsyncComponent(\n () => import(\"./radio/RadioHistory.vue\"),\n);\nconst PlayerProgressBar = defineAsyncComponent(\n () => import(\"./progressbar/PlayerProgressBar.vue\"),\n);\n\n//Props\ndefineProps( {\n playerError: { default: false, type: Boolean },\n displayAlertBar: { default: false, type: Boolean },\n percentLiveProgress: { default: 0, type: Number },\n durationLivePosition: { default: 0, type: Number },\n listenTime: { default: 0, type: Number },\n hlsReady: { default: false, type: Boolean },\n});\n\n//Emits\nconst emit = defineEmits(['changePlayerLargeVersion']);\n\n//Composables\nconst { \n transcriptText,\n radioUrl,\n isAdPlaying,\n displayPlayTime,\n displayTotalTime,\n} = usePlayerDisplayTime();\nconst { t } = useI18n();\nconst playerStore = usePlayerStore();\nconst { generatingTranscriptLanguage } = usePlayerTranscript();\n\n/** Info message to display regarding transcript */\nconst transcriptInfo = computed((): string|undefined => {\n if (sdkParams.player.showAITranscriptWarning === true) {\n return t('Player - Transcription - AI Warning');\n }\n return undefined;\n});\n\n//Methods\nfunction changePlayerLargeVersion() {\n emit(\"changePlayerLargeVersion\");\n}\nfunction seekClick(addTime: number): void {\n const audioPlayer: HTMLAudioElement | null =\n document.querySelector(\"#audio-player\");\n if (!audioPlayer) {\n return;\n }\n const seekTo = audioPlayer.currentTime + addTime;\n if (playerStore.playerPodcast || playerStore.playerLive) {\n playerStore.playerUpdateSeekTime(seekTo > 0 ? seekTo : 0);\n }\n audioPlayer.currentTime = seekTo > 0 ? seekTo : 0;\n}\n</script>\n\n<style scoped lang=\"scss\">\n.octopus-app {\n .player-container .img-box {\n width: 10rem;\n height: 10rem;\n }\n\n .player-reduce-button {\n position: absolute;\n right: 0;\n font-size: 1.2rem !important;\n }\n\n .player-grow-large-content {\n width: 100%;\n padding: 1rem 2rem;\n\n @media (width <= 960px) {\n padding: 0.5rem;\n }\n }\n\n .transcript {\n display: flex;\n flex-direction: column;\n padding: 0 1rem;\n width: 100%;\n \n .transcript-info {\n font-style: italic;\n font-size: 16px;\n }\n }\n\n .transcript-bg {\n background: var(--octopus-player-transcript-bg-color);\n }\n}\n\n.player-text {\n color: var(--octopus-player-text-color);\n}\n</style>\n","<template>\n <div\n class=\"d-flex flex-column align-items-center my-2 flex-grow-1 player-text position-relative overflow-y-auto\"\n >\n <button\n :title=\"t('Reduce')\"\n class=\"player-reduce-button btn bg-transparent player-text\"\n @click=\"changePlayerLargeVersion\"\n >\n <ChevronDownIcon :size=\"40\" />\n </button>\n <PlayerImage :image-width=\"200\" />\n <PlayerTitle\n :player-error=\"playerError\"\n :hls-ready=\"hlsReady\"\n title-class=\"h3\"\n />\n <PlayerChaptering class=\"justify-content-center w-100\" />\n <div class=\"player-grow-large-content\">\n <PlayerProgressBar\n class-progress=\"large\"\n :show-comments=\"true\"\n :display-alert-bar=\"displayAlertBar\"\n :percent-live-progress=\"percentLiveProgress\"\n :duration-live-position=\"durationLivePosition\"\n :player-error=\"playerError\"\n :listen-time=\"listenTime\"\n />\n <div\n v-if=\"!playerError && (!radioUrl || isAdPlaying)\"\n class=\"d-flex justify-content-between\"\n >\n <div>{{ displayPlayTime }}</div>\n <div>{{ displayTotalTime }}</div>\n </div>\n <RadioHistory v-if=\"radioUrl\" />\n </div>\n\n\n <!-- Transcription -->\n <div\n v-if=\"transcriptText.length > 0 && !isAdPlaying\"\n class=\"transcript\"\n >\n <div class=\"flex-grow-1 p-1 text-center w-100 transcript-bg rounded\">\n <div\n v-for=\"line, i in transcriptText\"\n :key=\"i\"\n >\n {{ line }}\n </div>\n </div>\n <ClassicLoading\n v-if=\"generatingTranscriptLanguage\"\n small\n spinner-color=\"white\"\n :loading-text=\"$t('Player - Generating subtitles', { language: generatingTranscriptLanguage })\"\n />\n\n <div\n v-if=\"transcriptInfo\"\n class=\"flex-grow-1 p-1 text-center transcript-info rounded\"\n >\n {{ transcriptInfo }}\n </div>\n </div>\n\n <!-- Buttons -->\n <div class=\"d-flex align-items-center flex-grow-1\">\n <button\n title=\"-15''\"\n class=\"btn bg-transparent player-text\"\n :disabled=\"isAdPlaying\"\n @click=\"seekClick(-15)\"\n >\n <Rewind15Icon :size=\"44\" />\n </button>\n <PlayerPlayButton :player-error=\"playerError\" :is-big-button=\"true\" />\n\n <button\n title=\"+15''\"\n class=\"btn bg-transparent player-text\"\n :disabled=\"isAdPlaying\"\n @click=\"seekClick(15)\"\n >\n <FastForward15Icon :size=\"44\" />\n </button>\n </div>\n </div>\n</template>\n\n<script setup lang=\"ts\">\nimport Rewind15Icon from \"vue-material-design-icons/Rewind15.vue\";\nimport FastForward15Icon from \"vue-material-design-icons/FastForward15.vue\";\nimport ChevronDownIcon from \"vue-material-design-icons/ChevronDown.vue\";\nimport {usePlayerDisplayTime} from \"../../composable/player/usePlayerDisplayTime\";\nimport PlayerChaptering from \"./chaptering/PlayerChaptering.vue\";\nimport PlayerImage from \"./elements/PlayerImage.vue\";\nimport PlayerTitle from \"./elements/PlayerTitle.vue\";\nimport PlayerPlayButton from \"./elements/PlayerPlayButton.vue\";\nimport { computed, defineAsyncComponent } from \"vue\";\nimport { usePlayerStore } from \"../../../stores/PlayerStore\";\nimport { useI18n } from \"vue-i18n\";\nimport { state as sdkParams } from \"../../../stores/ParamSdkStore\";\nimport ClassicLoading from \"../../form/ClassicLoading.vue\";\nimport { usePlayerTranscript } from \"../../composable/player/usePlayerTranscript\";\n\nconst RadioHistory = defineAsyncComponent(\n () => import(\"./radio/RadioHistory.vue\"),\n);\nconst PlayerProgressBar = defineAsyncComponent(\n () => import(\"./progressbar/PlayerProgressBar.vue\"),\n);\n\n//Props\ndefineProps( {\n playerError: { default: false, type: Boolean },\n displayAlertBar: { default: false, type: Boolean },\n percentLiveProgress: { default: 0, type: Number },\n durationLivePosition: { default: 0, type: Number },\n listenTime: { default: 0, type: Number },\n hlsReady: { default: false, type: Boolean },\n});\n\n//Emits\nconst emit = defineEmits(['changePlayerLargeVersion']);\n\n//Composables\nconst { \n transcriptText,\n radioUrl,\n isAdPlaying,\n displayPlayTime,\n displayTotalTime,\n} = usePlayerDisplayTime();\nconst { t } = useI18n();\nconst playerStore = usePlayerStore();\nconst { generatingTranscriptLanguage } = usePlayerTranscript();\n\n/** Info message to display regarding transcript */\nconst transcriptInfo = computed((): string|undefined => {\n if (sdkParams.player.showAITranscriptWarning === true) {\n return t('Player - Transcription - AI Warning');\n }\n return undefined;\n});\n\n//Methods\nfunction changePlayerLargeVersion() {\n emit(\"changePlayerLargeVersion\");\n}\nfunction seekClick(addTime: number): void {\n const audioPlayer: HTMLAudioElement | null =\n document.querySelector(\"#audio-player\");\n if (!audioPlayer) {\n return;\n }\n const seekTo = audioPlayer.currentTime + addTime;\n if (playerStore.playerPodcast || playerStore.playerLive) {\n playerStore.playerUpdateSeekTime(seekTo > 0 ? seekTo : 0);\n }\n audioPlayer.currentTime = seekTo > 0 ? seekTo : 0;\n}\n</script>\n\n<style scoped lang=\"scss\">\n.octopus-app {\n .player-container .img-box {\n width: 10rem;\n height: 10rem;\n }\n\n .player-reduce-button {\n position: absolute;\n right: 0;\n font-size: 1.2rem !important;\n }\n\n .player-grow-large-content {\n width: 100%;\n padding: 1rem 2rem;\n\n @media (width <= 960px) {\n padding: 0.5rem;\n }\n }\n\n .transcript {\n display: flex;\n flex-direction: column;\n padding: 0 1rem;\n width: 100%;\n \n .transcript-info {\n font-style: italic;\n font-size: 16px;\n }\n }\n\n .transcript-bg {\n background: var(--octopus-player-transcript-bg-color);\n }\n}\n\n.player-text {\n color: var(--octopus-player-text-color);\n}\n</style>\n"],"mappings":"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"}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"PlayerLarge-DpiFO7gk.mjs","names":["sdkParams","_openBlock","_createElementBlock","_createElementVNode","_createVNode","_toDisplayString","_createCommentVNode","_createBlock","_Fragment","_renderList","_sfc_main"],"sources":["../src/components/misc/player/PlayerLarge.vue","../src/components/misc/player/PlayerLarge.vue"],"sourcesContent":["<template>\n <div\n class=\"d-flex flex-column align-items-center my-2 flex-grow-1 player-text position-relative overflow-y-auto\"\n >\n <button\n :title=\"t('Reduce')\"\n class=\"player-reduce-button btn bg-transparent player-text\"\n @click=\"changePlayerLargeVersion\"\n >\n <ChevronDownIcon :size=\"40\" />\n </button>\n <PlayerImage :image-width=\"200\" />\n <PlayerTitle\n :player-error=\"playerError\"\n :hls-ready=\"hlsReady\"\n title-class=\"h3\"\n />\n <PlayerChaptering class=\"justify-content-center w-100\" />\n <div class=\"player-grow-large-content\">\n <PlayerProgressBar\n class-progress=\"large\"\n :show-comments=\"true\"\n :display-alert-bar=\"displayAlertBar\"\n :percent-live-progress=\"percentLiveProgress\"\n :duration-live-position=\"durationLivePosition\"\n :player-error=\"playerError\"\n :listen-time=\"listenTime\"\n />\n <div\n v-if=\"!playerError && (!radioUrl || isAdPlaying)\"\n class=\"d-flex justify-content-between\"\n >\n <div>{{ displayPlayTime }}</div>\n <div>{{ displayTotalTime }}</div>\n </div>\n <RadioHistory v-if=\"radioUrl\" />\n </div>\n\n\n <!-- Transcription -->\n <div\n v-if=\"transcriptText.length > 0 && !isAdPlaying\"\n class=\"transcript\"\n >\n <div class=\"flex-grow-1 p-1 text-center w-100 transcript-bg rounded\">\n <div\n v-for=\"line, i in transcriptText\"\n :key=\"i\"\n >\n {{ line }}\n </div>\n </div>\n <ClassicLoading\n v-if=\"generatingTranscriptLanguage\"\n small\n spinner-color=\"white\"\n :loading-text=\"$t('Player - Generating subtitles', { language: generatingTranscriptLanguage })\"\n />\n\n <div\n v-if=\"transcriptInfo\"\n class=\"flex-grow-1 p-1 text-center transcript-info rounded\"\n >\n {{ transcriptInfo }}\n </div>\n </div>\n\n <!-- Buttons -->\n <div class=\"d-flex align-items-center flex-grow-1\">\n <button\n title=\"-15''\"\n class=\"btn bg-transparent player-text\"\n :disabled=\"isAdPlaying\"\n @click=\"seekClick(-15)\"\n >\n <Rewind15Icon :size=\"44\" />\n </button>\n <PlayerPlayButton :player-error=\"playerError\" :is-big-button=\"true\" />\n\n <button\n title=\"+15''\"\n class=\"btn bg-transparent player-text\"\n :disabled=\"isAdPlaying\"\n @click=\"seekClick(15)\"\n >\n <FastForward15Icon :size=\"44\" />\n </button>\n </div>\n </div>\n</template>\n\n<script setup lang=\"ts\">\nimport Rewind15Icon from \"vue-material-design-icons/Rewind15.vue\";\nimport FastForward15Icon from \"vue-material-design-icons/FastForward15.vue\";\nimport ChevronDownIcon from \"vue-material-design-icons/ChevronDown.vue\";\nimport {usePlayerDisplayTime} from \"../../composable/player/usePlayerDisplayTime\";\nimport PlayerChaptering from \"./chaptering/PlayerChaptering.vue\";\nimport PlayerImage from \"./elements/PlayerImage.vue\";\nimport PlayerTitle from \"./elements/PlayerTitle.vue\";\nimport PlayerPlayButton from \"./elements/PlayerPlayButton.vue\";\nimport { computed, defineAsyncComponent } from \"vue\";\nimport { usePlayerStore } from \"../../../stores/PlayerStore\";\nimport { useI18n } from \"vue-i18n\";\nimport { state as sdkParams } from \"../../../stores/ParamSdkStore\";\nimport ClassicLoading from \"../../form/ClassicLoading.vue\";\nimport { usePlayerTranscript } from \"../../composable/player/usePlayerTranscript\";\n\nconst RadioHistory = defineAsyncComponent(\n () => import(\"./radio/RadioHistory.vue\"),\n);\nconst PlayerProgressBar = defineAsyncComponent(\n () => import(\"./progressbar/PlayerProgressBar.vue\"),\n);\n\n//Props\ndefineProps( {\n playerError: { default: false, type: Boolean },\n displayAlertBar: { default: false, type: Boolean },\n percentLiveProgress: { default: 0, type: Number },\n durationLivePosition: { default: 0, type: Number },\n listenTime: { default: 0, type: Number },\n hlsReady: { default: false, type: Boolean },\n});\n\n//Emits\nconst emit = defineEmits(['changePlayerLargeVersion']);\n\n//Composables\nconst { \n transcriptText,\n radioUrl,\n isAdPlaying,\n displayPlayTime,\n displayTotalTime,\n} = usePlayerDisplayTime();\nconst { t } = useI18n();\nconst playerStore = usePlayerStore();\nconst { generatingTranscriptLanguage } = usePlayerTranscript();\n\n/** Info message to display regarding transcript */\nconst transcriptInfo = computed((): string|undefined => {\n if (sdkParams.player.showAITranscriptWarning === true) {\n return t('Player - Transcription - AI Warning');\n }\n return undefined;\n});\n\n//Methods\nfunction changePlayerLargeVersion() {\n emit(\"changePlayerLargeVersion\");\n}\nfunction seekClick(addTime: number): void {\n const audioPlayer: HTMLAudioElement | null =\n document.querySelector(\"#audio-player\");\n if (!audioPlayer) {\n return;\n }\n const seekTo = audioPlayer.currentTime + addTime;\n if (playerStore.playerPodcast || playerStore.playerLive) {\n playerStore.playerUpdateSeekTime(seekTo > 0 ? seekTo : 0);\n }\n audioPlayer.currentTime = seekTo > 0 ? seekTo : 0;\n}\n</script>\n\n<style scoped lang=\"scss\">\n.octopus-app {\n .player-container .img-box {\n width: 10rem;\n height: 10rem;\n }\n\n .player-reduce-button {\n position: absolute;\n right: 0;\n font-size: 1.2rem !important;\n }\n\n .player-grow-large-content {\n width: 100%;\n padding: 1rem 2rem;\n\n @media (width <= 960px) {\n padding: 0.5rem;\n }\n }\n\n .transcript {\n display: flex;\n flex-direction: column;\n padding: 0 1rem;\n width: 100%;\n \n .transcript-info {\n font-style: italic;\n font-size: 16px;\n }\n }\n\n .transcript-bg {\n background: var(--octopus-player-transcript-bg-color);\n }\n}\n\n.player-text {\n color: var(--octopus-player-text-color);\n}\n</style>\n","<template>\n <div\n class=\"d-flex flex-column align-items-center my-2 flex-grow-1 player-text position-relative overflow-y-auto\"\n >\n <button\n :title=\"t('Reduce')\"\n class=\"player-reduce-button btn bg-transparent player-text\"\n @click=\"changePlayerLargeVersion\"\n >\n <ChevronDownIcon :size=\"40\" />\n </button>\n <PlayerImage :image-width=\"200\" />\n <PlayerTitle\n :player-error=\"playerError\"\n :hls-ready=\"hlsReady\"\n title-class=\"h3\"\n />\n <PlayerChaptering class=\"justify-content-center w-100\" />\n <div class=\"player-grow-large-content\">\n <PlayerProgressBar\n class-progress=\"large\"\n :show-comments=\"true\"\n :display-alert-bar=\"displayAlertBar\"\n :percent-live-progress=\"percentLiveProgress\"\n :duration-live-position=\"durationLivePosition\"\n :player-error=\"playerError\"\n :listen-time=\"listenTime\"\n />\n <div\n v-if=\"!playerError && (!radioUrl || isAdPlaying)\"\n class=\"d-flex justify-content-between\"\n >\n <div>{{ displayPlayTime }}</div>\n <div>{{ displayTotalTime }}</div>\n </div>\n <RadioHistory v-if=\"radioUrl\" />\n </div>\n\n\n <!-- Transcription -->\n <div\n v-if=\"transcriptText.length > 0 && !isAdPlaying\"\n class=\"transcript\"\n >\n <div class=\"flex-grow-1 p-1 text-center w-100 transcript-bg rounded\">\n <div\n v-for=\"line, i in transcriptText\"\n :key=\"i\"\n >\n {{ line }}\n </div>\n </div>\n <ClassicLoading\n v-if=\"generatingTranscriptLanguage\"\n small\n spinner-color=\"white\"\n :loading-text=\"$t('Player - Generating subtitles', { language: generatingTranscriptLanguage })\"\n />\n\n <div\n v-if=\"transcriptInfo\"\n class=\"flex-grow-1 p-1 text-center transcript-info rounded\"\n >\n {{ transcriptInfo }}\n </div>\n </div>\n\n <!-- Buttons -->\n <div class=\"d-flex align-items-center flex-grow-1\">\n <button\n title=\"-15''\"\n class=\"btn bg-transparent player-text\"\n :disabled=\"isAdPlaying\"\n @click=\"seekClick(-15)\"\n >\n <Rewind15Icon :size=\"44\" />\n </button>\n <PlayerPlayButton :player-error=\"playerError\" :is-big-button=\"true\" />\n\n <button\n title=\"+15''\"\n class=\"btn bg-transparent player-text\"\n :disabled=\"isAdPlaying\"\n @click=\"seekClick(15)\"\n >\n <FastForward15Icon :size=\"44\" />\n </button>\n </div>\n </div>\n</template>\n\n<script setup lang=\"ts\">\nimport Rewind15Icon from \"vue-material-design-icons/Rewind15.vue\";\nimport FastForward15Icon from \"vue-material-design-icons/FastForward15.vue\";\nimport ChevronDownIcon from \"vue-material-design-icons/ChevronDown.vue\";\nimport {usePlayerDisplayTime} from \"../../composable/player/usePlayerDisplayTime\";\nimport PlayerChaptering from \"./chaptering/PlayerChaptering.vue\";\nimport PlayerImage from \"./elements/PlayerImage.vue\";\nimport PlayerTitle from \"./elements/PlayerTitle.vue\";\nimport PlayerPlayButton from \"./elements/PlayerPlayButton.vue\";\nimport { computed, defineAsyncComponent } from \"vue\";\nimport { usePlayerStore } from \"../../../stores/PlayerStore\";\nimport { useI18n } from \"vue-i18n\";\nimport { state as sdkParams } from \"../../../stores/ParamSdkStore\";\nimport ClassicLoading from \"../../form/ClassicLoading.vue\";\nimport { usePlayerTranscript } from \"../../composable/player/usePlayerTranscript\";\n\nconst RadioHistory = defineAsyncComponent(\n () => import(\"./radio/RadioHistory.vue\"),\n);\nconst PlayerProgressBar = defineAsyncComponent(\n () => import(\"./progressbar/PlayerProgressBar.vue\"),\n);\n\n//Props\ndefineProps( {\n playerError: { default: false, type: Boolean },\n displayAlertBar: { default: false, type: Boolean },\n percentLiveProgress: { default: 0, type: Number },\n durationLivePosition: { default: 0, type: Number },\n listenTime: { default: 0, type: Number },\n hlsReady: { default: false, type: Boolean },\n});\n\n//Emits\nconst emit = defineEmits(['changePlayerLargeVersion']);\n\n//Composables\nconst { \n transcriptText,\n radioUrl,\n isAdPlaying,\n displayPlayTime,\n displayTotalTime,\n} = usePlayerDisplayTime();\nconst { t } = useI18n();\nconst playerStore = usePlayerStore();\nconst { generatingTranscriptLanguage } = usePlayerTranscript();\n\n/** Info message to display regarding transcript */\nconst transcriptInfo = computed((): string|undefined => {\n if (sdkParams.player.showAITranscriptWarning === true) {\n return t('Player - Transcription - AI Warning');\n }\n return undefined;\n});\n\n//Methods\nfunction changePlayerLargeVersion() {\n emit(\"changePlayerLargeVersion\");\n}\nfunction seekClick(addTime: number): void {\n const audioPlayer: HTMLAudioElement | null =\n document.querySelector(\"#audio-player\");\n if (!audioPlayer) {\n return;\n }\n const seekTo = audioPlayer.currentTime + addTime;\n if (playerStore.playerPodcast || playerStore.playerLive) {\n playerStore.playerUpdateSeekTime(seekTo > 0 ? seekTo : 0);\n }\n audioPlayer.currentTime = seekTo > 0 ? seekTo : 0;\n}\n</script>\n\n<style scoped lang=\"scss\">\n.octopus-app {\n .player-container .img-box {\n width: 10rem;\n height: 10rem;\n }\n\n .player-reduce-button {\n position: absolute;\n right: 0;\n font-size: 1.2rem !important;\n }\n\n .player-grow-large-content {\n width: 100%;\n padding: 1rem 2rem;\n\n @media (width <= 960px) {\n padding: 0.5rem;\n }\n }\n\n .transcript {\n display: flex;\n flex-direction: column;\n padding: 0 1rem;\n width: 100%;\n \n .transcript-info {\n font-style: italic;\n font-size: 16px;\n }\n }\n\n .transcript-bg {\n background: var(--octopus-player-transcript-bg-color);\n }\n}\n\n.player-text {\n color: var(--octopus-player-text-color);\n}\n</style>\n"],"mappings":"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"}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"PlayerLarge-Dwtmu4gz.mjs","names":["sdkParams","_openBlock","_createElementBlock","_createElementVNode","_createVNode","_toDisplayString","_createCommentVNode","_createBlock","_Fragment","_renderList","_sfc_main"],"sources":["../src/components/misc/player/PlayerLarge.vue","../src/components/misc/player/PlayerLarge.vue"],"sourcesContent":["<template>\n <div\n class=\"d-flex flex-column align-items-center my-2 flex-grow-1 player-text position-relative overflow-y-auto\"\n >\n <button\n :title=\"t('Reduce')\"\n class=\"player-reduce-button btn bg-transparent player-text\"\n @click=\"changePlayerLargeVersion\"\n >\n <ChevronDownIcon :size=\"40\" />\n </button>\n <PlayerImage :image-width=\"200\" />\n <PlayerTitle\n :player-error=\"playerError\"\n :hls-ready=\"hlsReady\"\n title-class=\"h3\"\n />\n <PlayerChaptering class=\"justify-content-center w-100\" />\n <div class=\"player-grow-large-content\">\n <PlayerProgressBar\n class-progress=\"large\"\n :show-comments=\"true\"\n :display-alert-bar=\"displayAlertBar\"\n :percent-live-progress=\"percentLiveProgress\"\n :duration-live-position=\"durationLivePosition\"\n :player-error=\"playerError\"\n :listen-time=\"listenTime\"\n />\n <div\n v-if=\"!playerError && (!radioUrl || isAdPlaying)\"\n class=\"d-flex justify-content-between\"\n >\n <div>{{ displayPlayTime }}</div>\n <div>{{ displayTotalTime }}</div>\n </div>\n <RadioHistory v-if=\"radioUrl\" />\n </div>\n\n\n <!-- Transcription -->\n <div\n v-if=\"transcriptText.length > 0 && !isAdPlaying\"\n class=\"transcript\"\n >\n <div class=\"flex-grow-1 p-1 text-center w-100 transcript-bg rounded\">\n <div\n v-for=\"line, i in transcriptText\"\n :key=\"i\"\n >\n {{ line }}\n </div>\n </div>\n <ClassicLoading\n v-if=\"generatingTranscriptLanguage\"\n small\n spinner-color=\"white\"\n :loading-text=\"$t('Player - Generating subtitles', { language: generatingTranscriptLanguage })\"\n />\n\n <div\n v-if=\"transcriptInfo\"\n class=\"flex-grow-1 p-1 text-center transcript-info rounded\"\n >\n {{ transcriptInfo }}\n </div>\n </div>\n\n <!-- Buttons -->\n <div class=\"d-flex align-items-center flex-grow-1\">\n <button\n title=\"-15''\"\n class=\"btn bg-transparent player-text\"\n :disabled=\"isAdPlaying\"\n @click=\"seekClick(-15)\"\n >\n <Rewind15Icon :size=\"44\" />\n </button>\n <PlayerPlayButton :player-error=\"playerError\" :is-big-button=\"true\" />\n\n <button\n title=\"+15''\"\n class=\"btn bg-transparent player-text\"\n :disabled=\"isAdPlaying\"\n @click=\"seekClick(15)\"\n >\n <FastForward15Icon :size=\"44\" />\n </button>\n </div>\n </div>\n</template>\n\n<script setup lang=\"ts\">\nimport Rewind15Icon from \"vue-material-design-icons/Rewind15.vue\";\nimport FastForward15Icon from \"vue-material-design-icons/FastForward15.vue\";\nimport ChevronDownIcon from \"vue-material-design-icons/ChevronDown.vue\";\nimport {usePlayerDisplayTime} from \"../../composable/player/usePlayerDisplayTime\";\nimport PlayerChaptering from \"./chaptering/PlayerChaptering.vue\";\nimport PlayerImage from \"./elements/PlayerImage.vue\";\nimport PlayerTitle from \"./elements/PlayerTitle.vue\";\nimport PlayerPlayButton from \"./elements/PlayerPlayButton.vue\";\nimport { computed, defineAsyncComponent } from \"vue\";\nimport { usePlayerStore } from \"../../../stores/PlayerStore\";\nimport { useI18n } from \"vue-i18n\";\nimport { state as sdkParams } from \"../../../stores/ParamSdkStore\";\nimport ClassicLoading from \"../../form/ClassicLoading.vue\";\nimport { usePlayerTranscript } from \"../../composable/player/usePlayerTranscript\";\n\nconst RadioHistory = defineAsyncComponent(\n () => import(\"./radio/RadioHistory.vue\"),\n);\nconst PlayerProgressBar = defineAsyncComponent(\n () => import(\"./progressbar/PlayerProgressBar.vue\"),\n);\n\n//Props\ndefineProps( {\n playerError: { default: false, type: Boolean },\n displayAlertBar: { default: false, type: Boolean },\n percentLiveProgress: { default: 0, type: Number },\n durationLivePosition: { default: 0, type: Number },\n listenTime: { default: 0, type: Number },\n hlsReady: { default: false, type: Boolean },\n});\n\n//Emits\nconst emit = defineEmits(['changePlayerLargeVersion']);\n\n//Composables\nconst { \n transcriptText,\n radioUrl,\n isAdPlaying,\n displayPlayTime,\n displayTotalTime,\n} = usePlayerDisplayTime();\nconst { t } = useI18n();\nconst playerStore = usePlayerStore();\nconst { generatingTranscriptLanguage } = usePlayerTranscript();\n\n/** Info message to display regarding transcript */\nconst transcriptInfo = computed((): string|undefined => {\n if (sdkParams.player.showAITranscriptWarning === true) {\n return t('Player - Transcription - AI Warning');\n }\n return undefined;\n});\n\n//Methods\nfunction changePlayerLargeVersion() {\n emit(\"changePlayerLargeVersion\");\n}\nfunction seekClick(addTime: number): void {\n const audioPlayer: HTMLAudioElement | null =\n document.querySelector(\"#audio-player\");\n if (!audioPlayer) {\n return;\n }\n const seekTo = audioPlayer.currentTime + addTime;\n if (playerStore.playerPodcast || playerStore.playerLive) {\n playerStore.playerUpdateSeekTime(seekTo > 0 ? seekTo : 0);\n }\n audioPlayer.currentTime = seekTo > 0 ? seekTo : 0;\n}\n</script>\n\n<style scoped lang=\"scss\">\n.octopus-app {\n .player-container .img-box {\n width: 10rem;\n height: 10rem;\n }\n\n .player-reduce-button {\n position: absolute;\n right: 0;\n font-size: 1.2rem !important;\n }\n\n .player-grow-large-content {\n width: 100%;\n padding: 1rem 2rem;\n\n @media (width <= 960px) {\n padding: 0.5rem;\n }\n }\n\n .transcript {\n display: flex;\n flex-direction: column;\n padding: 0 1rem;\n width: 100%;\n \n .transcript-info {\n font-style: italic;\n font-size: 16px;\n }\n }\n\n .transcript-bg {\n background: var(--octopus-player-transcript-bg-color);\n }\n}\n\n.player-text {\n color: var(--octopus-player-text-color);\n}\n</style>\n","<template>\n <div\n class=\"d-flex flex-column align-items-center my-2 flex-grow-1 player-text position-relative overflow-y-auto\"\n >\n <button\n :title=\"t('Reduce')\"\n class=\"player-reduce-button btn bg-transparent player-text\"\n @click=\"changePlayerLargeVersion\"\n >\n <ChevronDownIcon :size=\"40\" />\n </button>\n <PlayerImage :image-width=\"200\" />\n <PlayerTitle\n :player-error=\"playerError\"\n :hls-ready=\"hlsReady\"\n title-class=\"h3\"\n />\n <PlayerChaptering class=\"justify-content-center w-100\" />\n <div class=\"player-grow-large-content\">\n <PlayerProgressBar\n class-progress=\"large\"\n :show-comments=\"true\"\n :display-alert-bar=\"displayAlertBar\"\n :percent-live-progress=\"percentLiveProgress\"\n :duration-live-position=\"durationLivePosition\"\n :player-error=\"playerError\"\n :listen-time=\"listenTime\"\n />\n <div\n v-if=\"!playerError && (!radioUrl || isAdPlaying)\"\n class=\"d-flex justify-content-between\"\n >\n <div>{{ displayPlayTime }}</div>\n <div>{{ displayTotalTime }}</div>\n </div>\n <RadioHistory v-if=\"radioUrl\" />\n </div>\n\n\n <!-- Transcription -->\n <div\n v-if=\"transcriptText.length > 0 && !isAdPlaying\"\n class=\"transcript\"\n >\n <div class=\"flex-grow-1 p-1 text-center w-100 transcript-bg rounded\">\n <div\n v-for=\"line, i in transcriptText\"\n :key=\"i\"\n >\n {{ line }}\n </div>\n </div>\n <ClassicLoading\n v-if=\"generatingTranscriptLanguage\"\n small\n spinner-color=\"white\"\n :loading-text=\"$t('Player - Generating subtitles', { language: generatingTranscriptLanguage })\"\n />\n\n <div\n v-if=\"transcriptInfo\"\n class=\"flex-grow-1 p-1 text-center transcript-info rounded\"\n >\n {{ transcriptInfo }}\n </div>\n </div>\n\n <!-- Buttons -->\n <div class=\"d-flex align-items-center flex-grow-1\">\n <button\n title=\"-15''\"\n class=\"btn bg-transparent player-text\"\n :disabled=\"isAdPlaying\"\n @click=\"seekClick(-15)\"\n >\n <Rewind15Icon :size=\"44\" />\n </button>\n <PlayerPlayButton :player-error=\"playerError\" :is-big-button=\"true\" />\n\n <button\n title=\"+15''\"\n class=\"btn bg-transparent player-text\"\n :disabled=\"isAdPlaying\"\n @click=\"seekClick(15)\"\n >\n <FastForward15Icon :size=\"44\" />\n </button>\n </div>\n </div>\n</template>\n\n<script setup lang=\"ts\">\nimport Rewind15Icon from \"vue-material-design-icons/Rewind15.vue\";\nimport FastForward15Icon from \"vue-material-design-icons/FastForward15.vue\";\nimport ChevronDownIcon from \"vue-material-design-icons/ChevronDown.vue\";\nimport {usePlayerDisplayTime} from \"../../composable/player/usePlayerDisplayTime\";\nimport PlayerChaptering from \"./chaptering/PlayerChaptering.vue\";\nimport PlayerImage from \"./elements/PlayerImage.vue\";\nimport PlayerTitle from \"./elements/PlayerTitle.vue\";\nimport PlayerPlayButton from \"./elements/PlayerPlayButton.vue\";\nimport { computed, defineAsyncComponent } from \"vue\";\nimport { usePlayerStore } from \"../../../stores/PlayerStore\";\nimport { useI18n } from \"vue-i18n\";\nimport { state as sdkParams } from \"../../../stores/ParamSdkStore\";\nimport ClassicLoading from \"../../form/ClassicLoading.vue\";\nimport { usePlayerTranscript } from \"../../composable/player/usePlayerTranscript\";\n\nconst RadioHistory = defineAsyncComponent(\n () => import(\"./radio/RadioHistory.vue\"),\n);\nconst PlayerProgressBar = defineAsyncComponent(\n () => import(\"./progressbar/PlayerProgressBar.vue\"),\n);\n\n//Props\ndefineProps( {\n playerError: { default: false, type: Boolean },\n displayAlertBar: { default: false, type: Boolean },\n percentLiveProgress: { default: 0, type: Number },\n durationLivePosition: { default: 0, type: Number },\n listenTime: { default: 0, type: Number },\n hlsReady: { default: false, type: Boolean },\n});\n\n//Emits\nconst emit = defineEmits(['changePlayerLargeVersion']);\n\n//Composables\nconst { \n transcriptText,\n radioUrl,\n isAdPlaying,\n displayPlayTime,\n displayTotalTime,\n} = usePlayerDisplayTime();\nconst { t } = useI18n();\nconst playerStore = usePlayerStore();\nconst { generatingTranscriptLanguage } = usePlayerTranscript();\n\n/** Info message to display regarding transcript */\nconst transcriptInfo = computed((): string|undefined => {\n if (sdkParams.player.showAITranscriptWarning === true) {\n return t('Player - Transcription - AI Warning');\n }\n return undefined;\n});\n\n//Methods\nfunction changePlayerLargeVersion() {\n emit(\"changePlayerLargeVersion\");\n}\nfunction seekClick(addTime: number): void {\n const audioPlayer: HTMLAudioElement | null =\n document.querySelector(\"#audio-player\");\n if (!audioPlayer) {\n return;\n }\n const seekTo = audioPlayer.currentTime + addTime;\n if (playerStore.playerPodcast || playerStore.playerLive) {\n playerStore.playerUpdateSeekTime(seekTo > 0 ? seekTo : 0);\n }\n audioPlayer.currentTime = seekTo > 0 ? seekTo : 0;\n}\n</script>\n\n<style scoped lang=\"scss\">\n.octopus-app {\n .player-container .img-box {\n width: 10rem;\n height: 10rem;\n }\n\n .player-reduce-button {\n position: absolute;\n right: 0;\n font-size: 1.2rem !important;\n }\n\n .player-grow-large-content {\n width: 100%;\n padding: 1rem 2rem;\n\n @media (width <= 960px) {\n padding: 0.5rem;\n }\n }\n\n .transcript {\n display: flex;\n flex-direction: column;\n padding: 0 1rem;\n width: 100%;\n \n .transcript-info {\n font-style: italic;\n font-size: 16px;\n }\n }\n\n .transcript-bg {\n background: var(--octopus-player-transcript-bg-color);\n }\n}\n\n.player-text {\n color: var(--octopus-player-text-color);\n}\n</style>\n"],"mappings":"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"}