@nextcloud/vue 9.9.0 → 9.11.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 (655) hide show
  1. package/CHANGELOG.md +88 -65
  2. package/dist/assets/{NcActionButton-DLer-aUY.css → NcActionButton.css} +1 -0
  3. package/dist/assets/{NcActionCheckbox-wD8m_a8-.css → NcActionCheckbox.css} +1 -0
  4. package/dist/assets/{NcActionInput-t9WvlgV0.css → NcActionInput.css} +70 -66
  5. package/dist/assets/{NcActionLink-b4Ph5q10.css → NcActionLink.css} +1 -0
  6. package/dist/assets/{NcActionRadio-D2rLM1ci.css → NcActionRadio.css} +1 -0
  7. package/dist/assets/{NcActionRouter-BWXfCfxM.css → NcActionRouter.css} +1 -0
  8. package/dist/assets/{NcActionText-Dzegj6AY.css → NcActionText.css} +1 -0
  9. package/dist/assets/{NcActionTextEditable-BlZeHZ7J.css → NcActionTextEditable.css} +67 -65
  10. package/dist/assets/{NcActions-y7ehwPSp.css → NcActions.css} +12 -12
  11. package/dist/assets/{NcAppNavigation-OHw55TTZ.css → NcAppNavigation.css} +17 -17
  12. package/dist/assets/{NcAppNavigationItem-BZ1xj6Xi.css → NcAppNavigationItem.css} +58 -48
  13. package/dist/assets/NcAppNavigationList.css +52 -0
  14. package/dist/assets/{NcAppNavigationNewItem-MaYQVcKF.css → NcAppNavigationNewItem.css} +13 -3
  15. package/dist/assets/{NcAppNavigationSettings-mWFhcXm0.css → NcAppNavigationSettings.css} +6 -6
  16. package/dist/assets/{NcAppSettingsDialog-Dh_scIK4.css → NcAppSettingsDialog.css} +3 -3
  17. package/dist/assets/{NcAppSettingsShortcutsSection-BHxkQTg2.css → NcAppSettingsShortcutsSection.css} +1 -1
  18. package/dist/assets/{NcAppSidebar-oJQ8kUb0.css → NcAppSidebar.css} +132 -78
  19. package/dist/assets/{NcAppSidebarTab-Xd3HTDbw.css → NcAppSidebarTab.css} +4 -4
  20. package/dist/assets/{NcAssistantButton-CT25wqIs.css → NcAssistantButton.css} +9 -9
  21. package/dist/assets/{NcAssistantContent-FV00e96S.css → NcAssistantContent.css} +3 -3
  22. package/dist/assets/{NcAssistantIcon-BMLpMaMJ.css → NcAssistantIcon.css} +4 -4
  23. package/dist/assets/{NcAvatar-Bs7qEhkA.css → NcAvatar.css} +39 -24
  24. package/dist/assets/{NcBlurHash-RgrahjEp.css → NcBlurHash.css} +2 -2
  25. package/dist/assets/{NcButton-DOrlC_y5.css → NcButton.css} +52 -50
  26. package/dist/assets/{NcCheckboxRadioSwitch-BlQSZVW0.css → NcCheckboxRadioSwitch.css} +36 -36
  27. package/dist/assets/{NcDateTimePicker-BQ_y9Ihj.css → NcDateTimePicker.css} +234 -234
  28. package/dist/assets/NcDateTimePickerNative.css +38 -0
  29. package/dist/assets/{NcEllipsisedOption-CPWbbgBy.css → NcEllipsisedOption.css} +10 -5
  30. package/dist/assets/{NcFilePicker-BdjtiV3h.css → NcFilePicker.css} +1 -1
  31. package/dist/assets/{NcFormBox-TRgICDO3.css → NcFormBox.css} +11 -11
  32. package/dist/assets/{NcFormBoxButton-ClkxmO-H.css → NcFormBoxButton.css} +2 -2
  33. package/dist/assets/{NcFormBoxItem-CABDVZLe.css → NcFormBoxItem.css} +19 -15
  34. package/dist/assets/{NcFormBoxSwitch-NCjook_Z.css → NcFormBoxSwitch.css} +2 -2
  35. package/dist/assets/{NcFormGroup-eh8-PBGB.css → NcFormGroup.css} +7 -7
  36. package/dist/assets/{NcHeaderMenu-Hy0UKyUu.css → NcHeaderMenu.css} +22 -24
  37. package/dist/assets/{NcHotkey-Dm-26TVC.css → NcHotkey.css} +8 -8
  38. package/dist/assets/{NcHotkeyList-BigfRqyr.css → NcHotkeyList.css} +2 -2
  39. package/dist/assets/{NcIconToggleSwitch-zUXkaJHv.css → NcIconToggleSwitch.css} +4 -4
  40. package/dist/assets/{NcInputField-DpyFJ1xw.css → NcInputField.css} +43 -43
  41. package/dist/assets/{NcKbd-DcC56WbC.css → NcKbd.css} +3 -3
  42. package/dist/assets/NcPopover.css +108 -0
  43. package/dist/assets/NcProfileHoverCard.css +340 -0
  44. package/dist/assets/{NcProgressBar-B6wveIA1.css → NcProgressBar.css} +14 -14
  45. package/dist/assets/{NcRadioGroup-CtXZ4Y8D.css → NcRadioGroup.css} +2 -2
  46. package/dist/assets/{NcRadioGroupButton-BuB-aWeJ.css → NcRadioGroupButton.css} +19 -14
  47. package/dist/assets/NcReferenceWidget.css +150 -0
  48. package/dist/assets/{NcRichContenteditable-BCUBhRqg.css → NcRichContenteditable.css} +17 -17
  49. package/dist/assets/NcSelect.css +397 -0
  50. package/dist/assets/NcSelectUsers.css +12 -0
  51. package/dist/assets/{autolink-XS-VDSVB.css → autolink.css} +3 -3
  52. package/dist/assets/{referencePickerModal-BNPfxyni.css → referencePickerModal.css} +0 -149
  53. package/dist/chunks/{ArrowRight-B1ncAhus.mjs → ArrowRight.mjs} +2 -2
  54. package/dist/chunks/ArrowRight.mjs.map +1 -0
  55. package/dist/chunks/{ChevronDown-C6gc637b.mjs → ChevronDown.mjs} +2 -2
  56. package/dist/chunks/ChevronDown.mjs.map +1 -0
  57. package/dist/chunks/{ChevronUp-ChH8oB7p.mjs → ChevronUp.mjs} +2 -2
  58. package/dist/chunks/ChevronUp.mjs.map +1 -0
  59. package/dist/chunks/{Close-CuhcJnX2.mjs → Close.mjs} +2 -2
  60. package/dist/chunks/Close.mjs.map +1 -0
  61. package/dist/chunks/{NcActionButton-BO5T5ePT.mjs → NcActionButton.mjs} +7 -7
  62. package/dist/chunks/NcActionButton.mjs.map +1 -0
  63. package/dist/chunks/{NcActionButtonGroup-Dd03Oluy.mjs → NcActionButtonGroup.mjs} +6 -6
  64. package/dist/chunks/NcActionButtonGroup.mjs.map +1 -0
  65. package/dist/chunks/{NcActionCaption-f7L9gBlT.mjs → NcActionCaption.mjs} +4 -4
  66. package/dist/chunks/NcActionCaption.mjs.map +1 -0
  67. package/dist/chunks/{NcActionCheckbox-DBqiK-AZ.mjs → NcActionCheckbox.mjs} +8 -8
  68. package/dist/chunks/NcActionCheckbox.mjs.map +1 -0
  69. package/dist/chunks/{NcActionInput-Dr8Yrafu.mjs → NcActionInput.mjs} +14 -13
  70. package/dist/chunks/NcActionInput.mjs.map +1 -0
  71. package/dist/chunks/{NcActionLink-BFiaYt9A.mjs → NcActionLink.mjs} +5 -5
  72. package/dist/chunks/NcActionLink.mjs.map +1 -0
  73. package/dist/chunks/{NcActionRadio-BA08CAtA.mjs → NcActionRadio.mjs} +8 -8
  74. package/dist/chunks/NcActionRadio.mjs.map +1 -0
  75. package/dist/chunks/{NcActionRouter-vYFtIOzD.mjs → NcActionRouter.mjs} +5 -5
  76. package/dist/chunks/NcActionRouter.mjs.map +1 -0
  77. package/dist/chunks/{NcActionSeparator-B9pNQaji.mjs → NcActionSeparator.mjs} +3 -3
  78. package/dist/chunks/NcActionSeparator.mjs.map +1 -0
  79. package/dist/chunks/{NcActionText-CQ9qwJ0p.mjs → NcActionText.mjs} +5 -5
  80. package/dist/chunks/NcActionText.mjs.map +1 -0
  81. package/dist/chunks/{NcActionTextEditable-B8y_GEre.mjs → NcActionTextEditable.mjs} +8 -8
  82. package/dist/chunks/NcActionTextEditable.mjs.map +1 -0
  83. package/dist/chunks/{NcActions-C-wDqSrv.mjs → NcActions.mjs} +12 -12
  84. package/dist/chunks/NcActions.mjs.map +1 -0
  85. package/dist/chunks/{NcAppContent-DavgjaFX.mjs → NcAppContent.mjs} +11 -11
  86. package/dist/chunks/NcAppContent.mjs.map +1 -0
  87. package/dist/chunks/{NcAppContentDetails.vue_vue_type_script_setup_true_lang-BWl5Pw5g.mjs → NcAppContentDetails.vue_vue_type_script_setup_true_lang.mjs} +1 -1
  88. package/dist/chunks/NcAppContentDetails.vue_vue_type_script_setup_true_lang.mjs.map +1 -0
  89. package/dist/chunks/{NcAppContentList-Copx3Ver.mjs → NcAppContentList.mjs} +2 -2
  90. package/dist/chunks/NcAppContentList.mjs.map +1 -0
  91. package/dist/chunks/{NcAppNavigation-g57j16pB.mjs → NcAppNavigation.mjs} +17 -16
  92. package/dist/chunks/NcAppNavigation.mjs.map +1 -0
  93. package/dist/chunks/{NcAppNavigationCaption-VjSWJ8R4.mjs → NcAppNavigationCaption.mjs} +4 -4
  94. package/dist/chunks/NcAppNavigationCaption.mjs.map +1 -0
  95. package/dist/chunks/{NcAppNavigationIconBullet-BmU-dPcY.mjs → NcAppNavigationIconBullet.mjs} +3 -3
  96. package/dist/chunks/NcAppNavigationIconBullet.mjs.map +1 -0
  97. package/dist/chunks/{NcAppNavigationItem-CDeYtA3E.mjs → NcAppNavigationItem.mjs} +53 -24
  98. package/dist/chunks/NcAppNavigationItem.mjs.map +1 -0
  99. package/dist/chunks/NcAppNavigationList.mjs +147 -0
  100. package/dist/chunks/NcAppNavigationList.mjs.map +1 -0
  101. package/dist/chunks/{NcAppNavigationNew-CBNppM7Q.mjs → NcAppNavigationNew.mjs} +4 -4
  102. package/dist/chunks/NcAppNavigationNew.mjs.map +1 -0
  103. package/dist/chunks/{NcAppNavigationNewItem-B1RfQkvu.mjs → NcAppNavigationNewItem.mjs} +5 -5
  104. package/dist/chunks/NcAppNavigationNewItem.mjs.map +1 -0
  105. package/dist/chunks/{NcAppNavigationSearch-CQQWb1Eq.mjs → NcAppNavigationSearch.mjs} +7 -7
  106. package/dist/chunks/NcAppNavigationSearch.mjs.map +1 -0
  107. package/dist/chunks/{NcAppNavigationSettings-DoMjRExO.mjs → NcAppNavigationSettings.mjs} +16 -16
  108. package/dist/chunks/NcAppNavigationSettings.mjs.map +1 -0
  109. package/dist/chunks/{NcAppNavigationSpacer-CIRC4ZEj.mjs → NcAppNavigationSpacer.mjs} +3 -3
  110. package/dist/chunks/NcAppNavigationSpacer.mjs.map +1 -0
  111. package/dist/chunks/{NcAppSettingsDialog-BPcEYLjP.mjs → NcAppSettingsDialog.mjs} +13 -13
  112. package/dist/chunks/NcAppSettingsDialog.mjs.map +1 -0
  113. package/dist/chunks/{NcAppSettingsSection-BosSmisT.mjs → NcAppSettingsSection.mjs} +5 -5
  114. package/dist/chunks/NcAppSettingsSection.mjs.map +1 -0
  115. package/dist/chunks/{NcAppSettingsShortcutsSection-DLwubKV9.mjs → NcAppSettingsShortcutsSection.mjs} +7 -7
  116. package/dist/chunks/NcAppSettingsShortcutsSection.mjs.map +1 -0
  117. package/dist/chunks/{NcAppSidebar-C8YzAzrZ.mjs → NcAppSidebar.mjs} +180 -46
  118. package/dist/chunks/NcAppSidebar.mjs.map +1 -0
  119. package/dist/chunks/{NcAppSidebarHeader.vue_vue_type_script_setup_true_lang-C-QhdyiN.mjs → NcAppSidebarHeader.vue_vue_type_script_setup_true_lang.mjs} +1 -1
  120. package/dist/chunks/NcAppSidebarHeader.vue_vue_type_script_setup_true_lang.mjs.map +1 -0
  121. package/dist/chunks/{NcAppSidebarTab-DOSDDbGA.mjs → NcAppSidebarTab.mjs} +15 -8
  122. package/dist/chunks/NcAppSidebarTab.mjs.map +1 -0
  123. package/dist/chunks/{NcAssistantButton-iK491d2v.mjs → NcAssistantButton.mjs} +14 -14
  124. package/dist/chunks/NcAssistantButton.mjs.map +1 -0
  125. package/dist/chunks/{NcAssistantContent-iHA4O4cC.mjs → NcAssistantContent.mjs} +6 -6
  126. package/dist/chunks/NcAssistantContent.mjs.map +1 -0
  127. package/dist/chunks/{NcAssistantIcon-C6s4Qm7-.mjs → NcAssistantIcon.mjs} +9 -9
  128. package/dist/chunks/NcAssistantIcon.mjs.map +1 -0
  129. package/dist/chunks/{NcAvatar-1KxMUN7V.mjs → NcAvatar.mjs} +214 -80
  130. package/dist/chunks/NcAvatar.mjs.map +1 -0
  131. package/dist/chunks/{NcBlurHash-B30Ol8KP.mjs → NcBlurHash.mjs} +6 -6
  132. package/dist/chunks/NcBlurHash.mjs.map +1 -0
  133. package/dist/chunks/{NcBreadcrumb-3Y5NWXnV.mjs → NcBreadcrumb.mjs} +6 -6
  134. package/dist/chunks/NcBreadcrumb.mjs.map +1 -0
  135. package/dist/chunks/{NcBreadcrumbs-BaTp3Sya.mjs → NcBreadcrumbs.mjs} +8 -8
  136. package/dist/chunks/NcBreadcrumbs.mjs.map +1 -0
  137. package/dist/chunks/{NcButton-jvoYS2my.mjs → NcButton.mjs} +6 -6
  138. package/dist/chunks/NcButton.mjs.map +1 -0
  139. package/dist/chunks/{NcCheckboxRadioSwitch-DVdt5Hkq.mjs → NcCheckboxRadioSwitch.mjs} +22 -12
  140. package/dist/chunks/NcCheckboxRadioSwitch.mjs.map +1 -0
  141. package/dist/chunks/{NcChip-DKRlV47q.mjs → NcChip.mjs} +9 -9
  142. package/dist/chunks/NcChip.mjs.map +1 -0
  143. package/dist/chunks/{NcCollectionList-B9qCtjJw.mjs → NcCollectionList.mjs} +12 -12
  144. package/dist/chunks/NcCollectionList.mjs.map +1 -0
  145. package/dist/chunks/{NcColorPicker-BCkasLwT.mjs → NcColorPicker.mjs} +12 -12
  146. package/dist/chunks/NcColorPicker.mjs.map +1 -0
  147. package/dist/chunks/{NcContent-BYh5hWDN.mjs → NcContent.mjs} +9 -9
  148. package/dist/chunks/NcContent.mjs.map +1 -0
  149. package/dist/chunks/{NcCounterBubble-CV0YMrXW.mjs → NcCounterBubble.mjs} +3 -3
  150. package/dist/chunks/NcCounterBubble.mjs.map +1 -0
  151. package/dist/chunks/{NcDashboardWidget-zmbDEGL-.mjs → NcDashboardWidget.mjs} +8 -8
  152. package/dist/chunks/NcDashboardWidget.mjs.map +1 -0
  153. package/dist/chunks/{NcDashboardWidgetItem-DwDndrm_.mjs → NcDashboardWidgetItem.mjs} +6 -6
  154. package/dist/chunks/NcDashboardWidgetItem.mjs.map +1 -0
  155. package/dist/chunks/{NcDateTime.vue_vue_type_script_setup_true_lang-BJuPH7S7.mjs → NcDateTime.vue_vue_type_script_setup_true_lang.mjs} +1 -1
  156. package/dist/chunks/NcDateTime.vue_vue_type_script_setup_true_lang.mjs.map +1 -0
  157. package/dist/chunks/NcDateTimePicker.mjs +2979 -0
  158. package/dist/chunks/NcDateTimePicker.mjs.map +1 -0
  159. package/dist/chunks/{NcDateTimePickerNative-B8CMOUnH.mjs → NcDateTimePickerNative.mjs} +21 -26
  160. package/dist/chunks/NcDateTimePickerNative.mjs.map +1 -0
  161. package/dist/chunks/{NcDialog-D617YI0t.mjs → NcDialog.mjs} +6 -6
  162. package/dist/chunks/NcDialog.mjs.map +1 -0
  163. package/dist/chunks/{NcDialogButton.vue_vue_type_script_setup_true_lang-Bqfy678u.mjs → NcDialogButton.vue_vue_type_script_setup_true_lang.mjs} +6 -6
  164. package/dist/chunks/NcDialogButton.vue_vue_type_script_setup_true_lang.mjs.map +1 -0
  165. package/dist/chunks/{NcEllipsisedOption-D6Amb91K.mjs → NcEllipsisedOption.mjs} +5 -5
  166. package/dist/chunks/NcEllipsisedOption.mjs.map +1 -0
  167. package/dist/chunks/{NcEmojiPicker-UTxgju3f.mjs → NcEmojiPicker.mjs} +12 -12
  168. package/dist/chunks/NcEmojiPicker.mjs.map +1 -0
  169. package/dist/chunks/{NcEmptyContent-CGAPqk4S.mjs → NcEmptyContent.mjs} +4 -4
  170. package/dist/chunks/NcEmptyContent.mjs.map +1 -0
  171. package/dist/chunks/{NcFilePicker-bD2toutn.mjs → NcFilePicker.mjs} +9 -9
  172. package/dist/chunks/NcFilePicker.mjs.map +1 -0
  173. package/dist/chunks/{NcFormBox-Bmqar8nn.mjs → NcFormBox.mjs} +9 -9
  174. package/dist/chunks/NcFormBox.mjs.map +1 -0
  175. package/dist/chunks/{NcFormBoxButton-G_PkUiQy.mjs → NcFormBoxButton.mjs} +8 -8
  176. package/dist/chunks/NcFormBoxButton.mjs.map +1 -0
  177. package/dist/chunks/{NcFormBoxCopyButton.vue_vue_type_script_setup_true_lang-BA_gWnmz.mjs → NcFormBoxCopyButton.vue_vue_type_script_setup_true_lang.mjs} +4 -4
  178. package/dist/chunks/NcFormBoxCopyButton.vue_vue_type_script_setup_true_lang.mjs.map +1 -0
  179. package/dist/chunks/{NcFormBoxItem-Cm8aZaVJ.mjs → NcFormBoxItem.mjs} +14 -14
  180. package/dist/chunks/NcFormBoxItem.mjs.map +1 -0
  181. package/dist/chunks/{NcFormBoxSwitch-DSXiQcnq.mjs → NcFormBoxSwitch.mjs} +8 -8
  182. package/dist/chunks/NcFormBoxSwitch.mjs.map +1 -0
  183. package/dist/chunks/{NcFormGroup-N7qIFAwN.mjs → NcFormGroup.mjs} +11 -11
  184. package/dist/chunks/NcFormGroup.mjs.map +1 -0
  185. package/dist/chunks/{NcGuestContent-CvT6VGt1.mjs → NcGuestContent.mjs} +3 -3
  186. package/dist/chunks/NcGuestContent.mjs.map +1 -0
  187. package/dist/chunks/{NcHeaderButton-BnLwYCog.mjs → NcHeaderButton.mjs} +5 -5
  188. package/dist/chunks/NcHeaderButton.mjs.map +1 -0
  189. package/dist/chunks/{NcHeaderMenu-ktQJV2SW.mjs → NcHeaderMenu.mjs} +14 -20
  190. package/dist/chunks/NcHeaderMenu.mjs.map +1 -0
  191. package/dist/chunks/{NcHighlight.vue_vue_type_script_lang-DnWQDM_2.mjs → NcHighlight.vue_vue_type_script_lang.mjs} +1 -1
  192. package/dist/chunks/NcHighlight.vue_vue_type_script_lang.mjs.map +1 -0
  193. package/dist/chunks/{NcHotkey-BDGeF3eH.mjs → NcHotkey.mjs} +8 -8
  194. package/dist/chunks/NcHotkey.mjs.map +1 -0
  195. package/dist/chunks/{NcHotkeyList-B4WjTLAp.mjs → NcHotkeyList.mjs} +8 -8
  196. package/dist/chunks/NcHotkeyList.mjs.map +1 -0
  197. package/dist/chunks/{NcIconSvgWrapper-g8ubWhoz.mjs → NcIconSvgWrapper.mjs} +3 -3
  198. package/dist/chunks/NcIconSvgWrapper.mjs.map +1 -0
  199. package/dist/chunks/{NcIconToggleSwitch-CRvGt4su.mjs → NcIconToggleSwitch.mjs} +6 -6
  200. package/dist/chunks/NcIconToggleSwitch.mjs.map +1 -0
  201. package/dist/chunks/{NcInputConfirmCancel-CGTllrXj.mjs → NcInputConfirmCancel.mjs} +9 -9
  202. package/dist/chunks/NcInputConfirmCancel.mjs.map +1 -0
  203. package/dist/chunks/{NcInputField-5Sg6EUP6.mjs → NcInputField.mjs} +9 -9
  204. package/dist/chunks/NcInputField.mjs.map +1 -0
  205. package/dist/chunks/{NcKbd-Bh_Tk6Ar.mjs → NcKbd.mjs} +8 -8
  206. package/dist/chunks/NcKbd.mjs.map +1 -0
  207. package/dist/chunks/{NcListItem-BliLJpvU.mjs → NcListItem.mjs} +7 -7
  208. package/dist/chunks/NcListItem.mjs.map +1 -0
  209. package/dist/chunks/{NcListItemIcon-Dl_tfkk9.mjs → NcListItemIcon.mjs} +7 -7
  210. package/dist/chunks/NcListItemIcon.mjs.map +1 -0
  211. package/dist/chunks/{NcLoadingIcon-BOVpFVQz.mjs → NcLoadingIcon.mjs} +3 -3
  212. package/dist/chunks/NcLoadingIcon.mjs.map +1 -0
  213. package/dist/chunks/{NcMentionBubble.vue_vue_type_style_index_0_scoped_3c4a673d_lang-DyqakLm5.mjs → NcMentionBubble.vue_vue_type_style_index_0_scoped_3c4a673d_lang.mjs} +2 -2
  214. package/dist/chunks/NcMentionBubble.vue_vue_type_style_index_0_scoped_3c4a673d_lang.mjs.map +1 -0
  215. package/dist/chunks/{NcModal-DiDvgcU8.mjs → NcModal.mjs} +12 -12
  216. package/dist/chunks/NcModal.mjs.map +1 -0
  217. package/dist/chunks/{NcNoteCard-mI7qVZ9j.mjs → NcNoteCard.mjs} +6 -6
  218. package/dist/chunks/NcNoteCard.mjs.map +1 -0
  219. package/dist/chunks/{NcPasswordField-BFyzHTOO.mjs → NcPasswordField.mjs} +9 -9
  220. package/dist/chunks/NcPasswordField.mjs.map +1 -0
  221. package/dist/chunks/{NcPopover-B87bEPLq.mjs → NcPopover.mjs} +9 -10
  222. package/dist/chunks/NcPopover.mjs.map +1 -0
  223. package/dist/chunks/NcProfileHoverCard.mjs +777 -0
  224. package/dist/chunks/NcProfileHoverCard.mjs.map +1 -0
  225. package/dist/chunks/{NcProgressBar-C-ane-Ni.mjs → NcProgressBar.mjs} +20 -10
  226. package/dist/chunks/NcProgressBar.mjs.map +1 -0
  227. package/dist/chunks/{NcRadioGroup-B4qmS2UD.mjs → NcRadioGroup.mjs} +8 -8
  228. package/dist/chunks/NcRadioGroup.mjs.map +1 -0
  229. package/dist/chunks/{NcRadioGroupButton-CZykGwv3.mjs → NcRadioGroupButton.mjs} +12 -12
  230. package/dist/chunks/NcRadioGroupButton.mjs.map +1 -0
  231. package/dist/chunks/NcReferenceWidget.mjs +292 -0
  232. package/dist/chunks/NcReferenceWidget.mjs.map +1 -0
  233. package/dist/chunks/{NcRelatedResourcesPanel-D_Ttpg5_.mjs → NcRelatedResourcesPanel.mjs} +13 -13
  234. package/dist/chunks/NcRelatedResourcesPanel.mjs.map +1 -0
  235. package/dist/chunks/{NcRichContenteditable-Qw614bJ5.mjs → NcRichContenteditable.mjs} +37 -35
  236. package/dist/chunks/NcRichContenteditable.mjs.map +1 -0
  237. package/dist/chunks/{NcRichText-BO_4KtBA.mjs → NcRichText.mjs} +12 -12
  238. package/dist/chunks/NcRichText.mjs.map +1 -0
  239. package/dist/chunks/{NcSavingIndicatorIcon.vue_vue_type_script_setup_true_lang-DbQnMYZm.mjs → NcSavingIndicatorIcon.vue_vue_type_script_setup_true_lang.mjs} +1 -1
  240. package/dist/chunks/NcSavingIndicatorIcon.vue_vue_type_script_setup_true_lang.mjs.map +1 -0
  241. package/dist/chunks/{NcSelect--kERLlBK.mjs → NcSelect.mjs} +124 -29
  242. package/dist/chunks/NcSelect.mjs.map +1 -0
  243. package/dist/chunks/{NcSelectTags-I2hJaNax.mjs → NcSelectTags.mjs} +6 -6
  244. package/dist/chunks/NcSelectTags.mjs.map +1 -0
  245. package/dist/chunks/{NcSelectUsers-K14Bepkq.mjs → NcSelectUsers.mjs} +6 -6
  246. package/dist/chunks/NcSelectUsers.mjs.map +1 -0
  247. package/dist/chunks/{NcSettingsSection-Caz1fuWt.mjs → NcSettingsSection.mjs} +5 -5
  248. package/dist/chunks/NcSettingsSection.mjs.map +1 -0
  249. package/dist/chunks/{NcSettingsSelectGroup-SYJ8-XlR.mjs → NcSettingsSelectGroup.mjs} +7 -7
  250. package/dist/chunks/NcSettingsSelectGroup.mjs.map +1 -0
  251. package/dist/chunks/{NcTextArea-Dxzj4zdb.mjs → NcTextArea.mjs} +8 -8
  252. package/dist/chunks/NcTextArea.mjs.map +1 -0
  253. package/dist/chunks/{NcTextField.vue_vue_type_script_setup_true_lang-Bx2esFU2.mjs → NcTextField.vue_vue_type_script_setup_true_lang.mjs} +7 -7
  254. package/dist/chunks/NcTextField.vue_vue_type_script_setup_true_lang.mjs.map +1 -0
  255. package/dist/chunks/{NcThemeProvider.vue_vue_type_script_setup_true_lang-wie70gn4.mjs → NcThemeProvider.vue_vue_type_script_setup_true_lang.mjs} +2 -2
  256. package/dist/chunks/NcThemeProvider.vue_vue_type_script_setup_true_lang.mjs.map +1 -0
  257. package/dist/chunks/{NcTimezonePicker.vue_vue_type_script_setup_true_lang-D7ZHgnwW.mjs → NcTimezonePicker.vue_vue_type_script_setup_true_lang.mjs} +5 -5
  258. package/dist/chunks/NcTimezonePicker.vue_vue_type_script_setup_true_lang.mjs.map +1 -0
  259. package/dist/chunks/{NcUserBubble-BXR7vT0V.mjs → NcUserBubble.mjs} +5 -5
  260. package/dist/chunks/NcUserBubble.mjs.map +1 -0
  261. package/dist/chunks/{NcUserStatusIcon-BF5OEQFU.mjs → NcUserStatusIcon.mjs} +7 -7
  262. package/dist/chunks/NcUserStatusIcon.mjs.map +1 -0
  263. package/dist/chunks/{NcVNodes.vue_vue_type_script_lang-BqUHinRZ.mjs → NcVNodes.vue_vue_type_script_lang.mjs} +1 -1
  264. package/dist/chunks/NcVNodes.vue_vue_type_script_lang.mjs.map +1 -0
  265. package/dist/chunks/{_l10n-wdIzZwir.mjs → _l10n.mjs} +106 -104
  266. package/dist/chunks/_l10n.mjs.map +1 -0
  267. package/dist/chunks/{_plugin-vue_export-helper-1tPrXgE0.mjs → _plugin-vue_export-helper.mjs} +1 -1
  268. package/dist/chunks/_plugin-vue_export-helper.mjs.map +1 -0
  269. package/dist/chunks/{actionGlobal-BZFdtdJL.mjs → actionGlobal.mjs} +1 -1
  270. package/dist/chunks/actionGlobal.mjs.map +1 -0
  271. package/dist/chunks/{actionText-BXR0sWNu.mjs → actionText.mjs} +3 -3
  272. package/dist/chunks/actionText.mjs.map +1 -0
  273. package/dist/chunks/{appName-DyNMVZpX.mjs → appName.mjs} +2 -2
  274. package/dist/chunks/appName.mjs.map +1 -0
  275. package/dist/chunks/{autolink-DrIurosL.mjs → autolink.mjs} +7 -7
  276. package/dist/chunks/autolink.mjs.map +1 -0
  277. package/dist/chunks/{colors-Cv9F-jWS.mjs → colors.mjs} +3 -3
  278. package/dist/chunks/colors.mjs.map +1 -0
  279. package/dist/chunks/{constants-wIEKSp2G.mjs → constants.mjs} +1 -1
  280. package/dist/chunks/constants.mjs.map +1 -0
  281. package/dist/chunks/{constants-Ciwvl5xb.mjs → constants2.mjs} +1 -1
  282. package/dist/chunks/constants2.mjs.map +1 -0
  283. package/dist/chunks/{createElementId-DhjFt1I9.mjs → createElementId.mjs} +1 -1
  284. package/dist/chunks/createElementId.mjs.map +1 -0
  285. package/dist/chunks/customPickerElements.mjs +61 -0
  286. package/dist/chunks/customPickerElements.mjs.map +1 -0
  287. package/dist/chunks/{emoji-C8k9NUlo.mjs → emoji.mjs} +1 -1
  288. package/dist/chunks/emoji.mjs.map +1 -0
  289. package/dist/chunks/{focusTrap-HJQ4pqHV.mjs → focusTrap.mjs} +1 -1
  290. package/dist/chunks/focusTrap.mjs.map +1 -0
  291. package/dist/chunks/highlight.mjs +5 -0
  292. package/dist/chunks/highlight.mjs.map +1 -0
  293. package/dist/chunks/{legacy-BoqDmOCa.mjs → legacy.mjs} +4 -2
  294. package/dist/chunks/legacy.mjs.map +1 -0
  295. package/dist/chunks/{logger-D3RVzcfQ.mjs → logger.mjs} +1 -1
  296. package/dist/chunks/logger.mjs.map +1 -0
  297. package/dist/chunks/{mdi-CpchYUUV.mjs → mdi.mjs} +12 -14
  298. package/dist/chunks/mdi.mjs.map +1 -0
  299. package/dist/chunks/{platform-CC2ecGvV.mjs → platform.mjs} +1 -1
  300. package/dist/chunks/platform.mjs.map +1 -0
  301. package/dist/chunks/{referencePickerModal-CnKdEDwu.mjs → referencePickerModal.mjs} +60 -342
  302. package/dist/chunks/referencePickerModal.mjs.map +1 -0
  303. package/dist/chunks/{rtl-v0UOPAM7.mjs → rtl.mjs} +1 -1
  304. package/dist/chunks/rtl.mjs.map +1 -0
  305. package/dist/chunks/{useAppSettingsDialog-C73Wx6iQ.mjs → useAppSettingsDialog.mjs} +1 -1
  306. package/dist/chunks/useAppSettingsDialog.mjs.map +1 -0
  307. package/dist/chunks/{useCopy-6F-qWHq0.mjs → useCopy.mjs} +4 -4
  308. package/dist/chunks/useCopy.mjs.map +1 -0
  309. package/dist/chunks/{useNcActions-BzPO2c4h.mjs → useNcActions.mjs} +1 -1
  310. package/dist/chunks/useNcActions.mjs.map +1 -0
  311. package/dist/chunks/{useNcFormBox-Djlh582y.mjs → useNcFormBox.mjs} +1 -1
  312. package/dist/chunks/useNcFormBox.mjs.map +1 -0
  313. package/dist/chunks/{useNcRadioGroup-D6llQmAl.mjs → useNcRadioGroup.mjs} +1 -1
  314. package/dist/chunks/useNcRadioGroup.mjs.map +1 -0
  315. package/dist/chunks/{useTrapStackControl-B6cEicto.mjs → useTrapStackControl.mjs} +2 -2
  316. package/dist/chunks/useTrapStackControl.mjs.map +1 -0
  317. package/dist/chunks/widgets.mjs +66 -0
  318. package/dist/chunks/widgets.mjs.map +1 -0
  319. package/dist/components/NcActionButton/index.mjs +1 -1
  320. package/dist/components/NcActionButtonGroup/index.mjs +1 -1
  321. package/dist/components/NcActionCaption/index.mjs +1 -1
  322. package/dist/components/NcActionCheckbox/index.mjs +1 -1
  323. package/dist/components/NcActionInput/NcActionInput.vue.d.ts +302 -103
  324. package/dist/components/NcActionInput/index.mjs +1 -1
  325. package/dist/components/NcActionLink/index.mjs +1 -1
  326. package/dist/components/NcActionRadio/index.mjs +1 -1
  327. package/dist/components/NcActionRouter/index.mjs +1 -1
  328. package/dist/components/NcActionSeparator/index.mjs +1 -1
  329. package/dist/components/NcActionText/index.mjs +1 -1
  330. package/dist/components/NcActionTextEditable/index.mjs +1 -1
  331. package/dist/components/NcActions/NcActions.vue.d.ts +3 -3
  332. package/dist/components/NcActions/index.mjs +1 -1
  333. package/dist/components/NcAppContent/index.mjs +1 -1
  334. package/dist/components/NcAppContentDetails/index.mjs +1 -1
  335. package/dist/components/NcAppContentList/index.mjs +1 -1
  336. package/dist/components/NcAppNavigation/index.mjs +1 -1
  337. package/dist/components/NcAppNavigationCaption/NcAppNavigationCaption.vue.d.ts +3 -3
  338. package/dist/components/NcAppNavigationCaption/index.mjs +1 -1
  339. package/dist/components/NcAppNavigationIconBullet/index.mjs +1 -1
  340. package/dist/components/NcAppNavigationItem/NcAppNavigationItem.vue.d.ts +10 -6
  341. package/dist/components/NcAppNavigationItem/NcInputConfirmCancel.vue.d.ts +1 -1
  342. package/dist/components/NcAppNavigationItem/index.mjs +1 -1
  343. package/dist/components/NcAppNavigationList/NcAppNavigationList.vue.d.ts +57 -1
  344. package/dist/components/NcAppNavigationList/highlight.d.ts +12 -0
  345. package/dist/components/NcAppNavigationList/index.mjs +1 -1
  346. package/dist/components/NcAppNavigationNew/index.mjs +1 -1
  347. package/dist/components/NcAppNavigationNewItem/NcAppNavigationNewItem.vue.d.ts +1 -1
  348. package/dist/components/NcAppNavigationNewItem/index.mjs +1 -1
  349. package/dist/components/NcAppNavigationSearch/NcAppNavigationSearch.vue.d.ts +16 -16
  350. package/dist/components/NcAppNavigationSearch/index.mjs +1 -1
  351. package/dist/components/NcAppNavigationSettings/index.mjs +1 -1
  352. package/dist/components/NcAppNavigationSpacer/index.mjs +1 -1
  353. package/dist/components/NcAppSettingsDialog/index.mjs +1 -1
  354. package/dist/components/NcAppSettingsSection/index.mjs +1 -1
  355. package/dist/components/NcAppSettingsSectionShortcuts/index.mjs +1 -1
  356. package/dist/components/NcAppSettingsShortcutsSection/index.mjs +1 -1
  357. package/dist/components/NcAppSidebar/NcAppSidebar.vue.d.ts +23 -4
  358. package/dist/components/NcAppSidebar/NcAppSidebarTabs.vue.d.ts +43 -0
  359. package/dist/components/NcAppSidebar/NcAppSidebarTabsButton.vue.d.ts +5 -0
  360. package/dist/components/NcAppSidebar/index.mjs +1 -1
  361. package/dist/components/NcAppSidebarHeader/index.mjs +1 -1
  362. package/dist/components/NcAppSidebarTab/NcAppSidebarTab.vue.d.ts +14 -4
  363. package/dist/components/NcAppSidebarTab/index.mjs +1 -1
  364. package/dist/components/NcAssistantButton/index.mjs +1 -1
  365. package/dist/components/NcAssistantContent/index.mjs +1 -1
  366. package/dist/components/NcAssistantIcon/index.mjs +1 -1
  367. package/dist/components/NcAvatar/NcAvatar.vue.d.ts +53 -138
  368. package/dist/components/NcAvatar/index.mjs +1 -1
  369. package/dist/components/NcBlurHash/index.mjs +1 -1
  370. package/dist/components/NcBreadcrumb/NcBreadcrumb.vue.d.ts +4 -4
  371. package/dist/components/NcBreadcrumb/index.mjs +1 -1
  372. package/dist/components/NcBreadcrumbs/NcBreadcrumbs.vue.d.ts +7 -7
  373. package/dist/components/NcBreadcrumbs/index.mjs +1 -1
  374. package/dist/components/NcButton/index.mjs +1 -1
  375. package/dist/components/NcCheckboxRadioSwitch/index.mjs +1 -1
  376. package/dist/components/NcChip/index.mjs +1 -1
  377. package/dist/components/NcCollectionList/NcCollectionList.vue.d.ts +272 -280
  378. package/dist/components/NcCollectionList/NcCollectionListItem.vue.d.ts +38 -140
  379. package/dist/components/NcCollectionList/index.mjs +1 -1
  380. package/dist/components/NcColorPicker/index.mjs +1 -1
  381. package/dist/components/NcContent/index.mjs +1 -1
  382. package/dist/components/NcCounterBubble/index.mjs +1 -1
  383. package/dist/components/NcDashboardWidget/NcDashboardWidget.vue.d.ts +73 -277
  384. package/dist/components/NcDashboardWidget/index.mjs +1 -1
  385. package/dist/components/NcDashboardWidgetItem/NcDashboardWidgetItem.vue.d.ts +38 -140
  386. package/dist/components/NcDashboardWidgetItem/index.mjs +1 -1
  387. package/dist/components/NcDateTime/index.mjs +1 -1
  388. package/dist/components/NcDateTimePicker/NcDateTimePicker.vue.d.ts +82 -80
  389. package/dist/components/NcDateTimePicker/dateFnsLocaleLoader.d.ts +3 -0
  390. package/dist/components/NcDateTimePicker/format.d.ts +35 -0
  391. package/dist/components/NcDateTimePicker/index.mjs +1 -1
  392. package/dist/components/NcDateTimePicker/useDateFnsLocale.d.ts +16 -0
  393. package/dist/components/NcDateTimePickerNative/index.mjs +1 -1
  394. package/dist/components/NcDialog/index.mjs +1 -1
  395. package/dist/components/NcDialogButton/index.mjs +1 -1
  396. package/dist/components/NcEllipsisedOption/index.mjs +1 -1
  397. package/dist/components/NcEmojiPicker/NcEmojiPicker.vue.d.ts +14 -11
  398. package/dist/components/NcEmojiPicker/index.mjs +1 -1
  399. package/dist/components/NcEmptyContent/index.mjs +1 -1
  400. package/dist/components/NcFilePicker/index.mjs +1 -1
  401. package/dist/components/NcFormBox/index.mjs +1 -1
  402. package/dist/components/NcFormBoxButton/index.mjs +1 -1
  403. package/dist/components/NcFormBoxCopyButton/index.mjs +1 -1
  404. package/dist/components/NcFormBoxSwitch/index.mjs +1 -1
  405. package/dist/components/NcFormGroup/index.mjs +1 -1
  406. package/dist/components/NcGuestContent/index.mjs +1 -1
  407. package/dist/components/NcHeaderButton/index.mjs +1 -1
  408. package/dist/components/NcHeaderMenu/index.mjs +1 -1
  409. package/dist/components/NcHighlight/index.mjs +1 -1
  410. package/dist/components/NcHotkey/index.mjs +1 -1
  411. package/dist/components/NcHotkeyList/index.mjs +1 -1
  412. package/dist/components/NcIconSvgWrapper/index.mjs +1 -1
  413. package/dist/components/NcInputField/NcInputField.vue.d.ts +8 -5
  414. package/dist/components/NcInputField/index.mjs +1 -1
  415. package/dist/components/NcKbd/index.mjs +1 -1
  416. package/dist/components/NcListItem/NcListItem.vue.d.ts +3 -3
  417. package/dist/components/NcListItem/index.mjs +1 -1
  418. package/dist/components/NcListItemIcon/NcListItemIcon.vue.d.ts +36 -138
  419. package/dist/components/NcListItemIcon/index.mjs +1 -1
  420. package/dist/components/NcLoadingIcon/index.mjs +1 -1
  421. package/dist/components/NcModal/index.mjs +1 -1
  422. package/dist/components/NcNoteCard/index.mjs +1 -1
  423. package/dist/components/NcPasswordField/NcPasswordField.vue.d.ts +16 -16
  424. package/dist/components/NcPasswordField/index.mjs +1 -1
  425. package/dist/components/NcPopover/index.mjs +1 -1
  426. package/dist/components/NcProfileHoverCard/NcProfileHoverCard.vue.d.ts +80 -0
  427. package/dist/components/NcProfileHoverCard/index.d.ts +5 -0
  428. package/dist/components/NcProfileHoverCard/index.mjs +5 -0
  429. package/dist/components/NcProfileHoverCard/index.mjs.map +1 -0
  430. package/dist/components/NcProfileHoverCard/profileCache.d.ts +31 -0
  431. package/dist/components/NcProgressBar/NcProgressBar.vue.d.ts +27 -0
  432. package/dist/components/NcProgressBar/index.mjs +1 -1
  433. package/dist/components/NcRadioGroup/index.mjs +1 -1
  434. package/dist/components/NcRadioGroupButton/index.mjs +1 -1
  435. package/dist/components/NcRelatedResourcesPanel/NcRelatedResourcesPanel.vue.d.ts +1 -1
  436. package/dist/components/NcRelatedResourcesPanel/index.mjs +1 -1
  437. package/dist/components/NcRichContenteditable/NcRichContenteditable.vue.d.ts +1 -1
  438. package/dist/components/NcRichContenteditable/index.mjs +1 -1
  439. package/dist/components/NcRichText/NcReferencePicker/NcProviderList.vue.d.ts +199 -3
  440. package/dist/components/NcRichText/NcReferencePicker/NcRawLinkInput.vue.d.ts +14 -11
  441. package/dist/components/NcRichText/NcReferencePicker/NcReferencePicker.vue.d.ts +412 -17
  442. package/dist/components/NcRichText/NcReferencePicker/NcReferencePickerModal.vue.d.ts +412 -17
  443. package/dist/components/NcRichText/NcReferencePicker/NcSearch.vue.d.ts +199 -3
  444. package/dist/components/NcRichText/index.mjs +14 -12
  445. package/dist/components/NcRichText/index.mjs.map +1 -1
  446. package/dist/components/NcSavingIndicatorIcon/index.mjs +1 -1
  447. package/dist/components/NcSelect/NcSelect.vue.d.ts +208 -3
  448. package/dist/components/NcSelect/index.mjs +1 -1
  449. package/dist/components/NcSelectTags/NcSelectTags.vue.d.ts +201 -5
  450. package/dist/components/NcSelectTags/index.mjs +1 -1
  451. package/dist/components/NcSelectUsers/index.mjs +1 -1
  452. package/dist/components/NcSettingsSection/index.mjs +1 -1
  453. package/dist/components/NcSettingsSelectGroup/NcSettingsSelectGroup.vue.d.ts +199 -3
  454. package/dist/components/NcSettingsSelectGroup/index.mjs +1 -1
  455. package/dist/components/NcTextArea/index.mjs +1 -1
  456. package/dist/components/NcTextField/NcTextField.vue.d.ts +23 -17
  457. package/dist/components/NcTextField/index.mjs +1 -1
  458. package/dist/components/NcThemeProvider/index.mjs +1 -1
  459. package/dist/components/NcTimezonePicker/index.mjs +1 -1
  460. package/dist/components/NcUserBubble/index.mjs +1 -1
  461. package/dist/components/NcUserStatusIcon/index.mjs +1 -1
  462. package/dist/components/NcVNodes/index.mjs +1 -1
  463. package/dist/components/index.d.ts +1 -0
  464. package/dist/composables/useFormatDateTime/index.mjs +11 -5
  465. package/dist/composables/useFormatDateTime/index.mjs.map +1 -1
  466. package/dist/composables/useHotKey/index.mjs +1 -1
  467. package/dist/composables/useIsDarkTheme/index.mjs +1 -1
  468. package/dist/functions/contactsMenu/index.mjs +1 -1
  469. package/dist/functions/emoji/index.mjs +1 -1
  470. package/dist/functions/reference/index.mjs +13 -12
  471. package/dist/functions/reference/index.mjs.map +1 -1
  472. package/dist/functions/registerReference/index.mjs +10 -9
  473. package/dist/functions/registerReference/index.mjs.map +1 -1
  474. package/dist/functions/usernameToColor/index.mjs +1 -1
  475. package/dist/index.mjs +120 -116
  476. package/dist/index.mjs.map +1 -1
  477. package/dist/utils/legacy.d.ts +2 -0
  478. package/package.json +20 -19
  479. package/dist/assets/NcAppNavigationList--36j6Acm.css +0 -28
  480. package/dist/assets/NcDateTimePickerNative-BP6eg8aU.css +0 -60
  481. package/dist/assets/NcPopover-CAoHhjKa.css +0 -123
  482. package/dist/assets/NcSelect-CvDEQAjD.css +0 -245
  483. package/dist/assets/NcSelectUsers-YF5729PJ.css +0 -4
  484. package/dist/chunks/ArrowRight-B1ncAhus.mjs.map +0 -1
  485. package/dist/chunks/ChevronDown-C6gc637b.mjs.map +0 -1
  486. package/dist/chunks/ChevronUp-ChH8oB7p.mjs.map +0 -1
  487. package/dist/chunks/Close-CuhcJnX2.mjs.map +0 -1
  488. package/dist/chunks/NcActionButton-BO5T5ePT.mjs.map +0 -1
  489. package/dist/chunks/NcActionButtonGroup-Dd03Oluy.mjs.map +0 -1
  490. package/dist/chunks/NcActionCaption-f7L9gBlT.mjs.map +0 -1
  491. package/dist/chunks/NcActionCheckbox-DBqiK-AZ.mjs.map +0 -1
  492. package/dist/chunks/NcActionInput-Dr8Yrafu.mjs.map +0 -1
  493. package/dist/chunks/NcActionLink-BFiaYt9A.mjs.map +0 -1
  494. package/dist/chunks/NcActionRadio-BA08CAtA.mjs.map +0 -1
  495. package/dist/chunks/NcActionRouter-vYFtIOzD.mjs.map +0 -1
  496. package/dist/chunks/NcActionSeparator-B9pNQaji.mjs.map +0 -1
  497. package/dist/chunks/NcActionText-CQ9qwJ0p.mjs.map +0 -1
  498. package/dist/chunks/NcActionTextEditable-B8y_GEre.mjs.map +0 -1
  499. package/dist/chunks/NcActions-C-wDqSrv.mjs.map +0 -1
  500. package/dist/chunks/NcAppContent-DavgjaFX.mjs.map +0 -1
  501. package/dist/chunks/NcAppContentDetails.vue_vue_type_script_setup_true_lang-BWl5Pw5g.mjs.map +0 -1
  502. package/dist/chunks/NcAppContentList-Copx3Ver.mjs.map +0 -1
  503. package/dist/chunks/NcAppNavigation-g57j16pB.mjs.map +0 -1
  504. package/dist/chunks/NcAppNavigationCaption-VjSWJ8R4.mjs.map +0 -1
  505. package/dist/chunks/NcAppNavigationIconBullet-BmU-dPcY.mjs.map +0 -1
  506. package/dist/chunks/NcAppNavigationItem-CDeYtA3E.mjs.map +0 -1
  507. package/dist/chunks/NcAppNavigationList-CGSWabRB.mjs +0 -17
  508. package/dist/chunks/NcAppNavigationList-CGSWabRB.mjs.map +0 -1
  509. package/dist/chunks/NcAppNavigationNew-CBNppM7Q.mjs.map +0 -1
  510. package/dist/chunks/NcAppNavigationNewItem-B1RfQkvu.mjs.map +0 -1
  511. package/dist/chunks/NcAppNavigationSearch-CQQWb1Eq.mjs.map +0 -1
  512. package/dist/chunks/NcAppNavigationSettings-DoMjRExO.mjs.map +0 -1
  513. package/dist/chunks/NcAppNavigationSpacer-CIRC4ZEj.mjs.map +0 -1
  514. package/dist/chunks/NcAppSettingsDialog-BPcEYLjP.mjs.map +0 -1
  515. package/dist/chunks/NcAppSettingsSection-BosSmisT.mjs.map +0 -1
  516. package/dist/chunks/NcAppSettingsShortcutsSection-DLwubKV9.mjs.map +0 -1
  517. package/dist/chunks/NcAppSidebar-C8YzAzrZ.mjs.map +0 -1
  518. package/dist/chunks/NcAppSidebarHeader.vue_vue_type_script_setup_true_lang-C-QhdyiN.mjs.map +0 -1
  519. package/dist/chunks/NcAppSidebarTab-DOSDDbGA.mjs.map +0 -1
  520. package/dist/chunks/NcAssistantButton-iK491d2v.mjs.map +0 -1
  521. package/dist/chunks/NcAssistantContent-iHA4O4cC.mjs.map +0 -1
  522. package/dist/chunks/NcAssistantIcon-C6s4Qm7-.mjs.map +0 -1
  523. package/dist/chunks/NcAvatar-1KxMUN7V.mjs.map +0 -1
  524. package/dist/chunks/NcBlurHash-B30Ol8KP.mjs.map +0 -1
  525. package/dist/chunks/NcBreadcrumb-3Y5NWXnV.mjs.map +0 -1
  526. package/dist/chunks/NcBreadcrumbs-BaTp3Sya.mjs.map +0 -1
  527. package/dist/chunks/NcButton-jvoYS2my.mjs.map +0 -1
  528. package/dist/chunks/NcCheckboxRadioSwitch-DVdt5Hkq.mjs.map +0 -1
  529. package/dist/chunks/NcChip-DKRlV47q.mjs.map +0 -1
  530. package/dist/chunks/NcCollectionList-B9qCtjJw.mjs.map +0 -1
  531. package/dist/chunks/NcColorPicker-BCkasLwT.mjs.map +0 -1
  532. package/dist/chunks/NcContent-BYh5hWDN.mjs.map +0 -1
  533. package/dist/chunks/NcCounterBubble-CV0YMrXW.mjs.map +0 -1
  534. package/dist/chunks/NcDashboardWidget-zmbDEGL-.mjs.map +0 -1
  535. package/dist/chunks/NcDashboardWidgetItem-DwDndrm_.mjs.map +0 -1
  536. package/dist/chunks/NcDateTime.vue_vue_type_script_setup_true_lang-BJuPH7S7.mjs.map +0 -1
  537. package/dist/chunks/NcDateTimePicker-qaFC_wUt.mjs +0 -415
  538. package/dist/chunks/NcDateTimePicker-qaFC_wUt.mjs.map +0 -1
  539. package/dist/chunks/NcDateTimePickerNative-B8CMOUnH.mjs.map +0 -1
  540. package/dist/chunks/NcDialog-D617YI0t.mjs.map +0 -1
  541. package/dist/chunks/NcDialogButton.vue_vue_type_script_setup_true_lang-Bqfy678u.mjs.map +0 -1
  542. package/dist/chunks/NcEllipsisedOption-D6Amb91K.mjs.map +0 -1
  543. package/dist/chunks/NcEmojiPicker-UTxgju3f.mjs.map +0 -1
  544. package/dist/chunks/NcEmptyContent-CGAPqk4S.mjs.map +0 -1
  545. package/dist/chunks/NcFilePicker-bD2toutn.mjs.map +0 -1
  546. package/dist/chunks/NcFormBox-Bmqar8nn.mjs.map +0 -1
  547. package/dist/chunks/NcFormBoxButton-G_PkUiQy.mjs.map +0 -1
  548. package/dist/chunks/NcFormBoxCopyButton.vue_vue_type_script_setup_true_lang-BA_gWnmz.mjs.map +0 -1
  549. package/dist/chunks/NcFormBoxItem-Cm8aZaVJ.mjs.map +0 -1
  550. package/dist/chunks/NcFormBoxSwitch-DSXiQcnq.mjs.map +0 -1
  551. package/dist/chunks/NcFormGroup-N7qIFAwN.mjs.map +0 -1
  552. package/dist/chunks/NcGuestContent-CvT6VGt1.mjs.map +0 -1
  553. package/dist/chunks/NcHeaderButton-BnLwYCog.mjs.map +0 -1
  554. package/dist/chunks/NcHeaderMenu-ktQJV2SW.mjs.map +0 -1
  555. package/dist/chunks/NcHighlight.vue_vue_type_script_lang-DnWQDM_2.mjs.map +0 -1
  556. package/dist/chunks/NcHotkey-BDGeF3eH.mjs.map +0 -1
  557. package/dist/chunks/NcHotkeyList-B4WjTLAp.mjs.map +0 -1
  558. package/dist/chunks/NcIconSvgWrapper-g8ubWhoz.mjs.map +0 -1
  559. package/dist/chunks/NcIconToggleSwitch-CRvGt4su.mjs.map +0 -1
  560. package/dist/chunks/NcInputConfirmCancel-CGTllrXj.mjs.map +0 -1
  561. package/dist/chunks/NcInputField-5Sg6EUP6.mjs.map +0 -1
  562. package/dist/chunks/NcKbd-Bh_Tk6Ar.mjs.map +0 -1
  563. package/dist/chunks/NcListItem-BliLJpvU.mjs.map +0 -1
  564. package/dist/chunks/NcListItemIcon-Dl_tfkk9.mjs.map +0 -1
  565. package/dist/chunks/NcLoadingIcon-BOVpFVQz.mjs.map +0 -1
  566. package/dist/chunks/NcMentionBubble.vue_vue_type_style_index_0_scoped_3c4a673d_lang-DyqakLm5.mjs.map +0 -1
  567. package/dist/chunks/NcModal-DiDvgcU8.mjs.map +0 -1
  568. package/dist/chunks/NcNoteCard-mI7qVZ9j.mjs.map +0 -1
  569. package/dist/chunks/NcPasswordField-BFyzHTOO.mjs.map +0 -1
  570. package/dist/chunks/NcPopover-B87bEPLq.mjs.map +0 -1
  571. package/dist/chunks/NcProgressBar-C-ane-Ni.mjs.map +0 -1
  572. package/dist/chunks/NcRadioGroup-B4qmS2UD.mjs.map +0 -1
  573. package/dist/chunks/NcRadioGroupButton-CZykGwv3.mjs.map +0 -1
  574. package/dist/chunks/NcRelatedResourcesPanel-D_Ttpg5_.mjs.map +0 -1
  575. package/dist/chunks/NcRichContenteditable-Qw614bJ5.mjs.map +0 -1
  576. package/dist/chunks/NcRichText-BO_4KtBA.mjs.map +0 -1
  577. package/dist/chunks/NcSavingIndicatorIcon.vue_vue_type_script_setup_true_lang-DbQnMYZm.mjs.map +0 -1
  578. package/dist/chunks/NcSelect--kERLlBK.mjs.map +0 -1
  579. package/dist/chunks/NcSelectTags-I2hJaNax.mjs.map +0 -1
  580. package/dist/chunks/NcSelectUsers-K14Bepkq.mjs.map +0 -1
  581. package/dist/chunks/NcSettingsSection-Caz1fuWt.mjs.map +0 -1
  582. package/dist/chunks/NcSettingsSelectGroup-SYJ8-XlR.mjs.map +0 -1
  583. package/dist/chunks/NcTextArea-Dxzj4zdb.mjs.map +0 -1
  584. package/dist/chunks/NcTextField.vue_vue_type_script_setup_true_lang-Bx2esFU2.mjs.map +0 -1
  585. package/dist/chunks/NcThemeProvider.vue_vue_type_script_setup_true_lang-wie70gn4.mjs.map +0 -1
  586. package/dist/chunks/NcTimezonePicker.vue_vue_type_script_setup_true_lang-D7ZHgnwW.mjs.map +0 -1
  587. package/dist/chunks/NcUserBubble-BXR7vT0V.mjs.map +0 -1
  588. package/dist/chunks/NcUserStatusIcon-BF5OEQFU.mjs.map +0 -1
  589. package/dist/chunks/NcVNodes.vue_vue_type_script_lang-BqUHinRZ.mjs.map +0 -1
  590. package/dist/chunks/_l10n-wdIzZwir.mjs.map +0 -1
  591. package/dist/chunks/_plugin-vue_export-helper-1tPrXgE0.mjs.map +0 -1
  592. package/dist/chunks/actionGlobal-BZFdtdJL.mjs.map +0 -1
  593. package/dist/chunks/actionText-BXR0sWNu.mjs.map +0 -1
  594. package/dist/chunks/appName-DyNMVZpX.mjs.map +0 -1
  595. package/dist/chunks/autolink-DrIurosL.mjs.map +0 -1
  596. package/dist/chunks/colors-Cv9F-jWS.mjs.map +0 -1
  597. package/dist/chunks/constants-Ciwvl5xb.mjs.map +0 -1
  598. package/dist/chunks/constants-wIEKSp2G.mjs.map +0 -1
  599. package/dist/chunks/createElementId-DhjFt1I9.mjs.map +0 -1
  600. package/dist/chunks/customPickerElements-BqbDcaEu.mjs +0 -123
  601. package/dist/chunks/customPickerElements-BqbDcaEu.mjs.map +0 -1
  602. package/dist/chunks/emoji-C8k9NUlo.mjs.map +0 -1
  603. package/dist/chunks/focusTrap-HJQ4pqHV.mjs.map +0 -1
  604. package/dist/chunks/legacy-BoqDmOCa.mjs.map +0 -1
  605. package/dist/chunks/logger-D3RVzcfQ.mjs.map +0 -1
  606. package/dist/chunks/mdi-CpchYUUV.mjs.map +0 -1
  607. package/dist/chunks/platform-CC2ecGvV.mjs.map +0 -1
  608. package/dist/chunks/referencePickerModal-CnKdEDwu.mjs.map +0 -1
  609. package/dist/chunks/rtl-v0UOPAM7.mjs.map +0 -1
  610. package/dist/chunks/useAppSettingsDialog-C73Wx6iQ.mjs.map +0 -1
  611. package/dist/chunks/useCopy-6F-qWHq0.mjs.map +0 -1
  612. package/dist/chunks/useNcActions-BzPO2c4h.mjs.map +0 -1
  613. package/dist/chunks/useNcFormBox-Djlh582y.mjs.map +0 -1
  614. package/dist/chunks/useNcRadioGroup-D6llQmAl.mjs.map +0 -1
  615. package/dist/chunks/useTrapStackControl-B6cEicto.mjs.map +0 -1
  616. /package/dist/assets/{NcActionButtonGroup-Bt8kRk79.css → NcActionButtonGroup.css} +0 -0
  617. /package/dist/assets/{NcActionCaption-DnG2OyWa.css → NcActionCaption.css} +0 -0
  618. /package/dist/assets/{NcActionSeparator-Ct2RnclR.css → NcActionSeparator.css} +0 -0
  619. /package/dist/assets/{NcAppContent-TgcZd4AI.css → NcAppContent.css} +0 -0
  620. /package/dist/assets/{NcAppNavigationCaption-ggcWspH2.css → NcAppNavigationCaption.css} +0 -0
  621. /package/dist/assets/{NcAppNavigationIconBullet-DLQJkObX.css → NcAppNavigationIconBullet.css} +0 -0
  622. /package/dist/assets/{NcAppNavigationNew-Bn8zj5lM.css → NcAppNavigationNew.css} +0 -0
  623. /package/dist/assets/{NcAppNavigationSearch-DD7mo6OW.css → NcAppNavigationSearch.css} +0 -0
  624. /package/dist/assets/{NcAppNavigationSpacer-LST5uYYS.css → NcAppNavigationSpacer.css} +0 -0
  625. /package/dist/assets/{NcAppSettingsSection-DIw8GLHR.css → NcAppSettingsSection.css} +0 -0
  626. /package/dist/assets/{NcBreadcrumb-BxhZKQlW.css → NcBreadcrumb.css} +0 -0
  627. /package/dist/assets/{NcBreadcrumbs-B4eyDS9i.css → NcBreadcrumbs.css} +0 -0
  628. /package/dist/assets/{NcChip-DbSI4mFP.css → NcChip.css} +0 -0
  629. /package/dist/assets/{NcCollectionList-e5JFvzqX.css → NcCollectionList.css} +0 -0
  630. /package/dist/assets/{NcColorPicker-DVYGs8R3.css → NcColorPicker.css} +0 -0
  631. /package/dist/assets/{NcContent-DX4Rs6Pc.css → NcContent.css} +0 -0
  632. /package/dist/assets/{NcCounterBubble-ZnteskDR.css → NcCounterBubble.css} +0 -0
  633. /package/dist/assets/{NcDashboardWidget-nZuIL1UN.css → NcDashboardWidget.css} +0 -0
  634. /package/dist/assets/{NcDashboardWidgetItem-DpVmEBwQ.css → NcDashboardWidgetItem.css} +0 -0
  635. /package/dist/assets/{NcDialog-BSV74Bru.css → NcDialog.css} +0 -0
  636. /package/dist/assets/{NcEmojiPicker-vNKR9S87.css → NcEmojiPicker.css} +0 -0
  637. /package/dist/assets/{NcEmptyContent-DJMDuGVz.css → NcEmptyContent.css} +0 -0
  638. /package/dist/assets/{NcGuestContent-CM0uWLr1.css → NcGuestContent.css} +0 -0
  639. /package/dist/assets/{NcHeaderButton-CVOQgRjm.css → NcHeaderButton.css} +0 -0
  640. /package/dist/assets/{NcIconSvgWrapper-N3OwSN9O.css → NcIconSvgWrapper.css} +0 -0
  641. /package/dist/assets/{NcInputConfirmCancel-DZEDRf0t.css → NcInputConfirmCancel.css} +0 -0
  642. /package/dist/assets/{NcListItem-BjeejGlB.css → NcListItem.css} +0 -0
  643. /package/dist/assets/{NcListItemIcon-DJRcmlo1.css → NcListItemIcon.css} +0 -0
  644. /package/dist/assets/{NcLoadingIcon-CWUlo4XY.css → NcLoadingIcon.css} +0 -0
  645. /package/dist/assets/{NcMentionBubble-BeGb2xGc.css → NcMentionBubble.css} +0 -0
  646. /package/dist/assets/{NcModal-D81luiuU.css → NcModal.css} +0 -0
  647. /package/dist/assets/{NcNoteCard-DfescGKl.css → NcNoteCard.css} +0 -0
  648. /package/dist/assets/{NcPasswordField-BN4HFgU5.css → NcPasswordField.css} +0 -0
  649. /package/dist/assets/{NcRelatedResourcesPanel-BZKjkugM.css → NcRelatedResourcesPanel.css} +0 -0
  650. /package/dist/assets/{NcRichText-D0Bu5bbu.css → NcRichText.css} +0 -0
  651. /package/dist/assets/{NcSettingsSection-f5rBJsKJ.css → NcSettingsSection.css} +0 -0
  652. /package/dist/assets/{NcSettingsSelectGroup-D_fSrafm.css → NcSettingsSelectGroup.css} +0 -0
  653. /package/dist/assets/{NcTextArea-BxGe3Lqn.css → NcTextArea.css} +0 -0
  654. /package/dist/assets/{NcUserBubble-DFUmBxeb.css → NcUserBubble.css} +0 -0
  655. /package/dist/assets/{NcUserStatusIcon-B3aHoBAd.css → NcUserStatusIcon.css} +0 -0
