@saooti/octopus-sdk 42.3.0 → 42.3.1-beta1

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 (480) hide show
  1. package/dist/AdvancedSearch-C6BJzvGT.mjs.map +1 -0
  2. package/dist/AdvancedSearch-ChnJq71j.mjs.map +1 -0
  3. package/dist/{AdvancedSearch-DEh3iiuK.mjs → AdvancedSearch-D2jzRni-.mjs} +8 -8
  4. package/dist/AdvancedSearch-DN3WFduh.mjs.map +1 -0
  5. package/dist/AdvancedSearch-cLjakm-6.mjs.map +1 -0
  6. package/dist/CategoryFilter-B0S_nCvS.mjs.map +1 -0
  7. package/dist/CategoryFilter-BVrLO_pV.mjs.map +1 -0
  8. package/dist/{CategoryFilter-Djmal5bY.mjs → CategoryFilter-CLW42mHe.mjs} +3 -3
  9. package/dist/CategoryList-B_9GG6Z9.mjs.map +1 -0
  10. package/dist/{CategoryList-Dksp79Lm.mjs → CategoryList-C1LlWALb.mjs} +1 -1
  11. package/dist/CategoryList-DxR0fpKd.mjs.map +1 -0
  12. package/dist/CategoryPage-C7aKDtgs.mjs.map +1 -0
  13. package/dist/{CategoryPage-DC8fMny_.mjs → CategoryPage-DGPJ1VPS.mjs} +2 -2
  14. package/dist/CategoryPage-DlnAp05t.mjs.map +1 -0
  15. package/dist/ChapteringModal-BplEGZj2.mjs.map +1 -0
  16. package/dist/ChapteringModal-C9yuW_IU.mjs.map +1 -0
  17. package/dist/{ChapteringModal-Be9FF1yz.mjs → ChapteringModal-DiiVSG7s.mjs} +1 -1
  18. package/dist/CheckIdentityModal-BtGdsv2v.mjs.map +1 -0
  19. package/dist/CheckIdentityModal-Cry9ra4J.mjs.map +1 -0
  20. package/dist/{CheckIdentityModal-nMszYOsW.mjs → CheckIdentityModal-p2kvRJbK.mjs} +2 -2
  21. package/dist/ClassicDatePicker--q1yYb-S.mjs.map +1 -0
  22. package/dist/ClassicDatePicker-B8bI9QfF.mjs.map +1 -0
  23. package/dist/ClassicDatePicker-CopJVkF0.mjs.map +1 -0
  24. package/dist/{ClassicDatePicker-B7UA9CqR.mjs → ClassicDatePicker-CpkjKzJ5.mjs} +39 -38
  25. package/dist/ClassicDatePicker-NxGNQxHE.mjs.map +1 -0
  26. package/dist/{ClassicNotifications-DEpVRRHg.mjs → ClassicNotifications-8CVfGSqL.mjs} +1 -1
  27. package/dist/ClassicNotifications-BFQ-R6kO.mjs.map +1 -0
  28. package/dist/ClassicNotifications-DR0PM1Xp.mjs.map +1 -0
  29. package/dist/ClipboardModal-B_SZ6jDk.mjs.map +1 -0
  30. package/dist/{ClipboardModal-BUKwZYOf.mjs → ClipboardModal-ByVXPcKD.mjs} +1 -1
  31. package/dist/ClipboardModal-DjrZQRtY.mjs.map +1 -0
  32. package/dist/{CommentInput-US8ZtNj1.mjs → CommentInput-ByigNGTw.mjs} +4 -4
  33. package/dist/CommentInput-DPMj47uE.mjs.map +1 -0
  34. package/dist/CommentInput-DbhOyi7c.mjs.map +1 -0
  35. package/dist/CommentItem-AItzrTBi.mjs.map +1 -0
  36. package/dist/{CommentItem-CqWZPmbj.mjs → CommentItem-BbUPCvEC.mjs} +3 -3
  37. package/dist/CommentItem-CvNbH7Hf.mjs.map +1 -0
  38. package/dist/CommentList-BTyyCcX4.mjs.map +1 -0
  39. package/dist/{CommentList-CSYpqgNM.mjs → CommentList-BmyJ4sBi.mjs} +2 -2
  40. package/dist/CommentList-DP6wk4PD.mjs.map +1 -0
  41. package/dist/{CommentMoreActions-T5RN6BGq.mjs → CommentMoreActions-Bnx_Gjly.mjs} +3 -3
  42. package/dist/CommentMoreActions-C1l4Y_HY.mjs.map +1 -0
  43. package/dist/CommentMoreActions-DPbJnEEV.mjs.map +1 -0
  44. package/dist/{CommentName-DslRo9jg.mjs → CommentName-C5cbnPOy.mjs} +2 -2
  45. package/dist/CommentName-D5HN8bGE.mjs.map +1 -0
  46. package/dist/CommentName-DMom_kwo.mjs.map +1 -0
  47. package/dist/{CommentParentInfo-DMX3nkCb.mjs → CommentParentInfo-BO2YNPPR.mjs} +2 -2
  48. package/dist/CommentParentInfo-DWVF5Ewh.mjs.map +1 -0
  49. package/dist/CommentParentInfo-DqHfDpKs.mjs.map +1 -0
  50. package/dist/{CommentPlayer-D3JEVPKX.mjs → CommentPlayer-B4MXG-gG.mjs} +2 -2
  51. package/dist/CommentPlayer-B67saxPf.mjs.map +1 -0
  52. package/dist/CommentPlayer-BUtEvkoV.mjs.map +1 -0
  53. package/dist/CommentSection-BIZMRePu.mjs.map +1 -0
  54. package/dist/{CommentSection-Brn0VQcc.mjs → CommentSection-BpbKr-oT.mjs} +3 -3
  55. package/dist/CommentSection-MDKioQWf.mjs.map +1 -0
  56. package/dist/CommentStore-BBm8MjxW.mjs.map +1 -0
  57. package/dist/{CommentStore-hPTYaDGr.mjs → CommentStore-CysGkBHp.mjs} +8 -8
  58. package/dist/CommentStore-F5MVSrDw.mjs.map +1 -0
  59. package/dist/ContractPreviewModal-CFSkXgB4.mjs.map +1 -0
  60. package/dist/ContractPreviewModal-CKL6Rb_V.mjs.map +1 -0
  61. package/dist/{ContractPreviewModal-48Je4Wuy.mjs → ContractPreviewModal-Dd-1KasR.mjs} +2 -2
  62. package/dist/DateFilter-CGTz76bp.mjs.map +1 -0
  63. package/dist/DateFilter-CfeYepTO.mjs.map +1 -0
  64. package/dist/DateFilter-DFw66D2V.mjs.map +1 -0
  65. package/dist/DateFilter-QGaXHkcu.mjs.map +1 -0
  66. package/dist/{DateFilter-DztHuPm8.mjs → DateFilter-iv7CkVTP.mjs} +1 -1
  67. package/dist/{DownloadPodcastButton-BYWuLoNg.mjs → DownloadPodcastButton-6HtR84aE.mjs} +2 -2
  68. package/dist/DownloadPodcastButton-D2qeKDPT.mjs.map +1 -0
  69. package/dist/DownloadPodcastButton-Tr_Y4qMu.mjs.map +1 -0
  70. package/dist/{EditCommentModal-DacFxzLx.mjs → EditCommentModal-BDzkED7G.mjs} +1 -1
  71. package/dist/EditCommentModal-BZitN0Ir.mjs.map +1 -0
  72. package/dist/EditCommentModal-CcmCx_My.mjs.map +1 -0
  73. package/dist/EmissionGroupChooser-BJCKekKM.mjs.map +1 -0
  74. package/dist/EmissionGroupChooser-ByqGmsGw.mjs.map +1 -0
  75. package/dist/{EmissionGroupChooser-KmzQjp7d.mjs → EmissionGroupChooser-DWzoWRhp.mjs} +1 -1
  76. package/dist/EmissionInlineList-CdHQBjfR.mjs.map +1 -0
  77. package/dist/EmissionInlineList-CnA0d_k2.mjs.map +1 -0
  78. package/dist/{EmissionInlineList-BoEIAbLu.mjs → EmissionInlineList-ePdUy8g1.mjs} +5 -5
  79. package/dist/EmissionItem-B39oFnXF.mjs.map +1 -0
  80. package/dist/EmissionItem-CjAUdLb7.mjs.map +1 -0
  81. package/dist/{EmissionItem-BeQWw-UT.mjs → EmissionItem-CoMTOm31.mjs} +4 -4
  82. package/dist/EmissionList-B0UntYdC.mjs.map +1 -0
  83. package/dist/EmissionList-C7lQBdlW.mjs.map +1 -0
  84. package/dist/{EmissionList-DB7O1nj5.mjs → EmissionList-QkBmjbaP.mjs} +4 -4
  85. package/dist/EmissionPage-BF6s2ySo.mjs.map +1 -0
  86. package/dist/EmissionPage-B_-nDP5x.mjs.map +1 -0
  87. package/dist/{EmissionPage-CNYJ1Puo.mjs → EmissionPage-BoQglhf0.mjs} +9 -9
  88. package/dist/EmissionPage-C-ESprrZ.mjs.map +1 -0
  89. package/dist/EmissionPage-CPXcNHGS.mjs.map +1 -0
  90. package/dist/EmissionPage-mXbUqOh9.mjs.map +1 -0
  91. package/dist/{EmissionPlayerItem-S_yqupad.mjs → EmissionPlayerItem-B6d5hOlx.mjs} +3 -3
  92. package/dist/EmissionPlayerItem-C27zJBhY.mjs.map +1 -0
  93. package/dist/EmissionPlayerItem-C3fkgEaL.mjs.map +1 -0
  94. package/dist/EmissionPresentationItem-BNnDSWGQ.mjs.map +1 -0
  95. package/dist/EmissionPresentationItem-BeETY65I.mjs.map +1 -0
  96. package/dist/{EmissionPresentationItem-kJgKN7Ju.mjs → EmissionPresentationItem-DYDwfqwp.mjs} +1 -1
  97. package/dist/EmissionPresentationList-BD7rIUok.mjs.map +1 -0
  98. package/dist/EmissionPresentationList-CGMyY_iu.mjs.map +1 -0
  99. package/dist/{EmissionPresentationList-Bg9X3CJP.mjs → EmissionPresentationList-Cxi7QnIs.mjs} +3 -3
  100. package/dist/EmissionsPage-BIspB5uq.mjs.map +1 -0
  101. package/dist/EmissionsPage-Cgzvn2h8.mjs.map +1 -0
  102. package/dist/EmissionsPage-D09zTpGb.mjs.map +1 -0
  103. package/dist/{EmissionsPage-BLpGH_PR.mjs → EmissionsPage-D4KDPr8j.mjs} +5 -5
  104. package/dist/EmissionsPage-wjKBLFM6.mjs.map +1 -0
  105. package/dist/Error403Page-B6Q7ijY3.mjs.map +1 -0
  106. package/dist/Error403Page-DF08mgCL.mjs.map +1 -0
  107. package/dist/{Error403Page-BB69doEn.mjs → Error403Page-DVmC5AOd.mjs} +2 -2
  108. package/dist/FooterGarSection-BWahCyz0.mjs.map +1 -0
  109. package/dist/{FooterGarSection-B9nsnpfF.mjs → FooterGarSection-BqPggI3o.mjs} +3 -3
  110. package/dist/FooterGarSection-CN8ZfO7e.mjs.map +1 -0
  111. package/dist/FooterSection-BOjr1LRb.mjs.map +1 -0
  112. package/dist/{FooterSection-DdGtlbk-.mjs → FooterSection-C5FEIJlU.mjs} +11 -11
  113. package/dist/FooterSection-nVRzKSYN.mjs.map +1 -0
  114. package/dist/HomeDropdown-3fl_xltN.mjs.map +1 -0
  115. package/dist/{HomeDropdown-BqwwLStt.mjs → HomeDropdown-B9qhkjJy.mjs} +2 -2
  116. package/dist/HomeDropdown-DGNkJhG2.mjs.map +1 -0
  117. package/dist/{HomePage-JOUAKKfP.mjs → HomePage-CrAiSIgn.mjs} +3 -3
  118. package/dist/HomePage-D0Pbu_h1.mjs.map +1 -0
  119. package/dist/HomePage-ry0NfX1M.mjs.map +1 -0
  120. package/dist/InlineRubriqueList-BdpS1pVc.mjs.map +1 -0
  121. package/dist/InlineRubriqueList-BlcjQ4wR.mjs.map +1 -0
  122. package/dist/{InlineRubriqueList-BzcHKvM4.mjs → InlineRubriqueList-ezgexR-O.mjs} +1 -1
  123. package/dist/LikeSection-Cqj4y7qZ.mjs.map +1 -0
  124. package/dist/LikeSection-HJla-zgI.mjs.map +1 -0
  125. package/dist/{LikeSection-MmbHMunb.mjs → LikeSection-wNtNtvR6.mjs} +3 -3
  126. package/dist/{ListPaginate-5uRK_QKJ.mjs → ListPaginate-BPdnBcpe.mjs} +2 -2
  127. package/dist/ListPaginate-DYzRnp-2.mjs.map +1 -0
  128. package/dist/ListPaginate-DyR7HLIc.mjs.map +1 -0
  129. package/dist/LiveHorizontalList-CaujYMT3.mjs.map +1 -0
  130. package/dist/{LiveHorizontalList-CpoIRd4C.mjs → LiveHorizontalList-Db4bP06I.mjs} +3 -3
  131. package/dist/LiveHorizontalList-DhsOZPT3.mjs.map +1 -0
  132. package/dist/{LiveList-DYFBrNgg.mjs → LiveList-D2DEpx3e.mjs} +5 -5
  133. package/dist/LiveList-DOi4GV1x.mjs.map +1 -0
  134. package/dist/LiveList-Dh1mJVs7.mjs.map +1 -0
  135. package/dist/LivesPage-BvDLscOE.mjs.map +1 -0
  136. package/dist/{LivesPage-FSkmBdVw.mjs → LivesPage-Dqton3gU.mjs} +2 -2
  137. package/dist/LivesPage-yy_5pI8R.mjs.map +1 -0
  138. package/dist/MapPage-3n-rigBK.mjs.map +1 -0
  139. package/dist/MapPage-5GwE8Z4E.mjs.map +1 -0
  140. package/dist/{MapPage-DpBt2gWF.mjs → MapPage-bIe2a9O1.mjs} +2 -2
  141. package/dist/MobileMenu-BSos17v3.mjs.map +1 -0
  142. package/dist/{MobileMenu-CjNMfHUP.mjs → MobileMenu-DljmAIuw.mjs} +5 -5
  143. package/dist/MobileMenu-K0rNwrW1.mjs.map +1 -0
  144. package/dist/NewsletterModal-CFGXBtID.mjs.map +1 -0
  145. package/dist/NewsletterModal-CZNwpCK5.mjs.map +1 -0
  146. package/dist/{NewsletterModal-BurqHTFc.mjs → NewsletterModal-DZk0mSVC.mjs} +1 -1
  147. package/dist/OrganisationChooser-PpO7MD7f.mjs.map +1 -0
  148. package/dist/OrganisationChooser-Y_jO6oXv.mjs.map +1 -0
  149. package/dist/{OrganisationChooser-Dx-OT7MW.mjs → OrganisationChooser-yFfB9Xvq.mjs} +2 -2
  150. package/dist/{OrganisationChooserLight-BF5fT5pV.mjs → OrganisationChooserLight-Bcltbv-v.mjs} +1 -1
  151. package/dist/OrganisationChooserLight-Dh7wMH40.mjs.map +1 -0
  152. package/dist/OrganisationChooserLight-Dx_rkvpP.mjs.map +1 -0
  153. package/dist/PageNotFound-DeW-K_hL.mjs.map +1 -0
  154. package/dist/{PageNotFound-Cj-3Gv8T.mjs → PageNotFound-DogaoIFX.mjs} +2 -2
  155. package/dist/PageNotFound-gRuMWYCp.mjs.map +1 -0
  156. package/dist/ParticipantInlineList-CY_s6aJm.mjs.map +1 -0
  157. package/dist/{ParticipantInlineList-DEWqM1Io.mjs → ParticipantInlineList-D9pkOlvP.mjs} +4 -4
  158. package/dist/ParticipantInlineList-DSatB75C.mjs.map +1 -0
  159. package/dist/ParticipantItem-BG7yqRvD.mjs.map +1 -0
  160. package/dist/ParticipantItem-BTK25HID.mjs.map +1 -0
  161. package/dist/{ParticipantItem-BZAUIeSR.mjs → ParticipantItem-CbHOfVon.mjs} +3 -3
  162. package/dist/ParticipantPage-B4VnV8Yc.mjs.map +1 -0
  163. package/dist/{ParticipantPage-CzaHoWij.mjs → ParticipantPage-Bm18enqn.mjs} +6 -6
  164. package/dist/ParticipantPage-CNRNKTtC.mjs.map +1 -0
  165. package/dist/ParticipantPage-CpkhQjN2.mjs.map +1 -0
  166. package/dist/ParticipantPage-D61CCIqy.mjs.map +1 -0
  167. package/dist/ParticipantPage-Dh4JJCmJ.mjs.map +1 -0
  168. package/dist/ParticipantsPage-COaQrVID.mjs.map +1 -0
  169. package/dist/ParticipantsPage-DRVVU7qp.mjs.map +1 -0
  170. package/dist/{ParticipantsPage-goxJZQZZ.mjs → ParticipantsPage-DsHV_Ipv.mjs} +6 -6
  171. package/dist/{PlayerAnonymousModal-By96BtpA.mjs → PlayerAnonymousModal-B1iZ34O8.mjs} +2 -2
  172. package/dist/PlayerAnonymousModal-CBZStK-L.mjs.map +1 -0
  173. package/dist/PlayerAnonymousModal-Cq6-Dn49.mjs.map +1 -0
  174. package/dist/PlayerAnonymousModal-Cu2GGoAh.mjs.map +1 -0
  175. package/dist/PlayerAnonymousModal-DiXWtNmM.mjs.map +1 -0
  176. package/dist/PlayerAnonymousModal-DrQvDDym.mjs.map +1 -0
  177. package/dist/PlayerCompact-B9oeGx_g.mjs.map +1 -0
  178. package/dist/{PlayerCompact-CjU8xxVH.mjs → PlayerCompact-BDvyTiV5.mjs} +3 -3
  179. package/dist/PlayerCompact-E8ydrdJ4.mjs.map +1 -0
  180. package/dist/PlayerComponent-4Wj5XlrS.mjs.map +1 -0
  181. package/dist/{PlayerComponent-B58O6U6i.mjs → PlayerComponent-BGxfETJ7.mjs} +47 -47
  182. package/dist/PlayerComponent-C222I0kT.mjs.map +1 -0
  183. package/dist/PlayerComponent-CjNZNKKz.mjs.map +1 -0
  184. package/dist/PlayerComponent-UG_c6_yr.mjs.map +1 -0
  185. package/dist/{PlayerLarge-CWL5SDzD.mjs → PlayerLarge-9iGjvAUI.mjs} +5 -5
  186. package/dist/PlayerLarge-DP7RsA83.mjs.map +1 -0
  187. package/dist/PlayerLarge-DpiFO7gk.mjs.map +1 -0
  188. package/dist/PlayerLarge-HvRHSw4j.mjs.map +1 -0
  189. package/dist/PlayerLarge-X5uYCbyS.mjs.map +1 -0
  190. package/dist/{PlayerPlayButton-DmvV2YDi.mjs → PlayerPlayButton-BIsfgj0d.mjs} +4 -4
  191. package/dist/PlayerPlayButton-BQ4zJOrE.mjs.map +1 -0
  192. package/dist/PlayerPlayButton-kh4ZCdWh.mjs.map +1 -0
  193. package/dist/{PlayerProgressBar-Cl_mF4nD.mjs → PlayerProgressBar-DKYzPUpT.mjs} +2 -2
  194. package/dist/PlayerProgressBar-Dr-aFk7O.mjs.map +1 -0
  195. package/dist/PlayerProgressBar-xc1ZFPJY.mjs.map +1 -0
  196. package/dist/PlayerStore-Aq_ukXXS.mjs.map +1 -0
  197. package/dist/PlayerStore-C_QCHbT3.mjs.map +1 -0
  198. package/dist/{PlayerStore-CKprkxa0.mjs → PlayerStore-DggKki80.mjs} +1 -1
  199. package/dist/{PlayerVideo-CVUU7nHT.mjs → PlayerVideo-7decUhNG.mjs} +3 -3
  200. package/dist/PlayerVideo-Bhok6qYS.mjs.map +1 -0
  201. package/dist/PlayerVideo-CN609whx.mjs.map +1 -0
  202. package/dist/PlayerVideo-DXG_PsWA.mjs.map +1 -0
  203. package/dist/PlayerVideoDigiteka-B1rRVLzy.mjs.map +1 -0
  204. package/dist/PlayerVideoDigiteka-B6qODy7b.mjs.map +1 -0
  205. package/dist/{PlayerVideoDigiteka-DZIqqN8a.mjs → PlayerVideoDigiteka-Dxx63XHI.mjs} +2 -2
  206. package/dist/PlayerVideoHls-BoAbvi2b.mjs.map +1 -0
  207. package/dist/PlayerVideoHls-DBODDRmV.mjs.map +1 -0
  208. package/dist/PlayerVideoHls-DVNHm_O2.mjs.map +1 -0
  209. package/dist/{PlayerVideoHls-BirHOkZD.mjs → PlayerVideoHls-tRcw4ys1.mjs} +4 -4
  210. package/dist/PlaylistPage-BwF2VdGb.mjs.map +1 -0
  211. package/dist/PlaylistPage-CINwx3zE.mjs.map +1 -0
  212. package/dist/PlaylistPage-CPB647jC.mjs.map +1 -0
  213. package/dist/{PlaylistPage-DljbABur.mjs → PlaylistPage-DAiQgAL9.mjs} +35 -35
  214. package/dist/PlaylistPage-DDzE5GQs.mjs.map +1 -0
  215. package/dist/PlaylistPage-bm1nWKMg.mjs.map +1 -0
  216. package/dist/{PlaylistsPage-BSW-uPWF.mjs → PlaylistsPage-BVD9XkRW.mjs} +13 -13
  217. package/dist/PlaylistsPage-BwkVSYIp.mjs.map +1 -0
  218. package/dist/PlaylistsPage-Dvh77ql6.mjs.map +1 -0
  219. package/dist/PodcastFilterList-BBhzOM64.mjs.map +1 -0
  220. package/dist/PodcastFilterList-BKBjd36i.mjs.map +1 -0
  221. package/dist/{PodcastFilterList-YM90eN60.mjs → PodcastFilterList-DbluQzny.mjs} +2 -2
  222. package/dist/{PodcastImage-BtiQlrb3.mjs → PodcastImage-BFA22TgZ.mjs} +6 -6
  223. package/dist/PodcastImage-BhQKB5te.mjs.map +1 -0
  224. package/dist/PodcastImage-CHx3bUzt.mjs.map +1 -0
  225. package/dist/{PodcastInlineList-B32BSFqN.mjs → PodcastInlineList-COmwflcV.mjs} +1 -1
  226. package/dist/PodcastInlineList-CcNd_Hbs.mjs.map +1 -0
  227. package/dist/PodcastInlineList-akLivgog.mjs.map +1 -0
  228. package/dist/{PodcastInlineListTemplate-DTrS1UiG.mjs → PodcastInlineListTemplate-Chbi8aME.mjs} +3 -3
  229. package/dist/PodcastInlineListTemplate-DT9ZRs61.mjs.map +1 -0
  230. package/dist/PodcastInlineListTemplate-Dh1xF6xT.mjs.map +1 -0
  231. package/dist/PodcastIsPlaying-C0jcpBQd.mjs.map +1 -0
  232. package/dist/PodcastIsPlaying-H6P1CHAI.mjs.map +1 -0
  233. package/dist/{PodcastIsPlaying-BtmHnQi9.mjs → PodcastIsPlaying-ugHcefCy.mjs} +1 -1
  234. package/dist/PodcastItem-BfvK4ion.mjs.map +1 -0
  235. package/dist/{PodcastItem-TdtzApJ6.mjs → PodcastItem-Dhm8myBb.mjs} +6 -6
  236. package/dist/PodcastItem-DwK_Yu1G.mjs.map +1 -0
  237. package/dist/{PodcastList-Bbe3yWiu.mjs → PodcastList-BQX_YW4Q.mjs} +4 -4
  238. package/dist/PodcastList-C2R92m6S.mjs.map +1 -0
  239. package/dist/PodcastList-DWl6zz_z.mjs.map +1 -0
  240. package/dist/{PodcastList-BAOJhQ7G.mjs → PodcastList-DYhGnphb.mjs} +5 -5
  241. package/dist/PodcastList-Dbt4nmKg.mjs.map +1 -0
  242. package/dist/PodcastList-KaQBRbR9.mjs.map +1 -0
  243. package/dist/PodcastPage-B0pbZ5o_.mjs.map +1 -0
  244. package/dist/PodcastPage-BOA44Us4.mjs.map +1 -0
  245. package/dist/PodcastPage-C37Wa-qH.mjs.map +1 -0
  246. package/dist/PodcastPage-D0HYJxaK.mjs.map +1 -0
  247. package/dist/PodcastPage-D0U6-etV.mjs.map +1 -0
  248. package/dist/PodcastPage-DwMPY4po.mjs.map +1 -0
  249. package/dist/{PodcastPage-CAxub2do.mjs → PodcastPage-DyQYsdi4.mjs} +26 -26
  250. package/dist/PodcastPlayBar-Bo-W_dSK.mjs.map +1 -0
  251. package/dist/PodcastPlayBar-Cpr3Ff7J.mjs.map +1 -0
  252. package/dist/{PodcastPlayBar-gAEttclo.mjs → PodcastPlayBar-DX_WtPKh.mjs} +3 -3
  253. package/dist/PodcastPlayBasicButton-BvJPrxpI.mjs.map +1 -0
  254. package/dist/PodcastPlayBasicButton-CS5TNlmX.mjs.map +1 -0
  255. package/dist/{PodcastPlayBasicButton-7w91y2ow.mjs → PodcastPlayBasicButton-CVXhEUHB.mjs} +1 -1
  256. package/dist/{PodcastPlayButton-CQY0d6f-.mjs → PodcastPlayButton--gjzxW0o.mjs} +3 -3
  257. package/dist/PodcastPlayButton-BqvE4ZUl.mjs.map +1 -0
  258. package/dist/PodcastPlayButton-DW5Feest.mjs.map +1 -0
  259. package/dist/{PodcastPlaylistInlineList-BE5L8pSP.mjs → PodcastPlaylistInlineList-BNMWn-TD.mjs} +7 -7
  260. package/dist/PodcastPlaylistInlineList-BV31HaB2.mjs.map +1 -0
  261. package/dist/PodcastPlaylistInlineList-HEdFAq1l.mjs.map +1 -0
  262. package/dist/{PodcastPresentationList-DH6Rq0Z4.mjs → PodcastPresentationList-B9vORr36.mjs} +4 -4
  263. package/dist/PodcastPresentationList-ChqvdXY0.mjs.map +1 -0
  264. package/dist/PodcastPresentationList-Dit6HvJr.mjs.map +1 -0
  265. package/dist/PodcastProgressBar-BoGtJPAa.mjs.map +1 -0
  266. package/dist/{PodcastProgressBar-DoeG7lDj.mjs → PodcastProgressBar-CyU6rIuS.mjs} +3 -3
  267. package/dist/PodcastProgressBar-DTRhKzW-.mjs.map +1 -0
  268. package/dist/{PodcastRawTranscript-Cktqtbcg.mjs → PodcastRawTranscript-BiuftXu-.mjs} +2 -2
  269. package/dist/PodcastRawTranscript-C8SJcaQE.mjs.map +1 -0
  270. package/dist/PodcastRawTranscript-nfzHM0k_.mjs.map +1 -0
  271. package/dist/PodcastRawTranscript-r5pRtZDg.mjs.map +1 -0
  272. package/dist/PodcastSwiperList-Bsg0q89o.mjs.map +1 -0
  273. package/dist/PodcastSwiperList-Cju5VHcH.mjs.map +1 -0
  274. package/dist/{PodcastSwiperList-DZ26-8xy.mjs → PodcastSwiperList-bOhOABMX.mjs} +4 -4
  275. package/dist/PodcastmakerHeader-6fIwE70J.mjs.map +1 -0
  276. package/dist/PodcastmakerHeader-BBPEy__r.mjs.map +1 -0
  277. package/dist/{PodcastmakerHeader-MhdOrssb.mjs → PodcastmakerHeader-CIoJwm1L.mjs} +1 -1
  278. package/dist/PodcastsPage-967SI8kL.mjs.map +1 -0
  279. package/dist/{PodcastsPage-BXjTDNhn.mjs → PodcastsPage-BZCrwDlm.mjs} +5 -5
  280. package/dist/PodcastsPage-DKWHzNNA.mjs.map +1 -0
  281. package/dist/PodcastsPage-DONqoMkB.mjs.map +1 -0
  282. package/dist/PodcastsPage-DhEMPqCT.mjs.map +1 -0
  283. package/dist/{ProductorSearch-Z36zTZK4.mjs → ProductorSearch-B7pJFNqX.mjs} +3 -3
  284. package/dist/ProductorSearch-BgmV_RCq.mjs.map +1 -0
  285. package/dist/ProductorSearch-C4Nv2HzS.mjs.map +1 -0
  286. package/dist/ProgressBar-BMeSiueh.mjs.map +1 -0
  287. package/dist/ProgressBar-C15ih0uL.mjs.map +1 -0
  288. package/dist/{ProgressBar-CTOa-MDz.mjs → ProgressBar-o17a2f1E.mjs} +1 -1
  289. package/dist/QrCode-BYLxjhwi.mjs.map +1 -0
  290. package/dist/QrCode-CCigeTaZ.mjs +109 -0
  291. package/dist/QrCode-CaXoOjo-.mjs.map +1 -0
  292. package/dist/QrCode-CcQR60hB.mjs.map +1 -0
  293. package/dist/QrCode-S_eLVZoz.mjs.map +1 -0
  294. package/dist/QrCode-XZMMiaX5.mjs.map +1 -0
  295. package/dist/QrCodeModal-BJOu1pAV.mjs.map +1 -0
  296. package/dist/QrCodeModal-BjT-0P0w.mjs.map +1 -0
  297. package/dist/QrCodeModal-BrabSTzq.mjs.map +1 -0
  298. package/dist/QrCodeModal-CjvbRYLW.mjs.map +1 -0
  299. package/dist/{QrCodeModal-DE3juCsN.mjs → QrCodeModal-Dpw_tCQ6.mjs} +1 -1
  300. package/dist/QrCodeModal-N2fjbP4S.mjs.map +1 -0
  301. package/dist/RadioCurrently-B_b8DV2w.mjs.map +1 -0
  302. package/dist/RadioCurrently-DufvDqm1.mjs.map +1 -0
  303. package/dist/{RadioCurrently-BlAhcc9E.mjs → RadioCurrently-ysRKhxKU.mjs} +3 -3
  304. package/dist/RadioHistory-B03bYMxm.mjs.map +1 -0
  305. package/dist/{RadioHistory-C7S79sZD.mjs → RadioHistory-DjsqvRgH.mjs} +2 -2
  306. package/dist/RadioHistory-Dv4gt9TM.mjs.map +1 -0
  307. package/dist/RadioImage-BFdiGgi_.mjs.map +1 -0
  308. package/dist/{RadioImage-BTn2Lquc.mjs → RadioImage-CSseYIVb.mjs} +4 -4
  309. package/dist/RadioImage-CrtD33dM.mjs.map +1 -0
  310. package/dist/RadioList--f7RDhHJ.mjs.map +1 -0
  311. package/dist/{RadioList-BD3zNwmk.mjs → RadioList-BZFFAobk.mjs} +4 -4
  312. package/dist/RadioList-De9NQ23Q.mjs.map +1 -0
  313. package/dist/RadioPage-BK1N--Kr.mjs.map +1 -0
  314. package/dist/RadioPage-BTtNFJI2.mjs.map +1 -0
  315. package/dist/RadioPage-Cqas0JX6.mjs.map +1 -0
  316. package/dist/RadioPage-DhSB0sX5.mjs.map +1 -0
  317. package/dist/RadioPage-DlahFXYC.mjs.map +1 -0
  318. package/dist/{RadioPage-Bv3oupa1.mjs → RadioPage-dMKtmHoU.mjs} +4 -4
  319. package/dist/RadioPlanning-BU1E8i4t.mjs.map +1 -0
  320. package/dist/{RadioPlanning-nkv_Mb_t.mjs → RadioPlanning-BmIxuUBI.mjs} +2 -2
  321. package/dist/RadioPlanning-Bx-N-xqX.mjs.map +1 -0
  322. package/dist/RadioProgressBar-0XM3ZTGU.mjs.map +1 -0
  323. package/dist/{RadioProgressBar-B2EgCOrK.mjs → RadioProgressBar-CQRGuPpC.mjs} +1 -1
  324. package/dist/RadioProgressBar-oyeS56mV.mjs.map +1 -0
  325. package/dist/{RecaptchaModal-w-9MlZ45.mjs → RecaptchaModal-BdW4xNlX.mjs} +1 -1
  326. package/dist/RecaptchaModal-DFlFQcHs.mjs.map +1 -0
  327. package/dist/RecaptchaModal-iLQ4UYOL.mjs.map +1 -0
  328. package/dist/ReportAbuseModal-BaPt2DLK.mjs.map +1 -0
  329. package/dist/{ReportAbuseModal-O1K7j7NV.mjs → ReportAbuseModal-Bi6upLga.mjs} +3 -3
  330. package/dist/ReportAbuseModal-CH7Y153n.mjs.map +1 -0
  331. package/dist/RightsIndicator-BH3jm_1O.mjs.map +1 -0
  332. package/dist/RightsIndicator-d8ffUFIj.mjs.map +1 -0
  333. package/dist/{RightsIndicator-D0cSu8j2.mjs → RightsIndicator-wm6dW8L3.mjs} +1 -1
  334. package/dist/RightsWrapper-C3BRHqqo.mjs.map +1 -0
  335. package/dist/{RightsWrapper-BUj_1bwR.mjs → RightsWrapper-DAZF0Iij.mjs} +4 -4
  336. package/dist/RightsWrapper-DJG9Ds6c.mjs.map +1 -0
  337. package/dist/{RubriqueFilter-RgardNnQ.mjs → RubriqueFilter-C3ImHHNV.mjs} +2 -2
  338. package/dist/RubriqueFilter-C9C_OiF5.mjs.map +1 -0
  339. package/dist/RubriqueFilter-_8V1n9-x.mjs.map +1 -0
  340. package/dist/RubriqueList-99-nWSvq.mjs.map +1 -0
  341. package/dist/{RubriqueList-DA9OYqUl.mjs → RubriqueList-Bl0AIvmm.mjs} +2 -2
  342. package/dist/RubriqueList-H_NHILuj.mjs.map +1 -0
  343. package/dist/RubriquePage-6KFPBPz8.mjs.map +1 -0
  344. package/dist/{RubriquePage-xgTOce7c.mjs → RubriquePage-BqDlwwdL.mjs} +4 -4
  345. package/dist/RubriquePage-Cwz9OqLO.mjs.map +1 -0
  346. package/dist/SearchPage-BtZnj3sA.mjs.map +1 -0
  347. package/dist/SearchPage-DMIV2AgJ.mjs.map +1 -0
  348. package/dist/{SearchPage-C3o5RPP0.mjs → SearchPage-y4ZwqHGE.mjs} +2 -2
  349. package/dist/ShareAnonymous-BeSQozvM.mjs.map +1 -0
  350. package/dist/ShareAnonymous-BgsR6Ahp.mjs.map +1 -0
  351. package/dist/ShareAnonymous-DVpKBKbi.mjs.map +1 -0
  352. package/dist/ShareAnonymous-DWArDFT0.mjs.map +1 -0
  353. package/dist/ShareAnonymous-IaVbb-rp.mjs.map +1 -0
  354. package/dist/{ShareAnonymous-bOwwEjPv.mjs → ShareAnonymous-q7zopt6i.mjs} +2 -2
  355. package/dist/ShareModalPlayer-BHmsvxXF.mjs.map +1 -0
  356. package/dist/{ShareModalPlayer-D2oBrSly.mjs → ShareModalPlayer-Cfnk68-U.mjs} +1 -1
  357. package/dist/ShareModalPlayer-DLBU3lsU.mjs.map +1 -0
  358. package/dist/ShareModalPlayer-O-CmDObW.mjs.map +1 -0
  359. package/dist/ShareModalPlayer-QYu8Q9ks.mjs.map +1 -0
  360. package/dist/ShareModalPlayer-Vga-96DM.mjs.map +1 -0
  361. package/dist/{ShareNewsletter-CNw1LziN.mjs → ShareNewsletter-BWIAt47D.mjs} +1 -1
  362. package/dist/ShareNewsletter-BhFk6ARk.mjs.map +1 -0
  363. package/dist/ShareNewsletter-JCO4h7rk.mjs.map +1 -0
  364. package/dist/SharePlayer-C-RgIOh1.mjs.map +1 -0
  365. package/dist/{SharePlayer-CRri0YED.mjs → SharePlayer-C0aveOwy.mjs} +2 -2
  366. package/dist/SharePlayer-CNXrUj8M.mjs.map +1 -0
  367. package/dist/SharePlayer-D0-qY2dS.mjs.map +1 -0
  368. package/dist/SharePlayer-DQoFa7iv.mjs.map +1 -0
  369. package/dist/SharePlayer-DwNl3E7o.mjs.map +1 -0
  370. package/dist/{SharePlayerRadio-DVsegQMu.mjs → SharePlayerRadio-BqaeyEls.mjs} +2 -2
  371. package/dist/SharePlayerRadio-CHvCtKdZ.mjs.map +1 -0
  372. package/dist/SharePlayerRadio-CIsy-rCC.mjs.map +1 -0
  373. package/dist/SharePlayerRadio-ChfNulnf.mjs.map +1 -0
  374. package/dist/SharePlayerRadio-DA-W-306.mjs.map +1 -0
  375. package/dist/SharePlayerRadio-DwPeLUsk.mjs.map +1 -0
  376. package/dist/SharePlayerTypes-CeMV4n10.mjs.map +1 -0
  377. package/dist/SharePlayerTypes-DdyoQZDi.mjs.map +1 -0
  378. package/dist/{SharePlayerTypes-BxkEoBSL.mjs → SharePlayerTypes-DyrqFDVJ.mjs} +1 -1
  379. package/dist/ShareSocialsButtons-BHWzJVne.mjs.map +1 -0
  380. package/dist/ShareSocialsButtons-Bjx2ONvj.mjs.map +1 -0
  381. package/dist/{ShareSocialsButtons-BJ3DqvIO.mjs → ShareSocialsButtons-PqMXhFEk.mjs} +1 -1
  382. package/dist/SimpleLayout-C29bPtbd.mjs.map +1 -0
  383. package/dist/{SimpleLayout-BJlcQjx9.mjs → SimpleLayout-CUavy1lD.mjs} +2 -2
  384. package/dist/SimpleLayout-Cjc3Q9Mb.mjs.map +1 -0
  385. package/dist/SimpleLayout-D4sVjQGu.mjs.map +1 -0
  386. package/dist/SimpleLayout-DaoXS--3.mjs.map +1 -0
  387. package/dist/{SmartLinkPage-DpD90wc7.mjs → SmartLinkPage-6HgX8LDv.mjs} +16 -16
  388. package/dist/SmartLinkPage-BcQmox7e.mjs.map +1 -0
  389. package/dist/SmartLinkPage-M_zB_Xp1.mjs.map +1 -0
  390. package/dist/{SubscribeButtons-zlRDGEzS.mjs → SubscribeButtons-Cy2S93qA.mjs} +2 -2
  391. package/dist/SubscribeButtons-CyGYD1B1.mjs.map +1 -0
  392. package/dist/SubscribeButtons-DjjZQfOU.mjs.map +1 -0
  393. package/dist/SwiperList-BNODHhLF.mjs.map +1 -0
  394. package/dist/SwiperList-Cqklwlg9.mjs.map +1 -0
  395. package/dist/{SwiperList-BlF3rPq5.mjs → SwiperList-O8nUg87R.mjs} +1 -1
  396. package/dist/TagList-4RDriU1J.mjs.map +1 -0
  397. package/dist/TagList-B5JPfT6j.mjs.map +1 -0
  398. package/dist/{TagList-BBHyaKp-.mjs → TagList-DGdjrNax.mjs} +1 -1
  399. package/dist/TagPage-BOsz6Bot.mjs.map +1 -0
  400. package/dist/TagPage-CALmJwxW.mjs.map +1 -0
  401. package/dist/{TagPage-DLpNBBjP.mjs → TagPage-DrznMl-f.mjs} +3 -3
  402. package/dist/{TopBar-CLWWRgr7.mjs → TopBar-CE-8lAPx.mjs} +36 -36
  403. package/dist/TopBar-CUCBss7X.mjs.map +1 -0
  404. package/dist/TopBar-CeQQ1hgH.mjs.map +1 -0
  405. package/dist/{UserButtonContent-BR3Rlqwp.mjs → UserButtonContent--VK68UsY.mjs} +6 -6
  406. package/dist/UserButtonContent-067qGenf.mjs.map +1 -0
  407. package/dist/UserButtonContent-Dqgyrgzv.mjs.map +1 -0
  408. package/dist/VideoModuleBox-9QgBI-Q-.mjs.map +1 -0
  409. package/dist/{VideoModuleBox-DxYJVwy3.mjs → VideoModuleBox-Bcqman6a.mjs} +1 -1
  410. package/dist/VideoModuleBox-BrVK2bDZ.mjs.map +1 -0
  411. package/dist/VideoModuleBox-DWO47_bZ.mjs.map +1 -0
  412. package/dist/VideoPage-4MB4zmnA.mjs.map +1 -0
  413. package/dist/VideoPage-C0_t7XMC.mjs.map +1 -0
  414. package/dist/VideoPage-CIDpzbkb.mjs.map +1 -0
  415. package/dist/{VideoPage-BaeTduNB.mjs → VideoPage-CaDhjXBc.mjs} +6 -6
  416. package/dist/VideoPage-DEJSfeFy.mjs.map +1 -0
  417. package/dist/{classicApi-pmODlqv5.mjs → classicApi-CGipMqf7.mjs} +267 -256
  418. package/dist/classicApi-CW1Z-HoF.mjs.map +1 -0
  419. package/dist/classicApi-OzToKuW1.mjs.map +1 -0
  420. package/dist/{downloadHelper-BAI-eqgA.mjs → downloadHelper-C3QooCxr.mjs} +1 -1
  421. package/dist/downloadHelper-D7dUpp5l.mjs.map +1 -0
  422. package/dist/downloadHelper-DwV3Mmd3.mjs.map +1 -0
  423. package/dist/index.css +1 -1
  424. package/dist/index.mjs +182 -182
  425. package/dist/src/components/form/ClassicDatePicker.vue.d.ts +16 -8
  426. package/dist/src/i18n.d.ts +2 -0
  427. package/dist/tests.mjs +2 -2
  428. package/dist/useAdvancedParamInit-BKw9VZ53.mjs.map +1 -0
  429. package/dist/useAdvancedParamInit-CyRmbqqe.mjs.map +1 -0
  430. package/dist/{useAdvancedParamInit-Bgvt8758.mjs → useAdvancedParamInit-D5roUdHI.mjs} +10 -10
  431. package/dist/useDayjs-BKBB00TF.mjs.map +1 -0
  432. package/dist/useDayjs-UQLGUbw5.mjs.map +1 -0
  433. package/dist/{useDayjs-DGb3L4kJ.mjs → useDayjs-VUs19G9T.mjs} +1 -1
  434. package/dist/useErrorHandler-BKN3lhJ5.mjs.map +1 -0
  435. package/dist/useErrorHandler-C3XnRTmp.mjs.map +1 -0
  436. package/dist/{useErrorHandler-D9W2BURn.mjs → useErrorHandler-x9sjDYSz.mjs} +1 -1
  437. package/dist/useImageProxy-AEcmDpvW.mjs.map +1 -0
  438. package/dist/useImageProxy-BzTG_GCn.mjs.map +1 -0
  439. package/dist/{useImageProxy-8ndy_oTo.mjs → useImageProxy-CCpDzPmQ.mjs} +1 -1
  440. package/dist/useOrgaComputed-4PduqYTq.mjs.map +1 -0
  441. package/dist/useOrgaComputed-C2n0FBbv.mjs.map +1 -0
  442. package/dist/{useOrgaComputed-CBJ5sDOm.mjs → useOrgaComputed-D81Jihm-.mjs} +2 -2
  443. package/dist/{usePlayerLogicProgress-C2L7cMdd.mjs → usePlayerLogicProgress-BybmSAcs.mjs} +2 -2
  444. package/dist/usePlayerLogicProgress-CKoCod6g.mjs.map +1 -0
  445. package/dist/usePlayerLogicProgress-DZaPRo6p.mjs.map +1 -0
  446. package/dist/usePodcastView-B-2HPFAo.mjs.map +1 -0
  447. package/dist/{usePodcastView-CoDJJr6Y.mjs → usePodcastView-CkM-n6iO.mjs} +3 -3
  448. package/dist/usePodcastView-jdYTK1cW.mjs.map +1 -0
  449. package/dist/{usePresentationItem-DZZVm3hh.mjs → usePresentationItem-CLEGZwI3.mjs} +3 -3
  450. package/dist/usePresentationItem-Com4i40U.mjs.map +1 -0
  451. package/dist/usePresentationItem-OpMean0v.mjs.map +1 -0
  452. package/dist/{useRights-DOXtpjv5.mjs → useRights-BI2tXXjR.mjs} +1 -1
  453. package/dist/useRights-Bsv9hr7w.mjs.map +1 -0
  454. package/dist/useRights-DfudFDI6.mjs.map +1 -0
  455. package/dist/{useRubriquesFilterComputed-DoUOqOrJ.mjs → useRubriquesFilterComputed-D1yqLnK4.mjs} +1 -1
  456. package/dist/useRubriquesFilterComputed-DGDJp2gc.mjs.map +1 -0
  457. package/dist/useRubriquesFilterComputed-NNE-FElk.mjs.map +1 -0
  458. package/dist/{useRubriquesFilterParam-BE8BbmAQ.mjs → useRubriquesFilterParam-2eMd5ND7.mjs} +1 -1
  459. package/dist/useRubriquesFilterParam-DE5dYl6c.mjs.map +1 -0
  460. package/dist/useRubriquesFilterParam-DXYD4G0D.mjs.map +1 -0
  461. package/dist/useSharePlatforms-CrQ8r5vT.mjs.map +1 -0
  462. package/dist/useSharePlatforms-D124fJ_v.mjs.map +1 -0
  463. package/dist/{useSharePlatforms-ZWYDJZBy.mjs → useSharePlatforms-sXgVxsL5.mjs} +5 -5
  464. package/dist/{useSimplePageParam-DFKSEyiE.mjs → useSimplePageParam-BrtYXOUt.mjs} +1 -1
  465. package/dist/useSimplePageParam-CruL7rLG.mjs.map +1 -0
  466. package/dist/useSimplePageParam-SaBaPhb8.mjs.map +1 -0
  467. package/dist/{useTranslation-Dr7KU7Y4.mjs → useTranslation-BVQwv02Q.mjs} +9 -9
  468. package/dist/useTranslation-Bf2zP_6C.mjs.map +1 -0
  469. package/dist/useTranslation-BuhzZoI8.mjs.map +1 -0
  470. package/dist/useTranslation-OWqckMEl.mjs.map +1 -0
  471. package/dist/usefetchRadioData-D01ws733.mjs.map +1 -0
  472. package/dist/usefetchRadioData-DDRPoD4s.mjs.map +1 -0
  473. package/dist/{usefetchRadioData-SLWfXkYt.mjs → usefetchRadioData-zyQNqiV3.mjs} +1 -1
  474. package/package.json +1 -1
  475. package/src/components/composable/useTranslation.ts +2 -2
  476. package/src/components/display/sharing/QrCode.vue +63 -64
  477. package/src/components/form/ClassicDatePicker.vue +14 -7
  478. package/src/components/misc/player/video/PlayerVideoHls.vue +3 -1
  479. package/src/i18n.ts +38 -29
  480. package/dist/QrCode-DuScZ7PD.mjs +0 -105
