@nextcloud/vue 9.0.0-alpha.0 → 9.0.0-alpha.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 (563) hide show
  1. package/CHANGELOG.md +47 -1
  2. package/dist/Components/NcActionButton.cjs +1 -1
  3. package/dist/Components/NcActionButton.mjs +1 -1
  4. package/dist/Components/NcActionButtonGroup.cjs +1 -1
  5. package/dist/Components/NcActionButtonGroup.mjs +1 -1
  6. package/dist/Components/NcActionCheckbox.cjs +1 -1
  7. package/dist/Components/NcActionCheckbox.mjs +1 -1
  8. package/dist/Components/NcActionInput.cjs +1 -1
  9. package/dist/Components/NcActionInput.mjs +1 -1
  10. package/dist/Components/NcActionLink.cjs +1 -1
  11. package/dist/Components/NcActionLink.mjs +1 -1
  12. package/dist/Components/NcActionRadio.cjs +1 -1
  13. package/dist/Components/NcActionRadio.mjs +1 -1
  14. package/dist/Components/NcActionRouter.cjs +1 -1
  15. package/dist/Components/NcActionRouter.mjs +1 -1
  16. package/dist/Components/NcActionText.cjs +1 -1
  17. package/dist/Components/NcActionText.mjs +1 -1
  18. package/dist/Components/NcActionTextEditable.cjs +1 -1
  19. package/dist/Components/NcActionTextEditable.mjs +1 -1
  20. package/dist/Components/NcActions.cjs +1 -1
  21. package/dist/Components/NcActions.mjs +1 -1
  22. package/dist/Components/NcAppContent.cjs +1 -1
  23. package/dist/Components/NcAppContent.mjs +1 -1
  24. package/dist/Components/NcAppNavigation.cjs +1 -1
  25. package/dist/Components/NcAppNavigation.mjs +1 -1
  26. package/dist/Components/NcAppNavigationCaption.cjs +1 -1
  27. package/dist/Components/NcAppNavigationCaption.mjs +1 -1
  28. package/dist/Components/NcAppNavigationItem.cjs +1 -1
  29. package/dist/Components/NcAppNavigationItem.mjs +1 -1
  30. package/dist/Components/NcAppNavigationNew.cjs +1 -1
  31. package/dist/Components/NcAppNavigationNew.mjs +1 -1
  32. package/dist/Components/NcAppNavigationNewItem.cjs +1 -1
  33. package/dist/Components/NcAppNavigationNewItem.mjs +1 -1
  34. package/dist/Components/NcAppNavigationSettings.cjs +1 -1
  35. package/dist/Components/NcAppNavigationSettings.mjs +1 -1
  36. package/dist/Components/NcAppNavigationToggle.cjs +1 -1
  37. package/dist/Components/NcAppNavigationToggle.mjs +1 -1
  38. package/dist/Components/NcAppSettingsDialog.cjs +1 -1
  39. package/dist/Components/NcAppSettingsDialog.mjs +1 -1
  40. package/dist/Components/NcAppSettingsSection.cjs +1 -1
  41. package/dist/Components/NcAppSettingsSection.mjs +1 -1
  42. package/dist/Components/NcAppSidebar.cjs +1 -1
  43. package/dist/Components/NcAppSidebar.mjs +1 -1
  44. package/dist/Components/NcAppSidebarTab.cjs +1 -1
  45. package/dist/Components/NcAppSidebarTab.mjs +1 -1
  46. package/dist/Components/NcAvatar.cjs +1 -1
  47. package/dist/Components/NcAvatar.mjs +1 -1
  48. package/dist/Components/NcBreadcrumb.cjs +1 -1
  49. package/dist/Components/NcBreadcrumb.mjs +1 -1
  50. package/dist/Components/NcBreadcrumbs.cjs +1 -1
  51. package/dist/Components/NcBreadcrumbs.mjs +1 -1
  52. package/dist/Components/NcButton.cjs +1 -1
  53. package/dist/Components/NcButton.mjs +1 -1
  54. package/dist/Components/NcCheckboxRadioSwitch.cjs +1 -1
  55. package/dist/Components/NcCheckboxRadioSwitch.mjs +1 -1
  56. package/dist/Components/NcColorPicker.cjs +1 -1
  57. package/dist/Components/NcColorPicker.mjs +1 -1
  58. package/dist/Components/NcContent.cjs +1 -1
  59. package/dist/Components/NcContent.mjs +1 -1
  60. package/dist/Components/NcDashboardWidget.cjs +1 -1
  61. package/dist/Components/NcDashboardWidget.mjs +1 -1
  62. package/dist/Components/NcDashboardWidgetItem.cjs +1 -1
  63. package/dist/Components/NcDashboardWidgetItem.mjs +1 -1
  64. package/dist/Components/NcDateTime.cjs +1 -1
  65. package/dist/Components/NcDateTime.mjs +1 -1
  66. package/dist/Components/NcDateTimePicker.cjs +1 -1
  67. package/dist/Components/NcDateTimePicker.mjs +1 -1
  68. package/dist/Components/NcDateTimePickerNative.cjs +1 -1
  69. package/dist/Components/NcDateTimePickerNative.mjs +1 -1
  70. package/dist/Components/NcDialog.cjs +1 -1
  71. package/dist/Components/NcDialog.mjs +1 -1
  72. package/dist/Components/NcDialogButton.cjs +1 -1
  73. package/dist/Components/NcDialogButton.mjs +1 -1
  74. package/dist/Components/NcEmojiPicker.cjs +1 -1
  75. package/dist/Components/NcEmojiPicker.mjs +1 -1
  76. package/dist/Components/NcHeaderMenu.cjs +1 -1
  77. package/dist/Components/NcHeaderMenu.mjs +1 -1
  78. package/dist/Components/NcIconSvgWrapper.cjs +1 -1
  79. package/dist/Components/NcIconSvgWrapper.mjs +1 -1
  80. package/dist/Components/NcInputField.cjs +1 -1
  81. package/dist/Components/NcInputField.mjs +1 -1
  82. package/dist/Components/NcListItem.cjs +1 -1
  83. package/dist/Components/NcListItem.mjs +1 -1
  84. package/dist/Components/NcListItemIcon.cjs +1 -1
  85. package/dist/Components/NcListItemIcon.mjs +1 -1
  86. package/dist/Components/NcModal.cjs +12 -11
  87. package/dist/Components/NcModal.cjs.map +1 -1
  88. package/dist/Components/NcModal.mjs +37 -36
  89. package/dist/Components/NcModal.mjs.map +1 -1
  90. package/dist/Components/NcNoteCard.cjs +1 -1
  91. package/dist/Components/NcNoteCard.mjs +1 -1
  92. package/dist/Components/NcPasswordField.cjs +1 -1
  93. package/dist/Components/NcPasswordField.mjs +1 -1
  94. package/dist/Components/NcPopover.cjs +1 -1
  95. package/dist/Components/NcPopover.mjs +1 -1
  96. package/dist/Components/NcProgressBar.cjs +1 -1
  97. package/dist/Components/NcProgressBar.mjs +1 -1
  98. package/dist/Components/NcRelatedResourcesPanel.cjs +1 -1
  99. package/dist/Components/NcRelatedResourcesPanel.mjs +1 -1
  100. package/dist/Components/NcRichContenteditable.cjs +1 -1
  101. package/dist/Components/NcRichContenteditable.mjs +2 -2
  102. package/dist/Components/NcRichText.cjs +1 -1
  103. package/dist/Components/NcRichText.mjs +3 -3
  104. package/dist/Components/NcSelect.cjs +1 -1
  105. package/dist/Components/NcSelect.mjs +1 -1
  106. package/dist/Components/NcSelectTags.cjs +1 -1
  107. package/dist/Components/NcSelectTags.mjs +1 -1
  108. package/dist/Components/NcSettingsInputText.cjs +1 -1
  109. package/dist/Components/NcSettingsInputText.mjs +1 -1
  110. package/dist/Components/NcSettingsSection.cjs +1 -1
  111. package/dist/Components/NcSettingsSection.mjs +1 -1
  112. package/dist/Components/NcSettingsSelectGroup.cjs +1 -1
  113. package/dist/Components/NcSettingsSelectGroup.mjs +1 -1
  114. package/dist/Components/NcTextArea.cjs +1 -1
  115. package/dist/Components/NcTextArea.mjs +1 -1
  116. package/dist/Components/NcTextField.cjs +1 -1
  117. package/dist/Components/NcTextField.mjs +1 -1
  118. package/dist/Components/NcTimezonePicker.cjs +1 -1
  119. package/dist/Components/NcTimezonePicker.mjs +1 -1
  120. package/dist/Components/NcUserBubble.cjs +1 -1
  121. package/dist/Components/NcUserBubble.mjs +1 -1
  122. package/dist/Components/NcUserStatusIcon.cjs +1 -1
  123. package/dist/Components/NcUserStatusIcon.mjs +1 -1
  124. package/dist/Components/NcVNodes.cjs +4 -3
  125. package/dist/Components/NcVNodes.cjs.map +1 -1
  126. package/dist/Components/NcVNodes.mjs +4 -3
  127. package/dist/Components/NcVNodes.mjs.map +1 -1
  128. package/dist/Directives/Linkify.cjs +5 -4
  129. package/dist/Directives/Linkify.cjs.map +1 -1
  130. package/dist/Directives/Linkify.mjs +6 -5
  131. package/dist/Directives/Linkify.mjs.map +1 -1
  132. package/dist/Functions/emoji.cjs +1 -1
  133. package/dist/Functions/emoji.mjs +1 -1
  134. package/dist/Functions/usernameToColor.cjs +1 -1
  135. package/dist/Functions/usernameToColor.mjs +1 -1
  136. package/dist/Mixins/richEditor.cjs +1 -1
  137. package/dist/Mixins/richEditor.mjs +1 -1
  138. package/dist/assets/{NcActionButton-p7spK21h.css → NcActionButton-De4wlKZH.css} +17 -17
  139. package/dist/assets/{NcActions-cEMOhd0g.css → NcActions-PR-7NI_x.css} +12 -12
  140. package/dist/assets/{NcAppContent--D5zvLsb.css → NcAppContent-kIkHd4VN.css} +1 -0
  141. package/dist/assets/{NcAppNavigationItem-V2jQd3bm.css → NcAppNavigationItem-_MHs9DEv.css} +14 -7
  142. package/dist/assets/{NcAppNavigationNewItem-MQBvffq9.css → NcAppNavigationNewItem-ue-H4LQY.css} +14 -7
  143. package/dist/assets/{NcAppNavigationToggle-egZffUzR.css → NcAppNavigationToggle-VrntFGdJ.css} +3 -3
  144. package/dist/assets/{NcAppSettingsDialog-F29bz2Yx.css → NcAppSettingsDialog-HOydlmNi.css} +16 -17
  145. package/dist/assets/{NcAppSidebar-QQPSZPo9.css → NcAppSidebar-UFABwmpX.css} +44 -44
  146. package/dist/assets/{NcAvatar-qgACiUer.css → NcAvatar-DCUiVghV.css} +27 -27
  147. package/dist/assets/{NcBreadcrumbs-liWjT068.css → NcBreadcrumbs-VKFJ9HrE.css} +7 -7
  148. package/dist/assets/{NcButton-fqTN6SJK.css → NcButton-rKJYdkZn.css} +43 -43
  149. package/dist/assets/{NcCheckboxRadioSwitch-P71iLdgD.css → NcCheckboxRadioSwitch-dNV4KgTO.css} +49 -47
  150. package/dist/assets/{NcColorPicker-88MDZrB0.css → NcColorPicker-FiFz1rof.css} +24 -24
  151. package/dist/assets/{NcContent-ZG2BJ837.css → NcContent-3Fl9j87E.css} +9 -9
  152. package/dist/assets/{NcDateTimePicker-SsDztIsS.css → NcDateTimePicker-CC5ocPIo.css} +10 -10
  153. package/dist/assets/{NcDateTimePickerNative-QBosiBWA.css → NcDateTimePickerNative-BeREqSH_.css} +19 -7
  154. package/dist/assets/{NcDialog-9-cx1V0y.css → NcDialog-IM0YIgKq.css} +30 -19
  155. package/dist/assets/{NcEmojiPicker-KRMyqbWg.css → NcEmojiPicker-nDpi1GKA.css} +6 -5
  156. package/dist/assets/{NcHeaderMenu-j8h_puZT.css → NcHeaderMenu-kKraSlS3.css} +15 -15
  157. package/dist/assets/{NcInputField-42mSa1zm.css → NcInputField-qx4Me7uJ.css} +39 -38
  158. package/dist/assets/{NcListItem--i7b67QY.css → NcListItem-RylkggkP.css} +49 -49
  159. package/dist/assets/{NcModal-DzsqMWSJ.css → NcModal-lgvjJTYz.css} +65 -65
  160. package/dist/assets/{NcNoteCard-OTfZqVvP.css → NcNoteCard-f0NZpwjL.css} +7 -7
  161. package/dist/assets/{NcRichContenteditable-nUZdQSMZ.css → NcRichContenteditable--bkjerM1.css} +13 -12
  162. package/dist/assets/{NcTextArea-6akBm4Ks.css → NcTextArea-Eqv_-5FR.css} +24 -23
  163. package/dist/assets/{referencePickerModal-G-NTZHL1.css → referencePickerModal-k5G-IS2z.css} +2 -2
  164. package/dist/chunks/{AlertCircleOutline-Q4EgxGNm.mjs → AlertCircleOutline-1fsF7za7.mjs} +6 -6
  165. package/dist/chunks/AlertCircleOutline-1fsF7za7.mjs.map +1 -0
  166. package/dist/chunks/{AlertCircleOutline-aU4Cu4IM.cjs → AlertCircleOutline-M7wVqz_-.cjs} +1 -1
  167. package/dist/chunks/AlertCircleOutline-M7wVqz_-.cjs.map +1 -0
  168. package/dist/chunks/{ArrowLeft-4DZMGcXE.cjs → ArrowLeft-arUkZZ3U.cjs} +4 -4
  169. package/dist/chunks/ArrowLeft-arUkZZ3U.cjs.map +1 -0
  170. package/dist/chunks/{ArrowLeft-LlLrrfss.mjs → ArrowLeft-uvAzhtxD.mjs} +4 -4
  171. package/dist/chunks/ArrowLeft-uvAzhtxD.mjs.map +1 -0
  172. package/dist/chunks/{ArrowRight-Fk_qtqpW.mjs → ArrowRight-6gYTXvBH.mjs} +4 -4
  173. package/dist/chunks/ArrowRight-6gYTXvBH.mjs.map +1 -0
  174. package/dist/chunks/{ArrowRight-mI4Fw0h2.cjs → ArrowRight-UxW1qyeX.cjs} +5 -5
  175. package/dist/chunks/ArrowRight-UxW1qyeX.cjs.map +1 -0
  176. package/dist/chunks/{Check-SlTPuUzR.cjs → Check-fwcsc82n.cjs} +4 -4
  177. package/dist/chunks/Check-fwcsc82n.cjs.map +1 -0
  178. package/dist/chunks/{Check-hentWFPd.mjs → Check-tQl0Vp18.mjs} +6 -6
  179. package/dist/chunks/Check-tQl0Vp18.mjs.map +1 -0
  180. package/dist/chunks/{ChevronDown-7w1_NWAd.cjs → ChevronDown-8tkFE94e.cjs} +4 -4
  181. package/dist/chunks/ChevronDown-8tkFE94e.cjs.map +1 -0
  182. package/dist/chunks/{ChevronDown-hP8YKVnf.mjs → ChevronDown-BxTx7hZm.mjs} +1 -1
  183. package/dist/chunks/ChevronDown-BxTx7hZm.mjs.map +1 -0
  184. package/dist/chunks/{ChevronRight-iDcqZ2Ih.cjs → ChevronRight-7GGKl2bX.cjs} +2 -2
  185. package/dist/chunks/ChevronRight-7GGKl2bX.cjs.map +1 -0
  186. package/dist/chunks/{ChevronRight-xEIO1OE7.mjs → ChevronRight-gF2cX9Cu.mjs} +4 -4
  187. package/dist/chunks/ChevronRight-gF2cX9Cu.mjs.map +1 -0
  188. package/dist/chunks/{Close-2nENZfbn.cjs → Close-e2vDvDm2.cjs} +7 -7
  189. package/dist/chunks/Close-e2vDvDm2.cjs.map +1 -0
  190. package/dist/chunks/{Close-4lZze_oD.mjs → Close-hKJ11hky.mjs} +5 -5
  191. package/dist/chunks/Close-hKJ11hky.mjs.map +1 -0
  192. package/dist/chunks/{DotsHorizontal-2GCivGee.mjs → DotsHorizontal-JfmEIGBo.mjs} +4 -4
  193. package/dist/chunks/DotsHorizontal-JfmEIGBo.mjs.map +1 -0
  194. package/dist/chunks/{DotsHorizontal-Ehuu1q0g.cjs → DotsHorizontal-z8LXg-4B.cjs} +4 -4
  195. package/dist/chunks/DotsHorizontal-z8LXg-4B.cjs.map +1 -0
  196. package/dist/chunks/{GenColors-avBT67Zu.mjs → GenColors-L7jWucCS.mjs} +3 -3
  197. package/dist/chunks/{GenColors-avBT67Zu.mjs.map → GenColors-L7jWucCS.mjs.map} +1 -1
  198. package/dist/chunks/{GenColors-ojnUsIA8.cjs → GenColors-vx_p2Tvw.cjs} +3 -3
  199. package/dist/chunks/{GenColors-ojnUsIA8.cjs.map → GenColors-vx_p2Tvw.cjs.map} +1 -1
  200. package/dist/chunks/{NcActionButton-TAhaLmwa.mjs → NcActionButton-VnbqrtOY.mjs} +15 -13
  201. package/dist/chunks/NcActionButton-VnbqrtOY.mjs.map +1 -0
  202. package/dist/chunks/{NcActionButton-G4OSfyii.cjs → NcActionButton-sJpgOVU9.cjs} +19 -17
  203. package/dist/chunks/NcActionButton-sJpgOVU9.cjs.map +1 -0
  204. package/dist/chunks/{NcActionButtonGroup-jTRjqpYM.cjs → NcActionButtonGroup-5PPiueIz.cjs} +2 -2
  205. package/dist/chunks/{NcActionButtonGroup-jTRjqpYM.cjs.map → NcActionButtonGroup-5PPiueIz.cjs.map} +1 -1
  206. package/dist/chunks/{NcActionButtonGroup-0hif9Dcf.mjs → NcActionButtonGroup-oFPVvd4U.mjs} +2 -2
  207. package/dist/chunks/{NcActionButtonGroup-0hif9Dcf.mjs.map → NcActionButtonGroup-oFPVvd4U.mjs.map} +1 -1
  208. package/dist/chunks/{NcActionCheckbox-PWAridhc.mjs → NcActionCheckbox-5-bIAzkC.mjs} +1 -1
  209. package/dist/chunks/{NcActionCheckbox-PWAridhc.mjs.map → NcActionCheckbox-5-bIAzkC.mjs.map} +1 -1
  210. package/dist/chunks/{NcActionCheckbox-Z4Wc9828.cjs → NcActionCheckbox-CUXJQss6.cjs} +1 -1
  211. package/dist/chunks/{NcActionCheckbox-Z4Wc9828.cjs.map → NcActionCheckbox-CUXJQss6.cjs.map} +1 -1
  212. package/dist/chunks/{NcActionInput-GuwDt73G.cjs → NcActionInput-of1oXP_n.cjs} +2 -2
  213. package/dist/chunks/{NcActionInput-GuwDt73G.cjs.map → NcActionInput-of1oXP_n.cjs.map} +1 -1
  214. package/dist/chunks/{NcActionInput-7-f1OPr6.mjs → NcActionInput-zg13uJ6x.mjs} +8 -8
  215. package/dist/chunks/{NcActionInput-7-f1OPr6.mjs.map → NcActionInput-zg13uJ6x.mjs.map} +1 -1
  216. package/dist/chunks/{NcActionLink-QLFtD_iF.cjs → NcActionLink-eBaRU5qY.cjs} +2 -2
  217. package/dist/chunks/{NcActionLink-QLFtD_iF.cjs.map → NcActionLink-eBaRU5qY.cjs.map} +1 -1
  218. package/dist/chunks/{NcActionLink-YllmwOrF.mjs → NcActionLink-pscYsQ_3.mjs} +2 -2
  219. package/dist/chunks/{NcActionLink-YllmwOrF.mjs.map → NcActionLink-pscYsQ_3.mjs.map} +1 -1
  220. package/dist/chunks/{NcActionRadio-DSBghCIA.mjs → NcActionRadio-1QLxEcfl.mjs} +1 -1
  221. package/dist/chunks/{NcActionRadio-DSBghCIA.mjs.map → NcActionRadio-1QLxEcfl.mjs.map} +1 -1
  222. package/dist/chunks/{NcActionRadio-1U50276u.cjs → NcActionRadio-3UkRsS6r.cjs} +1 -1
  223. package/dist/chunks/{NcActionRadio-1U50276u.cjs.map → NcActionRadio-3UkRsS6r.cjs.map} +1 -1
  224. package/dist/chunks/{NcActionRouter-vBYCxyc1.mjs → NcActionRouter-BsOXVKlY.mjs} +2 -2
  225. package/dist/chunks/{NcActionRouter-vBYCxyc1.mjs.map → NcActionRouter-BsOXVKlY.mjs.map} +1 -1
  226. package/dist/chunks/{NcActionRouter-Vg-BSvq7.cjs → NcActionRouter-c6pYto3T.cjs} +2 -2
  227. package/dist/chunks/{NcActionRouter-Vg-BSvq7.cjs.map → NcActionRouter-c6pYto3T.cjs.map} +1 -1
  228. package/dist/chunks/{NcActionText-p3Ew3r1G.mjs → NcActionText-9Ti6bh1b.mjs} +2 -2
  229. package/dist/chunks/{NcActionText-p3Ew3r1G.mjs.map → NcActionText-9Ti6bh1b.mjs.map} +1 -1
  230. package/dist/chunks/{NcActionText-aWTbDRVH.cjs → NcActionText-Sw_tMRaW.cjs} +2 -2
  231. package/dist/chunks/{NcActionText-aWTbDRVH.cjs.map → NcActionText-Sw_tMRaW.cjs.map} +1 -1
  232. package/dist/chunks/{NcActionTextEditable-RUh3BjpU.cjs → NcActionTextEditable-faJIAtYw.cjs} +2 -2
  233. package/dist/chunks/{NcActionTextEditable-RUh3BjpU.cjs.map → NcActionTextEditable-faJIAtYw.cjs.map} +1 -1
  234. package/dist/chunks/{NcActionTextEditable-PAn8Dpv4.mjs → NcActionTextEditable-xPb_cTMW.mjs} +3 -3
  235. package/dist/chunks/{NcActionTextEditable-PAn8Dpv4.mjs.map → NcActionTextEditable-xPb_cTMW.mjs.map} +1 -1
  236. package/dist/chunks/{NcActions-6Yv0De7D.mjs → NcActions-76CtOBCq.mjs} +160 -114
  237. package/dist/chunks/NcActions-76CtOBCq.mjs.map +1 -0
  238. package/dist/chunks/{NcActions-VJy75Dj8.cjs → NcActions-YpbmJ7hS.cjs} +160 -115
  239. package/dist/chunks/NcActions-YpbmJ7hS.cjs.map +1 -0
  240. package/dist/chunks/{NcAppContent-rV1EGzGY.mjs → NcAppContent-Tw5gNorr.mjs} +6 -6
  241. package/dist/chunks/{NcAppContent-rV1EGzGY.mjs.map → NcAppContent-Tw5gNorr.mjs.map} +1 -1
  242. package/dist/chunks/{NcAppContent-khCUrgDu.cjs → NcAppContent-mHc-Ms2b.cjs} +5 -5
  243. package/dist/chunks/{NcAppContent-khCUrgDu.cjs.map → NcAppContent-mHc-Ms2b.cjs.map} +1 -1
  244. package/dist/chunks/{NcAppNavigation-wvBM1j2_.mjs → NcAppNavigation-sY7HaHMv.mjs} +1 -1
  245. package/dist/chunks/{NcAppNavigation-wvBM1j2_.mjs.map → NcAppNavigation-sY7HaHMv.mjs.map} +1 -1
  246. package/dist/chunks/{NcAppNavigation-qnc3o3YP.cjs → NcAppNavigation-yEZ-RJA2.cjs} +1 -1
  247. package/dist/chunks/{NcAppNavigation-qnc3o3YP.cjs.map → NcAppNavigation-yEZ-RJA2.cjs.map} +1 -1
  248. package/dist/chunks/{NcAppNavigationCaption-6SpoIhcW.cjs → NcAppNavigationCaption-XpbVXYKV.cjs} +1 -1
  249. package/dist/chunks/{NcAppNavigationCaption-6SpoIhcW.cjs.map → NcAppNavigationCaption-XpbVXYKV.cjs.map} +1 -1
  250. package/dist/chunks/{NcAppNavigationCaption-wnBg9gYq.mjs → NcAppNavigationCaption-pcyV3wRO.mjs} +1 -1
  251. package/dist/chunks/{NcAppNavigationCaption-wnBg9gYq.mjs.map → NcAppNavigationCaption-pcyV3wRO.mjs.map} +1 -1
  252. package/dist/chunks/{NcAppNavigationItem-VR6oSt2q.mjs → NcAppNavigationItem-JLYTEgEH.mjs} +22 -22
  253. package/dist/chunks/NcAppNavigationItem-JLYTEgEH.mjs.map +1 -0
  254. package/dist/chunks/{NcAppNavigationItem-6kzsp9I8.cjs → NcAppNavigationItem-NE1UdZkS.cjs} +6 -6
  255. package/dist/chunks/NcAppNavigationItem-NE1UdZkS.cjs.map +1 -0
  256. package/dist/chunks/{NcAppNavigationNew-AamR4VD3.mjs → NcAppNavigationNew-6ZAJS_DY.mjs} +1 -1
  257. package/dist/chunks/{NcAppNavigationNew-AamR4VD3.mjs.map → NcAppNavigationNew-6ZAJS_DY.mjs.map} +1 -1
  258. package/dist/chunks/{NcAppNavigationNew-ae4GCKxx.cjs → NcAppNavigationNew-hmJL2IDR.cjs} +1 -1
  259. package/dist/chunks/{NcAppNavigationNew-ae4GCKxx.cjs.map → NcAppNavigationNew-hmJL2IDR.cjs.map} +1 -1
  260. package/dist/chunks/{NcAppNavigationNewItem-sZ0DdaXr.cjs → NcAppNavigationNewItem-MjsbS_dO.cjs} +2 -2
  261. package/dist/chunks/{NcAppNavigationNewItem-sZ0DdaXr.cjs.map → NcAppNavigationNewItem-MjsbS_dO.cjs.map} +1 -1
  262. package/dist/chunks/{NcAppNavigationNewItem-tSH06MX2.mjs → NcAppNavigationNewItem-NzRL8Uwy.mjs} +2 -2
  263. package/dist/chunks/{NcAppNavigationNewItem-tSH06MX2.mjs.map → NcAppNavigationNewItem-NzRL8Uwy.mjs.map} +1 -1
  264. package/dist/chunks/{NcAppNavigationSettings-mYqB3vRb.cjs → NcAppNavigationSettings-DPeH305A.cjs} +2 -2
  265. package/dist/chunks/NcAppNavigationSettings-DPeH305A.cjs.map +1 -0
  266. package/dist/chunks/{NcAppNavigationSettings-giVx2sHN.mjs → NcAppNavigationSettings-LR3QCvNr.mjs} +2 -2
  267. package/dist/chunks/NcAppNavigationSettings-LR3QCvNr.mjs.map +1 -0
  268. package/dist/chunks/{NcAppNavigationToggle-DBCPaseG.mjs → NcAppNavigationToggle-SEvIEY16.mjs} +29 -20
  269. package/dist/chunks/NcAppNavigationToggle-SEvIEY16.mjs.map +1 -0
  270. package/dist/chunks/{NcAppNavigationToggle-cRUPsHZH.cjs → NcAppNavigationToggle-sXvQDqok.cjs} +17 -8
  271. package/dist/chunks/NcAppNavigationToggle-sXvQDqok.cjs.map +1 -0
  272. package/dist/chunks/{NcAppSettingsDialog-WvDTWMwC.cjs → NcAppSettingsDialog-HnYa47vg.cjs} +51 -44
  273. package/dist/chunks/{NcAppSettingsDialog-90cJBaTf.mjs.map → NcAppSettingsDialog-HnYa47vg.cjs.map} +1 -1
  274. package/dist/chunks/{NcAppSettingsDialog-90cJBaTf.mjs → NcAppSettingsDialog-nbTWBbti.mjs} +65 -58
  275. package/dist/chunks/{NcAppSettingsDialog-WvDTWMwC.cjs.map → NcAppSettingsDialog-nbTWBbti.mjs.map} +1 -1
  276. package/dist/chunks/NcAppSettingsSection-LHcKgBpz.cjs +54 -0
  277. package/dist/chunks/{NcAppSettingsSection-wLClE1lO.cjs.map → NcAppSettingsSection-LHcKgBpz.cjs.map} +1 -1
  278. package/dist/chunks/{NcAppSettingsSection-WcupJObJ.mjs → NcAppSettingsSection-a0Un2ZRv.mjs} +18 -15
  279. package/dist/chunks/{NcAppSettingsSection-WcupJObJ.mjs.map → NcAppSettingsSection-a0Un2ZRv.mjs.map} +1 -1
  280. package/dist/chunks/NcAppSidebar-Tvy0LplS.cjs +712 -0
  281. package/dist/chunks/NcAppSidebar-Tvy0LplS.cjs.map +1 -0
  282. package/dist/chunks/NcAppSidebar-xWMj1EI8.mjs +731 -0
  283. package/dist/chunks/NcAppSidebar-xWMj1EI8.mjs.map +1 -0
  284. package/dist/chunks/{NcAppSidebarTab-BeWt8Sdt.cjs → NcAppSidebarTab-oPHofCKq.cjs} +15 -14
  285. package/dist/chunks/{NcAppSidebarTab-BeWt8Sdt.cjs.map → NcAppSidebarTab-oPHofCKq.cjs.map} +1 -1
  286. package/dist/chunks/{NcAppSidebarTab--7BkDK9T.mjs → NcAppSidebarTab-sMoFkDTb.mjs} +13 -12
  287. package/dist/chunks/{NcAppSidebarTab--7BkDK9T.mjs.map → NcAppSidebarTab-sMoFkDTb.mjs.map} +1 -1
  288. package/dist/chunks/{NcAvatar-paLjF9Tc.mjs → NcAvatar-JsMCceHU.mjs} +110 -100
  289. package/dist/chunks/NcAvatar-JsMCceHU.mjs.map +1 -0
  290. package/dist/chunks/{NcAvatar-1MXwkOA2.cjs → NcAvatar-uPVG9WWg.cjs} +133 -123
  291. package/dist/chunks/NcAvatar-uPVG9WWg.cjs.map +1 -0
  292. package/dist/chunks/{NcBreadcrumb-X45pwcLq.cjs → NcBreadcrumb-7q3EEfcO.cjs} +3 -3
  293. package/dist/chunks/{NcBreadcrumb-X45pwcLq.cjs.map → NcBreadcrumb-7q3EEfcO.cjs.map} +1 -1
  294. package/dist/chunks/{NcBreadcrumb-gB_hnDG_.mjs → NcBreadcrumb-Fr7J33Qv.mjs} +5 -5
  295. package/dist/chunks/{NcBreadcrumb-gB_hnDG_.mjs.map → NcBreadcrumb-Fr7J33Qv.mjs.map} +1 -1
  296. package/dist/chunks/{NcBreadcrumbs-Y8LRE6xz.cjs → NcBreadcrumbs-XVIsLfXn.cjs} +100 -96
  297. package/dist/chunks/NcBreadcrumbs-XVIsLfXn.cjs.map +1 -0
  298. package/dist/chunks/{NcBreadcrumbs-N7-Jj_ry.mjs → NcBreadcrumbs-ozezYXlM.mjs} +114 -110
  299. package/dist/chunks/NcBreadcrumbs-ozezYXlM.mjs.map +1 -0
  300. package/dist/chunks/{NcButton-Uxh-oARg.cjs → NcButton-7UKtzkX5.cjs} +73 -66
  301. package/dist/chunks/NcButton-7UKtzkX5.cjs.map +1 -0
  302. package/dist/chunks/{NcButton-nCkJxwsi.mjs → NcButton-YOXv3gFY.mjs} +73 -66
  303. package/dist/chunks/NcButton-YOXv3gFY.mjs.map +1 -0
  304. package/dist/chunks/{NcCheckboxRadioSwitch-Hi5ocuhB.cjs → NcCheckboxRadioSwitch-IA6Ssm8K.cjs} +22 -22
  305. package/dist/chunks/NcCheckboxRadioSwitch-IA6Ssm8K.cjs.map +1 -0
  306. package/dist/chunks/{NcCheckboxRadioSwitch-RgFq8ZUL.mjs → NcCheckboxRadioSwitch-NwTx_zgG.mjs} +80 -80
  307. package/dist/chunks/NcCheckboxRadioSwitch-NwTx_zgG.mjs.map +1 -0
  308. package/dist/chunks/NcCheckboxRadioSwitch.vue_vue_type_style_index_0_scoped_48c28b96_lang-togIrFzp.cjs +3 -0
  309. package/dist/chunks/NcCheckboxRadioSwitch.vue_vue_type_style_index_0_scoped_48c28b96_lang-togIrFzp.cjs.map +1 -0
  310. package/dist/chunks/NcCheckboxRadioSwitch.vue_vue_type_style_index_0_scoped_48c28b96_lang-yghIE9RS.mjs +3 -0
  311. package/dist/chunks/NcCheckboxRadioSwitch.vue_vue_type_style_index_0_scoped_48c28b96_lang-yghIE9RS.mjs.map +1 -0
  312. package/dist/chunks/{NcColorPicker-hS0KYrLP.mjs → NcColorPicker-DNy0FRJb.mjs} +42 -35
  313. package/dist/chunks/{NcColorPicker-hS0KYrLP.mjs.map → NcColorPicker-DNy0FRJb.mjs.map} +1 -1
  314. package/dist/chunks/{NcColorPicker-rE3Dd7s7.cjs → NcColorPicker-i9PgTYBd.cjs} +26 -19
  315. package/dist/chunks/{NcColorPicker-rE3Dd7s7.cjs.map → NcColorPicker-i9PgTYBd.cjs.map} +1 -1
  316. package/dist/chunks/NcContent-HdbQCleH.mjs +111 -0
  317. package/dist/chunks/{NcContent-fGj1oSM5.cjs.map → NcContent-HdbQCleH.mjs.map} +1 -1
  318. package/dist/chunks/NcContent-MOEEa0z1.cjs +103 -0
  319. package/dist/chunks/{NcContent-CUWR0V-w.mjs.map → NcContent-MOEEa0z1.cjs.map} +1 -1
  320. package/dist/chunks/{NcDashboardWidget-DC4_9Yv_.mjs → NcDashboardWidget-JGkvqDWC.mjs} +4 -4
  321. package/dist/chunks/{NcDashboardWidget-DC4_9Yv_.mjs.map → NcDashboardWidget-JGkvqDWC.mjs.map} +1 -1
  322. package/dist/chunks/{NcDashboardWidget-fnhMGIb6.cjs → NcDashboardWidget-qHSuK2yd.cjs} +1 -1
  323. package/dist/chunks/{NcDashboardWidget-fnhMGIb6.cjs.map → NcDashboardWidget-qHSuK2yd.cjs.map} +1 -1
  324. package/dist/chunks/{NcDashboardWidgetItem-0jGJ_5Nx.cjs → NcDashboardWidgetItem-fl92G4Pt.cjs} +1 -1
  325. package/dist/chunks/{NcDashboardWidgetItem-0jGJ_5Nx.cjs.map → NcDashboardWidgetItem-fl92G4Pt.cjs.map} +1 -1
  326. package/dist/chunks/{NcDashboardWidgetItem-TD0N9xlv.mjs → NcDashboardWidgetItem-oQGp29KO.mjs} +3 -3
  327. package/dist/chunks/{NcDashboardWidgetItem-TD0N9xlv.mjs.map → NcDashboardWidgetItem-oQGp29KO.mjs.map} +1 -1
  328. package/dist/chunks/{NcDateTime-EnQV6T52.mjs → NcDateTime-JYO8uPbb.mjs} +1 -1
  329. package/dist/chunks/{NcDateTime-EnQV6T52.mjs.map → NcDateTime-JYO8uPbb.mjs.map} +1 -1
  330. package/dist/chunks/{NcDateTime-m_WZoAvd.cjs → NcDateTime-T52KrH65.cjs} +1 -1
  331. package/dist/chunks/{NcDateTime-m_WZoAvd.cjs.map → NcDateTime-T52KrH65.cjs.map} +1 -1
  332. package/dist/chunks/{NcDateTimePicker-4edYzlVf.cjs → NcDateTimePicker-X2pCnTer.cjs} +36 -34
  333. package/dist/chunks/NcDateTimePicker-X2pCnTer.cjs.map +1 -0
  334. package/dist/chunks/{NcDateTimePicker-GHt3kJ7B.mjs → NcDateTimePicker-ahgVldMQ.mjs} +55 -53
  335. package/dist/chunks/NcDateTimePicker-ahgVldMQ.mjs.map +1 -0
  336. package/dist/chunks/{NcDateTimePickerNative-nDQjZSiZ.mjs → NcDateTimePickerNative-3Xru7_OT.mjs} +12 -12
  337. package/dist/chunks/{NcDateTimePickerNative-nDQjZSiZ.mjs.map → NcDateTimePickerNative-3Xru7_OT.mjs.map} +1 -1
  338. package/dist/chunks/{NcDateTimePickerNative-m30hv5MT.cjs → NcDateTimePickerNative-xSITuvpX.cjs} +13 -13
  339. package/dist/chunks/{NcDateTimePickerNative-m30hv5MT.cjs.map → NcDateTimePickerNative-xSITuvpX.cjs.map} +1 -1
  340. package/dist/chunks/{NcDialog-qsI2VY8S.cjs → NcDialog-BYXi2emF.cjs} +26 -24
  341. package/dist/chunks/NcDialog-BYXi2emF.cjs.map +1 -0
  342. package/dist/chunks/{NcDialog-eZWcoYL9.mjs → NcDialog-rTTTdaH3.mjs} +36 -34
  343. package/dist/chunks/NcDialog-rTTTdaH3.mjs.map +1 -0
  344. package/dist/chunks/NcDialogButton-37TPbyFs.cjs +73 -0
  345. package/dist/chunks/{NcDialogButton-Dou0EAc_.cjs.map → NcDialogButton-37TPbyFs.cjs.map} +1 -1
  346. package/dist/chunks/{NcDialogButton-R-zAILHz.mjs → NcDialogButton-ax4NTfDU.mjs} +21 -20
  347. package/dist/chunks/{NcDialogButton-R-zAILHz.mjs.map → NcDialogButton-ax4NTfDU.mjs.map} +1 -1
  348. package/dist/chunks/{NcEmojiPicker-84m02Stk.mjs → NcEmojiPicker-oWZ5anxp.mjs} +74 -71
  349. package/dist/chunks/NcEmojiPicker-oWZ5anxp.mjs.map +1 -0
  350. package/dist/chunks/{NcEmojiPicker-hxiKGEHb.cjs → NcEmojiPicker-tOE2N9VS.cjs} +68 -65
  351. package/dist/chunks/NcEmojiPicker-tOE2N9VS.cjs.map +1 -0
  352. package/dist/chunks/{NcHeaderMenu-yJJ4FWin.mjs → NcHeaderMenu-67JCzTGo.mjs} +44 -42
  353. package/dist/chunks/{NcHeaderMenu-Eo6rZDeL.cjs.map → NcHeaderMenu-67JCzTGo.mjs.map} +1 -1
  354. package/dist/chunks/{NcHeaderMenu-Eo6rZDeL.cjs → NcHeaderMenu-TvFFSvGS.cjs} +30 -28
  355. package/dist/chunks/{NcHeaderMenu-yJJ4FWin.mjs.map → NcHeaderMenu-TvFFSvGS.cjs.map} +1 -1
  356. package/dist/chunks/{NcIconSvgWrapper-gQnsseD2.mjs → NcIconSvgWrapper-ACaaN_pS.mjs} +1 -1
  357. package/dist/chunks/{NcIconSvgWrapper-gQnsseD2.mjs.map → NcIconSvgWrapper-ACaaN_pS.mjs.map} +1 -1
  358. package/dist/chunks/{NcIconSvgWrapper-rDMSblV4.cjs → NcIconSvgWrapper-_hHu9P_M.cjs} +1 -1
  359. package/dist/chunks/{NcIconSvgWrapper-rDMSblV4.cjs.map → NcIconSvgWrapper-_hHu9P_M.cjs.map} +1 -1
  360. package/dist/chunks/{NcInputConfirmCancel-3c-uWUuw.cjs → NcInputConfirmCancel-DYlc289d.cjs} +1 -1
  361. package/dist/chunks/{NcInputConfirmCancel-3c-uWUuw.cjs.map → NcInputConfirmCancel-DYlc289d.cjs.map} +1 -1
  362. package/dist/chunks/{NcInputConfirmCancel-cDJ5_L-Z.mjs → NcInputConfirmCancel-lmWu4ouW.mjs} +4 -4
  363. package/dist/chunks/{NcInputConfirmCancel-cDJ5_L-Z.mjs.map → NcInputConfirmCancel-lmWu4ouW.mjs.map} +1 -1
  364. package/dist/chunks/{NcInputField-9PAE2ONE.mjs → NcInputField-6pRWha3h.mjs} +7 -7
  365. package/dist/chunks/{NcInputField-dP-QARJo.cjs.map → NcInputField-6pRWha3h.mjs.map} +1 -1
  366. package/dist/chunks/{NcInputField-dP-QARJo.cjs → NcInputField-6vveMrmf.cjs} +5 -5
  367. package/dist/chunks/{NcInputField-9PAE2ONE.mjs.map → NcInputField-6vveMrmf.cjs.map} +1 -1
  368. package/dist/chunks/{NcListItem-iWTR4IZZ.cjs → NcListItem-3QDILDKr.cjs} +55 -53
  369. package/dist/chunks/NcListItem-3QDILDKr.cjs.map +1 -0
  370. package/dist/chunks/{NcListItem-gdczIybY.mjs → NcListItem-vkgu6Biu.mjs} +63 -61
  371. package/dist/chunks/NcListItem-vkgu6Biu.mjs.map +1 -0
  372. package/dist/chunks/{NcListItemIcon-XsKTtITp.mjs → NcListItemIcon-130Lt3dW.mjs} +32 -31
  373. package/dist/chunks/{NcListItemIcon-XsKTtITp.mjs.map → NcListItemIcon-130Lt3dW.mjs.map} +1 -1
  374. package/dist/chunks/{NcListItemIcon-FeNwaJy4.cjs → NcListItemIcon-dOvFvjqI.cjs} +29 -28
  375. package/dist/chunks/{NcListItemIcon-FeNwaJy4.cjs.map → NcListItemIcon-dOvFvjqI.cjs.map} +1 -1
  376. package/dist/chunks/{NcNoteCard-joOYqjyF.mjs → NcNoteCard-MnmgJvKD.mjs} +41 -39
  377. package/dist/chunks/NcNoteCard-MnmgJvKD.mjs.map +1 -0
  378. package/dist/chunks/{NcNoteCard-IAgTi5HW.cjs → NcNoteCard-ujnbiyLI.cjs} +20 -18
  379. package/dist/chunks/NcNoteCard-ujnbiyLI.cjs.map +1 -0
  380. package/dist/chunks/{NcPasswordField-QA6kIMu2.cjs → NcPasswordField-8rboJv29.cjs} +21 -21
  381. package/dist/chunks/NcPasswordField-8rboJv29.cjs.map +1 -0
  382. package/dist/chunks/{NcPasswordField-8NI5u7lk.mjs → NcPasswordField-RHelr3R-.mjs} +27 -27
  383. package/dist/chunks/NcPasswordField-RHelr3R-.mjs.map +1 -0
  384. package/dist/chunks/{NcPopover-sVfBFdPh.cjs → NcPopover-J0pw-klF.cjs} +31 -32
  385. package/dist/chunks/NcPopover-J0pw-klF.cjs.map +1 -0
  386. package/dist/chunks/{NcPopover-HwP68PjO.mjs → NcPopover-XgOWyuQF.mjs} +46 -47
  387. package/dist/chunks/NcPopover-XgOWyuQF.mjs.map +1 -0
  388. package/dist/chunks/{NcProgressBar-KvtCwl-0.mjs → NcProgressBar-1EANJyYJ.mjs} +2 -2
  389. package/dist/chunks/{NcProgressBar-KvtCwl-0.mjs.map → NcProgressBar-1EANJyYJ.mjs.map} +1 -1
  390. package/dist/chunks/{NcProgressBar-3p3Phbcw.cjs → NcProgressBar-zsehqkEw.cjs} +2 -2
  391. package/dist/chunks/{NcProgressBar-3p3Phbcw.cjs.map → NcProgressBar-zsehqkEw.cjs.map} +1 -1
  392. package/dist/chunks/{NcRelatedResourcesPanel--UoHihRf.mjs → NcRelatedResourcesPanel-NqDuh_7F.mjs} +24 -20
  393. package/dist/chunks/{NcRelatedResourcesPanel--UoHihRf.mjs.map → NcRelatedResourcesPanel-NqDuh_7F.mjs.map} +1 -1
  394. package/dist/chunks/{NcRelatedResourcesPanel-oTY2g2gt.cjs → NcRelatedResourcesPanel-QgNIHnCY.cjs} +45 -41
  395. package/dist/chunks/{NcRelatedResourcesPanel-oTY2g2gt.cjs.map → NcRelatedResourcesPanel-QgNIHnCY.cjs.map} +1 -1
  396. package/dist/chunks/{NcRichContenteditable-0x4AmYZf.cjs → NcRichContenteditable-L8aEJNGb.cjs} +28 -25
  397. package/dist/chunks/{NcRichContenteditable-rSquEMs2.mjs.map → NcRichContenteditable-L8aEJNGb.cjs.map} +1 -1
  398. package/dist/chunks/{NcRichContenteditable-rSquEMs2.mjs → NcRichContenteditable-W0BnJp3x.mjs} +31 -28
  399. package/dist/chunks/{NcRichContenteditable-0x4AmYZf.cjs.map → NcRichContenteditable-W0BnJp3x.mjs.map} +1 -1
  400. package/dist/chunks/{NcRichText-S8FLpGCe.cjs → NcRichText-91v7gJEe.cjs} +66 -54
  401. package/dist/chunks/NcRichText-91v7gJEe.cjs.map +1 -0
  402. package/dist/chunks/{NcRichText-_MNRVaQB.mjs → NcRichText-RTwlrmhz.mjs} +95 -83
  403. package/dist/chunks/NcRichText-RTwlrmhz.mjs.map +1 -0
  404. package/dist/chunks/{NcSelect-w_Gt1U72.mjs → NcSelect-HmmLuUCp.mjs} +63 -58
  405. package/dist/chunks/{NcSelect-9cM-OGdn.cjs.map → NcSelect-HmmLuUCp.mjs.map} +1 -1
  406. package/dist/chunks/{NcSelect-9cM-OGdn.cjs → NcSelect-P2FpWJBr.cjs} +46 -41
  407. package/dist/chunks/{NcSelect-w_Gt1U72.mjs.map → NcSelect-P2FpWJBr.cjs.map} +1 -1
  408. package/dist/chunks/{NcSelectTags-vm5Fx2H5.cjs → NcSelectTags-HX8YbYwd.cjs} +2 -11
  409. package/dist/chunks/{NcSelectTags-vm5Fx2H5.cjs.map → NcSelectTags-HX8YbYwd.cjs.map} +1 -1
  410. package/dist/chunks/{NcSelectTags-6F9oTRUw.mjs → NcSelectTags-ZoLcdmHG.mjs} +3 -12
  411. package/dist/chunks/{NcSelectTags-6F9oTRUw.mjs.map → NcSelectTags-ZoLcdmHG.mjs.map} +1 -1
  412. package/dist/chunks/{NcSettingsInputText-KTYvd9zc.mjs → NcSettingsInputText-9TVSwO_s.mjs} +1 -1
  413. package/dist/chunks/{NcSettingsInputText-KTYvd9zc.mjs.map → NcSettingsInputText-9TVSwO_s.mjs.map} +1 -1
  414. package/dist/chunks/{NcSettingsInputText-wY_R_c6S.cjs → NcSettingsInputText-oJ_c6sMr.cjs} +1 -1
  415. package/dist/chunks/{NcSettingsInputText-wY_R_c6S.cjs.map → NcSettingsInputText-oJ_c6sMr.cjs.map} +1 -1
  416. package/dist/chunks/{NcSettingsSection-2TP0NQPH.cjs → NcSettingsSection-W7Ieq32P.cjs} +7 -7
  417. package/dist/chunks/NcSettingsSection-W7Ieq32P.cjs.map +1 -0
  418. package/dist/chunks/{NcSettingsSection-dEPaFL2w.mjs → NcSettingsSection-bpmpu801.mjs} +2 -2
  419. package/dist/chunks/NcSettingsSection-bpmpu801.mjs.map +1 -0
  420. package/dist/chunks/{NcSettingsSelectGroup-JfvkEnNr.mjs → NcSettingsSelectGroup-HFDYgsw-.mjs} +5 -5
  421. package/dist/chunks/{NcSettingsSelectGroup-JfvkEnNr.mjs.map → NcSettingsSelectGroup-HFDYgsw-.mjs.map} +1 -1
  422. package/dist/chunks/{NcSettingsSelectGroup-p8cgn6pv.cjs → NcSettingsSelectGroup-UnB2ao3D.cjs} +4 -4
  423. package/dist/chunks/{NcSettingsSelectGroup-p8cgn6pv.cjs.map → NcSettingsSelectGroup-UnB2ao3D.cjs.map} +1 -1
  424. package/dist/chunks/{NcTextArea-hNPj4rEs.cjs → NcTextArea-QIkvyzz7.cjs} +7 -7
  425. package/dist/chunks/{NcTextArea-hNPj4rEs.cjs.map → NcTextArea-QIkvyzz7.cjs.map} +1 -1
  426. package/dist/chunks/{NcTextArea-dRgNOiSU.mjs → NcTextArea-SeSiP6Dy.mjs} +6 -6
  427. package/dist/chunks/{NcTextArea-dRgNOiSU.mjs.map → NcTextArea-SeSiP6Dy.mjs.map} +1 -1
  428. package/dist/chunks/{NcTextField-avDV7Ry_.mjs → NcTextField-qqwMB07_.mjs} +19 -19
  429. package/dist/chunks/NcTextField-qqwMB07_.mjs.map +1 -0
  430. package/dist/chunks/{NcTextField-bz_keSKF.cjs → NcTextField-zi19KqEm.cjs} +2 -2
  431. package/dist/chunks/NcTextField-zi19KqEm.cjs.map +1 -0
  432. package/dist/chunks/NcTimezonePicker-EPCmHeHy.mjs +3790 -0
  433. package/dist/chunks/{NcTimezonePicker-wLjOcbbU.mjs.map → NcTimezonePicker-EPCmHeHy.mjs.map} +1 -1
  434. package/dist/chunks/NcTimezonePicker-f6X4yiuj.cjs +3783 -0
  435. package/dist/chunks/{NcTimezonePicker-YNWJXRnl.cjs.map → NcTimezonePicker-f6X4yiuj.cjs.map} +1 -1
  436. package/dist/chunks/{NcUserBubble-fA1TQtnx.mjs → NcUserBubble-Jw-rOju8.mjs} +17 -16
  437. package/dist/chunks/{NcUserBubble-fA1TQtnx.mjs.map → NcUserBubble-Jw-rOju8.mjs.map} +1 -1
  438. package/dist/chunks/{NcUserBubble-epl-RDQa.cjs → NcUserBubble-NZeBFOmo.cjs} +23 -22
  439. package/dist/chunks/{NcUserBubble-epl-RDQa.cjs.map → NcUserBubble-NZeBFOmo.cjs.map} +1 -1
  440. package/dist/chunks/NcUserStatusIcon-b0xt-g7X.cjs +146 -0
  441. package/dist/chunks/{NcUserStatusIcon-swCHU0tl.cjs.map → NcUserStatusIcon-b0xt-g7X.cjs.map} +1 -1
  442. package/dist/chunks/NcUserStatusIcon-hmLq9dti.mjs +154 -0
  443. package/dist/chunks/{NcUserStatusIcon--z2VUZIt.mjs.map → NcUserStatusIcon-hmLq9dti.mjs.map} +1 -1
  444. package/dist/chunks/{ScopeComponent-4ppIHwI4.cjs → ScopeComponent-Gzz2FMnQ.cjs} +1 -1
  445. package/dist/chunks/{ScopeComponent-4ppIHwI4.cjs.map → ScopeComponent-Gzz2FMnQ.cjs.map} +1 -1
  446. package/dist/chunks/{ScopeComponent-KbEZrKGJ.mjs → ScopeComponent-mG7CSpxl.mjs} +1 -1
  447. package/dist/chunks/{ScopeComponent-KbEZrKGJ.mjs.map → ScopeComponent-mG7CSpxl.mjs.map} +1 -1
  448. package/dist/chunks/_l10n-Fl7RzbcZ.cjs +64 -0
  449. package/dist/chunks/_l10n-Fl7RzbcZ.cjs.map +1 -0
  450. package/dist/chunks/_l10n-uuAvfQgY.mjs +66 -0
  451. package/dist/chunks/_l10n-uuAvfQgY.mjs.map +1 -0
  452. package/dist/chunks/{actionGlobal-kyAHPMcH.cjs → actionGlobal-Cx6Fi9Pj.cjs} +4 -3
  453. package/dist/chunks/{actionGlobal-1onxXJwM.mjs.map → actionGlobal-Cx6Fi9Pj.cjs.map} +1 -1
  454. package/dist/chunks/{actionGlobal-1onxXJwM.mjs → actionGlobal-pi4JQ0yh.mjs} +4 -3
  455. package/dist/chunks/{actionGlobal-kyAHPMcH.cjs.map → actionGlobal-pi4JQ0yh.mjs.map} +1 -1
  456. package/dist/chunks/{actionText-WQ07UNmt.cjs → actionText-H_SIpDkO.cjs} +1 -1
  457. package/dist/chunks/{actionText-WQ07UNmt.cjs.map → actionText-H_SIpDkO.cjs.map} +1 -1
  458. package/dist/chunks/{actionText-IqPIFk1D.mjs → actionText-yZ-YQ_fz.mjs} +1 -1
  459. package/dist/chunks/{actionText-IqPIFk1D.mjs.map → actionText-yZ-YQ_fz.mjs.map} +1 -1
  460. package/dist/chunks/{emoji-mJIuLpNR.cjs → emoji-NrWIXNZ4.cjs} +7 -6
  461. package/dist/chunks/{emoji-mJIuLpNR.cjs.map → emoji-NrWIXNZ4.cjs.map} +1 -1
  462. package/dist/chunks/{emoji-tllD0Rvt.mjs → emoji-mEkenm2t.mjs} +4 -3
  463. package/dist/chunks/{emoji-tllD0Rvt.mjs.map → emoji-mEkenm2t.mjs.map} +1 -1
  464. package/dist/chunks/{index-NP8hZQhr.cjs → index-6mzaBTml.cjs} +8 -10
  465. package/dist/chunks/{index-NP8hZQhr.cjs.map → index-6mzaBTml.cjs.map} +1 -1
  466. package/dist/chunks/{index-hX7KRzaJ.mjs → index-clpvFjGU.mjs} +8 -10
  467. package/dist/chunks/{index-hX7KRzaJ.mjs.map → index-clpvFjGU.mjs.map} +1 -1
  468. package/dist/chunks/{referencePickerModal-9sd4Ftja.mjs → referencePickerModal-Fu9pQBdT.mjs} +188 -173
  469. package/dist/chunks/referencePickerModal-Fu9pQBdT.mjs.map +1 -0
  470. package/dist/chunks/{referencePickerModal-gCkuVbeM.cjs → referencePickerModal-JVKOIVTG.cjs} +143 -128
  471. package/dist/chunks/referencePickerModal-JVKOIVTG.cjs.map +1 -0
  472. package/dist/chunks/{usernameToColor-t95If_mB.mjs → usernameToColor-YCPAFxlc.mjs} +1 -1
  473. package/dist/chunks/{usernameToColor-t95If_mB.mjs.map → usernameToColor-YCPAFxlc.mjs.map} +1 -1
  474. package/dist/chunks/{usernameToColor--FE9Dq8h.cjs → usernameToColor-r5M5P032.cjs} +1 -1
  475. package/dist/chunks/{usernameToColor--FE9Dq8h.cjs.map → usernameToColor-r5M5P032.cjs.map} +1 -1
  476. package/dist/index.cjs +4 -4
  477. package/dist/index.mjs +64 -64
  478. package/dist/src/components/NcActionButton/NcActionButton.vue.d.ts +8 -4
  479. package/dist/src/components/NcActions/NcActions.vue.d.ts +29 -7
  480. package/dist/src/components/NcAppNavigationToggle/NcAppNavigationToggle.vue.d.ts +14 -0
  481. package/dist/src/components/NcBreadcrumbs/NcBreadcrumbs.vue.d.ts +2 -3
  482. package/dist/src/components/NcButton/NcButton.vue.d.ts +1 -0
  483. package/dist/src/components/NcListItem/NcListItem.vue.d.ts +1 -1
  484. package/dist/src/components/NcRichText/NcReferenceList.vue.d.ts +9 -0
  485. package/dist/src/components/NcRichText/NcRichText.vue.d.ts +1 -1
  486. package/dist/vendor.LICENSE.txt +1 -1
  487. package/package.json +4 -3
  488. package/dist/chunks/AlertCircleOutline-Q4EgxGNm.mjs.map +0 -1
  489. package/dist/chunks/AlertCircleOutline-aU4Cu4IM.cjs.map +0 -1
  490. package/dist/chunks/ArrowLeft-4DZMGcXE.cjs.map +0 -1
  491. package/dist/chunks/ArrowLeft-LlLrrfss.mjs.map +0 -1
  492. package/dist/chunks/ArrowRight-Fk_qtqpW.mjs.map +0 -1
  493. package/dist/chunks/ArrowRight-mI4Fw0h2.cjs.map +0 -1
  494. package/dist/chunks/Check-SlTPuUzR.cjs.map +0 -1
  495. package/dist/chunks/Check-hentWFPd.mjs.map +0 -1
  496. package/dist/chunks/ChevronDown-7w1_NWAd.cjs.map +0 -1
  497. package/dist/chunks/ChevronDown-hP8YKVnf.mjs.map +0 -1
  498. package/dist/chunks/ChevronRight-iDcqZ2Ih.cjs.map +0 -1
  499. package/dist/chunks/ChevronRight-xEIO1OE7.mjs.map +0 -1
  500. package/dist/chunks/Close-2nENZfbn.cjs.map +0 -1
  501. package/dist/chunks/Close-4lZze_oD.mjs.map +0 -1
  502. package/dist/chunks/DotsHorizontal-2GCivGee.mjs.map +0 -1
  503. package/dist/chunks/DotsHorizontal-Ehuu1q0g.cjs.map +0 -1
  504. package/dist/chunks/NcActionButton-G4OSfyii.cjs.map +0 -1
  505. package/dist/chunks/NcActionButton-TAhaLmwa.mjs.map +0 -1
  506. package/dist/chunks/NcActions-6Yv0De7D.mjs.map +0 -1
  507. package/dist/chunks/NcActions-VJy75Dj8.cjs.map +0 -1
  508. package/dist/chunks/NcAppNavigationItem-6kzsp9I8.cjs.map +0 -1
  509. package/dist/chunks/NcAppNavigationItem-VR6oSt2q.mjs.map +0 -1
  510. package/dist/chunks/NcAppNavigationSettings-giVx2sHN.mjs.map +0 -1
  511. package/dist/chunks/NcAppNavigationSettings-mYqB3vRb.cjs.map +0 -1
  512. package/dist/chunks/NcAppNavigationToggle-DBCPaseG.mjs.map +0 -1
  513. package/dist/chunks/NcAppNavigationToggle-cRUPsHZH.cjs.map +0 -1
  514. package/dist/chunks/NcAppSettingsSection-wLClE1lO.cjs +0 -51
  515. package/dist/chunks/NcAppSidebar-19vWkj82.cjs +0 -706
  516. package/dist/chunks/NcAppSidebar-19vWkj82.cjs.map +0 -1
  517. package/dist/chunks/NcAppSidebar-yjd-HiUO.mjs +0 -725
  518. package/dist/chunks/NcAppSidebar-yjd-HiUO.mjs.map +0 -1
  519. package/dist/chunks/NcAvatar-1MXwkOA2.cjs.map +0 -1
  520. package/dist/chunks/NcAvatar-paLjF9Tc.mjs.map +0 -1
  521. package/dist/chunks/NcBreadcrumbs-N7-Jj_ry.mjs.map +0 -1
  522. package/dist/chunks/NcBreadcrumbs-Y8LRE6xz.cjs.map +0 -1
  523. package/dist/chunks/NcButton-Uxh-oARg.cjs.map +0 -1
  524. package/dist/chunks/NcButton-nCkJxwsi.mjs.map +0 -1
  525. package/dist/chunks/NcCheckboxRadioSwitch-Hi5ocuhB.cjs.map +0 -1
  526. package/dist/chunks/NcCheckboxRadioSwitch-RgFq8ZUL.mjs.map +0 -1
  527. package/dist/chunks/NcCheckboxRadioSwitch.vue_vue_type_style_index_0_scoped_c3135eb8_lang-RYt-H2PA.cjs +0 -3
  528. package/dist/chunks/NcCheckboxRadioSwitch.vue_vue_type_style_index_0_scoped_c3135eb8_lang-RYt-H2PA.cjs.map +0 -1
  529. package/dist/chunks/NcCheckboxRadioSwitch.vue_vue_type_style_index_0_scoped_c3135eb8_lang-kB-352LR.mjs +0 -3
  530. package/dist/chunks/NcCheckboxRadioSwitch.vue_vue_type_style_index_0_scoped_c3135eb8_lang-kB-352LR.mjs.map +0 -1
  531. package/dist/chunks/NcContent-CUWR0V-w.mjs +0 -156
  532. package/dist/chunks/NcContent-fGj1oSM5.cjs +0 -148
  533. package/dist/chunks/NcDateTimePicker-4edYzlVf.cjs.map +0 -1
  534. package/dist/chunks/NcDateTimePicker-GHt3kJ7B.mjs.map +0 -1
  535. package/dist/chunks/NcDialog-eZWcoYL9.mjs.map +0 -1
  536. package/dist/chunks/NcDialog-qsI2VY8S.cjs.map +0 -1
  537. package/dist/chunks/NcDialogButton-Dou0EAc_.cjs +0 -72
  538. package/dist/chunks/NcEmojiPicker-84m02Stk.mjs.map +0 -1
  539. package/dist/chunks/NcEmojiPicker-hxiKGEHb.cjs.map +0 -1
  540. package/dist/chunks/NcListItem-gdczIybY.mjs.map +0 -1
  541. package/dist/chunks/NcListItem-iWTR4IZZ.cjs.map +0 -1
  542. package/dist/chunks/NcNoteCard-IAgTi5HW.cjs.map +0 -1
  543. package/dist/chunks/NcNoteCard-joOYqjyF.mjs.map +0 -1
  544. package/dist/chunks/NcPasswordField-8NI5u7lk.mjs.map +0 -1
  545. package/dist/chunks/NcPasswordField-QA6kIMu2.cjs.map +0 -1
  546. package/dist/chunks/NcPopover-HwP68PjO.mjs.map +0 -1
  547. package/dist/chunks/NcPopover-sVfBFdPh.cjs.map +0 -1
  548. package/dist/chunks/NcRichText-S8FLpGCe.cjs.map +0 -1
  549. package/dist/chunks/NcRichText-_MNRVaQB.mjs.map +0 -1
  550. package/dist/chunks/NcSettingsSection-2TP0NQPH.cjs.map +0 -1
  551. package/dist/chunks/NcSettingsSection-dEPaFL2w.mjs.map +0 -1
  552. package/dist/chunks/NcTextField-avDV7Ry_.mjs.map +0 -1
  553. package/dist/chunks/NcTextField-bz_keSKF.cjs.map +0 -1
  554. package/dist/chunks/NcTimezonePicker-YNWJXRnl.cjs +0 -7202
  555. package/dist/chunks/NcTimezonePicker-wLjOcbbU.mjs +0 -7209
  556. package/dist/chunks/NcUserStatusIcon--z2VUZIt.mjs +0 -171
  557. package/dist/chunks/NcUserStatusIcon-swCHU0tl.cjs +0 -163
  558. package/dist/chunks/_l10n-JmazR_zZ.mjs +0 -66
  559. package/dist/chunks/_l10n-JmazR_zZ.mjs.map +0 -1
  560. package/dist/chunks/_l10n-wK0o0jNS.cjs +0 -64
  561. package/dist/chunks/_l10n-wK0o0jNS.cjs.map +0 -1
  562. package/dist/chunks/referencePickerModal-9sd4Ftja.mjs.map +0 -1
  563. package/dist/chunks/referencePickerModal-gCkuVbeM.cjs.map +0 -1
