@saooti/octopus-sdk 42.3.0 → 42.3.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (615) hide show
  1. package/dist/{AdvancedSearch-DEh3iiuK.mjs → AdvancedSearch-BTbYmlMm.mjs} +8 -8
  2. package/dist/AdvancedSearch-C6BJzvGT.mjs.map +1 -0
  3. package/dist/AdvancedSearch-ChnJq71j.mjs.map +1 -0
  4. package/dist/AdvancedSearch-ChtUj3vS.mjs.map +1 -0
  5. package/dist/AdvancedSearch-D-9o5KzI.mjs.map +1 -0
  6. package/dist/AdvancedSearch-DH5YTENK.mjs.map +1 -0
  7. package/dist/AdvancedSearch-DN3WFduh.mjs.map +1 -0
  8. package/dist/AdvancedSearch-EpYd6K3d.mjs.map +1 -0
  9. package/dist/AdvancedSearch-PRJyRSID.mjs.map +1 -0
  10. package/dist/AdvancedSearch-_E2nwQ-A.mjs.map +1 -0
  11. package/dist/AdvancedSearch-cLjakm-6.mjs.map +1 -0
  12. package/dist/AdvancedSearch-k-fQfSBk.mjs.map +1 -0
  13. package/dist/AdvancedSearch-zFJq-WlO.mjs.map +1 -0
  14. package/dist/CategoryChooser-CSUjIA0D.mjs.map +1 -0
  15. package/dist/{CategoryChooser-CeF4n-nw.mjs → CategoryChooser-fAUMJNHu.mjs} +1 -1
  16. package/dist/CategoryFilter-B0S_nCvS.mjs.map +1 -0
  17. package/dist/CategoryFilter-BVrLO_pV.mjs.map +1 -0
  18. package/dist/{CategoryFilter-Djmal5bY.mjs → CategoryFilter-CsYCvEnz.mjs} +3 -3
  19. package/dist/CategoryFilter-DVwCpHLx.mjs.map +1 -0
  20. package/dist/CategoryList-B_9GG6Z9.mjs.map +1 -0
  21. package/dist/{CategoryList-Dksp79Lm.mjs → CategoryList-CDoIfrDw.mjs} +2 -2
  22. package/dist/CategoryList-CUae_phb.mjs.map +1 -0
  23. package/dist/CategoryList-DxR0fpKd.mjs.map +1 -0
  24. package/dist/CategoryPage-C7aKDtgs.mjs.map +1 -0
  25. package/dist/{CategoryPage-DC8fMny_.mjs → CategoryPage-Cl5Yuxnu.mjs} +2 -2
  26. package/dist/CategoryPage-DlnAp05t.mjs.map +1 -0
  27. package/dist/CategoryPage-Dlq5XQBS.mjs.map +1 -0
  28. package/dist/{CategorySearchFilter-KVYBscdd.mjs → CategorySearchFilter-Cce5zxZB.mjs} +1 -1
  29. package/dist/CategorySearchFilter-EULpSE2e.mjs.map +1 -0
  30. package/dist/ChapteringModal-BplEGZj2.mjs.map +1 -0
  31. package/dist/ChapteringModal-C9yuW_IU.mjs.map +1 -0
  32. package/dist/{ChapteringModal-Be9FF1yz.mjs → ChapteringModal-DiiVSG7s.mjs} +1 -1
  33. package/dist/{CheckIdentityModal-nMszYOsW.mjs → CheckIdentityModal-BrnYeGdk.mjs} +3 -3
  34. package/dist/CheckIdentityModal-BtGdsv2v.mjs.map +1 -0
  35. package/dist/CheckIdentityModal-CpRO7ehH.mjs.map +1 -0
  36. package/dist/CheckIdentityModal-Cry9ra4J.mjs.map +1 -0
  37. package/dist/ClassicDatePicker--q1yYb-S.mjs.map +1 -0
  38. package/dist/ClassicDatePicker-4ouU5ov9.mjs.map +1 -0
  39. package/dist/ClassicDatePicker-B8bI9QfF.mjs.map +1 -0
  40. package/dist/ClassicDatePicker-BTJWityQ.mjs +186 -0
  41. package/dist/ClassicDatePicker-CChR9LBd.mjs.map +1 -0
  42. package/dist/ClassicDatePicker-CopJVkF0.mjs.map +1 -0
  43. package/dist/ClassicDatePicker-DgcJCevR.mjs.map +1 -0
  44. package/dist/ClassicDatePicker-NxGNQxHE.mjs.map +1 -0
  45. package/dist/ClassicDatePicker-dgdGXcRk.mjs.map +1 -0
  46. package/dist/{ClassicEmojiPicker-B4TAlZvo.mjs → ClassicEmojiPicker-C0gm-DA2.mjs} +1 -1
  47. package/dist/ClassicEmojiPicker-CJZD8H7L.mjs.map +1 -0
  48. package/dist/{ClassicHelpButton-DT7T8tMe.mjs → ClassicHelpButton-BnRLmYuh.mjs} +1 -1
  49. package/dist/ClassicHelpButton-Qb4AwvWI.mjs.map +1 -0
  50. package/dist/{ClassicInputText-DJ5kURGM.mjs → ClassicInputText-YsntJkHk.mjs} +1 -1
  51. package/dist/ClassicInputText-npkVSUoH.mjs.map +1 -0
  52. package/dist/ClassicMultiselect-2I2K-o4R.mjs.map +1 -0
  53. package/dist/{ClassicMultiselect-CDHdJjjV.mjs → ClassicMultiselect-C0yzVQ8Y.mjs} +1 -1
  54. package/dist/{ClassicNotifications-DEpVRRHg.mjs → ClassicNotifications-8CVfGSqL.mjs} +1 -1
  55. package/dist/ClassicNotifications-BFQ-R6kO.mjs.map +1 -0
  56. package/dist/ClassicNotifications-DR0PM1Xp.mjs.map +1 -0
  57. package/dist/{ClassicPopover-DWR50Nxi.mjs → ClassicPopover-BUb-1WMB.mjs} +1 -1
  58. package/dist/ClassicPopover-BhMY2SMo.mjs.map +1 -0
  59. package/dist/ClipboardModal-B_SZ6jDk.mjs.map +1 -0
  60. package/dist/{ClipboardModal-BUKwZYOf.mjs → ClipboardModal-ByVXPcKD.mjs} +1 -1
  61. package/dist/ClipboardModal-DjrZQRtY.mjs.map +1 -0
  62. package/dist/{CommentInput-US8ZtNj1.mjs → CommentInput-CrRstzua.mjs} +4 -4
  63. package/dist/CommentInput-DPMj47uE.mjs.map +1 -0
  64. package/dist/CommentInput-DbhOyi7c.mjs.map +1 -0
  65. package/dist/CommentInput-I97yysBW.mjs.map +1 -0
  66. package/dist/CommentItem-AItzrTBi.mjs.map +1 -0
  67. package/dist/CommentItem-B7vvJwZI.mjs.map +1 -0
  68. package/dist/{CommentItem-CqWZPmbj.mjs → CommentItem-BYU67TIu.mjs} +4 -4
  69. package/dist/CommentItem-CvNbH7Hf.mjs.map +1 -0
  70. package/dist/CommentList-BTyyCcX4.mjs.map +1 -0
  71. package/dist/CommentList-CWrf45Di.mjs.map +1 -0
  72. package/dist/CommentList-DP6wk4PD.mjs.map +1 -0
  73. package/dist/{CommentList-CSYpqgNM.mjs → CommentList-snIIudVC.mjs} +2 -2
  74. package/dist/CommentMoreActions-BNajG7wk.mjs.map +1 -0
  75. package/dist/CommentMoreActions-C1l4Y_HY.mjs.map +1 -0
  76. package/dist/CommentMoreActions-DPbJnEEV.mjs.map +1 -0
  77. package/dist/{CommentMoreActions-T5RN6BGq.mjs → CommentMoreActions-y202UxL5.mjs} +3 -3
  78. package/dist/{CommentName-DslRo9jg.mjs → CommentName-CHBlEM7I.mjs} +3 -3
  79. package/dist/CommentName-D5HN8bGE.mjs.map +1 -0
  80. package/dist/CommentName-DMom_kwo.mjs.map +1 -0
  81. package/dist/CommentName-OJrxjSxu.mjs.map +1 -0
  82. package/dist/CommentParentInfo-DWVF5Ewh.mjs.map +1 -0
  83. package/dist/CommentParentInfo-Do3IlO95.mjs.map +1 -0
  84. package/dist/{CommentParentInfo-DMX3nkCb.mjs → CommentParentInfo-DoEeaQGU.mjs} +2 -2
  85. package/dist/CommentParentInfo-DqHfDpKs.mjs.map +1 -0
  86. package/dist/{CommentPlayer-D3JEVPKX.mjs → CommentPlayer-B4MXG-gG.mjs} +2 -2
  87. package/dist/CommentPlayer-B67saxPf.mjs.map +1 -0
  88. package/dist/CommentPlayer-BUtEvkoV.mjs.map +1 -0
  89. package/dist/CommentSection-BIZMRePu.mjs.map +1 -0
  90. package/dist/CommentSection-CSehg6MD.mjs.map +1 -0
  91. package/dist/{CommentSection-Brn0VQcc.mjs → CommentSection-DZf04NxT.mjs} +3 -3
  92. package/dist/CommentSection-MDKioQWf.mjs.map +1 -0
  93. package/dist/CommentStore-BBm8MjxW.mjs.map +1 -0
  94. package/dist/{CommentStore-hPTYaDGr.mjs → CommentStore-CysGkBHp.mjs} +8 -8
  95. package/dist/CommentStore-F5MVSrDw.mjs.map +1 -0
  96. package/dist/ContractPreviewModal-CFSkXgB4.mjs.map +1 -0
  97. package/dist/ContractPreviewModal-CKL6Rb_V.mjs.map +1 -0
  98. package/dist/{ContractPreviewModal-48Je4Wuy.mjs → ContractPreviewModal-Dd-1KasR.mjs} +2 -2
  99. package/dist/DateFilter-BwYSwGc-.mjs.map +1 -0
  100. package/dist/DateFilter-CGTz76bp.mjs.map +1 -0
  101. package/dist/DateFilter-CfeYepTO.mjs.map +1 -0
  102. package/dist/{DateFilter-DztHuPm8.mjs → DateFilter-Cnb_S8Up.mjs} +1 -1
  103. package/dist/DateFilter-DFw66D2V.mjs.map +1 -0
  104. package/dist/DateFilter-DMOUMeCh.mjs.map +1 -0
  105. package/dist/DateFilter-DdbvVu9Q.mjs.map +1 -0
  106. package/dist/DateFilter-Dr1nRuvZ.mjs.map +1 -0
  107. package/dist/DateFilter-QGaXHkcu.mjs.map +1 -0
  108. package/dist/{DownloadPodcastButton-BYWuLoNg.mjs → DownloadPodcastButton-6HtR84aE.mjs} +2 -2
  109. package/dist/DownloadPodcastButton-D2qeKDPT.mjs.map +1 -0
  110. package/dist/DownloadPodcastButton-Tr_Y4qMu.mjs.map +1 -0
  111. package/dist/{EditCommentModal-DacFxzLx.mjs → EditCommentModal-BQ03B6LC.mjs} +2 -2
  112. package/dist/EditCommentModal-BZitN0Ir.mjs.map +1 -0
  113. package/dist/EditCommentModal-CcmCx_My.mjs.map +1 -0
  114. package/dist/EditCommentModal-sj0yXd7-.mjs.map +1 -0
  115. package/dist/EmissionGroupChooser--428fdeK.mjs.map +1 -0
  116. package/dist/EmissionGroupChooser-BJCKekKM.mjs.map +1 -0
  117. package/dist/EmissionGroupChooser-ByqGmsGw.mjs.map +1 -0
  118. package/dist/EmissionGroupChooser-Cb3CF0uc.mjs.map +1 -0
  119. package/dist/EmissionGroupChooser-D4vMQH8g.mjs.map +1 -0
  120. package/dist/{EmissionGroupChooser-KmzQjp7d.mjs → EmissionGroupChooser-De_IpEhW.mjs} +2 -2
  121. package/dist/EmissionInlineList-CdHQBjfR.mjs.map +1 -0
  122. package/dist/EmissionInlineList-CnA0d_k2.mjs.map +1 -0
  123. package/dist/EmissionInlineList-DLUvPBNl.mjs.map +1 -0
  124. package/dist/{EmissionInlineList-BoEIAbLu.mjs → EmissionInlineList-dlb4gUOP.mjs} +5 -5
  125. package/dist/EmissionItem-B39oFnXF.mjs.map +1 -0
  126. package/dist/EmissionItem-BkPLFhAo.mjs.map +1 -0
  127. package/dist/EmissionItem-CjAUdLb7.mjs.map +1 -0
  128. package/dist/{EmissionItem-BeQWw-UT.mjs → EmissionItem-Dm_IGNkw.mjs} +4 -4
  129. package/dist/EmissionList-B0UntYdC.mjs.map +1 -0
  130. package/dist/EmissionList-BQSI4xbi.mjs.map +1 -0
  131. package/dist/{EmissionList-DB7O1nj5.mjs → EmissionList-C4JEYLyK.mjs} +4 -4
  132. package/dist/EmissionList-C7lQBdlW.mjs.map +1 -0
  133. package/dist/EmissionPage-BF6s2ySo.mjs.map +1 -0
  134. package/dist/EmissionPage-B_-nDP5x.mjs.map +1 -0
  135. package/dist/EmissionPage-C-ESprrZ.mjs.map +1 -0
  136. package/dist/{EmissionPage-CNYJ1Puo.mjs → EmissionPage-C4XUdzzm.mjs} +10 -10
  137. package/dist/EmissionPage-CPXcNHGS.mjs.map +1 -0
  138. package/dist/EmissionPage-EMgXCVhK.mjs.map +1 -0
  139. package/dist/EmissionPage-mXbUqOh9.mjs.map +1 -0
  140. package/dist/{EmissionPlayerItem-S_yqupad.mjs → EmissionPlayerItem-BLIdolRe.mjs} +3 -3
  141. package/dist/EmissionPlayerItem-C27zJBhY.mjs.map +1 -0
  142. package/dist/EmissionPlayerItem-C3fkgEaL.mjs.map +1 -0
  143. package/dist/EmissionPlayerItem-DxXG20G1.mjs.map +1 -0
  144. package/dist/EmissionPresentationItem-BNnDSWGQ.mjs.map +1 -0
  145. package/dist/EmissionPresentationItem-BeETY65I.mjs.map +1 -0
  146. package/dist/{EmissionPresentationItem-kJgKN7Ju.mjs → EmissionPresentationItem-DYDwfqwp.mjs} +1 -1
  147. package/dist/EmissionPresentationList-BD7rIUok.mjs.map +1 -0
  148. package/dist/EmissionPresentationList-CGMyY_iu.mjs.map +1 -0
  149. package/dist/{EmissionPresentationList-Bg9X3CJP.mjs → EmissionPresentationList-Cxi7QnIs.mjs} +3 -3
  150. package/dist/EmissionsPage-4To0aRBA.mjs.map +1 -0
  151. package/dist/{EmissionsPage-BLpGH_PR.mjs → EmissionsPage-B0bXLncg.mjs} +5 -5
  152. package/dist/EmissionsPage-BIspB5uq.mjs.map +1 -0
  153. package/dist/EmissionsPage-BhUjdpEu.mjs.map +1 -0
  154. package/dist/EmissionsPage-Bn1R_ipo.mjs.map +1 -0
  155. package/dist/EmissionsPage-CNXwdJuV.mjs.map +1 -0
  156. package/dist/EmissionsPage-CPmhIbFf.mjs.map +1 -0
  157. package/dist/EmissionsPage-Cgzvn2h8.mjs.map +1 -0
  158. package/dist/EmissionsPage-D09zTpGb.mjs.map +1 -0
  159. package/dist/EmissionsPage-Dl7qaQT1.mjs.map +1 -0
  160. package/dist/EmissionsPage-DyleZtu_.mjs.map +1 -0
  161. package/dist/EmissionsPage-OVpc7k1Z.mjs.map +1 -0
  162. package/dist/EmissionsPage-wjKBLFM6.mjs.map +1 -0
  163. package/dist/Error403Page-B6Q7ijY3.mjs.map +1 -0
  164. package/dist/Error403Page-DF08mgCL.mjs.map +1 -0
  165. package/dist/{Error403Page-BB69doEn.mjs → Error403Page-DVmC5AOd.mjs} +2 -2
  166. package/dist/FooterGarSection-BWahCyz0.mjs.map +1 -0
  167. package/dist/{FooterGarSection-B9nsnpfF.mjs → FooterGarSection-BqPggI3o.mjs} +3 -3
  168. package/dist/FooterGarSection-CN8ZfO7e.mjs.map +1 -0
  169. package/dist/FooterSection-BOjr1LRb.mjs.map +1 -0
  170. package/dist/{FooterSection-DdGtlbk-.mjs → FooterSection-C5FEIJlU.mjs} +11 -11
  171. package/dist/FooterSection-nVRzKSYN.mjs.map +1 -0
  172. package/dist/HomeDropdown-3fl_xltN.mjs.map +1 -0
  173. package/dist/HomeDropdown-DGNkJhG2.mjs.map +1 -0
  174. package/dist/{HomeDropdown-BqwwLStt.mjs → HomeDropdown-Fx6kQAuH.mjs} +3 -3
  175. package/dist/HomeDropdown-PvmOUzYb.mjs.map +1 -0
  176. package/dist/{HomePage-JOUAKKfP.mjs → HomePage-7PT7HmHs.mjs} +3 -3
  177. package/dist/HomePage-D0Pbu_h1.mjs.map +1 -0
  178. package/dist/HomePage-D6_D1f33.mjs.map +1 -0
  179. package/dist/HomePage-ry0NfX1M.mjs.map +1 -0
  180. package/dist/InlineRubriqueList-BdpS1pVc.mjs.map +1 -0
  181. package/dist/InlineRubriqueList-BlcjQ4wR.mjs.map +1 -0
  182. package/dist/{InlineRubriqueList-BzcHKvM4.mjs → InlineRubriqueList-ezgexR-O.mjs} +1 -1
  183. package/dist/{LikeSection-MmbHMunb.mjs → LikeSection-CGu4yOCr.mjs} +3 -3
  184. package/dist/LikeSection-Cqj4y7qZ.mjs.map +1 -0
  185. package/dist/LikeSection-D95IMsZE.mjs.map +1 -0
  186. package/dist/LikeSection-HJla-zgI.mjs.map +1 -0
  187. package/dist/{ListPaginate-5uRK_QKJ.mjs → ListPaginate-BPdnBcpe.mjs} +2 -2
  188. package/dist/ListPaginate-DYzRnp-2.mjs.map +1 -0
  189. package/dist/ListPaginate-DyR7HLIc.mjs.map +1 -0
  190. package/dist/LiveHorizontalList-Bqe351Ut.mjs.map +1 -0
  191. package/dist/{LiveHorizontalList-CpoIRd4C.mjs → LiveHorizontalList-Bs-Rz5Ws.mjs} +3 -3
  192. package/dist/LiveHorizontalList-CaujYMT3.mjs.map +1 -0
  193. package/dist/LiveHorizontalList-DhsOZPT3.mjs.map +1 -0
  194. package/dist/{LiveList-DYFBrNgg.mjs → LiveList-BVOEnAEc.mjs} +5 -5
  195. package/dist/LiveList-DMB3FxUM.mjs.map +1 -0
  196. package/dist/LiveList-DOi4GV1x.mjs.map +1 -0
  197. package/dist/LiveList-Dh1mJVs7.mjs.map +1 -0
  198. package/dist/LivesPage-BvDLscOE.mjs.map +1 -0
  199. package/dist/{LivesPage-FSkmBdVw.mjs → LivesPage-DG5VY4HF.mjs} +2 -2
  200. package/dist/LivesPage-DmSlg7iH.mjs.map +1 -0
  201. package/dist/LivesPage-yy_5pI8R.mjs.map +1 -0
  202. package/dist/MapPage-3n-rigBK.mjs.map +1 -0
  203. package/dist/MapPage-5GwE8Z4E.mjs.map +1 -0
  204. package/dist/{MapPage-DpBt2gWF.mjs → MapPage-bIe2a9O1.mjs} +2 -2
  205. package/dist/MobileMenu-BSos17v3.mjs.map +1 -0
  206. package/dist/{MobileMenu-CjNMfHUP.mjs → MobileMenu-BZ5nOrYw.mjs} +5 -5
  207. package/dist/MobileMenu-C6W37oJg.mjs.map +1 -0
  208. package/dist/MobileMenu-K0rNwrW1.mjs.map +1 -0
  209. package/dist/NewsletterModal-CFGXBtID.mjs.map +1 -0
  210. package/dist/NewsletterModal-CZNwpCK5.mjs.map +1 -0
  211. package/dist/{NewsletterModal-BurqHTFc.mjs → NewsletterModal-DZk0mSVC.mjs} +1 -1
  212. package/dist/OctopusMultiselect-CFUGyzeM.mjs.map +1 -0
  213. package/dist/OctopusMultiselect-Cn1lqbQo.mjs.map +1 -0
  214. package/dist/OctopusMultiselect-esu8BY0J.mjs.map +1 -0
  215. package/dist/{OctopusMultiselect-C8qljiaH.mjs → OctopusMultiselect-noQPQMZQ.mjs} +7 -5
  216. package/dist/OrganisationChooser-BKfXLT4G.mjs.map +1 -0
  217. package/dist/{OrganisationChooser-Dx-OT7MW.mjs → OrganisationChooser-C48cWqbY.mjs} +3 -3
  218. package/dist/OrganisationChooser-PpO7MD7f.mjs.map +1 -0
  219. package/dist/OrganisationChooser-Y_jO6oXv.mjs.map +1 -0
  220. package/dist/{OrganisationChooserLight-BF5fT5pV.mjs → OrganisationChooserLight-Bcltbv-v.mjs} +1 -1
  221. package/dist/OrganisationChooserLight-Dh7wMH40.mjs.map +1 -0
  222. package/dist/OrganisationChooserLight-Dx_rkvpP.mjs.map +1 -0
  223. package/dist/PageNotFound-DeW-K_hL.mjs.map +1 -0
  224. package/dist/{PageNotFound-Cj-3Gv8T.mjs → PageNotFound-DogaoIFX.mjs} +2 -2
  225. package/dist/PageNotFound-gRuMWYCp.mjs.map +1 -0
  226. package/dist/ParticipantInlineList-CY_s6aJm.mjs.map +1 -0
  227. package/dist/{ParticipantInlineList-DEWqM1Io.mjs → ParticipantInlineList-D9pkOlvP.mjs} +4 -4
  228. package/dist/ParticipantInlineList-DSatB75C.mjs.map +1 -0
  229. package/dist/ParticipantItem-BG7yqRvD.mjs.map +1 -0
  230. package/dist/ParticipantItem-BTK25HID.mjs.map +1 -0
  231. package/dist/{ParticipantItem-BZAUIeSR.mjs → ParticipantItem-CbHOfVon.mjs} +3 -3
  232. package/dist/ParticipantPage-B4VnV8Yc.mjs.map +1 -0
  233. package/dist/ParticipantPage-B6Gzg6ul.mjs.map +1 -0
  234. package/dist/ParticipantPage-CNRNKTtC.mjs.map +1 -0
  235. package/dist/ParticipantPage-CpkhQjN2.mjs.map +1 -0
  236. package/dist/ParticipantPage-D61CCIqy.mjs.map +1 -0
  237. package/dist/ParticipantPage-Dh4JJCmJ.mjs.map +1 -0
  238. package/dist/{ParticipantPage-CzaHoWij.mjs → ParticipantPage-nTp2MbgB.mjs} +6 -6
  239. package/dist/{ParticipantsPage-goxJZQZZ.mjs → ParticipantsPage-Bbz9lQ_0.mjs} +6 -6
  240. package/dist/ParticipantsPage-COaQrVID.mjs.map +1 -0
  241. package/dist/ParticipantsPage-DRVVU7qp.mjs.map +1 -0
  242. package/dist/ParticipantsPage-DhKCWwKE.mjs.map +1 -0
  243. package/dist/{PlayerAnonymousModal-By96BtpA.mjs → PlayerAnonymousModal-B1iZ34O8.mjs} +2 -2
  244. package/dist/PlayerAnonymousModal-CBZStK-L.mjs.map +1 -0
  245. package/dist/PlayerAnonymousModal-Cq6-Dn49.mjs.map +1 -0
  246. package/dist/PlayerAnonymousModal-Cu2GGoAh.mjs.map +1 -0
  247. package/dist/PlayerAnonymousModal-DiXWtNmM.mjs.map +1 -0
  248. package/dist/PlayerAnonymousModal-DrQvDDym.mjs.map +1 -0
  249. package/dist/PlayerCompact-B9oeGx_g.mjs.map +1 -0
  250. package/dist/PlayerCompact-DtMginEc.mjs.map +1 -0
  251. package/dist/PlayerCompact-E8ydrdJ4.mjs.map +1 -0
  252. package/dist/{PlayerCompact-CjU8xxVH.mjs → PlayerCompact-_39FpkWo.mjs} +4 -4
  253. package/dist/PlayerComponent-4Wj5XlrS.mjs.map +1 -0
  254. package/dist/{PlayerComponent-B58O6U6i.mjs → PlayerComponent-B1RsmSf0.mjs} +47 -47
  255. package/dist/PlayerComponent-BGVzhVz9.mjs.map +1 -0
  256. package/dist/PlayerComponent-BIshvul2.mjs.map +1 -0
  257. package/dist/PlayerComponent-BO7wUL2M.mjs.map +1 -0
  258. package/dist/PlayerComponent-C222I0kT.mjs.map +1 -0
  259. package/dist/PlayerComponent-CjNZNKKz.mjs.map +1 -0
  260. package/dist/PlayerComponent-UG_c6_yr.mjs.map +1 -0
  261. package/dist/{PlayerLarge-CWL5SDzD.mjs → PlayerLarge-BxdyYLOt.mjs} +5 -5
  262. package/dist/PlayerLarge-CPUAoR9q.mjs.map +1 -0
  263. package/dist/PlayerLarge-DP7RsA83.mjs.map +1 -0
  264. package/dist/PlayerLarge-DpiFO7gk.mjs.map +1 -0
  265. package/dist/PlayerLarge-Dwtmu4gz.mjs.map +1 -0
  266. package/dist/PlayerLarge-HvRHSw4j.mjs.map +1 -0
  267. package/dist/PlayerLarge-X5uYCbyS.mjs.map +1 -0
  268. package/dist/PlayerLarge-qwr3iWSX.mjs.map +1 -0
  269. package/dist/{PlayerPlayButton-DmvV2YDi.mjs → PlayerPlayButton-BIsfgj0d.mjs} +4 -4
  270. package/dist/PlayerPlayButton-BQ4zJOrE.mjs.map +1 -0
  271. package/dist/PlayerPlayButton-kh4ZCdWh.mjs.map +1 -0
  272. package/dist/PlayerProgressBar-C-I3dk3l.mjs.map +1 -0
  273. package/dist/PlayerProgressBar-Dr-aFk7O.mjs.map +1 -0
  274. package/dist/{PlayerProgressBar-Cl_mF4nD.mjs → PlayerProgressBar-dSschgez.mjs} +2 -2
  275. package/dist/PlayerProgressBar-xc1ZFPJY.mjs.map +1 -0
  276. package/dist/PlayerStore-Aq_ukXXS.mjs.map +1 -0
  277. package/dist/PlayerStore-C_QCHbT3.mjs.map +1 -0
  278. package/dist/{PlayerStore-CKprkxa0.mjs → PlayerStore-DggKki80.mjs} +1 -1
  279. package/dist/PlayerVideo-BNfhaNUn.mjs.map +1 -0
  280. package/dist/{PlayerVideo-CVUU7nHT.mjs → PlayerVideo-BWyvKlJT.mjs} +3 -3
  281. package/dist/PlayerVideo-Bhok6qYS.mjs.map +1 -0
  282. package/dist/PlayerVideo-CN609whx.mjs.map +1 -0
  283. package/dist/PlayerVideo-DXG_PsWA.mjs.map +1 -0
  284. package/dist/PlayerVideo-DzUapxuZ.mjs.map +1 -0
  285. package/dist/PlayerVideoDigiteka-B1rRVLzy.mjs.map +1 -0
  286. package/dist/PlayerVideoDigiteka-B6qODy7b.mjs.map +1 -0
  287. package/dist/{PlayerVideoDigiteka-DZIqqN8a.mjs → PlayerVideoDigiteka-Dxx63XHI.mjs} +2 -2
  288. package/dist/PlayerVideoHls-BoAbvi2b.mjs.map +1 -0
  289. package/dist/PlayerVideoHls-BsHaaJB-.mjs.map +1 -0
  290. package/dist/PlayerVideoHls-C0ddorEn.mjs.map +1 -0
  291. package/dist/PlayerVideoHls-DBODDRmV.mjs.map +1 -0
  292. package/dist/PlayerVideoHls-DVNHm_O2.mjs.map +1 -0
  293. package/dist/{PlayerVideoHls-BirHOkZD.mjs → PlayerVideoHls-DzbyXZsQ.mjs} +9 -7
  294. package/dist/{PlaylistPage-DljbABur.mjs → PlaylistPage-BdbqXFwR.mjs} +35 -35
  295. package/dist/PlaylistPage-BgUaPJet.mjs.map +1 -0
  296. package/dist/PlaylistPage-BwF2VdGb.mjs.map +1 -0
  297. package/dist/PlaylistPage-CINwx3zE.mjs.map +1 -0
  298. package/dist/PlaylistPage-CPB647jC.mjs.map +1 -0
  299. package/dist/PlaylistPage-DDzE5GQs.mjs.map +1 -0
  300. package/dist/PlaylistPage-bm1nWKMg.mjs.map +1 -0
  301. package/dist/PlaylistsPage-BwkVSYIp.mjs.map +1 -0
  302. package/dist/PlaylistsPage-C62NUvz4.mjs.map +1 -0
  303. package/dist/{PlaylistsPage-BSW-uPWF.mjs → PlaylistsPage-D08i24b2.mjs} +13 -13
  304. package/dist/PlaylistsPage-Dvh77ql6.mjs.map +1 -0
  305. package/dist/PodcastFilterList-BBhzOM64.mjs.map +1 -0
  306. package/dist/PodcastFilterList-BKBjd36i.mjs.map +1 -0
  307. package/dist/{PodcastFilterList-YM90eN60.mjs → PodcastFilterList-CL5ebQ69.mjs} +3 -3
  308. package/dist/PodcastFilterList-D9NTYS1v.mjs.map +1 -0
  309. package/dist/{PodcastImage-BtiQlrb3.mjs → PodcastImage-BFA22TgZ.mjs} +6 -6
  310. package/dist/PodcastImage-BhQKB5te.mjs.map +1 -0
  311. package/dist/PodcastImage-CHx3bUzt.mjs.map +1 -0
  312. package/dist/PodcastInlineList-CcNd_Hbs.mjs.map +1 -0
  313. package/dist/{PodcastInlineList-B32BSFqN.mjs → PodcastInlineList-H6BxXx0A.mjs} +1 -1
  314. package/dist/PodcastInlineList-akLivgog.mjs.map +1 -0
  315. package/dist/PodcastInlineList-jI2EvXSo.mjs.map +1 -0
  316. package/dist/{PodcastInlineListTemplate-DTrS1UiG.mjs → PodcastInlineListTemplate-Chbi8aME.mjs} +3 -3
  317. package/dist/PodcastInlineListTemplate-DT9ZRs61.mjs.map +1 -0
  318. package/dist/PodcastInlineListTemplate-Dh1xF6xT.mjs.map +1 -0
  319. package/dist/PodcastIsPlaying-C0jcpBQd.mjs.map +1 -0
  320. package/dist/PodcastIsPlaying-H6P1CHAI.mjs.map +1 -0
  321. package/dist/{PodcastIsPlaying-BtmHnQi9.mjs → PodcastIsPlaying-ugHcefCy.mjs} +1 -1
  322. package/dist/{PodcastItem-TdtzApJ6.mjs → PodcastItem-Baki7W0q.mjs} +6 -6
  323. package/dist/PodcastItem-BfvK4ion.mjs.map +1 -0
  324. package/dist/PodcastItem-DEhA78z9.mjs.map +1 -0
  325. package/dist/PodcastItem-DwK_Yu1G.mjs.map +1 -0
  326. package/dist/PodcastList-B4ic6Cij.mjs.map +1 -0
  327. package/dist/PodcastList-C2R92m6S.mjs.map +1 -0
  328. package/dist/PodcastList-DWl6zz_z.mjs.map +1 -0
  329. package/dist/PodcastList-Dbt4nmKg.mjs.map +1 -0
  330. package/dist/PodcastList-KaQBRbR9.mjs.map +1 -0
  331. package/dist/{PodcastList-BAOJhQ7G.mjs → PodcastList-N_XOE-hI.mjs} +5 -5
  332. package/dist/PodcastList-d3SGLPvF.mjs.map +1 -0
  333. package/dist/{PodcastList-Bbe3yWiu.mjs → PodcastList-yjd_exFg.mjs} +4 -4
  334. package/dist/PodcastPage-B0pbZ5o_.mjs.map +1 -0
  335. package/dist/PodcastPage-BOA44Us4.mjs.map +1 -0
  336. package/dist/PodcastPage-Bs1wz-0E.mjs.map +1 -0
  337. package/dist/PodcastPage-C37Wa-qH.mjs.map +1 -0
  338. package/dist/PodcastPage-D0HYJxaK.mjs.map +1 -0
  339. package/dist/PodcastPage-D0U6-etV.mjs.map +1 -0
  340. package/dist/PodcastPage-DwMPY4po.mjs.map +1 -0
  341. package/dist/{PodcastPage-CAxub2do.mjs → PodcastPage-SUEm-Enm.mjs} +26 -26
  342. package/dist/PodcastPlayBar-Bo-W_dSK.mjs.map +1 -0
  343. package/dist/PodcastPlayBar-CBtMWlVc.mjs.map +1 -0
  344. package/dist/{PodcastPlayBar-gAEttclo.mjs → PodcastPlayBar-COU17bnm.mjs} +3 -3
  345. package/dist/PodcastPlayBar-Cpr3Ff7J.mjs.map +1 -0
  346. package/dist/PodcastPlayBasicButton-BvJPrxpI.mjs.map +1 -0
  347. package/dist/PodcastPlayBasicButton-CS5TNlmX.mjs.map +1 -0
  348. package/dist/{PodcastPlayBasicButton-7w91y2ow.mjs → PodcastPlayBasicButton-CVXhEUHB.mjs} +1 -1
  349. package/dist/{PodcastPlayButton-CQY0d6f-.mjs → PodcastPlayButton--gjzxW0o.mjs} +3 -3
  350. package/dist/PodcastPlayButton-BqvE4ZUl.mjs.map +1 -0
  351. package/dist/PodcastPlayButton-DW5Feest.mjs.map +1 -0
  352. package/dist/PodcastPlaylistInlineList-BV31HaB2.mjs.map +1 -0
  353. package/dist/PodcastPlaylistInlineList-C-WYs6aE.mjs.map +1 -0
  354. package/dist/{PodcastPlaylistInlineList-BE5L8pSP.mjs → PodcastPlaylistInlineList-DsEHaYGZ.mjs} +7 -7
  355. package/dist/PodcastPlaylistInlineList-HEdFAq1l.mjs.map +1 -0
  356. package/dist/{PodcastPresentationList-DH6Rq0Z4.mjs → PodcastPresentationList-B9vORr36.mjs} +4 -4
  357. package/dist/PodcastPresentationList-ChqvdXY0.mjs.map +1 -0
  358. package/dist/PodcastPresentationList-Dit6HvJr.mjs.map +1 -0
  359. package/dist/{PodcastProgressBar-DoeG7lDj.mjs → PodcastProgressBar-B0FwZOTT.mjs} +3 -3
  360. package/dist/PodcastProgressBar-B8ONWq-Z.mjs.map +1 -0
  361. package/dist/PodcastProgressBar-BoGtJPAa.mjs.map +1 -0
  362. package/dist/PodcastProgressBar-DTRhKzW-.mjs.map +1 -0
  363. package/dist/{PodcastRawTranscript-Cktqtbcg.mjs → PodcastRawTranscript-BiuftXu-.mjs} +2 -2
  364. package/dist/PodcastRawTranscript-C8SJcaQE.mjs.map +1 -0
  365. package/dist/PodcastRawTranscript-nfzHM0k_.mjs.map +1 -0
  366. package/dist/PodcastRawTranscript-r5pRtZDg.mjs.map +1 -0
  367. package/dist/{PodcastSwiperList-DZ26-8xy.mjs → PodcastSwiperList-BKOYhrsH.mjs} +4 -4
  368. package/dist/PodcastSwiperList-Bsg0q89o.mjs.map +1 -0
  369. package/dist/PodcastSwiperList-BxsEv7_8.mjs.map +1 -0
  370. package/dist/PodcastSwiperList-Cju5VHcH.mjs.map +1 -0
  371. package/dist/PodcastmakerHeader-6fIwE70J.mjs.map +1 -0
  372. package/dist/PodcastmakerHeader-BBPEy__r.mjs.map +1 -0
  373. package/dist/{PodcastmakerHeader-MhdOrssb.mjs → PodcastmakerHeader-CIoJwm1L.mjs} +1 -1
  374. package/dist/PodcastsPage-967SI8kL.mjs.map +1 -0
  375. package/dist/{PodcastsPage-BXjTDNhn.mjs → PodcastsPage-B5NwPMyn.mjs} +5 -5
  376. package/dist/PodcastsPage-B7j2XxPZ.mjs.map +1 -0
  377. package/dist/PodcastsPage-BOzszXpc.mjs.map +1 -0
  378. package/dist/PodcastsPage-Bw0tzWoX.mjs.map +1 -0
  379. package/dist/PodcastsPage-D3TAYJV8.mjs.map +1 -0
  380. package/dist/PodcastsPage-DJsgHs7V.mjs.map +1 -0
  381. package/dist/PodcastsPage-DKWHzNNA.mjs.map +1 -0
  382. package/dist/PodcastsPage-DONqoMkB.mjs.map +1 -0
  383. package/dist/PodcastsPage-DUcfPeLD.mjs.map +1 -0
  384. package/dist/PodcastsPage-DWBgwD6o.mjs.map +1 -0
  385. package/dist/PodcastsPage-DZO4H1Ff.mjs.map +1 -0
  386. package/dist/PodcastsPage-DhEMPqCT.mjs.map +1 -0
  387. package/dist/ProductorSearch-BgmV_RCq.mjs.map +1 -0
  388. package/dist/{ProductorSearch-Z36zTZK4.mjs → ProductorSearch-BiUEs7mG.mjs} +3 -3
  389. package/dist/ProductorSearch-C4Nv2HzS.mjs.map +1 -0
  390. package/dist/ProductorSearch-DtVe_rU9.mjs.map +1 -0
  391. package/dist/ProgressBar-BMeSiueh.mjs.map +1 -0
  392. package/dist/ProgressBar-C15ih0uL.mjs.map +1 -0
  393. package/dist/{ProgressBar-CTOa-MDz.mjs → ProgressBar-CXB5q3-H.mjs} +2 -2
  394. package/dist/ProgressBar-DAUOWol1.mjs.map +1 -0
  395. package/dist/QrCode-BYLxjhwi.mjs.map +1 -0
  396. package/dist/QrCode-CCigeTaZ.mjs +109 -0
  397. package/dist/QrCode-CaXoOjo-.mjs.map +1 -0
  398. package/dist/QrCode-CcQR60hB.mjs.map +1 -0
  399. package/dist/QrCode-S_eLVZoz.mjs.map +1 -0
  400. package/dist/QrCode-XZMMiaX5.mjs.map +1 -0
  401. package/dist/QrCodeModal-BJOu1pAV.mjs.map +1 -0
  402. package/dist/QrCodeModal-BjT-0P0w.mjs.map +1 -0
  403. package/dist/QrCodeModal-BrabSTzq.mjs.map +1 -0
  404. package/dist/QrCodeModal-CjvbRYLW.mjs.map +1 -0
  405. package/dist/{QrCodeModal-DE3juCsN.mjs → QrCodeModal-Dpw_tCQ6.mjs} +1 -1
  406. package/dist/QrCodeModal-N2fjbP4S.mjs.map +1 -0
  407. package/dist/RadioCurrently-B_b8DV2w.mjs.map +1 -0
  408. package/dist/RadioCurrently-DufvDqm1.mjs.map +1 -0
  409. package/dist/{RadioCurrently-BlAhcc9E.mjs → RadioCurrently-ysRKhxKU.mjs} +3 -3
  410. package/dist/RadioHistory-B03bYMxm.mjs.map +1 -0
  411. package/dist/{RadioHistory-C7S79sZD.mjs → RadioHistory-DjsqvRgH.mjs} +2 -2
  412. package/dist/RadioHistory-Dv4gt9TM.mjs.map +1 -0
  413. package/dist/RadioImage-BFdiGgi_.mjs.map +1 -0
  414. package/dist/{RadioImage-BTn2Lquc.mjs → RadioImage-CSseYIVb.mjs} +4 -4
  415. package/dist/RadioImage-CrtD33dM.mjs.map +1 -0
  416. package/dist/RadioList--f7RDhHJ.mjs.map +1 -0
  417. package/dist/{RadioList-BD3zNwmk.mjs → RadioList-BZFFAobk.mjs} +4 -4
  418. package/dist/RadioList-De9NQ23Q.mjs.map +1 -0
  419. package/dist/RadioPage-BK1N--Kr.mjs.map +1 -0
  420. package/dist/RadioPage-BTtNFJI2.mjs.map +1 -0
  421. package/dist/RadioPage-CcK0y_5s.mjs.map +1 -0
  422. package/dist/RadioPage-Cqas0JX6.mjs.map +1 -0
  423. package/dist/{RadioPage-Bv3oupa1.mjs → RadioPage-Cwooj0wF.mjs} +4 -4
  424. package/dist/RadioPage-DhSB0sX5.mjs.map +1 -0
  425. package/dist/RadioPage-DlahFXYC.mjs.map +1 -0
  426. package/dist/RadioPlanning-BU1E8i4t.mjs.map +1 -0
  427. package/dist/{RadioPlanning-nkv_Mb_t.mjs → RadioPlanning-BmIxuUBI.mjs} +2 -2
  428. package/dist/RadioPlanning-Bx-N-xqX.mjs.map +1 -0
  429. package/dist/RadioProgressBar-0XM3ZTGU.mjs.map +1 -0
  430. package/dist/{RadioProgressBar-B2EgCOrK.mjs → RadioProgressBar-CQRGuPpC.mjs} +1 -1
  431. package/dist/RadioProgressBar-oyeS56mV.mjs.map +1 -0
  432. package/dist/{RecaptchaModal-w-9MlZ45.mjs → RecaptchaModal-BdW4xNlX.mjs} +1 -1
  433. package/dist/RecaptchaModal-DFlFQcHs.mjs.map +1 -0
  434. package/dist/RecaptchaModal-iLQ4UYOL.mjs.map +1 -0
  435. package/dist/ReportAbuseModal-BaPt2DLK.mjs.map +1 -0
  436. package/dist/ReportAbuseModal-BdZRe29L.mjs.map +1 -0
  437. package/dist/ReportAbuseModal-CH7Y153n.mjs.map +1 -0
  438. package/dist/{ReportAbuseModal-O1K7j7NV.mjs → ReportAbuseModal-jjGeXbB9.mjs} +4 -4
  439. package/dist/RightsIndicator-4pUsBq5j.mjs.map +1 -0
  440. package/dist/RightsIndicator-BH3jm_1O.mjs.map +1 -0
  441. package/dist/{RightsIndicator-D0cSu8j2.mjs → RightsIndicator-CPzWpH5Z.mjs} +1 -1
  442. package/dist/RightsIndicator-d8ffUFIj.mjs.map +1 -0
  443. package/dist/{RightsWrapper-BUj_1bwR.mjs → RightsWrapper-BTQ8GGUi.mjs} +5 -5
  444. package/dist/RightsWrapper-C3BRHqqo.mjs.map +1 -0
  445. package/dist/RightsWrapper-DJG9Ds6c.mjs.map +1 -0
  446. package/dist/RightsWrapper-nBURBTJX.mjs.map +1 -0
  447. package/dist/{RubriqueChoice-DaTWiDbl.mjs → RubriqueChoice-C-S-veJJ.mjs} +1 -1
  448. package/dist/RubriqueChoice-DsmnrUNs.mjs.map +1 -0
  449. package/dist/{RubriqueChooser-C33LorHa.mjs → RubriqueChooser-CNGn8LcP.mjs} +1 -1
  450. package/dist/RubriqueChooser-WmzcajTt.mjs.map +1 -0
  451. package/dist/RubriqueFilter-C9C_OiF5.mjs.map +1 -0
  452. package/dist/RubriqueFilter-DDI7DjMR.mjs.map +1 -0
  453. package/dist/RubriqueFilter-_8V1n9-x.mjs.map +1 -0
  454. package/dist/{RubriqueFilter-RgardNnQ.mjs → RubriqueFilter-rxiG8Wci.mjs} +3 -3
  455. package/dist/RubriqueList-99-nWSvq.mjs.map +1 -0
  456. package/dist/RubriqueList-BiRimk17.mjs.map +1 -0
  457. package/dist/RubriqueList-H_NHILuj.mjs.map +1 -0
  458. package/dist/{RubriqueList-DA9OYqUl.mjs → RubriqueList-rJj2IycY.mjs} +4 -4
  459. package/dist/RubriquePage-6KFPBPz8.mjs.map +1 -0
  460. package/dist/{RubriquePage-xgTOce7c.mjs → RubriquePage-BNEWnk3-.mjs} +4 -4
  461. package/dist/RubriquePage-Bpt-x7IK.mjs.map +1 -0
  462. package/dist/RubriquePage-Cwz9OqLO.mjs.map +1 -0
  463. package/dist/SearchPage-BtZnj3sA.mjs.map +1 -0
  464. package/dist/SearchPage-CbbbcXxs.mjs.map +1 -0
  465. package/dist/SearchPage-DMIV2AgJ.mjs.map +1 -0
  466. package/dist/{SearchPage-C3o5RPP0.mjs → SearchPage-DsZzPoEw.mjs} +2 -2
  467. package/dist/ShareAnonymous-BeSQozvM.mjs.map +1 -0
  468. package/dist/ShareAnonymous-BgsR6Ahp.mjs.map +1 -0
  469. package/dist/ShareAnonymous-CNWR1v6X.mjs.map +1 -0
  470. package/dist/{ShareAnonymous-bOwwEjPv.mjs → ShareAnonymous-DK2rnLl1.mjs} +3 -3
  471. package/dist/ShareAnonymous-DVpKBKbi.mjs.map +1 -0
  472. package/dist/ShareAnonymous-DWArDFT0.mjs.map +1 -0
  473. package/dist/ShareAnonymous-IaVbb-rp.mjs.map +1 -0
  474. package/dist/ShareModalPlayer-BHmsvxXF.mjs.map +1 -0
  475. package/dist/{ShareModalPlayer-D2oBrSly.mjs → ShareModalPlayer-Cfnk68-U.mjs} +1 -1
  476. package/dist/ShareModalPlayer-DLBU3lsU.mjs.map +1 -0
  477. package/dist/ShareModalPlayer-O-CmDObW.mjs.map +1 -0
  478. package/dist/ShareModalPlayer-QYu8Q9ks.mjs.map +1 -0
  479. package/dist/ShareModalPlayer-Vga-96DM.mjs.map +1 -0
  480. package/dist/{ShareNewsletter-CNw1LziN.mjs → ShareNewsletter-BWIAt47D.mjs} +1 -1
  481. package/dist/ShareNewsletter-BhFk6ARk.mjs.map +1 -0
  482. package/dist/ShareNewsletter-JCO4h7rk.mjs.map +1 -0
  483. package/dist/SharePlayer-C-RgIOh1.mjs.map +1 -0
  484. package/dist/{SharePlayer-CRri0YED.mjs → SharePlayer-C0aveOwy.mjs} +2 -2
  485. package/dist/SharePlayer-CNXrUj8M.mjs.map +1 -0
  486. package/dist/SharePlayer-D0-qY2dS.mjs.map +1 -0
  487. package/dist/SharePlayer-DQoFa7iv.mjs.map +1 -0
  488. package/dist/SharePlayer-DwNl3E7o.mjs.map +1 -0
  489. package/dist/{SharePlayerRadio-DVsegQMu.mjs → SharePlayerRadio-BqaeyEls.mjs} +2 -2
  490. package/dist/SharePlayerRadio-CHvCtKdZ.mjs.map +1 -0
  491. package/dist/SharePlayerRadio-CIsy-rCC.mjs.map +1 -0
  492. package/dist/SharePlayerRadio-ChfNulnf.mjs.map +1 -0
  493. package/dist/SharePlayerRadio-DA-W-306.mjs.map +1 -0
  494. package/dist/SharePlayerRadio-DwPeLUsk.mjs.map +1 -0
  495. package/dist/SharePlayerTypes-CeMV4n10.mjs.map +1 -0
  496. package/dist/SharePlayerTypes-DdyoQZDi.mjs.map +1 -0
  497. package/dist/{SharePlayerTypes-BxkEoBSL.mjs → SharePlayerTypes-DyrqFDVJ.mjs} +1 -1
  498. package/dist/ShareSocialsButtons-BHWzJVne.mjs.map +1 -0
  499. package/dist/ShareSocialsButtons-Bjx2ONvj.mjs.map +1 -0
  500. package/dist/{ShareSocialsButtons-BJ3DqvIO.mjs → ShareSocialsButtons-PqMXhFEk.mjs} +1 -1
  501. package/dist/{SimpleLayout-BJlcQjx9.mjs → SimpleLayout-9O9FZ69Q.mjs} +2 -2
  502. package/dist/SimpleLayout-B-QSfHeQ.mjs.map +1 -0
  503. package/dist/SimpleLayout-BauUacaf.mjs.map +1 -0
  504. package/dist/SimpleLayout-C29bPtbd.mjs.map +1 -0
  505. package/dist/SimpleLayout-Cjc3Q9Mb.mjs.map +1 -0
  506. package/dist/SimpleLayout-D4sVjQGu.mjs.map +1 -0
  507. package/dist/SimpleLayout-DaoXS--3.mjs.map +1 -0
  508. package/dist/SimpleLayout-vkWEZHLi.mjs.map +1 -0
  509. package/dist/{SmartLinkPage-DpD90wc7.mjs → SmartLinkPage-6HgX8LDv.mjs} +16 -16
  510. package/dist/SmartLinkPage-BcQmox7e.mjs.map +1 -0
  511. package/dist/SmartLinkPage-M_zB_Xp1.mjs.map +1 -0
  512. package/dist/SubscribeButtons-CyGYD1B1.mjs.map +1 -0
  513. package/dist/SubscribeButtons-DjjZQfOU.mjs.map +1 -0
  514. package/dist/{SubscribeButtons-zlRDGEzS.mjs → SubscribeButtons-IpzqDGIn.mjs} +3 -3
  515. package/dist/SubscribeButtons-yA2wowFc.mjs.map +1 -0
  516. package/dist/SwiperList-BNODHhLF.mjs.map +1 -0
  517. package/dist/SwiperList-Cqklwlg9.mjs.map +1 -0
  518. package/dist/{SwiperList-BlF3rPq5.mjs → SwiperList-O8nUg87R.mjs} +1 -1
  519. package/dist/TagList-4RDriU1J.mjs.map +1 -0
  520. package/dist/TagList-B5JPfT6j.mjs.map +1 -0
  521. package/dist/TagList-DVjqXiaA.mjs.map +1 -0
  522. package/dist/{TagList-BBHyaKp-.mjs → TagList-V9fAFATL.mjs} +2 -2
  523. package/dist/TagPage-BOsz6Bot.mjs.map +1 -0
  524. package/dist/TagPage-CALmJwxW.mjs.map +1 -0
  525. package/dist/{TagPage-DLpNBBjP.mjs → TagPage-CsFwN4sE.mjs} +3 -3
  526. package/dist/TagPage-DMuxYu6y.mjs.map +1 -0
  527. package/dist/{TopBar-CLWWRgr7.mjs → TopBar-0oG6YPlW.mjs} +37 -37
  528. package/dist/TopBar-CUCBss7X.mjs.map +1 -0
  529. package/dist/TopBar-CeQQ1hgH.mjs.map +1 -0
  530. package/dist/TopBar-DdxThCLR.mjs.map +1 -0
  531. package/dist/{UserButtonContent-BR3Rlqwp.mjs → UserButtonContent--VK68UsY.mjs} +6 -6
  532. package/dist/UserButtonContent-067qGenf.mjs.map +1 -0
  533. package/dist/UserButtonContent-Dqgyrgzv.mjs.map +1 -0
  534. package/dist/VideoModuleBox-9QgBI-Q-.mjs.map +1 -0
  535. package/dist/{VideoModuleBox-DxYJVwy3.mjs → VideoModuleBox-Bcqman6a.mjs} +1 -1
  536. package/dist/VideoModuleBox-BrVK2bDZ.mjs.map +1 -0
  537. package/dist/VideoModuleBox-DWO47_bZ.mjs.map +1 -0
  538. package/dist/VideoPage-4MB4zmnA.mjs.map +1 -0
  539. package/dist/VideoPage-BDGvtr1o.mjs.map +1 -0
  540. package/dist/{VideoPage-BaeTduNB.mjs → VideoPage-BjlaP2DU.mjs} +6 -6
  541. package/dist/VideoPage-C-yjvvhl.mjs.map +1 -0
  542. package/dist/VideoPage-C0_t7XMC.mjs.map +1 -0
  543. package/dist/VideoPage-CIDpzbkb.mjs.map +1 -0
  544. package/dist/VideoPage-D2V1oXGC.mjs.map +1 -0
  545. package/dist/VideoPage-DEJSfeFy.mjs.map +1 -0
  546. package/dist/{classicApi-pmODlqv5.mjs → classicApi-CGipMqf7.mjs} +267 -256
  547. package/dist/classicApi-CW1Z-HoF.mjs.map +1 -0
  548. package/dist/classicApi-OzToKuW1.mjs.map +1 -0
  549. package/dist/{downloadHelper-BAI-eqgA.mjs → downloadHelper-C3QooCxr.mjs} +1 -1
  550. package/dist/downloadHelper-D7dUpp5l.mjs.map +1 -0
  551. package/dist/downloadHelper-DwV3Mmd3.mjs.map +1 -0
  552. package/dist/index.css +1 -1
  553. package/dist/index.mjs +183 -183
  554. package/dist/src/components/form/ClassicDatePicker.vue.d.ts +24 -14
  555. package/dist/src/components/form/OctopusMultiselect.vue.d.ts +2 -0
  556. package/dist/src/i18n.d.ts +2 -0
  557. package/dist/tests.mjs +2 -2
  558. package/dist/useAdvancedParamInit-BKw9VZ53.mjs.map +1 -0
  559. package/dist/useAdvancedParamInit-CyRmbqqe.mjs.map +1 -0
  560. package/dist/{useAdvancedParamInit-Bgvt8758.mjs → useAdvancedParamInit-D5roUdHI.mjs} +10 -10
  561. package/dist/useDayjs-BKBB00TF.mjs.map +1 -0
  562. package/dist/useDayjs-UQLGUbw5.mjs.map +1 -0
  563. package/dist/{useDayjs-DGb3L4kJ.mjs → useDayjs-VUs19G9T.mjs} +1 -1
  564. package/dist/useErrorHandler-BKN3lhJ5.mjs.map +1 -0
  565. package/dist/useErrorHandler-C3XnRTmp.mjs.map +1 -0
  566. package/dist/{useErrorHandler-D9W2BURn.mjs → useErrorHandler-x9sjDYSz.mjs} +1 -1
  567. package/dist/useImageProxy-AEcmDpvW.mjs.map +1 -0
  568. package/dist/useImageProxy-BzTG_GCn.mjs.map +1 -0
  569. package/dist/{useImageProxy-8ndy_oTo.mjs → useImageProxy-CCpDzPmQ.mjs} +1 -1
  570. package/dist/useOrgaComputed-4PduqYTq.mjs.map +1 -0
  571. package/dist/useOrgaComputed-C2n0FBbv.mjs.map +1 -0
  572. package/dist/{useOrgaComputed-CBJ5sDOm.mjs → useOrgaComputed-D81Jihm-.mjs} +2 -2
  573. package/dist/{usePlayerLogicProgress-C2L7cMdd.mjs → usePlayerLogicProgress-BybmSAcs.mjs} +2 -2
  574. package/dist/usePlayerLogicProgress-CKoCod6g.mjs.map +1 -0
  575. package/dist/usePlayerLogicProgress-DZaPRo6p.mjs.map +1 -0
  576. package/dist/usePodcastView-B-2HPFAo.mjs.map +1 -0
  577. package/dist/{usePodcastView-CoDJJr6Y.mjs → usePodcastView-CkM-n6iO.mjs} +3 -3
  578. package/dist/usePodcastView-jdYTK1cW.mjs.map +1 -0
  579. package/dist/{usePresentationItem-DZZVm3hh.mjs → usePresentationItem-CLEGZwI3.mjs} +3 -3
  580. package/dist/usePresentationItem-Com4i40U.mjs.map +1 -0
  581. package/dist/usePresentationItem-OpMean0v.mjs.map +1 -0
  582. package/dist/{useRights-DOXtpjv5.mjs → useRights-BI2tXXjR.mjs} +1 -1
  583. package/dist/useRights-Bsv9hr7w.mjs.map +1 -0
  584. package/dist/useRights-DfudFDI6.mjs.map +1 -0
  585. package/dist/{useRubriquesFilterComputed-DoUOqOrJ.mjs → useRubriquesFilterComputed-D1yqLnK4.mjs} +1 -1
  586. package/dist/useRubriquesFilterComputed-DGDJp2gc.mjs.map +1 -0
  587. package/dist/useRubriquesFilterComputed-NNE-FElk.mjs.map +1 -0
  588. package/dist/{useRubriquesFilterParam-BE8BbmAQ.mjs → useRubriquesFilterParam-2eMd5ND7.mjs} +1 -1
  589. package/dist/useRubriquesFilterParam-DE5dYl6c.mjs.map +1 -0
  590. package/dist/useRubriquesFilterParam-DXYD4G0D.mjs.map +1 -0
  591. package/dist/useSharePlatforms-CrQ8r5vT.mjs.map +1 -0
  592. package/dist/useSharePlatforms-D124fJ_v.mjs.map +1 -0
  593. package/dist/{useSharePlatforms-ZWYDJZBy.mjs → useSharePlatforms-sXgVxsL5.mjs} +5 -5
  594. package/dist/{useSimplePageParam-DFKSEyiE.mjs → useSimplePageParam-BrtYXOUt.mjs} +1 -1
  595. package/dist/useSimplePageParam-CruL7rLG.mjs.map +1 -0
  596. package/dist/useSimplePageParam-SaBaPhb8.mjs.map +1 -0
  597. package/dist/{useTranslation-Dr7KU7Y4.mjs → useTranslation-BVQwv02Q.mjs} +9 -9
  598. package/dist/useTranslation-Bf2zP_6C.mjs.map +1 -0
  599. package/dist/useTranslation-BuhzZoI8.mjs.map +1 -0
  600. package/dist/useTranslation-OWqckMEl.mjs.map +1 -0
  601. package/dist/usefetchRadioData-D01ws733.mjs.map +1 -0
  602. package/dist/usefetchRadioData-DDRPoD4s.mjs.map +1 -0
  603. package/dist/{usefetchRadioData-SLWfXkYt.mjs → usefetchRadioData-zyQNqiV3.mjs} +1 -1
  604. package/package.json +1 -1
  605. package/src/components/composable/useTranslation.ts +2 -2
  606. package/src/components/display/sharing/QrCode.vue +63 -64
  607. package/src/components/form/ClassicDatePicker.vue +32 -20
  608. package/src/components/form/OctopusMultiselect.vue +3 -4
  609. package/src/components/misc/ClassicPopover.vue +1 -1
  610. package/src/components/misc/player/video/PlayerVideoHls.vue +160 -159
  611. package/src/i18n.ts +38 -29
  612. package/tests/components/form/ClassicDatePicker.spec.ts +32 -0
  613. package/tests/components/form/OctopusMultiselect.spec.ts +5 -4
  614. package/dist/ClassicDatePicker-B7UA9CqR.mjs +0 -187
  615. package/dist/QrCode-DuScZ7PD.mjs +0 -105
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ClassicDatePicker-DgcJCevR.mjs","names":["_openBlock","_createElementBlock","_normalizeClass","_toDisplayString","_createCommentVNode","_createVNode","_createSlots","_withCtx","_sfc_main"],"sources":["../src/components/form/ClassicDatePicker.vue","../src/components/form/ClassicDatePicker.vue"],"sourcesContent":["<template>\n <div ref=\"divContainer\" tabindex=\"0\">\n <label\n v-if=\"label && !range\"\n class=\"form-label\"\n :for=\"'dp-input-'+id\"\n :class=\"displayLabel ? '' : 'd-none'\"\n >\n {{ label }}\n </label>\n <VueDatePicker\n :model-value=\"modelVal\"\n :time-picker=\"isTimePicker\"\n :time-config=\"timeConfig\"\n :ui=\"templateClass ? { input: templateClass } : {}\"\n :input-attrs=\"{ clearable: false, id: id ? 'dp-input-' + id : undefined }\"\n :text-input=\"true\"\n :readonly=\"readonly\"\n :teleport=\"useTeleport\"\n :locale=\"getLocale(locale)\"\n :formats=\"{ input: format }\"\n :auto-apply=\"true\"\n :max-date=\"isMaxDate && !isTimePicker ? limit : undefined\"\n :min-date=\"isMinDate && !isTimePicker ? limit : undefined\"\n :range=\"undefined !== range\"\n :multi-calendars=\"columnNumber > 1 ? columnNumber : false\"\n :inline=\"isInline\"\n :aria-labels=\"ariaLabels\"\n :max-time=\"maxTime\"\n :month-picker=\"monthPicker\"\n @update:model-value=\"updateValue($event)\"\n >\n <template v-if=\"isTimePicker\" #input-icon>\n <ClockOutlineIcon :size=\"16\" class=\"ms-2\" />\n </template>\n </VueDatePicker>\n </div>\n</template>\n\n<script setup lang=\"ts\">\nimport ClockOutlineIcon from \"vue-material-design-icons/ClockOutline.vue\";\nimport dayjs from \"dayjs\";\nimport { VueDatePicker } from \"@vuepic/vue-datepicker\";\nimport { computed, useTemplateRef } from \"vue\";\nimport { useI18n } from \"vue-i18n\";\nimport { getLocale } from \"@/i18n\";\n\n//Props \nconst props = defineProps({\n id:{ default: undefined, type: String },\n time: {\n default: undefined,\n type: Object as () => { hours: number; minutes: number; seconds: number },\n },\n date: { default: undefined, type: Date },\n range: { default: undefined, type: Array as () => Array<Date> },\n /**\n * Enable maximum date limit.\n * If `dateLimit` is not set, use current datetime.\n */\n isMaxDate: { default: false, type: Boolean },\n /** Date limit when `isMaxDate` or `isMinDate` are set */\n dateLimit: { default: undefined, type: Date },\n /**\n * Enable minimum date limit.\n * If `dateLimit` is not set, use current datetime.\n */\n isMinDate: { default: false, type: Boolean },\n columnNumber: { default: 1, type: Number },\n displaySeconds: { default: false, type: Boolean },\n displayTimePicker: { default: true, type: Boolean },\n isTimePicker: { default: false, type: Boolean },\n useTeleport: { default: false, type: Boolean },\n templateClass: { default: undefined, type: String },\n readonly: { default: false, type: Boolean },\n maxTime: {\n default: null,\n type: Object as () => {\n hours: number | string;\n minutes: number | string;\n seconds?: number | string;\n },\n },\n forceFormat: { default: undefined, type: String },\n monthPicker: { default: false, type: Boolean },\n /** @deprecated No longer supported since vue-datepicker v14 */\n customPosition: { default: null, type: Function },\n isInline: { default: false, type: Boolean },\n timePickerInline: { default: false, type: Boolean },\n label: { default: undefined, type: String },\n displayLabel: { default: false, type: Boolean },\n})\n\n//Emits\nconst emit = defineEmits<{\n /**\n * Update the date\n * @param value The new date\n * @deprecated\n */\n (e: \"updateDate\", value: Date): void;\n /**\n * Update the date\n * @param value The new date\n */\n (e: \"update:date\", value: Date): void;\n}>();\n\n//Data\nconst divContainerRef = useTemplateRef('divContainer');\n\n//Composables\nconst { locale } = useI18n();\n\n//Computed\nconst ariaLabels = computed(() => {\n return {\n input: props.date ? formatDate(props.date) : undefined,\n day: (value: { value: Date }) => {\n return formatDate(value.value);\n },\n };\n});\nconst modelVal = computed(() => {\n if (props.time) {\n return props.time;\n }\n if (props.range) {\n return props.range;\n }\n if (props.date && props.monthPicker) {\n return {\n month: props.date.getMonth(),\n year: props.date.getFullYear(),\n };\n }\n return props.date;\n});\nconst format = computed(() => {\n if (props.forceFormat) {\n return props.forceFormat;\n }\n if (props.monthPicker) {\n return \"MM/yyyy\";\n }\n let timeString = \"\";\n if (props.displayTimePicker || props.isTimePicker) {\n timeString = \"HH:mm\";\n if (props.displaySeconds) {\n timeString = \"HH:mm:ss\";\n }\n }\n // For ranges, vue-datepicker applies the format to each date and joins\n // them with its own separator\n return props.isTimePicker\n ? timeString\n : \"dd/MM/yyyy \" + timeString;\n});\nconst timeConfig = computed(() => {\n return {\n enableSeconds: props.displaySeconds,\n timePickerInline: props.isTimePicker && props.timePickerInline,\n ...(!props.isTimePicker && { enableTimePicker: props.displayTimePicker })\n };\n});\nconst limit = computed(() => {\n if (props.dateLimit) {\n return props.dateLimit;\n }\n return dayjs().toDate();\n});\n\n\n//Methods\nfunction updateValue(date: Date) {\n if (!props.isInline) {\n (divContainerRef?.value as HTMLElement)?.focus();\n }\n emit(\"updateDate\", date);\n emit(\"update:date\", date);\n}\n\nfunction formatDate(value: Date): string {\n const realMonth = value.getMonth() + 1;\n return (\n value.getDate() +\n \"/\" +\n (realMonth < 10 ? \"0\" : \"\") +\n realMonth +\n \"/\" +\n value.getFullYear()\n );\n}\n</script>\n<style lang=\"scss\">\n@use \"@vuepic/vue-datepicker/dist/main.css\";\n\n/* stylelint-disable-next-line */\n.dp--theme-light {\n --dp-primary-color: var(--octopus-primary);\n --dp-time-font-size: 1rem;\n}\n</style>\n","<template>\n <div ref=\"divContainer\" tabindex=\"0\">\n <label\n v-if=\"label && !range\"\n class=\"form-label\"\n :for=\"'dp-input-'+id\"\n :class=\"displayLabel ? '' : 'd-none'\"\n >\n {{ label }}\n </label>\n <VueDatePicker\n :model-value=\"modelVal\"\n :time-picker=\"isTimePicker\"\n :time-config=\"timeConfig\"\n :ui=\"templateClass ? { input: templateClass } : {}\"\n :input-attrs=\"{ clearable: false, id: id ? 'dp-input-' + id : undefined }\"\n :text-input=\"true\"\n :readonly=\"readonly\"\n :teleport=\"useTeleport\"\n :locale=\"getLocale(locale)\"\n :formats=\"{ input: format }\"\n :auto-apply=\"true\"\n :max-date=\"isMaxDate && !isTimePicker ? limit : undefined\"\n :min-date=\"isMinDate && !isTimePicker ? limit : undefined\"\n :range=\"undefined !== range\"\n :multi-calendars=\"columnNumber > 1 ? columnNumber : false\"\n :inline=\"isInline\"\n :aria-labels=\"ariaLabels\"\n :max-time=\"maxTime\"\n :month-picker=\"monthPicker\"\n @update:model-value=\"updateValue($event)\"\n >\n <template v-if=\"isTimePicker\" #input-icon>\n <ClockOutlineIcon :size=\"16\" class=\"ms-2\" />\n </template>\n </VueDatePicker>\n </div>\n</template>\n\n<script setup lang=\"ts\">\nimport ClockOutlineIcon from \"vue-material-design-icons/ClockOutline.vue\";\nimport dayjs from \"dayjs\";\nimport { VueDatePicker } from \"@vuepic/vue-datepicker\";\nimport { computed, useTemplateRef } from \"vue\";\nimport { useI18n } from \"vue-i18n\";\nimport { getLocale } from \"@/i18n\";\n\n//Props \nconst props = defineProps({\n id:{ default: undefined, type: String },\n time: {\n default: undefined,\n type: Object as () => { hours: number; minutes: number; seconds: number },\n },\n date: { default: undefined, type: Date },\n range: { default: undefined, type: Array as () => Array<Date> },\n /**\n * Enable maximum date limit.\n * If `dateLimit` is not set, use current datetime.\n */\n isMaxDate: { default: false, type: Boolean },\n /** Date limit when `isMaxDate` or `isMinDate` are set */\n dateLimit: { default: undefined, type: Date },\n /**\n * Enable minimum date limit.\n * If `dateLimit` is not set, use current datetime.\n */\n isMinDate: { default: false, type: Boolean },\n columnNumber: { default: 1, type: Number },\n displaySeconds: { default: false, type: Boolean },\n displayTimePicker: { default: true, type: Boolean },\n isTimePicker: { default: false, type: Boolean },\n useTeleport: { default: false, type: Boolean },\n templateClass: { default: undefined, type: String },\n readonly: { default: false, type: Boolean },\n maxTime: {\n default: null,\n type: Object as () => {\n hours: number | string;\n minutes: number | string;\n seconds?: number | string;\n },\n },\n forceFormat: { default: undefined, type: String },\n monthPicker: { default: false, type: Boolean },\n /** @deprecated No longer supported since vue-datepicker v14 */\n customPosition: { default: null, type: Function },\n isInline: { default: false, type: Boolean },\n timePickerInline: { default: false, type: Boolean },\n label: { default: undefined, type: String },\n displayLabel: { default: false, type: Boolean },\n})\n\n//Emits\nconst emit = defineEmits<{\n /**\n * Update the date\n * @param value The new date\n * @deprecated\n */\n (e: \"updateDate\", value: Date): void;\n /**\n * Update the date\n * @param value The new date\n */\n (e: \"update:date\", value: Date): void;\n}>();\n\n//Data\nconst divContainerRef = useTemplateRef('divContainer');\n\n//Composables\nconst { locale } = useI18n();\n\n//Computed\nconst ariaLabels = computed(() => {\n return {\n input: props.date ? formatDate(props.date) : undefined,\n day: (value: { value: Date }) => {\n return formatDate(value.value);\n },\n };\n});\nconst modelVal = computed(() => {\n if (props.time) {\n return props.time;\n }\n if (props.range) {\n return props.range;\n }\n if (props.date && props.monthPicker) {\n return {\n month: props.date.getMonth(),\n year: props.date.getFullYear(),\n };\n }\n return props.date;\n});\nconst format = computed(() => {\n if (props.forceFormat) {\n return props.forceFormat;\n }\n if (props.monthPicker) {\n return \"MM/yyyy\";\n }\n let timeString = \"\";\n if (props.displayTimePicker || props.isTimePicker) {\n timeString = \"HH:mm\";\n if (props.displaySeconds) {\n timeString = \"HH:mm:ss\";\n }\n }\n // For ranges, vue-datepicker applies the format to each date and joins\n // them with its own separator\n return props.isTimePicker\n ? timeString\n : \"dd/MM/yyyy \" + timeString;\n});\nconst timeConfig = computed(() => {\n return {\n enableSeconds: props.displaySeconds,\n timePickerInline: props.isTimePicker && props.timePickerInline,\n ...(!props.isTimePicker && { enableTimePicker: props.displayTimePicker })\n };\n});\nconst limit = computed(() => {\n if (props.dateLimit) {\n return props.dateLimit;\n }\n return dayjs().toDate();\n});\n\n\n//Methods\nfunction updateValue(date: Date) {\n if (!props.isInline) {\n (divContainerRef?.value as HTMLElement)?.focus();\n }\n emit(\"updateDate\", date);\n emit(\"update:date\", date);\n}\n\nfunction formatDate(value: Date): string {\n const realMonth = value.getMonth() + 1;\n return (\n value.getDate() +\n \"/\" +\n (realMonth < 10 ? \"0\" : \"\") +\n realMonth +\n \"/\" +\n value.getFullYear()\n );\n}\n</script>\n<style lang=\"scss\">\n@use \"@vuepic/vue-datepicker/dist/main.css\";\n\n/* stylelint-disable-next-line */\n.dp--theme-light {\n --dp-primary-color: var(--octopus-primary);\n --dp-time-font-size: 1rem;\n}\n</style>\n"],"mappings":"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"}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ClassicDatePicker-NxGNQxHE.mjs","names":["_openBlock","_createElementBlock","_normalizeClass","_toDisplayString","_createCommentVNode","_createVNode","_createSlots","_withCtx","_sfc_main"],"sources":["../src/components/form/ClassicDatePicker.vue","../src/components/form/ClassicDatePicker.vue"],"sourcesContent":["<template>\n <div ref=\"divContainer\" tabindex=\"0\">\n <label\n v-if=\"label && !range\"\n class=\"form-label\"\n :for=\"'dp-input-'+id\"\n :class=\"displayLabel ? '' : 'd-none'\"\n >\n {{ label }}\n </label>\n <VueDatePicker\n :uid=\"id\"\n :model-value=\"modelVal\"\n :time-picker=\"isTimePicker\"\n :time-picker-inline=\"isTimePicker && timePickerInline\"\n :input-class-name=\"templateClass\"\n :clearable=\"false\"\n :text-input=\"true\"\n :readonly=\"readonly\"\n :teleport=\"useTeleport\"\n :locale=\"locales[locale] ?? fr\"\n :format=\"format\"\n :auto-apply=\"true\"\n :enable-seconds=\"displaySeconds\"\n :max-date=\"isMaxDate && !isTimePicker ? limit : undefined\"\n :min-date=\"isMinDate && !isTimePicker ? limit : undefined\"\n :range=\"undefined !== range\"\n :multi-calendars=\"columnNumber > 1 ? columnNumber : false\"\n :inline=\"isInline\"\n :enable-time-picker=\"!isTimePicker ? displayTimePicker : undefined\"\n :aria-labels=\"ariaLabels\"\n :max-time=\"maxTime\"\n :month-picker=\"monthPicker\"\n :alt-position=\"customPosition\"\n @update:model-value=\"updateValue($event)\"\n >\n <template v-if=\"isTimePicker\" #input-icon>\n <ClockOutlineIcon :size=\"16\" class=\"ms-2\" />\n </template>\n </VueDatePicker>\n </div>\n</template>\n\n<script setup lang=\"ts\">\nimport ClockOutlineIcon from \"vue-material-design-icons/ClockOutline.vue\";\nimport dayjs from \"dayjs\";\nimport { VueDatePicker } from \"@vuepic/vue-datepicker\";\nimport { computed, useTemplateRef } from \"vue\";\nimport { useI18n } from \"vue-i18n\";\nimport { de, enUS, es, fr, it, sl } from \"date-fns/locale\";\n\nconst locales = { de, enUS, es, fr, it, sl };\n\n//Props \nconst props = defineProps({\n id:{ default: undefined, type: String },\n time: {\n default: undefined,\n type: Object as () => { hours: number; minutes: number; seconds: number },\n },\n date: { default: undefined, type: Date },\n range: { default: undefined, type: Array as () => Array<Date> },\n /**\n * Enable maximum date limit.\n * If `dateLimit` is not set, use current datetime.\n */\n isMaxDate: { default: false, type: Boolean },\n /** Date limit when `isMaxDate` or `isMinDate` are set */\n dateLimit: { default: undefined, type: Date },\n /**\n * Enable minimum date limit.\n * If `dateLimit` is not set, use current datetime.\n */\n isMinDate: { default: false, type: Boolean },\n columnNumber: { default: 1, type: Number },\n displaySeconds: { default: false, type: Boolean },\n displayTimePicker: { default: true, type: Boolean },\n isTimePicker: { default: false, type: Boolean },\n useTeleport: { default: false, type: Boolean },\n templateClass: { default: undefined, type: String },\n readonly: { default: false, type: Boolean },\n maxTime: {\n default: null,\n type: Object as () => {\n hours?: number | string;\n minutes?: number | string;\n seconds?: number | string;\n },\n },\n forceFormat: { default: undefined, type: String },\n monthPicker: { default: false, type: Boolean },\n customPosition: { default: null, type: Function },\n isInline: { default: false, type: Boolean },\n timePickerInline: { default: false, type: Boolean },\n label: { default: undefined, type: String },\n displayLabel: { default: false, type: Boolean },\n})\n\n//Emits\nconst emit = defineEmits<{\n /**\n * Update the date\n * @param value The new date\n * @deprecated\n */\n (e: \"updateDate\", value: Date): void;\n /**\n * Update the date\n * @param value The new date\n */\n (e: \"update:date\", value: Date): void;\n}>();\n\n//Data\nconst divContainerRef = useTemplateRef('divContainer');\n\n//Composables\nconst { locale } = useI18n();\n\n//Computed\nconst ariaLabels = computed(() => {\n return {\n input: props.date ? formatDate(props.date) : undefined,\n day: (value: { value: Date }) => {\n return formatDate(value.value);\n },\n };\n});\nconst modelVal = computed(() => {\n if (props.time) {\n return props.time;\n }\n if (props.range) {\n return props.range;\n }\n if (props.date && props.monthPicker) {\n return {\n month: props.date.getMonth(),\n year: props.date.getFullYear(),\n };\n }\n return props.date;\n});\nconst format = computed(() => {\n if (props.forceFormat) {\n return props.forceFormat;\n }\n if (props.monthPicker) {\n return \"MM/yyyy\";\n }\n let timeString = \"\";\n if (props.displayTimePicker || props.isTimePicker) {\n timeString = \"HH:mm\";\n if (props.displaySeconds) {\n timeString = \"HH:mm:ss\";\n }\n }\n const dayString = props.isTimePicker\n ? timeString\n : \"dd/MM/yyyy \" + timeString;\n return props.range ? dayString + \" - \" + dayString : dayString;\n});\nconst limit = computed(() => {\n if (props.dateLimit) {\n return props.dateLimit;\n }\n return dayjs().toDate();\n});\n\n\n//Methods\nfunction updateValue(date: Date) {\n if (!props.isInline) {\n (divContainerRef?.value as HTMLElement)?.focus();\n }\n emit(\"updateDate\", date);\n emit(\"update:date\", date);\n}\n\nfunction formatDate(value: Date): string {\n const realMonth = value.getMonth() + 1;\n return (\n value.getDate() +\n \"/\" +\n (realMonth < 10 ? \"0\" : \"\") +\n realMonth +\n \"/\" +\n value.getFullYear()\n );\n}\n</script>\n<style lang=\"scss\">\n@use \"@vuepic/vue-datepicker/dist/main.css\";\n\n/* stylelint-disable-next-line */\n.dp__theme_light {\n --dp-primary-color: var(--octopus-primary);\n --dp-time-font-size: 1rem;\n}\n</style>\n","<template>\n <div ref=\"divContainer\" tabindex=\"0\">\n <label\n v-if=\"label && !range\"\n class=\"form-label\"\n :for=\"'dp-input-'+id\"\n :class=\"displayLabel ? '' : 'd-none'\"\n >\n {{ label }}\n </label>\n <VueDatePicker\n :uid=\"id\"\n :model-value=\"modelVal\"\n :time-picker=\"isTimePicker\"\n :time-picker-inline=\"isTimePicker && timePickerInline\"\n :input-class-name=\"templateClass\"\n :clearable=\"false\"\n :text-input=\"true\"\n :readonly=\"readonly\"\n :teleport=\"useTeleport\"\n :locale=\"locales[locale] ?? fr\"\n :format=\"format\"\n :auto-apply=\"true\"\n :enable-seconds=\"displaySeconds\"\n :max-date=\"isMaxDate && !isTimePicker ? limit : undefined\"\n :min-date=\"isMinDate && !isTimePicker ? limit : undefined\"\n :range=\"undefined !== range\"\n :multi-calendars=\"columnNumber > 1 ? columnNumber : false\"\n :inline=\"isInline\"\n :enable-time-picker=\"!isTimePicker ? displayTimePicker : undefined\"\n :aria-labels=\"ariaLabels\"\n :max-time=\"maxTime\"\n :month-picker=\"monthPicker\"\n :alt-position=\"customPosition\"\n @update:model-value=\"updateValue($event)\"\n >\n <template v-if=\"isTimePicker\" #input-icon>\n <ClockOutlineIcon :size=\"16\" class=\"ms-2\" />\n </template>\n </VueDatePicker>\n </div>\n</template>\n\n<script setup lang=\"ts\">\nimport ClockOutlineIcon from \"vue-material-design-icons/ClockOutline.vue\";\nimport dayjs from \"dayjs\";\nimport { VueDatePicker } from \"@vuepic/vue-datepicker\";\nimport { computed, useTemplateRef } from \"vue\";\nimport { useI18n } from \"vue-i18n\";\nimport { de, enUS, es, fr, it, sl } from \"date-fns/locale\";\n\nconst locales = { de, enUS, es, fr, it, sl };\n\n//Props \nconst props = defineProps({\n id:{ default: undefined, type: String },\n time: {\n default: undefined,\n type: Object as () => { hours: number; minutes: number; seconds: number },\n },\n date: { default: undefined, type: Date },\n range: { default: undefined, type: Array as () => Array<Date> },\n /**\n * Enable maximum date limit.\n * If `dateLimit` is not set, use current datetime.\n */\n isMaxDate: { default: false, type: Boolean },\n /** Date limit when `isMaxDate` or `isMinDate` are set */\n dateLimit: { default: undefined, type: Date },\n /**\n * Enable minimum date limit.\n * If `dateLimit` is not set, use current datetime.\n */\n isMinDate: { default: false, type: Boolean },\n columnNumber: { default: 1, type: Number },\n displaySeconds: { default: false, type: Boolean },\n displayTimePicker: { default: true, type: Boolean },\n isTimePicker: { default: false, type: Boolean },\n useTeleport: { default: false, type: Boolean },\n templateClass: { default: undefined, type: String },\n readonly: { default: false, type: Boolean },\n maxTime: {\n default: null,\n type: Object as () => {\n hours?: number | string;\n minutes?: number | string;\n seconds?: number | string;\n },\n },\n forceFormat: { default: undefined, type: String },\n monthPicker: { default: false, type: Boolean },\n customPosition: { default: null, type: Function },\n isInline: { default: false, type: Boolean },\n timePickerInline: { default: false, type: Boolean },\n label: { default: undefined, type: String },\n displayLabel: { default: false, type: Boolean },\n})\n\n//Emits\nconst emit = defineEmits<{\n /**\n * Update the date\n * @param value The new date\n * @deprecated\n */\n (e: \"updateDate\", value: Date): void;\n /**\n * Update the date\n * @param value The new date\n */\n (e: \"update:date\", value: Date): void;\n}>();\n\n//Data\nconst divContainerRef = useTemplateRef('divContainer');\n\n//Composables\nconst { locale } = useI18n();\n\n//Computed\nconst ariaLabels = computed(() => {\n return {\n input: props.date ? formatDate(props.date) : undefined,\n day: (value: { value: Date }) => {\n return formatDate(value.value);\n },\n };\n});\nconst modelVal = computed(() => {\n if (props.time) {\n return props.time;\n }\n if (props.range) {\n return props.range;\n }\n if (props.date && props.monthPicker) {\n return {\n month: props.date.getMonth(),\n year: props.date.getFullYear(),\n };\n }\n return props.date;\n});\nconst format = computed(() => {\n if (props.forceFormat) {\n return props.forceFormat;\n }\n if (props.monthPicker) {\n return \"MM/yyyy\";\n }\n let timeString = \"\";\n if (props.displayTimePicker || props.isTimePicker) {\n timeString = \"HH:mm\";\n if (props.displaySeconds) {\n timeString = \"HH:mm:ss\";\n }\n }\n const dayString = props.isTimePicker\n ? timeString\n : \"dd/MM/yyyy \" + timeString;\n return props.range ? dayString + \" - \" + dayString : dayString;\n});\nconst limit = computed(() => {\n if (props.dateLimit) {\n return props.dateLimit;\n }\n return dayjs().toDate();\n});\n\n\n//Methods\nfunction updateValue(date: Date) {\n if (!props.isInline) {\n (divContainerRef?.value as HTMLElement)?.focus();\n }\n emit(\"updateDate\", date);\n emit(\"update:date\", date);\n}\n\nfunction formatDate(value: Date): string {\n const realMonth = value.getMonth() + 1;\n return (\n value.getDate() +\n \"/\" +\n (realMonth < 10 ? \"0\" : \"\") +\n realMonth +\n \"/\" +\n value.getFullYear()\n );\n}\n</script>\n<style lang=\"scss\">\n@use \"@vuepic/vue-datepicker/dist/main.css\";\n\n/* stylelint-disable-next-line */\n.dp__theme_light {\n --dp-primary-color: var(--octopus-primary);\n --dp-time-font-size: 1rem;\n}\n</style>\n"],"mappings":"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"}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ClassicDatePicker-dgdGXcRk.mjs","names":["_openBlock","_createElementBlock","_normalizeClass","_toDisplayString","_createCommentVNode","_createVNode","_createSlots","_withCtx","_sfc_main"],"sources":["../src/components/form/ClassicDatePicker.vue","../src/components/form/ClassicDatePicker.vue"],"sourcesContent":["<template>\n <div ref=\"divContainer\" tabindex=\"0\">\n <label\n v-if=\"label && !range\"\n class=\"form-label\"\n :for=\"'dp-input-'+id\"\n :class=\"displayLabel ? '' : 'd-none'\"\n >\n {{ label }}\n </label>\n <VueDatePicker\n :model-value=\"modelVal\"\n :time-picker=\"isTimePicker\"\n :time-config=\"timeConfig\"\n :ui=\"{ input: templateClass }\"\n :input-attrs=\"{ clearable: false, id: 'dp-input-' + id }\"\n :text-input=\"true\"\n :readonly=\"readonly\"\n :teleport=\"useTeleport\"\n :locale=\"getLocale(locale)\"\n :formats=\"{ input: format }\"\n :auto-apply=\"true\"\n :max-date=\"isMaxDate && !isTimePicker ? limit : undefined\"\n :min-date=\"isMinDate && !isTimePicker ? limit : undefined\"\n :range=\"undefined !== range\"\n :multi-calendars=\"columnNumber > 1 ? columnNumber : false\"\n :inline=\"isInline\"\n :aria-labels=\"ariaLabels\"\n :max-time=\"maxTime\"\n :month-picker=\"monthPicker\"\n @update:model-value=\"updateValue($event)\"\n >\n <template v-if=\"isTimePicker\" #input-icon>\n <ClockOutlineIcon :size=\"16\" class=\"ms-2\" />\n </template>\n </VueDatePicker>\n </div>\n</template>\n\n<script setup lang=\"ts\">\nimport ClockOutlineIcon from \"vue-material-design-icons/ClockOutline.vue\";\nimport dayjs from \"dayjs\";\nimport { VueDatePicker } from \"@vuepic/vue-datepicker\";\nimport { computed, useTemplateRef } from \"vue\";\nimport { useI18n } from \"vue-i18n\";\nimport { getLocale } from \"@/i18n\";\n\n//Props \nconst props = defineProps({\n id:{ default: undefined, type: String },\n time: {\n default: undefined,\n type: Object as () => { hours: number; minutes: number; seconds: number },\n },\n date: { default: undefined, type: Date },\n range: { default: undefined, type: Array as () => Array<Date> },\n /**\n * Enable maximum date limit.\n * If `dateLimit` is not set, use current datetime.\n */\n isMaxDate: { default: false, type: Boolean },\n /** Date limit when `isMaxDate` or `isMinDate` are set */\n dateLimit: { default: undefined, type: Date },\n /**\n * Enable minimum date limit.\n * If `dateLimit` is not set, use current datetime.\n */\n isMinDate: { default: false, type: Boolean },\n columnNumber: { default: 1, type: Number },\n displaySeconds: { default: false, type: Boolean },\n displayTimePicker: { default: true, type: Boolean },\n isTimePicker: { default: false, type: Boolean },\n useTeleport: { default: false, type: Boolean },\n templateClass: { default: undefined, type: String },\n readonly: { default: false, type: Boolean },\n maxTime: {\n default: null,\n type: Object as () => {\n hours: number | string;\n minutes: number | string;\n seconds?: number | string;\n },\n },\n forceFormat: { default: undefined, type: String },\n monthPicker: { default: false, type: Boolean },\n /** @deprecated No longer supported since vue-datepicker v14 */\n customPosition: { default: null, type: Function },\n isInline: { default: false, type: Boolean },\n timePickerInline: { default: false, type: Boolean },\n label: { default: undefined, type: String },\n displayLabel: { default: false, type: Boolean },\n})\n\n//Emits\nconst emit = defineEmits<{\n /**\n * Update the date\n * @param value The new date\n * @deprecated\n */\n (e: \"updateDate\", value: Date): void;\n /**\n * Update the date\n * @param value The new date\n */\n (e: \"update:date\", value: Date): void;\n}>();\n\n//Data\nconst divContainerRef = useTemplateRef('divContainer');\n\n//Composables\nconst { locale } = useI18n();\n\n//Computed\nconst ariaLabels = computed(() => {\n return {\n input: props.date ? formatDate(props.date) : undefined,\n day: (value: { value: Date }) => {\n return formatDate(value.value);\n },\n };\n});\nconst modelVal = computed(() => {\n if (props.time) {\n return props.time;\n }\n if (props.range) {\n return props.range;\n }\n if (props.date && props.monthPicker) {\n return {\n month: props.date.getMonth(),\n year: props.date.getFullYear(),\n };\n }\n return props.date;\n});\nconst format = computed(() => {\n if (props.forceFormat) {\n return props.forceFormat;\n }\n if (props.monthPicker) {\n return \"MM/yyyy\";\n }\n let timeString = \"\";\n if (props.displayTimePicker || props.isTimePicker) {\n timeString = \"HH:mm\";\n if (props.displaySeconds) {\n timeString = \"HH:mm:ss\";\n }\n }\n const dayString = props.isTimePicker\n ? timeString\n : \"dd/MM/yyyy \" + timeString;\n return props.range ? dayString + \" - \" + dayString : dayString;\n});\nconst timeConfig = computed(() => {\n return {\n enableSeconds: props.displaySeconds,\n timePickerInline: props.isTimePicker && props.timePickerInline,\n ...(!props.isTimePicker && { enableTimePicker: props.displayTimePicker })\n };\n});\nconst limit = computed(() => {\n if (props.dateLimit) {\n return props.dateLimit;\n }\n return dayjs().toDate();\n});\n\n\n//Methods\nfunction updateValue(date: Date) {\n if (!props.isInline) {\n (divContainerRef?.value as HTMLElement)?.focus();\n }\n emit(\"updateDate\", date);\n emit(\"update:date\", date);\n}\n\nfunction formatDate(value: Date): string {\n const realMonth = value.getMonth() + 1;\n return (\n value.getDate() +\n \"/\" +\n (realMonth < 10 ? \"0\" : \"\") +\n realMonth +\n \"/\" +\n value.getFullYear()\n );\n}\n</script>\n<style lang=\"scss\">\n@use \"@vuepic/vue-datepicker/dist/main.css\";\n\n/* stylelint-disable-next-line */\n.dp--theme-light {\n --dp-primary-color: var(--octopus-primary);\n --dp-time-font-size: 1rem;\n}\n</style>\n","<template>\n <div ref=\"divContainer\" tabindex=\"0\">\n <label\n v-if=\"label && !range\"\n class=\"form-label\"\n :for=\"'dp-input-'+id\"\n :class=\"displayLabel ? '' : 'd-none'\"\n >\n {{ label }}\n </label>\n <VueDatePicker\n :model-value=\"modelVal\"\n :time-picker=\"isTimePicker\"\n :time-config=\"timeConfig\"\n :ui=\"{ input: templateClass }\"\n :input-attrs=\"{ clearable: false, id: 'dp-input-' + id }\"\n :text-input=\"true\"\n :readonly=\"readonly\"\n :teleport=\"useTeleport\"\n :locale=\"getLocale(locale)\"\n :formats=\"{ input: format }\"\n :auto-apply=\"true\"\n :max-date=\"isMaxDate && !isTimePicker ? limit : undefined\"\n :min-date=\"isMinDate && !isTimePicker ? limit : undefined\"\n :range=\"undefined !== range\"\n :multi-calendars=\"columnNumber > 1 ? columnNumber : false\"\n :inline=\"isInline\"\n :aria-labels=\"ariaLabels\"\n :max-time=\"maxTime\"\n :month-picker=\"monthPicker\"\n @update:model-value=\"updateValue($event)\"\n >\n <template v-if=\"isTimePicker\" #input-icon>\n <ClockOutlineIcon :size=\"16\" class=\"ms-2\" />\n </template>\n </VueDatePicker>\n </div>\n</template>\n\n<script setup lang=\"ts\">\nimport ClockOutlineIcon from \"vue-material-design-icons/ClockOutline.vue\";\nimport dayjs from \"dayjs\";\nimport { VueDatePicker } from \"@vuepic/vue-datepicker\";\nimport { computed, useTemplateRef } from \"vue\";\nimport { useI18n } from \"vue-i18n\";\nimport { getLocale } from \"@/i18n\";\n\n//Props \nconst props = defineProps({\n id:{ default: undefined, type: String },\n time: {\n default: undefined,\n type: Object as () => { hours: number; minutes: number; seconds: number },\n },\n date: { default: undefined, type: Date },\n range: { default: undefined, type: Array as () => Array<Date> },\n /**\n * Enable maximum date limit.\n * If `dateLimit` is not set, use current datetime.\n */\n isMaxDate: { default: false, type: Boolean },\n /** Date limit when `isMaxDate` or `isMinDate` are set */\n dateLimit: { default: undefined, type: Date },\n /**\n * Enable minimum date limit.\n * If `dateLimit` is not set, use current datetime.\n */\n isMinDate: { default: false, type: Boolean },\n columnNumber: { default: 1, type: Number },\n displaySeconds: { default: false, type: Boolean },\n displayTimePicker: { default: true, type: Boolean },\n isTimePicker: { default: false, type: Boolean },\n useTeleport: { default: false, type: Boolean },\n templateClass: { default: undefined, type: String },\n readonly: { default: false, type: Boolean },\n maxTime: {\n default: null,\n type: Object as () => {\n hours: number | string;\n minutes: number | string;\n seconds?: number | string;\n },\n },\n forceFormat: { default: undefined, type: String },\n monthPicker: { default: false, type: Boolean },\n /** @deprecated No longer supported since vue-datepicker v14 */\n customPosition: { default: null, type: Function },\n isInline: { default: false, type: Boolean },\n timePickerInline: { default: false, type: Boolean },\n label: { default: undefined, type: String },\n displayLabel: { default: false, type: Boolean },\n})\n\n//Emits\nconst emit = defineEmits<{\n /**\n * Update the date\n * @param value The new date\n * @deprecated\n */\n (e: \"updateDate\", value: Date): void;\n /**\n * Update the date\n * @param value The new date\n */\n (e: \"update:date\", value: Date): void;\n}>();\n\n//Data\nconst divContainerRef = useTemplateRef('divContainer');\n\n//Composables\nconst { locale } = useI18n();\n\n//Computed\nconst ariaLabels = computed(() => {\n return {\n input: props.date ? formatDate(props.date) : undefined,\n day: (value: { value: Date }) => {\n return formatDate(value.value);\n },\n };\n});\nconst modelVal = computed(() => {\n if (props.time) {\n return props.time;\n }\n if (props.range) {\n return props.range;\n }\n if (props.date && props.monthPicker) {\n return {\n month: props.date.getMonth(),\n year: props.date.getFullYear(),\n };\n }\n return props.date;\n});\nconst format = computed(() => {\n if (props.forceFormat) {\n return props.forceFormat;\n }\n if (props.monthPicker) {\n return \"MM/yyyy\";\n }\n let timeString = \"\";\n if (props.displayTimePicker || props.isTimePicker) {\n timeString = \"HH:mm\";\n if (props.displaySeconds) {\n timeString = \"HH:mm:ss\";\n }\n }\n const dayString = props.isTimePicker\n ? timeString\n : \"dd/MM/yyyy \" + timeString;\n return props.range ? dayString + \" - \" + dayString : dayString;\n});\nconst timeConfig = computed(() => {\n return {\n enableSeconds: props.displaySeconds,\n timePickerInline: props.isTimePicker && props.timePickerInline,\n ...(!props.isTimePicker && { enableTimePicker: props.displayTimePicker })\n };\n});\nconst limit = computed(() => {\n if (props.dateLimit) {\n return props.dateLimit;\n }\n return dayjs().toDate();\n});\n\n\n//Methods\nfunction updateValue(date: Date) {\n if (!props.isInline) {\n (divContainerRef?.value as HTMLElement)?.focus();\n }\n emit(\"updateDate\", date);\n emit(\"update:date\", date);\n}\n\nfunction formatDate(value: Date): string {\n const realMonth = value.getMonth() + 1;\n return (\n value.getDate() +\n \"/\" +\n (realMonth < 10 ? \"0\" : \"\") +\n realMonth +\n \"/\" +\n value.getFullYear()\n );\n}\n</script>\n<style lang=\"scss\">\n@use \"@vuepic/vue-datepicker/dist/main.css\";\n\n/* stylelint-disable-next-line */\n.dp--theme-light {\n --dp-primary-color: var(--octopus-primary);\n --dp-time-font-size: 1rem;\n}\n</style>\n"],"mappings":"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"}
@@ -1,5 +1,5 @@
1
1
  import { t as e } from "./useResizePhone-4hSkK5pa.mjs";