@@ -0,0 +1 @@
1
+ {"version":3,"file":"CommentMoreActions-DPbJnEEV.mjs","names":["classicApi","_resolveComponent","_openBlock","_createElementBlock","_createBlock","_createCommentVNode","_createElementVNode","_createVNode","_withCtx","_Fragment","_renderList","_withKeys","_toDisplayString","_sfc_main"],"sources":["../src/components/display/comments/item/CommentMoreActions.vue","../src/components/display/comments/item/CommentMoreActions.vue"],"sourcesContent":["<template>\n <div v-if=\"isAtLeastOneMoreAction\">\n <ReportAbuseModal\n v-if=\"isReportAbuse\"\n v-model:comment=\"commentForVmodel\"\n @close=\"isReportAbuse = false\"\n />\n <EditCommentModal\n v-if=\"isEdit\"\n v-model:comment=\"commentForVmodel\"\n :edit-right=\"editRight\"\n @close=\"isEdit = false\"\n />\n <MessageModal\n v-if=\"confirmModal\"\n :validatetext=\"validateText\"\n :canceltext=\"canceltext\"\n :closable=\"false\"\n :title=\"modalTitle\"\n :message=\"modalMessage\"\n :focus=\"true\"\n @cancel=\"confirmModal = false\"\n @validate=\"actionComment\"\n @close=\"confirmModal = false\"\n />\n <button\n :id=\"'comment-dropdown' + comment.commentId\"\n class=\"btn share-btn\"\n :title=\"t('See more')\"\n :data-selenium=\"\n 'comment-dropdown-' + seleniumFormat(comment.poster.userName)\n \"\n >\n <DotsVerticalIcon />\n </button>\n <ClassicPopover\n :target=\"'comment-dropdown' + comment.commentId\"\n :only-click=\"true\"\n :left-pos=\"true\"\n >\n <template v-for=\"action in moreActions\" :key=\"action\">\n <button\n v-if=\"action.condition\"\n class=\"octopus-dropdown-item c-hand\"\n @mousedown=\"action.actionClick\"\n @keydown.enter=\"action.actionClick\"\n >\n {{ action.title }}\n </button>\n </template>\n </ClassicPopover>\n <!--\n CommentMoreActionsAdmin is not defined in the SDK: it is resolved at\n runtime from the consuming app's globally registered components\n (app.component()), and renders nothing if the app hasn't registered one\n under that name.\n -->\n <CommentMoreActionsAdmin\n v-if=\"editRight\"\n v-model:comment=\"commentForVmodel\"\n v-model:actions-admin=\"actionsAdmin\"\n />\n </div>\n</template>\n\n<script setup lang=\"ts\">\nimport DotsVerticalIcon from \"vue-material-design-icons/DotsVertical.vue\";\nimport {useSelenium} from \"../../../composable/useSelenium\";\nimport classicApi from \"../../../../api/classicApi\";\nimport { useAuthStore } from \"../../../../stores/AuthStore\";\nimport { CommentPodcast } from \"@/stores/class/general/comment\";\nimport { Podcast } from \"@/stores/class/general/podcast\";\nimport { useCommentStore } from \"../../../../stores/CommentStore\";\nimport { defineAsyncComponent, ref, Ref, computed } from \"vue\";\nimport { CommentsConfig } from \"@/stores/class/config/commentsConfig\";\nimport { useI18n } from \"vue-i18n\";\nconst ClassicPopover = defineAsyncComponent(\n () => import(\"../../../misc/ClassicPopover.vue\"),\n);\nconst ReportAbuseModal = defineAsyncComponent(\n () => import(\"../modal/ReportAbuseModal.vue\"),\n);\nconst EditCommentModal = defineAsyncComponent(\n () => import(\"../modal/EditCommentModal.vue\"),\n);\nconst MessageModal = defineAsyncComponent(\n () => import(\"../../../misc/modal/MessageModal.vue\"),\n);\n\n//Props \nconst props = defineProps({\n comment: { default: () => ({}), type: Object as () => CommentPodcast },\n podcast: { default: undefined, type: Object as () => Podcast },\n config: { default: undefined, type: Object as () => CommentsConfig },\n editRight: { default: false, type: Boolean },\n})\n\n//Emits\nconst emit = defineEmits([\"update:comment\", \"deleteComment\"]);\n\n//Data \nconst isEdit = ref(false);\nconst isReportAbuse = ref(false);\nconst actionName: Ref<string | undefined> = ref(undefined);\nconst actionsAdmin: Ref<string | undefined> = ref(undefined);\nconst confirmModal = ref(false);\nconst actionInProgress = ref(false);\nconst isError = ref(false);\n\n//Composables\nconst { t } = useI18n();\nconst { seleniumFormat } = useSelenium();\nconst authStore = useAuthStore();\nconst commentStore = useCommentStore();\n\n//Computed\nconst commentForVmodel = computed({\n get(): CommentPodcast {\n return props.comment;\n },\n set(value: CommentPodcast) {\n emit(\"update:comment\", value);\n },\n});\nconst isMyComment = computed(() => {\n const uuid = authStore.authProfile?.userId ?? commentStore.commentUser?.uuidHash;\n return uuid === props.comment?.poster.uuid;\n});\nconst isAtLeastOneMoreAction = computed(() => {\n return moreActions.value.some((el) => {\n return el.condition;\n });\n});\nconst moreActions = computed(() => {\n return [\n {\n title: t(\"Report abuse\"),\n actionClick: () => {\n isReportAbuse.value = true;\n },\n condition:\n commentStore.getCanReportAbuse(\n props.config,\n undefined !== authStore.authOrgaId,\n ) && !isMyComment.value,\n },\n {\n title: t(\"Managing reported abuses\"),\n actionClick: () => {\n actionsAdmin.value = \"abuse\";\n },\n condition: props.editRight && props.comment.abuse,\n },\n {\n title: t(\"Edit comment\"),\n actionClick: () => {\n isEdit.value = true;\n },\n condition: props.editRight || isMyComment.value,\n },\n {\n title: t(\"Comment information\"),\n actionClick: () => {\n actionsAdmin.value = \"info\";\n },\n condition: props.editRight && !props.podcast,\n },\n {\n title: t(\"Validate\"),\n actionClick: () => {\n actionName.value = \"validate\";\n isError.value = false;\n confirmModal.value = true;\n },\n condition:\n props.editRight &&\n (\"PENDING\" === props.comment.state ||\n \"NOT_VALID\" === props.comment.state),\n },\n {\n title: t(\"Invalidate\"),\n actionClick: () => {\n actionName.value = \"invalidate\";\n isError.value = false;\n confirmModal.value = true;\n },\n condition:\n props.editRight &&\n (\"PENDING\" === props.comment.state ||\n \"VALIDATED\" === props.comment.state),\n },\n {\n title: t(\"Delete comment\"),\n actionClick: () => {\n actionName.value = \"delete\";\n isError.value = false;\n confirmModal.value = true;\n },\n condition: props.editRight || isMyComment.value,\n },\n ];\n});\nconst validateText = computed(() => {\n if (isError.value) {\n return t(\"Close\");\n }\n return actionInProgress.value ? undefined : t(\"Yes\");\n});\nconst canceltext = computed(() => isError.value ? undefined : t(\"No\"));\nconst modalMessage = computed(() => {\n if (actionInProgress.value) {\n return t(\"Saving\");\n }\n if (isError.value) {\n return t(\"An error occurred\");\n }\n const name = { name: props.comment.poster.userName };\n switch (actionName.value) {\n case \"delete\":\n return t(\"Confirm comment deletion text\", name);\n case \"validate\":\n return t(\"Confirm comment valid text\", name);\n case \"invalidate\":\n return t(\"Confirm comment invalid text\", name);\n default:\n return \"\";\n }\n});\nconst modalTitle = computed(() => {\n if (\"delete\" === actionName.value) {\n return t(\"Delete comment\");\n }\n return t(\"Update comment\");\n}); \n \n\n//Methods\nasync function actionComment() {\n if (!props.comment) {\n return;\n }\n actionInProgress.value = true;\n isError.value = false;\n try {\n if (\"delete\" === actionName.value) {\n await classicApi.deleteData({\n api: 2,\n path: \"comment/\" + props.comment.commentId,\n parameters: props.editRight\n ? undefined\n : { uuid: commentStore.commentUser?.uuid },\n isNotAuth: !props.editRight,\n });\n emit(\"deleteComment\");\n } else {\n const commentUpdated = await classicApi.putData({\n api: 2,\n path: \"comment/\",\n dataToSend: {\n commentId: props.comment.commentId,\n content: props.comment.content,\n name: props.comment.poster.userName,\n state: \"validate\" === actionName.value ? \"VALIDATED\" : \"NOT_VALID\",\n },\n });\n emit(\"update:comment\", commentUpdated);\n }\n confirmModal.value = false;\n } catch {\n isError.value = true;\n }\n actionInProgress.value = false;\n}\n</script>\n","<template>\n <div v-if=\"isAtLeastOneMoreAction\">\n <ReportAbuseModal\n v-if=\"isReportAbuse\"\n v-model:comment=\"commentForVmodel\"\n @close=\"isReportAbuse = false\"\n />\n <EditCommentModal\n v-if=\"isEdit\"\n v-model:comment=\"commentForVmodel\"\n :edit-right=\"editRight\"\n @close=\"isEdit = false\"\n />\n <MessageModal\n v-if=\"confirmModal\"\n :validatetext=\"validateText\"\n :canceltext=\"canceltext\"\n :closable=\"false\"\n :title=\"modalTitle\"\n :message=\"modalMessage\"\n :focus=\"true\"\n @cancel=\"confirmModal = false\"\n @validate=\"actionComment\"\n @close=\"confirmModal = false\"\n />\n <button\n :id=\"'comment-dropdown' + comment.commentId\"\n class=\"btn share-btn\"\n :title=\"t('See more')\"\n :data-selenium=\"\n 'comment-dropdown-' + seleniumFormat(comment.poster.userName)\n \"\n >\n <DotsVerticalIcon />\n </button>\n <ClassicPopover\n :target=\"'comment-dropdown' + comment.commentId\"\n :only-click=\"true\"\n :left-pos=\"true\"\n >\n <template v-for=\"action in moreActions\" :key=\"action\">\n <button\n v-if=\"action.condition\"\n class=\"octopus-dropdown-item c-hand\"\n @mousedown=\"action.actionClick\"\n @keydown.enter=\"action.actionClick\"\n >\n {{ action.title }}\n </button>\n </template>\n </ClassicPopover>\n <!--\n CommentMoreActionsAdmin is not defined in the SDK: it is resolved at\n runtime from the consuming app's globally registered components\n (app.component()), and renders nothing if the app hasn't registered one\n under that name.\n -->\n <CommentMoreActionsAdmin\n v-if=\"editRight\"\n v-model:comment=\"commentForVmodel\"\n v-model:actions-admin=\"actionsAdmin\"\n />\n </div>\n</template>\n\n<script setup lang=\"ts\">\nimport DotsVerticalIcon from \"vue-material-design-icons/DotsVertical.vue\";\nimport {useSelenium} from \"../../../composable/useSelenium\";\nimport classicApi from \"../../../../api/classicApi\";\nimport { useAuthStore } from \"../../../../stores/AuthStore\";\nimport { CommentPodcast } from \"@/stores/class/general/comment\";\nimport { Podcast } from \"@/stores/class/general/podcast\";\nimport { useCommentStore } from \"../../../../stores/CommentStore\";\nimport { defineAsyncComponent, ref, Ref, computed } from \"vue\";\nimport { CommentsConfig } from \"@/stores/class/config/commentsConfig\";\nimport { useI18n } from \"vue-i18n\";\nconst ClassicPopover = defineAsyncComponent(\n () => import(\"../../../misc/ClassicPopover.vue\"),\n);\nconst ReportAbuseModal = defineAsyncComponent(\n () => import(\"../modal/ReportAbuseModal.vue\"),\n);\nconst EditCommentModal = defineAsyncComponent(\n () => import(\"../modal/EditCommentModal.vue\"),\n);\nconst MessageModal = defineAsyncComponent(\n () => import(\"../../../misc/modal/MessageModal.vue\"),\n);\n\n//Props \nconst props = defineProps({\n comment: { default: () => ({}), type: Object as () => CommentPodcast },\n podcast: { default: undefined, type: Object as () => Podcast },\n config: { default: undefined, type: Object as () => CommentsConfig },\n editRight: { default: false, type: Boolean },\n})\n\n//Emits\nconst emit = defineEmits([\"update:comment\", \"deleteComment\"]);\n\n//Data \nconst isEdit = ref(false);\nconst isReportAbuse = ref(false);\nconst actionName: Ref<string | undefined> = ref(undefined);\nconst actionsAdmin: Ref<string | undefined> = ref(undefined);\nconst confirmModal = ref(false);\nconst actionInProgress = ref(false);\nconst isError = ref(false);\n\n//Composables\nconst { t } = useI18n();\nconst { seleniumFormat } = useSelenium();\nconst authStore = useAuthStore();\nconst commentStore = useCommentStore();\n\n//Computed\nconst commentForVmodel = computed({\n get(): CommentPodcast {\n return props.comment;\n },\n set(value: CommentPodcast) {\n emit(\"update:comment\", value);\n },\n});\nconst isMyComment = computed(() => {\n const uuid = authStore.authProfile?.userId ?? commentStore.commentUser?.uuidHash;\n return uuid === props.comment?.poster.uuid;\n});\nconst isAtLeastOneMoreAction = computed(() => {\n return moreActions.value.some((el) => {\n return el.condition;\n });\n});\nconst moreActions = computed(() => {\n return [\n {\n title: t(\"Report abuse\"),\n actionClick: () => {\n isReportAbuse.value = true;\n },\n condition:\n commentStore.getCanReportAbuse(\n props.config,\n undefined !== authStore.authOrgaId,\n ) && !isMyComment.value,\n },\n {\n title: t(\"Managing reported abuses\"),\n actionClick: () => {\n actionsAdmin.value = \"abuse\";\n },\n condition: props.editRight && props.comment.abuse,\n },\n {\n title: t(\"Edit comment\"),\n actionClick: () => {\n isEdit.value = true;\n },\n condition: props.editRight || isMyComment.value,\n },\n {\n title: t(\"Comment information\"),\n actionClick: () => {\n actionsAdmin.value = \"info\";\n },\n condition: props.editRight && !props.podcast,\n },\n {\n title: t(\"Validate\"),\n actionClick: () => {\n actionName.value = \"validate\";\n isError.value = false;\n confirmModal.value = true;\n },\n condition:\n props.editRight &&\n (\"PENDING\" === props.comment.state ||\n \"NOT_VALID\" === props.comment.state),\n },\n {\n title: t(\"Invalidate\"),\n actionClick: () => {\n actionName.value = \"invalidate\";\n isError.value = false;\n confirmModal.value = true;\n },\n condition:\n props.editRight &&\n (\"PENDING\" === props.comment.state ||\n \"VALIDATED\" === props.comment.state),\n },\n {\n title: t(\"Delete comment\"),\n actionClick: () => {\n actionName.value = \"delete\";\n isError.value = false;\n confirmModal.value = true;\n },\n condition: props.editRight || isMyComment.value,\n },\n ];\n});\nconst validateText = computed(() => {\n if (isError.value) {\n return t(\"Close\");\n }\n return actionInProgress.value ? undefined : t(\"Yes\");\n});\nconst canceltext = computed(() => isError.value ? undefined : t(\"No\"));\nconst modalMessage = computed(() => {\n if (actionInProgress.value) {\n return t(\"Saving\");\n }\n if (isError.value) {\n return t(\"An error occurred\");\n }\n const name = { name: props.comment.poster.userName };\n switch (actionName.value) {\n case \"delete\":\n return t(\"Confirm comment deletion text\", name);\n case \"validate\":\n return t(\"Confirm comment valid text\", name);\n case \"invalidate\":\n return t(\"Confirm comment invalid text\", name);\n default:\n return \"\";\n }\n});\nconst modalTitle = computed(() => {\n if (\"delete\" === actionName.value) {\n return t(\"Delete comment\");\n }\n return t(\"Update comment\");\n}); \n \n\n//Methods\nasync function actionComment() {\n if (!props.comment) {\n return;\n }\n actionInProgress.value = true;\n isError.value = false;\n try {\n if (\"delete\" === actionName.value) {\n await classicApi.deleteData({\n api: 2,\n path: \"comment/\" + props.comment.commentId,\n parameters: props.editRight\n ? undefined\n : { uuid: commentStore.commentUser?.uuid },\n isNotAuth: !props.editRight,\n });\n emit(\"deleteComment\");\n } else {\n const commentUpdated = await classicApi.putData({\n api: 2,\n path: \"comment/\",\n dataToSend: {\n commentId: props.comment.commentId,\n content: props.comment.content,\n name: props.comment.poster.userName,\n state: \"validate\" === actionName.value ? \"VALIDATED\" : \"NOT_VALID\",\n },\n });\n emit(\"update:comment\", commentUpdated);\n }\n confirmModal.value = false;\n } catch {\n isError.value = true;\n }\n actionInProgress.value = false;\n}\n</script>\n"],"mappings":"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"}
@@ -1,5 +1,5 @@
1
- import { i as e } from "./classicApi-pmODlqv5.mjs";
2
- import { t } from "./CommentStore-hPTYaDGr.mjs";
1
+ import { i as e } from "./classicApi-CGipMqf7.mjs";
2
+ import { t } from "./CommentStore-CysGkBHp.mjs";
3
3
  import { t as n } from "./config-DMjLBcZ2.mjs";