@@ -1 +0,0 @@
1
- {"version":3,"file":"NcSavingIndicatorIcon.vue_vue_type_script_setup_true_lang-DbQnMYZm.mjs","sources":["../../src/components/NcSavingIndicatorIcon/NcSavingIndicatorIcon.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# Usage\n\n```\n<template>\n<div>\n\t<div>\n\t\t<NcSavingIndicatorIcon :name=\"`${savingState === 'error' ? 'Error saving' : savingState} file`\"\n\t\t\t:error=\"savingState === 'error'\"\n\t\t\t:saving=\"savingState === 'saving'\" />\n\t</div>\n\t<br />\n\t<div style=\"display: flex; justify-content: space-around;\">\n\t\t<NcCheckboxRadioSwitch v-model=\"savingState\"\n\t\t\tvalue=\"saved\"\n\t\t\tname=\"saving_radio\"\n\t\t\ttype=\"radio\">\n\t\t\tSaved\n\t\t</NcCheckboxRadioSwitch>\n\t\t<NcCheckboxRadioSwitch v-model=\"savingState\"\n\t\t\tvalue=\"saving\"\n\t\t\tname=\"saving_radio\"\n\t\t\ttype=\"radio\">\n\t\t\tSaving\n\t\t</NcCheckboxRadioSwitch>\n\t\t<NcCheckboxRadioSwitch v-model=\"savingState\"\n\t\t\tvalue=\"error\"\n\t\t\tname=\"saving_radio\"\n\t\t\ttype=\"radio\">\n\t\t\tError\n\t\t</NcCheckboxRadioSwitch>\n\t</div>\n</div>\n</template>\n<script>\nexport default {\n\tdata() {\n\t\treturn {\n\t\t\tsavingState: 'saved',\n\t\t}\n\t},\n}\n</script>\n\n```\n</docs>\n\n<script setup lang=\"ts\">\nimport { computed } from 'vue'\n\nconst props = withDefaults(defineProps<{\n\t/**\n\t * Specify the size of the saving icon.\n\t */\n\tsize?: number\n\n\t/**\n\t * Specify what is saved.\n\t * If not set the element will be hidden from accessibility tree.\n\t */\n\tname?: string\n\n\t/**\n\t * Set to true when saving is in progress.\n\t */\n\tsaving?: boolean\n\n\t/**\n\t * Set to true if an error occured while saving.\n\t */\n\terror?: boolean\n}>(), {\n\terror: false,\n\tname: '',\n\tsaving: false,\n\tsize: 20,\n})\n\ndefineEmits<{\n\t/**\n\t * Click event on the icon.\n\t */\n\tclick: [MouseEvent]\n}>()\n\nconst indicatorColor = computed(() => {\n\tif (props.error) {\n\t\treturn 'var(--color-text-error, var(--color-error))'\n\t}\n\tif (props.saving) {\n\t\treturn 'var(--color-primary-element)'\n\t}\n\treturn 'none'\n})\n</script>\n\n<template>\n\t<span\n\t\t:aria-label=\"name\"\n\t\tclass=\"material-design-icon\"\n\t\trole=\"img\"\n\t\t@click=\"$emit('click', $event)\">\n\t\t<svg\n\t\t\tclass=\"material-design-icon__svg\"\n\t\t\t:width=\"size\"\n\t\t\t:height=\"size\"\n\t\t\tviewBox=\"0 0 24 24\">\n\t\t\t<path :fill=\"indicatorColor\" d=\"m19 15a4 4 0 0 0-4 4 4 4 0 0 0 4 4 4 4 0 0 0 4-4 4 4 0 0 0-4-4z\" />\n\t\t\t<path fill=\"currentColor\" d=\"M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z\">\n\t\t\t\t<title v-if=\"name\">{{ name }}</title>\n\t\t\t</path>\n\t\t</svg>\n\t</span>\n</template>\n"],"names":["_createElementBlock","$emit","_createElementVNode","_openBlock"],"mappings":";;;;;;;;;;;;;;;;;;;AAuDA,UAAM,QAAQ;AAmCd,UAAM,iBAAiB,SAAS,MAAM;AACrC,UAAI,MAAM,OAAO;AAChB,eAAO;AAAA,MACR;AACA,UAAI,MAAM,QAAQ;AACjB,eAAO;AAAA,MACR;AACA,aAAO;AAAA,IACR,CAAC;;0BAIAA,mBAeO,QAAA;AAAA,QAdL,cAAY,QAAA;AAAA,QACb,OAAM;AAAA,QACN,MAAK;AAAA,QACJ,SAAK,OAAA,CAAA,MAAA,OAAA,CAAA,IAAA,CAAA,WAAEC,KAAAA,MAAK,SAAU,MAAM;AAAA,MAAA;sBAC7BD,mBASM,OAAA;AAAA,UARL,OAAM;AAAA,UACL,OAAO,QAAA;AAAA,UACP,QAAQ,QAAA;AAAA,UACT,SAAQ;AAAA,QAAA;UACRE,mBAAmG,QAAA;AAAA,YAA5F,MAAM,eAAA;AAAA,YAAgB,GAAE;AAAA,UAAA;UAC/BA,mBAEO,QAFP,YAEO;AAAA,YADO,QAAA,QAAbC,UAAA,GAAAH,mBAAqC,qCAAf,QAAA,IAAI,GAAA,CAAA;;;;;;;"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"NcSelect--kERLlBK.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\tkeepOpen: true,\n\t\t\tmultiple: true,\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 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 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\tkeepOpen: true,\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\tkeepOpen: true,\n\t\tmultiple: true,\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</docs>\n\n<template>\n\t<VueSelect\n\t\tclass=\"select\"\n\t\t:class=\"{\n\t\t\t'select--legacy': isLegacy,\n\t\t\t'select--no-wrap': noWrap,\n\t\t}\"\n\t\tv-bind=\"propsToForward\"\n\t\t@search=\"search = $event\"\n\t\t@update:modelValue=\"$emit('update:modelValue', $event)\">\n\t\t<template v-if=\"!labelOutside && inputLabel\" #header>\n\t\t\t<label\n\t\t\t\t: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\n\t\t\t\tclass=\"vs__search\"\n\t\t\t\t:class=\"[inputClass]\"\n\t\t\t\tv-bind=\"attributes\"\n\t\t\t\t:required=\"inputRequired\"\n\t\t\t\tdir=\"auto\"\n\t\t\t\tv-on=\"events\">\n\t\t</template>\n\t\t<template #open-indicator=\"{ attributes }\">\n\t\t\t<ChevronDown\n\t\t\t\tv-bind=\"attributes\"\n\t\t\t\tfillColor=\"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<!-- @slot Customize how a option is rendered. -->\n\t\t\t<slot name=\"option\" v-bind=\"option\">\n\t\t\t\t<NcEllipsisedOption\n\t\t\t\t\t:name=\"String(option[localLabel])\"\n\t\t\t\t\t:search=\"search\" />\n\t\t\t</slot>\n\t\t</template>\n\t\t<template #selected-option=\"selectedOption\">\n\t\t\t<!-- @slot Customize how a selected option is rendered -->\n\t\t\t<slot name=\"selected-option\" v-bind=\"selectedOption\">\n\t\t\t\t<NcEllipsisedOption\n\t\t\t\t\t:name=\"String(selectedOption[localLabel])\"\n\t\t\t\t\t:search=\"search\" />\n\t\t\t</slot>\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 $slots\" #[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 {\n\tautoUpdate,\n\tcomputePosition,\n\tflip,\n\tlimitShift,\n\toffset,\n\tshift,\n} from '@floating-ui/dom'\nimport { VueSelect } from '@nextcloud/vue-select'\nimport { h, warn } from 'vue'\nimport ChevronDown from 'vue-material-design-icons/ChevronDown.vue'\nimport Close from 'vue-material-design-icons/Close.vue'\nimport NcEllipsisedOption from '../NcEllipsisedOption/NcEllipsisedOption.vue'\nimport NcLoadingIcon from '../NcLoadingIcon/NcLoadingIcon.vue'\nimport { t } from '../../l10n.ts'\nimport { createElementId } from '../../utils/createElementId.ts'\nimport { isLegacy } from '../../utils/legacy.ts'\n\nexport default {\n\tname: 'NcSelect',\n\n\tcomponents: {\n\t\tChevronDown,\n\t\tNcEllipsisedOption,\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 *\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 * Keep the dropdown open after selecting an option.\n\t\t *\n\t\t * @default false\n\t\t * @since 8.25.0\n\t\t */\n\t\tkeepOpen: {\n\t\t\ttype: Boolean,\n\t\t\tdefault: false,\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: () => h(Close, {\n\t\t\t\t\t\tsize: 20,\n\t\t\t\t\t\tfillColor: 'var(--vs-controls-color)',\n\t\t\t\t\t\tstyle: [\n\t\t\t\t\t\t\t{ cursor: '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 * @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: () => createElementId(),\n\t\t},\n\n\t\t/**\n\t\t * Visible label for the input element\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 * @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, (event: KeyboardEvent) => void>} map - Mapped keyCode to handlers { <keyCode>:<callback> }\n\t\t\t * @param {import('vue').ComponentPublicInstance} vm - VueSelect instance\n\t\t\t * @return {Record<number, (event: KeyboardEvent) => void>} 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: () => createElementId(),\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 * 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\tmodelValue: {\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\t'update:modelValue',\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\tisLegacy,\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.modelValue === null || (Array.isArray(this.modelValue) && this.modelValue.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\treturn this.filterBy ?? VueSelect.props.filterBy.default\n\t\t},\n\n\t\tlocalLabel() {\n\t\t\treturn this.label ?? 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(Object.entries(this.$props)\n\t\t\t// eslint-disable-next-line @typescript-eslint/no-unused-vars\n\t\t\t\t.filter(([key, _value]) => vueSelectKeys.includes(key)))\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\tcloseOnSelect: !this.keepOpen,\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\twarn('[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\twarn('[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\">\n@use '../../assets/input-border.scss' as border;\n\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-element);\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: calc(var(--default-clickable-area) - 2 * var(--border-width-input));\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: var(--border-width-input);\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-inline-end: 2px;\n\t}\n\n\t&.vs--open .vs__dropdown-toggle {\n\t\tborder-color: var(--color-main-text);\n\t\tborder-bottom-color: transparent;\n\t\tborder-bottom-left-radius: 0;\n\t\tborder-bottom-right-radius: 0;\n\t\tborder-style: solid;\n\t\tborder-width: var(--border-width-input-focused);\n\t\toutline: 2px solid var(--color-main-background);\n\t\tpadding: 0;\n\t}\n\n\t&:not(.vs--disabled, .vs--open) {\n\t\t.vs__dropdown-toggle:active,\n\t\t.vs__dropdown-toggle:focus-within {\n\t\t\toutline: 2px solid var(--color-main-background);\n\t\t\tborder-color: var(--color-main-text);\n\t\t}\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-toggle {\n\t@include border.inputLikeBorder('.select--legacy', var(--vs-border-color));\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\tinset-inline-start: 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-maxcontrast) !important;\n\t}\n}\n</style>\n"],"names":["Close","_openBlock","_createBlock","_mergeProps","_withCtx","_createElementVNode","_toHandlers","_createVNode","_renderSlot","_normalizeProps","_guardReactiveProps"],"mappings":";;;;;;;;;;;;AAuZA,MAAK,YAAU;AAAA,EACd,MAAM;AAAA,EAEN,YAAY;AAAA,IACX;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA;EAGD,OAAO;AAAA;AAAA,IAEN,GAAG,UAAU;AAAA,IACb,GAAG,UAAU,OAAO,OAAO,CAAC,UAAU,WAAW,EAAE,GAAG,UAAU,GAAG,MAAM,MAAI,IAAM,CAAA,CAAE;AAAA;AAAA;AAAA;AAAA,IAKrF,wBAAwB;AAAA,MACvB,MAAM;AAAA,MACN,SAAS,EAAE,gBAAgB;AAAA;;;;;;IAQ5B,mBAAmB;AAAA,MAClB,MAAM;AAAA,MACN,SAAS;AAAA;;;;IAMV,kBAAkB;AAAA,MACjB,MAAM;AAAA,MACN,SAAS,EAAE,SAAS;AAAA;;;;;;;IASrB,yBAAyB;AAAA,MACxB,MAAM;AAAA,MACN,SAAS,CAAC,gBAAgB,EAAE,qBAAqB,EAAE,QAAQ,aAAa;AAAA;;;;;;;IASzE,cAAc;AAAA,MACb,MAAM;AAAA,MACN,SAAS;AAAA;;;;;;;;;;;IAaV,mBAAmB;AAAA,MAClB,MAAM;AAAA,MACN,SAAS;AAAA;;;;;;;IASV,UAAU;AAAA,MACT,MAAM;AAAA,MACN,SAAS;AAAA;;;;;;IAQV,YAAY;AAAA,MACX,MAAM;AAAA,MACN,SAAS,OAAO;AAAA,QACf,UAAU;AAAA,UACT,QAAQ,MAAM,EAAEA,WAAO;AAAA,YACtB,MAAM;AAAA,YACN,WAAW;AAAA,YACX,OAAO;AAAA,cACN,EAAE,QAAQ;;UAEZ,CAAC;AAAA;MAEH;AAAA;;;;IAMD,OAAO;AAAA,MACN,MAAM;AAAA,MACN,SAAS;AAAA;;;;;;IAQV,UAAU;AAAA,MACT,MAAM;AAAA,MACN,SAAS;AAAA;;;;;;;IASV,oBAAoB;AAAA,MACnB,MAAM;AAAA,MACN,SAAS,CAAC,EAAE,QAAQ,WAAW;AAC9B,eAAO,SAAS,QAAQ;AAAA,MACzB;AAAA;;;;;;;;;;;IAaD,UAAU;AAAA,MACT,MAAM;AAAA,MACN,SAAS;AAAA;;;;;;IAQV,YAAY;AAAA,MACX,MAAM,CAAC,QAAQ,MAAM;AAAA,MACrB,SAAS;AAAA;;;;IAMV,SAAS;AAAA,MACR,MAAM;AAAA,MACN,SAAS,MAAM,gBAAe;AAAA;;;;IAM/B,YAAY;AAAA,MACX,MAAM;AAAA,MACN,SAAS;AAAA;;;;IAMV,cAAc;AAAA,MACb,MAAM;AAAA,MACN,SAAS;AAAA;;;;;IAOV,qBAAqB;AAAA,MACpB,MAAM;AAAA,MACN,SAAS;AAAA;;;;;;;;;IAWV,OAAO;AAAA,MACN,MAAM;AAAA,MACN,SAAS;AAAA;;;;;;IAQV,SAAS;AAAA,MACR,MAAM;AAAA,MACN,SAAS;AAAA;;;;;;IAQV,UAAU;AAAA,MACT,MAAM;AAAA,MACN,SAAS;AAAA;;;;IAMV,QAAQ;AAAA,MACP,MAAM;AAAA,MACN,SAAS;AAAA;;;;;;;;IAUV,SAAS;AAAA,MACR,MAAM;AAAA,MACN,SAAS,MAAM,CAAA;AAAA;;;;;;IAQhB,aAAa;AAAA,MACZ,MAAM;AAAA,MACN,SAAS;AAAA;;;;;;IAQV,YAAY;AAAA,MACX,MAAM;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,MAQN,QAAQ,KAAK,IAAI;AAChB,eAAO;AAAA,UACN,GAAG;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,UAMH,IAAI,CAAC,UAAU;AACd,gBAAI,GAAG,MAAM;AACZ,oBAAM,gBAAe;AAAA,YACtB;AAEA,gBAAI,EAAE,EAAE,KAAK;AAAA,UACd;AAAA,QACD;AAAA,MACD;AAAA;;;;;;IAQD,KAAK;AAAA,MACJ,MAAM;AAAA,MACN,SAAS,MAAM,gBAAe;AAAA;;;;;;IAQ/B,WAAW;AAAA,MACV,MAAM;AAAA,MACN,SAAS;AAAA;;;;;IAOV,2BAA2B;AAAA,MAC1B,MAAM;AAAA,MACN,SAAS;AAAA;;;;;;;;;;IAYV,YAAY;AAAA,MACX,MAAM,CAAC,QAAQ,QAAQ,QAAQ,KAAK;AAAA,MACpC,SAAS;AAAA;;;;IAMV,UAAU;AAAA,MACT,MAAM;AAAA,MACN,SAAS;AAAA;;;;;;;;IAUV,KAAK,CAAA;AAAA;EAGN,OAAO;AAAA;AAAA;AAAA;AAAA;AAAA,IAKN;AAAA,IACA;AAAA;EAGD,QAAQ;AACP,UAAM,gBAAgB,OAAO,SAAS,OAAO,iBAAiB,SAAS,IAAI,EAAE,iBAAiB,0BAA0B,CAAC;AACzH,UAAM,eAAe,OAAO,SAAS,OAAO,iBAAiB,SAAS,IAAI,EAAE,iBAAiB,yBAAyB,CAAC;AACvH,UAAM,aAAa,gBAAgB,IAAI;AAEvC,WAAO;AAAA,MACN;AAAA,MACA;AAAA,IACD;AAAA,EACD;AAAA,EAEA,OAAO;AACN,WAAO;AAAA,MACN,QAAQ;AAAA,IACT;AAAA,EACD;AAAA,EAEA,UAAU;AAAA,IACT,gBAAgB;AACf,UAAI,CAAC,KAAK,UAAU;AACnB,eAAO;AAAA,MACR;AAEA,aAAO,KAAK,eAAe,QAAS,MAAM,QAAQ,KAAK,UAAU,KAAK,KAAK,WAAW,WAAW;AAAA,IAClG;AAAA,IAEA,yBAAyB;AACxB,UAAI,KAAK,sBAAsB,MAAM;AACpC,eAAO,KAAK;AAAA,MACb;AAEA,aAAO,CAAC,cAAc,WAAW,EAAE,YAAY;AAC9C,qBAAa,MAAM,QAAQ;AAE3B,cAAM,WAAW;AAAA,UAChB,MAAM;AAAA,UACN,KAAyB;AACxB,yBAAa,UAAU,IAAI,6BAA6B;AACxD,mBAAO,CAAA;AAAA,UACR;AAAA,QACD;AAEA,cAAM,uBAAuB;AAAA,UAC5B,MAAM;AAAA,UACN,GAAG,EAAE,aAAa;AACjB,sBAAU,IAAI,UAAU;AAAA,cACvB;AAAA,cACA,cAAc;AAAA,YACf;AACA,yBAAa,UAAU;AAAA,cACtB;AAAA,cACA,cAAc;AAAA,YACf;AACA,mBAAO,CAAA;AAAA,UACR;AAAA,QACD;AAEA,cAAM,iBAAiB,MAAM;AAC5B,0BAAgB,UAAU,MAAM,QAAQ,cAAc;AAAA,YACrD,WAAW,KAAK;AAAA,YAChB,YAAY;AAAA,cACX,OAAO,EAAE;AAAA,cACT;AAAA,cACA;AAAA;AAAA,cAEA,KAAI;AAAA,cACJ,MAAM,EAAE,SAAS,WAAU,GAAI;AAAA;UAEjC,CAAC,EAAE,KAAK,CAAC,EAAE,GAAG,EAAA,MAAQ;AACrB,mBAAO,OAAO,aAAa,OAAO;AAAA,cACjC,MAAM,GAAG,CAAC;AAAA,cACV,KAAK,GAAG,CAAC;AAAA,cACT,OAAO,GAAG,UAAU,MAAM,OAAO,sBAAqB,EAAG,KAAK;AAAA,aAC9D;AAAA,UACF,CAAC;AAAA,QACF;AAEA,cAAM,UAAU;AAAA,UACf,UAAU,MAAM;AAAA,UAChB;AAAA,UACA;AAAA,QACD;AAEA,eAAO;AAAA,MACR;AAAA,IACD;AAAA,IAEA,gBAAgB;AACf,aAAO,KAAK,YAAY,UAAU,MAAM,SAAS;AAAA,IAClD;AAAA,IAEA,aAAa;AACZ,aAAO,KAAK,SAAS,UAAU,MAAM,MAAM;AAAA,IAC5C;AAAA,IAEA,iBAAiB;AAChB,YAAM,gBAAgB;AAAA,QACrB,GAAG,OAAO,KAAK,UAAU,KAAK;AAAA,QAC9B,GAAG,UAAU,OAAO,QAAQ,CAAC,UAAU,OAAO,KAAK,MAAM,SAAS,CAAA,CAAE,CAAC;AAAA,MACtE;AACA,YAAM,wBAAwB,OAAO,YAAY,OAAO,QAAQ,KAAK,MAAM,EAEzE,OAAO,CAAC,CAAC,KAAK,MAAM,MAAM,cAAc,SAAS,GAAG,CAAC,CAAC;AACxD,YAAM,iBAAiB;AAAA,QACtB,GAAG;AAAA;AAAA,QAEH,mBAAmB,KAAK;AAAA,QACxB,eAAe,CAAC,KAAK;AAAA,QACrB,UAAU,KAAK;AAAA,QACf,OAAO,KAAK;AAAA,MACb;AACA,aAAO;AAAA,IACR;AAAA;EAGD,UAAU;AACT,QAAI,CAAC,KAAK,gBAAgB,CAAC,KAAK,cAAc,CAAC,KAAK,mBAAmB;AACtE,WAAK,wIAAwI;AAAA,IAC9I;AACA,QAAI,KAAK,cAAc,KAAK,mBAAmB;AAC9C,WAAK,8EAA8E;AAAA,IACpF;AAAA,EACD;AAAA,EAEA,SAAS;AAAA,IACR;AAAA;AAEF;;;;;;;;AA9jBC,SAAAC,UAAA,GAAAC,YA6DY,sBA7DZC,WA6DY;AAAA,IA5DX,QAAM,UAAQ;AAAA,wBACiB,OAAA;AAAA,yBAAgC,OAAA;AAAA;KAIvD,SAAA,gBAAc;AAAA,IACrB,UAAM,OAAA,CAAA,MAAA,OAAA,CAAA,IAAA,YAAE,MAAA,SAAS;AAAA,IACjB,uBAAiB,OAAA,CAAA,MAAA,OAAA,CAAA,IAAA,YAAE,KAAA,MAAK,qBAAsB,MAAM;AAAA;IAQ1C,QAAMC,QAChB,CAMe,EAPK,YAAY,OAAM,MAAA;AAAA,MACtCC,mBAMe,SANfF,WAMe;AAAA,QALd,OAAK,CAAC,cAAY,CACT,OAAA,UAAU,CAAA;AAAA,SACX,YAAU;AAAA,QACjB,UAAU,SAAA;AAAA,QACX,KAAI;AAAA,MACJ,GAAAG,WAAa,QAAD,IAAA,CAAA,GAAA,MAAA,IAAA,UAAA;AAAA;IAEH,kBAAcF,QACxB,CAMc,EAPc,iBAAU;AAAA,MACtCG,YAMc,wBANdJ,WACS,YAAU;AAAA,QAClB,WAAU;AAAA,QACT,OAAK;AAAA,mBAAkB,OAAA,WAAQ,YAAA;AAAA;QAG/B,MAAM;AAAA;;IAGE,QAAMC,QAEhB,CAFkB,WAAM;AAAA,MAExBI,WAIO,KAAA,QAAA,UAAAC,eAAAC,mBAJqB,MAAM,CAAA,GAAlC,MAIO;AAAA,QAHNH,YAEoB,+BAAA;AAAA,UADlB,MAAM,OAAO,OAAO,SAAA,UAAU,CAAA;AAAA,UAC9B,QAAQ,MAAA;AAAA;;;IAGD,mBAAeH,QAEzB,CAF2B,mBAAc;AAAA,MAEzCI,WAIO,KAAA,QAAA,mBAAAC,eAAAC,mBAJ8B,cAAc,CAAA,GAAnD,MAIO;AAAA,QAHNH,YAEoB,+BAAA;AAAA,UADlB,MAAM,OAAO,eAAe,SAAA,UAAU,CAAA;AAAA,UACtC,QAAQ,MAAA;AAAA;;;IAGD,SAAOH,QACjB,CADmB,YAAO;AAAA,MACL,QAAQ,wBAA7BF,YAAwC,0BAAA,EAAA,KAAA,EAAA,CAAA;;IAE9B,sBACV,MAAqB;AAAA,sCAAlB,SAAA,EAAC,YAAA,CAAA,GAAA,CAAA;AAAA;;;IA9CY,CAAA,OAAA,gBAAgB,OAAA;YAAa;AAAA,kBAC7C,MAIQ;AAAA,QAJRG,mBAIQ,SAAA;AAAA,UAHN,KAAK,OAAA;AAAA,UACN,OAAM;AAAA,2BACH,OAAA,UAAU,GAAA,GAAA,UAAA;AAAA;;;eA4Ce,KAAA,QAAM,CAAlB,GAAG,SAAI;;;QAExB,IAAAD,QAAA,CAAmC,SAFe;AAAA,UAElDI,WAAmC,KAAA,QAAtB,MAAIC,eAAAC,mBAAU,IAAI,CAAA,CAAA;AAAA;;;;;;"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"NcSelectTags-I2hJaNax.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'\nimport { logger } from '../../utils/logger.ts'\n\n/**\n * @param {Document} xml - The xml document\n */\nfunction 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\n/**\n * @param {string} xml - The XML string to be parsed into a XML document\n * @return {Document}\n */\nfunction parseXml(xml) {\n\tlet dom = null\n\ttry {\n\t\tdom = (new DOMParser()).parseFromString(xml, 'text/xml')\n\t} catch (error) {\n\t\tlogger.error('[NcSelectTags] Failed to parse xml document', { error })\n\t}\n\treturn dom\n}\n\n/**\n * @param {string} xml - The XML result to be parsed\n */\nfunction 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\n/**\n * Get tags from backend\n */\nasync function searchTags() {\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\n\t\tv-bind=\"propsToForward\"\n\t\t:options=\"availableOptions\"\n\t\t:closeOnSelect=\"!multiple\"\n\t\t:modelValue=\"localValue\"\n\t\t@search=\"search = $event\"\n\t\t@update:modelValue=\"handleInput\">\n\t\t<template #option=\"option\">\n\t\t\t<NcEllipsisedOption\n\t\t\t\t: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\n\t\t\t\t:name=\"getOptionLabel(selectedOption)\"\n\t\t\t\t:search=\"search\" />\n\t\t</template>\n\t\t<template v-for=\"(_, name) in $slots\" #[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 { t } from '../../l10n.ts'\nimport { logger } from '../../utils/logger.ts'\nimport NcEllipsisedOption from '../NcEllipsisedOption/index.js'\nimport NcSelect from '../NcSelect/index.js'\nimport { searchTags } from './api.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\tmodelValue: {\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'update:modelValue',\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.passthru) {\n\t\t\t\treturn this.modelValue\n\t\t\t}\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.modelValue\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.modelValue)\n\t\t\t}\n\t\t},\n\n\t\tpropsToForward() {\n\t\t\tconst propsToForward = { ...this.$props }\n\t\t\t// Props handled by this component\n\t\t\tdelete propsToForward.fetchTags\n\t\t\tdelete propsToForward.optionsFilter\n\t\t\tdelete propsToForward.passthru\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\tlogger.error('[NcSelectTags] Loading systemtags failed', error)\n\t\t}\n\t},\n\n\tmethods: {\n\t\thandleInput(value) {\n\t\t\tif (this.passthru) {\n\t\t\t\tthis.$emit('update:modelValue', value)\n\t\t\t\treturn\n\t\t\t}\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('update:modelValue', value.map((element) => element.id))\n\t\t\t} else {\n\t\t\t\tif (value === null) {\n\t\t\t\t\tthis.$emit('update:modelValue', null)\n\t\t\t\t} else {\n\t\t\t\t\tthis.$emit('update:modelValue', value.id)\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t},\n}\n</script>\n"],"names":["_createBlock","_mergeProps","_withCtx","_createVNode","_renderSlot","_normalizeProps","_guardReactiveProps"],"mappings":"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"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"NcSelectUsers-K14Bepkq.mjs","sources":["../../src/components/NcSelectUsers/NcSelectUsers.vue"],"sourcesContent":["<!--\n\t- SPDX-FileCopyrightText: 2025 Nextcloud GmbH and Nextcloud contributors\n\t- SPDX-License-Identifier: AGPL-3.0-or-later\n-->\n\n<docs>\n### Nextcloud user picker\n\n#### 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<NcSelectUsers v-bind=\"props\"\n\t\t\t\tv-model=\"props.value\" />\n\t\t</div>\n\t</div>\n</template>\n\n<script>\nimport svgAccountGroup from '@mdi/svg/svg/account-group.svg?raw'\nimport svgEmail from '@mdi/svg/svg/email.svg?raw'\n\nconst selectArray = [\n\t{\n\t\tprops: {\n\t\t\tinputLabel: 'User select',\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\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\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},\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},\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},\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},\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\ticonSvg: svgAccountGroup,\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: svgEmail,\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\tkeepOpen: true,\n\t\t\tmultiple: 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},\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},\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},\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},\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},\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\ticonSvg: svgAccountGroup,\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: svgEmail,\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<script setup lang=\"ts\">\nimport { ref, watch } from 'vue'\nimport NcListItemIcon from '../NcListItemIcon/index.js'\nimport NcSelect from '../NcSelect/index.js'\n\nexport interface NcSelectUsersModel {\n\tid: string\n\n\t/**\n\t * Main display name\n\t */\n\tdisplayName: string\n\n\t/**\n\t * The user id.\n\t * Will be used to fetch the user status if not disabled.\n\t */\n\tuser?: string\n\n\t/**\n\t * The secondary displayname (e.g. the email address).\n\t */\n\tsubname?: string\n\n\t/**\n\t * Optional icon to use as the avatar.\n\t * Setting this will disable the automatic avatar loading.\n\t */\n\ticonSvg?: string\n\n\t/**\n\t * Accessible name for the icon.\n\t */\n\ticonName?: string\n\n\t/**\n\t * If this is a guest user.\n\t * Needed as guest users have a different API endpoint for avatar loading.\n\t */\n\tisGuest?: boolean\n\n\t/**\n\t * Set if this is not a regular user.\n\t * This will disable user status and avatar loading.\n\t */\n\tisNoUser?: boolean\n}\n\n/**\n * Currently selected value.\n * The `v-model` directive may be used for two-way data binding.\n *\n * If the `multiple` property is set then an array of users is emitted,\n * otherwise a single user data object will be emitted.\n */\nconst modelValue = defineModel<NcSelectUsersModel | NcSelectUsersModel[]>('modelValue')\n\ndefineProps<{\n\t/**\n\t * `aria-label` for the clear input button.\n\t *\n\t * @default 'Clear selected'\n\t */\n\tariaLabelClearSelected?: string\n\n\t/**\n\t * `aria-label` for the listbox element.\n\t *\n\t * @default 'Options'\n\t */\n\tariaLabelListbox?: string\n\n\t/**\n\t * Allows to customize the `aria-label` for the deselect-option button.\n\t *\n\t * @default (label) => `Deselect ${label}`\n\t */\n\tariaLabelDeselectOption?: (label: string) => string\n\n\t/**\n\t * Disable the component.\n\t */\n\tdisabled?: boolean\n\n\t/**\n\t * Input element id.\n\t *\n\t * @default random generated id\n\t */\n\tinputId?: string\n\n\t/**\n\t * Visible label for the input element\n\t *\n\t * @default 'Select account'\n\t */\n\tinputLabel?: string\n\n\t/**\n\t * Pass true if you are using an external label.\n\t * In this case make sure you set the `for` attribute of your `<label>` to the `inputId` of this component.\n\t */\n\tlabelOutside?: boolean\n\n\t/**\n\t * Keep the dropdown open after selecting an entry.\n\t */\n\tkeepOpen?: boolean\n\n\t/**\n\t * Show a loading icon.\n\t */\n\tloading?: boolean\n\n\t/**\n\t * Allow selection of multiple options\n\t */\n\tmultiple?: boolean\n\n\t/**\n\t * Disable automatic wrapping when selected options overflow the width.\n\t */\n\tnoWrap?: boolean\n\n\t/**\n\t * Array of users or similar object (e.g. groups or guest users).\n\t */\n\toptions: NcSelectUsersModel[]\n\n\t/**\n\t * Placeholder text.\n\t *\n\t * @default ''\n\t */\n\tplaceholder?: string\n\n\t/**\n\t * Enable if a value is required for native form validation.\n\t */\n\trequired?: boolean\n}>()\n\nconst emit = defineEmits<{\n\t/**\n\t * Emitted when the user enters some query.\n\t * This can be used to asynchronously fetch more options.\n\t */\n\tsearch: [string]\n}>()\n\nconst search = ref('')\nwatch(search, () => emit('search', search.value))\n\n// Avatar size so the component has the same size as Nc*Field\nconst clickableArea = Number.parseInt(window.getComputedStyle(document.body).getPropertyValue('--default-clickable-area'))\nconst gridBaseLine = Number.parseInt(window.getComputedStyle(document.body).getPropertyValue('--default-grid-baseline'))\nconst avatarSize = clickableArea - 2 * gridBaseLine\n\n/**\n * Filter function to search users.\n *\n * @param option - The option to check\n * @param option.subname - The second line to check (often the email address)\n * @param label - The label of the option\n * @param search - The current search string\n */\nfunction filterBy(option: { subname?: string }, label: string, search: string) {\n\t// Match the email notation like \"Jane <j.doe@example.com>\" with the email address as matching group\n\tconst EMAIL_NOTATION = /[^<]*<([^>]+)/\n\n\tconst match = search.match(EMAIL_NOTATION)\n\tconst subname = option.subname?.toLocaleLowerCase() ?? ''\n\treturn (match && subname.indexOf(match[1]!.toLocaleLowerCase()) > -1)\n\t\t|| (`${label} ${option.subname}`\n\t\t\t.toLocaleLowerCase()\n\t\t\t.indexOf(search.toLocaleLowerCase()) > -1)\n}\n</script>\n\n<template>\n\t<NcSelect\n\t\tv-model=\"modelValue\"\n\t\tclass=\"nc-select-users\"\n\t\tv-bind=\"$props\"\n\t\t:filterBy\n\t\tlabel=\"displayName\"\n\t\t@search=\"search = $event\">\n\t\t<template #option=\"option\">\n\t\t\t<NcListItemIcon\n\t\t\t\tv-bind=\"option\"\n\t\t\t\t:avatarSize=\"32\"\n\t\t\t\t:name=\"option.displayName\"\n\t\t\t\t:search />\n\t\t</template>\n\t\t<template #selected-option=\"selectedOption\">\n\t\t\t<NcListItemIcon\n\t\t\t\tv-bind=\"selectedOption\"\n\t\t\t\t:avatarSize\n\t\t\t\t:name=\"selectedOption.displayName\"\n\t\t\t\tnoMargin\n\t\t\t\t:search />\n\t\t</template>\n\t</NcSelect>\n</template>\n\n<style scoped lang=\"css\">\n.nc-select-users :deep(.vs__selected) {\n\tpadding-inline: 0 5px !important;\n}\n</style>\n"],"names":["_useModel","search","_openBlock","_createBlock","_unref","_mergeProps","$props","_withCtx","_createVNode"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;AA6NA,UAAM,aAAaA,SAAsD,SAAC,YAAY;AAuFtF,UAAM,OAAO;AAQb,UAAM,SAAS,IAAI,EAAE;AACrB,UAAM,QAAQ,MAAM,KAAK,UAAU,OAAO,KAAK,CAAC;AAGhD,UAAM,gBAAgB,OAAO,SAAS,OAAO,iBAAiB,SAAS,IAAI,EAAE,iBAAiB,0BAA0B,CAAC;AACzH,UAAM,eAAe,OAAO,SAAS,OAAO,iBAAiB,SAAS,IAAI,EAAE,iBAAiB,yBAAyB,CAAC;AACvH,UAAM,aAAa,gBAAgB,IAAI;AAUvC,aAAS,SAAS,QAA8B,OAAeC,SAAgB;AAE9E,YAAM,iBAAiB;AAEvB,YAAM,QAAQA,QAAO,MAAM,cAAc;AACzC,YAAM,UAAU,OAAO,SAAS,kBAAA,KAAuB;AACvD,aAAQ,SAAS,QAAQ,QAAQ,MAAM,CAAC,EAAG,kBAAA,CAAmB,IAAI,MAC7D,GAAG,KAAK,IAAI,OAAO,OAAO,GAC5B,oBACA,QAAQA,QAAO,kBAAA,CAAmB,IAAI;AAAA,IAC1C;;AAIC,aAAAC,aAAAC,YAsBWC,iBAtBXC,WAsBW;AAAA,oBArBD,WAAA;AAAA,qEAAA,WAAU,QAAA;AAAA,QACnB,OAAM;AAAA,MAAA,GACEC,KAAAA,QAAM;AAAA,QACb;AAAA,QACD,OAAM;AAAA,QACL,UAAM,OAAA,CAAA,MAAA,OAAA,CAAA,IAAA,CAAA,WAAE,OAAA,QAAS;AAAA,MAAA;QACP,QAAMC,QAChB,CAIW,WALa;AAAA,UACxBC,YAIWJ,MAAA,cAAA,GAJXC,WAIW,QAHI;AAAA,YACb,YAAY;AAAA,YACZ,MAAM,OAAO;AAAA,YACb,QAAA,OAAA;AAAA,UAAA;;QAEQ,mBAAeE,QACzB,CAKW,mBAN8B;AAAA,UACzCC,YAKWJ,MAAA,cAAA,GALXC,WAKW,gBAJY;AAAA,YACrB;AAAA,YACA,MAAM,eAAe;AAAA,YACtB,UAAA;AAAA,YACC,QAAA,OAAA;AAAA,UAAA;;;;;;;;"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"NcSettingsSection-Caz1fuWt.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<script setup lang=\"ts\">\nimport type { Slot } from 'vue'\n\nimport HelpCircle from 'vue-material-design-icons/HelpCircle.vue'\nimport { t } from '../../l10n.ts'\n\nwithDefaults(defineProps<{\n\t/**\n\t * The name of the settings section.\n\t * This is used for the headline and needs to be set.\n\t */\n\tname: string\n\n\t/**\n\t * Further informational description of the section.\n\t */\n\tdescription?: string\n\n\t/**\n\t * The URL for the documentation about this section\n\t */\n\tdocUrl?: string\n}>(), {\n\tdescription: '',\n\tdocUrl: '',\n})\n\ndefineSlots<{\n\t/**\n\t * The section content.\n\t */\n\tdefault?: Slot\n}>()\n\n/**\n * Accessible name of the link element.\n * This should only provide a textual description of the \"help\"-icon.\n */\nconst ariaLabel = t('External documentation')\n</script>\n\n<template>\n\t<div class=\"settings-section\">\n\t\t<h2 class=\"settings-section__name\">\n\t\t\t{{ name }}\n\t\t\t<a\n\t\t\t\tv-if=\"docUrl\"\n\t\t\t\t:aria-label\n\t\t\t\tclass=\"settings-section__info\"\n\t\t\t\t:href=\"docUrl\"\n\t\t\t\trel=\"noreferrer nofollow\"\n\t\t\t\ttarget=\"_blank\"\n\t\t\t\t:title=\"ariaLabel\">\n\t\t\t\t<HelpCircle :size=\"20\" />\n\t\t\t</a>\n\t\t</h2>\n\t\t<p\n\t\t\tv-if=\"description\"\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<style lang=\"scss\" scoped>\n$maxWidth: 900px;\n$sectionMargin: calc(var(--default-grid-baseline) * 7);\n\n.settings-section {\n\tdisplay: block;\n\tpadding: 0 0 calc(var(--default-grid-baseline) * 5) 0;\n\tmargin: $sectionMargin;\n\twidth: min($maxWidth, 100% - calc($sectionMargin * 2));\n\n\t&:not(:last-child) {\n\t\tborder-bottom: 1px solid var(--color-border);\n\t}\n\n\t&__name {\n\t\tdisplay: inline-flex;\n\t\talign-items: center;\n\t\tjustify-content: center;\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-inline-start: 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","_hoisted_3","_createElementBlock","_mergeProps","_createElementVNode","_openBlock","_createTextVNode","_toDisplayString","_unref","_createVNode","_renderSlot"],"mappings":";;;AAoBA,MAAKA,cAAU;AAAA,EACb,MAAM;AAAA,EACN,OAAO,CAAC,OAAO;AAAA,EACf,OAAO;AAAA,IACL,OAAO;AAAA,MACL,MAAM;AAAA;IAER,WAAW;AAAA,MACT,MAAM;AAAA,MACN,SAAS;AAAA;IAEX,MAAM;AAAA,MACJ,MAAM;AAAA,MACN,SAAS;AAAA,IACX;AAAA,EACF;AACF;;;AAxBY,MAAAC,eAAA,EAAA,GAAE,oUAAmU;;;sBAX/UC,mBAeO,QAfPC,WAAc,KAAA,QAAM;AAAA,IACb,eAAa,OAAA,QAAK,OAAA;AAAA,IAClB,cAAY,OAAA;AAAA,IACb,OAAM;AAAA,IACN,MAAK;AAAA,IACJ,SAAK,OAAA,CAAA,MAAA,OAAA,CAAA,IAAA,YAAE,KAAA,MAAK,SAAU,MAAM;AAAA;kBACjCD,mBAQM,OAAA;AAAA,MARA,MAAM,OAAA;AAAA,MACP,OAAM;AAAA,MACL,OAAO,OAAA;AAAA,MACP,QAAQ,OAAA;AAAA,MACT,SAAQ;AAAA;MACXE,mBAEO,QAFPH,cAEO;AAAA,QADQ,OAAA,SAAbI,UAAA,GAAAH,mBAAuC,uCAAhB,OAAA,KAAK,GAAA,CAAA;;;;;;;;;;;;;;;;;;;;;;ACmEpC,UAAM,YAAY,EAAE,wBAAwB;;AAI3C,aAAAG,UAAA,GAAAH,mBAoBM,OApBN,YAoBM;AAAA,QAnBLE,mBAYK,MAZL,YAYK;AAAA,UAXDE,gBAAAC,gBAAA,QAAA,IAAI,IAAG,KACV,CAAA;AAAA,UACO,QAAA,uBADPL,mBASI,KAAA;AAAA;YAPF,cAAAM,MAAA,SAAA;AAAA,YACD,OAAM;AAAA,YACL,MAAM,QAAA;AAAA,YACP,KAAI;AAAA,YACJ,QAAO;AAAA,YACN,OAAOA,MAAA,SAAA;AAAA,UAAA;YACRC,YAAyB,YAAA,EAAZ,MAAM,IAAE;AAAA,UAAA;;QAIhB,QAAA,4BADPP,mBAII,KAJJ,YAIIK,gBADA,QAAA,WAAW,GAAA,CAAA;QAEfG,WAAQ,KAAA,QAAA,WAAA,CAAA,GAAA,QAAA,IAAA;AAAA,MAAA;;;;;","x_google_ignoreList":[0]}
@@ -1 +0,0 @@
1
- {"version":3,"file":"NcSettingsSelectGroup-SYJ8-XlR.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\n\t\t\t:modelValue=\"inputValue\"\n\t\t\t:options=\"groupsArray\"\n\t\t\t:placeholder=\"placeholder || label\"\n\t\t\t:filterBy=\"filterGroups\"\n\t\t\t:inputId=\"id\"\n\t\t\t:limit=\"5\"\n\t\t\tlabel=\"displayname\"\n\t\t\t:multiple=\"true\"\n\t\t\t:closeOnSelect=\"false\"\n\t\t\t:disabled=\"disabled\"\n\t\t\t@update:modelValue=\"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 axios from '@nextcloud/axios'\nimport { generateOcsUrl } from '@nextcloud/router'\nimport debounce from 'debounce'\nimport NcSelect from '../../components/NcSelect/index.js'\nimport { t } from '../../l10n.ts'\nimport { createElementId } from '../../utils/createElementId.ts'\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-' + createElementId(),\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\tmodelValue: {\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\n\temits: [\n\t\t'error',\n\t\t'input',\n\t\t'update:modelValue',\n\t],\n\n\tdata() {\n\t\treturn {\n\t\t\t/** Temporary store to cache groups */\n\t\t\tgroups: {},\n\t\t\trandId: createElementId(),\n\t\t\terrorMessage: '',\n\t\t}\n\t},\n\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.modelValue.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((id) => {\n\t\t\t\tif (typeof this.groups[id] === 'undefined') {\n\t\t\t\t\treturn {\n\t\t\t\t\t\tid,\n\t\t\t\t\t\tdisplayname: id,\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\treturn this.groups[id]\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.modelValue.includes(g.id))\n\t\t},\n\t},\n\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\tmodelValue: {\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\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\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\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('update:modelValue', 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-text-error, var(--color-error));\n\tfont-size: 13px;\n\tpadding-inline-start: var(--border-radius-element);\n}\n</style>\n"],"names":["_createElementBlock","_createVNode","_withDirectives","_createElementVNode"],"mappings":"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"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"NcTextArea-Dxzj4zdb.mjs","sources":["../../src/components/NcTextArea/NcTextArea.vue"],"sourcesContent":["<!--\n - SPDX-FileCopyrightText: 2023 Nextcloud GmbH and Nextcloud contributors\n - SPDX-License-Identifier: AGPL-3.0-or-later\n-->\n\n<docs>\n### Description\n\nThis component is a textarea field.\nIt extends and styles an HTMLTextAreaElement.\n\n```\n<template>\n\t<div class=\"wrapper\">\n\t\t<NcTextArea v-model=\"text\"\n\t\t\tlabel=\"Text area\"\n\t\t\tplaceholder=\"Placeholders are possible\"\n\t\t\thelper-text=\"This is a regular helper text.\" />\n\t\t<NcTextArea label=\"Success state\"\n\t\t\t:success=\"true\" />\n\t\t<NcTextArea label=\"Error state\"\n\t\t\tplaceholder=\"Enter something valid\"\n\t\t\thelper-text=\"Helper texts will be styled accordingly.\"\n\t\t\t:error=\"true\" />\n\t\t<NcTextArea label=\"Disabled\"\n\t\t\t:disabled=\"true\" />\n\t\t<NcTextArea 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<NcTextArea id=\"textField\"\n\t\t\t\t:label-outside=\"true\"\n\t\t\t\tplaceholder=\"Text area with external label\" />\n\t\t</div>\n\t\t<NcTextArea label=\"Custom size and no resize\"\n\t\t\tresize=\"none\"\n\t\t\trows=\"5\" />\n\t</div>\n</template>\n\n<script>\nexport default {\n\tdata() {\n\t\treturn {\n\t\t\ttext: 'This is text.',\n\t\t}\n\t},\n}\n</script>\n\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\talign-items: center;\n\tgap: 14px;\n\n\t> label {\n\t\tflex-shrink: 0;\n\t}\n}\n</style>\n```\n</docs>\n\n<script setup lang=\"ts\">\nimport type { VueClassType } from '../../utils/VueTypes.ts'\n\nimport { mdiAlertCircleOutline, mdiCheck } from '@mdi/js'\nimport { computed, useAttrs, useTemplateRef, watch } from 'vue'\nimport NcIconSvgWrapper from '../NcIconSvgWrapper/NcIconSvgWrapper.vue'\nimport { createElementId } from '../../utils/createElementId.ts'\nimport { isLegacy } from '../../utils/legacy.ts'\nimport { logger } from '../../utils/logger.ts'\n\ndefineOptions({ inheritAttrs: false })\n\n/**\n * The value of the text area\n */\nconst modelValue = defineModel<string>({ required: true })\n\nconst props = withDefaults(defineProps<{\n\t/**\n\t * Disable the text area\n\t */\n\tdisabled?: boolean\n\n\t/**\n\t * Toggles the error state of the component.\n\t * Adds an error icon.\n\t */\n\terror?: boolean\n\n\t/**\n\t * Additional helper text message\n\t *\n\t * This will be displayed beneath the input field. In case the field is\n\t * also marked as having an error, the text will be displayed in red.\n\t */\n\thelperText?: string\n\n\t/**\n\t * The id of the textarea element\n\t */\n\tid?: string\n\n\t/**\n\t * Class to add to the `<textarea>` element.\n\t */\n\tinputClass?: VueClassType\n\n\t/**\n\t * The input label, always provide one for accessibility purposes.\n\t * On Nextcloud before version 32 this will also be used as a placeholder\n\t * unless the placeholder prop is populated with a different string.\n\t */\n\tlabel?: string\n\n\t/**\n\t * Pass in true if you want to use an external label. This is useful\n\t * if you need a label that looks different from the one provided by\n\t * this component\n\t */\n\tlabelOutside?: boolean\n\n\t/**\n\t * The placeholder of the input.\n\t * On Nextcloud before 32 this defaults to the value of the `label` prop.\n\t */\n\tplaceholder?: string\n\n\t/**\n\t * The resize CSS property sets whether an element is resizable, and if\n\t * so, in which directions.\n\t */\n\tresize?: 'both' | 'vertical' | 'horizontal' | 'none'\n\n\t/**\n\t * Toggles the success state of the component.\n\t * Adds a checkmark icon.\n\t */\n\tsuccess?: boolean\n}>(), {\n\thelperText: undefined,\n\tid: () => createElementId(),\n\tinputClass: '',\n\tlabel: undefined,\n\tplaceholder: undefined,\n\tresize: 'both',\n})\n\ndefineExpose({\n\tfocus,\n\tselect,\n})\n\nconst attrs = useAttrs()\n\n/**\n * The native text area component instance\n */\nconst textAreaElement = useTemplateRef('input')\n\nconst internalPlaceholder = computed(() => props.placeholder || (isLegacy ? props.label : undefined))\n\n// warn about invalid labels (missing label and no label outside)\nwatch(() => props.labelOutside, () => {\n\tif (!props.labelOutside && !props.label) {\n\t\tlogger.warn('[NcTextArea] You need to add a label to the NcInputField component. Either use the prop label or use an external one, as per the example in the documentation.')\n\t}\n})\n\nconst ariaDescribedby = computed(() => {\n\tconst ariaDescribedby: string[] = []\n\tif (props.helperText) {\n\t\tariaDescribedby.push(`${props.id}-helper-text`)\n\t}\n\tif (typeof attrs['aria-describedby'] === 'string') {\n\t\tariaDescribedby.push(attrs['aria-describedby'])\n\t}\n\treturn ariaDescribedby.join(' ') || undefined\n})\n\n/**\n * Update the model value to the text area value.\n *\n * @param event - The input event\n */\nfunction handleInput(event: Event) {\n\tconst { value } = event.target as HTMLTextAreaElement\n\tmodelValue.value = value\n}\n\n/**\n * Focus the input element\n *\n * @param options - Focus options\n * @public\n */\nfunction focus(options?: FocusOptions) {\n\ttextAreaElement.value!.focus(options)\n}\n\n/**\n * Select all the text in the input\n *\n * @public\n */\nfunction select() {\n\ttextAreaElement.value!.select()\n}\n</script>\n\n<template>\n\t<div\n\t\tclass=\"textarea\"\n\t\t:class=\"[\n\t\t\t$attrs.class,\n\t\t\t{\n\t\t\t\t'textarea--disabled': disabled,\n\t\t\t\t'textarea--legacy': isLegacy,\n\t\t\t},\n\t\t]\">\n\t\t<div class=\"textarea__main-wrapper\">\n\t\t\t<textarea\n\t\t\t\tv-bind=\"{ ...$attrs, class: undefined }\"\n\t\t\t\t:id\n\t\t\t\tref=\"input\"\n\t\t\t\t:aria-describedby\n\t\t\t\taria-live=\"polite\"\n\t\t\t\tclass=\"textarea__input\"\n\t\t\t\t:class=\"[\n\t\t\t\t\tinputClass,\n\t\t\t\t\t{\n\t\t\t\t\t\t'textarea__input--label-outside': labelOutside,\n\t\t\t\t\t\t'textarea__input--legacy': isLegacy,\n\t\t\t\t\t\t'textarea__input--success': success,\n\t\t\t\t\t\t'textarea__input--error': error,\n\t\t\t\t\t},\n\t\t\t\t]\"\n\t\t\t\t:disabled\n\t\t\t\t:placeholder=\"internalPlaceholder\"\n\t\t\t\t:style=\"{ resize }\"\n\t\t\t\t:value=\"modelValue\"\n\t\t\t\t@input=\"handleInput\" />\n\t\t\t<!-- Label -->\n\t\t\t<label\n\t\t\t\tv-if=\"!labelOutside\"\n\t\t\t\tclass=\"textarea__label\"\n\t\t\t\t:for=\"id\">\n\t\t\t\t{{ label }}\n\t\t\t</label>\n\t\t</div>\n\t\t<p\n\t\t\tv-if=\"helperText\"\n\t\t\t:id=\"`${id}-helper-text`\"\n\t\t\tclass=\"textarea__helper-text-message\"\n\t\t\t:class=\"{\n\t\t\t\t'textarea__helper-text-message--error': error,\n\t\t\t\t'textarea__helper-text-message--success': success,\n\t\t\t}\">\n\t\t\t<NcIconSvgWrapper\n\t\t\t\tv-if=\"success\"\n\t\t\t\tclass=\"textarea__helper-text-message__icon\"\n\t\t\t\t:path=\"mdiCheck\"\n\t\t\t\tinline />\n\t\t\t<NcIconSvgWrapper\n\t\t\t\tv-else-if=\"error\"\n\t\t\t\tclass=\"textarea__helper-text-message__icon\"\n\t\t\t\t:path=\"mdiAlertCircleOutline\"\n\t\t\t\tinline />\n\t\t\t{{ helperText }}\n\t\t</p>\n\t</div>\n</template>\n\n<style lang=\"scss\" scoped>\n@use '../../assets/input-border.scss' as border;\n\n.textarea {\n\t--input-border-color: var(--color-border-maxcontrast);\n\t--input-border-width-offset: calc(var(--border-width-input-focused, 2px) - var(--border-width-input, 2px));\n\tposition: relative;\n\twidth: 100%;\n\tborder-radius: var(--border-radius-element);\n\tmargin-block-start: 6px; // for the label in active state\n\tresize: vertical;\n\n\t&--disabled {\n\t\topacity: 0.7;\n\t\tfilter: saturate(0.7);\n\t}\n\n\t&__main-wrapper {\n\t\tpadding: var(--border-width-input-focused, 2px);\n\t\tposition: relative;\n\t}\n\n\t&__input {\n\t\tmargin: 0;\n\t\tpadding-block: var(--border-radius-element);\n\t\tpadding-inline: 10px; // align with label 8px margin label + 4px padding label - 2px border input\n\t\twidth: 100%;\n\t\tfont-size: var(--default-font-size);\n\t\ttext-overflow: ellipsis;\n\t\tcursor: pointer;\n\t\tmin-height: calc(var(--default-clickable-area) * 2);\n\t\tmin-width: calc(var(--default-clickable-area) * 2);\n\t\tmax-width: 100%;\n\n\t\tbackground-color: var(--color-main-background);\n\t\tcolor: var(--color-main-text);\n\t\t@include border.inputBorder('.textarea--legacy', var(--input-border-color));\n\n\t\t&:active:not([disabled]),\n\t\t&:focus:not([disabled]) {\n\t\t\t--input-border-width-offset: 0px;\n\t\t\t--input-border-color: var(--color-main-text);\n\t\t}\n\n\t\t// Hide placeholder while not focussed -> show label instead (only if internal label is used)\n\t\t&:not(:focus,&--label-outside)::placeholder {\n\t\t\topacity: 0;\n\t\t}\n\n\t\t&:focus {\n\t\t\tcursor: text;\n\t\t}\n\n\t\t&:disabled {\n\t\t\tcursor: default;\n\t\t}\n\n\t\t&:focus-visible {\n\t\t\tbox-shadow: unset !important; // Override server rules\n\t\t}\n\n\t\t&--success {\n\t\t\t--input-border-color: var(--color-border-success, var(--color-success)) !important; //Override hover border color\n\t\t\t&:focus-visible {\n\t\t\t\tbox-shadow: rgb(248, 250, 252) 0px 0px 0px 2px, var(--color-primary-element) 0px 0px 0px 4px, rgba(0, 0, 0, 0.05) 0px 1px 2px 0px\n\t\t\t}\n\t\t}\n\n\t\t&--error {\n\t\t\t--input-border-color: var(--color-border-error, var(--color-error)) !important; //Override hover border color\n\t\t\t&:focus-visible {\n\t\t\t\tbox-shadow: rgb(248, 250, 252) 0px 0px 0px 2px, var(--color-primary-element) 0px 0px 0px 4px, rgba(0, 0, 0, 0.05) 0px 1px 2px 0px\n\t\t\t}\n\t\t}\n\t}\n\n\t&__label {\n\t\tposition: absolute;\n\t\tmargin-inline: 12px 0;\n\t\tmax-width: fit-content;\n\t\tinset-block-start: 11px;\n\t\tinset-inline: 0;\n\t\t// Fix color so that users do not think the input already has content\n\t\tcolor: var(--color-text-maxcontrast);\n\t\t// only one line labels are allowed\n\t\twhite-space: nowrap;\n\t\toverflow: hidden;\n\t\ttext-overflow: ellipsis;\n\t\t// forward events to input\n\t\tpointer-events: none;\n\t\t// Position transition\n\t\ttransition: height var(--animation-quick), inset-block-start var(--animation-quick), font-size var(--animation-quick), color var(--animation-quick), background-color var(--animation-quick) var(--animation-slow);\n\t}\n\n\t&__input:focus + &__label,\n\t&__input:not(:placeholder-shown) + &__label {\n\t\tinset-block-start: -10px;\n\t\tline-height: 1.5; // minimum allowed line height for accessibility\n\t\tfont-size: 13px; // minimum allowed font size for accessibility\n\t\tfont-weight: var(--font-weight-element, 500);\n\t\tcolor: var(--color-main-text);\n\t\tbackground-color: var(--color-main-background);\n\t\tpadding-inline: 4px;\n\t\tmargin-inline-start: 8px;\n\n\t\ttransition: height var(--animation-quick), inset-block-start var(--animation-quick), font-size var(--animation-quick), color var(--animation-quick);\n\t}\n\n\t&__helper-text-message {\n\t\tpadding-block: 4px;\n\t\tdisplay: flex;\n\t\talign-items: center;\n\n\t\t&__icon {\n\t\t\tmargin-inline-end: 8px;\n\t\t}\n\n\t\t&--error {\n\t\t\tcolor: var(--color-error-text);\n\t\t}\n\n\t\t&--success {\n\t\t\tcolor: var(--color-success-text);\n\t\t}\n\t}\n}\n</style>\n"],"names":["_useModel","ariaDescribedby","_createElementBlock","$attrs","_unref","_createElementVNode","_mergeProps","_createBlock","_createTextVNode"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAwFA,UAAM,aAAaA,SAAmB,SAAA,YAAmB;AAEzD,UAAM,QAAQ;AAsEd,aAAa;AAAA,MACZ;AAAA,MACA;AAAA,IAAA,CACA;AAED,UAAM,QAAQ,SAAA;AAKd,UAAM,kBAAkB,eAAe,OAAO;AAE9C,UAAM,sBAAsB,SAAS,MAAM,MAAM,gBAAgB,WAAW,MAAM,QAAQ,OAAU;AAGpG,UAAM,MAAM,MAAM,cAAc,MAAM;AACrC,UAAI,CAAC,MAAM,gBAAgB,CAAC,MAAM,OAAO;AACxC,eAAO,KAAK,gKAAgK;AAAA,MAC7K;AAAA,IACD,CAAC;AAED,UAAM,kBAAkB,SAAS,MAAM;AACtC,YAAMC,mBAA4B,CAAA;AAClC,UAAI,MAAM,YAAY;AACrBA,yBAAgB,KAAK,GAAG,MAAM,EAAE,cAAc;AAAA,MAC/C;AACA,UAAI,OAAO,MAAM,kBAAkB,MAAM,UAAU;AAClDA,yBAAgB,KAAK,MAAM,kBAAkB,CAAC;AAAA,MAC/C;AACA,aAAOA,iBAAgB,KAAK,GAAG,KAAK;AAAA,IACrC,CAAC;AAOD,aAAS,YAAY,OAAc;AAClC,YAAM,EAAE,UAAU,MAAM;AACxB,iBAAW,QAAQ;AAAA,IACpB;AAQA,aAAS,MAAM,SAAwB;AACtC,sBAAgB,MAAO,MAAM,OAAO;AAAA,IACrC;AAOA,aAAS,SAAS;AACjB,sBAAgB,MAAO,OAAA;AAAA,IACxB;;0BAICC,mBA2DM,OAAA;AAAA,QA1DL,uBAAM,YAAU;AAAA,UACHC,KAAAA,OAAO;AAAA;kCAAsC,QAAA;AAAA,gCAAkCC,MAAA,QAAA;AAAA,UAAA;AAAA;;QAO5FC,mBA6BM,OA7BN,YA6BM;AAAA,UA5BLA,mBAoBwB,YApBxBC,WAoBwB,EAAA,GAnBVH,KAAAA,eAAe,UAAS;AAAA,YACpC,IAAA,QAAA;AAAA,YACD,KAAI;AAAA,YACH,oBAAA,gBAAA;AAAA,YACD,aAAU;AAAA,YACV,QAAM,mBAAiB;AAAA,cACR,QAAA;AAAA;kDAA2D,QAAA;AAAA,2CAA+CC,MAAA,QAAA;AAAA,4CAA4C,QAAA;AAAA,0CAAyC,QAAA;AAAA,cAAA;AAAA;YAS7M,UAAA,QAAA;AAAA,YACA,aAAa,oBAAA;AAAA,YACb,iBAAS,QAAA,OAAA;AAAA,YACT,OAAO,WAAA;AAAA,YACP,SAAO;AAAA,UAAA;WAGD,QAAA,6BADRF,mBAKQ,SAAA;AAAA;YAHP,OAAM;AAAA,YACL,KAAK,QAAA;AAAA,UAAA,mBACH,QAAA,KAAK,GAAA,GAAA,UAAA;;QAIH,QAAA,2BADPA,mBAmBI,KAAA;AAAA;UAjBF,OAAO,QAAA,EAAE;AAAA,UACV,uBAAM,iCAA+B;AAAA,oDACiB,QAAA;AAAA,sDAAqD,QAAA;AAAA,UAAA;;UAKpG,QAAA,wBADPK,YAIU,kBAAA;AAAA;YAFT,OAAM;AAAA,YACL,MAAMH,MAAA,QAAA;AAAA,YACP,QAAA;AAAA,UAAA,yBAEW,QAAA,sBADZG,YAIU,kBAAA;AAAA;YAFT,OAAM;AAAA,YACL,MAAMH,MAAA,qBAAA;AAAA,YACP,QAAA;AAAA,UAAA;UAASI,gBAAA,sBACP,QAAA,UAAU,GAAA,CAAA;AAAA,QAAA;;;;;;"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"NcTextField.vue_vue_type_script_setup_true_lang-Bx2esFU2.mjs","sources":["../../src/components/NcTextField/NcTextField.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\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 v-model=\"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<template #icon>\n\t\t\t\t<Magnify :size=\"20\" />\n\t\t\t</template>\n\t\t</NcTextField>\n\t\t<NcTextField v-model=\"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<template #icon>\n\t\t\t\t<IconLockOutline :size=\"20\" />\n\t\t\t</template>\n\t\t</NcTextField>\n\t\t<NcTextField v-model=\"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 v-model=\"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 v-model=\"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 :model-value=\"\"\n\t\t\tlabel=\"Disabled\"\n\t\t\t:disabled=\"true\" />\n\t\t<NcTextField :model-value=\"\"\n\t\t\tlabel=\"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 v-model=\"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 IconLockOutline from 'vue-material-design-icons/LockOutline'\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\tIconLockOutline,\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\tgap: 14px;\n\twidth: 100%;\n\tmargin-top: 1rem;\n}\n\n.external-label label {\n\tpadding-top: 7px;\n\twhite-space: nowrap;\n}\n</style>\n```\n</docs>\n\n<template>\n\t<NcInputField\n\t\tv-bind=\"propsToForward\"\n\t\tref=\"inputField\"\n\t\tv-model=\"modelValue\">\n\t\t<template v-if=\"!!$slots.icon\" #icon>\n\t\t\t<slot name=\"icon\" />\n\t\t</template>\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<NcIconSvgWrapper v-if=\"trailingButtonIcon === 'arrowEnd'\" directional :path=\"mdiArrowRight\" />\n\t\t\t<NcIconSvgWrapper v-else :path=\"trailingButtonIcon === 'undo' ? mdiUndo : mdiClose\" />\n\t\t</template>\n\t</NcInputField>\n</template>\n\n<script setup lang=\"ts\">\nimport type { Slot } from 'vue'\nimport type { NcInputFieldProps } from '../NcInputField/index.ts'\n\nimport { mdiArrowRight, mdiClose, mdiUndo } from '@mdi/js'\nimport { computed, useTemplateRef } from 'vue'\nimport { t } from '../../l10n.ts'\nimport NcIconSvgWrapper from '../NcIconSvgWrapper/index.ts'\nimport NcInputField from '../NcInputField/index.ts'\n\n/**\n * The value of the input field\n * If type is 'number' and a number is passed as value than the type of `update:value` will also be 'number'\n */\nconst modelValue = defineModel<string | number>('modelValue', { default: '' })\n\nconst props = withDefaults(defineProps<NcInputFieldProps & {\n\t/**\n\t * Specifies which material design icon should be used for the trailing button.\n\t */\n\ttrailingButtonIcon?: 'arrowEnd' | 'close' | 'undo'\n\n\t/**\n\t * The `aria-label` to set on the trailing button\n\t * If no explicit value is set it will default to the one matching the `trailingButtonIcon`:\n\t * - 'Clear text'\n\t * - 'Save changes'\n\t * - 'Undo changes'\n\t */\n\ttrailingButtonLabel?: string\n}>(), {\n\ttrailingButtonIcon: 'close',\n\ttrailingButtonLabel: undefined,\n})\n\ndefineSlots<{\n\t/**\n\t * Leading icon, set the size to 20.\n\t */\n\ticon?: Slot\n}>()\n\ndefineExpose({\n\tfocus,\n\tselect,\n})\n\nconst inputFieldInstance = useTemplateRef('inputField')\n\nconst defaultTrailingButtonLabels = {\n\tarrowEnd: t('Save changes'),\n\tclose: t('Clear text'),\n\tundo: t('Undo changes'),\n}\n\nconst NcInputFieldPropNames = new Set(Object.keys(NcInputField.props))\nconst propsToForward = computed<NcInputFieldProps>(() => {\n\tconst sharedProps = Object.fromEntries(Object.entries(props)\n\t\t.filter(([key]) => NcInputFieldPropNames.has(key)))\n\n\tsharedProps.trailingButtonLabel ??= defaultTrailingButtonLabels[props.trailingButtonIcon]\n\treturn sharedProps satisfies NcInputFieldProps\n})\n\n/**\n * Focus the input element\n *\n * @param options - Focus options\n * @public\n */\nfunction focus(options?: FocusOptions) {\n\tinputFieldInstance.value!.focus(options)\n}\n\n/**\n * Select all the text in the input\n *\n * @public\n */\nfunction select() {\n\tinputFieldInstance.value!.select()\n}\n</script>\n"],"names":["_useModel","_createBlock","_unref","_mergeProps","$slots","_renderSlot"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA6JA,UAAM,aAAaA,SAA4B,SAAC,YAA6B;AAE7E,UAAM,QAAQ;AA0Bd,aAAa;AAAA,MACZ;AAAA,MACA;AAAA,IAAA,CACA;AAED,UAAM,qBAAqB,eAAe,YAAY;AAEtD,UAAM,8BAA8B;AAAA,MACnC,UAAU,EAAE,cAAc;AAAA,MAC1B,OAAO,EAAE,YAAY;AAAA,MACrB,MAAM,EAAE,cAAc;AAAA,IAAA;AAGvB,UAAM,wBAAwB,IAAI,IAAI,OAAO,KAAK,aAAa,KAAK,CAAC;AACrE,UAAM,iBAAiB,SAA4B,MAAM;AACxD,YAAM,cAAc,OAAO,YAAY,OAAO,QAAQ,KAAK,EACzD,OAAO,CAAC,CAAC,GAAG,MAAM,sBAAsB,IAAI,GAAG,CAAC,CAAC;AAEnD,kBAAY,wBAAwB,4BAA4B,MAAM,kBAAkB;AACxF,aAAO;AAAA,IACR,CAAC;AAQD,aAAS,MAAM,SAAwB;AACtC,yBAAmB,MAAO,MAAM,OAAO;AAAA,IACxC;AAOA,aAAS,SAAS;AACjB,yBAAmB,MAAO,OAAA;AAAA,IAC3B;;0BAjGCC,YAaeC,MAAA,YAAA,GAbfC,WAae,eAAA,OAZQ;AAAA,QACtB,KAAI;AAAA,oBACK,WAAA;AAAA,qEAAA,WAAU,QAAA;AAAA,MAAA;QACDC,CAAAA,CAAAA,KAAAA,OAAO;gBAAO;AAAA,sBAC/B,MAAoB;AAAA,YAApBC,WAAoB,KAAA,QAAA,MAAA;AAAA,UAAA;;;QAIL,QAAA,SAAI;gBAAgB;AAAA,sBACnC,MAA+F;AAAA,YAAvE,QAAA,uBAAkB,2BAA1CJ,YAA+FC,MAAA,gBAAA,GAAA;AAAA;cAApC,aAAA;AAAA,cAAa,MAAMA,MAAA,aAAA;AAAA,YAAA,uCAC9ED,YAAsFC,MAAA,gBAAA,GAAA;AAAA;cAA5D,MAAM,QAAA,uBAAkB,SAAcA,MAAA,OAAA,IAAUA,MAAA,QAAA;AAAA,YAAA;;;;;;;;"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"NcThemeProvider.vue_vue_type_script_setup_true_lang-wie70gn4.mjs","sources":["../../src/components/NcThemeProvider/NcThemeProvider.vue"],"sourcesContent":["<!--\n - SPDX-FileCopyrightText: 2025 Nextcloud GmbH and Nextcloud contributors\n - SPDX-License-Identifier: AGPL-3.0-or-later\n-->\n\n<docs>\nThis components allows to enforce a color theme on its content,\nfor example enforce the content to be always rendered in dark theme regardless of browser or user config.\n\n### Example\n```vue\n<template>\n\t<NcThemeProvider class=\"wrapper\" :dark=\"userTheme === 'dark'\">\n\t\t<div class=\"controls\">\n\t\t\t<fieldset>\n\t\t\t\t<legend>\n\t\t\t\t\tUser theme\n\t\t\t\t</legend>\n\t\t\t\t<div class=\"controls__select\">\n\t\t\t\t\t<NcCheckboxRadioSwitch\n\t\t\t\t\t\tv-model=\"userTheme\"\n\t\t\t\t\t\ttype=\"radio\"\n\t\t\t\t\t\tvalue=\"dark\">\n\t\t\t\t\t\tDark\n\t\t\t\t\t</NcCheckboxRadioSwitch>\n\t\t\t\t\t<NcCheckboxRadioSwitch\n\t\t\t\t\t\tv-model=\"userTheme\"\n\t\t\t\t\t\ttype=\"radio\"\n\t\t\t\t\t\tvalue=\"light\">\n\t\t\t\t\t\tLight\n\t\t\t\t\t</NcCheckboxRadioSwitch>\n\t\t\t\t</div>\n\t\t\t</fieldset>\n\t\t\t<fieldset>\n\t\t\t\t<legend>\n\t\t\t\t\tNcThemeProvider theme\n\t\t\t\t</legend>\n\t\t\t\t<div class=\"controls__select\">\n\t\t\t\t\t<NcCheckboxRadioSwitch\n\t\t\t\t\t\tv-model=\"providerTheme\"\n\t\t\t\t\t\ttype=\"radio\"\n\t\t\t\t\t\tvalue=\"default\">\n\t\t\t\t\t\tNone (default)\n\t\t\t\t\t</NcCheckboxRadioSwitch>\n\t\t\t\t\t<NcCheckboxRadioSwitch\n\t\t\t\t\t\tv-model=\"providerTheme\"\n\t\t\t\t\t\ttype=\"radio\"\n\t\t\t\t\t\tvalue=\"dark\">\n\t\t\t\t\t\tDark\n\t\t\t\t\t</NcCheckboxRadioSwitch>\n\t\t\t\t\t<NcCheckboxRadioSwitch\n\t\t\t\t\t\tv-model=\"providerTheme\"\n\t\t\t\t\t\tvalue=\"light\"\n\t\t\t\t\t\ttype=\"radio\">\n\t\t\t\t\t\tLight\n\t\t\t\t\t</NcCheckboxRadioSwitch>\n\t\t\t\t</div>\n\t\t\t</fieldset>\n\t\t</div>\n\t\t<p class=\"theme-preview\">\n\t\t\tThis is shown in user theme\n\t\t</p>\n\t\t<NcThemeProvider\n\t\t\t:dark=\"providerTheme === 'dark'\"\n\t\t\t:light=\"providerTheme === 'light'\">\n\t\t\t<div class=\"theme-preview\">\n\t\t\t\tThis is shown in the overridden theme.\n\t\t\t</div>\n\t\t</NcThemeProvider>\n\t</NcThemeProvider>\n</template>\n<script>\nexport default {\n\tdata() {\n\t\treturn {\n\t\t\tuserTheme: 'light',\n\t\t\tproviderTheme: 'default',\n\t\t}\n\t}\n}\n</script>\n<style scoped>\n.wrapper {\n\tbackground-color: var(--color-main-background);\n\tcolor: var(--color-main-text);\n}\n\n.controls {\n\tdisplay: flex;\n\tflex-wrap: wrap;\n\tgap: 2lh;\n}\n\n.controls__select {\n\tdisplay: flex;\n\tflex-direction: row;\n\tgap: var(--default-grid-baseline);\n}\n\nlegend {\n\twidth: 100%;\n\ttext-align: center;\n}\n\n.theme-preview {\n\tbackground-color: var(--color-main-background);\n\tcolor: var(--color-main-text);\n\tdisplay: flex;\n\talign-items: center;\n\tjustify-content: center;\n\tmargin-top: 0.5lh;\n\tmin-height: 2lh;\n}\n</style>\n```\n</docs>\n\n<script setup lang=\"ts\">\nimport { computed, provide } from 'vue'\nimport { INJECTION_KEY_THEME } from '../../composables/useIsDarkTheme/constants.ts'\n\nconst props = defineProps<{\n\t/**\n\t * Enforce the dark theme for the content.\n\t */\n\tdark?: boolean\n\n\t/**\n\t * Enforce the light theme for the content\n\t */\n\tlight?: boolean\n}>()\n\nconst theme = computed(() => {\n\tif (props.dark) {\n\t\treturn 'dark'\n\t} else if (props.light) {\n\t\treturn 'light'\n\t}\n\treturn ''\n})\nprovide(INJECTION_KEY_THEME, theme)\n</script>\n\n<template>\n\t<div :[`data-theme-${theme}`]=\"theme\">\n\t\t<slot />\n\t</div>\n</template>\n"],"names":["_createElementBlock","_normalizeProps","_renderSlot"],"mappings":";;;;;;;;;AAyHA,UAAM,QAAQ;AAYd,UAAM,QAAQ,SAAS,MAAM;AAC5B,UAAI,MAAM,MAAM;AACf,eAAO;AAAA,MACR,WAAW,MAAM,OAAO;AACvB,eAAO;AAAA,MACR;AACA,aAAO;AAAA,IACR,CAAC;AACD,YAAQ,qBAAqB,KAAK;;0BAIjCA,mBAEM,OAAAC,eAAA,EAAA,CAAA,cAFc,MAAA,KAAK,MAAA,EAAA,GAAM,MAAA,MAAA,CAAK,GAAA;AAAA,QACnCC,WAAQ,KAAA,QAAA,SAAA;AAAA,MAAA;;;;"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"NcTimezonePicker.vue_vue_type_script_setup_true_lang-D7ZHgnwW.mjs","sources":["../../src/components/NcTimezonePicker/timezoneUtils.ts","../../src/components/NcTimezonePicker/NcTimezonePicker.vue"],"sourcesContent":["/*\n * SPDX-FileCopyrightText: 2025 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n\n/**\n * Convert timezone ID in IANA format (e.g. \"Europe/Berlin\") to a more human-readable format\n *\n * @param timezoneId - IANA timezone ID (e.g. \"America/Argentina/San_Juan\")\n * @return Formatted timezone string (e.g. \"Argentina - San Juan\")\n */\nfunction formatTimezoneId(timezoneId: string) {\n\treturn timezoneId\n\t\t// 'America/Argentina/San_Juan' -> 'Argentina/San_Juan'\n\t\t.slice(timezoneId.indexOf('/') + 1)\n\t\t// 'Argentina/San_Juan' -> 'Argentina - San_Juan'\n\t\t.replaceAll('/', ' - ')\n\t\t// 'San_Juan' -> 'San Juan'\n\t\t.replaceAll('_', ' ')\n}\n\n/**\n * Get a list of supported IANA timezone IDs (e.g. \"Europe/Berlin\") with human-readable labels,\n * excluding Etc/* administrative zones not used by users (see: https://en.wikipedia.org/wiki/Tz_database#Areas)\n */\nexport function getTimezones() {\n\treturn Intl.supportedValuesOf('timeZone')\n\t\t.filter((tz) => !tz.startsWith('Etc/'))\n\t\t.map((timezoneId) => ({\n\t\t\ttimezoneId,\n\t\t\tlabel: formatTimezoneId(timezoneId),\n\t\t}))\n\t\t.sort((a, b) => a.timezoneId.localeCompare(b.timezoneId))\n}\n","<!--\n - SPDX-FileCopyrightText: 2021 Nextcloud GmbH and Nextcloud contributors\n - SPDX-License-Identifier: AGPL-3.0-or-later\n-->\n\n<docs>\n### Example\n```vue\n<template>\n\t<span>\n\t\t<NcTimezonePicker v-model=\"tz\" />\n\t\t{{ tz }}\n\t</span>\n</template>\n<script>\nexport default {\n\tdata() {\n\t\treturn {\n\t\t\ttz: 'Europe/Berlin',\n\t\t}\n\t},\n}\n</script>\n```\n</docs>\n\n<script setup lang=\"ts\">\nimport { computed } from 'vue'\nimport NcSelect from '../NcSelect/NcSelect.vue'\nimport { t } from '../../l10n.ts'\nimport { createElementId } from '../../utils/createElementId.ts'\nimport { getTimezones } from './timezoneUtils.ts'\n\nexport type ITimezone = {\n\t/**\n\t * Time zone ID in IANA format, e.g. \"Europe/Berlin\", or \"floating\" for a time independent of timezone, or a custom timezone ID\n\t */\n\ttimezoneId: string\n\t/**\n\t * Localized label of the timezone, e.g. \"Central European Standard Time\"\n\t */\n\tlabel: string\n\t/**\n\t * Continent the timezone if any, e.g. \"Europe\" (not localized)\n\t */\n\tcontinent: string\n}\n\n/**\n * The selected timezone.\n * Use v-model for two-way binding.\n * The default timezone is floating, which means a time independent of timezone. See https://icalendar.org/CalDAV-Access-RFC-4791/7-3-date-and-floating-time.html for details.\n */\nconst modelValue = defineModel<string>({ default: 'floating' })\n\nconst props = withDefaults(defineProps<{\n\t/**\n\t * An array of additional timezones to include with the standard database. Useful if there is a custom timezone, e.g. read from user data\n\t */\n\tadditionalTimezones?: ITimezone[]\n\n\t/**\n\t * ID of the inner vue-select element, can be used for labels like: `vs-${uid}__combobox`\n\t */\n\tuid?: string\n}>(), {\n\tadditionalTimezones: () => [],\n\tuid: createElementId(),\n})\n\nconst formattedAdditionalTimezones = computed(() => {\n\treturn props.additionalTimezones.map(({ timezoneId, label }) => ({\n\t\ttimezoneId,\n\t\tlabel,\n\t}))\n})\n\nconst options = computed(() => {\n\tconst timezones = getTimezones()\n\ttimezones.unshift(...formattedAdditionalTimezones.value)\n\treturn timezones\n})\n\n/**\n * NcSelect's filterBy prop to search timezone by any option property\n *\n * @param option - The timezone option\n * @param label - The label of the timezone\n * @param search - The search string\n */\nfunction filterBy(option: ITimezone, label: string, search: string): boolean {\n\tconst terms = search.trim().split(/\\s+/)\n\tconst values = Object.values(option)\n\treturn terms.every((term) => {\n\t\treturn values.some((value) => value.toLowerCase().includes(term.toLowerCase()))\n\t})\n}\n</script>\n\n<template>\n\t<NcSelect\n\t\tv-model=\"modelValue\"\n\t\t:aria-label-combobox=\"t('Search for time zone')\"\n\t\t:clearable=\"false\"\n\t\t:filterBy\n\t\t:multiple=\"false\"\n\t\t:options\n\t\t:placeholder=\"t('Type to search time zone')\"\n\t\t:uid\n\t\t:reduce=\"(option) => option.timezoneId\"\n\t\tlabel=\"label\" />\n</template>\n"],"names":["_useModel","_createBlock","_unref"],"mappings":";;;;;AAWA,SAAS,iBAAiB,YAAoB;AAC7C,SAAO,WAEL,MAAM,WAAW,QAAQ,GAAG,IAAI,CAAC,EAEjC,WAAW,KAAK,KAAK,EAErB,WAAW,KAAK,GAAG;AACtB;AAMO,SAAS,eAAe;AAC9B,SAAO,KAAK,kBAAkB,UAAU,EACtC,OAAO,CAAC,OAAO,CAAC,GAAG,WAAW,MAAM,CAAC,EACrC,IAAI,CAAC,gBAAgB;AAAA,IACrB;AAAA,IACA,OAAO,iBAAiB,UAAU;AAAA,EAAA,EACjC,EACD,KAAK,CAAC,GAAG,MAAM,EAAE,WAAW,cAAc,EAAE,UAAU,CAAC;AAC1D;;;;;;;;;;;;ACoBA,UAAM,aAAaA,SAAmB,SAAA,YAAwB;AAE9D,UAAM,QAAQ;AAed,UAAM,+BAA+B,SAAS,MAAM;AACnD,aAAO,MAAM,oBAAoB,IAAI,CAAC,EAAE,YAAY,aAAa;AAAA,QAChE;AAAA,QACA;AAAA,MAAA,EACC;AAAA,IACH,CAAC;AAED,UAAM,UAAU,SAAS,MAAM;AAC9B,YAAM,YAAY,aAAA;AAClB,gBAAU,QAAQ,GAAG,6BAA6B,KAAK;AACvD,aAAO;AAAA,IACR,CAAC;AASD,aAAS,SAAS,QAAmB,OAAe,QAAyB;AAC5E,YAAM,QAAQ,OAAO,KAAA,EAAO,MAAM,KAAK;AACvC,YAAM,SAAS,OAAO,OAAO,MAAM;AACnC,aAAO,MAAM,MAAM,CAAC,SAAS;AAC5B,eAAO,OAAO,KAAK,CAAC,UAAU,MAAM,YAAA,EAAc,SAAS,KAAK,YAAA,CAAa,CAAC;AAAA,MAC/E,CAAC;AAAA,IACF;;0BAICC,YAUiB,UAAA;AAAA,oBATP,WAAA;AAAA,qEAAA,WAAU,QAAA;AAAA,QAClB,uBAAqBC,MAAA,CAAA,EAAC,sBAAA;AAAA,QACtB,WAAW;AAAA,QACX;AAAA,QACA,UAAU;AAAA,QACV,SAAA,QAAA;AAAA,QACA,aAAaA,MAAA,CAAA,EAAC,0BAAA;AAAA,QACd,KAAA,QAAA;AAAA,QACA,QAAM,CAAG,WAAW,OAAO;AAAA,QAC5B,OAAM;AAAA,MAAA;;;;"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"NcUserBubble-BXR7vT0V.mjs","sources":["../../src/components/NcUserBubble/NcUserBubbleDiv.vue","../../src/components/NcUserBubble/NcUserBubble.vue"],"sourcesContent":["<!--\n - SPDX-FileCopyrightText: 2021 Nextcloud GmbH and Nextcloud contributors\n - SPDX-License-Identifier: AGPL-3.0-or-later\n-->\n\n<template>\n\t<div>\n\t\t<slot name=\"trigger\" />\n\t</div>\n</template>\n","<!--\n - SPDX-FileCopyrightText: 2019 Nextcloud GmbH and Nextcloud contributors\n - SPDX-License-Identifier: AGPL-3.0-or-later\n-->\n\n<docs>\n\n### General description\n\nThis component displays a user together with a small avatar in a grey bubble.\nIt's possible to use an actual user's avatar, just an image/icon as a url or an icon-class,\nto link the bubble to e.g. a users profile\nand to show a popover on hover with e.g. the full user name handle / email address or something else.\n\nThis component has the following slot:\n* a default slot which is for the content of the popover (this is passed to the popover component directly).\n\n### Examples\n\n```vue\n<p>\n\tSome text before <NcUserBubble user=\"admin\" display-name=\"Admin Example\" url=\"/test\">@admin@foreign-host.com</NcUserBubble> and after the bubble.\n\t<NcUserBubble avatar-image=\"icon-group\" display-name=\"test group xyz\" :primary=\"true\">Hey there!</NcUserBubble>\n</p>\n```\n\n### Example with name slot\n\n```vue\n<template>\n<NcUserBubble\n\t:size=\"34\"\n\tdisplay-name=\"Administrator\"\n\tuser=\"admin\">\n\t<template #name>\n\t\t<NcButton aria-label=\"Remove user\"\n\t\t\tvariant=\"tertiary-no-background\"\n\t\t\t@click=\"alert\">\n\t\t\t<template #icon>\n\t\t\t\t<NcIconSvgWrapper :path=\"mdiClose\" />\n\t\t\t</template>\n\t\t</NcButton>\n\t</template>\n</NcUserBubble>\n</template>\n<script>\nimport { mdiClose } from '@mdi/js'\n\nexport default {\n\tsetup() {\n\t\treturn {\n\t\t\tmdiClose,\n\t\t}\n\t},\n\tmethods: {\n\t\talert() {\n\t\t\talert('Removed')\n\t\t},\n\t},\n}\n</script>\n```\n\n</docs>\n\n<script setup lang=\"ts\">\nimport type { Slot } from 'vue'\nimport type { RouteLocation } from 'vue-router'\n\nimport { computed, warn, watch } from 'vue'\nimport { RouterLink } from 'vue-router'\nimport NcAvatar from '../NcAvatar/NcAvatar.vue'\nimport NcPopover from '../NcPopover/NcPopover.vue'\nimport NcUserBubbleDiv from './NcUserBubbleDiv.vue'\n\n/**\n * Default popover state. Requires the UserBubble\n * to have some content to render inside the popover\n */\nconst isOpen = defineModel<boolean>('open')\n\nconst props = withDefaults(defineProps<{\n\t/**\n\t * Override generated avatar, can be an url or an icon class\n\t */\n\tavatarImage?: string\n\n\t/**\n\t * Provide the user id if this is a user\n\t */\n\tuser?: string\n\n\t/**\n\t * Displayed label\n\t */\n\tdisplayName?: string\n\n\t/**\n\t * Whether or not to display the user-status\n\t */\n\tshowUserStatus?: boolean\n\n\t/**\n\t * Define the whole bubble as a link\n\t */\n\turl?: string\n\n\t/**\n\t * Use bubble as a router-link for in-app navigation\n\t */\n\tto?: RouteLocation\n\n\t/**\n\t * Use the primary colour\n\t */\n\tprimary?: boolean\n\n\t/**\n\t * This is the height of the component\n\t */\n\tsize?: number\n\n\t/**\n\t * This is the margin of the avatar (size - margin = avatar size)\n\t */\n\tmargin?: number\n}>(), {\n\tavatarImage: undefined,\n\tdisplayName: undefined,\n\tuser: undefined,\n\turl: undefined,\n\tto: undefined,\n\tmargin: 2,\n\tsize: 20,\n})\n\nconst emit = defineEmits<{\n\t/**\n\t * The mouse click event\n\t */\n\tclick: [event: MouseEvent]\n}>()\n\ndefineSlots<{\n\t/**\n\t * Main Popover content on userbubble hover/focus\n\t */\n\tdefault?: Slot\n\n\t/**\n\t * Optional slot just after the name\n\t */\n\tname?: Slot\n}>()\n\n/**\n * Is the provided avatar url valid or not\n */\nconst isAvatarUrl = computed(() => {\n\tif (!props.avatarImage) {\n\t\treturn false\n\t}\n\n\ttry {\n\t\tconst url = new URL(props.avatarImage)\n\t\treturn !!url\n\t} catch {\n\t\treturn false\n\t}\n})\n\n/**\n * Do we have a custom avatar or not\n */\nconst isCustomAvatar = computed(() => !!props.avatarImage)\n\nconst avatarStyle = computed(() => ({\n\tmarginInlineStart: `${props.margin}px`,\n}))\n\n/**\n * Is the URL prop set\n */\nconst hasUrl = computed(() => {\n\tif (!props.url || props.url.trim() === '') {\n\t\treturn false\n\t}\n\ttry {\n\t\tconst url = new URL(props.url, props.url?.startsWith?.('/') ? window.location.href : undefined)\n\t\treturn !!url\n\t} catch {\n\t\twarn('[NcUserBubble] Invalid URL passed', { url: props.url })\n\t\treturn false\n\t}\n})\n\n/**\n * href attribute to pass to content container\n */\nconst href = computed(() => hasUrl.value ? props.url : undefined)\n\nconst contentComponent = computed(() => {\n\tif (hasUrl.value) {\n\t\treturn 'a'\n\t} else if (props.to) {\n\t\treturn RouterLink\n\t} else {\n\t\treturn 'div'\n\t}\n})\n\nconst contentStyle = computed(() => ({\n\theight: `${props.size}px`,\n\tlineHeight: `${props.size}px`,\n\tborderRadius: `${props.size / 2}px`,\n}))\n\nwatch([() => props.displayName, () => props.user], () => {\n\tif (!props.displayName && !props.user) {\n\t\twarn('[NcUserBubble] At least `displayName` or `user` property should be set.')\n\t}\n})\n</script>\n\n<template>\n\t<component\n\t\t:is=\"!!$slots.default ? NcPopover : NcUserBubbleDiv\"\n\t\tv-model:shown=\"isOpen\"\n\t\tclass=\"user-bubble__wrapper\"\n\t\ttrigger=\"hover focus\">\n\t\t<!-- Main userbubble structure -->\n\t\t<template #trigger=\"{ attrs }\">\n\t\t\t<component\n\t\t\t\t:is=\"contentComponent\"\n\t\t\t\tclass=\"user-bubble__content\"\n\t\t\t\t:class=\"{ 'user-bubble__content--primary': primary }\"\n\t\t\t\t:style=\"contentStyle\"\n\t\t\t\t:to\n\t\t\t\t:href\n\t\t\t\tv-bind=\"attrs\"\n\t\t\t\t@click=\"emit('click', $event)\">\n\t\t\t\t<!-- NcAvatar -->\n\t\t\t\t<NcAvatar\n\t\t\t\t\t:url=\"isCustomAvatar && isAvatarUrl ? avatarImage : undefined\"\n\t\t\t\t\t:iconClass=\"isCustomAvatar && !isAvatarUrl ? avatarImage : undefined\"\n\t\t\t\t\t:user=\"user\"\n\t\t\t\t\t:displayName=\"displayName\"\n\t\t\t\t\t:size=\"size - (margin * 2)\"\n\t\t\t\t\t:style=\"avatarStyle\"\n\t\t\t\t\tdisableTooltip\n\t\t\t\t\tdisableMenu\n\t\t\t\t\t:hideStatus=\"!showUserStatus\"\n\t\t\t\t\tclass=\"user-bubble__avatar\" />\n\n\t\t\t\t<!-- Name -->\n\t\t\t\t<span class=\"user-bubble__name\">\n\t\t\t\t\t{{ displayName || user }}\n\t\t\t\t</span>\n\n\t\t\t\t<span v-if=\"!!$slots.name\" class=\"user-bubble__secondary\">\n\t\t\t\t\t<slot name=\"name\" />\n\t\t\t\t</span>\n\t\t\t</component>\n\t\t</template>\n\n\t\t<slot />\n\t</component>\n</template>\n\n<style lang=\"scss\" scoped>\n.user-bubble {\n\t&__wrapper {\n\t\t// align inline with text\n\t\tdisplay: inline-block;\n\t\tvertical-align: middle;\n\t\t// shrink and allow grow to fit\n\t\tmin-width: 0;\n\t\tmax-width: 100%;\n\t}\n\n\t&__content {\n\t\tdisplay: inline-flex;\n\t\tmax-width: 100%;\n\t\tbackground-color: var(--color-background-dark);\n\n\t\t&--primary {\n\t\t\tcolor: var(--color-primary-element-text);\n\t\t\tbackground-color: var(--color-primary-element);\n\t\t}\n\n\t\t> :last-child {\n\t\t\t// border radius end padding\n\t\t\tpadding-inline-end: 8px;\n\t\t}\n\t}\n\n\t&__avatar {\n\t\talign-self: center;\n\t}\n\n\t&__name {\n\t\toverflow: hidden;\n\t\twhite-space: nowrap;\n\t\ttext-overflow: ellipsis;\n\t}\n\n\t&__name,\n\t&__secondary {\n\t\t// proper spacing between avatar, name & slot\n\t\tpadding-block: 0;\n\t\tpadding-inline: 4px 0;\n\t}\n}\n</style>\n"],"names":["_createElementBlock","_renderSlot","_useModel","_openBlock","_createBlock","_resolveDynamicComponent","$slots","_withCtx","_mergeProps","_createVNode","_createElementVNode","_toDisplayString"],"mappings":";;;;;;;sBAMCA,mBAEM,OAAA,MAAA;AAAA,IADLC,WAAuB,KAAA,QAAA,SAAA;AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;ACwEzB,UAAM,SAASC,SAAoB,SAAC,MAAM;AAE1C,UAAM,QAAQ;AAuDd,UAAM,OAAO;AAsBb,UAAM,cAAc,SAAS,MAAM;AAClC,UAAI,CAAC,MAAM,aAAa;AACvB,eAAO;AAAA,MACR;AAEA,UAAI;AACH,cAAM,MAAM,IAAI,IAAI,MAAM,WAAW;AACrC,eAAO,CAAC,CAAC;AAAA,MACV,QAAQ;AACP,eAAO;AAAA,MACR;AAAA,IACD,CAAC;AAKD,UAAM,iBAAiB,SAAS,MAAM,CAAC,CAAC,MAAM,WAAW;AAEzD,UAAM,cAAc,SAAS,OAAO;AAAA,MACnC,mBAAmB,GAAG,MAAM,MAAM;AAAA,IAAA,EACjC;AAKF,UAAM,SAAS,SAAS,MAAM;AAC7B,UAAI,CAAC,MAAM,OAAO,MAAM,IAAI,KAAA,MAAW,IAAI;AAC1C,eAAO;AAAA,MACR;AACA,UAAI;AACH,cAAM,MAAM,IAAI,IAAI,MAAM,KAAK,MAAM,KAAK,aAAa,GAAG,IAAI,OAAO,SAAS,OAAO,MAAS;AAC9F,eAAO,CAAC,CAAC;AAAA,MACV,QAAQ;AACP,aAAK,qCAAqC,EAAE,KAAK,MAAM,KAAK;AAC5D,eAAO;AAAA,MACR;AAAA,IACD,CAAC;AAKD,UAAM,OAAO,SAAS,MAAM,OAAO,QAAQ,MAAM,MAAM,MAAS;AAEhE,UAAM,mBAAmB,SAAS,MAAM;AACvC,UAAI,OAAO,OAAO;AACjB,eAAO;AAAA,MACR,WAAW,MAAM,IAAI;AACpB,eAAO;AAAA,MACR,OAAO;AACN,eAAO;AAAA,MACR;AAAA,IACD,CAAC;AAED,UAAM,eAAe,SAAS,OAAO;AAAA,MACpC,QAAQ,GAAG,MAAM,IAAI;AAAA,MACrB,YAAY,GAAG,MAAM,IAAI;AAAA,MACzB,cAAc,GAAG,MAAM,OAAO,CAAC;AAAA,IAAA,EAC9B;AAEF,UAAM,CAAC,MAAM,MAAM,aAAa,MAAM,MAAM,IAAI,GAAG,MAAM;AACxD,UAAI,CAAC,MAAM,eAAe,CAAC,MAAM,MAAM;AACtC,aAAK,yEAAyE;AAAA,MAC/E;AAAA,IACD,CAAC;;AAIA,aAAAC,UAAA,GAAAC,YAyCYC,0BAxCJC,KAAAA,OAAO,UAAU,YAAY,eAAe,GAAA;AAAA,QAC3C,OAAO,OAAA;AAAA,gEAAA,OAAM,QAAA;AAAA,QACrB,OAAM;AAAA,QACN,SAAQ;AAAA,MAAA;QAEG,SAAOC,QACjB,CA8BY,EA/BS,YAAK;AAAA,wBAC1BH,YA8BYC,wBA7BN,iBAAA,KAAgB,GADtBG,WA8BY;AAAA,YA5BX,OAAK,CAAC,wBAAsB,EAAA,iCACe,QAAA,SAAO;AAAA,YACjD,OAAO,aAAA;AAAA,YACP,IAAA,QAAA;AAAA,YACA,MAAA,KAAA;AAAA,UAAA,GACO,OAAK;AAAA,YACZ,SAAK,OAAA,CAAA,MAAA,OAAA,CAAA,IAAA,CAAA,WAAE,KAAI,SAAU,MAAM;AAAA,UAAA;6BAE5B,MAU+B;AAAA,cAV/BC,YAU+B,UAAA;AAAA,gBAT7B,KAAK,eAAA,SAAkB,oBAAc,QAAA,cAAc;AAAA,gBACnD,WAAW,eAAA,SAAc,CAAK,oBAAc,QAAA,cAAc;AAAA,gBAC1D,MAAM,QAAA;AAAA,gBACN,aAAa,QAAA;AAAA,gBACb,MAAM,QAAA,OAAQ,QAAA,SAAM;AAAA,gBACpB,sBAAO,YAAA,KAAW;AAAA,gBACnB,gBAAA;AAAA,gBACA,aAAA;AAAA,gBACC,aAAa,QAAA;AAAA,gBACd,OAAM;AAAA,cAAA;cAGPC,mBAEO,QAFP,YAEOC,gBADH,QAAA,eAAe,QAAA,IAAI,GAAA,CAAA;AAAA,cAGTL,CAAAA,CAAAA,KAAAA,OAAO,QAArBH,UAAA,GAAAH,mBAEO,QAFP,YAEO;AAAA,gBADNC,WAAoB,KAAA,QAAA,QAAA,CAAA,GAAA,QAAA,IAAA;AAAA,cAAA;;;;;yBAKvB,MAAQ;AAAA,UAARA,WAAQ,KAAA,QAAA,WAAA,CAAA,GAAA,QAAA,IAAA;AAAA,QAAA;;;;;;;"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"NcUserStatusIcon-BF5OEQFU.mjs","sources":["../../src/assets/status-icons/user-status-away.svg?raw","../../src/assets/status-icons/user-status-busy.svg?raw","../../src/assets/status-icons/user-status-dnd.svg?raw","../../src/assets/status-icons/user-status-invisible.svg?raw","../../src/assets/status-icons/user-status-online.svg?raw","../../src/utils/UserStatus.ts","../../src/components/NcUserStatusIcon/NcUserStatusIcon.vue"],"sourcesContent":["export default \"<!--\\n - SPDX-FileCopyrightText: 2020 Google Inc.\\n - SPDX-License-Identifier: Apache-2.0\\n-->\\n<svg viewBox=\\\"0 -960 960 960\\\" width=\\\"24px\\\" height=\\\"24px\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\">\\n\\t<path\\n\\t\\tfill=\\\"var(--user-status-color-away, var(--color-warning, #C88800))\\\"\\n\\t\\td=\\\"m612-292 56-56-148-148v-184h-80v216l172 172ZM480-80q-83 0-156-31.5T197-197q-54-54-85.5-127T80-480q0-83 31.5-156T197-763q54-54 127-85.5T480-880q83 0 156 31.5T763-763q54 54 85.5 127T880-480q0 83-31.5 156T763-197q-54 54-127 85.5T480-80Z\\\"/>\\n</svg>\\n\"","export default \"<!--\\n - SPDX-FileCopyrightText: 2020 Google Inc.\\n - SPDX-License-Identifier: Apache-2.0\\n-->\\n<svg viewBox=\\\"0 -960 960 960\\\" width=\\\"24px\\\" height=\\\"24px\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\">\\n\\t<path\\n\\t\\tfill=\\\"var(--user-status-color-busy, var(--color-error, #DB0606))\\\"\\n\\t\\td=\\\"M480-80q-83 0-156-31.5T197-197q-54-54-85.5-127T80-480q0-83 31.5-156T197-763q54-54 127-85.5T480-880q83 0 156 31.5T763-763q54 54 85.5 127T880-480q0 83-31.5 156T763-197q-54 54-127 85.5T480-80Z\\\"/>\\n</svg>\\n\"","export default \"<!--\\n - SPDX-FileCopyrightText: 2020 Google Inc.\\n - SPDX-License-Identifier: Apache-2.0\\n-->\\n<svg viewBox=\\\"0 -960 960 960\\\" width=\\\"24px\\\" height=\\\"24px\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\">\\n\\t<path\\n\\t\\tfill=\\\"var(--user-status-color-busy, var(--color-error, #DB0606))\\\"\\n\\t\\td=\\\"M280-440h400v-80H280v80ZM480-80q-83 0-156-31.5T197-197q-54-54-85.5-127T80-480q0-83 31.5-156T197-763q54-54 127-85.5T480-880q83 0 156 31.5T763-763q54 54 85.5 127T880-480q0 83-31.5 156T763-197q-54 54-127 85.5T480-80Z\\\"/>\\n</svg>\\n\"","export default \"<!--\\n - SPDX-FileCopyrightText: 2020 Google Inc.\\n - SPDX-License-Identifier: Apache-2.0\\n-->\\n<svg viewBox=\\\"0 -960 960 960\\\" width=\\\"24px\\\" height=\\\"24px\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\">\\n\\t<path\\n\\t\\tfill=\\\"var(--user-status-color-offline, var(--color-text-maxcontrast, #6B6B6B))\\\"\\n\\t\\td=\\\"M480-80q-83 0-156-31.5T197-197q-54-54-85.5-127T80-480q0-83 31.5-156T197-763q54-54 127-85.5T480-880q83 0 156 31.5T763-763q54 54 85.5 127T880-480q0 83-31.5 156T763-197q-54 54-127 85.5T480-80Zm0-80q134 0 227-93t93-227q0-134-93-227t-227-93q-134 0-227 93t-93 227q0 134 93 227t227 93Zm0-320Z\\\"/>\\n</svg>\\n\"","export default \"<!--\\n - SPDX-FileCopyrightText: 2020 Google Inc.\\n - SPDX-License-Identifier: Apache-2.0\\n-->\\n<svg viewBox=\\\"0 -960 960 960\\\" width=\\\"24px\\\" height=\\\"24px\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\">\\n\\t<path\\n\\t\\tfill=\\\"var(--user-status-color-online, var(--color-success, #2D7B41))\\\"\\n\\t\\td=\\\"m424-296 282-282-56-56-226 226-114-114-56 56 170 170Zm56 216q-83 0-156-31.5T197-197q-54-54-85.5-127T80-480q0-83 31.5-156T197-763q54-54 127-85.5T480-880q83 0 156 31.5T763-763q54 54 85.5 127T880-480q0 83-31.5 156T763-197q-54 54-127 85.5T480-80Z\\\"/>\\n</svg>\\n\"","/**\n * SPDX-FileCopyrightText: 2023 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n\nimport { t } from '../l10n.ts'\n\ntype Status = 'online' | 'away' | 'busy' | 'dnd' | 'invisible' | 'offline'\n\n/**\n * Get the translated label for a given user status\n *\n * @param status - The user status\n */\nexport function getUserStatusText(status: Status): string {\n\tswitch (status) {\n\t\tcase 'away': return t('away') // TRANSLATORS: User status if the user is currently away from keyboard\n\t\tcase 'busy': return t('busy')\n\t\tcase 'dnd': return t('do not disturb')\n\t\tcase 'online': return t('online')\n\t\tcase 'invisible': return t('invisible')\n\t\tcase 'offline': return t('offline')\n\t\tdefault: return status\n\t}\n}\n","<!--\n - SPDX-FileCopyrightText: 2024 Nextcloud GmbH and Nextcloud contributors\n - SPDX-License-Identifier: AGPL-3.0-or-later\n-->\n\n<docs>\n### Description\n\nThis component displays a user status icon.\n\n### Example\n\n```vue\n<template>\n\t<div class=\"flex\">\n\t\t<div class=\"grid\">\n\t\t\t<NcUserStatusIcon status=\"online\" />\n\t\t\t<span>Online</span>\n\t\t\t<NcUserStatusIcon status=\"away\" />\n\t\t\t<span>Away</span>\n\t\t\t<NcUserStatusIcon status=\"busy\" />\n\t\t\t<span>Busy</span>\n\t\t\t<NcUserStatusIcon status=\"dnd\" />\n\t\t\t<span>Do not disturb</span>\n\t\t\t<NcUserStatusIcon status=\"invisible\" />\n\t\t\t<span>Invisible</span>\n\t\t\t<NcUserStatusIcon status=\"offline\" />\n\t\t\t<span>Offline</span>\n\t\t</div>\n\n\t\t<NcThemeProvider dark>\n\t\t\t<div class=\"grid\">\n\t\t\t\t<NcUserStatusIcon status=\"online\" />\n\t\t\t\t<span>Online</span>\n\t\t\t\t<NcUserStatusIcon status=\"away\" />\n\t\t\t\t<span>Away</span>\n\t\t\t\t<NcUserStatusIcon status=\"busy\" />\n\t\t\t\t<span>Busy</span>\n\t\t\t\t<NcUserStatusIcon status=\"dnd\" />\n\t\t\t\t<span>Do not disturb</span>\n\t\t\t\t<NcUserStatusIcon status=\"invisible\" />\n\t\t\t\t<span>Invisible</span>\n\t\t\t\t<NcUserStatusIcon status=\"offline\" />\n\t\t\t\t<span>Offline</span>\n\t\t\t</div>\n\t\t</NcThemeProvider>\n\t</div>\n</template>\n\n<style>\n.flex {\n\tdisplay: flex;\n\tgap: 4px;\n}\n\n.grid {\n\tdisplay: grid;\n\tgrid-template-columns: 20px 1fr;\n\tgap: 8px;\n\talign-items: center;\n\tpadding: 4px;\n\twidth: fit-content;\n\tbackground-color: var(--color-main-background);\n\tcolor: var(--color-main-text);\n}\n</style>\n```\n</docs>\n\n<script setup lang=\"ts\">\nimport axios from '@nextcloud/axios'\nimport { getCapabilities } from '@nextcloud/capabilities'\nimport { generateOcsUrl } from '@nextcloud/router'\nimport { computed, watch } from 'vue'\nimport awaySvg from '../../assets/status-icons/user-status-away.svg?raw'\nimport busySvg from '../../assets/status-icons/user-status-busy.svg?raw'\nimport dndSvg from '../../assets/status-icons/user-status-dnd.svg?raw'\nimport invisibleSvg from '../../assets/status-icons/user-status-invisible.svg?raw'\nimport onlineSvg from '../../assets/status-icons/user-status-online.svg?raw'\nimport { t } from '../../l10n.ts'\nimport { logger } from '../../utils/logger.ts'\nimport { getUserStatusText } from '../../utils/UserStatus.ts'\n\n/**\n * The user preloaded user status.\n */\nconst status = defineModel<'online' | 'away' | 'busy' | 'dnd' | 'invisible' | 'offline'>('status')\n\nconst props = withDefaults(defineProps<{\n\t/**\n\t * Set the user id to fetch the status\n\t */\n\tuser?: string\n\n\t/**\n\t * Set the `aria-hidden` attribute\n\t */\n\tariaHidden?: boolean | 'true' | 'false'\n}>(), {\n\tuser: undefined,\n\tariaHidden: false,\n})\n\nconst isInvisible = computed(() => status.value && ['invisible', 'offline'].includes(status.value))\n\n/**\n * Aria label to set on the element (will be set when ariaHidden is not set)\n */\nconst ariaLabel = computed(() => (\n\tstatus.value && (!props.ariaHidden || props.ariaHidden === 'false')\n\t\t? t('User status: {status}', { status: getUserStatusText(status.value) })\n\t\t: undefined\n))\n\nwatch(() => props.user, async (user) => {\n\t// eslint-disable-next-line @typescript-eslint/no-explicit-any\n\tif (!status.value && user && (getCapabilities() as any)?.user_status?.enabled) {\n\t\ttry {\n\t\t\tconst { data } = await axios.get(generateOcsUrl('/apps/user_status/api/v1/statuses/{user}', { user }))\n\t\t\tstatus.value = data.ocs?.data?.status\n\t\t} catch (error) {\n\t\t\tlogger.debug('Error while fetching user status', { error })\n\t\t}\n\t}\n}, { immediate: true })\n\nconst matchSvg = {\n\tonline: onlineSvg,\n\taway: awaySvg,\n\tbusy: busySvg,\n\tdnd: dndSvg,\n\tinvisible: invisibleSvg,\n\toffline: invisibleSvg,\n}\nconst activeSvg = computed(() => status.value && matchSvg[status.value])\n</script>\n\n<template>\n\t<span\n\t\tv-if=\"status\"\n\t\tclass=\"user-status-icon\"\n\t\t:class=\"{\n\t\t\t'user-status-icon--invisible': isInvisible,\n\t\t}\"\n\t\t:aria-hidden=\"!ariaLabel || undefined\"\n\t\t:aria-label\n\t\trole=\"img\"\n\t\tv-html=\"activeSvg\" /> <!-- eslint-disable-line vue/no-v-html -->\n</template>\n\n<style lang=\"scss\" scoped>\n.user-status-icon {\n\t// Custom colors for the svg icons, to not rely on server variables\n\t--user-status-color-online: #2D7B41;\n\t--user-status-color-busy: #DB0606;\n\t--user-status-color-away: #C88800;\n\t--user-status-color-offline: #6B6B6B;\n\tdisplay: flex;\n\tjustify-content: center;\n\talign-items: center;\n\n\t&--invisible {\n\t\tfilter: var(--background-invert-if-dark);\n\t}\n\n\t:deep(svg) {\n\t\twidth: 100%;\n\t\theight: 100%;\n\t}\n}\n</style>\n"],"names":["_useModel","_createElementBlock"],"mappings":";;;;;;;AAAA,MAAA,UAAe;ACAf,MAAA,UAAe;ACAf,MAAA,SAAe;ACAf,MAAA,eAAe;ACAf,MAAA,YAAe;;;ACcR,SAAS,kBAAkB,QAAwB;AACzD,UAAQ,QAAA;AAAA,IACP,KAAK;AAAQ,aAAO,EAAE,MAAM;AAAA;AAAA,IAC5B,KAAK;AAAQ,aAAO,EAAE,MAAM;AAAA,IAC5B,KAAK;AAAO,aAAO,EAAE,gBAAgB;AAAA,IACrC,KAAK;AAAU,aAAO,EAAE,QAAQ;AAAA,IAChC,KAAK;AAAa,aAAO,EAAE,WAAW;AAAA,IACtC,KAAK;AAAW,aAAO,EAAE,SAAS;AAAA,IAClC;AAAS,aAAO;AAAA,EAAA;AAElB;;;;;;;;;;;;;AC8DA,UAAM,SAASA,SAAyE,SAAC,QAAQ;AAEjG,UAAM,QAAQ;AAed,UAAM,cAAc,SAAS,MAAM,OAAO,SAAS,CAAC,aAAa,SAAS,EAAE,SAAS,OAAO,KAAK,CAAC;AAKlG,UAAM,YAAY,SAAS,MAC1B,OAAO,UAAU,CAAC,MAAM,cAAc,MAAM,eAAe,WACxD,EAAE,yBAAyB,EAAE,QAAQ,kBAAkB,OAAO,KAAK,GAAG,IACtE,MACH;AAED,UAAM,MAAM,MAAM,MAAM,OAAO,SAAS;AAEvC,UAAI,CAAC,OAAO,SAAS,QAAS,gBAAA,GAA2B,aAAa,SAAS;AAC9E,YAAI;AACH,gBAAM,EAAE,SAAS,MAAM,MAAM,IAAI,eAAe,4CAA4C,EAAE,KAAA,CAAM,CAAC;AACrG,iBAAO,QAAQ,KAAK,KAAK,MAAM;AAAA,QAChC,SAAS,OAAO;AACf,iBAAO,MAAM,oCAAoC,EAAE,MAAA,CAAO;AAAA,QAC3D;AAAA,MACD;AAAA,IACD,GAAG,EAAE,WAAW,MAAM;AAEtB,UAAM,WAAW;AAAA,MAChB,QAAQ;AAAA,MACR,MAAM;AAAA,MACN,MAAM;AAAA,MACN,KAAK;AAAA,MACL,WAAW;AAAA,MACX,SAAS;AAAA,IAAA;AAEV,UAAM,YAAY,SAAS,MAAM,OAAO,SAAS,SAAS,OAAO,KAAK,CAAC;;aAK/D,OAAA,sBADPC,mBASsB,QAAA;AAAA;QAPrB,uBAAM,oBAAkB;AAAA,yCACoB,YAAA;AAAA,QAAA;QAG3C,eAAW,CAAG,UAAA,SAAa;AAAA,QAC3B,cAAA,UAAA;AAAA,QACD,MAAK;AAAA,QACL,WAAQ,UAAA;AAAA,MAAA;;;;;"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"NcVNodes.vue_vue_type_script_lang-BqUHinRZ.mjs","sources":["../../src/components/NcVNodes/NcVNodes.vue"],"sourcesContent":["<!--\n - SPDX-FileCopyrightText: 2023 Nextcloud GmbH and Nextcloud contributors\n - SPDX-License-Identifier: AGPL-3.0-or-later\n-->\n\n<docs>\nA util component to render a VNode or an array of VNodes from the prop or the default slot.\n\n### Render the given or generated VNodes\n\n```vue\n<template>\n\t<NcVNodes :vnodes=\"renderDiv()\" />\n</template>\n\n<script>\nimport { h } from 'vue'\n\nexport default {\n\tmethods: {\n\t\trenderDiv() {\n\t\t\treturn h('div', 'This div was created programmatically as a VNode')\n\t\t},\n\t}\n}\n</script>\n```\n\n### Render content in a conditional wrapper\n\n```vue\n<template>\n\t<div>\n\t\t<p>\n\t\t\t<NcCheckboxRadioSwitch v-model=\"shouldRenderNcNoteCard\">Render text inside \"NcNoteCard\"</NcCheckboxRadioSwitch>\n\t\t</p>\n\t\t<component :is=\"shouldRenderNcNoteCard ? 'NcNoteCard' : 'NcVNodes'\">\n\t\t\t<p>This content is rendered {{ shouldRenderNcNoteCard ? 'with' : 'without' }} a \"NcNoteCard\" wrapper</p>\n\t\t</component>\n\t</div>\n</template>\n\n<script>\nexport default {\n\tdata() {\n\t\treturn {\n\t\t\tshouldRenderNcNoteCard: true,\n\t\t}\n\t},\n}\n</script>\n```\n</docs>\n\n<script lang=\"ts\">\nimport type { PropType, VNode } from 'vue'\n\nimport { defineComponent } from 'vue'\n\nexport default defineComponent({\n\tname: 'NcVNodes',\n\n\tprops: {\n\t\t/**\n\t\t * The vnodes to render\n\t\t */\n\t\tvnodes: {\n\t\t\ttype: [Array, Object] as PropType<VNode | VNode[]>,\n\t\t\tdefault: null,\n\t\t},\n\t},\n\n\t/**\n\t * The render function to display the component\n\t */\n\trender() {\n\t\treturn this.vnodes || this.$slots?.default?.({})\n\t},\n})\n</script>\n"],"names":[],"mappings":";AA2DA,MAAA,YAAe,gBAAgB;AAAA,EAC9B,MAAM;AAAA,EAEN,OAAO;AAAA;AAAA;AAAA;AAAA,IAIN,QAAQ;AAAA,MACP,MAAM,CAAC,OAAO,MAAM;AAAA,MACpB,SAAS;AAAA,IAAA;AAAA,EACV;AAAA;AAAA;AAAA;AAAA,EAMD,SAAS;AACR,WAAO,KAAK,UAAU,KAAK,QAAQ,UAAU,CAAA,CAAE;AAAA,EAChD;AACD,CAAC;"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"_l10n-wdIzZwir.mjs","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"_plugin-vue_export-helper-1tPrXgE0.mjs","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"actionGlobal-BZFdtdJL.mjs","sources":["../../src/mixins/actionGlobal.js"],"sourcesContent":["/**\n * SPDX-FileCopyrightText: 2019 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n\nexport default {\n\tbeforeUpdate() {\n\t\tthis.text = this.getText()\n\t},\n\n\tdata() {\n\t\treturn {\n\t\t\t// $slots are not reactive.\n\t\t\t// We need to update the content manually\n\t\t\ttext: this.getText(),\n\t\t}\n\t},\n\n\tcomputed: {\n\t\tisLongText() {\n\t\t\treturn this.text && this.text.trim().length > 20\n\t\t},\n\t},\n\n\tmethods: {\n\t\tgetText() {\n\t\t\treturn this.$slots.default?.()[0].children?.trim?.() || ''\n\t\t},\n\t},\n}\n"],"names":[],"mappings":"AAKA,MAAA,oBAAe;AAAA,EACd,eAAe;AACd,SAAK,OAAO,KAAK,QAAO;AAAA,EACzB;AAAA,EAEA,OAAO;AACN,WAAO;AAAA;AAAA;AAAA,MAGN,MAAM,KAAK,QAAO;AAAA,IACrB;AAAA,EACC;AAAA,EAEA,UAAU;AAAA,IACT,aAAa;AACZ,aAAO,KAAK,QAAQ,KAAK,KAAK,KAAI,EAAG,SAAS;AAAA,IAC/C;AAAA,EACF;AAAA,EAEC,SAAS;AAAA,IACR,UAAU;AACT,aAAO,KAAK,OAAO,UAAO,EAAK,CAAC,EAAE,UAAU,YAAY;AAAA,IACzD;AAAA,EACF;AACA;"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"actionText-BXR0sWNu.mjs","sources":["../../src/mixins/actionText.js"],"sourcesContent":["/**\n * SPDX-FileCopyrightText: 2019 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n\nimport { warn } from 'vue'\nimport { NC_ACTIONS_CLOSE_MENU } from '../components/NcActions/useNcActions.ts'\nimport actionGlobal from './actionGlobal.js'\n\nexport default {\n\tmixins: [actionGlobal],\n\tprops: {\n\t\t/**\n\t\t * Icon to show with the action, can be either a CSS class or an URL\n\t\t */\n\t\ticon: {\n\t\t\ttype: String,\n\t\t\tdefault: '',\n\t\t},\n\t\t/**\n\t\t * The main text content of the entry.\n\t\t */\n\t\tname: {\n\t\t\ttype: String,\n\t\t\tdefault: '',\n\t\t},\n\t\t/**\n\t\t * The title attribute of the element.\n\t\t */\n\t\ttitle: {\n\t\t\ttype: String,\n\t\t\tdefault: '',\n\t\t},\n\t\t/**\n\t\t * Whether we close the Actions menu after the click\n\t\t */\n\t\tcloseAfterClick: {\n\t\t\ttype: Boolean,\n\t\t\tdefault: false,\n\t\t},\n\t\t/**\n\t\t * Aria label for the button. Not needed if the button has text.\n\t\t */\n\t\tariaLabel: {\n\t\t\ttype: String,\n\t\t\tdefault: null,\n\t\t},\n\t},\n\n\tinject: {\n\t\tcloseMenu: {\n\t\t\tfrom: NC_ACTIONS_CLOSE_MENU,\n\t\t},\n\t},\n\n\temits: [\n\t\t'click',\n\t],\n\n\tcreated() {\n\t\tif ('ariaHidden' in this.$attrs) {\n\t\t\twarn('[NcAction*]: Do not set the ariaHidden attribute as the root element will inherit the incorrect aria-hidden.')\n\t\t}\n\t},\n\n\tcomputed: {\n\t\t/**\n\t\t * Check if icon prop is an URL\n\t\t *\n\t\t * @return {boolean} Whether the icon prop is an URL\n\t\t */\n\t\tisIconUrl() {\n\t\t\ttry {\n\t\t\t\treturn !!(new URL(this.icon, this.icon.startsWith('/') ? window.location.origin : undefined))\n\t\t\t} catch {\n\t\t\t\treturn false\n\t\t\t}\n\t\t},\n\t},\n\n\tmethods: {\n\t\tonClick(event) {\n\t\t\t/**\n\t\t\t * Emitted when the action is clicked\n\t\t\t *\n\t\t\t * @type {Event}\n\t\t\t */\n\t\t\tthis.$emit('click', event)\n\n\t\t\tif (this.closeAfterClick) {\n\t\t\t\tthis.closeMenu(false)\n\t\t\t}\n\t\t},\n\t},\n}\n"],"names":["actionGlobal"],"mappings":";;;AASA,MAAA,kBAAe;AAAA,EACd,QAAQ,CAACA,iBAAY;AAAA,EACrB,OAAO;AAAA;AAAA;AAAA;AAAA,IAIN,MAAM;AAAA,MACL,MAAM;AAAA,MACN,SAAS;AAAA,IACZ;AAAA;AAAA;AAAA;AAAA,IAIE,MAAM;AAAA,MACL,MAAM;AAAA,MACN,SAAS;AAAA,IACZ;AAAA;AAAA;AAAA;AAAA,IAIE,OAAO;AAAA,MACN,MAAM;AAAA,MACN,SAAS;AAAA,IACZ;AAAA;AAAA;AAAA;AAAA,IAIE,iBAAiB;AAAA,MAChB,MAAM;AAAA,MACN,SAAS;AAAA,IACZ;AAAA;AAAA;AAAA;AAAA,IAIE,WAAW;AAAA,MACV,MAAM;AAAA,MACN,SAAS;AAAA,IACZ;AAAA,EACA;AAAA,EAEC,QAAQ;AAAA,IACP,WAAW;AAAA,MACV,MAAM;AAAA,IACT;AAAA,EACA;AAAA,EAEC,OAAO;AAAA,IACN;AAAA,EACF;AAAA,EAEC,UAAU;AACT,QAAI,gBAAgB,KAAK,QAAQ;AAChC,WAAK,8GAA8G;AAAA,IACpH;AAAA,EACD;AAAA,EAEA,UAAU;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IAMT,YAAY;AACX,UAAI;AACH,eAAO,CAAC,CAAE,IAAI,IAAI,KAAK,MAAM,KAAK,KAAK,WAAW,GAAG,IAAI,OAAO,SAAS,SAAS,MAAS;AAAA,MAC5F,QAAQ;AACP,eAAO;AAAA,MACR;AAAA,IACD;AAAA,EACF;AAAA,EAEC,SAAS;AAAA,IACR,QAAQ,OAAO;AAMd,WAAK,MAAM,SAAS,KAAK;AAEzB,UAAI,KAAK,iBAAiB;AACzB,aAAK,UAAU,KAAK;AAAA,MACrB;AAAA,IACD;AAAA,EACF;AACA;"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"appName-DyNMVZpX.mjs","sources":["../../src/utils/utils.ts","../../src/utils/appName.ts"],"sourcesContent":["/*!\n * SPDX-FileCopyrightText: 2025 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n\n/**\n * Single tone function decorator\n *\n * @param func - Function\n */\nexport function once<T extends unknown[], K>(func: (...args: T) => K): ((...args: T) => K) {\n\tlet wasCalled = false\n\tlet result: K\n\n\treturn (...args: T): K => {\n\t\tif (!wasCalled) {\n\t\t\twasCalled = true\n\t\t\tresult = func(...args)\n\t\t}\n\t\treturn result\n\t}\n}\n","/**\n * SPDX-FileCopyrightText: 2025 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n\nimport { loadState } from '@nextcloud/initial-state'\nimport { inject } from 'vue'\nimport { logger } from './logger.ts'\nimport { once } from './utils.ts'\n\nlet realAppName = 'missing-app-name'\ntry {\n\trealAppName = appName\n} catch {\n\tlogger.error('The `@nextcloud/vue` library was used without setting / replacing the `appName`.')\n}\nexport const APP_NAME = realAppName\n\nlet realAppVersion = ''\ntry {\n\trealAppVersion = appVersion\n} catch {\n\tlogger.error('The `@nextcloud/vue` library was used without setting / replacing the `appVersion`.')\n}\nexport const APP_VERSION = realAppVersion\n\n/**\n * Get the app name (the Nextcloud app id).\n */\nexport function useAppName(): string {\n\treturn inject<string>('appName', APP_NAME)\n}\n\n/**\n * Get the localized app name.\n */\nexport const useLocalizedAppName = once(() => {\n\tconst apps = loadState<{ id: string, name: string }[]>('core', 'apps', [])\n\tconst realAppName = useAppName()\n\n\treturn apps.find(({ id }) => id === realAppName)?.name ?? realAppName\n})\n"],"names":["realAppName"],"mappings":";;;AAAA;AAAA;AAAA;AAAA;AAUO,SAAS,KAA6B,MAA8C;AAC1F,MAAI,YAAY;AAChB,MAAI;AAEJ,SAAO,IAAI,SAAe;AACzB,QAAI,CAAC,WAAW;AACf,kBAAY;AACZ,eAAS,KAAK,GAAG,IAAI;AAAA,IACtB;AACA,WAAO;AAAA,EACR;AACD;ACXA,IAAI,cAAc;AAClB,IAAI;AACH,gBAAc;AACf,QAAQ;AACP,SAAO,MAAM,kFAAkF;AAChG;AACO,MAAM,WAAW;AAExB,IAAI,iBAAiB;AACrB,IAAI;AACH,mBAAiB;AAClB,QAAQ;AACP,SAAO,MAAM,qFAAqF;AACnG;AACO,MAAM,cAAc;AAKpB,SAAS,aAAqB;AACpC,SAAO,OAAe,WAAW,QAAQ;AAC1C;AAKO,MAAM,sBAAsB,KAAK,MAAM;AAC7C,QAAM,OAAO,UAA0C,QAAQ,QAAQ,CAAA,CAAE;AACzE,QAAMA,eAAc,WAAA;AAEpB,SAAO,KAAK,KAAK,CAAC,EAAE,SAAS,OAAOA,YAAW,GAAG,QAAQA;AAC3D,CAAC;"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"autolink-DrIurosL.mjs","sources":["../../src/components/NcRichText/NcRichTextExternalLink.vue","../../src/components/NcRichText/helpers.ts","../../src/components/NcRichText/autolink.ts"],"sourcesContent":["<!--\n - SPDX-FileCopyrightText: 2026 Nextcloud GmbH and Nextcloud contributors\n - SPDX-License-Identifier: AGPL-3.0-or-later\n-->\n\n<script setup lang=\"ts\">\nconst { href, decorateExternal = false } = defineProps<{\n\t/** Link attribute to render */\n\thref: string\n\t/** Whether to add the appended arrow decoration */\n\tdecorateExternal?: boolean\n}>()\n</script>\n\n<template>\n\t<a\n\t\t:href=\"href\"\n\t\trel=\"noopener noreferrer\"\n\t\ttarget=\"_blank\"\n\t\t:class=\"[$style.externalLink, {\n\t\t\t[$style.externalLink_decorated]: decorateExternal,\n\t\t}]\">\n\t\t<slot name=\"default\">\n\t\t\t{{ href }}\n\t\t</slot>\n\t</a>\n</template>\n\n<style module lang=\"scss\">\n.externalLink {\n\ttext-decoration: underline;\n}\n\n.externalLink_decorated::after {\n\tcontent: ' ↗';\n}\n</style>\n\n<docs>\nAn internal component\n</docs>\n","/*!\n * SPDX-FileCopyrightText: 2022 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n\nimport type { Literal } from 'unist'\n\n/**\n * Unist literal node with string value like code blocks or text nodes\n */\nexport interface TextNode extends Literal {\n\tvalue: string\n}\n\n/**\n * Regex pattern to match links to be resolved by the link-reference provider\n */\nexport const URL_PATTERN = /(\\s|^)(https?:\\/\\/)([-A-Z0-9+_.]+(?::[0-9]+)?(?:\\/[-A-Z0-9+&@#%?=~_|!:,.;()]*)*)(\\s|$)/ig\n\n/**\n * Regex pattern to identify strings as links and then making them clickable\n */\nexport const URL_PATTERN_AUTOLINK = /(\\s|\\(|^)((https?:\\/\\/)([-A-Z0-9+_.]+[-A-Z0-9]+(?::[0-9]+)?(?:\\/[-A-Z0-9+&@#%?=~_|!:,.;()]*)*))(?=\\s|\\)|$)/ig\n","/**\n * SPDX-FileCopyrightText: 2022 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n\nimport type { Node, Parent } from 'unist'\nimport type { Router } from 'vue-router'\n\nimport { getBaseUrl, getRootUrl } from '@nextcloud/router'\nimport { u } from 'unist-builder'\nimport { SKIP, visitParents } from 'unist-util-visit-parents'\nimport NcRichTextExternalLink from './NcRichTextExternalLink.vue'\nimport { logger } from '../../utils/logger.ts'\nimport { URL_PATTERN_AUTOLINK } from './helpers.js'\n\n/**\n * Remark plugin to autolink URLs in text nodes.\n *\n * @param options - Options for the plugin\n * @param options.autolink - Whether to enable autolinking of URLs\n * @param options.useMarkdown - Whether to use markdown parsing\n * @param options.useExtendedMarkdown - Whether to use extended markdown parsing\n */\nexport function remarkAutolink({ autolink, useMarkdown, useExtendedMarkdown }) {\n\treturn function(tree) {\n\t\t// remark-gfm has its own autolink parser which can not be disabled\n\t\t// and thus a local one is not needed\n\t\tif (useExtendedMarkdown || !useMarkdown || !autolink) {\n\t\t\treturn\n\t\t}\n\n\t\tvisitParents(tree, (node) => node.type === 'text', (node, ancestors: Parent[]) => {\n\t\t\t// Do not autolink text already inside a link node\n\t\t\tif (ancestors.some((ancestor) => ancestor.type === 'link' || ancestor.type === 'linkReference')) {\n\t\t\t\treturn\n\t\t\t}\n\n\t\t\tconst parent = ancestors.at(-1)\n\t\t\tconst index = parent!.children.indexOf(node) ?? 0\n\n\t\t\tconst parsed = parseUrl(node.value)\n\t\t\tconst parsedNodes: Node[] = (typeof parsed === 'string')\n\t\t\t\t? [u('text', parsed)]\n\t\t\t\t: parsed.map((n) => {\n\t\t\t\t\t\tif (typeof n === 'string') {\n\t\t\t\t\t\t\treturn u('text', n)\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\treturn u('link', {\n\t\t\t\t\t\t\turl: n.props.href,\n\t\t\t\t\t\t}, [u('text', n.props.href)])\n\t\t\t\t\t})\n\t\t\t\t\t\t.filter((x) => x)\n\t\t\t\t\t\t.flat()\n\n\t\t\tparent!.children.splice(index, 1, ...parsedNodes)\n\t\t\treturn [SKIP, index + parsedNodes.length]\n\t\t})\n\t}\n}\n\n/**\n * Parses a text and returns either an array of text nodes and link nodes or the original text if no links were found.\n *\n * @param text - The text to parse\n */\nexport function parseUrl(text: string) {\n\tlet match = URL_PATTERN_AUTOLINK.exec(text)\n\t// eslint-disable-next-line @typescript-eslint/no-explicit-any\n\tconst list: (string | Record<string, any>)[] = []\n\tlet start = 0\n\twhile (match !== null) {\n\t\tlet href = match[2]!\n\t\tlet textAfter\n\t\tlet textBefore = text.substring(start, match.index + match[1]!.length)\n\t\tif (href[0] === ' ') {\n\t\t\ttextBefore += href[0]\n\t\t\thref = href.substring(1).trim()\n\t\t}\n\t\tconst lastChar = href[(href.length - 1)]\n\t\tif (lastChar === '.' || lastChar === ',' || lastChar === ';' || (match[0][0] === '(' && lastChar === ')')) {\n\t\t\thref = href.substring(0, href.length - 1)\n\t\t\ttextAfter = lastChar\n\t\t}\n\t\tlist.push(textBefore)\n\t\tlist.push({ component: NcRichTextExternalLink, props: { href: href.trim(), decorateExternal: true } })\n\t\tif (textAfter) {\n\t\t\tlist.push(textAfter)\n\t\t}\n\t\tstart = match.index + match[0].length\n\t\tmatch = URL_PATTERN_AUTOLINK.exec(text)\n\t}\n\tlist.push(text.substring(start))\n\tconst joinedText = list.map((item) => typeof item === 'string' ? item : item.props.href).join('')\n\tif (text === joinedText) {\n\t\treturn list\n\t}\n\tlogger.error('[NcRichText] Failed to reassemble the chunked text: ' + text)\n\treturn text\n}\n\n/**\n * Try to get path for router link from an absolute or relative URL.\n *\n * @param router - VueRouter instance of the router link\n * @param url - absolute URL to parse\n * @return a path that can be used in the router link or null if this URL doesn't match this router config\n * @example http://cloud.ltd/nextcloud/index.php/apps/files/favorites?fileid=2#fragment => /files/favorites?fileid=2#fragment\n */\nexport function getRoute(router: Router | null, url: string): string | null {\n\t/**\n\t * http://cloud.ltd /nextcloud /index.php /apps/files /favorites?fileid=2#fragment\n\t * |_____origin____|___________router-base____________| |\n\t * |__________base____________| |______________relative-url______________|\n\t * | |___root___|_optional_|__app-base__|_________router-path_______|\n\t */\n\n\tconst removePrefix = (str, prefix) => str.startsWith(prefix) ? str.slice(prefix.length) : str\n\tconst removePrefixes = (str, ...prefixes) => prefixes.reduce((acc, prefix) => removePrefix(acc, prefix), str)\n\n\t// Router is not defined in the app => not an app route\n\tif (!router) {\n\t\treturn null\n\t}\n\n\tconst isAbsoluteURL = /^https?:\\/\\//.test(url)\n\n\t// URL is a \"mailto:\", \"tel:\" or any custom app protocol link\n\tconst isNonHttpLink = /^[a-z][a-z0-9+.-]*:.+/.test(url)\n\tif (!isAbsoluteURL && isNonHttpLink) {\n\t\treturn null\n\t}\n\n\t// URL is not a link to this Nextcloud server instance => not an app route\n\tif (isAbsoluteURL && !url.startsWith(getBaseUrl())) {\n\t\treturn null\n\t}\n\n\tif (!isAbsoluteURL && !url.startsWith('/')) {\n\t\t// Relative URL without a leading slash are not allowed\n\t\t// VueRouter handles such urls according to the URL RFC,\n\t\t// for example, being on /call/abc page, link \"def\" is resolved as \"/call/def\" relative to \"/call/\".\n\t\t// We don't want to support such links,\n\t\t// so relative URL MUST start with a slash.\n\t\treturn null\n\t}\n\n\t// URL relative to the instance root\n\tconst relativeUrl = isAbsoluteURL ? removePrefixes(url, getBaseUrl(), '/index.php') : url\n\n\t// Router base relative to the instance root (app-base above)\n\tconst relativeRouterBase = removePrefixes(router.options.history.base, getRootUrl(), '/index.php')\n\n\t// Root route may have an empty '' path, fallback to '/'\n\tconst potentialRouterPath = removePrefixes(relativeUrl, relativeRouterBase) || '/'\n\n\t// Check if there is actually matching route in the router for this path\n\tconst route = router.resolve(potentialRouterPath)\n\n\tif (!route.matched.length) {\n\t\treturn null\n\t}\n\n\treturn route.fullPath\n}\n"],"names":["_createElementBlock","_normalizeClass","$style","_renderSlot"],"mappings":"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"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"colors-Cv9F-jWS.mjs","sources":["../../src/utils/colors.ts"],"sourcesContent":["/**\n * SPDX-FileCopyrightText: 2019 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n\nimport { t } from '../l10n.ts'\n\nexport class Color {\n\t/**\n\t * @param r - The red value\n\t * @param g - The green value\n\t * @param b - The blue value\n\t * @param name - The name of the color\n\t */\n\tconstructor(\n\t\tpublic readonly r: number,\n\t\tpublic readonly g: number,\n\t\tpublic readonly b: number,\n\t\tpublic readonly name?: string,\n\t) {\n\t\tthis.r = Math.min(r, 255)\n\t\tthis.g = Math.min(g, 255)\n\t\tthis.b = Math.min(b, 255)\n\t\tthis.name = name\n\t}\n\n\t/**\n\t * The hexadecimal color string.\n\t */\n\tget color(): string {\n\t\tconst toHex = (int: number) => `00${int.toString(16)}`.slice(-2)\n\t\treturn `#${toHex(this.r)}${toHex(this.g)}${toHex(this.b)}`\n\t}\n}\n\n/**\n * Calculate the increment needed to blend color1 into color2 within specified number of steps.\n *\n * @param steps - The number of steps\n * @param color1 - The color to start with\n * @param color2 - The color to end at\n * @return The increment needed per color channel\n */\nfunction calculateStepIncrement(steps: number, color1: Color, color2: Color): { r: number, g: number, b: number } {\n\treturn {\n\t\tr: (color2.r - color1.r) / steps,\n\t\tg: (color2.g - color1.g) / steps,\n\t\tb: (color2.b - color1.b) / steps,\n\t}\n}\n\n/**\n * Create a color palette from two colors\n *\n * @param steps - The number of steps the palette should have\n * @param color1 - The first color to mix\n * @param color2 - The second color to mix\n * @return The created palette array (mixed `color1` and `color2` with `steps` steps)\n */\nfunction mixPalette(steps: number, color1: Color, color2: Color): Color[] {\n\tconst palette: Color[] = []\n\tpalette.push(color1)\n\tconst increment = calculateStepIncrement(steps, color1, color2)\n\tfor (let i = 1; i < steps; i++) {\n\t\tconst r = Math.floor(color1.r + increment.r * i)\n\t\tconst g = Math.floor(color1.g + increment.g * i)\n\t\tconst b = Math.floor(color1.b + increment.b * i)\n\t\tpalette.push(new Color(r, g, b))\n\t}\n\treturn palette\n}\n\n// This are our default base colors we use for mixing palettes\nconst COLOR_RED = new Color(182, 70, 157, t('Purple'))\nconst COLOR_YELLOW = new Color(221, 203, 85, t('Gold'))\nconst COLOR_BLUE = new Color(0, 130, 201, t('Nextcloud blue'))\n// Special \"none\"-colors\nexport const COLOR_BLACK = new Color(0, 0, 0, t('Black'))\nexport const COLOR_WHITE = new Color(255, 255, 255, t('White'))\n\n/**\n * Like GenColor(4) but with labels\n */\nexport const defaultPalette = [\n\tCOLOR_RED,\n\tnew Color(\n\t\t...[191, 103, 139],\n\t\tt('Rosy brown'), // TRANSLATORS: A color name for RGB(191, 103, 139)\n\t),\n\tnew Color(\n\t\t...[201, 136, 121],\n\t\tt('Feldspar'), // TRANSLATORS: A color name for RGB(201, 136, 121)\n\t),\n\tnew Color(\n\t\t...[211, 169, 103],\n\t\tt('Whiskey'), // TRANSLATORS: A color name for RGB(211, 169, 103)\n\t),\n\tCOLOR_YELLOW,\n\tnew Color(\n\t\t...[165, 184, 114],\n\t\tt('Olivine'), // TRANSLATORS: A color name for RGB(165, 184, 114)\n\t),\n\tnew Color(\n\t\t...[110, 166, 143],\n\t\tt('Acapulco'), // TRANSLATORS: A color name for RGB(110, 166, 143)\n\t),\n\tnew Color(\n\t\t...[55, 148, 172],\n\t\tt('Boston Blue'), // TRANSLATORS: A color name for RGB(55, 148, 172)\n\t),\n\tCOLOR_BLUE,\n\tnew Color(\n\t\t...[45, 115, 190],\n\t\tt('Mariner'), // TRANSLATORS: A color name for RGB(45, 115, 190)\n\t),\n\tnew Color(\n\t\t...[91, 100, 179],\n\t\tt('Blue Violet'), // TRANSLATORS: A color name for RGB(91, 100, 179)\n\t),\n\tnew Color(\n\t\t...[136, 85, 168],\n\t\tt('Deluge'), // TRANSLATORS: A color name for RGB(136, 85, 168)\n\t),\n]\n\n/**\n * Generate colors from the official nextcloud color\n * You can provide how many colors you want (multiplied by 3).\n *\n * For example if steps is set to 6, then 3 colors * 6 will result in 18 generated colors.\n *\n * @param steps - Number of steps to go from a color to another\n */\nexport function generatePalette(steps: number): Color[] {\n\tif (steps <= 0) {\n\t\tsteps = 6\n\t}\n\n\tif (steps === 4) {\n\t\treturn [...defaultPalette]\n\t}\n\n\tconst palette1 = mixPalette(steps, COLOR_RED, COLOR_YELLOW)\n\tconst palette2 = mixPalette(steps, COLOR_YELLOW, COLOR_BLUE)\n\tconst palette3 = mixPalette(steps, COLOR_BLUE, COLOR_RED)\n\n\treturn palette1.concat(palette2).concat(palette3)\n}\n"],"names":[],"mappings":"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"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"constants-Ciwvl5xb.mjs","sources":["../../src/components/NcContent/constants.ts"],"sourcesContent":["/*!\n * SPDX-FileCopyrightText: 2025 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n\nimport type { InjectionKey } from 'vue'\n\n/**\n * Injects a callback to register the app navigation to the content container.\n */\nexport const HAS_APP_NAVIGATION_KEY: InjectionKey<(hasAppNavigation: boolean) => void> = Symbol.for('NcContent:setHasAppNavigation')\n\n/**\n * Injects the main content container selector\n */\nexport const CONTENT_SELECTOR_KEY: InjectionKey<string> = Symbol.for('NcContent:selector')\n"],"names":[],"mappings":"AAAA;AAAA;AAAA;AAAA;AAUO,MAAM,yBAA4E,uBAAO,IAAI,+BAA+B;AAK5H,MAAM,uBAA6C,uBAAO,IAAI,oBAAoB;"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"constants-wIEKSp2G.mjs","sources":["../../src/composables/useIsDarkTheme/constants.ts"],"sourcesContent":["/*!\n * SPDX-FileCopyrightText: 2025 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n\nimport type { ComputedRef, InjectionKey } from 'vue'\n\n/**\n * Enforced dark / light theme state\n *\n * This is internal only.\n */\nexport const INJECTION_KEY_THEME: InjectionKey<ComputedRef<'light' | 'dark' | ''> | undefined> = Symbol.for('nc:theme:enforced')\n"],"names":[],"mappings":"AAAA;AAAA;AAAA;AAAA;AAYO,MAAM,sBAAoF,uBAAO,IAAI,mBAAmB;"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"createElementId-DhjFt1I9.mjs","sources":["../../src/utils/createElementId.ts"],"sourcesContent":["/**\n * SPDX-FileCopyrightText: 2025 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n// make sure the id is unique\nwindow._nc_vue_element_id = window._nc_vue_element_id ?? 0\n\n/**\n * Get the next element id for use with HTML / CSS\n *\n * We can not be sure that the app has a prefix setup,\n * so we can use `useId` from Vue - so we need to use our own implementation.\n */\nexport function createElementId(): string {\n\treturn `nc-vue-${window._nc_vue_element_id!++}`\n}\n"],"names":[],"mappings":"AAKA,OAAO,qBAAqB,OAAO,sBAAsB;AAQlD,SAAS,kBAA0B;AACzC,SAAO,UAAU,OAAO,oBAAqB;AAC9C;"}