2
- import { t } from "./ClassicPopover-DWR50Nxi.mjs";
2
+ import { t } from "./ClassicPopover-BUb-1WMB.mjs";
3
3
  import { createCommentVNode as n, createElementBlock as r, createElementVNode as i, createVNode as a, defineComponent as o, openBlock as s, unref as c, withCtx as l } from "vue";
4
4
  import { useI18n as u } from "vue-i18n";
5
5
  import d from "vue-material-design-icons/EmoticonExcitedOutline.vue";
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ClassicEmojiPicker-CJZD8H7L.mjs","names":["_openBlock","_createElementBlock","_createElementVNode","_createVNode","_withCtx","_createCommentVNode","_sfc_main"],"sources":["../src/components/form/ClassicEmojiPicker.vue","../src/components/form/ClassicEmojiPicker.vue"],"sourcesContent":["<template>\n <div v-if=\"!isPhone\" class=\"classic-emoji-picker\">\n <button\n :id=\"'emoji-picker-dropdown'+id\"\n ref=\"emojiButton\"\n class=\"btn btn-transparent d-flex align-items-center justify-content-center\"\n :title=\"t('Pick your emoji')\"\n >\n <EmoticonExcitedOutlineIcon :size=\"34\" />\n </button>\n <ClassicPopover\n :target=\"'emoji-picker-dropdown'+id\"\n :only-click=\"true\"\n :is-fixed=\"true\"\n :is-top-layer=\"isTopPosition\"\n :top-pos=\"isTopPosition\"\n :relative-class=\"popoverRelativeClass\"\n :popover-class=\"isTopPosition?'popover-z-index':''\"\n >\n <Picker\n :data=\"emojiIndex\"\n :title=\"t('Pick your emoji')\"\n emoji=\"point_up\"\n @select=\"emit('emojiSelected', $event.native)\"\n />\n </ClassicPopover>\n </div>\n</template>\n\n<script setup lang=\"ts\">\nimport {useResizePhone} from \"../composable/useResizePhone\";\nimport EmoticonExcitedOutlineIcon from \"vue-material-design-icons/EmoticonExcitedOutline.vue\";\nimport ClassicPopover from \"../misc/ClassicPopover.vue\";\nimport data from \"emoji-mart-vue-fast/data/all.json\";\nimport \"emoji-mart-vue-fast/css/emoji-mart.css\";\nimport { Picker, EmojiIndex } from \"emoji-mart-vue-fast/src\";\nimport { useI18n } from \"vue-i18n\";\n\n//Props \ndefineProps({\n popoverRelativeClass: { default: undefined, type: String },\n isTopPosition: { default: false, type: Boolean },\n id: { default: \"\", type: String },\n})\n\n//Emits\nconst emit = defineEmits([\"emojiSelected\"]);\n\n//Data \nconst emojiIndex = new EmojiIndex(data);\n\n//Composables\nconst { t } = useI18n();\nconst { isPhone } = useResizePhone();\n</script>\n\n","<template>\n <div v-if=\"!isPhone\" class=\"classic-emoji-picker\">\n <button\n :id=\"'emoji-picker-dropdown'+id\"\n ref=\"emojiButton\"\n class=\"btn btn-transparent d-flex align-items-center justify-content-center\"\n :title=\"t('Pick your emoji')\"\n >\n <EmoticonExcitedOutlineIcon :size=\"34\" />\n </button>\n <ClassicPopover\n :target=\"'emoji-picker-dropdown'+id\"\n :only-click=\"true\"\n :is-fixed=\"true\"\n :is-top-layer=\"isTopPosition\"\n :top-pos=\"isTopPosition\"\n :relative-class=\"popoverRelativeClass\"\n :popover-class=\"isTopPosition?'popover-z-index':''\"\n >\n <Picker\n :data=\"emojiIndex\"\n :title=\"t('Pick your emoji')\"\n emoji=\"point_up\"\n @select=\"emit('emojiSelected', $event.native)\"\n />\n </ClassicPopover>\n </div>\n</template>\n\n<script setup lang=\"ts\">\nimport {useResizePhone} from \"../composable/useResizePhone\";\nimport EmoticonExcitedOutlineIcon from \"vue-material-design-icons/EmoticonExcitedOutline.vue\";\nimport ClassicPopover from \"../misc/ClassicPopover.vue\";\nimport data from \"emoji-mart-vue-fast/data/all.json\";\nimport \"emoji-mart-vue-fast/css/emoji-mart.css\";\nimport { Picker, EmojiIndex } from \"emoji-mart-vue-fast/src\";\nimport { useI18n } from \"vue-i18n\";\n\n//Props \ndefineProps({\n popoverRelativeClass: { default: undefined, type: String },\n isTopPosition: { default: false, type: Boolean },\n id: { default: \"\", type: String },\n})\n\n//Emits\nconst emit = defineEmits([\"emojiSelected\"]);\n\n//Data \nconst emojiIndex = new EmojiIndex(data);\n\n//Composables\nconst { t } = useI18n();\nconst { isPhone } = useResizePhone();\n</script>\n\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;EA8CA,MAAM,OAAO;EAGb,MAAM,aAAa,IAAI,WAAW,IAAI;EAGtC,MAAM,EAAE,MAAM,QAAQ;EACtB,MAAM,EAAE,YAAY,eAAe;;;;;;;;;;;;;;;;;;;;;;;CCpDZ,OAAM;;;;CAAf,OAAA,CAAA,OAAA,WAAZA,UAAA,GAAAC,mBAyBM,OAzBN,YAyBM,CAxBJC,mBAOS,UAAA;EANN,IAAE,0BAA0B,OAAA;EAC7B,KAAI;EACJ,OAAM;EACL,OAAO,OAAA,EAAC,iBAAA;CAET,GAAA,CAAAC,YAAyC,OAAA,+BAAA,EAAZ,MAAM,GAAE,CAAA,CAAA,GAAA,GAAA,UAAA,GAEvCA,YAeiB,OAAA,mBAAA;EAdd,QAAM,0BAA0B,OAAA;EAChC,cAAY;EACZ,YAAU;EACV,gBAAc,OAAA;EACd,WAAS,OAAA;EACT,kBAAgB,OAAA;EAChB,iBAAe,OAAA,gBAAa,oBAAA;;EAE7B,SAAAC,cAKE,CALFD,YAKE,OAAA,WAAA;GAJC,MAAM,OAAA;GACN,OAAO,OAAA,EAAC,iBAAA;GACT,OAAM;GACL,UAAM,OAAA,OAAA,OAAA,MAAA,WAAE,OAAA,KAAI,iBAAkB,OAAO,MAAM"}
@@ -1,6 +1,6 @@
1
1
  import { t as e } from "./rolldown-runtime-Dy4uBu1J.mjs";
