@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":"TopBar-CeQQ1hgH.mjs","names":["_hoisted_1","_hoisted_2","_hoisted_3","_hoisted_4","_hoisted_5","_hoisted_6","_sfc_render","_openBlock","_createElementBlock","_createElementVNode","_toDisplayString","_createVNode","_createCommentVNode","_sfc_main","_hoisted_1","_hoisted_2","_hoisted_3","_hoisted_4","_hoisted_5","_hoisted_6","_hoisted_7","_hoisted_8","_hoisted_9","_hoisted_10","_hoisted_11","_sfc_render","_openBlock","_createElementBlock","_normalizeClass","_createElementVNode","_createVNode","_toDisplayString","_Fragment","_renderList","_createCommentVNode","_createTextVNode","_sfc_main","_hoisted_1","_hoisted_2","_sfc_render","_resolveComponent","_openBlock","_createElementBlock","_normalizeClass","_createElementVNode","_createCommentVNode","_createVNode","_withCtx","_toDisplayString","_Fragment","_renderList","_withDirectives","_createTextVNode","_vShow","_mergeProps","_sfc_main","_openBlock","_createElementBlock","_Fragment","_createElementVNode","_normalizeClass","_normalizeStyle","_createVNode","_toDisplayString","_createCommentVNode","_withDirectives","_createBlock","_vShow","_sfc_main"],"sources":["../src/components/misc/RightsScopeSelector.vue","../src/components/misc/RightsScopeSelector.vue","../src/components/misc/RightsScopeMenu.vue","../src/components/misc/RightsScopeMenu.vue","../src/components/misc/TopBarMainContent.vue","../src/components/misc/TopBarMainContent.vue","../src/components/misc/TopBar.vue","../src/components/misc/TopBar.vue"],"sourcesContent":["<template>\n <div\n v-if=\"subOrganisations.length > 0\"\n class=\"d-flex flex-column ms-4\"\n >\n <span class=\"label mb-1\">\n {{ t('RightsScopeSelector - Title', { rubriquage: rubriquage?.title}) }}\n </span>\n <div class=\"d-flex value\">\n <button\n type=\"button\"\n class=\"btn-transparent d-flex align-items-center\"\n aria-controls=\"suborga-list-menu\"\n :aria-expanded=\"open\"\n @click=\"$emit('change')\"\n >\n <span\n v-if=\"selectedSubOrganisation\"\n class=\"me-2 selected\"\n >\n {{ selectedSubOrganisation.name }}\n </span>\n <span v-else class=\"me-2\">\n {{ t('RightsScopeSelector - No filter') }}\n </span>\n <SwapIcon class=\"icon\" />\n </button>\n <button\n v-if=\"selectedSubOrganisation\"\n type=\"button\"\n class=\"btn-transparent\"\n @click=\"unselectSubOrganisation\"\n >\n <ClearIcon\n class=\"icon\"\n :title=\"t('RightsScopeSelector - Clear filter')\"\n />\n </button>\n </div>\n </div>\n</template>\n\n<script setup lang=\"ts\">\nimport { useAuthStore } from \"../../stores/AuthStore\";\nimport { ref, toRef, watch } from \"vue\";\nimport { useSubOrganisations } from \"../composable/useSubOrganisations\";\nimport { Rubriquage } from \"@/stores/class/rubrique/rubriquage\";\nimport { rubriquesApi } from \"@/api\";\n\nimport SwapIcon from \"vue-material-design-icons/SwapHorizontalCircleOutline.vue\";\nimport ClearIcon from \"vue-material-design-icons/CloseCircleOutline.vue\";\nimport { useI18n } from \"vue-i18n\";\n\n//Composables\nconst { t } = useI18n();\nconst authStore = useAuthStore();\nconst authOrgaId = toRef(authStore, 'authOrgaId');\nconst rubriquage = ref<Rubriquage|null>(null);\nconst {\n selectedSubOrganisation,\n subOrganisations,\n unselectSubOrganisation\n} = useSubOrganisations(authOrgaId);\n\ndefineProps<{\n /** Whether the sub organisation menu controlled by this selector is open */\n open?: boolean;\n}>();\n\ndefineEmits<{\n (e: 'change'): void;\n}>();\n\nwatch(authOrgaId, async () => {\n rubriquage.value = await rubriquesApi.findRestrictiveRubriquage(authOrgaId.value);\n}, { immediate: true });\n</script>\n\n<style scoped lang=\"scss\">\n#header-scope-selector:deep(.octopus-select-field) {\n background: transparent;\n border-color: rgba(255, 255, 255, 0.1);\n margin-left: 200px;\n\n .octopus-select-value {\n color: var(--octopus-secondary);\n font-weight: bold;\n align-content: center;\n }\n\n input {\n color: white;\n }\n\n button {\n color: rgba(255, 255, 255, 0.3);\n }\n}\n\n.value {\n color: var(--octopus-secondary);\n font-weight: bold;\n align-content: center;\n align-items: center;\n\n button {\n color: inherit;\n font-weight: inherit;\n text-align: start;\n padding: 0;\n }\n\n span:not(.selected):not(.icon) {\n opacity: .5;\n transition: opacity .5s;\n\n &:hover {\n opacity: .7;\n }\n }\n}\n\n.label {\n color: rgba(255, 255, 255, 0.3);\n font-weight: 600;\n font-style: italic;\n font-size: 14px;\n white-space: nowrap;\n overflow-y: visible;\n}\n\n.icon {\n opacity: .7;\n transition: opacity .5s;\n\n &:hover {\n opacity: 1;\n }\n}\n</style>\n","<template>\n <div\n v-if=\"subOrganisations.length > 0\"\n class=\"d-flex flex-column ms-4\"\n >\n <span class=\"label mb-1\">\n {{ t('RightsScopeSelector - Title', { rubriquage: rubriquage?.title}) }}\n </span>\n <div class=\"d-flex value\">\n <button\n type=\"button\"\n class=\"btn-transparent d-flex align-items-center\"\n aria-controls=\"suborga-list-menu\"\n :aria-expanded=\"open\"\n @click=\"$emit('change')\"\n >\n <span\n v-if=\"selectedSubOrganisation\"\n class=\"me-2 selected\"\n >\n {{ selectedSubOrganisation.name }}\n </span>\n <span v-else class=\"me-2\">\n {{ t('RightsScopeSelector - No filter') }}\n </span>\n <SwapIcon class=\"icon\" />\n </button>\n <button\n v-if=\"selectedSubOrganisation\"\n type=\"button\"\n class=\"btn-transparent\"\n @click=\"unselectSubOrganisation\"\n >\n <ClearIcon\n class=\"icon\"\n :title=\"t('RightsScopeSelector - Clear filter')\"\n />\n </button>\n </div>\n </div>\n</template>\n\n<script setup lang=\"ts\">\nimport { useAuthStore } from \"../../stores/AuthStore\";\nimport { ref, toRef, watch } from \"vue\";\nimport { useSubOrganisations } from \"../composable/useSubOrganisations\";\nimport { Rubriquage } from \"@/stores/class/rubrique/rubriquage\";\nimport { rubriquesApi } from \"@/api\";\n\nimport SwapIcon from \"vue-material-design-icons/SwapHorizontalCircleOutline.vue\";\nimport ClearIcon from \"vue-material-design-icons/CloseCircleOutline.vue\";\nimport { useI18n } from \"vue-i18n\";\n\n//Composables\nconst { t } = useI18n();\nconst authStore = useAuthStore();\nconst authOrgaId = toRef(authStore, 'authOrgaId');\nconst rubriquage = ref<Rubriquage|null>(null);\nconst {\n selectedSubOrganisation,\n subOrganisations,\n unselectSubOrganisation\n} = useSubOrganisations(authOrgaId);\n\ndefineProps<{\n /** Whether the sub organisation menu controlled by this selector is open */\n open?: boolean;\n}>();\n\ndefineEmits<{\n (e: 'change'): void;\n}>();\n\nwatch(authOrgaId, async () => {\n rubriquage.value = await rubriquesApi.findRestrictiveRubriquage(authOrgaId.value);\n}, { immediate: true });\n</script>\n\n<style scoped lang=\"scss\">\n#header-scope-selector:deep(.octopus-select-field) {\n background: transparent;\n border-color: rgba(255, 255, 255, 0.1);\n margin-left: 200px;\n\n .octopus-select-value {\n color: var(--octopus-secondary);\n font-weight: bold;\n align-content: center;\n }\n\n input {\n color: white;\n }\n\n button {\n color: rgba(255, 255, 255, 0.3);\n }\n}\n\n.value {\n color: var(--octopus-secondary);\n font-weight: bold;\n align-content: center;\n align-items: center;\n\n button {\n color: inherit;\n font-weight: inherit;\n text-align: start;\n padding: 0;\n }\n\n span:not(.selected):not(.icon) {\n opacity: .5;\n transition: opacity .5s;\n\n &:hover {\n opacity: .7;\n }\n }\n}\n\n.label {\n color: rgba(255, 255, 255, 0.3);\n font-weight: 600;\n font-style: italic;\n font-size: 14px;\n white-space: nowrap;\n overflow-y: visible;\n}\n\n.icon {\n opacity: .7;\n transition: opacity .5s;\n\n &:hover {\n opacity: 1;\n }\n}\n</style>\n","<template>\n <div\n id=\"suborga-list-menu\"\n ref=\"menuNav\"\n role=\"dialog\"\n aria-labelledby=\"suborga-list-menu-title\"\n :class=\"{ shown: open }\"\n :inert=\"!open\"\n >\n <button\n type=\"button\"\n class=\"btn-transparent close-btn\"\n @click=\"close\"\n >\n <CloseIcon :title=\"t('Close')\" />\n </button>\n\n <div class=\"search\">\n <h3 id=\"suborga-list-menu-title\">\n {{ t('RightsScopeMenu - Title') }}\n </h3>\n <ClassicInputText\n v-model:text-init=\"search\"\n :placeholder=\"t('RightsScopeMenu - Search')\"\n can-be-null\n />\n </div>\n\n <div v-if=\"showFirstList\" class=\"suborga-list mb-4\">\n <h4>{{ t('RightsScopeMenu - First list - Title') }}</h4>\n <span\n v-for=\"suborga in userSubOrgas\"\n :key=\"suborga.id\"\n class=\"suborga\"\n @click=\"select(suborga)\"\n >\n {{ suborga.name }}\n </span>\n </div>\n\n <div class=\"suborga-list\">\n <h4>{{ secondListTitle }}</h4>\n\n <div v-if=\"showLetters\" class=\"letters mt-2\">\n <button\n v-for=\"letter in 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'\"\n :key=\"letter\"\n type=\"button\"\n class=\"letter\"\n :title=\"subOrgaByLetter.has(letter) ? undefined : t('RightsScopeMenu - Letters - No sub orga for letter')\"\n :disabled=\"!subOrgaByLetter.has(letter)\"\n @click=\"scrollToLetter(letter)\"\n >\n {{ letter }}\n </button>\n </div>\n\n <div\n v-for=\"[letter, suborgaForLetter] in subOrgaByLetter\"\n :key=\"'suborgas-' + letter\"\n >\n <div\n :id=\"'suborga-letter-' + letter\"\n class=\"letter\"\n tabindex=\"-1\"\n >\n {{ letter }}\n </div>\n <span\n v-for=\"suborga in suborgaForLetter\"\n :key=\"suborga.id\"\n class=\"suborga\"\n @click=\"select(suborga)\"\n >\n {{ suborga.name }}\n </span>\n </div>\n </div>\n\n <p role=\"status\" class=\"text-indic px-3\">\n <template v-if=\"noResult\">\n {{ t('RightsScopeMenu - No result') }}\n </template>\n </p>\n </div>\n</template>\n\n<script setup lang=\"ts\">\nimport { computed, defineAsyncComponent, nextTick, onUnmounted, ref, toRef, useTemplateRef, watch } from 'vue';\nimport { useAuthStore } from '../../stores/AuthStore';\nimport { SubOrganisation, useSubOrganisations } from '../composable/useSubOrganisations';\nimport { useI18n } from 'vue-i18n';\nimport CloseIcon from 'vue-material-design-icons/Close.vue';\n\nconst ClassicInputText = defineAsyncComponent(() => import('../form/ClassicInputText.vue'));\n\nconst { t } = useI18n();\n\n///////////////////////////////\n// Menu\n///////////////////////////////\nconst props = defineProps<{\n open?: boolean;\n}>();\n\nconst emit = defineEmits<{\n (e: 'update:open', open: boolean): void;\n}>();\n\nconst menuNav = useTemplateRef('menuNav');\nlet previousFocus: HTMLElement | null = null;\n\nwatch(() => props.open, async open => {\n if (open) {\n previousFocus = document.activeElement as HTMLElement | null;\n setTimeout(() => document.addEventListener('click', openOnClick), 200);\n document.addEventListener('keydown', closeOnEscape);\n // Wait for the menu to no longer be inert before focusing\n await nextTick();\n menuNav.value?.querySelector('input')?.focus();\n } else {\n removeListeners();\n // Only give focus back if it would otherwise be lost (inside the\n // closed menu, or on body), to avoid stealing it after a click\n // elsewhere\n const active = document.activeElement;\n if (active === document.body || menuNav.value?.contains(active)) {\n previousFocus?.focus();\n }\n }\n});\n\nonUnmounted(removeListeners);\n\nfunction removeListeners(): void {\n document.removeEventListener('click', openOnClick);\n document.removeEventListener('keydown', closeOnEscape);\n}\n\nfunction close(): void {\n emit('update:open', false);\n}\n\nfunction openOnClick(event: MouseEvent) {\n const menu = menuNav.value;\n if (props.open && event.target && !menu?.contains(event.target as Node)) {\n close();\n }\n}\n\nfunction closeOnEscape(event: KeyboardEvent): void {\n if (event.key === 'Escape') {\n close();\n }\n}\n\nfunction prefersReducedMotion(): boolean {\n return window.matchMedia('(prefers-reduced-motion: reduce)').matches;\n}\n\n///////////////////////////////\n// Display list\n///////////////////////////////\nconst search = ref('');\nconst authStore = useAuthStore();\nconst { subOrganisations, selectSubOrganisation } = useSubOrganisations(toRef(authStore, 'authOrgaId'));\n\nfunction normalize(str: string): string {\n // Separate accented character in letter/diacritic, then remove the\n // diacritic\n return str.toUpperCase().normalize(\"NFD\").replace(/\\p{Diacritic}/gu, '');\n}\n\nconst normalizedSearch = computed((): string => {\n return normalize(search.value);\n});\n\nconst userSubOrgas = computed((): Array<SubOrganisation> => {\n const userScope = authStore.userScope;\n return subOrganisations.value\n .filter(sub => sub.name.includes(normalizedSearch.value))\n .filter(sub => userScope.includes(sub.id))\n .sort((o1, o2) => o1.name.localeCompare(o2.name))\n ;\n});\n\nconst showFirstList = computed((): boolean => {\n return userSubOrgas.value.length > 0;\n});\n\nconst secondListTitle = computed((): string => {\n const userScope = authStore.userScope;\n if (userScope.length === 0) {\n return t('RightsScopeMenu - Second list - Title unscoped');\n } else {\n return t('RightsScopeMenu - Second list - Title scoped');\n }\n});\n\nconst showLetters = computed((): boolean => {\n return subOrganisations.value.length > 10;\n});\n\nconst subOrgaByLetter = computed((): Map<string, Array<SubOrganisation>> => {\n const data: Map<string, Array<SubOrganisation>> = new Map();\n\n const filtered = subOrganisations.value\n .filter(sub => sub.name.includes(normalizedSearch.value))\n .filter(sub => !userSubOrgas.value.includes(sub))\n .sort((o1, o2) => o1.name.localeCompare(o2.name))\n ;\n\n if (showLetters.value) {\n filtered.forEach((sub: SubOrganisation) => {\n const firstLetter = sub.name[0];\n if (data.has(firstLetter)) {\n const present = data.get(firstLetter);\n present!.push(sub);\n } else {\n data.set(firstLetter, [sub]);\n }\n });\n } else {\n data.set(null, filtered);\n }\n\n data.values().forEach(ary => ary.sort((a, b) => a.name.localeCompare(b.name)));\n\n return data;\n});\n\nconst noResult = computed((): boolean => {\n return !showFirstList.value\n && [...subOrgaByLetter.value.values()].every(ary => ary.length === 0);\n});\n\nfunction scrollToLetter(letter: string): void {\n if (!subOrgaByLetter.value.has(letter)) {\n return;\n }\n const container = menuNav.value;\n const target: HTMLElement | null | undefined = container?.querySelector(`#suborga-letter-${letter}`);\n if (container && target) {\n container.scrollTo({\n top: target.offsetTop,\n behavior: prefersReducedMotion() ? 'auto' : 'smooth'\n });\n target.focus({ preventScroll: true });\n }\n}\n\n///////////////////////////////\n// Sub orga selection\n///////////////////////////////\nfunction select(org: SubOrganisation): void {\n selectSubOrganisation(org);\n emit('update:open', false);\n}\n</script>\n\n<style scoped lang=\"scss\">\n#suborga-list-menu-btn {\n transition: rotate 0.3s ease-out;\n \n &.active {\n rotate: 90deg;\n }\n}\n\n#suborga-list-menu {\n z-index: 100;\n \n --width: 30dvw;\n\n // Positioning\n position: fixed;\n left: 0;\n top: 0;\n width: var(--width);\n height: 100dvh;\n\n // Margins\n padding: 1.5em 0;\n\n // Overflow\n overflow-y: auto;\n\n // Style\n background-color: white;\n //border-radius: 0 var(--octopus-border-radius);\n border-right: 2px solid var(--octopus-primary);\n\n // Animation\n @media (prefers-reduced-motion: no-preference) {\n transition: left 0.6s ease-out;\n }\n\n &.shown {\n left: 0;\n }\n\n &:not(.shown) {\n left: calc(var(--width) * -1);\n }\n\n @media(width <= 960px) {\n --width: 100dvw;\n }\n}\n\n.close-btn {\n position: absolute;\n top: 0.5rem;\n right: 0.5rem;\n}\n\nh4 {\n margin-left: 10px;\n color: var(--octopus-primary);\n}\n\n.letter {\n color: var(--pm-accent);\n font-weight: bold;\n font-size: 1em;\n background-color: oklch(from var(--pm-accent) l c h / 15%);\n}\n\n.search {\n padding: 0 1rem;\n\n h3 {\n color: var(--pm-accent);\n text-align: center;\n }\n}\n\n.letters {\n display: grid;\n grid-template-columns: repeat(9, 28px);\n width: fit-content;\n margin: auto;\n\n .letter {\n border: none;\n display: flex;\n align-items: center;\n justify-content: center;\n color: black;\n margin: 7px 0 8px;\n width: 24px;\n height: 24px;\n border-radius: 8px;\n font-size: 12px;\n padding: 0 !important;\n cursor: pointer;\n\n &:disabled {\n background-color: #EBF3FE;\n cursor: not-allowed;\n }\n }\n}\n\n.suborga-list {\n .letter {\n padding: 0.1rem 1rem;\n color: var(--octopus-primary);\n }\n\n .suborga {\n display: block;\n padding: 0.5rem 1.4rem;\n cursor: pointer;\n\n &:not(:last-child) {\n border-bottom: 1px solid var(--octopus-primary-really-transparent);\n }\n }\n}\n</style>\n","<template>\n <div\n id=\"suborga-list-menu\"\n ref=\"menuNav\"\n role=\"dialog\"\n aria-labelledby=\"suborga-list-menu-title\"\n :class=\"{ shown: open }\"\n :inert=\"!open\"\n >\n <button\n type=\"button\"\n class=\"btn-transparent close-btn\"\n @click=\"close\"\n >\n <CloseIcon :title=\"t('Close')\" />\n </button>\n\n <div class=\"search\">\n <h3 id=\"suborga-list-menu-title\">\n {{ t('RightsScopeMenu - Title') }}\n </h3>\n <ClassicInputText\n v-model:text-init=\"search\"\n :placeholder=\"t('RightsScopeMenu - Search')\"\n can-be-null\n />\n </div>\n\n <div v-if=\"showFirstList\" class=\"suborga-list mb-4\">\n <h4>{{ t('RightsScopeMenu - First list - Title') }}</h4>\n <span\n v-for=\"suborga in userSubOrgas\"\n :key=\"suborga.id\"\n class=\"suborga\"\n @click=\"select(suborga)\"\n >\n {{ suborga.name }}\n </span>\n </div>\n\n <div class=\"suborga-list\">\n <h4>{{ secondListTitle }}</h4>\n\n <div v-if=\"showLetters\" class=\"letters mt-2\">\n <button\n v-for=\"letter in 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'\"\n :key=\"letter\"\n type=\"button\"\n class=\"letter\"\n :title=\"subOrgaByLetter.has(letter) ? undefined : t('RightsScopeMenu - Letters - No sub orga for letter')\"\n :disabled=\"!subOrgaByLetter.has(letter)\"\n @click=\"scrollToLetter(letter)\"\n >\n {{ letter }}\n </button>\n </div>\n\n <div\n v-for=\"[letter, suborgaForLetter] in subOrgaByLetter\"\n :key=\"'suborgas-' + letter\"\n >\n <div\n :id=\"'suborga-letter-' + letter\"\n class=\"letter\"\n tabindex=\"-1\"\n >\n {{ letter }}\n </div>\n <span\n v-for=\"suborga in suborgaForLetter\"\n :key=\"suborga.id\"\n class=\"suborga\"\n @click=\"select(suborga)\"\n >\n {{ suborga.name }}\n </span>\n </div>\n </div>\n\n <p role=\"status\" class=\"text-indic px-3\">\n <template v-if=\"noResult\">\n {{ t('RightsScopeMenu - No result') }}\n </template>\n </p>\n </div>\n</template>\n\n<script setup lang=\"ts\">\nimport { computed, defineAsyncComponent, nextTick, onUnmounted, ref, toRef, useTemplateRef, watch } from 'vue';\nimport { useAuthStore } from '../../stores/AuthStore';\nimport { SubOrganisation, useSubOrganisations } from '../composable/useSubOrganisations';\nimport { useI18n } from 'vue-i18n';\nimport CloseIcon from 'vue-material-design-icons/Close.vue';\n\nconst ClassicInputText = defineAsyncComponent(() => import('../form/ClassicInputText.vue'));\n\nconst { t } = useI18n();\n\n///////////////////////////////\n// Menu\n///////////////////////////////\nconst props = defineProps<{\n open?: boolean;\n}>();\n\nconst emit = defineEmits<{\n (e: 'update:open', open: boolean): void;\n}>();\n\nconst menuNav = useTemplateRef('menuNav');\nlet previousFocus: HTMLElement | null = null;\n\nwatch(() => props.open, async open => {\n if (open) {\n previousFocus = document.activeElement as HTMLElement | null;\n setTimeout(() => document.addEventListener('click', openOnClick), 200);\n document.addEventListener('keydown', closeOnEscape);\n // Wait for the menu to no longer be inert before focusing\n await nextTick();\n menuNav.value?.querySelector('input')?.focus();\n } else {\n removeListeners();\n // Only give focus back if it would otherwise be lost (inside the\n // closed menu, or on body), to avoid stealing it after a click\n // elsewhere\n const active = document.activeElement;\n if (active === document.body || menuNav.value?.contains(active)) {\n previousFocus?.focus();\n }\n }\n});\n\nonUnmounted(removeListeners);\n\nfunction removeListeners(): void {\n document.removeEventListener('click', openOnClick);\n document.removeEventListener('keydown', closeOnEscape);\n}\n\nfunction close(): void {\n emit('update:open', false);\n}\n\nfunction openOnClick(event: MouseEvent) {\n const menu = menuNav.value;\n if (props.open && event.target && !menu?.contains(event.target as Node)) {\n close();\n }\n}\n\nfunction closeOnEscape(event: KeyboardEvent): void {\n if (event.key === 'Escape') {\n close();\n }\n}\n\nfunction prefersReducedMotion(): boolean {\n return window.matchMedia('(prefers-reduced-motion: reduce)').matches;\n}\n\n///////////////////////////////\n// Display list\n///////////////////////////////\nconst search = ref('');\nconst authStore = useAuthStore();\nconst { subOrganisations, selectSubOrganisation } = useSubOrganisations(toRef(authStore, 'authOrgaId'));\n\nfunction normalize(str: string): string {\n // Separate accented character in letter/diacritic, then remove the\n // diacritic\n return str.toUpperCase().normalize(\"NFD\").replace(/\\p{Diacritic}/gu, '');\n}\n\nconst normalizedSearch = computed((): string => {\n return normalize(search.value);\n});\n\nconst userSubOrgas = computed((): Array<SubOrganisation> => {\n const userScope = authStore.userScope;\n return subOrganisations.value\n .filter(sub => sub.name.includes(normalizedSearch.value))\n .filter(sub => userScope.includes(sub.id))\n .sort((o1, o2) => o1.name.localeCompare(o2.name))\n ;\n});\n\nconst showFirstList = computed((): boolean => {\n return userSubOrgas.value.length > 0;\n});\n\nconst secondListTitle = computed((): string => {\n const userScope = authStore.userScope;\n if (userScope.length === 0) {\n return t('RightsScopeMenu - Second list - Title unscoped');\n } else {\n return t('RightsScopeMenu - Second list - Title scoped');\n }\n});\n\nconst showLetters = computed((): boolean => {\n return subOrganisations.value.length > 10;\n});\n\nconst subOrgaByLetter = computed((): Map<string, Array<SubOrganisation>> => {\n const data: Map<string, Array<SubOrganisation>> = new Map();\n\n const filtered = subOrganisations.value\n .filter(sub => sub.name.includes(normalizedSearch.value))\n .filter(sub => !userSubOrgas.value.includes(sub))\n .sort((o1, o2) => o1.name.localeCompare(o2.name))\n ;\n\n if (showLetters.value) {\n filtered.forEach((sub: SubOrganisation) => {\n const firstLetter = sub.name[0];\n if (data.has(firstLetter)) {\n const present = data.get(firstLetter);\n present!.push(sub);\n } else {\n data.set(firstLetter, [sub]);\n }\n });\n } else {\n data.set(null, filtered);\n }\n\n data.values().forEach(ary => ary.sort((a, b) => a.name.localeCompare(b.name)));\n\n return data;\n});\n\nconst noResult = computed((): boolean => {\n return !showFirstList.value\n && [...subOrgaByLetter.value.values()].every(ary => ary.length === 0);\n});\n\nfunction scrollToLetter(letter: string): void {\n if (!subOrgaByLetter.value.has(letter)) {\n return;\n }\n const container = menuNav.value;\n const target: HTMLElement | null | undefined = container?.querySelector(`#suborga-letter-${letter}`);\n if (container && target) {\n container.scrollTo({\n top: target.offsetTop,\n behavior: prefersReducedMotion() ? 'auto' : 'smooth'\n });\n target.focus({ preventScroll: true });\n }\n}\n\n///////////////////////////////\n// Sub orga selection\n///////////////////////////////\nfunction select(org: SubOrganisation): void {\n selectSubOrganisation(org);\n emit('update:open', false);\n}\n</script>\n\n<style scoped lang=\"scss\">\n#suborga-list-menu-btn {\n transition: rotate 0.3s ease-out;\n \n &.active {\n rotate: 90deg;\n }\n}\n\n#suborga-list-menu {\n z-index: 100;\n \n --width: 30dvw;\n\n // Positioning\n position: fixed;\n left: 0;\n top: 0;\n width: var(--width);\n height: 100dvh;\n\n // Margins\n padding: 1.5em 0;\n\n // Overflow\n overflow-y: auto;\n\n // Style\n background-color: white;\n //border-radius: 0 var(--octopus-border-radius);\n border-right: 2px solid var(--octopus-primary);\n\n // Animation\n @media (prefers-reduced-motion: no-preference) {\n transition: left 0.6s ease-out;\n }\n\n &.shown {\n left: 0;\n }\n\n &:not(.shown) {\n left: calc(var(--width) * -1);\n }\n\n @media(width <= 960px) {\n --width: 100dvw;\n }\n}\n\n.close-btn {\n position: absolute;\n top: 0.5rem;\n right: 0.5rem;\n}\n\nh4 {\n margin-left: 10px;\n color: var(--octopus-primary);\n}\n\n.letter {\n color: var(--pm-accent);\n font-weight: bold;\n font-size: 1em;\n background-color: oklch(from var(--pm-accent) l c h / 15%);\n}\n\n.search {\n padding: 0 1rem;\n\n h3 {\n color: var(--pm-accent);\n text-align: center;\n }\n}\n\n.letters {\n display: grid;\n grid-template-columns: repeat(9, 28px);\n width: fit-content;\n margin: auto;\n\n .letter {\n border: none;\n display: flex;\n align-items: center;\n justify-content: center;\n color: black;\n margin: 7px 0 8px;\n width: 24px;\n height: 24px;\n border-radius: 8px;\n font-size: 12px;\n padding: 0 !important;\n cursor: pointer;\n\n &:disabled {\n background-color: #EBF3FE;\n cursor: not-allowed;\n }\n }\n}\n\n.suborga-list {\n .letter {\n padding: 0.1rem 1rem;\n color: var(--octopus-primary);\n }\n\n .suborga {\n display: block;\n padding: 0.5rem 1.4rem;\n cursor: pointer;\n\n &:not(:last-child) {\n border-bottom: 1px solid var(--octopus-primary-really-transparent);\n }\n }\n}\n</style>\n","<template>\n <div class=\"top-bar-grid header-content\" :class=\"{ scrolled: titleIsDisplayed }\">\n <div class=\"d-flex align-items-center\">\n <!-- Logo to the left -->\n <router-link\n class=\"top-bar-logo d-block\"\n :to=\"{\n name: 'home',\n query: getQueriesRouter('home'),\n }\"\n :title=\"t('Home')\"\n >\n <img\n v-if=\"!filterStore.filterOrgaId || '' === imgUrl\"\n :src=\"logoUrl\"\n aria-hidden=\"true\"\n alt=\"\"\n width=\"140\"\n height=\"50\"\n title=\"Logo\"\n :class=\"generalStore.platformEducation ? 'education-logo' : 'octopus-logo'\"\n >\n <img\n v-else\n :src=\"useProxyImageUrl(imgUrl, '', '80')\"\n aria-hidden=\"true\"\n alt=\"\"\n class=\"client-logo\"\n title=\"Logo\"\n :class=\"generalStore.platformEducation ? 'education-logo' : ''\"\n >\n </router-link>\n\n <RightsScopeMenu v-model:open=\"menuOpen\" />\n <RightsScopeSelector\n class=\"ms-4\"\n :open=\"menuOpen\"\n @change=\"menuOpen = true\"\n />\n </div>\n\n <h1 v-if=\"titleIsDisplayed\" class=\"text-truncate m-0 align-self-center\">\n {{ titleDisplay }}\n </h1>\n\n <!-- Right section -->\n <div\n class=\"d-flex right-section\"\n :class=\"[\n inContentDisplayPage || isPhone\n ? 'flex-row-reverse align-items-center'\n : 'flex-column align-items-end',\n ]\"\n >\n <!-- Logo to the right -->\n <template v-if=\"filterStore.filterOrgaId && '' !== imgUrl\">\n <img\n v-if=\"authStore.isGarRole\"\n :src=\"logoUrl\"\n aria-hidden=\"true\"\n alt=\"\"\n width=\"100\"\n height=\"29\"\n class=\"ms-2\"\n title=\"Logo\"\n :class=\"generalStore.platformEducation ? 'education-logo' : 'octopus-logo'\"\n >\n <a\n v-else\n href=\"https://www.saooti.com/\"\n target=\"_blank\"\n rel=\"noreferrer noopener\"\n :title=\"t('New window', {text: 'Saooti'})\"\n >\n <img\n :src=\"logoUrl\"\n aria-hidden=\"true\"\n alt=\"\"\n title=\"Saooti\"\n width=\"100\"\n height=\"29\"\n class=\"ms-2\"\n :class=\"generalStore.platformEducation ? 'education-logo' : 'octopus-logo'\"\n >\n </a>\n </template>\n\n <div role=\"navigation\" class=\"d-flex align-items-center justify-content-end flex-grow-1\">\n <nav :aria-label=\"t('Site menu')\">\n <ul class=\"d-flex\">\n <template v-for=\"link in routerLinkArray\" :key=\"link.routeName\">\n <li v-if=\"link.condition\" class=\"li-style-none\">\n <router-link\n v-show=\"!isPhone\"\n :to=\"{\n name: link.routeName,\n query: getQueriesRouter(link.routeName),\n }\"\n class=\"link-hover py-2 px-3\"\n >\n {{ link.title }}\n </router-link>\n </li>\n </template>\n </ul>\n </nav>\n <button\n v-show=\"!isPhone && !inContentDisplayPage\"\n id=\"more-dropdown\"\n :title=\"t('More')\"\n class=\"d-flex-column flex-nowrap align-items-center btn-transparent py-2 px-3 text-white\"\n >\n <span class=\"link-hover\">\n {{ t(\"More\") }}\n </span>\n <ChevronDownIcon />\n </button>\n <ClassicPopover\n target=\"more-dropdown\"\n :only-click=\"true\"\n :is-fixed=\"true\"\n :left-pos=\"true\"\n :is-top-layer=\"true\"\n >\n <nav class=\"d-flex flex-column\" :aria-label=\"t('Site menu')\">\n <ul class=\"p-0 m-0\">\n <template v-for=\"link in routerLinkInsideArray\" :key=\"link.routeName\">\n <li\n v-if=\"link.condition\"\n class=\"li-style-none\"\n >\n <router-link\n :to=\"{\n name: link.routeName,\n query: getQueriesRouter(link.routeName),\n }\"\n class=\"p-1 octopus-dropdown-item\"\n >\n {{ link.title }}\n </router-link>\n </li>\n </template>\n </ul>\n </nav>\n </ClassicPopover>\n\n <MobileMenu\n :is-education=\"generalStore.platformEducation\"\n :show=\"mobileMenuDisplay\"\n :not-podcast-and-emission=\"inContentDisplayPage && !scrolled\"\n />\n <HomeDropdown\n :is-education=\"generalStore.platformEducation\"\n :mobile-menu-display=\"mobileMenuDisplay\"\n v-bind=\"options?.homeDropdown\"\n />\n <router-link\n v-show=\"!isPhone && !inContentDisplayPage\"\n :title=\"t('Search')\"\n :to=\"{\n name: 'podcasts',\n }\"\n class=\"btn admin-button m-1 text-blue-octopus\"\n role=\"search\"\n >\n <MagnifyIcon :size=\"30\" />\n </router-link>\n </div>\n </div>\n </div>\n</template>\n\n<script setup lang=\"ts\">\nimport ChevronDownIcon from \"vue-material-design-icons/ChevronDown.vue\";\nimport MagnifyIcon from \"vue-material-design-icons/Magnify.vue\";\nimport { useRubriquesFilterComputed } from \"../composable/route/useRubriquesFilterComputed\";\nimport { state } from \"../../stores/ParamSdkStore\";\nimport HomeDropdown, { type HomeDropdownProps } from \"./HomeDropdown.vue\";\nimport {useImageProxy} from \"../composable/useImageProxy\";\nimport { useFilterStore } from \"../../stores/FilterStore\";\nimport { useAuthStore } from \"../../stores/AuthStore\";\nimport ClassicPopover from \"../misc/ClassicPopover.vue\";\nimport { defineAsyncComponent, computed, ref } from \"vue\";\nimport { useGeneralStore } from \"../../stores/GeneralStore\";\nimport { useI18n } from \"vue-i18n\";\nimport RightsScopeSelector from \"./RightsScopeSelector.vue\";\nimport RightsScopeMenu from \"./RightsScopeMenu.vue\"; \nconst MobileMenu = defineAsyncComponent(() => import(\"./MobileMenu.vue\"));\n\nexport interface TopBarMainContentOptions {\n homeDropdown?: HomeDropdownProps;\n}\n\nexport interface TopBarMainContentProps {\n isPhone?: boolean;\n titleDisplay?: string;\n scrolled?: boolean;\n};\n\n//Props \nconst props = defineProps<TopBarMainContentProps & {\n /** Props for subcomponents */\n options?: TopBarMainContentOptions;\n}>();\n\n\n//Composables\nconst { t } = useI18n();\nconst { useProxyImageUrl } = useImageProxy();\nconst { rubriqueQueryParam } = useRubriquesFilterComputed();\nconst authStore = useAuthStore();\nconst generalStore = useGeneralStore();\nconst filterStore = useFilterStore();\n\nconst menuOpen = ref(false);\n\n//Computed\nconst mobileMenuDisplay = computed(() => props.isPhone || inContentDisplayPage.value);\nconst titleIsDisplayed = computed(() => inContentDisplayPage.value && props.scrolled && !props.isPhone);\nconst inContentDisplayPage = computed(() => 0 !== props.titleDisplay.length);\nconst routerLinkArray = computed(() => [{\n title: t(\"Radio & Live\"),\n routeName: \"lives\",\n condition:\n !inContentDisplayPage.value &&\n (state.generalParameters.isLiveTab as boolean) &&\n ((filterStore.filterOrgaId && filterStore.filterLive) || !filterStore.filterOrgaId),\n}, {\n title: t(\"Podcasts\"),\n routeName: \"podcasts\",\n condition:\n !inContentDisplayPage.value ||\n (inContentDisplayPage.value && !props.scrolled),\n}, {\n title: t(\"Emissions\"),\n routeName: \"emissions\",\n condition:\n !inContentDisplayPage.value ||\n (inContentDisplayPage.value && !props.scrolled),\n}]);\n\nconst routerLinkInsideArray = computed(() =>{\n return [\n {\n title: t(\"Speakers\"),\n routeName: \"participants\",\n condition: true,\n },\n {\n title: t(\"Playlists\"),\n routeName: \"playlists\",\n condition: true,\n },\n {\n title: t(\"Productors\"),\n routeName: \"productors\",\n condition:\n !state.generalParameters.podcastmaker && (!filterStore.filterOrgaId || generalStore.platformEducation),\n },\n ];\n});\nconst logoUrl = computed(() =>{\n if (generalStore.platformEducation) {\n return \"/img/logo_education_white.svg\";\n }\n return props.isPhone\n ? \"/img/logo_octopus_bubble.svg\"\n : \"/img/logo_saooti_play_white.svg\";\n});\nconst imgUrl = computed(() =>{\n if (!filterStore.filterImgUrl?.includes(\"emptypodcast\")){\n return `${filterStore.filterImgUrl}`;\n }\n return \"\";\n});\n \n//Methods\nfunction getQueriesRouter(routeName: string) {\n if (\"podcasts\" !== routeName && \"emissions\" !== routeName && \"home\" !== routeName) {\n return { productor: filterStore.filterOrgaId };\n }\n return {\n productor: filterStore.filterOrgaId,\n iabId: filterStore.filterIab?.id,\n rubriquesId: rubriqueQueryParam.value,\n };\n}\n</script>\n\n<style scoped lang=\"scss\">\n.top-bar-grid {\n display: grid;\n grid-template-columns: 1fr 5fr;\n padding: 0 1rem 0 0.5rem;\n\n &.scrolled {\n grid-template-columns: 1fr 2fr 1fr;\n }\n\n @media (width <= 450px) {\n padding: 0 0.5rem;\n }\n\n .link-hover {\n color: white;\n font-weight: bold;\n font-size: 0.93rem;\n text-decoration: underline;\n text-decoration-color: transparent;\n transition: text-decoration-color 250ms;\n text-underline-offset: 8px;\n\n &.link-hover:hover,\n &.link-hover.router-link-exact-active.router-link-active {\n color: white;\n text-decoration-color: white;\n }\n }\n\n .client-logo {\n border-radius: var(--octopus-border-radius);\n }\n\n .top-bar-logo img {\n max-width: 140px !important;\n max-height: 4rem;\n height: 4rem;\n\n &.education-logo {\n height: auto;\n }\n\n @media (width <= 650px) {\n max-height: 2rem;\n }\n }\n\n .octopus-logo {\n @media (width <= 960px) {\n max-width: 30px !important;\n }\n }\n}\n\n.right-section {\n padding-top: 0.5rem;\n}\n</style>\n","<template>\n <div class=\"top-bar-grid header-content\" :class=\"{ scrolled: titleIsDisplayed }\">\n <div class=\"d-flex align-items-center\">\n <!-- Logo to the left -->\n <router-link\n class=\"top-bar-logo d-block\"\n :to=\"{\n name: 'home',\n query: getQueriesRouter('home'),\n }\"\n :title=\"t('Home')\"\n >\n <img\n v-if=\"!filterStore.filterOrgaId || '' === imgUrl\"\n :src=\"logoUrl\"\n aria-hidden=\"true\"\n alt=\"\"\n width=\"140\"\n height=\"50\"\n title=\"Logo\"\n :class=\"generalStore.platformEducation ? 'education-logo' : 'octopus-logo'\"\n >\n <img\n v-else\n :src=\"useProxyImageUrl(imgUrl, '', '80')\"\n aria-hidden=\"true\"\n alt=\"\"\n class=\"client-logo\"\n title=\"Logo\"\n :class=\"generalStore.platformEducation ? 'education-logo' : ''\"\n >\n </router-link>\n\n <RightsScopeMenu v-model:open=\"menuOpen\" />\n <RightsScopeSelector\n class=\"ms-4\"\n :open=\"menuOpen\"\n @change=\"menuOpen = true\"\n />\n </div>\n\n <h1 v-if=\"titleIsDisplayed\" class=\"text-truncate m-0 align-self-center\">\n {{ titleDisplay }}\n </h1>\n\n <!-- Right section -->\n <div\n class=\"d-flex right-section\"\n :class=\"[\n inContentDisplayPage || isPhone\n ? 'flex-row-reverse align-items-center'\n : 'flex-column align-items-end',\n ]\"\n >\n <!-- Logo to the right -->\n <template v-if=\"filterStore.filterOrgaId && '' !== imgUrl\">\n <img\n v-if=\"authStore.isGarRole\"\n :src=\"logoUrl\"\n aria-hidden=\"true\"\n alt=\"\"\n width=\"100\"\n height=\"29\"\n class=\"ms-2\"\n title=\"Logo\"\n :class=\"generalStore.platformEducation ? 'education-logo' : 'octopus-logo'\"\n >\n <a\n v-else\n href=\"https://www.saooti.com/\"\n target=\"_blank\"\n rel=\"noreferrer noopener\"\n :title=\"t('New window', {text: 'Saooti'})\"\n >\n <img\n :src=\"logoUrl\"\n aria-hidden=\"true\"\n alt=\"\"\n title=\"Saooti\"\n width=\"100\"\n height=\"29\"\n class=\"ms-2\"\n :class=\"generalStore.platformEducation ? 'education-logo' : 'octopus-logo'\"\n >\n </a>\n </template>\n\n <div role=\"navigation\" class=\"d-flex align-items-center justify-content-end flex-grow-1\">\n <nav :aria-label=\"t('Site menu')\">\n <ul class=\"d-flex\">\n <template v-for=\"link in routerLinkArray\" :key=\"link.routeName\">\n <li v-if=\"link.condition\" class=\"li-style-none\">\n <router-link\n v-show=\"!isPhone\"\n :to=\"{\n name: link.routeName,\n query: getQueriesRouter(link.routeName),\n }\"\n class=\"link-hover py-2 px-3\"\n >\n {{ link.title }}\n </router-link>\n </li>\n </template>\n </ul>\n </nav>\n <button\n v-show=\"!isPhone && !inContentDisplayPage\"\n id=\"more-dropdown\"\n :title=\"t('More')\"\n class=\"d-flex-column flex-nowrap align-items-center btn-transparent py-2 px-3 text-white\"\n >\n <span class=\"link-hover\">\n {{ t(\"More\") }}\n </span>\n <ChevronDownIcon />\n </button>\n <ClassicPopover\n target=\"more-dropdown\"\n :only-click=\"true\"\n :is-fixed=\"true\"\n :left-pos=\"true\"\n :is-top-layer=\"true\"\n >\n <nav class=\"d-flex flex-column\" :aria-label=\"t('Site menu')\">\n <ul class=\"p-0 m-0\">\n <template v-for=\"link in routerLinkInsideArray\" :key=\"link.routeName\">\n <li\n v-if=\"link.condition\"\n class=\"li-style-none\"\n >\n <router-link\n :to=\"{\n name: link.routeName,\n query: getQueriesRouter(link.routeName),\n }\"\n class=\"p-1 octopus-dropdown-item\"\n >\n {{ link.title }}\n </router-link>\n </li>\n </template>\n </ul>\n </nav>\n </ClassicPopover>\n\n <MobileMenu\n :is-education=\"generalStore.platformEducation\"\n :show=\"mobileMenuDisplay\"\n :not-podcast-and-emission=\"inContentDisplayPage && !scrolled\"\n />\n <HomeDropdown\n :is-education=\"generalStore.platformEducation\"\n :mobile-menu-display=\"mobileMenuDisplay\"\n v-bind=\"options?.homeDropdown\"\n />\n <router-link\n v-show=\"!isPhone && !inContentDisplayPage\"\n :title=\"t('Search')\"\n :to=\"{\n name: 'podcasts',\n }\"\n class=\"btn admin-button m-1 text-blue-octopus\"\n role=\"search\"\n >\n <MagnifyIcon :size=\"30\" />\n </router-link>\n </div>\n </div>\n </div>\n</template>\n\n<script setup lang=\"ts\">\nimport ChevronDownIcon from \"vue-material-design-icons/ChevronDown.vue\";\nimport MagnifyIcon from \"vue-material-design-icons/Magnify.vue\";\nimport { useRubriquesFilterComputed } from \"../composable/route/useRubriquesFilterComputed\";\nimport { state } from \"../../stores/ParamSdkStore\";\nimport HomeDropdown, { type HomeDropdownProps } from \"./HomeDropdown.vue\";\nimport {useImageProxy} from \"../composable/useImageProxy\";\nimport { useFilterStore } from \"../../stores/FilterStore\";\nimport { useAuthStore } from \"../../stores/AuthStore\";\nimport ClassicPopover from \"../misc/ClassicPopover.vue\";\nimport { defineAsyncComponent, computed, ref } from \"vue\";\nimport { useGeneralStore } from \"../../stores/GeneralStore\";\nimport { useI18n } from \"vue-i18n\";\nimport RightsScopeSelector from \"./RightsScopeSelector.vue\";\nimport RightsScopeMenu from \"./RightsScopeMenu.vue\"; \nconst MobileMenu = defineAsyncComponent(() => import(\"./MobileMenu.vue\"));\n\nexport interface TopBarMainContentOptions {\n homeDropdown?: HomeDropdownProps;\n}\n\nexport interface TopBarMainContentProps {\n isPhone?: boolean;\n titleDisplay?: string;\n scrolled?: boolean;\n};\n\n//Props \nconst props = defineProps<TopBarMainContentProps & {\n /** Props for subcomponents */\n options?: TopBarMainContentOptions;\n}>();\n\n\n//Composables\nconst { t } = useI18n();\nconst { useProxyImageUrl } = useImageProxy();\nconst { rubriqueQueryParam } = useRubriquesFilterComputed();\nconst authStore = useAuthStore();\nconst generalStore = useGeneralStore();\nconst filterStore = useFilterStore();\n\nconst menuOpen = ref(false);\n\n//Computed\nconst mobileMenuDisplay = computed(() => props.isPhone || inContentDisplayPage.value);\nconst titleIsDisplayed = computed(() => inContentDisplayPage.value && props.scrolled && !props.isPhone);\nconst inContentDisplayPage = computed(() => 0 !== props.titleDisplay.length);\nconst routerLinkArray = computed(() => [{\n title: t(\"Radio & Live\"),\n routeName: \"lives\",\n condition:\n !inContentDisplayPage.value &&\n (state.generalParameters.isLiveTab as boolean) &&\n ((filterStore.filterOrgaId && filterStore.filterLive) || !filterStore.filterOrgaId),\n}, {\n title: t(\"Podcasts\"),\n routeName: \"podcasts\",\n condition:\n !inContentDisplayPage.value ||\n (inContentDisplayPage.value && !props.scrolled),\n}, {\n title: t(\"Emissions\"),\n routeName: \"emissions\",\n condition:\n !inContentDisplayPage.value ||\n (inContentDisplayPage.value && !props.scrolled),\n}]);\n\nconst routerLinkInsideArray = computed(() =>{\n return [\n {\n title: t(\"Speakers\"),\n routeName: \"participants\",\n condition: true,\n },\n {\n title: t(\"Playlists\"),\n routeName: \"playlists\",\n condition: true,\n },\n {\n title: t(\"Productors\"),\n routeName: \"productors\",\n condition:\n !state.generalParameters.podcastmaker && (!filterStore.filterOrgaId || generalStore.platformEducation),\n },\n ];\n});\nconst logoUrl = computed(() =>{\n if (generalStore.platformEducation) {\n return \"/img/logo_education_white.svg\";\n }\n return props.isPhone\n ? \"/img/logo_octopus_bubble.svg\"\n : \"/img/logo_saooti_play_white.svg\";\n});\nconst imgUrl = computed(() =>{\n if (!filterStore.filterImgUrl?.includes(\"emptypodcast\")){\n return `${filterStore.filterImgUrl}`;\n }\n return \"\";\n});\n \n//Methods\nfunction getQueriesRouter(routeName: string) {\n if (\"podcasts\" !== routeName && \"emissions\" !== routeName && \"home\" !== routeName) {\n return { productor: filterStore.filterOrgaId };\n }\n return {\n productor: filterStore.filterOrgaId,\n iabId: filterStore.filterIab?.id,\n rubriquesId: rubriqueQueryParam.value,\n };\n}\n</script>\n\n<style scoped lang=\"scss\">\n.top-bar-grid {\n display: grid;\n grid-template-columns: 1fr 5fr;\n padding: 0 1rem 0 0.5rem;\n\n &.scrolled {\n grid-template-columns: 1fr 2fr 1fr;\n }\n\n @media (width <= 450px) {\n padding: 0 0.5rem;\n }\n\n .link-hover {\n color: white;\n font-weight: bold;\n font-size: 0.93rem;\n text-decoration: underline;\n text-decoration-color: transparent;\n transition: text-decoration-color 250ms;\n text-underline-offset: 8px;\n\n &.link-hover:hover,\n &.link-hover.router-link-exact-active.router-link-active {\n color: white;\n text-decoration-color: white;\n }\n }\n\n .client-logo {\n border-radius: var(--octopus-border-radius);\n }\n\n .top-bar-logo img {\n max-width: 140px !important;\n max-height: 4rem;\n height: 4rem;\n\n &.education-logo {\n height: auto;\n }\n\n @media (width <= 650px) {\n max-height: 2rem;\n }\n }\n\n .octopus-logo {\n @media (width <= 960px) {\n max-width: 30px !important;\n }\n }\n}\n\n.right-section {\n padding-top: 0.5rem;\n}\n</style>\n","<template>\n <header\n role=\"banner\"\n class=\"header-saooti-play\"\n :style=\"headerBackgroundImage\"\n :class=\"[generalStore.contentToDisplay ? 'header-img-bg':'bg-gradient', scrolled? 'scrolled':'', needToBlur ? 'header-force-blur':'']\"\n >\n <TopBarMainContent\n :is-phone=\"isPhone\"\n :scrolled=\"scrolled\"\n :title-display=\"titleToDisplay\"\n style=\"height: var(--header-size);\"\n :class=\"headerBackgroundImage.length ? 'header-opacity':''\"\n :options=\"options?.topBarMainContent\"\n />\n </header>\n\n <div\n v-if=\"generalStore.contentToDisplay\"\n class=\"header-content-bg\"\n :style=\"headerBackgroundImage\"\n :class=\"{ scrolled: scrolled, 'header-force-blur':needToBlur }\"\n >\n <div class=\"header-additional-content header-content\">\n <h1 v-if=\"!scrolled\" class=\"text-truncate\">\n {{ titleToDisplay }}\n </h1>\n <SubscribeButtons\n v-if=\"!authStore.isGarRole && content\"\n v-show=\"!scrolled\"\n :content=\"content\"\n :window-width=\"windowWidth\"\n />\n </div>\n </div>\n</template>\n\n<script setup lang=\"ts\">\nimport {useImageProxy} from \"../composable/useImageProxy\";\nimport TopBarMainContent, { type TopBarMainContentOptions } from \"./TopBarMainContent.vue\";\nimport { computed, defineAsyncComponent, onBeforeUnmount, onMounted, ref, watch } from \"vue\";\nimport { useAuthStore } from \"../../stores/AuthStore\";\nimport { useGeneralStore } from \"../../stores/GeneralStore\";\nimport { Podcast } from \"@/stores/class/general/podcast\";\nimport { Emission } from \"@/stores/class/general/emission\";\nimport {useResizePhone} from \"../composable/useResizePhone\";\nimport { Playlist } from \"@/stores/class/general/playlist\";\nimport { Canal } from \"@/stores/class/radio/canal\";\nimport axios from \"axios\";\nconst SubscribeButtons = defineAsyncComponent(\n () => import(\"../display/sharing/SubscribeButtons.vue\"),\n);\n\ndefineProps<{\n options?: {\n topBarMainContent?: TopBarMainContentOptions\n }\n}>();\n\n//Data \nconst scrolled = ref(false);\nconst oldScrollY = ref(0);\nconst minScroll = ref(0);\nconst headerBackgroundImage = ref(\"\");\nconst needToBlur = ref(false);\n\n\n//Composables\nconst { isPhone, windowWidth } = useResizePhone();\nconst { useProxyImageUrl } = useImageProxy();\nconst authStore = useAuthStore();\nconst generalStore = useGeneralStore();\n\n//Computed\nconst titleToDisplay = computed(() => {\n if ((generalStore.contentToDisplay as Podcast)?.podcastId) {\n return (generalStore.contentToDisplay as Podcast).emission.name;\n }\n if ((generalStore.contentToDisplay as Playlist)?.playlistId) {\n return (generalStore.contentToDisplay as Playlist).title;\n }\n if ((generalStore.contentToDisplay as Emission)?.emissionId) {\n return (generalStore.contentToDisplay as Emission).name;\n }\n if ((generalStore.contentToDisplay as Canal)?.id) {\n return (generalStore.contentToDisplay as Canal).name;\n }\n return \"\";\n});\n\n/** The element displayed by the subscribe buttons */\nconst content = computed(() => {\n if ((generalStore.contentToDisplay as Podcast)?.podcastId) {\n return (generalStore.contentToDisplay as Podcast).emission;\n }\n if ((generalStore.contentToDisplay as Emission)?.emissionId) {\n return generalStore.contentToDisplay as Emission;\n }\n if ((generalStore.contentToDisplay as Playlist)?.playlistId) {\n return generalStore.contentToDisplay as Playlist;\n }\n return null;\n});\n\n//Watch\nwatch(()=>generalStore.contentToDisplay, async () => {\n if(!generalStore.contentToDisplay){\n headerBackgroundImage.value = \"\";\n needToBlur.value = false;\n return;\n }\n const widthAsked = window.innerWidth > 960 ? \"1600\":\"1000\";\n const proxyUrl = useProxyImageUrl(generalStore.contentToDisplay.imageUrl, widthAsked, undefined, true);\n try {\n const result = await axios.get(proxyUrl);\n headerBackgroundImage.value = `background-image: url('${result.data}');`;\n needToBlur.value = result.data === generalStore.contentToDisplay.imageUrl;\n } catch {\n if (generalStore.contentToDisplay.imageUrl) {\n const url = encodeURI(generalStore.contentToDisplay.imageUrl);\n headerBackgroundImage.value = `background-image: url('${url}');`;\n needToBlur.value = true;\n } else {\n headerBackgroundImage.value = '';\n }\n }\n}, {deep: true, immediate: true});\n\n\nonMounted(()=>{\n window.addEventListener(\"scroll\", handleScroll);\n})\nonBeforeUnmount(() => {\n window.removeEventListener(\"scroll\", handleScroll);\n})\n\n\n//Methods\nfunction handleScroll(): void {\n if (\n window.scrollY - oldScrollY.value > 0 &&\n window.scrollY > 1 &&\n document.body.offsetHeight - window.innerHeight > 40\n ) {\n if (!scrolled.value) {\n scrolled.value = true;\n minScroll.value = 0;\n }\n } else if (\n window.scrollY - oldScrollY.value < 0 &&\n window.scrollY < 1 &&\n minScroll.value > 20\n ) {\n scrolled.value = false;\n minScroll.value = 0;\n }\n oldScrollY.value = window.scrollY;\n if (minScroll.value < window.scrollY) {\n minScroll.value = window.scrollY;\n }\n}\n</script>\n\n<style lang=\"scss\">\n.octopus-app {\n --header-size: 5rem;\n --header-additional-content-size: 22rem;\n @media (width <= 650px) {\n --header-size: 3.5rem;\n }\n @media (width <= 550px) {\n --header-additional-content-size: 13rem;\n }\n .header-saooti-play{\n z-index: 11;\n position: sticky;\n top: 0;\n background-color: black;\n &.header-img-bg{\n background-position: center -20vw;\n background-repeat: no-repeat;\n background-size: cover;\n }\n &.bg-gradient, &.scrolled{\n box-shadow: 0 2px 15px 5px var(--octopus-shadow) !important; \n }\n }\n .header-content-bg{\n background-position: center calc(calc(var(--header-size) * -1) - 20vw);\n background-repeat: no-repeat;\n background-size: cover;\n width: 100%;\n display: flex;\n background-color: black;\n transition: height 0.7s;\n height: calc(var(--header-additional-content-size) - var(--header-size));\n @starting-style {\n height: 0rem;\n }\n &.scrolled {\n height: 0rem;\n }\n }\n .header-additional-content{\n display: flex;\n flex-direction: column;\n flex-grow: 1;\n width: 100%;\n }\n .header-additional-content, .header-opacity{\n background: oklch(0 0 0 / 0.5);\n }\n .header-force-blur .header-additional-content, .header-force-blur .header-opacity{\n backdrop-filter: blur(8px);\n }\n .header-content{\n *:focus-visible {\n box-shadow: 0 0 10px 1px white !important;\n }\n h1 {\n color: white !important;\n font-size: 1.8rem;\n margin: 2rem 5rem;\n @media (width <= 550px) {\n font-size: 1rem;\n margin: 1rem 0.5rem 0.5rem;\n }\n }\n .admin-button:hover,\n .share-btn:hover {\n background: white;\n }\n }\n}\n</style>\n","<template>\n <header\n role=\"banner\"\n class=\"header-saooti-play\"\n :style=\"headerBackgroundImage\"\n :class=\"[generalStore.contentToDisplay ? 'header-img-bg':'bg-gradient', scrolled? 'scrolled':'', needToBlur ? 'header-force-blur':'']\"\n >\n <TopBarMainContent\n :is-phone=\"isPhone\"\n :scrolled=\"scrolled\"\n :title-display=\"titleToDisplay\"\n style=\"height: var(--header-size);\"\n :class=\"headerBackgroundImage.length ? 'header-opacity':''\"\n :options=\"options?.topBarMainContent\"\n />\n </header>\n\n <div\n v-if=\"generalStore.contentToDisplay\"\n class=\"header-content-bg\"\n :style=\"headerBackgroundImage\"\n :class=\"{ scrolled: scrolled, 'header-force-blur':needToBlur }\"\n >\n <div class=\"header-additional-content header-content\">\n <h1 v-if=\"!scrolled\" class=\"text-truncate\">\n {{ titleToDisplay }}\n </h1>\n <SubscribeButtons\n v-if=\"!authStore.isGarRole && content\"\n v-show=\"!scrolled\"\n :content=\"content\"\n :window-width=\"windowWidth\"\n />\n </div>\n </div>\n</template>\n\n<script setup lang=\"ts\">\nimport {useImageProxy} from \"../composable/useImageProxy\";\nimport TopBarMainContent, { type TopBarMainContentOptions } from \"./TopBarMainContent.vue\";\nimport { computed, defineAsyncComponent, onBeforeUnmount, onMounted, ref, watch } from \"vue\";\nimport { useAuthStore } from \"../../stores/AuthStore\";\nimport { useGeneralStore } from \"../../stores/GeneralStore\";\nimport { Podcast } from \"@/stores/class/general/podcast\";\nimport { Emission } from \"@/stores/class/general/emission\";\nimport {useResizePhone} from \"../composable/useResizePhone\";\nimport { Playlist } from \"@/stores/class/general/playlist\";\nimport { Canal } from \"@/stores/class/radio/canal\";\nimport axios from \"axios\";\nconst SubscribeButtons = defineAsyncComponent(\n () => import(\"../display/sharing/SubscribeButtons.vue\"),\n);\n\ndefineProps<{\n options?: {\n topBarMainContent?: TopBarMainContentOptions\n }\n}>();\n\n//Data \nconst scrolled = ref(false);\nconst oldScrollY = ref(0);\nconst minScroll = ref(0);\nconst headerBackgroundImage = ref(\"\");\nconst needToBlur = ref(false);\n\n\n//Composables\nconst { isPhone, windowWidth } = useResizePhone();\nconst { useProxyImageUrl } = useImageProxy();\nconst authStore = useAuthStore();\nconst generalStore = useGeneralStore();\n\n//Computed\nconst titleToDisplay = computed(() => {\n if ((generalStore.contentToDisplay as Podcast)?.podcastId) {\n return (generalStore.contentToDisplay as Podcast).emission.name;\n }\n if ((generalStore.contentToDisplay as Playlist)?.playlistId) {\n return (generalStore.contentToDisplay as Playlist).title;\n }\n if ((generalStore.contentToDisplay as Emission)?.emissionId) {\n return (generalStore.contentToDisplay as Emission).name;\n }\n if ((generalStore.contentToDisplay as Canal)?.id) {\n return (generalStore.contentToDisplay as Canal).name;\n }\n return \"\";\n});\n\n/** The element displayed by the subscribe buttons */\nconst content = computed(() => {\n if ((generalStore.contentToDisplay as Podcast)?.podcastId) {\n return (generalStore.contentToDisplay as Podcast).emission;\n }\n if ((generalStore.contentToDisplay as Emission)?.emissionId) {\n return generalStore.contentToDisplay as Emission;\n }\n if ((generalStore.contentToDisplay as Playlist)?.playlistId) {\n return generalStore.contentToDisplay as Playlist;\n }\n return null;\n});\n\n//Watch\nwatch(()=>generalStore.contentToDisplay, async () => {\n if(!generalStore.contentToDisplay){\n headerBackgroundImage.value = \"\";\n needToBlur.value = false;\n return;\n }\n const widthAsked = window.innerWidth > 960 ? \"1600\":\"1000\";\n const proxyUrl = useProxyImageUrl(generalStore.contentToDisplay.imageUrl, widthAsked, undefined, true);\n try {\n const result = await axios.get(proxyUrl);\n headerBackgroundImage.value = `background-image: url('${result.data}');`;\n needToBlur.value = result.data === generalStore.contentToDisplay.imageUrl;\n } catch {\n if (generalStore.contentToDisplay.imageUrl) {\n const url = encodeURI(generalStore.contentToDisplay.imageUrl);\n headerBackgroundImage.value = `background-image: url('${url}');`;\n needToBlur.value = true;\n } else {\n headerBackgroundImage.value = '';\n }\n }\n}, {deep: true, immediate: true});\n\n\nonMounted(()=>{\n window.addEventListener(\"scroll\", handleScroll);\n})\nonBeforeUnmount(() => {\n window.removeEventListener(\"scroll\", handleScroll);\n})\n\n\n//Methods\nfunction handleScroll(): void {\n if (\n window.scrollY - oldScrollY.value > 0 &&\n window.scrollY > 1 &&\n document.body.offsetHeight - window.innerHeight > 40\n ) {\n if (!scrolled.value) {\n scrolled.value = true;\n minScroll.value = 0;\n }\n } else if (\n window.scrollY - oldScrollY.value < 0 &&\n window.scrollY < 1 &&\n minScroll.value > 20\n ) {\n scrolled.value = false;\n minScroll.value = 0;\n }\n oldScrollY.value = window.scrollY;\n if (minScroll.value < window.scrollY) {\n minScroll.value = window.scrollY;\n }\n}\n</script>\n\n<style lang=\"scss\">\n.octopus-app {\n --header-size: 5rem;\n --header-additional-content-size: 22rem;\n @media (width <= 650px) {\n --header-size: 3.5rem;\n }\n @media (width <= 550px) {\n --header-additional-content-size: 13rem;\n }\n .header-saooti-play{\n z-index: 11;\n position: sticky;\n top: 0;\n background-color: black;\n &.header-img-bg{\n background-position: center -20vw;\n background-repeat: no-repeat;\n background-size: cover;\n }\n &.bg-gradient, &.scrolled{\n box-shadow: 0 2px 15px 5px var(--octopus-shadow) !important; \n }\n }\n .header-content-bg{\n background-position: center calc(calc(var(--header-size) * -1) - 20vw);\n background-repeat: no-repeat;\n background-size: cover;\n width: 100%;\n display: flex;\n background-color: black;\n transition: height 0.7s;\n height: calc(var(--header-additional-content-size) - var(--header-size));\n @starting-style {\n height: 0rem;\n }\n &.scrolled {\n height: 0rem;\n }\n }\n .header-additional-content{\n display: flex;\n flex-direction: column;\n flex-grow: 1;\n width: 100%;\n }\n .header-additional-content, .header-opacity{\n background: oklch(0 0 0 / 0.5);\n }\n .header-force-blur .header-additional-content, .header-force-blur .header-opacity{\n backdrop-filter: blur(8px);\n }\n .header-content{\n *:focus-visible {\n box-shadow: 0 0 10px 1px white !important;\n }\n h1 {\n color: white !important;\n font-size: 1.8rem;\n margin: 2rem 5rem;\n @media (width <= 550px) {\n font-size: 1rem;\n margin: 1rem 0.5rem 0.5rem;\n }\n }\n .admin-button:hover,\n .share-btn:hover {\n background: white;\n }\n }\n}\n</style>\n"],"mappings":"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"}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"TopBar-DdxThCLR.mjs","names":["_hoisted_1","_hoisted_2","_hoisted_3","_hoisted_4","_hoisted_5","_hoisted_6","_sfc_render","_openBlock","_createElementBlock","_createElementVNode","_toDisplayString","_createVNode","_createCommentVNode","_sfc_main","_hoisted_1","_hoisted_2","_hoisted_3","_hoisted_4","_hoisted_5","_hoisted_6","_hoisted_7","_hoisted_8","_hoisted_9","_hoisted_10","_hoisted_11","_sfc_render","_openBlock","_createElementBlock","_normalizeClass","_createElementVNode","_createVNode","_toDisplayString","_Fragment","_renderList","_createCommentVNode","_createTextVNode","_sfc_main","_hoisted_1","_hoisted_2","_sfc_render","_resolveComponent","_openBlock","_createElementBlock","_normalizeClass","_createElementVNode","_createCommentVNode","_createVNode","_withCtx","_toDisplayString","_Fragment","_renderList","_withDirectives","_createTextVNode","_vShow","_mergeProps","_sfc_main","_openBlock","_createElementBlock","_Fragment","_createElementVNode","_normalizeClass","_normalizeStyle","_createVNode","_toDisplayString","_createCommentVNode","_withDirectives","_createBlock","_vShow","_sfc_main"],"sources":["../src/components/misc/RightsScopeSelector.vue","../src/components/misc/RightsScopeSelector.vue","../src/components/misc/RightsScopeMenu.vue","../src/components/misc/RightsScopeMenu.vue","../src/components/misc/TopBarMainContent.vue","../src/components/misc/TopBarMainContent.vue","../src/components/misc/TopBar.vue","../src/components/misc/TopBar.vue"],"sourcesContent":["<template>\n <div\n v-if=\"subOrganisations.length > 0\"\n class=\"d-flex flex-column ms-4\"\n >\n <span class=\"label mb-1\">\n {{ t('RightsScopeSelector - Title', { rubriquage: rubriquage?.title}) }}\n </span>\n <div class=\"d-flex value\">\n <button\n type=\"button\"\n class=\"btn-transparent d-flex align-items-center\"\n aria-controls=\"suborga-list-menu\"\n :aria-expanded=\"open\"\n @click=\"$emit('change')\"\n >\n <span\n v-if=\"selectedSubOrganisation\"\n class=\"me-2 selected\"\n >\n {{ selectedSubOrganisation.name }}\n </span>\n <span v-else class=\"me-2\">\n {{ t('RightsScopeSelector - No filter') }}\n </span>\n <SwapIcon class=\"icon\" />\n </button>\n <button\n v-if=\"selectedSubOrganisation\"\n type=\"button\"\n class=\"btn-transparent\"\n @click=\"unselectSubOrganisation\"\n >\n <ClearIcon\n class=\"icon\"\n :title=\"t('RightsScopeSelector - Clear filter')\"\n />\n </button>\n </div>\n </div>\n</template>\n\n<script setup lang=\"ts\">\nimport { useAuthStore } from \"../../stores/AuthStore\";\nimport { ref, toRef, watch } from \"vue\";\nimport { useSubOrganisations } from \"../composable/useSubOrganisations\";\nimport { Rubriquage } from \"@/stores/class/rubrique/rubriquage\";\nimport { rubriquesApi } from \"@/api\";\n\nimport SwapIcon from \"vue-material-design-icons/SwapHorizontalCircleOutline.vue\";\nimport ClearIcon from \"vue-material-design-icons/CloseCircleOutline.vue\";\nimport { useI18n } from \"vue-i18n\";\n\n//Composables\nconst { t } = useI18n();\nconst authStore = useAuthStore();\nconst authOrgaId = toRef(authStore, 'authOrgaId');\nconst rubriquage = ref<Rubriquage|null>(null);\nconst {\n selectedSubOrganisation,\n subOrganisations,\n unselectSubOrganisation\n} = useSubOrganisations(authOrgaId);\n\ndefineProps<{\n /** Whether the sub organisation menu controlled by this selector is open */\n open?: boolean;\n}>();\n\ndefineEmits<{\n (e: 'change'): void;\n}>();\n\nwatch(authOrgaId, async () => {\n rubriquage.value = await rubriquesApi.findRestrictiveRubriquage(authOrgaId.value);\n}, { immediate: true });\n</script>\n\n<style scoped lang=\"scss\">\n#header-scope-selector:deep(.octopus-select-field) {\n background: transparent;\n border-color: rgba(255, 255, 255, 0.1);\n margin-left: 200px;\n\n .octopus-select-value {\n color: var(--octopus-secondary);\n font-weight: bold;\n align-content: center;\n }\n\n input {\n color: white;\n }\n\n button {\n color: rgba(255, 255, 255, 0.3);\n }\n}\n\n.value {\n color: var(--octopus-secondary);\n font-weight: bold;\n align-content: center;\n align-items: center;\n\n button {\n color: inherit;\n font-weight: inherit;\n text-align: start;\n padding: 0;\n }\n\n span:not(.selected):not(.icon) {\n opacity: .5;\n transition: opacity .5s;\n\n &:hover {\n opacity: .7;\n }\n }\n}\n\n.label {\n color: rgba(255, 255, 255, 0.3);\n font-weight: 600;\n font-style: italic;\n font-size: 14px;\n white-space: nowrap;\n overflow-y: visible;\n}\n\n.icon {\n opacity: .7;\n transition: opacity .5s;\n\n &:hover {\n opacity: 1;\n }\n}\n</style>\n","<template>\n <div\n v-if=\"subOrganisations.length > 0\"\n class=\"d-flex flex-column ms-4\"\n >\n <span class=\"label mb-1\">\n {{ t('RightsScopeSelector - Title', { rubriquage: rubriquage?.title}) }}\n </span>\n <div class=\"d-flex value\">\n <button\n type=\"button\"\n class=\"btn-transparent d-flex align-items-center\"\n aria-controls=\"suborga-list-menu\"\n :aria-expanded=\"open\"\n @click=\"$emit('change')\"\n >\n <span\n v-if=\"selectedSubOrganisation\"\n class=\"me-2 selected\"\n >\n {{ selectedSubOrganisation.name }}\n </span>\n <span v-else class=\"me-2\">\n {{ t('RightsScopeSelector - No filter') }}\n </span>\n <SwapIcon class=\"icon\" />\n </button>\n <button\n v-if=\"selectedSubOrganisation\"\n type=\"button\"\n class=\"btn-transparent\"\n @click=\"unselectSubOrganisation\"\n >\n <ClearIcon\n class=\"icon\"\n :title=\"t('RightsScopeSelector - Clear filter')\"\n />\n </button>\n </div>\n </div>\n</template>\n\n<script setup lang=\"ts\">\nimport { useAuthStore } from \"../../stores/AuthStore\";\nimport { ref, toRef, watch } from \"vue\";\nimport { useSubOrganisations } from \"../composable/useSubOrganisations\";\nimport { Rubriquage } from \"@/stores/class/rubrique/rubriquage\";\nimport { rubriquesApi } from \"@/api\";\n\nimport SwapIcon from \"vue-material-design-icons/SwapHorizontalCircleOutline.vue\";\nimport ClearIcon from \"vue-material-design-icons/CloseCircleOutline.vue\";\nimport { useI18n } from \"vue-i18n\";\n\n//Composables\nconst { t } = useI18n();\nconst authStore = useAuthStore();\nconst authOrgaId = toRef(authStore, 'authOrgaId');\nconst rubriquage = ref<Rubriquage|null>(null);\nconst {\n selectedSubOrganisation,\n subOrganisations,\n unselectSubOrganisation\n} = useSubOrganisations(authOrgaId);\n\ndefineProps<{\n /** Whether the sub organisation menu controlled by this selector is open */\n open?: boolean;\n}>();\n\ndefineEmits<{\n (e: 'change'): void;\n}>();\n\nwatch(authOrgaId, async () => {\n rubriquage.value = await rubriquesApi.findRestrictiveRubriquage(authOrgaId.value);\n}, { immediate: true });\n</script>\n\n<style scoped lang=\"scss\">\n#header-scope-selector:deep(.octopus-select-field) {\n background: transparent;\n border-color: rgba(255, 255, 255, 0.1);\n margin-left: 200px;\n\n .octopus-select-value {\n color: var(--octopus-secondary);\n font-weight: bold;\n align-content: center;\n }\n\n input {\n color: white;\n }\n\n button {\n color: rgba(255, 255, 255, 0.3);\n }\n}\n\n.value {\n color: var(--octopus-secondary);\n font-weight: bold;\n align-content: center;\n align-items: center;\n\n button {\n color: inherit;\n font-weight: inherit;\n text-align: start;\n padding: 0;\n }\n\n span:not(.selected):not(.icon) {\n opacity: .5;\n transition: opacity .5s;\n\n &:hover {\n opacity: .7;\n }\n }\n}\n\n.label {\n color: rgba(255, 255, 255, 0.3);\n font-weight: 600;\n font-style: italic;\n font-size: 14px;\n white-space: nowrap;\n overflow-y: visible;\n}\n\n.icon {\n opacity: .7;\n transition: opacity .5s;\n\n &:hover {\n opacity: 1;\n }\n}\n</style>\n","<template>\n <div\n id=\"suborga-list-menu\"\n ref=\"menuNav\"\n role=\"dialog\"\n aria-labelledby=\"suborga-list-menu-title\"\n :class=\"{ shown: open }\"\n :inert=\"!open\"\n >\n <button\n type=\"button\"\n class=\"btn-transparent close-btn\"\n @click=\"close\"\n >\n <CloseIcon :title=\"t('Close')\" />\n </button>\n\n <div class=\"search\">\n <h3 id=\"suborga-list-menu-title\">\n {{ t('RightsScopeMenu - Title') }}\n </h3>\n <ClassicInputText\n v-model:text-init=\"search\"\n :placeholder=\"t('RightsScopeMenu - Search')\"\n can-be-null\n />\n </div>\n\n <div v-if=\"showFirstList\" class=\"suborga-list mb-4\">\n <h4>{{ t('RightsScopeMenu - First list - Title') }}</h4>\n <span\n v-for=\"suborga in userSubOrgas\"\n :key=\"suborga.id\"\n class=\"suborga\"\n @click=\"select(suborga)\"\n >\n {{ suborga.name }}\n </span>\n </div>\n\n <div class=\"suborga-list\">\n <h4>{{ secondListTitle }}</h4>\n\n <div v-if=\"showLetters\" class=\"letters mt-2\">\n <button\n v-for=\"letter in 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'\"\n :key=\"letter\"\n type=\"button\"\n class=\"letter\"\n :title=\"subOrgaByLetter.has(letter) ? undefined : t('RightsScopeMenu - Letters - No sub orga for letter')\"\n :disabled=\"!subOrgaByLetter.has(letter)\"\n @click=\"scrollToLetter(letter)\"\n >\n {{ letter }}\n </button>\n </div>\n\n <div\n v-for=\"[letter, suborgaForLetter] in subOrgaByLetter\"\n :key=\"'suborgas-' + letter\"\n >\n <div\n :id=\"'suborga-letter-' + letter\"\n class=\"letter\"\n tabindex=\"-1\"\n >\n {{ letter }}\n </div>\n <span\n v-for=\"suborga in suborgaForLetter\"\n :key=\"suborga.id\"\n class=\"suborga\"\n @click=\"select(suborga)\"\n >\n {{ suborga.name }}\n </span>\n </div>\n </div>\n\n <p role=\"status\" class=\"text-indic px-3\">\n <template v-if=\"noResult\">\n {{ t('RightsScopeMenu - No result') }}\n </template>\n </p>\n </div>\n</template>\n\n<script setup lang=\"ts\">\nimport { computed, defineAsyncComponent, nextTick, onUnmounted, ref, toRef, useTemplateRef, watch } from 'vue';\nimport { useAuthStore } from '../../stores/AuthStore';\nimport { SubOrganisation, useSubOrganisations } from '../composable/useSubOrganisations';\nimport { useI18n } from 'vue-i18n';\nimport CloseIcon from 'vue-material-design-icons/Close.vue';\n\nconst ClassicInputText = defineAsyncComponent(() => import('../form/ClassicInputText.vue'));\n\nconst { t } = useI18n();\n\n///////////////////////////////\n// Menu\n///////////////////////////////\nconst props = defineProps<{\n open?: boolean;\n}>();\n\nconst emit = defineEmits<{\n (e: 'update:open', open: boolean): void;\n}>();\n\nconst menuNav = useTemplateRef('menuNav');\nlet previousFocus: HTMLElement | null = null;\n\nwatch(() => props.open, async open => {\n if (open) {\n previousFocus = document.activeElement as HTMLElement | null;\n setTimeout(() => document.addEventListener('click', openOnClick), 200);\n document.addEventListener('keydown', closeOnEscape);\n // Wait for the menu to no longer be inert before focusing\n await nextTick();\n menuNav.value?.querySelector('input')?.focus();\n } else {\n removeListeners();\n // Only give focus back if it would otherwise be lost (inside the\n // closed menu, or on body), to avoid stealing it after a click\n // elsewhere\n const active = document.activeElement;\n if (active === document.body || menuNav.value?.contains(active)) {\n previousFocus?.focus();\n }\n }\n});\n\nonUnmounted(removeListeners);\n\nfunction removeListeners(): void {\n document.removeEventListener('click', openOnClick);\n document.removeEventListener('keydown', closeOnEscape);\n}\n\nfunction close(): void {\n emit('update:open', false);\n}\n\nfunction openOnClick(event: MouseEvent) {\n const menu = menuNav.value;\n if (props.open && event.target && !menu?.contains(event.target as Node)) {\n close();\n }\n}\n\nfunction closeOnEscape(event: KeyboardEvent): void {\n if (event.key === 'Escape') {\n close();\n }\n}\n\nfunction prefersReducedMotion(): boolean {\n return window.matchMedia('(prefers-reduced-motion: reduce)').matches;\n}\n\n///////////////////////////////\n// Display list\n///////////////////////////////\nconst search = ref('');\nconst authStore = useAuthStore();\nconst { subOrganisations, selectSubOrganisation } = useSubOrganisations(toRef(authStore, 'authOrgaId'));\n\nfunction normalize(str: string): string {\n // Separate accented character in letter/diacritic, then remove the\n // diacritic\n return str.toUpperCase().normalize(\"NFD\").replace(/\\p{Diacritic}/gu, '');\n}\n\nconst normalizedSearch = computed((): string => {\n return normalize(search.value);\n});\n\nconst userSubOrgas = computed((): Array<SubOrganisation> => {\n const userScope = authStore.userScope;\n return subOrganisations.value\n .filter(sub => sub.name.includes(normalizedSearch.value))\n .filter(sub => userScope.includes(sub.id))\n .sort((o1, o2) => o1.name.localeCompare(o2.name))\n ;\n});\n\nconst showFirstList = computed((): boolean => {\n return userSubOrgas.value.length > 0;\n});\n\nconst secondListTitle = computed((): string => {\n const userScope = authStore.userScope;\n if (userScope.length === 0) {\n return t('RightsScopeMenu - Second list - Title unscoped');\n } else {\n return t('RightsScopeMenu - Second list - Title scoped');\n }\n});\n\nconst showLetters = computed((): boolean => {\n return subOrganisations.value.length > 10;\n});\n\nconst subOrgaByLetter = computed((): Map<string, Array<SubOrganisation>> => {\n const data: Map<string, Array<SubOrganisation>> = new Map();\n\n const filtered = subOrganisations.value\n .filter(sub => sub.name.includes(normalizedSearch.value))\n .filter(sub => !userSubOrgas.value.includes(sub))\n .sort((o1, o2) => o1.name.localeCompare(o2.name))\n ;\n\n if (showLetters.value) {\n filtered.forEach((sub: SubOrganisation) => {\n const firstLetter = sub.name[0];\n if (data.has(firstLetter)) {\n const present = data.get(firstLetter);\n present!.push(sub);\n } else {\n data.set(firstLetter, [sub]);\n }\n });\n } else {\n data.set(null, filtered);\n }\n\n data.values().forEach(ary => ary.sort((a, b) => a.name.localeCompare(b.name)));\n\n return data;\n});\n\nconst noResult = computed((): boolean => {\n return !showFirstList.value\n && [...subOrgaByLetter.value.values()].every(ary => ary.length === 0);\n});\n\nfunction scrollToLetter(letter: string): void {\n if (!subOrgaByLetter.value.has(letter)) {\n return;\n }\n const container = menuNav.value;\n const target: HTMLElement | null | undefined = container?.querySelector(`#suborga-letter-${letter}`);\n if (container && target) {\n container.scrollTo({\n top: target.offsetTop,\n behavior: prefersReducedMotion() ? 'auto' : 'smooth'\n });\n target.focus({ preventScroll: true });\n }\n}\n\n///////////////////////////////\n// Sub orga selection\n///////////////////////////////\nfunction select(org: SubOrganisation): void {\n selectSubOrganisation(org);\n emit('update:open', false);\n}\n</script>\n\n<style scoped lang=\"scss\">\n#suborga-list-menu-btn {\n transition: rotate 0.3s ease-out;\n \n &.active {\n rotate: 90deg;\n }\n}\n\n#suborga-list-menu {\n z-index: 100;\n \n --width: 30dvw;\n\n // Positioning\n position: fixed;\n left: 0;\n top: 0;\n width: var(--width);\n height: 100dvh;\n\n // Margins\n padding: 1.5em 0;\n\n // Overflow\n overflow-y: auto;\n\n // Style\n background-color: white;\n //border-radius: 0 var(--octopus-border-radius);\n border-right: 2px solid var(--octopus-primary);\n\n // Animation\n @media (prefers-reduced-motion: no-preference) {\n transition: left 0.6s ease-out;\n }\n\n &.shown {\n left: 0;\n }\n\n &:not(.shown) {\n left: calc(var(--width) * -1);\n }\n\n @media(width <= 960px) {\n --width: 100dvw;\n }\n}\n\n.close-btn {\n position: absolute;\n top: 0.5rem;\n right: 0.5rem;\n}\n\nh4 {\n margin-left: 10px;\n color: var(--octopus-primary);\n}\n\n.letter {\n color: var(--pm-accent);\n font-weight: bold;\n font-size: 1em;\n background-color: oklch(from var(--pm-accent) l c h / 15%);\n}\n\n.search {\n padding: 0 1rem;\n\n h3 {\n color: var(--pm-accent);\n text-align: center;\n }\n}\n\n.letters {\n display: grid;\n grid-template-columns: repeat(9, 28px);\n width: fit-content;\n margin: auto;\n\n .letter {\n border: none;\n display: flex;\n align-items: center;\n justify-content: center;\n color: black;\n margin: 7px 0 8px;\n width: 24px;\n height: 24px;\n border-radius: 8px;\n font-size: 12px;\n padding: 0 !important;\n cursor: pointer;\n\n &:disabled {\n background-color: #EBF3FE;\n cursor: not-allowed;\n }\n }\n}\n\n.suborga-list {\n .letter {\n padding: 0.1rem 1rem;\n color: var(--octopus-primary);\n }\n\n .suborga {\n display: block;\n padding: 0.5rem 1.4rem;\n cursor: pointer;\n\n &:not(:last-child) {\n border-bottom: 1px solid var(--octopus-primary-really-transparent);\n }\n }\n}\n</style>\n","<template>\n <div\n id=\"suborga-list-menu\"\n ref=\"menuNav\"\n role=\"dialog\"\n aria-labelledby=\"suborga-list-menu-title\"\n :class=\"{ shown: open }\"\n :inert=\"!open\"\n >\n <button\n type=\"button\"\n class=\"btn-transparent close-btn\"\n @click=\"close\"\n >\n <CloseIcon :title=\"t('Close')\" />\n </button>\n\n <div class=\"search\">\n <h3 id=\"suborga-list-menu-title\">\n {{ t('RightsScopeMenu - Title') }}\n </h3>\n <ClassicInputText\n v-model:text-init=\"search\"\n :placeholder=\"t('RightsScopeMenu - Search')\"\n can-be-null\n />\n </div>\n\n <div v-if=\"showFirstList\" class=\"suborga-list mb-4\">\n <h4>{{ t('RightsScopeMenu - First list - Title') }}</h4>\n <span\n v-for=\"suborga in userSubOrgas\"\n :key=\"suborga.id\"\n class=\"suborga\"\n @click=\"select(suborga)\"\n >\n {{ suborga.name }}\n </span>\n </div>\n\n <div class=\"suborga-list\">\n <h4>{{ secondListTitle }}</h4>\n\n <div v-if=\"showLetters\" class=\"letters mt-2\">\n <button\n v-for=\"letter in 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'\"\n :key=\"letter\"\n type=\"button\"\n class=\"letter\"\n :title=\"subOrgaByLetter.has(letter) ? undefined : t('RightsScopeMenu - Letters - No sub orga for letter')\"\n :disabled=\"!subOrgaByLetter.has(letter)\"\n @click=\"scrollToLetter(letter)\"\n >\n {{ letter }}\n </button>\n </div>\n\n <div\n v-for=\"[letter, suborgaForLetter] in subOrgaByLetter\"\n :key=\"'suborgas-' + letter\"\n >\n <div\n :id=\"'suborga-letter-' + letter\"\n class=\"letter\"\n tabindex=\"-1\"\n >\n {{ letter }}\n </div>\n <span\n v-for=\"suborga in suborgaForLetter\"\n :key=\"suborga.id\"\n class=\"suborga\"\n @click=\"select(suborga)\"\n >\n {{ suborga.name }}\n </span>\n </div>\n </div>\n\n <p role=\"status\" class=\"text-indic px-3\">\n <template v-if=\"noResult\">\n {{ t('RightsScopeMenu - No result') }}\n </template>\n </p>\n </div>\n</template>\n\n<script setup lang=\"ts\">\nimport { computed, defineAsyncComponent, nextTick, onUnmounted, ref, toRef, useTemplateRef, watch } from 'vue';\nimport { useAuthStore } from '../../stores/AuthStore';\nimport { SubOrganisation, useSubOrganisations } from '../composable/useSubOrganisations';\nimport { useI18n } from 'vue-i18n';\nimport CloseIcon from 'vue-material-design-icons/Close.vue';\n\nconst ClassicInputText = defineAsyncComponent(() => import('../form/ClassicInputText.vue'));\n\nconst { t } = useI18n();\n\n///////////////////////////////\n// Menu\n///////////////////////////////\nconst props = defineProps<{\n open?: boolean;\n}>();\n\nconst emit = defineEmits<{\n (e: 'update:open', open: boolean): void;\n}>();\n\nconst menuNav = useTemplateRef('menuNav');\nlet previousFocus: HTMLElement | null = null;\n\nwatch(() => props.open, async open => {\n if (open) {\n previousFocus = document.activeElement as HTMLElement | null;\n setTimeout(() => document.addEventListener('click', openOnClick), 200);\n document.addEventListener('keydown', closeOnEscape);\n // Wait for the menu to no longer be inert before focusing\n await nextTick();\n menuNav.value?.querySelector('input')?.focus();\n } else {\n removeListeners();\n // Only give focus back if it would otherwise be lost (inside the\n // closed menu, or on body), to avoid stealing it after a click\n // elsewhere\n const active = document.activeElement;\n if (active === document.body || menuNav.value?.contains(active)) {\n previousFocus?.focus();\n }\n }\n});\n\nonUnmounted(removeListeners);\n\nfunction removeListeners(): void {\n document.removeEventListener('click', openOnClick);\n document.removeEventListener('keydown', closeOnEscape);\n}\n\nfunction close(): void {\n emit('update:open', false);\n}\n\nfunction openOnClick(event: MouseEvent) {\n const menu = menuNav.value;\n if (props.open && event.target && !menu?.contains(event.target as Node)) {\n close();\n }\n}\n\nfunction closeOnEscape(event: KeyboardEvent): void {\n if (event.key === 'Escape') {\n close();\n }\n}\n\nfunction prefersReducedMotion(): boolean {\n return window.matchMedia('(prefers-reduced-motion: reduce)').matches;\n}\n\n///////////////////////////////\n// Display list\n///////////////////////////////\nconst search = ref('');\nconst authStore = useAuthStore();\nconst { subOrganisations, selectSubOrganisation } = useSubOrganisations(toRef(authStore, 'authOrgaId'));\n\nfunction normalize(str: string): string {\n // Separate accented character in letter/diacritic, then remove the\n // diacritic\n return str.toUpperCase().normalize(\"NFD\").replace(/\\p{Diacritic}/gu, '');\n}\n\nconst normalizedSearch = computed((): string => {\n return normalize(search.value);\n});\n\nconst userSubOrgas = computed((): Array<SubOrganisation> => {\n const userScope = authStore.userScope;\n return subOrganisations.value\n .filter(sub => sub.name.includes(normalizedSearch.value))\n .filter(sub => userScope.includes(sub.id))\n .sort((o1, o2) => o1.name.localeCompare(o2.name))\n ;\n});\n\nconst showFirstList = computed((): boolean => {\n return userSubOrgas.value.length > 0;\n});\n\nconst secondListTitle = computed((): string => {\n const userScope = authStore.userScope;\n if (userScope.length === 0) {\n return t('RightsScopeMenu - Second list - Title unscoped');\n } else {\n return t('RightsScopeMenu - Second list - Title scoped');\n }\n});\n\nconst showLetters = computed((): boolean => {\n return subOrganisations.value.length > 10;\n});\n\nconst subOrgaByLetter = computed((): Map<string, Array<SubOrganisation>> => {\n const data: Map<string, Array<SubOrganisation>> = new Map();\n\n const filtered = subOrganisations.value\n .filter(sub => sub.name.includes(normalizedSearch.value))\n .filter(sub => !userSubOrgas.value.includes(sub))\n .sort((o1, o2) => o1.name.localeCompare(o2.name))\n ;\n\n if (showLetters.value) {\n filtered.forEach((sub: SubOrganisation) => {\n const firstLetter = sub.name[0];\n if (data.has(firstLetter)) {\n const present = data.get(firstLetter);\n present!.push(sub);\n } else {\n data.set(firstLetter, [sub]);\n }\n });\n } else {\n data.set(null, filtered);\n }\n\n data.values().forEach(ary => ary.sort((a, b) => a.name.localeCompare(b.name)));\n\n return data;\n});\n\nconst noResult = computed((): boolean => {\n return !showFirstList.value\n && [...subOrgaByLetter.value.values()].every(ary => ary.length === 0);\n});\n\nfunction scrollToLetter(letter: string): void {\n if (!subOrgaByLetter.value.has(letter)) {\n return;\n }\n const container = menuNav.value;\n const target: HTMLElement | null | undefined = container?.querySelector(`#suborga-letter-${letter}`);\n if (container && target) {\n container.scrollTo({\n top: target.offsetTop,\n behavior: prefersReducedMotion() ? 'auto' : 'smooth'\n });\n target.focus({ preventScroll: true });\n }\n}\n\n///////////////////////////////\n// Sub orga selection\n///////////////////////////////\nfunction select(org: SubOrganisation): void {\n selectSubOrganisation(org);\n emit('update:open', false);\n}\n</script>\n\n<style scoped lang=\"scss\">\n#suborga-list-menu-btn {\n transition: rotate 0.3s ease-out;\n \n &.active {\n rotate: 90deg;\n }\n}\n\n#suborga-list-menu {\n z-index: 100;\n \n --width: 30dvw;\n\n // Positioning\n position: fixed;\n left: 0;\n top: 0;\n width: var(--width);\n height: 100dvh;\n\n // Margins\n padding: 1.5em 0;\n\n // Overflow\n overflow-y: auto;\n\n // Style\n background-color: white;\n //border-radius: 0 var(--octopus-border-radius);\n border-right: 2px solid var(--octopus-primary);\n\n // Animation\n @media (prefers-reduced-motion: no-preference) {\n transition: left 0.6s ease-out;\n }\n\n &.shown {\n left: 0;\n }\n\n &:not(.shown) {\n left: calc(var(--width) * -1);\n }\n\n @media(width <= 960px) {\n --width: 100dvw;\n }\n}\n\n.close-btn {\n position: absolute;\n top: 0.5rem;\n right: 0.5rem;\n}\n\nh4 {\n margin-left: 10px;\n color: var(--octopus-primary);\n}\n\n.letter {\n color: var(--pm-accent);\n font-weight: bold;\n font-size: 1em;\n background-color: oklch(from var(--pm-accent) l c h / 15%);\n}\n\n.search {\n padding: 0 1rem;\n\n h3 {\n color: var(--pm-accent);\n text-align: center;\n }\n}\n\n.letters {\n display: grid;\n grid-template-columns: repeat(9, 28px);\n width: fit-content;\n margin: auto;\n\n .letter {\n border: none;\n display: flex;\n align-items: center;\n justify-content: center;\n color: black;\n margin: 7px 0 8px;\n width: 24px;\n height: 24px;\n border-radius: 8px;\n font-size: 12px;\n padding: 0 !important;\n cursor: pointer;\n\n &:disabled {\n background-color: #EBF3FE;\n cursor: not-allowed;\n }\n }\n}\n\n.suborga-list {\n .letter {\n padding: 0.1rem 1rem;\n color: var(--octopus-primary);\n }\n\n .suborga {\n display: block;\n padding: 0.5rem 1.4rem;\n cursor: pointer;\n\n &:not(:last-child) {\n border-bottom: 1px solid var(--octopus-primary-really-transparent);\n }\n }\n}\n</style>\n","<template>\n <div class=\"top-bar-grid header-content\" :class=\"{ scrolled: titleIsDisplayed }\">\n <div class=\"d-flex align-items-center\">\n <!-- Logo to the left -->\n <router-link\n class=\"top-bar-logo d-block\"\n :to=\"{\n name: 'home',\n query: getQueriesRouter('home'),\n }\"\n :title=\"t('Home')\"\n >\n <img\n v-if=\"!filterStore.filterOrgaId || '' === imgUrl\"\n :src=\"logoUrl\"\n aria-hidden=\"true\"\n alt=\"\"\n width=\"140\"\n height=\"50\"\n title=\"Logo\"\n :class=\"generalStore.platformEducation ? 'education-logo' : 'octopus-logo'\"\n >\n <img\n v-else\n :src=\"useProxyImageUrl(imgUrl, '', '80')\"\n aria-hidden=\"true\"\n alt=\"\"\n class=\"client-logo\"\n title=\"Logo\"\n :class=\"generalStore.platformEducation ? 'education-logo' : ''\"\n >\n </router-link>\n\n <RightsScopeMenu v-model:open=\"menuOpen\" />\n <RightsScopeSelector\n class=\"ms-4\"\n :open=\"menuOpen\"\n @change=\"menuOpen = true\"\n />\n </div>\n\n <h1 v-if=\"titleIsDisplayed\" class=\"text-truncate m-0 align-self-center\">\n {{ titleDisplay }}\n </h1>\n\n <!-- Right section -->\n <div\n class=\"d-flex right-section\"\n :class=\"[\n inContentDisplayPage || isPhone\n ? 'flex-row-reverse align-items-center'\n : 'flex-column align-items-end',\n ]\"\n >\n <!-- Logo to the right -->\n <template v-if=\"filterStore.filterOrgaId && '' !== imgUrl\">\n <img\n v-if=\"authStore.isGarRole\"\n :src=\"logoUrl\"\n aria-hidden=\"true\"\n alt=\"\"\n width=\"100\"\n height=\"29\"\n class=\"ms-2\"\n title=\"Logo\"\n :class=\"generalStore.platformEducation ? 'education-logo' : 'octopus-logo'\"\n >\n <a\n v-else\n href=\"https://www.saooti.com/\"\n target=\"_blank\"\n rel=\"noreferrer noopener\"\n :title=\"t('New window', {text: 'Saooti'})\"\n >\n <img\n :src=\"logoUrl\"\n aria-hidden=\"true\"\n alt=\"\"\n title=\"Saooti\"\n width=\"100\"\n height=\"29\"\n class=\"ms-2\"\n :class=\"generalStore.platformEducation ? 'education-logo' : 'octopus-logo'\"\n >\n </a>\n </template>\n\n <div role=\"navigation\" class=\"d-flex align-items-center justify-content-end flex-grow-1\">\n <nav :aria-label=\"t('Site menu')\">\n <ul class=\"d-flex\">\n <template v-for=\"link in routerLinkArray\" :key=\"link.routeName\">\n <li v-if=\"link.condition\" class=\"li-style-none\">\n <router-link\n v-show=\"!isPhone\"\n :to=\"{\n name: link.routeName,\n query: getQueriesRouter(link.routeName),\n }\"\n class=\"link-hover py-2 px-3\"\n >\n {{ link.title }}\n </router-link>\n </li>\n </template>\n </ul>\n </nav>\n <button\n v-show=\"!isPhone && !inContentDisplayPage\"\n id=\"more-dropdown\"\n :title=\"t('More')\"\n class=\"d-flex-column flex-nowrap align-items-center btn-transparent py-2 px-3 text-white\"\n >\n <span class=\"link-hover\">\n {{ t(\"More\") }}\n </span>\n <ChevronDownIcon />\n </button>\n <ClassicPopover\n target=\"more-dropdown\"\n :only-click=\"true\"\n :is-fixed=\"true\"\n :left-pos=\"true\"\n :is-top-layer=\"true\"\n >\n <nav class=\"d-flex flex-column\" :aria-label=\"t('Site menu')\">\n <ul class=\"p-0 m-0\">\n <template v-for=\"link in routerLinkInsideArray\" :key=\"link.routeName\">\n <li\n v-if=\"link.condition\"\n class=\"li-style-none\"\n >\n <router-link\n :to=\"{\n name: link.routeName,\n query: getQueriesRouter(link.routeName),\n }\"\n class=\"p-1 octopus-dropdown-item\"\n >\n {{ link.title }}\n </router-link>\n </li>\n </template>\n </ul>\n </nav>\n </ClassicPopover>\n\n <MobileMenu\n :is-education=\"generalStore.platformEducation\"\n :show=\"mobileMenuDisplay\"\n :not-podcast-and-emission=\"inContentDisplayPage && !scrolled\"\n />\n <HomeDropdown\n :is-education=\"generalStore.platformEducation\"\n :mobile-menu-display=\"mobileMenuDisplay\"\n v-bind=\"options?.homeDropdown\"\n />\n <router-link\n v-show=\"!isPhone && !inContentDisplayPage\"\n :title=\"t('Search')\"\n :to=\"{\n name: 'podcasts',\n }\"\n class=\"btn admin-button m-1 text-blue-octopus\"\n role=\"search\"\n >\n <MagnifyIcon :size=\"30\" />\n </router-link>\n </div>\n </div>\n </div>\n</template>\n\n<script setup lang=\"ts\">\nimport ChevronDownIcon from \"vue-material-design-icons/ChevronDown.vue\";\nimport MagnifyIcon from \"vue-material-design-icons/Magnify.vue\";\nimport { useRubriquesFilterComputed } from \"../composable/route/useRubriquesFilterComputed\";\nimport { state } from \"../../stores/ParamSdkStore\";\nimport HomeDropdown, { type HomeDropdownProps } from \"./HomeDropdown.vue\";\nimport {useImageProxy} from \"../composable/useImageProxy\";\nimport { useFilterStore } from \"../../stores/FilterStore\";\nimport { useAuthStore } from \"../../stores/AuthStore\";\nimport ClassicPopover from \"../misc/ClassicPopover.vue\";\nimport { defineAsyncComponent, computed, ref } from \"vue\";\nimport { useGeneralStore } from \"../../stores/GeneralStore\";\nimport { useI18n } from \"vue-i18n\";\nimport RightsScopeSelector from \"./RightsScopeSelector.vue\";\nimport RightsScopeMenu from \"./RightsScopeMenu.vue\"; \nconst MobileMenu = defineAsyncComponent(() => import(\"./MobileMenu.vue\"));\n\nexport interface TopBarMainContentOptions {\n homeDropdown?: HomeDropdownProps;\n}\n\nexport interface TopBarMainContentProps {\n isPhone?: boolean;\n titleDisplay?: string;\n scrolled?: boolean;\n};\n\n//Props \nconst props = defineProps<TopBarMainContentProps & {\n /** Props for subcomponents */\n options?: TopBarMainContentOptions;\n}>();\n\n\n//Composables\nconst { t } = useI18n();\nconst { useProxyImageUrl } = useImageProxy();\nconst { rubriqueQueryParam } = useRubriquesFilterComputed();\nconst authStore = useAuthStore();\nconst generalStore = useGeneralStore();\nconst filterStore = useFilterStore();\n\nconst menuOpen = ref(false);\n\n//Computed\nconst mobileMenuDisplay = computed(() => props.isPhone || inContentDisplayPage.value);\nconst titleIsDisplayed = computed(() => inContentDisplayPage.value && props.scrolled && !props.isPhone);\nconst inContentDisplayPage = computed(() => 0 !== props.titleDisplay.length);\nconst routerLinkArray = computed(() => [{\n title: t(\"Radio & Live\"),\n routeName: \"lives\",\n condition:\n !inContentDisplayPage.value &&\n (state.generalParameters.isLiveTab as boolean) &&\n ((filterStore.filterOrgaId && filterStore.filterLive) || !filterStore.filterOrgaId),\n}, {\n title: t(\"Podcasts\"),\n routeName: \"podcasts\",\n condition:\n !inContentDisplayPage.value ||\n (inContentDisplayPage.value && !props.scrolled),\n}, {\n title: t(\"Emissions\"),\n routeName: \"emissions\",\n condition:\n !inContentDisplayPage.value ||\n (inContentDisplayPage.value && !props.scrolled),\n}]);\n\nconst routerLinkInsideArray = computed(() =>{\n return [\n {\n title: t(\"Speakers\"),\n routeName: \"participants\",\n condition: true,\n },\n {\n title: t(\"Playlists\"),\n routeName: \"playlists\",\n condition: true,\n },\n {\n title: t(\"Productors\"),\n routeName: \"productors\",\n condition:\n !state.generalParameters.podcastmaker && (!filterStore.filterOrgaId || generalStore.platformEducation),\n },\n ];\n});\nconst logoUrl = computed(() =>{\n if (generalStore.platformEducation) {\n return \"/img/logo_education_white.svg\";\n }\n return props.isPhone\n ? \"/img/logo_octopus_bubble.svg\"\n : \"/img/logo_saooti_play_white.svg\";\n});\nconst imgUrl = computed(() =>{\n if (!filterStore.filterImgUrl?.includes(\"emptypodcast\")){\n return `${filterStore.filterImgUrl}`;\n }\n return \"\";\n});\n \n//Methods\nfunction getQueriesRouter(routeName: string) {\n if (\"podcasts\" !== routeName && \"emissions\" !== routeName && \"home\" !== routeName) {\n return { productor: filterStore.filterOrgaId };\n }\n return {\n productor: filterStore.filterOrgaId,\n iabId: filterStore.filterIab?.id,\n rubriquesId: rubriqueQueryParam.value,\n };\n}\n</script>\n\n<style scoped lang=\"scss\">\n.top-bar-grid {\n display: grid;\n grid-template-columns: 1fr 5fr;\n padding: 0 1rem 0 0.5rem;\n\n &.scrolled {\n grid-template-columns: 1fr 2fr 1fr;\n }\n\n @media (width <= 450px) {\n padding: 0 0.5rem;\n }\n\n .link-hover {\n color: white;\n font-weight: bold;\n font-size: 0.93rem;\n text-decoration: underline;\n text-decoration-color: transparent;\n transition: text-decoration-color 250ms;\n text-underline-offset: 8px;\n\n &.link-hover:hover,\n &.link-hover.router-link-exact-active.router-link-active {\n color: white;\n text-decoration-color: white;\n }\n }\n\n .client-logo {\n border-radius: var(--octopus-border-radius);\n }\n\n .top-bar-logo img {\n max-width: 140px !important;\n max-height: 4rem;\n height: 4rem;\n\n &.education-logo {\n height: auto;\n }\n\n @media (width <= 650px) {\n max-height: 2rem;\n }\n }\n\n .octopus-logo {\n @media (width <= 960px) {\n max-width: 30px !important;\n }\n }\n}\n\n.right-section {\n padding-top: 0.5rem;\n}\n</style>\n","<template>\n <div class=\"top-bar-grid header-content\" :class=\"{ scrolled: titleIsDisplayed }\">\n <div class=\"d-flex align-items-center\">\n <!-- Logo to the left -->\n <router-link\n class=\"top-bar-logo d-block\"\n :to=\"{\n name: 'home',\n query: getQueriesRouter('home'),\n }\"\n :title=\"t('Home')\"\n >\n <img\n v-if=\"!filterStore.filterOrgaId || '' === imgUrl\"\n :src=\"logoUrl\"\n aria-hidden=\"true\"\n alt=\"\"\n width=\"140\"\n height=\"50\"\n title=\"Logo\"\n :class=\"generalStore.platformEducation ? 'education-logo' : 'octopus-logo'\"\n >\n <img\n v-else\n :src=\"useProxyImageUrl(imgUrl, '', '80')\"\n aria-hidden=\"true\"\n alt=\"\"\n class=\"client-logo\"\n title=\"Logo\"\n :class=\"generalStore.platformEducation ? 'education-logo' : ''\"\n >\n </router-link>\n\n <RightsScopeMenu v-model:open=\"menuOpen\" />\n <RightsScopeSelector\n class=\"ms-4\"\n :open=\"menuOpen\"\n @change=\"menuOpen = true\"\n />\n </div>\n\n <h1 v-if=\"titleIsDisplayed\" class=\"text-truncate m-0 align-self-center\">\n {{ titleDisplay }}\n </h1>\n\n <!-- Right section -->\n <div\n class=\"d-flex right-section\"\n :class=\"[\n inContentDisplayPage || isPhone\n ? 'flex-row-reverse align-items-center'\n : 'flex-column align-items-end',\n ]\"\n >\n <!-- Logo to the right -->\n <template v-if=\"filterStore.filterOrgaId && '' !== imgUrl\">\n <img\n v-if=\"authStore.isGarRole\"\n :src=\"logoUrl\"\n aria-hidden=\"true\"\n alt=\"\"\n width=\"100\"\n height=\"29\"\n class=\"ms-2\"\n title=\"Logo\"\n :class=\"generalStore.platformEducation ? 'education-logo' : 'octopus-logo'\"\n >\n <a\n v-else\n href=\"https://www.saooti.com/\"\n target=\"_blank\"\n rel=\"noreferrer noopener\"\n :title=\"t('New window', {text: 'Saooti'})\"\n >\n <img\n :src=\"logoUrl\"\n aria-hidden=\"true\"\n alt=\"\"\n title=\"Saooti\"\n width=\"100\"\n height=\"29\"\n class=\"ms-2\"\n :class=\"generalStore.platformEducation ? 'education-logo' : 'octopus-logo'\"\n >\n </a>\n </template>\n\n <div role=\"navigation\" class=\"d-flex align-items-center justify-content-end flex-grow-1\">\n <nav :aria-label=\"t('Site menu')\">\n <ul class=\"d-flex\">\n <template v-for=\"link in routerLinkArray\" :key=\"link.routeName\">\n <li v-if=\"link.condition\" class=\"li-style-none\">\n <router-link\n v-show=\"!isPhone\"\n :to=\"{\n name: link.routeName,\n query: getQueriesRouter(link.routeName),\n }\"\n class=\"link-hover py-2 px-3\"\n >\n {{ link.title }}\n </router-link>\n </li>\n </template>\n </ul>\n </nav>\n <button\n v-show=\"!isPhone && !inContentDisplayPage\"\n id=\"more-dropdown\"\n :title=\"t('More')\"\n class=\"d-flex-column flex-nowrap align-items-center btn-transparent py-2 px-3 text-white\"\n >\n <span class=\"link-hover\">\n {{ t(\"More\") }}\n </span>\n <ChevronDownIcon />\n </button>\n <ClassicPopover\n target=\"more-dropdown\"\n :only-click=\"true\"\n :is-fixed=\"true\"\n :left-pos=\"true\"\n :is-top-layer=\"true\"\n >\n <nav class=\"d-flex flex-column\" :aria-label=\"t('Site menu')\">\n <ul class=\"p-0 m-0\">\n <template v-for=\"link in routerLinkInsideArray\" :key=\"link.routeName\">\n <li\n v-if=\"link.condition\"\n class=\"li-style-none\"\n >\n <router-link\n :to=\"{\n name: link.routeName,\n query: getQueriesRouter(link.routeName),\n }\"\n class=\"p-1 octopus-dropdown-item\"\n >\n {{ link.title }}\n </router-link>\n </li>\n </template>\n </ul>\n </nav>\n </ClassicPopover>\n\n <MobileMenu\n :is-education=\"generalStore.platformEducation\"\n :show=\"mobileMenuDisplay\"\n :not-podcast-and-emission=\"inContentDisplayPage && !scrolled\"\n />\n <HomeDropdown\n :is-education=\"generalStore.platformEducation\"\n :mobile-menu-display=\"mobileMenuDisplay\"\n v-bind=\"options?.homeDropdown\"\n />\n <router-link\n v-show=\"!isPhone && !inContentDisplayPage\"\n :title=\"t('Search')\"\n :to=\"{\n name: 'podcasts',\n }\"\n class=\"btn admin-button m-1 text-blue-octopus\"\n role=\"search\"\n >\n <MagnifyIcon :size=\"30\" />\n </router-link>\n </div>\n </div>\n </div>\n</template>\n\n<script setup lang=\"ts\">\nimport ChevronDownIcon from \"vue-material-design-icons/ChevronDown.vue\";\nimport MagnifyIcon from \"vue-material-design-icons/Magnify.vue\";\nimport { useRubriquesFilterComputed } from \"../composable/route/useRubriquesFilterComputed\";\nimport { state } from \"../../stores/ParamSdkStore\";\nimport HomeDropdown, { type HomeDropdownProps } from \"./HomeDropdown.vue\";\nimport {useImageProxy} from \"../composable/useImageProxy\";\nimport { useFilterStore } from \"../../stores/FilterStore\";\nimport { useAuthStore } from \"../../stores/AuthStore\";\nimport ClassicPopover from \"../misc/ClassicPopover.vue\";\nimport { defineAsyncComponent, computed, ref } from \"vue\";\nimport { useGeneralStore } from \"../../stores/GeneralStore\";\nimport { useI18n } from \"vue-i18n\";\nimport RightsScopeSelector from \"./RightsScopeSelector.vue\";\nimport RightsScopeMenu from \"./RightsScopeMenu.vue\"; \nconst MobileMenu = defineAsyncComponent(() => import(\"./MobileMenu.vue\"));\n\nexport interface TopBarMainContentOptions {\n homeDropdown?: HomeDropdownProps;\n}\n\nexport interface TopBarMainContentProps {\n isPhone?: boolean;\n titleDisplay?: string;\n scrolled?: boolean;\n};\n\n//Props \nconst props = defineProps<TopBarMainContentProps & {\n /** Props for subcomponents */\n options?: TopBarMainContentOptions;\n}>();\n\n\n//Composables\nconst { t } = useI18n();\nconst { useProxyImageUrl } = useImageProxy();\nconst { rubriqueQueryParam } = useRubriquesFilterComputed();\nconst authStore = useAuthStore();\nconst generalStore = useGeneralStore();\nconst filterStore = useFilterStore();\n\nconst menuOpen = ref(false);\n\n//Computed\nconst mobileMenuDisplay = computed(() => props.isPhone || inContentDisplayPage.value);\nconst titleIsDisplayed = computed(() => inContentDisplayPage.value && props.scrolled && !props.isPhone);\nconst inContentDisplayPage = computed(() => 0 !== props.titleDisplay.length);\nconst routerLinkArray = computed(() => [{\n title: t(\"Radio & Live\"),\n routeName: \"lives\",\n condition:\n !inContentDisplayPage.value &&\n (state.generalParameters.isLiveTab as boolean) &&\n ((filterStore.filterOrgaId && filterStore.filterLive) || !filterStore.filterOrgaId),\n}, {\n title: t(\"Podcasts\"),\n routeName: \"podcasts\",\n condition:\n !inContentDisplayPage.value ||\n (inContentDisplayPage.value && !props.scrolled),\n}, {\n title: t(\"Emissions\"),\n routeName: \"emissions\",\n condition:\n !inContentDisplayPage.value ||\n (inContentDisplayPage.value && !props.scrolled),\n}]);\n\nconst routerLinkInsideArray = computed(() =>{\n return [\n {\n title: t(\"Speakers\"),\n routeName: \"participants\",\n condition: true,\n },\n {\n title: t(\"Playlists\"),\n routeName: \"playlists\",\n condition: true,\n },\n {\n title: t(\"Productors\"),\n routeName: \"productors\",\n condition:\n !state.generalParameters.podcastmaker && (!filterStore.filterOrgaId || generalStore.platformEducation),\n },\n ];\n});\nconst logoUrl = computed(() =>{\n if (generalStore.platformEducation) {\n return \"/img/logo_education_white.svg\";\n }\n return props.isPhone\n ? \"/img/logo_octopus_bubble.svg\"\n : \"/img/logo_saooti_play_white.svg\";\n});\nconst imgUrl = computed(() =>{\n if (!filterStore.filterImgUrl?.includes(\"emptypodcast\")){\n return `${filterStore.filterImgUrl}`;\n }\n return \"\";\n});\n \n//Methods\nfunction getQueriesRouter(routeName: string) {\n if (\"podcasts\" !== routeName && \"emissions\" !== routeName && \"home\" !== routeName) {\n return { productor: filterStore.filterOrgaId };\n }\n return {\n productor: filterStore.filterOrgaId,\n iabId: filterStore.filterIab?.id,\n rubriquesId: rubriqueQueryParam.value,\n };\n}\n</script>\n\n<style scoped lang=\"scss\">\n.top-bar-grid {\n display: grid;\n grid-template-columns: 1fr 5fr;\n padding: 0 1rem 0 0.5rem;\n\n &.scrolled {\n grid-template-columns: 1fr 2fr 1fr;\n }\n\n @media (width <= 450px) {\n padding: 0 0.5rem;\n }\n\n .link-hover {\n color: white;\n font-weight: bold;\n font-size: 0.93rem;\n text-decoration: underline;\n text-decoration-color: transparent;\n transition: text-decoration-color 250ms;\n text-underline-offset: 8px;\n\n &.link-hover:hover,\n &.link-hover.router-link-exact-active.router-link-active {\n color: white;\n text-decoration-color: white;\n }\n }\n\n .client-logo {\n border-radius: var(--octopus-border-radius);\n }\n\n .top-bar-logo img {\n max-width: 140px !important;\n max-height: 4rem;\n height: 4rem;\n\n &.education-logo {\n height: auto;\n }\n\n @media (width <= 650px) {\n max-height: 2rem;\n }\n }\n\n .octopus-logo {\n @media (width <= 960px) {\n max-width: 30px !important;\n }\n }\n}\n\n.right-section {\n padding-top: 0.5rem;\n}\n</style>\n","<template>\n <header\n role=\"banner\"\n class=\"header-saooti-play\"\n :style=\"headerBackgroundImage\"\n :class=\"[generalStore.contentToDisplay ? 'header-img-bg':'bg-gradient', scrolled? 'scrolled':'', needToBlur ? 'header-force-blur':'']\"\n >\n <TopBarMainContent\n :is-phone=\"isPhone\"\n :scrolled=\"scrolled\"\n :title-display=\"titleToDisplay\"\n style=\"height: var(--header-size);\"\n :class=\"headerBackgroundImage.length ? 'header-opacity':''\"\n :options=\"options?.topBarMainContent\"\n />\n </header>\n\n <div\n v-if=\"generalStore.contentToDisplay\"\n class=\"header-content-bg\"\n :style=\"headerBackgroundImage\"\n :class=\"{ scrolled: scrolled, 'header-force-blur':needToBlur }\"\n >\n <div class=\"header-additional-content header-content\">\n <h1 v-if=\"!scrolled\" class=\"text-truncate\">\n {{ titleToDisplay }}\n </h1>\n <SubscribeButtons\n v-if=\"!authStore.isGarRole && content\"\n v-show=\"!scrolled\"\n :content=\"content\"\n :window-width=\"windowWidth\"\n />\n </div>\n </div>\n</template>\n\n<script setup lang=\"ts\">\nimport {useImageProxy} from \"../composable/useImageProxy\";\nimport TopBarMainContent, { type TopBarMainContentOptions } from \"./TopBarMainContent.vue\";\nimport { computed, defineAsyncComponent, onBeforeUnmount, onMounted, ref, watch } from \"vue\";\nimport { useAuthStore } from \"../../stores/AuthStore\";\nimport { useGeneralStore } from \"../../stores/GeneralStore\";\nimport { Podcast } from \"@/stores/class/general/podcast\";\nimport { Emission } from \"@/stores/class/general/emission\";\nimport {useResizePhone} from \"../composable/useResizePhone\";\nimport { Playlist } from \"@/stores/class/general/playlist\";\nimport { Canal } from \"@/stores/class/radio/canal\";\nimport axios from \"axios\";\nconst SubscribeButtons = defineAsyncComponent(\n () => import(\"../display/sharing/SubscribeButtons.vue\"),\n);\n\ndefineProps<{\n options?: {\n topBarMainContent?: TopBarMainContentOptions\n }\n}>();\n\n//Data \nconst scrolled = ref(false);\nconst oldScrollY = ref(0);\nconst minScroll = ref(0);\nconst headerBackgroundImage = ref(\"\");\nconst needToBlur = ref(false);\n\n\n//Composables\nconst { isPhone, windowWidth } = useResizePhone();\nconst { useProxyImageUrl } = useImageProxy();\nconst authStore = useAuthStore();\nconst generalStore = useGeneralStore();\n\n//Computed\nconst titleToDisplay = computed(() => {\n if ((generalStore.contentToDisplay as Podcast)?.podcastId) {\n return (generalStore.contentToDisplay as Podcast).emission.name;\n }\n if ((generalStore.contentToDisplay as Playlist)?.playlistId) {\n return (generalStore.contentToDisplay as Playlist).title;\n }\n if ((generalStore.contentToDisplay as Emission)?.emissionId) {\n return (generalStore.contentToDisplay as Emission).name;\n }\n if ((generalStore.contentToDisplay as Canal)?.id) {\n return (generalStore.contentToDisplay as Canal).name;\n }\n return \"\";\n});\n\n/** The element displayed by the subscribe buttons */\nconst content = computed(() => {\n if ((generalStore.contentToDisplay as Podcast)?.podcastId) {\n return (generalStore.contentToDisplay as Podcast).emission;\n }\n if ((generalStore.contentToDisplay as Emission)?.emissionId) {\n return generalStore.contentToDisplay as Emission;\n }\n if ((generalStore.contentToDisplay as Playlist)?.playlistId) {\n return generalStore.contentToDisplay as Playlist;\n }\n return null;\n});\n\n//Watch\nwatch(()=>generalStore.contentToDisplay, async () => {\n if(!generalStore.contentToDisplay){\n headerBackgroundImage.value = \"\";\n needToBlur.value = false;\n return;\n }\n const widthAsked = window.innerWidth > 960 ? \"1600\":\"1000\";\n const proxyUrl = useProxyImageUrl(generalStore.contentToDisplay.imageUrl, widthAsked, undefined, true);\n try {\n const result = await axios.get(proxyUrl);\n headerBackgroundImage.value = `background-image: url('${result.data}');`;\n needToBlur.value = result.data === generalStore.contentToDisplay.imageUrl;\n } catch {\n if (generalStore.contentToDisplay.imageUrl) {\n const url = encodeURI(generalStore.contentToDisplay.imageUrl);\n headerBackgroundImage.value = `background-image: url('${url}');`;\n needToBlur.value = true;\n } else {\n headerBackgroundImage.value = '';\n }\n }\n}, {deep: true, immediate: true});\n\n\nonMounted(()=>{\n window.addEventListener(\"scroll\", handleScroll);\n})\nonBeforeUnmount(() => {\n window.removeEventListener(\"scroll\", handleScroll);\n})\n\n\n//Methods\nfunction handleScroll(): void {\n if (\n window.scrollY - oldScrollY.value > 0 &&\n window.scrollY > 1 &&\n document.body.offsetHeight - window.innerHeight > 40\n ) {\n if (!scrolled.value) {\n scrolled.value = true;\n minScroll.value = 0;\n }\n } else if (\n window.scrollY - oldScrollY.value < 0 &&\n window.scrollY < 1 &&\n minScroll.value > 20\n ) {\n scrolled.value = false;\n minScroll.value = 0;\n }\n oldScrollY.value = window.scrollY;\n if (minScroll.value < window.scrollY) {\n minScroll.value = window.scrollY;\n }\n}\n</script>\n\n<style lang=\"scss\">\n.octopus-app {\n --header-size: 5rem;\n --header-additional-content-size: 22rem;\n @media (width <= 650px) {\n --header-size: 3.5rem;\n }\n @media (width <= 550px) {\n --header-additional-content-size: 13rem;\n }\n .header-saooti-play{\n z-index: 11;\n position: sticky;\n top: 0;\n background-color: black;\n &.header-img-bg{\n background-position: center -20vw;\n background-repeat: no-repeat;\n background-size: cover;\n }\n &.bg-gradient, &.scrolled{\n box-shadow: 0 2px 15px 5px var(--octopus-shadow) !important; \n }\n }\n .header-content-bg{\n background-position: center calc(calc(var(--header-size) * -1) - 20vw);\n background-repeat: no-repeat;\n background-size: cover;\n width: 100%;\n display: flex;\n background-color: black;\n transition: height 0.7s;\n height: calc(var(--header-additional-content-size) - var(--header-size));\n @starting-style {\n height: 0rem;\n }\n &.scrolled {\n height: 0rem;\n }\n }\n .header-additional-content{\n display: flex;\n flex-direction: column;\n flex-grow: 1;\n width: 100%;\n }\n .header-additional-content, .header-opacity{\n background: oklch(0 0 0 / 0.5);\n }\n .header-force-blur .header-additional-content, .header-force-blur .header-opacity{\n backdrop-filter: blur(8px);\n }\n .header-content{\n *:focus-visible {\n box-shadow: 0 0 10px 1px white !important;\n }\n h1 {\n color: white !important;\n font-size: 1.8rem;\n margin: 2rem 5rem;\n @media (width <= 550px) {\n font-size: 1rem;\n margin: 1rem 0.5rem 0.5rem;\n }\n }\n .admin-button:hover,\n .share-btn:hover {\n background: white;\n }\n }\n}\n</style>\n","<template>\n <header\n role=\"banner\"\n class=\"header-saooti-play\"\n :style=\"headerBackgroundImage\"\n :class=\"[generalStore.contentToDisplay ? 'header-img-bg':'bg-gradient', scrolled? 'scrolled':'', needToBlur ? 'header-force-blur':'']\"\n >\n <TopBarMainContent\n :is-phone=\"isPhone\"\n :scrolled=\"scrolled\"\n :title-display=\"titleToDisplay\"\n style=\"height: var(--header-size);\"\n :class=\"headerBackgroundImage.length ? 'header-opacity':''\"\n :options=\"options?.topBarMainContent\"\n />\n </header>\n\n <div\n v-if=\"generalStore.contentToDisplay\"\n class=\"header-content-bg\"\n :style=\"headerBackgroundImage\"\n :class=\"{ scrolled: scrolled, 'header-force-blur':needToBlur }\"\n >\n <div class=\"header-additional-content header-content\">\n <h1 v-if=\"!scrolled\" class=\"text-truncate\">\n {{ titleToDisplay }}\n </h1>\n <SubscribeButtons\n v-if=\"!authStore.isGarRole && content\"\n v-show=\"!scrolled\"\n :content=\"content\"\n :window-width=\"windowWidth\"\n />\n </div>\n </div>\n</template>\n\n<script setup lang=\"ts\">\nimport {useImageProxy} from \"../composable/useImageProxy\";\nimport TopBarMainContent, { type TopBarMainContentOptions } from \"./TopBarMainContent.vue\";\nimport { computed, defineAsyncComponent, onBeforeUnmount, onMounted, ref, watch } from \"vue\";\nimport { useAuthStore } from \"../../stores/AuthStore\";\nimport { useGeneralStore } from \"../../stores/GeneralStore\";\nimport { Podcast } from \"@/stores/class/general/podcast\";\nimport { Emission } from \"@/stores/class/general/emission\";\nimport {useResizePhone} from \"../composable/useResizePhone\";\nimport { Playlist } from \"@/stores/class/general/playlist\";\nimport { Canal } from \"@/stores/class/radio/canal\";\nimport axios from \"axios\";\nconst SubscribeButtons = defineAsyncComponent(\n () => import(\"../display/sharing/SubscribeButtons.vue\"),\n);\n\ndefineProps<{\n options?: {\n topBarMainContent?: TopBarMainContentOptions\n }\n}>();\n\n//Data \nconst scrolled = ref(false);\nconst oldScrollY = ref(0);\nconst minScroll = ref(0);\nconst headerBackgroundImage = ref(\"\");\nconst needToBlur = ref(false);\n\n\n//Composables\nconst { isPhone, windowWidth } = useResizePhone();\nconst { useProxyImageUrl } = useImageProxy();\nconst authStore = useAuthStore();\nconst generalStore = useGeneralStore();\n\n//Computed\nconst titleToDisplay = computed(() => {\n if ((generalStore.contentToDisplay as Podcast)?.podcastId) {\n return (generalStore.contentToDisplay as Podcast).emission.name;\n }\n if ((generalStore.contentToDisplay as Playlist)?.playlistId) {\n return (generalStore.contentToDisplay as Playlist).title;\n }\n if ((generalStore.contentToDisplay as Emission)?.emissionId) {\n return (generalStore.contentToDisplay as Emission).name;\n }\n if ((generalStore.contentToDisplay as Canal)?.id) {\n return (generalStore.contentToDisplay as Canal).name;\n }\n return \"\";\n});\n\n/** The element displayed by the subscribe buttons */\nconst content = computed(() => {\n if ((generalStore.contentToDisplay as Podcast)?.podcastId) {\n return (generalStore.contentToDisplay as Podcast).emission;\n }\n if ((generalStore.contentToDisplay as Emission)?.emissionId) {\n return generalStore.contentToDisplay as Emission;\n }\n if ((generalStore.contentToDisplay as Playlist)?.playlistId) {\n return generalStore.contentToDisplay as Playlist;\n }\n return null;\n});\n\n//Watch\nwatch(()=>generalStore.contentToDisplay, async () => {\n if(!generalStore.contentToDisplay){\n headerBackgroundImage.value = \"\";\n needToBlur.value = false;\n return;\n }\n const widthAsked = window.innerWidth > 960 ? \"1600\":\"1000\";\n const proxyUrl = useProxyImageUrl(generalStore.contentToDisplay.imageUrl, widthAsked, undefined, true);\n try {\n const result = await axios.get(proxyUrl);\n headerBackgroundImage.value = `background-image: url('${result.data}');`;\n needToBlur.value = result.data === generalStore.contentToDisplay.imageUrl;\n } catch {\n if (generalStore.contentToDisplay.imageUrl) {\n const url = encodeURI(generalStore.contentToDisplay.imageUrl);\n headerBackgroundImage.value = `background-image: url('${url}');`;\n needToBlur.value = true;\n } else {\n headerBackgroundImage.value = '';\n }\n }\n}, {deep: true, immediate: true});\n\n\nonMounted(()=>{\n window.addEventListener(\"scroll\", handleScroll);\n})\nonBeforeUnmount(() => {\n window.removeEventListener(\"scroll\", handleScroll);\n})\n\n\n//Methods\nfunction handleScroll(): void {\n if (\n window.scrollY - oldScrollY.value > 0 &&\n window.scrollY > 1 &&\n document.body.offsetHeight - window.innerHeight > 40\n ) {\n if (!scrolled.value) {\n scrolled.value = true;\n minScroll.value = 0;\n }\n } else if (\n window.scrollY - oldScrollY.value < 0 &&\n window.scrollY < 1 &&\n minScroll.value > 20\n ) {\n scrolled.value = false;\n minScroll.value = 0;\n }\n oldScrollY.value = window.scrollY;\n if (minScroll.value < window.scrollY) {\n minScroll.value = window.scrollY;\n }\n}\n</script>\n\n<style lang=\"scss\">\n.octopus-app {\n --header-size: 5rem;\n --header-additional-content-size: 22rem;\n @media (width <= 650px) {\n --header-size: 3.5rem;\n }\n @media (width <= 550px) {\n --header-additional-content-size: 13rem;\n }\n .header-saooti-play{\n z-index: 11;\n position: sticky;\n top: 0;\n background-color: black;\n &.header-img-bg{\n background-position: center -20vw;\n background-repeat: no-repeat;\n background-size: cover;\n }\n &.bg-gradient, &.scrolled{\n box-shadow: 0 2px 15px 5px var(--octopus-shadow) !important; \n }\n }\n .header-content-bg{\n background-position: center calc(calc(var(--header-size) * -1) - 20vw);\n background-repeat: no-repeat;\n background-size: cover;\n width: 100%;\n display: flex;\n background-color: black;\n transition: height 0.7s;\n height: calc(var(--header-additional-content-size) - var(--header-size));\n @starting-style {\n height: 0rem;\n }\n &.scrolled {\n height: 0rem;\n }\n }\n .header-additional-content{\n display: flex;\n flex-direction: column;\n flex-grow: 1;\n width: 100%;\n }\n .header-additional-content, .header-opacity{\n background: oklch(0 0 0 / 0.5);\n }\n .header-force-blur .header-additional-content, .header-force-blur .header-opacity{\n backdrop-filter: blur(8px);\n }\n .header-content{\n *:focus-visible {\n box-shadow: 0 0 10px 1px white !important;\n }\n h1 {\n color: white !important;\n font-size: 1.8rem;\n margin: 2rem 5rem;\n @media (width <= 550px) {\n font-size: 1rem;\n margin: 1rem 0.5rem 0.5rem;\n }\n }\n .admin-button:hover,\n .share-btn:hover {\n background: white;\n }\n }\n}\n</style>\n"],"mappings":"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"}
@@ -1,5 +1,5 @@
1
1
  import { t as e } from "./rolldown-runtime-Dy4uBu1J.mjs";
