@nextcloud/vue 8.18.0 → 8.20.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 (654) hide show
  1. package/CHANGELOG.md +56 -0
  2. package/dist/Components/NcActionButton.cjs +4 -4
  3. package/dist/Components/NcActionButton.mjs +4 -4
  4. package/dist/Components/NcActionButtonGroup.cjs +1 -1
  5. package/dist/Components/NcActionButtonGroup.mjs +1 -1
  6. package/dist/Components/NcActionCaption.cjs +1 -1
  7. package/dist/Components/NcActionCaption.mjs +1 -1
  8. package/dist/Components/NcActionCheckbox.cjs +2 -106
  9. package/dist/Components/NcActionCheckbox.cjs.map +1 -1
  10. package/dist/Components/NcActionCheckbox.mjs +2 -106
  11. package/dist/Components/NcActionCheckbox.mjs.map +1 -1
  12. package/dist/Components/NcActionInput.cjs +1 -1
  13. package/dist/Components/NcActionInput.mjs +1 -1
  14. package/dist/Components/NcActionLink.cjs +2 -2
  15. package/dist/Components/NcActionLink.mjs +2 -2
  16. package/dist/Components/NcActionRadio.cjs +2 -108
  17. package/dist/Components/NcActionRadio.cjs.map +1 -1
  18. package/dist/Components/NcActionRadio.mjs +2 -108
  19. package/dist/Components/NcActionRadio.mjs.map +1 -1
  20. package/dist/Components/NcActionRouter.cjs +2 -2
  21. package/dist/Components/NcActionRouter.mjs +2 -2
  22. package/dist/Components/NcActionSeparator.cjs +1 -1
  23. package/dist/Components/NcActionSeparator.mjs +1 -1
  24. package/dist/Components/NcActionText.cjs +2 -2
  25. package/dist/Components/NcActionText.mjs +2 -2
  26. package/dist/Components/NcActionTextEditable.cjs +2 -89
  27. package/dist/Components/NcActionTextEditable.cjs.map +1 -1
  28. package/dist/Components/NcActionTextEditable.mjs +2 -89
  29. package/dist/Components/NcActionTextEditable.mjs.map +1 -1
  30. package/dist/Components/NcActions.cjs +1 -1
  31. package/dist/Components/NcActions.mjs +1 -1
  32. package/dist/Components/NcAppContent.cjs +1 -1
  33. package/dist/Components/NcAppContent.mjs +1 -1
  34. package/dist/Components/NcAppNavigation.cjs +1 -1
  35. package/dist/Components/NcAppNavigation.mjs +1 -1
  36. package/dist/Components/NcAppNavigationCaption.cjs +1 -1
  37. package/dist/Components/NcAppNavigationCaption.mjs +1 -1
  38. package/dist/Components/NcAppNavigationIconBullet.cjs +1 -1
  39. package/dist/Components/NcAppNavigationIconBullet.mjs +1 -1
  40. package/dist/Components/NcAppNavigationItem.cjs +1 -1
  41. package/dist/Components/NcAppNavigationItem.mjs +1 -1
  42. package/dist/Components/NcAppNavigationList.cjs +1 -1
  43. package/dist/Components/NcAppNavigationList.mjs +1 -1
  44. package/dist/Components/NcAppNavigationNew.cjs +1 -1
  45. package/dist/Components/NcAppNavigationNew.mjs +1 -1
  46. package/dist/Components/NcAppNavigationNewItem.cjs +1 -1
  47. package/dist/Components/NcAppNavigationNewItem.mjs +1 -1
  48. package/dist/Components/NcAppNavigationSearch.cjs +1 -1
  49. package/dist/Components/NcAppNavigationSearch.mjs +1 -1
  50. package/dist/Components/NcAppNavigationSettings.cjs +1 -1
  51. package/dist/Components/NcAppNavigationSettings.mjs +1 -1
  52. package/dist/Components/NcAppNavigationSpacer.cjs +1 -1
  53. package/dist/Components/NcAppNavigationSpacer.mjs +1 -1
  54. package/dist/Components/NcAppNavigationToggle.cjs +1 -1
  55. package/dist/Components/NcAppNavigationToggle.mjs +1 -1
  56. package/dist/Components/NcAppSettingsDialog.cjs +1 -1
  57. package/dist/Components/NcAppSettingsDialog.mjs +1 -1
  58. package/dist/Components/NcAppSettingsSection.cjs +5 -8
  59. package/dist/Components/NcAppSettingsSection.cjs.map +1 -1
  60. package/dist/Components/NcAppSettingsSection.mjs +5 -8
  61. package/dist/Components/NcAppSettingsSection.mjs.map +1 -1
  62. package/dist/Components/NcAppSidebar.cjs +1 -1
  63. package/dist/Components/NcAppSidebar.mjs +1 -1
  64. package/dist/Components/NcAppSidebarTab.cjs +3 -4
  65. package/dist/Components/NcAppSidebarTab.cjs.map +1 -1
  66. package/dist/Components/NcAppSidebarTab.mjs +3 -4
  67. package/dist/Components/NcAppSidebarTab.mjs.map +1 -1
  68. package/dist/Components/NcAvatar.cjs +1 -1
  69. package/dist/Components/NcAvatar.mjs +1 -1
  70. package/dist/Components/NcBreadcrumb.cjs +1 -1
  71. package/dist/Components/NcBreadcrumb.mjs +1 -1
  72. package/dist/Components/NcBreadcrumbs.cjs +1 -1
  73. package/dist/Components/NcBreadcrumbs.mjs +1 -1
  74. package/dist/Components/NcButton.cjs +7 -8
  75. package/dist/Components/NcButton.cjs.map +1 -1
  76. package/dist/Components/NcButton.mjs +7 -8
  77. package/dist/Components/NcButton.mjs.map +1 -1
  78. package/dist/Components/NcCheckboxRadioSwitch.cjs +1 -1
  79. package/dist/Components/NcCheckboxRadioSwitch.mjs +1 -1
  80. package/dist/Components/NcChip.cjs +7 -13
  81. package/dist/Components/NcChip.cjs.map +1 -1
  82. package/dist/Components/NcChip.mjs +7 -13
  83. package/dist/Components/NcChip.mjs.map +1 -1
  84. package/dist/Components/NcCollectionList.cjs +1 -1
  85. package/dist/Components/NcCollectionList.mjs +1 -1
  86. package/dist/Components/NcColorPicker.cjs +1 -1
  87. package/dist/Components/NcColorPicker.mjs +1 -1
  88. package/dist/Components/NcContent.cjs +1 -1
  89. package/dist/Components/NcContent.mjs +1 -1
  90. package/dist/Components/NcCounterBubble.cjs +1 -1
  91. package/dist/Components/NcCounterBubble.mjs +1 -1
  92. package/dist/Components/NcDashboardWidget.cjs +1 -1
  93. package/dist/Components/NcDashboardWidget.mjs +1 -1
  94. package/dist/Components/NcDashboardWidgetItem.cjs +1 -1
  95. package/dist/Components/NcDashboardWidgetItem.mjs +1 -1
  96. package/dist/Components/NcDateTime.cjs +1 -1
  97. package/dist/Components/NcDateTime.mjs +1 -1
  98. package/dist/Components/NcDateTimePicker.cjs +37 -17
  99. package/dist/Components/NcDateTimePicker.cjs.map +1 -1
  100. package/dist/Components/NcDateTimePicker.mjs +37 -17
  101. package/dist/Components/NcDateTimePicker.mjs.map +1 -1
  102. package/dist/Components/NcDateTimePickerNative.cjs +52 -21
  103. package/dist/Components/NcDateTimePickerNative.cjs.map +1 -1
  104. package/dist/Components/NcDateTimePickerNative.mjs +52 -21
  105. package/dist/Components/NcDateTimePickerNative.mjs.map +1 -1
  106. package/dist/Components/NcDialog.cjs +1 -1
  107. package/dist/Components/NcDialog.mjs +1 -1
  108. package/dist/Components/NcDialogButton.cjs +1 -1
  109. package/dist/Components/NcDialogButton.mjs +1 -1
  110. package/dist/Components/NcEllipsisedOption.cjs +3 -3
  111. package/dist/Components/NcEllipsisedOption.cjs.map +1 -1
  112. package/dist/Components/NcEllipsisedOption.mjs +3 -3
  113. package/dist/Components/NcEllipsisedOption.mjs.map +1 -1
  114. package/dist/Components/NcEmojiPicker.cjs +1 -1
  115. package/dist/Components/NcEmojiPicker.mjs +1 -1
  116. package/dist/Components/NcEmptyContent.cjs +2 -3
  117. package/dist/Components/NcEmptyContent.cjs.map +1 -1
  118. package/dist/Components/NcEmptyContent.mjs +2 -3
  119. package/dist/Components/NcEmptyContent.mjs.map +1 -1
  120. package/dist/Components/NcGuestContent.cjs +1 -1
  121. package/dist/Components/NcGuestContent.mjs +1 -1
  122. package/dist/Components/NcHeaderButton.cjs +1 -1
  123. package/dist/Components/NcHeaderButton.mjs +1 -1
  124. package/dist/Components/NcHeaderMenu.cjs +1 -1
  125. package/dist/Components/NcHeaderMenu.mjs +1 -1
  126. package/dist/Components/NcIconSvgWrapper.cjs +1 -1
  127. package/dist/Components/NcIconSvgWrapper.mjs +1 -1
  128. package/dist/Components/NcInputField.cjs +2 -232
  129. package/dist/Components/NcInputField.cjs.map +1 -1
  130. package/dist/Components/NcInputField.mjs +2 -232
  131. package/dist/Components/NcInputField.mjs.map +1 -1
  132. package/dist/Components/NcListItem.cjs +1 -1
  133. package/dist/Components/NcListItem.mjs +1 -1
  134. package/dist/Components/NcListItemIcon.cjs +1 -1
  135. package/dist/Components/NcListItemIcon.mjs +1 -1
  136. package/dist/Components/NcLoadingIcon.cjs +1 -1
  137. package/dist/Components/NcLoadingIcon.mjs +1 -1
  138. package/dist/Components/NcModal.cjs +26 -17
  139. package/dist/Components/NcModal.cjs.map +1 -1
  140. package/dist/Components/NcModal.mjs +26 -17
  141. package/dist/Components/NcModal.mjs.map +1 -1
  142. package/dist/Components/NcNoteCard.cjs +6 -6
  143. package/dist/Components/NcNoteCard.cjs.map +1 -1
  144. package/dist/Components/NcNoteCard.mjs +6 -6
  145. package/dist/Components/NcNoteCard.mjs.map +1 -1
  146. package/dist/Components/NcPasswordField.cjs +1 -1
  147. package/dist/Components/NcPasswordField.mjs +1 -1
  148. package/dist/Components/NcPopover.cjs +1 -1
  149. package/dist/Components/NcPopover.mjs +1 -1
  150. package/dist/Components/NcProgressBar.cjs +1 -1
  151. package/dist/Components/NcProgressBar.mjs +1 -1
  152. package/dist/Components/NcRelatedResourcesPanel.cjs +1 -1
  153. package/dist/Components/NcRelatedResourcesPanel.mjs +1 -1
  154. package/dist/Components/NcRichContenteditable.cjs +2 -2
  155. package/dist/Components/NcRichContenteditable.mjs +2 -2
  156. package/dist/Components/NcRichText.cjs +3 -3
  157. package/dist/Components/NcRichText.mjs +4 -4
  158. package/dist/Components/NcSelect.cjs +1 -1
  159. package/dist/Components/NcSelect.mjs +1 -1
  160. package/dist/Components/NcSelectTags.cjs +1 -1
  161. package/dist/Components/NcSelectTags.mjs +1 -1
  162. package/dist/Components/NcSettingsInputText.cjs +1 -1
  163. package/dist/Components/NcSettingsInputText.mjs +1 -1
  164. package/dist/Components/NcSettingsSection.cjs +1 -1
  165. package/dist/Components/NcSettingsSection.mjs +1 -1
  166. package/dist/Components/NcSettingsSelectGroup.cjs +1 -1
  167. package/dist/Components/NcSettingsSelectGroup.mjs +1 -1
  168. package/dist/Components/NcTextArea.cjs +2 -179
  169. package/dist/Components/NcTextArea.cjs.map +1 -1
  170. package/dist/Components/NcTextArea.mjs +2 -179
  171. package/dist/Components/NcTextArea.mjs.map +1 -1
  172. package/dist/Components/NcTextField.cjs +1 -1
  173. package/dist/Components/NcTextField.mjs +1 -1
  174. package/dist/Components/NcTimezonePicker.cjs +1 -1
  175. package/dist/Components/NcTimezonePicker.mjs +1 -1
  176. package/dist/Components/NcUserBubble.cjs +1 -1
  177. package/dist/Components/NcUserBubble.mjs +1 -1
  178. package/dist/Components/NcUserStatusIcon.cjs +1 -1
  179. package/dist/Components/NcUserStatusIcon.mjs +1 -1
  180. package/dist/Components/NcVNodes.cjs +1 -2
  181. package/dist/Components/NcVNodes.cjs.map +1 -1
  182. package/dist/Components/NcVNodes.mjs +1 -2
  183. package/dist/Components/NcVNodes.mjs.map +1 -1
  184. package/dist/Composables/useHotKey.cjs +2 -4
  185. package/dist/Composables/useHotKey.cjs.map +1 -1
  186. package/dist/Composables/useHotKey.mjs +2 -4
  187. package/dist/Composables/useHotKey.mjs.map +1 -1
  188. package/dist/Composables/useIsDarkTheme.cjs +18 -0
  189. package/dist/Composables/useIsDarkTheme.cjs.map +1 -0
  190. package/dist/Composables/useIsDarkTheme.mjs +18 -0
  191. package/dist/Composables/useIsDarkTheme.mjs.map +1 -0
  192. package/dist/Directives/Linkify.cjs +1 -2
  193. package/dist/Directives/Linkify.cjs.map +1 -1
  194. package/dist/Directives/Linkify.mjs +1 -2
  195. package/dist/Directives/Linkify.mjs.map +1 -1
  196. package/dist/Directives/Tooltip.cjs +1 -1
  197. package/dist/Directives/Tooltip.mjs +1 -1
  198. package/dist/Functions/dialog.cjs +27 -0
  199. package/dist/Functions/dialog.cjs.map +1 -0
  200. package/dist/Functions/dialog.mjs +25 -0
  201. package/dist/Functions/dialog.mjs.map +1 -0
  202. package/dist/Functions/emoji.cjs +1 -1
  203. package/dist/Functions/emoji.mjs +1 -1
  204. package/dist/Functions/isDarkTheme.cjs +12 -0
  205. package/dist/Functions/isDarkTheme.cjs.map +1 -0
  206. package/dist/Functions/isDarkTheme.mjs +12 -0
  207. package/dist/Functions/isDarkTheme.mjs.map +1 -0
  208. package/dist/Functions/reference.cjs +2 -2
  209. package/dist/Functions/reference.mjs +2 -2
  210. package/dist/Functions/registerReference.cjs +1 -1
  211. package/dist/Functions/registerReference.mjs +1 -1
  212. package/dist/Functions/usernameToColor.cjs +1 -1
  213. package/dist/Functions/usernameToColor.mjs +1 -1
  214. package/dist/Mixins/richEditor.cjs +1 -1
  215. package/dist/Mixins/richEditor.mjs +1 -1
  216. package/dist/assets/{NcActionButton-D90PTEA5.css → NcActionButton-CNq6xIdS.css} +1 -1
  217. package/dist/assets/{NcActionCheckbox-sIGqnckr.css → NcActionCheckbox-DeW2CCVc.css} +11 -11
  218. package/dist/assets/{NcActionInput-C_3Csa6A.css → NcActionInput-CNRERfyh.css} +61 -61
  219. package/dist/assets/{NcActionLink-Db_ZlqWs.css → NcActionLink-CC6a7Hsf.css} +1 -1
  220. package/dist/assets/{NcActionRadio-DFcWmvae.css → NcActionRadio-DC7Wp9rR.css} +11 -11
  221. package/dist/assets/{NcActionRouter-DidTlbov.css → NcActionRouter-CsIBHw6E.css} +1 -1
  222. package/dist/assets/{NcActionText-DCx1DWXe.css → NcActionText-BSD_HYx4.css} +1 -1
  223. package/dist/assets/{NcActionTextEditable-Dud9NOdm.css → NcActionTextEditable-Cg16Q4zr.css} +59 -59
  224. package/dist/assets/{NcActions-fmLIlJ2i.css → NcActions-DM_LoRlx.css} +12 -12
  225. package/dist/assets/{NcAppContent-DVBVZyuW.css → NcAppContent-CpXVlHUj.css} +6 -6
  226. package/dist/assets/{NcAppNavigation-fhylfTxx.css → NcAppNavigation-CBN6X2dT.css} +13 -13
  227. package/dist/assets/{NcAppNavigationItem-BfJ84ZO0.css → NcAppNavigationItem-CNZsPcla.css} +31 -31
  228. package/dist/assets/{NcAppNavigationNewItem-s6Dd9PrB.css → NcAppNavigationNewItem-CQ1f40wK.css} +1 -1
  229. package/dist/assets/{NcAppNavigationToggle-DvYpNzHv.css → NcAppNavigationToggle-Chtb7sE7.css} +5 -5
  230. package/dist/assets/{NcAppSidebar-CpV7czJx.css → NcAppSidebar-BntAj6H-.css} +73 -73
  231. package/dist/assets/{NcAvatar-CfUWTmJW.css → NcAvatar-xe4gdFKk.css} +25 -25
  232. package/dist/assets/{NcCheckboxRadioSwitch-BzAGGne9.css → NcCheckboxRadioSwitch-D0kAZROF.css} +31 -31
  233. package/dist/assets/NcColorPicker-Dw2wy2tU.css +174 -0
  234. package/dist/assets/{NcDateTimePicker-DAy7A4EI.css → NcDateTimePicker-D264hKgE.css} +48 -33
  235. package/dist/assets/NcDateTimePickerNative-BfZfqRvD.css +47 -0
  236. package/dist/assets/{NcEllipsisedOption-DZK2vWD1.css → NcEllipsisedOption-DGr9_bIL.css} +5 -5
  237. package/dist/assets/{NcInputField-CQc5dRbY.css → NcInputField-C0PHosfg.css} +32 -32
  238. package/dist/assets/{NcModal-Djc2K_kW.css → NcModal-BBKX-T6V.css} +66 -62
  239. package/dist/assets/{NcPasswordField-DWd5gg73.css → NcPasswordField-DZ6dcMzH.css} +2 -2
  240. package/dist/assets/{NcRichContenteditable-BYEZK1DT.css → NcRichContenteditable-R-32wbyl.css} +10 -10
  241. package/dist/assets/{NcRichText-DqDAPQPD.css → NcRichText-Ds8WxUk1.css} +56 -58
  242. package/dist/assets/{NcSettingsInputText-DbTNj9E6.css → NcSettingsInputText-Bsp_6DjJ.css} +5 -5
  243. package/dist/assets/{NcSettingsSelectGroup-CzD7YrGm.css → NcSettingsSelectGroup-BEjOwCJQ.css} +2 -2
  244. package/dist/assets/{NcTextArea-D8bZi2fT.css → NcTextArea-fzbciv3V.css} +20 -20
  245. package/dist/assets/{referencePickerModal-9BcmmfUy.css → referencePickerModal-BhhuyO3J.css} +38 -38
  246. package/dist/chunks/{AlertCircleOutline-DLtiWgZd.cjs → AlertCircleOutline-BrsasUsU.cjs} +1 -1
  247. package/dist/chunks/AlertCircleOutline-BrsasUsU.cjs.map +1 -0
  248. package/dist/chunks/{AlertCircleOutline-DU3QwU5Y.mjs → AlertCircleOutline-DBxbepLy.mjs} +1 -1
  249. package/dist/chunks/AlertCircleOutline-DBxbepLy.mjs.map +1 -0
  250. package/dist/chunks/{ArrowLeft-CONurT5C.cjs → ArrowLeft-BP7yfzCQ.cjs} +1 -1
  251. package/dist/chunks/ArrowLeft-BP7yfzCQ.cjs.map +1 -0
  252. package/dist/chunks/{ArrowLeft-BhAxJBYx.mjs → ArrowLeft-DuT2LZOm.mjs} +1 -1
  253. package/dist/chunks/ArrowLeft-DuT2LZOm.mjs.map +1 -0
  254. package/dist/chunks/{ArrowRight-KsL2PC-o.mjs → ArrowRight-CY2b9hgN.mjs} +1 -1
  255. package/dist/chunks/ArrowRight-CY2b9hgN.mjs.map +1 -0
  256. package/dist/chunks/{ArrowRight-Bj5G_mG0.cjs → ArrowRight-DPARnmu3.cjs} +1 -1
  257. package/dist/chunks/ArrowRight-DPARnmu3.cjs.map +1 -0
  258. package/dist/chunks/{Check-XHAzUBkX.mjs → Check-BkThHPH7.mjs} +1 -1
  259. package/dist/chunks/Check-BkThHPH7.mjs.map +1 -0
  260. package/dist/chunks/{Check-fCbe4vqy.cjs → Check-Du8mPz_B.cjs} +1 -1
  261. package/dist/chunks/Check-Du8mPz_B.cjs.map +1 -0
  262. package/dist/chunks/{ChevronDown-CiFbcDUC.cjs → ChevronDown-BlfyuflD.cjs} +1 -1
  263. package/dist/chunks/ChevronDown-BlfyuflD.cjs.map +1 -0
  264. package/dist/chunks/{ChevronDown-D3Tfshug.mjs → ChevronDown-DFQfzh63.mjs} +1 -1
  265. package/dist/chunks/ChevronDown-DFQfzh63.mjs.map +1 -0
  266. package/dist/chunks/{ChevronRight-C3eVhc5a.mjs → ChevronRight-BUv-PtHh.mjs} +1 -1
  267. package/dist/chunks/ChevronRight-BUv-PtHh.mjs.map +1 -0
  268. package/dist/chunks/{ChevronRight-CWbdN5_r.cjs → ChevronRight-ZCKVg9OI.cjs} +1 -1
  269. package/dist/chunks/ChevronRight-ZCKVg9OI.cjs.map +1 -0
  270. package/dist/chunks/{ChevronUp-A2riTBrv.cjs → ChevronUp-Bpd__OBZ.cjs} +1 -1
  271. package/dist/chunks/ChevronUp-Bpd__OBZ.cjs.map +1 -0
  272. package/dist/chunks/{ChevronUp-ljACquzS.mjs → ChevronUp-C7Dy9Bph.mjs} +1 -1
  273. package/dist/chunks/ChevronUp-C7Dy9Bph.mjs.map +1 -0
  274. package/dist/chunks/{Close-B6ccm1RP.mjs → Close-BtLPUSdO.mjs} +1 -1
  275. package/dist/chunks/Close-BtLPUSdO.mjs.map +1 -0
  276. package/dist/chunks/{Close-B7lGu0cG.cjs → Close-CqmXxEKi.cjs} +1 -1
  277. package/dist/chunks/Close-CqmXxEKi.cjs.map +1 -0
  278. package/dist/chunks/{DotsHorizontal-DQfnwpao.cjs → DotsHorizontal-BoI3vnhk.cjs} +1 -1
  279. package/dist/chunks/DotsHorizontal-BoI3vnhk.cjs.map +1 -0
  280. package/dist/chunks/{DotsHorizontal-Cd2x8oz2.mjs → DotsHorizontal-C6LNsw4N.mjs} +1 -1
  281. package/dist/chunks/DotsHorizontal-C6LNsw4N.mjs.map +1 -0
  282. package/dist/chunks/{GenColors-BWE946ht.mjs → GenColors-BAOuMMLW.mjs} +3 -3
  283. package/dist/chunks/{GenColors-BWE946ht.mjs.map → GenColors-BAOuMMLW.mjs.map} +1 -1
  284. package/dist/chunks/{GenColors-Cay7TLwO.cjs → GenColors-iV_vrBr4.cjs} +3 -3
  285. package/dist/chunks/{GenColors-Cay7TLwO.cjs.map → GenColors-iV_vrBr4.cjs.map} +1 -1
  286. package/dist/chunks/{NcActionButtonGroup-BrN2mWdo.cjs → NcActionButtonGroup-C0nQ7J_W.cjs} +3 -3
  287. package/dist/chunks/{NcActionButtonGroup-BrN2mWdo.cjs.map → NcActionButtonGroup-C0nQ7J_W.cjs.map} +1 -1
  288. package/dist/chunks/{NcActionButtonGroup-B5RmRcow.mjs → NcActionButtonGroup-D1B23tmS.mjs} +3 -3
  289. package/dist/chunks/{NcActionButtonGroup-B5RmRcow.mjs.map → NcActionButtonGroup-D1B23tmS.mjs.map} +1 -1
  290. package/dist/chunks/NcActionCheckbox-DiDhwRJA.cjs +137 -0
  291. package/dist/chunks/NcActionCheckbox-DiDhwRJA.cjs.map +1 -0
  292. package/dist/chunks/NcActionCheckbox-DiTExF3O.mjs +138 -0
  293. package/dist/chunks/NcActionCheckbox-DiTExF3O.mjs.map +1 -0
  294. package/dist/chunks/{NcActionInput-DY2qdzdN.mjs → NcActionInput-BcNial11.mjs} +46 -14
  295. package/dist/chunks/NcActionInput-BcNial11.mjs.map +1 -0
  296. package/dist/chunks/{NcActionInput-CUAQEdIX.cjs → NcActionInput-zCzwKL6H.cjs} +46 -14
  297. package/dist/chunks/NcActionInput-zCzwKL6H.cjs.map +1 -0
  298. package/dist/chunks/NcActionRadio-DSIJMuFP.cjs +139 -0
  299. package/dist/chunks/NcActionRadio-DSIJMuFP.cjs.map +1 -0
  300. package/dist/chunks/NcActionRadio-kbPC8ri8.mjs +140 -0
  301. package/dist/chunks/NcActionRadio-kbPC8ri8.mjs.map +1 -0
  302. package/dist/chunks/NcActionTextEditable-CA3Eoscz.mjs +122 -0
  303. package/dist/chunks/NcActionTextEditable-CA3Eoscz.mjs.map +1 -0
  304. package/dist/chunks/NcActionTextEditable-DgdiBv6b.cjs +121 -0
  305. package/dist/chunks/NcActionTextEditable-DgdiBv6b.cjs.map +1 -0
  306. package/dist/chunks/{NcActions-BeDyeq8X.mjs → NcActions-BUZ5Oprh.mjs} +36 -39
  307. package/dist/chunks/{NcActions-BAP2SRwO.cjs.map → NcActions-BUZ5Oprh.mjs.map} +1 -1
  308. package/dist/chunks/{NcActions-BAP2SRwO.cjs → NcActions-CCYNSnCn.cjs} +36 -39
  309. package/dist/chunks/{NcActions-BeDyeq8X.mjs.map → NcActions-CCYNSnCn.cjs.map} +1 -1
  310. package/dist/chunks/{NcAppContent-fXpgsMfG.cjs → NcAppContent-BnoVcMYZ.cjs} +12 -8
  311. package/dist/chunks/NcAppContent-BnoVcMYZ.cjs.map +1 -0
  312. package/dist/chunks/{NcAppContent-lEyly7Jk.mjs → NcAppContent-C-WAXtGI.mjs} +12 -8
  313. package/dist/chunks/NcAppContent-C-WAXtGI.mjs.map +1 -0
  314. package/dist/chunks/{NcAppNavigation-BleAA1U_.cjs → NcAppNavigation-BuKJwvwT.cjs} +3 -3
  315. package/dist/chunks/{NcAppNavigation-BleAA1U_.cjs.map → NcAppNavigation-BuKJwvwT.cjs.map} +1 -1
  316. package/dist/chunks/{NcAppNavigation-CxsxPI9x.mjs → NcAppNavigation-CHWYmJnQ.mjs} +3 -3
  317. package/dist/chunks/{NcAppNavigation-CxsxPI9x.mjs.map → NcAppNavigation-CHWYmJnQ.mjs.map} +1 -1
  318. package/dist/chunks/{NcAppNavigationCaption-B-KUvV8u.mjs → NcAppNavigationCaption-AGVUaCQj.mjs} +3 -3
  319. package/dist/chunks/{NcAppNavigationCaption-B-KUvV8u.mjs.map → NcAppNavigationCaption-AGVUaCQj.mjs.map} +1 -1
  320. package/dist/chunks/{NcAppNavigationCaption-DdxbI-rX.cjs → NcAppNavigationCaption-DUPonEWi.cjs} +3 -3
  321. package/dist/chunks/{NcAppNavigationCaption-DdxbI-rX.cjs.map → NcAppNavigationCaption-DUPonEWi.cjs.map} +1 -1
  322. package/dist/chunks/{NcAppNavigationItem-CybYrL2f.mjs → NcAppNavigationItem-DmJnEXTV.mjs} +23 -27
  323. package/dist/chunks/NcAppNavigationItem-DmJnEXTV.mjs.map +1 -0
  324. package/dist/chunks/{NcAppNavigationItem-Chm1R863.cjs → NcAppNavigationItem-Y_CVXzId.cjs} +23 -27
  325. package/dist/chunks/NcAppNavigationItem-Y_CVXzId.cjs.map +1 -0
  326. package/dist/chunks/{NcAppNavigationNewItem-CdKBA1wN.cjs → NcAppNavigationNewItem-B76-cCDH.cjs} +2 -2
  327. package/dist/chunks/{NcAppNavigationNewItem-CdKBA1wN.cjs.map → NcAppNavigationNewItem-B76-cCDH.cjs.map} +1 -1
  328. package/dist/chunks/{NcAppNavigationNewItem-Cqc-RpSB.mjs → NcAppNavigationNewItem-DmObx9Od.mjs} +2 -2
  329. package/dist/chunks/{NcAppNavigationNewItem-Cqc-RpSB.mjs.map → NcAppNavigationNewItem-DmObx9Od.mjs.map} +1 -1
  330. package/dist/chunks/{NcAppNavigationSearch-8jcfsc-r.mjs → NcAppNavigationSearch-Br5pMcP9.mjs} +6 -10
  331. package/dist/chunks/{NcAppNavigationSearch-8jcfsc-r.mjs.map → NcAppNavigationSearch-Br5pMcP9.mjs.map} +1 -1
  332. package/dist/chunks/{NcAppNavigationSearch-CZRhuV6d.cjs → NcAppNavigationSearch-CNwLOHdO.cjs} +7 -11
  333. package/dist/chunks/{NcAppNavigationSearch-CZRhuV6d.cjs.map → NcAppNavigationSearch-CNwLOHdO.cjs.map} +1 -1
  334. package/dist/chunks/{NcAppNavigationSettings-C-_G8yUn.cjs → NcAppNavigationSettings-BH5t68oV.cjs} +4 -4
  335. package/dist/chunks/NcAppNavigationSettings-BH5t68oV.cjs.map +1 -0
  336. package/dist/chunks/{NcAppNavigationSettings-DScz0UWm.mjs → NcAppNavigationSettings-L0Jfd8At.mjs} +4 -4
  337. package/dist/chunks/NcAppNavigationSettings-L0Jfd8At.mjs.map +1 -0
  338. package/dist/chunks/{NcAppNavigationToggle-DAhbqsn_.cjs → NcAppNavigationToggle-Dwg-dMWx.cjs} +5 -5
  339. package/dist/chunks/NcAppNavigationToggle-Dwg-dMWx.cjs.map +1 -0
  340. package/dist/chunks/{NcAppNavigationToggle-BXainLDc.mjs → NcAppNavigationToggle-hXwP6wJk.mjs} +5 -5
  341. package/dist/chunks/NcAppNavigationToggle-hXwP6wJk.mjs.map +1 -0
  342. package/dist/chunks/{NcAppSettingsDialog-BxDO8Ivr.mjs → NcAppSettingsDialog-Bo_xk7JT.mjs} +8 -15
  343. package/dist/chunks/{NcAppSettingsDialog-BxDO8Ivr.mjs.map → NcAppSettingsDialog-Bo_xk7JT.mjs.map} +1 -1
  344. package/dist/chunks/{NcAppSettingsDialog-niXwDCmG.cjs → NcAppSettingsDialog-Dkl3cqU-.cjs} +8 -15
  345. package/dist/chunks/{NcAppSettingsDialog-niXwDCmG.cjs.map → NcAppSettingsDialog-Dkl3cqU-.cjs.map} +1 -1
  346. package/dist/chunks/{NcAppSidebar-BMXNel-9.mjs → NcAppSidebar-BHUsuOkb.mjs} +20 -23
  347. package/dist/chunks/NcAppSidebar-BHUsuOkb.mjs.map +1 -0
  348. package/dist/chunks/{NcAppSidebar-pD7Kd1Ld.cjs → NcAppSidebar-D0XGsAFm.cjs} +20 -23
  349. package/dist/chunks/NcAppSidebar-D0XGsAFm.cjs.map +1 -0
  350. package/dist/chunks/{NcAvatar-DlrXmAED.mjs → NcAvatar-Bv7NGIzM.mjs} +21 -23
  351. package/dist/chunks/{NcAvatar-DlrXmAED.mjs.map → NcAvatar-Bv7NGIzM.mjs.map} +1 -1
  352. package/dist/chunks/{NcAvatar-U5nqf05n.cjs → NcAvatar-DypzACJs.cjs} +21 -23
  353. package/dist/chunks/{NcAvatar-U5nqf05n.cjs.map → NcAvatar-DypzACJs.cjs.map} +1 -1
  354. package/dist/chunks/{NcBreadcrumb-C46_szbr.cjs → NcBreadcrumb-DVn5-KGF.cjs} +5 -5
  355. package/dist/chunks/{NcBreadcrumb-C46_szbr.cjs.map → NcBreadcrumb-DVn5-KGF.cjs.map} +1 -1
  356. package/dist/chunks/{NcBreadcrumb-BXZ4F07O.mjs → NcBreadcrumb-Da_uoAcB.mjs} +5 -5
  357. package/dist/chunks/{NcBreadcrumb-BXZ4F07O.mjs.map → NcBreadcrumb-Da_uoAcB.mjs.map} +1 -1
  358. package/dist/chunks/{NcBreadcrumbs-D8nGOAl3.cjs → NcBreadcrumbs-JqPHfTRj.cjs} +26 -30
  359. package/dist/chunks/NcBreadcrumbs-JqPHfTRj.cjs.map +1 -0
  360. package/dist/chunks/{NcBreadcrumbs-DIONM2xF.mjs → NcBreadcrumbs-qEKUdf4H.mjs} +26 -30
  361. package/dist/chunks/NcBreadcrumbs-qEKUdf4H.mjs.map +1 -0
  362. package/dist/chunks/{NcCheckboxRadioSwitch-COeeT-7G.cjs → NcCheckboxRadioSwitch-KmTVoK0G.cjs} +56 -28
  363. package/dist/chunks/NcCheckboxRadioSwitch-KmTVoK0G.cjs.map +1 -0
  364. package/dist/chunks/{NcCheckboxRadioSwitch-CvMEEI9x.mjs → NcCheckboxRadioSwitch-l-6YVD9V.mjs} +56 -28
  365. package/dist/chunks/NcCheckboxRadioSwitch-l-6YVD9V.mjs.map +1 -0
  366. package/dist/chunks/NcCheckboxRadioSwitch.vue_vue_type_style_index_0_scoped_ff5243c5_lang-CwPH3K13.mjs +3 -0
  367. package/dist/chunks/NcCheckboxRadioSwitch.vue_vue_type_style_index_0_scoped_ff5243c5_lang-CwPH3K13.mjs.map +1 -0
  368. package/dist/chunks/NcCheckboxRadioSwitch.vue_vue_type_style_index_0_scoped_ff5243c5_lang-Zy8SpLXY.cjs +4 -0
  369. package/dist/chunks/NcCheckboxRadioSwitch.vue_vue_type_style_index_0_scoped_ff5243c5_lang-Zy8SpLXY.cjs.map +1 -0
  370. package/dist/chunks/{NcCollectionList-YCc2830t.mjs → NcCollectionList-76i9dHm0.mjs} +6 -7
  371. package/dist/chunks/{NcCollectionList-YCc2830t.mjs.map → NcCollectionList-76i9dHm0.mjs.map} +1 -1
  372. package/dist/chunks/{NcCollectionList-DeTZuXSB.cjs → NcCollectionList-UhLoC1sN.cjs} +6 -7
  373. package/dist/chunks/{NcCollectionList-DeTZuXSB.cjs.map → NcCollectionList-UhLoC1sN.cjs.map} +1 -1
  374. package/dist/chunks/{NcColorPicker-D3b9pIOc.mjs → NcColorPicker-CKWvpkRM.mjs} +43 -14
  375. package/dist/chunks/NcColorPicker-CKWvpkRM.mjs.map +1 -0
  376. package/dist/chunks/{NcColorPicker-CmHTPv60.cjs → NcColorPicker-CVeLov2Q.cjs} +43 -14
  377. package/dist/chunks/NcColorPicker-CVeLov2Q.cjs.map +1 -0
  378. package/dist/chunks/{NcContent-DKpTIl9F.mjs → NcContent-BTuJtsQM.mjs} +4 -4
  379. package/dist/chunks/{NcContent-DKpTIl9F.mjs.map → NcContent-BTuJtsQM.mjs.map} +1 -1
  380. package/dist/chunks/{NcContent-BTyHf5mF.cjs → NcContent-BXi18ILU.cjs} +4 -4
  381. package/dist/chunks/{NcContent-BTyHf5mF.cjs.map → NcContent-BXi18ILU.cjs.map} +1 -1
  382. package/dist/chunks/{NcCounterBubble-R8Tmi05i.cjs → NcCounterBubble-DF2rwIo4.cjs} +4 -6
  383. package/dist/chunks/{NcCounterBubble-R8Tmi05i.cjs.map → NcCounterBubble-DF2rwIo4.cjs.map} +1 -1
  384. package/dist/chunks/{NcCounterBubble-D1QC3eP1.mjs → NcCounterBubble-M1q9GRkH.mjs} +4 -6
  385. package/dist/chunks/{NcCounterBubble-D1QC3eP1.mjs.map → NcCounterBubble-M1q9GRkH.mjs.map} +1 -1
  386. package/dist/chunks/{NcDashboardWidget-DLcO9TSj.cjs → NcDashboardWidget-Bu-WC7kg.cjs} +5 -5
  387. package/dist/chunks/{NcDashboardWidget-DLcO9TSj.cjs.map → NcDashboardWidget-Bu-WC7kg.cjs.map} +1 -1
  388. package/dist/chunks/{NcDashboardWidget-CANAYcCa.mjs → NcDashboardWidget-Xit6eLCu.mjs} +5 -5
  389. package/dist/chunks/{NcDashboardWidget-CANAYcCa.mjs.map → NcDashboardWidget-Xit6eLCu.mjs.map} +1 -1
  390. package/dist/chunks/{NcDashboardWidgetItem-vNvbUHBP.cjs → NcDashboardWidgetItem-CI59K-wE.cjs} +3 -3
  391. package/dist/chunks/{NcDashboardWidgetItem-vNvbUHBP.cjs.map → NcDashboardWidgetItem-CI59K-wE.cjs.map} +1 -1
  392. package/dist/chunks/{NcDashboardWidgetItem-BwJAiaT0.mjs → NcDashboardWidgetItem-CcCRU45T.mjs} +3 -3
  393. package/dist/chunks/{NcDashboardWidgetItem-BwJAiaT0.mjs.map → NcDashboardWidgetItem-CcCRU45T.mjs.map} +1 -1
  394. package/dist/chunks/{NcDateTime-ciAHA2YL.mjs → NcDateTime-B5H_8fXN.mjs} +1 -1
  395. package/dist/chunks/{NcDateTime-ciAHA2YL.mjs.map → NcDateTime-B5H_8fXN.mjs.map} +1 -1
  396. package/dist/chunks/{NcDateTime-BfOmGrzK.cjs → NcDateTime-CaJHhgab.cjs} +1 -1
  397. package/dist/chunks/{NcDateTime-BfOmGrzK.cjs.map → NcDateTime-CaJHhgab.cjs.map} +1 -1
  398. package/dist/chunks/{NcDialog-D9l7GQQJ.cjs → NcDialog-CWGgSCpv.cjs} +3 -3
  399. package/dist/chunks/{NcDialog-D9l7GQQJ.cjs.map → NcDialog-CWGgSCpv.cjs.map} +1 -1
  400. package/dist/chunks/{NcDialog-DmcKxy4v.mjs → NcDialog-LPfqWPKk.mjs} +3 -3
  401. package/dist/chunks/{NcDialog-DmcKxy4v.mjs.map → NcDialog-LPfqWPKk.mjs.map} +1 -1
  402. package/dist/chunks/{NcDialogButton-CubYnLkp.mjs → NcDialogButton-7UqknfnA.mjs} +3 -4
  403. package/dist/chunks/{NcDialogButton-CubYnLkp.mjs.map → NcDialogButton-7UqknfnA.mjs.map} +1 -1
  404. package/dist/chunks/{NcDialogButton-C4-agMb3.cjs → NcDialogButton-B7d1LWFN.cjs} +3 -4
  405. package/dist/chunks/{NcDialogButton-C4-agMb3.cjs.map → NcDialogButton-B7d1LWFN.cjs.map} +1 -1
  406. package/dist/chunks/{NcEmojiPicker-DqaJO21R.mjs → NcEmojiPicker-B36zeXTi.mjs} +10 -12
  407. package/dist/chunks/NcEmojiPicker-B36zeXTi.mjs.map +1 -0
  408. package/dist/chunks/{NcEmojiPicker-DV7HDeqU.cjs → NcEmojiPicker-Dm6SEjiB.cjs} +10 -12
  409. package/dist/chunks/NcEmojiPicker-Dm6SEjiB.cjs.map +1 -0
  410. package/dist/chunks/{NcHeaderMenu-Bis33gPF.cjs → NcHeaderMenu-CzS2doDR.cjs} +6 -8
  411. package/dist/chunks/{NcHeaderMenu-Bis33gPF.cjs.map → NcHeaderMenu-CzS2doDR.cjs.map} +1 -1
  412. package/dist/chunks/{NcHeaderMenu-DYGKi6bj.mjs → NcHeaderMenu-vLqcJ-_w.mjs} +6 -8
  413. package/dist/chunks/{NcHeaderMenu-DYGKi6bj.mjs.map → NcHeaderMenu-vLqcJ-_w.mjs.map} +1 -1
  414. package/dist/chunks/{NcIconSvgWrapper-Cb4bAwV6.cjs → NcIconSvgWrapper-B_eOG2sZ.cjs} +2 -2
  415. package/dist/chunks/{NcIconSvgWrapper-Cb4bAwV6.cjs.map → NcIconSvgWrapper-B_eOG2sZ.cjs.map} +1 -1
  416. package/dist/chunks/{NcIconSvgWrapper-DjrkBUkC.mjs → NcIconSvgWrapper-CHmdAuhg.mjs} +2 -2
  417. package/dist/chunks/{NcIconSvgWrapper-DjrkBUkC.mjs.map → NcIconSvgWrapper-CHmdAuhg.mjs.map} +1 -1
  418. package/dist/chunks/{NcInputConfirmCancel-bHJNQ1vm.cjs → NcInputConfirmCancel-CYQsG_3t.cjs} +4 -4
  419. package/dist/chunks/{NcInputConfirmCancel-bHJNQ1vm.cjs.map → NcInputConfirmCancel-CYQsG_3t.cjs.map} +1 -1
  420. package/dist/chunks/{NcInputConfirmCancel-PXVZ7mLT.mjs → NcInputConfirmCancel-YuMDoRCi.mjs} +4 -4
  421. package/dist/chunks/{NcInputConfirmCancel-PXVZ7mLT.mjs.map → NcInputConfirmCancel-YuMDoRCi.mjs.map} +1 -1
  422. package/dist/chunks/NcInputField-CKq4udSu.cjs +260 -0
  423. package/dist/chunks/NcInputField-CKq4udSu.cjs.map +1 -0
  424. package/dist/chunks/NcInputField-DNQOfrn0.mjs +261 -0
  425. package/dist/chunks/NcInputField-DNQOfrn0.mjs.map +1 -0
  426. package/dist/chunks/{NcListItem-sECq4ExO.mjs → NcListItem-BS9Vcxph.mjs} +6 -7
  427. package/dist/chunks/{NcListItem-sECq4ExO.mjs.map → NcListItem-BS9Vcxph.mjs.map} +1 -1
  428. package/dist/chunks/{NcListItem-Bet_T8Y0.cjs → NcListItem-DMaVvwXJ.cjs} +6 -7
  429. package/dist/chunks/{NcListItem-Bet_T8Y0.cjs.map → NcListItem-DMaVvwXJ.cjs.map} +1 -1
  430. package/dist/chunks/{NcListItemIcon-Chq4Sr3z.cjs → NcListItemIcon-BLvWsnbD.cjs} +5 -6
  431. package/dist/chunks/{NcListItemIcon-Chq4Sr3z.cjs.map → NcListItemIcon-BLvWsnbD.cjs.map} +1 -1
  432. package/dist/chunks/{NcListItemIcon-CoTZl0mj.mjs → NcListItemIcon-BdoUa2si.mjs} +5 -6
  433. package/dist/chunks/{NcListItemIcon-CoTZl0mj.mjs.map → NcListItemIcon-BdoUa2si.mjs.map} +1 -1
  434. package/dist/chunks/{NcPasswordField-BQCunRtm.cjs → NcPasswordField-CV_FuOEL.cjs} +37 -13
  435. package/dist/chunks/NcPasswordField-CV_FuOEL.cjs.map +1 -0
  436. package/dist/chunks/{NcPasswordField-DLXPfvQB.mjs → NcPasswordField-oIhYntQw.mjs} +34 -10
  437. package/dist/chunks/NcPasswordField-oIhYntQw.mjs.map +1 -0
  438. package/dist/chunks/{NcPopover-DbeCmze0.mjs → NcPopover-DzYbNu-I.mjs} +7 -11
  439. package/dist/chunks/{NcPopover-DbeCmze0.mjs.map → NcPopover-DzYbNu-I.mjs.map} +1 -1
  440. package/dist/chunks/{NcPopover-C0G7sLVP.cjs → NcPopover-MxwUgZu1.cjs} +7 -11
  441. package/dist/chunks/{NcPopover-C0G7sLVP.cjs.map → NcPopover-MxwUgZu1.cjs.map} +1 -1
  442. package/dist/chunks/{NcProgressBar-D_6Z7U5w.mjs → NcProgressBar-DegJ2JjE.mjs} +2 -2
  443. package/dist/chunks/{NcProgressBar-D_6Z7U5w.mjs.map → NcProgressBar-DegJ2JjE.mjs.map} +1 -1
  444. package/dist/chunks/{NcProgressBar-BrDAF_Zr.cjs → NcProgressBar-Do5Y3u8S.cjs} +2 -2
  445. package/dist/chunks/{NcProgressBar-BrDAF_Zr.cjs.map → NcProgressBar-Do5Y3u8S.cjs.map} +1 -1
  446. package/dist/chunks/{NcRelatedResourcesPanel-CsOAnfA1.cjs → NcRelatedResourcesPanel-BRoP-NiB.cjs} +16 -24
  447. package/dist/chunks/NcRelatedResourcesPanel-BRoP-NiB.cjs.map +1 -0
  448. package/dist/chunks/{NcRelatedResourcesPanel-DZICfdzQ.mjs → NcRelatedResourcesPanel-Czuc8tf5.mjs} +16 -24
  449. package/dist/chunks/NcRelatedResourcesPanel-Czuc8tf5.mjs.map +1 -0
  450. package/dist/chunks/{NcRichContenteditable-C0hSvLHR.mjs → NcRichContenteditable-Cv9rZiqh.mjs} +55 -41
  451. package/dist/chunks/NcRichContenteditable-Cv9rZiqh.mjs.map +1 -0
  452. package/dist/chunks/{NcRichContenteditable-Dj9rufAV.cjs → NcRichContenteditable-nVuOP1__.cjs} +55 -41
  453. package/dist/chunks/NcRichContenteditable-nVuOP1__.cjs.map +1 -0
  454. package/dist/chunks/{NcRichText-DSnF0Fow.cjs → NcRichText-D7syaTEJ.cjs} +20 -16
  455. package/dist/chunks/NcRichText-D7syaTEJ.cjs.map +1 -0
  456. package/dist/chunks/{NcRichText-CgD7wGDe.mjs → NcRichText-ohrXAz36.mjs} +20 -16
  457. package/dist/chunks/NcRichText-ohrXAz36.mjs.map +1 -0
  458. package/dist/chunks/{NcSelect-D4om25m8.mjs → NcSelect-DJQ1nwEX.mjs} +49 -21
  459. package/dist/chunks/NcSelect-DJQ1nwEX.mjs.map +1 -0
  460. package/dist/chunks/{NcSelect-BoIXJjPW.cjs → NcSelect-VZJ_gUib.cjs} +49 -21
  461. package/dist/chunks/NcSelect-VZJ_gUib.cjs.map +1 -0
  462. package/dist/chunks/{NcSelectTags-CMUDUx29.cjs → NcSelectTags-CfiOYB0i.cjs} +55 -11
  463. package/dist/chunks/NcSelectTags-CfiOYB0i.cjs.map +1 -0
  464. package/dist/chunks/{NcSelectTags-hclAoBW3.mjs → NcSelectTags-DOOq_cD0.mjs} +55 -11
  465. package/dist/chunks/NcSelectTags-DOOq_cD0.mjs.map +1 -0
  466. package/dist/chunks/{NcSettingsInputText-Cv_JwbFO.cjs → NcSettingsInputText-CECqEZO0.cjs} +37 -6
  467. package/dist/chunks/NcSettingsInputText-CECqEZO0.cjs.map +1 -0
  468. package/dist/chunks/{NcSettingsInputText-BF_v4yDP.mjs → NcSettingsInputText-DTAI3bS2.mjs} +37 -6
  469. package/dist/chunks/NcSettingsInputText-DTAI3bS2.mjs.map +1 -0
  470. package/dist/chunks/{NcSettingsSection-V9DkkSuI.mjs → NcSettingsSection-CEWt4eXE.mjs} +4 -5
  471. package/dist/chunks/NcSettingsSection-CEWt4eXE.mjs.map +1 -0
  472. package/dist/chunks/{NcSettingsSection-CA2JahBC.cjs → NcSettingsSection-Dn7Qmknm.cjs} +4 -5
  473. package/dist/chunks/NcSettingsSection-Dn7Qmknm.cjs.map +1 -0
  474. package/dist/chunks/{NcSettingsSelectGroup-DDwAZI5O.cjs → NcSettingsSelectGroup-C6JgQUes.cjs} +39 -12
  475. package/dist/chunks/NcSettingsSelectGroup-C6JgQUes.cjs.map +1 -0
  476. package/dist/chunks/{NcSettingsSelectGroup-BTPrOKXu.mjs → NcSettingsSelectGroup-haZmDz--.mjs} +39 -12
  477. package/dist/chunks/NcSettingsSelectGroup-haZmDz--.mjs.map +1 -0
  478. package/dist/chunks/NcTextArea-CXWHO22r.cjs +206 -0
  479. package/dist/chunks/NcTextArea-CXWHO22r.cjs.map +1 -0
  480. package/dist/chunks/NcTextArea-Cegw6i17.mjs +207 -0
  481. package/dist/chunks/NcTextArea-Cegw6i17.mjs.map +1 -0
  482. package/dist/chunks/{NcTextField-CmXmPZ4h.mjs → NcTextField-DaGO9lFz.mjs} +25 -7
  483. package/dist/chunks/NcTextField-DaGO9lFz.mjs.map +1 -0
  484. package/dist/chunks/{NcTextField-BnZnDMjV.cjs → NcTextField-DwWIlisf.cjs} +28 -10
  485. package/dist/chunks/NcTextField-DwWIlisf.cjs.map +1 -0
  486. package/dist/chunks/{NcTimezonePicker-DxA5d2ur.cjs → NcTimezonePicker-Dh3nLcb5.cjs} +40 -9
  487. package/dist/chunks/NcTimezonePicker-Dh3nLcb5.cjs.map +1 -0
  488. package/dist/chunks/{NcTimezonePicker-C0YKWg81.mjs → NcTimezonePicker-Nn0FbzGI.mjs} +40 -9
  489. package/dist/chunks/NcTimezonePicker-Nn0FbzGI.mjs.map +1 -0
  490. package/dist/chunks/{NcUserBubble-2Lglkz2P.mjs → NcUserBubble-CSUTL5fC.mjs} +4 -5
  491. package/dist/chunks/{NcUserBubble-BEI3NwEc.cjs.map → NcUserBubble-CSUTL5fC.mjs.map} +1 -1
  492. package/dist/chunks/{NcUserBubble-BEI3NwEc.cjs → NcUserBubble-Cg86HaKF.cjs} +4 -5
  493. package/dist/chunks/{NcUserBubble-2Lglkz2P.mjs.map → NcUserBubble-Cg86HaKF.cjs.map} +1 -1
  494. package/dist/chunks/{NcUserStatusIcon-CPZOWw3t.mjs → NcUserStatusIcon-C4oNCbQv.mjs} +6 -9
  495. package/dist/chunks/{NcUserStatusIcon-CPZOWw3t.mjs.map → NcUserStatusIcon-C4oNCbQv.mjs.map} +1 -1
  496. package/dist/chunks/{NcUserStatusIcon-FtKzp5sl.cjs → NcUserStatusIcon-CP1EGHie.cjs} +6 -9
  497. package/dist/chunks/{NcUserStatusIcon-FtKzp5sl.cjs.map → NcUserStatusIcon-CP1EGHie.cjs.map} +1 -1
  498. package/dist/chunks/{ScopeComponent-DFJUaQtj.mjs → ScopeComponent-7geL5q_S.mjs} +1 -1
  499. package/dist/chunks/{ScopeComponent-DFJUaQtj.mjs.map → ScopeComponent-7geL5q_S.mjs.map} +1 -1
  500. package/dist/chunks/{ScopeComponent-Dj1ARFka.cjs → ScopeComponent-CABGdfsV.cjs} +1 -1
  501. package/dist/chunks/{ScopeComponent-Dj1ARFka.cjs.map → ScopeComponent-CABGdfsV.cjs.map} +1 -1
  502. package/dist/chunks/_l10n-Ch5mEdUH.cjs +131 -0
  503. package/dist/chunks/{_l10n-Ci9_UR5q.cjs.map → _l10n-Ch5mEdUH.cjs.map} +1 -1
  504. package/dist/chunks/_l10n-DXr-EzLn.mjs +132 -0
  505. package/dist/chunks/_l10n-DXr-EzLn.mjs.map +1 -0
  506. package/dist/chunks/{emoji-V6ytyzoR.mjs → emoji-BY_D0V5K.mjs} +2 -3
  507. package/dist/chunks/{emoji-V6ytyzoR.mjs.map → emoji-BY_D0V5K.mjs.map} +1 -1
  508. package/dist/chunks/{emoji-BCCCB3t3.cjs → emoji-VgSjNTd5.cjs} +2 -3
  509. package/dist/chunks/{emoji-BCCCB3t3.cjs.map → emoji-VgSjNTd5.cjs.map} +1 -1
  510. package/dist/chunks/{index-Dsgv-f-l.cjs → index-BV85rPB7.cjs} +3 -6
  511. package/dist/chunks/{index-Dsgv-f-l.cjs.map → index-BV85rPB7.cjs.map} +1 -1
  512. package/dist/chunks/{index-CMZdBcqP.mjs → index-CKNLRG-q.mjs} +8 -8
  513. package/dist/chunks/{index-CMZdBcqP.mjs.map → index-CKNLRG-q.mjs.map} +1 -1
  514. package/dist/chunks/{index-BwyQ2N-M.mjs → index-CtoB4eIp.mjs} +3 -6
  515. package/dist/chunks/{index-BwyQ2N-M.mjs.map → index-CtoB4eIp.mjs.map} +1 -1
  516. package/dist/chunks/{index-CC4ahXvG.cjs → index-DLGLmjm4.cjs} +8 -8
  517. package/dist/chunks/{index-CC4ahXvG.cjs.map → index-DLGLmjm4.cjs.map} +1 -1
  518. package/dist/chunks/{referencePickerModal-DQM56QYC.mjs → referencePickerModal-B4rYwkv3.mjs} +29 -42
  519. package/dist/chunks/referencePickerModal-B4rYwkv3.mjs.map +1 -0
  520. package/dist/chunks/{referencePickerModal-CQKEiYX4.cjs → referencePickerModal-DlPz1XJQ.cjs} +29 -42
  521. package/dist/chunks/referencePickerModal-DlPz1XJQ.cjs.map +1 -0
  522. package/dist/chunks/useModelMigration-BvlORW73.mjs +24 -0
  523. package/dist/chunks/useModelMigration-BvlORW73.mjs.map +1 -0
  524. package/dist/chunks/useModelMigration-CVxLzfS5.cjs +25 -0
  525. package/dist/chunks/useModelMigration-CVxLzfS5.cjs.map +1 -0
  526. package/dist/chunks/{usernameToColor-D6FJP4ni.mjs → usernameToColor-B9AB7E7x.mjs} +1 -1
  527. package/dist/chunks/{usernameToColor-D6FJP4ni.mjs.map → usernameToColor-B9AB7E7x.mjs.map} +1 -1
  528. package/dist/chunks/{usernameToColor-u2MH9nY7.cjs → usernameToColor-CWxjw-Pq.cjs} +1 -1
  529. package/dist/chunks/{usernameToColor-u2MH9nY7.cjs.map → usernameToColor-CWxjw-Pq.cjs.map} +1 -1
  530. package/dist/composables/useIsDarkTheme/index.d.ts +16 -0
  531. package/dist/composables/useModelMigration.d.ts +12 -0
  532. package/dist/functions/dialog/index.d.ts +16 -0
  533. package/dist/functions/index.d.ts +10 -0
  534. package/dist/functions/isDarkTheme/index.d.ts +17 -0
  535. package/dist/index.cjs +74 -66
  536. package/dist/index.cjs.map +1 -1
  537. package/dist/index.mjs +67 -59
  538. package/dist/index.mjs.map +1 -1
  539. package/dist/vendor.LICENSE.txt +1 -1
  540. package/package.json +17 -17
  541. package/dist/assets/NcColorPicker-CpkfRGO1.css +0 -122
  542. package/dist/assets/NcDateTimePickerNative-BAcKr0B3.css +0 -47
  543. package/dist/chunks/AlertCircleOutline-DLtiWgZd.cjs.map +0 -1
  544. package/dist/chunks/AlertCircleOutline-DU3QwU5Y.mjs.map +0 -1
  545. package/dist/chunks/ArrowLeft-BhAxJBYx.mjs.map +0 -1
  546. package/dist/chunks/ArrowLeft-CONurT5C.cjs.map +0 -1
  547. package/dist/chunks/ArrowRight-Bj5G_mG0.cjs.map +0 -1
  548. package/dist/chunks/ArrowRight-KsL2PC-o.mjs.map +0 -1
  549. package/dist/chunks/Check-XHAzUBkX.mjs.map +0 -1
  550. package/dist/chunks/Check-fCbe4vqy.cjs.map +0 -1
  551. package/dist/chunks/ChevronDown-CiFbcDUC.cjs.map +0 -1
  552. package/dist/chunks/ChevronDown-D3Tfshug.mjs.map +0 -1
  553. package/dist/chunks/ChevronRight-C3eVhc5a.mjs.map +0 -1
  554. package/dist/chunks/ChevronRight-CWbdN5_r.cjs.map +0 -1
  555. package/dist/chunks/ChevronUp-A2riTBrv.cjs.map +0 -1
  556. package/dist/chunks/ChevronUp-ljACquzS.mjs.map +0 -1
  557. package/dist/chunks/Close-B6ccm1RP.mjs.map +0 -1
  558. package/dist/chunks/Close-B7lGu0cG.cjs.map +0 -1
  559. package/dist/chunks/DotsHorizontal-Cd2x8oz2.mjs.map +0 -1
  560. package/dist/chunks/DotsHorizontal-DQfnwpao.cjs.map +0 -1
  561. package/dist/chunks/NcActionInput-CUAQEdIX.cjs.map +0 -1
  562. package/dist/chunks/NcActionInput-DY2qdzdN.mjs.map +0 -1
  563. package/dist/chunks/NcAppContent-fXpgsMfG.cjs.map +0 -1
  564. package/dist/chunks/NcAppContent-lEyly7Jk.mjs.map +0 -1
  565. package/dist/chunks/NcAppNavigationItem-Chm1R863.cjs.map +0 -1
  566. package/dist/chunks/NcAppNavigationItem-CybYrL2f.mjs.map +0 -1
  567. package/dist/chunks/NcAppNavigationSettings-C-_G8yUn.cjs.map +0 -1
  568. package/dist/chunks/NcAppNavigationSettings-DScz0UWm.mjs.map +0 -1
  569. package/dist/chunks/NcAppNavigationToggle-BXainLDc.mjs.map +0 -1
  570. package/dist/chunks/NcAppNavigationToggle-DAhbqsn_.cjs.map +0 -1
  571. package/dist/chunks/NcAppSidebar-BMXNel-9.mjs.map +0 -1
  572. package/dist/chunks/NcAppSidebar-pD7Kd1Ld.cjs.map +0 -1
  573. package/dist/chunks/NcBreadcrumbs-D8nGOAl3.cjs.map +0 -1
  574. package/dist/chunks/NcBreadcrumbs-DIONM2xF.mjs.map +0 -1
  575. package/dist/chunks/NcCheckboxRadioSwitch-COeeT-7G.cjs.map +0 -1
  576. package/dist/chunks/NcCheckboxRadioSwitch-CvMEEI9x.mjs.map +0 -1
  577. package/dist/chunks/NcCheckboxRadioSwitch.vue_vue_type_style_index_0_scoped_00597cce_lang-CbxHILUm.cjs +0 -4
  578. package/dist/chunks/NcCheckboxRadioSwitch.vue_vue_type_style_index_0_scoped_00597cce_lang-CbxHILUm.cjs.map +0 -1
  579. package/dist/chunks/NcCheckboxRadioSwitch.vue_vue_type_style_index_0_scoped_00597cce_lang-pIxtu28F.mjs +0 -3
  580. package/dist/chunks/NcCheckboxRadioSwitch.vue_vue_type_style_index_0_scoped_00597cce_lang-pIxtu28F.mjs.map +0 -1
  581. package/dist/chunks/NcColorPicker-CmHTPv60.cjs.map +0 -1
  582. package/dist/chunks/NcColorPicker-D3b9pIOc.mjs.map +0 -1
  583. package/dist/chunks/NcEmojiPicker-DV7HDeqU.cjs.map +0 -1
  584. package/dist/chunks/NcEmojiPicker-DqaJO21R.mjs.map +0 -1
  585. package/dist/chunks/NcPasswordField-BQCunRtm.cjs.map +0 -1
  586. package/dist/chunks/NcPasswordField-DLXPfvQB.mjs.map +0 -1
  587. package/dist/chunks/NcRelatedResourcesPanel-CsOAnfA1.cjs.map +0 -1
  588. package/dist/chunks/NcRelatedResourcesPanel-DZICfdzQ.mjs.map +0 -1
  589. package/dist/chunks/NcRichContenteditable-C0hSvLHR.mjs.map +0 -1
  590. package/dist/chunks/NcRichContenteditable-Dj9rufAV.cjs.map +0 -1
  591. package/dist/chunks/NcRichText-CgD7wGDe.mjs.map +0 -1
  592. package/dist/chunks/NcRichText-DSnF0Fow.cjs.map +0 -1
  593. package/dist/chunks/NcSelect-BoIXJjPW.cjs.map +0 -1
  594. package/dist/chunks/NcSelect-D4om25m8.mjs.map +0 -1
  595. package/dist/chunks/NcSelectTags-CMUDUx29.cjs.map +0 -1
  596. package/dist/chunks/NcSelectTags-hclAoBW3.mjs.map +0 -1
  597. package/dist/chunks/NcSettingsInputText-BF_v4yDP.mjs.map +0 -1
  598. package/dist/chunks/NcSettingsInputText-Cv_JwbFO.cjs.map +0 -1
  599. package/dist/chunks/NcSettingsSection-CA2JahBC.cjs.map +0 -1
  600. package/dist/chunks/NcSettingsSection-V9DkkSuI.mjs.map +0 -1
  601. package/dist/chunks/NcSettingsSelectGroup-BTPrOKXu.mjs.map +0 -1
  602. package/dist/chunks/NcSettingsSelectGroup-DDwAZI5O.cjs.map +0 -1
  603. package/dist/chunks/NcTextField-BnZnDMjV.cjs.map +0 -1
  604. package/dist/chunks/NcTextField-CmXmPZ4h.mjs.map +0 -1
  605. package/dist/chunks/NcTimezonePicker-C0YKWg81.mjs.map +0 -1
  606. package/dist/chunks/NcTimezonePicker-DxA5d2ur.cjs.map +0 -1
  607. package/dist/chunks/_l10n-Ci9_UR5q.cjs +0 -131
  608. package/dist/chunks/_l10n-JYjUKekn.mjs +0 -132
  609. package/dist/chunks/_l10n-JYjUKekn.mjs.map +0 -1
  610. package/dist/chunks/referencePickerModal-CQKEiYX4.cjs.map +0 -1
  611. package/dist/chunks/referencePickerModal-DQM56QYC.mjs.map +0 -1
  612. /package/dist/assets/{NcActionButtonGroup-CQxLn2fv.css → NcActionButtonGroup-BND4GQdv.css} +0 -0
  613. /package/dist/assets/{NcActionCaption-B7FZTc3Y.css → NcActionCaption-JVhz4Wp7.css} +0 -0
  614. /package/dist/assets/{NcActionSeparator-CEbb5P6P.css → NcActionSeparator-Ct2RnclR.css} +0 -0
  615. /package/dist/assets/{NcAppNavigationCaption-zgtPq3Od.css → NcAppNavigationCaption-Dt5K_hKD.css} +0 -0
  616. /package/dist/assets/{NcAppNavigationIconBullet-By_0o2dG.css → NcAppNavigationIconBullet-CeBYVy6t.css} +0 -0
  617. /package/dist/assets/{NcAppNavigationList-BIbyyT7b.css → NcAppNavigationList-DnKj0-Zq.css} +0 -0
  618. /package/dist/assets/{NcAppNavigationNew-BKfawNII.css → NcAppNavigationNew-BcDuupzO.css} +0 -0
  619. /package/dist/assets/{NcAppNavigationSearch-BLGG_WBn.css → NcAppNavigationSearch-Df50ss_2.css} +0 -0
  620. /package/dist/assets/{NcAppNavigationSettings-AzpTlUym.css → NcAppNavigationSettings-BV_QS8jh.css} +0 -0
  621. /package/dist/assets/{NcAppNavigationSpacer-CfNqmQeR.css → NcAppNavigationSpacer-Fkr_mEI1.css} +0 -0
  622. /package/dist/assets/{NcAppSettingsDialog-QF6aTZ3s.css → NcAppSettingsDialog-kKMMsdb3.css} +0 -0
  623. /package/dist/assets/{NcAppSettingsSection-qU4SUZvh.css → NcAppSettingsSection-Bl2-D3_g.css} +0 -0
  624. /package/dist/assets/{NcAppSidebarTab-BieYhqvk.css → NcAppSidebarTab-Blv6UfuA.css} +0 -0
  625. /package/dist/assets/{NcBreadcrumb-DOvK-XG1.css → NcBreadcrumb-Cjcyeimd.css} +0 -0
  626. /package/dist/assets/{NcBreadcrumbs-CPUAM38l.css → NcBreadcrumbs-CFRjXqRg.css} +0 -0
  627. /package/dist/assets/{NcButton-DYJAoXeG.css → NcButton-BHDLon1_.css} +0 -0
  628. /package/dist/assets/{NcChip-CEKw1zaK.css → NcChip-CHVJ7LYT.css} +0 -0
  629. /package/dist/assets/{NcCollectionList-ETQTqkqt.css → NcCollectionList-yjTCAR46.css} +0 -0
  630. /package/dist/assets/{NcContent-ZFNIjylG.css → NcContent-CZamE_IP.css} +0 -0
  631. /package/dist/assets/{NcCounterBubble-Dizdz4Hk.css → NcCounterBubble-DdYmHnng.css} +0 -0
  632. /package/dist/assets/{NcDashboardWidget-CpstyXok.css → NcDashboardWidget-BSTvIgiJ.css} +0 -0
  633. /package/dist/assets/{NcDashboardWidgetItem-BBZT17WU.css → NcDashboardWidgetItem-BtOuK4mf.css} +0 -0
  634. /package/dist/assets/{NcDialog-ByAK1rQ0.css → NcDialog-Bzs9oxyt.css} +0 -0
  635. /package/dist/assets/{NcEmojiPicker-B5dclDLD.css → NcEmojiPicker-BNCW1Q94.css} +0 -0
  636. /package/dist/assets/{NcEmptyContent-BU0QVo3d.css → NcEmptyContent-BlXL6nnq.css} +0 -0
  637. /package/dist/assets/{NcGuestContent-BLJ37yLM.css → NcGuestContent-B0ivUQHg.css} +0 -0
  638. /package/dist/assets/{NcHeaderButton-BybvB5sC.css → NcHeaderButton-DH4Qtw3P.css} +0 -0
  639. /package/dist/assets/{NcHeaderMenu-BCtvpsZj.css → NcHeaderMenu-C2XbJMYL.css} +0 -0
  640. /package/dist/assets/{NcIconSvgWrapper-BwsJ8wBM.css → NcIconSvgWrapper-BxyhLaB5.css} +0 -0
  641. /package/dist/assets/{NcInputConfirmCancel-SGr0-6w8.css → NcInputConfirmCancel-EYtW7MxF.css} +0 -0
  642. /package/dist/assets/{NcListItem-D-8LyMsI.css → NcListItem-BBu5UTTe.css} +0 -0
  643. /package/dist/assets/{NcListItemIcon--7OhLYWA.css → NcListItemIcon-UmX9YoH3.css} +0 -0
  644. /package/dist/assets/{NcLoadingIcon-BSONDy7x.css → NcLoadingIcon-x1d284UU.css} +0 -0
  645. /package/dist/assets/{NcMentionBubble-C6t8od-_.css → NcMentionBubble-Bt71nB8X.css} +0 -0
  646. /package/dist/assets/{NcNoteCard-CImn6F9p.css → NcNoteCard-C6xb7vi0.css} +0 -0
  647. /package/dist/assets/{NcPopover-BDlL00qZ.css → NcPopover-TS4CW9MJ.css} +0 -0
  648. /package/dist/assets/{NcProgressBar-BsqdCn-x.css → NcProgressBar--z-WqmX4.css} +0 -0
  649. /package/dist/assets/{NcRelatedResourcesPanel-BE9CQ8s8.css → NcRelatedResourcesPanel-DIhZx6lY.css} +0 -0
  650. /package/dist/assets/{NcSelect-EIXtZSVn.css → NcSelect-GdIw6cIy.css} +0 -0
  651. /package/dist/assets/{NcSettingsSection-CGaCS1X0.css → NcSettingsSection-Dlaob2ni.css} +0 -0
  652. /package/dist/assets/{NcUserBubble-Cv-q-rH5.css → NcUserBubble-CNid1YOT.css} +0 -0
  653. /package/dist/assets/{NcUserStatusIcon-DMxcdM51.css → NcUserStatusIcon-DAVSJFhS.css} +0 -0
  654. /package/dist/assets/{Tooltip-4CSl8xev.css → Tooltip-DQ4Plm4r.css} +0 -0
@@ -1 +0,0 @@
1
- {"version":3,"file":"NcRichText-DSnF0Fow.cjs","sources":["../../src/components/NcRichText/NcReferenceList.vue","../../src/components/NcRichText/placeholder.js","../../src/components/NcRichText/NcRichText.vue"],"sourcesContent":["<!--\n - SPDX-FileCopyrightText: 2020 Nextcloud GmbH and Nextcloud contributors\n - SPDX-License-Identifier: AGPL-3.0-or-later\n-->\n\n<template>\n\t<div v-if=\"isVisible\" class=\"widgets--list\" :class=\"{'icon-loading': loading }\">\n\t\t<div v-for=\"reference in displayedReferences\" :key=\"reference?.openGraphObject?.id\">\n\t\t\t<NcReferenceWidget :reference=\"reference\" :interactive=\"interactive\" :interactive-opt-in=\"interactiveOptIn\" />\n\t\t</div>\n\t</div>\n</template>\n<script>\nimport NcReferenceWidget from './NcReferenceWidget.vue'\nimport { URL_PATTERN } from './helpers.js'\n\nimport axios from '@nextcloud/axios'\nimport { getSharingToken } from '@nextcloud/sharing/public'\nimport { getCurrentUser } from '@nextcloud/auth'\nimport { generateOcsUrl } from '@nextcloud/router'\n\nexport default {\n\tname: 'NcReferenceList',\n\tcomponents: {\n\t\tNcReferenceWidget,\n\t},\n\tprops: {\n\t\ttext: {\n\t\t\ttype: String,\n\t\t\tdefault: '',\n\t\t},\n\t\treferenceData: {\n\t\t\ttype: Object,\n\t\t\tdefault: null,\n\t\t},\n\t\tlimit: {\n\t\t\ttype: Number,\n\t\t\tdefault: 1,\n\t\t},\n\t\tdisplayFallback: {\n\t\t\ttype: Boolean,\n\t\t\tdefault: false,\n\t\t},\n\t\tinteractive: {\n\t\t\ttype: Boolean,\n\t\t\tdefault: true,\n\t\t},\n\t\tinteractiveOptIn: {\n\t\t\ttype: Boolean,\n\t\t\tdefault: false,\n\t\t},\n\t},\n\tdata() {\n\t\treturn {\n\t\t\treferences: null,\n\t\t\tloading: true,\n\t\t}\n\t},\n\tcomputed: {\n\t\tisVisible() {\n\t\t\treturn this.loading || this.displayedReferences.length !== 0\n\t\t},\n\t\tvalues() {\n\t\t\tif (this.referenceData) {\n\t\t\t\treturn this.referenceData\n\t\t\t}\n\n\t\t\tif (this.displayFallback && !this.loading && !this.references) {\n\t\t\t\treturn [this.fallbackReference]\n\t\t\t}\n\n\t\t\treturn this.references ? Object.values(this.references) : []\n\t\t},\n\t\tfirstReference() {\n\t\t\treturn this.values[0] ?? null\n\t\t},\n\t\tdisplayedReferences() {\n\t\t\treturn this.values.slice(0, this.limit)\n\t\t},\n\t\tfallbackReference() {\n\t\t\treturn {\n\t\t\t\taccessible: true,\n\t\t\t\topenGraphObject: {\n\t\t\t\t\tid: this.text,\n\t\t\t\t\tlink: this.text,\n\t\t\t\t\tname: this.text,\n\t\t\t\t},\n\t\t\t\trichObjectType: 'open-graph',\n\t\t\t}\n\t\t},\n\t},\n\twatch: {\n\t\ttext: 'fetch',\n\t},\n\tmounted() {\n\t\tthis.fetch()\n\t},\n\tmethods: {\n\t\tfetch() {\n\t\t\tthis.loading = true\n\t\t\tif (this.referenceData) {\n\t\t\t\tthis.references = null\n\t\t\t\tthis.loading = false\n\t\t\t\treturn\n\t\t\t}\n\n\t\t\tif (!(new RegExp(URL_PATTERN).exec(this.text))) {\n\t\t\t\tthis.references = null\n\t\t\t\tthis.loading = false\n\t\t\t\treturn\n\t\t\t}\n\n\t\t\tthis.resolve().then((response) => {\n\t\t\t\tthis.references = response.data.ocs.data.references\n\t\t\t\tthis.loading = false\n\t\t\t\tthis.$emit('loaded')\n\t\t\t}).catch((error) => {\n\t\t\t\tconsole.error('Failed to extract references', error)\n\t\t\t\tthis.loading = false\n\t\t\t\tthis.$emit('loaded')\n\t\t\t})\n\t\t},\n\t\tresolve() {\n\t\t\tconst match = (new RegExp(URL_PATTERN).exec(this.text.trim()))\n\t\t\tconst isPublic = getCurrentUser() === null\n\t\t\tif (this.limit === 1 && match) {\n\t\t\t\treturn isPublic\n\t\t\t\t\t? axios.get(generateOcsUrl('references/resolvePublic') + `?reference=${encodeURIComponent(match[0])}&sharingToken=${getSharingToken()}`)\n\t\t\t\t\t: axios.get(generateOcsUrl('references/resolve') + `?reference=${encodeURIComponent(match[0])}`)\n\t\t\t}\n\n\t\t\treturn isPublic\n\t\t\t\t? axios.post(generateOcsUrl('references/extractPublic'), {\n\t\t\t\t\ttext: this.text,\n\t\t\t\t\tresolve: true,\n\t\t\t\t\tlimit: this.limit,\n\t\t\t\t\tsharingToken: getSharingToken(),\n\t\t\t\t})\n\t\t\t\t: axios.post(generateOcsUrl('references/extract'), {\n\t\t\t\t\ttext: this.text,\n\t\t\t\t\tresolve: true,\n\t\t\t\t\tlimit: this.limit,\n\t\t\t\t})\n\t\t},\n\t},\n}\n</script>\n<style lang=\"scss\" scoped>\n.widget--list {\n\twidth: var(--widget-full-width, 100%);\n}\n\n.widgets--list.icon-loading {\n\tmin-height: var(--default-clickable-area);\n}\n</style>\n","/**\n * SPDX-FileCopyrightText: 2023 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n\nimport { parseUrl } from './autolink.js'\n\nimport { visit } from 'unist-util-visit'\nimport { u } from 'unist-builder'\n\nexport const remarkPlaceholder = function() {\n\treturn function(ast) {\n\t\tvisit(ast, (node) => node.type === 'text', visitor)\n\n\t\t/**\n\t\t *\n\t\t * @param {object} node The node\n\t\t * @param {number} index The index of the node\n\t\t * @param {object} parent The parent node\n\t\t */\n\t\tfunction visitor(node, index, parent) {\n\t\t\tconst placeholders = node.value.split(/(\\{[a-z\\-_.0-9]+\\})/ig)\n\t\t\t\t.map((entry, index, list) => {\n\t\t\t\t\tconst matches = entry.match(/^\\{([a-z\\-_.0-9]+)\\}$/i)\n\t\t\t\t\tif (!matches) {\n\t\t\t\t\t\treturn u('text', entry)\n\t\t\t\t\t}\n\t\t\t\t\tconst [, component] = matches\n\t\t\t\t\treturn u('element', {\n\t\t\t\t\t\ttagName: `#${component}`,\n\t\t\t\t\t})\n\t\t\t\t})\n\n\t\t\tparent.children.splice(index, 1, ...placeholders)\n\t\t}\n\t}\n}\n\nexport const prepareTextNode = ({ h, context }, text) => {\n\tif (context.autolink) {\n\t\ttext = parseUrl(text)\n\t}\n\tif (Array.isArray(text)) {\n\t\treturn text.map((entry) => {\n\t\t\tif (typeof entry === 'string') {\n\t\t\t\treturn entry\n\t\t\t}\n\t\t\tconst { component, props } = entry\n\t\t\t// do not override class of NcLink\n\t\t\tconst componentClass = component.name === 'NcLink' ? undefined : 'rich-text--component'\n\t\t\treturn h(component, {\n\t\t\t\tprops,\n\t\t\t\tclass: componentClass,\n\t\t\t})\n\t\t})\n\t}\n\treturn text\n}\n","<!--\n - SPDX-FileCopyrightText: 2020 Nextcloud GmbH and Nextcloud contributors\n - SPDX-License-Identifier: AGPL-3.0-or-later\n-->\n\n<docs>\n### General description\n\nThis component displays rich text with optional autolink or [Markdown support](https://www.markdownguide.org/basic-syntax/).\n\n```vue\n<template>\n\t<div>\n\t\t<textarea v-model=\"text\" />\n\t\t<NcCheckboxRadioSwitch :checked.sync=\"autolink\" type=\"checkbox\">Autolink</NcCheckboxRadioSwitch>\n\t\t<NcCheckboxRadioSwitch :checked.sync=\"useMarkdown\" type=\"checkbox\">Use Markdown</NcCheckboxRadioSwitch>\n\n\t\t<NcRichText\n\t\t\t:class=\"{'plain-text': !useMarkdown }\"\n\t\t\t:text=\"text\" :autolink=\"autolink\" :arguments=\"args\"\n\t\t\t:use-markdown=\"useMarkdown\" />\n\t</div>\n</template>\n<script>\nexport default {\n\tdata() {\n\t\treturn {\n\t\t\ttext: `## Hello everyone 🎉\nThe file {file} was added by {username}. Visit https://nextcloud.com to check it!\n\nSome examples for markdown syntax:\n1. **bold text**\n2. _italic text_\n3. example of \\`inline code\\`\n\n> blockquote example\n`,\n\t\t\tautolink: true,\n\t\t\tuseMarkdown: true,\n\t\t\targs: {\n\t\t\t\tfile: 'MyDocument.odt',\n\t\t\t\tusername: {\n\t\t\t\t\tcomponent: 'NcUserBubble',\n\t\t\t\t\tprops: {\n\t\t\t\t\t\tdisplayName: 'Jane Doe'\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t},\n\t\t}\n\t},\n}\n</script>\n<style lang=\"scss\">\ntextarea {\n\twidth: 100%;\n\theight: 200px;\n}\n\n.plain-text {\n\twhite-space: pre-line;\n}\n</style>\n```\n\n### Flavored Markdown\n\nThis component can support [Github Flavored Markdown](https://github.github.com/gfm/).\nIt adds such elements, as tables, task lists, strikethrough, and supports autolinks by default\n\nIt is also possible to make a rendered content interactive and listen for events\n\n```vue\n<template>\n\t<div>\n\t\t<textarea v-model=\"text\" />\n\n\t\t<NcRichText :text=\"text\"\n\t\t\t:use-extended-markdown=\"true\"\n\t\t\t:interactive=\"true\"\n\t\t\t@interact:todo=\"handleInteraction\"/>\n\t</div>\n</template>\n<script>\n\texport default {\n\t\tdata() {\n\t\t\treturn {\n\t\t\t\ttext: `## Try flavored markdown right now!\n\n~~strikethrough~~\n\n- [ ] task to be done\n- [x] task completed\n\nTable header | Column A | Column B\n-- | -- | --\nTable row | value A | value B\n`,\n\t\t\t}\n\t\t},\n\t\tmethods: {\n\t\t\thandleInteraction(id) {\n\t\t\t\tconst parentId = id.split('-markdown-input-')[0]\n\t\t\t\tconst index = Array.from(document.querySelectorAll(`span[id^=\"${parentId}-markdown-input-\"]`)).findIndex((el) => el.id.includes(id))\n\t\t\t\tif (index === -1 ) {\n\t\t\t\t\treturn\n\t\t\t\t}\n\t\t\t\tlet checkBoxIndex = 0\n\t\t\t\tlines = this.text.split('\\n')\n\t\t\t\tfor (let i = 0; i < lines.length; i++) {\n\t\t\t\t\tif (lines[i].includes('[ ]') || lines[i].includes('[x]')) {\n\t\t\t\t\t\tif (checkBoxIndex === index) {\n\t\t\t\t\t\t\tconst isChecked = lines[i].includes('[x]')\n\t\t\t\t\t\t\tif (isChecked) {\n\t\t\t\t\t\t\t\tlines[i] = lines[i].replace('[x]', '[ ]')\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tlines[i] = lines[i].replace('[ ]', '[x]')\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tbreak\n\t\t\t\t\t\t}\n\t\t\t\t\t\tcheckBoxIndex++\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tthis.text = lines.join('\\n')\n\t\t\t},\n\t\t},\n\t}\n</script>\n<style lang=\"scss\">\ntextarea {\n\twidth: 100%;\n\theight: 200px;\n}\n</style>\n```\n\n### Usage with NcRichContenteditable\n\nSee [NcRichContenteditable](#/Components/NcRichContenteditable) documentation for more information\n\n```vue\n<template>\n\t<div>\n\t\t<NcRichContenteditable :value.sync=\"message\"\n\t\t\t:auto-complete=\"autoComplete\"\n\t\t\t:maxlength=\"100\"\n\t\t\t:user-data=\"userData\"\n\t\t\tplaceholder=\"Try mentioning user @Test01 or inserting emoji :smile\"\n\t\t\t@submit=\"onSubmit\" />\n\n\t\t<NcCheckboxRadioSwitch :checked.sync=\"autolink\" type=\"checkbox\">Autolink</NcCheckboxRadioSwitch>\n\t\t<NcCheckboxRadioSwitch :checked.sync=\"useMarkdown\" type=\"checkbox\">Use Markdown</NcCheckboxRadioSwitch>\n\t\t<NcCheckboxRadioSwitch :checked.sync=\"useExtendedMarkdown\" type=\"checkbox\">Use extended Markdown</NcCheckboxRadioSwitch>\n\n\t\t<NcRichText :text=\"text\"\n\t\t\t:autolink=\"autolink\"\n\t\t\t:arguments=\"userMentions\"\n\t\t\t:use-markdown=\"useMarkdown\"\n\t\t\t:use-extended-markdown=\"useExtendedMarkdown\" />\n\t</div>\n</template>\n<script>\n\texport default {\n\t\tdata() {\n\t\t\treturn {\n\t\t\t\tmessage: '',\n\t\t\t\tautolink: true,\n\t\t\t\tuseMarkdown: true,\n\t\t\t\tuseExtendedMarkdown: true,\n\t\t\t\tuserData: {\n\t\t\t\t\tTest01: {\n\t\t\t\t\t\ticon: 'icon-user',\n\t\t\t\t\t\tid: 'Test01',\n\t\t\t\t\t\tlabel: 'Test01',\n\t\t\t\t\t\tsource: 'users',\n\t\t\t\t\t\tprimary: true,\n\t\t\t\t\t},\n\t\t\t\t\tTest02: {\n\t\t\t\t\t\ticon: 'icon-user',\n\t\t\t\t\t\tid: 'Test02',\n\t\t\t\t\t\tlabel: 'Test02',\n\t\t\t\t\t\tsource: 'users',\n\t\t\t\t\t\tstatus: {\n\t\t\t\t\t\t\tclearAt: null,\n\t\t\t\t\t\t\ticon: '🎡',\n\t\t\t\t\t\t\tmessage: 'Visiting London',\n\t\t\t\t\t\t\tstatus: 'away',\n\t\t\t\t\t\t},\n\t\t\t\t\t\tsubline: 'Visiting London',\n\t\t\t\t\t},\n\t\t\t\t\t'Test@User': {\n\t\t\t\t\t\ticon: 'icon-user',\n\t\t\t\t\t\tid: 'Test@User',\n\t\t\t\t\t\tlabel: 'Test 03',\n\t\t\t\t\t\tsource: 'users',\n\t\t\t\t\t\tstatus: {\n\t\t\t\t\t\t\tclearAt: null,\n\t\t\t\t\t\t\ticon: '🎡',\n\t\t\t\t\t\t\tmessage: 'Having space in my name',\n\t\t\t\t\t\t\tstatus: 'online',\n\t\t\t\t\t\t},\n\t\t\t\t\t\tsubline: 'Visiting London',\n\t\t\t\t\t},\n\t\t\t\t\t'Test Offline': {\n\t\t\t\t\t\ticon: 'icon-user',\n\t\t\t\t\t\tid: 'Test Offline',\n\t\t\t\t\t\tlabel: 'Test Offline',\n\t\t\t\t\t\tsource: 'users',\n\t\t\t\t\t\tstatus: {\n\t\t\t\t\t\t\tclearAt: null,\n\t\t\t\t\t\t\ticon: null,\n\t\t\t\t\t\t\tmessage: null,\n\t\t\t\t\t\t\tstatus: 'offline',\n\t\t\t\t\t\t},\n\t\t\t\t\t\tsubline: null,\n\t\t\t\t\t},\n\t\t\t\t\t'Test DND': {\n\t\t\t\t\t\ticon: 'icon-user',\n\t\t\t\t\t\tid: 'Test DND',\n\t\t\t\t\t\tlabel: 'Test DND',\n\t\t\t\t\t\tsource: 'users',\n\t\t\t\t\t\tstatus: {\n\t\t\t\t\t\t\tclearAt: null,\n\t\t\t\t\t\t\ticon: null,\n\t\t\t\t\t\t\tmessage: 'Out sick',\n\t\t\t\t\t\t\tstatus: 'dnd',\n\t\t\t\t\t\t},\n\t\t\t\t\t\tsubline: 'Out sick',\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tuserMentions: {\n\t\t\t\t\t'user-1': {\n\t\t\t\t\t\tcomponent: 'NcUserBubble',\n\t\t\t\t\t\tprops: {\n\t\t\t\t\t\t\tdisplayName: 'Test01',\n\t\t\t\t\t\t\tuser: 'Test01',\n\t\t\t\t\t\t\tprimary: true,\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t\t'user-2': {\n\t\t\t\t\t\tcomponent: 'NcUserBubble',\n\t\t\t\t\t\tprops: {\n\t\t\t\t\t\t\tdisplayName: 'Test02',\n\t\t\t\t\t\t\tuser: 'Test02',\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t\t'user-3': {\n\t\t\t\t\t\tcomponent: 'NcUserBubble',\n\t\t\t\t\t\tprops: {\n\t\t\t\t\t\t\tdisplayName: 'Test 03',\n\t\t\t\t\t\t\tuser: 'Test@User',\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t\t'user-4': {\n\t\t\t\t\t\tcomponent: 'NcUserBubble',\n\t\t\t\t\t\tprops: {\n\t\t\t\t\t\t\tdisplayName: 'Test Offline',\n\t\t\t\t\t\t\tuser: 'Test Offline',\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t\t'user-5': {\n\t\t\t\t\t\tcomponent: 'NcUserBubble',\n\t\t\t\t\t\tprops: {\n\t\t\t\t\t\t\tdisplayName: 'Test DND',\n\t\t\t\t\t\t\tuser: 'Test DND',\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t}\n\t\t},\n\t\tcomputed: {\n\t\t\ttext() {\n\t\t\t\treturn this.message\n\t\t\t\t\t\t.replace('@Test01', '{user-1}')\n\t\t\t\t\t\t.replace('@Test02', '{user-2}')\n\t\t\t\t\t\t.replace('@Test@User', '{user-3}')\n\t\t\t\t\t\t.replace('@\"Test Offline\"', '{user-4}')\n\t\t\t\t\t\t.replace('@\"Test DND\"', '{user-5}')\n\t\t\t},\n\t\t},\n\t\tmethods: {\n\t\t\tautoComplete(search, callback) {\n\t\t\t\tcallback(Object.values(this.userData))\n\t\t\t},\n\t\t\tonSubmit() {\n\t\t\t\talert(this.message)\n\t\t\t}\n\t\t}\n\t}\n</script>\n```\n</docs>\n\n<script>\nimport NcReferenceList from './NcReferenceList.vue'\nimport NcCheckboxRadioSwitch from '../NcCheckboxRadioSwitch/NcCheckboxRadioSwitch.vue'\nimport { getRoute, remarkAutolink } from './autolink.js'\nimport { remarkPlaceholder, prepareTextNode } from './placeholder.js'\nimport GenRandomId from '../../utils/GenRandomId.js'\n\nimport { unified } from 'unified'\nimport remarkParse from 'remark-parse'\nimport remarkGfm from 'remark-gfm'\nimport breaks from 'remark-breaks'\nimport remark2rehype from 'remark-rehype'\nimport rehype2react from 'rehype-react'\nimport rehypeExternalLinks from 'rehype-external-links'\nimport { RouterLink } from 'vue-router'\n\nexport default {\n\tname: 'NcRichText',\n\tcomponents: {\n\t\tNcReferenceList,\n\t},\n\tprops: {\n\t\ttext: {\n\t\t\ttype: String,\n\t\t\tdefault: '',\n\t\t},\n\t\targuments: {\n\t\t\ttype: Object,\n\t\t\tdefault: () => {\n\t\t\t\treturn {}\n\t\t\t},\n\t\t},\n\t\treferenceLimit: {\n\t\t\ttype: Number,\n\t\t\tdefault: 0,\n\t\t},\n\t\treferenceInteractive: {\n\t\t\ttype: Boolean,\n\t\t\tdefault: true,\n\t\t},\n\t\t/** Provide data upfront to avoid extra http request */\n\t\treferences: {\n\t\t\ttype: Object,\n\t\t\tdefault: null,\n\t\t},\n\t\tmarkdownCssClasses: {\n\t\t\ttype: Object,\n\t\t\tdefault: () => {\n\t\t\t\treturn {\n\t\t\t\t\ta: 'rich-text--external-link',\n\t\t\t\t\tol: 'rich-text--ordered-list',\n\t\t\t\t\tul: 'rich-text--un-ordered-list',\n\t\t\t\t\tli: 'rich-text--list-item',\n\t\t\t\t\tstrong: 'rich-text--strong',\n\t\t\t\t\tem: 'rich-text--italic',\n\t\t\t\t\th1: 'rich-text--heading rich-text--heading-1',\n\t\t\t\t\th2: 'rich-text--heading rich-text--heading-2',\n\t\t\t\t\th3: 'rich-text--heading rich-text--heading-3',\n\t\t\t\t\th4: 'rich-text--heading rich-text--heading-4',\n\t\t\t\t\th5: 'rich-text--heading rich-text--heading-5',\n\t\t\t\t\th6: 'rich-text--heading rich-text--heading-6',\n\t\t\t\t\thr: 'rich-text--hr',\n\t\t\t\t\ttable: 'rich-text--table',\n\t\t\t\t\tpre: 'rich-text--pre',\n\t\t\t\t\tcode: 'rich-text--code',\n\t\t\t\t\tblockquote: 'rich-text--blockquote',\n\t\t\t\t}\n\t\t\t},\n\t\t},\n\t\tuseMarkdown: {\n\t\t\ttype: Boolean,\n\t\t\tdefault: false,\n\t\t},\n\t\t/** Provide GitHub Flavored Markdown syntax */\n\t\tuseExtendedMarkdown: {\n\t\t\ttype: Boolean,\n\t\t\tdefault: false,\n\t\t},\n\t\t/** Provide event from rendered markdown inputs */\n\t\tinteractive: {\n\t\t\ttype: Boolean,\n\t\t\tdefault: false,\n\t\t},\n\t\tautolink: {\n\t\t\ttype: Boolean,\n\t\t\tdefault: true,\n\t\t},\n\t},\n\temits: ['interact:todo'],\n\n\tdata() {\n\t\treturn {\n\t\t\tparentId: GenRandomId(5),\n\t\t}\n\t},\n\n\tmethods: {\n\t\trenderPlaintext(h) {\n\t\t\tconst context = this\n\t\t\tconst placeholders = this.text.split(/(\\{[a-z\\-_.0-9]+\\})/ig).map(function(entry, index, list) {\n\t\t\t\tconst matches = entry.match(/^\\{([a-z\\-_.0-9]+)\\}$/i)\n\t\t\t\t// just return plain string nodes as text\n\t\t\t\tif (!matches) {\n\t\t\t\t\treturn prepareTextNode({ h, context }, entry)\n\t\t\t\t}\n\t\t\t\t// return component instance if argument is an object\n\t\t\t\tconst argumentId = matches[1]\n\t\t\t\tconst argument = context.arguments[argumentId]\n\t\t\t\tif (typeof argument === 'object') {\n\t\t\t\t\tconst { component, props } = argument\n\t\t\t\t\treturn h(component, {\n\t\t\t\t\t\tprops,\n\t\t\t\t\t\tclass: 'rich-text--component',\n\t\t\t\t\t})\n\t\t\t\t}\n\t\t\t\tif (argument) {\n\t\t\t\t\treturn h('span', { class: 'rich-text--fallback' }, argument)\n\t\t\t\t}\n\t\t\t\treturn entry\n\t\t\t})\n\t\t\treturn h('div', { class: 'rich-text--wrapper' }, [\n\t\t\t\th('div', {}, placeholders.flat()),\n\t\t\t\tthis.referenceLimit > 0\n\t\t\t\t\t? h('div', { class: 'rich-text--reference-widget' }, [\n\t\t\t\t\t\th(NcReferenceList, {\n\t\t\t\t\t\t\tprops: {\n\t\t\t\t\t\t\t\ttext: this.text,\n\t\t\t\t\t\t\t\treferenceData: this.references,\n\t\t\t\t\t\t\t\tinteractive: this.referenceInteractive,\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t}),\n\t\t\t\t\t])\n\t\t\t\t\t: null,\n\t\t\t])\n\t\t},\n\t\trenderMarkdown(h) {\n\t\t\tconst renderedMarkdown = unified()\n\t\t\t\t.use(remarkParse)\n\t\t\t\t.use(remarkAutolink, {\n\t\t\t\t\tautolink: this.autolink,\n\t\t\t\t\tuseMarkdown: this.useMarkdown,\n\t\t\t\t\tuseExtendedMarkdown: this.useExtendedMarkdown,\n\t\t\t\t})\n\t\t\t\t.use(this.useExtendedMarkdown ? remarkGfm : undefined)\n\t\t\t\t.use(breaks)\n\t\t\t\t.use(remark2rehype, {\n\t\t\t\t\thandlers: {\n\t\t\t\t\t\tcomponent(toHast, node) {\n\t\t\t\t\t\t\treturn toHast(node, node.component, { value: node.value })\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t})\n\t\t\t\t// .use(rehypeAddClasses, this.markdownCssClasses)\n\t\t\t\t.use(remarkPlaceholder)\n\t\t\t\t.use(rehypeExternalLinks, {\n\t\t\t\t\ttarget: '_blank',\n\t\t\t\t\trel: ['noopener noreferrer'],\n\t\t\t\t})\n\t\t\t\t.use(rehype2react, {\n\t\t\t\t\tcreateElement: (tag, attrs, children) => {\n\t\t\t\t\t\t// unescape special symbol \"<\" for simple text nodes\n\t\t\t\t\t\tchildren = children?.map(child => typeof child === 'string'\n\t\t\t\t\t\t\t? child.replace(/&lt;/gmi, '<')\n\t\t\t\t\t\t\t: child,\n\t\t\t\t\t\t)\n\n\t\t\t\t\t\tif (!tag.startsWith('#')) {\n\t\t\t\t\t\t\tif (this.useExtendedMarkdown) {\n\t\t\t\t\t\t\t\tlet nestedNode = null\n\t\t\t\t\t\t\t\tif (tag === 'li' && Array.isArray(children)\n\t\t\t\t\t\t\t\t\t&& children[0].tag === 'input'\n\t\t\t\t\t\t\t\t\t&& children[0].data.attrs.type === 'checkbox') {\n\t\t\t\t\t\t\t\t\tconst [inputNode, ...labelParts] = children\n\n\t\t\t\t\t\t\t\t\tconst nestedNodeIndex = labelParts.findIndex((child) => ['ul', 'ol', 'li', 'blockquote', 'pre'].includes(child.tag))\n\t\t\t\t\t\t\t\t\tif (nestedNodeIndex !== -1) {\n\t\t\t\t\t\t\t\t\t\tnestedNode = labelParts[nestedNodeIndex]\n\t\t\t\t\t\t\t\t\t\tlabelParts.splice(nestedNodeIndex)\n\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\tconst id = this.parentId + '-markdown-input-' + GenRandomId(5)\n\t\t\t\t\t\t\t\t\tconst inputComponent = h(NcCheckboxRadioSwitch, {\n\t\t\t\t\t\t\t\t\t\tattrs: {\n\t\t\t\t\t\t\t\t\t\t\t...inputNode.data.attrs,\n\t\t\t\t\t\t\t\t\t\t\tid,\n\t\t\t\t\t\t\t\t\t\t\tdisabled: !this.interactive,\n\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\ton: {\n\t\t\t\t\t\t\t\t\t\t\t'update:checked': () => {\n\t\t\t\t\t\t\t\t\t\t\t\tthis.$emit('interact:todo', id)\n\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t}, labelParts)\n\n\t\t\t\t\t\t\t\t\treturn h(tag, attrs, [inputComponent, nestedNode])\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\tif (tag === 'a') {\n\t\t\t\t\t\t\t\tconst route = getRoute(this.$router, attrs.attrs.href)\n\t\t\t\t\t\t\t\tif (route) {\n\t\t\t\t\t\t\t\t\tdelete attrs.attrs.href\n\t\t\t\t\t\t\t\t\tdelete attrs.attrs.target\n\n\t\t\t\t\t\t\t\t\treturn h(RouterLink, {\n\t\t\t\t\t\t\t\t\t\t...attrs,\n\t\t\t\t\t\t\t\t\t\tprops: {\n\t\t\t\t\t\t\t\t\t\t\tto: route,\n\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t}, children)\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\treturn h(tag, attrs, children)\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tconst placeholder = this.arguments[tag.slice(1)]\n\t\t\t\t\t\tif (!placeholder) {\n\t\t\t\t\t\t\treturn h('span', { ...{ attrs }, ...{ class: 'rich-text--fallback' } }, [`{${tag.slice(1)}}`])\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tif (!placeholder.component) {\n\t\t\t\t\t\t\treturn h('span', attrs, [placeholder])\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\treturn h(\n\t\t\t\t\t\t\tplaceholder.component,\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tattrs,\n\t\t\t\t\t\t\t\tprops: placeholder.props,\n\t\t\t\t\t\t\t\tclass: 'rich-text--component',\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\tchildren,\n\t\t\t\t\t\t)\n\t\t\t\t\t},\n\t\t\t\t\tprefix: false,\n\t\t\t\t})\n\t\t\t\t.processSync(this.text\n\t\t\t\t\t// escape special symbol \"<\" to not treat text as HTML\n\t\t\t\t\t.replace(/</gmi, '&lt;')\n\t\t\t\t\t// unescape special symbol \">\" to parse blockquotes\n\t\t\t\t\t.replace(/&gt;/gmi, '>'),\n\t\t\t\t)\n\t\t\t\t.result\n\n\t\t\treturn h('div', { class: 'rich-text--wrapper rich-text--wrapper-markdown' }, [\n\t\t\t\trenderedMarkdown,\n\t\t\t\tthis.referenceLimit > 0\n\t\t\t\t\t? h('div', { class: 'rich-text--reference-widget' }, [\n\t\t\t\t\t\th(NcReferenceList, {\n\t\t\t\t\t\t\tprops: {\n\t\t\t\t\t\t\t\ttext: this.text,\n\t\t\t\t\t\t\t\treferenceData: this.references,\n\t\t\t\t\t\t\t\tinteractive: this.referenceInteractive,\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t}),\n\t\t\t\t\t])\n\t\t\t\t\t: null,\n\t\t\t])\n\t\t},\n\t},\n\trender(h) {\n\t\treturn this.useMarkdown || this.useExtendedMarkdown\n\t\t\t? this.renderMarkdown(h)\n\t\t\t: this.renderPlaintext(h)\n\t},\n}\n</script>\n<style lang=\"scss\" scoped>\n/* stylelint-disable-next-line scss/at-import-partial-extension */\n@import './richtext.scss';\n\na:not(.rich-text--component) {\n\ttext-decoration: underline;\n}\n\n</style>\n"],"names":["_sfc_main","NcReferenceWidget","URL_PATTERN","getCurrentUser","axios","generateOcsUrl","getSharingToken","visit","index","u","parseUrl","GenRandomId","unified","remarkParse","remarkAutolink","remarkGfm","breaks","remark2rehype","rehypeExternalLinks","rehype2react","NcCheckboxRadioSwitch","getRoute","RouterLink"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAqBA,MAAAA,cAAA;AAAA,EACA,MAAA;AAAA,EACA,YAAA;AAAA,IACA,mBAAAC,qBAAA;AAAA,EACA;AAAA,EACA,OAAA;AAAA,IACA,MAAA;AAAA,MACA,MAAA;AAAA,MACA,SAAA;AAAA,IACA;AAAA,IACA,eAAA;AAAA,MACA,MAAA;AAAA,MACA,SAAA;AAAA,IACA;AAAA,IACA,OAAA;AAAA,MACA,MAAA;AAAA,MACA,SAAA;AAAA,IACA;AAAA,IACA,iBAAA;AAAA,MACA,MAAA;AAAA,MACA,SAAA;AAAA,IACA;AAAA,IACA,aAAA;AAAA,MACA,MAAA;AAAA,MACA,SAAA;AAAA,IACA;AAAA,IACA,kBAAA;AAAA,MACA,MAAA;AAAA,MACA,SAAA;AAAA,IACA;AAAA,EACA;AAAA,EACA,OAAA;AACA,WAAA;AAAA,MACA,YAAA;AAAA,MACA,SAAA;AAAA,IACA;AAAA,EACA;AAAA,EACA,UAAA;AAAA,IACA,YAAA;AACA,aAAA,KAAA,WAAA,KAAA,oBAAA,WAAA;AAAA,IACA;AAAA,IACA,SAAA;AACA,UAAA,KAAA,eAAA;AACA,eAAA,KAAA;AAAA,MACA;AAEA,UAAA,KAAA,mBAAA,CAAA,KAAA,WAAA,CAAA,KAAA,YAAA;AACA,eAAA,CAAA,KAAA,iBAAA;AAAA,MACA;AAEA,aAAA,KAAA,aAAA,OAAA,OAAA,KAAA,UAAA,IAAA,CAAA;AAAA,IACA;AAAA,IACA,iBAAA;;AACA,cAAA,UAAA,OAAA,CAAA,MAAA,YAAA;AAAA,IACA;AAAA,IACA,sBAAA;AACA,aAAA,KAAA,OAAA,MAAA,GAAA,KAAA,KAAA;AAAA,IACA;AAAA,IACA,oBAAA;AACA,aAAA;AAAA,QACA,YAAA;AAAA,QACA,iBAAA;AAAA,UACA,IAAA,KAAA;AAAA,UACA,MAAA,KAAA;AAAA,UACA,MAAA,KAAA;AAAA,QACA;AAAA,QACA,gBAAA;AAAA,MACA;AAAA,IACA;AAAA,EACA;AAAA,EACA,OAAA;AAAA,IACA,MAAA;AAAA,EACA;AAAA,EACA,UAAA;AACA,SAAA,MAAA;AAAA,EACA;AAAA,EACA,SAAA;AAAA,IACA,QAAA;AACA,WAAA,UAAA;AACA,UAAA,KAAA,eAAA;AACA,aAAA,aAAA;AACA,aAAA,UAAA;AACA;AAAA,MACA;AAEA,UAAA,CAAA,IAAA,OAAAC,SAAA,WAAA,EAAA,KAAA,KAAA,IAAA,GAAA;AACA,aAAA,aAAA;AACA,aAAA,UAAA;AACA;AAAA,MACA;AAEA,WAAA,QAAA,EAAA,KAAA,CAAA,aAAA;AACA,aAAA,aAAA,SAAA,KAAA,IAAA,KAAA;AACA,aAAA,UAAA;AACA,aAAA,MAAA,QAAA;AAAA,MACA,CAAA,EAAA,MAAA,CAAA,UAAA;AACA,gBAAA,MAAA,gCAAA,KAAA;AACA,aAAA,UAAA;AACA,aAAA,MAAA,QAAA;AAAA,MACA,CAAA;AAAA,IACA;AAAA,IACA,UAAA;AACA,YAAA,QAAA,IAAA,OAAAA,oBAAA,EAAA,KAAA,KAAA,KAAA,KAAA,CAAA;AACA,YAAA,WAAAC,KAAA,eAAA,MAAA;AACA,UAAA,KAAA,UAAA,KAAA,OAAA;AACA,eAAA,WACAC,eAAAA,QAAA,IAAAC,OAAAA,eAAA,0BAAA,IAAA,cAAA,0BAAA,MAAA,CAAA,CAAA,GAAA,kBAAAC,eAAA,gBAAA,EAAA,IACAF,eAAAA,QAAA,IAAAC,sBAAA,oBAAA,IAAA,cAAA,0BAAA,MAAA,CAAA,CAAA,EAAA;AAAA,MACA;AAEA,aAAA,WACAD,eAAAA,QAAA,KAAAC,sBAAA,0BAAA,GAAA;AAAA,QACA,MAAA,KAAA;AAAA,QACA,SAAA;AAAA,QACA,OAAA,KAAA;AAAA,QACA,cAAAC,QAAAA,gBAAA;AAAA,MACA,CAAA,IACAF,eAAAA,QAAA,KAAAC,sBAAA,oBAAA,GAAA;AAAA,QACA,MAAA,KAAA;AAAA,QACA,SAAA;AAAA,QACA,OAAA,KAAA;AAAA,MACA,CAAA;AAAA,IACA;AAAA,EACA;AACA;;;;;;;;;;;;;;;;;;ACvIO,MAAM,oBAAoB,WAAW;AAC3C,SAAO,SAAS,KAAK;AACpBE,mBAAK,MAAC,KAAK,CAAC,SAAS,KAAK,SAAS,QAAQ,OAAO;AAQlD,aAAS,QAAQ,MAAM,OAAO,QAAQ;AACrC,YAAM,eAAe,KAAK,MAAM,MAAM,uBAAuB,EAC3D,IAAI,CAAC,OAAOC,QAAO,SAAS;AAC5B,cAAM,UAAU,MAAM,MAAM,wBAAwB;AACpD,YAAI,CAAC,SAAS;AACb,iBAAOC,aAAC,EAAC,QAAQ,KAAK;AAAA,QACtB;AACD,cAAM,CAAA,EAAG,SAAS,IAAI;AACtB,eAAOA,aAAAA,EAAE,WAAW;AAAA,UACnB,SAAS,IAAI;AAAA,QACnB,CAAM;AAAA,MACN,CAAK;AAEF,aAAO,SAAS,OAAO,OAAO,GAAG,GAAG,YAAY;AAAA,IAChD;AAAA,EACD;AACF;AAEO,MAAM,kBAAkB,CAAC,EAAE,GAAG,QAAO,GAAI,SAAS;AACxD,MAAI,QAAQ,UAAU;AACrB,WAAOC,SAAQ,SAAC,IAAI;AAAA,EACpB;AACD,MAAI,MAAM,QAAQ,IAAI,GAAG;AACxB,WAAO,KAAK,IAAI,CAAC,UAAU;AAC1B,UAAI,OAAO,UAAU,UAAU;AAC9B,eAAO;AAAA,MACP;AACD,YAAM,EAAE,WAAW,MAAK,IAAK;AAE7B,YAAM,iBAAiB,UAAU,SAAS,WAAW,SAAY;AACjE,aAAO,EAAE,WAAW;AAAA,QACnB;AAAA,QACA,OAAO;AAAA,MACX,CAAI;AAAA,IACJ,CAAG;AAAA,EACD;AACD,SAAO;AACR;AC2PA,MAAA,YAAA;AAAA,EACA,MAAA;AAAA,EACA,YAAA;AAAA,IACA;AAAA,EACA;AAAA,EACA,OAAA;AAAA,IACA,MAAA;AAAA,MACA,MAAA;AAAA,MACA,SAAA;AAAA,IACA;AAAA,IACA,WAAA;AAAA,MACA,MAAA;AAAA,MACA,SAAA,MAAA;AACA,eAAA,CAAA;AAAA,MACA;AAAA,IACA;AAAA,IACA,gBAAA;AAAA,MACA,MAAA;AAAA,MACA,SAAA;AAAA,IACA;AAAA,IACA,sBAAA;AAAA,MACA,MAAA;AAAA,MACA,SAAA;AAAA,IACA;AAAA;AAAA,IAEA,YAAA;AAAA,MACA,MAAA;AAAA,MACA,SAAA;AAAA,IACA;AAAA,IACA,oBAAA;AAAA,MACA,MAAA;AAAA,MACA,SAAA,MAAA;AACA,eAAA;AAAA,UACA,GAAA;AAAA,UACA,IAAA;AAAA,UACA,IAAA;AAAA,UACA,IAAA;AAAA,UACA,QAAA;AAAA,UACA,IAAA;AAAA,UACA,IAAA;AAAA,UACA,IAAA;AAAA,UACA,IAAA;AAAA,UACA,IAAA;AAAA,UACA,IAAA;AAAA,UACA,IAAA;AAAA,UACA,IAAA;AAAA,UACA,OAAA;AAAA,UACA,KAAA;AAAA,UACA,MAAA;AAAA,UACA,YAAA;AAAA,QACA;AAAA,MACA;AAAA,IACA;AAAA,IACA,aAAA;AAAA,MACA,MAAA;AAAA,MACA,SAAA;AAAA,IACA;AAAA;AAAA,IAEA,qBAAA;AAAA,MACA,MAAA;AAAA,MACA,SAAA;AAAA,IACA;AAAA;AAAA,IAEA,aAAA;AAAA,MACA,MAAA;AAAA,MACA,SAAA;AAAA,IACA;AAAA,IACA,UAAA;AAAA,MACA,MAAA;AAAA,MACA,SAAA;AAAA,IACA;AAAA,EACA;AAAA,EACA,OAAA,CAAA,eAAA;AAAA,EAEA,OAAA;AACA,WAAA;AAAA,MACA,UAAAC,YAAA,YAAA,CAAA;AAAA,IACA;AAAA,EACA;AAAA,EAEA,SAAA;AAAA,IACA,gBAAA,GAAA;AACA,YAAA,UAAA;AACA,YAAA,eAAA,KAAA,KAAA,MAAA,uBAAA,EAAA,IAAA,SAAA,OAAA,OAAA,MAAA;AACA,cAAA,UAAA,MAAA,MAAA,wBAAA;AAEA,YAAA,CAAA,SAAA;AACA,iBAAA,gBAAA,EAAA,GAAA,QAAA,GAAA,KAAA;AAAA,QACA;AAEA,cAAA,aAAA,QAAA,CAAA;AACA,cAAA,WAAA,QAAA,UAAA,UAAA;AACA,YAAA,OAAA,aAAA,UAAA;AACA,gBAAA,EAAA,WAAA,MAAA,IAAA;AACA,iBAAA,EAAA,WAAA;AAAA,YACA;AAAA,YACA,OAAA;AAAA,UACA,CAAA;AAAA,QACA;AACA,YAAA,UAAA;AACA,iBAAA,EAAA,QAAA,EAAA,OAAA,sBAAA,GAAA,QAAA;AAAA,QACA;AACA,eAAA;AAAA,MACA,CAAA;AACA,aAAA,EAAA,OAAA,EAAA,OAAA,qBAAA,GAAA;AAAA,QACA,EAAA,OAAA,CAAA,GAAA,aAAA,KAAA,CAAA;AAAA,QACA,KAAA,iBAAA,IACA,EAAA,OAAA,EAAA,OAAA,8BAAA,GAAA;AAAA,UACA,EAAA,iBAAA;AAAA,YACA,OAAA;AAAA,cACA,MAAA,KAAA;AAAA,cACA,eAAA,KAAA;AAAA,cACA,aAAA,KAAA;AAAA,YACA;AAAA,UACA,CAAA;AAAA,QACA,CAAA,IACA;AAAA,MACA,CAAA;AAAA,IACA;AAAA,IACA,eAAA,GAAA;AACA,YAAA,mBAAAC,QAAAA,QAAA,EACA,IAAAC,qBAAAA,OAAA,EACA,IAAAC,SAAAA,gBAAA;AAAA,QACA,UAAA,KAAA;AAAA,QACA,aAAA,KAAA;AAAA,QACA,qBAAA,KAAA;AAAA,MACA,CAAA,EACA,IAAA,KAAA,sBAAAC,mBAAAA,UAAA,MAAA,EACA,IAAAC,gBAAAA,OAAA,EACA,IAAAC,uBAAAA,SAAA;AAAA,QACA,UAAA;AAAA,UACA,UAAA,QAAA,MAAA;AACA,mBAAA,OAAA,MAAA,KAAA,WAAA,EAAA,OAAA,KAAA,OAAA;AAAA,UACA;AAAA,QACA;AAAA,MACA,CAAA,EAEA,IAAA,iBAAA,EACA,IAAAC,6BAAAA,SAAA;AAAA,QACA,QAAA;AAAA,QACA,KAAA,CAAA,qBAAA;AAAA,MACA,CAAA,EACA,IAAAC,sBAAAA,SAAA;AAAA,QACA,eAAA,CAAA,KAAA,OAAA,aAAA;AAEA,qBAAA,qCAAA;AAAA,YAAA,WAAA,OAAA,UAAA,WACA,MAAA,QAAA,WAAA,GAAA,IACA;AAAA;AAGA,cAAA,CAAA,IAAA,WAAA,GAAA,GAAA;AACA,gBAAA,KAAA,qBAAA;AACA,kBAAA,aAAA;AACA,kBAAA,QAAA,QAAA,MAAA,QAAA,QAAA,KACA,SAAA,CAAA,EAAA,QAAA,WACA,SAAA,CAAA,EAAA,KAAA,MAAA,SAAA,YAAA;AACA,sBAAA,CAAA,WAAA,GAAA,UAAA,IAAA;AAEA,sBAAA,kBAAA,WAAA,UAAA,CAAA,UAAA,CAAA,MAAA,MAAA,MAAA,cAAA,KAAA,EAAA,SAAA,MAAA,GAAA,CAAA;AACA,oBAAA,oBAAA,IAAA;AACA,+BAAA,WAAA,eAAA;AACA,6BAAA,OAAA,eAAA;AAAA,gBACA;AAEA,sBAAA,KAAA,KAAA,WAAA,qBAAAR,YAAAA,YAAA,CAAA;AACA,sBAAA,iBAAA,EAAAS,6CAAA;AAAA,kBACA,OAAA;AAAA,oBACA,GAAA,UAAA,KAAA;AAAA,oBACA;AAAA,oBACA,UAAA,CAAA,KAAA;AAAA,kBACA;AAAA,kBACA,IAAA;AAAA,oBACA,kBAAA,MAAA;AACA,2BAAA,MAAA,iBAAA,EAAA;AAAA,oBACA;AAAA,kBACA;AAAA,gBACA,GAAA,UAAA;AAEA,uBAAA,EAAA,KAAA,OAAA,CAAA,gBAAA,UAAA,CAAA;AAAA,cACA;AAAA,YACA;AAEA,gBAAA,QAAA,KAAA;AACA,oBAAA,QAAAC,SAAAA,SAAA,KAAA,SAAA,MAAA,MAAA,IAAA;AACA,kBAAA,OAAA;AACA,uBAAA,MAAA,MAAA;AACA,uBAAA,MAAA,MAAA;AAEA,uBAAA,EAAAC,UAAAA,YAAA;AAAA,kBACA,GAAA;AAAA,kBACA,OAAA;AAAA,oBACA,IAAA;AAAA,kBACA;AAAA,gBACA,GAAA,QAAA;AAAA,cACA;AAAA,YACA;AAEA,mBAAA,EAAA,KAAA,OAAA,QAAA;AAAA,UACA;AAEA,gBAAA,cAAA,KAAA,UAAA,IAAA,MAAA,CAAA,CAAA;AACA,cAAA,CAAA,aAAA;AACA,mBAAA,EAAA,QAAA,EAAA,GAAA,EAAA,MAAA,GAAA,GAAA,EAAA,OAAA,sBAAA,EAAA,GAAA,CAAA,IAAA,WAAA,MAAA,CAAA,GAAA,IAAA,CAAA;AAAA,UACA;AAEA,cAAA,CAAA,YAAA,WAAA;AACA,mBAAA,EAAA,QAAA,OAAA,CAAA,WAAA,CAAA;AAAA,UACA;AAEA,iBAAA;AAAA,YACA,YAAA;AAAA,YACA;AAAA,cACA;AAAA,cACA,OAAA,YAAA;AAAA,cACA,OAAA;AAAA,YACA;AAAA,YACA;AAAA,UACA;AAAA,QACA;AAAA,QACA,QAAA;AAAA,MACA,CAAA,EACA;AAAA,QAAA,KAAA,KAEA,QAAA,QAAA,MAAA,EAEA,QAAA,WAAA,GAAA;AAAA,MACA,EACA;AAEA,aAAA,EAAA,OAAA,EAAA,OAAA,iDAAA,GAAA;AAAA,QACA;AAAA,QACA,KAAA,iBAAA,IACA,EAAA,OAAA,EAAA,OAAA,8BAAA,GAAA;AAAA,UACA,EAAA,iBAAA;AAAA,YACA,OAAA;AAAA,cACA,MAAA,KAAA;AAAA,cACA,eAAA,KAAA;AAAA,cACA,aAAA,KAAA;AAAA,YACA;AAAA,UACA,CAAA;AAAA,QACA,CAAA,IACA;AAAA,MACA,CAAA;AAAA,IACA;AAAA,EACA;AAAA,EACA,OAAA,GAAA;AACA,WAAA,KAAA,eAAA,KAAA,sBACA,KAAA,eAAA,CAAA,IACA,KAAA,gBAAA,CAAA;AAAA,EACA;AACA;;;;;;;;;;;;;;"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"NcSelect-BoIXJjPW.cjs","sources":["../../src/components/NcSelect/NcSelect.vue"],"sourcesContent":["<!--\n - SPDX-FileCopyrightText: 2022 Nextcloud GmbH and Nextcloud contributors\n - SPDX-License-Identifier: AGPL-3.0-or-later\n-->\n\n<docs>\n### Description\n\nGeneral purpose multiselect component.\n\n### Basic examples\n\n```vue\n<template>\n\t<div class=\"grid\">\n\t\t<div v-for=\"{ props } in selectArray\"\n\t\t\tclass=\"container\">\n\t\t\t<NcSelect v-bind=\"props\"\n\t\t\t\tv-model=\"props.value\" />\n\t\t</div>\n\t</div>\n</template>\n\n<script>\nconst selectArray = [\n\t{\n\t\tprops: {\n\t\t\tinputLabel: 'Simple',\n\t\t\toptions: [\n\t\t\t\t'foo',\n\t\t\t\t'bar',\n\t\t\t\t'baz',\n\t\t\t\t'qux',\n\t\t\t\t'quux',\n\t\t\t],\n\t\t},\n\t},\n\n\t{\n\t\tprops: {\n\t\t\tinputLabel: 'Simple (top placement)',\n\t\t\tplacement: 'top',\n\t\t\toptions: [\n\t\t\t\t'foo',\n\t\t\t\t'bar',\n\t\t\t\t'baz',\n\t\t\t\t'qux',\n\t\t\t\t'quux',\n\t\t\t],\n\t\t},\n\t},\n\n\t{\n\t\tprops: {\n\t\t\tinputLabel: 'Multiple (with placeholder)',\n\t\t\tmultiple: true,\n\t\t\tplaceholder: 'Select multiple options',\n\t\t\toptions: [\n\t\t\t\t'foo',\n\t\t\t\t'bar',\n\t\t\t\t'baz',\n\t\t\t\t'qux',\n\t\t\t\t'quux',\n\t\t\t],\n\t\t},\n\t},\n\n\t{\n\t\tprops: {\n\t\t\tinputLabel: 'Multiple (objects, pre-selected, stay open on select)',\n\t\t\tmultiple: true,\n\t\t\tcloseOnSelect: false,\n\t\t\toptions: [\n\t\t\t\t{\n\t\t\t\t\tid: 'foo',\n\t\t\t\t\tlabel: 'Foo',\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tid: 'bar',\n\t\t\t\t\tlabel: 'Bar',\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tid: 'baz',\n\t\t\t\t\tlabel: 'Baz',\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tid: 'qux',\n\t\t\t\t\tlabel: 'Qux',\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tid: 'quux',\n\t\t\t\t\tlabel: 'Quux',\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tid: 'corge',\n\t\t\t\t\tlabel: 'Corge',\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tid: 'grault',\n\t\t\t\t\tlabel: 'Grault',\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tid: 'garply',\n\t\t\t\t\tlabel: 'Garply',\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tid: 'waldo',\n\t\t\t\t\tlabel: 'Waldo',\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tid: 'fred',\n\t\t\t\t\tlabel: 'Fred',\n\t\t\t\t},\n\t\t\t],\n\t\t\tvalue: [\n\t\t\t\t{\n\t\t\t\t\tid: 'foo',\n\t\t\t\t\tlabel: 'Foo',\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tid: 'bar',\n\t\t\t\t\tlabel: 'Bar',\n\t\t\t\t},\n\t\t\t],\n\t\t},\n\t},\n]\n\nexport default {\n\tdata() {\n\t\treturn {\n\t\t\tselectArray,\n\t\t}\n\t},\n}\n</script>\n\n<style>\n.grid {\n\tdisplay: grid;\n\tgrid-template-columns: repeat(2, 1fr);\n\tgap: 10px;\n}\n\n.container {\n\tdisplay: flex;\n\tflex-direction: column;\n\tgap: 2px 0;\n}\n</style>\n```\n\n### Native form validation example\n\n```vue\n<template>\n\t<div class=\"container\">\n\t\t<form class=\"container__form\" @submit.prevent>\n\t\t\t<NcSelect class=\"container__select\"\n\t\t\t\tinput-label=\"Require a selection\"\n\t\t\t\t:options=\"options\"\n\t\t\t\tv-model=\"singleValue\"\n\t\t\t\trequired />\n\t\t\t<NcButton native-type=\"submit\">Submit</NcButton>\n\t\t</form>\n\n\t\t<form class=\"container__form\" @submit.prevent>\n\t\t\t<NcSelect class=\"container__select\"\n\t\t\t\tinput-label=\"Require at least one selection\"\n\t\t\t\t:options=\"options\"\n\t\t\t\tv-model=\"multiValue\"\n\t\t\t\tmultiple\n\t\t\t\trequired />\n\t\t\t<NcButton native-type=\"submit\">Submit</NcButton>\n\t\t</form>\n\t</div>\n</template>\n\n<script>\nexport default {\n\tdata() {\n\t\treturn {\n\t\t\toptions: ['foo', 'bar', 'baz', 'qux', 'quux'],\n\t\t\tsingleValue: null,\n\t\t\tmultiValue: [],\n\t\t}\n\t},\n}\n</script>\n\n<style>\n.container {\n\tdisplay: flex;\n\tgap: 0 12px;\n}\n\n.container__form {\n\tdisplay: flex;\n\tflex-direction: column;\n\talign-items: flex-end;\n\twidth: 100%;\n\tgap: 8px 0;\n}\n\n.container__select {\n\twidth: 100%;\n}\n</style>\n```\n\n### No wrap example\n\nThe `noWrap` prop is set to `true` and the `max-width` of the multiselect\nparent container is limited to `350px`\n\n```vue\n<template>\n\t<div class=\"grid\">\n\t\t<div class=\"container\">\n\t\t\t<NcSelect :no-wrap=\"false\"\n\t\t\t\tv-bind=\"data1.props\"\n\t\t\t\tv-model=\"data1.props.value\" />\n\t\t</div>\n\t\t<div class=\"container\">\n\t\t\t<NcSelect :no-wrap=\"true\"\n\t\t\t\tv-bind=\"data2.props\"\n\t\t\t\tv-model=\"data2.props.value\" />\n\t\t</div>\n\t</div>\n</template>\n\n<script>\nconst data1 = {\n\tprops: {\n\t\tinputLabel: 'Wrapped (Default)',\n\t\tmultiple: true,\n\t\tcloseOnSelect: false,\n\t\toptions: [\n\t\t\t'foo',\n\t\t\t'bar',\n\t\t\t'baz',\n\t\t\t'qux',\n\t\t\t'quux',\n\t\t\t'corge',\n\t\t\t'grault',\n\t\t\t'garply',\n\t\t\t'waldo',\n\t\t\t'fred',\n\t\t],\n\t\tvalue: [\n\t\t\t'foo',\n\t\t\t'bar',\n\t\t\t'baz',\n\t\t\t'qux',\n\t\t\t'quux',\n\t\t\t'corge',\n\t\t\t'grault',\n\t\t\t'garply',\n\t\t\t'waldo',\n\t\t\t'fred',\n\t\t],\n\t},\n}\n\nconst data2 = {\n\tprops: {\n\t\tinputLabel: 'Not wrapped',\n\t\tmultiple: true,\n\t\tcloseOnSelect: false,\n\t\toptions: [\n\t\t\t'foo',\n\t\t\t'bar',\n\t\t\t'baz',\n\t\t\t'qux',\n\t\t\t'quux',\n\t\t\t'corge',\n\t\t\t'grault',\n\t\t\t'garply',\n\t\t\t'waldo',\n\t\t\t'fred',\n\t\t],\n\t\tvalue: [\n\t\t\t'foo',\n\t\t\t'bar',\n\t\t\t'baz',\n\t\t\t'qux',\n\t\t\t'quux',\n\t\t\t'corge',\n\t\t\t'grault',\n\t\t\t'garply',\n\t\t\t'waldo',\n\t\t\t'fred',\n\t\t],\n\t},\n}\n\nexport default {\n\tdata() {\n\t\treturn {\n\t\t\tdata1,\n\t\t\tdata2,\n\t\t}\n\t},\n}\n</script>\n\n<style>\n.grid {\n\tdisplay: grid;\n\tgrid-template-columns: repeat(1, 1fr);\n\tgap: 10px;\n}\n\n.container {\n\tmax-width: 350px;\n\tdisplay: flex;\n\tflex-direction: column;\n\tgap: 2px 0;\n}\n</style>\n```\n\n### User select examples\n\n```vue\n<template>\n\t<div class=\"grid\">\n\t\t<div v-for=\"{ props } in selectArray\"\n\t\t\tclass=\"container\">\n\t\t\t<NcSelect v-bind=\"props\"\n\t\t\t\tv-model=\"props.value\" />\n\t\t</div>\n\t</div>\n</template>\n\n<script>\nimport AccountGroup from '@mdi/svg/svg/account-group.svg?raw'\nimport Email from '@mdi/svg/svg/email.svg?raw'\n\nconst selectArray = [\n\t{\n\t\tprops: {\n\t\t\tinputLabel: 'User select',\n\t\t\tuserSelect: true,\n\t\t\toptions: [\n\t\t\t\t{\n\t\t\t\t\tid: '0-john',\n\t\t\t\t\tdisplayName: 'John',\n\t\t\t\t\tisNoUser: false,\n\t\t\t\t\tsubname: 'john@example.org',\n\t\t\t\t\ticon: '',\n\t\t\t\t\t// Example of how to show the user status within the option\n\t\t\t\t\tuser: '0-john',\n\t\t\t\t\tpreloadedUserStatus: {\n\t\t\t\t\t\ticon: '',\n\t\t\t\t\t\tstatus: 'online',\n\t\t\t\t\t\tmessage: 'I am online',\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tid: '0-emma',\n\t\t\t\t\tdisplayName: 'Emma',\n\t\t\t\t\tisNoUser: false,\n\t\t\t\t\tsubname: 'emma@example.org',\n\t\t\t\t\ticon: '',\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tid: '0-olivia',\n\t\t\t\t\tdisplayName: 'Olivia',\n\t\t\t\t\tisNoUser: false,\n\t\t\t\t\tsubname: 'olivia@example.org',\n\t\t\t\t\ticon: '',\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tid: '0-noah',\n\t\t\t\t\tdisplayName: 'Noah',\n\t\t\t\t\tisNoUser: false,\n\t\t\t\t\tsubname: 'noah@example.org',\n\t\t\t\t\ticon: '',\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tid: '0-oliver',\n\t\t\t\t\tdisplayName: 'Oliver',\n\t\t\t\t\tisNoUser: false,\n\t\t\t\t\tsubname: 'oliver@example.org',\n\t\t\t\t\ticon: '',\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tid: '1-admin',\n\t\t\t\t\tdisplayName: 'Admin',\n\t\t\t\t\tisNoUser: true,\n\t\t\t\t\tsubname: null,\n\t\t\t\t\ticonSvg: AccountGroup,\n\t\t\t\t\ticonName: 'Group icon',\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tid: '2-org@example.org',\n\t\t\t\t\tdisplayName: 'Organization',\n\t\t\t\t\tisNoUser: true,\n\t\t\t\t\tsubname: 'org@example.org',\n\t\t\t\t\ticonSvg: Email,\n\t\t\t\t\ticonName: 'Email icon',\n\t\t\t\t},\n\t\t\t],\n\t\t},\n\t},\n\n\t{\n\t\tprops: {\n\t\t\tinputLabel: 'Multiple user select (stay open on select)',\n\t\t\tuserSelect: true,\n\t\t\tmultiple: true,\n\t\t\tcloseOnSelect: false,\n\t\t\toptions: [\n\t\t\t\t{\n\t\t\t\t\tid: '0-john',\n\t\t\t\t\tdisplayName: 'John',\n\t\t\t\t\tisNoUser: false,\n\t\t\t\t\tsubname: 'john@example.org',\n\t\t\t\t\ticon: '',\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tid: '0-emma',\n\t\t\t\t\tdisplayName: 'Emma',\n\t\t\t\t\tisNoUser: false,\n\t\t\t\t\tsubname: 'emma@example.org',\n\t\t\t\t\ticon: '',\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tid: '0-olivia',\n\t\t\t\t\tdisplayName: 'Olivia',\n\t\t\t\t\tisNoUser: false,\n\t\t\t\t\tsubname: 'olivia@example.org',\n\t\t\t\t\ticon: '',\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tid: '0-noah',\n\t\t\t\t\tdisplayName: 'Noah',\n\t\t\t\t\tisNoUser: false,\n\t\t\t\t\tsubname: 'noah@example.org',\n\t\t\t\t\ticon: '',\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tid: '0-oliver',\n\t\t\t\t\tdisplayName: 'Oliver',\n\t\t\t\t\tisNoUser: false,\n\t\t\t\t\tsubname: 'oliver@example.org',\n\t\t\t\t\ticon: '',\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tid: '1-admin',\n\t\t\t\t\tdisplayName: 'Admin',\n\t\t\t\t\tisNoUser: true,\n\t\t\t\t\tsubname: null,\n\t\t\t\t\ticonSvg: AccountGroup,\n\t\t\t\t\ticonName: 'Group icon',\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tid: '2-org@example.org',\n\t\t\t\t\tdisplayName: 'Organization',\n\t\t\t\t\tisNoUser: true,\n\t\t\t\t\tsubname: 'org@example.org',\n\t\t\t\t\ticonSvg: Email,\n\t\t\t\t\ticonName: 'Email icon',\n\t\t\t\t},\n\t\t\t],\n\t\t},\n\t},\n]\n\nexport default {\n\tdata() {\n\t\treturn {\n\t\t\tselectArray,\n\t\t}\n\t},\n}\n</script>\n\n<style>\n.grid {\n\tdisplay: grid;\n\tgrid-template-columns: repeat(1, 500px);\n\tgap: 10px;\n}\n\n.container {\n\tdisplay: flex;\n\tflex-direction: column;\n\tgap: 2px 0;\n}\n</style>\n```\n</docs>\n\n<template>\n\t<VueSelect class=\"select\"\n\t\t:class=\"{\n\t\t\t'select--no-wrap': noWrap,\n\t\t\t'user-select': userSelect,\n\t\t}\"\n\t\tv-bind=\"propsToForward\"\n\t\tv-on=\"$listeners\"\n\t\t@search=\"searchString => search = searchString\">\n\t\t<template v-if=\"!labelOutside && inputLabel\" #header>\n\t\t\t<label :for=\"inputId\"\n\t\t\t\tclass=\"select__label\">\n\t\t\t\t{{ inputLabel }}\n\t\t\t</label>\n\t\t</template>\n\t\t<template #search=\"{ attributes, events }\">\n\t\t\t<input :class=\"['vs__search', inputClass]\"\n\t\t\t\tv-bind=\"attributes\"\n\t\t\t\t:required=\"inputRequired\"\n\t\t\t\tv-on=\"events\">\n\t\t</template>\n\t\t<template #open-indicator=\"{ attributes }\">\n\t\t\t<ChevronDown v-bind=\"attributes\"\n\t\t\t\tfill-color=\"var(--vs-controls-color)\"\n\t\t\t\t:style=\"{\n\t\t\t\t\tcursor: !disabled ? 'pointer' : null,\n\t\t\t\t}\"\n\t\t\t\t:size=\"26\" />\n\t\t\t\t<!-- Set size to 26 to make up for the increased padding of this icon -->\n\t\t</template>\n\t\t<template #option=\"option\">\n\t\t\t<NcListItemIcon v-if=\"userSelect\"\n\t\t\t\tv-bind=\"option\"\n\t\t\t\t:avatar-size=\"32\"\n\t\t\t\t:name=\"option[localLabel]\"\n\t\t\t\t:search=\"search\" />\n\t\t\t<NcEllipsisedOption v-else\n\t\t\t\t:name=\"String(option[localLabel])\"\n\t\t\t\t:search=\"search\" />\n\t\t</template>\n\t\t<template #selected-option=\"selectedOption\">\n\t\t\t<NcListItemIcon v-if=\"userSelect\"\n\t\t\t\tv-bind=\"selectedOption\"\n\t\t\t\t:avatar-size=\"avatarSize\"\n\t\t\t\t:name=\"selectedOption[localLabel]\"\n\t\t\t\tno-margin\n\t\t\t\t:search=\"search\" />\n\t\t\t<NcEllipsisedOption v-else\n\t\t\t\t:name=\"String(selectedOption[localLabel])\"\n\t\t\t\t:search=\"search\" />\n\t\t</template>\n\t\t<template #spinner=\"spinner\">\n\t\t\t<NcLoadingIcon v-if=\"spinner.loading\" />\n\t\t</template>\n\t\t<template #no-options>\n\t\t\t{{ t('No results') }}\n\t\t</template>\n\t\t<template v-for=\"(_, name) in $scopedSlots\" #[name]=\"data\">\n\t\t\t<!-- @slot Any combination of slots from https://vue-select.org/api/slots.html -->\n\t\t\t<slot :name=\"name\" v-bind=\"data\" />\n\t\t</template>\n\t</VueSelect>\n</template>\n\n<script>\nimport { VueSelect } from '@nextcloud/vue-select'\nimport {\n\tautoUpdate,\n\tcomputePosition,\n\tflip,\n\tlimitShift,\n\toffset,\n\tshift,\n} from '@floating-ui/dom'\nimport Vue from 'vue'\nimport { t } from '../../l10n.js'\n\nimport ChevronDown from 'vue-material-design-icons/ChevronDown.vue'\nimport Close from 'vue-material-design-icons/Close.vue'\n\nimport NcEllipsisedOption from '../NcEllipsisedOption/index.js'\nimport NcListItemIcon from '../NcListItemIcon/index.js'\nimport NcLoadingIcon from '../NcLoadingIcon/index.js'\n\nimport GenRandomId from '../../utils/GenRandomId.js'\n\nimport '@nextcloud/vue-select/dist/vue-select.css'\n\nexport default {\n\tname: 'NcSelect',\n\n\tcomponents: {\n\t\tChevronDown,\n\t\tNcEllipsisedOption,\n\t\tNcListItemIcon,\n\t\tNcLoadingIcon,\n\t\tVueSelect,\n\t},\n\n\tprops: {\n\t\t// Add VueSelect props to $props\n\t\t...VueSelect.props,\n\t\t...VueSelect.mixins.reduce((allProps, mixin) => ({ ...allProps, ...mixin.props }), {}),\n\n\t\t/**\n\t\t * `aria-label` for the clear input button\n\t\t */\n\t\tariaLabelClearSelected: {\n\t\t\ttype: String,\n\t\t\tdefault: t('Clear selected'),\n\t\t},\n\n\t\t/**\n\t\t * `aria-label` for the search input\n\t\t *\n\t\t * A descriptive `inputLabel` is preferred as this is not visible.\n\t\t */\n\t\tariaLabelCombobox: {\n\t\t\ttype: String,\n\t\t\tdefault: null,\n\t\t},\n\n\t\t/**\n\t\t * `aria-label` for the listbox element\n\t\t */\n\t\tariaLabelListbox: {\n\t\t\ttype: String,\n\t\t\tdefault: t('Options'),\n\t\t},\n\n\t\t/**\n\t\t * Allows to customize the `aria-label` for the deselect-option button\n\t\t * The default is \"Deselect \" + optionLabel\n\t\t * @type {(optionLabel: string) => string}\n\t\t */\n\t\tariaLabelDeselectOption: {\n\t\t\ttype: Function,\n\t\t\tdefault: (optionLabel) => t('Deselect {option}', { option: optionLabel }),\n\t\t},\n\n\t\t/**\n\t\t * Append the dropdown element to the end of the body\n\t\t * and size/position it dynamically.\n\t\t *\n\t\t * @see https://vue-select.org/api/props.html#appendtobody\n\t\t */\n\t\tappendToBody: {\n\t\t\ttype: Boolean,\n\t\t\tdefault: true,\n\t\t},\n\n\t\t/**\n\t\t * When `appendToBody` is true, this function is responsible for\n\t\t * positioning the drop down list.\n\t\t *\n\t\t * If a function is returned from `calculatePosition`, it will\n\t\t * be called when the drop down list is removed from the DOM.\n\t\t * This allows for any garbage collection you may need to do.\n\t\t *\n\t\t * @see https://vue-select.org/api/props.html#calculateposition\n\t\t */\n\t\tcalculatePosition: {\n\t\t\ttype: Function,\n\t\t\tdefault: null,\n\t\t},\n\n\t\t/**\n\t\t * Close the dropdown when selecting an option\n\t\t *\n\t\t * @see https://vue-select.org/api/props.html#closeonselect\n\t\t */\n\t\tcloseOnSelect: {\n\t\t\ttype: Boolean,\n\t\t\tdefault: true,\n\t\t},\n\n\t\t/**\n\t\t * Replace default vue-select components\n\t\t *\n\t\t * @see https://vue-select.org/api/props.html#components\n\t\t */\n\t\tcomponents: {\n\t\t\ttype: Object,\n\t\t\tdefault: () => ({\n\t\t\t\tDeselect: {\n\t\t\t\t\trender: createElement => createElement(Close, {\n\t\t\t\t\t\tprops: {\n\t\t\t\t\t\t\tsize: 20,\n\t\t\t\t\t\t\tfillColor: 'var(--vs-controls-color)',\n\t\t\t\t\t\t},\n\t\t\t\t\t\tstyle: {\n\t\t\t\t\t\t\tcursor: 'pointer',\n\t\t\t\t\t\t},\n\t\t\t\t\t}),\n\t\t\t\t},\n\t\t\t}),\n\t\t},\n\n\t\t/**\n\t\t * Sets the maximum number of options to display in the dropdown list\n\t\t */\n\t\tlimit: {\n\t\t\ttype: Number,\n\t\t\tdefault: null,\n\t\t},\n\n\t\t/**\n\t\t * Disable the component\n\t\t *\n\t\t * @see https://vue-select.org/api/props.html#disabled\n\t\t */\n\t\tdisabled: {\n\t\t\ttype: Boolean,\n\t\t\tdefault: false,\n\t\t},\n\n\t\t/**\n\t\t * Determines whether the dropdown should be open.\n\t\t * Receives the component instance as the only argument.\n\t\t *\n\t\t * @see https://vue-select.org/api/props.html#dropdownshouldopen\n\t\t */\n\t\tdropdownShouldOpen: {\n\t\t\ttype: Function,\n\t\t\tdefault: ({ noDrop, open }) => {\n\t\t\t\treturn noDrop ? false : open\n\t\t\t},\n\t\t},\n\n\t\t/**\n\t\t * Callback to determine if the provided option should\n\t\t * match the current search text. Used to determine\n\t\t * if the option should be displayed.\n\t\t *\n\t\t * Defaults to the internal vue-select function documented at the link\n\t\t * below\n\t\t *\n\t\t * Enabling `userSelect` will automatically set this to filter by the\n\t\t * `displayName` and `subname` properties of the user option object\n\t\t * unless this prop is set explicitly\n\t\t *\n\t\t * @see https://vue-select.org/api/props.html#filterby\n\t\t */\n\t\tfilterBy: {\n\t\t\ttype: Function,\n\t\t\tdefault: null,\n\t\t},\n\n\t\t/**\n\t\t * Class for the `input`\n\t\t *\n\t\t * Necessary for use in NcActionInput\n\t\t */\n\t\tinputClass: {\n\t\t\ttype: [String, Object],\n\t\t\tdefault: null,\n\t\t},\n\n\t\t/**\n\t\t * Input element id\n\t\t */\n\t\tinputId: {\n\t\t\ttype: String,\n\t\t\tdefault: () => `select-input-${GenRandomId()}`,\n\t\t},\n\n\t\t/**\n\t\t * Visible label for the input element\n\t\t *\n\t\t * @todo Set default for @nextcloud/vue 9\n\t\t */\n\t\tinputLabel: {\n\t\t\ttype: String,\n\t\t\tdefault: null,\n\t\t},\n\n\t\t/**\n\t\t * Pass true if you are using an external label\n\t\t */\n\t\tlabelOutside: {\n\t\t\ttype: Boolean,\n\t\t\tdefault: false,\n\t\t},\n\n\t\t/**\n\t\t * Display a visible border around dropdown options\n\t\t * which have keyboard focus\n\t\t */\n\t\tkeyboardFocusBorder: {\n\t\t\ttype: Boolean,\n\t\t\tdefault: true,\n\t\t},\n\n\t\t/**\n\t\t * Key of the displayed label for object options\n\t\t *\n\t\t * Defaults to the internal vue-select string documented at the link\n\t\t * below\n\t\t *\n\t\t * Enabling `userSelect` will automatically set this to `'displayName'`\n\t\t * unless this prop is set explicitly\n\t\t *\n\t\t * @see https://vue-select.org/api/props.html#label\n\t\t */\n\t\tlabel: {\n\t\t\ttype: String,\n\t\t\tdefault: null,\n\t\t},\n\n\t\t/**\n\t\t * Show the loading icon\n\t\t *\n\t\t * @see https://vue-select.org/api/props.html#loading\n\t\t */\n\t\tloading: {\n\t\t\ttype: Boolean,\n\t\t\tdefault: false,\n\t\t},\n\n\t\t/**\n\t\t * Allow selection of multiple options\n\t\t *\n\t\t * @see https://vue-select.org/api/props.html#multiple\n\t\t */\n\t\tmultiple: {\n\t\t\ttype: Boolean,\n\t\t\tdefault: false,\n\t\t},\n\n\t\t/**\n\t\t * Disable automatic wrapping when selected options overflow the width\n\t\t */\n\t\tnoWrap: {\n\t\t\ttype: Boolean,\n\t\t\tdefault: false,\n\t\t},\n\n\t\t/**\n\t\t * Array of options\n\t\t *\n\t\t * @type {Array<string | number | Record<string | number, any>>}\n\t\t *\n\t\t * @see https://vue-select.org/api/props.html#options\n\t\t */\n\t\toptions: {\n\t\t\ttype: Array,\n\t\t\tdefault: () => [],\n\t\t},\n\n\t\t/**\n\t\t * Placeholder text\n\t\t *\n\t\t * @see https://vue-select.org/api/props.html#placeholder\n\t\t */\n\t\tplaceholder: {\n\t\t\ttype: String,\n\t\t\tdefault: '',\n\t\t},\n\n\t\t/**\n\t\t * Customized component's response to keydown events while the search input has focus\n\t\t *\n\t\t * @see https://vue-select.org/guide/keydown.html#mapkeydown\n\t\t */\n\t\tmapKeydown: {\n\t\t\ttype: Function,\n\t\t\t/**\n\t\t\t * Patched Vue-Select keydown events handlers map to stop Escape propagation in open select\n\t\t\t *\n\t\t\t * @param {Record<number, Function>} map - Mapped keyCode to handlers { <keyCode>:<callback> }\n\t\t\t * @param {import('@nextcloud/vue-select').VueSelect} vm - VueSelect instance\n\t\t\t * @return {Record<number, Function>} patched keydown event handlers\n\t\t\t */\n\t\t\tdefault(map, vm) {\n\t\t\t\treturn {\n\t\t\t\t\t...map,\n\t\t\t\t\t/**\n\t\t\t\t\t * Patched Escape handler to stop propagation from open select\n\t\t\t\t\t *\n\t\t\t\t\t * @param {KeyboardEvent} event - default keydown event handler\n\t\t\t\t\t */\n\t\t\t\t\t27: (event) => {\n\t\t\t\t\t\tif (vm.open) {\n\t\t\t\t\t\t\tevent.stopPropagation()\n\t\t\t\t\t\t}\n\t\t\t\t\t\t// Default VueSelect's handler\n\t\t\t\t\t\tmap[27](event)\n\t\t\t\t\t},\n\t\t\t\t}\n\t\t\t},\n\t\t},\n\n\t\t/**\n\t\t * A unique identifier used to generate IDs and DOM attributes. Must be unique for every instance of the component.\n\t\t *\n\t\t * @see https://vue-select.org/api/props.html#uid\n\t\t */\n\t\tuid: {\n\t\t\ttype: String,\n\t\t\tdefault: () => GenRandomId(),\n\t\t},\n\n\t\t/**\n\t\t * When `appendToBody` is true, this sets the placement of the dropdown\n\t\t *\n\t\t * @type {'bottom' | 'top'}\n\t\t */\n\t\tplacement: {\n\t\t\ttype: String,\n\t\t\tdefault: 'bottom',\n\t\t},\n\n\t\t/**\n\t\t * If false, the focused dropdown option will not be reset when filtered\n\t\t * options change\n\t\t */\n\t\tresetFocusOnOptionsChange: {\n\t\t\ttype: Boolean,\n\t\t\tdefault: true,\n\t\t},\n\n\t\t/**\n\t\t * Enable the user selector with avatars\n\t\t *\n\t\t * Objects must contain the data expected by the\n\t\t * [NcListItemIcon](#/Components/NcListItemIcon) and\n\t\t * [NcAvatar](#/Components/NcAvatar) components\n\t\t */\n\t\tuserSelect: {\n\t\t\ttype: Boolean,\n\t\t\tdefault: false,\n\t\t},\n\n\t\t/**\n\t\t * Currently selected value\n\t\t *\n\t\t * The `v-model` directive may be used for two-way data binding\n\t\t *\n\t\t * @type {string | number | Record<string | number, any> | Array<any>}\n\t\t *\n\t\t * @see https://vue-select.org/api/props.html#value\n\t\t */\n\t\tvalue: {\n\t\t\ttype: [String, Number, Object, Array],\n\t\t\tdefault: null,\n\t\t},\n\n\t\t/**\n\t\t * Enable if a value is required for native form validation\n\t\t */\n\t\trequired: {\n\t\t\ttype: Boolean,\n\t\t\tdefault: false,\n\t\t},\n\n\t\t/**\n\t\t * Any available prop\n\t\t *\n\t\t * @see https://vue-select.org/api/props.html\n\t\t */\n\t\t// Not an actual prop but needed to show in vue-styleguidist docs\n\t\t// eslint-disable-next-line\n\t\t' ': {},\n\t},\n\n\temits: [\n\t\t/**\n\t\t * All events from https://vue-select.org/api/events.html\n\t\t */\n\t\t// Not an actual event but needed to show in vue-styleguidist docs\n\t\t' ',\n\t],\n\n\tsetup() {\n\t\tconst clickableArea = Number.parseInt(window.getComputedStyle(document.body).getPropertyValue('--default-clickable-area'))\n\t\tconst gridBaseLine = Number.parseInt(window.getComputedStyle(document.body).getPropertyValue('--default-grid-baseline'))\n\t\tconst avatarSize = clickableArea - 2 * gridBaseLine\n\n\t\treturn {\n\t\t\tavatarSize,\n\t\t}\n\t},\n\n\tdata() {\n\t\treturn {\n\t\t\tsearch: '',\n\t\t}\n\t},\n\n\tcomputed: {\n\t\tinputRequired() {\n\t\t\tif (!this.required) {\n\t\t\t\treturn null\n\t\t\t}\n\t\t\t// The <input> itself does not have any value so we set the `required` attribute conditionally\n\t\t\treturn this.value === null || (Array.isArray(this.value) && this.value.length === 0)\n\t\t},\n\n\t\tlocalCalculatePosition() {\n\t\t\tif (this.calculatePosition !== null) {\n\t\t\t\treturn this.calculatePosition\n\t\t\t}\n\n\t\t\treturn (dropdownMenu, component, { width }) => {\n\t\t\t\tdropdownMenu.style.width = width\n\n\t\t\t\tconst addClass = {\n\t\t\t\t\tname: 'addClass',\n\t\t\t\t\tfn(_middlewareArgs) {\n\t\t\t\t\t\tdropdownMenu.classList.add('vs__dropdown-menu--floating')\n\t\t\t\t\t\treturn {}\n\t\t\t\t\t},\n\t\t\t\t}\n\n\t\t\t\tconst togglePlacementClass = {\n\t\t\t\t\tname: 'togglePlacementClass',\n\t\t\t\t\tfn({ placement }) {\n\t\t\t\t\t\tcomponent.$el.classList.toggle(\n\t\t\t\t\t\t\t'select--drop-up',\n\t\t\t\t\t\t\tplacement === 'top',\n\t\t\t\t\t\t)\n\t\t\t\t\t\tdropdownMenu.classList.toggle(\n\t\t\t\t\t\t\t'vs__dropdown-menu--floating-placement-top',\n\t\t\t\t\t\t\tplacement === 'top',\n\t\t\t\t\t\t)\n\t\t\t\t\t\treturn {}\n\t\t\t\t\t},\n\t\t\t\t}\n\n\t\t\t\tconst updatePosition = () => {\n\t\t\t\t\tcomputePosition(component.$refs.toggle, dropdownMenu, {\n\t\t\t\t\t\tplacement: this.placement,\n\t\t\t\t\t\tmiddleware: [\n\t\t\t\t\t\t\toffset(-1),\n\t\t\t\t\t\t\taddClass,\n\t\t\t\t\t\t\ttogglePlacementClass,\n\t\t\t\t\t\t\t// Match popperjs default collision prevention behavior by appending the following middleware in order\n\t\t\t\t\t\t\tflip(),\n\t\t\t\t\t\t\tshift({ limiter: limitShift() }),\n\t\t\t\t\t\t],\n\t\t\t\t\t}).then(({ x, y }) => {\n\t\t\t\t\t\tObject.assign(dropdownMenu.style, {\n\t\t\t\t\t\t\tleft: `${x}px`,\n\t\t\t\t\t\t\ttop: `${y}px`,\n\t\t\t\t\t\t\twidth: `${component.$refs.toggle.getBoundingClientRect().width}px`,\n\t\t\t\t\t\t})\n\t\t\t\t\t})\n\t\t\t\t}\n\n\t\t\t\tconst cleanup = autoUpdate(\n\t\t\t\t\tcomponent.$refs.toggle,\n\t\t\t\t\tdropdownMenu,\n\t\t\t\t\tupdatePosition,\n\t\t\t\t)\n\n\t\t\t\treturn cleanup\n\t\t\t}\n\t\t},\n\n\t\tlocalFilterBy() {\n\t\t\t// Match the email notation like \"Jane <j.doe@example.com>\" with the email address as matching group\n\t\t\tconst EMAIL_NOTATION = /[^<]*<([^>]+)/\n\n\t\t\tif (this.filterBy !== null) {\n\t\t\t\treturn this.filterBy\n\t\t\t}\n\t\t\tif (this.userSelect) {\n\t\t\t\treturn (option, label, search) => {\n\t\t\t\t\tconst match = search.match(EMAIL_NOTATION)\n\t\t\t\t\treturn (match && option.subname?.toLocaleLowerCase?.()?.indexOf(match[1].toLocaleLowerCase()) > -1)\n\t\t\t\t\t\t|| (`${label} ${option.subname}`\n\t\t\t\t\t\t\t.toLocaleLowerCase()\n\t\t\t\t\t\t\t.indexOf(search.toLocaleLowerCase()) > -1)\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn VueSelect.props.filterBy.default\n\t\t},\n\n\t\tlocalLabel() {\n\t\t\tif (this.label !== null) {\n\t\t\t\treturn this.label\n\t\t\t}\n\t\t\tif (this.userSelect) {\n\t\t\t\treturn 'displayName'\n\t\t\t}\n\t\t\treturn VueSelect.props.label.default\n\t\t},\n\n\t\tpropsToForward() {\n\t\t\tconst vueSelectKeys = [\n\t\t\t\t...Object.keys(VueSelect.props),\n\t\t\t\t...VueSelect.mixins.flatMap(mixin => Object.keys(mixin.props ?? {})),\n\t\t\t]\n\t\t\tconst initialPropsToForward = Object.fromEntries(\n\t\t\t\tObject.entries(this.$props)\n\t\t\t\t\t.filter(([key, _value]) => vueSelectKeys.includes(key)),\n\t\t\t)\n\t\t\tconst propsToForward = {\n\t\t\t\t...initialPropsToForward,\n\t\t\t\t// Custom overrides of vue-select props\n\t\t\t\tcalculatePosition: this.localCalculatePosition,\n\t\t\t\tfilterBy: this.localFilterBy,\n\t\t\t\tlabel: this.localLabel,\n\t\t\t}\n\t\t\treturn propsToForward\n\t\t},\n\t},\n\n\tmounted() {\n\t\tif (!this.labelOutside && !this.inputLabel && !this.ariaLabelCombobox) {\n\t\t\tVue.util.warn('[NcSelect] An `inputLabel` or `ariaLabelCombobox` should be set. If an external label is used, `labelOutside` should be set to `true`.')\n\t\t}\n\t\tif (this.inputLabel && this.ariaLabelCombobox) {\n\t\t\tVue.util.warn('[NcSelect] Only one of `inputLabel` or `ariaLabelCombobox` should to be set.')\n\t\t}\n\t},\n\n\tmethods: {\n\t\tt,\n\t},\n}\n</script>\n\n<style lang=\"scss\">\nbody {\n\t/**\n\t * Set custom vue-select CSS variables.\n\t * Needs to be on the body (not :root) for theming to apply (see nextcloud/server#36462)\n\t */\n\n\t/* Search Input */\n\t--vs-search-input-color: var(--color-main-text);\n\t--vs-search-input-bg: var(--color-main-background);\n\t--vs-search-input-placeholder-color: var(--color-text-maxcontrast);\n\n\t/* Font */\n\t--vs-font-size: var(--default-font-size);\n\t--vs-line-height: var(--default-line-height);\n\n\t/* Disabled State */\n\t--vs-state-disabled-bg: var(--color-background-hover);\n\t--vs-state-disabled-color: var(--color-text-maxcontrast);\n\t--vs-state-disabled-controls-color: var(--color-text-maxcontrast);\n\t--vs-state-disabled-cursor: not-allowed;\n\t--vs-disabled-bg: var(--color-background-hover);\n\t--vs-disabled-color: var(--color-text-maxcontrast);\n\t--vs-disabled-cursor: not-allowed;\n\n\t/* Borders */\n\t--vs-border-color: var(--color-border-maxcontrast);\n\t--vs-border-width: var(--border-width-input, 2px) !important;\n\t--vs-border-style: solid;\n\t--vs-border-radius: var(--border-radius-large);\n\n\t/* Component Controls: Clear, Open Indicator */\n\t--vs-controls-color: var(--color-main-text);\n\n\t/* Selected */\n\t--vs-selected-bg: var(--color-background-hover);\n\t--vs-selected-color: var(--color-main-text);\n\t--vs-selected-border-color: var(--vs-border-color);\n\t--vs-selected-border-style: var(--vs-border-style);\n\t--vs-selected-border-width: var(--vs-border-width);\n\n\t/* Dropdown */\n\t--vs-dropdown-bg: var(--color-main-background);\n\t--vs-dropdown-color: var(--color-main-text);\n\t--vs-dropdown-z-index: 9999;\n\t--vs-dropdown-box-shadow: 0px 2px 2px 0px var(--color-box-shadow);\n\n\t/* Options */\n\t--vs-dropdown-option-padding: 8px 20px;\n\n\t/* Active State */\n\t--vs-dropdown-option--active-bg: var(--color-background-hover);\n\t--vs-dropdown-option--active-color: var(--color-main-text);\n\n\t/* Keyboard Focus State */\n\t--vs-dropdown-option--kb-focus-box-shadow: inset 0px 0px 0px 2px var(--vs-border-color);\n\n\t/* Deselect State */\n\t--vs-dropdown-option--deselect-bg: var(--color-error);\n\t--vs-dropdown-option--deselect-color: #fff;\n\n\t/* Transitions */\n\t--vs-transition-duration: 0ms;\n\n\t/* Actions */\n\t--vs-actions-padding: 0 8px 0 4px;\n}\n\n.v-select.select {\n\t/* Override default vue-select styles */\n\tmin-height: var(--default-clickable-area);\n\tmin-width: 260px;\n\tmargin: 0 0 var(--default-grid-baseline);\n\n\t&.vs--open {\n\t\t--vs-border-width: var(--border-width-input-focused, 2px);\n\t}\n\n\t.select__label {\n\t\tdisplay: block;\n\t\tmargin-bottom: 2px;\n\t}\n\n\t.vs__selected {\n\t\theight: calc(var(--default-clickable-area) - 2 * var(--vs-border-width) - var(--default-grid-baseline));\n\t\tmargin: calc(var(--default-grid-baseline) / 2);\n\t\tpadding-block: 0;\n\t\tpadding-inline: 12px 8px;\n\t\tborder-radius: 16px !important;\n\t\tbackground: var(--color-primary-element-light);\n\t\tborder: none;\n\t}\n\n\t&.vs--open .vs__selected:first-of-type {\n\t\tmargin-inline-start: calc(var(--default-grid-baseline) / 2 - (var(--border-width-input-focused, 2px) - var(--border-width-input, 2px))) !important; // prevent jumping\n\t}\n\n\t.vs__search {\n\t\ttext-overflow: ellipsis;\n\t\tcolor: var(--color-main-text);\n\t\tmin-height: unset !important;\n\t\theight: calc(var(--default-clickable-area) - 2 * var(--vs-border-width)) !important;\n\n\t\t&::placeholder {\n\t\t\tcolor: var(--color-text-maxcontrast);\n\t\t}\n\t}\n\n\t.vs__search, .vs__search:focus {\n\t\tmargin: 0;\n\t}\n\n\t.vs__dropdown-toggle {\n\t\tposition: relative;\n\t\tmax-height: 100px;\n\t\tpadding: 0;\n\t\toverflow-y: auto;\n\t}\n\n\t.vs__actions {\n\t\tposition: sticky;\n\t\ttop: 0;\n\t}\n\n\t.vs__clear {\n\t\tmargin-right: 2px;\n\t}\n\n\t&.vs--open .vs__dropdown-toggle {\n\t\tborder-width: var(--border-width-input-focused);\n\t\toutline: 2px solid var(--color-main-background);\n\t\tborder-color: var(--color-main-text);\n\t\tborder-bottom-color: transparent;\n\t}\n\n\t&:not(.vs--disabled, .vs--open) .vs__dropdown-toggle:hover {\n\t\toutline: 2px solid var(--color-main-background);\n\t\tborder-color: var(--color-main-text);\n\t}\n\n\t&.vs--disabled {\n\t\t.vs__search,\n\t\t.vs__selected {\n\t\t\tcolor: var(--color-text-maxcontrast);\n\t\t}\n\n\t\t.vs__clear,\n\t\t.vs__deselect {\n\t\t\tdisplay: none;\n\t\t}\n\t}\n\n\t&--no-wrap {\n\t\t.vs__selected-options {\n\t\t\tflex-wrap: nowrap;\n\t\t\toverflow: auto;\n\t\t\tmin-width: unset;\n\t\t\t.vs__selected {\n\t\t\t\tmin-width: unset;\n\t\t\t}\n\t\t}\n\t}\n\n\t&--drop-up {\n\t\t&.vs--open {\n\t\t\t.vs__dropdown-toggle {\n\t\t\t\tborder-radius: 0 0 var(--vs-border-radius) var(--vs-border-radius);\n\t\t\t\tborder-top-color: transparent;\n\t\t\t\tborder-bottom-color: var(--color-main-text);\n\t\t\t}\n\t\t}\n\t}\n\n\t.vs__selected-options {\n\t\t// If search is hidden, ensure that the height of the search is the same\n\t\tmin-height: calc(var(--default-clickable-area) - 2 * var(--vs-border-width));\n\n\t\t// Hide search from dom if unused to prevent unneeded flex wrap\n\t\t.vs__selected ~ .vs__search[readonly] {\n\t\t\tposition: absolute;\n\t\t}\n\t\tpadding: 0 5px;\n\t}\n\n\t&.vs--single {\n\t\t&.vs--loading,\n\t\t&.vs--open {\n\t\t\t.vs__selected {\n\t\t\t\t// Fix `max-width` for `position: absolute`\n\t\t\t\tmax-width: 100%;\n\t\t\t\t// Fix color to be accessible\n\t\t\t\topacity: 1;\n\t\t\t\tcolor: var(--color-text-maxcontrast);\n\t\t\t}\n\t\t}\n\t\t.vs__selected-options {\n\t\t\tflex-wrap: nowrap;\n\t\t}\n\t\t.vs__selected {\n\t\t\tbackground: unset !important;\n\t\t}\n\t}\n}\n\n.vs__dropdown-menu {\n\tborder-width: var(--border-width-input-focused) !important;\n\tborder-color: var(--color-main-text) !important;\n\toutline: none !important;\n\tbox-shadow:\n\t\t-2px 0 0 var(--color-main-background), // Right\n\t\t0 2px 0 var(--color-main-background), // Bottom\n\t\t2px 0 0 var(--color-main-background), // Left\n\t\t!important;\n\tpadding: 4px !important;\n\n\t&--floating {\n\t\t/* Fallback styles overidden by programmatically set inline styles */\n\t\twidth: max-content;\n\t\tposition: absolute;\n\t\ttop: 0;\n\t\tleft: 0;\n\n\t\t&-placement-top {\n\t\t\tborder-radius: var(--vs-border-radius) var(--vs-border-radius) 0 0 !important;\n\t\t\tborder-top-style: var(--vs-border-style) !important;\n\t\t\tborder-bottom-style: none !important;\n\t\t\tbox-shadow:\n\t\t\t\t0 -2px 0 var(--color-main-background), // Top\n\t\t\t\t-2px 0 0 var(--color-main-background), // Right\n\t\t\t\t2px 0 0 var(--color-main-background), // Left\n\t\t\t\t!important\n\t\t}\n\t}\n\n\t.vs__dropdown-option {\n\t\tborder-radius: 6px !important;\n\t}\n\n\t.vs__no-options {\n\t\tcolor: var(--color-text-lighter) !important;\n\t}\n}\n\n// Selected users require slightly different padding\n.user-select .vs__selected {\n\tpadding-inline: 0 5px !important;\n}\n</style>\n"],"names":["ChevronDown","NcEllipsisedOption","NcListItemIcon","NcLoadingIcon","VueSelect","t","Close","GenRandomId","computePosition","offset","flip","shift","limitShift","autoUpdate","Vue"],"mappings":"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"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"NcSelect-D4om25m8.mjs","sources":["../../src/components/NcSelect/NcSelect.vue"],"sourcesContent":["<!--\n - SPDX-FileCopyrightText: 2022 Nextcloud GmbH and Nextcloud contributors\n - SPDX-License-Identifier: AGPL-3.0-or-later\n-->\n\n<docs>\n### Description\n\nGeneral purpose multiselect component.\n\n### Basic examples\n\n```vue\n<template>\n\t<div class=\"grid\">\n\t\t<div v-for=\"{ props } in selectArray\"\n\t\t\tclass=\"container\">\n\t\t\t<NcSelect v-bind=\"props\"\n\t\t\t\tv-model=\"props.value\" />\n\t\t</div>\n\t</div>\n</template>\n\n<script>\nconst selectArray = [\n\t{\n\t\tprops: {\n\t\t\tinputLabel: 'Simple',\n\t\t\toptions: [\n\t\t\t\t'foo',\n\t\t\t\t'bar',\n\t\t\t\t'baz',\n\t\t\t\t'qux',\n\t\t\t\t'quux',\n\t\t\t],\n\t\t},\n\t},\n\n\t{\n\t\tprops: {\n\t\t\tinputLabel: 'Simple (top placement)',\n\t\t\tplacement: 'top',\n\t\t\toptions: [\n\t\t\t\t'foo',\n\t\t\t\t'bar',\n\t\t\t\t'baz',\n\t\t\t\t'qux',\n\t\t\t\t'quux',\n\t\t\t],\n\t\t},\n\t},\n\n\t{\n\t\tprops: {\n\t\t\tinputLabel: 'Multiple (with placeholder)',\n\t\t\tmultiple: true,\n\t\t\tplaceholder: 'Select multiple options',\n\t\t\toptions: [\n\t\t\t\t'foo',\n\t\t\t\t'bar',\n\t\t\t\t'baz',\n\t\t\t\t'qux',\n\t\t\t\t'quux',\n\t\t\t],\n\t\t},\n\t},\n\n\t{\n\t\tprops: {\n\t\t\tinputLabel: 'Multiple (objects, pre-selected, stay open on select)',\n\t\t\tmultiple: true,\n\t\t\tcloseOnSelect: false,\n\t\t\toptions: [\n\t\t\t\t{\n\t\t\t\t\tid: 'foo',\n\t\t\t\t\tlabel: 'Foo',\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tid: 'bar',\n\t\t\t\t\tlabel: 'Bar',\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tid: 'baz',\n\t\t\t\t\tlabel: 'Baz',\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tid: 'qux',\n\t\t\t\t\tlabel: 'Qux',\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tid: 'quux',\n\t\t\t\t\tlabel: 'Quux',\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tid: 'corge',\n\t\t\t\t\tlabel: 'Corge',\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tid: 'grault',\n\t\t\t\t\tlabel: 'Grault',\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tid: 'garply',\n\t\t\t\t\tlabel: 'Garply',\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tid: 'waldo',\n\t\t\t\t\tlabel: 'Waldo',\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tid: 'fred',\n\t\t\t\t\tlabel: 'Fred',\n\t\t\t\t},\n\t\t\t],\n\t\t\tvalue: [\n\t\t\t\t{\n\t\t\t\t\tid: 'foo',\n\t\t\t\t\tlabel: 'Foo',\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tid: 'bar',\n\t\t\t\t\tlabel: 'Bar',\n\t\t\t\t},\n\t\t\t],\n\t\t},\n\t},\n]\n\nexport default {\n\tdata() {\n\t\treturn {\n\t\t\tselectArray,\n\t\t}\n\t},\n}\n</script>\n\n<style>\n.grid {\n\tdisplay: grid;\n\tgrid-template-columns: repeat(2, 1fr);\n\tgap: 10px;\n}\n\n.container {\n\tdisplay: flex;\n\tflex-direction: column;\n\tgap: 2px 0;\n}\n</style>\n```\n\n### Native form validation example\n\n```vue\n<template>\n\t<div class=\"container\">\n\t\t<form class=\"container__form\" @submit.prevent>\n\t\t\t<NcSelect class=\"container__select\"\n\t\t\t\tinput-label=\"Require a selection\"\n\t\t\t\t:options=\"options\"\n\t\t\t\tv-model=\"singleValue\"\n\t\t\t\trequired />\n\t\t\t<NcButton native-type=\"submit\">Submit</NcButton>\n\t\t</form>\n\n\t\t<form class=\"container__form\" @submit.prevent>\n\t\t\t<NcSelect class=\"container__select\"\n\t\t\t\tinput-label=\"Require at least one selection\"\n\t\t\t\t:options=\"options\"\n\t\t\t\tv-model=\"multiValue\"\n\t\t\t\tmultiple\n\t\t\t\trequired />\n\t\t\t<NcButton native-type=\"submit\">Submit</NcButton>\n\t\t</form>\n\t</div>\n</template>\n\n<script>\nexport default {\n\tdata() {\n\t\treturn {\n\t\t\toptions: ['foo', 'bar', 'baz', 'qux', 'quux'],\n\t\t\tsingleValue: null,\n\t\t\tmultiValue: [],\n\t\t}\n\t},\n}\n</script>\n\n<style>\n.container {\n\tdisplay: flex;\n\tgap: 0 12px;\n}\n\n.container__form {\n\tdisplay: flex;\n\tflex-direction: column;\n\talign-items: flex-end;\n\twidth: 100%;\n\tgap: 8px 0;\n}\n\n.container__select {\n\twidth: 100%;\n}\n</style>\n```\n\n### No wrap example\n\nThe `noWrap` prop is set to `true` and the `max-width` of the multiselect\nparent container is limited to `350px`\n\n```vue\n<template>\n\t<div class=\"grid\">\n\t\t<div class=\"container\">\n\t\t\t<NcSelect :no-wrap=\"false\"\n\t\t\t\tv-bind=\"data1.props\"\n\t\t\t\tv-model=\"data1.props.value\" />\n\t\t</div>\n\t\t<div class=\"container\">\n\t\t\t<NcSelect :no-wrap=\"true\"\n\t\t\t\tv-bind=\"data2.props\"\n\t\t\t\tv-model=\"data2.props.value\" />\n\t\t</div>\n\t</div>\n</template>\n\n<script>\nconst data1 = {\n\tprops: {\n\t\tinputLabel: 'Wrapped (Default)',\n\t\tmultiple: true,\n\t\tcloseOnSelect: false,\n\t\toptions: [\n\t\t\t'foo',\n\t\t\t'bar',\n\t\t\t'baz',\n\t\t\t'qux',\n\t\t\t'quux',\n\t\t\t'corge',\n\t\t\t'grault',\n\t\t\t'garply',\n\t\t\t'waldo',\n\t\t\t'fred',\n\t\t],\n\t\tvalue: [\n\t\t\t'foo',\n\t\t\t'bar',\n\t\t\t'baz',\n\t\t\t'qux',\n\t\t\t'quux',\n\t\t\t'corge',\n\t\t\t'grault',\n\t\t\t'garply',\n\t\t\t'waldo',\n\t\t\t'fred',\n\t\t],\n\t},\n}\n\nconst data2 = {\n\tprops: {\n\t\tinputLabel: 'Not wrapped',\n\t\tmultiple: true,\n\t\tcloseOnSelect: false,\n\t\toptions: [\n\t\t\t'foo',\n\t\t\t'bar',\n\t\t\t'baz',\n\t\t\t'qux',\n\t\t\t'quux',\n\t\t\t'corge',\n\t\t\t'grault',\n\t\t\t'garply',\n\t\t\t'waldo',\n\t\t\t'fred',\n\t\t],\n\t\tvalue: [\n\t\t\t'foo',\n\t\t\t'bar',\n\t\t\t'baz',\n\t\t\t'qux',\n\t\t\t'quux',\n\t\t\t'corge',\n\t\t\t'grault',\n\t\t\t'garply',\n\t\t\t'waldo',\n\t\t\t'fred',\n\t\t],\n\t},\n}\n\nexport default {\n\tdata() {\n\t\treturn {\n\t\t\tdata1,\n\t\t\tdata2,\n\t\t}\n\t},\n}\n</script>\n\n<style>\n.grid {\n\tdisplay: grid;\n\tgrid-template-columns: repeat(1, 1fr);\n\tgap: 10px;\n}\n\n.container {\n\tmax-width: 350px;\n\tdisplay: flex;\n\tflex-direction: column;\n\tgap: 2px 0;\n}\n</style>\n```\n\n### User select examples\n\n```vue\n<template>\n\t<div class=\"grid\">\n\t\t<div v-for=\"{ props } in selectArray\"\n\t\t\tclass=\"container\">\n\t\t\t<NcSelect v-bind=\"props\"\n\t\t\t\tv-model=\"props.value\" />\n\t\t</div>\n\t</div>\n</template>\n\n<script>\nimport AccountGroup from '@mdi/svg/svg/account-group.svg?raw'\nimport Email from '@mdi/svg/svg/email.svg?raw'\n\nconst selectArray = [\n\t{\n\t\tprops: {\n\t\t\tinputLabel: 'User select',\n\t\t\tuserSelect: true,\n\t\t\toptions: [\n\t\t\t\t{\n\t\t\t\t\tid: '0-john',\n\t\t\t\t\tdisplayName: 'John',\n\t\t\t\t\tisNoUser: false,\n\t\t\t\t\tsubname: 'john@example.org',\n\t\t\t\t\ticon: '',\n\t\t\t\t\t// Example of how to show the user status within the option\n\t\t\t\t\tuser: '0-john',\n\t\t\t\t\tpreloadedUserStatus: {\n\t\t\t\t\t\ticon: '',\n\t\t\t\t\t\tstatus: 'online',\n\t\t\t\t\t\tmessage: 'I am online',\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tid: '0-emma',\n\t\t\t\t\tdisplayName: 'Emma',\n\t\t\t\t\tisNoUser: false,\n\t\t\t\t\tsubname: 'emma@example.org',\n\t\t\t\t\ticon: '',\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tid: '0-olivia',\n\t\t\t\t\tdisplayName: 'Olivia',\n\t\t\t\t\tisNoUser: false,\n\t\t\t\t\tsubname: 'olivia@example.org',\n\t\t\t\t\ticon: '',\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tid: '0-noah',\n\t\t\t\t\tdisplayName: 'Noah',\n\t\t\t\t\tisNoUser: false,\n\t\t\t\t\tsubname: 'noah@example.org',\n\t\t\t\t\ticon: '',\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tid: '0-oliver',\n\t\t\t\t\tdisplayName: 'Oliver',\n\t\t\t\t\tisNoUser: false,\n\t\t\t\t\tsubname: 'oliver@example.org',\n\t\t\t\t\ticon: '',\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tid: '1-admin',\n\t\t\t\t\tdisplayName: 'Admin',\n\t\t\t\t\tisNoUser: true,\n\t\t\t\t\tsubname: null,\n\t\t\t\t\ticonSvg: AccountGroup,\n\t\t\t\t\ticonName: 'Group icon',\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tid: '2-org@example.org',\n\t\t\t\t\tdisplayName: 'Organization',\n\t\t\t\t\tisNoUser: true,\n\t\t\t\t\tsubname: 'org@example.org',\n\t\t\t\t\ticonSvg: Email,\n\t\t\t\t\ticonName: 'Email icon',\n\t\t\t\t},\n\t\t\t],\n\t\t},\n\t},\n\n\t{\n\t\tprops: {\n\t\t\tinputLabel: 'Multiple user select (stay open on select)',\n\t\t\tuserSelect: true,\n\t\t\tmultiple: true,\n\t\t\tcloseOnSelect: false,\n\t\t\toptions: [\n\t\t\t\t{\n\t\t\t\t\tid: '0-john',\n\t\t\t\t\tdisplayName: 'John',\n\t\t\t\t\tisNoUser: false,\n\t\t\t\t\tsubname: 'john@example.org',\n\t\t\t\t\ticon: '',\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tid: '0-emma',\n\t\t\t\t\tdisplayName: 'Emma',\n\t\t\t\t\tisNoUser: false,\n\t\t\t\t\tsubname: 'emma@example.org',\n\t\t\t\t\ticon: '',\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tid: '0-olivia',\n\t\t\t\t\tdisplayName: 'Olivia',\n\t\t\t\t\tisNoUser: false,\n\t\t\t\t\tsubname: 'olivia@example.org',\n\t\t\t\t\ticon: '',\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tid: '0-noah',\n\t\t\t\t\tdisplayName: 'Noah',\n\t\t\t\t\tisNoUser: false,\n\t\t\t\t\tsubname: 'noah@example.org',\n\t\t\t\t\ticon: '',\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tid: '0-oliver',\n\t\t\t\t\tdisplayName: 'Oliver',\n\t\t\t\t\tisNoUser: false,\n\t\t\t\t\tsubname: 'oliver@example.org',\n\t\t\t\t\ticon: '',\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tid: '1-admin',\n\t\t\t\t\tdisplayName: 'Admin',\n\t\t\t\t\tisNoUser: true,\n\t\t\t\t\tsubname: null,\n\t\t\t\t\ticonSvg: AccountGroup,\n\t\t\t\t\ticonName: 'Group icon',\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tid: '2-org@example.org',\n\t\t\t\t\tdisplayName: 'Organization',\n\t\t\t\t\tisNoUser: true,\n\t\t\t\t\tsubname: 'org@example.org',\n\t\t\t\t\ticonSvg: Email,\n\t\t\t\t\ticonName: 'Email icon',\n\t\t\t\t},\n\t\t\t],\n\t\t},\n\t},\n]\n\nexport default {\n\tdata() {\n\t\treturn {\n\t\t\tselectArray,\n\t\t}\n\t},\n}\n</script>\n\n<style>\n.grid {\n\tdisplay: grid;\n\tgrid-template-columns: repeat(1, 500px);\n\tgap: 10px;\n}\n\n.container {\n\tdisplay: flex;\n\tflex-direction: column;\n\tgap: 2px 0;\n}\n</style>\n```\n</docs>\n\n<template>\n\t<VueSelect class=\"select\"\n\t\t:class=\"{\n\t\t\t'select--no-wrap': noWrap,\n\t\t\t'user-select': userSelect,\n\t\t}\"\n\t\tv-bind=\"propsToForward\"\n\t\tv-on=\"$listeners\"\n\t\t@search=\"searchString => search = searchString\">\n\t\t<template v-if=\"!labelOutside && inputLabel\" #header>\n\t\t\t<label :for=\"inputId\"\n\t\t\t\tclass=\"select__label\">\n\t\t\t\t{{ inputLabel }}\n\t\t\t</label>\n\t\t</template>\n\t\t<template #search=\"{ attributes, events }\">\n\t\t\t<input :class=\"['vs__search', inputClass]\"\n\t\t\t\tv-bind=\"attributes\"\n\t\t\t\t:required=\"inputRequired\"\n\t\t\t\tv-on=\"events\">\n\t\t</template>\n\t\t<template #open-indicator=\"{ attributes }\">\n\t\t\t<ChevronDown v-bind=\"attributes\"\n\t\t\t\tfill-color=\"var(--vs-controls-color)\"\n\t\t\t\t:style=\"{\n\t\t\t\t\tcursor: !disabled ? 'pointer' : null,\n\t\t\t\t}\"\n\t\t\t\t:size=\"26\" />\n\t\t\t\t<!-- Set size to 26 to make up for the increased padding of this icon -->\n\t\t</template>\n\t\t<template #option=\"option\">\n\t\t\t<NcListItemIcon v-if=\"userSelect\"\n\t\t\t\tv-bind=\"option\"\n\t\t\t\t:avatar-size=\"32\"\n\t\t\t\t:name=\"option[localLabel]\"\n\t\t\t\t:search=\"search\" />\n\t\t\t<NcEllipsisedOption v-else\n\t\t\t\t:name=\"String(option[localLabel])\"\n\t\t\t\t:search=\"search\" />\n\t\t</template>\n\t\t<template #selected-option=\"selectedOption\">\n\t\t\t<NcListItemIcon v-if=\"userSelect\"\n\t\t\t\tv-bind=\"selectedOption\"\n\t\t\t\t:avatar-size=\"avatarSize\"\n\t\t\t\t:name=\"selectedOption[localLabel]\"\n\t\t\t\tno-margin\n\t\t\t\t:search=\"search\" />\n\t\t\t<NcEllipsisedOption v-else\n\t\t\t\t:name=\"String(selectedOption[localLabel])\"\n\t\t\t\t:search=\"search\" />\n\t\t</template>\n\t\t<template #spinner=\"spinner\">\n\t\t\t<NcLoadingIcon v-if=\"spinner.loading\" />\n\t\t</template>\n\t\t<template #no-options>\n\t\t\t{{ t('No results') }}\n\t\t</template>\n\t\t<template v-for=\"(_, name) in $scopedSlots\" #[name]=\"data\">\n\t\t\t<!-- @slot Any combination of slots from https://vue-select.org/api/slots.html -->\n\t\t\t<slot :name=\"name\" v-bind=\"data\" />\n\t\t</template>\n\t</VueSelect>\n</template>\n\n<script>\nimport { VueSelect } from '@nextcloud/vue-select'\nimport {\n\tautoUpdate,\n\tcomputePosition,\n\tflip,\n\tlimitShift,\n\toffset,\n\tshift,\n} from '@floating-ui/dom'\nimport Vue from 'vue'\nimport { t } from '../../l10n.js'\n\nimport ChevronDown from 'vue-material-design-icons/ChevronDown.vue'\nimport Close from 'vue-material-design-icons/Close.vue'\n\nimport NcEllipsisedOption from '../NcEllipsisedOption/index.js'\nimport NcListItemIcon from '../NcListItemIcon/index.js'\nimport NcLoadingIcon from '../NcLoadingIcon/index.js'\n\nimport GenRandomId from '../../utils/GenRandomId.js'\n\nimport '@nextcloud/vue-select/dist/vue-select.css'\n\nexport default {\n\tname: 'NcSelect',\n\n\tcomponents: {\n\t\tChevronDown,\n\t\tNcEllipsisedOption,\n\t\tNcListItemIcon,\n\t\tNcLoadingIcon,\n\t\tVueSelect,\n\t},\n\n\tprops: {\n\t\t// Add VueSelect props to $props\n\t\t...VueSelect.props,\n\t\t...VueSelect.mixins.reduce((allProps, mixin) => ({ ...allProps, ...mixin.props }), {}),\n\n\t\t/**\n\t\t * `aria-label` for the clear input button\n\t\t */\n\t\tariaLabelClearSelected: {\n\t\t\ttype: String,\n\t\t\tdefault: t('Clear selected'),\n\t\t},\n\n\t\t/**\n\t\t * `aria-label` for the search input\n\t\t *\n\t\t * A descriptive `inputLabel` is preferred as this is not visible.\n\t\t */\n\t\tariaLabelCombobox: {\n\t\t\ttype: String,\n\t\t\tdefault: null,\n\t\t},\n\n\t\t/**\n\t\t * `aria-label` for the listbox element\n\t\t */\n\t\tariaLabelListbox: {\n\t\t\ttype: String,\n\t\t\tdefault: t('Options'),\n\t\t},\n\n\t\t/**\n\t\t * Allows to customize the `aria-label` for the deselect-option button\n\t\t * The default is \"Deselect \" + optionLabel\n\t\t * @type {(optionLabel: string) => string}\n\t\t */\n\t\tariaLabelDeselectOption: {\n\t\t\ttype: Function,\n\t\t\tdefault: (optionLabel) => t('Deselect {option}', { option: optionLabel }),\n\t\t},\n\n\t\t/**\n\t\t * Append the dropdown element to the end of the body\n\t\t * and size/position it dynamically.\n\t\t *\n\t\t * @see https://vue-select.org/api/props.html#appendtobody\n\t\t */\n\t\tappendToBody: {\n\t\t\ttype: Boolean,\n\t\t\tdefault: true,\n\t\t},\n\n\t\t/**\n\t\t * When `appendToBody` is true, this function is responsible for\n\t\t * positioning the drop down list.\n\t\t *\n\t\t * If a function is returned from `calculatePosition`, it will\n\t\t * be called when the drop down list is removed from the DOM.\n\t\t * This allows for any garbage collection you may need to do.\n\t\t *\n\t\t * @see https://vue-select.org/api/props.html#calculateposition\n\t\t */\n\t\tcalculatePosition: {\n\t\t\ttype: Function,\n\t\t\tdefault: null,\n\t\t},\n\n\t\t/**\n\t\t * Close the dropdown when selecting an option\n\t\t *\n\t\t * @see https://vue-select.org/api/props.html#closeonselect\n\t\t */\n\t\tcloseOnSelect: {\n\t\t\ttype: Boolean,\n\t\t\tdefault: true,\n\t\t},\n\n\t\t/**\n\t\t * Replace default vue-select components\n\t\t *\n\t\t * @see https://vue-select.org/api/props.html#components\n\t\t */\n\t\tcomponents: {\n\t\t\ttype: Object,\n\t\t\tdefault: () => ({\n\t\t\t\tDeselect: {\n\t\t\t\t\trender: createElement => createElement(Close, {\n\t\t\t\t\t\tprops: {\n\t\t\t\t\t\t\tsize: 20,\n\t\t\t\t\t\t\tfillColor: 'var(--vs-controls-color)',\n\t\t\t\t\t\t},\n\t\t\t\t\t\tstyle: {\n\t\t\t\t\t\t\tcursor: 'pointer',\n\t\t\t\t\t\t},\n\t\t\t\t\t}),\n\t\t\t\t},\n\t\t\t}),\n\t\t},\n\n\t\t/**\n\t\t * Sets the maximum number of options to display in the dropdown list\n\t\t */\n\t\tlimit: {\n\t\t\ttype: Number,\n\t\t\tdefault: null,\n\t\t},\n\n\t\t/**\n\t\t * Disable the component\n\t\t *\n\t\t * @see https://vue-select.org/api/props.html#disabled\n\t\t */\n\t\tdisabled: {\n\t\t\ttype: Boolean,\n\t\t\tdefault: false,\n\t\t},\n\n\t\t/**\n\t\t * Determines whether the dropdown should be open.\n\t\t * Receives the component instance as the only argument.\n\t\t *\n\t\t * @see https://vue-select.org/api/props.html#dropdownshouldopen\n\t\t */\n\t\tdropdownShouldOpen: {\n\t\t\ttype: Function,\n\t\t\tdefault: ({ noDrop, open }) => {\n\t\t\t\treturn noDrop ? false : open\n\t\t\t},\n\t\t},\n\n\t\t/**\n\t\t * Callback to determine if the provided option should\n\t\t * match the current search text. Used to determine\n\t\t * if the option should be displayed.\n\t\t *\n\t\t * Defaults to the internal vue-select function documented at the link\n\t\t * below\n\t\t *\n\t\t * Enabling `userSelect` will automatically set this to filter by the\n\t\t * `displayName` and `subname` properties of the user option object\n\t\t * unless this prop is set explicitly\n\t\t *\n\t\t * @see https://vue-select.org/api/props.html#filterby\n\t\t */\n\t\tfilterBy: {\n\t\t\ttype: Function,\n\t\t\tdefault: null,\n\t\t},\n\n\t\t/**\n\t\t * Class for the `input`\n\t\t *\n\t\t * Necessary for use in NcActionInput\n\t\t */\n\t\tinputClass: {\n\t\t\ttype: [String, Object],\n\t\t\tdefault: null,\n\t\t},\n\n\t\t/**\n\t\t * Input element id\n\t\t */\n\t\tinputId: {\n\t\t\ttype: String,\n\t\t\tdefault: () => `select-input-${GenRandomId()}`,\n\t\t},\n\n\t\t/**\n\t\t * Visible label for the input element\n\t\t *\n\t\t * @todo Set default for @nextcloud/vue 9\n\t\t */\n\t\tinputLabel: {\n\t\t\ttype: String,\n\t\t\tdefault: null,\n\t\t},\n\n\t\t/**\n\t\t * Pass true if you are using an external label\n\t\t */\n\t\tlabelOutside: {\n\t\t\ttype: Boolean,\n\t\t\tdefault: false,\n\t\t},\n\n\t\t/**\n\t\t * Display a visible border around dropdown options\n\t\t * which have keyboard focus\n\t\t */\n\t\tkeyboardFocusBorder: {\n\t\t\ttype: Boolean,\n\t\t\tdefault: true,\n\t\t},\n\n\t\t/**\n\t\t * Key of the displayed label for object options\n\t\t *\n\t\t * Defaults to the internal vue-select string documented at the link\n\t\t * below\n\t\t *\n\t\t * Enabling `userSelect` will automatically set this to `'displayName'`\n\t\t * unless this prop is set explicitly\n\t\t *\n\t\t * @see https://vue-select.org/api/props.html#label\n\t\t */\n\t\tlabel: {\n\t\t\ttype: String,\n\t\t\tdefault: null,\n\t\t},\n\n\t\t/**\n\t\t * Show the loading icon\n\t\t *\n\t\t * @see https://vue-select.org/api/props.html#loading\n\t\t */\n\t\tloading: {\n\t\t\ttype: Boolean,\n\t\t\tdefault: false,\n\t\t},\n\n\t\t/**\n\t\t * Allow selection of multiple options\n\t\t *\n\t\t * @see https://vue-select.org/api/props.html#multiple\n\t\t */\n\t\tmultiple: {\n\t\t\ttype: Boolean,\n\t\t\tdefault: false,\n\t\t},\n\n\t\t/**\n\t\t * Disable automatic wrapping when selected options overflow the width\n\t\t */\n\t\tnoWrap: {\n\t\t\ttype: Boolean,\n\t\t\tdefault: false,\n\t\t},\n\n\t\t/**\n\t\t * Array of options\n\t\t *\n\t\t * @type {Array<string | number | Record<string | number, any>>}\n\t\t *\n\t\t * @see https://vue-select.org/api/props.html#options\n\t\t */\n\t\toptions: {\n\t\t\ttype: Array,\n\t\t\tdefault: () => [],\n\t\t},\n\n\t\t/**\n\t\t * Placeholder text\n\t\t *\n\t\t * @see https://vue-select.org/api/props.html#placeholder\n\t\t */\n\t\tplaceholder: {\n\t\t\ttype: String,\n\t\t\tdefault: '',\n\t\t},\n\n\t\t/**\n\t\t * Customized component's response to keydown events while the search input has focus\n\t\t *\n\t\t * @see https://vue-select.org/guide/keydown.html#mapkeydown\n\t\t */\n\t\tmapKeydown: {\n\t\t\ttype: Function,\n\t\t\t/**\n\t\t\t * Patched Vue-Select keydown events handlers map to stop Escape propagation in open select\n\t\t\t *\n\t\t\t * @param {Record<number, Function>} map - Mapped keyCode to handlers { <keyCode>:<callback> }\n\t\t\t * @param {import('@nextcloud/vue-select').VueSelect} vm - VueSelect instance\n\t\t\t * @return {Record<number, Function>} patched keydown event handlers\n\t\t\t */\n\t\t\tdefault(map, vm) {\n\t\t\t\treturn {\n\t\t\t\t\t...map,\n\t\t\t\t\t/**\n\t\t\t\t\t * Patched Escape handler to stop propagation from open select\n\t\t\t\t\t *\n\t\t\t\t\t * @param {KeyboardEvent} event - default keydown event handler\n\t\t\t\t\t */\n\t\t\t\t\t27: (event) => {\n\t\t\t\t\t\tif (vm.open) {\n\t\t\t\t\t\t\tevent.stopPropagation()\n\t\t\t\t\t\t}\n\t\t\t\t\t\t// Default VueSelect's handler\n\t\t\t\t\t\tmap[27](event)\n\t\t\t\t\t},\n\t\t\t\t}\n\t\t\t},\n\t\t},\n\n\t\t/**\n\t\t * A unique identifier used to generate IDs and DOM attributes. Must be unique for every instance of the component.\n\t\t *\n\t\t * @see https://vue-select.org/api/props.html#uid\n\t\t */\n\t\tuid: {\n\t\t\ttype: String,\n\t\t\tdefault: () => GenRandomId(),\n\t\t},\n\n\t\t/**\n\t\t * When `appendToBody` is true, this sets the placement of the dropdown\n\t\t *\n\t\t * @type {'bottom' | 'top'}\n\t\t */\n\t\tplacement: {\n\t\t\ttype: String,\n\t\t\tdefault: 'bottom',\n\t\t},\n\n\t\t/**\n\t\t * If false, the focused dropdown option will not be reset when filtered\n\t\t * options change\n\t\t */\n\t\tresetFocusOnOptionsChange: {\n\t\t\ttype: Boolean,\n\t\t\tdefault: true,\n\t\t},\n\n\t\t/**\n\t\t * Enable the user selector with avatars\n\t\t *\n\t\t * Objects must contain the data expected by the\n\t\t * [NcListItemIcon](#/Components/NcListItemIcon) and\n\t\t * [NcAvatar](#/Components/NcAvatar) components\n\t\t */\n\t\tuserSelect: {\n\t\t\ttype: Boolean,\n\t\t\tdefault: false,\n\t\t},\n\n\t\t/**\n\t\t * Currently selected value\n\t\t *\n\t\t * The `v-model` directive may be used for two-way data binding\n\t\t *\n\t\t * @type {string | number | Record<string | number, any> | Array<any>}\n\t\t *\n\t\t * @see https://vue-select.org/api/props.html#value\n\t\t */\n\t\tvalue: {\n\t\t\ttype: [String, Number, Object, Array],\n\t\t\tdefault: null,\n\t\t},\n\n\t\t/**\n\t\t * Enable if a value is required for native form validation\n\t\t */\n\t\trequired: {\n\t\t\ttype: Boolean,\n\t\t\tdefault: false,\n\t\t},\n\n\t\t/**\n\t\t * Any available prop\n\t\t *\n\t\t * @see https://vue-select.org/api/props.html\n\t\t */\n\t\t// Not an actual prop but needed to show in vue-styleguidist docs\n\t\t// eslint-disable-next-line\n\t\t' ': {},\n\t},\n\n\temits: [\n\t\t/**\n\t\t * All events from https://vue-select.org/api/events.html\n\t\t */\n\t\t// Not an actual event but needed to show in vue-styleguidist docs\n\t\t' ',\n\t],\n\n\tsetup() {\n\t\tconst clickableArea = Number.parseInt(window.getComputedStyle(document.body).getPropertyValue('--default-clickable-area'))\n\t\tconst gridBaseLine = Number.parseInt(window.getComputedStyle(document.body).getPropertyValue('--default-grid-baseline'))\n\t\tconst avatarSize = clickableArea - 2 * gridBaseLine\n\n\t\treturn {\n\t\t\tavatarSize,\n\t\t}\n\t},\n\n\tdata() {\n\t\treturn {\n\t\t\tsearch: '',\n\t\t}\n\t},\n\n\tcomputed: {\n\t\tinputRequired() {\n\t\t\tif (!this.required) {\n\t\t\t\treturn null\n\t\t\t}\n\t\t\t// The <input> itself does not have any value so we set the `required` attribute conditionally\n\t\t\treturn this.value === null || (Array.isArray(this.value) && this.value.length === 0)\n\t\t},\n\n\t\tlocalCalculatePosition() {\n\t\t\tif (this.calculatePosition !== null) {\n\t\t\t\treturn this.calculatePosition\n\t\t\t}\n\n\t\t\treturn (dropdownMenu, component, { width }) => {\n\t\t\t\tdropdownMenu.style.width = width\n\n\t\t\t\tconst addClass = {\n\t\t\t\t\tname: 'addClass',\n\t\t\t\t\tfn(_middlewareArgs) {\n\t\t\t\t\t\tdropdownMenu.classList.add('vs__dropdown-menu--floating')\n\t\t\t\t\t\treturn {}\n\t\t\t\t\t},\n\t\t\t\t}\n\n\t\t\t\tconst togglePlacementClass = {\n\t\t\t\t\tname: 'togglePlacementClass',\n\t\t\t\t\tfn({ placement }) {\n\t\t\t\t\t\tcomponent.$el.classList.toggle(\n\t\t\t\t\t\t\t'select--drop-up',\n\t\t\t\t\t\t\tplacement === 'top',\n\t\t\t\t\t\t)\n\t\t\t\t\t\tdropdownMenu.classList.toggle(\n\t\t\t\t\t\t\t'vs__dropdown-menu--floating-placement-top',\n\t\t\t\t\t\t\tplacement === 'top',\n\t\t\t\t\t\t)\n\t\t\t\t\t\treturn {}\n\t\t\t\t\t},\n\t\t\t\t}\n\n\t\t\t\tconst updatePosition = () => {\n\t\t\t\t\tcomputePosition(component.$refs.toggle, dropdownMenu, {\n\t\t\t\t\t\tplacement: this.placement,\n\t\t\t\t\t\tmiddleware: [\n\t\t\t\t\t\t\toffset(-1),\n\t\t\t\t\t\t\taddClass,\n\t\t\t\t\t\t\ttogglePlacementClass,\n\t\t\t\t\t\t\t// Match popperjs default collision prevention behavior by appending the following middleware in order\n\t\t\t\t\t\t\tflip(),\n\t\t\t\t\t\t\tshift({ limiter: limitShift() }),\n\t\t\t\t\t\t],\n\t\t\t\t\t}).then(({ x, y }) => {\n\t\t\t\t\t\tObject.assign(dropdownMenu.style, {\n\t\t\t\t\t\t\tleft: `${x}px`,\n\t\t\t\t\t\t\ttop: `${y}px`,\n\t\t\t\t\t\t\twidth: `${component.$refs.toggle.getBoundingClientRect().width}px`,\n\t\t\t\t\t\t})\n\t\t\t\t\t})\n\t\t\t\t}\n\n\t\t\t\tconst cleanup = autoUpdate(\n\t\t\t\t\tcomponent.$refs.toggle,\n\t\t\t\t\tdropdownMenu,\n\t\t\t\t\tupdatePosition,\n\t\t\t\t)\n\n\t\t\t\treturn cleanup\n\t\t\t}\n\t\t},\n\n\t\tlocalFilterBy() {\n\t\t\t// Match the email notation like \"Jane <j.doe@example.com>\" with the email address as matching group\n\t\t\tconst EMAIL_NOTATION = /[^<]*<([^>]+)/\n\n\t\t\tif (this.filterBy !== null) {\n\t\t\t\treturn this.filterBy\n\t\t\t}\n\t\t\tif (this.userSelect) {\n\t\t\t\treturn (option, label, search) => {\n\t\t\t\t\tconst match = search.match(EMAIL_NOTATION)\n\t\t\t\t\treturn (match && option.subname?.toLocaleLowerCase?.()?.indexOf(match[1].toLocaleLowerCase()) > -1)\n\t\t\t\t\t\t|| (`${label} ${option.subname}`\n\t\t\t\t\t\t\t.toLocaleLowerCase()\n\t\t\t\t\t\t\t.indexOf(search.toLocaleLowerCase()) > -1)\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn VueSelect.props.filterBy.default\n\t\t},\n\n\t\tlocalLabel() {\n\t\t\tif (this.label !== null) {\n\t\t\t\treturn this.label\n\t\t\t}\n\t\t\tif (this.userSelect) {\n\t\t\t\treturn 'displayName'\n\t\t\t}\n\t\t\treturn VueSelect.props.label.default\n\t\t},\n\n\t\tpropsToForward() {\n\t\t\tconst vueSelectKeys = [\n\t\t\t\t...Object.keys(VueSelect.props),\n\t\t\t\t...VueSelect.mixins.flatMap(mixin => Object.keys(mixin.props ?? {})),\n\t\t\t]\n\t\t\tconst initialPropsToForward = Object.fromEntries(\n\t\t\t\tObject.entries(this.$props)\n\t\t\t\t\t.filter(([key, _value]) => vueSelectKeys.includes(key)),\n\t\t\t)\n\t\t\tconst propsToForward = {\n\t\t\t\t...initialPropsToForward,\n\t\t\t\t// Custom overrides of vue-select props\n\t\t\t\tcalculatePosition: this.localCalculatePosition,\n\t\t\t\tfilterBy: this.localFilterBy,\n\t\t\t\tlabel: this.localLabel,\n\t\t\t}\n\t\t\treturn propsToForward\n\t\t},\n\t},\n\n\tmounted() {\n\t\tif (!this.labelOutside && !this.inputLabel && !this.ariaLabelCombobox) {\n\t\t\tVue.util.warn('[NcSelect] An `inputLabel` or `ariaLabelCombobox` should be set. If an external label is used, `labelOutside` should be set to `true`.')\n\t\t}\n\t\tif (this.inputLabel && this.ariaLabelCombobox) {\n\t\t\tVue.util.warn('[NcSelect] Only one of `inputLabel` or `ariaLabelCombobox` should to be set.')\n\t\t}\n\t},\n\n\tmethods: {\n\t\tt,\n\t},\n}\n</script>\n\n<style lang=\"scss\">\nbody {\n\t/**\n\t * Set custom vue-select CSS variables.\n\t * Needs to be on the body (not :root) for theming to apply (see nextcloud/server#36462)\n\t */\n\n\t/* Search Input */\n\t--vs-search-input-color: var(--color-main-text);\n\t--vs-search-input-bg: var(--color-main-background);\n\t--vs-search-input-placeholder-color: var(--color-text-maxcontrast);\n\n\t/* Font */\n\t--vs-font-size: var(--default-font-size);\n\t--vs-line-height: var(--default-line-height);\n\n\t/* Disabled State */\n\t--vs-state-disabled-bg: var(--color-background-hover);\n\t--vs-state-disabled-color: var(--color-text-maxcontrast);\n\t--vs-state-disabled-controls-color: var(--color-text-maxcontrast);\n\t--vs-state-disabled-cursor: not-allowed;\n\t--vs-disabled-bg: var(--color-background-hover);\n\t--vs-disabled-color: var(--color-text-maxcontrast);\n\t--vs-disabled-cursor: not-allowed;\n\n\t/* Borders */\n\t--vs-border-color: var(--color-border-maxcontrast);\n\t--vs-border-width: var(--border-width-input, 2px) !important;\n\t--vs-border-style: solid;\n\t--vs-border-radius: var(--border-radius-large);\n\n\t/* Component Controls: Clear, Open Indicator */\n\t--vs-controls-color: var(--color-main-text);\n\n\t/* Selected */\n\t--vs-selected-bg: var(--color-background-hover);\n\t--vs-selected-color: var(--color-main-text);\n\t--vs-selected-border-color: var(--vs-border-color);\n\t--vs-selected-border-style: var(--vs-border-style);\n\t--vs-selected-border-width: var(--vs-border-width);\n\n\t/* Dropdown */\n\t--vs-dropdown-bg: var(--color-main-background);\n\t--vs-dropdown-color: var(--color-main-text);\n\t--vs-dropdown-z-index: 9999;\n\t--vs-dropdown-box-shadow: 0px 2px 2px 0px var(--color-box-shadow);\n\n\t/* Options */\n\t--vs-dropdown-option-padding: 8px 20px;\n\n\t/* Active State */\n\t--vs-dropdown-option--active-bg: var(--color-background-hover);\n\t--vs-dropdown-option--active-color: var(--color-main-text);\n\n\t/* Keyboard Focus State */\n\t--vs-dropdown-option--kb-focus-box-shadow: inset 0px 0px 0px 2px var(--vs-border-color);\n\n\t/* Deselect State */\n\t--vs-dropdown-option--deselect-bg: var(--color-error);\n\t--vs-dropdown-option--deselect-color: #fff;\n\n\t/* Transitions */\n\t--vs-transition-duration: 0ms;\n\n\t/* Actions */\n\t--vs-actions-padding: 0 8px 0 4px;\n}\n\n.v-select.select {\n\t/* Override default vue-select styles */\n\tmin-height: var(--default-clickable-area);\n\tmin-width: 260px;\n\tmargin: 0 0 var(--default-grid-baseline);\n\n\t&.vs--open {\n\t\t--vs-border-width: var(--border-width-input-focused, 2px);\n\t}\n\n\t.select__label {\n\t\tdisplay: block;\n\t\tmargin-bottom: 2px;\n\t}\n\n\t.vs__selected {\n\t\theight: calc(var(--default-clickable-area) - 2 * var(--vs-border-width) - var(--default-grid-baseline));\n\t\tmargin: calc(var(--default-grid-baseline) / 2);\n\t\tpadding-block: 0;\n\t\tpadding-inline: 12px 8px;\n\t\tborder-radius: 16px !important;\n\t\tbackground: var(--color-primary-element-light);\n\t\tborder: none;\n\t}\n\n\t&.vs--open .vs__selected:first-of-type {\n\t\tmargin-inline-start: calc(var(--default-grid-baseline) / 2 - (var(--border-width-input-focused, 2px) - var(--border-width-input, 2px))) !important; // prevent jumping\n\t}\n\n\t.vs__search {\n\t\ttext-overflow: ellipsis;\n\t\tcolor: var(--color-main-text);\n\t\tmin-height: unset !important;\n\t\theight: calc(var(--default-clickable-area) - 2 * var(--vs-border-width)) !important;\n\n\t\t&::placeholder {\n\t\t\tcolor: var(--color-text-maxcontrast);\n\t\t}\n\t}\n\n\t.vs__search, .vs__search:focus {\n\t\tmargin: 0;\n\t}\n\n\t.vs__dropdown-toggle {\n\t\tposition: relative;\n\t\tmax-height: 100px;\n\t\tpadding: 0;\n\t\toverflow-y: auto;\n\t}\n\n\t.vs__actions {\n\t\tposition: sticky;\n\t\ttop: 0;\n\t}\n\n\t.vs__clear {\n\t\tmargin-right: 2px;\n\t}\n\n\t&.vs--open .vs__dropdown-toggle {\n\t\tborder-width: var(--border-width-input-focused);\n\t\toutline: 2px solid var(--color-main-background);\n\t\tborder-color: var(--color-main-text);\n\t\tborder-bottom-color: transparent;\n\t}\n\n\t&:not(.vs--disabled, .vs--open) .vs__dropdown-toggle:hover {\n\t\toutline: 2px solid var(--color-main-background);\n\t\tborder-color: var(--color-main-text);\n\t}\n\n\t&.vs--disabled {\n\t\t.vs__search,\n\t\t.vs__selected {\n\t\t\tcolor: var(--color-text-maxcontrast);\n\t\t}\n\n\t\t.vs__clear,\n\t\t.vs__deselect {\n\t\t\tdisplay: none;\n\t\t}\n\t}\n\n\t&--no-wrap {\n\t\t.vs__selected-options {\n\t\t\tflex-wrap: nowrap;\n\t\t\toverflow: auto;\n\t\t\tmin-width: unset;\n\t\t\t.vs__selected {\n\t\t\t\tmin-width: unset;\n\t\t\t}\n\t\t}\n\t}\n\n\t&--drop-up {\n\t\t&.vs--open {\n\t\t\t.vs__dropdown-toggle {\n\t\t\t\tborder-radius: 0 0 var(--vs-border-radius) var(--vs-border-radius);\n\t\t\t\tborder-top-color: transparent;\n\t\t\t\tborder-bottom-color: var(--color-main-text);\n\t\t\t}\n\t\t}\n\t}\n\n\t.vs__selected-options {\n\t\t// If search is hidden, ensure that the height of the search is the same\n\t\tmin-height: calc(var(--default-clickable-area) - 2 * var(--vs-border-width));\n\n\t\t// Hide search from dom if unused to prevent unneeded flex wrap\n\t\t.vs__selected ~ .vs__search[readonly] {\n\t\t\tposition: absolute;\n\t\t}\n\t\tpadding: 0 5px;\n\t}\n\n\t&.vs--single {\n\t\t&.vs--loading,\n\t\t&.vs--open {\n\t\t\t.vs__selected {\n\t\t\t\t// Fix `max-width` for `position: absolute`\n\t\t\t\tmax-width: 100%;\n\t\t\t\t// Fix color to be accessible\n\t\t\t\topacity: 1;\n\t\t\t\tcolor: var(--color-text-maxcontrast);\n\t\t\t}\n\t\t}\n\t\t.vs__selected-options {\n\t\t\tflex-wrap: nowrap;\n\t\t}\n\t\t.vs__selected {\n\t\t\tbackground: unset !important;\n\t\t}\n\t}\n}\n\n.vs__dropdown-menu {\n\tborder-width: var(--border-width-input-focused) !important;\n\tborder-color: var(--color-main-text) !important;\n\toutline: none !important;\n\tbox-shadow:\n\t\t-2px 0 0 var(--color-main-background), // Right\n\t\t0 2px 0 var(--color-main-background), // Bottom\n\t\t2px 0 0 var(--color-main-background), // Left\n\t\t!important;\n\tpadding: 4px !important;\n\n\t&--floating {\n\t\t/* Fallback styles overidden by programmatically set inline styles */\n\t\twidth: max-content;\n\t\tposition: absolute;\n\t\ttop: 0;\n\t\tleft: 0;\n\n\t\t&-placement-top {\n\t\t\tborder-radius: var(--vs-border-radius) var(--vs-border-radius) 0 0 !important;\n\t\t\tborder-top-style: var(--vs-border-style) !important;\n\t\t\tborder-bottom-style: none !important;\n\t\t\tbox-shadow:\n\t\t\t\t0 -2px 0 var(--color-main-background), // Top\n\t\t\t\t-2px 0 0 var(--color-main-background), // Right\n\t\t\t\t2px 0 0 var(--color-main-background), // Left\n\t\t\t\t!important\n\t\t}\n\t}\n\n\t.vs__dropdown-option {\n\t\tborder-radius: 6px !important;\n\t}\n\n\t.vs__no-options {\n\t\tcolor: var(--color-text-lighter) !important;\n\t}\n}\n\n// Selected users require slightly different padding\n.user-select .vs__selected {\n\tpadding-inline: 0 5px !important;\n}\n</style>\n"],"names":[],"mappings":"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"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"NcSelectTags-CMUDUx29.cjs","sources":["../../src/components/NcSelectTags/api.js","../../src/components/NcSelectTags/NcSelectTags.vue"],"sourcesContent":["/**\n * SPDX-FileCopyrightText: 2019 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n\nimport axios from '@nextcloud/axios'\nimport { generateRemoteUrl } from '@nextcloud/router'\n\nconst xmlToJson = (xml) => {\n\tlet obj = {}\n\n\tif (xml.nodeType === 1) {\n\t\tif (xml.attributes.length > 0) {\n\t\t\tobj['@attributes'] = {}\n\t\t\tfor (let j = 0; j < xml.attributes.length; j++) {\n\t\t\t\tconst attribute = xml.attributes.item(j)\n\t\t\t\tobj['@attributes'][attribute.nodeName] = attribute.nodeValue\n\t\t\t}\n\t\t}\n\t} else if (xml.nodeType === 3) {\n\t\tobj = xml.nodeValue\n\t}\n\n\tif (xml.hasChildNodes()) {\n\t\tfor (let i = 0; i < xml.childNodes.length; i++) {\n\t\t\tconst item = xml.childNodes.item(i)\n\t\t\tconst nodeName = item.nodeName\n\t\t\tif (typeof (obj[nodeName]) === 'undefined') {\n\t\t\t\tobj[nodeName] = xmlToJson(item)\n\t\t\t} else {\n\t\t\t\tif (typeof obj[nodeName].push === 'undefined') {\n\t\t\t\t\tconst old = obj[nodeName]\n\t\t\t\t\tobj[nodeName] = []\n\t\t\t\t\tobj[nodeName].push(old)\n\t\t\t\t}\n\t\t\t\tobj[nodeName].push(xmlToJson(item))\n\t\t\t}\n\t\t}\n\t}\n\treturn obj\n}\n\nconst parseXml = (xml) => {\n\tlet dom = null\n\ttry {\n\t\tdom = (new DOMParser()).parseFromString(xml, 'text/xml')\n\t} catch (e) {\n\t\tconsole.error('Failed to parse xml document', e)\n\t}\n\treturn dom\n}\n\nconst xmlToTagList = (xml) => {\n\tconst json = xmlToJson(parseXml(xml))\n\tconst list = json['d:multistatus']['d:response']\n\tconst result = []\n\tfor (const index in list) {\n\t\tconst tag = list[index]['d:propstat']\n\n\t\tif (tag['d:status']['#text'] !== 'HTTP/1.1 200 OK') {\n\t\t\tcontinue\n\t\t}\n\t\tresult.push({\n\t\t\tid: parseInt(tag['d:prop']['oc:id']['#text']),\n\t\t\tdisplayName: tag['d:prop']['oc:display-name']['#text'],\n\t\t\tcanAssign: tag['d:prop']['oc:can-assign']['#text'] === 'true',\n\t\t\tuserAssignable: tag['d:prop']['oc:user-assignable']['#text'] === 'true',\n\t\t\tuserVisible: tag['d:prop']['oc:user-visible']['#text'] === 'true',\n\t\t})\n\t}\n\treturn result\n}\n\nconst searchTags = async function() {\n\tif (window.NextcloudVueDocs) {\n\t\treturn Promise.resolve(xmlToTagList(window.NextcloudVueDocs.tags))\n\t}\n\n\tconst result = await axios({\n\t\tmethod: 'PROPFIND',\n\t\turl: generateRemoteUrl('dav') + '/systemtags/',\n\t\tdata: `<?xml version=\"1.0\"?>\n\t\t\t\t\t<d:propfind xmlns:d=\"DAV:\" xmlns:oc=\"http://owncloud.org/ns\">\n\t\t\t\t\t <d:prop>\n\t\t\t\t\t\t<oc:id />\n\t\t\t\t\t\t<oc:display-name />\n\t\t\t\t\t\t<oc:user-visible />\n\t\t\t\t\t\t<oc:user-assignable />\n\t\t\t\t\t\t<oc:can-assign />\n\t\t\t\t\t </d:prop>\n\t\t\t\t\t</d:propfind>`,\n\t})\n\treturn xmlToTagList(result.data)\n}\n\nexport {\n\tsearchTags,\n}\n","<!--\n - SPDX-FileCopyrightText: 2022 Nextcloud GmbH and Nextcloud contributors\n - SPDX-License-Identifier: AGPL-3.0-or-later\n-->\n\n<docs>\n### Single tag selector\n\n```vue\n<template>\n\t<div class=\"wrapper\">\n\t\t<NcSelectTags v-model=\"value\" input-label=\"Tag\" :multiple=\"false\" />\n\t\t{{ value }}\n\t</div>\n</template>\n\n<script>\nexport default {\n\tdata() {\n\t\treturn {\n\t\t\tvalue: 1,\n\t\t}\n\t}\n}\n</script>\n```\n\n### Multiple tag selector\n```vue\n<template>\n\t<div class=\"wrapper\">\n\t\t<NcSelectTags v-model=\"value\" input-label=\"Tags\" :multiple=\"true\" />\n\t\t{{ value }}\n\t</div>\n</template>\n\n<script>\nexport default {\n\tdata() {\n\t\treturn {\n\t\t\tvalue: [\n\t\t\t\t1,\n\t\t\t\t2,\n\t\t\t],\n\t\t}\n\t}\n}\n</script>\n```\n\n### Custom filter\nBecause of compatibility reasons only 5 tag entries are shown by default. If you want to show all available tags set the `limit` prop to `null`:\n```vue\n<template>\n\t<div class=\"wrapper\">\n\t\t<NcSelectTags v-model=\"value\" input-label=\"Tags\" :limit=\"null\" />\n\t\t{{ value }}\n\t</div>\n</template>\n\n<script>\nexport default {\n\tdata() {\n\t\treturn {\n\t\t\tvalue: [\n\t\t\t\t1,\n\t\t\t\t2,\n\t\t\t],\n\t\t}\n\t}\n}\n</script>\n```\n\nIt's also possible to apply any custom filter logic by setting the `optionsFilter` function-prop to any custom function receiving the tag element and the index:\n```vue\n<template>\n\t<div class=\"wrapper\">\n\t\t<NcSelectTags v-model=\"value\" input-label=\"Tags\" :options-filter=\"customFilter\" />\n\t\t{{ value }}\n\t</div>\n</template>\n\n<script>\nexport default {\n\tdata() {\n\t\treturn {\n\t\t\tvalue: [\n\t\t\t\t3,\n\t\t\t],\n\t\t}\n\t},\n\tmethods: {\n\t\t/**\n\t\t* Implement your custom filter logic to filter tags delivered\n\t\t* by the server\n\t\t*\n\t\t* @param {object} the tag object\n\t\t* @param {int} the index of the object inside the collection\n\t\t*/\n\t\tcustomFilter(element, index) {\n\t\t\t/*\n\t\t\t* Tag objects returned by the server will have the\n\t\t\t* following properties (see also api.js):\n\t\t\t* id, displayName, canAssign, userAssignable, userVisible\n\t\t\t*/\n\t\t\treturn element.id >= 2 && element.displayName !== '' && element.canAssign && element.userAssignable && element.userVisible\n\t\t}\n\t}\n}\n</script>\n```\n</docs>\n\n<template>\n\t<NcSelect v-bind=\"propsToForward\"\n\t\t:options=\"availableOptions\"\n\t\t:close-on-select=\"!multiple\"\n\t\t:value=\"passthru ? value : localValue\"\n\t\t@search=\"searchString => search = searchString\"\n\t\tv-on=\"{\n\t\t\t...$listeners,\n\t\t\tinput: passthru ? $listeners.input : handleInput,\n\t\t}\">\n\t\t<template #option=\"option\">\n\t\t\t<NcEllipsisedOption :name=\"getOptionLabel(option)\"\n\t\t\t\t:search=\"search\" />\n\t\t</template>\n\t\t<template #selected-option=\"selectedOption\">\n\t\t\t<NcEllipsisedOption :name=\"getOptionLabel(selectedOption)\"\n\t\t\t\t:search=\"search\" />\n\t\t</template>\n\t\t<template v-for=\"(_, name) in $scopedSlots\" #[name]=\"data\">\n\t\t\t<!-- @slot Any combination of slots from https://vue-select.org/api/slots.html -->\n\t\t\t<slot :name=\"name\" v-bind=\"data\" />\n\t\t</template>\n\t</NcSelect>\n</template>\n\n<script>\nimport NcEllipsisedOption from '../NcEllipsisedOption/index.js'\nimport NcSelect from '../NcSelect/index.js'\n\nimport { searchTags } from './api.js'\nimport { t } from '../../l10n.js'\n\nexport default {\n\tname: 'NcSelectTags',\n\n\tcomponents: {\n\t\tNcEllipsisedOption,\n\t\tNcSelect,\n\t},\n\n\tprops: {\n\t\t// Add NcSelect prop defaults and populate $props\n\t\t...NcSelect.props,\n\n\t\t/**\n\t\t * Enable automatic fetching of tags\n\t\t *\n\t\t * If `false`, available tags must be passed using the `options` prop\n\t\t */\n\t\tfetchTags: {\n\t\t\ttype: Boolean,\n\t\t\tdefault: true,\n\t\t},\n\n\t\t/**\n\t\t * Callback to generate the label text\n\t\t *\n\t\t * @see https://vue-select.org/api/props.html#getoptionlabel\n\t\t */\n\t\tgetOptionLabel: {\n\t\t\ttype: Function,\n\t\t\tdefault: (option) => {\n\t\t\t\tconst { displayName, userVisible, userAssignable } = option\n\t\t\t\tif (userVisible === false) {\n\t\t\t\t\treturn t('{tag} (invisible)', { tag: displayName })\n\t\t\t\t}\n\t\t\t\tif (userAssignable === false) {\n\t\t\t\t\treturn t('{tag} (restricted)', { tag: displayName })\n\t\t\t\t}\n\t\t\t\treturn displayName\n\t\t\t},\n\t\t},\n\n\t\t/**\n\t\t * Sets the maximum number of tags to display in the dropdown list\n\t\t *\n\t\t * Because of compatibility reasons only 5 tag entries are shown by\n\t\t * default\n\t\t */\n\t\tlimit: {\n\t\t\ttype: Number,\n\t\t\tdefault: 5,\n\t\t},\n\n\t\t/**\n\t\t * Allow selection of multiple options\n\t\t *\n\t\t * This prop automatically sets the internal `closeOnSelect` prop to\n\t\t * its boolean opposite\n\t\t *\n\t\t * @see https://vue-select.org/api/props.html#multiple\n\t\t */\n\t\tmultiple: {\n\t\t\ttype: Boolean,\n\t\t\tdefault: true,\n\t\t},\n\n\t\t/**\n\t\t * Callback to filter available options\n\t\t */\n\t\toptionsFilter: {\n\t\t\ttype: Function,\n\t\t\tdefault: null,\n\t\t},\n\n\t\t/**\n\t\t * Enable passing of `value` prop and emitted `input` events as-is\n\t\t * i.e. for usage with `v-model`\n\t\t *\n\t\t * If `true`, custom internal `value` and `input` handling is disabled\n\t\t */\n\t\tpassthru: {\n\t\t\ttype: Boolean,\n\t\t\tdefault: false,\n\t\t},\n\n\t\t/**\n\t\t * Placeholder text\n\t\t *\n\t\t * @see https://vue-select.org/api/props.html#placeholder\n\t\t */\n\t\tplaceholder: {\n\t\t\ttype: String,\n\t\t\tdefault: t('Select a tag'),\n\t\t},\n\n\t\t/**\n\t\t * Currently selected value\n\t\t */\n\t\tvalue: {\n\t\t\ttype: [Number, Array, Object],\n\t\t\tdefault: null,\n\t\t},\n\n\t\t/**\n\t\t * Any available prop\n\t\t *\n\t\t * @see https://vue-select.org/api/props.html\n\t\t */\n\t\t// Not an actual prop but needed to show in vue-styleguidist docs\n\t\t// eslint-disable-next-line\n\t\t' ': {},\n\t},\n\n\temits: [\n\t\t'input',\n\t\t/**\n\t\t * All events from https://vue-select.org/api/events.html\n\t\t */\n\t\t// Not an actual event but needed to show in vue-styleguidist docs\n\t\t' ',\n\t],\n\n\tdata() {\n\t\treturn {\n\t\t\tsearch: '',\n\t\t\tavailableTags: [],\n\t\t}\n\t},\n\n\tcomputed: {\n\t\tavailableOptions() {\n\t\t\tif (this.optionsFilter) {\n\t\t\t\treturn this.tags.filter(this.optionsFilter)\n\t\t\t}\n\t\t\treturn this.tags\n\t\t},\n\n\t\tlocalValue() {\n\t\t\tif (this.tags.length === 0) {\n\t\t\t\treturn []\n\t\t\t}\n\t\t\tif (this.multiple) {\n\t\t\t\treturn this.value\n\t\t\t\t\t.filter(tag => tag !== '')\n\t\t\t\t\t.map(id => this.tags.find(tag2 => tag2.id === id))\n\t\t\t} else {\n\t\t\t\treturn this.tags.find(tag => tag.id === this.value)\n\t\t\t}\n\t\t},\n\n\t\tpropsToForward() {\n\t\t\tconst {\n\t\t\t\t// Props handled by this component\n\t\t\t\tfetchTags,\n\t\t\t\toptionsFilter,\n\t\t\t\tpassthru,\n\t\t\t\t// Props to forward\n\t\t\t\t...propsToForward\n\t\t\t} = this.$props\n\n\t\t\treturn propsToForward\n\t\t},\n\n\t\ttags() {\n\t\t\tif (!this.fetchTags) {\n\t\t\t\treturn this.options\n\t\t\t}\n\t\t\treturn this.availableTags\n\t\t},\n\t},\n\n\tasync created() {\n\t\tif (!this.fetchTags) {\n\t\t\treturn\n\t\t}\n\t\ttry {\n\t\t\tconst result = await searchTags()\n\t\t\tthis.availableTags = result\n\t\t} catch (error) {\n\t\t\tconsole.error('Loading systemtags failed', error)\n\t\t}\n\t},\n\n\tmethods: {\n\t\thandleInput(value) {\n\t\t\tif (this.multiple) {\n\t\t\t\t/**\n\t\t\t\t * Emitted on input events of the multiselect field\n\t\t\t\t *\n\t\t\t\t * @type {number|number[]}\n\t\t\t\t */\n\t\t\t\tthis.$emit('input', value.map(element => element.id))\n\t\t\t} else {\n\t\t\t\tif (value === null) {\n\t\t\t\t\tthis.$emit('input', null)\n\t\t\t\t} else {\n\t\t\t\t\tthis.$emit('input', value.id)\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t},\n}\n</script>\n"],"names":["axios","generateRemoteUrl","NcEllipsisedOption","NcSelect","t"],"mappings":"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"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"NcSelectTags-hclAoBW3.mjs","sources":["../../src/components/NcSelectTags/api.js","../../src/components/NcSelectTags/NcSelectTags.vue"],"sourcesContent":["/**\n * SPDX-FileCopyrightText: 2019 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n\nimport axios from '@nextcloud/axios'\nimport { generateRemoteUrl } from '@nextcloud/router'\n\nconst xmlToJson = (xml) => {\n\tlet obj = {}\n\n\tif (xml.nodeType === 1) {\n\t\tif (xml.attributes.length > 0) {\n\t\t\tobj['@attributes'] = {}\n\t\t\tfor (let j = 0; j < xml.attributes.length; j++) {\n\t\t\t\tconst attribute = xml.attributes.item(j)\n\t\t\t\tobj['@attributes'][attribute.nodeName] = attribute.nodeValue\n\t\t\t}\n\t\t}\n\t} else if (xml.nodeType === 3) {\n\t\tobj = xml.nodeValue\n\t}\n\n\tif (xml.hasChildNodes()) {\n\t\tfor (let i = 0; i < xml.childNodes.length; i++) {\n\t\t\tconst item = xml.childNodes.item(i)\n\t\t\tconst nodeName = item.nodeName\n\t\t\tif (typeof (obj[nodeName]) === 'undefined') {\n\t\t\t\tobj[nodeName] = xmlToJson(item)\n\t\t\t} else {\n\t\t\t\tif (typeof obj[nodeName].push === 'undefined') {\n\t\t\t\t\tconst old = obj[nodeName]\n\t\t\t\t\tobj[nodeName] = []\n\t\t\t\t\tobj[nodeName].push(old)\n\t\t\t\t}\n\t\t\t\tobj[nodeName].push(xmlToJson(item))\n\t\t\t}\n\t\t}\n\t}\n\treturn obj\n}\n\nconst parseXml = (xml) => {\n\tlet dom = null\n\ttry {\n\t\tdom = (new DOMParser()).parseFromString(xml, 'text/xml')\n\t} catch (e) {\n\t\tconsole.error('Failed to parse xml document', e)\n\t}\n\treturn dom\n}\n\nconst xmlToTagList = (xml) => {\n\tconst json = xmlToJson(parseXml(xml))\n\tconst list = json['d:multistatus']['d:response']\n\tconst result = []\n\tfor (const index in list) {\n\t\tconst tag = list[index]['d:propstat']\n\n\t\tif (tag['d:status']['#text'] !== 'HTTP/1.1 200 OK') {\n\t\t\tcontinue\n\t\t}\n\t\tresult.push({\n\t\t\tid: parseInt(tag['d:prop']['oc:id']['#text']),\n\t\t\tdisplayName: tag['d:prop']['oc:display-name']['#text'],\n\t\t\tcanAssign: tag['d:prop']['oc:can-assign']['#text'] === 'true',\n\t\t\tuserAssignable: tag['d:prop']['oc:user-assignable']['#text'] === 'true',\n\t\t\tuserVisible: tag['d:prop']['oc:user-visible']['#text'] === 'true',\n\t\t})\n\t}\n\treturn result\n}\n\nconst searchTags = async function() {\n\tif (window.NextcloudVueDocs) {\n\t\treturn Promise.resolve(xmlToTagList(window.NextcloudVueDocs.tags))\n\t}\n\n\tconst result = await axios({\n\t\tmethod: 'PROPFIND',\n\t\turl: generateRemoteUrl('dav') + '/systemtags/',\n\t\tdata: `<?xml version=\"1.0\"?>\n\t\t\t\t\t<d:propfind xmlns:d=\"DAV:\" xmlns:oc=\"http://owncloud.org/ns\">\n\t\t\t\t\t <d:prop>\n\t\t\t\t\t\t<oc:id />\n\t\t\t\t\t\t<oc:display-name />\n\t\t\t\t\t\t<oc:user-visible />\n\t\t\t\t\t\t<oc:user-assignable />\n\t\t\t\t\t\t<oc:can-assign />\n\t\t\t\t\t </d:prop>\n\t\t\t\t\t</d:propfind>`,\n\t})\n\treturn xmlToTagList(result.data)\n}\n\nexport {\n\tsearchTags,\n}\n","<!--\n - SPDX-FileCopyrightText: 2022 Nextcloud GmbH and Nextcloud contributors\n - SPDX-License-Identifier: AGPL-3.0-or-later\n-->\n\n<docs>\n### Single tag selector\n\n```vue\n<template>\n\t<div class=\"wrapper\">\n\t\t<NcSelectTags v-model=\"value\" input-label=\"Tag\" :multiple=\"false\" />\n\t\t{{ value }}\n\t</div>\n</template>\n\n<script>\nexport default {\n\tdata() {\n\t\treturn {\n\t\t\tvalue: 1,\n\t\t}\n\t}\n}\n</script>\n```\n\n### Multiple tag selector\n```vue\n<template>\n\t<div class=\"wrapper\">\n\t\t<NcSelectTags v-model=\"value\" input-label=\"Tags\" :multiple=\"true\" />\n\t\t{{ value }}\n\t</div>\n</template>\n\n<script>\nexport default {\n\tdata() {\n\t\treturn {\n\t\t\tvalue: [\n\t\t\t\t1,\n\t\t\t\t2,\n\t\t\t],\n\t\t}\n\t}\n}\n</script>\n```\n\n### Custom filter\nBecause of compatibility reasons only 5 tag entries are shown by default. If you want to show all available tags set the `limit` prop to `null`:\n```vue\n<template>\n\t<div class=\"wrapper\">\n\t\t<NcSelectTags v-model=\"value\" input-label=\"Tags\" :limit=\"null\" />\n\t\t{{ value }}\n\t</div>\n</template>\n\n<script>\nexport default {\n\tdata() {\n\t\treturn {\n\t\t\tvalue: [\n\t\t\t\t1,\n\t\t\t\t2,\n\t\t\t],\n\t\t}\n\t}\n}\n</script>\n```\n\nIt's also possible to apply any custom filter logic by setting the `optionsFilter` function-prop to any custom function receiving the tag element and the index:\n```vue\n<template>\n\t<div class=\"wrapper\">\n\t\t<NcSelectTags v-model=\"value\" input-label=\"Tags\" :options-filter=\"customFilter\" />\n\t\t{{ value }}\n\t</div>\n</template>\n\n<script>\nexport default {\n\tdata() {\n\t\treturn {\n\t\t\tvalue: [\n\t\t\t\t3,\n\t\t\t],\n\t\t}\n\t},\n\tmethods: {\n\t\t/**\n\t\t* Implement your custom filter logic to filter tags delivered\n\t\t* by the server\n\t\t*\n\t\t* @param {object} the tag object\n\t\t* @param {int} the index of the object inside the collection\n\t\t*/\n\t\tcustomFilter(element, index) {\n\t\t\t/*\n\t\t\t* Tag objects returned by the server will have the\n\t\t\t* following properties (see also api.js):\n\t\t\t* id, displayName, canAssign, userAssignable, userVisible\n\t\t\t*/\n\t\t\treturn element.id >= 2 && element.displayName !== '' && element.canAssign && element.userAssignable && element.userVisible\n\t\t}\n\t}\n}\n</script>\n```\n</docs>\n\n<template>\n\t<NcSelect v-bind=\"propsToForward\"\n\t\t:options=\"availableOptions\"\n\t\t:close-on-select=\"!multiple\"\n\t\t:value=\"passthru ? value : localValue\"\n\t\t@search=\"searchString => search = searchString\"\n\t\tv-on=\"{\n\t\t\t...$listeners,\n\t\t\tinput: passthru ? $listeners.input : handleInput,\n\t\t}\">\n\t\t<template #option=\"option\">\n\t\t\t<NcEllipsisedOption :name=\"getOptionLabel(option)\"\n\t\t\t\t:search=\"search\" />\n\t\t</template>\n\t\t<template #selected-option=\"selectedOption\">\n\t\t\t<NcEllipsisedOption :name=\"getOptionLabel(selectedOption)\"\n\t\t\t\t:search=\"search\" />\n\t\t</template>\n\t\t<template v-for=\"(_, name) in $scopedSlots\" #[name]=\"data\">\n\t\t\t<!-- @slot Any combination of slots from https://vue-select.org/api/slots.html -->\n\t\t\t<slot :name=\"name\" v-bind=\"data\" />\n\t\t</template>\n\t</NcSelect>\n</template>\n\n<script>\nimport NcEllipsisedOption from '../NcEllipsisedOption/index.js'\nimport NcSelect from '../NcSelect/index.js'\n\nimport { searchTags } from './api.js'\nimport { t } from '../../l10n.js'\n\nexport default {\n\tname: 'NcSelectTags',\n\n\tcomponents: {\n\t\tNcEllipsisedOption,\n\t\tNcSelect,\n\t},\n\n\tprops: {\n\t\t// Add NcSelect prop defaults and populate $props\n\t\t...NcSelect.props,\n\n\t\t/**\n\t\t * Enable automatic fetching of tags\n\t\t *\n\t\t * If `false`, available tags must be passed using the `options` prop\n\t\t */\n\t\tfetchTags: {\n\t\t\ttype: Boolean,\n\t\t\tdefault: true,\n\t\t},\n\n\t\t/**\n\t\t * Callback to generate the label text\n\t\t *\n\t\t * @see https://vue-select.org/api/props.html#getoptionlabel\n\t\t */\n\t\tgetOptionLabel: {\n\t\t\ttype: Function,\n\t\t\tdefault: (option) => {\n\t\t\t\tconst { displayName, userVisible, userAssignable } = option\n\t\t\t\tif (userVisible === false) {\n\t\t\t\t\treturn t('{tag} (invisible)', { tag: displayName })\n\t\t\t\t}\n\t\t\t\tif (userAssignable === false) {\n\t\t\t\t\treturn t('{tag} (restricted)', { tag: displayName })\n\t\t\t\t}\n\t\t\t\treturn displayName\n\t\t\t},\n\t\t},\n\n\t\t/**\n\t\t * Sets the maximum number of tags to display in the dropdown list\n\t\t *\n\t\t * Because of compatibility reasons only 5 tag entries are shown by\n\t\t * default\n\t\t */\n\t\tlimit: {\n\t\t\ttype: Number,\n\t\t\tdefault: 5,\n\t\t},\n\n\t\t/**\n\t\t * Allow selection of multiple options\n\t\t *\n\t\t * This prop automatically sets the internal `closeOnSelect` prop to\n\t\t * its boolean opposite\n\t\t *\n\t\t * @see https://vue-select.org/api/props.html#multiple\n\t\t */\n\t\tmultiple: {\n\t\t\ttype: Boolean,\n\t\t\tdefault: true,\n\t\t},\n\n\t\t/**\n\t\t * Callback to filter available options\n\t\t */\n\t\toptionsFilter: {\n\t\t\ttype: Function,\n\t\t\tdefault: null,\n\t\t},\n\n\t\t/**\n\t\t * Enable passing of `value` prop and emitted `input` events as-is\n\t\t * i.e. for usage with `v-model`\n\t\t *\n\t\t * If `true`, custom internal `value` and `input` handling is disabled\n\t\t */\n\t\tpassthru: {\n\t\t\ttype: Boolean,\n\t\t\tdefault: false,\n\t\t},\n\n\t\t/**\n\t\t * Placeholder text\n\t\t *\n\t\t * @see https://vue-select.org/api/props.html#placeholder\n\t\t */\n\t\tplaceholder: {\n\t\t\ttype: String,\n\t\t\tdefault: t('Select a tag'),\n\t\t},\n\n\t\t/**\n\t\t * Currently selected value\n\t\t */\n\t\tvalue: {\n\t\t\ttype: [Number, Array, Object],\n\t\t\tdefault: null,\n\t\t},\n\n\t\t/**\n\t\t * Any available prop\n\t\t *\n\t\t * @see https://vue-select.org/api/props.html\n\t\t */\n\t\t// Not an actual prop but needed to show in vue-styleguidist docs\n\t\t// eslint-disable-next-line\n\t\t' ': {},\n\t},\n\n\temits: [\n\t\t'input',\n\t\t/**\n\t\t * All events from https://vue-select.org/api/events.html\n\t\t */\n\t\t// Not an actual event but needed to show in vue-styleguidist docs\n\t\t' ',\n\t],\n\n\tdata() {\n\t\treturn {\n\t\t\tsearch: '',\n\t\t\tavailableTags: [],\n\t\t}\n\t},\n\n\tcomputed: {\n\t\tavailableOptions() {\n\t\t\tif (this.optionsFilter) {\n\t\t\t\treturn this.tags.filter(this.optionsFilter)\n\t\t\t}\n\t\t\treturn this.tags\n\t\t},\n\n\t\tlocalValue() {\n\t\t\tif (this.tags.length === 0) {\n\t\t\t\treturn []\n\t\t\t}\n\t\t\tif (this.multiple) {\n\t\t\t\treturn this.value\n\t\t\t\t\t.filter(tag => tag !== '')\n\t\t\t\t\t.map(id => this.tags.find(tag2 => tag2.id === id))\n\t\t\t} else {\n\t\t\t\treturn this.tags.find(tag => tag.id === this.value)\n\t\t\t}\n\t\t},\n\n\t\tpropsToForward() {\n\t\t\tconst {\n\t\t\t\t// Props handled by this component\n\t\t\t\tfetchTags,\n\t\t\t\toptionsFilter,\n\t\t\t\tpassthru,\n\t\t\t\t// Props to forward\n\t\t\t\t...propsToForward\n\t\t\t} = this.$props\n\n\t\t\treturn propsToForward\n\t\t},\n\n\t\ttags() {\n\t\t\tif (!this.fetchTags) {\n\t\t\t\treturn this.options\n\t\t\t}\n\t\t\treturn this.availableTags\n\t\t},\n\t},\n\n\tasync created() {\n\t\tif (!this.fetchTags) {\n\t\t\treturn\n\t\t}\n\t\ttry {\n\t\t\tconst result = await searchTags()\n\t\t\tthis.availableTags = result\n\t\t} catch (error) {\n\t\t\tconsole.error('Loading systemtags failed', error)\n\t\t}\n\t},\n\n\tmethods: {\n\t\thandleInput(value) {\n\t\t\tif (this.multiple) {\n\t\t\t\t/**\n\t\t\t\t * Emitted on input events of the multiselect field\n\t\t\t\t *\n\t\t\t\t * @type {number|number[]}\n\t\t\t\t */\n\t\t\t\tthis.$emit('input', value.map(element => element.id))\n\t\t\t} else {\n\t\t\t\tif (value === null) {\n\t\t\t\t\tthis.$emit('input', null)\n\t\t\t\t} else {\n\t\t\t\t\tthis.$emit('input', value.id)\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t},\n}\n</script>\n"],"names":[],"mappings":"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"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"NcSettingsInputText-BF_v4yDP.mjs","sources":["../../src/components/NcSettingsInputText/NcSettingsInputText.vue"],"sourcesContent":["<!--\n - SPDX-FileCopyrightText: 2021 Nextcloud GmbH and Nextcloud contributors\n - SPDX-License-Identifier: AGPL-3.0-or-later\n-->\n\n<docs>\n\n```vue\n<NcSettingsInputText label=\"Label\" hint=\"Hint\" />\n<NcSettingsInputText label=\"Label\" value=\"Value\" hint=\"Hint\" disabled />\n```\n\n</docs>\n\n<template>\n\t<form ref=\"form\"\n\t\t:disabled=\"disabled\"\n\t\t@submit.prevent.stop=\"onSubmit\">\n\t\t<div class=\"input-wrapper\">\n\t\t\t<label :for=\"id\" class=\"action-input__label\">{{ label }}</label>\n\t\t\t<input :id=\"id\"\n\t\t\t\ttype=\"text\"\n\t\t\t\t:value=\"value\"\n\t\t\t\t:disabled=\"disabled\"\n\t\t\t\t@input=\"onInput\"\n\t\t\t\t@change=\"onChange\">\n\t\t\t<input :id=\"idSubmit\"\n\t\t\t\t:value=\"submitTranslated\"\n\t\t\t\ttype=\"submit\"\n\t\t\t\tclass=\"action-input__submit\">\n\t\t\t<p v-if=\"hint\" class=\"hint\">\n\t\t\t\t{{ hint }}\n\t\t\t</p>\n\t\t</div>\n\t</form>\n</template>\n\n<script>\nimport { t } from '../../l10n.js'\nimport GenRandomId from '../../utils/GenRandomId.js'\n\nexport default {\n\tname: 'NcSettingsInputText',\n\tprops: {\n\t\t/**\n\t\t * label of the select group element\n\t\t */\n\t\tlabel: {\n\t\t\ttype: String,\n\t\t\trequired: true,\n\t\t},\n\n\t\t/**\n\t\t * hint of the select group input\n\t\t */\n\t\thint: {\n\t\t\ttype: String,\n\t\t\tdefault: '',\n\t\t},\n\n\t\t/**\n\t\t * value of the select group input\n\t\t */\n\t\tvalue: {\n\t\t\ttype: String,\n\t\t\tdefault: '',\n\t\t},\n\n\t\t/**\n\t\t * disabled state of the settings select group input\n\t\t */\n\t\tdisabled: {\n\t\t\ttype: Boolean,\n\t\t\tdefault: false,\n\t\t},\n\n\t\t/**\n\t\t * id attribute of the select group element\n\t\t */\n\t\tid: {\n\t\t\ttype: String,\n\t\t\tdefault: () => 'settings-input-text-' + GenRandomId(),\n\t\t\tvalidator: id => id.trim() !== '',\n\t\t},\n\t},\n\n\temits: [\n\t\t'update:value',\n\t\t'input',\n\t\t'submit',\n\t\t'change',\n\t],\n\n\tdata() {\n\t\treturn {\n\t\t\tsubmitTranslated: t('Submit'),\n\t\t}\n\t},\n\n\tcomputed: {\n\t\t/**\n\t\t * @return {string}\n\t\t */\n\t\tidSubmit() {\n\t\t\treturn this.id + '-submit'\n\t\t},\n\t},\n\tmethods: {\n\t\tonInput(event) {\n\t\t\tthis.$emit('input', event)\n\t\t\t/**\n\t\t\t * Emitted when the inputs value changes\n\t\t\t *\n\t\t\t * @type {string}\n\t\t\t */\n\t\t\tthis.$emit('update:value', event.target.value)\n\t\t},\n\t\tonSubmit(event) {\n\t\t\tif (!this.disabled) {\n\t\t\t\t/**\n\t\t\t\t * Emitted on submit of the input field\n\t\t\t\t *\n\t\t\t\t * @type {Event}\n\t\t\t\t */\n\t\t\t\tthis.$emit('submit', event)\n\t\t\t}\n\t\t},\n\t\tonChange(event) {\n\t\t\t/**\n\t\t\t * Emitted on change of the input field\n\t\t\t *\n\t\t\t * @type {Event}\n\t\t\t */\n\t\t\tthis.$emit('change', event)\n\t\t},\n\t},\n}\n</script>\n\n<style lang=\"scss\" scoped>\n\n\t.input-wrapper {\n\t\tdisplay: flex;\n\t\talign-items: center;\n\t\tflex-wrap: wrap;\n\t\twidth: 100%;\n\t\tmax-width: 400px;\n\n\t\t& .action-input__label {\n\t\t\tmargin-right: 12px;\n\t\t}\n\n\t\t// if disabled, change cursor\n\t\t&:disabled {\n\t\t\tcursor: default;\n\t\t}\n\n\t\t.hint {\n\t\t\tcolor: var(--color-text-maxcontrast);\n\t\t\tmargin-left: 8px;\n\t\t}\n\t}\n\n</style>\n"],"names":[],"mappings":";;;;AAyCA,MAAA,YAAA;AAAA,EACA,MAAA;AAAA,EACA,OAAA;AAAA;AAAA;AAAA;AAAA,IAIA,OAAA;AAAA,MACA,MAAA;AAAA,MACA,UAAA;AAAA,IACA;AAAA;AAAA;AAAA;AAAA,IAKA,MAAA;AAAA,MACA,MAAA;AAAA,MACA,SAAA;AAAA,IACA;AAAA;AAAA;AAAA;AAAA,IAKA,OAAA;AAAA,MACA,MAAA;AAAA,MACA,SAAA;AAAA,IACA;AAAA;AAAA;AAAA;AAAA,IAKA,UAAA;AAAA,MACA,MAAA;AAAA,MACA,SAAA;AAAA,IACA;AAAA;AAAA;AAAA;AAAA,IAKA,IAAA;AAAA,MACA,MAAA;AAAA,MACA,SAAA,MAAA,yBAAA,YAAA;AAAA,MACA,WAAA,QAAA,GAAA,KAAA,MAAA;AAAA,IACA;AAAA,EACA;AAAA,EAEA,OAAA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACA;AAAA,EAEA,OAAA;AACA,WAAA;AAAA,MACA,kBAAA,EAAA,QAAA;AAAA,IACA;AAAA,EACA;AAAA,EAEA,UAAA;AAAA;AAAA;AAAA;AAAA,IAIA,WAAA;AACA,aAAA,KAAA,KAAA;AAAA,IACA;AAAA,EACA;AAAA,EACA,SAAA;AAAA,IACA,QAAA,OAAA;AACA,WAAA,MAAA,SAAA,KAAA;AAMA,WAAA,MAAA,gBAAA,MAAA,OAAA,KAAA;AAAA,IACA;AAAA,IACA,SAAA,OAAA;AACA,UAAA,CAAA,KAAA,UAAA;AAMA,aAAA,MAAA,UAAA,KAAA;AAAA,MACA;AAAA,IACA;AAAA,IACA,SAAA,OAAA;AAMA,WAAA,MAAA,UAAA,KAAA;AAAA,IACA;AAAA,EACA;AACA;;;;;;;;;;;;;;;;;;;"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"NcSettingsInputText-Cv_JwbFO.cjs","sources":["../../src/components/NcSettingsInputText/NcSettingsInputText.vue"],"sourcesContent":["<!--\n - SPDX-FileCopyrightText: 2021 Nextcloud GmbH and Nextcloud contributors\n - SPDX-License-Identifier: AGPL-3.0-or-later\n-->\n\n<docs>\n\n```vue\n<NcSettingsInputText label=\"Label\" hint=\"Hint\" />\n<NcSettingsInputText label=\"Label\" value=\"Value\" hint=\"Hint\" disabled />\n```\n\n</docs>\n\n<template>\n\t<form ref=\"form\"\n\t\t:disabled=\"disabled\"\n\t\t@submit.prevent.stop=\"onSubmit\">\n\t\t<div class=\"input-wrapper\">\n\t\t\t<label :for=\"id\" class=\"action-input__label\">{{ label }}</label>\n\t\t\t<input :id=\"id\"\n\t\t\t\ttype=\"text\"\n\t\t\t\t:value=\"value\"\n\t\t\t\t:disabled=\"disabled\"\n\t\t\t\t@input=\"onInput\"\n\t\t\t\t@change=\"onChange\">\n\t\t\t<input :id=\"idSubmit\"\n\t\t\t\t:value=\"submitTranslated\"\n\t\t\t\ttype=\"submit\"\n\t\t\t\tclass=\"action-input__submit\">\n\t\t\t<p v-if=\"hint\" class=\"hint\">\n\t\t\t\t{{ hint }}\n\t\t\t</p>\n\t\t</div>\n\t</form>\n</template>\n\n<script>\nimport { t } from '../../l10n.js'\nimport GenRandomId from '../../utils/GenRandomId.js'\n\nexport default {\n\tname: 'NcSettingsInputText',\n\tprops: {\n\t\t/**\n\t\t * label of the select group element\n\t\t */\n\t\tlabel: {\n\t\t\ttype: String,\n\t\t\trequired: true,\n\t\t},\n\n\t\t/**\n\t\t * hint of the select group input\n\t\t */\n\t\thint: {\n\t\t\ttype: String,\n\t\t\tdefault: '',\n\t\t},\n\n\t\t/**\n\t\t * value of the select group input\n\t\t */\n\t\tvalue: {\n\t\t\ttype: String,\n\t\t\tdefault: '',\n\t\t},\n\n\t\t/**\n\t\t * disabled state of the settings select group input\n\t\t */\n\t\tdisabled: {\n\t\t\ttype: Boolean,\n\t\t\tdefault: false,\n\t\t},\n\n\t\t/**\n\t\t * id attribute of the select group element\n\t\t */\n\t\tid: {\n\t\t\ttype: String,\n\t\t\tdefault: () => 'settings-input-text-' + GenRandomId(),\n\t\t\tvalidator: id => id.trim() !== '',\n\t\t},\n\t},\n\n\temits: [\n\t\t'update:value',\n\t\t'input',\n\t\t'submit',\n\t\t'change',\n\t],\n\n\tdata() {\n\t\treturn {\n\t\t\tsubmitTranslated: t('Submit'),\n\t\t}\n\t},\n\n\tcomputed: {\n\t\t/**\n\t\t * @return {string}\n\t\t */\n\t\tidSubmit() {\n\t\t\treturn this.id + '-submit'\n\t\t},\n\t},\n\tmethods: {\n\t\tonInput(event) {\n\t\t\tthis.$emit('input', event)\n\t\t\t/**\n\t\t\t * Emitted when the inputs value changes\n\t\t\t *\n\t\t\t * @type {string}\n\t\t\t */\n\t\t\tthis.$emit('update:value', event.target.value)\n\t\t},\n\t\tonSubmit(event) {\n\t\t\tif (!this.disabled) {\n\t\t\t\t/**\n\t\t\t\t * Emitted on submit of the input field\n\t\t\t\t *\n\t\t\t\t * @type {Event}\n\t\t\t\t */\n\t\t\t\tthis.$emit('submit', event)\n\t\t\t}\n\t\t},\n\t\tonChange(event) {\n\t\t\t/**\n\t\t\t * Emitted on change of the input field\n\t\t\t *\n\t\t\t * @type {Event}\n\t\t\t */\n\t\t\tthis.$emit('change', event)\n\t\t},\n\t},\n}\n</script>\n\n<style lang=\"scss\" scoped>\n\n\t.input-wrapper {\n\t\tdisplay: flex;\n\t\talign-items: center;\n\t\tflex-wrap: wrap;\n\t\twidth: 100%;\n\t\tmax-width: 400px;\n\n\t\t& .action-input__label {\n\t\t\tmargin-right: 12px;\n\t\t}\n\n\t\t// if disabled, change cursor\n\t\t&:disabled {\n\t\t\tcursor: default;\n\t\t}\n\n\t\t.hint {\n\t\t\tcolor: var(--color-text-maxcontrast);\n\t\t\tmargin-left: 8px;\n\t\t}\n\t}\n\n</style>\n"],"names":["GenRandomId","t"],"mappings":";;;;;AAyCA,MAAA,YAAA;AAAA,EACA,MAAA;AAAA,EACA,OAAA;AAAA;AAAA;AAAA;AAAA,IAIA,OAAA;AAAA,MACA,MAAA;AAAA,MACA,UAAA;AAAA,IACA;AAAA;AAAA;AAAA;AAAA,IAKA,MAAA;AAAA,MACA,MAAA;AAAA,MACA,SAAA;AAAA,IACA;AAAA;AAAA;AAAA;AAAA,IAKA,OAAA;AAAA,MACA,MAAA;AAAA,MACA,SAAA;AAAA,IACA;AAAA;AAAA;AAAA;AAAA,IAKA,UAAA;AAAA,MACA,MAAA;AAAA,MACA,SAAA;AAAA,IACA;AAAA;AAAA;AAAA;AAAA,IAKA,IAAA;AAAA,MACA,MAAA;AAAA,MACA,SAAA,MAAA,yBAAAA,wBAAA;AAAA,MACA,WAAA,QAAA,GAAA,KAAA,MAAA;AAAA,IACA;AAAA,EACA;AAAA,EAEA,OAAA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACA;AAAA,EAEA,OAAA;AACA,WAAA;AAAA,MACA,kBAAAC,MAAA,EAAA,QAAA;AAAA,IACA;AAAA,EACA;AAAA,EAEA,UAAA;AAAA;AAAA;AAAA;AAAA,IAIA,WAAA;AACA,aAAA,KAAA,KAAA;AAAA,IACA;AAAA,EACA;AAAA,EACA,SAAA;AAAA,IACA,QAAA,OAAA;AACA,WAAA,MAAA,SAAA,KAAA;AAMA,WAAA,MAAA,gBAAA,MAAA,OAAA,KAAA;AAAA,IACA;AAAA,IACA,SAAA,OAAA;AACA,UAAA,CAAA,KAAA,UAAA;AAMA,aAAA,MAAA,UAAA,KAAA;AAAA,MACA;AAAA,IACA;AAAA,IACA,SAAA,OAAA;AAMA,WAAA,MAAA,UAAA,KAAA;AAAA,IACA;AAAA,EACA;AACA;;;;;;;;;;;;;;;;;;;;"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"NcSettingsSection-CA2JahBC.cjs","sources":["../../node_modules/vue-material-design-icons/HelpCircle.vue","../../src/components/NcSettingsSection/NcSettingsSection.vue"],"sourcesContent":["<template>\n <span v-bind=\"$attrs\"\n :aria-hidden=\"title ? null : true\"\n :aria-label=\"title\"\n class=\"material-design-icon help-circle-icon\"\n role=\"img\"\n @click=\"$emit('click', $event)\">\n <svg :fill=\"fillColor\"\n class=\"material-design-icon__svg\"\n :width=\"size\"\n :height=\"size\"\n viewBox=\"0 0 24 24\">\n <path d=\"M15.07,11.25L14.17,12.17C13.45,12.89 13,13.5 13,15H11V14.5C11,13.39 11.45,12.39 12.17,11.67L13.41,10.41C13.78,10.05 14,9.55 14,9C14,7.89 13.1,7 12,7A2,2 0 0,0 10,9H8A4,4 0 0,1 12,5A4,4 0 0,1 16,9C16,9.88 15.64,10.67 15.07,11.25M13,19H11V17H13M12,2A10,10 0 0,0 2,12A10,10 0 0,0 12,22A10,10 0 0,0 22,12C22,6.47 17.5,2 12,2Z\">\n <title v-if=\"title\">{{ title }}</title>\n </path>\n </svg>\n </span>\n</template>\n\n<script>\nexport default {\n name: \"HelpCircleIcon\",\n emits: ['click'],\n props: {\n title: {\n type: String,\n },\n fillColor: {\n type: String,\n default: \"currentColor\"\n },\n size: {\n type: Number,\n default: 24\n }\n }\n}\n</script>","<!--\n - SPDX-FileCopyrightText: 2019 Nextcloud GmbH and Nextcloud contributors\n - SPDX-License-Identifier: AGPL-3.0-or-later\n-->\n\n<docs>\n### General description\n\nThis component is to be used in the settings section of nextcloud.\n\n### Examples\n\n```vue\n<template>\n\t<div>\n\t\t<NcSettingsSection name=\"Two-factor authentication\"\n\t\t\tdescription=\"Two-factor authentication can be enforced for all accounts and specific groups. If they do not have a two-factor provider configured, they will be unable to log into the system.\"\n\t\t\tdoc-url=\"https://docs.nextcloud.com/server/19/go.php?to=admin-2fa\">\n\t\t\t<NcCheckboxRadioSwitch type=\"switch\">\n\t\t\t\tEnforce two-factor authentication\n\t\t\t</NcCheckboxRadioSwitch>\n\t\t</NcSettingsSection>\n\n\t\t<NcSettingsSection name=\"Server-side encryption\"\n\t\t\tdescription=\"Server-side encryption makes it possible to encrypt files which are uploaded to this server. This comes with limitations like a performance penalty, so enable this only if needed.\">\n\t\t\t<NcCheckboxRadioSwitch type=\"switch\">\n\t\t\t\tEnable server-side encryption\n\t\t\t</NcCheckboxRadioSwitch>\n\t\t</NcSettingsSection>\n\n\t\t<NcSettingsSection name=\"OAuth 2.0 clients\"\n\t\t\tdescription=\"OAuth 2.0 allows external services to request access to Nextcloud.\"\n\t\t\tdoc-url=\"https://docs.nextcloud.com/server/latest/admin_manual/configuration_server/oauth2.html\">\n\n\t\t\tAny content here\n\n\t\t</NcSettingsSection>\n\t</div>\n</template>\n```\n</docs>\n\n<template>\n\t<div class=\"settings-section\" :class=\"{'settings-section--limit-width': forceLimitWidth}\">\n\t\t<h2 class=\"settings-section__name\">\n\t\t\t{{ name }}\n\t\t\t<a v-if=\"hasDocUrl\"\n\t\t\t\t:href=\"docUrl\"\n\t\t\t\tclass=\"settings-section__info\"\n\t\t\t\t:title=\"docNameTranslated\"\n\t\t\t\t:aria-label=\"docNameTranslated\"\n\t\t\t\ttarget=\"_blank\"\n\t\t\t\trel=\"noreferrer nofollow\">\n\t\t\t\t<HelpCircle :size=\"20\" />\n\t\t\t</a>\n\t\t</h2>\n\t\t<p v-if=\"hasDescription\"\n\t\t\tclass=\"settings-section__desc\">\n\t\t\t{{ description }}\n\t\t</p>\n\t\t<slot />\n\t</div>\n</template>\n\n<script>\nimport { t } from '../../l10n.js'\n\nimport HelpCircle from 'vue-material-design-icons/HelpCircle.vue'\n\nexport default {\n\tname: 'NcSettingsSection',\n\n\tcomponents: {\n\t\tHelpCircle,\n\t},\n\n\tprops: {\n\t\tname: {\n\t\t\ttype: String,\n\t\t\trequired: true,\n\t\t},\n\t\tdescription: {\n\t\t\ttype: String,\n\t\t\tdefault: '',\n\t\t},\n\t\tdocUrl: {\n\t\t\ttype: String,\n\t\t\tdefault: '',\n\t\t},\n\t\t/**\n\t\t * Limit the width of the setting's content\n\t\t *\n\t\t * Setting this to false allows unrestricted (width) settings content.\n\t\t * Note that the name and description have always a width limit.\n\t\t * @deprecated Will be removed with next version and will not be used on Nextcloud 30+ (always forced to true)\n\t\t */\n\t\tlimitWidth: {\n\t\t\ttype: Boolean,\n\t\t\tdefault: true,\n\t\t},\n\t},\n\n\tdata() {\n\t\treturn {\n\t\t\tdocNameTranslated: t('External documentation for {name}', {\n\t\t\t\tname: this.name,\n\t\t\t}),\n\t\t}\n\t},\n\n\tcomputed: {\n\t\tforceLimitWidth() {\n\t\t\tif (this.limitWidth) {\n\t\t\t\treturn true\n\t\t\t}\n\t\t\t// Overwrite this on Nextcloud 30+ to always limit the width\n\t\t\tconst [major] = window._oc_config?.version.split('.', 2) ?? []\n\t\t\treturn major && Number.parseInt(major) >= 30\n\t\t},\n\n\t\thasDescription() {\n\t\t\treturn this.description.length > 0\n\t\t},\n\t\thasDocUrl() {\n\t\t\treturn this.docUrl.length > 0\n\t\t},\n\t},\n}\n\n</script>\n\n<style lang=\"scss\" scoped>\n$maxWidth: 900px;\n\n.settings-section {\n\tdisplay: block;\n\tmargin-bottom: auto;\n\tpadding: 30px;\n\n\t&:not(:last-child) {\n\t\tborder-bottom: 1px solid var(--color-border);\n\t}\n\n\t&--limit-width > * {\n\t\tmax-width: $maxWidth;\n\t}\n\n\t&__name {\n\t\tdisplay: inline-flex;\n\t\talign-items: center;\n\t\tjustify-content: center;\n\t\tfont-size: 20px;\n\t\tfont-weight: bold;\n\t\tmax-width: $maxWidth;\n\t\tmargin-top: 0; // Remove default heading margin\n\t}\n\n\t&__info {\n\t\tdisplay: flex;\n\t\talign-items: center;\n\t\tjustify-content: center;\n\t\twidth: var(--default-clickable-area);\n\t\theight: var(--default-clickable-area);\n\t\t// make sure to properly align the icon with the text\n\t\tmargin: calc($icon-margin * -1);\n\t\tmargin-left: 0;\n\t\tcolor: var(--color-text-maxcontrast);\n\n\t\t&:hover, &:focus, &:active {\n\t\t\tcolor: var(--color-main-text);\n\t\t}\n\t}\n\n\t&__desc {\n\t\tmargin-top: -.2em;\n\t\tmargin-bottom: 1em;\n\t\tcolor: var(--color-text-maxcontrast);\n\t\tmax-width: $maxWidth;\n\t}\n}\n\n</style>\n"],"names":["_sfc_main","t"],"mappings":";;;;AAoBA,MAAAA,cAAA;AAAA,EACA,MAAA;AAAA,EACA,OAAA,CAAA,OAAA;AAAA,EACA,OAAA;AAAA,IACA,OAAA;AAAA,MACA,MAAA;AAAA,IACA;AAAA,IACA,WAAA;AAAA,MACA,MAAA;AAAA,MACA,SAAA;AAAA,IACA;AAAA,IACA,MAAA;AAAA,MACA,MAAA;AAAA,MACA,SAAA;AAAA,IACA;AAAA,EACA;AACA;;;;;;;;;;;;;;;;;ACiCA,MAAA,YAAA;AAAA,EACA,MAAA;AAAA,EAEA,YAAA;AAAA,IACA;AAAA,EACA;AAAA,EAEA,OAAA;AAAA,IACA,MAAA;AAAA,MACA,MAAA;AAAA,MACA,UAAA;AAAA,IACA;AAAA,IACA,aAAA;AAAA,MACA,MAAA;AAAA,MACA,SAAA;AAAA,IACA;AAAA,IACA,QAAA;AAAA,MACA,MAAA;AAAA,MACA,SAAA;AAAA,IACA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IAQA,YAAA;AAAA,MACA,MAAA;AAAA,MACA,SAAA;AAAA,IACA;AAAA,EACA;AAAA,EAEA,OAAA;AACA,WAAA;AAAA,MACA,mBAAAC,MAAA,EAAA,qCAAA;AAAA,QACA,MAAA,KAAA;AAAA,MACA,CAAA;AAAA,IACA;AAAA,EACA;AAAA,EAEA,UAAA;AAAA,IACA,kBAAA;;AACA,UAAA,KAAA,YAAA;AACA,eAAA;AAAA,MACA;AAEA,YAAA,CAAA,KAAA,KAAA,kBAAA,eAAA,mBAAA,QAAA,MAAA,KAAA,OAAA,YAAA,CAAA;AACA,aAAA,SAAA,OAAA,SAAA,KAAA,KAAA;AAAA,IACA;AAAA,IAEA,iBAAA;AACA,aAAA,KAAA,YAAA,SAAA;AAAA,IACA;AAAA,IACA,YAAA;AACA,aAAA,KAAA,OAAA,SAAA;AAAA,IACA;AAAA,EACA;AACA;;;;;;;;;;;;;;;;","x_google_ignoreList":[0]}
@@ -1 +0,0 @@
1
- {"version":3,"file":"NcSettingsSection-V9DkkSuI.mjs","sources":["../../node_modules/vue-material-design-icons/HelpCircle.vue","../../src/components/NcSettingsSection/NcSettingsSection.vue"],"sourcesContent":["<template>\n <span v-bind=\"$attrs\"\n :aria-hidden=\"title ? null : true\"\n :aria-label=\"title\"\n class=\"material-design-icon help-circle-icon\"\n role=\"img\"\n @click=\"$emit('click', $event)\">\n <svg :fill=\"fillColor\"\n class=\"material-design-icon__svg\"\n :width=\"size\"\n :height=\"size\"\n viewBox=\"0 0 24 24\">\n <path d=\"M15.07,11.25L14.17,12.17C13.45,12.89 13,13.5 13,15H11V14.5C11,13.39 11.45,12.39 12.17,11.67L13.41,10.41C13.78,10.05 14,9.55 14,9C14,7.89 13.1,7 12,7A2,2 0 0,0 10,9H8A4,4 0 0,1 12,5A4,4 0 0,1 16,9C16,9.88 15.64,10.67 15.07,11.25M13,19H11V17H13M12,2A10,10 0 0,0 2,12A10,10 0 0,0 12,22A10,10 0 0,0 22,12C22,6.47 17.5,2 12,2Z\">\n <title v-if=\"title\">{{ title }}</title>\n </path>\n </svg>\n </span>\n</template>\n\n<script>\nexport default {\n name: \"HelpCircleIcon\",\n emits: ['click'],\n props: {\n title: {\n type: String,\n },\n fillColor: {\n type: String,\n default: \"currentColor\"\n },\n size: {\n type: Number,\n default: 24\n }\n }\n}\n</script>","<!--\n - SPDX-FileCopyrightText: 2019 Nextcloud GmbH and Nextcloud contributors\n - SPDX-License-Identifier: AGPL-3.0-or-later\n-->\n\n<docs>\n### General description\n\nThis component is to be used in the settings section of nextcloud.\n\n### Examples\n\n```vue\n<template>\n\t<div>\n\t\t<NcSettingsSection name=\"Two-factor authentication\"\n\t\t\tdescription=\"Two-factor authentication can be enforced for all accounts and specific groups. If they do not have a two-factor provider configured, they will be unable to log into the system.\"\n\t\t\tdoc-url=\"https://docs.nextcloud.com/server/19/go.php?to=admin-2fa\">\n\t\t\t<NcCheckboxRadioSwitch type=\"switch\">\n\t\t\t\tEnforce two-factor authentication\n\t\t\t</NcCheckboxRadioSwitch>\n\t\t</NcSettingsSection>\n\n\t\t<NcSettingsSection name=\"Server-side encryption\"\n\t\t\tdescription=\"Server-side encryption makes it possible to encrypt files which are uploaded to this server. This comes with limitations like a performance penalty, so enable this only if needed.\">\n\t\t\t<NcCheckboxRadioSwitch type=\"switch\">\n\t\t\t\tEnable server-side encryption\n\t\t\t</NcCheckboxRadioSwitch>\n\t\t</NcSettingsSection>\n\n\t\t<NcSettingsSection name=\"OAuth 2.0 clients\"\n\t\t\tdescription=\"OAuth 2.0 allows external services to request access to Nextcloud.\"\n\t\t\tdoc-url=\"https://docs.nextcloud.com/server/latest/admin_manual/configuration_server/oauth2.html\">\n\n\t\t\tAny content here\n\n\t\t</NcSettingsSection>\n\t</div>\n</template>\n```\n</docs>\n\n<template>\n\t<div class=\"settings-section\" :class=\"{'settings-section--limit-width': forceLimitWidth}\">\n\t\t<h2 class=\"settings-section__name\">\n\t\t\t{{ name }}\n\t\t\t<a v-if=\"hasDocUrl\"\n\t\t\t\t:href=\"docUrl\"\n\t\t\t\tclass=\"settings-section__info\"\n\t\t\t\t:title=\"docNameTranslated\"\n\t\t\t\t:aria-label=\"docNameTranslated\"\n\t\t\t\ttarget=\"_blank\"\n\t\t\t\trel=\"noreferrer nofollow\">\n\t\t\t\t<HelpCircle :size=\"20\" />\n\t\t\t</a>\n\t\t</h2>\n\t\t<p v-if=\"hasDescription\"\n\t\t\tclass=\"settings-section__desc\">\n\t\t\t{{ description }}\n\t\t</p>\n\t\t<slot />\n\t</div>\n</template>\n\n<script>\nimport { t } from '../../l10n.js'\n\nimport HelpCircle from 'vue-material-design-icons/HelpCircle.vue'\n\nexport default {\n\tname: 'NcSettingsSection',\n\n\tcomponents: {\n\t\tHelpCircle,\n\t},\n\n\tprops: {\n\t\tname: {\n\t\t\ttype: String,\n\t\t\trequired: true,\n\t\t},\n\t\tdescription: {\n\t\t\ttype: String,\n\t\t\tdefault: '',\n\t\t},\n\t\tdocUrl: {\n\t\t\ttype: String,\n\t\t\tdefault: '',\n\t\t},\n\t\t/**\n\t\t * Limit the width of the setting's content\n\t\t *\n\t\t * Setting this to false allows unrestricted (width) settings content.\n\t\t * Note that the name and description have always a width limit.\n\t\t * @deprecated Will be removed with next version and will not be used on Nextcloud 30+ (always forced to true)\n\t\t */\n\t\tlimitWidth: {\n\t\t\ttype: Boolean,\n\t\t\tdefault: true,\n\t\t},\n\t},\n\n\tdata() {\n\t\treturn {\n\t\t\tdocNameTranslated: t('External documentation for {name}', {\n\t\t\t\tname: this.name,\n\t\t\t}),\n\t\t}\n\t},\n\n\tcomputed: {\n\t\tforceLimitWidth() {\n\t\t\tif (this.limitWidth) {\n\t\t\t\treturn true\n\t\t\t}\n\t\t\t// Overwrite this on Nextcloud 30+ to always limit the width\n\t\t\tconst [major] = window._oc_config?.version.split('.', 2) ?? []\n\t\t\treturn major && Number.parseInt(major) >= 30\n\t\t},\n\n\t\thasDescription() {\n\t\t\treturn this.description.length > 0\n\t\t},\n\t\thasDocUrl() {\n\t\t\treturn this.docUrl.length > 0\n\t\t},\n\t},\n}\n\n</script>\n\n<style lang=\"scss\" scoped>\n$maxWidth: 900px;\n\n.settings-section {\n\tdisplay: block;\n\tmargin-bottom: auto;\n\tpadding: 30px;\n\n\t&:not(:last-child) {\n\t\tborder-bottom: 1px solid var(--color-border);\n\t}\n\n\t&--limit-width > * {\n\t\tmax-width: $maxWidth;\n\t}\n\n\t&__name {\n\t\tdisplay: inline-flex;\n\t\talign-items: center;\n\t\tjustify-content: center;\n\t\tfont-size: 20px;\n\t\tfont-weight: bold;\n\t\tmax-width: $maxWidth;\n\t\tmargin-top: 0; // Remove default heading margin\n\t}\n\n\t&__info {\n\t\tdisplay: flex;\n\t\talign-items: center;\n\t\tjustify-content: center;\n\t\twidth: var(--default-clickable-area);\n\t\theight: var(--default-clickable-area);\n\t\t// make sure to properly align the icon with the text\n\t\tmargin: calc($icon-margin * -1);\n\t\tmargin-left: 0;\n\t\tcolor: var(--color-text-maxcontrast);\n\n\t\t&:hover, &:focus, &:active {\n\t\t\tcolor: var(--color-main-text);\n\t\t}\n\t}\n\n\t&__desc {\n\t\tmargin-top: -.2em;\n\t\tmargin-bottom: 1em;\n\t\tcolor: var(--color-text-maxcontrast);\n\t\tmax-width: $maxWidth;\n\t}\n}\n\n</style>\n"],"names":["_sfc_main"],"mappings":";;;AAoBA,MAAAA,cAAA;AAAA,EACA,MAAA;AAAA,EACA,OAAA,CAAA,OAAA;AAAA,EACA,OAAA;AAAA,IACA,OAAA;AAAA,MACA,MAAA;AAAA,IACA;AAAA,IACA,WAAA;AAAA,MACA,MAAA;AAAA,MACA,SAAA;AAAA,IACA;AAAA,IACA,MAAA;AAAA,MACA,MAAA;AAAA,MACA,SAAA;AAAA,IACA;AAAA,EACA;AACA;;;;;;;;;;;;;;;;;ACiCA,MAAA,YAAA;AAAA,EACA,MAAA;AAAA,EAEA,YAAA;AAAA,IACA;AAAA,EACA;AAAA,EAEA,OAAA;AAAA,IACA,MAAA;AAAA,MACA,MAAA;AAAA,MACA,UAAA;AAAA,IACA;AAAA,IACA,aAAA;AAAA,MACA,MAAA;AAAA,MACA,SAAA;AAAA,IACA;AAAA,IACA,QAAA;AAAA,MACA,MAAA;AAAA,MACA,SAAA;AAAA,IACA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IAQA,YAAA;AAAA,MACA,MAAA;AAAA,MACA,SAAA;AAAA,IACA;AAAA,EACA;AAAA,EAEA,OAAA;AACA,WAAA;AAAA,MACA,mBAAA,EAAA,qCAAA;AAAA,QACA,MAAA,KAAA;AAAA,MACA,CAAA;AAAA,IACA;AAAA,EACA;AAAA,EAEA,UAAA;AAAA,IACA,kBAAA;;AACA,UAAA,KAAA,YAAA;AACA,eAAA;AAAA,MACA;AAEA,YAAA,CAAA,KAAA,KAAA,kBAAA,eAAA,mBAAA,QAAA,MAAA,KAAA,OAAA,YAAA,CAAA;AACA,aAAA,SAAA,OAAA,SAAA,KAAA,KAAA;AAAA,IACA;AAAA,IAEA,iBAAA;AACA,aAAA,KAAA,YAAA,SAAA;AAAA,IACA;AAAA,IACA,YAAA;AACA,aAAA,KAAA,OAAA,SAAA;AAAA,IACA;AAAA,EACA;AACA;;;;;;;;;;;;;;;","x_google_ignoreList":[0]}
@@ -1 +0,0 @@
1
- {"version":3,"file":"NcSettingsSelectGroup-BTPrOKXu.mjs","sources":["../../src/components/NcSettingsSelectGroup/NcSettingsSelectGroup.vue"],"sourcesContent":["<!--\n - SPDX-FileCopyrightText: 2019 Nextcloud GmbH and Nextcloud contributors\n - SPDX-License-Identifier: AGPL-3.0-or-later\n-->\n\n<docs>\n```vue\n<template>\n\t<section>\n\t\t<NcSettingsSelectGroup v-model=\"groups\" placeholder=\"Select user groups\" label=\"The hidden label\" />\n\t\t<NcSettingsSelectGroup v-model=\"otherGroups\" :disabled=\"true\" label=\"Also a fallback for the placeholder\" />\n\t\t<div>You have selected: <code>{{ groups }}</code> and <code>{{ otherGroups }}</code></div>\n\t</section>\n</template>\n<script>\nexport default {\n\tdata() {\n\t\treturn {\n\t\t\tgroups: [],\n\t\t\totherGroups: ['admin']\n\t\t}\n\t}\n}\n</script>\n<style scoped>\nsection * {\n\tpadding: 6px 0px;\n}\n</style>\n```\n</docs>\n\n<template>\n\t<div>\n\t\t<label v-if=\"label\" :for=\"id\" class=\"hidden-visually\">{{ label }}</label>\n\t\t<NcSelect :value=\"inputValue\"\n\t\t\t:options=\"groupsArray\"\n\t\t\t:placeholder=\"placeholder || label\"\n\t\t\t:filter-by=\"filterGroups\"\n\t\t\t:input-id=\"id\"\n\t\t\t:limit=\"5\"\n\t\t\tlabel=\"displayname\"\n\t\t\t:multiple=\"true\"\n\t\t\t:close-on-select=\"false\"\n\t\t\t:disabled=\"disabled\"\n\t\t\t@input=\"update\"\n\t\t\t@search=\"onSearch\" />\n\t\t<div v-show=\"hasError\" class=\"select-group-error\">\n\t\t\t{{ errorMessage }}\n\t\t</div>\n\t</div>\n</template>\n\n<script>\nimport NcSelect from '../../components/NcSelect/index.js'\nimport { t } from '../../l10n.js'\nimport GenRandomId from '../../utils/GenRandomId.js'\n\nimport axios from '@nextcloud/axios'\nimport debounce from 'debounce'\nimport { generateOcsUrl } from '@nextcloud/router'\n\nexport default {\n\tname: 'NcSettingsSelectGroup',\n\tcomponents: {\n\t\tNcSelect,\n\t},\n\n\tprops: {\n\t\t/**\n\t\t * The text of the label element of the select group input\n\t\t */\n\t\tlabel: {\n\t\t\ttype: String,\n\t\t\trequired: true,\n\t\t},\n\n\t\t/**\n\t\t * Placeholder for the input element\n\t\t * For backwards compatibility it falls back to the `label` value\n\t\t */\n\t\tplaceholder: {\n\t\t\ttype: String,\n\t\t\tdefault: '',\n\t\t},\n\n\t\t/**\n\t\t * id attribute of the select group element\n\t\t */\n\t\tid: {\n\t\t\ttype: String,\n\t\t\tdefault: () => 'action-' + GenRandomId(),\n\t\t\tvalidator: id => id.trim() !== '',\n\t\t},\n\n\t\t/**\n\t\t * value of the select group input\n\t\t * A list of group IDs can be provided\n\t\t */\n\t\tvalue: {\n\t\t\ttype: Array,\n\t\t\tdefault: () => [],\n\t\t},\n\n\t\t/**\n\t\t * disabled state of the settings select group input\n\t\t */\n\t\tdisabled: {\n\t\t\ttype: Boolean,\n\t\t\tdefault: false,\n\t\t},\n\t},\n\temits: [\n\t\t'input',\n\t\t'error',\n\t],\n\tdata() {\n\t\treturn {\n\t\t\t/** Temporary store to cache groups */\n\t\t\tgroups: {},\n\t\t\trandId: GenRandomId(),\n\t\t\terrorMessage: '',\n\t\t}\n\t},\n\tcomputed: {\n\t\t/**\n\t\t * If the error message should be shown\n\t\t */\n\t\thasError() {\n\t\t\treturn this.errorMessage !== ''\n\t\t},\n\n\t\t/**\n\t\t * Validate input value and only return valid strings (group IDs)\n\t\t *\n\t\t * @return {string[]}\n\t\t */\n\t\tfilteredValue() {\n\t\t\treturn this.value.filter((group) => group !== '' && typeof group === 'string')\n\t\t},\n\n\t\t/**\n\t\t * value property converted to an array of group objects used as input for the NcSelect\n\t\t */\n\t\tinputValue() {\n\t\t\treturn this.filteredValue.map(\n\t\t\t\t(id) => {\n\t\t\t\t\tif (typeof this.groups[id] === 'undefined') {\n\t\t\t\t\t\treturn {\n\t\t\t\t\t\t\tid,\n\t\t\t\t\t\t\tdisplayname: id,\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\treturn this.groups[id]\n\t\t\t\t},\n\t\t\t)\n\t\t},\n\n\t\t/**\n\t\t * Convert groups object to array of groups required for NcSelect.options\n\t\t * Filter out currently selected values\n\t\t *\n\t\t * @return {object[]}\n\t\t */\n\t\tgroupsArray() {\n\t\t\treturn Object.values(this.groups).filter(g => !this.value.includes(g.id))\n\t\t},\n\t},\n\twatch: {\n\t\t/**\n\t\t * If the value is changed, check that all groups are loaded so we show the correct display name\n\t\t */\n\t\tvalue: {\n\t\t\thandler() {\n\t\t\t\tconst loadedGroupIds = Object.keys(this.groups)\n\t\t\t\tconst missing = this.filteredValue.filter(group => !loadedGroupIds.includes(group))\n\t\t\t\tmissing.forEach((groupId) => {\n\t\t\t\t\tthis.loadGroup(groupId)\n\t\t\t\t})\n\t\t\t},\n\t\t\t// Run the watch handler also when the component is initially mounted\n\t\t\timmediate: true,\n\t\t},\n\t},\n\t/**\n\t * Load groups matching the empty query to reduce API calls\n\t */\n\tasync mounted() {\n\t\t// version scoped to prevent issues with different library versions\n\t\tconst storageName = `${appName}:${appVersion}/initialGroups`\n\n\t\tlet savedGroups = window.sessionStorage.getItem(storageName)\n\t\tif (savedGroups) {\n\t\t\tsavedGroups = Object.fromEntries(JSON.parse(savedGroups).map(group => [group.id, group]))\n\t\t\tthis.groups = { ...this.groups, ...savedGroups }\n\t\t} else {\n\t\t\tawait this.loadGroup('')\n\t\t\twindow.sessionStorage.setItem(storageName, JSON.stringify(Object.values(this.groups)))\n\t\t}\n\t},\n\tmethods: {\n\t\tt,\n\n\t\t/**\n\t\t * Called when a new group is selected or previous group is deselected to emit the update event\n\t\t *\n\t\t * @param {object[]} updatedValue Array of selected groups\n\t\t */\n\t\tupdate(updatedValue) {\n\t\t\tconst value = updatedValue.map((element) => element.id)\n\t\t\t/** Emitted when the groups selection changes<br />**Payload:** `value` (`Array`) - *Ids of selected groups */\n\t\t\tthis.$emit('input', value)\n\t\t},\n\n\t\t/**\n\t\t * Use provisioning API to search for given group and save it in the groups object\n\t\t *\n\t\t * @param {string} query The query like parts of the id oder display name\n\t\t * @return {boolean}\n\t\t */\n\t\tasync loadGroup(query) {\n\t\t\ttry {\n\t\t\t\tquery = typeof query === 'string' ? encodeURI(query) : ''\n\t\t\t\tconst response = await axios.get(generateOcsUrl(`cloud/groups/details?search=${query}&limit=10`, 2))\n\n\t\t\t\t// No network error, so reset any error after 5 seconds\n\t\t\t\tif (this.errorMessage !== '') {\n\t\t\t\t\twindow.setTimeout(() => {\n\t\t\t\t\t\tthis.errorMessage = ''\n\t\t\t\t\t}, 5000)\n\t\t\t\t}\n\n\t\t\t\tif (Object.keys(response.data.ocs.data.groups).length > 0) {\n\t\t\t\t\tconst newGroups = Object.fromEntries(response.data.ocs.data.groups.map((element) => [element.id, element]))\n\t\t\t\t\tthis.groups = { ...this.groups, ...newGroups }\n\t\t\t\t\treturn true\n\t\t\t\t}\n\t\t\t} catch (error) {\n\t\t\t\t/** Emitted if groups could not be queried.<br />**Payload:** `error` (`object`) - The Axios error */\n\t\t\t\tthis.$emit('error', error)\n\t\t\t\tthis.errorMessage = t('Unable to search the group')\n\t\t\t}\n\t\t\treturn false\n\t\t},\n\n\t\t/**\n\t\t * Custom filter function for `NcSelect` to filter by ID *and* display name\n\t\t *\n\t\t * @param {object} option One of the groups\n\t\t * @param {string} label The label property of the group\n\t\t * @param {string} search The current search string\n\t\t */\n\t\tfilterGroups(option, label, search) {\n\t\t\treturn `${label || ''} ${option.id}`.toLocaleLowerCase().indexOf(search.toLocaleLowerCase()) > -1\n\t\t},\n\n\t\t/**\n\t\t * Debounce the group search (reduce API calls)\n\t\t */\n\t\tonSearch: debounce(function(query) {\n\t\t\tthis.loadGroup(query)\n\t\t}, 200),\n\t},\n}\n</script>\n\n<style scoped lang=\"scss\">\n.select-group-error {\n\tcolor: var(--color-error);\n\tfont-size: 13px;\n\tpadding-inline-start: var(--border-radius-large);\n}\n</style>\n"],"names":[],"mappings":";;;;;;;;AA8DA,MAAA,YAAA;AAAA,EACA,MAAA;AAAA,EACA,YAAA;AAAA,IACA;AAAA,EACA;AAAA,EAEA,OAAA;AAAA;AAAA;AAAA;AAAA,IAIA,OAAA;AAAA,MACA,MAAA;AAAA,MACA,UAAA;AAAA,IACA;AAAA;AAAA;AAAA;AAAA;AAAA,IAMA,aAAA;AAAA,MACA,MAAA;AAAA,MACA,SAAA;AAAA,IACA;AAAA;AAAA;AAAA;AAAA,IAKA,IAAA;AAAA,MACA,MAAA;AAAA,MACA,SAAA,MAAA,YAAA,YAAA;AAAA,MACA,WAAA,QAAA,GAAA,KAAA,MAAA;AAAA,IACA;AAAA;AAAA;AAAA;AAAA;AAAA,IAMA,OAAA;AAAA,MACA,MAAA;AAAA,MACA,SAAA,MAAA,CAAA;AAAA,IACA;AAAA;AAAA;AAAA;AAAA,IAKA,UAAA;AAAA,MACA,MAAA;AAAA,MACA,SAAA;AAAA,IACA;AAAA,EACA;AAAA,EACA,OAAA;AAAA,IACA;AAAA,IACA;AAAA,EACA;AAAA,EACA,OAAA;AACA,WAAA;AAAA;AAAA,MAEA,QAAA,CAAA;AAAA,MACA,QAAA,YAAA;AAAA,MACA,cAAA;AAAA,IACA;AAAA,EACA;AAAA,EACA,UAAA;AAAA;AAAA;AAAA;AAAA,IAIA,WAAA;AACA,aAAA,KAAA,iBAAA;AAAA,IACA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IAOA,gBAAA;AACA,aAAA,KAAA,MAAA,OAAA,CAAA,UAAA,UAAA,MAAA,OAAA,UAAA,QAAA;AAAA,IACA;AAAA;AAAA;AAAA;AAAA,IAKA,aAAA;AACA,aAAA,KAAA,cAAA;AAAA,QACA,CAAA,OAAA;AACA,cAAA,OAAA,KAAA,OAAA,EAAA,MAAA,aAAA;AACA,mBAAA;AAAA,cACA;AAAA,cACA,aAAA;AAAA,YACA;AAAA,UACA;AACA,iBAAA,KAAA,OAAA,EAAA;AAAA,QACA;AAAA,MACA;AAAA,IACA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IAQA,cAAA;AACA,aAAA,OAAA,OAAA,KAAA,MAAA,EAAA,OAAA,OAAA,CAAA,KAAA,MAAA,SAAA,EAAA,EAAA,CAAA;AAAA,IACA;AAAA,EACA;AAAA,EACA,OAAA;AAAA;AAAA;AAAA;AAAA,IAIA,OAAA;AAAA,MACA,UAAA;AACA,cAAA,iBAAA,OAAA,KAAA,KAAA,MAAA;AACA,cAAA,UAAA,KAAA,cAAA,OAAA,WAAA,CAAA,eAAA,SAAA,KAAA,CAAA;AACA,gBAAA,QAAA,CAAA,YAAA;AACA,eAAA,UAAA,OAAA;AAAA,QACA,CAAA;AAAA,MACA;AAAA;AAAA,MAEA,WAAA;AAAA,IACA;AAAA,EACA;AAAA;AAAA;AAAA;AAAA,EAIA,MAAA,UAAA;AAEA,UAAA,cAAA,GAAA,gBAAA,KAAA,mBAAA;AAEA,QAAA,cAAA,OAAA,eAAA,QAAA,WAAA;AACA,QAAA,aAAA;AACA,oBAAA,OAAA,YAAA,KAAA,MAAA,WAAA,EAAA,IAAA,WAAA,CAAA,MAAA,IAAA,KAAA,CAAA,CAAA;AACA,WAAA,SAAA,EAAA,GAAA,KAAA,QAAA,GAAA,YAAA;AAAA,IACA,OAAA;AACA,YAAA,KAAA,UAAA,EAAA;AACA,aAAA,eAAA,QAAA,aAAA,KAAA,UAAA,OAAA,OAAA,KAAA,MAAA,CAAA,CAAA;AAAA,IACA;AAAA,EACA;AAAA,EACA,SAAA;AAAA,IACA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IAOA,OAAA,cAAA;AACA,YAAA,QAAA,aAAA,IAAA,CAAA,YAAA,QAAA,EAAA;AAEA,WAAA,MAAA,SAAA,KAAA;AAAA,IACA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IAQA,MAAA,UAAA,OAAA;AACA,UAAA;AACA,gBAAA,OAAA,UAAA,WAAA,UAAA,KAAA,IAAA;AACA,cAAA,WAAA,MAAA,MAAA,IAAA,eAAA,+BAAA,cAAA,cAAA,CAAA,CAAA;AAGA,YAAA,KAAA,iBAAA,IAAA;AACA,iBAAA,WAAA,MAAA;AACA,iBAAA,eAAA;AAAA,UACA,GAAA,GAAA;AAAA,QACA;AAEA,YAAA,OAAA,KAAA,SAAA,KAAA,IAAA,KAAA,MAAA,EAAA,SAAA,GAAA;AACA,gBAAA,YAAA,OAAA,YAAA,SAAA,KAAA,IAAA,KAAA,OAAA,IAAA,CAAA,YAAA,CAAA,QAAA,IAAA,OAAA,CAAA,CAAA;AACA,eAAA,SAAA,EAAA,GAAA,KAAA,QAAA,GAAA,UAAA;AACA,iBAAA;AAAA,QACA;AAAA,MACA,SAAA,OAAA;AAEA,aAAA,MAAA,SAAA,KAAA;AACA,aAAA,eAAA,EAAA,4BAAA;AAAA,MACA;AACA,aAAA;AAAA,IACA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IASA,aAAA,QAAA,OAAA,QAAA;AACA,aAAA,GAAA,gBAAA,IAAA,KAAA,cAAA,IAAA,kBAAA,EAAA,QAAA,OAAA,kBAAA,CAAA,IAAA;AAAA,IACA;AAAA;AAAA;AAAA;AAAA,IAKA,UAAA,SAAA,SAAA,OAAA;AACA,WAAA,UAAA,KAAA;AAAA,IACA,GAAA,GAAA;AAAA,EACA;AACA;;;;;;;;;;;;;;;"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"NcSettingsSelectGroup-DDwAZI5O.cjs","sources":["../../src/components/NcSettingsSelectGroup/NcSettingsSelectGroup.vue"],"sourcesContent":["<!--\n - SPDX-FileCopyrightText: 2019 Nextcloud GmbH and Nextcloud contributors\n - SPDX-License-Identifier: AGPL-3.0-or-later\n-->\n\n<docs>\n```vue\n<template>\n\t<section>\n\t\t<NcSettingsSelectGroup v-model=\"groups\" placeholder=\"Select user groups\" label=\"The hidden label\" />\n\t\t<NcSettingsSelectGroup v-model=\"otherGroups\" :disabled=\"true\" label=\"Also a fallback for the placeholder\" />\n\t\t<div>You have selected: <code>{{ groups }}</code> and <code>{{ otherGroups }}</code></div>\n\t</section>\n</template>\n<script>\nexport default {\n\tdata() {\n\t\treturn {\n\t\t\tgroups: [],\n\t\t\totherGroups: ['admin']\n\t\t}\n\t}\n}\n</script>\n<style scoped>\nsection * {\n\tpadding: 6px 0px;\n}\n</style>\n```\n</docs>\n\n<template>\n\t<div>\n\t\t<label v-if=\"label\" :for=\"id\" class=\"hidden-visually\">{{ label }}</label>\n\t\t<NcSelect :value=\"inputValue\"\n\t\t\t:options=\"groupsArray\"\n\t\t\t:placeholder=\"placeholder || label\"\n\t\t\t:filter-by=\"filterGroups\"\n\t\t\t:input-id=\"id\"\n\t\t\t:limit=\"5\"\n\t\t\tlabel=\"displayname\"\n\t\t\t:multiple=\"true\"\n\t\t\t:close-on-select=\"false\"\n\t\t\t:disabled=\"disabled\"\n\t\t\t@input=\"update\"\n\t\t\t@search=\"onSearch\" />\n\t\t<div v-show=\"hasError\" class=\"select-group-error\">\n\t\t\t{{ errorMessage }}\n\t\t</div>\n\t</div>\n</template>\n\n<script>\nimport NcSelect from '../../components/NcSelect/index.js'\nimport { t } from '../../l10n.js'\nimport GenRandomId from '../../utils/GenRandomId.js'\n\nimport axios from '@nextcloud/axios'\nimport debounce from 'debounce'\nimport { generateOcsUrl } from '@nextcloud/router'\n\nexport default {\n\tname: 'NcSettingsSelectGroup',\n\tcomponents: {\n\t\tNcSelect,\n\t},\n\n\tprops: {\n\t\t/**\n\t\t * The text of the label element of the select group input\n\t\t */\n\t\tlabel: {\n\t\t\ttype: String,\n\t\t\trequired: true,\n\t\t},\n\n\t\t/**\n\t\t * Placeholder for the input element\n\t\t * For backwards compatibility it falls back to the `label` value\n\t\t */\n\t\tplaceholder: {\n\t\t\ttype: String,\n\t\t\tdefault: '',\n\t\t},\n\n\t\t/**\n\t\t * id attribute of the select group element\n\t\t */\n\t\tid: {\n\t\t\ttype: String,\n\t\t\tdefault: () => 'action-' + GenRandomId(),\n\t\t\tvalidator: id => id.trim() !== '',\n\t\t},\n\n\t\t/**\n\t\t * value of the select group input\n\t\t * A list of group IDs can be provided\n\t\t */\n\t\tvalue: {\n\t\t\ttype: Array,\n\t\t\tdefault: () => [],\n\t\t},\n\n\t\t/**\n\t\t * disabled state of the settings select group input\n\t\t */\n\t\tdisabled: {\n\t\t\ttype: Boolean,\n\t\t\tdefault: false,\n\t\t},\n\t},\n\temits: [\n\t\t'input',\n\t\t'error',\n\t],\n\tdata() {\n\t\treturn {\n\t\t\t/** Temporary store to cache groups */\n\t\t\tgroups: {},\n\t\t\trandId: GenRandomId(),\n\t\t\terrorMessage: '',\n\t\t}\n\t},\n\tcomputed: {\n\t\t/**\n\t\t * If the error message should be shown\n\t\t */\n\t\thasError() {\n\t\t\treturn this.errorMessage !== ''\n\t\t},\n\n\t\t/**\n\t\t * Validate input value and only return valid strings (group IDs)\n\t\t *\n\t\t * @return {string[]}\n\t\t */\n\t\tfilteredValue() {\n\t\t\treturn this.value.filter((group) => group !== '' && typeof group === 'string')\n\t\t},\n\n\t\t/**\n\t\t * value property converted to an array of group objects used as input for the NcSelect\n\t\t */\n\t\tinputValue() {\n\t\t\treturn this.filteredValue.map(\n\t\t\t\t(id) => {\n\t\t\t\t\tif (typeof this.groups[id] === 'undefined') {\n\t\t\t\t\t\treturn {\n\t\t\t\t\t\t\tid,\n\t\t\t\t\t\t\tdisplayname: id,\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\treturn this.groups[id]\n\t\t\t\t},\n\t\t\t)\n\t\t},\n\n\t\t/**\n\t\t * Convert groups object to array of groups required for NcSelect.options\n\t\t * Filter out currently selected values\n\t\t *\n\t\t * @return {object[]}\n\t\t */\n\t\tgroupsArray() {\n\t\t\treturn Object.values(this.groups).filter(g => !this.value.includes(g.id))\n\t\t},\n\t},\n\twatch: {\n\t\t/**\n\t\t * If the value is changed, check that all groups are loaded so we show the correct display name\n\t\t */\n\t\tvalue: {\n\t\t\thandler() {\n\t\t\t\tconst loadedGroupIds = Object.keys(this.groups)\n\t\t\t\tconst missing = this.filteredValue.filter(group => !loadedGroupIds.includes(group))\n\t\t\t\tmissing.forEach((groupId) => {\n\t\t\t\t\tthis.loadGroup(groupId)\n\t\t\t\t})\n\t\t\t},\n\t\t\t// Run the watch handler also when the component is initially mounted\n\t\t\timmediate: true,\n\t\t},\n\t},\n\t/**\n\t * Load groups matching the empty query to reduce API calls\n\t */\n\tasync mounted() {\n\t\t// version scoped to prevent issues with different library versions\n\t\tconst storageName = `${appName}:${appVersion}/initialGroups`\n\n\t\tlet savedGroups = window.sessionStorage.getItem(storageName)\n\t\tif (savedGroups) {\n\t\t\tsavedGroups = Object.fromEntries(JSON.parse(savedGroups).map(group => [group.id, group]))\n\t\t\tthis.groups = { ...this.groups, ...savedGroups }\n\t\t} else {\n\t\t\tawait this.loadGroup('')\n\t\t\twindow.sessionStorage.setItem(storageName, JSON.stringify(Object.values(this.groups)))\n\t\t}\n\t},\n\tmethods: {\n\t\tt,\n\n\t\t/**\n\t\t * Called when a new group is selected or previous group is deselected to emit the update event\n\t\t *\n\t\t * @param {object[]} updatedValue Array of selected groups\n\t\t */\n\t\tupdate(updatedValue) {\n\t\t\tconst value = updatedValue.map((element) => element.id)\n\t\t\t/** Emitted when the groups selection changes<br />**Payload:** `value` (`Array`) - *Ids of selected groups */\n\t\t\tthis.$emit('input', value)\n\t\t},\n\n\t\t/**\n\t\t * Use provisioning API to search for given group and save it in the groups object\n\t\t *\n\t\t * @param {string} query The query like parts of the id oder display name\n\t\t * @return {boolean}\n\t\t */\n\t\tasync loadGroup(query) {\n\t\t\ttry {\n\t\t\t\tquery = typeof query === 'string' ? encodeURI(query) : ''\n\t\t\t\tconst response = await axios.get(generateOcsUrl(`cloud/groups/details?search=${query}&limit=10`, 2))\n\n\t\t\t\t// No network error, so reset any error after 5 seconds\n\t\t\t\tif (this.errorMessage !== '') {\n\t\t\t\t\twindow.setTimeout(() => {\n\t\t\t\t\t\tthis.errorMessage = ''\n\t\t\t\t\t}, 5000)\n\t\t\t\t}\n\n\t\t\t\tif (Object.keys(response.data.ocs.data.groups).length > 0) {\n\t\t\t\t\tconst newGroups = Object.fromEntries(response.data.ocs.data.groups.map((element) => [element.id, element]))\n\t\t\t\t\tthis.groups = { ...this.groups, ...newGroups }\n\t\t\t\t\treturn true\n\t\t\t\t}\n\t\t\t} catch (error) {\n\t\t\t\t/** Emitted if groups could not be queried.<br />**Payload:** `error` (`object`) - The Axios error */\n\t\t\t\tthis.$emit('error', error)\n\t\t\t\tthis.errorMessage = t('Unable to search the group')\n\t\t\t}\n\t\t\treturn false\n\t\t},\n\n\t\t/**\n\t\t * Custom filter function for `NcSelect` to filter by ID *and* display name\n\t\t *\n\t\t * @param {object} option One of the groups\n\t\t * @param {string} label The label property of the group\n\t\t * @param {string} search The current search string\n\t\t */\n\t\tfilterGroups(option, label, search) {\n\t\t\treturn `${label || ''} ${option.id}`.toLocaleLowerCase().indexOf(search.toLocaleLowerCase()) > -1\n\t\t},\n\n\t\t/**\n\t\t * Debounce the group search (reduce API calls)\n\t\t */\n\t\tonSearch: debounce(function(query) {\n\t\t\tthis.loadGroup(query)\n\t\t}, 200),\n\t},\n}\n</script>\n\n<style scoped lang=\"scss\">\n.select-group-error {\n\tcolor: var(--color-error);\n\tfont-size: 13px;\n\tpadding-inline-start: var(--border-radius-large);\n}\n</style>\n"],"names":["NcSelect","GenRandomId","t","axios","generateOcsUrl","debounce"],"mappings":"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"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"NcTextField-BnZnDMjV.cjs","sources":["../../node_modules/vue-material-design-icons/UndoVariant.vue","../../src/components/NcTextField/NcTextField.vue"],"sourcesContent":["<template>\n <span v-bind=\"$attrs\"\n :aria-hidden=\"title ? null : true\"\n :aria-label=\"title\"\n class=\"material-design-icon undo-variant-icon\"\n role=\"img\"\n @click=\"$emit('click', $event)\">\n <svg :fill=\"fillColor\"\n class=\"material-design-icon__svg\"\n :width=\"size\"\n :height=\"size\"\n viewBox=\"0 0 24 24\">\n <path d=\"M13.5,7A6.5,6.5 0 0,1 20,13.5A6.5,6.5 0 0,1 13.5,20H10V18H13.5C16,18 18,16 18,13.5C18,11 16,9 13.5,9H7.83L10.91,12.09L9.5,13.5L4,8L9.5,2.5L10.92,3.91L7.83,7H13.5M6,18H8V20H6V18Z\">\n <title v-if=\"title\">{{ title }}</title>\n </path>\n </svg>\n </span>\n</template>\n\n<script>\nexport default {\n name: \"UndoVariantIcon\",\n emits: ['click'],\n props: {\n title: {\n type: String,\n },\n fillColor: {\n type: String,\n default: \"currentColor\"\n },\n size: {\n type: Number,\n default: 24\n }\n }\n}\n</script>","<!--\n - SPDX-FileCopyrightText: 2022 Nextcloud GmbH and Nextcloud contributors\n - SPDX-License-Identifier: AGPL-3.0-or-later\n-->\n\n<docs>\n### Description\nSee [NcInputField](#/Components/NcFields?id=ncinputfield) for a list of all available props.\n\nGeneral purpose text field component.\nIt is recommended to not only provide a placeholder, but also a label.\nThe label should describe what input is expected and the placehold what format the input should have.\n\nNote: the inner html `input` element inherits all the attributes from the\nNcTextField component so you can add things like `autocomplete`, `maxlength`\nand `minlength`.\n\n```\n<template>\n\t<div class=\"wrapper\">\n\t\t<NcTextField :value.sync=\"text1\"\n\t\t\tlabel=\"Leading icon and clear trailing button\"\n\t\t\ttrailing-button-icon=\"close\"\n\t\t\t:show-trailing-button=\"text1 !== ''\"\n\t\t\t@trailing-button-click=\"clearText\">\n\t\t\t<Magnify :size=\"20\" />\n\t\t</NcTextField>\n\t\t<NcTextField :value.sync=\"text4\"\n\t\t\tlabel=\"Internal label\"\n\t\t\tplaceholder=\"That can be used together with placeholder\"\n\t\t\ttrailing-button-icon=\"close\"\n\t\t\t:show-trailing-button=\"text4 !== ''\"\n\t\t\t@trailing-button-click=\"clearText\">\n\t\t\t<Lock :size=\"20\" />\n\t\t</NcTextField>\n\t\t<NcTextField :value.sync=\"text2\"\n\t\t\tlabel=\"With helper text\"\n\t\t\thelper-text=\"This is an optional message to show e.g. validation errors.\"\n\t\t\t@trailing-button-click=\"clearText\">\n\t\t</NcTextField>\n\t\t<NcTextField :value.sync=\"text2\"\n\t\t\tlabel=\"Success state\"\n\t\t\tplaceholder=\"Placeholders are possible\"\n\t\t\t:success=\"true\"\n\t\t\t@trailing-button-click=\"clearText\">\n\t\t</NcTextField>\n\t\t<NcTextField :value.sync=\"text3\"\n\t\t\tlabel=\"Error state\"\n\t\t\tplaceholder=\"Enter something valid\"\n\t\t\t:error=\"true\"\n\t\t\t@trailing-button-click=\"clearText\">\n\t\t</NcTextField>\n\t\t<NcTextField label=\"Disabled\"\n\t\t\t:disabled=\"true\" />\n\t\t<NcTextField label=\"Disabled + Success\"\n\t\t\t:success=\"true\"\n\t\t\t:disabled=\"true\" />\n\t\t<div class=\"external-label\">\n\t\t\t<label for=\"textField\">External label</label>\n\t\t\t<NcTextField :value.sync=\"text5\"\n\t\t\t\tid=\"textField\"\n\t\t\t\t:label-outside=\"true\"\n\t\t\t\tplaceholder=\"Input with external label\"\n\t\t\t\t@trailing-button-click=\"clearText\" />\n\t\t</div>\n\t</div>\n</template>\n<script>\nimport Magnify from 'vue-material-design-icons/Magnify'\nimport Lock from 'vue-material-design-icons/Lock'\nimport Close from 'vue-material-design-icons/Close'\n\nexport default {\n\tdata() {\n\t\treturn {\n\t\t\ttext1: '',\n\t\t\ttext2: '',\n\t\t\ttext3: '',\n\t\t\ttext4: '',\n\t\t\ttext5: '',\n\t\t}\n\t},\n\n\tcomponents: {\n\t\tMagnify,\n\t\tLock,\n\t\tClose,\n\t},\n\n\tmethods: {\n\t\tclearText() {\n\t\t\tthis.text1 = ''\n\t\t\tthis.text3 = ''\n\t\t}\n\t}\n}\n</script>\n<style lang=\"scss\" scoped>\n.wrapper {\n\tdisplay: flex;\n\tgap: 4px;\n\talign-items: flex-end;\n\tflex-wrap: wrap;\n}\n\n.external-label {\n\tdisplay: flex;\n\twidth: 100%;\n\tmargin-top: 1rem;\n}\n\n.external-label label {\n\tpadding-top: 7px;\n\tpadding-right: 14px;\n\twhite-space: nowrap;\n}\n</style>\n```\n</docs>\n\n<template>\n\t<NcInputField v-bind=\"propsAndAttrsToForward\"\n\t\tref=\"inputField\"\n\t\tv-on=\"$listeners\"\n\t\t@input=\"handleInput\">\n\t\t<!-- Default slot for the leading icon -->\n\t\t<slot />\n\n\t\t<!-- Trailing icon slot, except for search type input as the browser already adds a trailing close icon -->\n\t\t<template v-if=\"type !== 'search'\" #trailing-button-icon>\n\t\t\t<Close v-if=\"trailingButtonIcon === 'close'\" :size=\"20\" />\n\t\t\t<ArrowRight v-else-if=\"trailingButtonIcon === 'arrowRight'\" :size=\"20\" />\n\t\t\t<Undo v-else-if=\"trailingButtonIcon === 'undo'\" :size=\"20\" />\n\t\t</template>\n\t</NcInputField>\n</template>\n\n<script>\n\nimport NcInputField from '../NcInputField/NcInputField.vue'\n\nimport Close from 'vue-material-design-icons/Close.vue'\nimport ArrowRight from 'vue-material-design-icons/ArrowRight.vue'\nimport Undo from 'vue-material-design-icons/UndoVariant.vue'\n\nimport { t } from '../../l10n.js'\n\nconst NcInputFieldProps = new Set(Object.keys(NcInputField.props))\n\nexport default {\n\tname: 'NcTextField',\n\n\tcomponents: {\n\t\tNcInputField,\n\t\tClose,\n\t\tArrowRight,\n\t\tUndo,\n\t},\n\n\t// Allow forwarding all attributes\n\tinheritAttrs: false,\n\n\tprops: {\n\t\t/**\n\t\t * Any [NcInputField](#/Components/NcFields?id=ncinputfield) props\n\t\t */\n\t\t// Not an actual prop but needed to show in vue-styleguidist docs\n\t\t// eslint-disable-next-line\n\t\t' ': {},\n\n\t\t// Reuse all the props from NcInputField for better typing and documentation\n\t\t...NcInputField.props,\n\n\t\t/**\n\t\t * The `aria-label` to set on the trailing button\n\t\t * If no explicit value is set it will default to the one matching the `trailingButtonIcon`:\n\t\t * @default 'Clear text'|'Save changes'|'Undo changes'\n\t\t */\n\t\ttrailingButtonLabel: {\n\t\t\ttype: String,\n\t\t\tdefault: '',\n\t\t},\n\n\t\t// Custom props\n\n\t\t/**\n\t\t * Specifies which material design icon should be used for the trailing\n\t\t * button.\n\t\t * @type {'close'|'arrowRight'|'undo'}\n\t\t */\n\t\ttrailingButtonIcon: {\n\t\t\ttype: String,\n\t\t\tdefault: 'close',\n\t\t\tvalidator: (value) => [\n\t\t\t\t'close',\n\t\t\t\t'arrowRight',\n\t\t\t\t'undo',\n\t\t\t].includes(value),\n\t\t},\n\t},\n\n\temits: [\n\t\t'update:value',\n\t],\n\n\tcomputed: {\n\t\tpropsAndAttrsToForward() {\n\t\t\tconst predefinedLabels = {\n\t\t\t\tundo: t('Undo changes'),\n\t\t\t\tclose: t('Clear text'),\n\t\t\t\tarrowRight: t('Save changes'),\n\t\t\t}\n\n\t\t\treturn {\n\t\t\t\t// Proxy all the HTML attributes\n\t\t\t\t...this.$attrs,\n\t\t\t\t// Proxy original NcInputField's props\n\t\t\t\t...Object.fromEntries(\n\t\t\t\t\tObject.entries(this.$props).filter(([key]) => NcInputFieldProps.has(key)),\n\t\t\t\t),\n\t\t\t\t// Adjust aria-label for predefined trailing buttons\n\t\t\t\ttrailingButtonLabel: this.trailingButtonLabel || predefinedLabels[this.trailingButtonIcon],\n\t\t\t}\n\t\t},\n\t},\n\n\tmethods: {\n\t\t/**\n\t\t * Focus the input element\n\t\t *\n\t\t * @public\n\t\t */\n\t\tfocus() {\n\t\t\tthis.$refs.inputField.focus()\n\t\t},\n\n\t\t/**\n\t\t * Select all the text in the input\n\t\t *\n\t\t * @public\n\t\t */\n\t\tselect() {\n\t\t\tthis.$refs.inputField.select()\n\t\t},\n\n\t\thandleInput(event) {\n\t\t\tthis.$emit('update:value', event.target.value)\n\t\t},\n\t},\n}\n</script>\n"],"names":["_sfc_main","NcInputField","Close","ArrowRight","t"],"mappings":";;;;;;AAoBA,MAAAA,cAAA;AAAA,EACA,MAAA;AAAA,EACA,OAAA,CAAA,OAAA;AAAA,EACA,OAAA;AAAA,IACA,OAAA;AAAA,MACA,MAAA;AAAA,IACA;AAAA,IACA,WAAA;AAAA,MACA,MAAA;AAAA,MACA,SAAA;AAAA,IACA;AAAA,IACA,MAAA;AAAA,MACA,MAAA;AAAA,MACA,SAAA;AAAA,IACA;AAAA,EACA;AACA;;;;;;;;;;;;;;;;;;AC+GA,MAAA,oBAAA,IAAA,IAAA,OAAA,KAAAC,wBAAA,KAAA,CAAA;AAEA,MAAA,YAAA;AAAA,EACA,MAAA;AAAA,EAEA,YAAA;AAAA,IACA,cAAAA;AAAAA,IACA,OAAAC,MAAA;AAAA,IACA,YAAAC,WAAA;AAAA,IACA;AAAA,EACA;AAAA;AAAA,EAGA,cAAA;AAAA,EAEA,OAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IAMA,KAAA,CAAA;AAAA;AAAA,IAGA,GAAAF,wBAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IAOA,qBAAA;AAAA,MACA,MAAA;AAAA,MACA,SAAA;AAAA,IACA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IASA,oBAAA;AAAA,MACA,MAAA;AAAA,MACA,SAAA;AAAA,MACA,WAAA,CAAA,UAAA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,MACA,EAAA,SAAA,KAAA;AAAA,IACA;AAAA,EACA;AAAA,EAEA,OAAA;AAAA,IACA;AAAA,EACA;AAAA,EAEA,UAAA;AAAA,IACA,yBAAA;AACA,YAAA,mBAAA;AAAA,QACA,MAAAG,MAAA,EAAA,cAAA;AAAA,QACA,OAAAA,MAAA,EAAA,YAAA;AAAA,QACA,YAAAA,MAAA,EAAA,cAAA;AAAA,MACA;AAEA,aAAA;AAAA;AAAA,QAEA,GAAA,KAAA;AAAA;AAAA,QAEA,GAAA,OAAA;AAAA,UACA,OAAA,QAAA,KAAA,MAAA,EAAA,OAAA,CAAA,CAAA,GAAA,MAAA,kBAAA,IAAA,GAAA,CAAA;AAAA,QACA;AAAA;AAAA,QAEA,qBAAA,KAAA,uBAAA,iBAAA,KAAA,kBAAA;AAAA,MACA;AAAA,IACA;AAAA,EACA;AAAA,EAEA,SAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IAMA,QAAA;AACA,WAAA,MAAA,WAAA,MAAA;AAAA,IACA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IAOA,SAAA;AACA,WAAA,MAAA,WAAA,OAAA;AAAA,IACA;AAAA,IAEA,YAAA,OAAA;AACA,WAAA,MAAA,gBAAA,MAAA,OAAA,KAAA;AAAA,IACA;AAAA,EACA;AACA;;;;;;;;;;;;;;;;;;","x_google_ignoreList":[0]}
@@ -1 +0,0 @@
1
- {"version":3,"file":"NcTextField-CmXmPZ4h.mjs","sources":["../../node_modules/vue-material-design-icons/UndoVariant.vue","../../src/components/NcTextField/NcTextField.vue"],"sourcesContent":["<template>\n <span v-bind=\"$attrs\"\n :aria-hidden=\"title ? null : true\"\n :aria-label=\"title\"\n class=\"material-design-icon undo-variant-icon\"\n role=\"img\"\n @click=\"$emit('click', $event)\">\n <svg :fill=\"fillColor\"\n class=\"material-design-icon__svg\"\n :width=\"size\"\n :height=\"size\"\n viewBox=\"0 0 24 24\">\n <path d=\"M13.5,7A6.5,6.5 0 0,1 20,13.5A6.5,6.5 0 0,1 13.5,20H10V18H13.5C16,18 18,16 18,13.5C18,11 16,9 13.5,9H7.83L10.91,12.09L9.5,13.5L4,8L9.5,2.5L10.92,3.91L7.83,7H13.5M6,18H8V20H6V18Z\">\n <title v-if=\"title\">{{ title }}</title>\n </path>\n </svg>\n </span>\n</template>\n\n<script>\nexport default {\n name: \"UndoVariantIcon\",\n emits: ['click'],\n props: {\n title: {\n type: String,\n },\n fillColor: {\n type: String,\n default: \"currentColor\"\n },\n size: {\n type: Number,\n default: 24\n }\n }\n}\n</script>","<!--\n - SPDX-FileCopyrightText: 2022 Nextcloud GmbH and Nextcloud contributors\n - SPDX-License-Identifier: AGPL-3.0-or-later\n-->\n\n<docs>\n### Description\nSee [NcInputField](#/Components/NcFields?id=ncinputfield) for a list of all available props.\n\nGeneral purpose text field component.\nIt is recommended to not only provide a placeholder, but also a label.\nThe label should describe what input is expected and the placehold what format the input should have.\n\nNote: the inner html `input` element inherits all the attributes from the\nNcTextField component so you can add things like `autocomplete`, `maxlength`\nand `minlength`.\n\n```\n<template>\n\t<div class=\"wrapper\">\n\t\t<NcTextField :value.sync=\"text1\"\n\t\t\tlabel=\"Leading icon and clear trailing button\"\n\t\t\ttrailing-button-icon=\"close\"\n\t\t\t:show-trailing-button=\"text1 !== ''\"\n\t\t\t@trailing-button-click=\"clearText\">\n\t\t\t<Magnify :size=\"20\" />\n\t\t</NcTextField>\n\t\t<NcTextField :value.sync=\"text4\"\n\t\t\tlabel=\"Internal label\"\n\t\t\tplaceholder=\"That can be used together with placeholder\"\n\t\t\ttrailing-button-icon=\"close\"\n\t\t\t:show-trailing-button=\"text4 !== ''\"\n\t\t\t@trailing-button-click=\"clearText\">\n\t\t\t<Lock :size=\"20\" />\n\t\t</NcTextField>\n\t\t<NcTextField :value.sync=\"text2\"\n\t\t\tlabel=\"With helper text\"\n\t\t\thelper-text=\"This is an optional message to show e.g. validation errors.\"\n\t\t\t@trailing-button-click=\"clearText\">\n\t\t</NcTextField>\n\t\t<NcTextField :value.sync=\"text2\"\n\t\t\tlabel=\"Success state\"\n\t\t\tplaceholder=\"Placeholders are possible\"\n\t\t\t:success=\"true\"\n\t\t\t@trailing-button-click=\"clearText\">\n\t\t</NcTextField>\n\t\t<NcTextField :value.sync=\"text3\"\n\t\t\tlabel=\"Error state\"\n\t\t\tplaceholder=\"Enter something valid\"\n\t\t\t:error=\"true\"\n\t\t\t@trailing-button-click=\"clearText\">\n\t\t</NcTextField>\n\t\t<NcTextField label=\"Disabled\"\n\t\t\t:disabled=\"true\" />\n\t\t<NcTextField label=\"Disabled + Success\"\n\t\t\t:success=\"true\"\n\t\t\t:disabled=\"true\" />\n\t\t<div class=\"external-label\">\n\t\t\t<label for=\"textField\">External label</label>\n\t\t\t<NcTextField :value.sync=\"text5\"\n\t\t\t\tid=\"textField\"\n\t\t\t\t:label-outside=\"true\"\n\t\t\t\tplaceholder=\"Input with external label\"\n\t\t\t\t@trailing-button-click=\"clearText\" />\n\t\t</div>\n\t</div>\n</template>\n<script>\nimport Magnify from 'vue-material-design-icons/Magnify'\nimport Lock from 'vue-material-design-icons/Lock'\nimport Close from 'vue-material-design-icons/Close'\n\nexport default {\n\tdata() {\n\t\treturn {\n\t\t\ttext1: '',\n\t\t\ttext2: '',\n\t\t\ttext3: '',\n\t\t\ttext4: '',\n\t\t\ttext5: '',\n\t\t}\n\t},\n\n\tcomponents: {\n\t\tMagnify,\n\t\tLock,\n\t\tClose,\n\t},\n\n\tmethods: {\n\t\tclearText() {\n\t\t\tthis.text1 = ''\n\t\t\tthis.text3 = ''\n\t\t}\n\t}\n}\n</script>\n<style lang=\"scss\" scoped>\n.wrapper {\n\tdisplay: flex;\n\tgap: 4px;\n\talign-items: flex-end;\n\tflex-wrap: wrap;\n}\n\n.external-label {\n\tdisplay: flex;\n\twidth: 100%;\n\tmargin-top: 1rem;\n}\n\n.external-label label {\n\tpadding-top: 7px;\n\tpadding-right: 14px;\n\twhite-space: nowrap;\n}\n</style>\n```\n</docs>\n\n<template>\n\t<NcInputField v-bind=\"propsAndAttrsToForward\"\n\t\tref=\"inputField\"\n\t\tv-on=\"$listeners\"\n\t\t@input=\"handleInput\">\n\t\t<!-- Default slot for the leading icon -->\n\t\t<slot />\n\n\t\t<!-- Trailing icon slot, except for search type input as the browser already adds a trailing close icon -->\n\t\t<template v-if=\"type !== 'search'\" #trailing-button-icon>\n\t\t\t<Close v-if=\"trailingButtonIcon === 'close'\" :size=\"20\" />\n\t\t\t<ArrowRight v-else-if=\"trailingButtonIcon === 'arrowRight'\" :size=\"20\" />\n\t\t\t<Undo v-else-if=\"trailingButtonIcon === 'undo'\" :size=\"20\" />\n\t\t</template>\n\t</NcInputField>\n</template>\n\n<script>\n\nimport NcInputField from '../NcInputField/NcInputField.vue'\n\nimport Close from 'vue-material-design-icons/Close.vue'\nimport ArrowRight from 'vue-material-design-icons/ArrowRight.vue'\nimport Undo from 'vue-material-design-icons/UndoVariant.vue'\n\nimport { t } from '../../l10n.js'\n\nconst NcInputFieldProps = new Set(Object.keys(NcInputField.props))\n\nexport default {\n\tname: 'NcTextField',\n\n\tcomponents: {\n\t\tNcInputField,\n\t\tClose,\n\t\tArrowRight,\n\t\tUndo,\n\t},\n\n\t// Allow forwarding all attributes\n\tinheritAttrs: false,\n\n\tprops: {\n\t\t/**\n\t\t * Any [NcInputField](#/Components/NcFields?id=ncinputfield) props\n\t\t */\n\t\t// Not an actual prop but needed to show in vue-styleguidist docs\n\t\t// eslint-disable-next-line\n\t\t' ': {},\n\n\t\t// Reuse all the props from NcInputField for better typing and documentation\n\t\t...NcInputField.props,\n\n\t\t/**\n\t\t * The `aria-label` to set on the trailing button\n\t\t * If no explicit value is set it will default to the one matching the `trailingButtonIcon`:\n\t\t * @default 'Clear text'|'Save changes'|'Undo changes'\n\t\t */\n\t\ttrailingButtonLabel: {\n\t\t\ttype: String,\n\t\t\tdefault: '',\n\t\t},\n\n\t\t// Custom props\n\n\t\t/**\n\t\t * Specifies which material design icon should be used for the trailing\n\t\t * button.\n\t\t * @type {'close'|'arrowRight'|'undo'}\n\t\t */\n\t\ttrailingButtonIcon: {\n\t\t\ttype: String,\n\t\t\tdefault: 'close',\n\t\t\tvalidator: (value) => [\n\t\t\t\t'close',\n\t\t\t\t'arrowRight',\n\t\t\t\t'undo',\n\t\t\t].includes(value),\n\t\t},\n\t},\n\n\temits: [\n\t\t'update:value',\n\t],\n\n\tcomputed: {\n\t\tpropsAndAttrsToForward() {\n\t\t\tconst predefinedLabels = {\n\t\t\t\tundo: t('Undo changes'),\n\t\t\t\tclose: t('Clear text'),\n\t\t\t\tarrowRight: t('Save changes'),\n\t\t\t}\n\n\t\t\treturn {\n\t\t\t\t// Proxy all the HTML attributes\n\t\t\t\t...this.$attrs,\n\t\t\t\t// Proxy original NcInputField's props\n\t\t\t\t...Object.fromEntries(\n\t\t\t\t\tObject.entries(this.$props).filter(([key]) => NcInputFieldProps.has(key)),\n\t\t\t\t),\n\t\t\t\t// Adjust aria-label for predefined trailing buttons\n\t\t\t\ttrailingButtonLabel: this.trailingButtonLabel || predefinedLabels[this.trailingButtonIcon],\n\t\t\t}\n\t\t},\n\t},\n\n\tmethods: {\n\t\t/**\n\t\t * Focus the input element\n\t\t *\n\t\t * @public\n\t\t */\n\t\tfocus() {\n\t\t\tthis.$refs.inputField.focus()\n\t\t},\n\n\t\t/**\n\t\t * Select all the text in the input\n\t\t *\n\t\t * @public\n\t\t */\n\t\tselect() {\n\t\t\tthis.$refs.inputField.select()\n\t\t},\n\n\t\thandleInput(event) {\n\t\t\tthis.$emit('update:value', event.target.value)\n\t\t},\n\t},\n}\n</script>\n"],"names":["_sfc_main"],"mappings":";;;;;AAoBA,MAAAA,cAAA;AAAA,EACA,MAAA;AAAA,EACA,OAAA,CAAA,OAAA;AAAA,EACA,OAAA;AAAA,IACA,OAAA;AAAA,MACA,MAAA;AAAA,IACA;AAAA,IACA,WAAA;AAAA,MACA,MAAA;AAAA,MACA,SAAA;AAAA,IACA;AAAA,IACA,MAAA;AAAA,MACA,MAAA;AAAA,MACA,SAAA;AAAA,IACA;AAAA,EACA;AACA;;;;;;;;;;;;;;;;;;AC+GA,MAAA,oBAAA,IAAA,IAAA,OAAA,KAAA,aAAA,KAAA,CAAA;AAEA,MAAA,YAAA;AAAA,EACA,MAAA;AAAA,EAEA,YAAA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACA;AAAA;AAAA,EAGA,cAAA;AAAA,EAEA,OAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IAMA,KAAA,CAAA;AAAA;AAAA,IAGA,GAAA,aAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IAOA,qBAAA;AAAA,MACA,MAAA;AAAA,MACA,SAAA;AAAA,IACA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IASA,oBAAA;AAAA,MACA,MAAA;AAAA,MACA,SAAA;AAAA,MACA,WAAA,CAAA,UAAA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,MACA,EAAA,SAAA,KAAA;AAAA,IACA;AAAA,EACA;AAAA,EAEA,OAAA;AAAA,IACA;AAAA,EACA;AAAA,EAEA,UAAA;AAAA,IACA,yBAAA;AACA,YAAA,mBAAA;AAAA,QACA,MAAA,EAAA,cAAA;AAAA,QACA,OAAA,EAAA,YAAA;AAAA,QACA,YAAA,EAAA,cAAA;AAAA,MACA;AAEA,aAAA;AAAA;AAAA,QAEA,GAAA,KAAA;AAAA;AAAA,QAEA,GAAA,OAAA;AAAA,UACA,OAAA,QAAA,KAAA,MAAA,EAAA,OAAA,CAAA,CAAA,GAAA,MAAA,kBAAA,IAAA,GAAA,CAAA;AAAA,QACA;AAAA;AAAA,QAEA,qBAAA,KAAA,uBAAA,iBAAA,KAAA,kBAAA;AAAA,MACA;AAAA,IACA;AAAA,EACA;AAAA,EAEA,SAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IAMA,QAAA;AACA,WAAA,MAAA,WAAA,MAAA;AAAA,IACA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IAOA,SAAA;AACA,WAAA,MAAA,WAAA,OAAA;AAAA,IACA;AAAA,IAEA,YAAA,OAAA;AACA,WAAA,MAAA,gBAAA,MAAA,OAAA,KAAA;AAAA,IACA;AAAA,EACA;AACA;;;;;;;;;;;;;;;;;","x_google_ignoreList":[0]}