2
2
  import { t } from "./_plugin-vue_export-helper-B3ysoDQm.mjs";
3
- import { t as n } from "./ClassicPopover-DWR50Nxi.mjs";
3
+ import { t as n } from "./ClassicPopover-BUb-1WMB.mjs";
4
4
  import { computed as r, createElementBlock as i, createElementVNode as a, createVNode as o, defineComponent as s, getCurrentInstance as c, openBlock as l, renderSlot as u, withCtx as d } from "vue";
5
5
  import f from "vue-material-design-icons/HelpCircle.vue";
6
6
  //#region src/components/misc/ClassicHelpButton.vue?vue&type=script&setup=true&lang.ts
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ClassicHelpButton-Qb4AwvWI.mjs","names":["_openBlock","_createElementBlock","_createCommentVNode","_createVNode","_withCtx","_createElementVNode","_renderSlot","_sfc_main"],"sources":["../src/components/misc/ClassicHelpButton.vue","../src/components/misc/ClassicHelpButton.vue"],"sourcesContent":["<!--\n A simple component to display a help button that shows its message when\n hovered.\n\n Usage: \n <ClassicHelpButton>This is my help message</ClassicHelpButton>\n-->\n<template>\n <button\n :id=\"computedId\"\n class=\"btn-transparent\"\n >\n <!-- Button icon -->\n <HelpCircleIcon :fill-color=\"color\" :size=\"iconSize\" />\n\n <!-- Tooltip -->\n <ClassicPopover\n :target=\"computedId\"\n popover-class=\"help-popover\"\n :relative-class=\"inModal ? 'octopus-modal' : relativeClass\"\n >\n <div class=\"content\">\n <slot />\n </div>\n </ClassicPopover>\n </button>\n</template>\n\n<script setup lang=\"ts\">\nimport { computed, getCurrentInstance } from 'vue';\n\nimport HelpCircleIcon from \"vue-material-design-icons/HelpCircle.vue\";\nimport ClassicPopover from './ClassicPopover.vue';\n\nconst { colored, small } = defineProps<{\n colored?: boolean;\n /** Automatically sets relative class to octopus-modal */\n inModal?: boolean;\n /** Make the popover relative (userful when in page-element) */\n relativeClass?: string;\n /** Make the icon smaller if true *(default: false)* */\n small?: boolean;\n}>();\n\n/** The color to use for the icon */\nconst color = computed(() => {\n if (colored) {\n return \"var(--octopus-primary-darker)\";\n } else {\n return \"black\";\n }\n});\n\n/** The internal ID for the elements */\nconst computedId = computed(() => {\n return 'popover-' + getCurrentInstance()?.uid;\n});\n\n/** The size of the icon, according to the props */\nconst iconSize = computed(() => {\n if (small) {\n return 24;\n } else {\n return 30;\n }\n});\n</script>\n\n<style lang=\"scss\" scoped>\n.content {\n font: revert;\n font-size: 18px !important;\n text-align: start;\n}\n\n.help-popover {\n background-color: var(--octopus-secondary-lighter);\n max-width: 60%;\n}\n</style>\n","<!--\n A simple component to display a help button that shows its message when\n hovered.\n\n Usage: \n <ClassicHelpButton>This is my help message</ClassicHelpButton>\n-->\n<template>\n <button\n :id=\"computedId\"\n class=\"btn-transparent\"\n >\n <!-- Button icon -->\n <HelpCircleIcon :fill-color=\"color\" :size=\"iconSize\" />\n\n <!-- Tooltip -->\n <ClassicPopover\n :target=\"computedId\"\n popover-class=\"help-popover\"\n :relative-class=\"inModal ? 'octopus-modal' : relativeClass\"\n >\n <div class=\"content\">\n <slot />\n </div>\n </ClassicPopover>\n </button>\n</template>\n\n<script setup lang=\"ts\">\nimport { computed, getCurrentInstance } from 'vue';\n\nimport HelpCircleIcon from \"vue-material-design-icons/HelpCircle.vue\";\nimport ClassicPopover from './ClassicPopover.vue';\n\nconst { colored, small } = defineProps<{\n colored?: boolean;\n /** Automatically sets relative class to octopus-modal */\n inModal?: boolean;\n /** Make the popover relative (userful when in page-element) */\n relativeClass?: string;\n /** Make the icon smaller if true *(default: false)* */\n small?: boolean;\n}>();\n\n/** The color to use for the icon */\nconst color = computed(() => {\n if (colored) {\n return \"var(--octopus-primary-darker)\";\n } else {\n return \"black\";\n }\n});\n\n/** The internal ID for the elements */\nconst computedId = computed(() => {\n return 'popover-' + getCurrentInstance()?.uid;\n});\n\n/** The size of the icon, according to the props */\nconst iconSize = computed(() => {\n if (small) {\n return 24;\n } else {\n return 30;\n }\n});\n</script>\n\n<style lang=\"scss\" scoped>\n.content {\n font: revert;\n font-size: 18px !important;\n text-align: start;\n}\n\n.help-popover {\n background-color: var(--octopus-secondary-lighter);\n max-width: 60%;\n}\n</style>\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6Cc,OAAA,eAAe;IACzB,IAAI,QAAA,SACA,OAAO;SAEP,OAAO;GAEf,CAAA;GAGmB,YAAA,eAAe;IAC9B,OAAO,aAAa,mBAAmB,CAAC,EAAE;GAC9C,CAAA;GAGiB,UAAA,eAAe;IAC5B,IAAI,QAAA,OACA,OAAO;SAEP,OAAO;GAEf,CAAA;;;;;;;;;;;;;;;AC5CiB,IAAA,aAAA,EAAA,OAAM,UAAS;;CAb5B,OAAAA,UAAA,GAAAC,mBAiBS,UAAA;EAhBJ,IAAI,OAAA;EACL,OAAM;;EAENC,mBAAA,eAAA;EACAC,YAAuD,OAAA,mBAAA;GAAtC,cAAY,OAAA;GAAQ,MAAM,OAAA;;EAE3CD,mBAAA,WAAA;EACAC,YAQiB,OAAA,mBAAA;GAPZ,QAAQ,OAAA;GACT,iBAAc;GACb,kBAAgB,OAAA,UAAO,kBAAqB,OAAA;;GAE7C,SAAAC,cAEM,CAFNC,mBAEM,OAFN,YAEM,CADFC,WAAQ,KAAA,QAAA,WAAA,CAAA,GAAA,KAAA,GAAA,IAAA,CAAA,CAAA,CAAA,CAAA"}
@@ -158,7 +158,7 @@ var ee = { class: "d-flex align-items-center" }, j = ["id", "title"], M = ["inne
158
158
  "blur"
159
159
  ],
