@nextcloud/vue 8.11.2 → 8.12.0

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 (789) hide show
  1. package/CHANGELOG.md +48 -0
  2. package/dist/Components/NcActionButton.cjs +68 -31
  3. package/dist/Components/NcActionButton.cjs.map +1 -1
  4. package/dist/Components/NcActionButton.mjs +68 -35
  5. package/dist/Components/NcActionButton.mjs.map +1 -1
  6. package/dist/Components/NcActionButtonGroup.cjs +2 -2
  7. package/dist/Components/NcActionButtonGroup.mjs +2 -2
  8. package/dist/Components/NcActionCaption.cjs +17 -14
  9. package/dist/Components/NcActionCaption.cjs.map +1 -1
  10. package/dist/Components/NcActionCaption.mjs +17 -15
  11. package/dist/Components/NcActionCaption.mjs.map +1 -1
  12. package/dist/Components/NcActionCheckbox.cjs +42 -24
  13. package/dist/Components/NcActionCheckbox.cjs.map +1 -1
  14. package/dist/Components/NcActionCheckbox.mjs +42 -27
  15. package/dist/Components/NcActionCheckbox.mjs.map +1 -1
  16. package/dist/Components/NcActionInput.cjs +2 -2
  17. package/dist/Components/NcActionInput.mjs +2 -2
  18. package/dist/Components/NcActionLink.cjs +29 -23
  19. package/dist/Components/NcActionLink.cjs.map +1 -1
  20. package/dist/Components/NcActionLink.mjs +29 -25
  21. package/dist/Components/NcActionLink.mjs.map +1 -1
  22. package/dist/Components/NcActionRadio.cjs +38 -25
  23. package/dist/Components/NcActionRadio.cjs.map +1 -1
  24. package/dist/Components/NcActionRadio.mjs +38 -28
  25. package/dist/Components/NcActionRadio.mjs.map +1 -1
  26. package/dist/Components/NcActionRouter.cjs +24 -20
  27. package/dist/Components/NcActionRouter.cjs.map +1 -1
  28. package/dist/Components/NcActionRouter.mjs +24 -22
  29. package/dist/Components/NcActionRouter.mjs.map +1 -1
  30. package/dist/Components/NcActionSeparator.cjs +15 -12
  31. package/dist/Components/NcActionSeparator.cjs.map +1 -1
  32. package/dist/Components/NcActionSeparator.mjs +15 -13
  33. package/dist/Components/NcActionSeparator.mjs.map +1 -1
  34. package/dist/Components/NcActionText.cjs +20 -16
  35. package/dist/Components/NcActionText.cjs.map +1 -1
  36. package/dist/Components/NcActionText.mjs +20 -18
  37. package/dist/Components/NcActionText.mjs.map +1 -1
  38. package/dist/Components/NcActionTextEditable.cjs +40 -29
  39. package/dist/Components/NcActionTextEditable.cjs.map +1 -1
  40. package/dist/Components/NcActionTextEditable.mjs +40 -33
  41. package/dist/Components/NcActionTextEditable.mjs.map +1 -1
  42. package/dist/Components/NcActions.cjs +2 -2
  43. package/dist/Components/NcActions.mjs +2 -2
  44. package/dist/Components/NcAppContent.cjs +2 -2
  45. package/dist/Components/NcAppContent.mjs +2 -2
  46. package/dist/Components/NcAppContentDetails.cjs +14 -11
  47. package/dist/Components/NcAppContentDetails.cjs.map +1 -1
  48. package/dist/Components/NcAppContentDetails.mjs +14 -12
  49. package/dist/Components/NcAppContentDetails.mjs.map +1 -1
  50. package/dist/Components/NcAppContentList.cjs +16 -13
  51. package/dist/Components/NcAppContentList.cjs.map +1 -1
  52. package/dist/Components/NcAppContentList.mjs +16 -14
  53. package/dist/Components/NcAppContentList.mjs.map +1 -1
  54. package/dist/Components/NcAppNavigation.cjs +2 -2
  55. package/dist/Components/NcAppNavigation.mjs +2 -2
  56. package/dist/Components/NcAppNavigationCaption.cjs +2 -2
  57. package/dist/Components/NcAppNavigationCaption.mjs +2 -2
  58. package/dist/Components/NcAppNavigationIconBullet.cjs +24 -18
  59. package/dist/Components/NcAppNavigationIconBullet.cjs.map +1 -1
  60. package/dist/Components/NcAppNavigationIconBullet.mjs +24 -19
  61. package/dist/Components/NcAppNavigationIconBullet.mjs.map +1 -1
  62. package/dist/Components/NcAppNavigationItem.cjs +2 -2
  63. package/dist/Components/NcAppNavigationItem.mjs +2 -2
  64. package/dist/Components/NcAppNavigationList.cjs +15 -12
  65. package/dist/Components/NcAppNavigationList.cjs.map +1 -1
  66. package/dist/Components/NcAppNavigationList.mjs +15 -13
  67. package/dist/Components/NcAppNavigationList.mjs.map +1 -1
  68. package/dist/Components/NcAppNavigationNew.cjs +27 -23
  69. package/dist/Components/NcAppNavigationNew.cjs.map +1 -1
  70. package/dist/Components/NcAppNavigationNew.mjs +27 -25
  71. package/dist/Components/NcAppNavigationNew.mjs.map +1 -1
  72. package/dist/Components/NcAppNavigationNewItem.cjs +2 -2
  73. package/dist/Components/NcAppNavigationNewItem.mjs +2 -2
  74. package/dist/Components/NcAppNavigationSettings.cjs +2 -2
  75. package/dist/Components/NcAppNavigationSettings.mjs +2 -2
  76. package/dist/Components/NcAppNavigationSpacer.cjs +15 -12
  77. package/dist/Components/NcAppNavigationSpacer.cjs.map +1 -1
  78. package/dist/Components/NcAppNavigationSpacer.mjs +15 -13
  79. package/dist/Components/NcAppNavigationSpacer.mjs.map +1 -1
  80. package/dist/Components/NcAppNavigationToggle.cjs +4 -4
  81. package/dist/Components/NcAppNavigationToggle.mjs +3 -3
  82. package/dist/Components/NcAppSettingsDialog.cjs +2 -2
  83. package/dist/Components/NcAppSettingsDialog.mjs +2 -2
  84. package/dist/Components/NcAppSettingsSection.cjs +29 -24
  85. package/dist/Components/NcAppSettingsSection.cjs.map +1 -1
  86. package/dist/Components/NcAppSettingsSection.mjs +29 -25
  87. package/dist/Components/NcAppSettingsSection.mjs.map +1 -1
  88. package/dist/Components/NcAppSidebar.cjs +2 -2
  89. package/dist/Components/NcAppSidebar.mjs +2 -2
  90. package/dist/Components/NcAppSidebarTab.cjs +24 -18
  91. package/dist/Components/NcAppSidebarTab.cjs.map +1 -1
  92. package/dist/Components/NcAppSidebarTab.mjs +24 -19
  93. package/dist/Components/NcAppSidebarTab.mjs.map +1 -1
  94. package/dist/Components/NcAvatar.cjs +2 -2
  95. package/dist/Components/NcAvatar.mjs +2 -2
  96. package/dist/Components/NcBreadcrumb.cjs +2 -2
  97. package/dist/Components/NcBreadcrumb.mjs +2 -2
  98. package/dist/Components/NcBreadcrumbs.cjs +2 -2
  99. package/dist/Components/NcBreadcrumbs.mjs +2 -2
  100. package/dist/Components/NcButton.cjs +80 -59
  101. package/dist/Components/NcButton.cjs.map +1 -1
  102. package/dist/Components/NcButton.mjs +80 -60
  103. package/dist/Components/NcButton.mjs.map +1 -1
  104. package/dist/Components/NcCheckboxRadioSwitch.cjs +2 -2
  105. package/dist/Components/NcCheckboxRadioSwitch.mjs +2 -2
  106. package/dist/Components/NcColorPicker.cjs +2 -2
  107. package/dist/Components/NcColorPicker.mjs +2 -2
  108. package/dist/Components/NcContent.cjs +2 -2
  109. package/dist/Components/NcContent.mjs +2 -2
  110. package/dist/Components/NcCounterBubble.cjs +18 -15
  111. package/dist/Components/NcCounterBubble.cjs.map +1 -1
  112. package/dist/Components/NcCounterBubble.mjs +18 -16
  113. package/dist/Components/NcCounterBubble.mjs.map +1 -1
  114. package/dist/Components/NcDashboardWidget.cjs +2 -2
  115. package/dist/Components/NcDashboardWidget.mjs +2 -2
  116. package/dist/Components/NcDashboardWidgetItem.cjs +2 -2
  117. package/dist/Components/NcDashboardWidgetItem.mjs +2 -2
  118. package/dist/Components/NcDateTime.cjs +2 -2
  119. package/dist/Components/NcDateTime.mjs +2 -2
  120. package/dist/Components/NcDateTimePicker.cjs +142 -101
  121. package/dist/Components/NcDateTimePicker.cjs.map +1 -1
  122. package/dist/Components/NcDateTimePicker.mjs +140 -108
  123. package/dist/Components/NcDateTimePicker.mjs.map +1 -1
  124. package/dist/Components/NcDateTimePickerNative.cjs +72 -52
  125. package/dist/Components/NcDateTimePickerNative.cjs.map +1 -1
  126. package/dist/Components/NcDateTimePickerNative.mjs +72 -54
  127. package/dist/Components/NcDateTimePickerNative.mjs.map +1 -1
  128. package/dist/Components/NcDialog.cjs +2 -2
  129. package/dist/Components/NcDialog.mjs +2 -2
  130. package/dist/Components/NcDialogButton.cjs +2 -2
  131. package/dist/Components/NcDialogButton.mjs +2 -2
  132. package/dist/Components/NcEllipsisedOption.cjs +35 -20
  133. package/dist/Components/NcEllipsisedOption.cjs.map +1 -1
  134. package/dist/Components/NcEllipsisedOption.mjs +35 -22
  135. package/dist/Components/NcEllipsisedOption.mjs.map +1 -1
  136. package/dist/Components/NcEmojiPicker.cjs +2 -2
  137. package/dist/Components/NcEmojiPicker.mjs +2 -2
  138. package/dist/Components/NcEmptyContent.cjs +22 -19
  139. package/dist/Components/NcEmptyContent.cjs.map +1 -1
  140. package/dist/Components/NcEmptyContent.mjs +22 -20
  141. package/dist/Components/NcEmptyContent.mjs.map +1 -1
  142. package/dist/Components/NcGuestContent.cjs +15 -12
  143. package/dist/Components/NcGuestContent.cjs.map +1 -1
  144. package/dist/Components/NcGuestContent.mjs +15 -13
  145. package/dist/Components/NcGuestContent.mjs.map +1 -1
  146. package/dist/Components/NcHeaderMenu.cjs +2 -2
  147. package/dist/Components/NcHeaderMenu.mjs +2 -2
  148. package/dist/Components/NcHighlight.cjs +2 -2
  149. package/dist/Components/NcHighlight.mjs +2 -2
  150. package/dist/Components/NcIconSvgWrapper.cjs +2 -2
  151. package/dist/Components/NcIconSvgWrapper.mjs +2 -2
  152. package/dist/Components/NcInputField.cjs +68 -52
  153. package/dist/Components/NcInputField.cjs.map +1 -1
  154. package/dist/Components/NcInputField.mjs +68 -57
  155. package/dist/Components/NcInputField.mjs.map +1 -1
  156. package/dist/Components/NcListItem.cjs +2 -2
  157. package/dist/Components/NcListItem.mjs +2 -2
  158. package/dist/Components/NcListItemIcon.cjs +2 -2
  159. package/dist/Components/NcListItemIcon.mjs +2 -2
  160. package/dist/Components/NcLoadingIcon.cjs +24 -16
  161. package/dist/Components/NcLoadingIcon.cjs.map +1 -1
  162. package/dist/Components/NcLoadingIcon.mjs +24 -17
  163. package/dist/Components/NcLoadingIcon.mjs.map +1 -1
  164. package/dist/Components/NcModal.cjs +257 -146
  165. package/dist/Components/NcModal.cjs.map +1 -1
  166. package/dist/Components/NcModal.mjs +257 -156
  167. package/dist/Components/NcModal.mjs.map +1 -1
  168. package/dist/Components/NcNoteCard.cjs +80 -65
  169. package/dist/Components/NcNoteCard.cjs.map +1 -1
  170. package/dist/Components/NcNoteCard.mjs +80 -66
  171. package/dist/Components/NcNoteCard.mjs.map +1 -1
  172. package/dist/Components/NcPasswordField.cjs +2 -2
  173. package/dist/Components/NcPasswordField.mjs +2 -2
  174. package/dist/Components/NcPopover.cjs +2 -2
  175. package/dist/Components/NcPopover.mjs +2 -2
  176. package/dist/Components/NcProgressBar.cjs +2 -2
  177. package/dist/Components/NcProgressBar.mjs +2 -2
  178. package/dist/Components/NcRelatedResourcesPanel.cjs +2 -2
  179. package/dist/Components/NcRelatedResourcesPanel.mjs +2 -2
  180. package/dist/Components/NcRichContenteditable.cjs +6 -5
  181. package/dist/Components/NcRichContenteditable.cjs.map +1 -1
  182. package/dist/Components/NcRichContenteditable.mjs +5 -5
  183. package/dist/Components/NcRichText.cjs +24 -22
  184. package/dist/Components/NcRichText.cjs.map +1 -1
  185. package/dist/Components/NcRichText.mjs +24 -24
  186. package/dist/Components/NcSavingIndicatorIcon.cjs +2 -2
  187. package/dist/Components/NcSavingIndicatorIcon.mjs +2 -2
  188. package/dist/Components/NcSelect.cjs +2 -2
  189. package/dist/Components/NcSelect.mjs +2 -2
  190. package/dist/Components/NcSelectTags.cjs +2 -2
  191. package/dist/Components/NcSelectTags.mjs +2 -2
  192. package/dist/Components/NcSettingsInputText.cjs +2 -2
  193. package/dist/Components/NcSettingsInputText.mjs +2 -2
  194. package/dist/Components/NcSettingsSection.cjs +2 -2
  195. package/dist/Components/NcSettingsSection.mjs +2 -2
  196. package/dist/Components/NcSettingsSelectGroup.cjs +4 -4
  197. package/dist/Components/NcSettingsSelectGroup.mjs +3 -3
  198. package/dist/Components/NcTextArea.cjs +51 -36
  199. package/dist/Components/NcTextArea.cjs.map +1 -1
  200. package/dist/Components/NcTextArea.mjs +51 -40
  201. package/dist/Components/NcTextArea.mjs.map +1 -1
  202. package/dist/Components/NcTextField.cjs +2 -2
  203. package/dist/Components/NcTextField.mjs +2 -2
  204. package/dist/Components/NcTimezonePicker.cjs +2 -2
  205. package/dist/Components/NcTimezonePicker.mjs +2 -2
  206. package/dist/Components/NcUserBubble.cjs +2 -2
  207. package/dist/Components/NcUserBubble.mjs +2 -2
  208. package/dist/Components/NcUserStatusIcon.cjs +2 -2
  209. package/dist/Components/NcUserStatusIcon.mjs +2 -2
  210. package/dist/Components/NcVNodes.cjs +15 -12
  211. package/dist/Components/NcVNodes.cjs.map +1 -1
  212. package/dist/Components/NcVNodes.mjs +15 -13
  213. package/dist/Components/NcVNodes.mjs.map +1 -1
  214. package/dist/Composables/useIsFullscreen.cjs +9 -8
  215. package/dist/Composables/useIsFullscreen.cjs.map +1 -1
  216. package/dist/Composables/useIsFullscreen.mjs +9 -8
  217. package/dist/Composables/useIsFullscreen.mjs.map +1 -1
  218. package/dist/Composables/useIsMobile.cjs +19 -14
  219. package/dist/Composables/useIsMobile.cjs.map +1 -1
  220. package/dist/Composables/useIsMobile.mjs +19 -14
  221. package/dist/Composables/useIsMobile.mjs.map +1 -1
  222. package/dist/Directives/Focus.cjs +6 -6
  223. package/dist/Directives/Focus.cjs.map +1 -1
  224. package/dist/Directives/Focus.mjs +5 -5
  225. package/dist/Directives/Focus.mjs.map +1 -1
  226. package/dist/Directives/Linkify.cjs +9 -6
  227. package/dist/Directives/Linkify.cjs.map +1 -1
  228. package/dist/Directives/Linkify.mjs +8 -6
  229. package/dist/Directives/Linkify.mjs.map +1 -1
  230. package/dist/Directives/Tooltip.cjs +11 -11
  231. package/dist/Directives/Tooltip.cjs.map +1 -1
  232. package/dist/Directives/Tooltip.mjs +9 -9
  233. package/dist/Directives/Tooltip.mjs.map +1 -1
  234. package/dist/Functions/a11y.cjs +33 -0
  235. package/dist/Functions/a11y.cjs.map +1 -0
  236. package/dist/Functions/a11y.mjs +33 -0
  237. package/dist/Functions/a11y.mjs.map +1 -0
  238. package/dist/Functions/emoji.cjs +8 -0
  239. package/dist/Functions/emoji.cjs.map +1 -0
  240. package/dist/Functions/emoji.mjs +8 -0
  241. package/dist/Functions/emoji.mjs.map +1 -0
  242. package/dist/Functions/reference.cjs +16 -15
  243. package/dist/Functions/reference.cjs.map +1 -1
  244. package/dist/Functions/reference.mjs +16 -16
  245. package/dist/Functions/registerReference.cjs +11 -11
  246. package/dist/Functions/registerReference.mjs +10 -10
  247. package/dist/Functions/usernameToColor.cjs +2 -2
  248. package/dist/Functions/usernameToColor.mjs +2 -2
  249. package/dist/Mixins/clickOutsideOptions.cjs +4 -3
  250. package/dist/Mixins/clickOutsideOptions.cjs.map +1 -1
  251. package/dist/Mixins/clickOutsideOptions.mjs +4 -3
  252. package/dist/Mixins/clickOutsideOptions.mjs.map +1 -1
  253. package/dist/Mixins/isFullscreen.cjs +4 -4
  254. package/dist/Mixins/isFullscreen.cjs.map +1 -1
  255. package/dist/Mixins/isFullscreen.mjs +4 -4
  256. package/dist/Mixins/isFullscreen.mjs.map +1 -1
  257. package/dist/Mixins/isMobile.cjs +4 -4
  258. package/dist/Mixins/isMobile.cjs.map +1 -1
  259. package/dist/Mixins/isMobile.mjs +4 -4
  260. package/dist/Mixins/isMobile.mjs.map +1 -1
  261. package/dist/Mixins/richEditor.cjs +6 -6
  262. package/dist/Mixins/richEditor.mjs +5 -5
  263. package/dist/assets/{NcActionButton-Cs5kVVAD.css → NcActionButton-D08gPtwM.css} +27 -22
  264. package/dist/assets/{NcActionButtonGroup-ChehtUip.css → NcActionButtonGroup-CvloX35s.css} +5 -4
  265. package/dist/assets/{NcActionCaption-Bp8mrIk7.css → NcActionCaption-sfcjBZnu.css} +4 -2
  266. package/dist/assets/{NcActionCheckbox-Do--WvUT.css → NcActionCheckbox-DTlI7y7p.css} +13 -9
  267. package/dist/assets/{NcActionInput-8F2WF3yH.css → NcActionInput-B8l22cnm.css} +44 -16
  268. package/dist/assets/{NcActionLink-DN3NCDC0.css → NcActionLink-ufhOZDI9.css} +19 -16
  269. package/dist/assets/{NcActionRadio-B46v1Kn4.css → NcActionRadio-syUIsm9B.css} +13 -9
  270. package/dist/assets/{NcActionRouter-wVMPq1gi.css → NcActionRouter-BbTCI4sn.css} +12 -10
  271. package/dist/assets/{NcActionSeparator-CX3zFZuI.css → NcActionSeparator-CB59y4di.css} +4 -1
  272. package/dist/assets/{NcActionText-YljCzD9Q.css → NcActionText-Ceh88fy8.css} +12 -10
  273. package/dist/assets/{NcActionTextEditable-mti5YQN1.css → NcActionTextEditable-BoxziChR.css} +52 -24
  274. package/dist/assets/{NcActions-CiiQkX9v.css → NcActions-N_Y6Nzew.css} +40 -13
  275. package/dist/assets/{NcAppContent-aWiDWWeq.css → NcAppContent-C08OMmgh.css} +42 -17
  276. package/dist/assets/{NcAppNavigation-wkQJnaLW.css → NcAppNavigation-DlFgsfe2.css} +44 -11
  277. package/dist/assets/{NcAppNavigationCaption-jV1y8HQ1.css → NcAppNavigationCaption-DnApJ5OW.css} +13 -9
  278. package/dist/assets/{NcAppNavigationIconBullet-1_cBEwu8.css → NcAppNavigationIconBullet-B8q3pUL5.css} +5 -2
  279. package/dist/assets/{NcAppNavigationItem-hYyNqvah.css → NcAppNavigationItem-OJEHVyVk.css} +70 -48
  280. package/dist/assets/{NcAppNavigationList-CUnaMQQD.css → NcAppNavigationList-DnIxrbVX.css} +4 -1
  281. package/dist/assets/{NcAppNavigationNew-COjJ3vwU.css → NcAppNavigationNew-BPZ1O8Xm.css} +6 -1
  282. package/dist/assets/{NcAppNavigationNewItem-C574fgtB.css → NcAppNavigationNewItem-DF3nldsK.css} +26 -28
  283. package/dist/assets/{NcAppNavigationSettings-nH_pGlKc.css → NcAppNavigationSettings-BCkvRAy8.css} +11 -6
  284. package/dist/assets/{NcAppNavigationSpacer-C5p-33VT.css → NcAppNavigationSpacer-Cb4q1zb5.css} +4 -2
  285. package/dist/assets/{NcAppNavigationToggle-De8wq0JA.css → NcAppNavigationToggle-0yhQ9xse.css} +4 -1
  286. package/dist/assets/{NcAppSettingsDialog-DR46jcRG.css → NcAppSettingsDialog-CajWZJNV.css} +7 -5
  287. package/dist/assets/{NcAppSettingsSection-BqF92GLH.css → NcAppSettingsSection-BDvzWKkd.css} +5 -2
  288. package/dist/assets/{NcAppSidebar-DlVjDHcd.css → NcAppSidebar-DixS4RLm.css} +149 -53
  289. package/dist/assets/{NcAppSidebarTab-XLBsrGqg.css → NcAppSidebarTab-CBFET-hQ.css} +5 -2
  290. package/dist/assets/{NcAvatar-BozWHt1s.css → NcAvatar-C2EFGp-3.css} +30 -31
  291. package/dist/assets/{NcBreadcrumb-eyloXKCC.css → NcBreadcrumb-AES5eSWo.css} +8 -6
  292. package/dist/assets/{NcBreadcrumbs-E-TglkuV.css → NcBreadcrumbs-tYrp1DVs.css} +5 -3
  293. package/dist/assets/{NcButton-DhaPcomf.css → NcButton-DZS360ia.css} +56 -56
  294. package/dist/assets/{NcCheckboxRadioSwitch-CaAqi0Jt.css → NcCheckboxRadioSwitch-DArK1Q95.css} +76 -53
  295. package/dist/assets/{NcColorPicker-CNboc7FY.css → NcColorPicker-CzKZjMxY.css} +38 -33
  296. package/dist/assets/{NcContent-tZHbeX2L.css → NcContent-Cuv2HvFH.css} +29 -3
  297. package/dist/assets/{NcCounterBubble-CuCSao3j.css → NcCounterBubble-CWi_P1Tb.css} +6 -3
  298. package/dist/assets/{NcDashboardWidget-DTV15Fb1.css → NcDashboardWidget-CGOA8X60.css} +7 -3
  299. package/dist/assets/{NcDashboardWidgetItem-4v77FH89.css → NcDashboardWidgetItem-BevETFRF.css} +18 -3
  300. package/dist/assets/{NcDateTimePicker-q_BLnhHU.css → NcDateTimePicker-3FfsWOh0.css} +144 -163
  301. package/dist/assets/{NcDateTimePickerNative-DnLJu29_.css → NcDateTimePickerNative-CV_VuzvQ.css} +7 -4
  302. package/dist/assets/{NcDialog-DEKSpcnR.css → NcDialog-DFMxsFp5.css} +53 -20
  303. package/dist/assets/{NcEllipsisedOption-B6gjXSS9.css → NcEllipsisedOption-ClDzkIX6.css} +7 -6
  304. package/dist/assets/{NcEmojiPicker-B-4WNYcx.css → NcEmojiPicker-XL3oUsqE.css} +79 -50
  305. package/dist/assets/{NcEmptyContent-ClLPsXo5.css → NcEmptyContent-BY1-Gge4.css} +16 -12
  306. package/dist/assets/{NcGuestContent-CYYZPMjb.css → NcGuestContent-CeRLfUEi.css} +28 -1
  307. package/dist/assets/{NcHeaderMenu-BKufmJd0.css → NcHeaderMenu-N5y8yFGd.css} +7 -7
  308. package/dist/assets/{NcIconSvgWrapper-oui2KPBT.css → NcIconSvgWrapper-DF9sBD2g.css} +12 -9
  309. package/dist/assets/{NcInputConfirmCancel-CSzzPx0i.css → NcInputConfirmCancel-UcHrm0al.css} +7 -5
  310. package/dist/assets/{NcInputField-vYuV3-IY.css → NcInputField-CXoTqF9T.css} +16 -33
  311. package/dist/assets/{NcListItem-BIFTbr17.css → NcListItem-DMYcn1cc.css} +11 -21
  312. package/dist/assets/{NcListItemIcon-9Dazpmpd.css → NcListItemIcon-CuPMgXoB.css} +17 -19
  313. package/dist/assets/{NcLoadingIcon-CFmftMkz.css → NcLoadingIcon-gxK0ujO0.css} +5 -2
  314. package/dist/assets/{NcMentionBubble-7PQ8wEko.css → NcMentionBubble-DmzU72Mw.css} +5 -2
  315. package/dist/assets/{NcModal-CwgrmxSg.css → NcModal-Cof88czY.css} +42 -38
  316. package/dist/assets/{NcNoteCard-B_Q1mnCM.css → NcNoteCard-e7-Bxio8.css} +10 -6
  317. package/dist/assets/{NcPopover-wrgZy49g.css → NcPopover-BwI1hPzy.css} +4 -1
  318. package/dist/assets/{NcProgressBar-DDj4bmBB.css → NcProgressBar-D5VftcJm.css} +4 -1
  319. package/dist/assets/{NcRelatedResourcesPanel-D6K7OQFJ.css → NcRelatedResourcesPanel-BrXxbjgR.css} +60 -8
  320. package/dist/assets/{NcRichContenteditable-BQ2-fqnd.css → NcRichContenteditable-C-eZyVQM.css} +60 -22
  321. package/dist/assets/NcRichText-Cdp_2wEm.css +240 -0
  322. package/dist/assets/{NcSelect-4aBmXHhA.css → NcSelect-Fmyu7qyl.css} +34 -13
  323. package/dist/assets/{NcSettingsInputText-w-LprdjK.css → NcSettingsInputText-CU65Coab.css} +4 -1
  324. package/dist/assets/{NcSettingsSection-8RabR54v.css → NcSettingsSection-TX28tYCG.css} +16 -14
  325. package/dist/assets/{NcSettingsSelectGroup-D8mlvzIT.css → NcSettingsSelectGroup-CPauLI-o.css} +4 -1
  326. package/dist/assets/{NcTextArea-DitXCroY.css → NcTextArea-XCi8a16Y.css} +13 -28
  327. package/dist/assets/{NcUserBubble-COPMjmKa.css → NcUserBubble-D5ieZC-f.css} +7 -4
  328. package/dist/assets/{NcUserStatusIcon-Dra7jf_o.css → NcUserStatusIcon-BcLArDqV.css} +4 -1
  329. package/dist/assets/{Tooltip-DA4si7PR.css → Tooltip-jHgt4m-W.css} +19 -3
  330. package/dist/assets/referencePickerModal-BaGbKZky.css +539 -0
  331. package/dist/chunks/AlertCircleOutline-BzttElgq.mjs +39 -0
  332. package/dist/chunks/{AlertCircleOutline-DHFN4OkX.cjs.map → AlertCircleOutline-BzttElgq.mjs.map} +1 -1
  333. package/dist/chunks/AlertCircleOutline-Cb0gAiDw.cjs +38 -0
  334. package/dist/chunks/{AlertCircleOutline-U_bhL30C.mjs.map → AlertCircleOutline-Cb0gAiDw.cjs.map} +1 -1
  335. package/dist/chunks/ArrowLeft-B9iGweTd.mjs +39 -0
  336. package/dist/chunks/{ArrowLeft-CjNnGIlF.cjs.map → ArrowLeft-B9iGweTd.mjs.map} +1 -1
  337. package/dist/chunks/ArrowLeft-BhNmMdMz.cjs +38 -0
  338. package/dist/chunks/{ArrowLeft-kklNBL9z.mjs.map → ArrowLeft-BhNmMdMz.cjs.map} +1 -1
  339. package/dist/chunks/ArrowRight-Clf455e1.mjs +39 -0
  340. package/dist/chunks/{ArrowRight-CxzzJJQ6.cjs.map → ArrowRight-Clf455e1.mjs.map} +1 -1
  341. package/dist/chunks/ArrowRight-DaYrccVG.cjs +38 -0
  342. package/dist/chunks/{ArrowRight-C3BxTDjF.mjs.map → ArrowRight-DaYrccVG.cjs.map} +1 -1
  343. package/dist/chunks/Check-DZc7keoa.cjs +38 -0
  344. package/dist/chunks/{Check-CVn5nytg.cjs.map → Check-DZc7keoa.cjs.map} +1 -1
  345. package/dist/chunks/Check-PawIlCwa.mjs +39 -0
  346. package/dist/chunks/{Check-CRLmJNGG.mjs.map → Check-PawIlCwa.mjs.map} +1 -1
  347. package/dist/chunks/ChevronDown-CF9m1o8_.cjs +38 -0
  348. package/dist/chunks/{ChevronDown-DQPox_nl.cjs.map → ChevronDown-CF9m1o8_.cjs.map} +1 -1
  349. package/dist/chunks/ChevronDown-PedEroXo.mjs +39 -0
  350. package/dist/chunks/{ChevronDown-HHJdUMN4.mjs.map → ChevronDown-PedEroXo.mjs.map} +1 -1
  351. package/dist/chunks/ChevronRight-BNa7yMja.mjs +39 -0
  352. package/dist/chunks/{ChevronRight-BAJhNawb.cjs.map → ChevronRight-BNa7yMja.mjs.map} +1 -1
  353. package/dist/chunks/ChevronRight-DVw6mR11.cjs +38 -0
  354. package/dist/chunks/{ChevronRight-DL3e8bjj.mjs.map → ChevronRight-DVw6mR11.cjs.map} +1 -1
  355. package/dist/chunks/ChevronUp-CTOKWYlC.cjs +38 -0
  356. package/dist/chunks/{ChevronUp-kmHRpe7H.cjs.map → ChevronUp-CTOKWYlC.cjs.map} +1 -1
  357. package/dist/chunks/ChevronUp-DGLTg_nO.mjs +39 -0
  358. package/dist/chunks/{ChevronUp-B6TIgl1a.mjs.map → ChevronUp-DGLTg_nO.mjs.map} +1 -1
  359. package/dist/chunks/Close-1V1F2F-M.mjs +39 -0
  360. package/dist/chunks/{Close-DBfrdXMw.cjs.map → Close-1V1F2F-M.mjs.map} +1 -1
  361. package/dist/chunks/Close-C2VrgKj3.cjs +38 -0
  362. package/dist/chunks/{Close-BtO5TPBO.mjs.map → Close-C2VrgKj3.cjs.map} +1 -1
  363. package/dist/chunks/DotsHorizontal-C0STD_HU.mjs +39 -0
  364. package/dist/chunks/{DotsHorizontal-B8kTqpHe.cjs.map → DotsHorizontal-C0STD_HU.mjs.map} +1 -1
  365. package/dist/chunks/DotsHorizontal-Cjw3-45t.cjs +38 -0
  366. package/dist/chunks/{DotsHorizontal-DfVgEXgz.mjs.map → DotsHorizontal-Cjw3-45t.cjs.map} +1 -1
  367. package/dist/chunks/GenColors-CAUl-IDP.cjs +160 -0
  368. package/dist/chunks/{GenColors-Dceu3ds2.mjs.map → GenColors-CAUl-IDP.cjs.map} +1 -1
  369. package/dist/chunks/{GenColors-Dceu3ds2.mjs → GenColors-DcjtQMk3.mjs} +69 -50
  370. package/dist/chunks/{GenColors-hkqGpnOK.cjs.map → GenColors-DcjtQMk3.mjs.map} +1 -1
  371. package/dist/chunks/{GenRandomId-BW3iYFf9.mjs → GenRandomId-CXkjMlAT.mjs} +4 -2
  372. package/dist/chunks/{GenRandomId-BW3iYFf9.mjs.map → GenRandomId-CXkjMlAT.mjs.map} +1 -1
  373. package/dist/chunks/{GenRandomId-B2O1GMbH.cjs → GenRandomId-kBCcgMJd.cjs} +4 -2
  374. package/dist/chunks/{GenRandomId-B2O1GMbH.cjs.map → GenRandomId-kBCcgMJd.cjs.map} +1 -1
  375. package/dist/chunks/{Linkify-BaDLLFxP.mjs → Linkify-BBPJHBma.mjs} +12 -10
  376. package/dist/chunks/{Linkify-Dola0NBa.cjs.map → Linkify-BBPJHBma.mjs.map} +1 -1
  377. package/dist/chunks/{Linkify-Dola0NBa.cjs → Linkify-CIO279AG.cjs} +14 -10
  378. package/dist/chunks/{Linkify-BaDLLFxP.mjs.map → Linkify-CIO279AG.cjs.map} +1 -1
  379. package/dist/chunks/NcActionButtonGroup-D650-6zv.mjs +53 -0
  380. package/dist/chunks/{NcActionButtonGroup-DU1taycQ.mjs.map → NcActionButtonGroup-D650-6zv.mjs.map} +1 -1
  381. package/dist/chunks/NcActionButtonGroup-D7hycpXY.cjs +52 -0
  382. package/dist/chunks/{NcActionButtonGroup-B1XhnIBl.cjs.map → NcActionButtonGroup-D7hycpXY.cjs.map} +1 -1
  383. package/dist/chunks/NcActionInput-BqG7gSLn.mjs +254 -0
  384. package/dist/chunks/{NcActionInput-53RB9uQe.mjs.map → NcActionInput-BqG7gSLn.mjs.map} +1 -1
  385. package/dist/chunks/NcActionInput-CHucaM0V.cjs +253 -0
  386. package/dist/chunks/{NcActionInput-N2wrvq5K.cjs.map → NcActionInput-CHucaM0V.cjs.map} +1 -1
  387. package/dist/chunks/NcActions-CocYka0Y.mjs +845 -0
  388. package/dist/chunks/NcActions-CocYka0Y.mjs.map +1 -0
  389. package/dist/chunks/NcActions-JX6wbAVA.cjs +846 -0
  390. package/dist/chunks/NcActions-JX6wbAVA.cjs.map +1 -0
  391. package/dist/chunks/NcAppContent-CkO1Y93z.cjs +303 -0
  392. package/dist/chunks/{NcAppContent-BDhK1rUf.mjs.map → NcAppContent-CkO1Y93z.cjs.map} +1 -1
  393. package/dist/chunks/NcAppContent-wlhVbyg0.mjs +304 -0
  394. package/dist/chunks/{NcAppContent-Be1m1O_W.cjs.map → NcAppContent-wlhVbyg0.mjs.map} +1 -1
  395. package/dist/chunks/NcAppNavigation-BKiDVBw7.mjs +142 -0
  396. package/dist/chunks/{NcAppNavigation-DKUnWfen.cjs.map → NcAppNavigation-BKiDVBw7.mjs.map} +1 -1
  397. package/dist/chunks/NcAppNavigation-Du3J8BTm.cjs +143 -0
  398. package/dist/chunks/{NcAppNavigation-CElLRpH-.mjs.map → NcAppNavigation-Du3J8BTm.cjs.map} +1 -1
  399. package/dist/chunks/NcAppNavigationCaption-BoN0P7tD.cjs +78 -0
  400. package/dist/chunks/NcAppNavigationCaption-BoN0P7tD.cjs.map +1 -0
  401. package/dist/chunks/NcAppNavigationCaption-CKTQZ_u_.mjs +79 -0
  402. package/dist/chunks/NcAppNavigationCaption-CKTQZ_u_.mjs.map +1 -0
  403. package/dist/chunks/NcAppNavigationItem-D_lh17am.cjs +521 -0
  404. package/dist/chunks/NcAppNavigationItem-D_lh17am.cjs.map +1 -0
  405. package/dist/chunks/NcAppNavigationItem-qe8jnLow.mjs +522 -0
  406. package/dist/chunks/NcAppNavigationItem-qe8jnLow.mjs.map +1 -0
  407. package/dist/chunks/NcAppNavigationNewItem-B107Beoc.mjs +98 -0
  408. package/dist/chunks/{NcAppNavigationNewItem-CN3vYnc_.mjs.map → NcAppNavigationNewItem-B107Beoc.mjs.map} +1 -1
  409. package/dist/chunks/NcAppNavigationNewItem-DyxVXE5t.cjs +97 -0
  410. package/dist/chunks/{NcAppNavigationNewItem-5B4-U2NI.cjs.map → NcAppNavigationNewItem-DyxVXE5t.cjs.map} +1 -1
  411. package/dist/chunks/NcAppNavigationSettings-CmP_tXFm.cjs +110 -0
  412. package/dist/chunks/{NcAppNavigationSettings-LmpAoM-x.mjs.map → NcAppNavigationSettings-CmP_tXFm.cjs.map} +1 -1
  413. package/dist/chunks/NcAppNavigationSettings-DZ1-Sbdz.mjs +111 -0
  414. package/dist/chunks/{NcAppNavigationSettings-Cnr4jYzW.cjs.map → NcAppNavigationSettings-DZ1-Sbdz.mjs.map} +1 -1
  415. package/dist/chunks/NcAppNavigationToggle-hmEUqxbP.cjs +129 -0
  416. package/dist/chunks/{NcAppNavigationToggle-D0oeWL17.mjs.map → NcAppNavigationToggle-hmEUqxbP.cjs.map} +1 -1
  417. package/dist/chunks/NcAppNavigationToggle-zCGgvNDT.mjs +130 -0
  418. package/dist/chunks/{NcAppNavigationToggle-B5XmO21v.cjs.map → NcAppNavigationToggle-zCGgvNDT.mjs.map} +1 -1
  419. package/dist/chunks/NcAppSettingsDialog-D9cNYQ8b.mjs +230 -0
  420. package/dist/chunks/{NcAppSettingsDialog-BLOgrVCz.mjs.map → NcAppSettingsDialog-D9cNYQ8b.mjs.map} +1 -1
  421. package/dist/chunks/NcAppSettingsDialog-YqNhco1P.cjs +232 -0
  422. package/dist/chunks/{NcAppSettingsDialog-B6crPJ6a.cjs.map → NcAppSettingsDialog-YqNhco1P.cjs.map} +1 -1
  423. package/dist/chunks/NcAppSidebar-CQWODfsy.mjs +792 -0
  424. package/dist/chunks/NcAppSidebar-CQWODfsy.mjs.map +1 -0
  425. package/dist/chunks/NcAppSidebar-J15zHyfq.cjs +791 -0
  426. package/dist/chunks/NcAppSidebar-J15zHyfq.cjs.map +1 -0
  427. package/dist/chunks/NcAvatar-CX3OX2C4.mjs +594 -0
  428. package/dist/chunks/NcAvatar-CX3OX2C4.mjs.map +1 -0
  429. package/dist/chunks/NcAvatar-CYzikYku.cjs +595 -0
  430. package/dist/chunks/NcAvatar-CYzikYku.cjs.map +1 -0
  431. package/dist/chunks/NcBreadcrumb-DytGDsr8.mjs +206 -0
  432. package/dist/chunks/{NcBreadcrumb-BxCf2hEA.mjs.map → NcBreadcrumb-DytGDsr8.mjs.map} +1 -1
  433. package/dist/chunks/NcBreadcrumb-jMJw2OQJ.cjs +205 -0
  434. package/dist/chunks/{NcBreadcrumb-BRpLGeLr.cjs.map → NcBreadcrumb-jMJw2OQJ.cjs.map} +1 -1
  435. package/dist/chunks/NcBreadcrumbs-BqFPBZ-h.mjs +525 -0
  436. package/dist/chunks/{NcBreadcrumbs-BmK-6Q-n.mjs.map → NcBreadcrumbs-BqFPBZ-h.mjs.map} +1 -1
  437. package/dist/chunks/NcBreadcrumbs-CzObAKB-.cjs +527 -0
  438. package/dist/chunks/{NcBreadcrumbs-BKPXzHC1.cjs.map → NcBreadcrumbs-CzObAKB-.cjs.map} +1 -1
  439. package/dist/chunks/NcCheckboxRadioSwitch-CIHl8lnP.cjs +685 -0
  440. package/dist/chunks/NcCheckboxRadioSwitch-CIHl8lnP.cjs.map +1 -0
  441. package/dist/chunks/NcCheckboxRadioSwitch-CpupDtee.mjs +686 -0
  442. package/dist/chunks/NcCheckboxRadioSwitch-CpupDtee.mjs.map +1 -0
  443. package/dist/chunks/NcCheckboxRadioSwitch.vue_vue_type_style_index_0_scoped_6d6e6a47_lang-CAFQAKcK.mjs +3 -0
  444. package/dist/chunks/NcCheckboxRadioSwitch.vue_vue_type_style_index_0_scoped_6d6e6a47_lang-CAFQAKcK.mjs.map +1 -0
  445. package/dist/chunks/NcCheckboxRadioSwitch.vue_vue_type_style_index_0_scoped_6d6e6a47_lang-D2wGnjg7.cjs +4 -0
  446. package/dist/chunks/NcCheckboxRadioSwitch.vue_vue_type_style_index_0_scoped_6d6e6a47_lang-D2wGnjg7.cjs.map +1 -0
  447. package/dist/chunks/NcColorPicker-BEs2B-HB.mjs +191 -0
  448. package/dist/chunks/NcColorPicker-BEs2B-HB.mjs.map +1 -0
  449. package/dist/chunks/NcColorPicker-KrvDMhej.cjs +190 -0
  450. package/dist/chunks/NcColorPicker-KrvDMhej.cjs.map +1 -0
  451. package/dist/chunks/NcContent-CcrNrpVC.mjs +104 -0
  452. package/dist/chunks/{NcContent-BPA0KfuT.mjs.map → NcContent-CcrNrpVC.mjs.map} +1 -1
  453. package/dist/chunks/NcContent-DChC6Khv.cjs +103 -0
  454. package/dist/chunks/{NcContent-DbFAEdX_.cjs.map → NcContent-DChC6Khv.cjs.map} +1 -1
  455. package/dist/chunks/NcDashboardWidget-BvNtltPU.cjs +147 -0
  456. package/dist/chunks/{NcDashboardWidget-2-nW7dII.mjs.map → NcDashboardWidget-BvNtltPU.cjs.map} +1 -1
  457. package/dist/chunks/NcDashboardWidget-Da715DSB.mjs +148 -0
  458. package/dist/chunks/{NcDashboardWidget-auMQiAFt.cjs.map → NcDashboardWidget-Da715DSB.mjs.map} +1 -1
  459. package/dist/chunks/NcDashboardWidgetItem-BkJTg3kj.mjs +151 -0
  460. package/dist/chunks/{NcDashboardWidgetItem-D2yoF9Oo.mjs.map → NcDashboardWidgetItem-BkJTg3kj.mjs.map} +1 -1
  461. package/dist/chunks/NcDashboardWidgetItem-CKv_fb-1.cjs +150 -0
  462. package/dist/chunks/{NcDashboardWidgetItem-xqVAP32n.cjs.map → NcDashboardWidgetItem-CKv_fb-1.cjs.map} +1 -1
  463. package/dist/chunks/NcDateTime-CpJDGhl7.mjs +181 -0
  464. package/dist/chunks/NcDateTime-CpJDGhl7.mjs.map +1 -0
  465. package/dist/chunks/NcDateTime-Cy5Bp0d2.cjs +180 -0
  466. package/dist/chunks/NcDateTime-Cy5Bp0d2.cjs.map +1 -0
  467. package/dist/chunks/NcDialog-B3ZaXnpn.mjs +235 -0
  468. package/dist/chunks/{NcDialog-C_1rhUHk.mjs.map → NcDialog-B3ZaXnpn.mjs.map} +1 -1
  469. package/dist/chunks/NcDialog-C7KRNdTc.cjs +234 -0
  470. package/dist/chunks/{NcDialog-Ciz0hlFn.cjs.map → NcDialog-C7KRNdTc.cjs.map} +1 -1
  471. package/dist/chunks/NcDialogButton-BV3Kf9U7.mjs +79 -0
  472. package/dist/chunks/{NcDialogButton-DQFoaN7q.mjs.map → NcDialogButton-BV3Kf9U7.mjs.map} +1 -1
  473. package/dist/chunks/NcDialogButton-CLWLvwpm.cjs +78 -0
  474. package/dist/chunks/{NcDialogButton-D7ibBxsQ.cjs.map → NcDialogButton-CLWLvwpm.cjs.map} +1 -1
  475. package/dist/chunks/NcEmojiPicker-LFuZ15M5.cjs +285 -0
  476. package/dist/chunks/{NcEmojiPicker-S2pfwxlK.cjs.map → NcEmojiPicker-LFuZ15M5.cjs.map} +1 -1
  477. package/dist/chunks/NcEmojiPicker-SqbRSwu2.mjs +284 -0
  478. package/dist/chunks/{NcEmojiPicker-Cie30NYK.mjs.map → NcEmojiPicker-SqbRSwu2.mjs.map} +1 -1
  479. package/dist/chunks/NcHeaderMenu-2n5GDt37.mjs +226 -0
  480. package/dist/chunks/{NcHeaderMenu-DOGXti7v.mjs.map → NcHeaderMenu-2n5GDt37.mjs.map} +1 -1
  481. package/dist/chunks/NcHeaderMenu-830tFszI.cjs +225 -0
  482. package/dist/chunks/{NcHeaderMenu-58OTmM-5.cjs.map → NcHeaderMenu-830tFszI.cjs.map} +1 -1
  483. package/dist/chunks/NcIconSvgWrapper-KWEbPRC9.mjs +101 -0
  484. package/dist/chunks/{NcIconSvgWrapper-kIn1eQyv.cjs.map → NcIconSvgWrapper-KWEbPRC9.mjs.map} +1 -1
  485. package/dist/chunks/NcIconSvgWrapper-O61kZVNp.cjs +103 -0
  486. package/dist/chunks/{NcIconSvgWrapper-BTdzvQGV.mjs.map → NcIconSvgWrapper-O61kZVNp.cjs.map} +1 -1
  487. package/dist/chunks/NcInputConfirmCancel-CJ7nPGEd.cjs +112 -0
  488. package/dist/chunks/{NcInputConfirmCancel-DVmY85-V.cjs.map → NcInputConfirmCancel-CJ7nPGEd.cjs.map} +1 -1
  489. package/dist/chunks/NcInputConfirmCancel-XXXgXoSw.mjs +113 -0
  490. package/dist/chunks/{NcInputConfirmCancel-Nn_JgG9d.mjs.map → NcInputConfirmCancel-XXXgXoSw.mjs.map} +1 -1
  491. package/dist/chunks/NcListItem-CxpC4EKk.cjs +275 -0
  492. package/dist/chunks/{NcListItem-BopkGRDs.mjs.map → NcListItem-CxpC4EKk.cjs.map} +1 -1
  493. package/dist/chunks/NcListItem-DrTIia88.mjs +276 -0
  494. package/dist/chunks/{NcListItem-B_MPLJ_8.cjs.map → NcListItem-DrTIia88.mjs.map} +1 -1
  495. package/dist/chunks/NcListItemIcon-44A7fm62.cjs +175 -0
  496. package/dist/chunks/NcListItemIcon-44A7fm62.cjs.map +1 -0
  497. package/dist/chunks/NcListItemIcon-CTTJYWzN.mjs +176 -0
  498. package/dist/chunks/NcListItemIcon-CTTJYWzN.mjs.map +1 -0
  499. package/dist/chunks/NcPasswordField-DN-kdAfl.cjs +256 -0
  500. package/dist/chunks/{NcPasswordField-BgSp7dK4.mjs.map → NcPasswordField-DN-kdAfl.cjs.map} +1 -1
  501. package/dist/chunks/NcPasswordField-Z6BCKScy.mjs +254 -0
  502. package/dist/chunks/{NcPasswordField-BooDzf0Z.cjs.map → NcPasswordField-Z6BCKScy.mjs.map} +1 -1
  503. package/dist/chunks/NcPopover-BS1bBSkg.cjs +268 -0
  504. package/dist/chunks/{NcPopover--V3R3EKV.mjs.map → NcPopover-BS1bBSkg.cjs.map} +1 -1
  505. package/dist/chunks/NcPopover-foxJPAfG.mjs +267 -0
  506. package/dist/chunks/{NcPopover-h-t7Dnjk.cjs.map → NcPopover-foxJPAfG.mjs.map} +1 -1
  507. package/dist/chunks/NcProgressBar-BafFcKiu.mjs +117 -0
  508. package/dist/chunks/{NcProgressBar-BYk5hfPI.cjs.map → NcProgressBar-BafFcKiu.mjs.map} +1 -1
  509. package/dist/chunks/NcProgressBar-mFqoqB4L.cjs +116 -0
  510. package/dist/chunks/{NcProgressBar-DDAeXyp8.mjs.map → NcProgressBar-mFqoqB4L.cjs.map} +1 -1
  511. package/dist/chunks/NcRelatedResourcesPanel-D3QlWSNc.mjs +438 -0
  512. package/dist/chunks/{NcRelatedResourcesPanel-DaiuNCYU.cjs.map → NcRelatedResourcesPanel-D3QlWSNc.mjs.map} +1 -1
  513. package/dist/chunks/NcRelatedResourcesPanel-Dcm2wvfd.cjs +439 -0
  514. package/dist/chunks/{NcRelatedResourcesPanel-Ch1b_Gl3.mjs.map → NcRelatedResourcesPanel-Dcm2wvfd.cjs.map} +1 -1
  515. package/dist/chunks/NcRichContenteditable-BB-qsHEm.mjs +797 -0
  516. package/dist/chunks/{NcRichContenteditable-CEqdmoem.mjs.map → NcRichContenteditable-BB-qsHEm.mjs.map} +1 -1
  517. package/dist/chunks/NcRichContenteditable-DljQv8gw.cjs +800 -0
  518. package/dist/chunks/{NcRichContenteditable-BF3BkdqM.cjs.map → NcRichContenteditable-DljQv8gw.cjs.map} +1 -1
  519. package/dist/chunks/NcRichText-BDVKgmY5.cjs +419 -0
  520. package/dist/chunks/{NcRichText-DCkExl5g.cjs.map → NcRichText-BDVKgmY5.cjs.map} +1 -1
  521. package/dist/chunks/NcRichText-BT4VjvXi.mjs +412 -0
  522. package/dist/chunks/{NcRichText-CUKFkHQg.mjs.map → NcRichText-BT4VjvXi.mjs.map} +1 -1
  523. package/dist/chunks/NcSavingIndicatorIcon-Bhy7wcoT.mjs +65 -0
  524. package/dist/chunks/{NcSavingIndicatorIcon-Bf0SEmgS.mjs.map → NcSavingIndicatorIcon-Bhy7wcoT.mjs.map} +1 -1
  525. package/dist/chunks/NcSavingIndicatorIcon-BzKAIkhk.cjs +64 -0
  526. package/dist/chunks/{NcSavingIndicatorIcon-BTvUkUn-.cjs.map → NcSavingIndicatorIcon-BzKAIkhk.cjs.map} +1 -1
  527. package/dist/chunks/{NcSelect-Bo71Yd6L.mjs → NcSelect-CNm4fmR6.mjs} +159 -121
  528. package/dist/chunks/{NcSelect-Bn3oTHtq.cjs.map → NcSelect-CNm4fmR6.mjs.map} +1 -1
  529. package/dist/chunks/{NcSelect-Bn3oTHtq.cjs → NcSelect-DckQCxxX.cjs} +161 -111
  530. package/dist/chunks/{NcSelect-Bo71Yd6L.mjs.map → NcSelect-DckQCxxX.cjs.map} +1 -1
  531. package/dist/chunks/NcSelectTags-CnkBJ3vP.cjs +303 -0
  532. package/dist/chunks/{NcSelectTags-CgYWiDjX.cjs.map → NcSelectTags-CnkBJ3vP.cjs.map} +1 -1
  533. package/dist/chunks/NcSelectTags-nCqLANFH.mjs +302 -0
  534. package/dist/chunks/{NcSelectTags-9aCrLRT0.mjs.map → NcSelectTags-nCqLANFH.mjs.map} +1 -1
  535. package/dist/chunks/NcSettingsInputText-D-S5LBmN.mjs +102 -0
  536. package/dist/chunks/{NcSettingsInputText-JboV8u2l.mjs.map → NcSettingsInputText-D-S5LBmN.mjs.map} +1 -1
  537. package/dist/chunks/NcSettingsInputText-Dd3wEwGy.cjs +101 -0
  538. package/dist/chunks/{NcSettingsInputText-1i2TqdMB.cjs.map → NcSettingsInputText-Dd3wEwGy.cjs.map} +1 -1
  539. package/dist/chunks/NcSettingsSection-B0-LmypW.mjs +112 -0
  540. package/dist/chunks/NcSettingsSection-B0-LmypW.mjs.map +1 -0
  541. package/dist/chunks/NcSettingsSection-ayl3nvdL.cjs +111 -0
  542. package/dist/chunks/NcSettingsSection-ayl3nvdL.cjs.map +1 -0
  543. package/dist/chunks/NcSettingsSelectGroup-C51Km4wj.mjs +211 -0
  544. package/dist/chunks/{NcSettingsSelectGroup-DUzmbtZx.mjs.map → NcSettingsSelectGroup-C51Km4wj.mjs.map} +1 -1
  545. package/dist/chunks/NcSettingsSelectGroup-Dc7oy0Jg.cjs +213 -0
  546. package/dist/chunks/{NcSettingsSelectGroup-CgUJmyF7.cjs.map → NcSettingsSelectGroup-Dc7oy0Jg.cjs.map} +1 -1
  547. package/dist/chunks/NcTextField-BmOKGaQ4.cjs +150 -0
  548. package/dist/chunks/{NcTextField-B5cUYgRy.cjs.map → NcTextField-BmOKGaQ4.cjs.map} +1 -1
  549. package/dist/chunks/NcTextField-BmaDUUfq.mjs +151 -0
  550. package/dist/chunks/{NcTextField-D_eUEl2B.mjs.map → NcTextField-BmaDUUfq.mjs.map} +1 -1
  551. package/dist/chunks/{NcTimezonePicker-CH1lkCMF.mjs → NcTimezonePicker-BSgT2QA5.mjs} +814 -551
  552. package/dist/chunks/{NcTimezonePicker-CH1lkCMF.mjs.map → NcTimezonePicker-BSgT2QA5.mjs.map} +1 -1
  553. package/dist/chunks/{NcTimezonePicker-BF5TeadZ.cjs → NcTimezonePicker-iD8mrVb_.cjs} +814 -546
  554. package/dist/chunks/{NcTimezonePicker-BF5TeadZ.cjs.map → NcTimezonePicker-iD8mrVb_.cjs.map} +1 -1
  555. package/dist/chunks/NcUserBubble-BJp-ZBGW.mjs +211 -0
  556. package/dist/chunks/{NcUserBubble-BadEJRgs.cjs.map → NcUserBubble-BJp-ZBGW.mjs.map} +1 -1
  557. package/dist/chunks/NcUserBubble-BsQJPVXD.cjs +212 -0
  558. package/dist/chunks/{NcUserBubble-C0HbPO9p.mjs.map → NcUserBubble-BsQJPVXD.cjs.map} +1 -1
  559. package/dist/chunks/NcUserStatusIcon-Ba9ajMhK.cjs +170 -0
  560. package/dist/chunks/{NcUserStatusIcon-HOUdT_MR.mjs.map → NcUserStatusIcon-Ba9ajMhK.cjs.map} +1 -1
  561. package/dist/chunks/NcUserStatusIcon-BkO1ZAdq.mjs +168 -0
  562. package/dist/chunks/{NcUserStatusIcon-B69NZ9Hw.cjs.map → NcUserStatusIcon-BkO1ZAdq.mjs.map} +1 -1
  563. package/dist/chunks/{ScopeComponent-IO407Bzb.cjs → ScopeComponent-BpyBuaF3.cjs} +9 -4
  564. package/dist/chunks/{ScopeComponent-IO407Bzb.cjs.map → ScopeComponent-BpyBuaF3.cjs.map} +1 -1
  565. package/dist/chunks/{ScopeComponent-Dz4pyD77.mjs → ScopeComponent-Dy6ublmy.mjs} +9 -4
  566. package/dist/chunks/{ScopeComponent-Dz4pyD77.mjs.map → ScopeComponent-Dy6ublmy.mjs.map} +1 -1
  567. package/dist/chunks/_l10n-BYPqjHzt.cjs +121 -0
  568. package/dist/chunks/_l10n-BYPqjHzt.cjs.map +1 -0
  569. package/dist/chunks/_l10n-hRR5zBTZ.mjs +122 -0
  570. package/dist/chunks/_l10n-hRR5zBTZ.mjs.map +1 -0
  571. package/dist/chunks/_plugin-vue2_normalizer-D637Qkok.mjs +59 -0
  572. package/dist/chunks/_plugin-vue2_normalizer-D637Qkok.mjs.map +1 -0
  573. package/dist/chunks/_plugin-vue2_normalizer-DbFIE4_M.cjs +58 -0
  574. package/dist/chunks/_plugin-vue2_normalizer-DbFIE4_M.cjs.map +1 -0
  575. package/dist/chunks/{actionGlobal-DL1VaQzF.cjs → actionGlobal-BfK-CImU.cjs} +2 -2
  576. package/dist/chunks/{actionGlobal-D49NL940.mjs.map → actionGlobal-BfK-CImU.cjs.map} +1 -1
  577. package/dist/chunks/{actionGlobal-D49NL940.mjs → actionGlobal-DV5ZiuS0.mjs} +2 -2
  578. package/dist/chunks/{actionGlobal-DL1VaQzF.cjs.map → actionGlobal-DV5ZiuS0.mjs.map} +1 -1
  579. package/dist/chunks/{actionText-jLsEBszD.mjs → actionText-BaGktsVf.mjs} +21 -17
  580. package/dist/chunks/{actionText-jLsEBszD.mjs.map → actionText-BaGktsVf.mjs.map} +1 -1
  581. package/dist/chunks/{actionText-iWNpvZuI.cjs → actionText-BnA6RS9I.cjs} +21 -17
  582. package/dist/chunks/{actionText-iWNpvZuI.cjs.map → actionText-BnA6RS9I.cjs.map} +1 -1
  583. package/dist/chunks/autolink-Bgjz08wN.cjs +125 -0
  584. package/dist/chunks/autolink-Bgjz08wN.cjs.map +1 -0
  585. package/dist/chunks/autolink-DA7VzS8Y.mjs +126 -0
  586. package/dist/chunks/autolink-DA7VzS8Y.mjs.map +1 -0
  587. package/dist/chunks/emoji-CWr00EYY.cjs +87 -0
  588. package/dist/chunks/emoji-CWr00EYY.cjs.map +1 -0
  589. package/dist/chunks/emoji-CbOkKZx5.mjs +86 -0
  590. package/dist/chunks/emoji-CbOkKZx5.mjs.map +1 -0
  591. package/dist/chunks/{focusTrap-xauhLvvr.cjs → focusTrap-Dsmd28wG.cjs} +4 -3
  592. package/dist/chunks/{focusTrap-Be9GEB5C.mjs.map → focusTrap-Dsmd28wG.cjs.map} +1 -1
  593. package/dist/chunks/{focusTrap-Be9GEB5C.mjs → focusTrap-hWDNhn4t.mjs} +4 -3
  594. package/dist/chunks/{focusTrap-xauhLvvr.cjs.map → focusTrap-hWDNhn4t.mjs.map} +1 -1
  595. package/dist/chunks/{getAvatarUrl-BHpn8LgJ.mjs → getAvatarUrl-BBvqBOJD.mjs} +7 -7
  596. package/dist/chunks/{getAvatarUrl-BHpn8LgJ.mjs.map → getAvatarUrl-BBvqBOJD.mjs.map} +1 -1
  597. package/dist/chunks/{getAvatarUrl-CjIpoO6I.cjs → getAvatarUrl-C40xfr4C.cjs} +7 -7
  598. package/dist/chunks/{getAvatarUrl-CjIpoO6I.cjs.map → getAvatarUrl-C40xfr4C.cjs.map} +1 -1
  599. package/dist/chunks/index-BRQQ9NaL.mjs +198 -0
  600. package/dist/chunks/{index-uiNhPYvS.mjs.map → index-BRQQ9NaL.mjs.map} +1 -1
  601. package/dist/chunks/index-BwyQ2N-M.mjs +119 -0
  602. package/dist/chunks/index-BwyQ2N-M.mjs.map +1 -0
  603. package/dist/chunks/index-D0euettC.cjs +201 -0
  604. package/dist/chunks/{index-CMnR5Pf6.cjs.map → index-D0euettC.cjs.map} +1 -1
  605. package/dist/chunks/index-DYccGIvD.mjs +197 -0
  606. package/dist/chunks/{index-CnpswYi6.mjs.map → index-DYccGIvD.mjs.map} +1 -1
  607. package/dist/chunks/index-Dl-SBuhJ.cjs +196 -0
  608. package/dist/chunks/{index-Cke9rKBg.cjs.map → index-Dl-SBuhJ.cjs.map} +1 -1
  609. package/dist/chunks/index-Dsgv-f-l.cjs +118 -0
  610. package/dist/chunks/index-Dsgv-f-l.cjs.map +1 -0
  611. package/dist/chunks/{logger-D9RRY4er.cjs → logger-BcZGm6Un.cjs} +3 -3
  612. package/dist/chunks/{logger-C7qcfVW8.mjs.map → logger-BcZGm6Un.cjs.map} +1 -1
  613. package/dist/chunks/{logger-C7qcfVW8.mjs → logger-C7ZZ6zFQ.mjs} +3 -3
  614. package/dist/chunks/{logger-D9RRY4er.cjs.map → logger-C7ZZ6zFQ.mjs.map} +1 -1
  615. package/dist/chunks/referencePickerModal-CFPdv-m1.mjs +3469 -0
  616. package/dist/chunks/referencePickerModal-CFPdv-m1.mjs.map +1 -0
  617. package/dist/chunks/referencePickerModal-m0FcnvxK.cjs +3471 -0
  618. package/dist/chunks/referencePickerModal-m0FcnvxK.cjs.map +1 -0
  619. package/dist/chunks/{usernameToColor-BHkzj1tb.mjs → usernameToColor-CLlyFMmy.mjs} +22 -16
  620. package/dist/chunks/{usernameToColor-BHkzj1tb.mjs.map → usernameToColor-CLlyFMmy.mjs.map} +1 -1
  621. package/dist/chunks/usernameToColor-cfXKb46d.cjs +48 -0
  622. package/dist/chunks/{usernameToColor-DA36rR48.cjs.map → usernameToColor-cfXKb46d.cjs.map} +1 -1
  623. package/dist/composables/useFormatDateTime.d.ts +57 -0
  624. package/dist/index.cjs +284 -224
  625. package/dist/index.cjs.map +1 -1
  626. package/dist/index.mjs +287 -306
  627. package/dist/index.mjs.map +1 -1
  628. package/dist/plugin.d.ts +2 -1
  629. package/package.json +8 -8
  630. package/dist/assets/NcRichText-DNXuHl34.css +0 -229
  631. package/dist/assets/referencePickerModal-DWB2ghBg.css +0 -336
  632. package/dist/chunks/AlertCircleOutline-DHFN4OkX.cjs +0 -35
  633. package/dist/chunks/AlertCircleOutline-U_bhL30C.mjs +0 -37
  634. package/dist/chunks/ArrowLeft-CjNnGIlF.cjs +0 -35
  635. package/dist/chunks/ArrowLeft-kklNBL9z.mjs +0 -37
  636. package/dist/chunks/ArrowRight-C3BxTDjF.mjs +0 -37
  637. package/dist/chunks/ArrowRight-CxzzJJQ6.cjs +0 -35
  638. package/dist/chunks/Check-CRLmJNGG.mjs +0 -37
  639. package/dist/chunks/Check-CVn5nytg.cjs +0 -35
  640. package/dist/chunks/ChevronDown-DQPox_nl.cjs +0 -35
  641. package/dist/chunks/ChevronDown-HHJdUMN4.mjs +0 -37
  642. package/dist/chunks/ChevronRight-BAJhNawb.cjs +0 -35
  643. package/dist/chunks/ChevronRight-DL3e8bjj.mjs +0 -37
  644. package/dist/chunks/ChevronUp-B6TIgl1a.mjs +0 -37
  645. package/dist/chunks/ChevronUp-kmHRpe7H.cjs +0 -35
  646. package/dist/chunks/Close-BtO5TPBO.mjs +0 -37
  647. package/dist/chunks/Close-DBfrdXMw.cjs +0 -35
  648. package/dist/chunks/DotsHorizontal-B8kTqpHe.cjs +0 -35
  649. package/dist/chunks/DotsHorizontal-DfVgEXgz.mjs +0 -37
  650. package/dist/chunks/GenColors-hkqGpnOK.cjs +0 -141
  651. package/dist/chunks/NcActionButtonGroup-B1XhnIBl.cjs +0 -46
  652. package/dist/chunks/NcActionButtonGroup-DU1taycQ.mjs +0 -50
  653. package/dist/chunks/NcActionInput-53RB9uQe.mjs +0 -244
  654. package/dist/chunks/NcActionInput-N2wrvq5K.cjs +0 -235
  655. package/dist/chunks/NcActions-BtvXtZF4.cjs +0 -688
  656. package/dist/chunks/NcActions-BtvXtZF4.cjs.map +0 -1
  657. package/dist/chunks/NcActions-DiFslXqv.mjs +0 -696
  658. package/dist/chunks/NcActions-DiFslXqv.mjs.map +0 -1
  659. package/dist/chunks/NcAppContent-BDhK1rUf.mjs +0 -265
  660. package/dist/chunks/NcAppContent-Be1m1O_W.cjs +0 -256
  661. package/dist/chunks/NcAppNavigation-CElLRpH-.mjs +0 -124
  662. package/dist/chunks/NcAppNavigation-DKUnWfen.cjs +0 -115
  663. package/dist/chunks/NcAppNavigationCaption-Cdcv-0jj.cjs +0 -58
  664. package/dist/chunks/NcAppNavigationCaption-Cdcv-0jj.cjs.map +0 -1
  665. package/dist/chunks/NcAppNavigationCaption-DI7SIPdI.mjs +0 -61
  666. package/dist/chunks/NcAppNavigationCaption-DI7SIPdI.mjs.map +0 -1
  667. package/dist/chunks/NcAppNavigationItem-7xN_CMHW.cjs +0 -463
  668. package/dist/chunks/NcAppNavigationItem-7xN_CMHW.cjs.map +0 -1
  669. package/dist/chunks/NcAppNavigationItem-Djfc0DPY.mjs +0 -475
  670. package/dist/chunks/NcAppNavigationItem-Djfc0DPY.mjs.map +0 -1
  671. package/dist/chunks/NcAppNavigationNewItem-5B4-U2NI.cjs +0 -87
  672. package/dist/chunks/NcAppNavigationNewItem-CN3vYnc_.mjs +0 -91
  673. package/dist/chunks/NcAppNavigationSettings-Cnr4jYzW.cjs +0 -104
  674. package/dist/chunks/NcAppNavigationSettings-LmpAoM-x.mjs +0 -106
  675. package/dist/chunks/NcAppNavigationToggle-B5XmO21v.cjs +0 -119
  676. package/dist/chunks/NcAppNavigationToggle-D0oeWL17.mjs +0 -122
  677. package/dist/chunks/NcAppSettingsDialog-B6crPJ6a.cjs +0 -184
  678. package/dist/chunks/NcAppSettingsDialog-BLOgrVCz.mjs +0 -191
  679. package/dist/chunks/NcAppSidebar-CqER6-dl.mjs +0 -606
  680. package/dist/chunks/NcAppSidebar-CqER6-dl.mjs.map +0 -1
  681. package/dist/chunks/NcAppSidebar-qC5-u1p0.cjs +0 -588
  682. package/dist/chunks/NcAppSidebar-qC5-u1p0.cjs.map +0 -1
  683. package/dist/chunks/NcAvatar-BBhoG-za.mjs +0 -486
  684. package/dist/chunks/NcAvatar-BBhoG-za.mjs.map +0 -1
  685. package/dist/chunks/NcAvatar-BuqOk4mX.cjs +0 -467
  686. package/dist/chunks/NcAvatar-BuqOk4mX.cjs.map +0 -1
  687. package/dist/chunks/NcBreadcrumb-BRpLGeLr.cjs +0 -180
  688. package/dist/chunks/NcBreadcrumb-BxCf2hEA.mjs +0 -186
  689. package/dist/chunks/NcBreadcrumbs-BKPXzHC1.cjs +0 -412
  690. package/dist/chunks/NcBreadcrumbs-BmK-6Q-n.mjs +0 -422
  691. package/dist/chunks/NcCheckboxRadioSwitch-B9w3Znu7.cjs +0 -603
  692. package/dist/chunks/NcCheckboxRadioSwitch-B9w3Znu7.cjs.map +0 -1
  693. package/dist/chunks/NcCheckboxRadioSwitch-BOl1O2zi.mjs +0 -607
  694. package/dist/chunks/NcCheckboxRadioSwitch-BOl1O2zi.mjs.map +0 -1
  695. package/dist/chunks/NcCheckboxRadioSwitch.vue_vue_type_style_index_0_scoped_2603be83_lang-CCwH-BzH.mjs +0 -3
  696. package/dist/chunks/NcCheckboxRadioSwitch.vue_vue_type_style_index_0_scoped_2603be83_lang-CCwH-BzH.mjs.map +0 -1
  697. package/dist/chunks/NcCheckboxRadioSwitch.vue_vue_type_style_index_0_scoped_2603be83_lang-DAxGPyzS.cjs +0 -4
  698. package/dist/chunks/NcCheckboxRadioSwitch.vue_vue_type_style_index_0_scoped_2603be83_lang-DAxGPyzS.cjs.map +0 -1
  699. package/dist/chunks/NcColorPicker-CeoImUTC.mjs +0 -178
  700. package/dist/chunks/NcColorPicker-CeoImUTC.mjs.map +0 -1
  701. package/dist/chunks/NcColorPicker-DOcxlY35.cjs +0 -168
  702. package/dist/chunks/NcColorPicker-DOcxlY35.cjs.map +0 -1
  703. package/dist/chunks/NcContent-BPA0KfuT.mjs +0 -87
  704. package/dist/chunks/NcContent-DbFAEdX_.cjs +0 -80
  705. package/dist/chunks/NcDashboardWidget-2-nW7dII.mjs +0 -141
  706. package/dist/chunks/NcDashboardWidget-auMQiAFt.cjs +0 -135
  707. package/dist/chunks/NcDashboardWidgetItem-D2yoF9Oo.mjs +0 -143
  708. package/dist/chunks/NcDashboardWidgetItem-xqVAP32n.cjs +0 -138
  709. package/dist/chunks/NcDateTime-CeOdKcvC.mjs +0 -146
  710. package/dist/chunks/NcDateTime-CeOdKcvC.mjs.map +0 -1
  711. package/dist/chunks/NcDateTime-DneyKibb.cjs +0 -142
  712. package/dist/chunks/NcDateTime-DneyKibb.cjs.map +0 -1
  713. package/dist/chunks/NcDialog-C_1rhUHk.mjs +0 -214
  714. package/dist/chunks/NcDialog-Ciz0hlFn.cjs +0 -207
  715. package/dist/chunks/NcDialogButton-D7ibBxsQ.cjs +0 -69
  716. package/dist/chunks/NcDialogButton-DQFoaN7q.mjs +0 -74
  717. package/dist/chunks/NcEmojiPicker-Cie30NYK.mjs +0 -251
  718. package/dist/chunks/NcEmojiPicker-S2pfwxlK.cjs +0 -241
  719. package/dist/chunks/NcHeaderMenu-58OTmM-5.cjs +0 -187
  720. package/dist/chunks/NcHeaderMenu-DOGXti7v.mjs +0 -193
  721. package/dist/chunks/NcIconSvgWrapper-BTdzvQGV.mjs +0 -93
  722. package/dist/chunks/NcIconSvgWrapper-kIn1eQyv.cjs +0 -89
  723. package/dist/chunks/NcInputConfirmCancel-DVmY85-V.cjs +0 -92
  724. package/dist/chunks/NcInputConfirmCancel-Nn_JgG9d.mjs +0 -97
  725. package/dist/chunks/NcListItem-B_MPLJ_8.cjs +0 -233
  726. package/dist/chunks/NcListItem-BopkGRDs.mjs +0 -238
  727. package/dist/chunks/NcListItemIcon-CI23iFQz.mjs +0 -166
  728. package/dist/chunks/NcListItemIcon-CI23iFQz.mjs.map +0 -1
  729. package/dist/chunks/NcListItemIcon-Dwgi2cPr.cjs +0 -163
  730. package/dist/chunks/NcListItemIcon-Dwgi2cPr.cjs.map +0 -1
  731. package/dist/chunks/NcPasswordField-BgSp7dK4.mjs +0 -238
  732. package/dist/chunks/NcPasswordField-BooDzf0Z.cjs +0 -229
  733. package/dist/chunks/NcPopover--V3R3EKV.mjs +0 -239
  734. package/dist/chunks/NcPopover-h-t7Dnjk.cjs +0 -233
  735. package/dist/chunks/NcProgressBar-BYk5hfPI.cjs +0 -96
  736. package/dist/chunks/NcProgressBar-DDAeXyp8.mjs +0 -99
  737. package/dist/chunks/NcRelatedResourcesPanel-Ch1b_Gl3.mjs +0 -381
  738. package/dist/chunks/NcRelatedResourcesPanel-DaiuNCYU.cjs +0 -371
  739. package/dist/chunks/NcRichContenteditable-BF3BkdqM.cjs +0 -640
  740. package/dist/chunks/NcRichContenteditable-CEqdmoem.mjs +0 -649
  741. package/dist/chunks/NcRichText-CUKFkHQg.mjs +0 -355
  742. package/dist/chunks/NcRichText-DCkExl5g.cjs +0 -339
  743. package/dist/chunks/NcSavingIndicatorIcon-BTvUkUn-.cjs +0 -59
  744. package/dist/chunks/NcSavingIndicatorIcon-Bf0SEmgS.mjs +0 -62
  745. package/dist/chunks/NcSelectTags-9aCrLRT0.mjs +0 -258
  746. package/dist/chunks/NcSelectTags-CgYWiDjX.cjs +0 -252
  747. package/dist/chunks/NcSettingsInputText-1i2TqdMB.cjs +0 -92
  748. package/dist/chunks/NcSettingsInputText-JboV8u2l.mjs +0 -95
  749. package/dist/chunks/NcSettingsSection-CNMpCD3o.cjs +0 -96
  750. package/dist/chunks/NcSettingsSection-CNMpCD3o.cjs.map +0 -1
  751. package/dist/chunks/NcSettingsSection-Lgwm3w2e.mjs +0 -98
  752. package/dist/chunks/NcSettingsSection-Lgwm3w2e.mjs.map +0 -1
  753. package/dist/chunks/NcSettingsSelectGroup-CgUJmyF7.cjs +0 -185
  754. package/dist/chunks/NcSettingsSelectGroup-DUzmbtZx.mjs +0 -192
  755. package/dist/chunks/NcTextField-B5cUYgRy.cjs +0 -140
  756. package/dist/chunks/NcTextField-D_eUEl2B.mjs +0 -146
  757. package/dist/chunks/NcUserBubble-BadEJRgs.cjs +0 -193
  758. package/dist/chunks/NcUserBubble-C0HbPO9p.mjs +0 -198
  759. package/dist/chunks/NcUserStatusIcon-B69NZ9Hw.cjs +0 -150
  760. package/dist/chunks/NcUserStatusIcon-HOUdT_MR.mjs +0 -157
  761. package/dist/chunks/_l10n-B8iumFKB.cjs +0 -66
  762. package/dist/chunks/_l10n-B8iumFKB.cjs.map +0 -1
  763. package/dist/chunks/_l10n-BaNxGGXy.mjs +0 -68
  764. package/dist/chunks/_l10n-BaNxGGXy.mjs.map +0 -1
  765. package/dist/chunks/_plugin-vue2_normalizer-Bj5bLKV4.mjs +0 -32
  766. package/dist/chunks/_plugin-vue2_normalizer-Bj5bLKV4.mjs.map +0 -1
  767. package/dist/chunks/_plugin-vue2_normalizer-GXKvuwrq.cjs +0 -31
  768. package/dist/chunks/_plugin-vue2_normalizer-GXKvuwrq.cjs.map +0 -1
  769. package/dist/chunks/autolink-DNGB8YSW.mjs +0 -86
  770. package/dist/chunks/autolink-DNGB8YSW.mjs.map +0 -1
  771. package/dist/chunks/autolink-MMzlO_Ai.cjs +0 -82
  772. package/dist/chunks/autolink-MMzlO_Ai.cjs.map +0 -1
  773. package/dist/chunks/emoji-DEH9dtOa.cjs +0 -59
  774. package/dist/chunks/emoji-DEH9dtOa.cjs.map +0 -1
  775. package/dist/chunks/emoji-k4gWHxrE.mjs +0 -62
  776. package/dist/chunks/emoji-k4gWHxrE.mjs.map +0 -1
  777. package/dist/chunks/index-Bh9FEWbr.cjs +0 -87
  778. package/dist/chunks/index-Bh9FEWbr.cjs.map +0 -1
  779. package/dist/chunks/index-CMnR5Pf6.cjs +0 -157
  780. package/dist/chunks/index-CU14QsCg.mjs +0 -88
  781. package/dist/chunks/index-CU14QsCg.mjs.map +0 -1
  782. package/dist/chunks/index-Cke9rKBg.cjs +0 -148
  783. package/dist/chunks/index-CnpswYi6.mjs +0 -149
  784. package/dist/chunks/index-uiNhPYvS.mjs +0 -163
  785. package/dist/chunks/referencePickerModal-AvSHyw1b.mjs +0 -2428
  786. package/dist/chunks/referencePickerModal-AvSHyw1b.mjs.map +0 -1
  787. package/dist/chunks/referencePickerModal-B_Su3XpN.cjs +0 -2408
  788. package/dist/chunks/referencePickerModal-B_Su3XpN.cjs.map +0 -1
  789. package/dist/chunks/usernameToColor-DA36rR48.cjs +0 -39