4
4
  import { t as r } from "./ClassicInputText-DJ5kURGM.mjs";
5
5
  import { Fragment as i, computed as a, createBlock as o, createElementBlock as s, createElementVNode as c, createTextVNode as l, createVNode as u, defineComponent as d, normalizeClass as f, openBlock as p, ref as m, resolveDynamicComponent as h, toDisplayString as g, unref as _, withCtx as v } from "vue";
@@ -0,0 +1 @@
1
+ {"version":3,"file":"CommentName-D5HN8bGE.mjs","names":["Constants","_openBlock","_createElementBlock","_createBlock","_resolveDynamicComponent","_normalizeClass","_withCtx","_createTextVNode","_toDisplayString","_Fragment","_createVNode","_createElementVNode","_sfc_main"],"sources":["../src/components/display/comments/CommentName.vue","../src/components/display/comments/CommentName.vue"],"sourcesContent":["<template>\n <div \n class=\"d-flex align-items-center mb-2\">\n <component\n :is=\"canEditName ? 'button' : 'div'\"\n v-if=\"!isEditing\"\n class=\"h6 fw-bold\"\n :class=\"canEditName ? 'btn btn-transparent p-1' : ''\"\n @click=\"startEditingName\"\n >{{ commentStore.commentUser?.name }}</component\n >\n <template v-else>\n <ClassicInputText\n v-model:text-init=\"temporaryName\"\n v-model:error-variable=\"errorName\"\n input-id=\"comment-name-input\"\n focus\n :label=\"t('Your name')\"\n :max-length=\"Constants.MAX_COMMENT_NAME\"\n autocomplete-type=\"name\"\n class=\"me-3\"\n />\n <button class=\"btn m-1\" @click=\"isEditing = false\">\n {{ t(\"Cancel\") }}\n </button>\n <button\n class=\"btn btn-primary m-1\"\n :disabled=\"errorName\"\n @click=\"validEdit\"\n >\n {{ t(\"Yes\") }}\n </button>\n </template>\n </div>\n</template>\n\n<script setup lang=\"ts\">\nimport ClassicInputText from \"../../form/ClassicInputText.vue\";\nimport Constants from \"../../../../public/config\";\nimport { useAuthStore } from \"../../../stores/AuthStore\";\nimport { computed, ref } from \"vue\";\nimport { useCommentStore } from \"../../../stores/CommentStore\";\nimport { useI18n } from \"vue-i18n\";\n\n//Data \nconst isEditing = ref(false);\nconst temporaryName = ref(\"\");\nconst errorName = ref(true);\n\n//Composables\nconst { t } = useI18n();\nconst commentStore = useCommentStore();\nconst authStore = useAuthStore();\n\n\n//Computed\nconst canEditName = computed(() => undefined !== authStore.authProfile);\n\n//Methods\nfunction startEditingName(): void {\n if (!canEditName.value) {\n return;\n }\n temporaryName.value = commentStore.commentUser?.name ?? \"\";\n isEditing.value = true;\n}\nfunction validEdit(): void {\n commentStore.setCommentUser(temporaryName.value);\n isEditing.value = false;\n}\n</script>\n","<template>\n <div \n class=\"d-flex align-items-center mb-2\">\n <component\n :is=\"canEditName ? 'button' : 'div'\"\n v-if=\"!isEditing\"\n class=\"h6 fw-bold\"\n :class=\"canEditName ? 'btn btn-transparent p-1' : ''\"\n @click=\"startEditingName\"\n >{{ commentStore.commentUser?.name }}</component\n >\n <template v-else>\n <ClassicInputText\n v-model:text-init=\"temporaryName\"\n v-model:error-variable=\"errorName\"\n input-id=\"comment-name-input\"\n focus\n :label=\"t('Your name')\"\n :max-length=\"Constants.MAX_COMMENT_NAME\"\n autocomplete-type=\"name\"\n class=\"me-3\"\n />\n <button class=\"btn m-1\" @click=\"isEditing = false\">\n {{ t(\"Cancel\") }}\n </button>\n <button\n class=\"btn btn-primary m-1\"\n :disabled=\"errorName\"\n @click=\"validEdit\"\n >\n {{ t(\"Yes\") }}\n </button>\n </template>\n </div>\n</template>\n\n<script setup lang=\"ts\">\nimport ClassicInputText from \"../../form/ClassicInputText.vue\";\nimport Constants from \"../../../../public/config\";\nimport { useAuthStore } from \"../../../stores/AuthStore\";\nimport { computed, ref } from \"vue\";\nimport { useCommentStore } from \"../../../stores/CommentStore\";\nimport { useI18n } from \"vue-i18n\";\n\n//Data \nconst isEditing = ref(false);\nconst temporaryName = ref(\"\");\nconst errorName = ref(true);\n\n//Composables\nconst { t } = useI18n();\nconst commentStore = useCommentStore();\nconst authStore = useAuthStore();\n\n\n//Computed\nconst canEditName = computed(() => undefined !== authStore.authProfile);\n\n//Methods\nfunction startEditingName(): void {\n if (!canEditName.value) {\n return;\n }\n temporaryName.value = commentStore.commentUser?.name ?? \"\";\n isEditing.value = true;\n}\nfunction validEdit(): void {\n commentStore.setCommentUser(temporaryName.value);\n isEditing.value = false;\n}\n</script>\n"],"mappings":";;;;;;;;;;;;EA6CA,MAAM,YAAY,IAAI,KAAK;EAC3B,MAAM,gBAAgB,IAAI,EAAE;EAC5B,MAAM,YAAY,IAAI,IAAI;EAG1B,MAAM,EAAE,MAAM,QAAQ;EACtB,MAAM,eAAe,gBAAgB;EACrC,MAAM,YAAY,aAAa;EAI/B,MAAM,cAAc,eAAe,KAAA,MAAc,UAAU,WAAW;EAGtE,SAAS,mBAAyB;GAChC,IAAI,CAAC,YAAY,OACf;GAEF,cAAc,QAAQ,aAAa,aAAa,QAAQ;GACxD,UAAU,QAAQ;EACpB;EACA,SAAS,YAAkB;GACzB,aAAa,eAAe,cAAc,KAAK;GAC/C,UAAU,QAAQ;EACpB;;;;;;;;;;;;;;;;;;;;;;;;;ACnEI,IAAA,aAAA,EAAA,OAAM,iCAAgC;;;CADxC,OAAAC,UAAA,GAAAC,mBAgCM,OAhCN,YAgCM,CA5BK,CAAA,OAAA,aAFTD,UAAA,GAAAE,YAOCC,wBANM,OAAA,cAAW,WAAA,KAAA,GAAA;;EAEhB,OAAKC,eAAA,CAAC,cACE,OAAA,cAAW,4BAAA,EAAA,CAAA;EAClB,SAAO,OAAA;;EACP,SAAAC,cAAoC,CAAjCC,gBAAAC,gBAAA,OAAA,aAAa,aAAa,IAAI,GAAA,CAAA,CAAA,CAAA;;CAEpC,GAAA,GAAA,CAAA,OAAA,CAAA,MAAAP,UAAA,GAAAC,mBAqBWO,UAAA,EAAA,KAAA,EAAA,GAAA;EApBTC,YASE,OAAA,qBAAA;GARQ,aAAW,OAAA;GAAA,qBAAA,OAAA,OAAA,OAAA,MAAA,WAAA,OAAA,gBAAa;GACxB,kBAAgB,OAAA;GAAA,0BAAA,OAAA,OAAA,OAAA,MAAA,WAAA,OAAA,YAAS;GACjC,YAAS;GACT,OAAA;GACC,OAAO,OAAA,EAAC,WAAA;GACR,cAAY,OAAA,UAAU;GACvB,qBAAkB;GAClB,OAAM;;;;;;;EAERC,mBAES,UAAA;GAFD,OAAM;GAAW,SAAK,OAAA,OAAA,OAAA,MAAA,WAAE,OAAA,YAAS;EACpC,GAAAH,gBAAA,OAAA,EAAC,QAAA,CAAA,GAAA,CAAA;EAENG,mBAMS,UAAA;GALP,OAAM;GACL,UAAU,OAAA;GACV,SAAO,OAAA;EAEL,GAAAH,gBAAA,OAAA,EAAC,KAAA,CAAA,GAAA,GAAA,UAAA"}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"CommentName-DMom_kwo.mjs","names":["Constants","_openBlock","_createElementBlock","_createBlock","_resolveDynamicComponent","_normalizeClass","_withCtx","_createTextVNode","_toDisplayString","_Fragment","_createVNode","_createElementVNode","_sfc_main"],"sources":["../src/components/display/comments/CommentName.vue","../src/components/display/comments/CommentName.vue"],"sourcesContent":["<template>\n <div \n class=\"d-flex align-items-center mb-2\">\n <component\n :is=\"canEditName ? 'button' : 'div'\"\n v-if=\"!isEditing\"\n class=\"h6 fw-bold\"\n :class=\"canEditName ? 'btn btn-transparent p-1' : ''\"\n @click=\"startEditingName\"\n >{{ commentStore.commentUser?.name }}</component\n >\n <template v-else>\n <ClassicInputText\n v-model:text-init=\"temporaryName\"\n v-model:error-variable=\"errorName\"\n input-id=\"comment-name-input\"\n focus\n :label=\"t('Your name')\"\n :max-length=\"Constants.MAX_COMMENT_NAME\"\n autocomplete-type=\"name\"\n class=\"me-3\"\n />\n <button class=\"btn m-1\" @click=\"isEditing = false\">\n {{ t(\"Cancel\") }}\n </button>\n <button\n class=\"btn btn-primary m-1\"\n :disabled=\"errorName\"\n @click=\"validEdit\"\n >\n {{ t(\"Yes\") }}\n </button>\n </template>\n </div>\n</template>\n\n<script setup lang=\"ts\">\nimport ClassicInputText from \"../../form/ClassicInputText.vue\";\nimport Constants from \"../../../../public/config\";\nimport { useAuthStore } from \"../../../stores/AuthStore\";\nimport { computed, ref } from \"vue\";\nimport { useCommentStore } from \"../../../stores/CommentStore\";\nimport { useI18n } from \"vue-i18n\";\n\n//Data \nconst isEditing = ref(false);\nconst temporaryName = ref(\"\");\nconst errorName = ref(true);\n\n//Composables\nconst { t } = useI18n();\nconst commentStore = useCommentStore();\nconst authStore = useAuthStore();\n\n\n//Computed\nconst canEditName = computed(() => undefined !== authStore.authProfile);\n\n//Methods\nfunction startEditingName(): void {\n if (!canEditName.value) {\n return;\n }\n temporaryName.value = commentStore.commentUser?.name ?? \"\";\n isEditing.value = true;\n}\nfunction validEdit(): void {\n commentStore.setCommentUser(temporaryName.value);\n isEditing.value = false;\n}\n</script>\n","<template>\n <div \n class=\"d-flex align-items-center mb-2\">\n <component\n :is=\"canEditName ? 'button' : 'div'\"\n v-if=\"!isEditing\"\n class=\"h6 fw-bold\"\n :class=\"canEditName ? 'btn btn-transparent p-1' : ''\"\n @click=\"startEditingName\"\n >{{ commentStore.commentUser?.name }}</component\n >\n <template v-else>\n <ClassicInputText\n v-model:text-init=\"temporaryName\"\n v-model:error-variable=\"errorName\"\n input-id=\"comment-name-input\"\n focus\n :label=\"t('Your name')\"\n :max-length=\"Constants.MAX_COMMENT_NAME\"\n autocomplete-type=\"name\"\n class=\"me-3\"\n />\n <button class=\"btn m-1\" @click=\"isEditing = false\">\n {{ t(\"Cancel\") }}\n </button>\n <button\n class=\"btn btn-primary m-1\"\n :disabled=\"errorName\"\n @click=\"validEdit\"\n >\n {{ t(\"Yes\") }}\n </button>\n </template>\n </div>\n</template>\n\n<script setup lang=\"ts\">\nimport ClassicInputText from \"../../form/ClassicInputText.vue\";\nimport Constants from \"../../../../public/config\";\nimport { useAuthStore } from \"../../../stores/AuthStore\";\nimport { computed, ref } from \"vue\";\nimport { useCommentStore } from \"../../../stores/CommentStore\";\nimport { useI18n } from \"vue-i18n\";\n\n//Data \nconst isEditing = ref(false);\nconst temporaryName = ref(\"\");\nconst errorName = ref(true);\n\n//Composables\nconst { t } = useI18n();\nconst commentStore = useCommentStore();\nconst authStore = useAuthStore();\n\n\n//Computed\nconst canEditName = computed(() => undefined !== authStore.authProfile);\n\n//Methods\nfunction startEditingName(): void {\n if (!canEditName.value) {\n return;\n }\n temporaryName.value = commentStore.commentUser?.name ?? \"\";\n isEditing.value = true;\n}\nfunction validEdit(): void {\n commentStore.setCommentUser(temporaryName.value);\n isEditing.value = false;\n}\n</script>\n"],"mappings":";;;;;;;;;;;;EA6CA,MAAM,YAAY,IAAI,KAAK;EAC3B,MAAM,gBAAgB,IAAI,EAAE;EAC5B,MAAM,YAAY,IAAI,IAAI;EAG1B,MAAM,EAAE,MAAM,QAAQ;EACtB,MAAM,eAAe,gBAAgB;EACrC,MAAM,YAAY,aAAa;EAI/B,MAAM,cAAc,eAAe,KAAA,MAAc,UAAU,WAAW;EAGtE,SAAS,mBAAyB;GAChC,IAAI,CAAC,YAAY,OACf;GAEF,cAAc,QAAQ,aAAa,aAAa,QAAQ;GACxD,UAAU,QAAQ;EACpB;EACA,SAAS,YAAkB;GACzB,aAAa,eAAe,cAAc,KAAK;GAC/C,UAAU,QAAQ;EACpB;;;;;;;;;;;;;;;;;;;;;;;;;ACnEI,IAAA,aAAA,EAAA,OAAM,iCAAgC;;;CADxC,OAAAC,UAAA,GAAAC,mBAgCM,OAhCN,YAgCM,CA5BK,CAAA,OAAA,aAFTD,UAAA,GAAAE,YAOCC,wBANM,OAAA,cAAW,WAAA,KAAA,GAAA;;EAEhB,OAAKC,eAAA,CAAC,cACE,OAAA,cAAW,4BAAA,EAAA,CAAA;EAClB,SAAO,OAAA;;EACP,SAAAC,cAAoC,CAAjCC,gBAAAC,gBAAA,OAAA,aAAa,aAAa,IAAI,GAAA,CAAA,CAAA,CAAA;;CAEpC,GAAA,GAAA,CAAA,OAAA,CAAA,MAAAP,UAAA,GAAAC,mBAqBWO,UAAA,EAAA,KAAA,EAAA,GAAA;EApBTC,YASE,OAAA,qBAAA;GARQ,aAAW,OAAA;GAAA,qBAAA,OAAA,OAAA,OAAA,MAAA,WAAA,OAAA,gBAAa;GACxB,kBAAgB,OAAA;GAAA,0BAAA,OAAA,OAAA,OAAA,MAAA,WAAA,OAAA,YAAS;GACjC,YAAS;GACT,OAAA;GACC,OAAO,OAAA,EAAC,WAAA;GACR,cAAY,OAAA,UAAU;GACvB,qBAAkB;GAClB,OAAM;;;;;;;EAERC,mBAES,UAAA;GAFD,OAAM;GAAW,SAAK,OAAA,OAAA,OAAA,MAAA,WAAE,OAAA,YAAS;EACpC,GAAAH,gBAAA,OAAA,EAAC,QAAA,CAAA,GAAA,CAAA;EAENG,mBAMS,UAAA;GALP,OAAM;GACL,UAAU,OAAA;GACV,SAAO,OAAA;EAEL,GAAAH,gBAAA,OAAA,EAAC,KAAA,CAAA,GAAA,GAAA,UAAA"}
@@ -1,6 +1,6 @@
1
1
  import { t as e } from "./ClassicLoading-CXfMjpyl.mjs";