160
160
  setup(e, { emit: u }) {
161
- let z = l(() => import("./ClassicPopover-DWR50Nxi.mjs").then((e) => e.n)), B = l(() => import("./ClassicWysiwyg-cp3PQYAd.mjs")), V = l(() => import("./ClassicEmojiPicker-B4TAlZvo.mjs")), H = e, U = u, W = g(void 0), G = x("focusElement"), { t: K } = O(), q = n(() => H.inputId || "input-" + d()?.uid), J = n(() => !X.value || !Z.value || !Q.value), Y = n(() => W.value ? W.value.length : 0), X = n(() => H.canBeNull ? !0 : W.value ? W.value.trim().length !== 0 : !1), Z = n(() => H.maxLength === 0 || H.maxLength >= Y.value), Q = n(() => H.regex === void 0 ? !0 : !W.value || W.value === "" ? H.canBeNull : W.value.match(H.regex) !== null);
161
+ let z = l(() => import("./ClassicPopover-BUb-1WMB.mjs").then((e) => e.n)), B = l(() => import("./ClassicWysiwyg-cp3PQYAd.mjs")), V = l(() => import("./ClassicEmojiPicker-C0gm-DA2.mjs")), H = e, U = u, W = g(void 0), G = x("focusElement"), { t: K } = O(), q = n(() => H.inputId || "input-" + d()?.uid), J = n(() => !X.value || !Z.value || !Q.value), Y = n(() => W.value ? W.value.length : 0), X = n(() => H.canBeNull ? !0 : W.value ? W.value.trim().length !== 0 : !1), Z = n(() => H.maxLength === 0 || H.maxLength >= Y.value), Q = n(() => H.regex === void 0 ? !0 : !W.value || W.value === "" ? H.canBeNull : W.value.match(H.regex) !== null);
162
162
  T(() => H.forceReload, () => {
163
163
  H.textInit !== W.value && (W.value = H.textInit);
164
164
  }), T(J, () => {
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ClassicInputText-npkVSUoH.mjs","names":["_openBlock","_createElementBlock","_normalizeClass","_createElementVNode","_renderSlot","_createBlock","_resolveDynamicComponent","_withCtx","_createTextVNode","_toDisplayString","_createCommentVNode","_Fragment","_createVNode","_withDirectives","_vShow","_vModelDynamic","_vModelText","_sfc_main"],"sources":["../src/components/form/ClassicInputText.vue","../src/components/form/ClassicInputText.vue"],"sourcesContent":["<template>\n <div\n class=\"d-flex flex-column classic-input-text\"\n :class=\"{ 'form-margin': displayLabel }\"\n >\n <div class=\"d-flex align-items-center\">\n <slot name=\"complementLabel\" />\n <component\n :is=\"isWysiwyg? 'div': 'label'\"\n :class=\"[classLabel, displayLabel ? '' : 'd-none']\"\n :for=\"isWysiwyg ? '': computedInputId\"\n >\n {{ label }}\n <AsteriskIcon\n v-if=\"displayRequired\"\n :size=\"10\"\n class=\"ms-1 mb-2\"\n :title=\"t('Mandatory input')\"\n />\n </component>\n <slot name=\"afterTitle\" />\n <template v-if=\"popover\">\n <button\n :id=\"'popover' + computedInputId\"\n :title=\"t('Help')\"\n class=\"btn-transparent\"\n >\n <HelpCircleIcon :size=\"30\" />\n </button>\n\n <ClassicPopover\n :target=\"'popover' + computedInputId\"\n popover-class=\"popover-z-index\"\n :relative-class=\"popoverRelativeClass\"\n >\n <!-- eslint-disable vue/no-v-html -->\n <div v-html=\"popover\" />\n <!-- eslint-enable -->\n </ClassicPopover>\n </template>\n <slot name=\"afterHelp\" />\n </div>\n <slot name=\"betweenTitleInput\" />\n <input\n v-if=\"!isWysiwyg && !isTextarea\"\n v-show=\"showField\"\n :id=\"computedInputId\"\n ref=\"focusElement\"\n v-model=\"textValue\"\n :type=\"typeInput\"\n class=\"form-input\"\n :placeholder=\"placeholder\"\n :data-selenium=\"dataSelenium\"\n :data-value=\"textValue\"\n :maxlength=\"inputMaxLengthField\"\n :readonly=\"readonly ? 'readonly' : undefined\"\n :class=\"{\n 'border border-danger':\n forceError || (isError && (undefined !== textValue || canBeNull)),\n }\"\n :disabled=\"isDisable || disabled\"\n :required=\"!canBeNull\"\n :aria-required=\"!canBeNull\"\n :autocomplete=\"autocompleteType\"\n @blur=\"emit('blur')\"\n >\n <textarea\n v-else-if=\"isTextarea\"\n v-show=\"showField\"\n :id=\"computedInputId\"\n ref=\"focusElement\"\n v-model=\"textValue\"\n :data-selenium=\"dataSelenium\"\n :placeholder=\"placeholder\"\n :readonly=\"readonly ? 'readonly' : undefined\"\n class=\"form-input\"\n :class=\"{\n 'border border-danger':\n forceError || (isError && (undefined !== textValue || canBeNull)),\n }\"\n :disabled=\"isDisable || disabled\"\n :required=\"!canBeNull\"\n />\n <ClassicWysiwyg\n v-else\n v-show=\"showField\"\n v-model:content=\"textValue\"\n :error-description=\"\n forceError || (isError && (undefined !== textValue || canBeNull))\n \"\n :is-disabled=\"isDisable || disabled\"\n />\n <div class=\"d-flex\">\n <ClassicEmojiPicker\n v-if=\"isEmojiPicker\"\n :popover-relative-class=\"popoverRelativeClass\"\n :is-top-position=\"true\"\n @emoji-selected=\"addEmojiSelected\"\n />\n <div\n v-if=\"isWysiwyg\"\n class=\"h6\"\n >\n {{ t(\"Characters number calculated over HTML code\") }}\n </div>\n <div\n v-else-if=\"'' !== indicText\"\n class=\"text-indic\"\n >\n {{ indicText }}\n </div>\n <div\n v-else-if=\"\n forceError || (isError && (undefined !== textValue || canBeNull))\n \"\n class=\"text-danger\"\n >\n {{ errorText }}\n </div>\n <p\n v-if=\"0 !== maxLength && showField\"\n class=\"counter-align-right\"\n :class=\"{ 'text-danger': !valueLengthValid }\"\n >\n {{ countValue + \" / \" + maxLength }}\n </p>\n </div>\n </div>\n</template>\n\n<script setup lang=\"ts\">\nimport AsteriskIcon from \"vue-material-design-icons/Asterisk.vue\";\nimport HelpCircleIcon from \"vue-material-design-icons/HelpCircle.vue\";\nimport { computed, defineAsyncComponent, onMounted, onUnmounted, Ref, ref, useTemplateRef, watch, getCurrentInstance } from \"vue\";\nimport { useI18n } from \"vue-i18n\";\nconst ClassicPopover = defineAsyncComponent(\n () => import(\"../misc/ClassicPopover.vue\"),\n);\nconst ClassicWysiwyg = defineAsyncComponent(\n () => import(\"./ClassicWysiwyg.vue\"),\n);\nconst ClassicEmojiPicker = defineAsyncComponent(\n () => import(\"./ClassicEmojiPicker.vue\"),\n);\n\n//Props \nconst props = defineProps({\n inputId: { default: \"\", type: String },\n label: { default: \"\", type: String },\n /** The input's value */\n textInit: { default: undefined, type: String },\n maxLength: { default: 0, type: Number },\n errorText: { default: \"\", type: String },\n isTextarea: { default: false, type: Boolean },\n isWysiwyg: { default: false, type: Boolean },\n /** A regex checked against the input, if the input doesn't match mark it with error */\n regex: { default: undefined, type: RegExp },\n canBeNull: { default: false, type: Boolean },\n inputMaxLengthField: { default: undefined, type: Number },\n errorVariable: { default: true, type: Boolean },\n /**\n * Disable the text input\n * @deprecated Use `disabled` instead\n */\n isDisable: { default: false, type: Boolean },\n /**\n * Disable the text input\n */\n disabled: { default: false, type: Boolean },\n indicText: { default: \"\", type: String },\n dataSelenium: { default: \"\", type: String },\n placeholder: { default: \"\", type: String },\n popover: { default: undefined, type: String },\n /**\n * Display content but do not allow changes\n */\n readonly: { default: false, type: Boolean },\n forceError: { default: false, type: Boolean },\n displayLabel: { default: true, type: Boolean },\n focus: { default: false, type: Boolean },\n isEmojiPicker: { default: false, type: Boolean },\n popoverRelativeClass: { default: undefined, type: String },\n forceReload: { default: false, type: Boolean },\n typeInput: { default: \"text\", type: String },\n displayRequired: { default: false, type: Boolean },\n classLabel: { default: \"form-label\", type: String },\n showField: { default: true, type: Boolean },\n autocompleteType: { default: \"off\", type: String },\n})\n\n//Emits\nconst emit = defineEmits([\"update:textInit\", \"update:errorVariable\", \"blur\"]);\n\n//Data \nconst textValue : Ref<string | undefined>= ref(undefined);\nconst focusElementRef = useTemplateRef('focusElement');\n\n//Composables \nconst { t } = useI18n();\n\n//Computed\nconst computedInputId = computed(() => props.inputId || 'input-' + getCurrentInstance()?.uid);\nconst isError = computed(() => !valueTrimValid.value || !valueLengthValid.value || !valueRegexValid.value);\nconst countValue = computed(() => {\n if (textValue.value) {\n return textValue.value.length;\n }\n return 0;\n});\nconst valueTrimValid = computed(() => {\n if (!props.canBeNull) {\n if (!textValue.value) {\n return false;\n }\n return 0 !== textValue.value.trim().length;\n }\n return true;\n});\nconst valueLengthValid = computed(() => {\n if (0 === props.maxLength) {\n return true;\n }\n return props.maxLength >= countValue.value;\n});\nconst valueRegexValid = computed(() => {\n if (props.regex === undefined) {\n return true;\n }\n if (!textValue.value || \"\" === textValue.value) {\n return props.canBeNull;\n }\n return textValue.value.match(props.regex) !== null;\n});\n \n//Watch\nwatch(()=>props.forceReload, () => {\n if (props.textInit !== textValue.value) {\n textValue.value = props.textInit;\n }\n});\nwatch(isError, () => {\n emit(\"update:errorVariable\", isError.value);\n});\nwatch(textValue, () => {\n if (props.textInit !== textValue.value) {\n emit(\"update:textInit\", textValue.value);\n }\n});\nwatch(()=>props.textInit, () => {\n if (props.textInit !== textValue.value) {\n textValue.value = props.textInit;\n }\n});\n\n\nonMounted(()=>{\n if (props.focus) {\n (focusElementRef?.value as HTMLElement)?.focus();\n }\n textValue.value = props.textInit;\n if (props.errorVariable !== isError.value) {\n emit(\"update:errorVariable\", isError.value);\n }\n\n if (props.isTextarea) {\n // Delay a scroll back to the top of the text area\n scrollTimer = setTimeout(() => {\n const textArea = document.getElementById(computedInputId.value);\n if (textArea) {\n textArea.scrollTop = 0;\n }\n }, 100);\n }\n});\n\nlet scrollTimer: ReturnType<typeof setTimeout> | undefined;\nonUnmounted(() => {\n clearTimeout(scrollTimer);\n});\n \n//Methods\nfunction addEmojiSelected(emoji: string) {\n textValue.value = (textValue.value ?? \"\") + emoji;\n}\n</script>\n\n<style lang=\"scss\">\n.octopus-app .classic-input-text {\n .text-indic {\n font-style: italic;\n font-size: 0.7rem;\n color: var(--octopus-gray-text);\n }\n\n textarea {\n height: auto;\n min-height: 120px;\n }\n}\n</style>\n","<template>\n <div\n class=\"d-flex flex-column classic-input-text\"\n :class=\"{ 'form-margin': displayLabel }\"\n >\n <div class=\"d-flex align-items-center\">\n <slot name=\"complementLabel\" />\n <component\n :is=\"isWysiwyg? 'div': 'label'\"\n :class=\"[classLabel, displayLabel ? '' : 'd-none']\"\n :for=\"isWysiwyg ? '': computedInputId\"\n >\n {{ label }}\n <AsteriskIcon\n v-if=\"displayRequired\"\n :size=\"10\"\n class=\"ms-1 mb-2\"\n :title=\"t('Mandatory input')\"\n />\n </component>\n <slot name=\"afterTitle\" />\n <template v-if=\"popover\">\n <button\n :id=\"'popover' + computedInputId\"\n :title=\"t('Help')\"\n class=\"btn-transparent\"\n >\n <HelpCircleIcon :size=\"30\" />\n </button>\n\n <ClassicPopover\n :target=\"'popover' + computedInputId\"\n popover-class=\"popover-z-index\"\n :relative-class=\"popoverRelativeClass\"\n >\n <!-- eslint-disable vue/no-v-html -->\n <div v-html=\"popover\" />\n <!-- eslint-enable -->\n </ClassicPopover>\n </template>\n <slot name=\"afterHelp\" />\n </div>\n <slot name=\"betweenTitleInput\" />\n <input\n v-if=\"!isWysiwyg && !isTextarea\"\n v-show=\"showField\"\n :id=\"computedInputId\"\n ref=\"focusElement\"\n v-model=\"textValue\"\n :type=\"typeInput\"\n class=\"form-input\"\n :placeholder=\"placeholder\"\n :data-selenium=\"dataSelenium\"\n :data-value=\"textValue\"\n :maxlength=\"inputMaxLengthField\"\n :readonly=\"readonly ? 'readonly' : undefined\"\n :class=\"{\n 'border border-danger':\n forceError || (isError && (undefined !== textValue || canBeNull)),\n }\"\n :disabled=\"isDisable || disabled\"\n :required=\"!canBeNull\"\n :aria-required=\"!canBeNull\"\n :autocomplete=\"autocompleteType\"\n @blur=\"emit('blur')\"\n >\n <textarea\n v-else-if=\"isTextarea\"\n v-show=\"showField\"\n :id=\"computedInputId\"\n ref=\"focusElement\"\n v-model=\"textValue\"\n :data-selenium=\"dataSelenium\"\n :placeholder=\"placeholder\"\n :readonly=\"readonly ? 'readonly' : undefined\"\n class=\"form-input\"\n :class=\"{\n 'border border-danger':\n forceError || (isError && (undefined !== textValue || canBeNull)),\n }\"\n :disabled=\"isDisable || disabled\"\n :required=\"!canBeNull\"\n />\n <ClassicWysiwyg\n v-else\n v-show=\"showField\"\n v-model:content=\"textValue\"\n :error-description=\"\n forceError || (isError && (undefined !== textValue || canBeNull))\n \"\n :is-disabled=\"isDisable || disabled\"\n />\n <div class=\"d-flex\">\n <ClassicEmojiPicker\n v-if=\"isEmojiPicker\"\n :popover-relative-class=\"popoverRelativeClass\"\n :is-top-position=\"true\"\n @emoji-selected=\"addEmojiSelected\"\n />\n <div\n v-if=\"isWysiwyg\"\n class=\"h6\"\n >\n {{ t(\"Characters number calculated over HTML code\") }}\n </div>\n <div\n v-else-if=\"'' !== indicText\"\n class=\"text-indic\"\n >\n {{ indicText }}\n </div>\n <div\n v-else-if=\"\n forceError || (isError && (undefined !== textValue || canBeNull))\n \"\n class=\"text-danger\"\n >\n {{ errorText }}\n </div>\n <p\n v-if=\"0 !== maxLength && showField\"\n class=\"counter-align-right\"\n :class=\"{ 'text-danger': !valueLengthValid }\"\n >\n {{ countValue + \" / \" + maxLength }}\n </p>\n </div>\n </div>\n</template>\n\n<script setup lang=\"ts\">\nimport AsteriskIcon from \"vue-material-design-icons/Asterisk.vue\";\nimport HelpCircleIcon from \"vue-material-design-icons/HelpCircle.vue\";\nimport { computed, defineAsyncComponent, onMounted, onUnmounted, Ref, ref, useTemplateRef, watch, getCurrentInstance } from \"vue\";\nimport { useI18n } from \"vue-i18n\";\nconst ClassicPopover = defineAsyncComponent(\n () => import(\"../misc/ClassicPopover.vue\"),\n);\nconst ClassicWysiwyg = defineAsyncComponent(\n () => import(\"./ClassicWysiwyg.vue\"),\n);\nconst ClassicEmojiPicker = defineAsyncComponent(\n () => import(\"./ClassicEmojiPicker.vue\"),\n);\n\n//Props \nconst props = defineProps({\n inputId: { default: \"\", type: String },\n label: { default: \"\", type: String },\n /** The input's value */\n textInit: { default: undefined, type: String },\n maxLength: { default: 0, type: Number },\n errorText: { default: \"\", type: String },\n isTextarea: { default: false, type: Boolean },\n isWysiwyg: { default: false, type: Boolean },\n /** A regex checked against the input, if the input doesn't match mark it with error */\n regex: { default: undefined, type: RegExp },\n canBeNull: { default: false, type: Boolean },\n inputMaxLengthField: { default: undefined, type: Number },\n errorVariable: { default: true, type: Boolean },\n /**\n * Disable the text input\n * @deprecated Use `disabled` instead\n */\n isDisable: { default: false, type: Boolean },\n /**\n * Disable the text input\n */\n disabled: { default: false, type: Boolean },\n indicText: { default: \"\", type: String },\n dataSelenium: { default: \"\", type: String },\n placeholder: { default: \"\", type: String },\n popover: { default: undefined, type: String },\n /**\n * Display content but do not allow changes\n */\n readonly: { default: false, type: Boolean },\n forceError: { default: false, type: Boolean },\n displayLabel: { default: true, type: Boolean },\n focus: { default: false, type: Boolean },\n isEmojiPicker: { default: false, type: Boolean },\n popoverRelativeClass: { default: undefined, type: String },\n forceReload: { default: false, type: Boolean },\n typeInput: { default: \"text\", type: String },\n displayRequired: { default: false, type: Boolean },\n classLabel: { default: \"form-label\", type: String },\n showField: { default: true, type: Boolean },\n autocompleteType: { default: \"off\", type: String },\n})\n\n//Emits\nconst emit = defineEmits([\"update:textInit\", \"update:errorVariable\", \"blur\"]);\n\n//Data \nconst textValue : Ref<string | undefined>= ref(undefined);\nconst focusElementRef = useTemplateRef('focusElement');\n\n//Composables \nconst { t } = useI18n();\n\n//Computed\nconst computedInputId = computed(() => props.inputId || 'input-' + getCurrentInstance()?.uid);\nconst isError = computed(() => !valueTrimValid.value || !valueLengthValid.value || !valueRegexValid.value);\nconst countValue = computed(() => {\n if (textValue.value) {\n return textValue.value.length;\n }\n return 0;\n});\nconst valueTrimValid = computed(() => {\n if (!props.canBeNull) {\n if (!textValue.value) {\n return false;\n }\n return 0 !== textValue.value.trim().length;\n }\n return true;\n});\nconst valueLengthValid = computed(() => {\n if (0 === props.maxLength) {\n return true;\n }\n return props.maxLength >= countValue.value;\n});\nconst valueRegexValid = computed(() => {\n if (props.regex === undefined) {\n return true;\n }\n if (!textValue.value || \"\" === textValue.value) {\n return props.canBeNull;\n }\n return textValue.value.match(props.regex) !== null;\n});\n \n//Watch\nwatch(()=>props.forceReload, () => {\n if (props.textInit !== textValue.value) {\n textValue.value = props.textInit;\n }\n});\nwatch(isError, () => {\n emit(\"update:errorVariable\", isError.value);\n});\nwatch(textValue, () => {\n if (props.textInit !== textValue.value) {\n emit(\"update:textInit\", textValue.value);\n }\n});\nwatch(()=>props.textInit, () => {\n if (props.textInit !== textValue.value) {\n textValue.value = props.textInit;\n }\n});\n\n\nonMounted(()=>{\n if (props.focus) {\n (focusElementRef?.value as HTMLElement)?.focus();\n }\n textValue.value = props.textInit;\n if (props.errorVariable !== isError.value) {\n emit(\"update:errorVariable\", isError.value);\n }\n\n if (props.isTextarea) {\n // Delay a scroll back to the top of the text area\n scrollTimer = setTimeout(() => {\n const textArea = document.getElementById(computedInputId.value);\n if (textArea) {\n textArea.scrollTop = 0;\n }\n }, 100);\n }\n});\n\nlet scrollTimer: ReturnType<typeof setTimeout> | undefined;\nonUnmounted(() => {\n clearTimeout(scrollTimer);\n});\n \n//Methods\nfunction addEmojiSelected(emoji: string) {\n textValue.value = (textValue.value ?? \"\") + emoji;\n}\n</script>\n\n<style lang=\"scss\">\n.octopus-app .classic-input-text {\n .text-indic {\n font-style: italic;\n font-size: 0.7rem;\n color: var(--octopus-gray-text);\n }\n\n textarea {\n height: auto;\n min-height: 120px;\n }\n}\n</style>\n"],"mappings":"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"}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ClassicMultiselect-2I2K-o4R.mjs","names":["_openBlock","_createElementBlock","_normalizeClass","_normalizeStyle","_createElementVNode","_createTextVNode","_toDisplayString","_createBlock","_createCommentVNode","_Fragment","_createVNode","_withCtx","_createSlots","_renderSlot","_normalizeProps","_guardReactiveProps","_sfc_main"],"sources":["../src/components/form/ClassicMultiselect.vue","../src/components/form/ClassicMultiselect.vue"],"sourcesContent":["<template>\n <div\n :class=\"{\n 'multiselect-in-modal': inModal,\n 'multiselect-no-deselect': noDeselect,\n 'form-margin': displayLabel,\n }\"\n :style=\"{ width: width, height: height }\"\n >\n <div class=\"d-flex align-items-center\">\n <label :class=\"displayLabel ? '' : 'd-none'\" :for=\"id\" class=\"form-label\">{{\n label\n }}\n <AsteriskIcon v-if=\"displayRequired\" :size=\"10\" class=\"ms-1 mb-2\" :title=\"t('Mandatory input')\"/>\n </label>\n\n <template v-if=\"popover\">\n <button\n :id=\"'popover' + id\"\n :title=\"t('Help')\"\n class=\"btn-transparent\"\n >\n <HelpCircleIcon :size=\"30\" />\n </button>\n <ClassicPopover\n :target=\"'popover' + id\"\n popover-class=\"popover-z-index\"\n :relative-class=\"popoverRelativeClass\"\n >\n <!-- eslint-disable vue/no-v-html -->\n <div v-html=\"popover\" />\n <!-- eslint-enable -->\n </ClassicPopover>\n </template>\n </div>\n\n <vSelect\n v-model=\"optionSelected\"\n :input-id=\"id\"\n :label=\"optionLabel\"\n :multiple=\"multiple\"\n :options=\"options\"\n :disabled=\"isDisabled\"\n :loading=\"isLoading\"\n :placeholder=\"placeholder\"\n :clear-search-on-blur=\"\n () => {\n return true;\n }\n \"\n :filter=\"fakeSearch\"\n :selectable=\"() => !maxOptionsSelected\"\n :style=\"{height: height }\"\n :class=\"{ 'border border-danger': textDanger?.length }\"\n @open=\"onSearch\"\n @search=\"onSearch\"\n @close=\"onClose\"\n @option:selected=\"onOptionSelected\"\n @option:deselected=\"onOptionDeselect\"\n >\n \n <template v-if=\"optionCustomTemplating.length\" #option=\"option\">\n <slot :name=\"optionCustomTemplating\" :option=\"option\" />\n </template>\n\n <template v-else-if=\"withSelectAll\" #option=\"option\">\n <strong v-if=\"option.id === selectAll.id\">\n {{ option[optionLabel] }}\n </strong>\n <span v-else>\n {{ option[optionLabel] }}\n </span>\n </template>\n\n <template\n v-if=\"optionSelectedCustomTemplating.length\"\n #selected-option=\"option\"\n >\n <slot :name=\"optionSelectedCustomTemplating\" :option=\"option\" />\n </template>\n\n <template #selected-option-container=\"{ option, deselect, disabled, multiple: mul }\">\n <slot name=\"selected-option-container\" v-bind=\"{ option, deselect, disabled, multiple: mul }\" />\n </template>\n\n <template #no-options=\"{ searching }\">\n <span v-if=\"searching\">{{\n t(\"No elements found. Consider changing the search query.\")\n }}</span>\n <span v-else>{{ t(\"List is empty\") }}</span>\n </template>\n\n <template #list-footer>\n <div v-if=\"remainingElements\" class=\"vs__dropdown-option\">\n {{\n t(\n \"Count more elements matched your query, please make a more specific search.\",\n { count: remainingElements },\n )\n }}\n </div>\n </template>\n\n <template #list-header>\n <div v-if=\"maxOptionsSelected\" class=\"vs__dropdown-option\">\n {{ t(\"Multiselect max options\", { max: maxOptions }) }}\n </div>\n </template>\n\n <template #open-indicator=\"{ attributes }\">\n <ChevronDownIcon v-bind=\"attributes\" />\n </template>\n </vSelect>\n <div v-if=\"textDanger\" class=\"text-danger\">\n {{ textDanger }}\n </div>\n </div>\n</template>\n\n<script setup lang=\"ts\" generic=\"T\">\nimport { computed, defineAsyncComponent, ref, Ref, watch } from \"vue\";\nimport { useI18n } from \"vue-i18n\";\nimport AsteriskIcon from \"vue-material-design-icons/Asterisk.vue\";\nimport ChevronDownIcon from \"vue-material-design-icons/ChevronDown.vue\";\nimport vSelect from \"vue-select\";\nimport HelpCircleIcon from \"vue-material-design-icons/HelpCircle.vue\";\nconst ClassicPopover = defineAsyncComponent(\n () => import(\"../misc/ClassicPopover.vue\"),\n);\n\n//Props \nconst {\n inModal = false, multiple = false, isDisabled = false, width = \"100%\",\n maxElement = 50, minSearchLength = 3, noDeselect = true, displayLabel = false,\n allowEmpty = true, optionChosen, maxOptions = null,\n optionCustomTemplating = '', optionSelectedCustomTemplating = '',\n optionLabel,\n withSelectAll = false\n} = defineProps<{\n id?: string;\n label?: string;\n placeholder?: string;\n optionLabel?: keyof T;\n inModal?: boolean;\n multiple?: boolean;\n isDisabled?: boolean;\n width?: string;\n height?: string;\n maxElement?: number;\n minSearchLength?: number;\n /** Currently chosen option */\n optionChosen?: T|Array<T>;\n noDeselect?: boolean;\n optionCustomTemplating?: string;\n optionSelectedCustomTemplating?: string;\n displayLabel?: boolean;\n maxOptions?: number;\n allowEmpty?: boolean;\n textDanger ?:string;\n displayRequired?: boolean;\n popover?: string;\n popoverRelativeClass?: string;\n /**\n * Add an option to select everything at once\n * If set to a truthy string, the added option will have this value as its\n * label. If set to true, use a generic label.\n */\n withSelectAll?: boolean|string;\n}>();\n\n//Emits\nconst emit = defineEmits<{\n (e: \"onSearch\", query: string): void;\n (e: \"selected\", data: Array<T>|T): void;\n (e: \"onClose\", data: string): void;\n}>();\n\n//Composables\nconst { t } = useI18n();\n\n\n//Data \nconst optionSelected : Ref<T|T[]>= ref(undefined);\nconst options : Ref<Array<T>>= ref([]);\nconst remainingElements = ref(0);\nconst isLoading = ref(false);\nconst searchInput = ref(\"\");\nconst selectAll = {\n id: 'SELECT_ALL',\n [optionLabel]: withSelectAll && typeof withSelectAll === 'string' ? withSelectAll : t('All')\n} as unknown as T;\n\n//Computed\nconst maxOptionsSelected = computed(() => {\n if (maxOptions !== null && multiple) {\n return (\n (optionSelected.value as Array<T>).length >= maxOptions\n );\n }\n return false;\n});\n\n//Watch\nwatch(()=>optionChosen, () => {\n optionSelected.value = optionChosen;\n}, {deep: true, immediate: true});\nwatch(optionSelected, () => {\n if (noDeselect || null !== optionSelected.value) {\n return;\n }\n emit(\"selected\", undefined);\n}, {deep: true});\n\n//Methods\nfunction fakeSearch(): Array<unknown> {\n return options.value;\n}\n\nfunction onSearch(search?: string): void {\n if (search && search.length < minSearchLength) {\n return;\n } else if (search) {\n searchInput.value = search;\n }\n isLoading.value = true;\n emit(\"onSearch\", search);\n}\n\nfunction onClose() {\n emit(\"onClose\", searchInput.value);\n searchInput.value = \"\";\n}\n\nfunction afterSearch(optionsFetched: Array<T>, count: number): void {\n if (withSelectAll) {\n options.value = [selectAll, ...optionsFetched];\n count += 1;\n } else {\n options.value = optionsFetched;\n }\n remainingElements.value = Math.max(0, count - maxElement);\n isLoading.value = false;\n}\n\nfunction onOptionSelected(newValue: Array<T>|T): void {\n // Check if selectAll is included\n if (withSelectAll && Array.isArray(newValue) && newValue.find(o => o.id === selectAll.id)) {\n emit(\"selected\", options.value.slice(1));\n } else {\n emit(\"selected\", newValue);\n }\n}\n\nfunction onOptionDeselect(event: T): void {\n if (!multiple) {\n return;\n }\n if (\n !allowEmpty &&\n 0 === (optionSelected.value as Array<T>).length\n ) {\n (optionSelected.value as Array<T>).push(event);\n return;\n }\n emit(\"selected\", (optionSelected.value as Array<T>));\n}\n\n//Expose\ndefineExpose({\n afterSearch\n});\n</script>\n\n<style lang=\"scss\">\n@use \"vue-select/dist/vue-select.css\";\n/* stylelint-disable */\n:root {\n --vs-dropdown-z-index: 1405;\n --vs-border-radius: 0.2rem;\n --vs-dropdown-option--active-bg: var(--octopus-secondary);\n --vs-dropdown-option--active-color: black;\n --vs-font-size: 0.8rem;\n --vs-border-width: 2px;\n --vs-border-color: var(--octopus-border-default);\n}\n\n.octopus-app {\n .vs__dropdown-option {\n white-space: initial;\n }\n\n .vs--searchable .vs__dropdown-toggle {\n cursor: pointer;\n }\n\n .vs__dropdown-toggle {\n padding: 0;\n height: 100%;\n }\n\n .vs__search, .vs__search:focus{\n border: var(--vs-selected-border-width) solid transparent;\n }\n .vs__search:focus {\n min-width: 150px;\n }\n\n .multiselect-no-deselect .vs__clear {\n display: none;\n }\n\n .multiselect-transparent {\n --vs-border-color: transparent;\n }\n\n .multiselect-white {\n --vs-selected-color: white;\n --vs-selected-bg: transparent;\n --vs-dropdown-bg: black;\n --vs-controls-color: white;\n\n .vs__actions path {\n fill: white;\n }\n }\n\n .multiselect-in-modal{\n .vs__dropdown-menu{\n position: relative !important;\n }\n }\n}\n/* stylelint-enable */\n</style>\n","<template>\n <div\n :class=\"{\n 'multiselect-in-modal': inModal,\n 'multiselect-no-deselect': noDeselect,\n 'form-margin': displayLabel,\n }\"\n :style=\"{ width: width, height: height }\"\n >\n <div class=\"d-flex align-items-center\">\n <label :class=\"displayLabel ? '' : 'd-none'\" :for=\"id\" class=\"form-label\">{{\n label\n }}\n <AsteriskIcon v-if=\"displayRequired\" :size=\"10\" class=\"ms-1 mb-2\" :title=\"t('Mandatory input')\"/>\n </label>\n\n <template v-if=\"popover\">\n <button\n :id=\"'popover' + id\"\n :title=\"t('Help')\"\n class=\"btn-transparent\"\n >\n <HelpCircleIcon :size=\"30\" />\n </button>\n <ClassicPopover\n :target=\"'popover' + id\"\n popover-class=\"popover-z-index\"\n :relative-class=\"popoverRelativeClass\"\n >\n <!-- eslint-disable vue/no-v-html -->\n <div v-html=\"popover\" />\n <!-- eslint-enable -->\n </ClassicPopover>\n </template>\n </div>\n\n <vSelect\n v-model=\"optionSelected\"\n :input-id=\"id\"\n :label=\"optionLabel\"\n :multiple=\"multiple\"\n :options=\"options\"\n :disabled=\"isDisabled\"\n :loading=\"isLoading\"\n :placeholder=\"placeholder\"\n :clear-search-on-blur=\"\n () => {\n return true;\n }\n \"\n :filter=\"fakeSearch\"\n :selectable=\"() => !maxOptionsSelected\"\n :style=\"{height: height }\"\n :class=\"{ 'border border-danger': textDanger?.length }\"\n @open=\"onSearch\"\n @search=\"onSearch\"\n @close=\"onClose\"\n @option:selected=\"onOptionSelected\"\n @option:deselected=\"onOptionDeselect\"\n >\n \n <template v-if=\"optionCustomTemplating.length\" #option=\"option\">\n <slot :name=\"optionCustomTemplating\" :option=\"option\" />\n </template>\n\n <template v-else-if=\"withSelectAll\" #option=\"option\">\n <strong v-if=\"option.id === selectAll.id\">\n {{ option[optionLabel] }}\n </strong>\n <span v-else>\n {{ option[optionLabel] }}\n </span>\n </template>\n\n <template\n v-if=\"optionSelectedCustomTemplating.length\"\n #selected-option=\"option\"\n >\n <slot :name=\"optionSelectedCustomTemplating\" :option=\"option\" />\n </template>\n\n <template #selected-option-container=\"{ option, deselect, disabled, multiple: mul }\">\n <slot name=\"selected-option-container\" v-bind=\"{ option, deselect, disabled, multiple: mul }\" />\n </template>\n\n <template #no-options=\"{ searching }\">\n <span v-if=\"searching\">{{\n t(\"No elements found. Consider changing the search query.\")\n }}</span>\n <span v-else>{{ t(\"List is empty\") }}</span>\n </template>\n\n <template #list-footer>\n <div v-if=\"remainingElements\" class=\"vs__dropdown-option\">\n {{\n t(\n \"Count more elements matched your query, please make a more specific search.\",\n { count: remainingElements },\n )\n }}\n </div>\n </template>\n\n <template #list-header>\n <div v-if=\"maxOptionsSelected\" class=\"vs__dropdown-option\">\n {{ t(\"Multiselect max options\", { max: maxOptions }) }}\n </div>\n </template>\n\n <template #open-indicator=\"{ attributes }\">\n <ChevronDownIcon v-bind=\"attributes\" />\n </template>\n </vSelect>\n <div v-if=\"textDanger\" class=\"text-danger\">\n {{ textDanger }}\n </div>\n </div>\n</template>\n\n<script setup lang=\"ts\" generic=\"T\">\nimport { computed, defineAsyncComponent, ref, Ref, watch } from \"vue\";\nimport { useI18n } from \"vue-i18n\";\nimport AsteriskIcon from \"vue-material-design-icons/Asterisk.vue\";\nimport ChevronDownIcon from \"vue-material-design-icons/ChevronDown.vue\";\nimport vSelect from \"vue-select\";\nimport HelpCircleIcon from \"vue-material-design-icons/HelpCircle.vue\";\nconst ClassicPopover = defineAsyncComponent(\n () => import(\"../misc/ClassicPopover.vue\"),\n);\n\n//Props \nconst {\n inModal = false, multiple = false, isDisabled = false, width = \"100%\",\n maxElement = 50, minSearchLength = 3, noDeselect = true, displayLabel = false,\n allowEmpty = true, optionChosen, maxOptions = null,\n optionCustomTemplating = '', optionSelectedCustomTemplating = '',\n optionLabel,\n withSelectAll = false\n} = defineProps<{\n id?: string;\n label?: string;\n placeholder?: string;\n optionLabel?: keyof T;\n inModal?: boolean;\n multiple?: boolean;\n isDisabled?: boolean;\n width?: string;\n height?: string;\n maxElement?: number;\n minSearchLength?: number;\n /** Currently chosen option */\n optionChosen?: T|Array<T>;\n noDeselect?: boolean;\n optionCustomTemplating?: string;\n optionSelectedCustomTemplating?: string;\n displayLabel?: boolean;\n maxOptions?: number;\n allowEmpty?: boolean;\n textDanger ?:string;\n displayRequired?: boolean;\n popover?: string;\n popoverRelativeClass?: string;\n /**\n * Add an option to select everything at once\n * If set to a truthy string, the added option will have this value as its\n * label. If set to true, use a generic label.\n */\n withSelectAll?: boolean|string;\n}>();\n\n//Emits\nconst emit = defineEmits<{\n (e: \"onSearch\", query: string): void;\n (e: \"selected\", data: Array<T>|T): void;\n (e: \"onClose\", data: string): void;\n}>();\n\n//Composables\nconst { t } = useI18n();\n\n\n//Data \nconst optionSelected : Ref<T|T[]>= ref(undefined);\nconst options : Ref<Array<T>>= ref([]);\nconst remainingElements = ref(0);\nconst isLoading = ref(false);\nconst searchInput = ref(\"\");\nconst selectAll = {\n id: 'SELECT_ALL',\n [optionLabel]: withSelectAll && typeof withSelectAll === 'string' ? withSelectAll : t('All')\n} as unknown as T;\n\n//Computed\nconst maxOptionsSelected = computed(() => {\n if (maxOptions !== null && multiple) {\n return (\n (optionSelected.value as Array<T>).length >= maxOptions\n );\n }\n return false;\n});\n\n//Watch\nwatch(()=>optionChosen, () => {\n optionSelected.value = optionChosen;\n}, {deep: true, immediate: true});\nwatch(optionSelected, () => {\n if (noDeselect || null !== optionSelected.value) {\n return;\n }\n emit(\"selected\", undefined);\n}, {deep: true});\n\n//Methods\nfunction fakeSearch(): Array<unknown> {\n return options.value;\n}\n\nfunction onSearch(search?: string): void {\n if (search && search.length < minSearchLength) {\n return;\n } else if (search) {\n searchInput.value = search;\n }\n isLoading.value = true;\n emit(\"onSearch\", search);\n}\n\nfunction onClose() {\n emit(\"onClose\", searchInput.value);\n searchInput.value = \"\";\n}\n\nfunction afterSearch(optionsFetched: Array<T>, count: number): void {\n if (withSelectAll) {\n options.value = [selectAll, ...optionsFetched];\n count += 1;\n } else {\n options.value = optionsFetched;\n }\n remainingElements.value = Math.max(0, count - maxElement);\n isLoading.value = false;\n}\n\nfunction onOptionSelected(newValue: Array<T>|T): void {\n // Check if selectAll is included\n if (withSelectAll && Array.isArray(newValue) && newValue.find(o => o.id === selectAll.id)) {\n emit(\"selected\", options.value.slice(1));\n } else {\n emit(\"selected\", newValue);\n }\n}\n\nfunction onOptionDeselect(event: T): void {\n if (!multiple) {\n return;\n }\n if (\n !allowEmpty &&\n 0 === (optionSelected.value as Array<T>).length\n ) {\n (optionSelected.value as Array<T>).push(event);\n return;\n }\n emit(\"selected\", (optionSelected.value as Array<T>));\n}\n\n//Expose\ndefineExpose({\n afterSearch\n});\n</script>\n\n<style lang=\"scss\">\n@use \"vue-select/dist/vue-select.css\";\n/* stylelint-disable */\n:root {\n --vs-dropdown-z-index: 1405;\n --vs-border-radius: 0.2rem;\n --vs-dropdown-option--active-bg: var(--octopus-secondary);\n --vs-dropdown-option--active-color: black;\n --vs-font-size: 0.8rem;\n --vs-border-width: 2px;\n --vs-border-color: var(--octopus-border-default);\n}\n\n.octopus-app {\n .vs__dropdown-option {\n white-space: initial;\n }\n\n .vs--searchable .vs__dropdown-toggle {\n cursor: pointer;\n }\n\n .vs__dropdown-toggle {\n padding: 0;\n height: 100%;\n }\n\n .vs__search, .vs__search:focus{\n border: var(--vs-selected-border-width) solid transparent;\n }\n .vs__search:focus {\n min-width: 150px;\n }\n\n .multiselect-no-deselect .vs__clear {\n display: none;\n }\n\n .multiselect-transparent {\n --vs-border-color: transparent;\n }\n\n .multiselect-white {\n --vs-selected-color: white;\n --vs-selected-bg: transparent;\n --vs-dropdown-bg: black;\n --vs-controls-color: white;\n\n .vs__actions path {\n fill: white;\n }\n }\n\n .multiselect-in-modal{\n .vs__dropdown-menu{\n position: relative !important;\n }\n }\n}\n/* stylelint-enable */\n</style>\n"],"mappings":"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"}
@@ -69,7 +69,7 @@ var O = { class: "d-flex align-items-center" }, k = ["for"], A = ["id", "title"]
69
69
  "onClose"