2
- import { A as t, O as n, i as r } from "./classicApi-pmODlqv5.mjs";
2
+ import { i as t, j as n, k as r } from "./classicApi-CGipMqf7.mjs";
3
3
  import { Fragment as i, computed as a, createBlock as o, createCommentVNode as s, createElementBlock as c, createElementVNode as l, createTextVNode as u, createVNode as d, defineComponent as f, normalizeClass as p, openBlock as m, renderList as h, resolveComponent as g, toDisplayString as _, unref as v, withCtx as y } from "vue";
4
4
  import { useI18n as b } from "vue-i18n";
5
5
  import { useRoute as x } from "vue-router";
@@ -29,7 +29,7 @@ var C = ["aria-label"], w = { class: "p-0 m-0" }, T = { key: 0 }, E = { class: "
29
29
  }
30
30
  },
31
31
  setup(e) {
32
- let f = e, { t: N } = b(), P = r(), F = n(), I = x(), L = a(() => P.authProfile?.userId !== void 0), R = a(() => "/sso/login?redirect_url=" + encodeURI(F.frontendUrl + I.fullPath)), z = a(() => P.authOrgaId !== void 0), B = a(() => P.authProfile?.organisations ?? []), V = a(() => P.isGarRole || f.isEducation ? [] : [{
32
+ let f = e, { t: N } = b(), P = t(), F = r(), I = x(), L = a(() => P.authProfile?.userId !== void 0), R = a(() => "/sso/login?redirect_url=" + encodeURI(F.frontendUrl + I.fullPath)), z = a(() => P.authOrgaId !== void 0), B = a(() => P.authProfile?.organisations ?? []), V = a(() => P.isGarRole || f.isEducation ? [] : [{
33
33
  title: N("Help"),
34
34
  href: "https://help.octopus.saooti.com/Aide/"
35
35
  }, {
@@ -67,12 +67,12 @@ var C = ["aria-label"], w = { class: "p-0 m-0" }, T = { key: 0 }, E = { class: "
67
67
  condition: z.value
68
68
  }
69
69
  ] : []);
70
- return (n, r) => {
70
+ return (t, r) => {
71
71
  let a = g("router-link");
72
72
  return m(), c("nav", { "aria-label": e.navLabel }, [l("ul", w, [e.specificRoutes.length ? (m(), c(i, { key: 0 }, [(m(!0), c(i, null, h(e.specificRoutes, (e) => (m(), c("li", {
73
73
  key: e.path,
74
74
  class: "li-style-none"
75
- }, [!v(t).generalParameters.podcastmaker && e.condition ? (m(), o(a, {
75
+ }, [!v(n).generalParameters.podcastmaker && e.condition ? (m(), o(a, {
76
76
  key: 0,
77
77
  class: p(e.class),
78
78
  to: e.path
@@ -83,7 +83,7 @@ var C = ["aria-label"], w = { class: "p-0 m-0" }, T = { key: 0 }, E = { class: "
83
83
  (m(!0), c(i, null, h(H.value, (e) => (m(), c("li", {
84
84
  key: e.path,
85
85
  class: "li-style-none"
86
- }, [!v(t).generalParameters.podcastmaker && e.condition ? (m(), o(a, {
86
+ }, [!v(n).generalParameters.podcastmaker && e.condition ? (m(), o(a, {
87
87
  key: 0,
88
88
  class: p(e.class),
89
89
  to: e.path
@@ -109,7 +109,7 @@ var C = ["aria-label"], w = { class: "p-0 m-0" }, T = { key: 0 }, E = { class: "
109
109
  ], 64)) : (m(), c(i, { key: 0 }, [l("li", E, [l("a", {
110
110
  class: "octopus-dropdown-item realLink",
111
111
  href: R.value
112
- }, _(v(N)("Login")), 9, D)]), l("li", O, [v(t).generalParameters.podcastmaker ? s("", !0) : (m(), o(a, {
112
+ }, _(v(N)("Login")), 9, D)]), l("li", O, [v(n).generalParameters.podcastmaker ? s("", !0) : (m(), o(a, {
113
113
  key: 0,
114
114
  class: "octopus-dropdown-item",
115
115
  to: "/main/pub/create"
@@ -0,0 +1 @@
1
+ {"version":3,"file":"UserButtonContent-067qGenf.mjs","names":["_resolveComponent","_openBlock","_createElementBlock","_createElementVNode","_Fragment","_renderList","_createBlock","_normalizeClass","_withCtx","_createTextVNode","_toDisplayString","_createCommentVNode","_createVNode","_sfc_main"],"sources":["../src/components/misc/UserButtonContent.vue","../src/components/misc/UserButtonContent.vue"],"sourcesContent":["<template>\n <nav :aria-label=\"navLabel\">\n <ul class=\"p-0 m-0\">\n <template v-if=\"specificRoutes.length\">\n <li\n v-for=\"routerBack in specificRoutes\"\n :key=\"routerBack.path\"\n class=\"li-style-none\"\n >\n <router-link\n v-if=\"!state.generalParameters.podcastmaker && routerBack.condition\"\n :class=\"routerBack.class\"\n :to=\"routerBack.path\"\n >\n {{ routerBack.title }}\n </router-link>\n </li>\n <hr v-if=\"displayUserContent\">\n </template>\n <template v-if=\"displayUserContent\">\n <template v-if=\"!isAuthenticated\">\n <li class=\"li-style-none\">\n <a class=\"octopus-dropdown-item realLink\" :href=\"pathLogin\">\n {{ t(\"Login\") }}\n </a>\n </li>\n <li class=\"li-style-none\">\n <router-link\n v-if=\"!state.generalParameters.podcastmaker\"\n class=\"octopus-dropdown-item\"\n to=\"/main/pub/create\"\n >\n {{ t(\"Create an account\") }}\n </router-link>\n </li>\n </template>\n <template v-else>\n <li\n v-for=\"routeBackoffice in routerBackoffice\"\n :key=\"routeBackoffice.path\"\n class=\"li-style-none\"\n >\n <router-link\n v-if=\"!state.generalParameters.podcastmaker && routeBackoffice.condition\"\n :class=\"routeBackoffice.class\"\n :to=\"routeBackoffice.path\"\n >\n {{ routeBackoffice.title }}\n </router-link>\n </li>\n <hr>\n <template v-if=\"helpLinks.length\">\n <li\n v-for=\"helpLink in helpLinks\"\n :key=\"helpLink.title\"\n class=\"li-style-none\"\n >\n <a\n :href=\"helpLink.href\"\n class=\"octopus-dropdown-item realLink\"\n rel=\"noreferrer noopener\"\n target=\"_blank\"\n :title=\"t('New window', {text: helpLink.title})\"\n >\n {{ helpLink.title }}\n <OpenInNewIcon class=\"ms-1\" :size=\"15\" />\n </a>\n </li>\n <hr>\n </template>\n <li class=\"li-style-none\">\n <a class=\"octopus-dropdown-item c-hand\" href=\"/logout\">\n {{ t(\"Logout\") }}\n </a>\n </li>\n </template>\n <li class=\"li-style-none\">\n <router-link\n v-if=\"!authStore.isGarRole\"\n class=\"octopus-dropdown-item\"\n to=\"/main/pub/contact\"\n >\n {{ t(\"Contact\") }}\n </router-link>\n </li>\n </template>\n </ul>\n </nav>\n</template>\n\n<script setup lang=\"ts\">\nimport OpenInNewIcon from \"vue-material-design-icons/OpenInNew.vue\";\nimport { state } from \"../../stores/ParamSdkStore\";\nimport { useAuthStore } from \"../../stores/AuthStore\";\nimport { computed } from \"vue\";\nimport { useApiStore } from \"../../stores/ApiStore\";\nimport { useI18n } from \"vue-i18n\";\nimport { RouteLocationAsPathGeneric, RouteLocationAsRelativeGeneric, useRoute } from \"vue-router\";\n\n//Interface\ninterface RouteInfo{\n title: string;\n class: string;\n path: string | RouteLocationAsRelativeGeneric | RouteLocationAsPathGeneric;\n condition: boolean\n}\n\n//Props \nconst props = defineProps({\n isEducation: { default: false, type: Boolean },\n navLabel: { default: \"\", type: String },\n specificRoutes: { default: ()=>[], type: Array as ()=> Array<RouteInfo> },\n displayUserContent: { default: true, type: Boolean },\n})\n\n//Composables\nconst { t } = useI18n();\nconst authStore = useAuthStore();\nconst apiStore = useApiStore();\nconst route = useRoute();\n\n//Computed\nconst isAuthenticated = computed(() => undefined !== authStore.authProfile?.userId);\nconst pathLogin = computed(() => \"/sso/login?redirect_url=\"+encodeURI(apiStore.frontendUrl + route.fullPath));\nconst isAuthenticatedWithOrga = computed(() => undefined !== authStore.authOrgaId);\nconst organisationsAvailable = computed(() => authStore.authProfile?.organisations ?? []);\n\nconst helpLinks = computed(() => {\n if (authStore.isGarRole || props.isEducation) {\n return [];\n }\n return [\n { title:t(\"Help\"), href: \"https://help.octopus.saooti.com/Aide/\"},\n { title: t(\"TutoMag\"), href: \"https://help.octopus.saooti.com/\" },\n ];\n});\nconst routerBackoffice = computed(() => {\n if(!isAuthenticated.value){\n return [];\n }\n\n return [\n {\n title: t(\"My space\"),\n class: \"octopus-dropdown-item show-small-screen\",\n path: { name: \"backoffice\" },\n condition: isAuthenticatedWithOrga.value,\n },\n {\n title: t(\"Upload\"),\n class: \"octopus-dropdown-item show-small-screen\",\n path: { name: \"upload-podcast\" },\n condition: isAuthenticatedWithOrga.value && authStore.isRoleContribution,\n },\n {\n title: t(\"User profile - Title - My profile\"),\n class: \"octopus-dropdown-item\",\n path: { name: \"my-profile\" },\n condition: true,\n },\n {\n title: t(\"Edit my organisation\"),\n class: \"octopus-dropdown-item\",\n path: { name: \"edit-organisation\" },\n condition:\n isAuthenticatedWithOrga.value &&\n (authStore.isRoleOrganisation || 1 < organisationsAvailable.value.length),\n },\n {\n title: t(\"My space\"),\n class: \"octopus-dropdown-item\",\n path: { name: \"backoffice\" },\n condition: isAuthenticatedWithOrga.value\n },\n ];\n});\n\n</script>\n","<template>\n <nav :aria-label=\"navLabel\">\n <ul class=\"p-0 m-0\">\n <template v-if=\"specificRoutes.length\">\n <li\n v-for=\"routerBack in specificRoutes\"\n :key=\"routerBack.path\"\n class=\"li-style-none\"\n >\n <router-link\n v-if=\"!state.generalParameters.podcastmaker && routerBack.condition\"\n :class=\"routerBack.class\"\n :to=\"routerBack.path\"\n >\n {{ routerBack.title }}\n </router-link>\n </li>\n <hr v-if=\"displayUserContent\">\n </template>\n <template v-if=\"displayUserContent\">\n <template v-if=\"!isAuthenticated\">\n <li class=\"li-style-none\">\n <a class=\"octopus-dropdown-item realLink\" :href=\"pathLogin\">\n {{ t(\"Login\") }}\n </a>\n </li>\n <li class=\"li-style-none\">\n <router-link\n v-if=\"!state.generalParameters.podcastmaker\"\n class=\"octopus-dropdown-item\"\n to=\"/main/pub/create\"\n >\n {{ t(\"Create an account\") }}\n </router-link>\n </li>\n </template>\n <template v-else>\n <li\n v-for=\"routeBackoffice in routerBackoffice\"\n :key=\"routeBackoffice.path\"\n class=\"li-style-none\"\n >\n <router-link\n v-if=\"!state.generalParameters.podcastmaker && routeBackoffice.condition\"\n :class=\"routeBackoffice.class\"\n :to=\"routeBackoffice.path\"\n >\n {{ routeBackoffice.title }}\n </router-link>\n </li>\n <hr>\n <template v-if=\"helpLinks.length\">\n <li\n v-for=\"helpLink in helpLinks\"\n :key=\"helpLink.title\"\n class=\"li-style-none\"\n >\n <a\n :href=\"helpLink.href\"\n class=\"octopus-dropdown-item realLink\"\n rel=\"noreferrer noopener\"\n target=\"_blank\"\n :title=\"t('New window', {text: helpLink.title})\"\n >\n {{ helpLink.title }}\n <OpenInNewIcon class=\"ms-1\" :size=\"15\" />\n </a>\n </li>\n <hr>\n </template>\n <li class=\"li-style-none\">\n <a class=\"octopus-dropdown-item c-hand\" href=\"/logout\">\n {{ t(\"Logout\") }}\n </a>\n </li>\n </template>\n <li class=\"li-style-none\">\n <router-link\n v-if=\"!authStore.isGarRole\"\n class=\"octopus-dropdown-item\"\n to=\"/main/pub/contact\"\n >\n {{ t(\"Contact\") }}\n </router-link>\n </li>\n </template>\n </ul>\n </nav>\n</template>\n\n<script setup lang=\"ts\">\nimport OpenInNewIcon from \"vue-material-design-icons/OpenInNew.vue\";\nimport { state } from \"../../stores/ParamSdkStore\";\nimport { useAuthStore } from \"../../stores/AuthStore\";\nimport { computed } from \"vue\";\nimport { useApiStore } from \"../../stores/ApiStore\";\nimport { useI18n } from \"vue-i18n\";\nimport { RouteLocationAsPathGeneric, RouteLocationAsRelativeGeneric, useRoute } from \"vue-router\";\n\n//Interface\ninterface RouteInfo{\n title: string;\n class: string;\n path: string | RouteLocationAsRelativeGeneric | RouteLocationAsPathGeneric;\n condition: boolean\n}\n\n//Props \nconst props = defineProps({\n isEducation: { default: false, type: Boolean },\n navLabel: { default: \"\", type: String },\n specificRoutes: { default: ()=>[], type: Array as ()=> Array<RouteInfo> },\n displayUserContent: { default: true, type: Boolean },\n})\n\n//Composables\nconst { t } = useI18n();\nconst authStore = useAuthStore();\nconst apiStore = useApiStore();\nconst route = useRoute();\n\n//Computed\nconst isAuthenticated = computed(() => undefined !== authStore.authProfile?.userId);\nconst pathLogin = computed(() => \"/sso/login?redirect_url=\"+encodeURI(apiStore.frontendUrl + route.fullPath));\nconst isAuthenticatedWithOrga = computed(() => undefined !== authStore.authOrgaId);\nconst organisationsAvailable = computed(() => authStore.authProfile?.organisations ?? []);\n\nconst helpLinks = computed(() => {\n if (authStore.isGarRole || props.isEducation) {\n return [];\n }\n return [\n { title:t(\"Help\"), href: \"https://help.octopus.saooti.com/Aide/\"},\n { title: t(\"TutoMag\"), href: \"https://help.octopus.saooti.com/\" },\n ];\n});\nconst routerBackoffice = computed(() => {\n if(!isAuthenticated.value){\n return [];\n }\n\n return [\n {\n title: t(\"My space\"),\n class: \"octopus-dropdown-item show-small-screen\",\n path: { name: \"backoffice\" },\n condition: isAuthenticatedWithOrga.value,\n },\n {\n title: t(\"Upload\"),\n class: \"octopus-dropdown-item show-small-screen\",\n path: { name: \"upload-podcast\" },\n condition: isAuthenticatedWithOrga.value && authStore.isRoleContribution,\n },\n {\n title: t(\"User profile - Title - My profile\"),\n class: \"octopus-dropdown-item\",\n path: { name: \"my-profile\" },\n condition: true,\n },\n {\n title: t(\"Edit my organisation\"),\n class: \"octopus-dropdown-item\",\n path: { name: \"edit-organisation\" },\n condition:\n isAuthenticatedWithOrga.value &&\n (authStore.isRoleOrganisation || 1 < organisationsAvailable.value.length),\n },\n {\n title: t(\"My space\"),\n class: \"octopus-dropdown-item\",\n path: { name: \"backoffice\" },\n condition: isAuthenticatedWithOrga.value\n },\n ];\n});\n\n</script>\n"],"mappings":"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"}