2
- import { t } from "./classicApi-pmODlqv5.mjs";
3
- import { n } from "./CommentItem-CqWZPmbj.mjs";
2
+ import { t } from "./classicApi-CGipMqf7.mjs";
3
+ import { n } from "./CommentItem-BbUPCvEC.mjs";
4
4
  import { createBlock as r, createCommentVNode as i, createElementBlock as a, createVNode as o, defineComponent as s, onBeforeMount as c, openBlock as l, ref as u, unref as d } from "vue";
5
5
  import { useI18n as f } from "vue-i18n";
6
6
  //#region src/components/display/comments/CommentParentInfo.vue?vue&type=script&setup=true&lang.ts
@@ -0,0 +1 @@
1
+ {"version":3,"file":"CommentParentInfo-DWVF5Ewh.mjs","names":["classicApi","_openBlock","_createElementBlock","_createVNode","_createBlock","_createCommentVNode","_sfc_main"],"sources":["../src/components/display/comments/CommentParentInfo.vue","../src/components/display/comments/CommentParentInfo.vue"],"sourcesContent":["<template>\n <div class=\"mt-2\">\n <ClassicLoading\n :loading-text=\"loading ? t('Loading content ...') : undefined\"\n />\n <CommentBasicView\n v-if=\"!loading && comment\"\n :comment=\"comment\"\n :edit-right=\"editRight\"\n />\n </div>\n</template>\n\n<script setup lang=\"ts\">\nimport classicApi from \"../../../api/classicApi\";\nimport CommentBasicView from \"./item/CommentBasicView.vue\";\nimport ClassicLoading from \"../../form/ClassicLoading.vue\";\nimport { CommentPodcast } from \"@/stores/class/general/comment\";\nimport { onBeforeMount, Ref, ref } from \"vue\";\nimport { useI18n } from \"vue-i18n\";\n\n//Props \nconst props = defineProps({\n commentId: { default: undefined, type: Number },\n editRight: { default: false, type: Boolean },\n})\n\n//Data \nconst loading = ref(true);\nconst comment: Ref<CommentPodcast | undefined> = ref(undefined);\n\n//Composables\nconst { t } = useI18n();\n \n\nonBeforeMount(()=>fetchComment())\n\n//Methods\nasync function fetchComment(): Promise<void> {\n if (props.commentId) {\n comment.value = await classicApi.fetchData<CommentPodcast>({\n api: 2,\n path: `comment/${props.commentId}`,\n });\n }\n loading.value = false;\n}\n</script>\n","<template>\n <div class=\"mt-2\">\n <ClassicLoading\n :loading-text=\"loading ? t('Loading content ...') : undefined\"\n />\n <CommentBasicView\n v-if=\"!loading && comment\"\n :comment=\"comment\"\n :edit-right=\"editRight\"\n />\n </div>\n</template>\n\n<script setup lang=\"ts\">\nimport classicApi from \"../../../api/classicApi\";\nimport CommentBasicView from \"./item/CommentBasicView.vue\";\nimport ClassicLoading from \"../../form/ClassicLoading.vue\";\nimport { CommentPodcast } from \"@/stores/class/general/comment\";\nimport { onBeforeMount, Ref, ref } from \"vue\";\nimport { useI18n } from \"vue-i18n\";\n\n//Props \nconst props = defineProps({\n commentId: { default: undefined, type: Number },\n editRight: { default: false, type: Boolean },\n})\n\n//Data \nconst loading = ref(true);\nconst comment: Ref<CommentPodcast | undefined> = ref(undefined);\n\n//Composables\nconst { t } = useI18n();\n \n\nonBeforeMount(()=>fetchComment())\n\n//Methods\nasync function fetchComment(): Promise<void> {\n if (props.commentId) {\n comment.value = await classicApi.fetchData<CommentPodcast>({\n api: 2,\n path: `comment/${props.commentId}`,\n });\n }\n loading.value = false;\n}\n</script>\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;EAsBA,MAAM,QAAQ;EAMd,MAAM,UAAU,IAAI,IAAI;EACxB,MAAM,UAA2C,IAAI,KAAA,CAAS;EAG9D,MAAM,EAAE,MAAM,QAAQ;EAGtB,oBAAkB,aAAa,CAAC;EAGhC,eAAe,eAA8B;GAC3C,IAAI,MAAM,WACR,QAAQ,QAAQ,MAAMA,mBAAW,UAA0B;IACzD,KAAK;IACL,MAAM,WAAW,MAAM;GACzB,CAAC;GAEH,QAAQ,QAAQ;EAClB;;;;;;;;;;;;;;;;;;;AC7CO,IAAA,aAAA,EAAA,OAAM,OAAM;;CAAjB,OAAAC,UAAA,GAAAC,mBASM,OATN,YASM,CARJC,YAEE,OAAA,mBAAA,EADC,gBAAc,OAAA,UAAU,OAAA,EAAC,qBAAA,IAA0B,KAAA,EAAA,GAAA,MAAA,GAAA,CAAA,cAAA,CAAA,GAG7C,CAAA,OAAA,WAAW,OAAA,WADpBF,UAAA,GAAAG,YAIE,OAAA,qBAAA;;EAFC,SAAS,OAAA;EACT,cAAY,OAAA"}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"CommentParentInfo-DqHfDpKs.mjs","names":["classicApi","_openBlock","_createElementBlock","_createVNode","_createBlock","_createCommentVNode","_sfc_main"],"sources":["../src/components/display/comments/CommentParentInfo.vue","../src/components/display/comments/CommentParentInfo.vue"],"sourcesContent":["<template>\n <div class=\"mt-2\">\n <ClassicLoading\n :loading-text=\"loading ? t('Loading content ...') : undefined\"\n />\n <CommentBasicView\n v-if=\"!loading && comment\"\n :comment=\"comment\"\n :edit-right=\"editRight\"\n />\n </div>\n</template>\n\n<script setup lang=\"ts\">\nimport classicApi from \"../../../api/classicApi\";\nimport CommentBasicView from \"./item/CommentBasicView.vue\";\nimport ClassicLoading from \"../../form/ClassicLoading.vue\";\nimport { CommentPodcast } from \"@/stores/class/general/comment\";\nimport { onBeforeMount, Ref, ref } from \"vue\";\nimport { useI18n } from \"vue-i18n\";\n\n//Props \nconst props = defineProps({\n commentId: { default: undefined, type: Number },\n editRight: { default: false, type: Boolean },\n})\n\n//Data \nconst loading = ref(true);\nconst comment: Ref<CommentPodcast | undefined> = ref(undefined);\n\n//Composables\nconst { t } = useI18n();\n \n\nonBeforeMount(()=>fetchComment())\n\n//Methods\nasync function fetchComment(): Promise<void> {\n if (props.commentId) {\n comment.value = await classicApi.fetchData<CommentPodcast>({\n api: 2,\n path: `comment/${props.commentId}`,\n });\n }\n loading.value = false;\n}\n</script>\n","<template>\n <div class=\"mt-2\">\n <ClassicLoading\n :loading-text=\"loading ? t('Loading content ...') : undefined\"\n />\n <CommentBasicView\n v-if=\"!loading && comment\"\n :comment=\"comment\"\n :edit-right=\"editRight\"\n />\n </div>\n</template>\n\n<script setup lang=\"ts\">\nimport classicApi from \"../../../api/classicApi\";\nimport CommentBasicView from \"./item/CommentBasicView.vue\";\nimport ClassicLoading from \"../../form/ClassicLoading.vue\";\nimport { CommentPodcast } from \"@/stores/class/general/comment\";\nimport { onBeforeMount, Ref, ref } from \"vue\";\nimport { useI18n } from \"vue-i18n\";\n\n//Props \nconst props = defineProps({\n commentId: { default: undefined, type: Number },\n editRight: { default: false, type: Boolean },\n})\n\n//Data \nconst loading = ref(true);\nconst comment: Ref<CommentPodcast | undefined> = ref(undefined);\n\n//Composables\nconst { t } = useI18n();\n \n\nonBeforeMount(()=>fetchComment())\n\n//Methods\nasync function fetchComment(): Promise<void> {\n if (props.commentId) {\n comment.value = await classicApi.fetchData<CommentPodcast>({\n api: 2,\n path: `comment/${props.commentId}`,\n });\n }\n loading.value = false;\n}\n</script>\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;EAsBA,MAAM,QAAQ;EAMd,MAAM,UAAU,IAAI,IAAI;EACxB,MAAM,UAA2C,IAAI,KAAA,CAAS;EAG9D,MAAM,EAAE,MAAM,QAAQ;EAGtB,oBAAkB,aAAa,CAAC;EAGhC,eAAe,eAA8B;GAC3C,IAAI,MAAM,WACR,QAAQ,QAAQ,MAAMA,mBAAW,UAA0B;IACzD,KAAK;IACL,MAAM,WAAW,MAAM;GACzB,CAAC;GAEH,QAAQ,QAAQ;EAClB;;;;;;;;;;;;;;;;;;;AC7CO,IAAA,aAAA,EAAA,OAAM,OAAM;;CAAjB,OAAAC,UAAA,GAAAC,mBASM,OATN,YASM,CARJC,YAEE,OAAA,mBAAA,EADC,gBAAc,OAAA,UAAU,OAAA,EAAC,qBAAA,IAA0B,KAAA,EAAA,GAAA,MAAA,GAAA,CAAA,cAAA,CAAA,GAG7C,CAAA,OAAA,WAAW,OAAA,WADpBF,UAAA,GAAAG,YAIE,OAAA,qBAAA;;EAFC,SAAS,OAAA;EACT,cAAY,OAAA"}
@@ -1,6 +1,6 @@
1
- import { n as e } from "./PlayerStore-CKprkxa0.mjs";
1
+ import { n as e } from "./PlayerStore-DggKki80.mjs";
2
2
  import { t } from "./useSelenium-DAM6EF3J.mjs";
3
- import { t as n } from "./CommentStore-hPTYaDGr.mjs";
3
+ import { t as n } from "./CommentStore-CysGkBHp.mjs";
4
4
  import { Fragment as r, computed as i, createCommentVNode as a, createElementBlock as o, createElementVNode as s, defineComponent as c, normalizeStyle as l, openBlock as u, ref as d, renderList as f, toDisplayString as p, unref as m, watch as h } from "vue";
5
5
  //#region src/components/display/comments/CommentPlayer.vue?vue&type=script&setup=true&lang.ts
6
6
  var g = {
@@ -0,0 +1 @@
1
+ {"version":3,"file":"CommentPlayer-B67saxPf.mjs","names":["_openBlock","_createElementBlock","_Fragment","_renderList","_createElementVNode","_normalizeStyle","_toDisplayString","_createCommentVNode","_sfc_main"],"sources":["../src/components/display/comments/CommentPlayer.vue","../src/components/display/comments/CommentPlayer.vue"],"sourcesContent":["<template>\n <div v-if=\"commentsToDisplay.length\" class=\"comment-player-container\">\n <div\n v-for=\"c in commentsToDisplay\"\n :key=\"c.commentId\"\n class=\"c-hand\"\n @mouseenter=\"displayContent = c\"\n @mouseleave=\"displayContent = undefined\"\n @click=\"displayContent = c\"\n >\n <div\n :style=\"'margin-left: ' + percentPosition(c.timeline ?? 0) + '%'\"\n class=\"comment-border\"\n />\n <div\n :style=\"\n 'margin-left: calc(' + percentPosition(c.timeline ?? 0) + '% - 7px)'\n \"\n class=\"status-comment\"\n :data-selenium=\"'comment-' + seleniumFormat(c.poster.userName)\"\n />\n </div>\n <div v-if=\"displayContent\" class=\"d-flex align-itemx-center mt-4\">\n <div class=\"text-primary flex-shrink-0\">\n {{ displayContent.poster.userName }}\n </div>\n <div class=\"ms-1 me-1\">-</div>\n <div class=\"text-truncate\">\n {{ displayContent.content }}\n </div>\n </div>\n </div>\n</template>\n\n<script setup lang=\"ts\">\nimport { CommentPodcast } from \"@/stores/class/general/comment\";\nimport {useSelenium} from \"../../composable/useSelenium\";\nimport { usePlayerStore } from \"../../../stores/PlayerStore\";\nimport { computed, Ref, ref, watch } from \"vue\";\nimport { useCommentStore } from \"../../../stores/CommentStore\";\n\n//Data \nconst displayContent: Ref<CommentPodcast | undefined> = ref(undefined);\nconst commentsToDisplay: Ref<Array<CommentPodcast>> = ref([]);\n\n//Composables\nconst { seleniumFormat } = useSelenium();\nconst playerStore = usePlayerStore();\nconst commentStore = useCommentStore();\n\n//Computed\nconst podcastId = computed(() => playerStore.playerPodcast?.podcastId);\n\n\n//Watch\nwatch(podcastId, () => {initComments()}, {immediate: true});\n\n\n//Methods\nasync function initComments() {\n if (playerStore.playerPodcast?.podcastId) {\n commentsToDisplay.value = await commentStore.fetchCommentsForPlayer(\n playerStore.playerPodcast.podcastId,\n );\n }\n}\nfunction percentPosition(time: number): number {\n let realDuration = playerStore.playerTotal;\n if (playerStore.playerPodcast?.duration) {\n realDuration = Math.round(playerStore.playerPodcast.duration / 1000);\n }\n if (realDuration < playerStore.playerTotal) {\n time = time + (playerStore.playerTotal - realDuration);\n }\n return Math.round((time * 100) / playerStore.playerTotal);\n}\n</script>\n\n<style lang=\"scss\">\n@use \"../../../style/comments\";\n\n.octopus-app {\n .comment-player-container {\n position: relative;\n width: 100%;\n height: 60px;\n display: flex;\n\n @media (width <= 960px) {\n display: none;\n }\n \n .comment-border {\n width: auto;\n position: absolute;\n border-left: solid 1px white;\n height: 10px;\n }\n\n .status-comment {\n margin-top: 10px;\n position: absolute;\n background: white;\n }\n }\n}\n</style>\n","<template>\n <div v-if=\"commentsToDisplay.length\" class=\"comment-player-container\">\n <div\n v-for=\"c in commentsToDisplay\"\n :key=\"c.commentId\"\n class=\"c-hand\"\n @mouseenter=\"displayContent = c\"\n @mouseleave=\"displayContent = undefined\"\n @click=\"displayContent = c\"\n >\n <div\n :style=\"'margin-left: ' + percentPosition(c.timeline ?? 0) + '%'\"\n class=\"comment-border\"\n />\n <div\n :style=\"\n 'margin-left: calc(' + percentPosition(c.timeline ?? 0) + '% - 7px)'\n \"\n class=\"status-comment\"\n :data-selenium=\"'comment-' + seleniumFormat(c.poster.userName)\"\n />\n </div>\n <div v-if=\"displayContent\" class=\"d-flex align-itemx-center mt-4\">\n <div class=\"text-primary flex-shrink-0\">\n {{ displayContent.poster.userName }}\n </div>\n <div class=\"ms-1 me-1\">-</div>\n <div class=\"text-truncate\">\n {{ displayContent.content }}\n </div>\n </div>\n </div>\n</template>\n\n<script setup lang=\"ts\">\nimport { CommentPodcast } from \"@/stores/class/general/comment\";\nimport {useSelenium} from \"../../composable/useSelenium\";\nimport { usePlayerStore } from \"../../../stores/PlayerStore\";\nimport { computed, Ref, ref, watch } from \"vue\";\nimport { useCommentStore } from \"../../../stores/CommentStore\";\n\n//Data \nconst displayContent: Ref<CommentPodcast | undefined> = ref(undefined);\nconst commentsToDisplay: Ref<Array<CommentPodcast>> = ref([]);\n\n//Composables\nconst { seleniumFormat } = useSelenium();\nconst playerStore = usePlayerStore();\nconst commentStore = useCommentStore();\n\n//Computed\nconst podcastId = computed(() => playerStore.playerPodcast?.podcastId);\n\n\n//Watch\nwatch(podcastId, () => {initComments()}, {immediate: true});\n\n\n//Methods\nasync function initComments() {\n if (playerStore.playerPodcast?.podcastId) {\n commentsToDisplay.value = await commentStore.fetchCommentsForPlayer(\n playerStore.playerPodcast.podcastId,\n );\n }\n}\nfunction percentPosition(time: number): number {\n let realDuration = playerStore.playerTotal;\n if (playerStore.playerPodcast?.duration) {\n realDuration = Math.round(playerStore.playerPodcast.duration / 1000);\n }\n if (realDuration < playerStore.playerTotal) {\n time = time + (playerStore.playerTotal - realDuration);\n }\n return Math.round((time * 100) / playerStore.playerTotal);\n}\n</script>\n\n<style lang=\"scss\">\n@use \"../../../style/comments\";\n\n.octopus-app {\n .comment-player-container {\n position: relative;\n width: 100%;\n height: 60px;\n display: flex;\n\n @media (width <= 960px) {\n display: none;\n }\n \n .comment-border {\n width: auto;\n position: absolute;\n border-left: solid 1px white;\n height: 10px;\n }\n\n .status-comment {\n margin-top: 10px;\n position: absolute;\n background: white;\n }\n }\n}\n</style>\n"],"mappings":";;;;;;;;;;EA0CA,MAAM,iBAAkD,IAAI,KAAA,CAAS;EACrE,MAAM,oBAAgD,IAAI,CAAC,CAAC;EAG5D,MAAM,EAAE,mBAAmB,YAAY;EACvC,MAAM,cAAc,eAAe;EACnC,MAAM,eAAe,gBAAgB;EAGrC,MAAM,YAAY,eAAe,YAAY,eAAe,SAAS;EAIrE,MAAM,iBAAiB;GAAC,aAAa;EAAC,GAAG,EAAC,WAAW,KAAI,CAAC;EAI1D,eAAe,eAAe;GAC5B,IAAI,YAAY,eAAe,WAC7B,kBAAkB,QAAQ,MAAM,aAAa,uBAC3C,YAAY,cAAc,SAC5B;EAEJ;EACA,SAAS,gBAAgB,MAAsB;GAC7C,IAAI,eAAe,YAAY;GAC/B,IAAI,YAAY,eAAe,UAC7B,eAAe,KAAK,MAAM,YAAY,cAAc,WAAW,GAAI;GAErE,IAAI,eAAe,YAAY,aAC7B,OAAO,QAAQ,YAAY,cAAc;GAE3C,OAAO,KAAK,MAAO,OAAO,MAAO,YAAY,WAAW;EAC1D;;;;;;;;;;;;;;;;;;;;;;CC1EuC,OAAM;;;;;;CAqBd,OAAM;;AAC1B,IAAA,aAAA,EAAA,OAAM,6BAA4B;AAIlC,IAAA,aAAA,EAAA,OAAM,gBAAe;;CA1BnB,OAAA,OAAA,kBAAkB,UAA7BA,UAAA,GAAAC,mBA8BM,OA9BN,YA8BM,EA7BJD,UAAA,IAAA,GAAAC,mBAmBMC,UAAA,MAAAC,WAlBQ,OAAA,oBAAL,MAAC;EADV,OAAAH,UAAA,GAAAC,mBAmBM,OAAA;GAjBH,KAAK,EAAE;GACR,OAAM;GACL,eAAU,WAAE,OAAA,iBAAiB;GAC7B,cAAU,OAAA,OAAA,OAAA,MAAA,WAAE,OAAA,iBAAiB,KAAA;GAC7B,UAAK,WAAE,OAAA,iBAAiB;EAEzB,GAAA,CAAAG,mBAGE,OAAA;GAFC,OAAKC,eAAA,kBAAoB,OAAA,gBAAgB,EAAE,YAAQ,CAAA,IAAA,GAAA;GACpD,OAAM;EAER,GAAA,MAAA,CAAA,GAAAD,mBAME,OAAA;GALC,OAAKC,eAAoC,uBAAA,OAAA,gBAAgB,EAAE,YAAQ,CAAA,IAAA,UAAA;GAGpE,OAAM;GACL,iBAAa,aAAe,OAAA,eAAe,EAAE,OAAO,QAAQ;;CAGtD,CAAA,GAAA,GAAA,IAAA,OAAA,kBAAXL,UAAA,GAAAC,mBAQM,OARN,YAQM;EAPJG,mBAEM,OAFN,YAEME,gBADD,OAAA,eAAe,OAAO,QAAQ,GAAA,CAAA;EAEnC,OAAA,OAAA,OAAA,KAAAF,mBAA8B,OAAA,EAAzB,OAAM,YAAW,GAAC,KAAC,EAAA;EACxBA,mBAEM,OAFN,YAEME,gBADD,OAAA,eAAe,OAAO,GAAA,CAAA"}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"CommentPlayer-BUtEvkoV.mjs","names":["_openBlock","_createElementBlock","_Fragment","_renderList","_createElementVNode","_normalizeStyle","_toDisplayString","_createCommentVNode","_sfc_main"],"sources":["../src/components/display/comments/CommentPlayer.vue","../src/components/display/comments/CommentPlayer.vue"],"sourcesContent":["<template>\n <div v-if=\"commentsToDisplay.length\" class=\"comment-player-container\">\n <div\n v-for=\"c in commentsToDisplay\"\n :key=\"c.commentId\"\n class=\"c-hand\"\n @mouseenter=\"displayContent = c\"\n @mouseleave=\"displayContent = undefined\"\n @click=\"displayContent = c\"\n >\n <div\n :style=\"'margin-left: ' + percentPosition(c.timeline ?? 0) + '%'\"\n class=\"comment-border\"\n />\n <div\n :style=\"\n 'margin-left: calc(' + percentPosition(c.timeline ?? 0) + '% - 7px)'\n \"\n class=\"status-comment\"\n :data-selenium=\"'comment-' + seleniumFormat(c.poster.userName)\"\n />\n </div>\n <div v-if=\"displayContent\" class=\"d-flex align-itemx-center mt-4\">\n <div class=\"text-primary flex-shrink-0\">\n {{ displayContent.poster.userName }}\n </div>\n <div class=\"ms-1 me-1\">-</div>\n <div class=\"text-truncate\">\n {{ displayContent.content }}\n </div>\n </div>\n </div>\n</template>\n\n<script setup lang=\"ts\">\nimport { CommentPodcast } from \"@/stores/class/general/comment\";\nimport {useSelenium} from \"../../composable/useSelenium\";\nimport { usePlayerStore } from \"../../../stores/PlayerStore\";\nimport { computed, Ref, ref, watch } from \"vue\";\nimport { useCommentStore } from \"../../../stores/CommentStore\";\n\n//Data \nconst displayContent: Ref<CommentPodcast | undefined> = ref(undefined);\nconst commentsToDisplay: Ref<Array<CommentPodcast>> = ref([]);\n\n//Composables\nconst { seleniumFormat } = useSelenium();\nconst playerStore = usePlayerStore();\nconst commentStore = useCommentStore();\n\n//Computed\nconst podcastId = computed(() => playerStore.playerPodcast?.podcastId);\n\n\n//Watch\nwatch(podcastId, () => {initComments()}, {immediate: true});\n\n\n//Methods\nasync function initComments() {\n if (playerStore.playerPodcast?.podcastId) {\n commentsToDisplay.value = await commentStore.fetchCommentsForPlayer(\n playerStore.playerPodcast.podcastId,\n );\n }\n}\nfunction percentPosition(time: number): number {\n let realDuration = playerStore.playerTotal;\n if (playerStore.playerPodcast?.duration) {\n realDuration = Math.round(playerStore.playerPodcast.duration / 1000);\n }\n if (realDuration < playerStore.playerTotal) {\n time = time + (playerStore.playerTotal - realDuration);\n }\n return Math.round((time * 100) / playerStore.playerTotal);\n}\n</script>\n\n<style lang=\"scss\">\n@use \"../../../style/comments\";\n\n.octopus-app {\n .comment-player-container {\n position: relative;\n width: 100%;\n height: 60px;\n display: flex;\n\n @media (width <= 960px) {\n display: none;\n }\n \n .comment-border {\n width: auto;\n position: absolute;\n border-left: solid 1px white;\n height: 10px;\n }\n\n .status-comment {\n margin-top: 10px;\n position: absolute;\n background: white;\n }\n }\n}\n</style>\n","<template>\n <div v-if=\"commentsToDisplay.length\" class=\"comment-player-container\">\n <div\n v-for=\"c in commentsToDisplay\"\n :key=\"c.commentId\"\n class=\"c-hand\"\n @mouseenter=\"displayContent = c\"\n @mouseleave=\"displayContent = undefined\"\n @click=\"displayContent = c\"\n >\n <div\n :style=\"'margin-left: ' + percentPosition(c.timeline ?? 0) + '%'\"\n class=\"comment-border\"\n />\n <div\n :style=\"\n 'margin-left: calc(' + percentPosition(c.timeline ?? 0) + '% - 7px)'\n \"\n class=\"status-comment\"\n :data-selenium=\"'comment-' + seleniumFormat(c.poster.userName)\"\n />\n </div>\n <div v-if=\"displayContent\" class=\"d-flex align-itemx-center mt-4\">\n <div class=\"text-primary flex-shrink-0\">\n {{ displayContent.poster.userName }}\n </div>\n <div class=\"ms-1 me-1\">-</div>\n <div class=\"text-truncate\">\n {{ displayContent.content }}\n </div>\n </div>\n </div>\n</template>\n\n<script setup lang=\"ts\">\nimport { CommentPodcast } from \"@/stores/class/general/comment\";\nimport {useSelenium} from \"../../composable/useSelenium\";\nimport { usePlayerStore } from \"../../../stores/PlayerStore\";\nimport { computed, Ref, ref, watch } from \"vue\";\nimport { useCommentStore } from \"../../../stores/CommentStore\";\n\n//Data \nconst displayContent: Ref<CommentPodcast | undefined> = ref(undefined);\nconst commentsToDisplay: Ref<Array<CommentPodcast>> = ref([]);\n\n//Composables\nconst { seleniumFormat } = useSelenium();\nconst playerStore = usePlayerStore();\nconst commentStore = useCommentStore();\n\n//Computed\nconst podcastId = computed(() => playerStore.playerPodcast?.podcastId);\n\n\n//Watch\nwatch(podcastId, () => {initComments()}, {immediate: true});\n\n\n//Methods\nasync function initComments() {\n if (playerStore.playerPodcast?.podcastId) {\n commentsToDisplay.value = await commentStore.fetchCommentsForPlayer(\n playerStore.playerPodcast.podcastId,\n );\n }\n}\nfunction percentPosition(time: number): number {\n let realDuration = playerStore.playerTotal;\n if (playerStore.playerPodcast?.duration) {\n realDuration = Math.round(playerStore.playerPodcast.duration / 1000);\n }\n if (realDuration < playerStore.playerTotal) {\n time = time + (playerStore.playerTotal - realDuration);\n }\n return Math.round((time * 100) / playerStore.playerTotal);\n}\n</script>\n\n<style lang=\"scss\">\n@use \"../../../style/comments\";\n\n.octopus-app {\n .comment-player-container {\n position: relative;\n width: 100%;\n height: 60px;\n display: flex;\n\n @media (width <= 960px) {\n display: none;\n }\n \n .comment-border {\n width: auto;\n position: absolute;\n border-left: solid 1px white;\n height: 10px;\n }\n\n .status-comment {\n margin-top: 10px;\n position: absolute;\n background: white;\n }\n }\n}\n</style>\n"],"mappings":";;;;;;;;;;EA0CA,MAAM,iBAAkD,IAAI,KAAA,CAAS;EACrE,MAAM,oBAAgD,IAAI,CAAC,CAAC;EAG5D,MAAM,EAAE,mBAAmB,YAAY;EACvC,MAAM,cAAc,eAAe;EACnC,MAAM,eAAe,gBAAgB;EAGrC,MAAM,YAAY,eAAe,YAAY,eAAe,SAAS;EAIrE,MAAM,iBAAiB;GAAC,aAAa;EAAC,GAAG,EAAC,WAAW,KAAI,CAAC;EAI1D,eAAe,eAAe;GAC5B,IAAI,YAAY,eAAe,WAC7B,kBAAkB,QAAQ,MAAM,aAAa,uBAC3C,YAAY,cAAc,SAC5B;EAEJ;EACA,SAAS,gBAAgB,MAAsB;GAC7C,IAAI,eAAe,YAAY;GAC/B,IAAI,YAAY,eAAe,UAC7B,eAAe,KAAK,MAAM,YAAY,cAAc,WAAW,GAAI;GAErE,IAAI,eAAe,YAAY,aAC7B,OAAO,QAAQ,YAAY,cAAc;GAE3C,OAAO,KAAK,MAAO,OAAO,MAAO,YAAY,WAAW;EAC1D;;;;;;;;;;;;;;;;;;;;;;CC1EuC,OAAM;;;;;;CAqBd,OAAM;;AAC1B,IAAA,aAAA,EAAA,OAAM,6BAA4B;AAIlC,IAAA,aAAA,EAAA,OAAM,gBAAe;;CA1BnB,OAAA,OAAA,kBAAkB,UAA7BA,UAAA,GAAAC,mBA8BM,OA9BN,YA8BM,EA7BJD,UAAA,IAAA,GAAAC,mBAmBMC,UAAA,MAAAC,WAlBQ,OAAA,oBAAL,MAAC;EADV,OAAAH,UAAA,GAAAC,mBAmBM,OAAA;GAjBH,KAAK,EAAE;GACR,OAAM;GACL,eAAU,WAAE,OAAA,iBAAiB;GAC7B,cAAU,OAAA,OAAA,OAAA,MAAA,WAAE,OAAA,iBAAiB,KAAA;GAC7B,UAAK,WAAE,OAAA,iBAAiB;EAEzB,GAAA,CAAAG,mBAGE,OAAA;GAFC,OAAKC,eAAA,kBAAoB,OAAA,gBAAgB,EAAE,YAAQ,CAAA,IAAA,GAAA;GACpD,OAAM;EAER,GAAA,MAAA,CAAA,GAAAD,mBAME,OAAA;GALC,OAAKC,eAAoC,uBAAA,OAAA,gBAAgB,EAAE,YAAQ,CAAA,IAAA,UAAA;GAGpE,OAAM;GACL,iBAAa,aAAe,OAAA,eAAe,EAAE,OAAO,QAAQ;;CAGtD,CAAA,GAAA,GAAA,IAAA,OAAA,kBAAXL,UAAA,GAAAC,mBAQM,OARN,YAQM;EAPJG,mBAEM,OAFN,YAEME,gBADD,OAAA,eAAe,OAAO,QAAQ,GAAA,CAAA;EAEnC,OAAA,OAAA,OAAA,KAAAF,mBAA8B,OAAA,EAAzB,OAAM,YAAW,GAAC,KAAC,EAAA;EACxBA,mBAEM,OAFN,YAEME,gBADD,OAAA,eAAe,OAAO,GAAA,CAAA"}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"CommentSection-BIZMRePu.mjs","names":["_withDirectives","_openBlock","_createElementBlock","_createElementVNode","_createBlock","_resolveDynamicComponent","_normalizeClass","_withCtx","_createTextVNode","_toDisplayString","_createVNode","_createCommentVNode","_vShow","_sfc_main"],"sources":["../src/components/display/comments/CommentSection.vue","../src/components/display/comments/CommentSection.vue"],"sourcesContent":["<template>\n <section v-show=\"displayCommentSection\" class=\"module-box\">\n <div class=\"d-flex align-items-center\">\n <component \n :is=\"inStudio? 'div':'h3'\" \n :class=\"inStudio? 'm-1 fw-bold':'mb-0 me-2'\">{{ t(\"Podcast's comments\") }}</component>\n <button\n :title=\"t('Refresh')\"\n class=\"btn btn-transparent\"\n @click=\"reload = !reload\"\n >\n <RefreshIcon />\n </button>\n </div>\n <CommentInput\n v-if=\"canPostComment\"\n :podcast=\"podcast\"\n @new-comment=\"newComment\"\n />\n <CommentList\n v-model:nb-comments=\"nbComments\"\n :class=\"inStudio? 'mt-2':'mt-5'\"\n :podcast=\"podcast\"\n :is-flat-list=\"inStudio\"\n :reload=\"reload\"\n :config=\"configPodcast\"\n :event-to-handle=\"eventToHandle\"\n :state-filter=\"stateFilter\"\n />\n </section>\n</template>\n\n<script setup lang=\"ts\">\nimport RefreshIcon from \"vue-material-design-icons/Refresh.vue\";\nimport { Podcast } from \"@/stores/class/general/podcast\";\nimport { computed, defineAsyncComponent, onBeforeMount, ref, Ref, watch } from \"vue\";\nimport { useCommentStore } from \"../../../stores/CommentStore\";\nimport { useAuthStore } from \"../../../stores/AuthStore\";\nimport {\n CommentMessage,\n CommentsConfig,\n} from \"@/stores/class/config/commentsConfig\";\nimport { CommentPodcast } from \"@/stores/class/general/comment\";\nimport { useI18n } from \"vue-i18n\";\nconst CommentList = defineAsyncComponent(() => import(\"./CommentList.vue\"));\nconst CommentInput = defineAsyncComponent(() => import(\"./CommentInput.vue\"));\n\n//Props \nconst props = defineProps({\n podcast: { default: undefined, type: Object as () => Podcast },\n inStudio: { default: false, type: Boolean },\n stateFilter: { default: \"\", type: String },\n})\n\n//Emits\nconst emit = defineEmits([\"commentReceived\"]);\n\n//Data \nconst reload = ref(false);\nconst configPodcast: Ref<CommentsConfig | undefined> = ref(undefined);\nconst nbComments = ref(0);\nconst eventToHandle: Ref<CommentMessage | undefined> = ref(undefined);\n\n//Composables\nconst { t } = useI18n();\nconst commentStore = useCommentStore();\nconst authStore = useAuthStore();\n\n\n//Computed\nconst displayCommentSection = computed(() => canPostComment.value || nbComments.value > 0);\nconst canPostComment = computed(() => {\n return commentStore.getCanPostComment(\n configPodcast.value,\n props.podcast,\n undefined !== authStore.authOrgaId,\n );\n});\nconst eventActive = computed(() => undefined !== props.podcast?.conferenceId);\n\n\n//Watch\nwatch(()=>commentStore.commentEventToHandle, async () => {\n if (\n !commentStore.commentEventToHandle.length ||\n commentStore.commentPodcastId !== props.podcast?.podcastId\n ){\n return;\n }\n eventToHandle.value = commentStore.commentEventToHandle[0];\n commentStore.commentEventHandled();\n emit('commentReceived');\n}, {deep: true});\n\n\nonBeforeMount(()=>fetchPodcastCommentsConfig())\n\n\n//Methods\nasync function fetchPodcastCommentsConfig() {\n if (!props.podcast?.podcastId) {\n return;\n }\n configPodcast.value = await commentStore.getCommentsConfig(props.podcast);\n if (!eventActive.value) {\n return;\n }\n initLiveComments();\n}\nasync function initLiveComments(): Promise<void> {\n if (!props.podcast?.podcastId || !props.podcast?.organisation.id) {\n return;\n }\n if (!commentStore.commentInitialized) {\n await commentStore.initialize();\n }\n await commentStore.initComments(\n props.podcast.podcastId,\n props.podcast.organisation.id,\n );\n}\nfunction newComment(comment: CommentPodcast) {\n if (eventActive.value) {\n return;\n }\n eventToHandle.value = { type: \"CREATE\", comment: comment };\n}\n</script>\n","<template>\n <section v-show=\"displayCommentSection\" class=\"module-box\">\n <div class=\"d-flex align-items-center\">\n <component \n :is=\"inStudio? 'div':'h3'\" \n :class=\"inStudio? 'm-1 fw-bold':'mb-0 me-2'\">{{ t(\"Podcast's comments\") }}</component>\n <button\n :title=\"t('Refresh')\"\n class=\"btn btn-transparent\"\n @click=\"reload = !reload\"\n >\n <RefreshIcon />\n </button>\n </div>\n <CommentInput\n v-if=\"canPostComment\"\n :podcast=\"podcast\"\n @new-comment=\"newComment\"\n />\n <CommentList\n v-model:nb-comments=\"nbComments\"\n :class=\"inStudio? 'mt-2':'mt-5'\"\n :podcast=\"podcast\"\n :is-flat-list=\"inStudio\"\n :reload=\"reload\"\n :config=\"configPodcast\"\n :event-to-handle=\"eventToHandle\"\n :state-filter=\"stateFilter\"\n />\n </section>\n</template>\n\n<script setup lang=\"ts\">\nimport RefreshIcon from \"vue-material-design-icons/Refresh.vue\";\nimport { Podcast } from \"@/stores/class/general/podcast\";\nimport { computed, defineAsyncComponent, onBeforeMount, ref, Ref, watch } from \"vue\";\nimport { useCommentStore } from \"../../../stores/CommentStore\";\nimport { useAuthStore } from \"../../../stores/AuthStore\";\nimport {\n CommentMessage,\n CommentsConfig,\n} from \"@/stores/class/config/commentsConfig\";\nimport { CommentPodcast } from \"@/stores/class/general/comment\";\nimport { useI18n } from \"vue-i18n\";\nconst CommentList = defineAsyncComponent(() => import(\"./CommentList.vue\"));\nconst CommentInput = defineAsyncComponent(() => import(\"./CommentInput.vue\"));\n\n//Props \nconst props = defineProps({\n podcast: { default: undefined, type: Object as () => Podcast },\n inStudio: { default: false, type: Boolean },\n stateFilter: { default: \"\", type: String },\n})\n\n//Emits\nconst emit = defineEmits([\"commentReceived\"]);\n\n//Data \nconst reload = ref(false);\nconst configPodcast: Ref<CommentsConfig | undefined> = ref(undefined);\nconst nbComments = ref(0);\nconst eventToHandle: Ref<CommentMessage | undefined> = ref(undefined);\n\n//Composables\nconst { t } = useI18n();\nconst commentStore = useCommentStore();\nconst authStore = useAuthStore();\n\n\n//Computed\nconst displayCommentSection = computed(() => canPostComment.value || nbComments.value > 0);\nconst canPostComment = computed(() => {\n return commentStore.getCanPostComment(\n configPodcast.value,\n props.podcast,\n undefined !== authStore.authOrgaId,\n );\n});\nconst eventActive = computed(() => undefined !== props.podcast?.conferenceId);\n\n\n//Watch\nwatch(()=>commentStore.commentEventToHandle, async () => {\n if (\n !commentStore.commentEventToHandle.length ||\n commentStore.commentPodcastId !== props.podcast?.podcastId\n ){\n return;\n }\n eventToHandle.value = commentStore.commentEventToHandle[0];\n commentStore.commentEventHandled();\n emit('commentReceived');\n}, {deep: true});\n\n\nonBeforeMount(()=>fetchPodcastCommentsConfig())\n\n\n//Methods\nasync function fetchPodcastCommentsConfig() {\n if (!props.podcast?.podcastId) {\n return;\n }\n configPodcast.value = await commentStore.getCommentsConfig(props.podcast);\n if (!eventActive.value) {\n return;\n }\n initLiveComments();\n}\nasync function initLiveComments(): Promise<void> {\n if (!props.podcast?.podcastId || !props.podcast?.organisation.id) {\n return;\n }\n if (!commentStore.commentInitialized) {\n await commentStore.initialize();\n }\n await commentStore.initComments(\n props.podcast.podcastId,\n props.podcast.organisation.id,\n );\n}\nfunction newComment(comment: CommentPodcast) {\n if (eventActive.value) {\n return;\n }\n eventToHandle.value = { type: \"CREATE\", comment: comment };\n}\n</script>\n"],"mappings":"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"}
@@ -1,5 +1,5 @@
1
- import { i as e } from "./classicApi-pmODlqv5.mjs";
2
- import { t } from "./CommentStore-hPTYaDGr.mjs";
1
+ import { i as e } from "./classicApi-CGipMqf7.mjs";
2
+ import { t } from "./CommentStore-CysGkBHp.mjs";
3
3
  import { computed as n, createBlock as r, createCommentVNode as i, createElementBlock as a, createElementVNode as o, createTextVNode as s, createVNode as c, defineAsyncComponent as l, defineComponent as u, normalizeClass as d, onBeforeMount as f, openBlock as p, ref as m, resolveDynamicComponent as h, toDisplayString as g, unref as _, vShow as v, watch as y, withCtx as b, withDirectives as x } from "vue";