@@ -1,10 +1,10 @@
1
- var O = require("../assets/NcRichContenteditable-nUZdQSMZ.css");
2
- const a = require("./_l10n-wK0o0jNS.cjs"), b = require("@nextcloud/router"), _ = require("./NcUserStatusIcon-swCHU0tl.cjs"), i = require("vue"), f = require("./_plugin-vue_export-helper-xG2iG1wl.cjs"), C = require("./index-NP8hZQhr.cjs");
1
+ var O = require("../assets/NcRichContenteditable--bkjerM1.css");
2
+ const u = require("./_l10n-Fl7RzbcZ.cjs"), b = require("@nextcloud/router"), _ = require("./NcUserStatusIcon-b0xt-g7X.cjs"), i = require("vue"), f = require("./_plugin-vue_export-helper-xG2iG1wl.cjs"), C = require("./index-6mzaBTml.cjs");
3
3
  require("../Directives/Tooltip.cjs");
4
- const m = require("./emoji-mJIuLpNR.cjs"), h = require("./referencePickerModal-gCkuVbeM.cjs");
4
+ const m = require("./emoji-NrWIXNZ4.cjs"), h = require("./referencePickerModal-JVKOIVTG.cjs");
5
5
  require("@nextcloud/axios");
6
6
  require("./NcLoadingIcon-Fwid-wWE.cjs");
