@nextcloud/vue 9.0.0-alpha.4 → 9.0.0-alpha.5

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 (228) hide show
  1. package/CHANGELOG.md +24 -2
  2. package/dist/Components/NcActionButtonGroup.mjs +1 -1
  3. package/dist/Components/NcActionInput.mjs +1 -1
  4. package/dist/Components/NcActions.mjs +1 -1
  5. package/dist/Components/NcAppContent.mjs +1 -1
  6. package/dist/Components/NcAppNavigation.mjs +1 -1
  7. package/dist/Components/NcAppNavigationCaption.mjs +1 -1
  8. package/dist/Components/NcAppNavigationItem.mjs +1 -1
  9. package/dist/Components/NcAppNavigationNew.mjs +1 -1
  10. package/dist/Components/NcAppNavigationNewItem.mjs +1 -1
  11. package/dist/Components/NcAppNavigationSettings.mjs +1 -1
  12. package/dist/Components/NcAppNavigationToggle.mjs +1 -1
  13. package/dist/Components/NcAppSettingsDialog.mjs +1 -1
  14. package/dist/Components/NcAppSettingsSection.mjs +1 -1
  15. package/dist/Components/NcAppSidebar.mjs +1 -1
  16. package/dist/Components/NcAvatar.mjs +1 -1
  17. package/dist/Components/NcBreadcrumb.mjs +1 -1
  18. package/dist/Components/NcBreadcrumbs.mjs +1 -1
  19. package/dist/Components/NcButton.mjs +4 -1
  20. package/dist/Components/NcCheckboxRadioSwitch.mjs +1 -1
  21. package/dist/Components/NcChip.mjs +1 -1
  22. package/dist/Components/NcCollectionList.mjs +4 -0
  23. package/dist/Components/NcCollectionList.mjs.map +1 -0
  24. package/dist/Components/NcColorPicker.mjs +1 -1
  25. package/dist/Components/NcContent.mjs +1 -1
  26. package/dist/Components/NcDashboardWidget.mjs +1 -1
  27. package/dist/Components/NcDashboardWidgetItem.mjs +1 -1
  28. package/dist/Components/NcDateTime.mjs +1 -1
  29. package/dist/Components/NcDateTimePicker.mjs +1 -1
  30. package/dist/Components/NcDateTimePickerNative.mjs +1 -1
  31. package/dist/Components/NcDialog.mjs +1 -1
  32. package/dist/Components/NcDialogButton.mjs +1 -1
  33. package/dist/Components/NcEmojiPicker.mjs +1 -1
  34. package/dist/Components/NcHeaderMenu.mjs +1 -1
  35. package/dist/Components/NcInputField.mjs +1 -1
  36. package/dist/Components/NcListItem.mjs +1 -1
  37. package/dist/Components/NcListItemIcon.mjs +1 -1
  38. package/dist/Components/NcModal.mjs +29 -12
  39. package/dist/Components/NcModal.mjs.map +1 -1
  40. package/dist/Components/NcPasswordField.mjs +1 -1
  41. package/dist/Components/NcRelatedResourcesPanel.mjs +1 -1
  42. package/dist/Components/NcRichContenteditable.mjs +2 -2
  43. package/dist/Components/NcRichText.mjs +3 -3
  44. package/dist/Components/NcSelect.mjs +1 -1
  45. package/dist/Components/NcSelectTags.mjs +1 -1
  46. package/dist/Components/NcSettingsInputText.mjs +1 -1
  47. package/dist/Components/NcSettingsSection.mjs +1 -1
  48. package/dist/Components/NcSettingsSelectGroup.mjs +1 -1
  49. package/dist/Components/NcTextField.mjs +1 -1
  50. package/dist/Components/NcTimezonePicker.mjs +1 -1
  51. package/dist/Components/NcUserBubble.mjs +1 -1
  52. package/dist/Components/NcUserStatusIcon.mjs +1 -1
  53. package/dist/Functions/reference.mjs +1 -1
  54. package/dist/Functions/usernameToColor.mjs +1 -1
  55. package/dist/Mixins/richEditor.mjs +1 -1
  56. package/dist/assets/{NcAppNavigationCaption-NPhURS5E.css → NcAppNavigationCaption-CWeMjjhD.css} +7 -7
  57. package/dist/assets/{NcAppNavigationSettings-Cyn2gy0W.css → NcAppNavigationSettings-TYqL_3Eu.css} +13 -13
  58. package/dist/assets/{NcAppSettingsSection-CcRbdcD-.css → NcAppSettingsSection-C_QldGnW.css} +3 -3
  59. package/dist/assets/{NcAppSidebar-CxMCtTtn.css → NcAppSidebar-B7CgUHLX.css} +57 -57
  60. package/dist/assets/NcButton-B62D9Gft.css +210 -0
  61. package/dist/assets/{NcCheckboxRadioSwitch-By6afmQ3.css → NcCheckboxRadioSwitch-ChIIElUW.css} +31 -31
  62. package/dist/assets/NcCollectionList-BT2L4guq.css +221 -0
  63. package/dist/assets/{NcDateTimePicker-BLEg7GJo.css → NcDateTimePicker-DHWLpzCH.css} +7 -7
  64. package/dist/assets/{NcDialog-BmN7gR6_.css → NcDialog-DXX2MKxJ.css} +15 -15
  65. package/dist/assets/{NcHeaderMenu-C-0GR7Si.css → NcHeaderMenu-Cb5YSERm.css} +11 -11
  66. package/dist/assets/{NcInputField-DXzhRkiY.css → NcInputField-CZnSCalG.css} +34 -34
  67. package/dist/assets/{NcMentionBubble-B-xYaJDc.css → NcMentionBubble-C6t8od-_.css} +13 -10
  68. package/dist/assets/{NcModal-B5iEU9Qr.css → NcModal-Cr_CG7O3.css} +60 -60
  69. package/dist/assets/{NcRichContenteditable-B_YH-89_.css → NcRichContenteditable-Cf8PvtvB.css} +10 -10
  70. package/dist/assets/{NcRichText-yqgOn353.css → NcRichText-yXgN8zvG.css} +53 -53
  71. package/dist/assets/{NcUserStatusIcon-D9N1ER72.css → NcUserStatusIcon-FLA1tQpD.css} +3 -3
  72. package/dist/assets/{referencePickerModal-DeIfdfau.css → referencePickerModal-G4uFPuyg.css} +18 -18
  73. package/dist/chunks/{GenColors-BidEIqUL.mjs → GenColors-AKX06ocD.mjs} +1 -1
  74. package/dist/chunks/{GenColors-BidEIqUL.mjs.map → GenColors-AKX06ocD.mjs.map} +1 -1
  75. package/dist/chunks/{NcActionButtonGroup-BeQ4mLmQ.mjs → NcActionButtonGroup-QSxR0BLf.mjs} +1 -1
  76. package/dist/chunks/{NcActionButtonGroup-BeQ4mLmQ.mjs.map → NcActionButtonGroup-QSxR0BLf.mjs.map} +1 -1
  77. package/dist/chunks/{NcActionInput-DCe8K_gs.mjs → NcActionInput-DY8dxchc.mjs} +7 -7
  78. package/dist/chunks/{NcActionInput-DCe8K_gs.mjs.map → NcActionInput-DY8dxchc.mjs.map} +1 -1
  79. package/dist/chunks/{NcActions-COaRMDe5.mjs → NcActions-DqMOvrbN.mjs} +2 -2
  80. package/dist/chunks/{NcActions-COaRMDe5.mjs.map → NcActions-DqMOvrbN.mjs.map} +1 -1
  81. package/dist/chunks/{NcAppContent-D2in9bd7.mjs → NcAppContent-xtfi9kNO.mjs} +3 -3
  82. package/dist/chunks/{NcAppContent-D2in9bd7.mjs.map → NcAppContent-xtfi9kNO.mjs.map} +1 -1
  83. package/dist/chunks/{NcAppNavigation-Dz1n-CeR.mjs → NcAppNavigation-C9Ku9eb2.mjs} +1 -1
  84. package/dist/chunks/{NcAppNavigation-Dz1n-CeR.mjs.map → NcAppNavigation-C9Ku9eb2.mjs.map} +1 -1
  85. package/dist/chunks/{NcAppNavigationCaption-6odGo1iM.mjs → NcAppNavigationCaption-BysnsczC.mjs} +10 -6
  86. package/dist/chunks/NcAppNavigationCaption-BysnsczC.mjs.map +1 -0
  87. package/dist/chunks/{NcAppNavigationItem-BHtzDfb2.mjs → NcAppNavigationItem--znMc-4G.mjs} +6 -6
  88. package/dist/chunks/{NcAppNavigationItem-BHtzDfb2.mjs.map → NcAppNavigationItem--znMc-4G.mjs.map} +1 -1
  89. package/dist/chunks/{NcAppNavigationNew-CRonFKWJ.mjs → NcAppNavigationNew-xPVyvfza.mjs} +1 -1
  90. package/dist/chunks/{NcAppNavigationNew-CRonFKWJ.mjs.map → NcAppNavigationNew-xPVyvfza.mjs.map} +1 -1
  91. package/dist/chunks/{NcAppNavigationNewItem-Ctbp1kb-.mjs → NcAppNavigationNewItem-DS1hIl6W.mjs} +1 -1
  92. package/dist/chunks/{NcAppNavigationNewItem-Ctbp1kb-.mjs.map → NcAppNavigationNewItem-DS1hIl6W.mjs.map} +1 -1
  93. package/dist/chunks/{NcAppNavigationSettings-ynYeFb6Z.mjs → NcAppNavigationSettings-CekHqqk0.mjs} +5 -5
  94. package/dist/chunks/{NcAppNavigationSettings-ynYeFb6Z.mjs.map → NcAppNavigationSettings-CekHqqk0.mjs.map} +1 -1
  95. package/dist/chunks/{NcAppNavigationToggle-DYG8u5dW.mjs → NcAppNavigationToggle-DfX9dazn.mjs} +3 -3
  96. package/dist/chunks/{NcAppNavigationToggle-DYG8u5dW.mjs.map → NcAppNavigationToggle-DfX9dazn.mjs.map} +1 -1
  97. package/dist/chunks/{NcAppSettingsDialog-CjpGb_I4.mjs → NcAppSettingsDialog-ChTLtlsE.mjs} +3 -3
  98. package/dist/chunks/{NcAppSettingsDialog-CjpGb_I4.mjs.map → NcAppSettingsDialog-ChTLtlsE.mjs.map} +1 -1
  99. package/dist/chunks/{NcAppSettingsSection-a7OfJ9GT.mjs → NcAppSettingsSection-CJff2xNR.mjs} +10 -6
  100. package/dist/chunks/NcAppSettingsSection-CJff2xNR.mjs.map +1 -0
  101. package/dist/chunks/{NcAppSidebar-BGCuCKk_.mjs → NcAppSidebar-C9frc6kG.mjs} +28 -10
  102. package/dist/chunks/NcAppSidebar-C9frc6kG.mjs.map +1 -0
  103. package/dist/chunks/{NcAvatar-OjWzLdGK.mjs → NcAvatar-BjooMt8H.mjs} +7 -7
  104. package/dist/chunks/{NcAvatar-OjWzLdGK.mjs.map → NcAvatar-BjooMt8H.mjs.map} +1 -1
  105. package/dist/chunks/{NcBreadcrumb-Df7Nn5jU.mjs → NcBreadcrumb-Btbcn1IT.mjs} +2 -2
  106. package/dist/chunks/{NcBreadcrumb-Df7Nn5jU.mjs.map → NcBreadcrumb-Btbcn1IT.mjs.map} +1 -1
  107. package/dist/chunks/{NcBreadcrumbs-CighY87i.mjs → NcBreadcrumbs-BFR0zNov.mjs} +3 -3
  108. package/dist/chunks/{NcBreadcrumbs-CighY87i.mjs.map → NcBreadcrumbs-BFR0zNov.mjs.map} +1 -1
  109. package/dist/chunks/{NcButton-DvO0XwJf.mjs → NcButton-Bhuckhtj.mjs} +53 -14
  110. package/dist/chunks/NcButton-Bhuckhtj.mjs.map +1 -0
  111. package/dist/chunks/{NcCheckboxRadioSwitch-BW7W0ToW.mjs → NcCheckboxRadioSwitch-fsQs5UG3.mjs} +46 -28
  112. package/dist/chunks/NcCheckboxRadioSwitch-fsQs5UG3.mjs.map +1 -0
  113. package/dist/chunks/NcCheckboxRadioSwitch.vue_vue_type_style_index_0_scoped_266d05fb_lang-8iSIJ9Oz.mjs +3 -0
  114. package/dist/chunks/NcCheckboxRadioSwitch.vue_vue_type_style_index_0_scoped_266d05fb_lang-8iSIJ9Oz.mjs.map +1 -0
  115. package/dist/chunks/{NcChip-Crkkyllt.mjs → NcChip-Z436j_vb.mjs} +2 -2
  116. package/dist/chunks/{NcChip-Crkkyllt.mjs.map → NcChip-Z436j_vb.mjs.map} +1 -1
  117. package/dist/chunks/NcCollectionList-B8r2GWp5.mjs +589 -0
  118. package/dist/chunks/NcCollectionList-B8r2GWp5.mjs.map +1 -0
  119. package/dist/chunks/{NcColorPicker-Bq2-21Np.mjs → NcColorPicker-ChOP5UKN.mjs} +3 -3
  120. package/dist/chunks/{NcColorPicker-Bq2-21Np.mjs.map → NcColorPicker-ChOP5UKN.mjs.map} +1 -1
  121. package/dist/chunks/{NcContent-WcbDFG2f.mjs → NcContent-BTRh5byh.mjs} +3 -3
  122. package/dist/chunks/{NcContent-WcbDFG2f.mjs.map → NcContent-BTRh5byh.mjs.map} +1 -1
  123. package/dist/chunks/{NcDashboardWidget-xBpqAct1.mjs → NcDashboardWidget-CyEJLxAR.mjs} +4 -4
  124. package/dist/chunks/{NcDashboardWidget-xBpqAct1.mjs.map → NcDashboardWidget-CyEJLxAR.mjs.map} +1 -1
  125. package/dist/chunks/{NcDashboardWidgetItem-BwemNzvL.mjs → NcDashboardWidgetItem-DfP6DwdF.mjs} +2 -2
  126. package/dist/chunks/{NcDashboardWidgetItem-BwemNzvL.mjs.map → NcDashboardWidgetItem-DfP6DwdF.mjs.map} +1 -1
  127. package/dist/chunks/{NcDateTime-BVQqC6rO.mjs → NcDateTime-DX34z7Lo.mjs} +1 -1
  128. package/dist/chunks/{NcDateTime-BVQqC6rO.mjs.map → NcDateTime-DX34z7Lo.mjs.map} +1 -1
  129. package/dist/chunks/{NcDateTimePicker-CjuFbS-2.mjs → NcDateTimePicker-D9gDwRl4.mjs} +5 -5
  130. package/dist/chunks/{NcDateTimePicker-CjuFbS-2.mjs.map → NcDateTimePicker-D9gDwRl4.mjs.map} +1 -1
  131. package/dist/chunks/{NcDateTimePickerNative-DwJ_yIEg.mjs → NcDateTimePickerNative-d04KsMAl.mjs} +1 -1
  132. package/dist/chunks/{NcDateTimePickerNative-DwJ_yIEg.mjs.map → NcDateTimePickerNative-d04KsMAl.mjs.map} +1 -1
  133. package/dist/chunks/{NcDialog-CE2gyz2g.mjs → NcDialog-D5IAHMrC.mjs} +12 -8
  134. package/dist/chunks/NcDialog-D5IAHMrC.mjs.map +1 -0
  135. package/dist/chunks/{NcDialogButton-DAb0CNtg.mjs → NcDialogButton-BkFODtad.mjs} +5 -3
  136. package/dist/chunks/NcDialogButton-BkFODtad.mjs.map +1 -0
  137. package/dist/chunks/{NcEmojiPicker-DNbUUyLY.mjs → NcEmojiPicker-Dtc8dnSp.mjs} +6 -6
  138. package/dist/chunks/{NcEmojiPicker-DNbUUyLY.mjs.map → NcEmojiPicker-Dtc8dnSp.mjs.map} +1 -1
  139. package/dist/chunks/{NcHeaderMenu-CIWkk8T1.mjs → NcHeaderMenu-CKynqFZZ.mjs} +5 -4
  140. package/dist/chunks/NcHeaderMenu-CKynqFZZ.mjs.map +1 -0
  141. package/dist/chunks/{NcInputConfirmCancel-Cwh6_J6A.mjs → NcInputConfirmCancel-DkOh9UP_.mjs} +3 -3
  142. package/dist/chunks/{NcInputConfirmCancel-Cwh6_J6A.mjs.map → NcInputConfirmCancel-DkOh9UP_.mjs.map} +1 -1
  143. package/dist/chunks/{NcInputField-BrAvsgA4.mjs → NcInputField-hpiI0X9L.mjs} +3 -3
  144. package/dist/chunks/{NcInputField-BrAvsgA4.mjs.map → NcInputField-hpiI0X9L.mjs.map} +1 -1
  145. package/dist/chunks/{NcListItem-D3yyUn7h.mjs → NcListItem-DX-yKrou.mjs} +2 -2
  146. package/dist/chunks/{NcListItem-D3yyUn7h.mjs.map → NcListItem-DX-yKrou.mjs.map} +1 -1
  147. package/dist/chunks/{NcListItemIcon-B06oTqsI.mjs → NcListItemIcon-Bgd2w_Ug.mjs} +2 -2
  148. package/dist/chunks/{NcListItemIcon-B06oTqsI.mjs.map → NcListItemIcon-Bgd2w_Ug.mjs.map} +1 -1
  149. package/dist/chunks/{NcPasswordField-CaRDsoPg.mjs → NcPasswordField-Vfr9wcwj.mjs} +3 -3
  150. package/dist/chunks/{NcPasswordField-CaRDsoPg.mjs.map → NcPasswordField-Vfr9wcwj.mjs.map} +1 -1
  151. package/dist/chunks/{NcRelatedResourcesPanel-Bg_z2tZT.mjs → NcRelatedResourcesPanel-DXQ9WHF5.mjs} +5 -5
  152. package/dist/chunks/{NcRelatedResourcesPanel-Bg_z2tZT.mjs.map → NcRelatedResourcesPanel-DXQ9WHF5.mjs.map} +1 -1
  153. package/dist/chunks/{NcRichContenteditable-Cx8Fv6sx.mjs → NcRichContenteditable-Bf9Kg4hl.mjs} +13 -12
  154. package/dist/chunks/{NcRichContenteditable-Cx8Fv6sx.mjs.map → NcRichContenteditable-Bf9Kg4hl.mjs.map} +1 -1
  155. package/dist/chunks/{NcRichText-2N_x-ark.mjs → NcRichText-COi8Ex6O.mjs} +4 -4
  156. package/dist/chunks/NcRichText-COi8Ex6O.mjs.map +1 -0
  157. package/dist/chunks/{NcSelect-CPlvJjcY.mjs → NcSelect-uOkQ9CdB.mjs} +3 -3
  158. package/dist/chunks/{NcSelect-CPlvJjcY.mjs.map → NcSelect-uOkQ9CdB.mjs.map} +1 -1
  159. package/dist/chunks/{NcSelectTags-Hpq3uQ0b.mjs → NcSelectTags-1hIEJsvj.mjs} +2 -2
  160. package/dist/chunks/{NcSelectTags-Hpq3uQ0b.mjs.map → NcSelectTags-1hIEJsvj.mjs.map} +1 -1
  161. package/dist/chunks/{NcSettingsInputText-oIYmufF3.mjs → NcSettingsInputText-DO40BQ3B.mjs} +2 -2
  162. package/dist/chunks/{NcSettingsInputText-oIYmufF3.mjs.map → NcSettingsInputText-DO40BQ3B.mjs.map} +1 -1
  163. package/dist/chunks/{NcSettingsSection-CMw4W_UL.mjs → NcSettingsSection-BDI1fNYG.mjs} +2 -2
  164. package/dist/chunks/{NcSettingsSection-CMw4W_UL.mjs.map → NcSettingsSection-BDI1fNYG.mjs.map} +1 -1
  165. package/dist/chunks/{NcSettingsSelectGroup-BTVYUUsQ.mjs → NcSettingsSelectGroup-OQVMB2G-.mjs} +3 -3
  166. package/dist/chunks/{NcSettingsSelectGroup-BTVYUUsQ.mjs.map → NcSettingsSelectGroup-OQVMB2G-.mjs.map} +1 -1
  167. package/dist/chunks/{NcTextField-W5cVvjob.mjs → NcTextField-DctsarIL.mjs} +3 -3
  168. package/dist/chunks/{NcTextField-W5cVvjob.mjs.map → NcTextField-DctsarIL.mjs.map} +1 -1
  169. package/dist/chunks/{NcTimezonePicker-DQ7LMeQo.mjs → NcTimezonePicker-CGW5Q2gI.mjs} +4 -4
  170. package/dist/chunks/{NcTimezonePicker-DQ7LMeQo.mjs.map → NcTimezonePicker-CGW5Q2gI.mjs.map} +1 -1
  171. package/dist/chunks/{NcUserBubble-DrQahQl0.mjs → NcUserBubble-CsVyJK3C.mjs} +1 -1
  172. package/dist/chunks/{NcUserBubble-DrQahQl0.mjs.map → NcUserBubble-CsVyJK3C.mjs.map} +1 -1
  173. package/dist/chunks/{NcUserStatusIcon-CA3yJfmu.mjs → NcUserStatusIcon-CLYI768S.mjs} +6 -11
  174. package/dist/chunks/NcUserStatusIcon-CLYI768S.mjs.map +1 -0
  175. package/dist/chunks/{ScopeComponent-C5tGtO7l.mjs → ScopeComponent-59SnWk9S.mjs} +1 -1
  176. package/dist/chunks/{ScopeComponent-C5tGtO7l.mjs.map → ScopeComponent-59SnWk9S.mjs.map} +1 -1
  177. package/dist/chunks/_l10n-6dsjYig_.mjs +126 -0
  178. package/dist/chunks/_l10n-6dsjYig_.mjs.map +1 -0
  179. package/dist/chunks/{index-BKkaCvJ0.mjs → index-CyNq54HS.mjs} +2 -2
  180. package/dist/chunks/index-CyNq54HS.mjs.map +1 -0
  181. package/dist/chunks/{referencePickerModal-Cho5o36L.mjs → referencePickerModal-BwzqUWFA.mjs} +14 -14
  182. package/dist/chunks/referencePickerModal-BwzqUWFA.mjs.map +1 -0
  183. package/dist/chunks/{usernameToColor-4ci35wWd.mjs → usernameToColor-CEyHwgy-.mjs} +1 -1
  184. package/dist/chunks/{usernameToColor-4ci35wWd.mjs.map → usernameToColor-CEyHwgy-.mjs.map} +1 -1
  185. package/dist/components/NcActions/NcActions.vue.d.ts +1 -1
  186. package/dist/components/NcAppNavigationCaption/NcAppNavigationCaption.vue.d.ts +5 -68
  187. package/dist/components/NcAppNavigationItem/NcAppNavigationItem.vue.d.ts +1 -1
  188. package/dist/components/NcAppSidebar/NcAppSidebar.vue.d.ts +15 -0
  189. package/dist/components/NcAppSidebar/NcAppSidebarTabs.vue.d.ts +16 -0
  190. package/dist/components/NcAvatar/NcAvatar.vue.d.ts +1 -1
  191. package/dist/components/NcButton/NcButton.vue.d.ts +44 -25
  192. package/dist/components/NcButton/index.d.ts +1 -0
  193. package/dist/components/NcButton/types.d.ts +30 -0
  194. package/dist/components/NcCollectionList/NcCollectionList.vue.d.ts +126 -0
  195. package/dist/components/NcCollectionList/NcCollectionListItem.vue.d.ts +50 -0
  196. package/dist/components/NcCollectionList/index.d.ts +1 -0
  197. package/dist/components/NcCollectionList/service.d.ts +47 -0
  198. package/dist/components/NcCollectionList/useCollections.d.ts +31 -0
  199. package/dist/components/NcDialog/NcDialog.vue.d.ts +359 -1
  200. package/dist/components/NcDialogButton/NcDialogButton.vue.d.ts +94 -1
  201. package/dist/components/NcDialogButton/index.d.ts +4 -0
  202. package/dist/components/NcListItemIcon/NcListItemIcon.vue.d.ts +1 -1
  203. package/dist/components/NcRelatedResourcesPanel/NcRelatedResourcesPanel.vue.d.ts +1 -1
  204. package/dist/components/NcRichContenteditable/NcAutoCompleteResult.vue.d.ts +1 -1
  205. package/dist/components/NcSavingIndicatorIcon/NcSavingIndicatorIcon.vue.d.ts +1 -1
  206. package/dist/components/NcUserBubble/NcUserBubble.vue.d.ts +2 -2
  207. package/dist/components/index.d.ts +1 -0
  208. package/dist/index.mjs +56 -53
  209. package/dist/index.mjs.map +1 -1
  210. package/dist/utils/VueTypes.d.ts +3 -0
  211. package/package.json +4 -3
  212. package/dist/assets/NcButton-D3_Qd5cl.css +0 -191
  213. package/dist/chunks/NcAppNavigationCaption-6odGo1iM.mjs.map +0 -1
  214. package/dist/chunks/NcAppSettingsSection-a7OfJ9GT.mjs.map +0 -1
  215. package/dist/chunks/NcAppSidebar-BGCuCKk_.mjs.map +0 -1
  216. package/dist/chunks/NcButton-DvO0XwJf.mjs.map +0 -1
  217. package/dist/chunks/NcCheckboxRadioSwitch-BW7W0ToW.mjs.map +0 -1
  218. package/dist/chunks/NcCheckboxRadioSwitch.vue_vue_type_style_index_0_scoped_959f6f1b_lang-C0H-ioQZ.mjs +0 -3
  219. package/dist/chunks/NcCheckboxRadioSwitch.vue_vue_type_style_index_0_scoped_959f6f1b_lang-C0H-ioQZ.mjs.map +0 -1
  220. package/dist/chunks/NcDialog-CE2gyz2g.mjs.map +0 -1
  221. package/dist/chunks/NcDialogButton-DAb0CNtg.mjs.map +0 -1
  222. package/dist/chunks/NcHeaderMenu-CIWkk8T1.mjs.map +0 -1
  223. package/dist/chunks/NcRichText-2N_x-ark.mjs.map +0 -1
  224. package/dist/chunks/NcUserStatusIcon-CA3yJfmu.mjs.map +0 -1
  225. package/dist/chunks/_l10n-C3nxU4O-.mjs +0 -122
  226. package/dist/chunks/_l10n-C3nxU4O-.mjs.map +0 -1
  227. package/dist/chunks/index-BKkaCvJ0.mjs.map +0 -1
  228. package/dist/chunks/referencePickerModal-Cho5o36L.mjs.map +0 -1