70
70
  ],
71
71
  setup(e, { expose: d, emit: z }) {
72
- let B = u(() => import("./ClassicPopover-DWR50Nxi.mjs").then((e) => e.n)), V = z, { t: H } = C(), U = _(void 0), W = _([]), G = _(0), K = _(!1), q = _(""), J = {
72
+ let B = u(() => import("./ClassicPopover-BUb-1WMB.mjs").then((e) => e.n)), V = z, { t: H } = C(), U = _(void 0), W = _([]), G = _(0), K = _(!1), q = _(""), J = {
73
73
  id: "SELECT_ALL",
74
74
  [e.optionLabel]: e.withSelectAll && typeof e.withSelectAll == "string" ? e.withSelectAll : H("All")
75
75
  }, Y = n(() => e.maxOptions !== null && e.multiple ? U.value.length >= e.maxOptions : !1);
@@ -1,4 +1,4 @@
1
- import { w as e } from "./classicApi-pmODlqv5.mjs";
1
+ import { T as e } from "./classicApi-CGipMqf7.mjs";
2
2
  import { createBlock as t, createCommentVNode as n, defineAsyncComponent as r, defineComponent as i, openBlock as a, unref as o } from "vue";
3
3
  import { storeToRefs as s } from "pinia";
4
4
  //#endregion
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ClassicNotifications-BFQ-R6kO.mjs","names":["_openBlock","_createBlock","_createCommentVNode","_sfc_main"],"sources":["../src/components/misc/ClassicNotifications.vue","../src/components/misc/ClassicNotifications.vue"],"sourcesContent":["<!--\n A component to display notifications\n-->\n<template>\n <MessageModal\n v-if=\"currentNotification\"\n :title=\"currentNotification.title\"\n :message=\"currentNotification.message\"\n :closeable=\"currentNotification.closeable !== false\"\n @close=\"clearNotification\"\n />\n</template>\n\n<script setup lang=\"ts\">\nimport { storeToRefs } from 'pinia';\nimport { useNotificationStore } from '../../stores/NotificationStore';\n\nconst MessageModal = defineAsyncComponent(() => import('./modal/MessageModal.vue'));\n\nimport { defineAsyncComponent } from 'vue';\n\nconst {\n clearNotification\n} = useNotificationStore();\n\nconst {\n currentNotification,\n} = storeToRefs(useNotificationStore());\n</script>\n","<!--\n A component to display notifications\n-->\n<template>\n <MessageModal\n v-if=\"currentNotification\"\n :title=\"currentNotification.title\"\n :message=\"currentNotification.message\"\n :closeable=\"currentNotification.closeable !== false\"\n @close=\"clearNotification\"\n />\n</template>\n\n<script setup lang=\"ts\">\nimport { storeToRefs } from 'pinia';\nimport { useNotificationStore } from '../../stores/NotificationStore';\n\nconst MessageModal = defineAsyncComponent(() => import('./modal/MessageModal.vue'));\n\nimport { defineAsyncComponent } from 'vue';\n\nconst {\n clearNotification\n} = useNotificationStore();\n\nconst {\n currentNotification,\n} = storeToRefs(useNotificationStore());\n</script>\n"],"mappings":";;;;;;;;;EAiBA,MAAM,eAAe,2BAA2B,OAAO,8BAA2B,CAAA,MAAA,MAAA,EAAA,CAAA,CAAA;EAIlF,MAAM,EACF,sBACA,qBAAqB;EAEzB,MAAM,EACF,wBACA,YAAY,qBAAqB,CAAC;;;;;;;;;;;;;;;;CCtBxB,OAAA,OAAA,uBADVA,UAAA,GAAAC,YAME,OAAA,iBAAA;;EAJG,OAAO,OAAA,oBAAoB;EAC3B,SAAS,OAAA,oBAAoB;EAC7B,WAAW,OAAA,oBAAoB,cAAS;EACxC,SAAO,OAAA"}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ClassicNotifications-DR0PM1Xp.mjs","names":["_openBlock","_createBlock","_createCommentVNode","_sfc_main"],"sources":["../src/components/misc/ClassicNotifications.vue","../src/components/misc/ClassicNotifications.vue"],"sourcesContent":["<!--\n A component to display notifications\n-->\n<template>\n <MessageModal\n v-if=\"currentNotification\"\n :title=\"currentNotification.title\"\n :message=\"currentNotification.message\"\n :closeable=\"currentNotification.closeable !== false\"\n @close=\"clearNotification\"\n />\n</template>\n\n<script setup lang=\"ts\">\nimport { storeToRefs } from 'pinia';\nimport { useNotificationStore } from '../../stores/NotificationStore';\n\nconst MessageModal = defineAsyncComponent(() => import('./modal/MessageModal.vue'));\n\nimport { defineAsyncComponent } from 'vue';\n\nconst {\n clearNotification\n} = useNotificationStore();\n\nconst {\n currentNotification,\n} = storeToRefs(useNotificationStore());\n</script>\n","<!--\n A component to display notifications\n-->\n<template>\n <MessageModal\n v-if=\"currentNotification\"\n :title=\"currentNotification.title\"\n :message=\"currentNotification.message\"\n :closeable=\"currentNotification.closeable !== false\"\n @close=\"clearNotification\"\n />\n</template>\n\n<script setup lang=\"ts\">\nimport { storeToRefs } from 'pinia';\nimport { useNotificationStore } from '../../stores/NotificationStore';\n\nconst MessageModal = defineAsyncComponent(() => import('./modal/MessageModal.vue'));\n\nimport { defineAsyncComponent } from 'vue';\n\nconst {\n clearNotification\n} = useNotificationStore();\n\nconst {\n currentNotification,\n} = storeToRefs(useNotificationStore());\n</script>\n"],"mappings":";;;;;;;;;EAiBA,MAAM,eAAe,2BAA2B,OAAO,8BAA2B,CAAA,MAAA,MAAA,EAAA,CAAA,CAAA;EAIlF,MAAM,EACF,sBACA,qBAAqB;EAEzB,MAAM,EACF,wBACA,YAAY,qBAAqB,CAAC;;;;;;;;;;;;;;;;CCtBxB,OAAA,OAAA,uBADVA,UAAA,GAAAC,YAME,OAAA,iBAAA;;EAJG,OAAO,OAAA,oBAAoB;EAC3B,SAAS,OAAA,oBAAoB;EAC7B,WAAW,OAAA,oBAAoB,cAAS;EACxC,SAAO,OAAA"}
@@ -120,7 +120,7 @@ var ne = ["id"], x = {
120
120
  N.value = !1;
121
121
  return;
122
122
  }