7
- require("./NcCheckboxRadioSwitch.vue_vue_type_style_index_0_scoped_c3135eb8_lang-RYt-H2PA.cjs");
7
+ require("./NcCheckboxRadioSwitch.vue_vue_type_style_index_0_scoped_48c28b96_lang-togIrFzp.cjs");
8
8
  const p = require("./GenRandomId-ULxaMkkr.cjs");
9
9
  require("unist-util-visit");
10
10
  require("unist-builder");
@@ -16,9 +16,9 @@ require("remark-rehype");
16
16
  require("rehype-react");
17
17
  require("rehype-external-links");
18
18
  require("./NcEmptyContent-M3ClqFZe.cjs");
19
- require("./NcSelect-9cM-OGdn.cjs");
20
- require("./NcTextField-bz_keSKF.cjs");
21
- require("./NcButton-Uxh-oARg.cjs");
19
+ require("./NcSelect-P2FpWJBr.cjs");
20
+ require("./NcTextField-zi19KqEm.cjs");
21
+ require("./NcButton-7UKtzkX5.cjs");
22
22
  require("../Components/NcModal.cjs");
23
23
  require("@nextcloud/event-bus");
24
24
  const y = require("tributejs/dist/tribute.esm.js"), v = require("debounce"), k = require("string-length"), S = require("floating-vue"), d = (e) => e && e.__esModule ? e : { default: e }, c = /* @__PURE__ */ d(y), T = /* @__PURE__ */ d(v), E = /* @__PURE__ */ d(k), q = {
@@ -77,13 +77,13 @@ const y = require("tributejs/dist/tribute.esm.js"), v = require("debounce"), k =
77
77
  class: "autocomplete-result__subline"
78
78
  };