@@ -1 +1 @@
1
- {"version":3,"file":"index-CMnR5Pf6.cjs","sources":["../../src/components/NcRichContenteditable/NcMentionBubble.vue","../../src/mixins/richEditor/index.js"],"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<span :class=\"{'mention-bubble--primary': primary}\"\n\t\tclass=\"mention-bubble\"\n\t\tcontenteditable=\"false\">\n\t\t<span class=\"mention-bubble__wrapper\">\n\t\t\t<span class=\"mention-bubble__content\">\n\t\t\t\t<!-- Avatar or icon -->\n\t\t\t\t<span :class=\"[icon, `mention-bubble__icon--${avatarUrl ? 'with-avatar' : ''}`]\"\n\t\t\t\t\t:style=\"avatarUrl ? { backgroundImage: `url(${avatarUrl})` } : null\"\n\t\t\t\t\tclass=\"mention-bubble__icon\" />\n\n\t\t\t\t<!-- Title -->\n\t\t\t\t<span role=\"heading\" class=\"mention-bubble__title\" :title=\"labelWithFallback\" />\n\t\t\t</span>\n\n\t\t\t<!-- Selectable text for copy/paste -->\n\t\t\t<span role=\"none\" class=\"mention-bubble__select\">{{ mentionText }}</span>\n\t\t</span>\n\t</span>\n</template>\n\n<script>\nimport { getAvatarUrl } from '../../utils/getAvatarUrl.ts'\n\nexport default {\n\tname: 'NcMentionBubble',\n\n\tprops: {\n\t\tid: {\n\t\t\ttype: String,\n\t\t\trequired: true,\n\t\t},\n\t\t/**\n\t\t * @deprecated Use `label` instead\n\t\t */\n\t\ttitle: {\n\t\t\ttype: String,\n\t\t\trequired: false,\n\t\t\tdefault: null,\n\t\t},\n\t\tlabel: {\n\t\t\ttype: String,\n\t\t\trequired: false,\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, null],\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\tprimary: {\n\t\t\ttype: Boolean,\n\t\t\tdefault: false,\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\tmentionText() {\n\t\t\treturn !this.id.includes(' ') && !this.id.includes('/')\n\t\t\t\t? `@${this.id}`\n\t\t\t\t: `@\"${this.id}\"`\n\t\t},\n\t\t// Fallback to title for compatibility\n\t\tlabelWithFallback() {\n\t\t\treturn this.label || this.title\n\t\t},\n\t},\n\n\tmethods: {\n\t\tgetAvatarUrl,\n\t},\n}\n</script>\n\n<style lang=\"scss\" scoped>\n$bubble-height: 20px;\n$bubble-max-width: 150px;\n$bubble-padding: 2px;\n$bubble-avatar-size: $bubble-height - 2 * $bubble-padding;\n\n.mention-bubble {\n\t&--primary &__content {\n\t\tcolor: var(--color-primary-element-text);\n\t\tbackground-color: var(--color-primary-element);\n\t}\n\n\t&__wrapper {\n\t\tmax-width: $bubble-max-width;\n\t\t// Align with text\n\t\theight: $bubble-height - $bubble-padding;\n\t\tvertical-align: text-bottom;\n\t\tdisplay: inline-flex;\n\t\talign-items: center;\n\t}\n\n\t&__content {\n\t\tdisplay: inline-flex;\n\t\toverflow: hidden;\n\t\talign-items: center;\n\t\tmax-width: 100%;\n\t\theight: $bubble-height ;\n\t\t-webkit-user-select: none;\n\t\tuser-select: none;\n\t\tpadding-right: $bubble-padding * 3;\n\t\tpadding-left: $bubble-padding;\n\t\tborder-radius: math.div($bubble-height, 2);\n\t\tbackground-color: var(--color-background-dark);\n\t}\n\n\t&__icon {\n\t\tposition: relative;\n\t\twidth: $bubble-avatar-size;\n\t\theight: $bubble-avatar-size;\n\t\tborder-radius: math.div($bubble-avatar-size, 2);\n\t\tbackground-color: var(--color-background-darker);\n\t\tbackground-repeat: no-repeat;\n\t\tbackground-position: center;\n\t\tbackground-size: $bubble-avatar-size - 2 * $bubble-padding;\n\n\t\t&--with-avatar {\n\t\t\tcolor: inherit;\n\t\t\tbackground-size: cover;\n\t\t}\n\t}\n\n\t&__title {\n\t\toverflow: hidden;\n\t\tmargin-left: $bubble-padding;\n\t\twhite-space: nowrap;\n\t\ttext-overflow: ellipsis;\n\t\t// Put title in ::before so it is not selectable\n\t\t&::before {\n\t\t\tcontent: attr(title);\n\t\t}\n\t}\n\n\t// Hide the mention id so it is selectable\n\t&__select {\n\t\tposition: absolute;\n\t\tz-index: -1;\n\t\tleft: -1000px;\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 AGPL-3.0-or-later\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\nimport NcMentionBubble from '../../components/NcRichContenteditable/NcMentionBubble.vue'\nimport Linkify from '../../utils/Linkify.js'\n\nimport escapeHtml from 'escape-html'\nimport stripTags from 'striptags'\nimport Vue from 'vue'\n\n// Referenced from public function getMentions(): https://github.com/nextcloud/server/blob/master/lib/private/Comments/Comment.php\n// Beginning or whitespace. Non-capturing group within word boundary\nconst MENTION_START = /\\B(?<![^a-z0-9_\\-@.'\\s])/.source\n// Capturing groups like: @user-id, @\"guest/abc16def\", @\"federated_user/user-id\", @\"user-id with space\"\nconst MENTION_SIMPLE = /(@[a-z0-9_\\-@.']+)/.source\nconst MENTION_GUEST = /@&quot;guest\\/[a-f0-9]+&quot;/.source\nconst MENTION_PREFIXED = /@&quot;(?:federated_)?(?:group|team|user){1}\\/[a-z0-9_\\-@.' /:]+&quot;/.source\nconst MENTION_WITH_SPACE = /@&quot;[a-z0-9_\\-@.' ]+&quot;/.source\nconst MENTION_COMPLEX = `(${MENTION_GUEST}|${MENTION_PREFIXED}|${MENTION_WITH_SPACE})`\n// Concatenated regular expressions\nexport const USERID_REGEX = new RegExp(`${MENTION_START}${MENTION_SIMPLE}`, 'gi')\nexport const USERID_REGEX_WITH_SPACE = new RegExp(`${MENTION_START}${MENTION_COMPLEX}`, 'gi')\n\nexport default {\n\tprops: {\n\t\tuserData: {\n\t\t\ttype: Object,\n\t\t\tdefault: () => ({}),\n\t\t},\n\t},\n\tmethods: {\n\t\t/**\n\t\t * Convert the value string to html for the inner content\n\t\t *\n\t\t * @param {string} value the content without html\n\t\t * @return {string} rendered html\n\t\t */\n\t\trenderContent(value) {\n\t\t\t// Sanitize the value prop\n\t\t\tconst sanitizedValue = escapeHtml(value)\n\n\t\t\t// Extract all the userIds\n\t\t\tconst splitValue = sanitizedValue.split(USERID_REGEX)\n\t\t\t\t.map(part => part.split(USERID_REGEX_WITH_SPACE)).flat()\n\n\t\t\t// Replace userIds by html\n\t\t\treturn splitValue\n\t\t\t\t.map(part => {\n\t\t\t\t\t// When splitting, the string is always putting the userIds\n\t\t\t\t\t// on the uneven indexes. We only want to generate the mentions html\n\t\t\t\t\tif (!part.startsWith('@')) {\n\t\t\t\t\t\t// This part doesn't contain a mention, let's make sure links are parsed\n\t\t\t\t\t\treturn Linkify(part)\n\t\t\t\t\t}\n\n\t\t\t\t\t// Extracting the id, nuking the leading @ and all \"\n\t\t\t\t\tconst id = part.slice(1).replace(/&quot;/gi, '')\n\t\t\t\t\t// Compiling template and prepend with the space we removed during the split\n\t\t\t\t\treturn this.genSelectTemplate(id)\n\t\t\t\t})\n\t\t\t\t.join('')\n\t\t\t\t.replace(/\\n/gmi, '<br>')\n\t\t\t\t.replace(/&amp;/gmi, '&')\n\t\t},\n\n\t\t/**\n\t\t * Convert the innerHtml content to a string with mentions as text\n\t\t *\n\t\t * @param {string} content the content without html\n\t\t * @return {string}\n\t\t */\n\t\tparseContent(content) {\n\t\t\tlet text = content\n\t\t\t// Consecutive spaces in HTML tags should collapse\n\t\t\ttext = text.replace(/>\\s+</g, '><')\n\t\t\t// Replace break lines with new lines\n\t\t\ttext = text.replace(/<br>/gmi, '\\n')\n\t\t\t// Replace some html special characters\n\t\t\ttext = text.replace(/&nbsp;/gmi, ' ')\n\t\t\ttext = text.replace(/&amp;/gmi, '&')\n\n\t\t\t// Convert the mentions to text only\n\t\t\t// first we replace divs with new lines\n\t\t\ttext = text.replace(/<\\/div>/gmi, '\\n')\n\t\t\t// then we remove all leftover html\n\t\t\ttext = stripTags(text, '<div>')\n\t\t\ttext = stripTags(text)\n\n\t\t\treturn text\n\t\t},\n\n\t\t/**\n\t\t * Generate an autocompletion popup entry template\n\t\t *\n\t\t * @param {string} value the value to match against the userData\n\t\t * @return {string}\n\t\t */\n\t\tgenSelectTemplate(value) {\n\t\t\t// The value returned by this function will replace the trigger '@'\n\t\t\t// and the search text, so when there is no match we simply return\n\t\t\t// '@' and the text.\n\t\t\tif (typeof value === 'undefined') {\n\t\t\t\treturn `${this.autocompleteTribute.current.collection.trigger}${this.autocompleteTribute.current.mentionText}`\n\t\t\t}\n\n\t\t\tconst data = this.userData[value]\n\n\t\t\t// Fallback to @mention in case no data matches\n\t\t\tif (!data) {\n\t\t\t\t// return @value if matches MENTION_SIMPLE, @\"value\" otherwise\n\t\t\t\treturn [' ', '/', ':'].every(char => !value.includes(char))\n\t\t\t\t\t? `@${value}`\n\t\t\t\t\t: `@\"${value}\"`\n\t\t\t}\n\n\t\t\t// Return template and make sure we strip of new lines and tabs\n\t\t\treturn this.renderComponentHtml(data, NcMentionBubble).replace(/[\\n\\t]/gmi, '')\n\t\t},\n\n\t\t/**\n\t\t * Render a component and return its html content\n\t\t *\n\t\t * @param {object} propsData the props to pass to the component\n\t\t * @param {object} component the component to render\n\t\t * @return {string} the rendered html\n\t\t */\n\t\trenderComponentHtml(propsData, component) {\n\t\t\tconst View = Vue.extend(component)\n\t\t\tconst Item = new View({\n\t\t\t\tpropsData,\n\t\t\t})\n\n\t\t\t// Prepare mountpoint\n\t\t\tconst wrapper = document.createElement('div')\n\t\t\tconst mount = document.createElement('div')\n\t\t\twrapper.style.display = 'none'\n\t\t\twrapper.appendChild(mount)\n\t\t\tdocument.body.appendChild(wrapper)\n\n\t\t\t// Mount and get raw html\n\t\t\tItem.$mount(mount)\n\t\t\tconst renderedHtml = wrapper.innerHTML\n\n\t\t\t// Destroy\n\t\t\tItem.$destroy()\n\t\t\twrapper.remove()\n\n\t\t\treturn renderedHtml\n\t\t},\n\t},\n}\n"],"names":["_sfc_main","getAvatarUrl","MENTION_START","MENTION_SIMPLE","MENTION_GUEST","MENTION_PREFIXED","MENTION_WITH_SPACE","MENTION_COMPLEX","USERID_REGEX","USERID_REGEX_WITH_SPACE","richEditor","value","escapeHtml","part","Linkify","id","content","text","stripTags","data","NcMentionBubble","char","propsData","component","View","Vue","Item","wrapper","mount","renderedHtml"],"mappings":"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"}
1
+ {"version":3,"file":"index-D0euettC.cjs","sources":["../../src/components/NcRichContenteditable/NcMentionBubble.vue","../../src/mixins/richEditor/index.js"],"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<span :class=\"{'mention-bubble--primary': primary}\"\n\t\tclass=\"mention-bubble\"\n\t\tcontenteditable=\"false\">\n\t\t<span class=\"mention-bubble__wrapper\">\n\t\t\t<span class=\"mention-bubble__content\">\n\t\t\t\t<!-- Avatar or icon -->\n\t\t\t\t<span :class=\"[icon, `mention-bubble__icon--${avatarUrl ? 'with-avatar' : ''}`]\"\n\t\t\t\t\t:style=\"avatarUrl ? { backgroundImage: `url(${avatarUrl})` } : null\"\n\t\t\t\t\tclass=\"mention-bubble__icon\" />\n\n\t\t\t\t<!-- Title -->\n\t\t\t\t<span role=\"heading\" class=\"mention-bubble__title\" :title=\"labelWithFallback\" />\n\t\t\t</span>\n\n\t\t\t<!-- Selectable text for copy/paste -->\n\t\t\t<span role=\"none\" class=\"mention-bubble__select\">{{ mentionText }}</span>\n\t\t</span>\n\t</span>\n</template>\n\n<script>\nimport { getAvatarUrl } from '../../utils/getAvatarUrl.ts'\n\nexport default {\n\tname: 'NcMentionBubble',\n\n\tprops: {\n\t\tid: {\n\t\t\ttype: String,\n\t\t\trequired: true,\n\t\t},\n\t\t/**\n\t\t * @deprecated Use `label` instead\n\t\t */\n\t\ttitle: {\n\t\t\ttype: String,\n\t\t\trequired: false,\n\t\t\tdefault: null,\n\t\t},\n\t\tlabel: {\n\t\t\ttype: String,\n\t\t\trequired: false,\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, null],\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\tprimary: {\n\t\t\ttype: Boolean,\n\t\t\tdefault: false,\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\tmentionText() {\n\t\t\treturn !this.id.includes(' ') && !this.id.includes('/')\n\t\t\t\t? `@${this.id}`\n\t\t\t\t: `@\"${this.id}\"`\n\t\t},\n\t\t// Fallback to title for compatibility\n\t\tlabelWithFallback() {\n\t\t\treturn this.label || this.title\n\t\t},\n\t},\n\n\tmethods: {\n\t\tgetAvatarUrl,\n\t},\n}\n</script>\n\n<style lang=\"scss\" scoped>\n$bubble-height: 20px;\n$bubble-max-width: 150px;\n$bubble-padding: 2px;\n$bubble-avatar-size: $bubble-height - 2 * $bubble-padding;\n\n.mention-bubble {\n\t&--primary &__content {\n\t\tcolor: var(--color-primary-element-text);\n\t\tbackground-color: var(--color-primary-element);\n\t}\n\n\t&__wrapper {\n\t\tmax-width: $bubble-max-width;\n\t\t// Align with text\n\t\theight: $bubble-height - $bubble-padding;\n\t\tvertical-align: text-bottom;\n\t\tdisplay: inline-flex;\n\t\talign-items: center;\n\t}\n\n\t&__content {\n\t\tdisplay: inline-flex;\n\t\toverflow: hidden;\n\t\talign-items: center;\n\t\tmax-width: 100%;\n\t\theight: $bubble-height ;\n\t\t-webkit-user-select: none;\n\t\tuser-select: none;\n\t\tpadding-right: $bubble-padding * 3;\n\t\tpadding-left: $bubble-padding;\n\t\tborder-radius: math.div($bubble-height, 2);\n\t\tbackground-color: var(--color-background-dark);\n\t}\n\n\t&__icon {\n\t\tposition: relative;\n\t\twidth: $bubble-avatar-size;\n\t\theight: $bubble-avatar-size;\n\t\tborder-radius: math.div($bubble-avatar-size, 2);\n\t\tbackground-color: var(--color-background-darker);\n\t\tbackground-repeat: no-repeat;\n\t\tbackground-position: center;\n\t\tbackground-size: $bubble-avatar-size - 2 * $bubble-padding;\n\n\t\t&--with-avatar {\n\t\t\tcolor: inherit;\n\t\t\tbackground-size: cover;\n\t\t}\n\t}\n\n\t&__title {\n\t\toverflow: hidden;\n\t\tmargin-left: $bubble-padding;\n\t\twhite-space: nowrap;\n\t\ttext-overflow: ellipsis;\n\t\t// Put title in ::before so it is not selectable\n\t\t&::before {\n\t\t\tcontent: attr(title);\n\t\t}\n\t}\n\n\t// Hide the mention id so it is selectable\n\t&__select {\n\t\tposition: absolute;\n\t\tz-index: -1;\n\t\tleft: -1000px;\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 AGPL-3.0-or-later\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\nimport NcMentionBubble from '../../components/NcRichContenteditable/NcMentionBubble.vue'\nimport Linkify from '../../utils/Linkify.js'\n\nimport escapeHtml from 'escape-html'\nimport stripTags from 'striptags'\nimport Vue from 'vue'\n\n// Referenced from public function getMentions(): https://github.com/nextcloud/server/blob/master/lib/private/Comments/Comment.php\n// Beginning or whitespace. Non-capturing group within word boundary\nconst MENTION_START = /\\B(?<![^a-z0-9_\\-@.'\\s])/.source\n// Capturing groups like: @user-id, @\"guest/abc16def\", @\"federated_user/user-id\", @\"user-id with space\"\nconst MENTION_SIMPLE = /(@[a-z0-9_\\-@.']+)/.source\nconst MENTION_GUEST = /@&quot;guest\\/[a-f0-9]+&quot;/.source\nconst MENTION_PREFIXED = /@&quot;(?:federated_)?(?:group|team|user){1}\\/[a-z0-9_\\-@.' /:]+&quot;/.source\nconst MENTION_WITH_SPACE = /@&quot;[a-z0-9_\\-@.' ]+&quot;/.source\nconst MENTION_COMPLEX = `(${MENTION_GUEST}|${MENTION_PREFIXED}|${MENTION_WITH_SPACE})`\n// Concatenated regular expressions\nexport const USERID_REGEX = new RegExp(`${MENTION_START}${MENTION_SIMPLE}`, 'gi')\nexport const USERID_REGEX_WITH_SPACE = new RegExp(`${MENTION_START}${MENTION_COMPLEX}`, 'gi')\n\nexport default {\n\tprops: {\n\t\tuserData: {\n\t\t\ttype: Object,\n\t\t\tdefault: () => ({}),\n\t\t},\n\t},\n\tmethods: {\n\t\t/**\n\t\t * Convert the value string to html for the inner content\n\t\t *\n\t\t * @param {string} value the content without html\n\t\t * @return {string} rendered html\n\t\t */\n\t\trenderContent(value) {\n\t\t\t// Sanitize the value prop\n\t\t\tconst sanitizedValue = escapeHtml(value)\n\n\t\t\t// Extract all the userIds\n\t\t\tconst splitValue = sanitizedValue.split(USERID_REGEX)\n\t\t\t\t.map(part => part.split(USERID_REGEX_WITH_SPACE)).flat()\n\n\t\t\t// Replace userIds by html\n\t\t\treturn splitValue\n\t\t\t\t.map(part => {\n\t\t\t\t\t// When splitting, the string is always putting the userIds\n\t\t\t\t\t// on the uneven indexes. We only want to generate the mentions html\n\t\t\t\t\tif (!part.startsWith('@')) {\n\t\t\t\t\t\t// This part doesn't contain a mention, let's make sure links are parsed\n\t\t\t\t\t\treturn Linkify(part)\n\t\t\t\t\t}\n\n\t\t\t\t\t// Extracting the id, nuking the leading @ and all \"\n\t\t\t\t\tconst id = part.slice(1).replace(/&quot;/gi, '')\n\t\t\t\t\t// Compiling template and prepend with the space we removed during the split\n\t\t\t\t\treturn this.genSelectTemplate(id)\n\t\t\t\t})\n\t\t\t\t.join('')\n\t\t\t\t.replace(/\\n/gmi, '<br>')\n\t\t\t\t.replace(/&amp;/gmi, '&')\n\t\t},\n\n\t\t/**\n\t\t * Convert the innerHtml content to a string with mentions as text\n\t\t *\n\t\t * @param {string} content the content without html\n\t\t * @return {string}\n\t\t */\n\t\tparseContent(content) {\n\t\t\tlet text = content\n\t\t\t// Consecutive spaces in HTML tags should collapse\n\t\t\ttext = text.replace(/>\\s+</g, '><')\n\t\t\t// Replace break lines with new lines\n\t\t\ttext = text.replace(/<br>/gmi, '\\n')\n\t\t\t// Replace some html special characters\n\t\t\ttext = text.replace(/&nbsp;/gmi, ' ')\n\t\t\ttext = text.replace(/&amp;/gmi, '&')\n\n\t\t\t// Convert the mentions to text only\n\t\t\t// first we replace divs with new lines\n\t\t\ttext = text.replace(/<\\/div>/gmi, '\\n')\n\t\t\t// then we remove all leftover html\n\t\t\ttext = stripTags(text, '<div>')\n\t\t\ttext = stripTags(text)\n\n\t\t\treturn text\n\t\t},\n\n\t\t/**\n\t\t * Generate an autocompletion popup entry template\n\t\t *\n\t\t * @param {string} value the value to match against the userData\n\t\t * @return {string}\n\t\t */\n\t\tgenSelectTemplate(value) {\n\t\t\t// The value returned by this function will replace the trigger '@'\n\t\t\t// and the search text, so when there is no match we simply return\n\t\t\t// '@' and the text.\n\t\t\tif (typeof value === 'undefined') {\n\t\t\t\treturn `${this.autocompleteTribute.current.collection.trigger}${this.autocompleteTribute.current.mentionText}`\n\t\t\t}\n\n\t\t\tconst data = this.userData[value]\n\n\t\t\t// Fallback to @mention in case no data matches\n\t\t\tif (!data) {\n\t\t\t\t// return @value if matches MENTION_SIMPLE, @\"value\" otherwise\n\t\t\t\treturn [' ', '/', ':'].every(char => !value.includes(char))\n\t\t\t\t\t? `@${value}`\n\t\t\t\t\t: `@\"${value}\"`\n\t\t\t}\n\n\t\t\t// Return template and make sure we strip of new lines and tabs\n\t\t\treturn this.renderComponentHtml(data, NcMentionBubble).replace(/[\\n\\t]/gmi, '')\n\t\t},\n\n\t\t/**\n\t\t * Render a component and return its html content\n\t\t *\n\t\t * @param {object} propsData the props to pass to the component\n\t\t * @param {object} component the component to render\n\t\t * @return {string} the rendered html\n\t\t */\n\t\trenderComponentHtml(propsData, component) {\n\t\t\tconst View = Vue.extend(component)\n\t\t\tconst Item = new View({\n\t\t\t\tpropsData,\n\t\t\t})\n\n\t\t\t// Prepare mountpoint\n\t\t\tconst wrapper = document.createElement('div')\n\t\t\tconst mount = document.createElement('div')\n\t\t\twrapper.style.display = 'none'\n\t\t\twrapper.appendChild(mount)\n\t\t\tdocument.body.appendChild(wrapper)\n\n\t\t\t// Mount and get raw html\n\t\t\tItem.$mount(mount)\n\t\t\tconst renderedHtml = wrapper.innerHTML\n\n\t\t\t// Destroy\n\t\t\tItem.$destroy()\n\t\t\twrapper.remove()\n\n\t\t\treturn renderedHtml\n\t\t},\n\t},\n}\n"],"names":["getAvatarUrl","escapeHtml","Linkify","stripTags","Vue"],"mappings":"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"}
@@ -0,0 +1,197 @@
1
+ import { n as normalizeComponent } from "./_plugin-vue2_normalizer-D637Qkok.mjs";
2
+ /**
3
+ * @copyright Copyright (c) 2020 Raimund Schlüßler <raimund.schluessler@mailbox.org>
4
+ *
5
+ * @author Raimund Schlüßler <raimund.schluessler@mailbox.org>
6
+ *
7
+ * @license AGPL-3.0-or-later
8
+ *
9
+ * This program is free software: you can redistribute it and/or modify
10
+ * it under the terms of the GNU Affero General Public License as
11
+ * published by the Free Software Foundation, either version 3 of the
12
+ * License, or (at your option) any later version.
13
+ *
14
+ * This program is distributed in the hope that it will be useful,
15
+ * but WITHOUT ANY WARRANTY without even the implied warranty of
16
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
17
+ * GNU Affero General Public License for more details.
18
+ *
19
+ * You should have received a copy of the GNU Affero General Public License
20
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
21
+ *
22
+ */
23
+ const FindRanges = (text, search) => {
24
+ const ranges = [];
25
+ let currentIndex = 0;
26
+ let index = text.toLowerCase().indexOf(search.toLowerCase(), currentIndex);
27
+ let i = 0;
28
+ while (index > -1 && i < text.length) {
29
+ currentIndex = index + search.length;
30
+ ranges.push({ start: index, end: currentIndex });
31
+ index = text.toLowerCase().indexOf(search.toLowerCase(), currentIndex);
32
+ i++;
33
+ }
34
+ return ranges;
35
+ };
36
+ const _sfc_main = {
37
+ name: "NcHighlight",
38
+ props: {
39
+ /**
40
+ * The string to display
41
+ */
42
+ text: {
43
+ type: String,
44
+ default: ""
45
+ },
46
+ /**
47
+ * The string to match and highlight
48
+ */
49
+ search: {
50
+ type: String,
51
+ default: ""
52
+ },
53
+ /**
54
+ * The ranges to highlight, takes precedence over the search prop.
55
+ */
56
+ highlight: {
57
+ type: Array,
58
+ default: () => []
59
+ }
60
+ },
61
+ computed: {
62
+ /**
63
+ * The indice ranges which should be highlighted.
64
+ * If an array with ranges is provided, we use it. Otherwise
65
+ * we calculate it based on the provided substring to highlight.
66
+ *
67
+ * @return {Array} The array of ranges to highlight
68
+ */
69
+ ranges() {
70
+ let ranges = [];
71
+ if (!this.search && this.highlight.length === 0) {
72
+ return ranges;
73
+ }
74
+ if (this.highlight.length > 0) {
75
+ ranges = this.highlight;
76
+ } else {
77
+ ranges = FindRanges(this.text, this.search);
78
+ }
79
+ ranges.forEach((range, i) => {
80
+ if (range.end < range.start) {
81
+ ranges[i] = {
82
+ start: range.end,
83
+ end: range.start
84
+ };
85
+ }
86
+ });
87
+ ranges = ranges.reduce((validRanges, range) => {
88
+ if (range.start < this.text.length && range.end > 0) {
89
+ validRanges.push({
90
+ start: range.start < 0 ? 0 : range.start,
91
+ end: range.end > this.text.length ? this.text.length : range.end
92
+ });
93
+ }
94
+ return validRanges;
95
+ }, []);
96
+ ranges.sort((a, b) => {
97
+ return a.start - b.start;
98
+ });
99
+ ranges = ranges.reduce((mergedRanges, range) => {
100
+ if (!mergedRanges.length) {
101
+ mergedRanges.push(range);
102
+ } else {
103
+ const idx = mergedRanges.length - 1;
104
+ if (mergedRanges[idx].end >= range.start) {
105
+ mergedRanges[idx] = {
106
+ start: mergedRanges[idx].start,
107
+ end: Math.max(mergedRanges[idx].end, range.end)
108
+ };
109
+ } else {
110
+ mergedRanges.push(range);
111
+ }
112
+ }
113
+ return mergedRanges;
114
+ }, []);
115
+ return ranges;
116
+ },
117
+ /**
118
+ * Calculate the different chunks to show based on the ranges to highlight.
119
+ *
120
+ * @return {Array} The chunks
121
+ */
122
+ chunks() {
123
+ if (this.ranges.length === 0) {
124
+ return [{
125
+ start: 0,
126
+ end: this.text.length,
127
+ highlight: false,
128
+ text: this.text
129
+ }];
130
+ }
131
+ const chunks = [];
132
+ let currentIndex = 0;
133
+ let currentRange = 0;
134
+ while (currentIndex < this.text.length) {
135
+ const range = this.ranges[currentRange];
136
+ if (range.start === currentIndex) {
137
+ chunks.push({
138
+ ...range,
139
+ highlight: true,
140
+ text: this.text.slice(range.start, range.end)
141
+ });
142
+ currentRange++;
143
+ currentIndex = range.end;
144
+ if (currentRange >= this.ranges.length && currentIndex < this.text.length) {
145
+ chunks.push({
146
+ start: currentIndex,
147
+ end: this.text.length,
148
+ highlight: false,
149
+ text: this.text.slice(currentIndex)
150
+ });
151
+ currentIndex = this.text.length;
152
+ }
153
+ continue;
154
+ }
155
+ chunks.push({
156
+ start: currentIndex,
157
+ end: range.start,
158
+ highlight: false,
159
+ text: this.text.slice(currentIndex, range.start)
160
+ });
161
+ currentIndex = range.start;
162
+ }
163
+ return chunks;
164
+ }
165
+ },
166
+ /**
167
+ * The render function to display the component
168
+ *
169
+ * @param {Function} h The function to create VNodes
170
+ * @return {object} The created VNode
171
+ */
172
+ render(h) {
173
+ if (!this.ranges.length) {
174
+ return h("span", {}, this.text);
175
+ }
176
+ return h("span", {}, this.chunks.map((chunk) => {
177
+ return chunk.highlight ? h("strong", {}, chunk.text) : chunk.text;
178
+ }));
179
+ }
180
+ };
181
+ const _sfc_render = null;
182
+ const _sfc_staticRenderFns = null;
183
+ var __component__ = /* @__PURE__ */ normalizeComponent(
184
+ _sfc_main,
185
+ _sfc_render,
186
+ _sfc_staticRenderFns,
187
+ false,
188
+ null,
189
+ null,
190
+ null,
191
+ null
192
+ );
193
+ const NcHighlight = __component__.exports;
194
+ export {
195
+ FindRanges as F,
196
+ NcHighlight as N
197
+ };
@@ -1 +1 @@
1
- {"version":3,"file":"index-CnpswYi6.mjs","sources":["../../src/utils/FindRanges.js","../../src/components/NcHighlight/NcHighlight.vue"],"sourcesContent":["/**\n * @copyright Copyright (c) 2020 Raimund Schlüßler <raimund.schluessler@mailbox.org>\n *\n * @author Raimund Schlüßler <raimund.schluessler@mailbox.org>\n *\n * @license AGPL-3.0-or-later\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\n/**\n * Find the ranges of a substr in a given string\n *\n * @param {string} text The text to search in\n * @param {string} search The text to search for\n * @return {Array} The array of ranges to highlight\n */\nconst FindRanges = (text, search) => {\n\tconst ranges = []\n\tlet currentIndex = 0\n\tlet index = text.toLowerCase().indexOf(search.toLowerCase(), currentIndex)\n\t// Variable to track that we don't iterate more often than the length of the text.\n\t// Shouldn't happen anyway, but just to be sure to not hang the browser for some reason.\n\tlet i = 0\n\twhile (index > -1 && i < text.length) {\n\t\tcurrentIndex = index + search.length\n\t\tranges.push({ start: index, end: currentIndex })\n\n\t\tindex = text.toLowerCase().indexOf(search.toLowerCase(), currentIndex)\n\t\ti++\n\t}\n\treturn ranges\n}\n\nexport default FindRanges\n","<!--\n - @copyright Copyright (c) 2021 Raimund Schlüßler <raimund.schluessler@mailbox.org>\n -\n - @author Raimund Schlüßler <raimund.schluessler@mailbox.org>\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\n<docs>\n\n### General description\n\nHighlight a string with html &lt;strong&gt;. Accepts a substring to highlight or an array with ranges.\n\n### Usage\n\n```vue\n<template>\n\t<div>\n\t\t<NcHighlight text=\"Highlight me please!\" search=\"me\" />\n\t\t<br />\n\t\t<NcHighlight text=\"Highlight me please!\" :highlight=\"[{ start: 4, end: 12 }]\" />\n\t</div>\n</template>\n```\n</docs>\n\n<script>\nimport FindRanges from '../../utils/FindRanges.js'\n\nexport default {\n\tname: 'NcHighlight',\n\tprops: {\n\t\t/**\n\t\t * The string to display\n\t\t */\n\t\ttext: {\n\t\t\ttype: String,\n\t\t\tdefault: '',\n\t\t},\n\t\t/**\n\t\t * The string to match and highlight\n\t\t */\n\t\tsearch: {\n\t\t\ttype: String,\n\t\t\tdefault: '',\n\t\t},\n\t\t/**\n\t\t * The ranges to highlight, takes precedence over the search prop.\n\t\t */\n\t\thighlight: {\n\t\t\ttype: Array,\n\t\t\tdefault: () => [],\n\t\t},\n\t},\n\tcomputed: {\n\t\t/**\n\t\t * The indice ranges which should be highlighted.\n\t\t * If an array with ranges is provided, we use it. Otherwise\n\t\t * we calculate it based on the provided substring to highlight.\n\t\t *\n\t\t * @return {Array} The array of ranges to highlight\n\t\t */\n\t\tranges() {\n\t\t\tlet ranges = []\n\t\t\t// If the search term and the highlight array is empty, return early with empty array\n\t\t\tif (!this.search && this.highlight.length === 0) {\n\t\t\t\treturn ranges\n\t\t\t}\n\n\t\t\t// If there are ranges to highlight provided, we use this array.\n\t\t\tif (this.highlight.length > 0) {\n\t\t\t\tranges = this.highlight\n\t\t\t// Otherwise we check the text to highlight for matches of the search term.\n\t\t\t} else {\n\t\t\t\tranges = FindRanges(this.text, this.search)\n\t\t\t}\n\n\t\t\t/**\n\t\t\t * Ensure that the start of each range is equal to or smaller than the end\n\t\t\t */\n\t\t\tranges.forEach((range, i) => {\n\t\t\t\tif (range.end < range.start) {\n\t\t\t\t\tranges[i] = {\n\t\t\t\t\t\tstart: range.end,\n\t\t\t\t\t\tend: range.start,\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t})\n\n\t\t\t/**\n\t\t\t * Validate the ranges array to be within the string length\n\t\t\t * and discard ranges which are completely out of bonds.\n\t\t\t */\n\t\t\tranges = ranges.reduce((validRanges, range) => {\n\t\t\t\tif (range.start < this.text.length && range.end > 0) {\n\t\t\t\t\tvalidRanges.push({\n\t\t\t\t\t\tstart: (range.start < 0) ? 0 : range.start,\n\t\t\t\t\t\tend: (range.end > this.text.length) ? this.text.length : range.end,\n\t\t\t\t\t})\n\t\t\t\t}\n\t\t\t\treturn validRanges\n\t\t\t}, [])\n\n\t\t\t/**\n\t\t\t * Sort ranges ascendingly (necessary for next step)\n\t\t\t */\n\t\t\tranges.sort((a, b) => {\n\t\t\t\treturn a.start - b.start\n\t\t\t})\n\n\t\t\t/**\n\t\t\t * Merge overlapping or adjacent ranges\n\t\t\t */\n\t\t\tranges = ranges.reduce((mergedRanges, range) => {\n\t\t\t\t// If there are no ranges, just add the range\n\t\t\t\tif (!mergedRanges.length) {\n\t\t\t\t\tmergedRanges.push(range)\n\t\t\t\t} else {\n\t\t\t\t\t// If the range overlaps the last range, merge them\n\t\t\t\t\tconst idx = mergedRanges.length - 1\n\t\t\t\t\tif (mergedRanges[idx].end >= range.start) {\n\t\t\t\t\t\tmergedRanges[idx] = {\n\t\t\t\t\t\t\tstart: mergedRanges[idx].start,\n\t\t\t\t\t\t\tend: Math.max(mergedRanges[idx].end, range.end),\n\t\t\t\t\t\t}\n\t\t\t\t\t} else {\n\t\t\t\t\t\tmergedRanges.push(range)\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\treturn mergedRanges\n\t\t\t}, [])\n\n\t\t\treturn ranges\n\t\t},\n\t\t/**\n\t\t * Calculate the different chunks to show based on the ranges to highlight.\n\t\t *\n\t\t * @return {Array} The chunks\n\t\t */\n\t\tchunks() {\n\t\t\t// If the ranges array is empty, show only one chunk with all text\n\t\t\tif (this.ranges.length === 0) {\n\t\t\t\treturn [{\n\t\t\t\t\tstart: 0,\n\t\t\t\t\tend: this.text.length,\n\t\t\t\t\thighlight: false,\n\t\t\t\t\ttext: this.text,\n\t\t\t\t}]\n\t\t\t}\n\t\t\t// Calculate the chunks\n\t\t\tconst chunks = []\n\t\t\tlet currentIndex = 0\n\t\t\tlet currentRange = 0\n\t\t\t// Iterate over all characters in the text\n\t\t\twhile (currentIndex < this.text.length) {\n\t\t\t\t// Get the first range to highlight\n\t\t\t\tconst range = this.ranges[currentRange]\n\t\t\t\t// If the range starts at the current index, construct a chunk to highlight,\n\t\t\t\t// set the next range and continue with the next iteration.\n\t\t\t\tif (range.start === currentIndex) {\n\t\t\t\t\tchunks.push({\n\t\t\t\t\t\t...range,\n\t\t\t\t\t\thighlight: true,\n\t\t\t\t\t\ttext: this.text.slice(range.start, range.end),\n\t\t\t\t\t})\n\t\t\t\t\tcurrentRange++\n\t\t\t\t\tcurrentIndex = range.end\n\t\t\t\t\t// If this was the last range to highlight and we haven't reached the end of the text,\n\t\t\t\t\t// add the rest of the text without highlighting.\n\t\t\t\t\tif (currentRange >= this.ranges.length && currentIndex < this.text.length) {\n\t\t\t\t\t\tchunks.push({\n\t\t\t\t\t\t\tstart: currentIndex,\n\t\t\t\t\t\t\tend: this.text.length,\n\t\t\t\t\t\t\thighlight: false,\n\t\t\t\t\t\t\ttext: this.text.slice(currentIndex),\n\t\t\t\t\t\t})\n\t\t\t\t\t\t// Set the current index so the while loop ends.\n\t\t\t\t\t\tcurrentIndex = this.text.length\n\t\t\t\t\t}\n\t\t\t\t\tcontinue\n\t\t\t\t}\n\t\t\t\t// If the current range does start after the current index, construct a chunk without\n\t\t\t\t// highlighting and set the current index to the start of the current range.\n\t\t\t\tchunks.push({\n\t\t\t\t\tstart: currentIndex,\n\t\t\t\t\tend: range.start,\n\t\t\t\t\thighlight: false,\n\t\t\t\t\ttext: this.text.slice(currentIndex, range.start),\n\t\t\t\t})\n\t\t\t\tcurrentIndex = range.start\n\t\t\t}\n\t\t\treturn chunks\n\t\t},\n\t},\n\t/**\n\t * The render function to display the component\n\t *\n\t * @param {Function} h The function to create VNodes\n\t * @return {object} The created VNode\n\t */\n\trender(h) {\n\t\tif (!this.ranges.length) {\n\t\t\treturn h('span', {}, this.text)\n\t\t}\n\n\t\treturn h('span', {}, this.chunks.map(chunk => {\n\t\t\treturn chunk.highlight ? h('strong', {}, chunk.text) : chunk.text\n\t\t}))\n\t},\n}\n</script>\n"],"names":["FindRanges","text","search","ranges","currentIndex","index","_sfc_main","range","i","validRanges","a","b","mergedRanges","idx","chunks","currentRange","h","chunk"],"mappings":";AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AA6BK,MAACA,IAAa,CAACC,GAAMC,MAAW;AACpC,QAAMC,IAAS,CAAE;AACjB,MAAIC,IAAe,GACfC,IAAQJ,EAAK,YAAa,EAAC,QAAQC,EAAO,YAAa,GAAEE,CAAY,GAGrE,IAAI;AACR,SAAOC,IAAQ,MAAM,IAAIJ,EAAK;AAC7B,IAAAG,IAAeC,IAAQH,EAAO,QAC9BC,EAAO,KAAK,EAAE,OAAOE,GAAO,KAAKD,GAAc,GAE/CC,IAAQJ,EAAK,YAAa,EAAC,QAAQC,EAAO,YAAa,GAAEE,CAAY,GACrE;AAED,SAAOD;AACR,GCAAG,IAAA;AAAA,EACA,MAAA;AAAA,EACA,OAAA;AAAA;AAAA;AAAA;AAAA,IAIA,MAAA;AAAA,MACA,MAAA;AAAA,MACA,SAAA;AAAA,IACA;AAAA;AAAA;AAAA;AAAA,IAIA,QAAA;AAAA,MACA,MAAA;AAAA,MACA,SAAA;AAAA,IACA;AAAA;AAAA;AAAA;AAAA,IAIA,WAAA;AAAA,MACA,MAAA;AAAA,MACA,SAAA,MAAA,CAAA;AAAA,IACA;AAAA,EACA;AAAA,EACA,UAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IAQA,SAAA;AACA,UAAAH,IAAA,CAAA;AAEA,aAAA,CAAA,KAAA,UAAA,KAAA,UAAA,WAAA,MAKA,KAAA,UAAA,SAAA,IACAA,IAAA,KAAA,YAGAA,IAAAH,EAAA,KAAA,MAAA,KAAA,MAAA,GAMAG,EAAA,QAAA,CAAAI,GAAAC,MAAA;AACA,QAAAD,EAAA,MAAAA,EAAA,UACAJ,EAAAK,CAAA,IAAA;AAAA,UACA,OAAAD,EAAA;AAAA,UACA,KAAAA,EAAA;AAAA,QACA;AAAA,MAEA,CAAA,GAMAJ,IAAAA,EAAA,OAAA,CAAAM,GAAAF,OACAA,EAAA,QAAA,KAAA,KAAA,UAAAA,EAAA,MAAA,KACAE,EAAA,KAAA;AAAA,QACA,OAAAF,EAAA,QAAA,IAAA,IAAAA,EAAA;AAAA,QACA,KAAAA,EAAA,MAAA,KAAA,KAAA,SAAA,KAAA,KAAA,SAAAA,EAAA;AAAA,MACA,CAAA,GAEAE,IACA,EAAA,GAKAN,EAAA,KAAA,CAAAO,GAAAC,MACAD,EAAA,QAAAC,EAAA,KACA,GAKAR,IAAAA,EAAA,OAAA,CAAAS,GAAAL,MAAA;AAEA,YAAA,CAAAK,EAAA;AACA,UAAAA,EAAA,KAAAL,CAAA;AAAA,aACA;AAEA,gBAAAM,IAAAD,EAAA,SAAA;AACA,UAAAA,EAAAC,CAAA,EAAA,OAAAN,EAAA,QACAK,EAAAC,CAAA,IAAA;AAAA,YACA,OAAAD,EAAAC,CAAA,EAAA;AAAA,YACA,KAAA,KAAA,IAAAD,EAAAC,CAAA,EAAA,KAAAN,EAAA,GAAA;AAAA,UACA,IAEAK,EAAA,KAAAL,CAAA;AAAA,QAEA;AACA,eAAAK;AAAA,MACA,GAAA,EAAA,IAEAT;AAAA,IACA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IAMA,SAAA;AAEA,UAAA,KAAA,OAAA,WAAA;AACA,eAAA,CAAA;AAAA,UACA,OAAA;AAAA,UACA,KAAA,KAAA,KAAA;AAAA,UACA,WAAA;AAAA,UACA,MAAA,KAAA;AAAA,QACA,CAAA;AAGA,YAAAW,IAAA,CAAA;AACA,UAAAV,IAAA,GACAW,IAAA;AAEA,aAAAX,IAAA,KAAA,KAAA,UAAA;AAEA,cAAAG,IAAA,KAAA,OAAAQ,CAAA;AAGA,YAAAR,EAAA,UAAAH,GAAA;AACA,UAAAU,EAAA,KAAA;AAAA,YACA,GAAAP;AAAA,YACA,WAAA;AAAA,YACA,MAAA,KAAA,KAAA,MAAAA,EAAA,OAAAA,EAAA,GAAA;AAAA,UACA,CAAA,GACAQ,KACAX,IAAAG,EAAA,KAGAQ,KAAA,KAAA,OAAA,UAAAX,IAAA,KAAA,KAAA,WACAU,EAAA,KAAA;AAAA,YACA,OAAAV;AAAA,YACA,KAAA,KAAA,KAAA;AAAA,YACA,WAAA;AAAA,YACA,MAAA,KAAA,KAAA,MAAAA,CAAA;AAAA,UACA,CAAA,GAEAA,IAAA,KAAA,KAAA;AAEA;AAAA,QACA;AAGA,QAAAU,EAAA,KAAA;AAAA,UACA,OAAAV;AAAA,UACA,KAAAG,EAAA;AAAA,UACA,WAAA;AAAA,UACA,MAAA,KAAA,KAAA,MAAAH,GAAAG,EAAA,KAAA;AAAA,QACA,CAAA,GACAH,IAAAG,EAAA;AAAA,MACA;AACA,aAAAO;AAAA,IACA;AAAA,EACA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAOA,OAAAE,GAAA;AACA,WAAA,KAAA,OAAA,SAIAA,EAAA,QAAA,CAAA,GAAA,KAAA,OAAA,IAAA,CAAAC,MACAA,EAAA,YAAAD,EAAA,UAAA,CAAA,GAAAC,EAAA,IAAA,IAAAA,EAAA,IACA,CAAA,IALAD,EAAA,QAAA,IAAA,KAAA,IAAA;AAAA,EAMA;AACA;;;;;;;;;;;;"}
1
+ {"version":3,"file":"index-DYccGIvD.mjs","sources":["../../src/utils/FindRanges.js","../../src/components/NcHighlight/NcHighlight.vue"],"sourcesContent":["/**\n * @copyright Copyright (c) 2020 Raimund Schlüßler <raimund.schluessler@mailbox.org>\n *\n * @author Raimund Schlüßler <raimund.schluessler@mailbox.org>\n *\n * @license AGPL-3.0-or-later\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\n/**\n * Find the ranges of a substr in a given string\n *\n * @param {string} text The text to search in\n * @param {string} search The text to search for\n * @return {Array} The array of ranges to highlight\n */\nconst FindRanges = (text, search) => {\n\tconst ranges = []\n\tlet currentIndex = 0\n\tlet index = text.toLowerCase().indexOf(search.toLowerCase(), currentIndex)\n\t// Variable to track that we don't iterate more often than the length of the text.\n\t// Shouldn't happen anyway, but just to be sure to not hang the browser for some reason.\n\tlet i = 0\n\twhile (index > -1 && i < text.length) {\n\t\tcurrentIndex = index + search.length\n\t\tranges.push({ start: index, end: currentIndex })\n\n\t\tindex = text.toLowerCase().indexOf(search.toLowerCase(), currentIndex)\n\t\ti++\n\t}\n\treturn ranges\n}\n\nexport default FindRanges\n","<!--\n - @copyright Copyright (c) 2021 Raimund Schlüßler <raimund.schluessler@mailbox.org>\n -\n - @author Raimund Schlüßler <raimund.schluessler@mailbox.org>\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\n<docs>\n\n### General description\n\nHighlight a string with html &lt;strong&gt;. Accepts a substring to highlight or an array with ranges.\n\n### Usage\n\n```vue\n<template>\n\t<div>\n\t\t<NcHighlight text=\"Highlight me please!\" search=\"me\" />\n\t\t<br />\n\t\t<NcHighlight text=\"Highlight me please!\" :highlight=\"[{ start: 4, end: 12 }]\" />\n\t</div>\n</template>\n```\n</docs>\n\n<script>\nimport FindRanges from '../../utils/FindRanges.js'\n\nexport default {\n\tname: 'NcHighlight',\n\tprops: {\n\t\t/**\n\t\t * The string to display\n\t\t */\n\t\ttext: {\n\t\t\ttype: String,\n\t\t\tdefault: '',\n\t\t},\n\t\t/**\n\t\t * The string to match and highlight\n\t\t */\n\t\tsearch: {\n\t\t\ttype: String,\n\t\t\tdefault: '',\n\t\t},\n\t\t/**\n\t\t * The ranges to highlight, takes precedence over the search prop.\n\t\t */\n\t\thighlight: {\n\t\t\ttype: Array,\n\t\t\tdefault: () => [],\n\t\t},\n\t},\n\tcomputed: {\n\t\t/**\n\t\t * The indice ranges which should be highlighted.\n\t\t * If an array with ranges is provided, we use it. Otherwise\n\t\t * we calculate it based on the provided substring to highlight.\n\t\t *\n\t\t * @return {Array} The array of ranges to highlight\n\t\t */\n\t\tranges() {\n\t\t\tlet ranges = []\n\t\t\t// If the search term and the highlight array is empty, return early with empty array\n\t\t\tif (!this.search && this.highlight.length === 0) {\n\t\t\t\treturn ranges\n\t\t\t}\n\n\t\t\t// If there are ranges to highlight provided, we use this array.\n\t\t\tif (this.highlight.length > 0) {\n\t\t\t\tranges = this.highlight\n\t\t\t// Otherwise we check the text to highlight for matches of the search term.\n\t\t\t} else {\n\t\t\t\tranges = FindRanges(this.text, this.search)\n\t\t\t}\n\n\t\t\t/**\n\t\t\t * Ensure that the start of each range is equal to or smaller than the end\n\t\t\t */\n\t\t\tranges.forEach((range, i) => {\n\t\t\t\tif (range.end < range.start) {\n\t\t\t\t\tranges[i] = {\n\t\t\t\t\t\tstart: range.end,\n\t\t\t\t\t\tend: range.start,\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t})\n\n\t\t\t/**\n\t\t\t * Validate the ranges array to be within the string length\n\t\t\t * and discard ranges which are completely out of bonds.\n\t\t\t */\n\t\t\tranges = ranges.reduce((validRanges, range) => {\n\t\t\t\tif (range.start < this.text.length && range.end > 0) {\n\t\t\t\t\tvalidRanges.push({\n\t\t\t\t\t\tstart: (range.start < 0) ? 0 : range.start,\n\t\t\t\t\t\tend: (range.end > this.text.length) ? this.text.length : range.end,\n\t\t\t\t\t})\n\t\t\t\t}\n\t\t\t\treturn validRanges\n\t\t\t}, [])\n\n\t\t\t/**\n\t\t\t * Sort ranges ascendingly (necessary for next step)\n\t\t\t */\n\t\t\tranges.sort((a, b) => {\n\t\t\t\treturn a.start - b.start\n\t\t\t})\n\n\t\t\t/**\n\t\t\t * Merge overlapping or adjacent ranges\n\t\t\t */\n\t\t\tranges = ranges.reduce((mergedRanges, range) => {\n\t\t\t\t// If there are no ranges, just add the range\n\t\t\t\tif (!mergedRanges.length) {\n\t\t\t\t\tmergedRanges.push(range)\n\t\t\t\t} else {\n\t\t\t\t\t// If the range overlaps the last range, merge them\n\t\t\t\t\tconst idx = mergedRanges.length - 1\n\t\t\t\t\tif (mergedRanges[idx].end >= range.start) {\n\t\t\t\t\t\tmergedRanges[idx] = {\n\t\t\t\t\t\t\tstart: mergedRanges[idx].start,\n\t\t\t\t\t\t\tend: Math.max(mergedRanges[idx].end, range.end),\n\t\t\t\t\t\t}\n\t\t\t\t\t} else {\n\t\t\t\t\t\tmergedRanges.push(range)\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\treturn mergedRanges\n\t\t\t}, [])\n\n\t\t\treturn ranges\n\t\t},\n\t\t/**\n\t\t * Calculate the different chunks to show based on the ranges to highlight.\n\t\t *\n\t\t * @return {Array} The chunks\n\t\t */\n\t\tchunks() {\n\t\t\t// If the ranges array is empty, show only one chunk with all text\n\t\t\tif (this.ranges.length === 0) {\n\t\t\t\treturn [{\n\t\t\t\t\tstart: 0,\n\t\t\t\t\tend: this.text.length,\n\t\t\t\t\thighlight: false,\n\t\t\t\t\ttext: this.text,\n\t\t\t\t}]\n\t\t\t}\n\t\t\t// Calculate the chunks\n\t\t\tconst chunks = []\n\t\t\tlet currentIndex = 0\n\t\t\tlet currentRange = 0\n\t\t\t// Iterate over all characters in the text\n\t\t\twhile (currentIndex < this.text.length) {\n\t\t\t\t// Get the first range to highlight\n\t\t\t\tconst range = this.ranges[currentRange]\n\t\t\t\t// If the range starts at the current index, construct a chunk to highlight,\n\t\t\t\t// set the next range and continue with the next iteration.\n\t\t\t\tif (range.start === currentIndex) {\n\t\t\t\t\tchunks.push({\n\t\t\t\t\t\t...range,\n\t\t\t\t\t\thighlight: true,\n\t\t\t\t\t\ttext: this.text.slice(range.start, range.end),\n\t\t\t\t\t})\n\t\t\t\t\tcurrentRange++\n\t\t\t\t\tcurrentIndex = range.end\n\t\t\t\t\t// If this was the last range to highlight and we haven't reached the end of the text,\n\t\t\t\t\t// add the rest of the text without highlighting.\n\t\t\t\t\tif (currentRange >= this.ranges.length && currentIndex < this.text.length) {\n\t\t\t\t\t\tchunks.push({\n\t\t\t\t\t\t\tstart: currentIndex,\n\t\t\t\t\t\t\tend: this.text.length,\n\t\t\t\t\t\t\thighlight: false,\n\t\t\t\t\t\t\ttext: this.text.slice(currentIndex),\n\t\t\t\t\t\t})\n\t\t\t\t\t\t// Set the current index so the while loop ends.\n\t\t\t\t\t\tcurrentIndex = this.text.length\n\t\t\t\t\t}\n\t\t\t\t\tcontinue\n\t\t\t\t}\n\t\t\t\t// If the current range does start after the current index, construct a chunk without\n\t\t\t\t// highlighting and set the current index to the start of the current range.\n\t\t\t\tchunks.push({\n\t\t\t\t\tstart: currentIndex,\n\t\t\t\t\tend: range.start,\n\t\t\t\t\thighlight: false,\n\t\t\t\t\ttext: this.text.slice(currentIndex, range.start),\n\t\t\t\t})\n\t\t\t\tcurrentIndex = range.start\n\t\t\t}\n\t\t\treturn chunks\n\t\t},\n\t},\n\t/**\n\t * The render function to display the component\n\t *\n\t * @param {Function} h The function to create VNodes\n\t * @return {object} The created VNode\n\t */\n\trender(h) {\n\t\tif (!this.ranges.length) {\n\t\t\treturn h('span', {}, this.text)\n\t\t}\n\n\t\treturn h('span', {}, this.chunks.map(chunk => {\n\t\t\treturn chunk.highlight ? h('strong', {}, chunk.text) : chunk.text\n\t\t}))\n\t},\n}\n</script>\n"],"names":[],"mappings":"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"}
@@ -0,0 +1,196 @@
1
+ "use strict";
2
+ const _pluginVue2_normalizer = require("./_plugin-vue2_normalizer-DbFIE4_M.cjs");
3
+ /**
4
+ * @copyright Copyright (c) 2020 Raimund Schlüßler <raimund.schluessler@mailbox.org>
5
+ *
6
+ * @author Raimund Schlüßler <raimund.schluessler@mailbox.org>
7
+ *
8
+ * @license AGPL-3.0-or-later
9
+ *
10
+ * This program is free software: you can redistribute it and/or modify
11
+ * it under the terms of the GNU Affero General Public License as
12
+ * published by the Free Software Foundation, either version 3 of the
13
+ * License, or (at your option) any later version.
14
+ *
15
+ * This program is distributed in the hope that it will be useful,
16
+ * but WITHOUT ANY WARRANTY without even the implied warranty of
17
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
18
+ * GNU Affero General Public License for more details.
19
+ *
20
+ * You should have received a copy of the GNU Affero General Public License
21
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
22
+ *
23
+ */
24
+ const FindRanges = (text, search) => {
25
+ const ranges = [];
26
+ let currentIndex = 0;
27
+ let index = text.toLowerCase().indexOf(search.toLowerCase(), currentIndex);
28
+ let i = 0;
29
+ while (index > -1 && i < text.length) {
30
+ currentIndex = index + search.length;
31
+ ranges.push({ start: index, end: currentIndex });
32
+ index = text.toLowerCase().indexOf(search.toLowerCase(), currentIndex);
33
+ i++;
34
+ }
35
+ return ranges;
36
+ };
37
+ const _sfc_main = {
38
+ name: "NcHighlight",
39
+ props: {
40
+ /**
41
+ * The string to display
42
+ */
43
+ text: {
44
+ type: String,
45
+ default: ""
46
+ },
47
+ /**
48
+ * The string to match and highlight
49
+ */
50
+ search: {
51
+ type: String,
52
+ default: ""
53
+ },
54
+ /**
55
+ * The ranges to highlight, takes precedence over the search prop.
56
+ */
57
+ highlight: {
58
+ type: Array,
59
+ default: () => []
60
+ }
61
+ },
62
+ computed: {
63
+ /**
64
+ * The indice ranges which should be highlighted.
65
+ * If an array with ranges is provided, we use it. Otherwise
66
+ * we calculate it based on the provided substring to highlight.
67
+ *
68
+ * @return {Array} The array of ranges to highlight
69
+ */
70
+ ranges() {
71
+ let ranges = [];
72
+ if (!this.search && this.highlight.length === 0) {
73
+ return ranges;
74
+ }
75
+ if (this.highlight.length > 0) {
76
+ ranges = this.highlight;
77
+ } else {
78
+ ranges = FindRanges(this.text, this.search);
79
+ }
80
+ ranges.forEach((range, i) => {
81
+ if (range.end < range.start) {
82
+ ranges[i] = {
83
+ start: range.end,
84
+ end: range.start
85
+ };
86
+ }
87
+ });
88
+ ranges = ranges.reduce((validRanges, range) => {
89
+ if (range.start < this.text.length && range.end > 0) {
90
+ validRanges.push({
91
+ start: range.start < 0 ? 0 : range.start,
92
+ end: range.end > this.text.length ? this.text.length : range.end
93
+ });
94
+ }
95
+ return validRanges;
96
+ }, []);
97
+ ranges.sort((a, b) => {
98
+ return a.start - b.start;
99
+ });
100
+ ranges = ranges.reduce((mergedRanges, range) => {
101
+ if (!mergedRanges.length) {
102
+ mergedRanges.push(range);
103
+ } else {
104
+ const idx = mergedRanges.length - 1;
105
+ if (mergedRanges[idx].end >= range.start) {
106
+ mergedRanges[idx] = {
107
+ start: mergedRanges[idx].start,
108
+ end: Math.max(mergedRanges[idx].end, range.end)
109
+ };
110
+ } else {
111
+ mergedRanges.push(range);
112
+ }
113
+ }
114
+ return mergedRanges;
115
+ }, []);
116
+ return ranges;
117
+ },
118
+ /**
119
+ * Calculate the different chunks to show based on the ranges to highlight.
120
+ *
121
+ * @return {Array} The chunks
122
+ */
123
+ chunks() {
124
+ if (this.ranges.length === 0) {
125
+ return [{
126
+ start: 0,
127
+ end: this.text.length,
128
+ highlight: false,
129
+ text: this.text
130
+ }];
131
+ }
132
+ const chunks = [];
133
+ let currentIndex = 0;
134
+ let currentRange = 0;
135
+ while (currentIndex < this.text.length) {
136
+ const range = this.ranges[currentRange];
137
+ if (range.start === currentIndex) {
138
+ chunks.push({
139
+ ...range,
140
+ highlight: true,
141
+ text: this.text.slice(range.start, range.end)
142
+ });
143
+ currentRange++;
144
+ currentIndex = range.end;
145
+ if (currentRange >= this.ranges.length && currentIndex < this.text.length) {
146
+ chunks.push({
147
+ start: currentIndex,
148
+ end: this.text.length,
149
+ highlight: false,
150
+ text: this.text.slice(currentIndex)
151
+ });
152
+ currentIndex = this.text.length;
153
+ }
154
+ continue;
155
+ }
156
+ chunks.push({
157
+ start: currentIndex,
158
+ end: range.start,
159
+ highlight: false,
160
+ text: this.text.slice(currentIndex, range.start)
161
+ });
162
+ currentIndex = range.start;
163
+ }
164
+ return chunks;
165
+ }
166
+ },
167
+ /**
168
+ * The render function to display the component
169
+ *
170
+ * @param {Function} h The function to create VNodes
171
+ * @return {object} The created VNode
172
+ */
173
+ render(h) {
174
+ if (!this.ranges.length) {
175
+ return h("span", {}, this.text);
176
+ }
177
+ return h("span", {}, this.chunks.map((chunk) => {
178
+ return chunk.highlight ? h("strong", {}, chunk.text) : chunk.text;
179
+ }));
180
+ }
181
+ };
182
+ const _sfc_render = null;
183
+ const _sfc_staticRenderFns = null;
184
+ var __component__ = /* @__PURE__ */ _pluginVue2_normalizer.normalizeComponent(
185
+ _sfc_main,
186
+ _sfc_render,
187
+ _sfc_staticRenderFns,
188
+ false,
189
+ null,
190
+ null,
191
+ null,
192
+ null
193
+ );
194
+ const NcHighlight = __component__.exports;
195
+ exports.FindRanges = FindRanges;
196
+ exports.NcHighlight = NcHighlight;
@@ -1 +1 @@
1
- {"version":3,"file":"index-Cke9rKBg.cjs","sources":["../../src/utils/FindRanges.js","../../src/components/NcHighlight/NcHighlight.vue"],"sourcesContent":["/**\n * @copyright Copyright (c) 2020 Raimund Schlüßler <raimund.schluessler@mailbox.org>\n *\n * @author Raimund Schlüßler <raimund.schluessler@mailbox.org>\n *\n * @license AGPL-3.0-or-later\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\n/**\n * Find the ranges of a substr in a given string\n *\n * @param {string} text The text to search in\n * @param {string} search The text to search for\n * @return {Array} The array of ranges to highlight\n */\nconst FindRanges = (text, search) => {\n\tconst ranges = []\n\tlet currentIndex = 0\n\tlet index = text.toLowerCase().indexOf(search.toLowerCase(), currentIndex)\n\t// Variable to track that we don't iterate more often than the length of the text.\n\t// Shouldn't happen anyway, but just to be sure to not hang the browser for some reason.\n\tlet i = 0\n\twhile (index > -1 && i < text.length) {\n\t\tcurrentIndex = index + search.length\n\t\tranges.push({ start: index, end: currentIndex })\n\n\t\tindex = text.toLowerCase().indexOf(search.toLowerCase(), currentIndex)\n\t\ti++\n\t}\n\treturn ranges\n}\n\nexport default FindRanges\n","<!--\n - @copyright Copyright (c) 2021 Raimund Schlüßler <raimund.schluessler@mailbox.org>\n -\n - @author Raimund Schlüßler <raimund.schluessler@mailbox.org>\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\n<docs>\n\n### General description\n\nHighlight a string with html &lt;strong&gt;. Accepts a substring to highlight or an array with ranges.\n\n### Usage\n\n```vue\n<template>\n\t<div>\n\t\t<NcHighlight text=\"Highlight me please!\" search=\"me\" />\n\t\t<br />\n\t\t<NcHighlight text=\"Highlight me please!\" :highlight=\"[{ start: 4, end: 12 }]\" />\n\t</div>\n</template>\n```\n</docs>\n\n<script>\nimport FindRanges from '../../utils/FindRanges.js'\n\nexport default {\n\tname: 'NcHighlight',\n\tprops: {\n\t\t/**\n\t\t * The string to display\n\t\t */\n\t\ttext: {\n\t\t\ttype: String,\n\t\t\tdefault: '',\n\t\t},\n\t\t/**\n\t\t * The string to match and highlight\n\t\t */\n\t\tsearch: {\n\t\t\ttype: String,\n\t\t\tdefault: '',\n\t\t},\n\t\t/**\n\t\t * The ranges to highlight, takes precedence over the search prop.\n\t\t */\n\t\thighlight: {\n\t\t\ttype: Array,\n\t\t\tdefault: () => [],\n\t\t},\n\t},\n\tcomputed: {\n\t\t/**\n\t\t * The indice ranges which should be highlighted.\n\t\t * If an array with ranges is provided, we use it. Otherwise\n\t\t * we calculate it based on the provided substring to highlight.\n\t\t *\n\t\t * @return {Array} The array of ranges to highlight\n\t\t */\n\t\tranges() {\n\t\t\tlet ranges = []\n\t\t\t// If the search term and the highlight array is empty, return early with empty array\n\t\t\tif (!this.search && this.highlight.length === 0) {\n\t\t\t\treturn ranges\n\t\t\t}\n\n\t\t\t// If there are ranges to highlight provided, we use this array.\n\t\t\tif (this.highlight.length > 0) {\n\t\t\t\tranges = this.highlight\n\t\t\t// Otherwise we check the text to highlight for matches of the search term.\n\t\t\t} else {\n\t\t\t\tranges = FindRanges(this.text, this.search)\n\t\t\t}\n\n\t\t\t/**\n\t\t\t * Ensure that the start of each range is equal to or smaller than the end\n\t\t\t */\n\t\t\tranges.forEach((range, i) => {\n\t\t\t\tif (range.end < range.start) {\n\t\t\t\t\tranges[i] = {\n\t\t\t\t\t\tstart: range.end,\n\t\t\t\t\t\tend: range.start,\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t})\n\n\t\t\t/**\n\t\t\t * Validate the ranges array to be within the string length\n\t\t\t * and discard ranges which are completely out of bonds.\n\t\t\t */\n\t\t\tranges = ranges.reduce((validRanges, range) => {\n\t\t\t\tif (range.start < this.text.length && range.end > 0) {\n\t\t\t\t\tvalidRanges.push({\n\t\t\t\t\t\tstart: (range.start < 0) ? 0 : range.start,\n\t\t\t\t\t\tend: (range.end > this.text.length) ? this.text.length : range.end,\n\t\t\t\t\t})\n\t\t\t\t}\n\t\t\t\treturn validRanges\n\t\t\t}, [])\n\n\t\t\t/**\n\t\t\t * Sort ranges ascendingly (necessary for next step)\n\t\t\t */\n\t\t\tranges.sort((a, b) => {\n\t\t\t\treturn a.start - b.start\n\t\t\t})\n\n\t\t\t/**\n\t\t\t * Merge overlapping or adjacent ranges\n\t\t\t */\n\t\t\tranges = ranges.reduce((mergedRanges, range) => {\n\t\t\t\t// If there are no ranges, just add the range\n\t\t\t\tif (!mergedRanges.length) {\n\t\t\t\t\tmergedRanges.push(range)\n\t\t\t\t} else {\n\t\t\t\t\t// If the range overlaps the last range, merge them\n\t\t\t\t\tconst idx = mergedRanges.length - 1\n\t\t\t\t\tif (mergedRanges[idx].end >= range.start) {\n\t\t\t\t\t\tmergedRanges[idx] = {\n\t\t\t\t\t\t\tstart: mergedRanges[idx].start,\n\t\t\t\t\t\t\tend: Math.max(mergedRanges[idx].end, range.end),\n\t\t\t\t\t\t}\n\t\t\t\t\t} else {\n\t\t\t\t\t\tmergedRanges.push(range)\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\treturn mergedRanges\n\t\t\t}, [])\n\n\t\t\treturn ranges\n\t\t},\n\t\t/**\n\t\t * Calculate the different chunks to show based on the ranges to highlight.\n\t\t *\n\t\t * @return {Array} The chunks\n\t\t */\n\t\tchunks() {\n\t\t\t// If the ranges array is empty, show only one chunk with all text\n\t\t\tif (this.ranges.length === 0) {\n\t\t\t\treturn [{\n\t\t\t\t\tstart: 0,\n\t\t\t\t\tend: this.text.length,\n\t\t\t\t\thighlight: false,\n\t\t\t\t\ttext: this.text,\n\t\t\t\t}]\n\t\t\t}\n\t\t\t// Calculate the chunks\n\t\t\tconst chunks = []\n\t\t\tlet currentIndex = 0\n\t\t\tlet currentRange = 0\n\t\t\t// Iterate over all characters in the text\n\t\t\twhile (currentIndex < this.text.length) {\n\t\t\t\t// Get the first range to highlight\n\t\t\t\tconst range = this.ranges[currentRange]\n\t\t\t\t// If the range starts at the current index, construct a chunk to highlight,\n\t\t\t\t// set the next range and continue with the next iteration.\n\t\t\t\tif (range.start === currentIndex) {\n\t\t\t\t\tchunks.push({\n\t\t\t\t\t\t...range,\n\t\t\t\t\t\thighlight: true,\n\t\t\t\t\t\ttext: this.text.slice(range.start, range.end),\n\t\t\t\t\t})\n\t\t\t\t\tcurrentRange++\n\t\t\t\t\tcurrentIndex = range.end\n\t\t\t\t\t// If this was the last range to highlight and we haven't reached the end of the text,\n\t\t\t\t\t// add the rest of the text without highlighting.\n\t\t\t\t\tif (currentRange >= this.ranges.length && currentIndex < this.text.length) {\n\t\t\t\t\t\tchunks.push({\n\t\t\t\t\t\t\tstart: currentIndex,\n\t\t\t\t\t\t\tend: this.text.length,\n\t\t\t\t\t\t\thighlight: false,\n\t\t\t\t\t\t\ttext: this.text.slice(currentIndex),\n\t\t\t\t\t\t})\n\t\t\t\t\t\t// Set the current index so the while loop ends.\n\t\t\t\t\t\tcurrentIndex = this.text.length\n\t\t\t\t\t}\n\t\t\t\t\tcontinue\n\t\t\t\t}\n\t\t\t\t// If the current range does start after the current index, construct a chunk without\n\t\t\t\t// highlighting and set the current index to the start of the current range.\n\t\t\t\tchunks.push({\n\t\t\t\t\tstart: currentIndex,\n\t\t\t\t\tend: range.start,\n\t\t\t\t\thighlight: false,\n\t\t\t\t\ttext: this.text.slice(currentIndex, range.start),\n\t\t\t\t})\n\t\t\t\tcurrentIndex = range.start\n\t\t\t}\n\t\t\treturn chunks\n\t\t},\n\t},\n\t/**\n\t * The render function to display the component\n\t *\n\t * @param {Function} h The function to create VNodes\n\t * @return {object} The created VNode\n\t */\n\trender(h) {\n\t\tif (!this.ranges.length) {\n\t\t\treturn h('span', {}, this.text)\n\t\t}\n\n\t\treturn h('span', {}, this.chunks.map(chunk => {\n\t\t\treturn chunk.highlight ? h('strong', {}, chunk.text) : chunk.text\n\t\t}))\n\t},\n}\n</script>\n"],"names":["FindRanges","text","search","ranges","currentIndex","index","_sfc_main","range","i","validRanges","a","b","mergedRanges","idx","chunks","currentRange","h","chunk"],"mappings":"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"}
1
+ {"version":3,"file":"index-Dl-SBuhJ.cjs","sources":["../../src/utils/FindRanges.js","../../src/components/NcHighlight/NcHighlight.vue"],"sourcesContent":["/**\n * @copyright Copyright (c) 2020 Raimund Schlüßler <raimund.schluessler@mailbox.org>\n *\n * @author Raimund Schlüßler <raimund.schluessler@mailbox.org>\n *\n * @license AGPL-3.0-or-later\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\n/**\n * Find the ranges of a substr in a given string\n *\n * @param {string} text The text to search in\n * @param {string} search The text to search for\n * @return {Array} The array of ranges to highlight\n */\nconst FindRanges = (text, search) => {\n\tconst ranges = []\n\tlet currentIndex = 0\n\tlet index = text.toLowerCase().indexOf(search.toLowerCase(), currentIndex)\n\t// Variable to track that we don't iterate more often than the length of the text.\n\t// Shouldn't happen anyway, but just to be sure to not hang the browser for some reason.\n\tlet i = 0\n\twhile (index > -1 && i < text.length) {\n\t\tcurrentIndex = index + search.length\n\t\tranges.push({ start: index, end: currentIndex })\n\n\t\tindex = text.toLowerCase().indexOf(search.toLowerCase(), currentIndex)\n\t\ti++\n\t}\n\treturn ranges\n}\n\nexport default FindRanges\n","<!--\n - @copyright Copyright (c) 2021 Raimund Schlüßler <raimund.schluessler@mailbox.org>\n -\n - @author Raimund Schlüßler <raimund.schluessler@mailbox.org>\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\n<docs>\n\n### General description\n\nHighlight a string with html &lt;strong&gt;. Accepts a substring to highlight or an array with ranges.\n\n### Usage\n\n```vue\n<template>\n\t<div>\n\t\t<NcHighlight text=\"Highlight me please!\" search=\"me\" />\n\t\t<br />\n\t\t<NcHighlight text=\"Highlight me please!\" :highlight=\"[{ start: 4, end: 12 }]\" />\n\t</div>\n</template>\n```\n</docs>\n\n<script>\nimport FindRanges from '../../utils/FindRanges.js'\n\nexport default {\n\tname: 'NcHighlight',\n\tprops: {\n\t\t/**\n\t\t * The string to display\n\t\t */\n\t\ttext: {\n\t\t\ttype: String,\n\t\t\tdefault: '',\n\t\t},\n\t\t/**\n\t\t * The string to match and highlight\n\t\t */\n\t\tsearch: {\n\t\t\ttype: String,\n\t\t\tdefault: '',\n\t\t},\n\t\t/**\n\t\t * The ranges to highlight, takes precedence over the search prop.\n\t\t */\n\t\thighlight: {\n\t\t\ttype: Array,\n\t\t\tdefault: () => [],\n\t\t},\n\t},\n\tcomputed: {\n\t\t/**\n\t\t * The indice ranges which should be highlighted.\n\t\t * If an array with ranges is provided, we use it. Otherwise\n\t\t * we calculate it based on the provided substring to highlight.\n\t\t *\n\t\t * @return {Array} The array of ranges to highlight\n\t\t */\n\t\tranges() {\n\t\t\tlet ranges = []\n\t\t\t// If the search term and the highlight array is empty, return early with empty array\n\t\t\tif (!this.search && this.highlight.length === 0) {\n\t\t\t\treturn ranges\n\t\t\t}\n\n\t\t\t// If there are ranges to highlight provided, we use this array.\n\t\t\tif (this.highlight.length > 0) {\n\t\t\t\tranges = this.highlight\n\t\t\t// Otherwise we check the text to highlight for matches of the search term.\n\t\t\t} else {\n\t\t\t\tranges = FindRanges(this.text, this.search)\n\t\t\t}\n\n\t\t\t/**\n\t\t\t * Ensure that the start of each range is equal to or smaller than the end\n\t\t\t */\n\t\t\tranges.forEach((range, i) => {\n\t\t\t\tif (range.end < range.start) {\n\t\t\t\t\tranges[i] = {\n\t\t\t\t\t\tstart: range.end,\n\t\t\t\t\t\tend: range.start,\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t})\n\n\t\t\t/**\n\t\t\t * Validate the ranges array to be within the string length\n\t\t\t * and discard ranges which are completely out of bonds.\n\t\t\t */\n\t\t\tranges = ranges.reduce((validRanges, range) => {\n\t\t\t\tif (range.start < this.text.length && range.end > 0) {\n\t\t\t\t\tvalidRanges.push({\n\t\t\t\t\t\tstart: (range.start < 0) ? 0 : range.start,\n\t\t\t\t\t\tend: (range.end > this.text.length) ? this.text.length : range.end,\n\t\t\t\t\t})\n\t\t\t\t}\n\t\t\t\treturn validRanges\n\t\t\t}, [])\n\n\t\t\t/**\n\t\t\t * Sort ranges ascendingly (necessary for next step)\n\t\t\t */\n\t\t\tranges.sort((a, b) => {\n\t\t\t\treturn a.start - b.start\n\t\t\t})\n\n\t\t\t/**\n\t\t\t * Merge overlapping or adjacent ranges\n\t\t\t */\n\t\t\tranges = ranges.reduce((mergedRanges, range) => {\n\t\t\t\t// If there are no ranges, just add the range\n\t\t\t\tif (!mergedRanges.length) {\n\t\t\t\t\tmergedRanges.push(range)\n\t\t\t\t} else {\n\t\t\t\t\t// If the range overlaps the last range, merge them\n\t\t\t\t\tconst idx = mergedRanges.length - 1\n\t\t\t\t\tif (mergedRanges[idx].end >= range.start) {\n\t\t\t\t\t\tmergedRanges[idx] = {\n\t\t\t\t\t\t\tstart: mergedRanges[idx].start,\n\t\t\t\t\t\t\tend: Math.max(mergedRanges[idx].end, range.end),\n\t\t\t\t\t\t}\n\t\t\t\t\t} else {\n\t\t\t\t\t\tmergedRanges.push(range)\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\treturn mergedRanges\n\t\t\t}, [])\n\n\t\t\treturn ranges\n\t\t},\n\t\t/**\n\t\t * Calculate the different chunks to show based on the ranges to highlight.\n\t\t *\n\t\t * @return {Array} The chunks\n\t\t */\n\t\tchunks() {\n\t\t\t// If the ranges array is empty, show only one chunk with all text\n\t\t\tif (this.ranges.length === 0) {\n\t\t\t\treturn [{\n\t\t\t\t\tstart: 0,\n\t\t\t\t\tend: this.text.length,\n\t\t\t\t\thighlight: false,\n\t\t\t\t\ttext: this.text,\n\t\t\t\t}]\n\t\t\t}\n\t\t\t// Calculate the chunks\n\t\t\tconst chunks = []\n\t\t\tlet currentIndex = 0\n\t\t\tlet currentRange = 0\n\t\t\t// Iterate over all characters in the text\n\t\t\twhile (currentIndex < this.text.length) {\n\t\t\t\t// Get the first range to highlight\n\t\t\t\tconst range = this.ranges[currentRange]\n\t\t\t\t// If the range starts at the current index, construct a chunk to highlight,\n\t\t\t\t// set the next range and continue with the next iteration.\n\t\t\t\tif (range.start === currentIndex) {\n\t\t\t\t\tchunks.push({\n\t\t\t\t\t\t...range,\n\t\t\t\t\t\thighlight: true,\n\t\t\t\t\t\ttext: this.text.slice(range.start, range.end),\n\t\t\t\t\t})\n\t\t\t\t\tcurrentRange++\n\t\t\t\t\tcurrentIndex = range.end\n\t\t\t\t\t// If this was the last range to highlight and we haven't reached the end of the text,\n\t\t\t\t\t// add the rest of the text without highlighting.\n\t\t\t\t\tif (currentRange >= this.ranges.length && currentIndex < this.text.length) {\n\t\t\t\t\t\tchunks.push({\n\t\t\t\t\t\t\tstart: currentIndex,\n\t\t\t\t\t\t\tend: this.text.length,\n\t\t\t\t\t\t\thighlight: false,\n\t\t\t\t\t\t\ttext: this.text.slice(currentIndex),\n\t\t\t\t\t\t})\n\t\t\t\t\t\t// Set the current index so the while loop ends.\n\t\t\t\t\t\tcurrentIndex = this.text.length\n\t\t\t\t\t}\n\t\t\t\t\tcontinue\n\t\t\t\t}\n\t\t\t\t// If the current range does start after the current index, construct a chunk without\n\t\t\t\t// highlighting and set the current index to the start of the current range.\n\t\t\t\tchunks.push({\n\t\t\t\t\tstart: currentIndex,\n\t\t\t\t\tend: range.start,\n\t\t\t\t\thighlight: false,\n\t\t\t\t\ttext: this.text.slice(currentIndex, range.start),\n\t\t\t\t})\n\t\t\t\tcurrentIndex = range.start\n\t\t\t}\n\t\t\treturn chunks\n\t\t},\n\t},\n\t/**\n\t * The render function to display the component\n\t *\n\t * @param {Function} h The function to create VNodes\n\t * @return {object} The created VNode\n\t */\n\trender(h) {\n\t\tif (!this.ranges.length) {\n\t\t\treturn h('span', {}, this.text)\n\t\t}\n\n\t\treturn h('span', {}, this.chunks.map(chunk => {\n\t\t\treturn chunk.highlight ? h('strong', {}, chunk.text) : chunk.text\n\t\t}))\n\t},\n}\n</script>\n"],"names":[],"mappings":"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"}