@@ -0,0 +1 @@
1
+ {"version":3,"file":"_l10n-6dsjYig_.mjs","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
@@ -1,4 +1,4 @@
1
- import '../assets/NcMentionBubble-B-xYaJDc.css';
1
+ import '../assets/NcMentionBubble-C6t8od-_.css';
2
2
  import { g as getAvatarUrl } from "./getAvatarUrl-DxvUjKMi.mjs";
3
3
  import { openBlock, createElementBlock, normalizeClass, createElementVNode, normalizeStyle, toDisplayString, createApp } from "vue";
4
4
  /* empty css */
@@ -90,7 +90,7 @@ function _sfc_render(_ctx, _cache, $props, $setup, $data, $options) {
90
90
  ])
91
91
  ], 2);
92
92
  }
93
- const NcMentionBubble = /* @__PURE__ */ _export_sfc(_sfc_main, [["render", _sfc_render], ["__scopeId", "data-v-259d4f72"]]);
93
+ const NcMentionBubble = /* @__PURE__ */ _export_sfc(_sfc_main, [["render", _sfc_render], ["__scopeId", "data-v-a519576f"]]);
94
94
  const MENTION_START = new RegExp("\\B(?<![^a-z0-9_\\-@.'\\s])").source;
95
95
  const MENTION_SIMPLE = /(@[a-z0-9_\-@.']+)/.source;
96
96
  const MENTION_GUEST = /@&quot;guest\/[a-f0-9]+&quot;/.source;
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index-CyNq54HS.mjs","sources":["../../src/components/NcRichContenteditable/NcMentionBubble.vue","../../src/mixins/richEditor/index.js"],"sourcesContent":["<!--\n - SPDX-FileCopyrightText: 2020 Nextcloud GmbH and Nextcloud contributors\n - SPDX-License-Identifier: AGPL-3.0-or-later\n-->\n\n<template>\n\t<span :class=\"{'mention-bubble--primary': primary}\"\n\t\tclass=\"mention-bubble\"\n\t\tcontenteditable=\"false\">\n\t\t<span class=\"mention-bubble__wrapper\">\n\t\t\t<span class=\"mention-bubble__content\">\n\t\t\t\t<!-- Avatar or icon -->\n\t\t\t\t<span :class=\"[icon, `mention-bubble__icon--${avatarUrl ? 'with-avatar' : ''}`]\"\n\t\t\t\t\t:style=\"avatarUrl ? { backgroundImage: `url(${avatarUrl})` } : null\"\n\t\t\t\t\tclass=\"mention-bubble__icon\" />\n\n\t\t\t\t<!-- Title -->\n\t\t\t\t<span role=\"heading\" class=\"mention-bubble__title\" :title=\"labelWithFallback\" />\n\t\t\t</span>\n\n\t\t\t<!-- Selectable text for copy/paste -->\n\t\t\t<span role=\"none\" class=\"mention-bubble__select\">{{ mentionText }}</span>\n\t\t</span>\n\t</span>\n</template>\n\n<script>\nimport { getAvatarUrl } from '../../utils/getAvatarUrl.ts'\n\nexport default {\n\tname: 'NcMentionBubble',\n\n\tprops: {\n\t\tid: {\n\t\t\ttype: String,\n\t\t\trequired: true,\n\t\t},\n\t\t/**\n\t\t * @deprecated Use `label` instead\n\t\t */\n\t\ttitle: {\n\t\t\ttype: String,\n\t\t\trequired: false,\n\t\t\tdefault: null,\n\t\t},\n\t\tlabel: {\n\t\t\ttype: String,\n\t\t\trequired: false,\n\t\t\tdefault: null,\n\t\t},\n\t\ticon: {\n\t\t\ttype: String,\n\t\t\trequired: true,\n\t\t},\n\t\ticonUrl: {\n\t\t\ttype: [String, null],\n\t\t\tdefault: null,\n\t\t},\n\t\tsource: {\n\t\t\ttype: String,\n\t\t\trequired: true,\n\t\t},\n\t\tprimary: {\n\t\t\ttype: Boolean,\n\t\t\tdefault: false,\n\t\t},\n\t},\n\tcomputed: {\n\t\tavatarUrl() {\n\t\t\tif (this.iconUrl) {\n\t\t\t\treturn this.iconUrl\n\t\t\t}\n\n\t\t\treturn this.id && this.source === 'users'\n\t\t\t\t? this.getAvatarUrl(this.id, 44)\n\t\t\t\t: null\n\t\t},\n\t\tmentionText() {\n\t\t\treturn !this.id.includes(' ') && !this.id.includes('/')\n\t\t\t\t? `@${this.id}`\n\t\t\t\t: `@\"${this.id}\"`\n\t\t},\n\t\t// Fallback to title for compatibility\n\t\tlabelWithFallback() {\n\t\t\treturn this.label || this.title\n\t\t},\n\t},\n\n\tmethods: {\n\t\tgetAvatarUrl,\n\t},\n}\n</script>\n\n<style lang=\"scss\" scoped>\n$bubble-height: 20px;\n$bubble-max-width: 150px;\n$bubble-padding: 2px;\n$bubble-avatar-size: $bubble-height - 2 * $bubble-padding;\n\n.mention-bubble {\n\t&--primary &__content {\n\t\tcolor: var(--color-primary-element-text);\n\t\tbackground-color: var(--color-primary-element);\n\t}\n\n\t&__wrapper {\n\t\tmax-width: $bubble-max-width;\n\t\t// Align with text\n\t\theight: $bubble-height - $bubble-padding;\n\t\tvertical-align: text-bottom;\n\t\tdisplay: inline-flex;\n\t\talign-items: center;\n\t}\n\n\t&__content {\n\t\tdisplay: inline-flex;\n\t\toverflow: hidden;\n\t\talign-items: center;\n\t\tmax-width: 100%;\n\t\theight: $bubble-height ;\n\t\t-webkit-user-select: none;\n\t\tuser-select: none;\n\t\tpadding-right: $bubble-padding * 3;\n\t\tpadding-left: $bubble-padding;\n\t\tborder-radius: math.div($bubble-height, 2);\n\t\tbackground-color: var(--color-background-dark);\n\t}\n\n\t&__icon {\n\t\tposition: relative;\n\t\twidth: $bubble-avatar-size;\n\t\theight: $bubble-avatar-size;\n\t\tborder-radius: math.div($bubble-avatar-size, 2);\n\t\tbackground-color: var(--color-background-darker);\n\t\tbackground-repeat: no-repeat;\n\t\tbackground-position: center;\n\t\tbackground-size: $bubble-avatar-size - 2 * $bubble-padding;\n\n\t\t&--with-avatar {\n\t\t\tcolor: inherit;\n\t\t\tbackground-size: cover;\n\t\t}\n\t}\n\n\t&__title {\n\t\toverflow: hidden;\n\t\tmargin-left: $bubble-padding;\n\t\twhite-space: nowrap;\n\t\ttext-overflow: ellipsis;\n\t\t// Put title in ::before so it is not selectable\n\t\t&::before {\n\t\t\tcontent: attr(title);\n\t\t}\n\t}\n\n\t// Hide the mention id so it is selectable\n\t&__select {\n\t\tposition: absolute;\n\t\tz-index: -1;\n\t\tleft: -100vw;\n\t\twidth: 1px;\n\t\theight: 1px;\n\t\toverflow: hidden;\n\t}\n}\n\n</style>\n","/**\n * SPDX-FileCopyrightText: 2020 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n\nimport NcMentionBubble from '../../components/NcRichContenteditable/NcMentionBubble.vue'\nimport Linkify from '../../utils/Linkify.js'\n\nimport escapeHtml from 'escape-html'\nimport stripTags from 'striptags'\nimport { createApp } from 'vue'\n\n// Referenced from public function getMentions(): https://github.com/nextcloud/server/blob/master/lib/private/Comments/Comment.php\n// Beginning or whitespace. Non-capturing group within word boundary\nconst MENTION_START = /\\B(?<![^a-z0-9_\\-@.'\\s])/.source\n// Capturing groups like: @user-id, @\"guest/abc16def\", @\"federated_user/user-id\", @\"user-id with space\"\nconst MENTION_SIMPLE = /(@[a-z0-9_\\-@.']+)/.source\nconst MENTION_GUEST = /@&quot;guest\\/[a-f0-9]+&quot;/.source\nconst MENTION_PREFIXED = /@&quot;(?:federated_)?(?:group|team|user){1}\\/[a-z0-9_\\-@.' /:]+&quot;/.source\nconst MENTION_WITH_SPACE = /@&quot;[a-z0-9_\\-@.' ]+&quot;/.source\nconst MENTION_COMPLEX = `(${MENTION_GUEST}|${MENTION_PREFIXED}|${MENTION_WITH_SPACE})`\n// Concatenated regular expressions\nexport const USERID_REGEX = new RegExp(`${MENTION_START}${MENTION_SIMPLE}`, 'gi')\nexport const USERID_REGEX_WITH_SPACE = new RegExp(`${MENTION_START}${MENTION_COMPLEX}`, 'gi')\n\nexport default {\n\tprops: {\n\t\tuserData: {\n\t\t\ttype: Object,\n\t\t\tdefault: () => ({}),\n\t\t},\n\t},\n\tmethods: {\n\t\t/**\n\t\t * Convert the value string to html for the inner content\n\t\t *\n\t\t * @param {string} value the content without html\n\t\t * @return {string} rendered html\n\t\t */\n\t\trenderContent(value) {\n\t\t\t// Sanitize the value prop\n\t\t\tconst sanitizedValue = escapeHtml(value)\n\n\t\t\t// Extract all the userIds\n\t\t\tconst splitValue = sanitizedValue.split(USERID_REGEX)\n\t\t\t\t.map(part => part.split(USERID_REGEX_WITH_SPACE)).flat()\n\n\t\t\t// Replace userIds by html\n\t\t\treturn splitValue\n\t\t\t\t.map(part => {\n\t\t\t\t\t// When splitting, the string is always putting the userIds\n\t\t\t\t\t// on the uneven indexes. We only want to generate the mentions html\n\t\t\t\t\tif (!part.startsWith('@')) {\n\t\t\t\t\t\t// This part doesn't contain a mention, let's make sure links are parsed\n\t\t\t\t\t\treturn Linkify(part)\n\t\t\t\t\t}\n\n\t\t\t\t\t// Extracting the id, nuking the leading @ and all \"\n\t\t\t\t\tconst id = part.slice(1).replace(/&quot;/gi, '')\n\t\t\t\t\t// Compiling template and prepend with the space we removed during the split\n\t\t\t\t\treturn this.genSelectTemplate(id)\n\t\t\t\t})\n\t\t\t\t.join('')\n\t\t\t\t.replace(/\\n/gmi, '<br>')\n\t\t\t\t.replace(/&amp;/gmi, '&')\n\t\t},\n\n\t\t/**\n\t\t * Convert the innerHtml content to a string with mentions as text\n\t\t *\n\t\t * @param {string} content the content without html\n\t\t * @return {string}\n\t\t */\n\t\tparseContent(content) {\n\t\t\tlet text = content\n\t\t\t// Consecutive spaces in HTML tags should collapse\n\t\t\ttext = text.replace(/>\\s+</g, '><')\n\t\t\t// Replace break lines with new lines\n\t\t\ttext = text.replace(/<br>/gmi, '\\n')\n\t\t\t// Replace some html special characters\n\t\t\ttext = text.replace(/&nbsp;/gmi, ' ')\n\t\t\ttext = text.replace(/&amp;/gmi, '&')\n\n\t\t\t// Convert the mentions to text only\n\t\t\t// first we replace divs with new lines\n\t\t\ttext = text.replace(/<\\/div>/gmi, '\\n')\n\t\t\t// then we remove all leftover html\n\t\t\ttext = stripTags(text, '<div>')\n\t\t\ttext = stripTags(text)\n\n\t\t\treturn text\n\t\t},\n\n\t\t/**\n\t\t * Generate an autocompletion popup entry template\n\t\t *\n\t\t * @param {string} value the value to match against the userData\n\t\t * @return {string}\n\t\t */\n\t\tgenSelectTemplate(value) {\n\t\t\t// The value returned by this function will replace the trigger '@'\n\t\t\t// and the search text, so when there is no match we simply return\n\t\t\t// '@' and the text.\n\t\t\tif (typeof value === 'undefined') {\n\t\t\t\treturn `${this.autocompleteTribute.current.collection.trigger}${this.autocompleteTribute.current.mentionText}`\n\t\t\t}\n\n\t\t\tconst data = this.userData[value]\n\n\t\t\t// Fallback to @mention in case no data matches\n\t\t\tif (!data) {\n\t\t\t\t// return @value if matches MENTION_SIMPLE, @\"value\" otherwise\n\t\t\t\treturn [' ', '/', ':'].every(char => !value.includes(char))\n\t\t\t\t\t? `@${value}`\n\t\t\t\t\t: `@\"${value}\"`\n\t\t\t}\n\n\t\t\t// Return template and make sure we strip of new lines and tabs\n\t\t\treturn this.renderComponentHtml(data, NcMentionBubble).replace(/[\\n\\t]/gmi, '')\n\t\t},\n\n\t\t/**\n\t\t * Render a component and return its html content\n\t\t *\n\t\t * @param {object} props the props to pass to the component\n\t\t * @param {object} component the component to render\n\t\t * @return {string} the rendered html\n\t\t */\n\t\trenderComponentHtml(props, component) {\n\t\t\tconst Item = createApp(component, {\n\t\t\t\t...props,\n\t\t\t})\n\n\t\t\t// Prepare mountpoint\n\t\t\tconst mount = document.createElement('div')\n\t\t\tmount.style.display = 'none'\n\t\t\tdocument.body.appendChild(mount)\n\n\t\t\t// Mount and get raw html\n\t\t\tItem.mount(mount)\n\t\t\tconst renderedHtml = mount.innerHTML\n\n\t\t\t// Destroy\n\t\t\tItem.unmount()\n\t\t\tmount.remove()\n\n\t\t\treturn renderedHtml\n\t\t},\n\t},\n}\n"],"names":["_createElementBlock","_normalizeClass","_createElementVNode","_normalizeStyle","_toDisplayString"],"mappings":"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"}
@@ -1,26 +1,26 @@
1
- import '../assets/referencePickerModal-DeIfdfau.css';
1
+ import '../assets/referencePickerModal-G4uFPuyg.css';
2
2
  import { e as hasFullWidth, i as isWidgetRegistered, h as hasInteractiveView, a as renderWidget, f as destroyWidget, d as isCustomPickerElementRegistered, g as destroyCustomPickerElement, c as renderCustomPickerElement, j as getCustomPickerElementSize } from "./index-CtoB4eIp.mjs";