79
79
  function R(e, t, n, l, o, r) {
80
- const u = i.resolveComponent("NcUserStatusIcon");
80
+ const a = i.resolveComponent("NcUserStatusIcon");
81
81
  return i.openBlock(), i.createElementBlock("div", x, [
82
82
  i.createElementVNode("div", {
83
- class: i.normalizeClass([[n.icon, `autocomplete-result__icon--${r.avatarUrl ? "with-avatar" : ""}`], "autocomplete-result__icon"]),
84
- style: i.normalizeStyle(r.avatarUrl ? { backgroundImage: `url(${r.avatarUrl})` } : null)
83
+ class: i.normalizeClass([[n.icon, "autocomplete-result__icon--".concat(r.avatarUrl ? "with-avatar" : "")], "autocomplete-result__icon"]),
84
+ style: i.normalizeStyle(r.avatarUrl ? { backgroundImage: "url(".concat(r.avatarUrl, ")") } : null)
85
85
  }, [
86
- n.status.icon ? (i.openBlock(), i.createElementBlock("span", V, i.toDisplayString(n.status && n.status.icon || ""), 1)) : n.status.status && n.status.status !== "offline" ? (i.openBlock(), i.createBlock(u, {
86
+ n.status.icon ? (i.openBlock(), i.createElementBlock("span", V, i.toDisplayString(n.status && n.status.icon || ""), 1)) : n.status.status && n.status.status !== "offline" ? (i.openBlock(), i.createBlock(a, {
87
87
  key: 1,
88
88
  class: "autocomplete-result__status",
89
89
  status: n.status.status
@@ -99,7 +99,7 @@ function R(e, t, n, l, o, r) {
99
99
  ]);
100
100
  }
101
101
  const g = /* @__PURE__ */ f._export_sfc(q, [["render", R], ["__scopeId", "data-v-b6d7cce6"]]);
102
- a.register(a.t27, a.t30);
102
+ u.register(u.t27, u.t30);
103
103
  const I = {
104
104
  name: "NcRichContenteditable",
105
105
  directives: {
@@ -129,7 +129,7 @@ const I = {
129
129
  },
130
130
  placeholder: {
131
131
  type: String,
132
- default: a.t("Write a message …")
132
+ default: u.t("Write a message …")
133
133
  },
134
134
  autoComplete: {
135
135
  type: Function,
@@ -201,7 +201,7 @@ const I = {
201
201
  ],
202
202
  data() {
203
203
  return {
204
- labelId: `rich-label-${p.GenRandomId(5)}`,
204
+ labelId: "rich-label-".concat(p.GenRandomId(5)),
205
205
  textSmiles: [],
206
206
  tribute: null,
207
207
  autocompleteOptions: {
@@ -209,7 +209,7 @@ const I = {
209
209
  allowSpaces: !0,
210
210
  fillAttr: "id",
211
211
  // Search against id and title (display name)
212
- lookup: (e) => `${e.id} ${e.title}`,
212
+ lookup: (e) => "".concat(e.id, " ").concat(e.title),
213
213
  // Where to inject the menu popup
214
214
  menuContainer: this.menuContainer,
215
215
  // Popup mention autocompletion templates
@@ -217,7 +217,10 @@ const I = {
217
217
  // Hide if no results
218
218
  noMatchTemplate: () => '<span class="hidden"></span>',
219
219
  // Inner display of mentions
220
- selectTemplate: (e) => this.genSelectTemplate(e?.original?.id),
220
+ selectTemplate: (e) => {
221
+ var t;
222
+ return this.genSelectTemplate((t = e == null ? void 0 : e.original) == null ? void 0 : t.id);
223
+ },
221
224
  // Autocompletion results
222
225
  values: this.debouncedAutoComplete
223
226
  },
@@ -229,9 +232,9 @@ const I = {
229
232
  // Where to inject the menu popup
230
233
  menuContainer: this.menuContainer,
231
234
  // Popup mention autocompletion templates
232
- menuItemTemplate: (e) => this.textSmiles.includes(e.original) ? e.original : `<span class="tribute-container-emoji__item__emoji">${e.original.native}</span> :${e.original.short_name}`,
235
+ menuItemTemplate: (e) => this.textSmiles.includes(e.original) ? e.original : '<span class="tribute-container-emoji__item__emoji">'.concat(e.original.native, "</span> :").concat(e.original.short_name),
233
236
  // Hide if no results
234
- noMatchTemplate: () => a.t("No emoji found"),
237
+ noMatchTemplate: () => u.t("No emoji found"),
235
238
  // Display raw emoji along with its name
236
239
  selectTemplate: (e) => this.textSmiles.includes(e.original) ? e.original : (m.emojiAddRecent(e.original), e.original.native),
237
240
  // Pass the search results as values
@@ -252,9 +255,9 @@ const I = {
252
255
  // Where to inject the menu popup
253
256
  menuContainer: this.menuContainer,
254
257
  // Popup mention autocompletion templates
255
- menuItemTemplate: (e) => `<img class="tribute-container-link__item__icon" src="${e.original.icon_url}"> <span class="tribute-container-link__item__title">${e.original.title}</span>`,
258
+ menuItemTemplate: (e) => '<img class="tribute-container-link__item__icon" src="'.concat(e.original.icon_url, '"> <span class="tribute-container-link__item__title">').concat(e.original.title, "</span>"),
256
259
  // Hide if no results
257
- noMatchTemplate: () => a.t("No link provider found"),
260
+ noMatchTemplate: () => u.t("No link provider found"),
258
261
  selectTemplate: this.getLink,
259
262
  // Pass the search results as values
260
263
  values: (e, t) => t(h.searchProvider(e)),
@@ -303,7 +306,7 @@ const I = {
303
306
  */
304
307
  tooltipString() {
305
308
  return this.isOverMaxlength ? {
306
- content: a.t("Message limit of {count} characters reached", { count: this.maxlength }),
309
+ content: u.t("Message limit of {count} characters reached", { count: this.maxlength }),
307
310
  shown: !0,
308
311
  trigger: "manual"
309
312
  } : null;
@@ -396,7 +399,7 @@ const I = {
396
399
  return;
397
400
  e.preventDefault();
398
401
  const t = e.clipboardData;
399
- if (this.$emit("paste", e), t.files.length !== 0 || !Object.values(t.items).find((u) => u?.type.startsWith("text")))
402
+ if (this.$emit("paste", e), t.files.length !== 0 || !Object.values(t.items).find((a) => a == null ? void 0 : a.type.startsWith("text")))
400
403
  return;
401
404
  const n = t.getData("text"), l = window.getSelection();
402
405
  if (!l.rangeCount) {
@@ -482,7 +485,7 @@ const I = {
482
485
  }
483
486
  }, j = ["id", "contenteditable", "aria-labelledby", "aria-placeholder"], B = ["id"];
484
487
  function M(e, t, n, l, o, r) {
485
- const u = i.resolveDirective("tooltip");
488
+ const a = i.resolveDirective("tooltip");
486
489
  return i.openBlock(), i.createElementBlock("div", {
487
490
  class: i.normalizeClass(["rich-contenteditable", e.$props.class])
488
491
  }, [
@@ -514,7 +517,7 @@ function M(e, t, n, l, o, r) {
514
517
  onPaste: t[7] || (t[7] = (...s) => r.onPaste && r.onPaste(...s)),
515
518
  onKeyupCapture: t[8] || (t[8] = i.withModifiers((...s) => r.onKeyUp && r.onKeyUp(...s), ["stop", "prevent"]))
516
519
  }), null, 16, j), [
517
- [u, r.tooltipString]
520
+ [a, r.tooltipString]
518
521
  ]),
519
522
  n.label ? (i.openBlock(), i.createElementBlock("div", {
520
523
  key: 0,
@@ -523,6 +526,6 @@ function M(e, t, n, l, o, r) {
523
526
  }, i.toDisplayString(n.label), 9, B)) : i.createCommentVNode("", !0)
524
527
  ], 2);
525
528
  }
526
- const D = /* @__PURE__ */ f._export_sfc(I, [["render", M], ["__scopeId", "data-v-cc6795a5"]]);
529
+ const D = /* @__PURE__ */ f._export_sfc(I, [["render", M], ["__scopeId", "data-v-96d03e3d"]]);
527
530
  exports.NcAutoCompleteResult = g;
528
531
  exports.NcRichContenteditable = D;
@@ -1 +1 @@
1
- {"version":3,"file":"NcRichContenteditable-rSquEMs2.mjs","sources":["../../src/components/NcRichContenteditable/NcAutoCompleteResult.vue","../../src/components/NcRichContenteditable/NcRichContenteditable.vue"],"sourcesContent":["<!--\n - @copyright Copyright (c) 2020 John Molakvoæ <skjnldsv@protonmail.com>\n -\n - @author John Molakvoæ <skjnldsv@protonmail.com>\n -\n - @license GNU AGPL version 3 or any later version\n -\n - This program is free software: you can redistribute it and/or modify\n - it under the terms of the GNU Affero General Public License as\n - published by the Free Software Foundation, either version 3 of the\n - License, or (at your option) any later version.\n -\n - This program is distributed in the hope that it will be useful,\n - but WITHOUT ANY WARRANTY; without even the implied warranty of\n - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n - GNU Affero General Public License for more details.\n -\n - You should have received a copy of the GNU Affero General Public License\n - along with this program. If not, see <http://www.gnu.org/licenses/>.\n-->\n\n<template>\n\t<div class=\"autocomplete-result\">\n\t\t<!-- Avatar or icon -->\n\t\t<div :class=\"[icon, `autocomplete-result__icon--${avatarUrl ? 'with-avatar' : ''}`]\"\n\t\t\t:style=\"avatarUrl ? { backgroundImage: `url(${avatarUrl})` } : null \"\n\t\t\tclass=\"autocomplete-result__icon\">\n\t\t\t<span v-if=\"status.icon\"\n\t\t\t\tclass=\"autocomplete-result__status autocomplete-result__status--icon\">\n\t\t\t\t{{ status && status.icon || '' }}\n\t\t\t</span>\n\t\t\t<NcUserStatusIcon v-else-if=\"status.status && status.status !== 'offline'\"\n\t\t\t\tclass=\"autocomplete-result__status\"\n\t\t\t\t:status=\"status.status\" />\n\t\t</div>\n\n\t\t<!-- Title and subline -->\n\t\t<span class=\"autocomplete-result__content\">\n\t\t\t<span class=\"autocomplete-result__title\" :title=\"title\">\n\t\t\t\t{{ title }}\n\t\t\t</span>\n\t\t\t<span v-if=\"subline\" class=\"autocomplete-result__subline\">\n\t\t\t\t{{ subline }}\n\t\t\t</span>\n\t\t</span>\n\t</div>\n</template>\n\n<script>\nimport { generateUrl } from '@nextcloud/router'\n\nimport NcUserStatusIcon from '../NcUserStatusIcon/index.js'\n\nexport default {\n\tname: 'NcAutoCompleteResult',\n\n\tcomponents: {\n\t\tNcUserStatusIcon,\n\t},\n\n\tprops: {\n\t\ttitle: {\n\t\t\ttype: String,\n\t\t\trequired: true,\n\t\t},\n\t\tsubline: {\n\t\t\ttype: String,\n\t\t\tdefault: null,\n\t\t},\n\t\tid: {\n\t\t\ttype: String,\n\t\t\tdefault: null,\n\t\t},\n\t\ticon: {\n\t\t\ttype: String,\n\t\t\trequired: true,\n\t\t},\n\t\ticonUrl: {\n\t\t\ttype: String,\n\t\t\tdefault: null,\n\t\t},\n\t\tsource: {\n\t\t\ttype: String,\n\t\t\trequired: true,\n\t\t},\n\t\tstatus: {\n\t\t\ttype: [Object, Array],\n\t\t\tdefault: () => ({}),\n\t\t},\n\t},\n\tcomputed: {\n\t\tavatarUrl() {\n\t\t\tif (this.iconUrl) {\n\t\t\t\treturn this.iconUrl\n\t\t\t}\n\n\t\t\treturn this.id && this.source === 'users'\n\t\t\t\t? this.getAvatarUrl(this.id, 44)\n\t\t\t\t: null\n\t\t},\n\t},\n\n\tmethods: {\n\t\tgetAvatarUrl(user, size) {\n\t\t\treturn generateUrl('/avatar/{user}/{size}', {\n\t\t\t\tuser,\n\t\t\t\tsize,\n\t\t\t})\n\t\t},\n\t},\n}\n</script>\n\n<style lang=\"scss\" scoped>\n$autocomplete-padding: 10px;\n\n.autocomplete-result {\n\tdisplay: flex;\n\theight: $clickable-area;\n\tpadding: $autocomplete-padding;\n\n\t.highlight & {\n\t\tcolor: var(--color-primary-element-light-text);\n\t\tbackground: var(--color-primary-element-light);\n\t\t&, * {\n\t\t\tcursor: pointer;\n\t\t}\n\t}\n\n\t&__icon {\n\t\tposition: relative;\n\t\tflex: 0 0 $clickable-area;\n\t\twidth: $clickable-area;\n\t\tmin-width: $clickable-area;\n\t\theight: $clickable-area;\n\t\tborder-radius: $clickable-area;\n\t\tbackground-color: var(--color-background-darker);\n\t\tbackground-repeat: no-repeat;\n\t\tbackground-position: center;\n\t\tbackground-size: $clickable-area - 2 * $autocomplete-padding;\n\t\t&--with-avatar {\n\t\t\tcolor: inherit;\n\t\t\tbackground-size: cover;\n\t\t}\n\t}\n\n\t&__status {\n\t\tbox-sizing: border-box;\n\t\tposition: absolute;\n\t\tright: -4px;\n\t\tbottom: -4px;\n\t\tmin-width: 18px;\n\t\tmin-height: 18px;\n\t\twidth: 18px;\n\t\theight: 18px;\n\t\tborder: 2px solid var(--color-main-background);\n\t\tborder-radius: 50%;\n\t\tbackground-color: var(--color-main-background);\n\t\tfont-size: var(--default-font-size);\n\t\tline-height: 15px;\n\t\tbackground-repeat: no-repeat;\n\t\tbackground-size: 16px;\n\t\tbackground-position: center;\n\n\t\t&--icon {\n\t\t\tborder: none;\n\t\t\tbackground-color: transparent;\n\t\t}\n\t}\n\n\t&__content {\n\t\tdisplay: flex;\n\t\tflex: 1 1 100%;\n\t\tflex-direction: column;\n\t\tjustify-content: center;\n\t\tmin-width: 0;\n\t\tpadding-left: $autocomplete-padding;\n\t}\n\n\t&__title,\n\t&__subline {\n\t\twhite-space: nowrap;\n\t\toverflow: hidden;\n\t\ttext-overflow: ellipsis;\n\t}\n\n\t&__subline {\n\t\tcolor: var(--color-text-maxcontrast);\n\t}\n}\n\n</style>\n","<!--\n - @copyright Copyright (c) 2020 John Molakvoæ <skjnldsv@protonmail.com>\n -\n - @author John Molakvoæ <skjnldsv@protonmail.com>\n -\n - @license GNU AGPL version 3 or any later version\n -\n - This program is free software: you can redistribute it and/or modify\n - it under the terms of the GNU Affero General Public License as\n - published by the Free Software Foundation, either version 3 of the\n - License, or (at your option) any later version.\n -\n - This program is distributed in the hope that it will be useful,\n - but WITHOUT ANY WARRANTY; without even the implied warranty of\n - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n - GNU Affero General Public License for more details.\n -\n - You should have received a copy of the GNU Affero General Public License\n - along with this program. If not, see <http://www.gnu.org/licenses/>.\n-->\n\n<docs>\n\n### General description\n\nThis component displays contenteditable div with automated `@` [at] autocompletion and `:` [colon] emoji autocompletion.\n\n### Examples\n\nTry mentioning user @Test01 or inserting emoji :smile\n\n```vue\n<template>\n\t<div>\n\t\t<NcRichContenteditable\n\t\t\tlabel=\"Write a comment\"\n\t\t\tv-model=\"message\"\n\t\t\t:auto-complete=\"autoComplete\"\n\t\t\t:maxlength=\"100\"\n\t\t\t:user-data=\"userData\"\n\t\t\t@submit=\"onSubmit\" />\n\t\t<br>\n\n\t\t<NcRichContenteditable\n\t\t\tv-model=\"message\"\n\t\t\t:auto-complete=\"autoComplete\"\n\t\t\t:maxlength=\"400\"\n\t\t\t:multiline=\"true\"\n\t\t\t:user-data=\"userData\"\n\t\t\t@submit=\"onSubmit\" />\n\n\t\t<h5>Output - raw</h5>\n\t\t{{ JSON.stringify(message) }}\n\n\t\t<h5>Output - preformatted</h5>\n\t\t<p class=\"pre-line\">{{ message }}</p>\n\n\t\t<h5>Output - in NcRichText with markdown support</h5>\n\t\t<NcRichText :text=\"text\" :arguments=\"userMentions\" autolink use-markdown />\n\t</div>\n</template>\n<script>\nexport default {\n\tdata() {\n\t\treturn {\n\t\t\tmessage: '**Lorem ipsum** dolor sit amet.',\n\t\t\t// You need to provide this for the inline mention to understand what to display or not.\n\t\t\t// Key should be a string with leading '@', like @Test02 or @\"Test Offline\"\n\t\t\tuserData: {\n\t\t\t\tTest01: {\n\t\t\t\t\ticon: 'icon-user',\n\t\t\t\t\tid: 'Test01',\n\t\t\t\t\ttitle: 'Test01',\n\t\t\t\t\tsource: 'users',\n\t\t\t\t\tprimary: true,\n\t\t\t\t},\n\t\t\t\tTest02: {\n\t\t\t\t\ticon: 'icon-user',\n\t\t\t\t\tid: 'Test02',\n\t\t\t\t\ttitle: 'Test02',\n\t\t\t\t\tsource: 'users',\n\t\t\t\t\tstatus: {\n\t\t\t\t\t\tclearAt: null,\n\t\t\t\t\t\ticon: '🎡',\n\t\t\t\t\t\tmessage: 'Visiting London',\n\t\t\t\t\t\tstatus: 'away',\n\t\t\t\t\t},\n\t\t\t\t\tsubline: 'Visiting London',\n\t\t\t\t},\n\t\t\t\t'Test@User': {\n\t\t\t\t\ticon: 'icon-user',\n\t\t\t\t\tid: 'Test@User',\n\t\t\t\t\ttitle: 'Test 03',\n\t\t\t\t\tsource: 'users',\n\t\t\t\t\tstatus: {\n\t\t\t\t\t\tclearAt: null,\n\t\t\t\t\t\ticon: '🎡',\n\t\t\t\t\t\tmessage: 'Having space in my name',\n\t\t\t\t\t\tstatus: 'online',\n\t\t\t\t\t},\n\t\t\t\t\tsubline: 'Visiting London',\n\t\t\t\t},\n\t\t\t\t'Test Offline': {\n\t\t\t\t\ticon: 'icon-user',\n\t\t\t\t\tid: 'Test Offline',\n\t\t\t\t\ttitle: 'Test Offline',\n\t\t\t\t\tsource: 'users',\n\t\t\t\t\tstatus: {\n\t\t\t\t\t\tclearAt: null,\n\t\t\t\t\t\ticon: null,\n\t\t\t\t\t\tmessage: null,\n\t\t\t\t\t\tstatus: 'offline',\n\t\t\t\t\t},\n\t\t\t\t\tsubline: null,\n\t\t\t\t},\n\t\t\t\t'Test DND': {\n\t\t\t\t\ticon: 'icon-user',\n\t\t\t\t\tid: 'Test DND',\n\t\t\t\t\ttitle: 'Test DND',\n\t\t\t\t\tsource: 'users',\n\t\t\t\t\tstatus: {\n\t\t\t\t\t\tclearAt: null,\n\t\t\t\t\t\ticon: null,\n\t\t\t\t\t\tmessage: 'Out sick',\n\t\t\t\t\t\tstatus: 'dnd',\n\t\t\t\t\t},\n\t\t\t\t\tsubline: 'Out sick',\n\t\t\t\t},\n\t\t\t},\n\t\t\t// To display user bubbles in NcRichText, special format of data should be provided:\n\t\t\t// Key should be in curly brackets without '@' and ' ' symbols, like {user-2}\n\t\t\tuserMentions: {\n\t\t\t\t'user-1': {\n\t\t\t\t\tcomponent: 'NcUserBubble',\n\t\t\t\t\tprops: {\n\t\t\t\t\t\tdisplayName: 'Test01',\n\t\t\t\t\t\tuser: 'Test01',\n\t\t\t\t\t\tprimary: true,\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\t'user-2': {\n\t\t\t\t\tcomponent: 'NcUserBubble',\n\t\t\t\t\tprops: {\n\t\t\t\t\t\tdisplayName: 'Test02',\n\t\t\t\t\t\tuser: 'Test02',\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\t'user-3': {\n\t\t\t\t\tcomponent: 'NcUserBubble',\n\t\t\t\t\tprops: {\n\t\t\t\t\t\tdisplayName: 'Test 03',\n\t\t\t\t\t\tuser: 'Test@User',\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\t'user-4': {\n\t\t\t\t\tcomponent: 'NcUserBubble',\n\t\t\t\t\tprops: {\n\t\t\t\t\t\tdisplayName: 'Test Offline',\n\t\t\t\t\t\tuser: 'Test Offline',\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\t'user-5': {\n\t\t\t\t\tcomponent: 'NcUserBubble',\n\t\t\t\t\tprops: {\n\t\t\t\t\t\tdisplayName: 'Test DND',\n\t\t\t\t\t\tuser: 'Test DND',\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t}\n\t\t}\n\t},\n\tcomputed: {\n\t\ttext() {\n\t\t\treturn this.message\n\t\t\t\t\t.replace('@Test01', '{user-1}')\n\t\t\t\t\t.replace('@Test02', '{user-2}')\n\t\t\t\t\t.replace('@Test@User', '{user-3}')\n\t\t\t\t\t.replace('@\"Test Offline\"', '{user-4}')\n\t\t\t\t\t.replace('@\"Test DND\"', '{user-5}')\n\t\t},\n\t},\n\tmethods: {\n\t\t/**\n\t\t* Do your own query to the autocompletion api.\n\t\t* The returned data bellow is a fake data example.\n\t\t* The callback expects the same format returned by the core/autocomplete/get ocs api endpoint!\n\t\t* @see userData example above\n\t\t*\n\t\t* @param {string} search the query\n\t\t* @param {Function} callback the callback to process the results with\n\t\t*/\n\t\tautoComplete(search, callback) {\n\t\t\tcallback(Object.values(this.userData))\n\t\t},\n\t\tonSubmit() {\n\t\t\talert(this.message)\n\t\t}\n\t}\n}\n</script>\n<style lang=\"scss\" scoped>\n\th5 {\n\t\tfont-weight: bold;\n\t\tmargin: 40px 0 20px 0;\n\t}\n\n\t.pre-line {\n\t\twhite-space: pre-line;\n\t}\n</style>\n```\n\n</docs>\n\n<template>\n\t<div class=\"rich-contenteditable\" :class=\"$props.class\">\n\t\t<div :id=\"id\"\n\t\t\tref=\"contenteditable\"\n\t\t\tv-tooltip=\"tooltipString\"\n\t\t\t:class=\"{\n\t\t\t\t'rich-contenteditable__input--empty': isEmptyValue,\n\t\t\t\t'rich-contenteditable__input--multiline': multiline,\n\t\t\t\t'rich-contenteditable__input--has-label': label,\n\t\t\t\t'rich-contenteditable__input--overflow': isOverMaxlength,\n\t\t\t\t'rich-contenteditable__input--disabled': disabled,\n\t\t\t}\"\n\t\t\t:contenteditable=\"canEdit\"\n\t\t\t:aria-labelledby=\"label ? labelId : undefined\"\n\t\t\t:aria-placeholder=\"placeholder\"\n\t\t\taria-multiline=\"true\"\n\t\t\tclass=\"rich-contenteditable__input\"\n\t\t\trole=\"textbox\"\n\t\t\tv-bind=\"$attrs\"\n\t\t\t@focus=\"moveCursorToEnd\"\n\t\t\t@input=\"onInput\"\n\t\t\t@compositionstart=\"isComposing = true\"\n\t\t\t@compositionend=\"isComposing = false\"\n\t\t\t@keydown.delete=\"onDelete\"\n\t\t\t@keydown.enter.exact=\"onEnter\"\n\t\t\t@keydown.ctrl.enter.exact.stop.prevent=\"onCtrlEnter\"\n\t\t\t@paste=\"onPaste\"\n\t\t\t@keyup.stop.prevent.capture=\"onKeyUp\" />\n\t\t<div v-if=\"label\"\n\t\t\t:id=\"labelId\"\n\t\t\tclass=\"rich-contenteditable__label\">\n\t\t\t{{ label }}\n\t\t</div>\n\t</div>\n</template>\n\n<script>\nimport { t } from '../../l10n.js'\nimport NcAutoCompleteResult from './NcAutoCompleteResult.vue'\nimport richEditor from '../../mixins/richEditor/index.js'\nimport Tooltip from '../../directives/Tooltip/index.js'\nimport { emojiSearch, emojiAddRecent } from '../../functions/emoji/index.ts'\nimport { searchProvider, getLinkWithPicker } from '../NcRichText/index.js'\n\nimport Tribute from 'tributejs/dist/tribute.esm.js'\nimport debounce from 'debounce'\nimport stringLength from 'string-length'\nimport GenRandomId from '../../utils/GenRandomId.js'\n\nexport default {\n\tname: 'NcRichContenteditable',\n\n\tdirectives: {\n\t\ttooltip: Tooltip,\n\t},\n\n\tmixins: [richEditor],\n\n\tinheritAttrs: false,\n\n\tprops: {\n\t\t/**\n\t\t * The ID attribute of the content editable\n\t\t */\n\t\tid: {\n\t\t\ttype: String,\n\t\t\tdefault: () => GenRandomId(7),\n\t\t},\n\n\t\t/**\n\t\t * Visual label of the contenteditable\n\t\t */\n\t\tlabel: {\n\t\t\ttype: String,\n\t\t\tdefault: '',\n\t\t},\n\n\t\tmodelValue: {\n\t\t\ttype: String,\n\t\t\tdefault: '',\n\t\t\trequired: true,\n\t\t},\n\n\t\tplaceholder: {\n\t\t\ttype: String,\n\t\t\tdefault: t('Write a message …'),\n\t\t},\n\n\t\tautoComplete: {\n\t\t\ttype: Function,\n\t\t\tdefault: () => [],\n\t\t},\n\n\t\tmenuContainer: {\n\t\t\ttype: Element,\n\t\t\tdefault: () => document.body,\n\t\t},\n\n\t\t/**\n\t\t * Make the contenteditable looks like a textarea or not.\n\t\t * Default looks like a single-line input.\n\t\t * This also handle the default enter/shift+enter behaviour.\n\t\t * if multiline, enter = newline; otherwise enter = submit\n\t\t * shift+enter always add a new line. ctrl+enter always submits\n\t\t */\n\t\tmultiline: {\n\t\t\ttype: Boolean,\n\t\t\tdefault: false,\n\t\t},\n\n\t\t/**\n\t\t * Is the content editable ?\n\t\t */\n\t\tcontenteditable: {\n\t\t\ttype: Boolean,\n\t\t\tdefault: true,\n\t\t},\n\n\t\t/**\n\t\t * Disable the editing and show specific disabled design\n\t\t */\n\t\tdisabled: {\n\t\t\ttype: Boolean,\n\t\t\tdefault: false,\n\t\t},\n\n\t\t/**\n\t\t * Max allowed length\n\t\t */\n\t\tmaxlength: {\n\t\t\ttype: Number,\n\t\t\tdefault: null,\n\t\t},\n\n\t\t/**\n\t\t * Enable or disable emoji autocompletion\n\t\t */\n\t\temojiAutocomplete: {\n\t\t\ttype: Boolean,\n\t\t\tdefault: true,\n\t\t},\n\n\t\t/**\n\t\t * Enable or disable link autocompletion\n\t\t */\n\t\tlinkAutocomplete: {\n\t\t\ttype: Boolean,\n\t\t\tdefault: true,\n\t\t},\n\n\t\t/**\n\t\t * CSS class to apply to the root element.\n\t\t */\n\t\tclass: {\n\t\t\ttype: [String, Array, Object],\n\t\t\tdefault: '',\n\t\t},\n\t},\n\n\temits: [\n\t\t'submit',\n\t\t'paste',\n\t\t'update:modelValue',\n\t\t'smart-picker-submit',\n\t],\n\n\tdata() {\n\t\treturn {\n\t\t\tlabelId: `rich-label-${GenRandomId(5)}`,\n\t\t\ttextSmiles: [],\n\t\t\ttribute: null,\n\t\t\tautocompleteOptions: {\n\t\t\t\t// Allow spaces in the middle of mentions\n\t\t\t\tallowSpaces: true,\n\t\t\t\tfillAttr: 'id',\n\t\t\t\t// Search against id and title (display name)\n\t\t\t\tlookup: result => `${result.id} ${result.title}`,\n\t\t\t\t// Where to inject the menu popup\n\t\t\t\tmenuContainer: this.menuContainer,\n\t\t\t\t// Popup mention autocompletion templates\n\t\t\t\tmenuItemTemplate: item => this.renderComponentHtml(item.original, NcAutoCompleteResult),\n\t\t\t\t// Hide if no results\n\t\t\t\tnoMatchTemplate: () => '<span class=\"hidden\"></span>',\n\t\t\t\t// Inner display of mentions\n\t\t\t\tselectTemplate: item => this.genSelectTemplate(item?.original?.id),\n\t\t\t\t// Autocompletion results\n\t\t\t\tvalues: this.debouncedAutoComplete,\n\t\t\t},\n\t\t\temojiOptions: {\n\t\t\t\ttrigger: ':',\n\t\t\t\t// Don't use the tribute search function at all\n\t\t\t\t// We pass search results as values (see below)\n\t\t\t\tlookup: (result, query) => query,\n\t\t\t\t// Where to inject the menu popup\n\t\t\t\tmenuContainer: this.menuContainer,\n\t\t\t\t// Popup mention autocompletion templates\n\t\t\t\tmenuItemTemplate: item => {\n\t\t\t\t\tif (this.textSmiles.includes(item.original)) {\n\t\t\t\t\t\t// Display the raw text string for :), :-D, … for non emoji results,\n\t\t\t\t\t\t// instead of trying to show an image and their name.\n\t\t\t\t\t\treturn item.original\n\t\t\t\t\t}\n\n\t\t\t\t\treturn `<span class=\"tribute-container-emoji__item__emoji\">${item.original.native}</span> :${item.original.short_name}`\n\t\t\t\t},\n\t\t\t\t// Hide if no results\n\t\t\t\tnoMatchTemplate: () => t('No emoji found'),\n\t\t\t\t// Display raw emoji along with its name\n\t\t\t\tselectTemplate: (item) => {\n\t\t\t\t\tif (this.textSmiles.includes(item.original)) {\n\t\t\t\t\t\t// Replace the selection with the raw text string for :), :-D, … for non emoji results\n\t\t\t\t\t\treturn item.original\n\t\t\t\t\t}\n\n\t\t\t\t\temojiAddRecent(item.original)\n\t\t\t\t\treturn item.original.native\n\t\t\t\t},\n\t\t\t\t// Pass the search results as values\n\t\t\t\tvalues: (text, cb) => {\n\t\t\t\t\tconst emojiResults = emojiSearch(text)\n\t\t\t\t\tif (this.textSmiles.includes(':' + text)) {\n\t\t\t\t\t\t/**\n\t\t\t\t\t\t * Prepend text smiles to the search results so that Tribute\n\t\t\t\t\t\t * is not interfering with normal writing, aka. \"Cocos Island Meme\".\n\t\t\t\t\t\t * E.g. `:)` and `:-)` got replaced by the flag of Cocos Island,\n\t\t\t\t\t\t * when submitting the input with Enter after writing them\n\t\t\t\t\t\t */\n\t\t\t\t\t\temojiResults.unshift(':' + text)\n\t\t\t\t\t}\n\t\t\t\t\tcb(emojiResults)\n\t\t\t\t},\n\t\t\t\t// Class added to the menu container\n\t\t\t\tcontainerClass: 'tribute-container-emoji',\n\t\t\t\t// Class added to each list item\n\t\t\t\titemClass: 'tribute-container-emoji__item',\n\t\t\t},\n\t\t\tlinkOptions: {\n\t\t\t\ttrigger: '/',\n\t\t\t\t// Don't use the tribute search function at all\n\t\t\t\t// We pass search results as values (see below)\n\t\t\t\tlookup: (result, query) => query,\n\t\t\t\t// Where to inject the menu popup\n\t\t\t\tmenuContainer: this.menuContainer,\n\t\t\t\t// Popup mention autocompletion templates\n\t\t\t\tmenuItemTemplate: item => `<img class=\"tribute-container-link__item__icon\" src=\"${item.original.icon_url}\"> <span class=\"tribute-container-link__item__title\">${item.original.title}</span>`,\n\t\t\t\t// Hide if no results\n\t\t\t\tnoMatchTemplate: () => t('No link provider found'),\n\t\t\t\tselectTemplate: this.getLink,\n\t\t\t\t// Pass the search results as values\n\t\t\t\tvalues: (text, cb) => cb(searchProvider(text)),\n\t\t\t\t// Class added to the menu container\n\t\t\t\tcontainerClass: 'tribute-container-link',\n\t\t\t\t// Class added to each list item\n\t\t\t\titemClass: 'tribute-container-link__item',\n\t\t\t},\n\n\t\t\t// Represent the raw untrimmed text of the contenteditable\n\t\t\t// serves no other purpose than to check whether the\n\t\t\t// content is empty or not\n\t\t\tlocalValue: this.modelValue,\n\n\t\t\t// Is in text composition session in IME\n\t\t\tisComposing: false,\n\t\t}\n\t},\n\n\tcomputed: {\n\t\t/**\n\t\t * Is the current trimmed value empty?\n\t\t *\n\t\t * @return {boolean}\n\t\t */\n\t\tisEmptyValue() {\n\t\t\treturn !this.localValue || this.localValue.trim() === ''\n\t\t},\n\n\t\t/**\n\t\t * Is this Firefox? 🙄\n\t\t *\n\t\t * @return {boolean}\n\t\t */\n\t\tisFF() {\n\t\t\treturn !!navigator.userAgent.match(/firefox/i)\n\t\t},\n\n\t\t/**\n\t\t * Is the current value over maxlength?\n\t\t *\n\t\t * @return {boolean}\n\t\t */\n\t\tisOverMaxlength() {\n\t\t\tif (this.isEmptyValue || !this.maxlength) {\n\t\t\t\treturn false\n\t\t\t}\n\t\t\treturn stringLength(this.localValue) > this.maxlength\n\t\t},\n\n\t\t/**\n\t\t * Tooltip to show if characters count is over limit\n\t\t *\n\t\t * @return {string}\n\t\t */\n\t\ttooltipString() {\n\t\t\tif (!this.isOverMaxlength) {\n\t\t\t\treturn null\n\t\t\t}\n\t\t\treturn {\n\t\t\t\tcontent: t('Message limit of {count} characters reached', { count: this.maxlength }),\n\t\t\t\tshown: true,\n\t\t\t\ttrigger: 'manual',\n\t\t\t}\n\t\t},\n\n\t\t/**\n\t\t * Edit is only allowed when contenteditableis true and disabled is false\n\t\t *\n\t\t * @return {boolean}\n\t\t */\n\t\tcanEdit() {\n\t\t\treturn this.contenteditable && !this.disabled\n\t\t},\n\t},\n\n\twatch: {\n\t\t/**\n\t\t * If the parent value change, we compare the plain text rendering\n\t\t * If it's different, we render everything and update the main content\n\t\t */\n\t\tmodelValue() {\n\t\t\tconst html = this.$refs.contenteditable.innerHTML\n\t\t\t// Compare trimmed versions to be safe\n\t\t\tif (this.modelValue.trim() !== this.parseContent(html).trim()) {\n\t\t\t\tthis.updateContent(this.modelValue)\n\t\t\t}\n\t\t},\n\t},\n\n\tmounted() {\n\t\t/**\n\t\t * Populate the list of text smiles we want to offer via Tribute.\n\t\t * We add the colon `:)` and colon-dash `:-)` version for each of them.\n\t\t */\n\t\tconst smilesCharacters = ['d', 'D', 'p', 'P', 's', 'S', 'x', 'X', ')', '(', '|', '/']\n\t\tthis.textSmiles = []\n\t\tsmilesCharacters.forEach((char) => {\n\t\t\tthis.textSmiles.push(':' + char)\n\t\t\tthis.textSmiles.push(':-' + char)\n\t\t})\n\n\t\tthis.autocompleteTribute = new Tribute(this.autocompleteOptions)\n\t\tthis.autocompleteTribute.attach(this.$refs.contenteditable)\n\n\t\tif (this.emojiAutocomplete) {\n\t\t\tthis.emojiTribute = new Tribute(this.emojiOptions)\n\t\t\tthis.emojiTribute.attach(this.$refs.contenteditable)\n\t\t}\n\n\t\tif (this.linkAutocomplete) {\n\t\t\tthis.linkTribute = new Tribute(this.linkOptions)\n\t\t\tthis.linkTribute.attach(this.$refs.contenteditable)\n\t\t}\n\n\t\t// Update default value\n\t\tthis.updateContent(this.modelValue)\n\n\t\t// Removes the contenteditable attribute at first load if the prop is\n\t\t// set to false.\n\t\tthis.$refs.contenteditable.contentEditable = this.canEdit\n\t},\n\tbeforeUnmount() {\n\t\tif (this.autocompleteTribute) {\n\t\t\tthis.autocompleteTribute.detach(this.$refs.contenteditable)\n\t\t}\n\t\tif (this.emojiTribute) {\n\t\t\tthis.emojiTribute.detach(this.$refs.contenteditable)\n\t\t}\n\t\tif (this.linkTribute) {\n\t\t\tthis.linkTribute.detach(this.$refs.contenteditable)\n\t\t}\n\t},\n\n\tmethods: {\n\t\t/**\n\t\t * Focus the richContenteditable\n\t\t *\n\t\t * @public\n\t\t */\n\t\tfocus() {\n\t\t\tthis.$refs.contenteditable.focus()\n\t\t},\n\n\t\tgetLink(item) {\n\t\t\t// there is no way to get a tribute result asynchronously\n\t\t\t// so we immediately insert a node and replace it when the result comes\n\t\t\tgetLinkWithPicker(item.original.id)\n\t\t\t\t.then(result => {\n\t\t\t\t\t// replace dummy temp element by a text node which contains the picker result\n\t\t\t\t\tconst tmpElem = document.getElementById('tmp-smart-picker-result-node')\n\t\t\t\t\tconst eventData = {\n\t\t\t\t\t\tresult,\n\t\t\t\t\t\tinsertText: true,\n\t\t\t\t\t}\n\t\t\t\t\tthis.$emit('smart-picker-submit', eventData)\n\t\t\t\t\tif (eventData.insertText) {\n\t\t\t\t\t\tconst newElem = document.createTextNode(result)\n\t\t\t\t\t\ttmpElem.replaceWith(newElem)\n\t\t\t\t\t\tthis.setCursorAfter(newElem)\n\t\t\t\t\t\tthis.updateValue(this.$refs.contenteditable.innerHTML)\n\t\t\t\t\t} else {\n\t\t\t\t\t\ttmpElem.remove()\n\t\t\t\t\t}\n\t\t\t\t})\n\t\t\t\t.catch((error) => {\n\t\t\t\t\tconsole.debug('Smart picker promise rejected:', error)\n\t\t\t\t\tconst tmpElem = document.getElementById('tmp-smart-picker-result-node')\n\t\t\t\t\tthis.setCursorAfter(tmpElem)\n\t\t\t\t\ttmpElem.remove()\n\t\t\t\t})\n\t\t\treturn '<span id=\"tmp-smart-picker-result-node\"></span>'\n\t\t},\n\t\tsetCursorAfter(element) {\n\t\t\tconst range = document.createRange()\n\t\t\trange.setEndAfter(element)\n\t\t\trange.collapse()\n\t\t\tconst selection = window.getSelection()\n\t\t\tselection.removeAllRanges()\n\t\t\tselection.addRange(range)\n\t\t},\n\t\tmoveCursorToEnd() {\n\t\t\tif (!document.createRange) {\n\t\t\t\treturn\n\t\t\t}\n\t\t\tconst range = document.createRange()\n\t\t\trange.selectNodeContents(this.$refs.contenteditable)\n\t\t\trange.collapse(false)\n\t\t\tconst selection = window.getSelection()\n\t\t\tselection.removeAllRanges()\n\t\t\tselection.addRange(range)\n\t\t},\n\t\t/**\n\t\t * Re-emit the input event to the parent\n\t\t *\n\t\t * @param {Event} event the input event\n\t\t */\n\t\tonInput(event) {\n\t\t\tthis.updateValue(event.target.innerHTML)\n\t\t},\n\n\t\t/**\n\t\t * When pasting, sanitize the content, extract text\n\t\t * and render it again\n\t\t *\n\t\t * @param {Event} event the paste event\n\t\t * @fires Event paste the original paste event\n\t\t */\n\t\tonPaste(event) {\n\t\t\t// Either disabled or edit deactivated\n\t\t\tif (!this.canEdit) {\n\t\t\t\treturn\n\t\t\t}\n\n\t\t\tevent.preventDefault()\n\t\t\tconst clipboardData = event.clipboardData\n\n\t\t\t/** The original paste event */\n\t\t\tthis.$emit('paste', event)\n\n\t\t\t// If we have a file or if we don't have any text, ignore\n\t\t\tif (clipboardData.files.length !== 0\n\t\t\t\t|| !Object.values(clipboardData.items).find(item => item?.type.startsWith('text'))) {\n\t\t\t\treturn\n\t\t\t}\n\n\t\t\tconst text = clipboardData.getData('text')\n\t\t\tconst selection = window.getSelection()\n\n\t\t\t// If no selection, replace the whole data\n\t\t\tif (!selection.rangeCount) {\n\t\t\t\tthis.updateValue(text)\n\t\t\t\treturn\n\t\t\t}\n\n\t\t\t// Generate text and insert\n\t\t\tconst range = selection.getRangeAt(0)\n\t\t\tselection.deleteFromDocument()\n\t\t\trange.insertNode(document.createTextNode(text))\n\n\t\t\t// Put cursor at the end of the selection\n\t\t\tconst newRange = document.createRange()\n\t\t\tnewRange.setStart(event.target, range.endOffset)\n\t\t\tnewRange.collapse(true)\n\t\t\tselection.removeAllRanges()\n\t\t\tselection.addRange(newRange)\n\n\t\t\t// Propagate data\n\t\t\tthis.updateValue(this.$refs.contenteditable.innerHTML)\n\t\t},\n\n\t\t/**\n\t\t * Update the value text from the provided html\n\t\t *\n\t\t * @param {string} htmlOrText the html content (or raw text with @mentions)\n\t\t */\n\t\tupdateValue(htmlOrText) {\n\t\t\tconst text = this.parseContent(htmlOrText)\n\t\t\tthis.localValue = text\n\t\t\tthis.$emit('update:modelValue', text)\n\t\t},\n\n\t\t/**\n\t\t * Update content and local value\n\t\t *\n\t\t * @param {string} value the message value\n\t\t */\n\t\tupdateContent(value) {\n\t\t\tconst renderedContent = this.renderContent(value)\n\t\t\tthis.$refs.contenteditable.innerHTML = renderedContent\n\t\t\tthis.localValue = value\n\t\t},\n\n\t\t/**\n\t\t * Because FF have a decade old bug preventing contenteditable=false\n\t\t * to properly be deleted on backspace, we have to hack 👀\n\t\t * https://stackoverflow.com/a/59383394/3885878\n\t\t * https://stackoverflow.com/a/30574622\n\t\t *\n\t\t * @param {Event} event the delete keydown event\n\t\t */\n\t\tonDelete(event) {\n\t\t\tif (!this.isFF || !window.getSelection) {\n\t\t\t\treturn\n\t\t\t}\n\n\t\t\t// Either disabled or edit deactivated\n\t\t\tif (!this.canEdit) {\n\t\t\t\treturn\n\t\t\t}\n\n\t\t\t// fix backspace bug in FF\n\t\t\t// https://bugzilla.mozilla.org/show_bug.cgi?id=685445\n\t\t\t// https://bugzilla.mozilla.org/show_bug.cgi?id=1665167\n\t\t\tconst selection = window.getSelection()\n\t\t\tconst node = event.target\n\t\t\tif (!selection.isCollapsed || !selection.rangeCount) {\n\t\t\t\treturn\n\t\t\t}\n\n\t\t\tconst curRange = selection.getRangeAt(selection.rangeCount - 1)\n\t\t\tif (curRange.commonAncestorContainer.nodeType === 3 && curRange.startOffset > 0) {\n\t\t\t\t// we are in child selection. The characters of the text node is being deleted\n\t\t\t\treturn\n\t\t\t}\n\n\t\t\tconst range = document.createRange()\n\t\t\tif (selection.anchorNode !== node) {\n\t\t\t\t// selection is in character mode. expand it to the whole editable field\n\t\t\t\trange.selectNodeContents(node)\n\t\t\t\trange.setEndBefore(selection.anchorNode)\n\t\t\t} else if (selection.anchorOffset > 0) {\n\t\t\t\trange.setEnd(node, selection.anchorOffset)\n\t\t\t} else {\n\t\t\t\t// reached the beginning of editable field\n\t\t\t\treturn\n\t\t\t}\n\t\t\trange.setStart(node, range.endOffset - 1)\n\n\t\t\tconst previousNode = range.cloneContents().lastChild\n\t\t\tif (previousNode && previousNode.contentEditable === 'false') {\n\t\t\t\t// this is some rich content, e.g. smile. We should help the user to delete it\n\t\t\t\trange.deleteContents()\n\t\t\t\tevent.preventDefault()\n\t\t\t}\n\t\t},\n\t\t/**\n\t\t * Enter key pressed. Submits if not multiline\n\t\t *\n\t\t * @param {Event} event the keydown event\n\t\t */\n\t\tonEnter(event) {\n\t\t\t// Prevent submitting if multiline\n\t\t\t// or length is over maxlength\n\t\t\t// or autocompletion menu is opened\n\t\t\t// or in a text composition session with IME\n\t\t\tif (this.multiline\n\t\t\t\t|| this.isOverMaxlength\n\t\t\t\t|| this.autocompleteTribute.isActive || this.emojiTribute.isActive || this.linkTribute.isActive\n\t\t\t\t|| this.isComposing) {\n\t\t\t\treturn\n\t\t\t}\n\n\t\t\tevent.preventDefault()\n\t\t\tevent.stopPropagation()\n\t\t\tthis.$emit('submit', event)\n\t\t},\n\n\t\t/**\n\t\t * Ctrl + Enter key pressed is used to submit\n\t\t *\n\t\t * @param {Event} event the keydown event\n\t\t */\n\t\tonCtrlEnter(event) {\n\t\t\tif (this.isOverMaxlength) {\n\t\t\t\treturn\n\t\t\t}\n\t\t\tthis.$emit('submit', event)\n\t\t},\n\n\t\t/**\n\t\t * Debounce the autocomplete function\n\t\t */\n\t\tdebouncedAutoComplete: debounce(async function(search, callback) {\n\t\t\tthis.autoComplete(search, callback)\n\t\t}, 100),\n\n\t\tonKeyUp(event) {\n\t\t\t// prevent tribute from opening on keyup\n\t\t\tevent.stopImmediatePropagation()\n\t\t},\n\t},\n}\n</script>\n\n<style lang=\"scss\" scoped>\n// Standalone styling, independent from server\n.rich-contenteditable {\n\tposition: relative;\n\twidth: auto;\n\n\t&__label {\n\t\tposition: absolute;\n\t\tmargin-inline: 14px 0;\n\t\tmax-width: fit-content;\n\t\tinset-block-start: 11px;\n\t\tinset-inline: 0;\n\t\t// Fix color so that users do not think the input already has content\n\t\tcolor: var(--color-text-maxcontrast);\n\t\t// only one line labels are allowed\n\t\twhite-space: nowrap;\n\t\toverflow: hidden;\n\t\ttext-overflow: ellipsis;\n\t\t// forward events to input\n\t\tpointer-events: none;\n\t\t// Position transition\n\t\ttransition: height var(--animation-quick), inset-block-start var(--animation-quick), font-size var(--animation-quick), color var(--animation-quick), background-color var(--animation-quick) var(--animation-slow);\n\t}\n\n\t&__input:focus + &__label,\n\t&__input:not(&__input--empty) + &__label {\n\t\tinset-block-start: -10px;\n\t\tfont-size: 13px; // minimum allowed font size for accessibility\n\t\tfont-weight: 500;\n\t\tborder-radius: var(--default-grid-baseline) var(--default-grid-baseline) 0 0;\n\t\tbackground-color: var(--color-main-background);\n\t\tpadding-inline: 5px;\n\t\tmargin-inline-start: 9px;\n\n\t\ttransition: height var(--animation-quick), inset-block-start var(--animation-quick), font-size var(--animation-quick), color var(--animation-quick);\n\t}\n\n\t&__input {\n\t\toverflow-y: auto;\n\t\twidth: auto;\n\t\tmargin: 0;\n\t\tpadding: 8px;\n\t\tcursor: text;\n\t\twhite-space: pre-wrap;\n\t\tword-break: break-word;\n\t\tcolor: var(--color-main-text);\n\t\tborder: 2px solid var(--color-border-maxcontrast);\n\t\tborder-radius: var(--border-radius-large);\n\t\toutline: none;\n\t\tbackground-color: var(--color-main-background);\n\t\tfont-family: var(--font-face);\n\t\tfont-size: inherit;\n\t\tmin-height: $clickable-area;\n\t\tmax-height: $clickable-area * 5.5;\n\n\t\t&--has-label {\n\t\t\tmargin-top: 10px;\n\t\t}\n\n\t\t// Cannot use :empty because of firefox bug https://bugzilla.mozilla.org/show_bug.cgi?id=1513303\n\t\t&--empty:focus:before,\n\t\t&--empty:not(&--has-label):before {\n\t\t\tcontent: attr(aria-placeholder);\n\t\t\tcolor: var(--color-text-maxcontrast);\n\t\t\tposition: absolute;\n\t\t}\n\n\t\t&[contenteditable='false']:not(&--disabled) {\n\t\t\tcursor: default;\n\t\t\tbackground-color: transparent;\n\t\t\tcolor: var(--color-main-text);\n\t\t\tborder-color: transparent;\n\t\t\topacity: 1;\n\t\t\tborder-radius: 0;\n\t\t}\n\n\t\t&--multiline {\n\t\t\tmin-height: $clickable-area * 3;\n\t\t\t// No max for mutiline\n\t\t\tmax-height: none;\n\t\t}\n\n\t\t&--disabled {\n\t\t\topacity: $opacity_disabled;\n\t\t\tcolor: var(--color-text-maxcontrast);\n\t\t\tborder: 2px solid var(--color-background-darker);\n\t\t\tborder-radius: var(--border-radius);\n\t\t\tbackground-color: var(--color-background-dark);\n\t\t}\n\t}\n}\n\n</style>\n\n<style lang=\"scss\">\n.tribute-container, .tribute-container-emoji, .tribute-container-link {\n\tz-index: 9000;\n\toverflow: auto;\n\tmin-width: 250px;\n\tmax-width: 300px;\n\t// Show maximum 4 entries and a half to show scroll\n\t// 44px + 10px padding\n\tmax-height: ($clickable-area + 20px) * 4.5;\n\t// Space it out a bit from the text\n\tmargin: 5px 0;\n\tcolor: var(--color-main-text);\n\tborder-radius: var(--border-radius);\n\tbackground: var(--color-main-background);\n\tbox-shadow: 0 1px 5px var(--color-box-shadow);\n}\n\n.tribute-container-emoji, .tribute-container-link {\n\tmin-width: 200px;\n\tmax-width: 200px;\n\tpadding: 4px;\n\t// Show maximum 5 entries and a half to show scroll\n\tmax-height: 35px * 5 + math.div(35px, 2) !important;\n\n\t&__item {\n\t\tborder-radius: 8px;\n\t\tpadding: 4px 8px;\n\t\tmargin-bottom: 4px;\n\t\topacity: 0.8;\n\t\tcursor: pointer;\n\n\t\t// Take care of long names\n\t\twhite-space: nowrap;\n\t\toverflow: hidden;\n\t\ttext-overflow: ellipsis;\n\n\t\t&:last-child {\n\t\t\tmargin-bottom: 0;\n\t\t}\n\n\t\t&__emoji {\n\t\t\tpadding-right: 8px;\n\t\t}\n\t}\n\n\t.highlight {\n\t\topacity: 1;\n\t\tcolor: var(--color-primary-element-light-text);\n\t\tbackground: var(--color-primary-element-light);\n\t\t&, * {\n\t\t\tcursor: pointer;\n\t\t}\n\t}\n}\n\n.tribute-container-link {\n\tmin-width: 200px;\n\tmax-width: 300px;\n\t&__item {\n\t\tdisplay: flex;\n\t\talign-items: center;\n\t\t&__title {\n\t\t\twhite-space: nowrap;\n\t\t\toverflow: hidden;\n\t\t\ttext-overflow: ellipsis;\n\t\t}\n\t\t&__icon {\n\t\t\tmargin: auto 0;\n\t\t\twidth: 20px;\n\t\t\theight: 20px;\n\t\t\tobject-fit: contain;\n\t\t\tpadding-right: 8px;\n\t\t\tfilter: var(--background-invert-if-dark);\n\t\t}\n\t}\n}\n\n</style>\n"],"names":["_sfc_main$1","NcUserStatusIcon","generateUrl","_hoisted_1$1","_hoisted_3","_hoisted_4","openBlock","createElementBlock","normalizeClass","$props","$options","normalizeStyle","_hoisted_2$1","toDisplayString","createCommentVNode","createElementVNode","_sfc_main","VTooltip","richEditor","GenRandomId","result","item","NcAutoCompleteResult","t","text","cb","emojiResults","emojiSearch","searchProvider","html","smilesCharacters","char","Tribute","getLinkWithPicker","tmpElem","eventData","newElem","error","range","selection","event","clipboardData","newRange","htmlOrText","value","renderedContent","node","curRange","search","callback","_hoisted_1","_hoisted_2","_ctx","withDirectives","mergeProps","$data","_cache","args","$event","withKeys","withModifiers"],"mappings":"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"}
1
+ {"version":3,"file":"NcRichContenteditable-L8aEJNGb.cjs","sources":["../../src/components/NcRichContenteditable/NcAutoCompleteResult.vue","../../src/components/NcRichContenteditable/NcRichContenteditable.vue"],"sourcesContent":["<!--\n - @copyright Copyright (c) 2020 John Molakvoæ <skjnldsv@protonmail.com>\n -\n - @author John Molakvoæ <skjnldsv@protonmail.com>\n -\n - @license GNU AGPL version 3 or any later version\n -\n - This program is free software: you can redistribute it and/or modify\n - it under the terms of the GNU Affero General Public License as\n - published by the Free Software Foundation, either version 3 of the\n - License, or (at your option) any later version.\n -\n - This program is distributed in the hope that it will be useful,\n - but WITHOUT ANY WARRANTY; without even the implied warranty of\n - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n - GNU Affero General Public License for more details.\n -\n - You should have received a copy of the GNU Affero General Public License\n - along with this program. If not, see <http://www.gnu.org/licenses/>.\n-->\n\n<template>\n\t<div class=\"autocomplete-result\">\n\t\t<!-- Avatar or icon -->\n\t\t<div :class=\"[icon, `autocomplete-result__icon--${avatarUrl ? 'with-avatar' : ''}`]\"\n\t\t\t:style=\"avatarUrl ? { backgroundImage: `url(${avatarUrl})` } : null \"\n\t\t\tclass=\"autocomplete-result__icon\">\n\t\t\t<span v-if=\"status.icon\"\n\t\t\t\tclass=\"autocomplete-result__status autocomplete-result__status--icon\">\n\t\t\t\t{{ status && status.icon || '' }}\n\t\t\t</span>\n\t\t\t<NcUserStatusIcon v-else-if=\"status.status && status.status !== 'offline'\"\n\t\t\t\tclass=\"autocomplete-result__status\"\n\t\t\t\t:status=\"status.status\" />\n\t\t</div>\n\n\t\t<!-- Title and subline -->\n\t\t<span class=\"autocomplete-result__content\">\n\t\t\t<span class=\"autocomplete-result__title\" :title=\"title\">\n\t\t\t\t{{ title }}\n\t\t\t</span>\n\t\t\t<span v-if=\"subline\" class=\"autocomplete-result__subline\">\n\t\t\t\t{{ subline }}\n\t\t\t</span>\n\t\t</span>\n\t</div>\n</template>\n\n<script>\nimport { generateUrl } from '@nextcloud/router'\n\nimport NcUserStatusIcon from '../NcUserStatusIcon/index.js'\n\nexport default {\n\tname: 'NcAutoCompleteResult',\n\n\tcomponents: {\n\t\tNcUserStatusIcon,\n\t},\n\n\tprops: {\n\t\ttitle: {\n\t\t\ttype: String,\n\t\t\trequired: true,\n\t\t},\n\t\tsubline: {\n\t\t\ttype: String,\n\t\t\tdefault: null,\n\t\t},\n\t\tid: {\n\t\t\ttype: String,\n\t\t\tdefault: null,\n\t\t},\n\t\ticon: {\n\t\t\ttype: String,\n\t\t\trequired: true,\n\t\t},\n\t\ticonUrl: {\n\t\t\ttype: String,\n\t\t\tdefault: null,\n\t\t},\n\t\tsource: {\n\t\t\ttype: String,\n\t\t\trequired: true,\n\t\t},\n\t\tstatus: {\n\t\t\ttype: [Object, Array],\n\t\t\tdefault: () => ({}),\n\t\t},\n\t},\n\tcomputed: {\n\t\tavatarUrl() {\n\t\t\tif (this.iconUrl) {\n\t\t\t\treturn this.iconUrl\n\t\t\t}\n\n\t\t\treturn this.id && this.source === 'users'\n\t\t\t\t? this.getAvatarUrl(this.id, 44)\n\t\t\t\t: null\n\t\t},\n\t},\n\n\tmethods: {\n\t\tgetAvatarUrl(user, size) {\n\t\t\treturn generateUrl('/avatar/{user}/{size}', {\n\t\t\t\tuser,\n\t\t\t\tsize,\n\t\t\t})\n\t\t},\n\t},\n}\n</script>\n\n<style lang=\"scss\" scoped>\n$autocomplete-padding: 10px;\n\n.autocomplete-result {\n\tdisplay: flex;\n\theight: $clickable-area;\n\tpadding: $autocomplete-padding;\n\n\t.highlight & {\n\t\tcolor: var(--color-primary-element-light-text);\n\t\tbackground: var(--color-primary-element-light);\n\t\t&, * {\n\t\t\tcursor: pointer;\n\t\t}\n\t}\n\n\t&__icon {\n\t\tposition: relative;\n\t\tflex: 0 0 $clickable-area;\n\t\twidth: $clickable-area;\n\t\tmin-width: $clickable-area;\n\t\theight: $clickable-area;\n\t\tborder-radius: $clickable-area;\n\t\tbackground-color: var(--color-background-darker);\n\t\tbackground-repeat: no-repeat;\n\t\tbackground-position: center;\n\t\tbackground-size: $clickable-area - 2 * $autocomplete-padding;\n\t\t&--with-avatar {\n\t\t\tcolor: inherit;\n\t\t\tbackground-size: cover;\n\t\t}\n\t}\n\n\t&__status {\n\t\tbox-sizing: border-box;\n\t\tposition: absolute;\n\t\tright: -4px;\n\t\tbottom: -4px;\n\t\tmin-width: 18px;\n\t\tmin-height: 18px;\n\t\twidth: 18px;\n\t\theight: 18px;\n\t\tborder: 2px solid var(--color-main-background);\n\t\tborder-radius: 50%;\n\t\tbackground-color: var(--color-main-background);\n\t\tfont-size: var(--default-font-size);\n\t\tline-height: 15px;\n\t\tbackground-repeat: no-repeat;\n\t\tbackground-size: 16px;\n\t\tbackground-position: center;\n\n\t\t&--icon {\n\t\t\tborder: none;\n\t\t\tbackground-color: transparent;\n\t\t}\n\t}\n\n\t&__content {\n\t\tdisplay: flex;\n\t\tflex: 1 1 100%;\n\t\tflex-direction: column;\n\t\tjustify-content: center;\n\t\tmin-width: 0;\n\t\tpadding-left: $autocomplete-padding;\n\t}\n\n\t&__title,\n\t&__subline {\n\t\twhite-space: nowrap;\n\t\toverflow: hidden;\n\t\ttext-overflow: ellipsis;\n\t}\n\n\t&__subline {\n\t\tcolor: var(--color-text-maxcontrast);\n\t}\n}\n\n</style>\n","<!--\n - @copyright Copyright (c) 2020 John Molakvoæ <skjnldsv@protonmail.com>\n -\n - @author John Molakvoæ <skjnldsv@protonmail.com>\n -\n - @license GNU AGPL version 3 or any later version\n -\n - This program is free software: you can redistribute it and/or modify\n - it under the terms of the GNU Affero General Public License as\n - published by the Free Software Foundation, either version 3 of the\n - License, or (at your option) any later version.\n -\n - This program is distributed in the hope that it will be useful,\n - but WITHOUT ANY WARRANTY; without even the implied warranty of\n - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n - GNU Affero General Public License for more details.\n -\n - You should have received a copy of the GNU Affero General Public License\n - along with this program. If not, see <http://www.gnu.org/licenses/>.\n-->\n\n<docs>\n\n### General description\n\nThis component displays contenteditable div with automated `@` [at] autocompletion and `:` [colon] emoji autocompletion.\n\n### Examples\n\nTry mentioning user @Test01 or inserting emoji :smile\n\n```vue\n<template>\n\t<div>\n\t\t<NcRichContenteditable\n\t\t\tlabel=\"Write a comment\"\n\t\t\tv-model=\"message\"\n\t\t\t:auto-complete=\"autoComplete\"\n\t\t\t:maxlength=\"100\"\n\t\t\t:user-data=\"userData\"\n\t\t\t@submit=\"onSubmit\" />\n\t\t<br>\n\n\t\t<NcRichContenteditable\n\t\t\tv-model=\"message\"\n\t\t\t:auto-complete=\"autoComplete\"\n\t\t\t:maxlength=\"400\"\n\t\t\t:multiline=\"true\"\n\t\t\t:user-data=\"userData\"\n\t\t\t@submit=\"onSubmit\" />\n\n\t\t<h5>Output - raw</h5>\n\t\t{{ JSON.stringify(message) }}\n\n\t\t<h5>Output - preformatted</h5>\n\t\t<p class=\"pre-line\">{{ message }}</p>\n\n\t\t<h5>Output - in NcRichText with markdown support</h5>\n\t\t<NcRichText :text=\"text\" :arguments=\"userMentions\" autolink use-markdown />\n\t</div>\n</template>\n<script>\nexport default {\n\tdata() {\n\t\treturn {\n\t\t\tmessage: '**Lorem ipsum** dolor sit amet.',\n\t\t\t// You need to provide this for the inline mention to understand what to display or not.\n\t\t\t// Key should be a string with leading '@', like @Test02 or @\"Test Offline\"\n\t\t\tuserData: {\n\t\t\t\tTest01: {\n\t\t\t\t\ticon: 'icon-user',\n\t\t\t\t\tid: 'Test01',\n\t\t\t\t\ttitle: 'Test01',\n\t\t\t\t\tsource: 'users',\n\t\t\t\t\tprimary: true,\n\t\t\t\t},\n\t\t\t\tTest02: {\n\t\t\t\t\ticon: 'icon-user',\n\t\t\t\t\tid: 'Test02',\n\t\t\t\t\ttitle: 'Test02',\n\t\t\t\t\tsource: 'users',\n\t\t\t\t\tstatus: {\n\t\t\t\t\t\tclearAt: null,\n\t\t\t\t\t\ticon: '🎡',\n\t\t\t\t\t\tmessage: 'Visiting London',\n\t\t\t\t\t\tstatus: 'away',\n\t\t\t\t\t},\n\t\t\t\t\tsubline: 'Visiting London',\n\t\t\t\t},\n\t\t\t\t'Test@User': {\n\t\t\t\t\ticon: 'icon-user',\n\t\t\t\t\tid: 'Test@User',\n\t\t\t\t\ttitle: 'Test 03',\n\t\t\t\t\tsource: 'users',\n\t\t\t\t\tstatus: {\n\t\t\t\t\t\tclearAt: null,\n\t\t\t\t\t\ticon: '🎡',\n\t\t\t\t\t\tmessage: 'Having space in my name',\n\t\t\t\t\t\tstatus: 'online',\n\t\t\t\t\t},\n\t\t\t\t\tsubline: 'Visiting London',\n\t\t\t\t},\n\t\t\t\t'Test Offline': {\n\t\t\t\t\ticon: 'icon-user',\n\t\t\t\t\tid: 'Test Offline',\n\t\t\t\t\ttitle: 'Test Offline',\n\t\t\t\t\tsource: 'users',\n\t\t\t\t\tstatus: {\n\t\t\t\t\t\tclearAt: null,\n\t\t\t\t\t\ticon: null,\n\t\t\t\t\t\tmessage: null,\n\t\t\t\t\t\tstatus: 'offline',\n\t\t\t\t\t},\n\t\t\t\t\tsubline: null,\n\t\t\t\t},\n\t\t\t\t'Test DND': {\n\t\t\t\t\ticon: 'icon-user',\n\t\t\t\t\tid: 'Test DND',\n\t\t\t\t\ttitle: 'Test DND',\n\t\t\t\t\tsource: 'users',\n\t\t\t\t\tstatus: {\n\t\t\t\t\t\tclearAt: null,\n\t\t\t\t\t\ticon: null,\n\t\t\t\t\t\tmessage: 'Out sick',\n\t\t\t\t\t\tstatus: 'dnd',\n\t\t\t\t\t},\n\t\t\t\t\tsubline: 'Out sick',\n\t\t\t\t},\n\t\t\t},\n\t\t\t// To display user bubbles in NcRichText, special format of data should be provided:\n\t\t\t// Key should be in curly brackets without '@' and ' ' symbols, like {user-2}\n\t\t\tuserMentions: {\n\t\t\t\t'user-1': {\n\t\t\t\t\tcomponent: 'NcUserBubble',\n\t\t\t\t\tprops: {\n\t\t\t\t\t\tdisplayName: 'Test01',\n\t\t\t\t\t\tuser: 'Test01',\n\t\t\t\t\t\tprimary: true,\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\t'user-2': {\n\t\t\t\t\tcomponent: 'NcUserBubble',\n\t\t\t\t\tprops: {\n\t\t\t\t\t\tdisplayName: 'Test02',\n\t\t\t\t\t\tuser: 'Test02',\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\t'user-3': {\n\t\t\t\t\tcomponent: 'NcUserBubble',\n\t\t\t\t\tprops: {\n\t\t\t\t\t\tdisplayName: 'Test 03',\n\t\t\t\t\t\tuser: 'Test@User',\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\t'user-4': {\n\t\t\t\t\tcomponent: 'NcUserBubble',\n\t\t\t\t\tprops: {\n\t\t\t\t\t\tdisplayName: 'Test Offline',\n\t\t\t\t\t\tuser: 'Test Offline',\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\t'user-5': {\n\t\t\t\t\tcomponent: 'NcUserBubble',\n\t\t\t\t\tprops: {\n\t\t\t\t\t\tdisplayName: 'Test DND',\n\t\t\t\t\t\tuser: 'Test DND',\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t}\n\t\t}\n\t},\n\tcomputed: {\n\t\ttext() {\n\t\t\treturn this.message\n\t\t\t\t\t.replace('@Test01', '{user-1}')\n\t\t\t\t\t.replace('@Test02', '{user-2}')\n\t\t\t\t\t.replace('@Test@User', '{user-3}')\n\t\t\t\t\t.replace('@\"Test Offline\"', '{user-4}')\n\t\t\t\t\t.replace('@\"Test DND\"', '{user-5}')\n\t\t},\n\t},\n\tmethods: {\n\t\t/**\n\t\t* Do your own query to the autocompletion api.\n\t\t* The returned data bellow is a fake data example.\n\t\t* The callback expects the same format returned by the core/autocomplete/get ocs api endpoint!\n\t\t* @see userData example above\n\t\t*\n\t\t* @param {string} search the query\n\t\t* @param {Function} callback the callback to process the results with\n\t\t*/\n\t\tautoComplete(search, callback) {\n\t\t\tcallback(Object.values(this.userData))\n\t\t},\n\t\tonSubmit() {\n\t\t\talert(this.message)\n\t\t}\n\t}\n}\n</script>\n<style lang=\"scss\" scoped>\n\th5 {\n\t\tfont-weight: bold;\n\t\tmargin: 40px 0 20px 0;\n\t}\n\n\t.pre-line {\n\t\twhite-space: pre-line;\n\t}\n</style>\n```\n\n</docs>\n\n<template>\n\t<div class=\"rich-contenteditable\" :class=\"$props.class\">\n\t\t<div :id=\"id\"\n\t\t\tref=\"contenteditable\"\n\t\t\tv-tooltip=\"tooltipString\"\n\t\t\t:class=\"{\n\t\t\t\t'rich-contenteditable__input--empty': isEmptyValue,\n\t\t\t\t'rich-contenteditable__input--multiline': multiline,\n\t\t\t\t'rich-contenteditable__input--has-label': label,\n\t\t\t\t'rich-contenteditable__input--overflow': isOverMaxlength,\n\t\t\t\t'rich-contenteditable__input--disabled': disabled,\n\t\t\t}\"\n\t\t\t:contenteditable=\"canEdit\"\n\t\t\t:aria-labelledby=\"label ? labelId : undefined\"\n\t\t\t:aria-placeholder=\"placeholder\"\n\t\t\taria-multiline=\"true\"\n\t\t\tclass=\"rich-contenteditable__input\"\n\t\t\trole=\"textbox\"\n\t\t\tv-bind=\"$attrs\"\n\t\t\t@focus=\"moveCursorToEnd\"\n\t\t\t@input=\"onInput\"\n\t\t\t@compositionstart=\"isComposing = true\"\n\t\t\t@compositionend=\"isComposing = false\"\n\t\t\t@keydown.delete=\"onDelete\"\n\t\t\t@keydown.enter.exact=\"onEnter\"\n\t\t\t@keydown.ctrl.enter.exact.stop.prevent=\"onCtrlEnter\"\n\t\t\t@paste=\"onPaste\"\n\t\t\t@keyup.stop.prevent.capture=\"onKeyUp\" />\n\t\t<div v-if=\"label\"\n\t\t\t:id=\"labelId\"\n\t\t\tclass=\"rich-contenteditable__label\">\n\t\t\t{{ label }}\n\t\t</div>\n\t</div>\n</template>\n\n<script>\nimport { t } from '../../l10n.js'\nimport NcAutoCompleteResult from './NcAutoCompleteResult.vue'\nimport richEditor from '../../mixins/richEditor/index.js'\nimport Tooltip from '../../directives/Tooltip/index.js'\nimport { emojiSearch, emojiAddRecent } from '../../functions/emoji/index.ts'\nimport { searchProvider, getLinkWithPicker } from '../NcRichText/index.js'\n\nimport Tribute from 'tributejs/dist/tribute.esm.js'\nimport debounce from 'debounce'\nimport stringLength from 'string-length'\nimport GenRandomId from '../../utils/GenRandomId.js'\n\nexport default {\n\tname: 'NcRichContenteditable',\n\n\tdirectives: {\n\t\ttooltip: Tooltip,\n\t},\n\n\tmixins: [richEditor],\n\n\tinheritAttrs: false,\n\n\tprops: {\n\t\t/**\n\t\t * The ID attribute of the content editable\n\t\t */\n\t\tid: {\n\t\t\ttype: String,\n\t\t\tdefault: () => GenRandomId(7),\n\t\t},\n\n\t\t/**\n\t\t * Visual label of the contenteditable\n\t\t */\n\t\tlabel: {\n\t\t\ttype: String,\n\t\t\tdefault: '',\n\t\t},\n\n\t\tmodelValue: {\n\t\t\ttype: String,\n\t\t\tdefault: '',\n\t\t\trequired: true,\n\t\t},\n\n\t\tplaceholder: {\n\t\t\ttype: String,\n\t\t\tdefault: t('Write a message …'),\n\t\t},\n\n\t\tautoComplete: {\n\t\t\ttype: Function,\n\t\t\tdefault: () => [],\n\t\t},\n\n\t\tmenuContainer: {\n\t\t\ttype: Element,\n\t\t\tdefault: () => document.body,\n\t\t},\n\n\t\t/**\n\t\t * Make the contenteditable looks like a textarea or not.\n\t\t * Default looks like a single-line input.\n\t\t * This also handle the default enter/shift+enter behaviour.\n\t\t * if multiline, enter = newline; otherwise enter = submit\n\t\t * shift+enter always add a new line. ctrl+enter always submits\n\t\t */\n\t\tmultiline: {\n\t\t\ttype: Boolean,\n\t\t\tdefault: false,\n\t\t},\n\n\t\t/**\n\t\t * Is the content editable ?\n\t\t */\n\t\tcontenteditable: {\n\t\t\ttype: Boolean,\n\t\t\tdefault: true,\n\t\t},\n\n\t\t/**\n\t\t * Disable the editing and show specific disabled design\n\t\t */\n\t\tdisabled: {\n\t\t\ttype: Boolean,\n\t\t\tdefault: false,\n\t\t},\n\n\t\t/**\n\t\t * Max allowed length\n\t\t */\n\t\tmaxlength: {\n\t\t\ttype: Number,\n\t\t\tdefault: null,\n\t\t},\n\n\t\t/**\n\t\t * Enable or disable emoji autocompletion\n\t\t */\n\t\temojiAutocomplete: {\n\t\t\ttype: Boolean,\n\t\t\tdefault: true,\n\t\t},\n\n\t\t/**\n\t\t * Enable or disable link autocompletion\n\t\t */\n\t\tlinkAutocomplete: {\n\t\t\ttype: Boolean,\n\t\t\tdefault: true,\n\t\t},\n\n\t\t/**\n\t\t * CSS class to apply to the root element.\n\t\t */\n\t\tclass: {\n\t\t\ttype: [String, Array, Object],\n\t\t\tdefault: '',\n\t\t},\n\t},\n\n\temits: [\n\t\t'submit',\n\t\t'paste',\n\t\t'update:modelValue',\n\t\t'smart-picker-submit',\n\t],\n\n\tdata() {\n\t\treturn {\n\t\t\tlabelId: `rich-label-${GenRandomId(5)}`,\n\t\t\ttextSmiles: [],\n\t\t\ttribute: null,\n\t\t\tautocompleteOptions: {\n\t\t\t\t// Allow spaces in the middle of mentions\n\t\t\t\tallowSpaces: true,\n\t\t\t\tfillAttr: 'id',\n\t\t\t\t// Search against id and title (display name)\n\t\t\t\tlookup: result => `${result.id} ${result.title}`,\n\t\t\t\t// Where to inject the menu popup\n\t\t\t\tmenuContainer: this.menuContainer,\n\t\t\t\t// Popup mention autocompletion templates\n\t\t\t\tmenuItemTemplate: item => this.renderComponentHtml(item.original, NcAutoCompleteResult),\n\t\t\t\t// Hide if no results\n\t\t\t\tnoMatchTemplate: () => '<span class=\"hidden\"></span>',\n\t\t\t\t// Inner display of mentions\n\t\t\t\tselectTemplate: item => this.genSelectTemplate(item?.original?.id),\n\t\t\t\t// Autocompletion results\n\t\t\t\tvalues: this.debouncedAutoComplete,\n\t\t\t},\n\t\t\temojiOptions: {\n\t\t\t\ttrigger: ':',\n\t\t\t\t// Don't use the tribute search function at all\n\t\t\t\t// We pass search results as values (see below)\n\t\t\t\tlookup: (result, query) => query,\n\t\t\t\t// Where to inject the menu popup\n\t\t\t\tmenuContainer: this.menuContainer,\n\t\t\t\t// Popup mention autocompletion templates\n\t\t\t\tmenuItemTemplate: item => {\n\t\t\t\t\tif (this.textSmiles.includes(item.original)) {\n\t\t\t\t\t\t// Display the raw text string for :), :-D, … for non emoji results,\n\t\t\t\t\t\t// instead of trying to show an image and their name.\n\t\t\t\t\t\treturn item.original\n\t\t\t\t\t}\n\n\t\t\t\t\treturn `<span class=\"tribute-container-emoji__item__emoji\">${item.original.native}</span> :${item.original.short_name}`\n\t\t\t\t},\n\t\t\t\t// Hide if no results\n\t\t\t\tnoMatchTemplate: () => t('No emoji found'),\n\t\t\t\t// Display raw emoji along with its name\n\t\t\t\tselectTemplate: (item) => {\n\t\t\t\t\tif (this.textSmiles.includes(item.original)) {\n\t\t\t\t\t\t// Replace the selection with the raw text string for :), :-D, … for non emoji results\n\t\t\t\t\t\treturn item.original\n\t\t\t\t\t}\n\n\t\t\t\t\temojiAddRecent(item.original)\n\t\t\t\t\treturn item.original.native\n\t\t\t\t},\n\t\t\t\t// Pass the search results as values\n\t\t\t\tvalues: (text, cb) => {\n\t\t\t\t\tconst emojiResults = emojiSearch(text)\n\t\t\t\t\tif (this.textSmiles.includes(':' + text)) {\n\t\t\t\t\t\t/**\n\t\t\t\t\t\t * Prepend text smiles to the search results so that Tribute\n\t\t\t\t\t\t * is not interfering with normal writing, aka. \"Cocos Island Meme\".\n\t\t\t\t\t\t * E.g. `:)` and `:-)` got replaced by the flag of Cocos Island,\n\t\t\t\t\t\t * when submitting the input with Enter after writing them\n\t\t\t\t\t\t */\n\t\t\t\t\t\temojiResults.unshift(':' + text)\n\t\t\t\t\t}\n\t\t\t\t\tcb(emojiResults)\n\t\t\t\t},\n\t\t\t\t// Class added to the menu container\n\t\t\t\tcontainerClass: 'tribute-container-emoji',\n\t\t\t\t// Class added to each list item\n\t\t\t\titemClass: 'tribute-container-emoji__item',\n\t\t\t},\n\t\t\tlinkOptions: {\n\t\t\t\ttrigger: '/',\n\t\t\t\t// Don't use the tribute search function at all\n\t\t\t\t// We pass search results as values (see below)\n\t\t\t\tlookup: (result, query) => query,\n\t\t\t\t// Where to inject the menu popup\n\t\t\t\tmenuContainer: this.menuContainer,\n\t\t\t\t// Popup mention autocompletion templates\n\t\t\t\tmenuItemTemplate: item => `<img class=\"tribute-container-link__item__icon\" src=\"${item.original.icon_url}\"> <span class=\"tribute-container-link__item__title\">${item.original.title}</span>`,\n\t\t\t\t// Hide if no results\n\t\t\t\tnoMatchTemplate: () => t('No link provider found'),\n\t\t\t\tselectTemplate: this.getLink,\n\t\t\t\t// Pass the search results as values\n\t\t\t\tvalues: (text, cb) => cb(searchProvider(text)),\n\t\t\t\t// Class added to the menu container\n\t\t\t\tcontainerClass: 'tribute-container-link',\n\t\t\t\t// Class added to each list item\n\t\t\t\titemClass: 'tribute-container-link__item',\n\t\t\t},\n\n\t\t\t// Represent the raw untrimmed text of the contenteditable\n\t\t\t// serves no other purpose than to check whether the\n\t\t\t// content is empty or not\n\t\t\tlocalValue: this.modelValue,\n\n\t\t\t// Is in text composition session in IME\n\t\t\tisComposing: false,\n\t\t}\n\t},\n\n\tcomputed: {\n\t\t/**\n\t\t * Is the current trimmed value empty?\n\t\t *\n\t\t * @return {boolean}\n\t\t */\n\t\tisEmptyValue() {\n\t\t\treturn !this.localValue || this.localValue.trim() === ''\n\t\t},\n\n\t\t/**\n\t\t * Is this Firefox? 🙄\n\t\t *\n\t\t * @return {boolean}\n\t\t */\n\t\tisFF() {\n\t\t\treturn !!navigator.userAgent.match(/firefox/i)\n\t\t},\n\n\t\t/**\n\t\t * Is the current value over maxlength?\n\t\t *\n\t\t * @return {boolean}\n\t\t */\n\t\tisOverMaxlength() {\n\t\t\tif (this.isEmptyValue || !this.maxlength) {\n\t\t\t\treturn false\n\t\t\t}\n\t\t\treturn stringLength(this.localValue) > this.maxlength\n\t\t},\n\n\t\t/**\n\t\t * Tooltip to show if characters count is over limit\n\t\t *\n\t\t * @return {string}\n\t\t */\n\t\ttooltipString() {\n\t\t\tif (!this.isOverMaxlength) {\n\t\t\t\treturn null\n\t\t\t}\n\t\t\treturn {\n\t\t\t\tcontent: t('Message limit of {count} characters reached', { count: this.maxlength }),\n\t\t\t\tshown: true,\n\t\t\t\ttrigger: 'manual',\n\t\t\t}\n\t\t},\n\n\t\t/**\n\t\t * Edit is only allowed when contenteditableis true and disabled is false\n\t\t *\n\t\t * @return {boolean}\n\t\t */\n\t\tcanEdit() {\n\t\t\treturn this.contenteditable && !this.disabled\n\t\t},\n\t},\n\n\twatch: {\n\t\t/**\n\t\t * If the parent value change, we compare the plain text rendering\n\t\t * If it's different, we render everything and update the main content\n\t\t */\n\t\tmodelValue() {\n\t\t\tconst html = this.$refs.contenteditable.innerHTML\n\t\t\t// Compare trimmed versions to be safe\n\t\t\tif (this.modelValue.trim() !== this.parseContent(html).trim()) {\n\t\t\t\tthis.updateContent(this.modelValue)\n\t\t\t}\n\t\t},\n\t},\n\n\tmounted() {\n\t\t/**\n\t\t * Populate the list of text smiles we want to offer via Tribute.\n\t\t * We add the colon `:)` and colon-dash `:-)` version for each of them.\n\t\t */\n\t\tconst smilesCharacters = ['d', 'D', 'p', 'P', 's', 'S', 'x', 'X', ')', '(', '|', '/']\n\t\tthis.textSmiles = []\n\t\tsmilesCharacters.forEach((char) => {\n\t\t\tthis.textSmiles.push(':' + char)\n\t\t\tthis.textSmiles.push(':-' + char)\n\t\t})\n\n\t\tthis.autocompleteTribute = new Tribute(this.autocompleteOptions)\n\t\tthis.autocompleteTribute.attach(this.$refs.contenteditable)\n\n\t\tif (this.emojiAutocomplete) {\n\t\t\tthis.emojiTribute = new Tribute(this.emojiOptions)\n\t\t\tthis.emojiTribute.attach(this.$refs.contenteditable)\n\t\t}\n\n\t\tif (this.linkAutocomplete) {\n\t\t\tthis.linkTribute = new Tribute(this.linkOptions)\n\t\t\tthis.linkTribute.attach(this.$refs.contenteditable)\n\t\t}\n\n\t\t// Update default value\n\t\tthis.updateContent(this.modelValue)\n\n\t\t// Removes the contenteditable attribute at first load if the prop is\n\t\t// set to false.\n\t\tthis.$refs.contenteditable.contentEditable = this.canEdit\n\t},\n\tbeforeUnmount() {\n\t\tif (this.autocompleteTribute) {\n\t\t\tthis.autocompleteTribute.detach(this.$refs.contenteditable)\n\t\t}\n\t\tif (this.emojiTribute) {\n\t\t\tthis.emojiTribute.detach(this.$refs.contenteditable)\n\t\t}\n\t\tif (this.linkTribute) {\n\t\t\tthis.linkTribute.detach(this.$refs.contenteditable)\n\t\t}\n\t},\n\n\tmethods: {\n\t\t/**\n\t\t * Focus the richContenteditable\n\t\t *\n\t\t * @public\n\t\t */\n\t\tfocus() {\n\t\t\tthis.$refs.contenteditable.focus()\n\t\t},\n\n\t\tgetLink(item) {\n\t\t\t// there is no way to get a tribute result asynchronously\n\t\t\t// so we immediately insert a node and replace it when the result comes\n\t\t\tgetLinkWithPicker(item.original.id)\n\t\t\t\t.then(result => {\n\t\t\t\t\t// replace dummy temp element by a text node which contains the picker result\n\t\t\t\t\tconst tmpElem = document.getElementById('tmp-smart-picker-result-node')\n\t\t\t\t\tconst eventData = {\n\t\t\t\t\t\tresult,\n\t\t\t\t\t\tinsertText: true,\n\t\t\t\t\t}\n\t\t\t\t\tthis.$emit('smart-picker-submit', eventData)\n\t\t\t\t\tif (eventData.insertText) {\n\t\t\t\t\t\tconst newElem = document.createTextNode(result)\n\t\t\t\t\t\ttmpElem.replaceWith(newElem)\n\t\t\t\t\t\tthis.setCursorAfter(newElem)\n\t\t\t\t\t\tthis.updateValue(this.$refs.contenteditable.innerHTML)\n\t\t\t\t\t} else {\n\t\t\t\t\t\ttmpElem.remove()\n\t\t\t\t\t}\n\t\t\t\t})\n\t\t\t\t.catch((error) => {\n\t\t\t\t\tconsole.debug('Smart picker promise rejected:', error)\n\t\t\t\t\tconst tmpElem = document.getElementById('tmp-smart-picker-result-node')\n\t\t\t\t\tthis.setCursorAfter(tmpElem)\n\t\t\t\t\ttmpElem.remove()\n\t\t\t\t})\n\t\t\treturn '<span id=\"tmp-smart-picker-result-node\"></span>'\n\t\t},\n\t\tsetCursorAfter(element) {\n\t\t\tconst range = document.createRange()\n\t\t\trange.setEndAfter(element)\n\t\t\trange.collapse()\n\t\t\tconst selection = window.getSelection()\n\t\t\tselection.removeAllRanges()\n\t\t\tselection.addRange(range)\n\t\t},\n\t\tmoveCursorToEnd() {\n\t\t\tif (!document.createRange) {\n\t\t\t\treturn\n\t\t\t}\n\t\t\tconst range = document.createRange()\n\t\t\trange.selectNodeContents(this.$refs.contenteditable)\n\t\t\trange.collapse(false)\n\t\t\tconst selection = window.getSelection()\n\t\t\tselection.removeAllRanges()\n\t\t\tselection.addRange(range)\n\t\t},\n\t\t/**\n\t\t * Re-emit the input event to the parent\n\t\t *\n\t\t * @param {Event} event the input event\n\t\t */\n\t\tonInput(event) {\n\t\t\tthis.updateValue(event.target.innerHTML)\n\t\t},\n\n\t\t/**\n\t\t * When pasting, sanitize the content, extract text\n\t\t * and render it again\n\t\t *\n\t\t * @param {Event} event the paste event\n\t\t * @fires Event paste the original paste event\n\t\t */\n\t\tonPaste(event) {\n\t\t\t// Either disabled or edit deactivated\n\t\t\tif (!this.canEdit) {\n\t\t\t\treturn\n\t\t\t}\n\n\t\t\tevent.preventDefault()\n\t\t\tconst clipboardData = event.clipboardData\n\n\t\t\t/** The original paste event */\n\t\t\tthis.$emit('paste', event)\n\n\t\t\t// If we have a file or if we don't have any text, ignore\n\t\t\tif (clipboardData.files.length !== 0\n\t\t\t\t|| !Object.values(clipboardData.items).find(item => item?.type.startsWith('text'))) {\n\t\t\t\treturn\n\t\t\t}\n\n\t\t\tconst text = clipboardData.getData('text')\n\t\t\tconst selection = window.getSelection()\n\n\t\t\t// If no selection, replace the whole data\n\t\t\tif (!selection.rangeCount) {\n\t\t\t\tthis.updateValue(text)\n\t\t\t\treturn\n\t\t\t}\n\n\t\t\t// Generate text and insert\n\t\t\tconst range = selection.getRangeAt(0)\n\t\t\tselection.deleteFromDocument()\n\t\t\trange.insertNode(document.createTextNode(text))\n\n\t\t\t// Put cursor at the end of the selection\n\t\t\tconst newRange = document.createRange()\n\t\t\tnewRange.setStart(event.target, range.endOffset)\n\t\t\tnewRange.collapse(true)\n\t\t\tselection.removeAllRanges()\n\t\t\tselection.addRange(newRange)\n\n\t\t\t// Propagate data\n\t\t\tthis.updateValue(this.$refs.contenteditable.innerHTML)\n\t\t},\n\n\t\t/**\n\t\t * Update the value text from the provided html\n\t\t *\n\t\t * @param {string} htmlOrText the html content (or raw text with @mentions)\n\t\t */\n\t\tupdateValue(htmlOrText) {\n\t\t\tconst text = this.parseContent(htmlOrText)\n\t\t\tthis.localValue = text\n\t\t\tthis.$emit('update:modelValue', text)\n\t\t},\n\n\t\t/**\n\t\t * Update content and local value\n\t\t *\n\t\t * @param {string} value the message value\n\t\t */\n\t\tupdateContent(value) {\n\t\t\tconst renderedContent = this.renderContent(value)\n\t\t\tthis.$refs.contenteditable.innerHTML = renderedContent\n\t\t\tthis.localValue = value\n\t\t},\n\n\t\t/**\n\t\t * Because FF have a decade old bug preventing contenteditable=false\n\t\t * to properly be deleted on backspace, we have to hack 👀\n\t\t * https://stackoverflow.com/a/59383394/3885878\n\t\t * https://stackoverflow.com/a/30574622\n\t\t *\n\t\t * @param {Event} event the delete keydown event\n\t\t */\n\t\tonDelete(event) {\n\t\t\tif (!this.isFF || !window.getSelection) {\n\t\t\t\treturn\n\t\t\t}\n\n\t\t\t// Either disabled or edit deactivated\n\t\t\tif (!this.canEdit) {\n\t\t\t\treturn\n\t\t\t}\n\n\t\t\t// fix backspace bug in FF\n\t\t\t// https://bugzilla.mozilla.org/show_bug.cgi?id=685445\n\t\t\t// https://bugzilla.mozilla.org/show_bug.cgi?id=1665167\n\t\t\tconst selection = window.getSelection()\n\t\t\tconst node = event.target\n\t\t\tif (!selection.isCollapsed || !selection.rangeCount) {\n\t\t\t\treturn\n\t\t\t}\n\n\t\t\tconst curRange = selection.getRangeAt(selection.rangeCount - 1)\n\t\t\tif (curRange.commonAncestorContainer.nodeType === 3 && curRange.startOffset > 0) {\n\t\t\t\t// we are in child selection. The characters of the text node is being deleted\n\t\t\t\treturn\n\t\t\t}\n\n\t\t\tconst range = document.createRange()\n\t\t\tif (selection.anchorNode !== node) {\n\t\t\t\t// selection is in character mode. expand it to the whole editable field\n\t\t\t\trange.selectNodeContents(node)\n\t\t\t\trange.setEndBefore(selection.anchorNode)\n\t\t\t} else if (selection.anchorOffset > 0) {\n\t\t\t\trange.setEnd(node, selection.anchorOffset)\n\t\t\t} else {\n\t\t\t\t// reached the beginning of editable field\n\t\t\t\treturn\n\t\t\t}\n\t\t\trange.setStart(node, range.endOffset - 1)\n\n\t\t\tconst previousNode = range.cloneContents().lastChild\n\t\t\tif (previousNode && previousNode.contentEditable === 'false') {\n\t\t\t\t// this is some rich content, e.g. smile. We should help the user to delete it\n\t\t\t\trange.deleteContents()\n\t\t\t\tevent.preventDefault()\n\t\t\t}\n\t\t},\n\t\t/**\n\t\t * Enter key pressed. Submits if not multiline\n\t\t *\n\t\t * @param {Event} event the keydown event\n\t\t */\n\t\tonEnter(event) {\n\t\t\t// Prevent submitting if multiline\n\t\t\t// or length is over maxlength\n\t\t\t// or autocompletion menu is opened\n\t\t\t// or in a text composition session with IME\n\t\t\tif (this.multiline\n\t\t\t\t|| this.isOverMaxlength\n\t\t\t\t|| this.autocompleteTribute.isActive || this.emojiTribute.isActive || this.linkTribute.isActive\n\t\t\t\t|| this.isComposing) {\n\t\t\t\treturn\n\t\t\t}\n\n\t\t\tevent.preventDefault()\n\t\t\tevent.stopPropagation()\n\t\t\tthis.$emit('submit', event)\n\t\t},\n\n\t\t/**\n\t\t * Ctrl + Enter key pressed is used to submit\n\t\t *\n\t\t * @param {Event} event the keydown event\n\t\t */\n\t\tonCtrlEnter(event) {\n\t\t\tif (this.isOverMaxlength) {\n\t\t\t\treturn\n\t\t\t}\n\t\t\tthis.$emit('submit', event)\n\t\t},\n\n\t\t/**\n\t\t * Debounce the autocomplete function\n\t\t */\n\t\tdebouncedAutoComplete: debounce(async function(search, callback) {\n\t\t\tthis.autoComplete(search, callback)\n\t\t}, 100),\n\n\t\tonKeyUp(event) {\n\t\t\t// prevent tribute from opening on keyup\n\t\t\tevent.stopImmediatePropagation()\n\t\t},\n\t},\n}\n</script>\n\n<style lang=\"scss\" scoped>\n// Standalone styling, independent from server\n.rich-contenteditable {\n\tposition: relative;\n\twidth: auto;\n\n\t&__label {\n\t\tposition: absolute;\n\t\tmargin-inline: 14px 0;\n\t\tmax-width: fit-content;\n\t\tinset-block-start: 11px;\n\t\tinset-inline: 0;\n\t\t// Fix color so that users do not think the input already has content\n\t\tcolor: var(--color-text-maxcontrast);\n\t\t// only one line labels are allowed\n\t\twhite-space: nowrap;\n\t\toverflow: hidden;\n\t\ttext-overflow: ellipsis;\n\t\t// forward events to input\n\t\tpointer-events: none;\n\t\t// Position transition\n\t\ttransition: height var(--animation-quick), inset-block-start var(--animation-quick), font-size var(--animation-quick), color var(--animation-quick), background-color var(--animation-quick) var(--animation-slow);\n\t}\n\n\t&__input:focus + &__label,\n\t&__input:not(&__input--empty) + &__label {\n\t\tinset-block-start: -10px;\n\t\tline-height: 1.5; // minimum allowed line height for accessibility\n\t\tfont-size: 13px; // minimum allowed font size for accessibility\n\t\tfont-weight: 500;\n\t\tborder-radius: var(--default-grid-baseline) var(--default-grid-baseline) 0 0;\n\t\tbackground-color: var(--color-main-background);\n\t\tpadding-inline: 5px;\n\t\tmargin-inline-start: 9px;\n\n\t\ttransition: height var(--animation-quick), inset-block-start var(--animation-quick), font-size var(--animation-quick), color var(--animation-quick);\n\t}\n\n\t&__input {\n\t\toverflow-y: auto;\n\t\twidth: auto;\n\t\tmargin: 0;\n\t\tpadding: 8px;\n\t\tcursor: text;\n\t\twhite-space: pre-wrap;\n\t\tword-break: break-word;\n\t\tcolor: var(--color-main-text);\n\t\tborder: 2px solid var(--color-border-maxcontrast);\n\t\tborder-radius: var(--border-radius-large);\n\t\toutline: none;\n\t\tbackground-color: var(--color-main-background);\n\t\tfont-family: var(--font-face);\n\t\tfont-size: inherit;\n\t\tmin-height: $clickable-area;\n\t\tmax-height: $clickable-area * 5.5;\n\n\t\t&--has-label {\n\t\t\tmargin-top: 10px;\n\t\t}\n\n\t\t// Cannot use :empty because of firefox bug https://bugzilla.mozilla.org/show_bug.cgi?id=1513303\n\t\t&--empty:focus:before,\n\t\t&--empty:not(&--has-label):before {\n\t\t\tcontent: attr(aria-placeholder);\n\t\t\tcolor: var(--color-text-maxcontrast);\n\t\t\tposition: absolute;\n\t\t}\n\n\t\t&[contenteditable='false']:not(&--disabled) {\n\t\t\tcursor: default;\n\t\t\tbackground-color: transparent;\n\t\t\tcolor: var(--color-main-text);\n\t\t\tborder-color: transparent;\n\t\t\topacity: 1;\n\t\t\tborder-radius: 0;\n\t\t}\n\n\t\t&--multiline {\n\t\t\tmin-height: $clickable-area * 3;\n\t\t\t// No max for mutiline\n\t\t\tmax-height: none;\n\t\t}\n\n\t\t&--disabled {\n\t\t\topacity: $opacity_disabled;\n\t\t\tcolor: var(--color-text-maxcontrast);\n\t\t\tborder: 2px solid var(--color-background-darker);\n\t\t\tborder-radius: var(--border-radius);\n\t\t\tbackground-color: var(--color-background-dark);\n\t\t}\n\t}\n}\n\n</style>\n\n<style lang=\"scss\">\n.tribute-container, .tribute-container-emoji, .tribute-container-link {\n\tz-index: 9000;\n\toverflow: auto;\n\tmin-width: 250px;\n\tmax-width: 300px;\n\t// Show maximum 4 entries and a half to show scroll\n\t// 44px + 10px padding\n\tmax-height: ($clickable-area + 20px) * 4.5;\n\t// Space it out a bit from the text\n\tmargin: 5px 0;\n\tcolor: var(--color-main-text);\n\tborder-radius: var(--border-radius);\n\tbackground: var(--color-main-background);\n\tbox-shadow: 0 1px 5px var(--color-box-shadow);\n}\n\n.tribute-container-emoji, .tribute-container-link {\n\tmin-width: 200px;\n\tmax-width: 200px;\n\tpadding: 4px;\n\t// Show maximum 5 entries and a half to show scroll\n\tmax-height: 35px * 5 + math.div(35px, 2) !important;\n\n\t&__item {\n\t\tborder-radius: 8px;\n\t\tpadding: 4px 8px;\n\t\tmargin-bottom: 4px;\n\t\topacity: 0.8;\n\t\tcursor: pointer;\n\n\t\t// Take care of long names\n\t\twhite-space: nowrap;\n\t\toverflow: hidden;\n\t\ttext-overflow: ellipsis;\n\n\t\t&:last-child {\n\t\t\tmargin-bottom: 0;\n\t\t}\n\n\t\t&__emoji {\n\t\t\tpadding-right: 8px;\n\t\t}\n\t}\n\n\t.highlight {\n\t\topacity: 1;\n\t\tcolor: var(--color-primary-element-light-text);\n\t\tbackground: var(--color-primary-element-light);\n\t\t&, * {\n\t\t\tcursor: pointer;\n\t\t}\n\t}\n}\n\n.tribute-container-link {\n\tmin-width: 200px;\n\tmax-width: 300px;\n\t&__item {\n\t\tdisplay: flex;\n\t\talign-items: center;\n\t\t&__title {\n\t\t\twhite-space: nowrap;\n\t\t\toverflow: hidden;\n\t\t\ttext-overflow: ellipsis;\n\t\t}\n\t\t&__icon {\n\t\t\tmargin: auto 0;\n\t\t\twidth: 20px;\n\t\t\theight: 20px;\n\t\t\tobject-fit: contain;\n\t\t\tpadding-right: 8px;\n\t\t\tfilter: var(--background-invert-if-dark);\n\t\t}\n\t}\n}\n\n</style>\n"],"names":["_sfc_main$1","NcUserStatusIcon","router","_hoisted_1$1","_hoisted_3","_hoisted_4","vue","$props","$options","_hoisted_2$1","_sfc_main","floatingVue","Mixins_richEditor","GenRandomId","result","item","NcAutoCompleteResult","_a","_l10n","text","cb","emojiResults","emoji","referencePickerModal","html","smilesCharacters","char","Tribute__default","tmpElem","eventData","newElem","error","range","selection","event","clipboardData","newRange","htmlOrText","value","renderedContent","node","curRange","search","callback","_hoisted_1","_hoisted_2","_ctx","$data","_cache","args","$event"],"mappings":"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"}
@@ -1,16 +1,16 @@
1
- import "../assets/NcRichContenteditable-nUZdQSMZ.css";
2
- import { r as v, v as y, B as T, a as c } from "./_l10n-JmazR_zZ.mjs";
1
+ import "../assets/NcRichContenteditable--bkjerM1.css";
2
+ import { r as v, v as y, B as T, a as c } from "./_l10n-uuAvfQgY.mjs";
3
3
  import { generateUrl as S } from "@nextcloud/router";
4
- import { N as k } from "./NcUserStatusIcon--z2VUZIt.mjs";
5
- import { resolveComponent as E, openBlock as a, createElementBlock as u, createElementVNode as m, normalizeClass as _, normalizeStyle as x, toDisplayString as d, createBlock as A, createCommentVNode as g, resolveDirective as V, withDirectives as w, mergeProps as j, withKeys as p, withModifiers as h } from "vue";
4
+ import { N as k } from "./NcUserStatusIcon-hmLq9dti.mjs";
5
+ import { resolveComponent as E, openBlock as l, createElementBlock as u, createElementVNode as m, normalizeClass as _, normalizeStyle as x, toDisplayString as d, createBlock as A, createCommentVNode as g, resolveDirective as V, withDirectives as w, mergeProps as j, withKeys as p, withModifiers as h } from "vue";
6
6
  import { _ as C } from "./_plugin-vue_export-helper-hUChTQA_.mjs";
7
- import { r as N } from "./index-hX7KRzaJ.mjs";
7
+ import { r as N } from "./index-clpvFjGU.mjs";
8
8
  import "../Directives/Tooltip.mjs";
9
- import { a as R, e as I } from "./emoji-tllD0Rvt.mjs";
10
- import { n as O, j as U } from "./referencePickerModal-9sd4Ftja.mjs";
9
+ import { a as R, e as I } from "./emoji-mEkenm2t.mjs";
10
+ import { n as O, j as U } from "./referencePickerModal-Fu9pQBdT.mjs";
11
11
  import "@nextcloud/axios";
12
12
  import "./NcLoadingIcon-DnhhU7Z8.mjs";
13
- import "./NcCheckboxRadioSwitch.vue_vue_type_style_index_0_scoped_c3135eb8_lang-kB-352LR.mjs";
13
+ import "./NcCheckboxRadioSwitch.vue_vue_type_style_index_0_scoped_48c28b96_lang-yghIE9RS.mjs";
14
14
  import { G as b } from "./GenRandomId-VodkdWbp.mjs";
15
15
  import "unist-util-visit";
16
16
  import "unist-builder";
@@ -22,9 +22,9 @@ import "remark-rehype";
22
22
  import "rehype-react";
23
23
  import "rehype-external-links";
24
24
  import "./NcEmptyContent-Dvt4jhjb.mjs";
25
- import "./NcSelect-w_Gt1U72.mjs";
26
- import "./NcTextField-avDV7Ry_.mjs";
27
- import "./NcButton-nCkJxwsi.mjs";
25
+ import "./NcSelect-HmmLuUCp.mjs";
26
+ import "./NcTextField-qqwMB07_.mjs";
27
+ import "./NcButton-YOXv3gFY.mjs";
28
28
  import "../Components/NcModal.mjs";
29
29
  import "@nextcloud/event-bus";
30
30
  import f from "tributejs/dist/tribute.esm.js";
@@ -87,13 +87,13 @@ const P = {
87
87
  class: "autocomplete-result__subline"
88
88
  };
89
89
  function W(t, e, i, s, o, n) {
90
- const l = E("NcUserStatusIcon");
91
- return a(), u("div", L, [
90
+ const a = E("NcUserStatusIcon");
91
+ return l(), u("div", L, [
92
92
  m("div", {
93
- class: _([[i.icon, `autocomplete-result__icon--${n.avatarUrl ? "with-avatar" : ""}`], "autocomplete-result__icon"]),
94
- style: x(n.avatarUrl ? { backgroundImage: `url(${n.avatarUrl})` } : null)
93
+ class: _([[i.icon, "autocomplete-result__icon--".concat(n.avatarUrl ? "with-avatar" : "")], "autocomplete-result__icon"]),
94
+ style: x(n.avatarUrl ? { backgroundImage: "url(".concat(n.avatarUrl, ")") } : null)
95
95
  }, [
96
- i.status.icon ? (a(), u("span", F, d(i.status && i.status.icon || ""), 1)) : i.status.status && i.status.status !== "offline" ? (a(), A(l, {
96
+ i.status.icon ? (l(), u("span", F, d(i.status && i.status.icon || ""), 1)) : i.status.status && i.status.status !== "offline" ? (l(), A(a, {
97
97
  key: 1,
98
98
  class: "autocomplete-result__status",
99
99
  status: i.status.status
@@ -104,7 +104,7 @@ function W(t, e, i, s, o, n) {
104
104
  class: "autocomplete-result__title",
105
105
  title: i.title
106
106
  }, d(i.title), 9, K),
107
- i.subline ? (a(), u("span", q, d(i.subline), 1)) : g("", !0)
107
+ i.subline ? (l(), u("span", q, d(i.subline), 1)) : g("", !0)
108
108
  ])
109
109
  ]);
110
110
  }
@@ -211,7 +211,7 @@ const G = {
211
211
  ],
212
212
  data() {
213
213
  return {
214
- labelId: `rich-label-${b(5)}`,
214
+ labelId: "rich-label-".concat(b(5)),
215
215
  textSmiles: [],
216
216
  tribute: null,
217
217
  autocompleteOptions: {
@@ -219,7 +219,7 @@ const G = {
219
219
  allowSpaces: !0,
220
220
  fillAttr: "id",
221
221
  // Search against id and title (display name)
222
- lookup: (t) => `${t.id} ${t.title}`,
222
+ lookup: (t) => "".concat(t.id, " ").concat(t.title),
223
223
  // Where to inject the menu popup
224
224
  menuContainer: this.menuContainer,
225
225
  // Popup mention autocompletion templates
@@ -227,7 +227,10 @@ const G = {
227
227
  // Hide if no results
228
228
  noMatchTemplate: () => '<span class="hidden"></span>',
229
229
  // Inner display of mentions
230
- selectTemplate: (t) => this.genSelectTemplate(t?.original?.id),
230
+ selectTemplate: (t) => {
231
+ var e;
232
+ return this.genSelectTemplate((e = t == null ? void 0 : t.original) == null ? void 0 : e.id);
233
+ },
231
234
  // Autocompletion results
232
235
  values: this.debouncedAutoComplete
233
236
  },
@@ -239,7 +242,7 @@ const G = {
239
242
  // Where to inject the menu popup
240
243
  menuContainer: this.menuContainer,
241
244
  // Popup mention autocompletion templates
242
- menuItemTemplate: (t) => this.textSmiles.includes(t.original) ? t.original : `<span class="tribute-container-emoji__item__emoji">${t.original.native}</span> :${t.original.short_name}`,
245
+ menuItemTemplate: (t) => this.textSmiles.includes(t.original) ? t.original : '<span class="tribute-container-emoji__item__emoji">'.concat(t.original.native, "</span> :").concat(t.original.short_name),
243
246
  // Hide if no results
244
247
  noMatchTemplate: () => c("No emoji found"),
245
248
  // Display raw emoji along with its name
@@ -262,7 +265,7 @@ const G = {
262
265
  // Where to inject the menu popup
263
266
  menuContainer: this.menuContainer,
264
267
  // Popup mention autocompletion templates
265
- menuItemTemplate: (t) => `<img class="tribute-container-link__item__icon" src="${t.original.icon_url}"> <span class="tribute-container-link__item__title">${t.original.title}</span>`,
268
+ menuItemTemplate: (t) => '<img class="tribute-container-link__item__icon" src="'.concat(t.original.icon_url, '"> <span class="tribute-container-link__item__title">').concat(t.original.title, "</span>"),
266
269
  // Hide if no results
267
270
  noMatchTemplate: () => c("No link provider found"),
268
271
  selectTemplate: this.getLink,
@@ -406,7 +409,7 @@ const G = {
406
409
  return;
407
410
  t.preventDefault();
408
411
  const e = t.clipboardData;
409
- if (this.$emit("paste", t), e.files.length !== 0 || !Object.values(e.items).find((l) => l?.type.startsWith("text")))
412
+ if (this.$emit("paste", t), e.files.length !== 0 || !Object.values(e.items).find((a) => a == null ? void 0 : a.type.startsWith("text")))
410
413
  return;
411
414
  const i = e.getData("text"), s = window.getSelection();
412
415
  if (!s.rangeCount) {
@@ -492,8 +495,8 @@ const G = {
492
495
  }
493
496
  }, X = ["id", "contenteditable", "aria-labelledby", "aria-placeholder"], J = ["id"];
494
497
  function Q(t, e, i, s, o, n) {
495
- const l = V("tooltip");
496
- return a(), u("div", {
498
+ const a = V("tooltip");
499
+ return l(), u("div", {
497
500
  class: _(["rich-contenteditable", t.$props.class])
498
501
  }, [
499
502
  w(m("div", j({
@@ -524,16 +527,16 @@ function Q(t, e, i, s, o, n) {
524
527
  onPaste: e[7] || (e[7] = (...r) => n.onPaste && n.onPaste(...r)),
525
528
  onKeyupCapture: e[8] || (e[8] = h((...r) => n.onKeyUp && n.onKeyUp(...r), ["stop", "prevent"]))
526
529
  }), null, 16, X), [
527
- [l, n.tooltipString]
530
+ [a, n.tooltipString]
528
531
  ]),
529
- i.label ? (a(), u("div", {
532
+ i.label ? (l(), u("div", {
530
533
  key: 0,
531
534
  id: o.labelId,
532
535
  class: "rich-contenteditable__label"
533
536
  }, d(i.label), 9, J)) : g("", !0)
534
537
  ], 2);
535
538
  }
536
- const jt = /* @__PURE__ */ C(G, [["render", Q], ["__scopeId", "data-v-cc6795a5"]]);
539
+ const jt = /* @__PURE__ */ C(G, [["render", Q], ["__scopeId", "data-v-96d03e3d"]]);
537
540
  export {
538
541
  z as N,
539
542
  jt as a