123
- if (Array.from(e?.target?.classList ?? []).findIndex((e) => e.startsWith("dp__")) !== -1) return;
123
+ if (Array.from(e?.target?.classList ?? []).findIndex((e) => e.startsWith("dp--")) !== -1) return;
124
124
  let t = I?.value;
125
125
  if (!e.relatedTarget) return t !== null && t.contains(e.target) ? void 0 : Z();
126
126
  let n = e.relatedTarget;
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ClassicPopover-BhMY2SMo.mjs","names":["_openBlock","_createBlock","_Teleport","_withDirectives","_createElementVNode","_normalizeClass","_normalizeStyle","_createElementBlock","_toDisplayString","_createCommentVNode","_renderSlot","_createTextVNode","_vShow","_sfc_main"],"sources":["../src/components/misc/ClassicPopover.vue","../src/components/misc/ClassicPopover.vue"],"sourcesContent":["<template>\n <Teleport to=\"#app\">\n <div\n v-show=\"displayPopover\"\n :id=\"'popover' + target\"\n ref=\"popover\"\n popover\n tabindex=\"0\"\n class=\"octopus-popover border position-fixed\"\n :class=\"[\n displayPopover ? 'd-block': '',\n onlyClick ? 'octopus-dropdown' : '',\n popoverClass]\"\n :style=\"positionInlineStyle\"\n @mouseenter=\"overPopover = true\"\n @mouseleave=\"\n overPopover = false;\n clearData();\n \"\n >\n <div v-if=\"title\" class=\"bg-secondary-light p-2\">\n {{ title }}\n </div>\n <div class=\"p-2\">\n <slot>{{ content }}</slot>\n </div>\n </div>\n </Teleport>\n</template>\n\n<script setup lang=\"ts\">\nimport { computed, nextTick, onMounted, onUnmounted, Ref, ref, useTemplateRef, watch } from 'vue';\nimport { useRouter } from 'vue-router';\n\n//Props \nconst props = defineProps({\n content: { type: String, default: \"\" },\n title: { type: String, default: \"\" },\n target: { type: String, required: true },\n disable: { type: Boolean, default: false },\n onlyClick: { type: Boolean, default: false },\n onlyMouse: { type: Boolean, default: false },\n isFixed: { type: Boolean, default: false },\n /** @deprecated No longer needed. The popover is teleported to body and always uses position:fixed. */\n relativeClass: { type: String, default: undefined },\n leftPos: { type: Boolean, default: false },\n topPos: { type: Boolean, default: false },\n popoverClass: { type: String, default: undefined },\n isTopLayer: { type: Boolean, default: false },\n /** @deprecated No longer needed. If set to true, max height of popover will not overflow from parent */\n constrainHeight: { type: Boolean, default: true },\n /** Force z-index */\n zIndex: { type: Number, default: undefined }\n})\n\n//Emits\nconst emit = defineEmits([\"updateVisibility\"]);\n\n\n//Data\nconst show = ref(false);\nconst isClick = ref(false);\nconst openedByHover = ref(false);\nconst posX = ref(0);\nconst posY = ref(0);\nconst targetElement: Ref<HTMLElement | null> = ref(null);\nconst overPopover = ref(false);\nconst isTabAction = ref(false);\nconst maxHeight = ref('80dvh');\nconst clearTimeout: Ref<ReturnType<typeof setTimeout> | undefined> = ref(undefined);\nconst popoverRef = useTemplateRef('popover');\n\n\n//Composables\nconst router = useRouter();\n\n//Computed\nconst popoverId = computed(() => \"popover\" + props.target);\nconst positionInlineStyle = computed(() => ({\n left: `${posX.value}px`,\n top: `${posY.value}px`,\n 'max-height': maxHeight.value,\n 'z-index': props.zIndex ?? 10\n}));\nconst displayPopover = computed(() => show.value && !props.disable);\nconst isTopLayerPopover = computed(() => (props.isTopLayer || \"octopus-modal\"===props.relativeClass) && Object.hasOwn(HTMLElement.prototype, \"popover\"));\n\n\n//Watch\nwatch(displayPopover, async () => {\n if(!isTopLayerPopover.value){return;}\n if(displayPopover.value){\n (popoverRef.value as HTMLElement).showPopover();\n }else{\n (popoverRef.value as HTMLElement).hidePopover();\n }\n});\nwatch(show, async () => {\n emit(\"updateVisibility\", show.value);\n if (show.value) {\n window.addEventListener(\"keyup\", addAccessibilityControl);\n } else {\n window.removeEventListener(\"keyup\", addAccessibilityControl);\n }\n});\nwatch(isClick, async () => {\n // Only add global click listener if opened by click (not hover)\n if (isClick.value && !openedByHover.value) {\n window.addEventListener(\"click\", handleOutsideClick, true);\n } else {\n window.removeEventListener(\"click\", handleOutsideClick, true);\n }\n});\n\nonMounted(()=>init())\n\nonUnmounted(()=>removeListeners())\n\n\n//Methods\nfunction handleOutsideClick(event: MouseEvent): void {\n const target = event.target as HTMLElement;\n const popover = popoverRef?.value as HTMLElement;\n const targetEl = targetElement.value;\n\n // Check if click is outside both the popover and the target element\n if (\n popover &&\n !popover.contains(target) &&\n targetEl &&\n !targetEl.contains(target)\n ) {\n clearClick();\n }\n}\nfunction addAccessibilityControl(event: KeyboardEvent): void {\n if (!event || null === event) {\n return;\n }\n if (\"Tab\" !== event.key) {\n return;\n }\n const myElement = event.target as HTMLElement;\n const parent = popoverRef?.value as HTMLElement;\n if (parent?.contains(myElement)) {\n isTabAction.value = true;\n } else {\n clearClick();\n }\n}\nfunction init() {\n targetElement.value = document.getElementById(props.target);\n if (targetElement.value) {\n if (!props.onlyClick) {\n targetElement.value.addEventListener( \"mouseenter\",setPopoverData);\n targetElement.value.addEventListener(\"mouseleave\",clearDataTimeout);\n }\n if (!props.onlyMouse) {\n targetElement.value.addEventListener(\"click\", setPopoverData);\n }\n targetElement.value.addEventListener(\"focusout\", clearDataBlur);\n }\n}\nfunction removeListeners() {\n if (targetElement.value) {\n if (!props.onlyClick) {\n targetElement.value.removeEventListener(\"mouseenter\",setPopoverData,);\n targetElement.value.removeEventListener(\"mouseleave\",clearDataTimeout,);\n }\n if (!props.onlyMouse) {\n targetElement.value.removeEventListener(\"click\", setPopoverData);\n }\n targetElement.value.removeEventListener(\"focusout\", clearDataBlur);\n }\n}\nfunction handleClickEvent(e: MouseEvent | PointerEvent){\n if (show.value && isClick.value && e.target !== popoverRef.value && !popoverRef.value?.contains(e.target)) {\n isClick.value = false;\n clearData();\n return -1;\n }\n if (show.value && isTopLayerPopover.value) {\n const popover = popoverRef?.value as HTMLElement;\n popover.showPopover();\n isClick.value = true;\n return -1;\n }\n isClick.value = true;\n return 0;\n}\nfunction handleLeftPos(rectElement: DOMRect, parentLeft: number, sizeAvailable: number, sizePopover: number){\n const elementRightRelative = rectElement.right - parentLeft;\n const hasPlaceRightButton = (sizeAvailable - (sizeAvailable - elementRightRelative)) > sizePopover;\n if(hasPlaceRightButton){\n posX.value =\n rectElement.right -\n parentLeft -\n sizePopover;\n }else{\n posX.value =parentLeft;\n }\n}\nfunction handleRightPos(rectElement: DOMRect, parentLeft: number, sizeAvailable: number, sizePopover: number){\n const elementLeftRelative = rectElement.left - parentLeft;\n const hasPlaceRightButton = (sizeAvailable - elementLeftRelative) > sizePopover;\n if(hasPlaceRightButton){\n posX.value = elementLeftRelative;\n }else{\n posX.value = sizeAvailable - sizePopover + parentLeft;\n }\n}\nfunction setPopoverData(e: MouseEvent | PointerEvent) {\n clearInterval(clearTimeout.value as unknown as number);\n if (props.disable || !e || !e.target) {\n return;\n }\n if (\"click\" === e.type && -1 === handleClickEvent(e)) {\n return;\n }\n // Track if opened by hover (mouseenter) vs click\n if (e.type === \"mouseenter\") {\n openedByHover.value = true;\n }\n show.value = true;\n const popover = popoverRef?.value as HTMLElement;\n // The popover is teleported to <body> and uses position:fixed, so\n // getBoundingClientRect() coordinates map directly to viewport coordinates.\n const rectElement = (e.target as HTMLElement).getBoundingClientRect();\n popover.style.display = \"block\";\n const sizePopover = popover.clientWidth;\n if (props.leftPos) {\n handleLeftPos(rectElement, 0, window.innerWidth, sizePopover);\n } else {\n handleRightPos(rectElement, 0, window.innerWidth, sizePopover);\n }\n posX.value = Math.max(0, posX.value);\n const yPosParent = props.topPos ? rectElement.top : rectElement.bottom;\n const yGap = props.topPos\n ? -5 - popover.clientHeight\n : 5;\n posY.value = Math.max(0, yPosParent + yGap);\n maxHeight.value = (window.innerHeight - posY.value) + \"px\";\n}\n\nfunction clearDataBlur(e: FocusEvent) {\n if (isTabAction.value) {\n isTabAction.value = false;\n return;\n }\n //Exception timepicker in popover\n const result = Array.from(e?.target?.classList ?? []).findIndex((val) => { return val.startsWith(\"dp--\");});\n if (-1!==result) {\n return;\n }\n\n const parent = popoverRef?.value as HTMLElement;\n if (!e.relatedTarget) {\n if (parent !== null && parent.contains(e.target)) {\n return;\n }\n return clearClick();\n }\n const myElement = e.relatedTarget as HTMLElement;\n if (popoverId.value === myElement.id) {\n return;\n }\n if (null === parent || !parent.contains(myElement)) {\n return clearClick();\n }\n if (\n null === myElement.classList ||\n !myElement.classList.contains(\"octopus-dropdown-item\")\n ) {\n return;\n }\n if (!(myElement as HTMLAnchorElement).href) {\n return clearClick();\n }\n if (myElement.classList.contains(\"realLink\")) {\n myElement.click();\n } else {\n const { pathname, search, hash } = myElement as HTMLAnchorElement;\n router.push(pathname + search + hash);\n }\n nextTick(() => {\n isClick.value = false;\n clearData();\n });\n}\nfunction clearClick() {\n isClick.value = false;\n clearData();\n}\nfunction clearDataTimeout() {\n clearTimeout.value = setTimeout(() => {\n if (!overPopover.value) {\n clearData();\n }\n clearTimeout.value=undefined;\n }, 500);\n}\nfunction clearData() {\n // Allow closing if opened by hover, even if clicked afterwards\n if (isClick.value && !openedByHover.value) {\n return;\n }\n show.value = false;\n posX.value = 0;\n posY.value = 0;\n openedByHover.value = false;\n}\n\n//Expose\ndefineExpose({\n clearClick\n});\n</script>\n\n<style lang=\"scss\">\n.octopus-popover {\n background: var(--octopus-background);\n border-radius: var(--octopus-border-radius);\n overflow: auto;\n margin: 0 !important;\n z-index: 10;\n\n &.popover-z-index {\n z-index: 9999;\n }\n\n &.octopus-dropdown {\n min-width: 200px;\n\n .octopus-dropdown-item {\n display: flex;\n justify-content: center;\n color: var(--octopus-color-text);\n width: 100%;\n padding: 0.25rem 1rem;\n font-weight: 400;\n text-decoration: none;\n white-space: nowrap;\n background-color: transparent;\n border: 0;\n\n &:disabled {\n background: var(--octopus-secondary-darker);\n }\n\n &:is(:hover, :focus){\n color: var(--octopus-popover-dropdown-item-color-fg-hover);\n background: var(--octopus-popover-dropdown-item-color-bg-hover);\n }\n }\n\n hr {\n margin: 0.5rem 0;\n overflow: hidden;\n border-top: 1px solid var(--octopus-border-default);\n opacity: 1;\n }\n }\n}\n</style>\n","<template>\n <Teleport to=\"#app\">\n <div\n v-show=\"displayPopover\"\n :id=\"'popover' + target\"\n ref=\"popover\"\n popover\n tabindex=\"0\"\n class=\"octopus-popover border position-fixed\"\n :class=\"[\n displayPopover ? 'd-block': '',\n onlyClick ? 'octopus-dropdown' : '',\n popoverClass]\"\n :style=\"positionInlineStyle\"\n @mouseenter=\"overPopover = true\"\n @mouseleave=\"\n overPopover = false;\n clearData();\n \"\n >\n <div v-if=\"title\" class=\"bg-secondary-light p-2\">\n {{ title }}\n </div>\n <div class=\"p-2\">\n <slot>{{ content }}</slot>\n </div>\n </div>\n </Teleport>\n</template>\n\n<script setup lang=\"ts\">\nimport { computed, nextTick, onMounted, onUnmounted, Ref, ref, useTemplateRef, watch } from 'vue';\nimport { useRouter } from 'vue-router';\n\n//Props \nconst props = defineProps({\n content: { type: String, default: \"\" },\n title: { type: String, default: \"\" },\n target: { type: String, required: true },\n disable: { type: Boolean, default: false },\n onlyClick: { type: Boolean, default: false },\n onlyMouse: { type: Boolean, default: false },\n isFixed: { type: Boolean, default: false },\n /** @deprecated No longer needed. The popover is teleported to body and always uses position:fixed. */\n relativeClass: { type: String, default: undefined },\n leftPos: { type: Boolean, default: false },\n topPos: { type: Boolean, default: false },\n popoverClass: { type: String, default: undefined },\n isTopLayer: { type: Boolean, default: false },\n /** @deprecated No longer needed. If set to true, max height of popover will not overflow from parent */\n constrainHeight: { type: Boolean, default: true },\n /** Force z-index */\n zIndex: { type: Number, default: undefined }\n})\n\n//Emits\nconst emit = defineEmits([\"updateVisibility\"]);\n\n\n//Data\nconst show = ref(false);\nconst isClick = ref(false);\nconst openedByHover = ref(false);\nconst posX = ref(0);\nconst posY = ref(0);\nconst targetElement: Ref<HTMLElement | null> = ref(null);\nconst overPopover = ref(false);\nconst isTabAction = ref(false);\nconst maxHeight = ref('80dvh');\nconst clearTimeout: Ref<ReturnType<typeof setTimeout> | undefined> = ref(undefined);\nconst popoverRef = useTemplateRef('popover');\n\n\n//Composables\nconst router = useRouter();\n\n//Computed\nconst popoverId = computed(() => \"popover\" + props.target);\nconst positionInlineStyle = computed(() => ({\n left: `${posX.value}px`,\n top: `${posY.value}px`,\n 'max-height': maxHeight.value,\n 'z-index': props.zIndex ?? 10\n}));\nconst displayPopover = computed(() => show.value && !props.disable);\nconst isTopLayerPopover = computed(() => (props.isTopLayer || \"octopus-modal\"===props.relativeClass) && Object.hasOwn(HTMLElement.prototype, \"popover\"));\n\n\n//Watch\nwatch(displayPopover, async () => {\n if(!isTopLayerPopover.value){return;}\n if(displayPopover.value){\n (popoverRef.value as HTMLElement).showPopover();\n }else{\n (popoverRef.value as HTMLElement).hidePopover();\n }\n});\nwatch(show, async () => {\n emit(\"updateVisibility\", show.value);\n if (show.value) {\n window.addEventListener(\"keyup\", addAccessibilityControl);\n } else {\n window.removeEventListener(\"keyup\", addAccessibilityControl);\n }\n});\nwatch(isClick, async () => {\n // Only add global click listener if opened by click (not hover)\n if (isClick.value && !openedByHover.value) {\n window.addEventListener(\"click\", handleOutsideClick, true);\n } else {\n window.removeEventListener(\"click\", handleOutsideClick, true);\n }\n});\n\nonMounted(()=>init())\n\nonUnmounted(()=>removeListeners())\n\n\n//Methods\nfunction handleOutsideClick(event: MouseEvent): void {\n const target = event.target as HTMLElement;\n const popover = popoverRef?.value as HTMLElement;\n const targetEl = targetElement.value;\n\n // Check if click is outside both the popover and the target element\n if (\n popover &&\n !popover.contains(target) &&\n targetEl &&\n !targetEl.contains(target)\n ) {\n clearClick();\n }\n}\nfunction addAccessibilityControl(event: KeyboardEvent): void {\n if (!event || null === event) {\n return;\n }\n if (\"Tab\" !== event.key) {\n return;\n }\n const myElement = event.target as HTMLElement;\n const parent = popoverRef?.value as HTMLElement;\n if (parent?.contains(myElement)) {\n isTabAction.value = true;\n } else {\n clearClick();\n }\n}\nfunction init() {\n targetElement.value = document.getElementById(props.target);\n if (targetElement.value) {\n if (!props.onlyClick) {\n targetElement.value.addEventListener( \"mouseenter\",setPopoverData);\n targetElement.value.addEventListener(\"mouseleave\",clearDataTimeout);\n }\n if (!props.onlyMouse) {\n targetElement.value.addEventListener(\"click\", setPopoverData);\n }\n targetElement.value.addEventListener(\"focusout\", clearDataBlur);\n }\n}\nfunction removeListeners() {\n if (targetElement.value) {\n if (!props.onlyClick) {\n targetElement.value.removeEventListener(\"mouseenter\",setPopoverData,);\n targetElement.value.removeEventListener(\"mouseleave\",clearDataTimeout,);\n }\n if (!props.onlyMouse) {\n targetElement.value.removeEventListener(\"click\", setPopoverData);\n }\n targetElement.value.removeEventListener(\"focusout\", clearDataBlur);\n }\n}\nfunction handleClickEvent(e: MouseEvent | PointerEvent){\n if (show.value && isClick.value && e.target !== popoverRef.value && !popoverRef.value?.contains(e.target)) {\n isClick.value = false;\n clearData();\n return -1;\n }\n if (show.value && isTopLayerPopover.value) {\n const popover = popoverRef?.value as HTMLElement;\n popover.showPopover();\n isClick.value = true;\n return -1;\n }\n isClick.value = true;\n return 0;\n}\nfunction handleLeftPos(rectElement: DOMRect, parentLeft: number, sizeAvailable: number, sizePopover: number){\n const elementRightRelative = rectElement.right - parentLeft;\n const hasPlaceRightButton = (sizeAvailable - (sizeAvailable - elementRightRelative)) > sizePopover;\n if(hasPlaceRightButton){\n posX.value =\n rectElement.right -\n parentLeft -\n sizePopover;\n }else{\n posX.value =parentLeft;\n }\n}\nfunction handleRightPos(rectElement: DOMRect, parentLeft: number, sizeAvailable: number, sizePopover: number){\n const elementLeftRelative = rectElement.left - parentLeft;\n const hasPlaceRightButton = (sizeAvailable - elementLeftRelative) > sizePopover;\n if(hasPlaceRightButton){\n posX.value = elementLeftRelative;\n }else{\n posX.value = sizeAvailable - sizePopover + parentLeft;\n }\n}\nfunction setPopoverData(e: MouseEvent | PointerEvent) {\n clearInterval(clearTimeout.value as unknown as number);\n if (props.disable || !e || !e.target) {\n return;\n }\n if (\"click\" === e.type && -1 === handleClickEvent(e)) {\n return;\n }\n // Track if opened by hover (mouseenter) vs click\n if (e.type === \"mouseenter\") {\n openedByHover.value = true;\n }\n show.value = true;\n const popover = popoverRef?.value as HTMLElement;\n // The popover is teleported to <body> and uses position:fixed, so\n // getBoundingClientRect() coordinates map directly to viewport coordinates.\n const rectElement = (e.target as HTMLElement).getBoundingClientRect();\n popover.style.display = \"block\";\n const sizePopover = popover.clientWidth;\n if (props.leftPos) {\n handleLeftPos(rectElement, 0, window.innerWidth, sizePopover);\n } else {\n handleRightPos(rectElement, 0, window.innerWidth, sizePopover);\n }\n posX.value = Math.max(0, posX.value);\n const yPosParent = props.topPos ? rectElement.top : rectElement.bottom;\n const yGap = props.topPos\n ? -5 - popover.clientHeight\n : 5;\n posY.value = Math.max(0, yPosParent + yGap);\n maxHeight.value = (window.innerHeight - posY.value) + \"px\";\n}\n\nfunction clearDataBlur(e: FocusEvent) {\n if (isTabAction.value) {\n isTabAction.value = false;\n return;\n }\n //Exception timepicker in popover\n const result = Array.from(e?.target?.classList ?? []).findIndex((val) => { return val.startsWith(\"dp--\");});\n if (-1!==result) {\n return;\n }\n\n const parent = popoverRef?.value as HTMLElement;\n if (!e.relatedTarget) {\n if (parent !== null && parent.contains(e.target)) {\n return;\n }\n return clearClick();\n }\n const myElement = e.relatedTarget as HTMLElement;\n if (popoverId.value === myElement.id) {\n return;\n }\n if (null === parent || !parent.contains(myElement)) {\n return clearClick();\n }\n if (\n null === myElement.classList ||\n !myElement.classList.contains(\"octopus-dropdown-item\")\n ) {\n return;\n }\n if (!(myElement as HTMLAnchorElement).href) {\n return clearClick();\n }\n if (myElement.classList.contains(\"realLink\")) {\n myElement.click();\n } else {\n const { pathname, search, hash } = myElement as HTMLAnchorElement;\n router.push(pathname + search + hash);\n }\n nextTick(() => {\n isClick.value = false;\n clearData();\n });\n}\nfunction clearClick() {\n isClick.value = false;\n clearData();\n}\nfunction clearDataTimeout() {\n clearTimeout.value = setTimeout(() => {\n if (!overPopover.value) {\n clearData();\n }\n clearTimeout.value=undefined;\n }, 500);\n}\nfunction clearData() {\n // Allow closing if opened by hover, even if clicked afterwards\n if (isClick.value && !openedByHover.value) {\n return;\n }\n show.value = false;\n posX.value = 0;\n posY.value = 0;\n openedByHover.value = false;\n}\n\n//Expose\ndefineExpose({\n clearClick\n});\n</script>\n\n<style lang=\"scss\">\n.octopus-popover {\n background: var(--octopus-background);\n border-radius: var(--octopus-border-radius);\n overflow: auto;\n margin: 0 !important;\n z-index: 10;\n\n &.popover-z-index {\n z-index: 9999;\n }\n\n &.octopus-dropdown {\n min-width: 200px;\n\n .octopus-dropdown-item {\n display: flex;\n justify-content: center;\n color: var(--octopus-color-text);\n width: 100%;\n padding: 0.25rem 1rem;\n font-weight: 400;\n text-decoration: none;\n white-space: nowrap;\n background-color: transparent;\n border: 0;\n\n &:disabled {\n background: var(--octopus-secondary-darker);\n }\n\n &:is(:hover, :focus){\n color: var(--octopus-popover-dropdown-item-color-fg-hover);\n background: var(--octopus-popover-dropdown-item-color-bg-hover);\n }\n }\n\n hr {\n margin: 0.5rem 0;\n overflow: hidden;\n border-top: 1px solid var(--octopus-border-default);\n opacity: 1;\n }\n }\n}\n</style>\n"],"mappings":"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"}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ClipboardModal-B_SZ6jDk.mjs","names":["_resolveComponent","_openBlock","_createBlock","_withCtx","_createElementVNode","_createTextVNode","_toDisplayString","_createVNode","_createCommentVNode","_sfc_main"],"sources":["../src/components/misc/modal/ClipboardModal.vue","../src/components/misc/modal/ClipboardModal.vue"],"sourcesContent":["<template>\n <ClassicModal\n id-modal=\"clipboard-modal\"\n :title-modal=\"t('RSS Link')\"\n @close=\"closePopup\"\n >\n <template #body>\n <p class=\"d-flex justify-content-between align-items-center\">\n {{ t(\"Rss feed:\") }}\n <span id=\"LINK\">{{ link }}</span>\n <ClassicCopyButton\n :text=\"t('Copy')\"\n :text-after-copy=\"t('Copied!')\"\n :data-to-copy=\"link\"\n :snackbar-text=\"t('Link in clipboard')\"\n />\n </p>\n <!--\n RssSection is not defined in the SDK: it is resolved at runtime from\n the consuming app's globally registered components (app.component()),\n and renders nothing if the app hasn't registered one under that name.\n -->\n <RssSection\n v-if=\"emission && undefined !== authStore.authOrgaId\"\n :emission=\"emission\"\n />\n </template>\n </ClassicModal>\n</template>\n\n<script setup lang=\"ts\">\nimport ClassicCopyButton from \"../../form/ClassicCopyButton.vue\";\nimport ClassicModal from \"../modal/ClassicModal.vue\";\nimport { Emission } from \"@/stores/class/general/emission\";\nimport { useAuthStore } from \"../../../stores/AuthStore\";\nimport { useI18n } from \"vue-i18n\";\n\n//Props \ndefineProps({\n link: { default: \"\", type: String },\n emission: { default: undefined, type: Object as () => Emission },\n})\n\n//Emits\nconst emit = defineEmits([\"close\"]);\n\n//Composables\nconst { t } = useI18n();\nconst authStore = useAuthStore();\n\n//Methods\nfunction closePopup(): void {\n emit(\"close\");\n}\n</script>\n","<template>\n <ClassicModal\n id-modal=\"clipboard-modal\"\n :title-modal=\"t('RSS Link')\"\n @close=\"closePopup\"\n >\n <template #body>\n <p class=\"d-flex justify-content-between align-items-center\">\n {{ t(\"Rss feed:\") }}\n <span id=\"LINK\">{{ link }}</span>\n <ClassicCopyButton\n :text=\"t('Copy')\"\n :text-after-copy=\"t('Copied!')\"\n :data-to-copy=\"link\"\n :snackbar-text=\"t('Link in clipboard')\"\n />\n </p>\n <!--\n RssSection is not defined in the SDK: it is resolved at runtime from\n the consuming app's globally registered components (app.component()),\n and renders nothing if the app hasn't registered one under that name.\n -->\n <RssSection\n v-if=\"emission && undefined !== authStore.authOrgaId\"\n :emission=\"emission\"\n />\n </template>\n </ClassicModal>\n</template>\n\n<script setup lang=\"ts\">\nimport ClassicCopyButton from \"../../form/ClassicCopyButton.vue\";\nimport ClassicModal from \"../modal/ClassicModal.vue\";\nimport { Emission } from \"@/stores/class/general/emission\";\nimport { useAuthStore } from \"../../../stores/AuthStore\";\nimport { useI18n } from \"vue-i18n\";\n\n//Props \ndefineProps({\n link: { default: \"\", type: String },\n emission: { default: undefined, type: Object as () => Emission },\n})\n\n//Emits\nconst emit = defineEmits([\"close\"]);\n\n//Composables\nconst { t } = useI18n();\nconst authStore = useAuthStore();\n\n//Methods\nfunction closePopup(): void {\n emit(\"close\");\n}\n</script>\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;EA4CA,MAAM,OAAO;EAGb,MAAM,EAAE,MAAM,QAAQ;EACtB,MAAM,YAAY,aAAa;EAG/B,SAAS,aAAmB;GAC1B,KAAK,OAAO;EACd;;;;;;;;;;;;;;;;;;AC9CS,IAAA,aAAA,EAAA,OAAM,oDAAmD;AAEpD,IAAA,aAAA,EAAA,IAAG,OAAM;;;CARrB,OAAAC,UAAA,GAAAC,YA0Be,OAAA,iBAAA;EAzBb,YAAS;EACR,eAAa,OAAA,EAAC,UAAA;EACd,SAAO,OAAA;;EAEG,MAAIC,cAUT;GATJC,mBASI,KATJ,YASI;IARCC,gBAAAC,gBAAA,OAAA,EAAC,WAAA,CAAA,IAAgB,KACpB,CAAA;IAAAF,mBAAiC,QAAjC,YAAiCE,gBAAd,OAAA,IAAI,GAAA,CAAA;IACvBC,YAKE,OAAA,sBAAA;KAJC,MAAM,OAAA,EAAC,MAAA;KACP,mBAAiB,OAAA,EAAC,SAAA;KAClB,gBAAc,OAAA;KACd,iBAAe,OAAA,EAAC,mBAAA;;;;;;;;GAGrBC,mBAAA,sPAAA;GAMQ,OAAA,YAAY,KAAA,MAAc,OAAA,UAAU,cAD5CP,UAAA,GAAAC,YAGE,uBAAA;;IADC,UAAU,OAAA"}
@@ -1,4 +1,4 @@
1
- import { i as e } from "./classicApi-pmODlqv5.mjs";
1
+ import { i as e } from "./classicApi-CGipMqf7.mjs";
2
2
  import { t } from "./ClassicModal-Dl2IdzXZ.mjs";