4
4
  import { useI18n as S } from "vue-i18n";
5
5
  import C from "vue-material-design-icons/Refresh.vue";
@@ -22,7 +22,7 @@ var w = { class: "module-box" }, T = { class: "d-flex align-items-center" }, E =
22
22
  },
23
23
  emits: ["commentReceived"],
24
24
  setup(u, { emit: D }) {
25
- let O = l(() => import("./CommentList-CSYpqgNM.mjs")), k = l(() => import("./CommentInput-US8ZtNj1.mjs")), A = u, j = D, M = m(!1), N = m(void 0), P = m(0), F = m(void 0), { t: I } = S(), L = t(), R = e(), z = n(() => B.value || P.value > 0), B = n(() => L.getCanPostComment(N.value, A.podcast, R.authOrgaId !== void 0)), V = n(() => A.podcast?.conferenceId !== void 0);
25
+ let O = l(() => import("./CommentList-BmyJ4sBi.mjs")), k = l(() => import("./CommentInput-ByigNGTw.mjs")), A = u, j = D, M = m(!1), N = m(void 0), P = m(0), F = m(void 0), { t: I } = S(), L = t(), R = e(), z = n(() => B.value || P.value > 0), B = n(() => L.getCanPostComment(N.value, A.podcast, R.authOrgaId !== void 0)), V = n(() => A.podcast?.conferenceId !== void 0);
26
26
  y(() => L.commentEventToHandle, async () => {
27
27
  L.commentEventToHandle.length && L.commentPodcastId === A.podcast?.podcastId && (F.value = L.commentEventToHandle[0], L.commentEventHandled(), j("commentReceived"));
28
28
  }, { deep: !0 }), f(() => H());
@@ -0,0 +1 @@
1
+ {"version":3,"file":"CommentSection-MDKioQWf.mjs","names":["_withDirectives","_openBlock","_createElementBlock","_createElementVNode","_createBlock","_resolveDynamicComponent","_normalizeClass","_withCtx","_createTextVNode","_toDisplayString","_createVNode","_createCommentVNode","_vShow","_sfc_main"],"sources":["../src/components/display/comments/CommentSection.vue","../src/components/display/comments/CommentSection.vue"],"sourcesContent":["<template>\n <section v-show=\"displayCommentSection\" class=\"module-box\">\n <div class=\"d-flex align-items-center\">\n <component \n :is=\"inStudio? 'div':'h3'\" \n :class=\"inStudio? 'm-1 fw-bold':'mb-0 me-2'\">{{ t(\"Podcast's comments\") }}</component>\n <button\n :title=\"t('Refresh')\"\n class=\"btn btn-transparent\"\n @click=\"reload = !reload\"\n >\n <RefreshIcon />\n </button>\n </div>\n <CommentInput\n v-if=\"canPostComment\"\n :podcast=\"podcast\"\n @new-comment=\"newComment\"\n />\n <CommentList\n v-model:nb-comments=\"nbComments\"\n :class=\"inStudio? 'mt-2':'mt-5'\"\n :podcast=\"podcast\"\n :is-flat-list=\"inStudio\"\n :reload=\"reload\"\n :config=\"configPodcast\"\n :event-to-handle=\"eventToHandle\"\n :state-filter=\"stateFilter\"\n />\n </section>\n</template>\n\n<script setup lang=\"ts\">\nimport RefreshIcon from \"vue-material-design-icons/Refresh.vue\";\nimport { Podcast } from \"@/stores/class/general/podcast\";\nimport { computed, defineAsyncComponent, onBeforeMount, ref, Ref, watch } from \"vue\";\nimport { useCommentStore } from \"../../../stores/CommentStore\";\nimport { useAuthStore } from \"../../../stores/AuthStore\";\nimport {\n CommentMessage,\n CommentsConfig,\n} from \"@/stores/class/config/commentsConfig\";\nimport { CommentPodcast } from \"@/stores/class/general/comment\";\nimport { useI18n } from \"vue-i18n\";\nconst CommentList = defineAsyncComponent(() => import(\"./CommentList.vue\"));\nconst CommentInput = defineAsyncComponent(() => import(\"./CommentInput.vue\"));\n\n//Props \nconst props = defineProps({\n podcast: { default: undefined, type: Object as () => Podcast },\n inStudio: { default: false, type: Boolean },\n stateFilter: { default: \"\", type: String },\n})\n\n//Emits\nconst emit = defineEmits([\"commentReceived\"]);\n\n//Data \nconst reload = ref(false);\nconst configPodcast: Ref<CommentsConfig | undefined> = ref(undefined);\nconst nbComments = ref(0);\nconst eventToHandle: Ref<CommentMessage | undefined> = ref(undefined);\n\n//Composables\nconst { t } = useI18n();\nconst commentStore = useCommentStore();\nconst authStore = useAuthStore();\n\n\n//Computed\nconst displayCommentSection = computed(() => canPostComment.value || nbComments.value > 0);\nconst canPostComment = computed(() => {\n return commentStore.getCanPostComment(\n configPodcast.value,\n props.podcast,\n undefined !== authStore.authOrgaId,\n );\n});\nconst eventActive = computed(() => undefined !== props.podcast?.conferenceId);\n\n\n//Watch\nwatch(()=>commentStore.commentEventToHandle, async () => {\n if (\n !commentStore.commentEventToHandle.length ||\n commentStore.commentPodcastId !== props.podcast?.podcastId\n ){\n return;\n }\n eventToHandle.value = commentStore.commentEventToHandle[0];\n commentStore.commentEventHandled();\n emit('commentReceived');\n}, {deep: true});\n\n\nonBeforeMount(()=>fetchPodcastCommentsConfig())\n\n\n//Methods\nasync function fetchPodcastCommentsConfig() {\n if (!props.podcast?.podcastId) {\n return;\n }\n configPodcast.value = await commentStore.getCommentsConfig(props.podcast);\n if (!eventActive.value) {\n return;\n }\n initLiveComments();\n}\nasync function initLiveComments(): Promise<void> {\n if (!props.podcast?.podcastId || !props.podcast?.organisation.id) {\n return;\n }\n if (!commentStore.commentInitialized) {\n await commentStore.initialize();\n }\n await commentStore.initComments(\n props.podcast.podcastId,\n props.podcast.organisation.id,\n );\n}\nfunction newComment(comment: CommentPodcast) {\n if (eventActive.value) {\n return;\n }\n eventToHandle.value = { type: \"CREATE\", comment: comment };\n}\n</script>\n","<template>\n <section v-show=\"displayCommentSection\" class=\"module-box\">\n <div class=\"d-flex align-items-center\">\n <component \n :is=\"inStudio? 'div':'h3'\" \n :class=\"inStudio? 'm-1 fw-bold':'mb-0 me-2'\">{{ t(\"Podcast's comments\") }}</component>\n <button\n :title=\"t('Refresh')\"\n class=\"btn btn-transparent\"\n @click=\"reload = !reload\"\n >\n <RefreshIcon />\n </button>\n </div>\n <CommentInput\n v-if=\"canPostComment\"\n :podcast=\"podcast\"\n @new-comment=\"newComment\"\n />\n <CommentList\n v-model:nb-comments=\"nbComments\"\n :class=\"inStudio? 'mt-2':'mt-5'\"\n :podcast=\"podcast\"\n :is-flat-list=\"inStudio\"\n :reload=\"reload\"\n :config=\"configPodcast\"\n :event-to-handle=\"eventToHandle\"\n :state-filter=\"stateFilter\"\n />\n </section>\n</template>\n\n<script setup lang=\"ts\">\nimport RefreshIcon from \"vue-material-design-icons/Refresh.vue\";\nimport { Podcast } from \"@/stores/class/general/podcast\";\nimport { computed, defineAsyncComponent, onBeforeMount, ref, Ref, watch } from \"vue\";\nimport { useCommentStore } from \"../../../stores/CommentStore\";\nimport { useAuthStore } from \"../../../stores/AuthStore\";\nimport {\n CommentMessage,\n CommentsConfig,\n} from \"@/stores/class/config/commentsConfig\";\nimport { CommentPodcast } from \"@/stores/class/general/comment\";\nimport { useI18n } from \"vue-i18n\";\nconst CommentList = defineAsyncComponent(() => import(\"./CommentList.vue\"));\nconst CommentInput = defineAsyncComponent(() => import(\"./CommentInput.vue\"));\n\n//Props \nconst props = defineProps({\n podcast: { default: undefined, type: Object as () => Podcast },\n inStudio: { default: false, type: Boolean },\n stateFilter: { default: \"\", type: String },\n})\n\n//Emits\nconst emit = defineEmits([\"commentReceived\"]);\n\n//Data \nconst reload = ref(false);\nconst configPodcast: Ref<CommentsConfig | undefined> = ref(undefined);\nconst nbComments = ref(0);\nconst eventToHandle: Ref<CommentMessage | undefined> = ref(undefined);\n\n//Composables\nconst { t } = useI18n();\nconst commentStore = useCommentStore();\nconst authStore = useAuthStore();\n\n\n//Computed\nconst displayCommentSection = computed(() => canPostComment.value || nbComments.value > 0);\nconst canPostComment = computed(() => {\n return commentStore.getCanPostComment(\n configPodcast.value,\n props.podcast,\n undefined !== authStore.authOrgaId,\n );\n});\nconst eventActive = computed(() => undefined !== props.podcast?.conferenceId);\n\n\n//Watch\nwatch(()=>commentStore.commentEventToHandle, async () => {\n if (\n !commentStore.commentEventToHandle.length ||\n commentStore.commentPodcastId !== props.podcast?.podcastId\n ){\n return;\n }\n eventToHandle.value = commentStore.commentEventToHandle[0];\n commentStore.commentEventHandled();\n emit('commentReceived');\n}, {deep: true});\n\n\nonBeforeMount(()=>fetchPodcastCommentsConfig())\n\n\n//Methods\nasync function fetchPodcastCommentsConfig() {\n if (!props.podcast?.podcastId) {\n return;\n }\n configPodcast.value = await commentStore.getCommentsConfig(props.podcast);\n if (!eventActive.value) {\n return;\n }\n initLiveComments();\n}\nasync function initLiveComments(): Promise<void> {\n if (!props.podcast?.podcastId || !props.podcast?.organisation.id) {\n return;\n }\n if (!commentStore.commentInitialized) {\n await commentStore.initialize();\n }\n await commentStore.initComments(\n props.podcast.podcastId,\n props.podcast.organisation.id,\n );\n}\nfunction newComment(comment: CommentPodcast) {\n if (eventActive.value) {\n return;\n }\n eventToHandle.value = { type: \"CREATE\", comment: comment };\n}\n</script>\n"],"mappings":"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"}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"CommentStore-BBm8MjxW.mjs","names":["classicApi","cookiesHelper","stringHelper","WebSocketEngine"],"sources":["../src/websocket/wss.ts","../src/websocket/commentWebsocket.ts","../src/stores/CommentStore.ts"],"sourcesContent":["/* eslint-disable */\nlet SockJS: any = null;\nlet Stomp: any = null;\n/* eslint-enable */\n\ninterface Subscription {\n id: string;\n topic: string;\n callback: (message: { body: string }) => void;\n subscription?: () => void;\n}\n\nexport default class WssConnection {\n url: string;\n endpoint: string;\n subscriptions: Array<Subscription>;\n /* eslint-disable */\n socket: {\n (url: string, _reserved?: any, options?: SockJS.Options | undefined): WebSocket;\n new (url: string, _reserved?: any, options?: SockJS.Options | undefined): WebSocket;\n prototype: WebSocket;\n CONNECTING: SockJS.CONNECTING;\n OPEN: SockJS.OPEN;\n CLOSING: SockJS.CLOSING;\n CLOSED: SockJS.CLOSED;\n }|undefined ;\n client: any;\n queuedMessages: Array<any>;\n processingMsg: boolean;\n wssBroken: boolean;\n /* eslint-enable */\n /**\n *\n * @param {String} url url of the wss\n * @param {String} endpoint of the wss\n * @param {Map<String, Function>} topics list of topics and associated callback\n */\n constructor(url: string, endpoint: string) {\n this.url = url;\n this.endpoint = endpoint;\n this.subscriptions = [];\n this.processingMsg = false;\n this.queuedMessages = [];\n this.wssBroken = false;\n }\n async processQueuedMessages() {\n if (this.processingMsg) {\n return;\n }\n if (this.queuedMessages.length === 0) {\n return;\n }\n this.processingMsg = true;\n try {\n const message = this.queuedMessages.shift();\n await message.callback(message.message);\n } catch (error) {\n console.log(error);\n }\n this.processingMsg = false;\n this.processQueuedMessages();\n }\n\n async connect(): Promise<void> {\n return new Promise<void>((resolve, reject) => {\n (async () => {\n if (null === SockJS) {\n await import(\"sockjs-client/dist/sockjs\").then((sockLibrary) => {\n SockJS = sockLibrary.default;\n });\n }\n if (null === Stomp) {\n await import(\"@stomp/stompjs\").then((stompLibrary) => {\n Stomp = stompLibrary.Stomp;\n });\n }\n this.socket = new SockJS(\"https://\" + this.url + \"/\" + this.endpoint);\n this.client = Stomp.over(this.socket);\n this.client.heartbeat.outgoing = 2000;\n this.client.heartbeat.incoming = 2000;\n this.client.debug = (sockMessage: string) => {\n if (\n sockMessage.includes(\"did not receive server activity for the last\")\n ) {\n this.wssBroken = true;\n }\n };\n this.client.onConnect = () => {\n this.connectionSuccess();\n resolve();\n };\n this.client.onStompError = () => {\n this.wssBroken = true;\n this.connectionErrorReconnect();\n reject(new Error());\n };\n this.client.onWebSocketError = () => {\n this.wssBroken = true;\n this.connectionErrorReconnect();\n reject(new Error());\n };\n this.client.onDisconnect = () => {\n this.connectionErrorReconnect();\n reject(new Error());\n };\n this.client.onWebSocketClose = () => {\n this.connectionErrorReconnect();\n reject(new Error());\n };\n\n this.client.activate();\n })();\n });\n }\n\n async connectionErrorReconnect() {\n if (!this.wssBroken) {\n return;\n }\n console.log(\"Error in ws try to reconnect\");\n setTimeout(() => {\n this.connect();\n }, 10);\n this.wssBroken = false;\n }\n\n connectionSuccess(): void {\n this.subscriptions.forEach((element: Subscription) => {\n // On récupère tous les évènements freeswitch\n try {\n this.subscribe(element.topic, element.callback);\n } catch {\n setTimeout(() => {\n this.connect();\n }, 10000);\n return;\n }\n });\n }\n\n subscribe(topic: string, callback: (message: { body: string }) => any): void {\n const subscription = this.client.subscribe(topic, (message: any) => {\n this.queuedMessages.push({ message: message, callback: callback });\n this.processQueuedMessages();\n });\n this.subscriptions.push({\n id: subscription.id,\n topic: topic,\n callback: callback,\n });\n }\n\n unsubscribe(topic: string): void {\n if (!topic) {\n throw new Error(\n \"Cannot remove subscription if no search pattern is founded\",\n );\n }\n const removedSubscriptions: Array<Subscription> = [];\n this.subscriptions.forEach((item: Subscription) => {\n let valid = true;\n if (item.topic !== topic) {\n valid = false;\n }\n if (valid) {\n removedSubscriptions.push(item);\n try {\n this.client.unsubscribe(item.id);\n } catch {\n console.log(\"Error while deconnecting client with item \" + item.id);\n }\n }\n });\n this.subscriptions = this.subscriptions.filter(\n (item: Subscription) => !removedSubscriptions.includes(item),\n );\n }\n\n disconnect(): void {\n this.client.deactivate();\n }\n}\n","import { CommentMessage } from \"@/stores/class/config/commentsConfig\";\nimport WssConnection from \"./wss\";\n\nexport default class CommentEngine {\n uri: string;\n connection: WssConnection | undefined;\n subscribedEventComment: number|undefined;\n\n constructor(wssDomain: string) {\n this.uri = wssDomain;\n this.connection = undefined;\n this.subscribedEventComment = undefined;\n }\n\n async initialize(): Promise<void> {\n this.connection = new WssConnection(this.uri, \"websocket\");\n await this.connection.connect();\n }\n async close(): Promise<void> {\n if (!this.connection) {\n return;\n }\n this.connection.disconnect();\n this.connection = undefined;\n }\n\n subscribeToPodcastCommentEventBus(\n podcastId: number,\n queueName: string,\n callback: (jsonMessage: CommentMessage) => void,\n ): void {\n if (!this.connection) {\n throw new Error(\n \"Websocket engine must be initialized, before it can subscribe to any events\",\n );\n }\n if (podcastId) {\n this.connection.subscribe(\n queueName,\n (message) => {\n const jsonMessage = JSON.parse(message.body);\n callback.call(this, jsonMessage);\n },\n );\n this.subscribedEventComment = podcastId;\n }\n }\n\n unsubscribeToPodcastCommentEventBus(podcastId: number, queueName: string): void {\n if (!this.connection) {\n throw new Error(\n \"Websocket engine must be initialized, before it can unsubscribe to any events\",\n );\n }\n if (!podcastId) {\n throw new Error(\n \"Cannot unsubscribe to comments event bus if no id provided\",\n );\n }\n this.connection.unsubscribe(queueName);\n this.subscribedEventComment = undefined;\n }\n\n isPodcastCommentEventConnected(podcastId: number): boolean {\n return podcastId===this.subscribedEventComment;\n }\n}\n","//Import dayjs extend\nimport dayjs from \"dayjs\";\nimport relativeTime from \"dayjs/plugin/relativeTime\";\ndayjs.extend(relativeTime);\n\nimport { defineStore } from \"pinia\";\nimport cookiesHelper from \"../helper/cookiesHelper\";\nimport WebSocketEngine from \"../websocket/commentWebsocket\";\nimport { CommentPodcast } from \"./class/general/comment\";\nimport { useAuthStore } from \"./AuthStore\";\nimport { useApiStore } from \"./ApiStore\";\nimport stringHelper from \"../helper/stringHelper\";\nimport { CommentMessage, CommentsConfig } from \"./class/config/commentsConfig\";\nimport classicApi from \"../api/classicApi\";\nimport { Podcast } from \"./class/general/podcast\";\nimport { ListClassicReturn } from \"./class/general/listReturn\";\nfunction errorCommentsConfig(): CommentsConfig {\n return {\n inherited: false,\n abuse: {\n authRequired: true,\n },\n commentLikes: {\n authRequired: true,\n dislikeEnabled: false,\n likeEnabled: false,\n },\n comments: {\n authRequired: true,\n commentAllowed: \"NONE\",\n defaultState: \"PENDING\",\n depth: 2,\n },\n podcastLikes: {\n authRequired: true,\n dislikeEnabled: false,\n likeEnabled: false,\n },\n };\n}\n\n\nexport interface CommentUser {\n name: string | null;\n uuid: string | null;\n uuidHash: string | null;\n}\ninterface CommentState {\n commentInitialized: boolean;\n commentWebsocketengine: WebSocketEngine | undefined;\n commentPodcastId?: number;\n commentQueueName?: string;\n commentEventToHandle: Array<CommentMessage>;\n commentUser?: CommentUser;\n commentsForPlayer: { [key: number]: Array<CommentPodcast> };\n podcastsCommentsConfig: { [key: number]: CommentsConfig };\n}\nexport const useCommentStore = defineStore(\"CommentStore\", {\n state: (): CommentState => ({\n commentInitialized: false,\n commentWebsocketengine: undefined,\n commentPodcastId: undefined,\n commentQueueName: undefined,\n commentEventToHandle: [],\n commentsForPlayer: {},\n podcastsCommentsConfig: {},\n }),\n actions: {\n async fetchCommentsForPlayer(podcastId: number) {\n if (!this.commentsForPlayer[podcastId]) {\n this.commentsForPlayer[podcastId] = [];\n const size = 50;\n let first = 0;\n let keepFetching = true;\n while (keepFetching) {\n const data = await classicApi.fetchData<ListClassicReturn<CommentPodcast>>({\n api:2,\n path:\"comment/list\",\n parameters:{\n first: first,\n size: size,\n podcastId: podcastId,\n sort: \"DATE_DESC\",\n hideAnswers: true,\n state: \"VALIDATED\",\n },\n isNotAuth:true\n });\n first += size;\n this.commentsForPlayer[podcastId] = this.commentsForPlayer[\n podcastId\n ].concat(data.result);\n keepFetching =\n data.count !== this.commentsForPlayer[podcastId].length;\n }\n }\n return this.commentsForPlayer[podcastId];\n },\n async digest(message: string) {\n return Array.from(\n new Uint8Array(\n await crypto.subtle.digest(\n \"SHA-1\",\n new TextEncoder().encode(message),\n ),\n ),\n (byte) => byte.toString(16).padStart(2, \"0\"),\n ).join(\"\");\n },\n async initCommentUser() {\n if (this.commentUser) {\n return;\n }\n const authStore = useAuthStore();\n if (authStore.authProfile) {\n this.commentUser = {\n name: authStore.authName,\n uuid: authStore.authProfile.userId,\n };\n return;\n }\n let uuid = cookiesHelper.getCookie(\"comment-octopus-uuid\");\n if (null === uuid) {\n uuid = stringHelper.uuidv4();\n cookiesHelper.setCookie(\"comment-octopus-uuid\", uuid);\n }\n const hash = await this.digest(uuid);\n this.commentUser = {\n name: cookiesHelper.getCookie(\"comment-octopus-name\"),\n uuid: uuid,\n uuidHash: hash,\n };\n if (\"#miniplayer\" === this.commentUser?.name) {\n this.commentUser.name = null;\n }\n },\n setCommentUser(name: string) {\n const authStore = useAuthStore();\n if (authStore.authProfile || !this.commentUser) {\n return;\n }\n cookiesHelper.setCookie(\"comment-octopus-name\", name);\n this.commentUser.name = name;\n },\n async getCommentsConfig(podcast: Podcast): Promise<CommentsConfig> {\n if (this.podcastsCommentsConfig[podcast.podcastId]) {\n return this.podcastsCommentsConfig[podcast.podcastId];\n }\n try {\n this.podcastsCommentsConfig[podcast.podcastId] = await classicApi.fetchData<CommentsConfig>({\n api: 2,\n path:\"config/podcast/\" + podcast.podcastId,\n });\n } catch {\n try {\n this.podcastsCommentsConfig[podcast.podcastId] = await classicApi.fetchData<CommentsConfig>({\n api: 2,\n path: \"config/emission/\" + podcast.emission.emissionId,\n });\n } catch {\n this.podcastsCommentsConfig[podcast.podcastId] = errorCommentsConfig(); \n }\n }\n return this.podcastsCommentsConfig[podcast.podcastId];\n },\n resetPodcastsConfig() {\n this.podcastsCommentsConfig = {};\n },\n updatePodcastsConfig(podcastId: number, config: CommentsConfig) {\n this.podcastsCommentsConfig[podcastId] = config;\n },\n getCanPostCommentAllowed(\n config: CommentsConfig,\n podcast: Podcast,\n ): boolean {\n if (\"NONE\" === config.comments.commentAllowed) {\n return false;\n }\n const rightsLiveOnly =\n \"LIVE_ONLY\" === config.comments.commentAllowed &&\n undefined !== podcast.conferenceId &&\n \"READY_TO_RECORD\" === podcast.processingStatus;\n const rightsLiveRecord =\n \"LIVE_AND_REPLAY\" === config.comments.commentAllowed &&\n undefined !== podcast.conferenceId;\n return (\n \"ALL\" === config.comments.commentAllowed ||\n rightsLiveOnly ||\n rightsLiveRecord\n );\n },\n getCanPostComment(\n config: CommentsConfig | undefined,\n podcast: Podcast | undefined,\n isAuth: boolean,\n ): boolean {\n if (!config || !podcast) {\n return false;\n }\n return (\n this.getCanPostCommentAllowed(config, podcast) &&\n (!config.comments.authRequired ||\n (config.comments.authRequired && isAuth))\n );\n },\n getCanReportAbuse(\n config: CommentsConfig | undefined,\n isAuth: boolean,\n ): boolean {\n if (!config) {\n return false;\n }\n return (\n !config.abuse.authRequired || (config.abuse.authRequired && isAuth)\n );\n },\n\n /*--------------------------------------------------------------------------------------------------------------\n | |\n | Initializing state |\n | |\n --------------------------------------------------------------------------------------------------------------*/\n async initialize() {\n const apiStore = useApiStore();\n const commentUrl = apiStore.commentUrl?? \"https://comments.dev2.saooti.org/\";\n const url = stringHelper.trimChar(commentUrl.replace(\"https://\", \"\"),\"/\");\n const engine = new WebSocketEngine(url);\n await engine.initialize();\n this.commentWebsocketengine = engine;\n this.commentInitialized = true;\n },\n\n /*--------------------------------------------------------------------------------------------------------------\n | |\n | Comments management methods |\n | |\n --------------------------------------------------------------------------------------------------------------*/\n unsubscribeToEvent() {\n if (!this.commentWebsocketengine) {\n return;\n }\n if (\n this.commentPodcastId &&\n this.commentQueueName &&\n this.commentWebsocketengine.isPodcastCommentEventConnected(\n this.commentPodcastId,\n )\n ) {\n this.commentWebsocketengine.unsubscribeToPodcastCommentEventBus(\n this.commentPodcastId,\n this.commentQueueName,\n );\n }\n },\n\n subscribeToEvents() {\n if (!this.commentWebsocketengine) {\n return;\n }\n if (this.commentPodcastId && this.commentQueueName) {\n this.commentWebsocketengine.subscribeToPodcastCommentEventBus(\n this.commentPodcastId,\n this.commentQueueName,\n (message) => {\n this.commentEventToHandleUpdate(message);\n },\n );\n }\n },\n\n async initComments(podcastId: number, organisationId: string) {\n this.unsubscribeToEvent();\n this.commentQueueName =\n \"/topic/comment.\" + organisationId + \".\" + podcastId;\n this.commentPodcastId = podcastId;\n this.subscribeToEvents();\n },\n async unsubscribeComments() {\n this.unsubscribeComments();\n this.commentPodcastId = undefined;\n },\n\n /*--------------------------------------------------------------------------------------------------------------\n | |\n | Managing conference WebSocket Event Received |\n | |\n --------------------------------------------------------------------------------------------------------------*/\n commentEventHandled() {\n this.commentEventToHandle.shift();\n },\n commentEventToHandleUpdate(eventToHandle: {\n comment: CommentPodcast;\n type: string;\n }) {\n if (eventToHandle) {\n this.commentEventToHandle.push(eventToHandle);\n } else {\n this.commentEventToHandle.splice(0, this.commentEventToHandle.length);\n }\n },\n },\n});\n"],"mappings":"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"}
@@ -1,4 +1,4 @@
1
- import { O as e, i as t, t as n } from "./classicApi-pmODlqv5.mjs";
1
+ import { i as e, k as t, t as n } from "./classicApi-CGipMqf7.mjs";
2
2
  import { t as r } from "./stringHelper-BtFJzuX4.mjs";