3
3
  import { ref, nextTick, resolveComponent, openBlock, createElementBlock, normalizeClass, createBlock, resolveDynamicComponent, mergeProps, withCtx, createCommentVNode, createElementVNode, toDisplayString, normalizeStyle, createTextVNode, createVNode, withKeys, withModifiers, createApp } from "vue";
4
4
  import { _ as _export_sfc } from "./_plugin-vue_export-helper-1tPrXgE0.mjs";
5
- import { r as register, P as t20, a as t, Q as t7, R as t38, S as t34, T as t21, w as t36, U as t27, F as t16, V as t11 } from "./_l10n-C3nxU4O-.mjs";
5
+ import { r as register, R as t21, a as t, S as t8, T as t40, U as t36, V as t22, w as t38, W as t29, F as t17, X as t12 } from "./_l10n-6dsjYig_.mjs";
6
6
  import axios from "@nextcloud/axios";
7
7
  import { loadState } from "@nextcloud/initial-state";
8
8
  import { imagePath, generateOcsUrl } from "@nextcloud/router";
9
9
  import { N as NcEmptyContent } from "./NcEmptyContent-BoGB3vFC.mjs";
10
10
  import { _ as _sfc_main$9 } from "./NcHighlight-BHtRIzqk.mjs";
11
- import { N as NcSelect } from "./NcSelect-CPlvJjcY.mjs";
11
+ import { N as NcSelect } from "./NcSelect-uOkQ9CdB.mjs";
12
12
  import { useElementSize, useIntersectionObserver } from "@vueuse/core";
13
13
  import { RouterLink } from "vue-router";
14
14
  import { g as getRoute } from "./autolink-CKPk5rzg.mjs";
15
- import { N as NcButton } from "./NcButton-DvO0XwJf.mjs";
15
+ import { N as NcButton } from "./NcButton-Bhuckhtj.mjs";
16
16
  import { N as NcLoadingIcon } from "./NcLoadingIcon-DREmHXr2.mjs";
17
- import { N as NcTextField } from "./NcTextField-W5cVvjob.mjs";
17
+ import { N as NcTextField } from "./NcTextField-DctsarIL.mjs";
18
18
  import { D as DotsHorizontal } from "./DotsHorizontal-CCNSfNOk.mjs";
19
19
  import NcModal from "../Components/NcModal.mjs";
20
20
  import { emit } from "@nextcloud/event-bus";
21
21
  import { A as ArrowLeft } from "./ArrowLeft-CxK9DnMo.mjs";
22
22
  import { C as Close } from "./Close-pmiXntgw.mjs";
23
- register(t20);
23
+ register(t21);
24
24
  const IDLE_TIMEOUT = 3 * 60 * 1e3;
25
25
  const _sfc_main$8 = {
26
26
  name: "NcReferenceWidget",
@@ -45,9 +45,9 @@ const _sfc_main$8 = {
45
45
  const isVisible = ref(false);
46
46
  const widgetRoot = ref();
47
47
  const { width } = useElementSize(widgetRoot);
48
- useIntersectionObserver(widgetRoot, () => {
48
+ useIntersectionObserver(widgetRoot, ([entry]) => {
49
49
  nextTick(() => {
50
- isVisible.value = widgetRoot.value?.isIntersecting ?? false;
50
+ isVisible.value = entry.isIntersecting;
51
51
  });
52
52
  });
53
53
  return {
@@ -222,7 +222,7 @@ function _sfc_render$8(_ctx, _cache, $props, $setup, $data, $options) {
222
222
  }, 8, ["onClick"])) : createCommentVNode("", true)
223
223
  ], 2);
224
224
  }
225
- const NcReferenceWidget = /* @__PURE__ */ _export_sfc(_sfc_main$8, [["render", _sfc_render$8], ["__scopeId", "data-v-f8639993"]]);
225
+ const NcReferenceWidget = /* @__PURE__ */ _export_sfc(_sfc_main$8, [["render", _sfc_render$8], ["__scopeId", "data-v-ae5e68cb"]]);
226
226
  const _sfc_main$7 = {
227
227
  name: "NcCustomPickerElement",
228
228
  props: {
@@ -285,7 +285,7 @@ function _sfc_render$7(_ctx, _cache, $props, $setup, $data, $options) {
285
285
  return openBlock(), createElementBlock("div", _hoisted_1$7, null, 512);
286
286
  }
287
287
  const NcCustomPickerElement = /* @__PURE__ */ _export_sfc(_sfc_main$7, [["render", _sfc_render$7], ["__scopeId", "data-v-314bfb3a"]]);
288
- register(t7);
288
+ register(t8);
289
289
  const anyLinkProviderId = "any-link";
290
290
  const anyLinkProvider = {
291
291
  id: anyLinkProviderId,
@@ -365,7 +365,7 @@ function isUrl(str) {
365
365
  return false;
366
366
  }
367
367
  }
368
- register(t34, t38);
368
+ register(t36, t40);
369
369
  const _sfc_main$6 = {
370
370
  name: "LinkVariantIcon",
371
371
  emits: ["click"],
@@ -529,7 +529,7 @@ function _sfc_render$5(_ctx, _cache, $props, $setup, $data, $options) {
529
529
  ]);
530
530
  }
531
531
  const NcProviderList = /* @__PURE__ */ _export_sfc(_sfc_main$5, [["render", _sfc_render$5], ["__scopeId", "data-v-d05c354b"]]);
532
- register(t21);
532
+ register(t22);
533
533
  const _sfc_main$4 = {
534
534
  name: "NcRawLinkInput",
535
535
  components: {
@@ -716,7 +716,7 @@ function _sfc_render$3(_ctx, _cache, $props, $setup, $data, $options) {
716
716
  ]);
717
717
  }
718
718
  const NcSearchResult = /* @__PURE__ */ _export_sfc(_sfc_main$3, [["render", _sfc_render$3], ["__scopeId", "data-v-2ae26ab4"]]);
719
- register(t27, t34, t36);
719
+ register(t29, t36, t38);
720
720
  const LIMIT = 5;
721
721
  const _sfc_main$2 = {
722
722
  name: "NcSearch",
@@ -1175,7 +1175,7 @@ function _sfc_render$1(_ctx, _cache, $props, $setup, $data, $options) {
1175
1175
  ], 36);
1176
1176
  }
1177
1177
  const NcReferencePicker = /* @__PURE__ */ _export_sfc(_sfc_main$1, [["render", _sfc_render$1], ["__scopeId", "data-v-f3f0de17"]]);