3
3
  import { t as n } from "./ClassicCopyButton-DJ9T09fS.mjs";
4
4
  import { createBlock as r, createCommentVNode as i, createElementVNode as a, createTextVNode as o, createVNode as s, defineComponent as c, openBlock as l, resolveComponent as u, toDisplayString as d, unref as f, withCtx as p } from "vue";
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ClipboardModal-DjrZQRtY.mjs","names":["_resolveComponent","_openBlock","_createBlock","_withCtx","_createElementVNode","_createTextVNode","_toDisplayString","_createVNode","_createCommentVNode","_sfc_main"],"sources":["../src/components/misc/modal/ClipboardModal.vue","../src/components/misc/modal/ClipboardModal.vue"],"sourcesContent":["<template>\n <ClassicModal\n id-modal=\"clipboard-modal\"\n :title-modal=\"t('RSS Link')\"\n @close=\"closePopup\"\n >\n <template #body>\n <p class=\"d-flex justify-content-between align-items-center\">\n {{ t(\"Rss feed:\") }}\n <span id=\"LINK\">{{ link }}</span>\n <ClassicCopyButton\n :text=\"t('Copy')\"\n :text-after-copy=\"t('Copied!')\"\n :data-to-copy=\"link\"\n :snackbar-text=\"t('Link in clipboard')\"\n />\n </p>\n <!--\n RssSection is not defined in the SDK: it is resolved at runtime from\n the consuming app's globally registered components (app.component()),\n and renders nothing if the app hasn't registered one under that name.\n -->\n <RssSection\n v-if=\"emission && undefined !== authStore.authOrgaId\"\n :emission=\"emission\"\n />\n </template>\n </ClassicModal>\n</template>\n\n<script setup lang=\"ts\">\nimport ClassicCopyButton from \"../../form/ClassicCopyButton.vue\";\nimport ClassicModal from \"../modal/ClassicModal.vue\";\nimport { Emission } from \"@/stores/class/general/emission\";\nimport { useAuthStore } from \"../../../stores/AuthStore\";\nimport { useI18n } from \"vue-i18n\";\n\n//Props \ndefineProps({\n link: { default: \"\", type: String },\n emission: { default: undefined, type: Object as () => Emission },\n})\n\n//Emits\nconst emit = defineEmits([\"close\"]);\n\n//Composables\nconst { t } = useI18n();\nconst authStore = useAuthStore();\n\n//Methods\nfunction closePopup(): void {\n emit(\"close\");\n}\n</script>\n","<template>\n <ClassicModal\n id-modal=\"clipboard-modal\"\n :title-modal=\"t('RSS Link')\"\n @close=\"closePopup\"\n >\n <template #body>\n <p class=\"d-flex justify-content-between align-items-center\">\n {{ t(\"Rss feed:\") }}\n <span id=\"LINK\">{{ link }}</span>\n <ClassicCopyButton\n :text=\"t('Copy')\"\n :text-after-copy=\"t('Copied!')\"\n :data-to-copy=\"link\"\n :snackbar-text=\"t('Link in clipboard')\"\n />\n </p>\n <!--\n RssSection is not defined in the SDK: it is resolved at runtime from\n the consuming app's globally registered components (app.component()),\n and renders nothing if the app hasn't registered one under that name.\n -->\n <RssSection\n v-if=\"emission && undefined !== authStore.authOrgaId\"\n :emission=\"emission\"\n />\n </template>\n </ClassicModal>\n</template>\n\n<script setup lang=\"ts\">\nimport ClassicCopyButton from \"../../form/ClassicCopyButton.vue\";\nimport ClassicModal from \"../modal/ClassicModal.vue\";\nimport { Emission } from \"@/stores/class/general/emission\";\nimport { useAuthStore } from \"../../../stores/AuthStore\";\nimport { useI18n } from \"vue-i18n\";\n\n//Props \ndefineProps({\n link: { default: \"\", type: String },\n emission: { default: undefined, type: Object as () => Emission },\n})\n\n//Emits\nconst emit = defineEmits([\"close\"]);\n\n//Composables\nconst { t } = useI18n();\nconst authStore = useAuthStore();\n\n//Methods\nfunction closePopup(): void {\n emit(\"close\");\n}\n</script>\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;EA4CA,MAAM,OAAO;EAGb,MAAM,EAAE,MAAM,QAAQ;EACtB,MAAM,YAAY,aAAa;EAG/B,SAAS,aAAmB;GAC1B,KAAK,OAAO;EACd;;;;;;;;;;;;;;;;;;AC9CS,IAAA,aAAA,EAAA,OAAM,oDAAmD;AAEpD,IAAA,aAAA,EAAA,IAAG,OAAM;;;CARrB,OAAAC,UAAA,GAAAC,YA0Be,OAAA,iBAAA;EAzBb,YAAS;EACR,eAAa,OAAA,EAAC,UAAA;EACd,SAAO,OAAA;;EAEG,MAAIC,cAUT;GATJC,mBASI,KATJ,YASI;IARCC,gBAAAC,gBAAA,OAAA,EAAC,WAAA,CAAA,IAAgB,KACpB,CAAA;IAAAF,mBAAiC,QAAjC,YAAiCE,gBAAd,OAAA,IAAI,GAAA,CAAA;IACvBC,YAKE,OAAA,sBAAA;KAJC,MAAM,OAAA,EAAC,MAAA;KACP,mBAAiB,OAAA,EAAC,SAAA;KAClB,gBAAc,OAAA;KACd,iBAAe,OAAA,EAAC,mBAAA;;;;;;;;GAGrBC,mBAAA,sPAAA;GAMQ,OAAA,YAAY,KAAA,MAAc,OAAA,UAAU,cAD5CP,UAAA,GAAAC,YAGE,uBAAA;;IADC,UAAU,OAAA"}
@@ -1,6 +1,6 @@
1
- import { i as e, t } from "./classicApi-pmODlqv5.mjs";
2
- import { n } from "./PlayerStore-CKprkxa0.mjs";
3
- import { t as r } from "./CommentStore-hPTYaDGr.mjs";
1
+ import { i as e, t } from "./classicApi-CGipMqf7.mjs";
2
+ import { n } from "./PlayerStore-DggKki80.mjs";
3
+ import { t as r } from "./CommentStore-CysGkBHp.mjs";
4
4
  import { t as i } from "./config-DMjLBcZ2.mjs";