3
3
  import { t as i } from "./cookiesHelper-5uZhLulK.mjs";
4
4
  import { defineStore as a } from "pinia";
@@ -193,11 +193,11 @@ var p = a("CommentStore", {
193
193
  },
194
194
  async initCommentUser() {
195
195
  if (this.commentUser) return;
196
- let e = t();
197
- if (e.authProfile) {
196
+ let t = e();
197
+ if (t.authProfile) {
198
198
  this.commentUser = {
199
- name: e.authName,
200
- uuid: e.authProfile.userId
199
+ name: t.authName,
200
+ uuid: t.authProfile.userId
201
201
  };
202
202
  return;
203
203
  }
@@ -210,8 +210,8 @@ var p = a("CommentStore", {
210
210
  uuidHash: a
211
211
  }, this.commentUser?.name === "#miniplayer" && (this.commentUser.name = null);
212
212
  },
213
- setCommentUser(e) {
214
- !t().authProfile && this.commentUser && (i.setCookie("comment-octopus-name", e), this.commentUser.name = e);
213
+ setCommentUser(t) {
214
+ !e().authProfile && this.commentUser && (i.setCookie("comment-octopus-name", t), this.commentUser.name = t);
215
215
  },
216
216
  async getCommentsConfig(e) {
217
217
  if (this.podcastsCommentsConfig[e.podcastId]) return this.podcastsCommentsConfig[e.podcastId];
@@ -250,7 +250,7 @@ var p = a("CommentStore", {
250
250
  return e ? !e.abuse.authRequired || e.abuse.authRequired && t : !1;
251
251
  },
252
252
  async initialize() {
253
- let t = e().commentUrl ?? "https://comments.dev2.saooti.org/", n = new d(r.trimChar(t.replace("https://", ""), "/"));
253
+ let e = t().commentUrl ?? "https://comments.dev2.saooti.org/", n = new d(r.trimChar(e.replace("https://", ""), "/"));
254
254
  await n.initialize(), this.commentWebsocketengine = n, this.commentInitialized = !0;
255
255
  },
256
256
  unsubscribeToEvent() {
@@ -0,0 +1 @@
1
+ {"version":3,"file":"CommentStore-F5MVSrDw.mjs","names":["classicApi","cookiesHelper","stringHelper","WebSocketEngine"],"sources":["../src/websocket/wss.ts","../src/websocket/commentWebsocket.ts","../src/stores/CommentStore.ts"],"sourcesContent":["/* eslint-disable */\nlet SockJS: any = null;\nlet Stomp: any = null;\n/* eslint-enable */\n\ninterface Subscription {\n id: string;\n topic: string;\n callback: (message: { body: string }) => void;\n subscription?: () => void;\n}\n\nexport default class WssConnection {\n url: string;\n endpoint: string;\n subscriptions: Array<Subscription>;\n /* eslint-disable */\n socket: {\n (url: string, _reserved?: any, options?: SockJS.Options | undefined): WebSocket;\n new (url: string, _reserved?: any, options?: SockJS.Options | undefined): WebSocket;\n prototype: WebSocket;\n CONNECTING: SockJS.CONNECTING;\n OPEN: SockJS.OPEN;\n CLOSING: SockJS.CLOSING;\n CLOSED: SockJS.CLOSED;\n }|undefined ;\n client: any;\n queuedMessages: Array<any>;\n processingMsg: boolean;\n wssBroken: boolean;\n /* eslint-enable */\n /**\n *\n * @param {String} url url of the wss\n * @param {String} endpoint of the wss\n * @param {Map<String, Function>} topics list of topics and associated callback\n */\n constructor(url: string, endpoint: string) {\n this.url = url;\n this.endpoint = endpoint;\n this.subscriptions = [];\n this.processingMsg = false;\n this.queuedMessages = [];\n this.wssBroken = false;\n }\n async processQueuedMessages() {\n if (this.processingMsg) {\n return;\n }\n if (this.queuedMessages.length === 0) {\n return;\n }\n this.processingMsg = true;\n try {\n const message = this.queuedMessages.shift();\n await message.callback(message.message);\n } catch (error) {\n console.log(error);\n }\n this.processingMsg = false;\n this.processQueuedMessages();\n }\n\n async connect(): Promise<void> {\n return new Promise<void>((resolve, reject) => {\n (async () => {\n if (null === SockJS) {\n await import(\"sockjs-client/dist/sockjs\").then((sockLibrary) => {\n SockJS = sockLibrary.default;\n });\n }\n if (null === Stomp) {\n await import(\"@stomp/stompjs\").then((stompLibrary) => {\n Stomp = stompLibrary.Stomp;\n });\n }\n this.socket = new SockJS(\"https://\" + this.url + \"/\" + this.endpoint);\n this.client = Stomp.over(this.socket);\n this.client.heartbeat.outgoing = 2000;\n this.client.heartbeat.incoming = 2000;\n this.client.debug = (sockMessage: string) => {\n if (\n sockMessage.includes(\"did not receive server activity for the last\")\n ) {\n this.wssBroken = true;\n }\n };\n this.client.onConnect = () => {\n this.connectionSuccess();\n resolve();\n };\n this.client.onStompError = () => {\n this.wssBroken = true;\n this.connectionErrorReconnect();\n reject(new Error());\n };\n this.client.onWebSocketError = () => {\n this.wssBroken = true;\n this.connectionErrorReconnect();\n reject(new Error());\n };\n this.client.onDisconnect = () => {\n this.connectionErrorReconnect();\n reject(new Error());\n };\n this.client.onWebSocketClose = () => {\n this.connectionErrorReconnect();\n reject(new Error());\n };\n\n this.client.activate();\n })();\n });\n }\n\n async connectionErrorReconnect() {\n if (!this.wssBroken) {\n return;\n }\n console.log(\"Error in ws try to reconnect\");\n setTimeout(() => {\n this.connect();\n }, 10);\n this.wssBroken = false;\n }\n\n connectionSuccess(): void {\n this.subscriptions.forEach((element: Subscription) => {\n // On récupère tous les évènements freeswitch\n try {\n this.subscribe(element.topic, element.callback);\n } catch {\n setTimeout(() => {\n this.connect();\n }, 10000);\n return;\n }\n });\n }\n\n subscribe(topic: string, callback: (message: { body: string }) => any): void {\n const subscription = this.client.subscribe(topic, (message: any) => {\n this.queuedMessages.push({ message: message, callback: callback });\n this.processQueuedMessages();\n });\n this.subscriptions.push({\n id: subscription.id,\n topic: topic,\n callback: callback,\n });\n }\n\n unsubscribe(topic: string): void {\n if (!topic) {\n throw new Error(\n \"Cannot remove subscription if no search pattern is founded\",\n );\n }\n const removedSubscriptions: Array<Subscription> = [];\n this.subscriptions.forEach((item: Subscription) => {\n let valid = true;\n if (item.topic !== topic) {\n valid = false;\n }\n if (valid) {\n removedSubscriptions.push(item);\n try {\n this.client.unsubscribe(item.id);\n } catch {\n console.log(\"Error while deconnecting client with item \" + item.id);\n }\n }\n });\n this.subscriptions = this.subscriptions.filter(\n (item: Subscription) => !removedSubscriptions.includes(item),\n );\n }\n\n disconnect(): void {\n this.client.deactivate();\n }\n}\n","import { CommentMessage } from \"@/stores/class/config/commentsConfig\";\nimport WssConnection from \"./wss\";\n\nexport default class CommentEngine {\n uri: string;\n connection: WssConnection | undefined;\n subscribedEventComment: number|undefined;\n\n constructor(wssDomain: string) {\n this.uri = wssDomain;\n this.connection = undefined;\n this.subscribedEventComment = undefined;\n }\n\n async initialize(): Promise<void> {\n this.connection = new WssConnection(this.uri, \"websocket\");\n await this.connection.connect();\n }\n async close(): Promise<void> {\n if (!this.connection) {\n return;\n }\n this.connection.disconnect();\n this.connection = undefined;\n }\n\n subscribeToPodcastCommentEventBus(\n podcastId: number,\n queueName: string,\n callback: (jsonMessage: CommentMessage) => void,\n ): void {\n if (!this.connection) {\n throw new Error(\n \"Websocket engine must be initialized, before it can subscribe to any events\",\n );\n }\n if (podcastId) {\n this.connection.subscribe(\n queueName,\n (message) => {\n const jsonMessage = JSON.parse(message.body);\n callback.call(this, jsonMessage);\n },\n );\n this.subscribedEventComment = podcastId;\n }\n }\n\n unsubscribeToPodcastCommentEventBus(podcastId: number, queueName: string): void {\n if (!this.connection) {\n throw new Error(\n \"Websocket engine must be initialized, before it can unsubscribe to any events\",\n );\n }\n if (!podcastId) {\n throw new Error(\n \"Cannot unsubscribe to comments event bus if no id provided\",\n );\n }\n this.connection.unsubscribe(queueName);\n this.subscribedEventComment = undefined;\n }\n\n isPodcastCommentEventConnected(podcastId: number): boolean {\n return podcastId===this.subscribedEventComment;\n }\n}\n","//Import dayjs extend\nimport dayjs from \"dayjs\";\nimport relativeTime from \"dayjs/plugin/relativeTime\";\ndayjs.extend(relativeTime);\n\nimport { defineStore } from \"pinia\";\nimport cookiesHelper from \"../helper/cookiesHelper\";\nimport WebSocketEngine from \"../websocket/commentWebsocket\";\nimport { CommentPodcast } from \"./class/general/comment\";\nimport { useAuthStore } from \"./AuthStore\";\nimport { useApiStore } from \"./ApiStore\";\nimport stringHelper from \"../helper/stringHelper\";\nimport { CommentMessage, CommentsConfig } from \"./class/config/commentsConfig\";\nimport classicApi from \"../api/classicApi\";\nimport { Podcast } from \"./class/general/podcast\";\nimport { ListClassicReturn } from \"./class/general/listReturn\";\nfunction errorCommentsConfig(): CommentsConfig {\n return {\n inherited: false,\n abuse: {\n authRequired: true,\n },\n commentLikes: {\n authRequired: true,\n dislikeEnabled: false,\n likeEnabled: false,\n },\n comments: {\n authRequired: true,\n commentAllowed: \"NONE\",\n defaultState: \"PENDING\",\n depth: 2,\n },\n podcastLikes: {\n authRequired: true,\n dislikeEnabled: false,\n likeEnabled: false,\n },\n };\n}\n\n\nexport interface CommentUser {\n name: string | null;\n uuid: string | null;\n uuidHash: string | null;\n}\ninterface CommentState {\n commentInitialized: boolean;\n commentWebsocketengine: WebSocketEngine | undefined;\n commentPodcastId?: number;\n commentQueueName?: string;\n commentEventToHandle: Array<CommentMessage>;\n commentUser?: CommentUser;\n commentsForPlayer: { [key: number]: Array<CommentPodcast> };\n podcastsCommentsConfig: { [key: number]: CommentsConfig };\n}\nexport const useCommentStore = defineStore(\"CommentStore\", {\n state: (): CommentState => ({\n commentInitialized: false,\n commentWebsocketengine: undefined,\n commentPodcastId: undefined,\n commentQueueName: undefined,\n commentEventToHandle: [],\n commentsForPlayer: {},\n podcastsCommentsConfig: {},\n }),\n actions: {\n async fetchCommentsForPlayer(podcastId: number) {\n if (!this.commentsForPlayer[podcastId]) {\n this.commentsForPlayer[podcastId] = [];\n const size = 50;\n let first = 0;\n let keepFetching = true;\n while (keepFetching) {\n const data = await classicApi.fetchData<ListClassicReturn<CommentPodcast>>({\n api:2,\n path:\"comment/list\",\n parameters:{\n first: first,\n size: size,\n podcastId: podcastId,\n sort: \"DATE_DESC\",\n hideAnswers: true,\n state: \"VALIDATED\",\n },\n isNotAuth:true\n });\n first += size;\n this.commentsForPlayer[podcastId] = this.commentsForPlayer[\n podcastId\n ].concat(data.result);\n keepFetching =\n data.count !== this.commentsForPlayer[podcastId].length;\n }\n }\n return this.commentsForPlayer[podcastId];\n },\n async digest(message: string) {\n return Array.from(\n new Uint8Array(\n await crypto.subtle.digest(\n \"SHA-1\",\n new TextEncoder().encode(message),\n ),\n ),\n (byte) => byte.toString(16).padStart(2, \"0\"),\n ).join(\"\");\n },\n async initCommentUser() {\n if (this.commentUser) {\n return;\n }\n const authStore = useAuthStore();\n if (authStore.authProfile) {\n this.commentUser = {\n name: authStore.authName,\n uuid: authStore.authProfile.userId,\n };\n return;\n }\n let uuid = cookiesHelper.getCookie(\"comment-octopus-uuid\");\n if (null === uuid) {\n uuid = stringHelper.uuidv4();\n cookiesHelper.setCookie(\"comment-octopus-uuid\", uuid);\n }\n const hash = await this.digest(uuid);\n this.commentUser = {\n name: cookiesHelper.getCookie(\"comment-octopus-name\"),\n uuid: uuid,\n uuidHash: hash,\n };\n if (\"#miniplayer\" === this.commentUser?.name) {\n this.commentUser.name = null;\n }\n },\n setCommentUser(name: string) {\n const authStore = useAuthStore();\n if (authStore.authProfile || !this.commentUser) {\n return;\n }\n cookiesHelper.setCookie(\"comment-octopus-name\", name);\n this.commentUser.name = name;\n },\n async getCommentsConfig(podcast: Podcast): Promise<CommentsConfig> {\n if (this.podcastsCommentsConfig[podcast.podcastId]) {\n return this.podcastsCommentsConfig[podcast.podcastId];\n }\n try {\n this.podcastsCommentsConfig[podcast.podcastId] = await classicApi.fetchData<CommentsConfig>({\n api: 2,\n path:\"config/podcast/\" + podcast.podcastId,\n });\n } catch {\n try {\n this.podcastsCommentsConfig[podcast.podcastId] = await classicApi.fetchData<CommentsConfig>({\n api: 2,\n path: \"config/emission/\" + podcast.emission.emissionId,\n });\n } catch {\n this.podcastsCommentsConfig[podcast.podcastId] = errorCommentsConfig(); \n }\n }\n return this.podcastsCommentsConfig[podcast.podcastId];\n },\n resetPodcastsConfig() {\n this.podcastsCommentsConfig = {};\n },\n updatePodcastsConfig(podcastId: number, config: CommentsConfig) {\n this.podcastsCommentsConfig[podcastId] = config;\n },\n getCanPostCommentAllowed(\n config: CommentsConfig,\n podcast: Podcast,\n ): boolean {\n if (\"NONE\" === config.comments.commentAllowed) {\n return false;\n }\n const rightsLiveOnly =\n \"LIVE_ONLY\" === config.comments.commentAllowed &&\n undefined !== podcast.conferenceId &&\n \"READY_TO_RECORD\" === podcast.processingStatus;\n const rightsLiveRecord =\n \"LIVE_AND_REPLAY\" === config.comments.commentAllowed &&\n undefined !== podcast.conferenceId;\n return (\n \"ALL\" === config.comments.commentAllowed ||\n rightsLiveOnly ||\n rightsLiveRecord\n );\n },\n getCanPostComment(\n config: CommentsConfig | undefined,\n podcast: Podcast | undefined,\n isAuth: boolean,\n ): boolean {\n if (!config || !podcast) {\n return false;\n }\n return (\n this.getCanPostCommentAllowed(config, podcast) &&\n (!config.comments.authRequired ||\n (config.comments.authRequired && isAuth))\n );\n },\n getCanReportAbuse(\n config: CommentsConfig | undefined,\n isAuth: boolean,\n ): boolean {\n if (!config) {\n return false;\n }\n return (\n !config.abuse.authRequired || (config.abuse.authRequired && isAuth)\n );\n },\n\n /*--------------------------------------------------------------------------------------------------------------\n | |\n | Initializing state |\n | |\n --------------------------------------------------------------------------------------------------------------*/\n async initialize() {\n const apiStore = useApiStore();\n const commentUrl = apiStore.commentUrl?? \"https://comments.dev2.saooti.org/\";\n const url = stringHelper.trimChar(commentUrl.replace(\"https://\", \"\"),\"/\");\n const engine = new WebSocketEngine(url);\n await engine.initialize();\n this.commentWebsocketengine = engine;\n this.commentInitialized = true;\n },\n\n /*--------------------------------------------------------------------------------------------------------------\n | |\n | Comments management methods |\n | |\n --------------------------------------------------------------------------------------------------------------*/\n unsubscribeToEvent() {\n if (!this.commentWebsocketengine) {\n return;\n }\n if (\n this.commentPodcastId &&\n this.commentQueueName &&\n this.commentWebsocketengine.isPodcastCommentEventConnected(\n this.commentPodcastId,\n )\n ) {\n this.commentWebsocketengine.unsubscribeToPodcastCommentEventBus(\n this.commentPodcastId,\n this.commentQueueName,\n );\n }\n },\n\n subscribeToEvents() {\n if (!this.commentWebsocketengine) {\n return;\n }\n if (this.commentPodcastId && this.commentQueueName) {\n this.commentWebsocketengine.subscribeToPodcastCommentEventBus(\n this.commentPodcastId,\n this.commentQueueName,\n (message) => {\n this.commentEventToHandleUpdate(message);\n },\n );\n }\n },\n\n async initComments(podcastId: number, organisationId: string) {\n this.unsubscribeToEvent();\n this.commentQueueName =\n \"/topic/comment.\" + organisationId + \".\" + podcastId;\n this.commentPodcastId = podcastId;\n this.subscribeToEvents();\n },\n async unsubscribeComments() {\n this.unsubscribeComments();\n this.commentPodcastId = undefined;\n },\n\n /*--------------------------------------------------------------------------------------------------------------\n | |\n | Managing conference WebSocket Event Received |\n | |\n --------------------------------------------------------------------------------------------------------------*/\n commentEventHandled() {\n this.commentEventToHandle.shift();\n },\n commentEventToHandleUpdate(eventToHandle: {\n comment: CommentPodcast;\n type: string;\n }) {\n if (eventToHandle) {\n this.commentEventToHandle.push(eventToHandle);\n } else {\n this.commentEventToHandle.splice(0, this.commentEventToHandle.length);\n }\n },\n },\n});\n"],"mappings":"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"}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ContractPreviewModal-CFSkXgB4.mjs","names":["_openBlock","_createBlock","_withCtx","_createElementVNode","_toDisplayString","_createElementBlock","_Fragment","_renderList","_createVNode","_sfc_main"],"sources":["../src/components/misc/modal/ContractPreviewModal.vue","../src/components/misc/modal/ContractPreviewModal.vue"],"sourcesContent":["<template>\n <ClassicModal\n id-modal=\"checking-modal\"\n :title-modal=\"t('Contract preview')\"\n @close=\"closePopup\"\n >\n <template #body>\n <h2 class=\"mb-3\">{{ selectedContract?.name }}</h2>\n <div v-for=\"page in thisPages\" :key=\"page\">\n <VuePDF :pdf=\"thisPdf\" :page=\"page\" />\n </div>\n </template>\n <template #footer>\n <div class=\"d-flex justify-content-end\">\n <button class=\"btn btn-primary m-1\" @click=\"onDownloadContract()\">\n {{ t(\"Download\") }}\n </button>\n <button class=\"btn m-1 btn-primary\" @click=\"closePopup\">\n {{ t(\"Close\") }}\n </button>\n </div>\n </template>\n </ClassicModal>\n</template>\n\n<script setup lang=\"ts\">\nimport { useApiStore } from \"../../../stores/ApiStore\";\nimport { useAuthStore } from \"../../../stores/AuthStore\";\nimport { Contract } from \"../../../stores/class/contract/contract\";\n// @ts-expect-error Problème de bibliothèque\nimport { usePDF, VuePDF, PDFDocumentLoadingTask } from \"@tato30/vue-pdf\";\nimport { defineAsyncComponent, ShallowRef, ref, Ref, computed, watch, onMounted } from \"vue\";\nimport { useI18n } from \"vue-i18n\";\nconst ClassicModal = defineAsyncComponent(() => import(\"./ClassicModal.vue\"));\n\n\n//Props \nconst props = defineProps({\n selectedContract: { default: undefined, type: Object as () => Contract },\n})\n\n//Emits\nconst emit = defineEmits([\"download\", \"close\"]);\n\n\n//Data \nconst pdfSource = ref(\"\");\nconst thisPdf: Ref<PDFDocumentLoadingTask> = ref(undefined);\nconst thisPages: Ref< number | ShallowRef<number>> = ref(0);\n\n//Composables\nconst { t } = useI18n();\nconst authStore = useAuthStore();\nconst apiStore = useApiStore();\n\n//Computed\nconst pdfToDisplay = computed(() => {\n if (\"\" !== pdfSource.value) {\n return pdfSource.value;\n }\n return undefined;\n});\n\n//Watch\nwatch(pdfToDisplay, async () => {\n if (undefined === pdfToDisplay.value) {\n return;\n }\n const { pdf, pages } = usePDF(pdfToDisplay.value);\n thisPdf.value = pdf;\n thisPages.value = pages;\n});\n\nonMounted(()=>initSrcContract())\n\n\n//Methods\nfunction closePopup(): void {\n emit(\"close\");\n}\nfunction initSrcContract(): void {\n let source = \"\";\n if (props.selectedContract) {\n source = apiStore.keycloakUrl + \"contract/\" + props.selectedContract.id;\n }\n pdfSource.value = source + \"?access_token=\" + authStore.authParam.accessToken;\n}\nfunction onDownloadContract(): void {\n emit(\"download\", props.selectedContract);\n}\n</script>\n","<template>\n <ClassicModal\n id-modal=\"checking-modal\"\n :title-modal=\"t('Contract preview')\"\n @close=\"closePopup\"\n >\n <template #body>\n <h2 class=\"mb-3\">{{ selectedContract?.name }}</h2>\n <div v-for=\"page in thisPages\" :key=\"page\">\n <VuePDF :pdf=\"thisPdf\" :page=\"page\" />\n </div>\n </template>\n <template #footer>\n <div class=\"d-flex justify-content-end\">\n <button class=\"btn btn-primary m-1\" @click=\"onDownloadContract()\">\n {{ t(\"Download\") }}\n </button>\n <button class=\"btn m-1 btn-primary\" @click=\"closePopup\">\n {{ t(\"Close\") }}\n </button>\n </div>\n </template>\n </ClassicModal>\n</template>\n\n<script setup lang=\"ts\">\nimport { useApiStore } from \"../../../stores/ApiStore\";\nimport { useAuthStore } from \"../../../stores/AuthStore\";\nimport { Contract } from \"../../../stores/class/contract/contract\";\n// @ts-expect-error Problème de bibliothèque\nimport { usePDF, VuePDF, PDFDocumentLoadingTask } from \"@tato30/vue-pdf\";\nimport { defineAsyncComponent, ShallowRef, ref, Ref, computed, watch, onMounted } from \"vue\";\nimport { useI18n } from \"vue-i18n\";\nconst ClassicModal = defineAsyncComponent(() => import(\"./ClassicModal.vue\"));\n\n\n//Props \nconst props = defineProps({\n selectedContract: { default: undefined, type: Object as () => Contract },\n})\n\n//Emits\nconst emit = defineEmits([\"download\", \"close\"]);\n\n\n//Data \nconst pdfSource = ref(\"\");\nconst thisPdf: Ref<PDFDocumentLoadingTask> = ref(undefined);\nconst thisPages: Ref< number | ShallowRef<number>> = ref(0);\n\n//Composables\nconst { t } = useI18n();\nconst authStore = useAuthStore();\nconst apiStore = useApiStore();\n\n//Computed\nconst pdfToDisplay = computed(() => {\n if (\"\" !== pdfSource.value) {\n return pdfSource.value;\n }\n return undefined;\n});\n\n//Watch\nwatch(pdfToDisplay, async () => {\n if (undefined === pdfToDisplay.value) {\n return;\n }\n const { pdf, pages } = usePDF(pdfToDisplay.value);\n thisPdf.value = pdf;\n thisPages.value = pages;\n});\n\nonMounted(()=>initSrcContract())\n\n\n//Methods\nfunction closePopup(): void {\n emit(\"close\");\n}\nfunction initSrcContract(): void {\n let source = \"\";\n if (props.selectedContract) {\n source = apiStore.keycloakUrl + \"contract/\" + props.selectedContract.id;\n }\n pdfSource.value = source + \"?access_token=\" + authStore.authParam.accessToken;\n}\nfunction onDownloadContract(): void {\n emit(\"download\", props.selectedContract);\n}\n</script>\n"],"mappings":";;;;;;;;;;;;;;;EAiCA,MAAM,eAAe,2BAA2B,OAAO,8BAAqB,CAAA,MAAA,MAAA,EAAA,CAAA,CAAA;EAI5E,MAAM,QAAQ;EAKd,MAAM,OAAO;EAIb,MAAM,YAAY,IAAI,EAAE;EACxB,MAAM,UAAuC,IAAI,KAAA,CAAS;EAC1D,MAAM,YAA+C,IAAI,CAAC;EAG1D,MAAM,EAAE,MAAM,QAAQ;EACtB,MAAM,YAAY,aAAa;EAC/B,MAAM,WAAW,YAAY;EAG7B,MAAM,eAAe,eAAe;GAClC,IAAI,OAAO,UAAU,OACnB,OAAO,UAAU;EAGrB,CAAC;EAGD,MAAM,cAAc,YAAY;GAC9B,IAAI,KAAA,MAAc,aAAa,OAC7B;GAEF,MAAM,EAAE,KAAK,UAAU,OAAO,aAAa,KAAK;GAChD,QAAQ,QAAQ;GAChB,UAAU,QAAQ;EACpB,CAAC;EAED,gBAAc,gBAAgB,CAAC;EAI/B,SAAS,aAAmB;GAC1B,KAAK,OAAO;EACd;EACA,SAAS,kBAAwB;GAC/B,IAAI,SAAS;GACb,IAAI,MAAM,kBACR,SAAS,SAAS,cAAc,cAAc,MAAM,iBAAiB;GAEvE,UAAU,QAAQ,SAAS,mBAAmB,UAAU,UAAU;EACpE;EACA,SAAS,qBAA2B;GAClC,KAAK,YAAY,MAAM,gBAAgB;EACzC;;;;;;;;;;;;;;;;;;;;;;;;;;;;AClFU,IAAA,aAAA,EAAA,OAAM,OAAM;AAMX,IAAA,aAAA,EAAA,OAAM,6BAA4B;;CAZ3C,OAAAA,UAAA,GAAAC,YAqBe,OAAA,iBAAA;EApBb,YAAS;EACR,eAAa,OAAA,EAAC,kBAAA;EACd,SAAO,OAAA;;EAEG,MAAIC,cACqC,CAAlDC,mBAAkD,MAAlD,YAAkDC,gBAA9B,OAAA,kBAAkB,IAAI,GAAA,CAAA,IAC1CJ,UAAA,IAAA,GAAAK,mBAEMC,UAAA,MAAAC,WAFc,OAAA,YAAR,SAAI;GAAhB,OAAAP,UAAA,GAAAK,mBAEM,OAAA,EAF0B,KAAK,KAAI,GAAA,CACvCG,YAAsC,OAAA,WAAA;IAA7B,KAAK,OAAA;IAAgB;;;EAGvB,QAAMN,cAQT,CAPNC,mBAOM,OAPN,YAOM,CANJA,mBAES,UAAA;GAFD,OAAM;GAAuB,SAAK,OAAA,OAAA,OAAA,MAAA,WAAE,OAAA,mBAAkB;EACzD,GAAAC,gBAAA,OAAA,EAAC,UAAA,CAAA,GAAA,CAAA,GAEND,mBAES,UAAA;GAFD,OAAM;GAAuB,SAAO,OAAA;EACvC,GAAAC,gBAAA,OAAA,EAAC,OAAA,CAAA,GAAA,CAAA,CAAA,CAAA,CAAA,CAAA"}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ContractPreviewModal-CKL6Rb_V.mjs","names":["_openBlock","_createBlock","_withCtx","_createElementVNode","_toDisplayString","_createElementBlock","_Fragment","_renderList","_createVNode","_sfc_main"],"sources":["../src/components/misc/modal/ContractPreviewModal.vue","../src/components/misc/modal/ContractPreviewModal.vue"],"sourcesContent":["<template>\n <ClassicModal\n id-modal=\"checking-modal\"\n :title-modal=\"t('Contract preview')\"\n @close=\"closePopup\"\n >\n <template #body>\n <h2 class=\"mb-3\">{{ selectedContract?.name }}</h2>\n <div v-for=\"page in thisPages\" :key=\"page\">\n <VuePDF :pdf=\"thisPdf\" :page=\"page\" />\n </div>\n </template>\n <template #footer>\n <div class=\"d-flex justify-content-end\">\n <button class=\"btn btn-primary m-1\" @click=\"onDownloadContract()\">\n {{ t(\"Download\") }}\n </button>\n <button class=\"btn m-1 btn-primary\" @click=\"closePopup\">\n {{ t(\"Close\") }}\n </button>\n </div>\n </template>\n </ClassicModal>\n</template>\n\n<script setup lang=\"ts\">\nimport { useApiStore } from \"../../../stores/ApiStore\";\nimport { useAuthStore } from \"../../../stores/AuthStore\";\nimport { Contract } from \"../../../stores/class/contract/contract\";\n// @ts-expect-error Problème de bibliothèque\nimport { usePDF, VuePDF, PDFDocumentLoadingTask } from \"@tato30/vue-pdf\";\nimport { defineAsyncComponent, ShallowRef, ref, Ref, computed, watch, onMounted } from \"vue\";\nimport { useI18n } from \"vue-i18n\";\nconst ClassicModal = defineAsyncComponent(() => import(\"./ClassicModal.vue\"));\n\n\n//Props \nconst props = defineProps({\n selectedContract: { default: undefined, type: Object as () => Contract },\n})\n\n//Emits\nconst emit = defineEmits([\"download\", \"close\"]);\n\n\n//Data \nconst pdfSource = ref(\"\");\nconst thisPdf: Ref<PDFDocumentLoadingTask> = ref(undefined);\nconst thisPages: Ref< number | ShallowRef<number>> = ref(0);\n\n//Composables\nconst { t } = useI18n();\nconst authStore = useAuthStore();\nconst apiStore = useApiStore();\n\n//Computed\nconst pdfToDisplay = computed(() => {\n if (\"\" !== pdfSource.value) {\n return pdfSource.value;\n }\n return undefined;\n});\n\n//Watch\nwatch(pdfToDisplay, async () => {\n if (undefined === pdfToDisplay.value) {\n return;\n }\n const { pdf, pages } = usePDF(pdfToDisplay.value);\n thisPdf.value = pdf;\n thisPages.value = pages;\n});\n\nonMounted(()=>initSrcContract())\n\n\n//Methods\nfunction closePopup(): void {\n emit(\"close\");\n}\nfunction initSrcContract(): void {\n let source = \"\";\n if (props.selectedContract) {\n source = apiStore.keycloakUrl + \"contract/\" + props.selectedContract.id;\n }\n pdfSource.value = source + \"?access_token=\" + authStore.authParam.accessToken;\n}\nfunction onDownloadContract(): void {\n emit(\"download\", props.selectedContract);\n}\n</script>\n","<template>\n <ClassicModal\n id-modal=\"checking-modal\"\n :title-modal=\"t('Contract preview')\"\n @close=\"closePopup\"\n >\n <template #body>\n <h2 class=\"mb-3\">{{ selectedContract?.name }}</h2>\n <div v-for=\"page in thisPages\" :key=\"page\">\n <VuePDF :pdf=\"thisPdf\" :page=\"page\" />\n </div>\n </template>\n <template #footer>\n <div class=\"d-flex justify-content-end\">\n <button class=\"btn btn-primary m-1\" @click=\"onDownloadContract()\">\n {{ t(\"Download\") }}\n </button>\n <button class=\"btn m-1 btn-primary\" @click=\"closePopup\">\n {{ t(\"Close\") }}\n </button>\n </div>\n </template>\n </ClassicModal>\n</template>\n\n<script setup lang=\"ts\">\nimport { useApiStore } from \"../../../stores/ApiStore\";\nimport { useAuthStore } from \"../../../stores/AuthStore\";\nimport { Contract } from \"../../../stores/class/contract/contract\";\n// @ts-expect-error Problème de bibliothèque\nimport { usePDF, VuePDF, PDFDocumentLoadingTask } from \"@tato30/vue-pdf\";\nimport { defineAsyncComponent, ShallowRef, ref, Ref, computed, watch, onMounted } from \"vue\";\nimport { useI18n } from \"vue-i18n\";\nconst ClassicModal = defineAsyncComponent(() => import(\"./ClassicModal.vue\"));\n\n\n//Props \nconst props = defineProps({\n selectedContract: { default: undefined, type: Object as () => Contract },\n})\n\n//Emits\nconst emit = defineEmits([\"download\", \"close\"]);\n\n\n//Data \nconst pdfSource = ref(\"\");\nconst thisPdf: Ref<PDFDocumentLoadingTask> = ref(undefined);\nconst thisPages: Ref< number | ShallowRef<number>> = ref(0);\n\n//Composables\nconst { t } = useI18n();\nconst authStore = useAuthStore();\nconst apiStore = useApiStore();\n\n//Computed\nconst pdfToDisplay = computed(() => {\n if (\"\" !== pdfSource.value) {\n return pdfSource.value;\n }\n return undefined;\n});\n\n//Watch\nwatch(pdfToDisplay, async () => {\n if (undefined === pdfToDisplay.value) {\n return;\n }\n const { pdf, pages } = usePDF(pdfToDisplay.value);\n thisPdf.value = pdf;\n thisPages.value = pages;\n});\n\nonMounted(()=>initSrcContract())\n\n\n//Methods\nfunction closePopup(): void {\n emit(\"close\");\n}\nfunction initSrcContract(): void {\n let source = \"\";\n if (props.selectedContract) {\n source = apiStore.keycloakUrl + \"contract/\" + props.selectedContract.id;\n }\n pdfSource.value = source + \"?access_token=\" + authStore.authParam.accessToken;\n}\nfunction onDownloadContract(): void {\n emit(\"download\", props.selectedContract);\n}\n</script>\n"],"mappings":";;;;;;;;;;;;;;;EAiCA,MAAM,eAAe,2BAA2B,OAAO,8BAAqB,CAAA,MAAA,MAAA,EAAA,CAAA,CAAA;EAI5E,MAAM,QAAQ;EAKd,MAAM,OAAO;EAIb,MAAM,YAAY,IAAI,EAAE;EACxB,MAAM,UAAuC,IAAI,KAAA,CAAS;EAC1D,MAAM,YAA+C,IAAI,CAAC;EAG1D,MAAM,EAAE,MAAM,QAAQ;EACtB,MAAM,YAAY,aAAa;EAC/B,MAAM,WAAW,YAAY;EAG7B,MAAM,eAAe,eAAe;GAClC,IAAI,OAAO,UAAU,OACnB,OAAO,UAAU;EAGrB,CAAC;EAGD,MAAM,cAAc,YAAY;GAC9B,IAAI,KAAA,MAAc,aAAa,OAC7B;GAEF,MAAM,EAAE,KAAK,UAAU,OAAO,aAAa,KAAK;GAChD,QAAQ,QAAQ;GAChB,UAAU,QAAQ;EACpB,CAAC;EAED,gBAAc,gBAAgB,CAAC;EAI/B,SAAS,aAAmB;GAC1B,KAAK,OAAO;EACd;EACA,SAAS,kBAAwB;GAC/B,IAAI,SAAS;GACb,IAAI,MAAM,kBACR,SAAS,SAAS,cAAc,cAAc,MAAM,iBAAiB;GAEvE,UAAU,QAAQ,SAAS,mBAAmB,UAAU,UAAU;EACpE;EACA,SAAS,qBAA2B;GAClC,KAAK,YAAY,MAAM,gBAAgB;EACzC;;;;;;;;;;;;;;;;;;;;;;;;;;;;AClFU,IAAA,aAAA,EAAA,OAAM,OAAM;AAMX,IAAA,aAAA,EAAA,OAAM,6BAA4B;;CAZ3C,OAAAA,UAAA,GAAAC,YAqBe,OAAA,iBAAA;EApBb,YAAS;EACR,eAAa,OAAA,EAAC,kBAAA;EACd,SAAO,OAAA;;EAEG,MAAIC,cACqC,CAAlDC,mBAAkD,MAAlD,YAAkDC,gBAA9B,OAAA,kBAAkB,IAAI,GAAA,CAAA,IAC1CJ,UAAA,IAAA,GAAAK,mBAEMC,UAAA,MAAAC,WAFc,OAAA,YAAR,SAAI;GAAhB,OAAAP,UAAA,GAAAK,mBAEM,OAAA,EAF0B,KAAK,KAAI,GAAA,CACvCG,YAAsC,OAAA,WAAA;IAA7B,KAAK,OAAA;IAAgB;;;EAGvB,QAAMN,cAQT,CAPNC,mBAOM,OAPN,YAOM,CANJA,mBAES,UAAA;GAFD,OAAM;GAAuB,SAAK,OAAA,OAAA,OAAA,MAAA,WAAE,OAAA,mBAAkB;EACzD,GAAAC,gBAAA,OAAA,EAAC,UAAA,CAAA,GAAA,CAAA,GAEND,mBAES,UAAA;GAFD,OAAM;GAAuB,SAAO,OAAA;EACvC,GAAAC,gBAAA,OAAA,EAAC,OAAA,CAAA,GAAA,CAAA,CAAA,CAAA,CAAA,CAAA"}
@@ -1,4 +1,4 @@
1
- import { O as e, i as t } from "./classicApi-pmODlqv5.mjs";
1
+ import { i as e, k as t } from "./classicApi-CGipMqf7.mjs";
2
2
  import { Fragment as n, computed as r, createBlock as i, createElementBlock as a, createElementVNode as o, createVNode as s, defineAsyncComponent as c, defineComponent as l, onMounted as u, openBlock as d, ref as f, renderList as p, toDisplayString as m, unref as h, watch as g, withCtx as _ } from "vue";
3
3
  import { useI18n as v } from "vue-i18n";
4
4
  import { VuePDF as y, usePDF as b } from "@tato30/vue-pdf";
@@ -11,7 +11,7 @@ var x = { class: "mb-3" }, S = { class: "d-flex justify-content-end" }, C = /* @
11
11
  } },
12
12
  emits: ["download", "close"],
13
13
  setup(l, { emit: C }) {
14
- let w = c(() => import("./ClassicModal-Dl2IdzXZ.mjs").then((e) => e.n)), T = l, E = C, D = f(""), O = f(void 0), k = f(0), { t: A } = v(), j = t(), M = e(), N = r(() => {
14
+ let w = c(() => import("./ClassicModal-Dl2IdzXZ.mjs").then((e) => e.n)), T = l, E = C, D = f(""), O = f(void 0), k = f(0), { t: A } = v(), j = e(), M = t(), N = r(() => {
15
15
  if (D.value !== "") return D.value;
16
16
  });
17
17
  g(N, async () => {
@@ -0,0 +1 @@
1
+ {"version":3,"file":"DateFilter-CGTz76bp.mjs","names":["_openBlock","_createElementBlock","_toDisplayString","_createCommentVNode","_Fragment","_renderList","_createElementVNode","_createVNode","_sfc_main"],"sources":["../src/components/display/filter/DateFilter.vue","../src/components/display/filter/DateFilter.vue"],"sourcesContent":["<template>\n <div class=\"d-flex mt-3 align-items-center flex-wrap\">\n <div v-if=\"isEmission\" class=\"me-2\">\n {{ t(\"Emission with episode published :\") }}\n </div>\n <div v-for=\"index in 2\" :key=\"index\" class=\"d-flex align-items-center\">\n <ClassicCheckbox\n v-model:text-init=\"isActive[index - 1]\"\n class=\"flex-shrink-0\"\n :id-checkbox=\"'search-checkbox' + index\"\n :label=\"1 === index ? t('From the :') : t('To the :')\"\n />\n <ClassicDatePicker\n :id=\"'date-filter-chooser'+index\"\n :label=\"1 === index ? t('From the :') : t('To the :')\"\n :date=\"internDates[index - 1]\"\n class=\"mx-2\"\n @update-date=\"updateDate(index - 1, $event)\"\n />\n </div>\n </div>\n</template>\n\n<script setup lang=\"ts\">\nimport dayjs from \"dayjs\";\nimport ClassicCheckbox from \"../../form/ClassicCheckbox.vue\";\nimport ClassicDatePicker from \"../../form/ClassicDatePicker.vue\";\nimport { ref, watch } from \"vue\";\nimport { useI18n } from \"vue-i18n\";\n\n//Props\nconst props = defineProps({\n isEmission: { default: false, type: Boolean },\n fromDate: { default: undefined, type: String },\n toDate: { default: undefined, type: String },\n})\n\n//Emits\nconst emit = defineEmits([\"updateDates\"]);\n\n//Data\nconst isActive = ref([false, false]);\nconst internDates = ref([\n dayjs().subtract(10, \"days\").startOf(\"day\").toDate(),\n dayjs().endOf(\"day\").toDate(),\n]);\n\n//Composables\nconst { t } = useI18n();\n\n\n//Watch\nwatch(isActive, () => {\n emit(\"updateDates\", {\n from: isActive.value[0]\n ? dayjs(internDates.value[0]).toISOString()\n : undefined,\n to: isActive.value[1]\n ? dayjs(internDates.value[1]).toISOString()\n : undefined,\n });\n}, { deep: true });\n\nwatch(()=>props.toDate, () => {\n isActive.value[1] = undefined !== props.toDate;\n if (props.toDate && props.toDate !== internDates.value[1].toISOString()) {\n internDates.value[1] = dayjs(props.toDate).toDate();\n }\n}, {immediate: true});\nwatch(()=>props.fromDate, () => {\n isActive.value[0] = undefined !== props.fromDate;\n if (props.fromDate && props.fromDate !== internDates.value[0].toISOString()) {\n internDates.value[0] = dayjs(props.fromDate).toDate();\n }\n}, {immediate: true});\nwatch(()=>props.fromDate, () => {\n emit(\"updateDates\", {\n from: isActive.value[0]\n ? dayjs(internDates.value[0]).toISOString()\n : undefined,\n to: isActive.value[1]\n ? dayjs(internDates.value[1]).toISOString()\n : undefined,\n });\n}, {deep: true});\n\n\n//Methods\n\n\nfunction updateDate(index: number, value: Date): void {\n internDates.value[index] = value;\n if (\n (0 === index &&\n dayjs(internDates.value[0]).startOf(\"minute\").toISOString() ===\n dayjs().subtract(10, \"days\").startOf(\"minute\").toISOString()) ||\n (1 === index &&\n dayjs(internDates.value[1]).startOf(\"minute\").toISOString() ===\n dayjs().startOf(\"minute\").toISOString())\n ) {\n return;\n }\n if (isActive.value[index]) {\n emit(\"updateDates\", {\n from:\n 0 === index\n ? dayjs(internDates.value[0]).toISOString()\n : props.fromDate,\n to:\n 1 === index\n ? dayjs(internDates.value[1]).toISOString()\n : props.toDate,\n });\n } else {\n isActive.value[index] = true;\n }\n}\n</script>\n","<template>\n <div class=\"d-flex mt-3 align-items-center flex-wrap\">\n <div v-if=\"isEmission\" class=\"me-2\">\n {{ t(\"Emission with episode published :\") }}\n </div>\n <div v-for=\"index in 2\" :key=\"index\" class=\"d-flex align-items-center\">\n <ClassicCheckbox\n v-model:text-init=\"isActive[index - 1]\"\n class=\"flex-shrink-0\"\n :id-checkbox=\"'search-checkbox' + index\"\n :label=\"1 === index ? t('From the :') : t('To the :')\"\n />\n <ClassicDatePicker\n :id=\"'date-filter-chooser'+index\"\n :label=\"1 === index ? t('From the :') : t('To the :')\"\n :date=\"internDates[index - 1]\"\n class=\"mx-2\"\n @update-date=\"updateDate(index - 1, $event)\"\n />\n </div>\n </div>\n</template>\n\n<script setup lang=\"ts\">\nimport dayjs from \"dayjs\";\nimport ClassicCheckbox from \"../../form/ClassicCheckbox.vue\";\nimport ClassicDatePicker from \"../../form/ClassicDatePicker.vue\";\nimport { ref, watch } from \"vue\";\nimport { useI18n } from \"vue-i18n\";\n\n//Props\nconst props = defineProps({\n isEmission: { default: false, type: Boolean },\n fromDate: { default: undefined, type: String },\n toDate: { default: undefined, type: String },\n})\n\n//Emits\nconst emit = defineEmits([\"updateDates\"]);\n\n//Data\nconst isActive = ref([false, false]);\nconst internDates = ref([\n dayjs().subtract(10, \"days\").startOf(\"day\").toDate(),\n dayjs().endOf(\"day\").toDate(),\n]);\n\n//Composables\nconst { t } = useI18n();\n\n\n//Watch\nwatch(isActive, () => {\n emit(\"updateDates\", {\n from: isActive.value[0]\n ? dayjs(internDates.value[0]).toISOString()\n : undefined,\n to: isActive.value[1]\n ? dayjs(internDates.value[1]).toISOString()\n : undefined,\n });\n}, { deep: true });\n\nwatch(()=>props.toDate, () => {\n isActive.value[1] = undefined !== props.toDate;\n if (props.toDate && props.toDate !== internDates.value[1].toISOString()) {\n internDates.value[1] = dayjs(props.toDate).toDate();\n }\n}, {immediate: true});\nwatch(()=>props.fromDate, () => {\n isActive.value[0] = undefined !== props.fromDate;\n if (props.fromDate && props.fromDate !== internDates.value[0].toISOString()) {\n internDates.value[0] = dayjs(props.fromDate).toDate();\n }\n}, {immediate: true});\nwatch(()=>props.fromDate, () => {\n emit(\"updateDates\", {\n from: isActive.value[0]\n ? dayjs(internDates.value[0]).toISOString()\n : undefined,\n to: isActive.value[1]\n ? dayjs(internDates.value[1]).toISOString()\n : undefined,\n });\n}, {deep: true});\n\n\n//Methods\n\n\nfunction updateDate(index: number, value: Date): void {\n internDates.value[index] = value;\n if (\n (0 === index &&\n dayjs(internDates.value[0]).startOf(\"minute\").toISOString() ===\n dayjs().subtract(10, \"days\").startOf(\"minute\").toISOString()) ||\n (1 === index &&\n dayjs(internDates.value[1]).startOf(\"minute\").toISOString() ===\n dayjs().startOf(\"minute\").toISOString())\n ) {\n return;\n }\n if (isActive.value[index]) {\n emit(\"updateDates\", {\n from:\n 0 === index\n ? dayjs(internDates.value[0]).toISOString()\n : props.fromDate,\n to:\n 1 === index\n ? dayjs(internDates.value[1]).toISOString()\n : props.toDate,\n });\n } else {\n isActive.value[index] = true;\n }\n}\n</script>\n"],"mappings":"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"}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"DateFilter-CfeYepTO.mjs","names":["_openBlock","_createElementBlock","_toDisplayString","_createCommentVNode","_Fragment","_renderList","_createElementVNode","_createVNode","_sfc_main"],"sources":["../src/components/display/filter/DateFilter.vue","../src/components/display/filter/DateFilter.vue"],"sourcesContent":["<template>\n <div class=\"d-flex mt-3 align-items-center flex-wrap\">\n <div v-if=\"isEmission\" class=\"me-2\">\n {{ t(\"Emission with episode published :\") }}\n </div>\n <div v-for=\"index in 2\" :key=\"index\" class=\"d-flex align-items-center\">\n <ClassicCheckbox\n v-model:text-init=\"isActive[index - 1]\"\n class=\"flex-shrink-0\"\n :id-checkbox=\"'search-checkbox' + index\"\n :label=\"1 === index ? t('From the :') : t('To the :')\"\n />\n <ClassicDatePicker\n :id=\"'date-filter-chooser'+index\"\n :label=\"1 === index ? t('From the :') : t('To the :')\"\n :date=\"internDates[index - 1]\"\n class=\"mx-2\"\n @update-date=\"updateDate(index - 1, $event)\"\n />\n </div>\n </div>\n</template>\n\n<script setup lang=\"ts\">\nimport dayjs from \"dayjs\";\nimport ClassicCheckbox from \"../../form/ClassicCheckbox.vue\";\nimport ClassicDatePicker from \"../../form/ClassicDatePicker.vue\";\nimport { ref, watch } from \"vue\";\nimport { useI18n } from \"vue-i18n\";\n\n//Props\nconst props = defineProps({\n isEmission: { default: false, type: Boolean },\n fromDate: { default: undefined, type: String },\n toDate: { default: undefined, type: String },\n})\n\n//Emits\nconst emit = defineEmits([\"updateDates\"]);\n\n//Data\nconst isActive = ref([false, false]);\nconst internDates = ref([\n dayjs().subtract(10, \"days\").startOf(\"day\").toDate(),\n dayjs().endOf(\"day\").toDate(),\n]);\n\n//Composables\nconst { t } = useI18n();\n\n\n//Watch\nwatch(isActive, () => {\n emit(\"updateDates\", {\n from: isActive.value[0]\n ? dayjs(internDates.value[0]).toISOString()\n : undefined,\n to: isActive.value[1]\n ? dayjs(internDates.value[1]).toISOString()\n : undefined,\n });\n}, { deep: true });\n\nwatch(()=>props.toDate, () => {\n isActive.value[1] = undefined !== props.toDate;\n if (props.toDate && props.toDate !== internDates.value[1].toISOString()) {\n internDates.value[1] = dayjs(props.toDate).toDate();\n }\n}, {immediate: true});\nwatch(()=>props.fromDate, () => {\n isActive.value[0] = undefined !== props.fromDate;\n if (props.fromDate && props.fromDate !== internDates.value[0].toISOString()) {\n internDates.value[0] = dayjs(props.fromDate).toDate();\n }\n}, {immediate: true});\nwatch(()=>props.fromDate, () => {\n emit(\"updateDates\", {\n from: isActive.value[0]\n ? dayjs(internDates.value[0]).toISOString()\n : undefined,\n to: isActive.value[1]\n ? dayjs(internDates.value[1]).toISOString()\n : undefined,\n });\n}, {deep: true});\n\n\n//Methods\n\n\nfunction updateDate(index: number, value: Date): void {\n internDates.value[index] = value;\n if (\n (0 === index &&\n dayjs(internDates.value[0]).startOf(\"minute\").toISOString() ===\n dayjs().subtract(10, \"days\").startOf(\"minute\").toISOString()) ||\n (1 === index &&\n dayjs(internDates.value[1]).startOf(\"minute\").toISOString() ===\n dayjs().startOf(\"minute\").toISOString())\n ) {\n return;\n }\n if (isActive.value[index]) {\n emit(\"updateDates\", {\n from:\n 0 === index\n ? dayjs(internDates.value[0]).toISOString()\n : props.fromDate,\n to:\n 1 === index\n ? dayjs(internDates.value[1]).toISOString()\n : props.toDate,\n });\n } else {\n isActive.value[index] = true;\n }\n}\n</script>\n","<template>\n <div class=\"d-flex mt-3 align-items-center flex-wrap\">\n <div v-if=\"isEmission\" class=\"me-2\">\n {{ t(\"Emission with episode published :\") }}\n </div>\n <div v-for=\"index in 2\" :key=\"index\" class=\"d-flex align-items-center\">\n <ClassicCheckbox\n v-model:text-init=\"isActive[index - 1]\"\n class=\"flex-shrink-0\"\n :id-checkbox=\"'search-checkbox' + index\"\n :label=\"1 === index ? t('From the :') : t('To the :')\"\n />\n <ClassicDatePicker\n :id=\"'date-filter-chooser'+index\"\n :label=\"1 === index ? t('From the :') : t('To the :')\"\n :date=\"internDates[index - 1]\"\n class=\"mx-2\"\n @update-date=\"updateDate(index - 1, $event)\"\n />\n </div>\n </div>\n</template>\n\n<script setup lang=\"ts\">\nimport dayjs from \"dayjs\";\nimport ClassicCheckbox from \"../../form/ClassicCheckbox.vue\";\nimport ClassicDatePicker from \"../../form/ClassicDatePicker.vue\";\nimport { ref, watch } from \"vue\";\nimport { useI18n } from \"vue-i18n\";\n\n//Props\nconst props = defineProps({\n isEmission: { default: false, type: Boolean },\n fromDate: { default: undefined, type: String },\n toDate: { default: undefined, type: String },\n})\n\n//Emits\nconst emit = defineEmits([\"updateDates\"]);\n\n//Data\nconst isActive = ref([false, false]);\nconst internDates = ref([\n dayjs().subtract(10, \"days\").startOf(\"day\").toDate(),\n dayjs().endOf(\"day\").toDate(),\n]);\n\n//Composables\nconst { t } = useI18n();\n\n\n//Watch\nwatch(isActive, () => {\n emit(\"updateDates\", {\n from: isActive.value[0]\n ? dayjs(internDates.value[0]).toISOString()\n : undefined,\n to: isActive.value[1]\n ? dayjs(internDates.value[1]).toISOString()\n : undefined,\n });\n}, { deep: true });\n\nwatch(()=>props.toDate, () => {\n isActive.value[1] = undefined !== props.toDate;\n if (props.toDate && props.toDate !== internDates.value[1].toISOString()) {\n internDates.value[1] = dayjs(props.toDate).toDate();\n }\n}, {immediate: true});\nwatch(()=>props.fromDate, () => {\n isActive.value[0] = undefined !== props.fromDate;\n if (props.fromDate && props.fromDate !== internDates.value[0].toISOString()) {\n internDates.value[0] = dayjs(props.fromDate).toDate();\n }\n}, {immediate: true});\nwatch(()=>props.fromDate, () => {\n emit(\"updateDates\", {\n from: isActive.value[0]\n ? dayjs(internDates.value[0]).toISOString()\n : undefined,\n to: isActive.value[1]\n ? dayjs(internDates.value[1]).toISOString()\n : undefined,\n });\n}, {deep: true});\n\n\n//Methods\n\n\nfunction updateDate(index: number, value: Date): void {\n internDates.value[index] = value;\n if (\n (0 === index &&\n dayjs(internDates.value[0]).startOf(\"minute\").toISOString() ===\n dayjs().subtract(10, \"days\").startOf(\"minute\").toISOString()) ||\n (1 === index &&\n dayjs(internDates.value[1]).startOf(\"minute\").toISOString() ===\n dayjs().startOf(\"minute\").toISOString())\n ) {\n return;\n }\n if (isActive.value[index]) {\n emit(\"updateDates\", {\n from:\n 0 === index\n ? dayjs(internDates.value[0]).toISOString()\n : props.fromDate,\n to:\n 1 === index\n ? dayjs(internDates.value[1]).toISOString()\n : props.toDate,\n });\n } else {\n isActive.value[index] = true;\n }\n}\n</script>\n"],"mappings":"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"}