1178
- register(t11, t16);
1178
+ register(t12, t17);
1179
1179
  const _sfc_main = {
1180
1180
  name: "NcReferencePickerModal",
1181
1181
  components: {
@@ -0,0 +1 @@
1
+ {"version":3,"file":"referencePickerModal-BwzqUWFA.mjs","sources":["../../src/components/NcRichText/NcReferenceWidget.vue","../../src/components/NcRichText/NcReferencePicker/NcCustomPickerElement.vue","../../src/functions/reference/providerHelper.js","../../src/components/NcRichText/NcReferencePicker/utils.js","../../node_modules/vue-material-design-icons/LinkVariant.vue","../../src/components/NcRichText/NcReferencePicker/NcProviderList.vue","../../src/components/NcRichText/NcReferencePicker/NcRawLinkInput.vue","../../src/components/NcRichText/NcReferencePicker/NcSearchResult.vue","../../src/components/NcRichText/NcReferencePicker/NcSearch.vue","../../src/components/NcRichText/NcReferencePicker/NcReferencePicker.vue","../../src/components/NcRichText/NcReferencePicker/NcReferencePickerModal.vue","../../src/functions/reference/referencePickerModal.js"],"sourcesContent":["<!--\n - SPDX-FileCopyrightText: 2020 Nextcloud GmbH and Nextcloud contributors\n - SPDX-License-Identifier: AGPL-3.0-or-later\n-->\n\n<template>\n\t<div ref=\"widgetRoot\" :class=\"{'toggle-interactive': hasInteractiveView && !isInteractive }\">\n\t\t<div v-if=\"reference && hasCustomWidget\"\n\t\t\tref=\"customWidget\"\n\t\t\tclass=\"widget-custom\"\n\t\t\t:class=\"{ 'full-width': hasFullWidth }\" />\n\n\t\t<component :is=\"referenceWidgetLinkComponent\"\n\t\t\tv-else-if=\"!noAccess && reference && reference.openGraphObject && !hasCustomWidget\"\n\t\t\tv-bind=\"referenceWidgetLinkProps\"\n\t\t\trel=\"noopener noreferrer\"\n\t\t\tclass=\"widget-default\">\n\t\t\t<img v-if=\"reference.openGraphObject.thumb\" class=\"widget-default--image\" :src=\"reference.openGraphObject.thumb\">\n\t\t\t<div class=\"widget-default--details\">\n\t\t\t\t<p class=\"widget-default--name\">\n\t\t\t\t\t{{ reference.openGraphObject.name }}\n\t\t\t\t</p>\n\t\t\t\t<p class=\"widget-default--description\" :style=\"descriptionStyle\">\n\t\t\t\t\t{{ reference.openGraphObject.description }}\n\t\t\t\t</p>\n\t\t\t\t<p class=\"widget-default--link\">\n\t\t\t\t\t{{ compactLink }}\n\t\t\t\t</p>\n\t\t\t</div>\n\t\t</component>\n\t\t<NcButton v-if=\"interactiveOptIn && hasInteractiveView && !isInteractive\" class=\"toggle-interactive--button\" @click=\"enableInteractive\">\n\t\t\t{{ t('Enable interactive view') }}\n\t\t</NcButton>\n\t</div>\n</template>\n<script>\nimport { useElementSize, useIntersectionObserver } from '@vueuse/core'\nimport { nextTick, ref } from 'vue'\nimport { RouterLink } from 'vue-router'\n\nimport { t } from '../../l10n.js'\nimport { getRoute } from './autolink.ts'\nimport { renderWidget, isWidgetRegistered, destroyWidget, hasInteractiveView, hasFullWidth } from './../../functions/reference/widgets.ts'\n\nimport NcButton from '../../components/NcButton/NcButton.vue'\n\nconst IDLE_TIMEOUT = 3 * 60 * 1000 // 3 minutes outside of viewport before widget is removed from the DOM\n\nexport default {\n\tname: 'NcReferenceWidget',\n\tcomponents: {\n\t\tNcButton,\n\t},\n\tprops: {\n\t\treference: {\n\t\t\ttype: Object,\n\t\t\trequired: true,\n\t\t},\n\t\tinteractive: {\n\t\t\ttype: Boolean,\n\t\t\tdefault: true,\n\t\t},\n\t\tinteractiveOptIn: {\n\t\t\ttype: Boolean,\n\t\t\tdefault: false,\n\t\t},\n\t},\n\n\tsetup() {\n\t\tconst isVisible = ref(false)\n\t\t// This is the widget root node\n\t\tconst widgetRoot = ref()\n\t\tconst { width } = useElementSize(widgetRoot)\n\n\t\tuseIntersectionObserver(widgetRoot, ([entry]) => {\n\t\t\tnextTick(() => {\n\t\t\t\tisVisible.value = entry.isIntersecting\n\t\t\t})\n\t\t})\n\n\t\treturn {\n\t\t\twidth,\n\t\t\tisVisible,\n\t\t\twidgetRoot,\n\t\t}\n\t},\n\n\tdata() {\n\t\treturn {\n\t\t\tshowInteractive: false,\n\t\t\trendered: false,\n\t\t\tidleTimeout: null,\n\t\t}\n\t},\n\n\tcomputed: {\n\t\tisInteractive() {\n\t\t\treturn (!this.interactiveOptIn && this.interactive) || this.showInteractive\n\t\t},\n\t\thasFullWidth() {\n\t\t\treturn hasFullWidth(this.reference.richObjectType)\n\t\t},\n\t\thasCustomWidget() {\n\t\t\treturn isWidgetRegistered(this.reference.richObjectType)\n\t\t},\n\t\thasInteractiveView() {\n\t\t\treturn isWidgetRegistered(this.reference.richObjectType) && hasInteractiveView(this.reference.richObjectType)\n\t\t},\n\t\tnoAccess() {\n\t\t\treturn this.reference && !this.reference.accessible\n\t\t},\n\t\tdescriptionStyle() {\n\t\t\tif (this.numberOfLines === 0) {\n\t\t\t\treturn {\n\t\t\t\t\tdisplay: 'none',\n\t\t\t\t}\n\t\t\t}\n\t\t\tconst lineClamp = this.numberOfLines\n\t\t\treturn {\n\t\t\t\tlineClamp,\n\t\t\t\twebkitLineClamp: lineClamp,\n\t\t\t}\n\t\t},\n\t\tnumberOfLines() {\n\t\t\t// no description for width < 450, one line until 550 and so on\n\t\t\tconst lineCountOffsets = [450, 550, 650, Infinity]\n\t\t\treturn lineCountOffsets.findIndex(max => this.width < max)\n\t\t},\n\t\tcompactLink() {\n\t\t\tconst link = this.reference.openGraphObject.link\n\t\t\tif (!link) {\n\t\t\t\treturn ''\n\t\t\t}\n\n\t\t\tif (link.startsWith('https://')) {\n\t\t\t\treturn link.substring(8)\n\t\t\t}\n\t\t\tif (link.startsWith('http://')) {\n\t\t\t\treturn link.substring(7)\n\t\t\t}\n\t\t\treturn link\n\t\t},\n\t\troute() {\n\t\t\treturn getRoute(this.$router, this.reference.openGraphObject.link)\n\t\t},\n\t\treferenceWidgetLinkComponent() {\n\t\t\treturn this.route ? RouterLink : 'a'\n\t\t},\n\t\treferenceWidgetLinkProps() {\n\t\t\treturn this.route\n\t\t\t\t? { to: this.route }\n\t\t\t\t: { href: this.reference.openGraphObject.link, target: '_blank' }\n\t\t},\n\t},\n\twatch: {\n\t\tisVisible: {\n\t\t\thandler(val) {\n\t\t\t\tif (!val) {\n\t\t\t\t\tthis.idleTimeout = setTimeout(() => {\n\t\t\t\t\t\t// If the widget is still outside of viewport after timeout, destroy it\n\t\t\t\t\t\tif (!this.isVisible) {\n\t\t\t\t\t\t\tthis.destroyWidget()\n\t\t\t\t\t\t}\n\t\t\t\t\t}, IDLE_TIMEOUT)\n\t\t\t\t\treturn\n\t\t\t\t}\n\n\t\t\t\tif (this.idleTimeout) {\n\t\t\t\t\tclearTimeout(this.idleTimeout)\n\t\t\t\t\tthis.idleTimeout = null\n\t\t\t\t}\n\n\t\t\t\tif (!this.rendered) {\n\t\t\t\t\tthis.renderWidget()\n\t\t\t\t}\n\t\t\t},\n\t\t\timmediate: true,\n\t\t},\n\t},\n\tbeforeUnmount() {\n\t\tthis.destroyWidget()\n\t},\n\tmethods: {\n\t\tt,\n\n\t\tenableInteractive() {\n\t\t\tthis.showInteractive = true\n\t\t\tthis.renderWidget()\n\t\t},\n\t\trenderWidget() {\n\t\t\tif (!this.$refs.customWidget) {\n\t\t\t\treturn\n\t\t\t}\n\n\t\t\tif (this?.reference?.richObjectType === 'open-graph') {\n\t\t\t\treturn\n\t\t\t}\n\n\t\t\tthis.$refs.customWidget.innerHTML = ''\n\n\t\t\t// create a separate element so we can rerender on the ref again\n\t\t\tconst widget = document.createElement('div')\n\t\t\tthis.$refs.customWidget.appendChild(widget)\n\t\t\tthis.$nextTick(() => {\n\t\t\t\t// Waiting for the ref to become available\n\t\t\t\trenderWidget(widget, {\n\t\t\t\t\t...this.reference,\n\t\t\t\t\tinteractive: this.isInteractive,\n\t\t\t\t})\n\t\t\t\tthis.rendered = true\n\t\t\t})\n\t\t},\n\t\tdestroyWidget() {\n\t\t\tif (this.rendered) {\n\t\t\t\tdestroyWidget(this.reference.richObjectType, this.$el)\n\t\t\t\tthis.rendered = false\n\t\t\t}\n\t\t},\n\t},\n}\n</script>\n<style lang=\"scss\" scoped>\n\n@mixin widget {\n\twidth: 100%;\n\tmargin: auto;\n\tmargin-bottom: calc(var(--default-grid-baseline, 4px) * 3);\n\tmargin-top: calc(var(--default-grid-baseline, 4px) * 3);\n\toverflow: hidden;\n\tborder: 2px solid var(--color-border);\n\tborder-radius: var(--border-radius-large);\n\tbackground-color: transparent;\n\tdisplay: flex;\n}\n\n.widget-custom {\n\t@include widget;\n\n\t&.full-width {\n\t\twidth: var(--widget-full-width, 100%) !important;\n\t\tleft: calc( (var(--widget-full-width, 100%) - 100%) / 2 * -1);\n\t\tposition: relative;\n\t}\n}\n\n.widget-access {\n\t@include widget;\n\tpadding: calc(var(--default-grid-baseline, 4px) * 3);\n}\n\n.widget-default {\n\t@include widget;\n\n\t&--compact {\n\t\tflex-direction: column;\n\n\t\t.widget-default--image {\n\t\t\twidth: 100%;\n\t\t\theight: 150px;\n\t\t}\n\n\t\t.widget-default--details {\n\t\t\twidth: 100%;\n\t\t\tpadding-top: calc(var(--default-grid-baseline, 4px) * 2);\n\t\t\tpadding-bottom: calc(var(--default-grid-baseline, 4px) * 2);\n\t\t}\n\n\t\t.widget-default--description {\n\t\t\tdisplay: none;\n\t\t}\n\n\t}\n\n\t&--image {\n\t\twidth: 40%;\n\t\tbackground-position: center;\n\t\tbackground-size: cover;\n\t\tbackground-repeat: no-repeat;\n\t}\n\n\t&--name {\n\t\toverflow: hidden;\n\t\ttext-overflow: ellipsis;\n\t\twhite-space: nowrap;\n\t\tfont-weight: bold;\n\t}\n\n\t&--details {\n\t\tpadding: calc(var(--default-grid-baseline, 4px) * 3);\n\t\twidth: 60%;\n\n\t\tp {\n\t\t\tmargin: 0;\n\t\t\tpadding: 0;\n\t\t}\n\t}\n\n\t&--description {\n\t\toverflow: hidden;\n\t\ttext-overflow: ellipsis;\n\t\tdisplay: -webkit-box;\n\t\t-webkit-line-clamp: 3;\n\t\tline-clamp: 3; /* stylelint-disable-line property-no-unknown */\n\t\t-webkit-box-orient: vertical;\n\t}\n\n\t&--link {\n\t\tcolor: var(--color-text-maxcontrast);\n\t\toverflow: hidden;\n\t\ttext-overflow: ellipsis;\n\t\twhite-space: nowrap;\n\t}\n}\n\n.toggle-interactive {\n\tposition: relative;\n\t.toggle-interactive--button {\n\t\tposition: absolute;\n\t\ttop: 50%;\n\t\tz-index: 10000;\n\t\tleft: 50%;\n\t\ttransform: translateX(-50%) translateY(-50%);\n\t\topacity: 0;\n\t}\n\n\t&:focus-within, &:hover {\n\t\t.toggle-interactive--button {\n\t\t\topacity: 1;\n\t\t}\n\t}\n}\n</style>\n","<!--\n - SPDX-FileCopyrightText: 2023 Nextcloud GmbH and Nextcloud contributors\n - SPDX-License-Identifier: AGPL-3.0-or-later\n-->\n\n<template>\n\t<div ref=\"domElement\" />\n</template>\n\n<script>\nimport { renderCustomPickerElement, isCustomPickerElementRegistered, destroyCustomPickerElement } from './../../../functions/reference/customPickerElements.js'\n\nexport default {\n\tname: 'NcCustomPickerElement',\n\tprops: {\n\t\t/**\n\t\t * The reference provider\n\t\t */\n\t\tprovider: {\n\t\t\ttype: Object,\n\t\t\trequired: true,\n\t\t},\n\t},\n\temits: [\n\t\t'cancel',\n\t\t'submit',\n\t],\n\tdata() {\n\t\treturn {\n\t\t\tisRegistered: isCustomPickerElementRegistered(this.provider.id),\n\t\t\trenderResult: null,\n\t\t}\n\t},\n\tmounted() {\n\t\tif (this.isRegistered) {\n\t\t\tthis.renderElement()\n\t\t}\n\t},\n\tbeforeUnmount() {\n\t\tif (this.isRegistered) {\n\t\t\tdestroyCustomPickerElement(this.provider.id, this.$el, this.renderResult)\n\t\t}\n\t},\n\tmethods: {\n\t\trenderElement() {\n\t\t\tif (this.$refs.domElement) {\n\t\t\t\tthis.$refs.domElement.innerHTML = ''\n\t\t\t}\n\n\t\t\tconst renderFunctionResult = renderCustomPickerElement(this.$refs.domElement, { providerId: this.provider.id, accessible: false })\n\t\t\t// this works whether renderCustomPickerElement returns a promise or a value\n\t\t\tPromise.resolve(renderFunctionResult).then(result => {\n\t\t\t\tthis.renderResult = result\n\t\t\t\tif (this.renderResult.object?._isVue && this.renderResult.object?.$on) {\n\t\t\t\t\tthis.renderResult.object.$on('submit', this.onSubmit)\n\t\t\t\t\tthis.renderResult.object.$on('cancel', this.onCancel)\n\t\t\t\t}\n\t\t\t\tthis.renderResult.element.addEventListener('submit', (e) => {\n\t\t\t\t\tthis.onSubmit(e.detail)\n\t\t\t\t})\n\t\t\t\tthis.renderResult.element.addEventListener('cancel', this.onCancel)\n\t\t\t})\n\t\t},\n\t\tonSubmit(value) {\n\t\t\tthis.$emit('submit', value)\n\t\t},\n\t\tonCancel() {\n\t\t\tthis.$emit('cancel')\n\t\t},\n\t},\n}\n</script>\n\n<style lang=\"scss\" scoped>\n// nothing yet\n</style>\n","/**\n * SPDX-FileCopyrightText: 2023 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n\nimport { isCustomPickerElementRegistered } from './customPickerElements.js'\n\nimport { t } from '../../l10n.js'\n\nimport axios from '@nextcloud/axios'\nimport { loadState } from '@nextcloud/initial-state'\nimport { generateOcsUrl, imagePath } from '@nextcloud/router'\n\nexport const anyLinkProviderId = 'any-link'\n\nconst anyLinkProvider = {\n\tid: anyLinkProviderId,\n\ttitle: t('Any link'),\n\ticon_url: imagePath('core', 'filetypes/link.svg'),\n}\n\n// only get the provider list once, even if functions of this file are imported multiple times by different apps/components\nif (!window._vue_richtext_reference_providers) {\n\twindow._vue_richtext_reference_providers = loadState('core', 'reference-provider-list', [])\n}\n\n// single timestamps object used by every entity in the page\nif (!window._vue_richtext_reference_provider_timestamps) {\n\twindow._vue_richtext_reference_provider_timestamps = loadState('core', 'reference-provider-timestamps', {})\n}\n\n/**\n * @param {string} providerId The provider ID\n * @return {object} The provider object\n */\nexport function getProvider(providerId) {\n\tif (providerId === anyLinkProviderId) {\n\t\treturn anyLinkProvider\n\t}\n\treturn getProviders().find(p => p.id === providerId)\n}\n\n/**\n * @return {Array} Raw provider list as it was provided by the server\n */\nexport function getProviders() {\n\treturn window._vue_richtext_reference_providers.filter(p => {\n\t\t// avoid providers with no associated search provider and no custom component registered\n\t\tconst keep = (!!p.search_providers_ids && p.search_providers_ids.length > 0) || isCustomPickerElementRegistered(p.id)\n\t\tif (!keep) {\n\t\t\tconsole.debug('[smart picker]', p.id, 'reference provider is discoverable but does not have any related search provider or custom picker component registered')\n\t\t}\n\t\treturn keep\n\t})\n}\n\n/**\n * Helper function to sort a list of providers according to 2 factors:\n * - their \"last used timestamp\"\n * - their \"order\" property (coming from the provider declaration in the server implementation)\n *\n * @param {Array} providerList list of provider objects\n * @return {Array} the sorted provider list\n */\nexport function sortProviders(providerList) {\n\tconst timestamps = window._vue_richtext_reference_provider_timestamps\n\n\treturn providerList.sort((a, b) => {\n\t\treturn a.order === b.order\n\t\t\t? 0\n\t\t\t: a.order > b.order\n\t\t\t\t? 1\n\t\t\t\t: -1\n\t}).sort((a, b) => {\n\t\tconst ta = timestamps[a.id]\n\t\tconst tb = timestamps[b.id]\n\t\treturn ta === tb\n\t\t\t? 0\n\t\t\t: tb === undefined\n\t\t\t\t? -1\n\t\t\t\t: ta === undefined\n\t\t\t\t\t? 1\n\t\t\t\t\t: ta > tb\n\t\t\t\t\t\t? -1\n\t\t\t\t\t\t: 1\n\t})\n}\n\n/**\n * Helper function to search a provider from a search query\n * Result is a sorted list of providers\n *\n * @param {string} query The search query\n * @param {number} limit (optional) max number of results\n * @return {Array} the sorted/filtered provider list\n */\nexport function searchProvider(query, limit = null) {\n\tconst providers = getProviders()\n\tconst escapedQuery = query.replace(/[/\\-\\\\^$*+?.()|[\\]{}]/g, '\\\\$&')\n\tconst regexp = new RegExp(escapedQuery, 'i')\n\tconst sortedProviders = sortProviders(providers)\n\tconst filteredSortedProviders = sortedProviders.filter(p => {\n\t\treturn p.title.match(regexp)\n\t})\n\tconst searchResult = limit\n\t\t? filteredSortedProviders.slice(0, limit)\n\t\t: filteredSortedProviders\n\t// append the 'any link' provider in the full list or when there is no result\n\tif (query === '' || searchResult.length === 0) {\n\t\tsearchResult.push(anyLinkProvider)\n\t}\n\treturn searchResult\n}\n\n/**\n * Update the \"last used timestamp\" on the server side and then locally in the frontend\n *\n * @param {number} providerId The id of the search provider\n */\nexport function touchProvider(providerId) {\n\tconst timestamp = Math.floor(Date.now() / 1000)\n\tconst params = {\n\t\ttimestamp,\n\t}\n\tconst url = generateOcsUrl('references/provider/{providerId}', { providerId })\n\taxios.put(url, params)\n\t\t.then((response) => {\n\t\t\twindow._vue_richtext_reference_provider_timestamps[providerId] = timestamp\n\t\t})\n}\n","/**\n * SPDX-FileCopyrightText: 2023 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n\nlet mytimer = 0\n/**\n *\n * @param {Function} callback The callback to call after the delay\n * @param {number} ms The delay in milli-seconds\n */\nexport function delay(callback, ms) {\n\treturn function() {\n\t\tconst context = this\n\t\tconst args = arguments\n\t\tclearTimeout(mytimer)\n\t\tmytimer = setTimeout(function() {\n\t\t\tcallback.apply(context, args)\n\t\t}, ms || 0)\n\t}\n}\n/**\n *\n * @param {string} str The url\n */\nexport function isUrl(str) {\n\ttry {\n\t\treturn Boolean(new URL(str))\n\t} catch (error) {\n\t\treturn false\n\t}\n}\n","<template>\n <span v-bind=\"$attrs\"\n :aria-hidden=\"title ? null : true\"\n :aria-label=\"title\"\n class=\"material-design-icon link-variant-icon\"\n role=\"img\"\n @click=\"$emit('click', $event)\">\n <svg :fill=\"fillColor\"\n class=\"material-design-icon__svg\"\n :width=\"size\"\n :height=\"size\"\n viewBox=\"0 0 24 24\">\n <path d=\"M10.59,13.41C11,13.8 11,14.44 10.59,14.83C10.2,15.22 9.56,15.22 9.17,14.83C7.22,12.88 7.22,9.71 9.17,7.76V7.76L12.71,4.22C14.66,2.27 17.83,2.27 19.78,4.22C21.73,6.17 21.73,9.34 19.78,11.29L18.29,12.78C18.3,11.96 18.17,11.14 17.89,10.36L18.36,9.88C19.54,8.71 19.54,6.81 18.36,5.64C17.19,4.46 15.29,4.46 14.12,5.64L10.59,9.17C9.41,10.34 9.41,12.24 10.59,13.41M13.41,9.17C13.8,8.78 14.44,8.78 14.83,9.17C16.78,11.12 16.78,14.29 14.83,16.24V16.24L11.29,19.78C9.34,21.73 6.17,21.73 4.22,19.78C2.27,17.83 2.27,14.66 4.22,12.71L5.71,11.22C5.7,12.04 5.83,12.86 6.11,13.65L5.64,14.12C4.46,15.29 4.46,17.19 5.64,18.36C6.81,19.54 8.71,19.54 9.88,18.36L13.41,14.83C14.59,13.66 14.59,11.76 13.41,10.59C13,10.2 13,9.56 13.41,9.17Z\">\n <title v-if=\"title\">{{ title }}</title>\n </path>\n </svg>\n </span>\n</template>\n\n<script>\nexport default {\n name: \"LinkVariantIcon\",\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: 2023 Nextcloud GmbH and Nextcloud contributors\n - SPDX-License-Identifier: AGPL-3.0-or-later\n-->\n\n<template>\n\t<div class=\"provider-list\">\n\t\t<NcSelect ref=\"provider-select\"\n\t\t\tv-model=\"selectedProvider\"\n\t\t\tclass=\"provider-list--select\"\n\t\t\tinput-id=\"provider-select-input\"\n\t\t\tlabel=\"title\"\n\t\t\t:placeholder=\"multiselectPlaceholder\"\n\t\t\t:options=\"options\"\n\t\t\t:append-to-body=\"false\"\n\t\t\t:clear-search-on-select=\"true\"\n\t\t\t:clear-search-on-blur=\"() => false\"\n\t\t\t:filterable=\"false\"\n\t\t\t@search=\"onSearch\"\n\t\t\t@update:model-value=\"onProviderSelected\">\n\t\t\t<template #option=\"option\">\n\t\t\t\t<div v-if=\"option.isLink\" class=\"provider\">\n\t\t\t\t\t<LinkVariantIcon class=\"link-icon\" :size=\"20\" />\n\t\t\t\t\t<span>{{ option.title }}</span>\n\t\t\t\t</div>\n\t\t\t\t<div v-else class=\"provider\">\n\t\t\t\t\t<img class=\"provider-icon\"\n\t\t\t\t\t\t:src=\"option.icon_url\"\n\t\t\t\t\t\t:alt=\"providerIconAlt\">\n\t\t\t\t\t<NcHighlight class=\"option-text\"\n\t\t\t\t\t\t:search=\"query\"\n\t\t\t\t\t\t:text=\"option.title\" />\n\t\t\t\t</div>\n\t\t\t</template>\n\t\t</NcSelect>\n\t\t<NcEmptyContent class=\"provider-list--empty-content\">\n\t\t\t<template #icon>\n\t\t\t\t<LinkVariantIcon />\n\t\t\t</template>\n\t\t</NcEmptyContent>\n\t</div>\n</template>\n\n<script>\nimport { searchProvider } from './../../../functions/reference/providerHelper.js'\nimport { isUrl } from './utils.js'\nimport NcEmptyContent from '../../NcEmptyContent/index.js'\nimport NcHighlight from '../../NcHighlight/index.js'\nimport NcSelect from '../../NcSelect/index.js'\nimport { t } from '../../../l10n.js'\n\nimport LinkVariantIcon from 'vue-material-design-icons/LinkVariant.vue'\n\nexport default {\n\tname: 'NcProviderList',\n\tcomponents: {\n\t\tNcSelect,\n\t\tNcHighlight,\n\t\tNcEmptyContent,\n\t\tLinkVariantIcon,\n\t},\n\temits: [\n\t\t'select-provider',\n\t\t'submit',\n\t],\n\tdata() {\n\t\treturn {\n\t\t\tselectedProvider: null,\n\t\t\tquery: '',\n\t\t\tmultiselectPlaceholder: t('Select provider'),\n\t\t\tproviderIconAlt: t('Provider icon'),\n\t\t}\n\t},\n\tcomputed: {\n\t\toptions() {\n\t\t\tconst result = []\n\t\t\tif (this.query !== '' && isUrl(this.query)) {\n\t\t\t\tresult.push({\n\t\t\t\t\tid: this.query,\n\t\t\t\t\ttitle: this.query,\n\t\t\t\t\tisLink: true,\n\t\t\t\t})\n\t\t\t}\n\t\t\tresult.push(...searchProvider(this.query))\n\t\t\treturn result\n\t\t},\n\t},\n\tmethods: {\n\t\tfocus() {\n\t\t\tsetTimeout(() => {\n\t\t\t\tthis.$refs['provider-select']?.$el?.querySelector('#provider-select-input')?.focus()\n\t\t\t}, 300)\n\t\t},\n\t\tonProviderSelected(p) {\n\t\t\tif (p !== null) {\n\t\t\t\tif (p.isLink) {\n\t\t\t\t\tthis.$emit('submit', p.title)\n\t\t\t\t} else {\n\t\t\t\t\tthis.$emit('select-provider', p)\n\t\t\t\t}\n\t\t\t\tthis.selectedProvider = null\n\t\t\t}\n\t\t},\n\t\tonSearch(query) {\n\t\t\tthis.query = query\n\t\t},\n\t},\n}\n</script>\n\n<style lang=\"scss\" scoped>\n.provider-list {\n\twidth: 100%;\n\tmin-height: 400px;\n\tpadding: 0 16px 16px 16px;\n\tdisplay: flex;\n\tflex-direction: column;\n\n\t&--select {\n\t\twidth: 100%;\n\n\t\t.provider {\n\t\t\tdisplay: flex;\n\t\t\talign-items: center;\n\t\t\theight: 28px;\n\t\t\toverflow: hidden;\n\n\t\t\t.link-icon {\n\t\t\t\tmargin-right: 8px;\n\t\t\t}\n\n\t\t\t.provider-icon {\n\t\t\t\twidth: 20px;\n\t\t\t\theight: 20px;\n\t\t\t\tobject-fit: contain;\n\t\t\t\tmargin-right: 8px;\n\t\t\t\tfilter: var(--background-invert-if-dark);\n\t\t\t}\n\n\t\t\t.option-text {\n\t\t\t\toverflow: hidden;\n\t\t\t\ttext-overflow: ellipsis;\n\t\t\t\twhite-space: nowrap;\n\t\t\t}\n\n\t\t}\n\t}\n}\n</style>\n","<!--\n - SPDX-FileCopyrightText: 2023 Nextcloud GmbH and Nextcloud contributors\n - SPDX-License-Identifier: AGPL-3.0-or-later\n-->\n\n<template>\n\t<div class=\"raw-link\">\n\t\t<div class=\"input-wrapper\">\n\t\t\t<NcTextField ref=\"url-input\"\n\t\t\t\tv-model=\"inputValue\"\n\t\t\t\t:show-trailing-button=\"inputValue !== ''\"\n\t\t\t\t:label=\"inputPlaceholder\"\n\t\t\t\t@trailing-button-click=\"onClear\"\n\t\t\t\t@update:model-value=\"onInput\"\n\t\t\t\t@keyup.enter=\"onSubmit\">\n\t\t\t\t<NcLoadingIcon v-if=\"loading\" :size=\"16\" />\n\t\t\t\t<LinkVariantIcon v-else :size=\"16\" />\n\t\t\t</NcTextField>\n\t\t</div>\n\t\t<NcReferenceWidget v-if=\"reference !== null\"\n\t\t\tclass=\"reference-widget\"\n\t\t\t:reference=\"reference\" />\n\t\t<NcEmptyContent v-else\n\t\t\tclass=\"raw-link--empty-content\">\n\t\t\t<template #icon>\n\t\t\t\t<img v-if=\"provider.icon_url\"\n\t\t\t\t\tclass=\"provider-icon\"\n\t\t\t\t\t:src=\"provider.icon_url\">\n\t\t\t\t<LinkVariantIcon v-else />\n\t\t\t</template>\n\t\t</NcEmptyContent>\n\t</div>\n</template>\n\n<script>\nimport NcReferenceWidget from '../NcReferenceWidget.vue'\nimport { isUrl, delay } from './utils.js'\nimport NcEmptyContent from '../../NcEmptyContent/index.js'\nimport NcLoadingIcon from '../../NcLoadingIcon/index.js'\nimport NcTextField from '../../NcTextField/index.js'\nimport { t } from '../../../l10n.js'\n\nimport axios from '@nextcloud/axios'\nimport { generateOcsUrl } from '@nextcloud/router'\n\nimport LinkVariantIcon from 'vue-material-design-icons/LinkVariant.vue'\n\nexport default {\n\tname: 'NcRawLinkInput',\n\tcomponents: {\n\t\tLinkVariantIcon,\n\t\tNcEmptyContent,\n\t\tNcLoadingIcon,\n\t\tNcReferenceWidget,\n\t\tNcTextField,\n\t},\n\tprops: {\n\t\t/**\n\t\t * The reference provider\n\t\t */\n\t\tprovider: {\n\t\t\ttype: Object,\n\t\t\trequired: true,\n\t\t},\n\t},\n\temits: [\n\t\t'submit',\n\t],\n\tdata() {\n\t\treturn {\n\t\t\tinputValue: '',\n\t\t\tloading: false,\n\t\t\treference: null,\n\t\t\tabortController: null,\n\t\t\tinputPlaceholder: t('Enter link'),\n\t\t}\n\t},\n\tcomputed: {\n\t\tisLinkValid() {\n\t\t\treturn isUrl(this.inputValue)\n\t\t},\n\t},\n\tmethods: {\n\t\tfocus() {\n\t\t\tthis.$refs['url-input'].$el.getElementsByTagName('input')[0]?.focus()\n\t\t},\n\t\tonSubmit(e) {\n\t\t\tconst value = e.target.value\n\t\t\tif (this.isLinkValid) {\n\t\t\t\tthis.$emit('submit', value)\n\t\t\t}\n\t\t},\n\t\tonClear() {\n\t\t\tthis.inputValue = ''\n\t\t\tthis.reference = null\n\t\t},\n\t\tonInput() {\n\t\t\tthis.reference = null\n\t\t\tif (this.abortController) {\n\t\t\t\tthis.abortController.abort()\n\t\t\t}\n\t\t\tif (this.isLinkValid) {\n\t\t\t\tdelay(() => {\n\t\t\t\t\tthis.updateReference()\n\t\t\t\t}, 500)()\n\t\t\t}\n\t\t},\n\t\tupdateReference() {\n\t\t\tthis.loading = true\n\t\t\tthis.abortController = new AbortController()\n\t\t\taxios.get(generateOcsUrl('references/resolve', 2) + '?reference=' + encodeURIComponent(this.inputValue), {\n\t\t\t\tsignal: this.abortController.signal,\n\t\t\t})\n\t\t\t\t.then((response) => {\n\t\t\t\t\tthis.reference = response.data.ocs.data.references[this.inputValue]\n\t\t\t\t})\n\t\t\t\t.catch((error) => {\n\t\t\t\t\tconsole.error(error)\n\t\t\t\t})\n\t\t\t\t.then(() => {\n\t\t\t\t\tthis.loading = false\n\t\t\t\t})\n\t\t},\n\t},\n}\n</script>\n\n<style lang=\"scss\" scoped>\n.raw-link {\n\twidth: 100%;\n\tmin-height: 350px;\n\tdisplay: flex;\n\tflex-direction: column;\n\toverflow-y: auto;\n\tpadding: 0 16px 16px 16px;\n\n\t.input-wrapper {\n\t\twidth: 100%;\n\t}\n\n\t.reference-widget {\n\t\tdisplay: flex;\n\t}\n\n\t&--empty-content .provider-icon {\n\t\twidth: 150px;\n\t\theight: 150px;\n\t\tobject-fit: contain;\n\t\tfilter: var(--background-invert-if-dark);\n\t}\n\n\t&--input {\n\t\twidth: 99%;\n\t}\n}\n</style>\n","<!--\n - SPDX-FileCopyrightText: 2023 Nextcloud GmbH and Nextcloud contributors\n - SPDX-License-Identifier: AGPL-3.0-or-later\n-->\n\n<template>\n\t<div class=\"result\">\n\t\t<div v-if=\"entry.icon\"\n\t\t\t:class=\"{ [entry.icon]: true, rounded: entry.rounded }\"\n\t\t\tclass=\"result--icon-class\" />\n\t\t<img v-else\n\t\t\tclass=\"result--image\"\n\t\t\t:class=\"{ rounded: entry.rounded }\"\n\t\t\t:src=\"entry.thumbnailUrl\">\n\t\t<div class=\"result--content\">\n\t\t\t<span class=\"result--content--name\">\n\t\t\t\t<NcHighlight :search=\"query\" :text=\"entry.title\" />\n\t\t\t</span>\n\t\t\t<span class=\"result--content--subline\">\n\t\t\t\t<NcHighlight :search=\"query\" :text=\"entry.subline\" />\n\t\t\t</span>\n\t\t</div>\n\t</div>\n</template>\n\n<script>\nimport NcHighlight from '../../NcHighlight/index.js'\n\nexport default {\n\tname: 'NcSearchResult',\n\tcomponents: {\n\t\tNcHighlight,\n\t},\n\tprops: {\n\t\t/**\n\t\t * Unified search result entry\n\t\t */\n\t\tentry: {\n\t\t\ttype: Object,\n\t\t\trequired: true,\n\t\t},\n\t\t/**\n\t\t * The query that led to getting this result\n\t\t * Used to highlight the entry text\n\t\t */\n\t\tquery: {\n\t\t\ttype: String,\n\t\t\trequired: true,\n\t\t},\n\t},\n}\n</script>\n\n<style lang=\"scss\" scoped>\n.result {\n\tdisplay: flex;\n\talign-items: center;\n\theight: 44px;\n\toverflow: hidden;\n\n\t&--icon-class,\n\t&--image {\n\t\twidth: 40px;\n\t\tmin-width: 40px;\n\t\theight: 40px;\n\t\tobject-fit: contain;\n\n\t\t&.rounded {\n\t\t\tborder-radius: 50%;\n\t\t}\n\t}\n\n\t&--content {\n\t\tdisplay: flex;\n\t\tflex-direction: column;\n\t\tpadding-left: 10px;\n\t\toverflow: hidden;\n\n\t\t&--name,\n\t\t&--subline {\n\t\t\toverflow: hidden;\n\t\t\ttext-overflow: ellipsis;\n\t\t\twhite-space: nowrap;\n\t\t}\n\t}\n}\n</style>\n","<!--\n - SPDX-FileCopyrightText: 2023 Nextcloud GmbH and Nextcloud contributors\n - SPDX-License-Identifier: AGPL-3.0-or-later\n-->\n\n<template>\n\t<div class=\"smart-picker-search\" :class=\"{ 'with-empty-content': showEmptyContent }\">\n\t\t<NcSelect ref=\"search-select\"\n\t\t\tv-model=\"selectedResult\"\n\t\t\tclass=\"smart-picker-search--select\"\n\t\t\tinput-id=\"search-select-input\"\n\t\t\tlabel=\"name\"\n\t\t\t:placeholder=\"mySearchPlaceholder\"\n\t\t\t:options=\"options\"\n\t\t\t:append-to-body=\"false\"\n\t\t\t:close-on-select=\"false\"\n\t\t\t:clear-search-on-select=\"false\"\n\t\t\t:clear-search-on-blur=\"() => false\"\n\t\t\t:reset-focus-on-options-change=\"false\"\n\t\t\t:filterable=\"false\"\n\t\t\t:autoscroll=\"true\"\n\t\t\t:reset-on-options-change=\"false\"\n\t\t\t:loading=\"searching\"\n\t\t\t@search=\"onSearchInput\"\n\t\t\t@update:model-value=\"onSelectResultSelected\">\n\t\t\t<template #option=\"option\">\n\t\t\t\t<div v-if=\"option.isRawLink\" class=\"custom-option\">\n\t\t\t\t\t<LinkVariantIcon class=\"option-simple-icon\" :size=\"20\" />\n\t\t\t\t\t<span class=\"option-text\">\n\t\t\t\t\t\t{{ t('Raw link {options}', { options: option.resourceUrl }) }}\n\t\t\t\t\t</span>\n\t\t\t\t</div>\n\t\t\t\t<NcSearchResult v-else-if=\"option.resourceUrl\"\n\t\t\t\t\tclass=\"search-result\"\n\t\t\t\t\t:entry=\"option\"\n\t\t\t\t\t:query=\"searchQuery\" />\n\t\t\t\t<span v-else-if=\"option.isCustomGroupTitle\" class=\"custom-option group-name\">\n\t\t\t\t\t<img v-if=\"provider.icon_url\"\n\t\t\t\t\t\tclass=\"provider-icon group-name-icon\"\n\t\t\t\t\t\t:src=\"provider.icon_url\">\n\t\t\t\t\t<span class=\"option-text\">\n\t\t\t\t\t\t<strong>{{ option.name }}</strong>\n\t\t\t\t\t</span>\n\t\t\t\t</span>\n\t\t\t\t<span v-else-if=\"option.isMore\" :class=\"{ 'custom-option': true }\">\n\t\t\t\t\t<span v-if=\"option.isLoading\" class=\"option-simple-icon icon-loading-small\" />\n\t\t\t\t\t<DotsHorizontalIcon v-else class=\"option-simple-icon\" :size=\"20\" />\n\t\t\t\t\t<span class=\"option-text\">\n\t\t\t\t\t\t{{ t('Load more \"{options}\"', { options: option.name }) }}\n\t\t\t\t\t</span>\n\t\t\t\t</span>\n\t\t\t</template>\n\t\t\t<template #no-options>\n\t\t\t\t{{ noOptionsText }}\n\t\t\t</template>\n\t\t</NcSelect>\n\t\t<NcEmptyContent v-if=\"showEmptyContent\"\n\t\t\tclass=\"smart-picker-search--empty-content\">\n\t\t\t<template #icon>\n\t\t\t\t<img v-if=\"provider.icon_url\"\n\t\t\t\t\tclass=\"provider-icon\"\n\t\t\t\t\t:alt=\"providerIconAlt\"\n\t\t\t\t\t:src=\"provider.icon_url\">\n\t\t\t\t<LinkVariantIcon v-else />\n\t\t\t</template>\n\t\t</NcEmptyContent>\n\t</div>\n</template>\n\n<script>\nimport NcSearchResult from './NcSearchResult.vue'\nimport { isUrl, delay } from './utils.js'\nimport NcEmptyContent from '../../NcEmptyContent/index.js'\nimport NcSelect from '../../NcSelect/index.js'\n\nimport { t } from '../../../l10n.js'\n\nimport axios from '@nextcloud/axios'\nimport { generateOcsUrl } from '@nextcloud/router'\n\nimport DotsHorizontalIcon from 'vue-material-design-icons/DotsHorizontal.vue'\nimport LinkVariantIcon from 'vue-material-design-icons/LinkVariant.vue'\n\nconst LIMIT = 5\n\nexport default {\n\tname: 'NcSearch',\n\tcomponents: {\n\t\tLinkVariantIcon,\n\t\tDotsHorizontalIcon,\n\t\tNcEmptyContent,\n\t\tNcSelect,\n\t\tNcSearchResult,\n\t},\n\tprops: {\n\t\t/**\n\t\t * The selected reference provider\n\t\t */\n\t\tprovider: {\n\t\t\ttype: Object,\n\t\t\trequired: true,\n\t\t},\n\t\tshowEmptyContent: {\n\t\t\ttype: Boolean,\n\t\t\tdefault: true,\n\t\t},\n\t\tsearchPlaceholder: {\n\t\t\ttype: String,\n\t\t\tdefault: null,\n\t\t},\n\t},\n\temits: [\n\t\t'submit',\n\t],\n\tdata() {\n\t\treturn {\n\t\t\tsearchQuery: '',\n\t\t\tselectedResult: null,\n\t\t\tresultsBySearchProvider: {},\n\t\t\tsearching: false,\n\t\t\tsearchingMoreOf: null,\n\t\t\tabortController: null,\n\t\t\tnoOptionsText: t('Start typing to search'),\n\t\t\tproviderIconAlt: t('Provider icon'),\n\t\t}\n\t},\n\tcomputed: {\n\t\tmySearchPlaceholder() {\n\t\t\treturn this.searchPlaceholder || t('Search')\n\t\t},\n\t\tsearchProviderIds() {\n\t\t\treturn this.provider.search_providers_ids\n\t\t},\n\t\toptions() {\n\t\t\tif (this.searchQuery === '') {\n\t\t\t\treturn []\n\t\t\t}\n\n\t\t\tconst options = []\n\t\t\tif (isUrl(this.searchQuery)) {\n\t\t\t\toptions.push(this.rawLinkEntry)\n\t\t\t}\n\t\t\toptions.push(...this.formattedSearchResults)\n\t\t\treturn options\n\t\t},\n\t\trawLinkEntry() {\n\t\t\treturn {\n\t\t\t\tid: 'rawLinkEntry',\n\t\t\t\tresourceUrl: this.searchQuery,\n\t\t\t\tisRawLink: true,\n\t\t\t}\n\t\t},\n\t\tformattedSearchResults() {\n\t\t\tconst results = []\n\t\t\tthis.searchProviderIds.forEach(pid => {\n\t\t\t\tif (this.resultsBySearchProvider[pid].entries.length > 0) {\n\t\t\t\t\t// don't show group name entry if there is only one search provider and one result\n\t\t\t\t\tif (this.searchProviderIds.length > 1 || this.resultsBySearchProvider[pid].entries.length > 1) {\n\t\t\t\t\t\tresults.push({\n\t\t\t\t\t\t\tid: 'groupTitle-' + pid,\n\t\t\t\t\t\t\tname: this.resultsBySearchProvider[pid].name,\n\t\t\t\t\t\t\tisCustomGroupTitle: true,\n\t\t\t\t\t\t\tproviderId: pid,\n\t\t\t\t\t\t})\n\t\t\t\t\t}\n\t\t\t\t\tconst providerEntriesWithId = this.resultsBySearchProvider[pid].entries.map((entry, index) => {\n\t\t\t\t\t\treturn {\n\t\t\t\t\t\t\tid: 'provider-' + pid + '-entry-' + index,\n\t\t\t\t\t\t\t...entry,\n\t\t\t\t\t\t}\n\t\t\t\t\t})\n\t\t\t\t\tresults.push(...providerEntriesWithId)\n\t\t\t\t\tif (this.resultsBySearchProvider[pid].isPaginated) {\n\t\t\t\t\t\tresults.push({\n\t\t\t\t\t\t\tid: 'moreOf-' + pid,\n\t\t\t\t\t\t\tname: this.resultsBySearchProvider[pid].name,\n\t\t\t\t\t\t\tisMore: true,\n\t\t\t\t\t\t\tproviderId: pid,\n\t\t\t\t\t\t\tisLoading: this.searchingMoreOf === pid,\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\treturn results\n\t\t},\n\t},\n\tmounted() {\n\t\tthis.resetResults()\n\t},\n\tbeforeUnmount() {\n\t\tthis.cancelSearchRequests()\n\t},\n\tmethods: {\n\t\tt,\n\t\tresetResults() {\n\t\t\tconst resultsBySearchProvider = {}\n\t\t\tthis.searchProviderIds.forEach(pid => {\n\t\t\t\tresultsBySearchProvider[pid] = {\n\t\t\t\t\tentries: [],\n\t\t\t\t}\n\t\t\t})\n\t\t\tthis.resultsBySearchProvider = resultsBySearchProvider\n\t\t},\n\t\tfocus() {\n\t\t\tsetTimeout(() => {\n\t\t\t\tthis.$refs['search-select']?.$el?.querySelector('#search-select-input')?.focus()\n\t\t\t}, 300)\n\t\t},\n\t\tcancelSearchRequests() {\n\t\t\tif (this.abortController) {\n\t\t\t\tthis.abortController.abort()\n\t\t\t}\n\t\t},\n\t\tonSearchInput(query) {\n\t\t\tthis.searchQuery = query\n\t\t\tdelay(() => {\n\t\t\t\tthis.updateSearch()\n\t\t\t}, 500)()\n\t\t},\n\t\tonSelectResultSelected(item) {\n\t\t\tif (item !== null) {\n\t\t\t\tif (item.resourceUrl) {\n\t\t\t\t\tthis.cancelSearchRequests()\n\t\t\t\t\tthis.$emit('submit', item.resourceUrl)\n\t\t\t\t} else if (item.isMore) {\n\t\t\t\t\tthis.searchMoreOf(item.providerId).then(() => {\n\t\t\t\t\t\t// allow clicking twice on the same \"more\" item\n\t\t\t\t\t\tthis.selectedResult = null\n\t\t\t\t\t})\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t\tsearchMoreOf(searchProviderId) {\n\t\t\tthis.searchingMoreOf = searchProviderId\n\t\t\tthis.cancelSearchRequests()\n\t\t\treturn this.searchProviders(searchProviderId)\n\t\t},\n\t\tupdateSearch() {\n\t\t\tthis.cancelSearchRequests()\n\t\t\tthis.resetResults()\n\t\t\tif (this.searchQuery === '') {\n\t\t\t\tthis.searching = false\n\t\t\t\treturn\n\t\t\t}\n\n\t\t\treturn this.searchProviders()\n\t\t},\n\t\tsearchProviders(searchProviderId = null) {\n\t\t\tthis.abortController = new AbortController()\n\t\t\tthis.searching = true\n\n\t\t\tconst searchPromises = searchProviderId === null\n\t\t\t\t? [...this.searchProviderIds].map(pid => {\n\t\t\t\t\treturn this.searchOneProvider(pid)\n\t\t\t\t})\n\t\t\t\t: [this.searchOneProvider(searchProviderId, this.resultsBySearchProvider[searchProviderId]?.cursor ?? null)]\n\t\t\t// fake one to have a request error\n\t\t\t// searchPromises.push(this.searchOneProvider('nopid'))\n\n\t\t\treturn Promise.allSettled(searchPromises)\n\t\t\t\t.then((promises) => {\n\t\t\t\t\tconst isOneCanceled = !!promises.find(p => {\n\t\t\t\t\t\treturn p.status === 'rejected' && (p.reason.name === 'CanceledError' || p.reason.code === 'ERR_CANCELED')\n\t\t\t\t\t})\n\t\t\t\t\t// nothing was canceled: not searching\n\t\t\t\t\tif (!isOneCanceled) {\n\t\t\t\t\t\tthis.searching = false\n\t\t\t\t\t\tthis.searchingMoreOf = null\n\t\t\t\t\t}\n\t\t\t\t})\n\t\t},\n\t\tsearchOneProvider(providerId, cursor = null) {\n\t\t\tconst url = cursor === null\n\t\t\t\t? generateOcsUrl('search/providers/{providerId}/search?term={term}&limit={limit}', { providerId, term: this.searchQuery, limit: LIMIT })\n\t\t\t\t: generateOcsUrl('search/providers/{providerId}/search?term={term}&limit={limit}&cursor={cursor}', { providerId, term: this.searchQuery, limit: LIMIT, cursor })\n\t\t\treturn axios.get(url, {\n\t\t\t\tsignal: this.abortController.signal,\n\t\t\t})\n\t\t\t\t.then((response) => {\n\t\t\t\t\tconst data = response.data.ocs.data\n\t\t\t\t\tthis.resultsBySearchProvider[providerId].name = data.name\n\t\t\t\t\tthis.resultsBySearchProvider[providerId].cursor = data.cursor\n\t\t\t\t\tthis.resultsBySearchProvider[providerId].isPaginated = data.isPaginated\n\t\t\t\t\tthis.resultsBySearchProvider[providerId].entries.push(...data.entries)\n\t\t\t\t})\n\t\t},\n\t},\n}\n</script>\n\n<style lang=\"scss\" scoped>\n.smart-picker-search {\n\twidth: 100%;\n\tdisplay: flex;\n\tflex-direction: column;\n\tpadding: 0 16px 16px 16px;\n\t&.with-empty-content {\n\t\tmin-height: 400px;\n\t}\n\n\t.provider-icon {\n\t\twidth: 150px;\n\t\theight: 150px;\n\t\tobject-fit: contain;\n\t\tfilter: var(--background-invert-if-dark);\n\t}\n\n\t&--select {\n\t\twidth: 100%;\n\n\t\t.search-result {\n\t\t\twidth: 100%;\n\t\t}\n\n\t\t.group-name-icon,\n\t\t.option-simple-icon {\n\t\t\twidth: 20px;\n\t\t\theight: 20px;\n\t\t\tmargin: 0 20px 0 10px;\n\t\t}\n\n\t\t.custom-option {\n\t\t\theight: 44px;\n\t\t\tdisplay: flex;\n\t\t\talign-items: center;\n\t\t\toverflow: hidden;\n\t\t}\n\n\t\t.option-text {\n\t\t\toverflow: hidden;\n\t\t\ttext-overflow: ellipsis;\n\t\t\twhite-space: nowrap;\n\t\t}\n\t}\n}\n</style>\n","<!--\n - SPDX-FileCopyrightText: 2023 Nextcloud GmbH and Nextcloud contributors\n - SPDX-License-Identifier: AGPL-3.0-or-later\n-->\n\n<template>\n\t<div class=\"reference-picker\"\n\t\t:style=\"pickerWrapperStyle\"\n\t\ttabindex=\"-1\"\n\t\t@keydown.stop.prevent.esc=\"onEscapePressed\">\n\t\t<NcProviderList v-if=\"mode === MODES.providerList\"\n\t\t\tref=\"provider-list\"\n\t\t\t@select-provider=\"onProviderSelected\"\n\t\t\t@submit=\"submitLink\"\n\t\t\t@cancel=\"cancelProviderSelection\" />\n\t\t<NcRawLinkInput v-else-if=\"mode === MODES.standardLinkInput\"\n\t\t\tref=\"url-input\"\n\t\t\t:provider=\"selectedProvider\"\n\t\t\t@submit=\"submitLink\"\n\t\t\t@cancel=\"cancelRawLinkInput\" />\n\t\t<NcSearch v-else-if=\"mode === MODES.searchInput\"\n\t\t\tref=\"url-input\"\n\t\t\t:provider=\"selectedProvider\"\n\t\t\t@cancel=\"cancelSearch\"\n\t\t\t@submit=\"submitLink\" />\n\t\t<div v-else-if=\"mode === MODES.customElement\"\n\t\t\tclass=\"custom-element-wrapper\">\n\t\t\t<NcCustomPickerElement :provider=\"selectedProvider\"\n\t\t\t\t@submit=\"submitLink\"\n\t\t\t\t@cancel=\"cancelCustomElement\" />\n\t\t</div>\n\t</div>\n</template>\n\n<script>\nimport NcCustomPickerElement from './NcCustomPickerElement.vue'\nimport NcProviderList from './NcProviderList.vue'\nimport NcRawLinkInput from './NcRawLinkInput.vue'\nimport NcSearch from './NcSearch.vue'\nimport { isCustomPickerElementRegistered } from './../../../functions/reference/customPickerElements.js'\nimport { touchProvider } from './../../../functions/reference/providerHelper.js'\n\nconst MODES = {\n\tproviderList: 1,\n\tstandardLinkInput: 2,\n\tsearchInput: 3,\n\tcustomElement: 4,\n}\nexport default {\n\tname: 'NcReferencePicker',\n\tcomponents: {\n\t\tNcCustomPickerElement,\n\t\tNcProviderList,\n\t\tNcRawLinkInput,\n\t\tNcSearch,\n\t},\n\tprops: {\n\t\t/**\n\t\t * Provider to select on creation\n\t\t * Default: null. Show the provider list\n\t\t */\n\t\tinitialProvider: {\n\t\t\ttype: Object,\n\t\t\tdefault: () => null,\n\t\t},\n\t\t/**\n\t\t * Optional width in pixels\n\t\t * Default: 100%\n\t\t */\n\t\twidth: {\n\t\t\ttype: Number,\n\t\t\tdefault: null,\n\t\t},\n\t\t/**\n\t\t * Focus on the provider list select input on creation\n\t\t * Default: true\n\t\t */\n\t\tfocusOnCreate: {\n\t\t\ttype: Boolean,\n\t\t\tdefault: true,\n\t\t},\n\t},\n\temits: [\n\t\t'cancel',\n\t\t'cancel-raw-link',\n\t\t'cancel-search',\n\t\t'provider-selected',\n\t\t'submit',\n\t],\n\tdata() {\n\t\treturn {\n\t\t\tMODES,\n\t\t\tselectedProvider: this.initialProvider,\n\t\t}\n\t},\n\tcomputed: {\n\t\tmode() {\n\t\t\treturn this.selectedProvider === null\n\t\t\t\t? MODES.providerList\n\t\t\t\t: isCustomPickerElementRegistered(this.selectedProvider.id)\n\t\t\t\t\t? MODES.customElement\n\t\t\t\t\t: this.selectedProvider.search_providers_ids\n\t\t\t\t\t\t? MODES.searchInput\n\t\t\t\t\t\t: MODES.standardLinkInput\n\t\t},\n\t\tpickerWrapperStyle() {\n\t\t\treturn {\n\t\t\t\twidth: this.width ? this.width + 'px' : undefined,\n\t\t\t}\n\t\t},\n\t},\n\tmounted() {\n\t\tif (this.focusOnCreate) {\n\t\t\tif (this.initialProvider) {\n\t\t\t\tsetTimeout(() => {\n\t\t\t\t\tthis.$refs['url-input']?.focus()\n\t\t\t\t}, 300)\n\t\t\t} else {\n\t\t\t\tthis.$nextTick(() => {\n\t\t\t\t\tthis.$refs['provider-list']?.focus()\n\t\t\t\t})\n\t\t\t}\n\t\t}\n\n\t},\n\tmethods: {\n\t\tonEscapePressed() {\n\t\t\tif (this.selectedProvider !== null) {\n\t\t\t\tthis.deselectProvider()\n\t\t\t} else {\n\t\t\t\tthis.cancelProviderSelection()\n\t\t\t}\n\t\t},\n\t\tonProviderSelected(provider) {\n\t\t\tthis.selectedProvider = provider\n\t\t\tthis.$emit('provider-selected', provider)\n\t\t\tthis.$nextTick(() => {\n\t\t\t\tthis.$refs['url-input']?.focus()\n\t\t\t})\n\t\t},\n\t\tcancelCustomElement() {\n\t\t\tthis.deselectProvider()\n\t\t},\n\t\tcancelSearch() {\n\t\t\tthis.$emit('cancel-search', this.selectedProvider?.title)\n\t\t\tthis.deselectProvider()\n\t\t},\n\t\tcancelRawLinkInput() {\n\t\t\tthis.$emit('cancel-raw-link', this.selectedProvider?.title)\n\t\t\tthis.deselectProvider()\n\t\t},\n\t\tcancelProviderSelection() {\n\t\t\tthis.$emit('cancel')\n\t\t},\n\t\tsubmitLink(link) {\n\t\t\tif (this.selectedProvider !== null) {\n\t\t\t\ttouchProvider(this.selectedProvider.id)\n\t\t\t}\n\t\t\tthis.$emit('submit', link)\n\t\t\tthis.deselectProvider()\n\t\t},\n\t\tdeselectProvider() {\n\t\t\tthis.selectedProvider = null\n\t\t\tthis.$emit('provider-selected', null)\n\t\t\tsetTimeout(() => {\n\t\t\t\tthis.$refs['provider-list']?.focus()\n\t\t\t}, 300)\n\t\t},\n\t},\n}\n</script>\n\n<style lang=\"scss\" scoped>\n.reference-picker {\n\tdisplay: flex;\n\toverflow-y: auto;\n\twidth: 100%;\n\n\t.custom-element-wrapper {\n\t\tdisplay: flex;\n\t\toverflow-y: auto;\n\t\twidth: 100%;\n\t}\n}\n</style>\n","<!--\n - SPDX-FileCopyrightText: 2023 Nextcloud GmbH and Nextcloud contributors\n - SPDX-License-Identifier: AGPL-3.0-or-later\n-->\n\n<template>\n\t<NcModal v-if=\"show\"\n\t\t:size=\"modalSize\"\n\t\t:can-close=\"false\"\n\t\tclass=\"reference-picker-modal\"\n\t\t@close=\"onCancel\">\n\t\t<div ref=\"modal_content\"\n\t\t\tclass=\"reference-picker-modal--content\">\n\t\t\t<NcButton v-if=\"showBackButton\"\n\t\t\t\t:aria-label=\"backButtonTitle\"\n\t\t\t\t:title=\"backButtonTitle\"\n\t\t\t\tclass=\"back-button\"\n\t\t\t\t@click=\"onBackClicked\">\n\t\t\t\t<template #icon>\n\t\t\t\t\t<ArrowLeftIcon />\n\t\t\t\t</template>\n\t\t\t</NcButton>\n\t\t\t<NcButton :aria-label=\"closeButtonLabel\"\n\t\t\t\t:title=\"closeButtonTitle\"\n\t\t\t\ttype=\"tertiary\"\n\t\t\t\tclass=\"close-button\"\n\t\t\t\t@click=\"onCancel\">\n\t\t\t\t<template #icon>\n\t\t\t\t\t<CloseIcon />\n\t\t\t\t</template>\n\t\t\t</NcButton>\n\t\t\t<h2 v-if=\"showModalName\">\n\t\t\t\t{{ modalName }}\n\t\t\t</h2>\n\t\t\t<NcReferencePicker ref=\"referencePicker\"\n\t\t\t\t:initial-provider=\"initialProvider\"\n\t\t\t\t:focus-on-create=\"focusOnCreate\"\n\t\t\t\t@provider-selected=\"onProviderSelect\"\n\t\t\t\t@submit=\"onSubmit\"\n\t\t\t\t@cancel=\"onCancel\" />\n\t\t</div>\n\t</NcModal>\n</template>\n\n<script>\nimport NcReferencePicker from './NcReferencePicker.vue'\nimport { getCustomPickerElementSize, isCustomPickerElementRegistered } from './../../../functions/reference/customPickerElements.js'\nimport NcButton from '../../NcButton/index.ts'\nimport NcModal from '../../NcModal/index.js'\nimport { t } from '../../../l10n.js'\n\nimport { emit } from '@nextcloud/event-bus'\n\nimport ArrowLeftIcon from 'vue-material-design-icons/ArrowLeft.vue'\nimport CloseIcon from 'vue-material-design-icons/Close.vue'\n\nexport default {\n\tname: 'NcReferencePickerModal',\n\tcomponents: {\n\t\tNcReferencePicker,\n\t\tNcModal,\n\t\tNcButton,\n\t\tArrowLeftIcon,\n\t\tCloseIcon,\n\t},\n\tprops: {\n\t\t/**\n\t\t * Provider to select on creation\n\t\t * Show the provider list if no initial one is provided\n\t\t */\n\t\tinitialProvider: {\n\t\t\ttype: Object,\n\t\t\tdefault: () => null,\n\t\t},\n\t\t/**\n\t\t * Focus on the input item on create\n\t\t */\n\t\tfocusOnCreate: {\n\t\t\ttype: Boolean,\n\t\t\tdefault: true,\n\t\t},\n\t\t/**\n\t\t * If true, add the modal content to the Viewer trap elements via the event-bus\n\t\t */\n\t\tisInsideViewer: {\n\t\t\ttype: Boolean,\n\t\t\tdefault: false,\n\t\t},\n\t},\n\temits: [\n\t\t'cancel',\n\t\t'submit',\n\t],\n\tdata() {\n\t\treturn {\n\t\t\tshow: true,\n\t\t\tselectedProvider: this.initialProvider,\n\t\t\tbackButtonTitle: t('Back to provider selection'),\n\t\t\tcloseButtonTitle: t('Close'),\n\t\t\tcloseButtonLabel: t('Close Smart Picker'),\n\t\t}\n\t},\n\tcomputed: {\n\t\tisProviderSelected() {\n\t\t\treturn this.selectedProvider !== null\n\t\t},\n\t\tshowBackButton() {\n\t\t\treturn this.initialProvider === null && this.isProviderSelected\n\t\t},\n\t\tmodalSize() {\n\t\t\treturn this.isProviderSelected && isCustomPickerElementRegistered(this.selectedProvider.id)\n\t\t\t\t? (getCustomPickerElementSize(this.selectedProvider.id) ?? 'large')\n\t\t\t\t: 'normal'\n\t\t},\n\t\tshowModalName() {\n\t\t\treturn !this.isProviderSelected || !isCustomPickerElementRegistered(this.selectedProvider.id)\n\t\t},\n\t\tmodalName() {\n\t\t\treturn this.isProviderSelected\n\t\t\t\t? this.selectedProvider.title\n\t\t\t\t: t('Smart Picker')\n\t\t},\n\t},\n\tmounted() {\n\t\tif (this.isInsideViewer) {\n\t\t\tconst elem = this.$refs.modal_content\n\t\t\temit('viewer:trapElements:changed', elem)\n\t\t}\n\t},\n\tmethods: {\n\t\tonCancel() {\n\t\t\tthis.show = false\n\t\t\tthis.$emit('cancel')\n\t\t},\n\t\tonSubmit(value) {\n\t\t\tthis.show = false\n\t\t\tthis.$emit('submit', value)\n\t\t},\n\t\tonProviderSelect(provider) {\n\t\t\tthis.selectedProvider = provider\n\t\t\t// provider was deselected and we started with an inital one: just close the modal\n\t\t\tif (provider === null && this.initialProvider !== null) {\n\t\t\t\tthis.onCancel()\n\t\t\t}\n\t\t},\n\t\tonBackClicked() {\n\t\t\tthis.$refs.referencePicker.deselectProvider()\n\t\t},\n\t},\n}\n</script>\n\n<style lang=\"scss\">\n// this is to avoid scroll on the container and leave it to the result block\n.reference-picker-modal .modal-container {\n\tdisplay: flex !important;\n}\n</style>\n\n<style lang=\"scss\" scoped>\n.reference-picker-modal--content {\n\twidth: 100%;\n\tdisplay: flex;\n\tflex-direction: column;\n\talign-items: center;\n\tjustify-content: center;\n\toverflow-y: auto;\n\n\t.close-button,\n\t.back-button {\n\t\tposition: absolute;\n\t\ttop: 4px;\n\t}\n\t.back-button {\n\t\tleft: 4px;\n\t}\n\t.close-button {\n\t\tright: 4px;\n\t}\n\n\t> h2 {\n\t\tdisplay: flex;\n\t\tmargin: 12px 0 20px 0;\n\t\t.icon {\n\t\t\tmargin-right: 8px;\n\t\t}\n\t}\n}\n</style>\n","/**\n * SPDX-FileCopyrightText: 2023 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n\nimport NcReferencePickerModal from './../../components/NcRichText/NcReferencePicker/NcReferencePickerModal.vue'\nimport { getProvider } from './providerHelper.js'\n\nimport { createApp } from 'vue'\n\n/**\n * Creates a reference picker modal and return a promise which provides the result\n *\n * @param {string} providerId Optional ID of initial selected provider\n * @param {boolean} isInsideViewer Should be true if this function is called while the Viewer is displayed\n * @return {Promise<unknown>}\n */\nexport async function getLinkWithPicker(providerId = null, isInsideViewer = undefined) {\n\treturn await new Promise((resolve, reject) => {\n\t\tconst modalId = 'referencePickerModal'\n\t\tconst modalElement = document.createElement('div')\n\t\tmodalElement.id = modalId\n\t\tdocument.body.append(modalElement)\n\n\t\tconst initialProvider = providerId === null\n\t\t\t? null\n\t\t\t: (getProvider(providerId) ?? null)\n\n\t\tconst view = createApp(NcReferencePickerModal, {\n\t\t\tinitialProvider,\n\t\t\tisInsideViewer,\n\t\t\tonCancel() {\n\t\t\t\tview.unmount()\n\t\t\t\treject(new Error('User cancellation'))\n\t\t\t},\n\t\t\tonSubmit(link) {\n\t\t\t\tview.unmount()\n\t\t\t\tresolve(link)\n\t\t\t},\n\t\t})\n\t\tview.mount(modalElement)\n\t})\n}\n"],"names":["_sfc_main","_hoisted_1","_hoisted_2","_hoisted_3","_hoisted_4","_createElementBlock","_normalizeClass","_createBlock","_resolveDynamicComponent","_mergeProps","_withCtx","_createCommentVNode","_createElementVNode","_toDisplayString","_normalizeStyle","_createTextVNode","_openBlock","NcHighlight","_createVNode","_withKeys","_hoisted_5","DotsHorizontalIcon","_withModifiers","ArrowLeftIcon","CloseIcon"],"mappings":"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","x_google_ignoreList":[4]}
@@ -1,4 +1,4 @@
1
- import { G as GenColors } from "./GenColors-BidEIqUL.mjs";
1
+ import { G as GenColors } from "./GenColors-AKX06ocD.mjs";
2
2
  import md5 from "md5";
3
3
  const usernameToColor = function(username) {
4
4
  let hash = username.toLowerCase();
@@ -1 +1 @@
1
- {"version":3,"file":"usernameToColor-4ci35wWd.mjs","sources":["../../src/functions/usernameToColor/usernameToColor.js"],"sourcesContent":["/**\n * SPDX-FileCopyrightText: 2018 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n\nimport { GenColors } from '../../utils/GenColors.js'\n\nimport md5 from 'md5'\n\n/**\n * Originally taken from https://github.com/nextcloud/server/blob/master/core/js/placeholder.js\n *\n * @param {string} username Display name or user id to generate from\n * @return {object} the rgb colors as {r:255, g:255, b:255}\n */\nconst usernameToColor = function(username) {\n\t// Normalize hash\n\tlet hash = username.toLowerCase()\n\n\t// Already a md5 hash?\n\tif (hash.match(/^([0-9a-f]{4}-?){8}$/) === null) {\n\t\thash = md5(hash)\n\t}\n\n\thash = hash.replace(/[^0-9a-f]/g, '')\n\n\tconst steps = 6\n\tconst finalPalette = GenColors(steps)\n\n\t/**\n\t * Convert a string to an integer evenly\n\t *\n\t * @param {string} hash The hash to convert\n\t * @param {number} maximum Largest number allowed\n\t */\n\tfunction hashToInt(hash, maximum) {\n\t\tlet finalInt = 0\n\t\tconst result = []\n\n\t\t// Splitting evenly the string\n\t\tfor (let i = 0; i < hash.length; i++) {\n\t\t\t// chars in md5 goes up to f, hex:16\n\t\t\tresult.push(parseInt(hash.charAt(i), 16) % 16)\n\t\t}\n\n\t\t// Adds up all results\n\t\tfor (const j in result) {\n\t\t\tfinalInt += result[j]\n\t\t}\n\n\t\t// chars in md5 goes up to f, hex:16\n\t\t// make sure we're always using int in our operation\n\t\treturn parseInt(parseInt(finalInt, 10) % maximum, 10)\n\t}\n\treturn finalPalette[hashToInt(hash, steps * 3)]\n}\n\nexport default usernameToColor\n"],"names":["hash"],"mappings":";;AAeK,MAAC,kBAAkB,SAAS,UAAU;AAE1C,MAAI,OAAO,SAAS,YAAa;AAGjC,MAAI,KAAK,MAAM,sBAAsB,MAAM,MAAM;AAChD,WAAO,IAAI,IAAI;AAAA,EACf;AAED,SAAO,KAAK,QAAQ,cAAc,EAAE;AAEpC,QAAM,QAAQ;AACd,QAAM,eAAe,UAAU,KAAK;AAQpC,WAAS,UAAUA,OAAM,SAAS;AACjC,QAAI,WAAW;AACf,UAAM,SAAS,CAAE;AAGjB,aAAS,IAAI,GAAG,IAAIA,MAAK,QAAQ,KAAK;AAErC,aAAO,KAAK,SAASA,MAAK,OAAO,CAAC,GAAG,EAAE,IAAI,EAAE;AAAA,IAC7C;AAGD,eAAW,KAAK,QAAQ;AACvB,kBAAY,OAAO,CAAC;AAAA,IACpB;AAID,WAAO,SAAS,SAAS,UAAU,EAAE,IAAI,SAAS,EAAE;AAAA,EACpD;AACD,SAAO,aAAa,UAAU,MAAM,QAAQ,CAAC,CAAC;AAC/C;"}
1
+ {"version":3,"file":"usernameToColor-CEyHwgy-.mjs","sources":["../../src/functions/usernameToColor/usernameToColor.js"],"sourcesContent":["/**\n * SPDX-FileCopyrightText: 2018 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n\nimport { GenColors } from '../../utils/GenColors.js'\n\nimport md5 from 'md5'\n\n/**\n * Originally taken from https://github.com/nextcloud/server/blob/master/core/js/placeholder.js\n *\n * @param {string} username Display name or user id to generate from\n * @return {object} the rgb colors as {r:255, g:255, b:255}\n */\nconst usernameToColor = function(username) {\n\t// Normalize hash\n\tlet hash = username.toLowerCase()\n\n\t// Already a md5 hash?\n\tif (hash.match(/^([0-9a-f]{4}-?){8}$/) === null) {\n\t\thash = md5(hash)\n\t}\n\n\thash = hash.replace(/[^0-9a-f]/g, '')\n\n\tconst steps = 6\n\tconst finalPalette = GenColors(steps)\n\n\t/**\n\t * Convert a string to an integer evenly\n\t *\n\t * @param {string} hash The hash to convert\n\t * @param {number} maximum Largest number allowed\n\t */\n\tfunction hashToInt(hash, maximum) {\n\t\tlet finalInt = 0\n\t\tconst result = []\n\n\t\t// Splitting evenly the string\n\t\tfor (let i = 0; i < hash.length; i++) {\n\t\t\t// chars in md5 goes up to f, hex:16\n\t\t\tresult.push(parseInt(hash.charAt(i), 16) % 16)\n\t\t}\n\n\t\t// Adds up all results\n\t\tfor (const j in result) {\n\t\t\tfinalInt += result[j]\n\t\t}\n\n\t\t// chars in md5 goes up to f, hex:16\n\t\t// make sure we're always using int in our operation\n\t\treturn parseInt(parseInt(finalInt, 10) % maximum, 10)\n\t}\n\treturn finalPalette[hashToInt(hash, steps * 3)]\n}\n\nexport default usernameToColor\n"],"names":["hash"],"mappings":";;AAeK,MAAC,kBAAkB,SAAS,UAAU;AAE1C,MAAI,OAAO,SAAS,YAAa;AAGjC,MAAI,KAAK,MAAM,sBAAsB,MAAM,MAAM;AAChD,WAAO,IAAI,IAAI;AAAA,EACf;AAED,SAAO,KAAK,QAAQ,cAAc,EAAE;AAEpC,QAAM,QAAQ;AACd,QAAM,eAAe,UAAU,KAAK;AAQpC,WAAS,UAAUA,OAAM,SAAS;AACjC,QAAI,WAAW;AACf,UAAM,SAAS,CAAE;AAGjB,aAAS,IAAI,GAAG,IAAIA,MAAK,QAAQ,KAAK;AAErC,aAAO,KAAK,SAASA,MAAK,OAAO,CAAC,GAAG,EAAE,IAAI,EAAE;AAAA,IAC7C;AAGD,eAAW,KAAK,QAAQ;AACvB,kBAAY,OAAO,CAAC;AAAA,IACpB;AAID,WAAO,SAAS,SAAS,UAAU,EAAE,IAAI,SAAS,EAAE;AAAA,EACpD;AACD,SAAO,aAAa,UAAU,MAAM,QAAQ,CAAC,CAAC;AAC/C;"}
@@ -382,6 +382,7 @@ declare const _default: import('vue').DefineComponent<{
382
382
  type: string;
383
383
  ariaLabel: string;
384
384
  ariaHidden: boolean;
385
+ inline: number;
385
386
  placement: string;
386
387
  container: string | boolean | Record<string, any> | Element;
387
388
  open: boolean;
@@ -391,6 +392,5 @@ declare const _default: import('vue').DefineComponent<{
391
392
  menuName: string;
392
393
  defaultIcon: string;
393
394
  boundariesElement: Element;
394
- inline: number;
395
395
  }, {}>;
396
396
  export default _default;
@@ -1,73 +1,10 @@
1
- declare const _default: import('vue').DefineComponent<{
2
- name: {
3
- type: StringConstructor;
4
- required: true;
1
+ declare const _default: import('vue').DefineComponent<any, any, any, {
2
+ actionsProps(): {
3
+ [k: string]: any;
5
4
  };
6
- /**
7
- * `id` to set on the inner caption
8
- * Can be used for connecting the `NcActionCaption` with `NcActionList` using `aria-labelledby`.
9
- */
10
- headingId: {
11
- type: StringConstructor;
12
- default: null;
13
- };
14
- /**
15
- * Enable when used as a heading
16
- * e.g. Before NcAppNavigationList
17
- */
18
- isHeading: {
19
- type: BooleanConstructor;
20
- default: boolean;
21
- };
22
- /**
23
- * If `isHeading` is set, this defines the heading level that should be used
24
- */
25
- headingLevel: {
26
- type: NumberConstructor;
27
- default: number;
28
- };
29
- /**
30
- * Any [NcActions](#/Components/NcActions?id=ncactions-1) prop
31
- */
32
- ' ': {};
33
- }, any, any, {
34
5
  wrapperTag(): "div" | "li";
35
6
  captionTag(): string;
36
- }, {}, import('vue').ComponentOptionsMixin, import('vue').ComponentOptionsMixin, {}, string, import('vue').PublicProps, Readonly<import('vue').ExtractPropTypes<{
37
- name: {
38
- type: StringConstructor;
39
- required: true;
40
- };
41
- /**
42
- * `id` to set on the inner caption
43
- * Can be used for connecting the `NcActionCaption` with `NcActionList` using `aria-labelledby`.
44
- */
45
- headingId: {
46
- type: StringConstructor;
47
- default: null;
48
- };
49
- /**
50
- * Enable when used as a heading
51
- * e.g. Before NcAppNavigationList
52
- */
53
- isHeading: {
54
- type: BooleanConstructor;
55
- default: boolean;
56
- };
57
- /**
58
- * If `isHeading` is set, this defines the heading level that should be used
59
- */
60
- headingLevel: {
61
- type: NumberConstructor;
62
- default: number;
63
- };
64
- /**
65
- * Any [NcActions](#/Components/NcActions?id=ncactions-1) prop
66
- */
67
- ' ': {};
68
- }>>, {
69
- headingId: string;
70
- isHeading: boolean;
71
- headingLevel: number;
7
+ }, {}, import('vue').ComponentOptionsMixin, import('vue').ComponentOptionsMixin, {}, string, import('vue').PublicProps, Readonly<any>, {} | {
8
+ [x: string]: any;
72
9
  }, {}>;
73
10
  export default _default;
@@ -396,6 +396,7 @@ declare const _default: import('vue').DefineComponent<{
396
396
  ariaDescription: string;
397
397
  open: boolean;
398
398
  forceMenu: boolean;
399
+ inlineActions: number;
399
400
  undo: boolean;
400
401
  loading: boolean;
401
402
  active: boolean;
@@ -408,6 +409,5 @@ declare const _default: import('vue').DefineComponent<{
408
409
  menuIcon: string;
409
410
  menuPlacement: string;
410
411
  forceDisplayActions: boolean;
411
- inlineActions: number;
412
412
  }, {}>;
413
413
  export default _default;
@@ -83,6 +83,13 @@ declare const _default: import('vue').DefineComponent<{
83
83
  type: BooleanConstructor;
84
84
  default: boolean;
85
85
  };
86
+ /**
87
+ * Force the tab navigation to display even if there is only one tab
88
+ */
89
+ forceTabs: {
90
+ type: BooleanConstructor;
91
+ default: boolean;
92
+ };
86
93
  /**
87
94
  * Linkify the name
88
95
  */
@@ -294,6 +301,13 @@ declare const _default: import('vue').DefineComponent<{
294
301
  type: BooleanConstructor;
295
302
  default: boolean;
296
303
  };
304
+ /**
305
+ * Force the tab navigation to display even if there is only one tab
306
+ */
307
+ forceTabs: {
308
+ type: BooleanConstructor;
309
+ default: boolean;
310
+ };
297
311
  /**
298
312
  * Linkify the name
299
313
  */
@@ -363,6 +377,7 @@ declare const _default: import('vue').DefineComponent<{
363
377
  subname: string;
364
378
  loading: boolean;
365
379
  active: string;
380
+ forceTabs: boolean;
366
381
  nameEditable: boolean;
367
382
  namePlaceholder: string;
368
383
  subtitle: string;
@@ -6,6 +6,13 @@ declare const _default: import('vue').DefineComponent<{
6
6
  type: StringConstructor;
7
7
  default: string;
8
8
  };
9
+ /**
10
+ * Force the tab navigation to display even if there is only one tab
11
+ */
12
+ forceTabs: {
13
+ type: BooleanConstructor;
14
+ default: boolean;
15
+ };
9
16
  }, any, {
10
17
  /**
11
18
  * Tab descriptions from the passed NcSidebarTab components' props to build the tab navbar from.
@@ -22,6 +29,7 @@ declare const _default: import('vue').DefineComponent<{
22
29
  * @return {boolean}
23
30
  */
24
31
  hasMultipleTabs(): boolean;
32
+ showForSingleTab(): any;
25
33
  currentTabIndex(): number;
26
34
  }, {
27
35
  /**
@@ -83,9 +91,17 @@ declare const _default: import('vue').DefineComponent<{
83
91
  type: StringConstructor;
84
92
  default: string;
85
93
  };
94
+ /**
95
+ * Force the tab navigation to display even if there is only one tab
96
+ */
97
+ forceTabs: {
98
+ type: BooleanConstructor;
99
+ default: boolean;
100
+ };
86
101
  }>> & {
87
102
  "onUpdate:active"?: ((...args: any[]) => any) | undefined;
88
103
  }, {
89
104
  active: string;
105
+ forceTabs: boolean;
90
106
  }, {}>;
91
107
  export default _default;
@@ -451,12 +451,12 @@ declare const _default: import('vue').DefineComponent<{
451
451
  size: number;
452
452
  user: string;
453
453
  url: string;
454
+ displayName: string;
454
455
  iconClass: string;
455
456
  showUserStatus: boolean;
456
457
  showUserStatusCompact: boolean;
457
458
  preloadedUserStatus: Record<string, any>;
458
459
  isGuest: boolean;
459
- displayName: string;
460
460
  allowPlaceholder: boolean;
461
461
  disableTooltip: boolean;
462
462
  disableMenu: boolean;