5
5
  import { computed as a, createBlock as o, createCommentVNode as s, createElementBlock as c, createElementVNode as l, createVNode as u, defineAsyncComponent as d, defineComponent as f, normalizeClass as p, openBlock as m, ref as h, toDisplayString as g, unref as _, useTemplateRef as v, watch as y } from "vue";
6
6
  import { useI18n as b } from "vue-i18n";
@@ -26,7 +26,7 @@ var x = { class: "d-flex flex-column comment-input-container mt-3" }, S = {
26
26
  },
27
27
  emits: ["cancelAction", "newComment"],
28
28
  setup(f, { emit: T }) {
29
- let E = d(() => import("./CheckIdentityModal-nMszYOsW.mjs")), D = d(() => import("./CommentName-DslRo9jg.mjs")), O = d(() => import("./MessageModal-BcqS77v6.mjs").then((e) => e.n)), k = d(() => import("./ClassicEmojiPicker-B4TAlZvo.mjs")), A = d(() => import("./ClassicContentEditable-CWmtRihd.mjs")), j = f, M = T, N = i.MAX_COMMENT, P = h(""), F = h(!1), I = h(!1), L = h(!1), R = v("textarea"), { t: z } = b(), B = n(), V = r(), H = e(), U = a(() => W.value <= N), W = a(() => P.value.length), G = a(() => j.inAnswerComment?.commentId ? z("Answer a comment") : z("Write a comment")), K = a(() => "-comment" + (j.inAnswerComment?.commentId ?? "-parent"));
29
+ let E = d(() => import("./CheckIdentityModal-BrnYeGdk.mjs")), D = d(() => import("./CommentName-CHBlEM7I.mjs")), O = d(() => import("./MessageModal-BcqS77v6.mjs").then((e) => e.n)), k = d(() => import("./ClassicEmojiPicker-C0gm-DA2.mjs")), A = d(() => import("./ClassicContentEditable-CWmtRihd.mjs")), j = f, M = T, N = i.MAX_COMMENT, P = h(""), F = h(!1), I = h(!1), L = h(!1), R = v("textarea"), { t: z } = b(), B = n(), V = r(), H = e(), U = a(() => W.value <= N), W = a(() => P.value.length), G = a(() => j.inAnswerComment?.commentId ? z("Answer a comment") : z("Write a comment")), K = a(() => "-comment" + (j.inAnswerComment?.commentId ?? "-parent"));
30
30
  y(() => j.focus, () => R?.value?.focus());
31
31
  function q(e) {
32
32
  P.value += e;
@@ -0,0 +1 @@
1
+ {"version":3,"file":"CommentInput-DPMj47uE.mjs","names":["Constants","classicApi","_openBlock","_createElementBlock","_createBlock","_createCommentVNode","_createVNode","_createElementVNode","_normalizeClass","_toDisplayString","_sfc_main"],"sources":["../src/components/display/comments/CommentInput.vue","../src/components/display/comments/CommentInput.vue"],"sourcesContent":["<template>\n <div class=\"d-flex flex-column comment-input-container mt-3\">\n <CommentName v-if=\"commentStore.commentUser?.name\" />\n <ClassicContentEditable\n ref=\"textarea\"\n v-model=\"newComment\"\n class=\"comment-input\"\n :placeholder=\"placeholder\"\n @focus=\"isTextareaActive = true\"\n />\n <div v-if=\"isTextareaActive\" class=\"d-flex justify-content-between mt-1\">\n <ClassicEmojiPicker\n :id=\"uniqueId\"\n popover-relative-class=\"page-element\"\n @emoji-selected=\"addEmojiSelected\"\n />\n <div class=\"d-flex ms-auto\">\n <p\n class=\"d-flex justify-content-end h6 me-3\"\n :class=\"{ 'text-danger': !commentTooLong }\"\n >\n {{ countComment + \" / \" + maxComment }}\n </p>\n <button class=\"btn me-2\" @mousedown=\"cancelAction\">\n {{ t(\"Cancel\") }}\n </button>\n <button\n class=\"btn btn-primary\"\n :disabled=\"0 === countComment || !commentTooLong\"\n @mousedown=\"requestToSend\"\n >\n {{ placeholder }}\n </button>\n </div>\n </div>\n <CheckIdentityModal\n v-if=\"isCheckIdentity\"\n @validate=\"postComment\"\n @close=\"isCheckIdentity = false\"\n />\n <MessageModal\n v-if=\"postError\"\n :validatetext=\"t('Close')\"\n :title=\"t('Error')\"\n :message=\"t('Error occurs while post your comment...')\"\n @close=\"postError = false\"\n @validate=\"postError = false\"\n />\n </div>\n</template>\n\n<script setup lang=\"ts\">\nimport classicApi from \"../../../api/classicApi\";\nimport { Podcast } from \"@/stores/class/general/podcast\";\nimport { CommentPodcast } from \"@/stores/class/general/comment\";\nimport Constants from \"../../../../public/config\";\nimport { defineAsyncComponent, ref, computed, watch, useTemplateRef } from \"vue\";\nimport { useCommentStore } from \"../../../stores/CommentStore\";\nimport { usePlayerStore } from \"../../../stores/PlayerStore\";\nimport { useAuthStore } from \"../../../stores/AuthStore\";\nimport { useI18n } from \"vue-i18n\";\nconst CheckIdentityModal = defineAsyncComponent(\n () => import(\"./modal/CheckIdentityModal.vue\"),\n);\nconst CommentName = defineAsyncComponent(() => import(\"./CommentName.vue\"));\nconst MessageModal = defineAsyncComponent(\n () => import(\"../../misc/modal/MessageModal.vue\"),\n);\nconst ClassicEmojiPicker = defineAsyncComponent(\n () => import(\"../../form/ClassicEmojiPicker.vue\"),\n);\nconst ClassicContentEditable = defineAsyncComponent(\n () => import(\"../../form/ClassicContentEditable.vue\"),\n);\n\n//Props \nconst props = defineProps({\n podcast: { default: undefined, type: Object as () => Podcast },\n focus: { default: false, type: Boolean },\n inAnswerComment: {\n default: undefined,\n type: Object as () => CommentPodcast,\n },\n})\n\n//Emits\nconst emit = defineEmits([\"cancelAction\", \"newComment\"]);\n\n//Data \nconst maxComment = Constants.MAX_COMMENT;\nconst newComment = ref(\"\");\nconst isTextareaActive = ref(false);\nconst isCheckIdentity = ref(false);\nconst postError = ref(false);\nconst textareaRef = useTemplateRef('textarea');\n\n//Composables\nconst { t } = useI18n();\nconst playerStore = usePlayerStore();\nconst commentStore = useCommentStore();\nconst authStore = useAuthStore();\n\n//Computed\nconst commentTooLong = computed(() => countComment.value <= maxComment);\nconst countComment = computed(() => newComment.value.length);\nconst placeholder = computed(() => props.inAnswerComment?.commentId? t(\"Answer a comment\"): t(\"Write a comment\"));\nconst uniqueId = computed(() => \"-comment\"+(props.inAnswerComment?.commentId??\"-parent\"));\n\n\n//Watch\nwatch(()=>props.focus, () => textareaRef?.value?.focus());\n\n\n//Methods\nfunction addEmojiSelected(emoji: string) {\n newComment.value += emoji;\n}\nfunction requestToSend(): void {\n if (commentStore.commentUser?.name) {\n postComment();\n } else {\n isCheckIdentity.value = true;\n }\n}\nfunction cancelAction(): void {\n newComment.value = \"\";\n isTextareaActive.value = false;\n emit(\"cancelAction\");\n}\nasync function postComment(): Promise<void> {\n try {\n const commentReceived = await classicApi.postData<CommentPodcast>({\n api: 2,\n path: \"comment/\",\n dataToSend: {\n answerTo: props.inAnswerComment?.commentId,\n content: newComment.value.trim(),\n name: commentStore.commentUser?.name ?? \"\",\n podcastId:\n props.podcast?.podcastId ?? props.inAnswerComment?.podcastId ?? 0,\n uuid: commentStore.commentUser?.uuid ?? \"\",\n timeline: defineTimelineValue(),\n },\n isNotAuth: undefined === authStore.authOrgaId,\n });\n emit(\"newComment\", commentReceived);\n newComment.value = \"\";\n isTextareaActive.value = false;\n } catch {\n postError.value = true;\n }\n isCheckIdentity.value = false;\n}\nfunction defineTimelineValue(): number {\n let timeline = 0;\n if (\n undefined !== props.podcast &&\n (playerStore.playerPodcast?.podcastId === props.podcast.podcastId ||\n playerStore.playerLive?.podcastId === props.podcast.podcastId)\n ) {\n timeline = Math.round(playerStore.playerElapsed * playerStore.playerTotal);\n if (props.podcast.duration && playerStore.playerPodcast) {\n timeline = Math.round(\n timeline - (playerStore.playerTotal - props.podcast.duration / 1000),\n );\n }\n }\n return timeline < 0 ? 0 : timeline;\n}\n</script>\n\n<style lang=\"scss\">\n.octopus-app .comment-input-container {\n .comment-input {\n border-bottom: 0.1rem solid var(--octopus-border-default);\n overflow: hidden;\n min-height: 36px;\n resize: none;\n }\n}\n</style>\n","<template>\n <div class=\"d-flex flex-column comment-input-container mt-3\">\n <CommentName v-if=\"commentStore.commentUser?.name\" />\n <ClassicContentEditable\n ref=\"textarea\"\n v-model=\"newComment\"\n class=\"comment-input\"\n :placeholder=\"placeholder\"\n @focus=\"isTextareaActive = true\"\n />\n <div v-if=\"isTextareaActive\" class=\"d-flex justify-content-between mt-1\">\n <ClassicEmojiPicker\n :id=\"uniqueId\"\n popover-relative-class=\"page-element\"\n @emoji-selected=\"addEmojiSelected\"\n />\n <div class=\"d-flex ms-auto\">\n <p\n class=\"d-flex justify-content-end h6 me-3\"\n :class=\"{ 'text-danger': !commentTooLong }\"\n >\n {{ countComment + \" / \" + maxComment }}\n </p>\n <button class=\"btn me-2\" @mousedown=\"cancelAction\">\n {{ t(\"Cancel\") }}\n </button>\n <button\n class=\"btn btn-primary\"\n :disabled=\"0 === countComment || !commentTooLong\"\n @mousedown=\"requestToSend\"\n >\n {{ placeholder }}\n </button>\n </div>\n </div>\n <CheckIdentityModal\n v-if=\"isCheckIdentity\"\n @validate=\"postComment\"\n @close=\"isCheckIdentity = false\"\n />\n <MessageModal\n v-if=\"postError\"\n :validatetext=\"t('Close')\"\n :title=\"t('Error')\"\n :message=\"t('Error occurs while post your comment...')\"\n @close=\"postError = false\"\n @validate=\"postError = false\"\n />\n </div>\n</template>\n\n<script setup lang=\"ts\">\nimport classicApi from \"../../../api/classicApi\";\nimport { Podcast } from \"@/stores/class/general/podcast\";\nimport { CommentPodcast } from \"@/stores/class/general/comment\";\nimport Constants from \"../../../../public/config\";\nimport { defineAsyncComponent, ref, computed, watch, useTemplateRef } from \"vue\";\nimport { useCommentStore } from \"../../../stores/CommentStore\";\nimport { usePlayerStore } from \"../../../stores/PlayerStore\";\nimport { useAuthStore } from \"../../../stores/AuthStore\";\nimport { useI18n } from \"vue-i18n\";\nconst CheckIdentityModal = defineAsyncComponent(\n () => import(\"./modal/CheckIdentityModal.vue\"),\n);\nconst CommentName = defineAsyncComponent(() => import(\"./CommentName.vue\"));\nconst MessageModal = defineAsyncComponent(\n () => import(\"../../misc/modal/MessageModal.vue\"),\n);\nconst ClassicEmojiPicker = defineAsyncComponent(\n () => import(\"../../form/ClassicEmojiPicker.vue\"),\n);\nconst ClassicContentEditable = defineAsyncComponent(\n () => import(\"../../form/ClassicContentEditable.vue\"),\n);\n\n//Props \nconst props = defineProps({\n podcast: { default: undefined, type: Object as () => Podcast },\n focus: { default: false, type: Boolean },\n inAnswerComment: {\n default: undefined,\n type: Object as () => CommentPodcast,\n },\n})\n\n//Emits\nconst emit = defineEmits([\"cancelAction\", \"newComment\"]);\n\n//Data \nconst maxComment = Constants.MAX_COMMENT;\nconst newComment = ref(\"\");\nconst isTextareaActive = ref(false);\nconst isCheckIdentity = ref(false);\nconst postError = ref(false);\nconst textareaRef = useTemplateRef('textarea');\n\n//Composables\nconst { t } = useI18n();\nconst playerStore = usePlayerStore();\nconst commentStore = useCommentStore();\nconst authStore = useAuthStore();\n\n//Computed\nconst commentTooLong = computed(() => countComment.value <= maxComment);\nconst countComment = computed(() => newComment.value.length);\nconst placeholder = computed(() => props.inAnswerComment?.commentId? t(\"Answer a comment\"): t(\"Write a comment\"));\nconst uniqueId = computed(() => \"-comment\"+(props.inAnswerComment?.commentId??\"-parent\"));\n\n\n//Watch\nwatch(()=>props.focus, () => textareaRef?.value?.focus());\n\n\n//Methods\nfunction addEmojiSelected(emoji: string) {\n newComment.value += emoji;\n}\nfunction requestToSend(): void {\n if (commentStore.commentUser?.name) {\n postComment();\n } else {\n isCheckIdentity.value = true;\n }\n}\nfunction cancelAction(): void {\n newComment.value = \"\";\n isTextareaActive.value = false;\n emit(\"cancelAction\");\n}\nasync function postComment(): Promise<void> {\n try {\n const commentReceived = await classicApi.postData<CommentPodcast>({\n api: 2,\n path: \"comment/\",\n dataToSend: {\n answerTo: props.inAnswerComment?.commentId,\n content: newComment.value.trim(),\n name: commentStore.commentUser?.name ?? \"\",\n podcastId:\n props.podcast?.podcastId ?? props.inAnswerComment?.podcastId ?? 0,\n uuid: commentStore.commentUser?.uuid ?? \"\",\n timeline: defineTimelineValue(),\n },\n isNotAuth: undefined === authStore.authOrgaId,\n });\n emit(\"newComment\", commentReceived);\n newComment.value = \"\";\n isTextareaActive.value = false;\n } catch {\n postError.value = true;\n }\n isCheckIdentity.value = false;\n}\nfunction defineTimelineValue(): number {\n let timeline = 0;\n if (\n undefined !== props.podcast &&\n (playerStore.playerPodcast?.podcastId === props.podcast.podcastId ||\n playerStore.playerLive?.podcastId === props.podcast.podcastId)\n ) {\n timeline = Math.round(playerStore.playerElapsed * playerStore.playerTotal);\n if (props.podcast.duration && playerStore.playerPodcast) {\n timeline = Math.round(\n timeline - (playerStore.playerTotal - props.podcast.duration / 1000),\n );\n }\n }\n return timeline < 0 ? 0 : timeline;\n}\n</script>\n\n<style lang=\"scss\">\n.octopus-app .comment-input-container {\n .comment-input {\n border-bottom: 0.1rem solid var(--octopus-border-default);\n overflow: hidden;\n min-height: 36px;\n resize: none;\n }\n}\n</style>\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;EA6DA,MAAM,qBAAqB,2BACnB,OAAO,oCACf;EACA,MAAM,cAAc,2BAA2B,OAAO,6BAAoB;EAC1E,MAAM,eAAe,2BACb,OAAO,8BACf,CAAA,MAAA,MAAA,EAAA,CAAA,CAAA;EACA,MAAM,qBAAqB,2BACnB,OAAO,oCACf;EACA,MAAM,yBAAyB,2BACvB,OAAO,wCACf;EAGA,MAAM,QAAQ;EAUd,MAAM,OAAO;EAGb,MAAM,aAAaA,eAAU;EAC7B,MAAM,aAAa,IAAI,EAAE;EACzB,MAAM,mBAAmB,IAAI,KAAK;EAClC,MAAM,kBAAkB,IAAI,KAAK;EACjC,MAAM,YAAY,IAAI,KAAK;EAC3B,MAAM,cAAc,eAAe,UAAU;EAG7C,MAAM,EAAE,MAAM,QAAQ;EACtB,MAAM,cAAc,eAAe;EACnC,MAAM,eAAe,gBAAgB;EACrC,MAAM,YAAY,aAAa;EAG/B,MAAM,iBAAiB,eAAe,aAAa,SAAS,UAAU;EACtE,MAAM,eAAe,eAAe,WAAW,MAAM,MAAM;EAC3D,MAAM,cAAc,eAAe,MAAM,iBAAiB,YAAW,EAAE,kBAAkB,IAAG,EAAE,iBAAiB,CAAC;EAChH,MAAM,WAAW,eAAe,cAAY,MAAM,iBAAiB,aAAW,UAAU;EAIxF,YAAU,MAAM,aAAa,aAAa,OAAO,MAAM,CAAC;EAIxD,SAAS,iBAAiB,OAAe;GACvC,WAAW,SAAS;EACtB;EACA,SAAS,gBAAsB;GAC7B,IAAI,aAAa,aAAa,MAC5B,YAAY;QAEZ,gBAAgB,QAAQ;EAE5B;EACA,SAAS,eAAqB;GAC5B,WAAW,QAAQ;GACnB,iBAAiB,QAAQ;GACzB,KAAK,cAAc;EACrB;EACA,eAAe,cAA6B;GAC1C,IAAI;IACF,MAAM,kBAAkB,MAAMC,mBAAW,SAAyB;KAChE,KAAK;KACL,MAAM;KACN,YAAY;MACV,UAAU,MAAM,iBAAiB;MACjC,SAAS,WAAW,MAAM,KAAK;MAC/B,MAAM,aAAa,aAAa,QAAQ;MACxC,WACE,MAAM,SAAS,aAAa,MAAM,iBAAiB,aAAa;MAClE,MAAM,aAAa,aAAa,QAAQ;MACxC,UAAU,oBAAoB;KAChC;KACA,WAAW,KAAA,MAAc,UAAU;IACrC,CAAC;IACD,KAAK,cAAc,eAAe;IAClC,WAAW,QAAQ;IACnB,iBAAiB,QAAQ;GAC3B,QAAQ;IACN,UAAU,QAAQ;GACpB;GACA,gBAAgB,QAAQ;EAC1B;EACA,SAAS,sBAA8B;GACrC,IAAI,WAAW;GACf,IACE,KAAA,MAAc,MAAM,YACnB,YAAY,eAAe,cAAc,MAAM,QAAQ,aACxD,YAAY,YAAY,cAAc,MAAM,QAAQ,YACpD;IACA,WAAW,KAAK,MAAM,YAAY,gBAAgB,YAAY,WAAW;IACzE,IAAI,MAAM,QAAQ,YAAY,YAAY,eACxC,WAAW,KAAK,MACd,YAAY,YAAY,cAAc,MAAM,QAAQ,WAAW,IACjE;GAEJ;GACA,OAAO,WAAW,IAAI,IAAI;EAC5B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACvKO,IAAA,aAAA,EAAA,OAAM,kDAAiD;;;CAS7B,OAAM;;AAM5B,IAAA,aAAA,EAAA,OAAM,iBAAgB;;;CAf/B,OAAAC,UAAA,GAAAC,mBA+CM,OA/CN,YA+CM;EA9Ce,OAAA,aAAa,aAAa,QAA7CD,UAAA,GAAAE,YAAqD,OAAA,gBAAA,EAAA,KAAA,EAAA,CAAA,KAAAC,mBAAA,QAAA,IAAA;EACrDC,YAME,OAAA,2BAAA;GALA,KAAI;GACK,YAAA,OAAA;GAAA,uBAAA,OAAA,OAAA,OAAA,MAAA,WAAA,OAAA,aAAU;GACnB,OAAM;GACL,aAAa,OAAA;GACb,SAAK,OAAA,OAAA,OAAA,MAAA,WAAE,OAAA,mBAAgB;;EAEf,OAAA,oBAAXJ,UAAA,GAAAC,mBAwBM,OAxBN,YAwBM,CAvBJG,YAIE,OAAA,uBAAA;GAHC,IAAI,OAAA;GACL,0BAAuB;GACtB,iBAAgB,OAAA;EAEnB,GAAA,MAAA,GAAA,CAAA,IAAA,CAAA,GAAAC,mBAiBM,OAjBN,YAiBM;GAhBJA,mBAKI,KAAA,EAJF,OAAKC,eAAA,CAAC,sCAAoC,EAAA,eAAA,CAChB,OAAA,eAAc,CAAA,CAAA,EAErC,GAAAC,gBAAA,OAAA,eAAY,QAAW,OAAA,UAAU,GAAA,CAAA;GAEtCF,mBAES,UAAA;IAFD,OAAM;IAAY,aAAW,OAAA;GAChC,GAAAE,gBAAA,OAAA,EAAC,QAAA,CAAA,GAAA,EAAA;GAENF,mBAMS,UAAA;IALP,OAAM;IACL,UAAQ,MAAQ,OAAA,gBAAY,CAAK,OAAA;IACjC,aAAW,OAAA;GAET,GAAAE,gBAAA,OAAA,WAAW,GAAA,IAAA,UAAA;;EAKZ,OAAA,mBADRP,UAAA,GAAAE,YAIE,OAAA,uBAAA;;GAFC,YAAU,OAAA;GACV,SAAK,OAAA,OAAA,OAAA,MAAA,WAAE,OAAA,kBAAe;;EAGjB,OAAA,aADRF,UAAA,GAAAE,YAOE,OAAA,iBAAA;;GALC,cAAc,OAAA,EAAC,OAAA;GACf,OAAO,OAAA,EAAC,OAAA;GACR,SAAS,OAAA,EAAC,yCAAA;GACV,SAAK,OAAA,OAAA,OAAA,MAAA,WAAE,OAAA,YAAS;GAChB,YAAQ,OAAA,OAAA,OAAA,MAAA,WAAE,OAAA,YAAS"}