@nextcloud/vue 8.29.2 → 8.30.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +9 -0
- package/dist/Components/NcActionButton.cjs +1 -1
- package/dist/Components/NcActionButton.mjs +1 -1
- package/dist/Components/NcActionInput.cjs +1 -1
- package/dist/Components/NcActionInput.mjs +1 -1
- package/dist/Components/NcActionTextEditable.cjs +1 -1
- package/dist/Components/NcActionTextEditable.mjs +1 -1
- package/dist/Components/NcActions.cjs +1 -1
- package/dist/Components/NcActions.mjs +1 -1
- package/dist/Components/NcAppNavigationCaption.cjs +1 -1
- package/dist/Components/NcAppNavigationCaption.mjs +1 -1
- package/dist/Components/NcAppNavigationItem.cjs +1 -1
- package/dist/Components/NcAppNavigationItem.mjs +1 -1
- package/dist/Components/NcAppNavigationSettings.cjs +1 -1
- package/dist/Components/NcAppNavigationSettings.mjs +1 -1
- package/dist/Components/NcAppSidebar.cjs +1 -1
- package/dist/Components/NcAppSidebar.mjs +1 -1
- package/dist/Components/NcAssistantButton.cjs +4 -0
- package/dist/Components/NcAssistantButton.cjs.map +1 -0
- package/dist/Components/NcAssistantButton.mjs +5 -0
- package/dist/Components/NcAssistantButton.mjs.map +1 -0
- package/dist/Components/NcAssistantContent.cjs +50 -0
- package/dist/Components/NcAssistantContent.cjs.map +1 -0
- package/dist/Components/NcAssistantContent.mjs +51 -0
- package/dist/Components/NcAssistantContent.mjs.map +1 -0
- package/dist/Components/NcAssistantIcon.cjs +4 -0
- package/dist/Components/NcAssistantIcon.cjs.map +1 -0
- package/dist/Components/NcAssistantIcon.mjs +5 -0
- package/dist/Components/NcAssistantIcon.mjs.map +1 -0
- package/dist/Components/NcAvatar.cjs +1 -1
- package/dist/Components/NcAvatar.mjs +1 -1
- package/dist/Components/NcBreadcrumb.cjs +1 -1
- package/dist/Components/NcBreadcrumb.mjs +1 -1
- package/dist/Components/NcBreadcrumbs.cjs +1 -1
- package/dist/Components/NcBreadcrumbs.mjs +1 -1
- package/dist/Components/NcCheckboxRadioSwitch.cjs +1 -1
- package/dist/Components/NcCheckboxRadioSwitch.mjs +1 -1
- package/dist/Components/NcChip.cjs +3 -3
- package/dist/Components/NcChip.mjs +3 -3
- package/dist/Components/NcCollectionList.cjs +1 -1
- package/dist/Components/NcCollectionList.mjs +1 -1
- package/dist/Components/NcColorPicker.cjs +1 -1
- package/dist/Components/NcColorPicker.mjs +1 -1
- package/dist/Components/NcDashboardWidget.cjs +1 -1
- package/dist/Components/NcDashboardWidget.mjs +1 -1
- package/dist/Components/NcDashboardWidgetItem.cjs +1 -1
- package/dist/Components/NcDashboardWidgetItem.mjs +1 -1
- package/dist/Components/NcDateTimePicker.cjs +4 -4
- package/dist/Components/NcDateTimePicker.mjs +4 -4
- package/dist/Components/NcDateTimePickerNative.cjs +1 -1
- package/dist/Components/NcDateTimePickerNative.mjs +1 -1
- package/dist/Components/NcEmojiPicker.cjs +1 -1
- package/dist/Components/NcEmojiPicker.mjs +1 -1
- package/dist/Components/NcListItem.cjs +1 -1
- package/dist/Components/NcListItem.mjs +1 -1
- package/dist/Components/NcListItemIcon.cjs +1 -1
- package/dist/Components/NcListItemIcon.mjs +1 -1
- package/dist/Components/NcModal.cjs +3 -3
- package/dist/Components/NcModal.mjs +3 -3
- package/dist/Components/NcPopover.cjs +1 -1
- package/dist/Components/NcPopover.mjs +1 -1
- package/dist/Components/NcRichContenteditable.cjs +1 -1
- package/dist/Components/NcRichContenteditable.mjs +1 -1
- package/dist/Components/NcRichText.cjs +10 -10
- package/dist/Components/NcRichText.mjs +10 -10
- package/dist/Components/NcSelect.cjs +1 -1
- package/dist/Components/NcSelect.mjs +1 -1
- package/dist/Components/NcSelectTags.cjs +1 -1
- package/dist/Components/NcSelectTags.mjs +1 -1
- package/dist/Components/NcSelectUsers.cjs +1 -1
- package/dist/Components/NcSelectUsers.mjs +1 -1
- package/dist/Components/NcSettingsSelectGroup.cjs +1 -1
- package/dist/Components/NcSettingsSelectGroup.mjs +1 -1
- package/dist/Components/NcTextField.cjs +1 -1
- package/dist/Components/NcTextField.mjs +1 -1
- package/dist/Components/NcTimezonePicker.cjs +1 -1
- package/dist/Components/NcTimezonePicker.mjs +1 -1
- package/dist/Components/NcUserBubble.cjs +1 -1
- package/dist/Components/NcUserBubble.mjs +1 -1
- package/dist/Functions/reference.cjs +10 -10
- package/dist/Functions/reference.mjs +7 -7
- package/dist/Functions/registerReference.cjs +11 -11
- package/dist/Functions/registerReference.mjs +5 -5
- package/dist/assets/{NcActions-CXnDIMae.css → NcActions-Bjgv1Dku.css} +11 -11
- package/dist/assets/NcAssistantButton-owGSr0s0.css +54 -0
- package/dist/assets/NcAssistantContent-Ban7n3Bg.css +31 -0
- package/dist/assets/NcAssistantIcon-BFNU0uqH.css +35 -0
- package/dist/assets/{NcCheckboxRadioSwitch-DqEP1SPR.css → NcCheckboxRadioSwitch-CC2zuvLL.css} +53 -43
- package/dist/assets/{NcDateTimePicker-FNnAz7ls.css → NcDateTimePicker-Ce57VAyL.css} +7 -7
- package/dist/assets/{referencePickerModal-BgSz7IyB.css → referencePickerModal-DrvqNTIf.css} +21 -21
- package/dist/chunks/{NcActionButton-D_9FsTpM.cjs → NcActionButton-BhSk7AAp.cjs} +2 -2
- package/dist/chunks/{NcActionButton-D_9FsTpM.cjs.map → NcActionButton-BhSk7AAp.cjs.map} +1 -1
- package/dist/chunks/{NcActionButton-rjMoymt-.mjs → NcActionButton-DC3oAI2L.mjs} +2 -2
- package/dist/chunks/{NcActionButton-rjMoymt-.mjs.map → NcActionButton-DC3oAI2L.mjs.map} +1 -1
- package/dist/chunks/{NcActionInput-CQ_WEPqQ.mjs → NcActionInput-B5ysJl2S.mjs} +2 -2
- package/dist/chunks/{NcActionInput-CQ_WEPqQ.mjs.map → NcActionInput-B5ysJl2S.mjs.map} +1 -1
- package/dist/chunks/{NcActionInput-CA9bOHxb.cjs → NcActionInput-DdaafMi8.cjs} +2 -2
- package/dist/chunks/{NcActionInput-CA9bOHxb.cjs.map → NcActionInput-DdaafMi8.cjs.map} +1 -1
- package/dist/chunks/{NcActionTextEditable-B4g2kszt.cjs → NcActionTextEditable-CTXGUIPM.cjs} +2 -2
- package/dist/chunks/{NcActionTextEditable-B4g2kszt.cjs.map → NcActionTextEditable-CTXGUIPM.cjs.map} +1 -1
- package/dist/chunks/{NcActionTextEditable-xWQGdOVl.mjs → NcActionTextEditable-CpxJ_LEa.mjs} +2 -2
- package/dist/chunks/{NcActionTextEditable-xWQGdOVl.mjs.map → NcActionTextEditable-CpxJ_LEa.mjs.map} +1 -1
- package/dist/chunks/{NcActions-B76VN_Gz.cjs → NcActions-DRCkAU8h.cjs} +5 -5
- package/dist/chunks/{NcActions-B76VN_Gz.cjs.map → NcActions-DRCkAU8h.cjs.map} +1 -1
- package/dist/chunks/{NcActions-BKZA1xVL.mjs → NcActions-DdARGGZ_.mjs} +5 -5
- package/dist/chunks/{NcActions-BKZA1xVL.mjs.map → NcActions-DdARGGZ_.mjs.map} +1 -1
- package/dist/chunks/{NcAppNavigationCaption-CjOJyYIY.cjs → NcAppNavigationCaption-BpmzZDPj.cjs} +2 -2
- package/dist/chunks/{NcAppNavigationCaption-CjOJyYIY.cjs.map → NcAppNavigationCaption-BpmzZDPj.cjs.map} +1 -1
- package/dist/chunks/{NcAppNavigationCaption-hDsiQMLr.mjs → NcAppNavigationCaption-O4l8dFkh.mjs} +2 -2
- package/dist/chunks/{NcAppNavigationCaption-hDsiQMLr.mjs.map → NcAppNavigationCaption-O4l8dFkh.mjs.map} +1 -1
- package/dist/chunks/{NcAppNavigationItem-NIMhmJHh.mjs → NcAppNavigationItem-BFF0p136.mjs} +3 -3
- package/dist/chunks/{NcAppNavigationItem-NIMhmJHh.mjs.map → NcAppNavigationItem-BFF0p136.mjs.map} +1 -1
- package/dist/chunks/{NcAppNavigationItem-Cu3S2chM.cjs → NcAppNavigationItem-D1CEGuhm.cjs} +3 -3
- package/dist/chunks/{NcAppNavigationItem-Cu3S2chM.cjs.map → NcAppNavigationItem-D1CEGuhm.cjs.map} +1 -1
- package/dist/chunks/{NcAppNavigationSettings-C8YaW_Kj.cjs → NcAppNavigationSettings-DV5ZnR2s.cjs} +2 -2
- package/dist/chunks/{NcAppNavigationSettings-C8YaW_Kj.cjs.map → NcAppNavigationSettings-DV5ZnR2s.cjs.map} +1 -1
- package/dist/chunks/{NcAppNavigationSettings-BV34ogWP.mjs → NcAppNavigationSettings-Do0e5oWy.mjs} +2 -2
- package/dist/chunks/{NcAppNavigationSettings-BV34ogWP.mjs.map → NcAppNavigationSettings-Do0e5oWy.mjs.map} +1 -1
- package/dist/chunks/{NcAppSidebar-BJgPYOcZ.mjs → NcAppSidebar-AR-D7HSj.mjs} +3 -3
- package/dist/chunks/{NcAppSidebar-BJgPYOcZ.mjs.map → NcAppSidebar-AR-D7HSj.mjs.map} +1 -1
- package/dist/chunks/{NcAppSidebar-Dbvy4M4h.cjs → NcAppSidebar-Cvyq-kN5.cjs} +3 -3
- package/dist/chunks/{NcAppSidebar-Dbvy4M4h.cjs.map → NcAppSidebar-Cvyq-kN5.cjs.map} +1 -1
- package/dist/chunks/NcAssistantButton-Ck1NUjhl.mjs +97 -0
- package/dist/chunks/NcAssistantButton-Ck1NUjhl.mjs.map +1 -0
- package/dist/chunks/NcAssistantButton-gD3MKoYS.cjs +96 -0
- package/dist/chunks/NcAssistantButton-gD3MKoYS.cjs.map +1 -0
- package/dist/chunks/NcAssistantIcon-D_xelcY2.cjs +68 -0
- package/dist/chunks/NcAssistantIcon-D_xelcY2.cjs.map +1 -0
- package/dist/chunks/NcAssistantIcon-tjSguP9N.mjs +69 -0
- package/dist/chunks/NcAssistantIcon-tjSguP9N.mjs.map +1 -0
- package/dist/chunks/{NcAvatar-CgF-MFtU.mjs → NcAvatar-BEIBwiA6.mjs} +3 -3
- package/dist/chunks/{NcAvatar-CgF-MFtU.mjs.map → NcAvatar-BEIBwiA6.mjs.map} +1 -1
- package/dist/chunks/{NcAvatar-DThzrxm-.cjs → NcAvatar-DS1H-VrZ.cjs} +3 -3
- package/dist/chunks/{NcAvatar-DThzrxm-.cjs.map → NcAvatar-DS1H-VrZ.cjs.map} +1 -1
- package/dist/chunks/{NcBreadcrumb-DJpYjXCe.mjs → NcBreadcrumb-BYYXWaif.mjs} +2 -2
- package/dist/chunks/{NcBreadcrumb-DJpYjXCe.mjs.map → NcBreadcrumb-BYYXWaif.mjs.map} +1 -1
- package/dist/chunks/{NcBreadcrumb-86ycrDeH.cjs → NcBreadcrumb-HtgcEJgs.cjs} +2 -2
- package/dist/chunks/{NcBreadcrumb-86ycrDeH.cjs.map → NcBreadcrumb-HtgcEJgs.cjs.map} +1 -1
- package/dist/chunks/{NcBreadcrumbs-CBMTGNxS.cjs → NcBreadcrumbs-CQcnjGJO.cjs} +4 -4
- package/dist/chunks/{NcBreadcrumbs-CBMTGNxS.cjs.map → NcBreadcrumbs-CQcnjGJO.cjs.map} +1 -1
- package/dist/chunks/{NcBreadcrumbs-B722pBOd.mjs → NcBreadcrumbs-cj5ip2-X.mjs} +4 -4
- package/dist/chunks/{NcBreadcrumbs-B722pBOd.mjs.map → NcBreadcrumbs-cj5ip2-X.mjs.map} +1 -1
- package/dist/chunks/{NcCheckboxRadioSwitch-kdoDmLpF.cjs → NcCheckboxRadioSwitch-B-lXOnEF.cjs} +37 -8
- package/dist/chunks/NcCheckboxRadioSwitch-B-lXOnEF.cjs.map +1 -0
- package/dist/chunks/{NcCheckboxRadioSwitch-ip_mRd2T.mjs → NcCheckboxRadioSwitch-DqdNvkCt.mjs} +37 -8
- package/dist/chunks/NcCheckboxRadioSwitch-DqdNvkCt.mjs.map +1 -0
- package/dist/chunks/{NcCollectionList-Khg3X3Zq.mjs → NcCollectionList-CLv50tJ3.mjs} +5 -5
- package/dist/chunks/{NcCollectionList-Khg3X3Zq.mjs.map → NcCollectionList-CLv50tJ3.mjs.map} +1 -1
- package/dist/chunks/{NcCollectionList-C-FWulfV.cjs → NcCollectionList-DXNSOjPG.cjs} +5 -5
- package/dist/chunks/{NcCollectionList-C-FWulfV.cjs.map → NcCollectionList-DXNSOjPG.cjs.map} +1 -1
- package/dist/chunks/{NcColorPicker-MXMbRaLk.mjs → NcColorPicker-52xaYx9k.mjs} +3 -3
- package/dist/chunks/{NcColorPicker-MXMbRaLk.mjs.map → NcColorPicker-52xaYx9k.mjs.map} +1 -1
- package/dist/chunks/{NcColorPicker-C3lzQVxY.cjs → NcColorPicker-CbiIpVlT.cjs} +3 -3
- package/dist/chunks/{NcColorPicker-C3lzQVxY.cjs.map → NcColorPicker-CbiIpVlT.cjs.map} +1 -1
- package/dist/chunks/{NcDashboardWidget-D0cFVt4i.mjs → NcDashboardWidget-809lybR1.mjs} +3 -3
- package/dist/chunks/{NcDashboardWidget-D0cFVt4i.mjs.map → NcDashboardWidget-809lybR1.mjs.map} +1 -1
- package/dist/chunks/{NcDashboardWidget-DD_fZTj6.cjs → NcDashboardWidget-DhJAJn-_.cjs} +3 -3
- package/dist/chunks/{NcDashboardWidget-DD_fZTj6.cjs.map → NcDashboardWidget-DhJAJn-_.cjs.map} +1 -1
- package/dist/chunks/{NcDashboardWidgetItem-D33MR-DH.mjs → NcDashboardWidgetItem-6JbU9gp1.mjs} +4 -4
- package/dist/chunks/{NcDashboardWidgetItem-D33MR-DH.mjs.map → NcDashboardWidgetItem-6JbU9gp1.mjs.map} +1 -1
- package/dist/chunks/{NcDashboardWidgetItem-BiH7ivQn.cjs → NcDashboardWidgetItem-CgO8qJUQ.cjs} +4 -4
- package/dist/chunks/{NcDashboardWidgetItem-BiH7ivQn.cjs.map → NcDashboardWidgetItem-CgO8qJUQ.cjs.map} +1 -1
- package/dist/chunks/{NcEmojiPicker-C2-Q-RoT.cjs → NcEmojiPicker-CdH7bAGd.cjs} +4 -4
- package/dist/chunks/{NcEmojiPicker-C2-Q-RoT.cjs.map → NcEmojiPicker-CdH7bAGd.cjs.map} +1 -1
- package/dist/chunks/{NcEmojiPicker-DJHvkF--.mjs → NcEmojiPicker-CyZg0bCF.mjs} +4 -4
- package/dist/chunks/{NcEmojiPicker-DJHvkF--.mjs.map → NcEmojiPicker-CyZg0bCF.mjs.map} +1 -1
- package/dist/chunks/{NcListItem-DV4HPJWQ.cjs → NcListItem-Bx9qm5xC.cjs} +2 -2
- package/dist/chunks/{NcListItem-DV4HPJWQ.cjs.map → NcListItem-Bx9qm5xC.cjs.map} +1 -1
- package/dist/chunks/{NcListItem-CnxZixD_.mjs → NcListItem-CifyXFmv.mjs} +2 -2
- package/dist/chunks/{NcListItem-CnxZixD_.mjs.map → NcListItem-CifyXFmv.mjs.map} +1 -1
- package/dist/chunks/{NcListItemIcon-CTfYEjBB.mjs → NcListItemIcon-CZrilo88.mjs} +2 -2
- package/dist/chunks/{NcListItemIcon-CTfYEjBB.mjs.map → NcListItemIcon-CZrilo88.mjs.map} +1 -1
- package/dist/chunks/{NcListItemIcon-BUthbF_v.cjs → NcListItemIcon-DMhlNuU9.cjs} +2 -2
- package/dist/chunks/{NcListItemIcon-BUthbF_v.cjs.map → NcListItemIcon-DMhlNuU9.cjs.map} +1 -1
- package/dist/chunks/{NcPopover-QGSKWhSP.cjs → NcPopover-DjeDGPXc.cjs} +21 -6
- package/dist/chunks/NcPopover-DjeDGPXc.cjs.map +1 -0
- package/dist/chunks/{NcPopover-CAJVK-MR.mjs → NcPopover-DxTXnL3u.mjs} +21 -6
- package/dist/chunks/NcPopover-DxTXnL3u.mjs.map +1 -0
- package/dist/chunks/{NcRichContenteditable-cpptFUeI.mjs → NcRichContenteditable-CMQnS1Wz.mjs} +6 -6
- package/dist/chunks/{NcRichContenteditable-cpptFUeI.mjs.map → NcRichContenteditable-CMQnS1Wz.mjs.map} +1 -1
- package/dist/chunks/{NcRichContenteditable-B5-V1mov.cjs → NcRichContenteditable-DtkaJmwG.cjs} +6 -6
- package/dist/chunks/{NcRichContenteditable-B5-V1mov.cjs.map → NcRichContenteditable-DtkaJmwG.cjs.map} +1 -1
- package/dist/chunks/{NcRichText-DKesJDDM.cjs → NcRichText-7B9lDtoo.cjs} +3 -3
- package/dist/chunks/{NcRichText-DKesJDDM.cjs.map → NcRichText-7B9lDtoo.cjs.map} +1 -1
- package/dist/chunks/{NcRichText-CmuVmSzl.mjs → NcRichText-MMeidJmP.mjs} +3 -3
- package/dist/chunks/{NcRichText-CmuVmSzl.mjs.map → NcRichText-MMeidJmP.mjs.map} +1 -1
- package/dist/chunks/{NcSelect-CnLfkqdF.cjs → NcSelect-CrxryIo3.cjs} +2 -2
- package/dist/chunks/{NcSelect-CnLfkqdF.cjs.map → NcSelect-CrxryIo3.cjs.map} +1 -1
- package/dist/chunks/{NcSelect-BUOuXJUQ.mjs → NcSelect-okD5YTJq.mjs} +2 -2
- package/dist/chunks/{NcSelect-BUOuXJUQ.mjs.map → NcSelect-okD5YTJq.mjs.map} +1 -1
- package/dist/chunks/{NcSelectTags-hP98xYkg.mjs → NcSelectTags-BPxmiMto.mjs} +2 -2
- package/dist/chunks/{NcSelectTags-hP98xYkg.mjs.map → NcSelectTags-BPxmiMto.mjs.map} +1 -1
- package/dist/chunks/{NcSelectTags-D9-2HA1H.cjs → NcSelectTags-BZqBdSqC.cjs} +2 -2
- package/dist/chunks/{NcSelectTags-D9-2HA1H.cjs.map → NcSelectTags-BZqBdSqC.cjs.map} +1 -1
- package/dist/chunks/{NcSelectUsers-arPrkqH_.cjs → NcSelectUsers-CshAjqE_.cjs} +3 -3
- package/dist/chunks/{NcSelectUsers-arPrkqH_.cjs.map → NcSelectUsers-CshAjqE_.cjs.map} +1 -1
- package/dist/chunks/{NcSelectUsers-DaHVPRPE.mjs → NcSelectUsers-DK3EtvnG.mjs} +3 -3
- package/dist/chunks/{NcSelectUsers-DaHVPRPE.mjs.map → NcSelectUsers-DK3EtvnG.mjs.map} +1 -1
- package/dist/chunks/{NcSettingsSelectGroup-SuQNKdqU.mjs → NcSettingsSelectGroup-CUUKv6lH.mjs} +2 -2
- package/dist/chunks/{NcSettingsSelectGroup-SuQNKdqU.mjs.map → NcSettingsSelectGroup-CUUKv6lH.mjs.map} +1 -1
- package/dist/chunks/{NcSettingsSelectGroup-D0s0bzQI.cjs → NcSettingsSelectGroup-Dd04CVAM.cjs} +2 -2
- package/dist/chunks/{NcSettingsSelectGroup-D0s0bzQI.cjs.map → NcSettingsSelectGroup-Dd04CVAM.cjs.map} +1 -1
- package/dist/chunks/{NcTextField-Dyuxj4yu.cjs → NcTextField-DDJqk3SI.cjs} +2 -2
- package/dist/chunks/{NcTextField-Dyuxj4yu.cjs.map → NcTextField-DDJqk3SI.cjs.map} +1 -1
- package/dist/chunks/{NcTextField-Do6wBDGH.mjs → NcTextField-eKuP0G6I.mjs} +2 -2
- package/dist/chunks/{NcTextField-Do6wBDGH.mjs.map → NcTextField-eKuP0G6I.mjs.map} +1 -1
- package/dist/chunks/{NcTimezonePicker-bIwFQlmV.mjs → NcTimezonePicker-BbqblRd7.mjs} +2 -2
- package/dist/chunks/{NcTimezonePicker-bIwFQlmV.mjs.map → NcTimezonePicker-BbqblRd7.mjs.map} +1 -1
- package/dist/chunks/{NcTimezonePicker-obgDIrK0.cjs → NcTimezonePicker-DV_arh0f.cjs} +2 -2
- package/dist/chunks/{NcTimezonePicker-obgDIrK0.cjs.map → NcTimezonePicker-DV_arh0f.cjs.map} +1 -1
- package/dist/chunks/{NcUserBubble-BmPOx3MW.mjs → NcUserBubble-C7XtYsrf.mjs} +3 -3
- package/dist/chunks/{NcUserBubble-BmPOx3MW.mjs.map → NcUserBubble-C7XtYsrf.mjs.map} +1 -1
- package/dist/chunks/{NcUserBubble-BusyVqGW.cjs → NcUserBubble-DuyMsPzl.cjs} +3 -3
- package/dist/chunks/{NcUserBubble-BusyVqGW.cjs.map → NcUserBubble-DuyMsPzl.cjs.map} +1 -1
- package/dist/chunks/{ScopeComponent-CNZNqO-O.mjs → ScopeComponent-B_NOkzpc.mjs} +2 -2
- package/dist/chunks/{ScopeComponent-CNZNqO-O.mjs.map → ScopeComponent-B_NOkzpc.mjs.map} +1 -1
- package/dist/chunks/{ScopeComponent-CTlekHht.cjs → ScopeComponent-CbzbU6pi.cjs} +2 -2
- package/dist/chunks/{ScopeComponent-CTlekHht.cjs.map → ScopeComponent-CbzbU6pi.cjs.map} +1 -1
- package/dist/chunks/{index-56SXuvlv.mjs → customPickerElements-CH9vlHLd.mjs} +47 -46
- package/dist/chunks/customPickerElements-CH9vlHLd.mjs.map +1 -0
- package/dist/chunks/{index-BV85rPB7.cjs → customPickerElements-Q3Y7fgZ1.cjs} +42 -41
- package/dist/chunks/customPickerElements-Q3Y7fgZ1.cjs.map +1 -0
- package/dist/chunks/{mdi-B_QN3oas.cjs → mdi-BBwE-MZC.cjs} +3 -1
- package/dist/chunks/{mdi-B_QN3oas.cjs.map → mdi-BBwE-MZC.cjs.map} +1 -1
- package/dist/chunks/{mdi-DoaiuWye.mjs → mdi-DXu6GWVJ.mjs} +8 -6
- package/dist/chunks/{mdi-DoaiuWye.mjs.map → mdi-DXu6GWVJ.mjs.map} +1 -1
- package/dist/chunks/{referencePickerModal-CtMUY45l.mjs → referencePickerModal-B2nPzrke.mjs} +45 -51
- package/dist/chunks/referencePickerModal-B2nPzrke.mjs.map +1 -0
- package/dist/chunks/{referencePickerModal-C1Srl207.cjs → referencePickerModal-BINQW-pL.cjs} +53 -59
- package/dist/chunks/referencePickerModal-BINQW-pL.cjs.map +1 -0
- package/dist/components/NcAssistantButton/index.d.ts +5 -0
- package/dist/components/NcAssistantContent/index.d.ts +5 -0
- package/dist/components/NcAssistantIcon/index.d.ts +5 -0
- package/dist/functions/reference/customPickerElements.d.ts +56 -0
- package/dist/functions/reference/index.d.ts +8 -0
- package/dist/functions/reference/providerHelper.d.ts +45 -0
- package/dist/functions/reference/referencePickerModal.d.ts +11 -0
- package/dist/functions/reference/widgets.d.ts +47 -28
- package/dist/functions/registerReference/index.d.ts +6 -0
- package/dist/index.cjs +48 -39
- package/dist/index.cjs.map +1 -1
- package/dist/index.mjs +46 -37
- package/dist/index.mjs.map +1 -1
- package/package.json +1 -1
- package/dist/chunks/NcCheckboxRadioSwitch-ip_mRd2T.mjs.map +0 -1
- package/dist/chunks/NcCheckboxRadioSwitch-kdoDmLpF.cjs.map +0 -1
- package/dist/chunks/NcPopover-CAJVK-MR.mjs.map +0 -1
- package/dist/chunks/NcPopover-QGSKWhSP.cjs.map +0 -1
- package/dist/chunks/index-56SXuvlv.mjs.map +0 -1
- package/dist/chunks/index-BV85rPB7.cjs.map +0 -1
- package/dist/chunks/referencePickerModal-C1Srl207.cjs.map +0 -1
- package/dist/chunks/referencePickerModal-CtMUY45l.mjs.map +0 -1
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"referencePickerModal-BINQW-pL.cjs","sources":["../../src/components/NcRichText/NcReferenceWidget.vue","../../src/components/NcRichText/NcReferencePicker/NcCustomPickerElement.vue","../../src/functions/reference/providerHelper.ts","../../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.ts"],"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.js'\nimport { renderWidget, isWidgetRegistered, destroyWidget, hasInteractiveView, hasFullWidth } from './../../functions/reference/widgets.ts'\n\nimport NcButton from '../../components/NcButton/index.js'\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\tbeforeDestroy() {\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\twidget.style = 'width: 100%;'\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-container);\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\tinset-inline-start: 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;\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\tbottom: var(--default-grid-baseline);\n\t\tinset-inline-end: var(--default-grid-baseline);\n\t\tz-index: 10000;\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 {\n\trenderCustomPickerElement,\n\tisCustomPickerElementRegistered,\n\tdestroyCustomPickerElement,\n} from '../../../functions/reference/customPickerElements.ts'\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\tbeforeDestroy() {\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.ts'\n\nimport { t } from '../../l10n.js'\n\nimport axios from '@nextcloud/axios'\nimport { loadState } from '@nextcloud/initial-state'\nimport { generateOcsUrl, imagePath } from '@nextcloud/router'\nimport { logger } from '../../utils/logger.ts'\n\nexport interface ReferenceProvider {\n\tid: string\n\ttitle: string\n\ticon_url: string\n\torder: number\n\tsearch_providers_ids?: string[]\n}\n\nexport const anyLinkProviderId = 'any-link'\n\nconst anyLinkProvider: ReferenceProvider = {\n\tid: anyLinkProviderId,\n\ttitle: t('Any link'),\n\torder: 0,\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\nwindow._vue_richtext_reference_providers ??= loadState('core', 'reference-provider-list', [])\n// single timestamps object used by every entity in the page\nwindow._vue_richtext_reference_provider_timestamps ??= loadState('core', 'reference-provider-timestamps', {})\n\n/**\n * @param providerId - The provider ID\n * @return The provider object\n */\nexport function getProvider(providerId: string): ReferenceProvider|undefined {\n\tif (providerId === anyLinkProviderId) {\n\t\treturn anyLinkProvider\n\t}\n\n\treturn getProviders().find(p => p.id === providerId)\n}\n\n/**\n * Get raw provider list as it was provided by the server\n */\nexport function getProviders(): ReferenceProvider[] {\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\tlogger.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 providerList - List of provider objects\n * @return The sorted provider list\n */\nexport function sortProviders(providerList: ReferenceProvider[]): ReferenceProvider[] {\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 query - The search query\n * @param limit - (optional) max number of results\n * @return The sorted/filtered provider list\n */\nexport function searchProvider(query: string, limit?: number): ReferenceProvider[] {\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\n\tconst searchResult = limit\n\t\t? filteredSortedProviders.slice(0, limit)\n\t\t: filteredSortedProviders\n\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 providerId - The id of the search provider\n */\nexport async function touchProvider(providerId: number) {\n\tconst timestamp = Math.floor(Date.now() / 1000)\n\tconst url = generateOcsUrl('references/provider/{providerId}', { providerId })\n\n\tawait axios.put(url, { timestamp })\n\twindow._vue_richtext_reference_provider_timestamps[providerId] = timestamp\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@input=\"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.ts'\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, loading) {\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-inline-end: 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-inline-end: 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\t:value.sync=\"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:value=\"onInput\"\n\t\t\t\t@keyup.native.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: var(--default-clickable-area);\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-inline-start: 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@input=\"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\tbeforeDestroy() {\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, loading) {\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: var(--default-clickable-area);\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\tclass=\"custom-element\"\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.ts'\nimport { touchProvider } from '../../../functions/reference/providerHelper.ts'\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\t.custom-element {\n\t\t\tdisplay: flex;\n\t\t\toverflow-y: auto;\n\t\t\twidth: 100%;\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<NcModal v-if=\"show\"\n\t\t:size=\"modalSize\"\n\t\t:can-close=\"true\"\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 class=\"close-button\"\n\t\t\t\t:aria-label=\"closeButtonLabel\"\n\t\t\t\t:title=\"closeButtonTitle\"\n\t\t\t\tvariant=\"tertiary\"\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.ts'\nimport NcButton from '../../NcButton/index.js'\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\" scoped>\n// this is to avoid scroll on the container and leave it to the result block\n.reference-picker-modal :deep(.modal-container) {\n\tdisplay: flex !important;\n}\n\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\tinset-inline-start: 4px;\n\t}\n\t.close-button {\n\t\tinset-inline-end: 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-inline-end: 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.ts'\n\nimport Vue from 'vue'\n\n/**\n * Creates a reference picker modal and return a promise which provides the result\n *\n * @param providerId - Optional ID of initial selected provider\n * @param isInsideViewer - Should be true if this function is called while the Viewer is displayed\n */\nexport async function getLinkWithPicker(providerId?: string, isInsideViewer?: boolean): Promise<string> {\n\tconst modalId = 'referencePickerModal'\n\tconst modalElement = document.createElement('div')\n\tmodalElement.id = modalId\n\tdocument.body.append(modalElement)\n\t\n\tconst { promise, reject, resolve } = Promise.withResolvers<string>()\n\tconst initialProvider = (providerId && getProvider(providerId)) || null\n\tconst View = Vue.extend(NcReferencePickerModal)\n\tconst view = new View({\n\t\tpropsData: {\n\t\t\tinitialProvider,\n\t\t\tisInsideViewer,\n\t\t},\n\t}).$mount(modalElement)\n\n\tview.$on('cancel', () => {\n\t\tview.$destroy()\n\t\treject(new Error('User cancellation'))\n\t})\n\tview.$on('submit', (link) => {\n\t\tview.$destroy()\n\t\tresolve(link)\n\t})\n\n\treturn promise\n}\n"],"names":["_sfc_main","NcButton","ref","useElementSize","useIntersectionObserver","nextTick","hasFullWidth","isWidgetRegistered","hasInteractiveView","getRoute","RouterLink","t","renderWidget","destroyWidget","isCustomPickerElementRegistered","destroyCustomPickerElement","renderCustomPickerElement","imagePath","loadState","logger","generateOcsUrl","axios","NcSelect","NcHighlight","NcEmptyContent","NcLoadingIcon","NcTextField","DotsHorizontalIcon","NcModal","ArrowLeftIcon","CloseIcon","getCustomPickerElementSize","emit","Vue"],"mappings":"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","x_google_ignoreList":[4]}
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* SPDX-FileCopyrightText: 2023 Nextcloud GmbH and Nextcloud contributors
|
|
3
|
+
* SPDX-License-Identifier: AGPL-3.0-or-later
|
|
4
|
+
*/
|
|
5
|
+
/**
|
|
6
|
+
* Representation of the render callback result
|
|
7
|
+
* It contains a dom element and an object (Vue instance or other fancy things)
|
|
8
|
+
*/
|
|
9
|
+
export declare class NcCustomPickerRenderResult {
|
|
10
|
+
element: HTMLElement;
|
|
11
|
+
object: object;
|
|
12
|
+
/**
|
|
13
|
+
* @param element - The HTML element
|
|
14
|
+
* @param object - The object
|
|
15
|
+
*/
|
|
16
|
+
constructor(element: HTMLElement, object: object);
|
|
17
|
+
}
|
|
18
|
+
interface CustomPickerElementProps {
|
|
19
|
+
providerId: number;
|
|
20
|
+
accessible: boolean;
|
|
21
|
+
}
|
|
22
|
+
type CustomPickerElementRegistrationCallback = (el: HTMLElement, options: CustomPickerElementProps) => void;
|
|
23
|
+
type CustomPickerElementDestroyCallback = (el: HTMLElement, result: NcCustomPickerRenderResult) => void;
|
|
24
|
+
export interface CustomPickerElement {
|
|
25
|
+
id: string;
|
|
26
|
+
size: 'small' | 'normal' | 'large' | 'full';
|
|
27
|
+
callback: CustomPickerElementRegistrationCallback;
|
|
28
|
+
onDestroy: CustomPickerElementDestroyCallback;
|
|
29
|
+
}
|
|
30
|
+
/**
|
|
31
|
+
* @param id - Id of the element to check
|
|
32
|
+
*/
|
|
33
|
+
export declare function isCustomPickerElementRegistered(id: string): boolean;
|
|
34
|
+
/**
|
|
35
|
+
* @param id - Id of the element to get
|
|
36
|
+
*/
|
|
37
|
+
export declare function getCustomPickerElementSize(id: string): 'small' | 'normal' | 'large' | 'full' | null;
|
|
38
|
+
/**
|
|
39
|
+
* @param id - Id of element to register
|
|
40
|
+
* @param callback - Render callback
|
|
41
|
+
* @param onDestroy - Cleanup callback
|
|
42
|
+
* @param size - Size of the element
|
|
43
|
+
*/
|
|
44
|
+
export declare function registerCustomPickerElement(id: string, callback: CustomPickerElementRegistrationCallback, onDestroy?: CustomPickerElementDestroyCallback, size?: CustomPickerElement['size']): void;
|
|
45
|
+
/**
|
|
46
|
+
* @param el - element to render to
|
|
47
|
+
* @param options - Element options
|
|
48
|
+
*/
|
|
49
|
+
export declare function renderCustomPickerElement(el: HTMLElement, options: CustomPickerElementProps): void;
|
|
50
|
+
/**
|
|
51
|
+
* @param providerId - Provider id of element to destroy
|
|
52
|
+
* @param el - The element to destroy element from
|
|
53
|
+
* @param renderResult - The render result
|
|
54
|
+
*/
|
|
55
|
+
export declare function destroyCustomPickerElement(providerId: string, el: HTMLElement, renderResult: NcCustomPickerRenderResult): void;
|
|
56
|
+
export {};
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* SPDX-FileCopyrightText: 2023 Nextcloud GmbH and Nextcloud contributors
|
|
3
|
+
* SPDX-License-Identifier: AGPL-3.0-or-later
|
|
4
|
+
*/
|
|
5
|
+
export { type ReferenceWidgetProps, type ReferenceWidgetRenderProperties, registerWidget, renderWidget, isWidgetRegistered, hasInteractiveView, } from './widgets.ts';
|
|
6
|
+
export { getLinkWithPicker } from './referencePickerModal.ts';
|
|
7
|
+
export { type ReferenceProvider, getProvider, getProviders, sortProviders, searchProvider, anyLinkProviderId, } from './providerHelper.ts';
|
|
8
|
+
export { type CustomPickerElement, registerCustomPickerElement, renderCustomPickerElement, isCustomPickerElementRegistered, NcCustomPickerRenderResult, } from './customPickerElements.ts';
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* SPDX-FileCopyrightText: 2023 Nextcloud GmbH and Nextcloud contributors
|
|
3
|
+
* SPDX-License-Identifier: AGPL-3.0-or-later
|
|
4
|
+
*/
|
|
5
|
+
export interface ReferenceProvider {
|
|
6
|
+
id: string;
|
|
7
|
+
title: string;
|
|
8
|
+
icon_url: string;
|
|
9
|
+
order: number;
|
|
10
|
+
search_providers_ids?: string[];
|
|
11
|
+
}
|
|
12
|
+
export declare const anyLinkProviderId = "any-link";
|
|
13
|
+
/**
|
|
14
|
+
* @param providerId - The provider ID
|
|
15
|
+
* @return The provider object
|
|
16
|
+
*/
|
|
17
|
+
export declare function getProvider(providerId: string): ReferenceProvider | undefined;
|
|
18
|
+
/**
|
|
19
|
+
* Get raw provider list as it was provided by the server
|
|
20
|
+
*/
|
|
21
|
+
export declare function getProviders(): ReferenceProvider[];
|
|
22
|
+
/**
|
|
23
|
+
* Helper function to sort a list of providers according to 2 factors:
|
|
24
|
+
* - their "last used timestamp"
|
|
25
|
+
* - their "order" property (coming from the provider declaration in the server implementation)
|
|
26
|
+
*
|
|
27
|
+
* @param providerList - List of provider objects
|
|
28
|
+
* @return The sorted provider list
|
|
29
|
+
*/
|
|
30
|
+
export declare function sortProviders(providerList: ReferenceProvider[]): ReferenceProvider[];
|
|
31
|
+
/**
|
|
32
|
+
* Helper function to search a provider from a search query
|
|
33
|
+
* Result is a sorted list of providers
|
|
34
|
+
*
|
|
35
|
+
* @param query - The search query
|
|
36
|
+
* @param limit - (optional) max number of results
|
|
37
|
+
* @return The sorted/filtered provider list
|
|
38
|
+
*/
|
|
39
|
+
export declare function searchProvider(query: string, limit?: number): ReferenceProvider[];
|
|
40
|
+
/**
|
|
41
|
+
* Update the "last used timestamp" on the server side and then locally in the frontend
|
|
42
|
+
*
|
|
43
|
+
* @param providerId - The id of the search provider
|
|
44
|
+
*/
|
|
45
|
+
export declare function touchProvider(providerId: number): Promise<void>;
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* SPDX-FileCopyrightText: 2023 Nextcloud GmbH and Nextcloud contributors
|
|
3
|
+
* SPDX-License-Identifier: AGPL-3.0-or-later
|
|
4
|
+
*/
|
|
5
|
+
/**
|
|
6
|
+
* Creates a reference picker modal and return a promise which provides the result
|
|
7
|
+
*
|
|
8
|
+
* @param providerId - Optional ID of initial selected provider
|
|
9
|
+
* @param isInsideViewer - Should be true if this function is called while the Viewer is displayed
|
|
10
|
+
*/
|
|
11
|
+
export declare function getLinkWithPicker(providerId?: string, isInsideViewer?: boolean): Promise<string>;
|
|
@@ -2,40 +2,59 @@
|
|
|
2
2
|
* SPDX-FileCopyrightText: 2023 Nextcloud GmbH and Nextcloud contributors
|
|
3
3
|
* SPDX-License-Identifier: AGPL-3.0-or-later
|
|
4
4
|
*/
|
|
5
|
-
interface
|
|
5
|
+
export interface ReferenceWidgetRenderProperties {
|
|
6
6
|
richObjectType: string;
|
|
7
7
|
richObject: object;
|
|
8
8
|
accessible: boolean;
|
|
9
9
|
interactive: boolean;
|
|
10
10
|
}
|
|
11
|
-
type
|
|
12
|
-
type
|
|
13
|
-
interface
|
|
11
|
+
type ReferenceWidgetRenderCallback = (el: HTMLElement, properties: ReferenceWidgetRenderProperties) => void;
|
|
12
|
+
type ReferenceWidgetDestroyCallback = (el: HTMLElement) => void;
|
|
13
|
+
export interface ReferenceWidgetProps {
|
|
14
14
|
id: string;
|
|
15
15
|
hasInteractiveView: boolean;
|
|
16
16
|
fullWidth: boolean;
|
|
17
|
-
callback:
|
|
18
|
-
onDestroy:
|
|
17
|
+
callback: ReferenceWidgetRenderCallback;
|
|
18
|
+
onDestroy: ReferenceWidgetDestroyCallback;
|
|
19
19
|
}
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
20
|
+
/**
|
|
21
|
+
* Register a new reference widget
|
|
22
|
+
*
|
|
23
|
+
* @param id - Id tof the widget
|
|
24
|
+
* @param callback - Render callback
|
|
25
|
+
* @param onDestroy - Cleanup callback
|
|
26
|
+
* @param props - Widget props
|
|
27
|
+
*/
|
|
28
|
+
export declare function registerWidget(id: string, callback: ReferenceWidgetRenderCallback, onDestroy?: ReferenceWidgetDestroyCallback, props?: Partial<ReferenceWidgetProps>): void;
|
|
29
|
+
/**
|
|
30
|
+
* Render a reference widget to a given HTML element.
|
|
31
|
+
*
|
|
32
|
+
* @param el - The element to render widget to
|
|
33
|
+
* @param options - render options
|
|
34
|
+
*/
|
|
35
|
+
export declare function renderWidget(el: HTMLElement, options: ReferenceWidgetRenderProperties): void;
|
|
36
|
+
/**
|
|
37
|
+
* Call the cleanup callback of the reference widget for given object type.
|
|
38
|
+
*
|
|
39
|
+
* @param richObjectType - The object type
|
|
40
|
+
* @param el - The element
|
|
41
|
+
*/
|
|
42
|
+
export declare function destroyWidget(richObjectType: string, el: HTMLElement): void;
|
|
43
|
+
/**
|
|
44
|
+
* Check if a widget with the give id is registered.
|
|
45
|
+
* @param id - Id of the widget
|
|
46
|
+
*/
|
|
47
|
+
export declare function isWidgetRegistered(id: string): boolean;
|
|
48
|
+
/**
|
|
49
|
+
* Check if the given widget has an interactive view.
|
|
50
|
+
*
|
|
51
|
+
* @param id - Id of the widget
|
|
52
|
+
*/
|
|
53
|
+
export declare function hasInteractiveView(id: string): boolean;
|
|
54
|
+
/**
|
|
55
|
+
* Check if the widget supports full width.
|
|
56
|
+
*
|
|
57
|
+
* @param id - Id of the widget
|
|
58
|
+
*/
|
|
59
|
+
export declare function hasFullWidth(id: string): boolean;
|
|
60
|
+
export {};
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* SPDX-FileCopyrightText: 2024 Nextcloud GmbH and Nextcloud contributors
|
|
3
|
+
* SPDX-License-Identifier: AGPL-3.0-or-later
|
|
4
|
+
*/
|
|
5
|
+
export { registerWidget, renderWidget, destroyWidget, isWidgetRegistered, } from '../reference/widgets.ts';
|
|
6
|
+
export { NcCustomPickerRenderResult, registerCustomPickerElement, renderCustomPickerElement, destroyCustomPickerElement, isCustomPickerElementRegistered, getCustomPickerElementSize, } from '../reference/customPickerElements.ts';
|
package/dist/index.cjs
CHANGED
|
@@ -1,54 +1,57 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
|
|
3
|
-
const NcActionButton = require("./chunks/NcActionButton-
|
|
3
|
+
const NcActionButton = require("./chunks/NcActionButton-BhSk7AAp.cjs");
|
|
4
4
|
const NcActionButtonGroup = require("./chunks/NcActionButtonGroup-Cr4OSmyb.cjs");
|
|
5
5
|
const Components_NcActionCaption = require("./Components/NcActionCaption.cjs");
|
|
6
6
|
const NcActionCheckbox = require("./chunks/NcActionCheckbox-JX-QaTD6.cjs");
|
|
7
|
-
const NcActionInput = require("./chunks/NcActionInput-
|
|
7
|
+
const NcActionInput = require("./chunks/NcActionInput-DdaafMi8.cjs");
|
|
8
8
|
const Components_NcActionLink = require("./Components/NcActionLink.cjs");
|
|
9
9
|
const NcActionRadio = require("./chunks/NcActionRadio-BUCQ6VxA.cjs");
|
|
10
10
|
const Components_NcActionRouter = require("./Components/NcActionRouter.cjs");
|
|
11
|
-
const NcActions = require("./chunks/NcActions-
|
|
11
|
+
const NcActions = require("./chunks/NcActions-DRCkAU8h.cjs");
|
|
12
12
|
const Components_NcActionSeparator = require("./Components/NcActionSeparator.cjs");
|
|
13
13
|
const Components_NcActionText = require("./Components/NcActionText.cjs");
|
|
14
|
-
const NcActionTextEditable = require("./chunks/NcActionTextEditable-
|
|
14
|
+
const NcActionTextEditable = require("./chunks/NcActionTextEditable-CTXGUIPM.cjs");
|
|
15
15
|
const NcAppContent = require("./chunks/NcAppContent-POt1Lj3W.cjs");
|
|
16
16
|
const Components_NcAppContentDetails = require("./Components/NcAppContentDetails.cjs");
|
|
17
17
|
const Components_NcAppContentList = require("./Components/NcAppContentList.cjs");
|
|
18
18
|
const NcAppNavigation = require("./chunks/NcAppNavigation-BKxSUpcQ.cjs");
|
|
19
|
-
const NcAppNavigationCaption = require("./chunks/NcAppNavigationCaption-
|
|
19
|
+
const NcAppNavigationCaption = require("./chunks/NcAppNavigationCaption-BpmzZDPj.cjs");
|
|
20
20
|
const Components_NcAppNavigationIconBullet = require("./Components/NcAppNavigationIconBullet.cjs");
|
|
21
|
-
const NcAppNavigationItem = require("./chunks/NcAppNavigationItem-
|
|
21
|
+
const NcAppNavigationItem = require("./chunks/NcAppNavigationItem-D1CEGuhm.cjs");
|
|
22
22
|
const Components_NcAppNavigationList = require("./Components/NcAppNavigationList.cjs");
|
|
23
23
|
const Components_NcAppNavigationNew = require("./Components/NcAppNavigationNew.cjs");
|
|
24
24
|
const NcAppNavigationNewItem = require("./chunks/NcAppNavigationNewItem-CTAoGkDy.cjs");
|
|
25
25
|
const NcAppNavigationSearch = require("./chunks/NcAppNavigationSearch-CaBrnpf9.cjs");
|
|
26
|
-
const NcAppNavigationSettings = require("./chunks/NcAppNavigationSettings-
|
|
26
|
+
const NcAppNavigationSettings = require("./chunks/NcAppNavigationSettings-DV5ZnR2s.cjs");
|
|
27
27
|
const Components_NcAppNavigationSpacer = require("./Components/NcAppNavigationSpacer.cjs");
|
|
28
28
|
const NcAppSettingsDialog = require("./chunks/NcAppSettingsDialog-BDo3la0P.cjs");
|
|
29
29
|
const Components_NcAppSettingsSection = require("./Components/NcAppSettingsSection.cjs");
|
|
30
|
-
const NcAppSidebar = require("./chunks/NcAppSidebar-
|
|
30
|
+
const NcAppSidebar = require("./chunks/NcAppSidebar-Cvyq-kN5.cjs");
|
|
31
31
|
const NcAppSidebarHeader = require("./chunks/NcAppSidebarHeader-BUXD8c9i.cjs");
|
|
32
32
|
const Components_NcAppSidebarTab = require("./Components/NcAppSidebarTab.cjs");
|
|
33
|
-
const
|
|
33
|
+
const NcAssistantButton = require("./chunks/NcAssistantButton-gD3MKoYS.cjs");
|
|
34
|
+
const Components_NcAssistantContent = require("./Components/NcAssistantContent.cjs");
|
|
35
|
+
const NcAssistantIcon = require("./chunks/NcAssistantIcon-D_xelcY2.cjs");
|
|
36
|
+
const NcAvatar = require("./chunks/NcAvatar-DS1H-VrZ.cjs");
|
|
34
37
|
const NcBlurHash = require("./chunks/NcBlurHash-CJ8retHx.cjs");
|
|
35
|
-
const NcBreadcrumb = require("./chunks/NcBreadcrumb-
|
|
36
|
-
const NcBreadcrumbs = require("./chunks/NcBreadcrumbs-
|
|
38
|
+
const NcBreadcrumb = require("./chunks/NcBreadcrumb-HtgcEJgs.cjs");
|
|
39
|
+
const NcBreadcrumbs = require("./chunks/NcBreadcrumbs-CQcnjGJO.cjs");
|
|
37
40
|
const Components_NcButton = require("./Components/NcButton.cjs");
|
|
38
|
-
const NcCheckboxRadioSwitch = require("./chunks/NcCheckboxRadioSwitch-
|
|
39
|
-
const NcCollectionList = require("./chunks/NcCollectionList-
|
|
40
|
-
const NcColorPicker = require("./chunks/NcColorPicker-
|
|
41
|
+
const NcCheckboxRadioSwitch = require("./chunks/NcCheckboxRadioSwitch-B-lXOnEF.cjs");
|
|
42
|
+
const NcCollectionList = require("./chunks/NcCollectionList-DXNSOjPG.cjs");
|
|
43
|
+
const NcColorPicker = require("./chunks/NcColorPicker-CbiIpVlT.cjs");
|
|
41
44
|
const NcContent = require("./chunks/NcContent-DH7uH5Gv.cjs");
|
|
42
45
|
const NcCounterBubble = require("./chunks/NcCounterBubble-BRrUO34D.cjs");
|
|
43
|
-
const NcDashboardWidget = require("./chunks/NcDashboardWidget-
|
|
44
|
-
const NcDashboardWidgetItem = require("./chunks/NcDashboardWidgetItem-
|
|
46
|
+
const NcDashboardWidget = require("./chunks/NcDashboardWidget-DhJAJn-_.cjs");
|
|
47
|
+
const NcDashboardWidgetItem = require("./chunks/NcDashboardWidgetItem-CgO8qJUQ.cjs");
|
|
45
48
|
const NcDateTime = require("./chunks/NcDateTime-Cl-PZpLN.cjs");
|
|
46
49
|
const Components_NcDateTimePicker = require("./Components/NcDateTimePicker.cjs");
|
|
47
50
|
const Components_NcDateTimePickerNative = require("./Components/NcDateTimePickerNative.cjs");
|
|
48
51
|
const NcDialog = require("./chunks/NcDialog-ps0F3IQM.cjs");
|
|
49
52
|
const NcDialogButton = require("./chunks/NcDialogButton-CEdM0Qnr.cjs");
|
|
50
53
|
const Components_NcEllipsisedOption = require("./Components/NcEllipsisedOption.cjs");
|
|
51
|
-
const NcEmojiPicker = require("./chunks/NcEmojiPicker-
|
|
54
|
+
const NcEmojiPicker = require("./chunks/NcEmojiPicker-CdH7bAGd.cjs");
|
|
52
55
|
const Components_NcEmptyContent = require("./Components/NcEmptyContent.cjs");
|
|
53
56
|
const Components_NcGuestContent = require("./Components/NcGuestContent.cjs");
|
|
54
57
|
const Components_NcHeaderButton = require("./Components/NcHeaderButton.cjs");
|
|
@@ -56,42 +59,42 @@ const NcHeaderMenu = require("./chunks/NcHeaderMenu-BWFubuox.cjs");
|
|
|
56
59
|
const Components_NcHighlight = require("./chunks/index-DIJxEozm.cjs");
|
|
57
60
|
const NcIconSvgWrapper = require("./chunks/NcIconSvgWrapper-CrnN5Sq5.cjs");
|
|
58
61
|
const NcInputField = require("./chunks/NcInputField-cT3u4gMS.cjs");
|
|
59
|
-
const NcListItem = require("./chunks/NcListItem-
|
|
60
|
-
const NcListItemIcon = require("./chunks/NcListItemIcon-
|
|
62
|
+
const NcListItem = require("./chunks/NcListItem-Bx9qm5xC.cjs");
|
|
63
|
+
const NcListItemIcon = require("./chunks/NcListItemIcon-DMhlNuU9.cjs");
|
|
61
64
|
const Components_NcLoadingIcon = require("./Components/NcLoadingIcon.cjs");
|
|
62
65
|
const Components_NcModal = require("./Components/NcModal.cjs");
|
|
63
66
|
const Components_NcNoteCard = require("./Components/NcNoteCard.cjs");
|
|
64
67
|
const NcPasswordField = require("./chunks/NcPasswordField-DcFBNVHn.cjs");
|
|
65
|
-
const NcPopover = require("./chunks/NcPopover-
|
|
68
|
+
const NcPopover = require("./chunks/NcPopover-DjeDGPXc.cjs");
|
|
66
69
|
const NcProgressBar = require("./chunks/NcProgressBar-lh4Gtdfr.cjs");
|
|
67
70
|
const NcRelatedResourcesPanel = require("./chunks/NcRelatedResourcesPanel-BR_ggojH.cjs");
|
|
68
71
|
const Mixins_richEditor = require("./chunks/index-AlIgEQXL.cjs");
|
|
69
|
-
const NcRichContenteditable = require("./chunks/NcRichContenteditable-
|
|
70
|
-
const NcRichText = require("./chunks/NcRichText-
|
|
71
|
-
const
|
|
72
|
+
const NcRichContenteditable = require("./chunks/NcRichContenteditable-DtkaJmwG.cjs");
|
|
73
|
+
const NcRichText = require("./chunks/NcRichText-7B9lDtoo.cjs");
|
|
74
|
+
const customPickerElements = require("./chunks/customPickerElements-Q3Y7fgZ1.cjs");
|
|
72
75
|
require("@vueuse/core");
|
|
73
76
|
require("vue");
|
|
74
77
|
require("vue-router");
|
|
75
|
-
const referencePickerModal = require("./chunks/referencePickerModal-
|
|
78
|
+
const referencePickerModal = require("./chunks/referencePickerModal-BINQW-pL.cjs");
|
|
76
79
|
require("unist-util-visit");
|
|
77
80
|
require("unist-builder");
|
|
78
81
|
require("@nextcloud/router");
|
|
79
82
|
require("@nextcloud/axios");
|
|
80
83
|
require("@nextcloud/sharing/public");
|
|
81
84
|
require("@nextcloud/auth");
|
|
82
|
-
const NcSelect = require("./chunks/NcSelect-
|
|
83
|
-
const NcTextField = require("./chunks/NcTextField-
|
|
85
|
+
const NcSelect = require("./chunks/NcSelect-CrxryIo3.cjs");
|
|
86
|
+
const NcTextField = require("./chunks/NcTextField-DDJqk3SI.cjs");
|
|
84
87
|
require("@nextcloud/event-bus");
|
|
85
88
|
const NcSavingIndicatorIcon = require("./chunks/NcSavingIndicatorIcon-DFyB2KRK.cjs");
|
|
86
|
-
const NcSelectTags = require("./chunks/NcSelectTags-
|
|
87
|
-
const NcSelectUsers = require("./chunks/NcSelectUsers-
|
|
89
|
+
const NcSelectTags = require("./chunks/NcSelectTags-BZqBdSqC.cjs");
|
|
90
|
+
const NcSelectUsers = require("./chunks/NcSelectUsers-CshAjqE_.cjs");
|
|
88
91
|
const NcSettingsInputText = require("./chunks/NcSettingsInputText-D7eoCI2o.cjs");
|
|
89
92
|
const NcSettingsSection = require("./chunks/NcSettingsSection-Bmo90KQR.cjs");
|
|
90
|
-
const NcSettingsSelectGroup = require("./chunks/NcSettingsSelectGroup-
|
|
93
|
+
const NcSettingsSelectGroup = require("./chunks/NcSettingsSelectGroup-Dd04CVAM.cjs");
|
|
91
94
|
const NcTextArea = require("./chunks/NcTextArea-B2hcap39.cjs");
|
|
92
95
|
const NcThemeProvider = require("./chunks/NcThemeProvider-BqGPTeWg.cjs");
|
|
93
|
-
const NcTimezonePicker = require("./chunks/NcTimezonePicker-
|
|
94
|
-
const NcUserBubble = require("./chunks/NcUserBubble-
|
|
96
|
+
const NcTimezonePicker = require("./chunks/NcTimezonePicker-DV_arh0f.cjs");
|
|
97
|
+
const NcUserBubble = require("./chunks/NcUserBubble-DuyMsPzl.cjs");
|
|
95
98
|
const NcUserStatusIcon = require("./chunks/NcUserStatusIcon-CKPJ27oi.cjs");
|
|
96
99
|
const Components_NcVNodes = require("./Components/NcVNodes.cjs");
|
|
97
100
|
const Composables_useFormatDateTime = require("./Composables/useFormatDateTime.cjs");
|
|
@@ -145,6 +148,9 @@ const NcComponents = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.define
|
|
|
145
148
|
NcAppSidebar: NcAppSidebar.NcAppSidebar,
|
|
146
149
|
NcAppSidebarHeader: NcAppSidebarHeader.NcAppSidebarHeader,
|
|
147
150
|
NcAppSidebarTab: Components_NcAppSidebarTab,
|
|
151
|
+
NcAssistantButton: NcAssistantButton.NcAssistantButton,
|
|
152
|
+
NcAssistantContent: Components_NcAssistantContent,
|
|
153
|
+
NcAssistantIcon: NcAssistantIcon.NcAssistantIcon,
|
|
148
154
|
NcAutoCompleteResult: NcRichContenteditable.NcAutoCompleteResult,
|
|
149
155
|
NcAvatar: NcAvatar.NcAvatar,
|
|
150
156
|
NcBlurHash: NcBlurHash.NcBlurHash,
|
|
@@ -245,6 +251,9 @@ exports.NcAppSettingsSection = Components_NcAppSettingsSection;
|
|
|
245
251
|
exports.NcAppSidebar = NcAppSidebar.NcAppSidebar;
|
|
246
252
|
exports.NcAppSidebarHeader = NcAppSidebarHeader.NcAppSidebarHeader;
|
|
247
253
|
exports.NcAppSidebarTab = Components_NcAppSidebarTab;
|
|
254
|
+
exports.NcAssistantButton = NcAssistantButton.NcAssistantButton;
|
|
255
|
+
exports.NcAssistantContent = Components_NcAssistantContent;
|
|
256
|
+
exports.NcAssistantIcon = NcAssistantIcon.NcAssistantIcon;
|
|
248
257
|
exports.NcAvatar = NcAvatar.NcAvatar;
|
|
249
258
|
exports.userStatus = NcAvatar.userStatus;
|
|
250
259
|
exports.NcBlurHash = NcBlurHash.NcBlurHash;
|
|
@@ -286,14 +295,14 @@ exports.richEditor = Mixins_richEditor.richEditor;
|
|
|
286
295
|
exports.NcAutoCompleteResult = NcRichContenteditable.NcAutoCompleteResult;
|
|
287
296
|
exports.NcRichContenteditable = NcRichContenteditable.NcRichContenteditable;
|
|
288
297
|
exports.NcRichText = NcRichText.NcRichText;
|
|
289
|
-
exports.NcCustomPickerRenderResult =
|
|
290
|
-
exports.hasInteractiveView =
|
|
291
|
-
exports.isCustomPickerElementRegistered =
|
|
292
|
-
exports.isWidgetRegistered =
|
|
293
|
-
exports.registerCustomPickerElement =
|
|
294
|
-
exports.registerWidget =
|
|
295
|
-
exports.renderCustomPickerElement =
|
|
296
|
-
exports.renderWidget =
|
|
298
|
+
exports.NcCustomPickerRenderResult = customPickerElements.NcCustomPickerRenderResult;
|
|
299
|
+
exports.hasInteractiveView = customPickerElements.hasInteractiveView;
|
|
300
|
+
exports.isCustomPickerElementRegistered = customPickerElements.isCustomPickerElementRegistered;
|
|
301
|
+
exports.isWidgetRegistered = customPickerElements.isWidgetRegistered;
|
|
302
|
+
exports.registerCustomPickerElement = customPickerElements.registerCustomPickerElement;
|
|
303
|
+
exports.registerWidget = customPickerElements.registerWidget;
|
|
304
|
+
exports.renderCustomPickerElement = customPickerElements.renderCustomPickerElement;
|
|
305
|
+
exports.renderWidget = customPickerElements.renderWidget;
|
|
297
306
|
exports.anyLinkProviderId = referencePickerModal.anyLinkProviderId;
|
|
298
307
|
exports.getLinkWithPicker = referencePickerModal.getLinkWithPicker;
|
|
299
308
|
exports.getProvider = referencePickerModal.getProvider;
|
package/dist/index.cjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.cjs","sources":["../src/plugin.ts"],"sourcesContent":["/**\n * SPDX-FileCopyrightText: 2023 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n\nimport type { DefineComponent, Directive, PluginObject } from 'vue'\n\nimport * as NcComponents from './components/index.js'\nimport * as NcDirectives from './directives/index.js'\n\n/**\n * Install all Nextcloud Vue components and directives globally\n * @example\n * ```js\n * import { NextcloudVuePlugin } from '@nextcloud/vue'\n * import Vue from 'vue'\n *\n * // ...\n *\n * Vue.use(NextcloudVuePlugin)\n * new Vue({\n * // options\n * })\n * ```\n */\nexport const NextcloudVuePlugin: PluginObject<never> = {\n\tinstall(Vue) {\n\t\t// Install components\n\t\tObject.entries(NcComponents as { [key: string]: DefineComponent }).forEach(([name, component]) => {\n\t\t\tVue.component(component.name || name, component)\n\t\t})\n\n\t\t// Install directives\n\t\tObject.entries(NcDirectives as { [key: string]: Directive }).forEach(([name, directive]) => {\n\t\t\tVue.directive(name, directive)\n\t\t})\n\t},\n}\n"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.cjs","sources":["../src/plugin.ts"],"sourcesContent":["/**\n * SPDX-FileCopyrightText: 2023 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n\nimport type { DefineComponent, Directive, PluginObject } from 'vue'\n\nimport * as NcComponents from './components/index.js'\nimport * as NcDirectives from './directives/index.js'\n\n/**\n * Install all Nextcloud Vue components and directives globally\n * @example\n * ```js\n * import { NextcloudVuePlugin } from '@nextcloud/vue'\n * import Vue from 'vue'\n *\n * // ...\n *\n * Vue.use(NextcloudVuePlugin)\n * new Vue({\n * // options\n * })\n * ```\n */\nexport const NextcloudVuePlugin: PluginObject<never> = {\n\tinstall(Vue) {\n\t\t// Install components\n\t\tObject.entries(NcComponents as { [key: string]: DefineComponent }).forEach(([name, component]) => {\n\t\t\tVue.component(component.name || name, component)\n\t\t})\n\n\t\t// Install directives\n\t\tObject.entries(NcDirectives as { [key: string]: Directive }).forEach(([name, directive]) => {\n\t\t\tVue.directive(name, directive)\n\t\t})\n\t},\n}\n"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAyBO,MAAM,qBAA0C;AAAA,EACtD,QAAQ,KAAK;AAEL,WAAA,QAAQ,YAAkD,EAAE,QAAQ,CAAC,CAAC,MAAM,SAAS,MAAM;AACjG,UAAI,UAAU,UAAU,QAAQ,MAAM,SAAS;AAAA,IAAA,CAC/C;AAGM,WAAA,QAAQ,YAA4C,EAAE,QAAQ,CAAC,CAAC,MAAM,SAAS,MAAM;AACvF,UAAA,UAAU,MAAM,SAAS;AAAA,IAAA,CAC7B;AAAA,EAAA;AAEH;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
|