@nextcloud/vue 8.5.0 → 8.5.1
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 +20 -1
- package/dist/Components/NcActionButtonGroup.cjs +1 -1
- package/dist/Components/NcActionButtonGroup.mjs +1 -1
- package/dist/Components/NcActionInput.cjs +1 -1
- package/dist/Components/NcActionInput.mjs +1 -1
- package/dist/Components/NcActions.cjs +1 -1
- package/dist/Components/NcActions.mjs +1 -1
- package/dist/Components/NcAppContent.cjs +1 -1
- package/dist/Components/NcAppContent.mjs +1 -1
- package/dist/Components/NcAppNavigation.cjs +1 -1
- package/dist/Components/NcAppNavigation.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/NcAppNavigationNewItem.cjs +1 -1
- package/dist/Components/NcAppNavigationNewItem.mjs +1 -1
- package/dist/Components/NcAppNavigationSettings.cjs +1 -1
- package/dist/Components/NcAppNavigationSettings.mjs +1 -1
- package/dist/Components/NcAppNavigationToggle.cjs +1 -1
- package/dist/Components/NcAppNavigationToggle.mjs +1 -1
- package/dist/Components/NcAppSettingsDialog.cjs +1 -1
- package/dist/Components/NcAppSettingsDialog.mjs +1 -1
- package/dist/Components/NcAppSidebar.cjs +1 -1
- package/dist/Components/NcAppSidebar.mjs +1 -1
- 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/NcButton.cjs +19 -16
- package/dist/Components/NcButton.cjs.map +1 -1
- package/dist/Components/NcButton.mjs +19 -16
- package/dist/Components/NcButton.mjs.map +1 -1
- package/dist/Components/NcCheckboxRadioSwitch.cjs +1 -1
- package/dist/Components/NcCheckboxRadioSwitch.mjs +1 -1
- package/dist/Components/NcColorPicker.cjs +1 -1
- package/dist/Components/NcColorPicker.mjs +1 -1
- package/dist/Components/NcContent.cjs +1 -1
- package/dist/Components/NcContent.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/NcDateTime.cjs +1 -1
- package/dist/Components/NcDateTime.mjs +1 -1
- package/dist/Components/NcDateTimePicker.cjs +2 -2
- package/dist/Components/NcDateTimePicker.mjs +5 -5
- package/dist/Components/NcDateTimePickerNative.cjs +1 -1
- package/dist/Components/NcDateTimePickerNative.mjs +1 -1
- package/dist/Components/NcDialog.cjs +1 -1
- package/dist/Components/NcDialog.mjs +1 -1
- package/dist/Components/NcEmojiPicker.cjs +1 -1
- package/dist/Components/NcEmojiPicker.mjs +1 -1
- package/dist/Components/NcHeaderMenu.cjs +1 -1
- package/dist/Components/NcHeaderMenu.mjs +1 -1
- package/dist/Components/NcInputField.cjs +5 -5
- package/dist/Components/NcInputField.cjs.map +1 -1
- package/dist/Components/NcInputField.mjs +2 -2
- package/dist/Components/NcInputField.mjs.map +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 +7 -7
- package/dist/Components/NcModal.cjs.map +1 -1
- package/dist/Components/NcModal.mjs +8 -8
- package/dist/Components/NcModal.mjs.map +1 -1
- package/dist/Components/NcPasswordField.cjs +1 -1
- package/dist/Components/NcPasswordField.mjs +1 -1
- package/dist/Components/NcPopover.cjs +1 -1
- package/dist/Components/NcPopover.mjs +1 -1
- package/dist/Components/NcRelatedResourcesPanel.cjs +1 -1
- package/dist/Components/NcRelatedResourcesPanel.mjs +1 -1
- package/dist/Components/NcRichContenteditable.cjs +1 -1
- package/dist/Components/NcRichContenteditable.mjs +1 -1
- package/dist/Components/NcRichText.cjs +1 -1
- package/dist/Components/NcRichText.mjs +3 -3
- 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/NcSettingsInputText.cjs +1 -1
- package/dist/Components/NcSettingsInputText.mjs +1 -1
- package/dist/Components/NcSettingsSection.cjs +1 -1
- package/dist/Components/NcSettingsSection.mjs +1 -1
- package/dist/Components/NcSettingsSelectGroup.cjs +1 -1
- package/dist/Components/NcSettingsSelectGroup.mjs +1 -1
- package/dist/Components/NcTextArea.cjs +5 -5
- package/dist/Components/NcTextArea.cjs.map +1 -1
- package/dist/Components/NcTextArea.mjs +4 -4
- package/dist/Components/NcTextArea.mjs.map +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/Components/NcUserStatusIcon.cjs +1 -1
- package/dist/Components/NcUserStatusIcon.mjs +1 -1
- package/dist/Functions/usernameToColor.cjs +1 -1
- package/dist/Functions/usernameToColor.mjs +1 -1
- package/dist/assets/{NcActions-nAi2TA1m.css → NcActions-vgT9ak04.css} +12 -12
- package/dist/assets/{NcAppSettingsDialog-8K8FduDk.css → NcAppSettingsDialog-0eOo3ERv.css} +16 -17
- package/dist/assets/{NcAvatar-Vg6Mi1TD.css → NcAvatar-5H9cqcD1.css} +27 -27
- package/dist/assets/{NcButton-DTnreNJ5.css → NcButton-4Wj3KJn8.css} +43 -43
- package/dist/assets/{NcCheckboxRadioSwitch-IKpLtz9k.css → NcCheckboxRadioSwitch-mgKotCbU.css} +49 -47
- package/dist/assets/{NcDateTimePicker-J_kGHwdu.css → NcDateTimePicker-amYL2HzW.css} +10 -10
- package/dist/assets/{NcDialog-2V180xdm.css → NcDialog-DN-rY-55.css} +30 -19
- package/dist/assets/{NcHeaderMenu-P0OkK9WN.css → NcHeaderMenu-06vdn4tC.css} +15 -15
- package/dist/assets/{NcInputField-Y-Qp3D_b.css → NcInputField-L2Lld_iG.css} +39 -38
- package/dist/assets/{NcModal-QzDLeQrW.css → NcModal-UZh031V1.css} +64 -64
- package/dist/assets/{NcRichContenteditable-xiQ4y2Z6.css → NcRichContenteditable-j9edXOEH.css} +13 -12
- package/dist/assets/{NcTextArea-K-KVPiMp.css → NcTextArea-4rVwq6GK.css} +24 -23
- package/dist/chunks/{GenColors-6mrcK1J2.cjs → GenColors-6ePwbl4k.cjs} +1 -1
- package/dist/chunks/{GenColors-6mrcK1J2.cjs.map → GenColors-6ePwbl4k.cjs.map} +1 -1
- package/dist/chunks/{GenColors-ZwEj275X.mjs → GenColors-OwQiytMp.mjs} +1 -1
- package/dist/chunks/{GenColors-ZwEj275X.mjs.map → GenColors-OwQiytMp.mjs.map} +1 -1
- package/dist/chunks/{NcActionButtonGroup-3W6tc8gZ.mjs → NcActionButtonGroup-qXVHIy0a.mjs} +1 -1
- package/dist/chunks/{NcActionButtonGroup-3W6tc8gZ.mjs.map → NcActionButtonGroup-qXVHIy0a.mjs.map} +1 -1
- package/dist/chunks/{NcActionButtonGroup-IEaXhYp3.cjs → NcActionButtonGroup-wvQESxxh.cjs} +1 -1
- package/dist/chunks/{NcActionButtonGroup-IEaXhYp3.cjs.map → NcActionButtonGroup-wvQESxxh.cjs.map} +1 -1
- package/dist/chunks/{NcActionInput-bLRYLx45.cjs → NcActionInput-2mvb7ZnC.cjs} +1 -1
- package/dist/chunks/{NcActionInput-bLRYLx45.cjs.map → NcActionInput-2mvb7ZnC.cjs.map} +1 -1
- package/dist/chunks/{NcActionInput-v8cC8WD4.mjs → NcActionInput-Vdsm4Jt5.mjs} +4 -4
- package/dist/chunks/{NcActionInput-v8cC8WD4.mjs.map → NcActionInput-Vdsm4Jt5.mjs.map} +1 -1
- package/dist/chunks/{NcActions-7ytNFRBJ.cjs → NcActions-4ml5sv6P.cjs} +28 -23
- package/dist/chunks/NcActions-4ml5sv6P.cjs.map +1 -0
- package/dist/chunks/{NcActions-CNDgnRLf.mjs → NcActions-5K-qjttC.mjs} +36 -31
- package/dist/chunks/NcActions-5K-qjttC.mjs.map +1 -0
- package/dist/chunks/{NcAppContent-XBosilQH.mjs → NcAppContent-agTfSSHS.mjs} +1 -1
- package/dist/chunks/{NcAppContent-XBosilQH.mjs.map → NcAppContent-agTfSSHS.mjs.map} +1 -1
- package/dist/chunks/{NcAppContent-f3dNUfhO.cjs → NcAppContent-kSymH_mo.cjs} +1 -1
- package/dist/chunks/{NcAppContent-f3dNUfhO.cjs.map → NcAppContent-kSymH_mo.cjs.map} +1 -1
- package/dist/chunks/{NcAppNavigation-qUXaV47L.mjs → NcAppNavigation-biQcPFmk.mjs} +1 -1
- package/dist/chunks/{NcAppNavigation-qUXaV47L.mjs.map → NcAppNavigation-biQcPFmk.mjs.map} +1 -1
- package/dist/chunks/{NcAppNavigation-oke9RxP6.cjs → NcAppNavigation-rSC0k8c6.cjs} +1 -1
- package/dist/chunks/{NcAppNavigation-oke9RxP6.cjs.map → NcAppNavigation-rSC0k8c6.cjs.map} +1 -1
- package/dist/chunks/{NcAppNavigationCaption-M-KZKijE.mjs → NcAppNavigationCaption-E3tdVsYJ.mjs} +1 -1
- package/dist/chunks/{NcAppNavigationCaption-M-KZKijE.mjs.map → NcAppNavigationCaption-E3tdVsYJ.mjs.map} +1 -1
- package/dist/chunks/{NcAppNavigationCaption-hVmjPz-2.cjs → NcAppNavigationCaption-Mugp6fsR.cjs} +1 -1
- package/dist/chunks/{NcAppNavigationCaption-hVmjPz-2.cjs.map → NcAppNavigationCaption-Mugp6fsR.cjs.map} +1 -1
- package/dist/chunks/{NcAppNavigationItem-GNnDmUq5.mjs → NcAppNavigationItem-CzK_gg7C.mjs} +3 -3
- package/dist/chunks/{NcAppNavigationItem-GNnDmUq5.mjs.map → NcAppNavigationItem-CzK_gg7C.mjs.map} +1 -1
- package/dist/chunks/{NcAppNavigationItem-YYoh37Ky.cjs → NcAppNavigationItem-r0MUwPP7.cjs} +1 -1
- package/dist/chunks/{NcAppNavigationItem-YYoh37Ky.cjs.map → NcAppNavigationItem-r0MUwPP7.cjs.map} +1 -1
- package/dist/chunks/{NcAppNavigationNewItem-3l4mRRsI.cjs → NcAppNavigationNewItem-IYhRBzud.cjs} +1 -1
- package/dist/chunks/{NcAppNavigationNewItem-3l4mRRsI.cjs.map → NcAppNavigationNewItem-IYhRBzud.cjs.map} +1 -1
- package/dist/chunks/{NcAppNavigationNewItem-pBHgj8Es.mjs → NcAppNavigationNewItem-X4Ac8vym.mjs} +1 -1
- package/dist/chunks/{NcAppNavigationNewItem-pBHgj8Es.mjs.map → NcAppNavigationNewItem-X4Ac8vym.mjs.map} +1 -1
- package/dist/chunks/{NcAppNavigationSettings-c_S9UbSU.mjs → NcAppNavigationSettings-0hLCj-s5.mjs} +1 -1
- package/dist/chunks/{NcAppNavigationSettings-c_S9UbSU.mjs.map → NcAppNavigationSettings-0hLCj-s5.mjs.map} +1 -1
- package/dist/chunks/{NcAppNavigationSettings-IkF_z_xt.cjs → NcAppNavigationSettings-tvlinWey.cjs} +1 -1
- package/dist/chunks/{NcAppNavigationSettings-IkF_z_xt.cjs.map → NcAppNavigationSettings-tvlinWey.cjs.map} +1 -1
- package/dist/chunks/{NcAppNavigationToggle-S4YTmnky.mjs → NcAppNavigationToggle-RXyDbzmn.mjs} +1 -1
- package/dist/chunks/{NcAppNavigationToggle-S4YTmnky.mjs.map → NcAppNavigationToggle-RXyDbzmn.mjs.map} +1 -1
- package/dist/chunks/{NcAppNavigationToggle-Tvz9copM.cjs → NcAppNavigationToggle-ZTz_EO18.cjs} +1 -1
- package/dist/chunks/{NcAppNavigationToggle-Tvz9copM.cjs.map → NcAppNavigationToggle-ZTz_EO18.cjs.map} +1 -1
- package/dist/chunks/{NcAppSettingsDialog-L6IvAL_I.cjs → NcAppSettingsDialog-2tyARsR0.cjs} +3 -3
- package/dist/chunks/{NcAppSettingsDialog-L6IvAL_I.cjs.map → NcAppSettingsDialog-2tyARsR0.cjs.map} +1 -1
- package/dist/chunks/{NcAppSettingsDialog-CQtmRXyZ.mjs → NcAppSettingsDialog-8HAKz-0l.mjs} +4 -4
- package/dist/chunks/{NcAppSettingsDialog-CQtmRXyZ.mjs.map → NcAppSettingsDialog-8HAKz-0l.mjs.map} +1 -1
- package/dist/chunks/{NcAppSidebar-GCbKi7Tk.cjs → NcAppSidebar-PMmg9vsl.cjs} +2 -2
- package/dist/chunks/{NcAppSidebar-GCbKi7Tk.cjs.map → NcAppSidebar-PMmg9vsl.cjs.map} +1 -1
- package/dist/chunks/{NcAppSidebar-nHbqU8Wl.mjs → NcAppSidebar-qaRnOe4Y.mjs} +3 -3
- package/dist/chunks/{NcAppSidebar-nHbqU8Wl.mjs.map → NcAppSidebar-qaRnOe4Y.mjs.map} +1 -1
- package/dist/chunks/{NcAvatar-1gX-bnpd.mjs → NcAvatar-5DJP61Ka.mjs} +23 -24
- package/dist/chunks/NcAvatar-5DJP61Ka.mjs.map +1 -0
- package/dist/chunks/{NcAvatar-8NgbtiTN.cjs → NcAvatar-YQujzmop.cjs} +17 -18
- package/dist/chunks/NcAvatar-YQujzmop.cjs.map +1 -0
- package/dist/chunks/{NcBreadcrumb-3vNer4Fs.cjs → NcBreadcrumb-3Ez2uWmp.cjs} +1 -1
- package/dist/chunks/{NcBreadcrumb-3vNer4Fs.cjs.map → NcBreadcrumb-3Ez2uWmp.cjs.map} +1 -1
- package/dist/chunks/{NcBreadcrumb-VlYks8Vu.mjs → NcBreadcrumb-C2oZ_vji.mjs} +1 -1
- package/dist/chunks/{NcBreadcrumb-VlYks8Vu.mjs.map → NcBreadcrumb-C2oZ_vji.mjs.map} +1 -1
- package/dist/chunks/{NcBreadcrumbs-GhYBmcix.cjs → NcBreadcrumbs-H8ec0ouN.cjs} +1 -1
- package/dist/chunks/{NcBreadcrumbs-GhYBmcix.cjs.map → NcBreadcrumbs-H8ec0ouN.cjs.map} +1 -1
- package/dist/chunks/{NcBreadcrumbs-UCJPNjZg.mjs → NcBreadcrumbs-tq1eD4Hk.mjs} +2 -2
- package/dist/chunks/{NcBreadcrumbs-UCJPNjZg.mjs.map → NcBreadcrumbs-tq1eD4Hk.mjs.map} +1 -1
- package/dist/chunks/{NcCheckboxRadioSwitch-3sa_9DpY.mjs → NcCheckboxRadioSwitch-BiREcGAk.mjs} +6 -6
- package/dist/chunks/NcCheckboxRadioSwitch-BiREcGAk.mjs.map +1 -0
- package/dist/chunks/{NcCheckboxRadioSwitch-s5C7ZGB_.cjs → NcCheckboxRadioSwitch-xEweFZs1.cjs} +6 -6
- package/dist/chunks/NcCheckboxRadioSwitch-xEweFZs1.cjs.map +1 -0
- package/dist/chunks/NcCheckboxRadioSwitch.vue_vue_type_style_index_0_scoped_2603be83_lang-MzKjkB0t.mjs +3 -0
- package/dist/chunks/NcCheckboxRadioSwitch.vue_vue_type_style_index_0_scoped_2603be83_lang-MzKjkB0t.mjs.map +1 -0
- package/dist/chunks/NcCheckboxRadioSwitch.vue_vue_type_style_index_0_scoped_2603be83_lang-hGgZcPUX.cjs +3 -0
- package/dist/chunks/NcCheckboxRadioSwitch.vue_vue_type_style_index_0_scoped_2603be83_lang-hGgZcPUX.cjs.map +1 -0
- package/dist/chunks/{NcColorPicker-4qA0UWdA.cjs → NcColorPicker-2IJNZMe-.cjs} +1 -1
- package/dist/chunks/{NcColorPicker-4qA0UWdA.cjs.map → NcColorPicker-2IJNZMe-.cjs.map} +1 -1
- package/dist/chunks/{NcColorPicker-aNJDKf-I.mjs → NcColorPicker-H0rZhQxw.mjs} +3 -3
- package/dist/chunks/{NcColorPicker-aNJDKf-I.mjs.map → NcColorPicker-H0rZhQxw.mjs.map} +1 -1
- package/dist/chunks/{NcContent-x5KPSopo.cjs → NcContent-ZgOMyq2k.cjs} +1 -1
- package/dist/chunks/{NcContent-x5KPSopo.cjs.map → NcContent-ZgOMyq2k.cjs.map} +1 -1
- package/dist/chunks/{NcContent-V1PRVhsU.mjs → NcContent-lWYIO3gy.mjs} +1 -1
- package/dist/chunks/{NcContent-V1PRVhsU.mjs.map → NcContent-lWYIO3gy.mjs.map} +1 -1
- package/dist/chunks/{NcDashboardWidget-pzCvVb_0.mjs → NcDashboardWidget-hQn58Jv6.mjs} +3 -3
- package/dist/chunks/{NcDashboardWidget-pzCvVb_0.mjs.map → NcDashboardWidget-hQn58Jv6.mjs.map} +1 -1
- package/dist/chunks/{NcDashboardWidget-w15LYpmC.cjs → NcDashboardWidget-j44iStpo.cjs} +1 -1
- package/dist/chunks/{NcDashboardWidget-w15LYpmC.cjs.map → NcDashboardWidget-j44iStpo.cjs.map} +1 -1
- package/dist/chunks/{NcDashboardWidgetItem-FNmPTAuj.mjs → NcDashboardWidgetItem-Yp4ii3At.mjs} +2 -2
- package/dist/chunks/{NcDashboardWidgetItem-FNmPTAuj.mjs.map → NcDashboardWidgetItem-Yp4ii3At.mjs.map} +1 -1
- package/dist/chunks/{NcDashboardWidgetItem-YJerQyu5.cjs → NcDashboardWidgetItem-f4Y_DBsU.cjs} +1 -1
- package/dist/chunks/{NcDashboardWidgetItem-YJerQyu5.cjs.map → NcDashboardWidgetItem-f4Y_DBsU.cjs.map} +1 -1
- package/dist/chunks/{NcDateTime-eHTrKYG4.cjs → NcDateTime-1ZGz6Hwu.cjs} +1 -1
- package/dist/chunks/{NcDateTime-eHTrKYG4.cjs.map → NcDateTime-1ZGz6Hwu.cjs.map} +1 -1
- package/dist/chunks/{NcDateTime-22ULCxg8.mjs → NcDateTime-sBcbqRB6.mjs} +1 -1
- package/dist/chunks/{NcDateTime-22ULCxg8.mjs.map → NcDateTime-sBcbqRB6.mjs.map} +1 -1
- package/dist/chunks/{NcDialog-b2LjzZB8.mjs → NcDialog-1Nrs9x8z.mjs} +6 -9
- package/dist/chunks/NcDialog-1Nrs9x8z.mjs.map +1 -0
- package/dist/chunks/{NcDialog-KlvRL7k1.cjs → NcDialog-k6iHgTGm.cjs} +3 -6
- package/dist/chunks/NcDialog-k6iHgTGm.cjs.map +1 -0
- package/dist/chunks/{NcEmojiPicker-H_YmCt4L.mjs → NcEmojiPicker--8moif3g.mjs} +5 -5
- package/dist/chunks/{NcEmojiPicker-H_YmCt4L.mjs.map → NcEmojiPicker--8moif3g.mjs.map} +1 -1
- package/dist/chunks/{NcEmojiPicker-o1VRXxQO.cjs → NcEmojiPicker-gGgrlLAJ.cjs} +1 -1
- package/dist/chunks/{NcEmojiPicker-o1VRXxQO.cjs.map → NcEmojiPicker-gGgrlLAJ.cjs.map} +1 -1
- package/dist/chunks/{NcHeaderMenu-CIYGCufy.cjs → NcHeaderMenu-5dnFFhRA.cjs} +5 -5
- package/dist/chunks/{NcHeaderMenu-CIYGCufy.cjs.map → NcHeaderMenu-5dnFFhRA.cjs.map} +1 -1
- package/dist/chunks/{NcHeaderMenu-CfEUQ0JV.mjs → NcHeaderMenu-ePmuT5Kz.mjs} +2 -2
- package/dist/chunks/{NcHeaderMenu-CfEUQ0JV.mjs.map → NcHeaderMenu-ePmuT5Kz.mjs.map} +1 -1
- package/dist/chunks/{NcInputConfirmCancel-lUDtoN2O.mjs → NcInputConfirmCancel-HrSwS4LK.mjs} +1 -1
- package/dist/chunks/{NcInputConfirmCancel-lUDtoN2O.mjs.map → NcInputConfirmCancel-HrSwS4LK.mjs.map} +1 -1
- package/dist/chunks/{NcInputConfirmCancel-YzEcukdc.cjs → NcInputConfirmCancel-q4IYDSKH.cjs} +1 -1
- package/dist/chunks/{NcInputConfirmCancel-YzEcukdc.cjs.map → NcInputConfirmCancel-q4IYDSKH.cjs.map} +1 -1
- package/dist/chunks/{NcListItem-AZpInn_s.mjs → NcListItem-_P2bxfeP.mjs} +2 -2
- package/dist/chunks/{NcListItem-AZpInn_s.mjs.map → NcListItem-_P2bxfeP.mjs.map} +1 -1
- package/dist/chunks/{NcListItem-bBx6_yWw.cjs → NcListItem-wsOnBEF3.cjs} +1 -1
- package/dist/chunks/{NcListItem-bBx6_yWw.cjs.map → NcListItem-wsOnBEF3.cjs.map} +1 -1
- package/dist/chunks/{NcListItemIcon-uPc7p1KY.cjs → NcListItemIcon-65Rgi-AZ.cjs} +1 -1
- package/dist/chunks/{NcListItemIcon-uPc7p1KY.cjs.map → NcListItemIcon-65Rgi-AZ.cjs.map} +1 -1
- package/dist/chunks/{NcListItemIcon-1ZcwsrMT.mjs → NcListItemIcon-IXrbZUKU.mjs} +1 -1
- package/dist/chunks/{NcListItemIcon-1ZcwsrMT.mjs.map → NcListItemIcon-IXrbZUKU.mjs.map} +1 -1
- package/dist/chunks/{NcPasswordField-YvUbX2WS.cjs → NcPasswordField-XvXblBeQ.cjs} +1 -1
- package/dist/chunks/{NcPasswordField-YvUbX2WS.cjs.map → NcPasswordField-XvXblBeQ.cjs.map} +1 -1
- package/dist/chunks/{NcPasswordField-fNiTJMmG.mjs → NcPasswordField-kJ1PZotd.mjs} +1 -1
- package/dist/chunks/{NcPasswordField-fNiTJMmG.mjs.map → NcPasswordField-kJ1PZotd.mjs.map} +1 -1
- package/dist/chunks/{NcPopover-EXxv8Pzw.cjs → NcPopover--SjyNre9.cjs} +18 -25
- package/dist/chunks/NcPopover--SjyNre9.cjs.map +1 -0
- package/dist/chunks/{NcPopover-NyUZ2r7V.mjs → NcPopover-yyItaFC6.mjs} +42 -49
- package/dist/chunks/NcPopover-yyItaFC6.mjs.map +1 -0
- package/dist/chunks/{NcRelatedResourcesPanel-H2imJgxi.mjs → NcRelatedResourcesPanel-1nj1tk0J.mjs} +1 -1
- package/dist/chunks/{NcRelatedResourcesPanel-H2imJgxi.mjs.map → NcRelatedResourcesPanel-1nj1tk0J.mjs.map} +1 -1
- package/dist/chunks/{NcRelatedResourcesPanel-DCqlPqZc.cjs → NcRelatedResourcesPanel-KxXrRko3.cjs} +1 -1
- package/dist/chunks/{NcRelatedResourcesPanel-DCqlPqZc.cjs.map → NcRelatedResourcesPanel-KxXrRko3.cjs.map} +1 -1
- package/dist/chunks/{NcRichContenteditable-lPa8fqWG.cjs → NcRichContenteditable-A0FFbptl.cjs} +7 -7
- package/dist/chunks/{NcRichContenteditable-EZp-vrCT.mjs.map → NcRichContenteditable-A0FFbptl.cjs.map} +1 -1
- package/dist/chunks/{NcRichContenteditable-EZp-vrCT.mjs → NcRichContenteditable-VzFXqSYH.mjs} +8 -8
- package/dist/chunks/{NcRichContenteditable-lPa8fqWG.cjs.map → NcRichContenteditable-VzFXqSYH.mjs.map} +1 -1
- package/dist/chunks/{NcRichText-SPiEkcnt.cjs → NcRichText-N44WJqzt.cjs} +1 -1
- package/dist/chunks/{NcRichText-SPiEkcnt.cjs.map → NcRichText-N44WJqzt.cjs.map} +1 -1
- package/dist/chunks/{NcRichText-7CHftQ4Z.mjs → NcRichText-YSUTWw6M.mjs} +2 -2
- package/dist/chunks/{NcRichText-7CHftQ4Z.mjs.map → NcRichText-YSUTWw6M.mjs.map} +1 -1
- package/dist/chunks/{NcSelect-c9-eF29z.cjs → NcSelect-H-xyiCqP.cjs} +1 -1
- package/dist/chunks/{NcSelect-c9-eF29z.cjs.map → NcSelect-H-xyiCqP.cjs.map} +1 -1
- package/dist/chunks/{NcSelect-zx9IspDS.mjs → NcSelect-roYZ16y8.mjs} +2 -2
- package/dist/chunks/{NcSelect-zx9IspDS.mjs.map → NcSelect-roYZ16y8.mjs.map} +1 -1
- package/dist/chunks/{NcSelectTags-WGdCwmRr.mjs → NcSelectTags-3BfQQNLj.mjs} +2 -2
- package/dist/chunks/{NcSelectTags-WGdCwmRr.mjs.map → NcSelectTags-3BfQQNLj.mjs.map} +1 -1
- package/dist/chunks/{NcSelectTags-doFIXNxC.cjs → NcSelectTags-iuvfaq_W.cjs} +1 -1
- package/dist/chunks/{NcSelectTags-doFIXNxC.cjs.map → NcSelectTags-iuvfaq_W.cjs.map} +1 -1
- package/dist/chunks/{NcSettingsInputText-sJarpoq-.cjs → NcSettingsInputText-JHuxEb64.cjs} +1 -1
- package/dist/chunks/{NcSettingsInputText-sJarpoq-.cjs.map → NcSettingsInputText-JHuxEb64.cjs.map} +1 -1
- package/dist/chunks/{NcSettingsInputText-YMRo6B3V.mjs → NcSettingsInputText-RH5qyxcD.mjs} +1 -1
- package/dist/chunks/{NcSettingsInputText-YMRo6B3V.mjs.map → NcSettingsInputText-RH5qyxcD.mjs.map} +1 -1
- package/dist/chunks/{NcSettingsSection-R_JKZdJk.cjs → NcSettingsSection-dsoWc5to.cjs} +1 -1
- package/dist/chunks/{NcSettingsSection-R_JKZdJk.cjs.map → NcSettingsSection-dsoWc5to.cjs.map} +1 -1
- package/dist/chunks/{NcSettingsSection-zdWzOqxk.mjs → NcSettingsSection-u3WizmVu.mjs} +1 -1
- package/dist/chunks/{NcSettingsSection-zdWzOqxk.mjs.map → NcSettingsSection-u3WizmVu.mjs.map} +1 -1
- package/dist/chunks/{NcSettingsSelectGroup-Ghgl6Y_d.mjs → NcSettingsSelectGroup-l7ImtXiI.mjs} +2 -2
- package/dist/chunks/{NcSettingsSelectGroup-Ghgl6Y_d.mjs.map → NcSettingsSelectGroup-l7ImtXiI.mjs.map} +1 -1
- package/dist/chunks/{NcSettingsSelectGroup-NhJyFPsw.cjs → NcSettingsSelectGroup-obOOSE0Z.cjs} +1 -1
- package/dist/chunks/{NcSettingsSelectGroup-NhJyFPsw.cjs.map → NcSettingsSelectGroup-obOOSE0Z.cjs.map} +1 -1
- package/dist/chunks/{NcTextField-8ap5MAGr.cjs → NcTextField-5nK-T1Xg.cjs} +1 -1
- package/dist/chunks/{NcTextField-8ap5MAGr.cjs.map → NcTextField-5nK-T1Xg.cjs.map} +1 -1
- package/dist/chunks/{NcTextField-tIJ3fJ37.mjs → NcTextField-JlIIeRJa.mjs} +1 -1
- package/dist/chunks/{NcTextField-tIJ3fJ37.mjs.map → NcTextField-JlIIeRJa.mjs.map} +1 -1
- package/dist/chunks/{NcTimezonePicker-ag-krDDP.cjs → NcTimezonePicker-1NMfD5lj.cjs} +18 -22
- package/dist/chunks/{NcTimezonePicker-ag-krDDP.cjs.map → NcTimezonePicker-1NMfD5lj.cjs.map} +1 -1
- package/dist/chunks/{NcTimezonePicker-Ue_mc4jo.mjs → NcTimezonePicker-GDJZ0IwA.mjs} +21 -25
- package/dist/chunks/{NcTimezonePicker-Ue_mc4jo.mjs.map → NcTimezonePicker-GDJZ0IwA.mjs.map} +1 -1
- package/dist/chunks/{NcUserBubble-hfgJXqk2.cjs → NcUserBubble-ADV-rrgN.cjs} +1 -1
- package/dist/chunks/{NcUserBubble-hfgJXqk2.cjs.map → NcUserBubble-ADV-rrgN.cjs.map} +1 -1
- package/dist/chunks/{NcUserBubble-s30BQXdv.mjs → NcUserBubble-HoPxl8_o.mjs} +2 -2
- package/dist/chunks/{NcUserBubble-s30BQXdv.mjs.map → NcUserBubble-HoPxl8_o.mjs.map} +1 -1
- package/dist/chunks/{NcUserStatusIcon-PevYJx6w.cjs → NcUserStatusIcon-WSxqK-Ix.cjs} +1 -1
- package/dist/chunks/{NcUserStatusIcon-PevYJx6w.cjs.map → NcUserStatusIcon-WSxqK-Ix.cjs.map} +1 -1
- package/dist/chunks/{NcUserStatusIcon-H5b_e8YL.mjs → NcUserStatusIcon-dgPMbNYQ.mjs} +1 -1
- package/dist/chunks/{NcUserStatusIcon-H5b_e8YL.mjs.map → NcUserStatusIcon-dgPMbNYQ.mjs.map} +1 -1
- package/dist/chunks/{ScopeComponent-9XNLQCuu.mjs → ScopeComponent-8lJfv9VF.mjs} +4 -4
- package/dist/chunks/{ScopeComponent-9XNLQCuu.mjs.map → ScopeComponent-8lJfv9VF.mjs.map} +1 -1
- package/dist/chunks/{ScopeComponent-_Cg8ogL-.cjs → ScopeComponent-d_TBKnQk.cjs} +4 -4
- package/dist/chunks/{ScopeComponent-_Cg8ogL-.cjs.map → ScopeComponent-d_TBKnQk.cjs.map} +1 -1
- package/dist/chunks/_l10n-RVZyA63y.cjs +64 -0
- package/dist/chunks/_l10n-RVZyA63y.cjs.map +1 -0
- package/dist/chunks/_l10n-gZppkly8.mjs +66 -0
- package/dist/chunks/_l10n-gZppkly8.mjs.map +1 -0
- package/dist/chunks/{referencePickerModal-rHOAeK-a.cjs → referencePickerModal-byTgSeys.cjs} +1 -1
- package/dist/chunks/{referencePickerModal-rHOAeK-a.cjs.map → referencePickerModal-byTgSeys.cjs.map} +1 -1
- package/dist/chunks/{referencePickerModal-jbqYHMmd.mjs → referencePickerModal-tEVbhwha.mjs} +3 -3
- package/dist/chunks/{referencePickerModal-jbqYHMmd.mjs.map → referencePickerModal-tEVbhwha.mjs.map} +1 -1
- package/dist/chunks/{usernameToColor-pYptUj7i.mjs → usernameToColor-LY-6e04n.mjs} +1 -1
- package/dist/chunks/{usernameToColor-pYptUj7i.mjs.map → usernameToColor-LY-6e04n.mjs.map} +1 -1
- package/dist/chunks/{usernameToColor-fJ1S8Q2S.cjs → usernameToColor-ty7b2Xom.cjs} +1 -1
- package/dist/chunks/{usernameToColor-fJ1S8Q2S.cjs.map → usernameToColor-ty7b2Xom.cjs.map} +1 -1
- package/dist/index.cjs +4 -4
- package/dist/index.mjs +43 -43
- package/package.json +2 -2
- package/dist/chunks/NcActions-7ytNFRBJ.cjs.map +0 -1
- package/dist/chunks/NcActions-CNDgnRLf.mjs.map +0 -1
- package/dist/chunks/NcAvatar-1gX-bnpd.mjs.map +0 -1
- package/dist/chunks/NcAvatar-8NgbtiTN.cjs.map +0 -1
- package/dist/chunks/NcCheckboxRadioSwitch-3sa_9DpY.mjs.map +0 -1
- package/dist/chunks/NcCheckboxRadioSwitch-s5C7ZGB_.cjs.map +0 -1
- package/dist/chunks/NcCheckboxRadioSwitch.vue_vue_type_style_index_0_scoped_835b7036_lang-2l55YbP4.cjs +0 -3
- package/dist/chunks/NcCheckboxRadioSwitch.vue_vue_type_style_index_0_scoped_835b7036_lang-2l55YbP4.cjs.map +0 -1
- package/dist/chunks/NcCheckboxRadioSwitch.vue_vue_type_style_index_0_scoped_835b7036_lang-4V3NxICZ.mjs +0 -3
- package/dist/chunks/NcCheckboxRadioSwitch.vue_vue_type_style_index_0_scoped_835b7036_lang-4V3NxICZ.mjs.map +0 -1
- package/dist/chunks/NcDialog-KlvRL7k1.cjs.map +0 -1
- package/dist/chunks/NcDialog-b2LjzZB8.mjs.map +0 -1
- package/dist/chunks/NcPopover-EXxv8Pzw.cjs.map +0 -1
- package/dist/chunks/NcPopover-NyUZ2r7V.mjs.map +0 -1
- package/dist/chunks/_l10n-juAR1Sua.cjs +0 -64
- package/dist/chunks/_l10n-juAR1Sua.cjs.map +0 -1
- package/dist/chunks/_l10n-tZEKUJRj.mjs +0 -66
- package/dist/chunks/_l10n-tZEKUJRj.mjs.map +0 -1
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"_l10n-gZppkly8.mjs","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
var Fe = require("../assets/referencePickerModal-VxSowpb5.css");
|
|
2
|
-
const o = require("./_plugin-vue2_normalizer-DCfUPqga.cjs"), i = require("./_l10n-
|
|
2
|
+
const o = require("./_plugin-vue2_normalizer-DCfUPqga.cjs"), i = require("./_l10n-RVZyA63y.cjs"), D = require("@nextcloud/axios"), y = require("@nextcloud/initial-state"), h = require("@nextcloud/router"), p = require("../Components/NcEmptyContent.cjs"), w = require("./index-FO4BaGaF.cjs"), b = require("./NcSelect-H-xyiCqP.cjs"), j = require("../Components/NcLoadingIcon.cjs"), A = require("./NcTextField-5nK-T1Xg.cjs"), F = require("./DotsHorizontal-dlN1WvqM.cjs"), H = require("../Components/NcButton.cjs"), U = require("../Components/NcModal.cjs"), Q = require("@nextcloud/event-bus"), G = require("./ArrowLeft-3KC2k3tR.cjs"), Z = require("./Close-QFLrdRdG.cjs"), J = require("vue"), S = (t) => t && t.__esModule ? t : { default: t }, f = /* @__PURE__ */ S(D), K = /* @__PURE__ */ S(J);
|
|
3
3
|
window._vue_richtext_widgets || (window._vue_richtext_widgets = {});
|
|
4
4
|
const R = (t) => !!window._vue_richtext_widgets[t], $ = (t, e, r = (s) => {
|
|
5
5
|
}) => {
|
package/dist/chunks/{referencePickerModal-rHOAeK-a.cjs.map → referencePickerModal-byTgSeys.cjs.map}
RENAMED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"referencePickerModal-rHOAeK-a.cjs","sources":["../../src/components/NcRichText/widgets.js","../../src/components/NcRichText/NcReferenceWidget.vue","../../src/components/NcRichText/NcReferencePicker/customPickerElements.js","../../src/components/NcRichText/NcReferencePicker/NcCustomPickerElement.vue","../../src/components/NcRichText/NcReferencePicker/providerHelper.js","../../src/components/NcRichText/NcReferencePicker/utils.js","../../node_modules/vue-material-design-icons/LinkVariant.vue","../../src/components/NcRichText/NcReferencePicker/NcProviderList.vue","../../src/components/NcRichText/NcReferencePicker/NcRawLinkInput.vue","../../src/components/NcRichText/NcReferencePicker/NcSearchResult.vue","../../src/components/NcRichText/NcReferencePicker/NcSearch.vue","../../src/components/NcRichText/NcReferencePicker/NcReferencePicker.vue","../../src/components/NcRichText/NcReferencePicker/NcReferencePickerModal.vue","../../src/components/NcRichText/NcReferencePicker/referencePickerModal.js"],"sourcesContent":["if (!window._vue_richtext_widgets) {\n\twindow._vue_richtext_widgets = {}\n}\n\nconst isWidgetRegistered = (id) => {\n\treturn !!window._vue_richtext_widgets[id]\n}\n\nconst registerWidget = (id, callback, onDestroy = (el) => {}) => {\n\tif (window._vue_richtext_widgets[id]) {\n\t\tconsole.error('Widget for id ' + id + ' already registered')\n\t\treturn\n\t}\n\n\twindow._vue_richtext_widgets[id] = {\n\t\tid,\n\t\tcallback,\n\t\tonDestroy,\n\t}\n}\n\nconst renderWidget = (el, { richObjectType, richObject, accessible }) => {\n\tif (richObjectType === 'open-graph') {\n\t\treturn\n\t}\n\n\tif (!window._vue_richtext_widgets[richObjectType]) {\n\t\tconsole.error('Widget for rich object type ' + richObjectType + ' not registered')\n\t\treturn\n\t}\n\n\twindow._vue_richtext_widgets[richObjectType].callback(el, { richObjectType, richObject, accessible })\n}\n\nconst destroyWidget = (richObjectType, el) => {\n\tif (richObjectType === 'open-graph') {\n\t\treturn\n\t}\n\n\tif (!window._vue_richtext_widgets[richObjectType]) {\n\t\treturn\n\t}\n\n\twindow._vue_richtext_widgets[richObjectType].onDestroy(el)\n}\n\nwindow._registerWidget = registerWidget\n\nexport {\n\tregisterWidget,\n\trenderWidget,\n\tdestroyWidget,\n\tisWidgetRegistered,\n}\n","<template>\n\t<div>\n\t\t<div v-if=\"reference && hasCustomWidget\" class=\"widget-custom\">\n\t\t\t<div ref=\"customWidget\" />\n\t\t</div>\n\n\t\t<a v-else-if=\"!noAccess && reference && reference.openGraphObject && !hasCustomWidget\"\n\t\t\t:href=\"reference.openGraphObject.link\"\n\t\t\trel=\"noopener noreferrer\"\n\t\t\ttarget=\"_blank\"\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\">{{ reference.openGraphObject.name }}</p>\n\t\t\t\t<p class=\"widget-default--description\" :style=\"descriptionStyle\">{{ reference.openGraphObject.description }}</p>\n\t\t\t\t<p class=\"widget-default--link\">{{ compactLink }}</p>\n\t\t\t</div>\n\t\t</a>\n\t</div>\n</template>\n<script>\nimport { renderWidget, isWidgetRegistered, destroyWidget } from './widgets.js'\n\nexport default {\n\tname: 'NcReferenceWidget',\n\tprops: {\n\t\treference: {\n\t\t\ttype: Object,\n\t\t\trequired: true,\n\t\t},\n\t},\n\tdata() {\n\t\treturn {\n\t\t\tcompact: 3,\n\t\t}\n\t},\n\tcomputed: {\n\t\thasCustomWidget() {\n\t\t\treturn isWidgetRegistered(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.compact === 0) {\n\t\t\t\treturn {\n\t\t\t\t\tdisplay: 'none',\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tconst lineClamp = this.compact < 4 ? this.compact : 3\n\t\t\treturn {\n\t\t\t\tlineClamp,\n\t\t\t\twebkitLineClamp: lineClamp,\n\t\t\t}\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},\n\tmounted() {\n\t\tthis.renderWidget()\n\t\tthis.observer = new ResizeObserver(entries => {\n\t\t\tif (entries[0].contentRect.width < 450) {\n\t\t\t\tthis.compact = 0\n\t\t\t} else if (entries[0].contentRect.width < 550) {\n\t\t\t\tthis.compact = 1\n\t\t\t} else if (entries[0].contentRect.width < 650) {\n\t\t\t\tthis.compact = 2\n\t\t\t} else {\n\t\t\t\tthis.compact = 3\n\t\t\t}\n\n\t\t})\n\t\tthis.observer.observe(this.$el)\n\t},\n\tbeforeDestroy() {\n\t\tthis.observer.disconnect()\n\t\tdestroyWidget(this.reference.richObjectType, this.$el)\n\t},\n\tmethods: {\n\t\trenderWidget() {\n\t\t\tif (this.$refs.customWidget) {\n\t\t\t\tthis.$refs.customWidget.innerHTML = ''\n\t\t\t}\n\t\t\tif (this?.reference?.richObjectType === 'open-graph') {\n\t\t\t\treturn\n\t\t\t}\n\t\t\tthis.$nextTick(() => {\n\t\t\t\t// Waiting for the ref to become available\n\t\t\t\trenderWidget(this.$refs.customWidget, this.reference)\n\t\t\t})\n\t\t},\n\t},\n}\n</script>\n<style lang=\"scss\" scoped>\n\n@mixin widget {\n\twidth: 100%;\n\tmargin: auto;\n\tmargin-bottom: calc(var(--default-grid-baseline, 4px) * 3);\n\tmargin-top: calc(var(--default-grid-baseline, 4px) * 3);\n\toverflow: hidden;\n\tborder: 2px solid var(--color-border);\n\tborder-radius: var(--border-radius-large);\n\tbackground-color: transparent;\n\tdisplay: flex;\n}\n\n.widget-custom {\n\t@include widget;\n}\n\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</style>\n","if (!window._vue_richtext_custom_picker_elements) {\n\twindow._vue_richtext_custom_picker_elements = {}\n}\n\n/**\n * Representation of the render callback result\n * It contains a dom element and an object (Vue instance or other fancy things)\n */\nclass NcCustomPickerRenderResult {\n\n\t/**\n\t * @param {HTMLElement} element The HTML element\n\t * @param {object} object The object\n\t */\n\tconstructor(element, object) {\n\t\tthis.element = element\n\t\tthis.object = object\n\t}\n\n}\n\nconst isCustomPickerElementRegistered = (id) => {\n\treturn !!window._vue_richtext_custom_picker_elements[id]\n}\n\nconst getCustomPickerElementSize = (id) => {\n\tconst size = window._vue_richtext_custom_picker_elements[id]?.size\n\tif (['small', 'normal', 'large', 'full'].includes(size)) {\n\t\treturn size\n\t}\n\treturn null\n}\n\nconst registerCustomPickerElement = (id, callback, onDestroy = (el) => {}, size = 'large') => {\n\tif (window._vue_richtext_custom_picker_elements[id]) {\n\t\tconsole.error('Custom reference picker element for id ' + id + ' already registered')\n\t\treturn\n\t}\n\n\twindow._vue_richtext_custom_picker_elements[id] = {\n\t\tid,\n\t\tcallback,\n\t\tonDestroy,\n\t\tsize,\n\t}\n}\n\nconst renderCustomPickerElement = (el, { providerId, accessible }) => {\n\tif (!window._vue_richtext_custom_picker_elements[providerId]) {\n\t\tconsole.error('Custom reference picker element for reference provider ID ' + providerId + ' not registered')\n\t\treturn\n\t}\n\n\treturn window._vue_richtext_custom_picker_elements[providerId].callback(el, { providerId, accessible })\n}\n\nconst destroyCustomPickerElement = (providerId, el, renderResult) => {\n\tif (!window._vue_richtext_custom_picker_elements[providerId]) {\n\t\treturn\n\t}\n\n\twindow._vue_richtext_custom_picker_elements[providerId].onDestroy(el, renderResult)\n}\n\nwindow._registerCustomPickerElement = registerCustomPickerElement\n\nexport {\n\tNcCustomPickerRenderResult,\n\tregisterCustomPickerElement,\n\trenderCustomPickerElement,\n\tdestroyCustomPickerElement,\n\tisCustomPickerElementRegistered,\n\tgetCustomPickerElementSize,\n}\n","<template>\n\t<div ref=\"domElement\" />\n</template>\n\n<script>\nimport { renderCustomPickerElement, isCustomPickerElementRegistered, destroyCustomPickerElement } from './customPickerElements.js'\n\nexport default {\n\tname: 'NcCustomPickerElement',\n\tprops: {\n\t\t/**\n\t\t * The reference provider\n\t\t */\n\t\tprovider: {\n\t\t\ttype: Object,\n\t\t\trequired: true,\n\t\t},\n\t},\n\temits: [\n\t\t'cancel',\n\t\t'submit',\n\t],\n\tdata() {\n\t\treturn {\n\t\t\tisRegistered: isCustomPickerElementRegistered(this.provider.id),\n\t\t\trenderResult: null,\n\t\t}\n\t},\n\tmounted() {\n\t\tif (this.isRegistered) {\n\t\t\tthis.renderElement()\n\t\t}\n\t},\n\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","import { isCustomPickerElementRegistered } from './customPickerElements.js'\n\nimport { t } from '../../../l10n.js'\n\nimport axios from '@nextcloud/axios'\nimport { loadState } from '@nextcloud/initial-state'\nimport { generateOcsUrl, imagePath } from '@nextcloud/router'\n\nexport const anyLinkProviderId = 'any-link'\n\nconst anyLinkProvider = {\n\tid: anyLinkProviderId,\n\ttitle: t('Any link'),\n\ticon_url: imagePath('core', 'filetypes/link.svg'),\n}\n\n// only get the provider list once, even if functions of this file are imported multiple times by different apps/components\nif (!window._vue_richtext_reference_providers) {\n\twindow._vue_richtext_reference_providers = loadState('core', 'reference-provider-list', [])\n}\n\n// single timestamps object used by every entity in the page\nif (!window._vue_richtext_reference_provider_timestamps) {\n\twindow._vue_richtext_reference_provider_timestamps = loadState('core', 'reference-provider-timestamps', {})\n}\n\n/**\n * @param {string} providerId The provider ID\n * @return {object} The provider object\n */\nexport function getProvider(providerId) {\n\tif (providerId === anyLinkProviderId) {\n\t\treturn anyLinkProvider\n\t}\n\treturn getProviders().find(p => p.id === providerId)\n}\n\n/**\n * @return {Array} Raw provider list as it was provided by the server\n */\nexport function getProviders() {\n\treturn window._vue_richtext_reference_providers.filter(p => {\n\t\t// avoid providers with no associated search provider and no custom component registered\n\t\tconst keep = (!!p.search_providers_ids && p.search_providers_ids.length > 0) || isCustomPickerElementRegistered(p.id)\n\t\tif (!keep) {\n\t\t\tconsole.debug('[smart picker]', p.id, 'reference provider is discoverable but does not have any related search provider or custom picker component registered')\n\t\t}\n\t\treturn keep\n\t})\n}\n\n/**\n * Helper function to sort a list of providers according to 2 factors:\n * - their \"last used timestamp\"\n * - their \"order\" property (coming from the provider declaration in the server implementation)\n *\n * @param {Array} providerList list of provider objects\n * @return {Array} the sorted provider list\n */\nexport function sortProviders(providerList) {\n\tconst timestamps = window._vue_richtext_reference_provider_timestamps\n\n\treturn providerList.sort((a, b) => {\n\t\treturn a.order === b.order\n\t\t\t? 0\n\t\t\t: a.order > b.order\n\t\t\t\t? 1\n\t\t\t\t: -1\n\t}).sort((a, b) => {\n\t\tconst ta = timestamps[a.id]\n\t\tconst tb = timestamps[b.id]\n\t\treturn ta === tb\n\t\t\t? 0\n\t\t\t: tb === undefined\n\t\t\t\t? -1\n\t\t\t\t: ta === undefined\n\t\t\t\t\t? 1\n\t\t\t\t\t: ta > tb\n\t\t\t\t\t\t? -1\n\t\t\t\t\t\t: 1\n\t})\n}\n\n/**\n * Helper function to search a provider from a search query\n * Result is a sorted list of providers\n *\n * @param {string} query The search query\n * @param {number} limit (optional) max number of results\n * @return {Array} the sorted/filtered provider list\n */\nexport function searchProvider(query, limit = null) {\n\tconst providers = getProviders()\n\tconst escapedQuery = query.replace(/[/\\-\\\\^$*+?.()|[\\]{}]/g, '\\\\$&')\n\tconst regexp = new RegExp(escapedQuery, 'i')\n\tconst sortedProviders = sortProviders(providers)\n\tconst filteredSortedProviders = sortedProviders.filter(p => {\n\t\treturn p.title.match(regexp)\n\t})\n\tconst searchResult = limit\n\t\t? filteredSortedProviders.slice(0, limit)\n\t\t: filteredSortedProviders\n\t// append the 'any link' provider in the full list or when there is no result\n\tif (query === '' || searchResult.length === 0) {\n\t\tsearchResult.push(anyLinkProvider)\n\t}\n\treturn searchResult\n}\n\n/**\n * Update the \"last used timestamp\" on the server side and then locally in the frontend\n *\n * @param {number} providerId The id of the search provider\n */\nexport function touchProvider(providerId) {\n\tconst timestamp = Math.floor(Date.now() / 1000)\n\tconst params = {\n\t\ttimestamp,\n\t}\n\tconst url = generateOcsUrl('references/provider/{providerId}', { providerId })\n\taxios.put(url, params)\n\t\t.then((response) => {\n\t\t\twindow._vue_richtext_reference_provider_timestamps[providerId] = timestamp\n\t\t})\n}\n","let 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\"\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>","<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 './providerHelper.js'\nimport { isUrl } from './utils.js'\nimport NcEmptyContent from '../../NcEmptyContent/index.js'\nimport NcHighlight from '../../NcHighlight/index.js'\nimport NcSelect from '../../NcSelect/index.js'\nimport { t } from '../../../l10n.js'\n\nimport LinkVariantIcon from 'vue-material-design-icons/LinkVariant.vue'\n\nexport default {\n\tname: 'NcProviderList',\n\tcomponents: {\n\t\tNcSelect,\n\t\tNcHighlight,\n\t\tNcEmptyContent,\n\t\tLinkVariantIcon,\n\t},\n\temits: [\n\t\t'select-provider',\n\t\t'submit',\n\t],\n\tdata() {\n\t\treturn {\n\t\t\tselectedProvider: null,\n\t\t\tquery: '',\n\t\t\tmultiselectPlaceholder: t('Select provider'),\n\t\t\tproviderIconAlt: t('Provider icon'),\n\t\t}\n\t},\n\tcomputed: {\n\t\toptions() {\n\t\t\tconst result = []\n\t\t\tif (this.query !== '' && isUrl(this.query)) {\n\t\t\t\tresult.push({\n\t\t\t\t\tid: this.query,\n\t\t\t\t\ttitle: this.query,\n\t\t\t\t\tisLink: true,\n\t\t\t\t})\n\t\t\t}\n\t\t\tresult.push(...searchProvider(this.query))\n\t\t\treturn result\n\t\t},\n\t},\n\tmethods: {\n\t\tfocus() {\n\t\t\tsetTimeout(() => {\n\t\t\t\tthis.$refs['provider-select']?.$el?.querySelector('#provider-select-input')?.focus()\n\t\t\t}, 300)\n\t\t},\n\t\tonProviderSelected(p) {\n\t\t\tif (p !== null) {\n\t\t\t\tif (p.isLink) {\n\t\t\t\t\tthis.$emit('submit', p.title)\n\t\t\t\t} else {\n\t\t\t\t\tthis.$emit('select-provider', p)\n\t\t\t\t}\n\t\t\t\tthis.selectedProvider = null\n\t\t\t}\n\t\t},\n\t\tonSearch(query, 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-right: 8px;\n\t\t\t}\n\n\t\t\t.provider-icon {\n\t\t\t\twidth: 20px;\n\t\t\t\theight: 20px;\n\t\t\t\tobject-fit: contain;\n\t\t\t\tmargin-right: 8px;\n\t\t\t\tfilter: var(--background-invert-if-dark);\n\t\t\t}\n\n\t\t\t.option-text {\n\t\t\t\toverflow: hidden;\n\t\t\t\ttext-overflow: ellipsis;\n\t\t\t\twhite-space: nowrap;\n\t\t\t}\n\n\t\t}\n\t}\n}\n</style>\n","<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","<template>\n\t<div class=\"result\">\n\t\t<div v-if=\"entry.icon\"\n\t\t\t:class=\"{ [entry.icon]: true, rounded: entry.rounded }\"\n\t\t\tclass=\"result--icon-class\" />\n\t\t<img v-else\n\t\t\tclass=\"result--image\"\n\t\t\t:class=\"{ rounded: entry.rounded }\"\n\t\t\t:src=\"entry.thumbnailUrl\">\n\t\t<div class=\"result--content\">\n\t\t\t<span class=\"result--content--name\">\n\t\t\t\t<NcHighlight :search=\"query\" :text=\"entry.title\" />\n\t\t\t</span>\n\t\t\t<span class=\"result--content--subline\">\n\t\t\t\t<NcHighlight :search=\"query\" :text=\"entry.subline\" />\n\t\t\t</span>\n\t\t</div>\n\t</div>\n</template>\n\n<script>\nimport NcHighlight from '../../NcHighlight/index.js'\n\nexport default {\n\tname: 'NcSearchResult',\n\tcomponents: {\n\t\tNcHighlight,\n\t},\n\tprops: {\n\t\t/**\n\t\t * Unified search result entry\n\t\t */\n\t\tentry: {\n\t\t\ttype: Object,\n\t\t\trequired: true,\n\t\t},\n\t\t/**\n\t\t * The query that led to getting this result\n\t\t * Used to highlight the entry text\n\t\t */\n\t\tquery: {\n\t\t\ttype: String,\n\t\t\trequired: true,\n\t\t},\n\t},\n}\n</script>\n\n<style lang=\"scss\" scoped>\n.result {\n\tdisplay: flex;\n\talign-items: center;\n\theight: 44px;\n\toverflow: hidden;\n\n\t&--icon-class,\n\t&--image {\n\t\twidth: 40px;\n\t\tmin-width: 40px;\n\t\theight: 40px;\n\t\tobject-fit: contain;\n\n\t\t&.rounded {\n\t\t\tborder-radius: 50%;\n\t\t}\n\t}\n\n\t&--content {\n\t\tdisplay: flex;\n\t\tflex-direction: column;\n\t\tpadding-left: 10px;\n\t\toverflow: hidden;\n\n\t\t&--name,\n\t\t&--subline {\n\t\t\toverflow: hidden;\n\t\t\ttext-overflow: ellipsis;\n\t\t\twhite-space: nowrap;\n\t\t}\n\t}\n}\n</style>\n","<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: 44px;\n\t\t\tdisplay: flex;\n\t\t\talign-items: center;\n\t\t\toverflow: hidden;\n\t\t}\n\n\t\t.option-text {\n\t\t\toverflow: hidden;\n\t\t\ttext-overflow: ellipsis;\n\t\t\twhite-space: nowrap;\n\t\t}\n\t}\n}\n</style>\n","<template>\n\t<div class=\"reference-picker\"\n\t\t:style=\"pickerWrapperStyle\"\n\t\ttabindex=\"-1\"\n\t\t@keydown.stop.prevent.esc=\"onEscapePressed\">\n\t\t<NcProviderList v-if=\"mode === MODES.providerList\"\n\t\t\tref=\"provider-list\"\n\t\t\t@select-provider=\"onProviderSelected\"\n\t\t\t@submit=\"submitLink\"\n\t\t\t@cancel=\"cancelProviderSelection\" />\n\t\t<NcRawLinkInput v-else-if=\"mode === MODES.standardLinkInput\"\n\t\t\tref=\"url-input\"\n\t\t\t:provider=\"selectedProvider\"\n\t\t\t@submit=\"submitLink\"\n\t\t\t@cancel=\"cancelRawLinkInput\" />\n\t\t<NcSearch v-else-if=\"mode === MODES.searchInput\"\n\t\t\tref=\"url-input\"\n\t\t\t:provider=\"selectedProvider\"\n\t\t\t@cancel=\"cancelSearch\"\n\t\t\t@submit=\"submitLink\" />\n\t\t<div v-else-if=\"mode === MODES.customElement\"\n\t\t\tclass=\"custom-element-wrapper\">\n\t\t\t<NcCustomPickerElement :provider=\"selectedProvider\"\n\t\t\t\t@submit=\"submitLink\"\n\t\t\t\t@cancel=\"cancelCustomElement\" />\n\t\t</div>\n\t</div>\n</template>\n\n<script>\nimport NcCustomPickerElement from './NcCustomPickerElement.vue'\nimport NcProviderList from './NcProviderList.vue'\nimport NcRawLinkInput from './NcRawLinkInput.vue'\nimport NcSearch from './NcSearch.vue'\nimport { isCustomPickerElementRegistered } from './customPickerElements.js'\nimport { touchProvider } from './providerHelper.js'\n\nconst MODES = {\n\tproviderList: 1,\n\tstandardLinkInput: 2,\n\tsearchInput: 3,\n\tcustomElement: 4,\n}\nexport default {\n\tname: 'NcReferencePicker',\n\tcomponents: {\n\t\tNcCustomPickerElement,\n\t\tNcProviderList,\n\t\tNcRawLinkInput,\n\t\tNcSearch,\n\t},\n\tprops: {\n\t\t/**\n\t\t * Provider to select on creation\n\t\t * Default: null. Show the provider list\n\t\t */\n\t\tinitialProvider: {\n\t\t\ttype: Object,\n\t\t\tdefault: () => null,\n\t\t},\n\t\t/**\n\t\t * Optional width in pixels\n\t\t * Default: 100%\n\t\t */\n\t\twidth: {\n\t\t\ttype: Number,\n\t\t\tdefault: null,\n\t\t},\n\t\t/**\n\t\t * Focus on the provider list select input on creation\n\t\t * Default: true\n\t\t */\n\t\tfocusOnCreate: {\n\t\t\ttype: Boolean,\n\t\t\tdefault: true,\n\t\t},\n\t},\n\temits: [\n\t\t'cancel',\n\t\t'cancel-raw-link',\n\t\t'cancel-search',\n\t\t'provider-selected',\n\t\t'submit',\n\t],\n\tdata() {\n\t\treturn {\n\t\t\tMODES,\n\t\t\tselectedProvider: this.initialProvider,\n\t\t}\n\t},\n\tcomputed: {\n\t\tmode() {\n\t\t\treturn this.selectedProvider === null\n\t\t\t\t? MODES.providerList\n\t\t\t\t: isCustomPickerElementRegistered(this.selectedProvider.id)\n\t\t\t\t\t? MODES.customElement\n\t\t\t\t\t: this.selectedProvider.search_providers_ids\n\t\t\t\t\t\t? MODES.searchInput\n\t\t\t\t\t\t: MODES.standardLinkInput\n\t\t},\n\t\tpickerWrapperStyle() {\n\t\t\treturn {\n\t\t\t\twidth: this.width ? this.width + 'px' : undefined,\n\t\t\t}\n\t\t},\n\t},\n\tmounted() {\n\t\tif (this.focusOnCreate) {\n\t\t\tif (this.initialProvider) {\n\t\t\t\tsetTimeout(() => {\n\t\t\t\t\tthis.$refs['url-input']?.focus()\n\t\t\t\t}, 300)\n\t\t\t} else {\n\t\t\t\tthis.$nextTick(() => {\n\t\t\t\t\tthis.$refs['provider-list']?.focus()\n\t\t\t\t})\n\t\t\t}\n\t\t}\n\n\t},\n\tmethods: {\n\t\tonEscapePressed() {\n\t\t\tif (this.selectedProvider !== null) {\n\t\t\t\tthis.deselectProvider()\n\t\t\t} else {\n\t\t\t\tthis.cancelProviderSelection()\n\t\t\t}\n\t\t},\n\t\tonProviderSelected(provider) {\n\t\t\tthis.selectedProvider = provider\n\t\t\tthis.$emit('provider-selected', provider)\n\t\t\tthis.$nextTick(() => {\n\t\t\t\tthis.$refs['url-input']?.focus()\n\t\t\t})\n\t\t},\n\t\tcancelCustomElement() {\n\t\t\tthis.deselectProvider()\n\t\t},\n\t\tcancelSearch() {\n\t\t\tthis.$emit('cancel-search', this.selectedProvider?.title)\n\t\t\tthis.deselectProvider()\n\t\t},\n\t\tcancelRawLinkInput() {\n\t\t\tthis.$emit('cancel-raw-link', this.selectedProvider?.title)\n\t\t\tthis.deselectProvider()\n\t\t},\n\t\tcancelProviderSelection() {\n\t\t\tthis.$emit('cancel')\n\t\t},\n\t\tsubmitLink(link) {\n\t\t\tif (this.selectedProvider !== null) {\n\t\t\t\ttouchProvider(this.selectedProvider.id)\n\t\t\t}\n\t\t\tthis.$emit('submit', link)\n\t\t\tthis.deselectProvider()\n\t\t},\n\t\tdeselectProvider() {\n\t\t\tthis.selectedProvider = null\n\t\t\tthis.$emit('provider-selected', null)\n\t\t\tsetTimeout(() => {\n\t\t\t\tthis.$refs['provider-list']?.focus()\n\t\t\t}, 300)\n\t\t},\n\t},\n}\n</script>\n\n<style lang=\"scss\" scoped>\n.reference-picker {\n\tdisplay: flex;\n\toverflow-y: auto;\n\twidth: 100%;\n\n\t.custom-element-wrapper {\n\t\tdisplay: flex;\n\t\toverflow-y: auto;\n\t\twidth: 100%;\n\t}\n}\n</style>\n","<template>\n\t<NcModal v-if=\"show\"\n\t\t:size=\"modalSize\"\n\t\t:can-close=\"false\"\n\t\tclass=\"reference-picker-modal\"\n\t\t@close=\"onCancel\">\n\t\t<div ref=\"modal_content\"\n\t\t\tclass=\"reference-picker-modal--content\">\n\t\t\t<NcButton v-if=\"showBackButton\"\n\t\t\t\t:aria-label=\"backButtonTitle\"\n\t\t\t\t:title=\"backButtonTitle\"\n\t\t\t\tclass=\"back-button\"\n\t\t\t\t@click=\"onBackClicked\">\n\t\t\t\t<template #icon>\n\t\t\t\t\t<ArrowLeftIcon />\n\t\t\t\t</template>\n\t\t\t</NcButton>\n\t\t\t<NcButton :aria-label=\"closeButtonLabel\"\n\t\t\t\t:title=\"closeButtonTitle\"\n\t\t\t\ttype=\"tertiary\"\n\t\t\t\tclass=\"close-button\"\n\t\t\t\t@click=\"onCancel\">\n\t\t\t\t<template #icon>\n\t\t\t\t\t<CloseIcon />\n\t\t\t\t</template>\n\t\t\t</NcButton>\n\t\t\t<h2 v-if=\"showModalName\">\n\t\t\t\t{{ modalName }}\n\t\t\t</h2>\n\t\t\t<NcReferencePicker ref=\"referencePicker\"\n\t\t\t\t:initial-provider=\"initialProvider\"\n\t\t\t\t:focus-on-create=\"focusOnCreate\"\n\t\t\t\t@provider-selected=\"onProviderSelect\"\n\t\t\t\t@submit=\"onSubmit\"\n\t\t\t\t@cancel=\"onCancel\" />\n\t\t</div>\n\t</NcModal>\n</template>\n\n<script>\nimport NcReferencePicker from './NcReferencePicker.vue'\nimport { getCustomPickerElementSize, isCustomPickerElementRegistered } from './customPickerElements.js'\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\">\n// this is to avoid scroll on the container and leave it to the result block\n.reference-picker-modal .modal-container {\n\tdisplay: flex !important;\n}\n</style>\n\n<style lang=\"scss\" scoped>\n.reference-picker-modal--content {\n\twidth: 100%;\n\tdisplay: flex;\n\tflex-direction: column;\n\talign-items: center;\n\tjustify-content: center;\n\toverflow-y: auto;\n\n\t.close-button,\n\t.back-button {\n\t\tposition: absolute;\n\t\ttop: 4px;\n\t}\n\t.back-button {\n\t\tleft: 4px;\n\t}\n\t.close-button {\n\t\tright: 4px;\n\t}\n\n\t> h2 {\n\t\tdisplay: flex;\n\t\tmargin: 12px 0 20px 0;\n\t\t.icon {\n\t\t\tmargin-right: 8px;\n\t\t}\n\t}\n}\n</style>\n","import NcReferencePickerModal from './NcReferencePickerModal.vue'\nimport { getProvider } from './providerHelper.js'\n\nimport Vue from 'vue'\n\n/**\n * Creates a reference picker modal and return a promise which provides the result\n *\n * @param {string} providerId Optional ID of initial selected provider\n * @param {boolean} isInsideViewer Should be true if this function is called while the Viewer is displayed\n * @return {Promise<unknown>}\n */\nexport async function getLinkWithPicker(providerId = null, isInsideViewer = undefined) {\n\treturn await new Promise((resolve, reject) => {\n\t\tconst modalId = 'referencePickerModal'\n\t\tconst modalElement = document.createElement('div')\n\t\tmodalElement.id = modalId\n\t\tdocument.body.append(modalElement)\n\n\t\tconst initialProvider = providerId === null\n\t\t\t? null\n\t\t\t: (getProvider(providerId) ?? null)\n\n\t\tconst View = Vue.extend(NcReferencePickerModal)\n\t\tconst view = new View({\n\t\t\tpropsData: {\n\t\t\t\tinitialProvider,\n\t\t\t\tisInsideViewer,\n\t\t\t},\n\t\t}).$mount(modalElement)\n\n\t\tview.$on('cancel', () => {\n\t\t\tview.$destroy()\n\t\t\treject(new Error('User cancellation'))\n\t\t})\n\t\tview.$on('submit', (link) => {\n\t\t\tview.$destroy()\n\t\t\tresolve(link)\n\t\t})\n\t})\n}\n"],"names":["isWidgetRegistered","id","registerWidget","callback","onDestroy","el","renderWidget","richObjectType","richObject","accessible","destroyWidget","_sfc_main$8","lineClamp","link","entries","NcCustomPickerRenderResult","element","object","isCustomPickerElementRegistered","getCustomPickerElementSize","size","registerCustomPickerElement","renderCustomPickerElement","providerId","destroyCustomPickerElement","renderResult","_sfc_main$7","renderFunctionResult","result","e","value","anyLinkProviderId","anyLinkProvider","_l10n","router","initialState","getProvider","getProviders","p","keep","sortProviders","providerList","timestamps","a","b","ta","tb","searchProvider","query","limit","providers","escapedQuery","regexp","filteredSortedProviders","searchResult","touchProvider","timestamp","params","url","axios__default","response","mytimer","delay","ms","context","args","isUrl","str","_sfc_main$6","_sfc_main$5","NcSelect","Components_NcHighlight","Components_NcEmptyContent","LinkVariantIcon","loading","_sfc_main$4","Components_NcLoadingIcon","NcReferenceWidget","NcTextField","error","_sfc_main$3","LIMIT","_sfc_main$2","DotsHorizontal","NcSearchResult","options","results","pid","providerEntriesWithId","entry","index","resultsBySearchProvider","item","searchProviderId","searchPromises","promises","cursor","data","MODES","_sfc_main$1","NcCustomPickerElement","NcProviderList","NcRawLinkInput","NcSearch","provider","_sfc_main","NcReferencePicker","Components_NcModal","Components_NcButton","ArrowLeft","Close","elem","eventBus","getLinkWithPicker","isInsideViewer","resolve","reject","modalId","modalElement","initialProvider","View","Vue__default","NcReferencePickerModal","view"],"mappings":"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","x_google_ignoreList":[6]}
|
|
1
|
+
{"version":3,"file":"referencePickerModal-byTgSeys.cjs","sources":["../../src/components/NcRichText/widgets.js","../../src/components/NcRichText/NcReferenceWidget.vue","../../src/components/NcRichText/NcReferencePicker/customPickerElements.js","../../src/components/NcRichText/NcReferencePicker/NcCustomPickerElement.vue","../../src/components/NcRichText/NcReferencePicker/providerHelper.js","../../src/components/NcRichText/NcReferencePicker/utils.js","../../node_modules/vue-material-design-icons/LinkVariant.vue","../../src/components/NcRichText/NcReferencePicker/NcProviderList.vue","../../src/components/NcRichText/NcReferencePicker/NcRawLinkInput.vue","../../src/components/NcRichText/NcReferencePicker/NcSearchResult.vue","../../src/components/NcRichText/NcReferencePicker/NcSearch.vue","../../src/components/NcRichText/NcReferencePicker/NcReferencePicker.vue","../../src/components/NcRichText/NcReferencePicker/NcReferencePickerModal.vue","../../src/components/NcRichText/NcReferencePicker/referencePickerModal.js"],"sourcesContent":["if (!window._vue_richtext_widgets) {\n\twindow._vue_richtext_widgets = {}\n}\n\nconst isWidgetRegistered = (id) => {\n\treturn !!window._vue_richtext_widgets[id]\n}\n\nconst registerWidget = (id, callback, onDestroy = (el) => {}) => {\n\tif (window._vue_richtext_widgets[id]) {\n\t\tconsole.error('Widget for id ' + id + ' already registered')\n\t\treturn\n\t}\n\n\twindow._vue_richtext_widgets[id] = {\n\t\tid,\n\t\tcallback,\n\t\tonDestroy,\n\t}\n}\n\nconst renderWidget = (el, { richObjectType, richObject, accessible }) => {\n\tif (richObjectType === 'open-graph') {\n\t\treturn\n\t}\n\n\tif (!window._vue_richtext_widgets[richObjectType]) {\n\t\tconsole.error('Widget for rich object type ' + richObjectType + ' not registered')\n\t\treturn\n\t}\n\n\twindow._vue_richtext_widgets[richObjectType].callback(el, { richObjectType, richObject, accessible })\n}\n\nconst destroyWidget = (richObjectType, el) => {\n\tif (richObjectType === 'open-graph') {\n\t\treturn\n\t}\n\n\tif (!window._vue_richtext_widgets[richObjectType]) {\n\t\treturn\n\t}\n\n\twindow._vue_richtext_widgets[richObjectType].onDestroy(el)\n}\n\nwindow._registerWidget = registerWidget\n\nexport {\n\tregisterWidget,\n\trenderWidget,\n\tdestroyWidget,\n\tisWidgetRegistered,\n}\n","<template>\n\t<div>\n\t\t<div v-if=\"reference && hasCustomWidget\" class=\"widget-custom\">\n\t\t\t<div ref=\"customWidget\" />\n\t\t</div>\n\n\t\t<a v-else-if=\"!noAccess && reference && reference.openGraphObject && !hasCustomWidget\"\n\t\t\t:href=\"reference.openGraphObject.link\"\n\t\t\trel=\"noopener noreferrer\"\n\t\t\ttarget=\"_blank\"\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\">{{ reference.openGraphObject.name }}</p>\n\t\t\t\t<p class=\"widget-default--description\" :style=\"descriptionStyle\">{{ reference.openGraphObject.description }}</p>\n\t\t\t\t<p class=\"widget-default--link\">{{ compactLink }}</p>\n\t\t\t</div>\n\t\t</a>\n\t</div>\n</template>\n<script>\nimport { renderWidget, isWidgetRegistered, destroyWidget } from './widgets.js'\n\nexport default {\n\tname: 'NcReferenceWidget',\n\tprops: {\n\t\treference: {\n\t\t\ttype: Object,\n\t\t\trequired: true,\n\t\t},\n\t},\n\tdata() {\n\t\treturn {\n\t\t\tcompact: 3,\n\t\t}\n\t},\n\tcomputed: {\n\t\thasCustomWidget() {\n\t\t\treturn isWidgetRegistered(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.compact === 0) {\n\t\t\t\treturn {\n\t\t\t\t\tdisplay: 'none',\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tconst lineClamp = this.compact < 4 ? this.compact : 3\n\t\t\treturn {\n\t\t\t\tlineClamp,\n\t\t\t\twebkitLineClamp: lineClamp,\n\t\t\t}\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},\n\tmounted() {\n\t\tthis.renderWidget()\n\t\tthis.observer = new ResizeObserver(entries => {\n\t\t\tif (entries[0].contentRect.width < 450) {\n\t\t\t\tthis.compact = 0\n\t\t\t} else if (entries[0].contentRect.width < 550) {\n\t\t\t\tthis.compact = 1\n\t\t\t} else if (entries[0].contentRect.width < 650) {\n\t\t\t\tthis.compact = 2\n\t\t\t} else {\n\t\t\t\tthis.compact = 3\n\t\t\t}\n\n\t\t})\n\t\tthis.observer.observe(this.$el)\n\t},\n\tbeforeDestroy() {\n\t\tthis.observer.disconnect()\n\t\tdestroyWidget(this.reference.richObjectType, this.$el)\n\t},\n\tmethods: {\n\t\trenderWidget() {\n\t\t\tif (this.$refs.customWidget) {\n\t\t\t\tthis.$refs.customWidget.innerHTML = ''\n\t\t\t}\n\t\t\tif (this?.reference?.richObjectType === 'open-graph') {\n\t\t\t\treturn\n\t\t\t}\n\t\t\tthis.$nextTick(() => {\n\t\t\t\t// Waiting for the ref to become available\n\t\t\t\trenderWidget(this.$refs.customWidget, this.reference)\n\t\t\t})\n\t\t},\n\t},\n}\n</script>\n<style lang=\"scss\" scoped>\n\n@mixin widget {\n\twidth: 100%;\n\tmargin: auto;\n\tmargin-bottom: calc(var(--default-grid-baseline, 4px) * 3);\n\tmargin-top: calc(var(--default-grid-baseline, 4px) * 3);\n\toverflow: hidden;\n\tborder: 2px solid var(--color-border);\n\tborder-radius: var(--border-radius-large);\n\tbackground-color: transparent;\n\tdisplay: flex;\n}\n\n.widget-custom {\n\t@include widget;\n}\n\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</style>\n","if (!window._vue_richtext_custom_picker_elements) {\n\twindow._vue_richtext_custom_picker_elements = {}\n}\n\n/**\n * Representation of the render callback result\n * It contains a dom element and an object (Vue instance or other fancy things)\n */\nclass NcCustomPickerRenderResult {\n\n\t/**\n\t * @param {HTMLElement} element The HTML element\n\t * @param {object} object The object\n\t */\n\tconstructor(element, object) {\n\t\tthis.element = element\n\t\tthis.object = object\n\t}\n\n}\n\nconst isCustomPickerElementRegistered = (id) => {\n\treturn !!window._vue_richtext_custom_picker_elements[id]\n}\n\nconst getCustomPickerElementSize = (id) => {\n\tconst size = window._vue_richtext_custom_picker_elements[id]?.size\n\tif (['small', 'normal', 'large', 'full'].includes(size)) {\n\t\treturn size\n\t}\n\treturn null\n}\n\nconst registerCustomPickerElement = (id, callback, onDestroy = (el) => {}, size = 'large') => {\n\tif (window._vue_richtext_custom_picker_elements[id]) {\n\t\tconsole.error('Custom reference picker element for id ' + id + ' already registered')\n\t\treturn\n\t}\n\n\twindow._vue_richtext_custom_picker_elements[id] = {\n\t\tid,\n\t\tcallback,\n\t\tonDestroy,\n\t\tsize,\n\t}\n}\n\nconst renderCustomPickerElement = (el, { providerId, accessible }) => {\n\tif (!window._vue_richtext_custom_picker_elements[providerId]) {\n\t\tconsole.error('Custom reference picker element for reference provider ID ' + providerId + ' not registered')\n\t\treturn\n\t}\n\n\treturn window._vue_richtext_custom_picker_elements[providerId].callback(el, { providerId, accessible })\n}\n\nconst destroyCustomPickerElement = (providerId, el, renderResult) => {\n\tif (!window._vue_richtext_custom_picker_elements[providerId]) {\n\t\treturn\n\t}\n\n\twindow._vue_richtext_custom_picker_elements[providerId].onDestroy(el, renderResult)\n}\n\nwindow._registerCustomPickerElement = registerCustomPickerElement\n\nexport {\n\tNcCustomPickerRenderResult,\n\tregisterCustomPickerElement,\n\trenderCustomPickerElement,\n\tdestroyCustomPickerElement,\n\tisCustomPickerElementRegistered,\n\tgetCustomPickerElementSize,\n}\n","<template>\n\t<div ref=\"domElement\" />\n</template>\n\n<script>\nimport { renderCustomPickerElement, isCustomPickerElementRegistered, destroyCustomPickerElement } from './customPickerElements.js'\n\nexport default {\n\tname: 'NcCustomPickerElement',\n\tprops: {\n\t\t/**\n\t\t * The reference provider\n\t\t */\n\t\tprovider: {\n\t\t\ttype: Object,\n\t\t\trequired: true,\n\t\t},\n\t},\n\temits: [\n\t\t'cancel',\n\t\t'submit',\n\t],\n\tdata() {\n\t\treturn {\n\t\t\tisRegistered: isCustomPickerElementRegistered(this.provider.id),\n\t\t\trenderResult: null,\n\t\t}\n\t},\n\tmounted() {\n\t\tif (this.isRegistered) {\n\t\t\tthis.renderElement()\n\t\t}\n\t},\n\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","import { isCustomPickerElementRegistered } from './customPickerElements.js'\n\nimport { t } from '../../../l10n.js'\n\nimport axios from '@nextcloud/axios'\nimport { loadState } from '@nextcloud/initial-state'\nimport { generateOcsUrl, imagePath } from '@nextcloud/router'\n\nexport const anyLinkProviderId = 'any-link'\n\nconst anyLinkProvider = {\n\tid: anyLinkProviderId,\n\ttitle: t('Any link'),\n\ticon_url: imagePath('core', 'filetypes/link.svg'),\n}\n\n// only get the provider list once, even if functions of this file are imported multiple times by different apps/components\nif (!window._vue_richtext_reference_providers) {\n\twindow._vue_richtext_reference_providers = loadState('core', 'reference-provider-list', [])\n}\n\n// single timestamps object used by every entity in the page\nif (!window._vue_richtext_reference_provider_timestamps) {\n\twindow._vue_richtext_reference_provider_timestamps = loadState('core', 'reference-provider-timestamps', {})\n}\n\n/**\n * @param {string} providerId The provider ID\n * @return {object} The provider object\n */\nexport function getProvider(providerId) {\n\tif (providerId === anyLinkProviderId) {\n\t\treturn anyLinkProvider\n\t}\n\treturn getProviders().find(p => p.id === providerId)\n}\n\n/**\n * @return {Array} Raw provider list as it was provided by the server\n */\nexport function getProviders() {\n\treturn window._vue_richtext_reference_providers.filter(p => {\n\t\t// avoid providers with no associated search provider and no custom component registered\n\t\tconst keep = (!!p.search_providers_ids && p.search_providers_ids.length > 0) || isCustomPickerElementRegistered(p.id)\n\t\tif (!keep) {\n\t\t\tconsole.debug('[smart picker]', p.id, 'reference provider is discoverable but does not have any related search provider or custom picker component registered')\n\t\t}\n\t\treturn keep\n\t})\n}\n\n/**\n * Helper function to sort a list of providers according to 2 factors:\n * - their \"last used timestamp\"\n * - their \"order\" property (coming from the provider declaration in the server implementation)\n *\n * @param {Array} providerList list of provider objects\n * @return {Array} the sorted provider list\n */\nexport function sortProviders(providerList) {\n\tconst timestamps = window._vue_richtext_reference_provider_timestamps\n\n\treturn providerList.sort((a, b) => {\n\t\treturn a.order === b.order\n\t\t\t? 0\n\t\t\t: a.order > b.order\n\t\t\t\t? 1\n\t\t\t\t: -1\n\t}).sort((a, b) => {\n\t\tconst ta = timestamps[a.id]\n\t\tconst tb = timestamps[b.id]\n\t\treturn ta === tb\n\t\t\t? 0\n\t\t\t: tb === undefined\n\t\t\t\t? -1\n\t\t\t\t: ta === undefined\n\t\t\t\t\t? 1\n\t\t\t\t\t: ta > tb\n\t\t\t\t\t\t? -1\n\t\t\t\t\t\t: 1\n\t})\n}\n\n/**\n * Helper function to search a provider from a search query\n * Result is a sorted list of providers\n *\n * @param {string} query The search query\n * @param {number} limit (optional) max number of results\n * @return {Array} the sorted/filtered provider list\n */\nexport function searchProvider(query, limit = null) {\n\tconst providers = getProviders()\n\tconst escapedQuery = query.replace(/[/\\-\\\\^$*+?.()|[\\]{}]/g, '\\\\$&')\n\tconst regexp = new RegExp(escapedQuery, 'i')\n\tconst sortedProviders = sortProviders(providers)\n\tconst filteredSortedProviders = sortedProviders.filter(p => {\n\t\treturn p.title.match(regexp)\n\t})\n\tconst searchResult = limit\n\t\t? filteredSortedProviders.slice(0, limit)\n\t\t: filteredSortedProviders\n\t// append the 'any link' provider in the full list or when there is no result\n\tif (query === '' || searchResult.length === 0) {\n\t\tsearchResult.push(anyLinkProvider)\n\t}\n\treturn searchResult\n}\n\n/**\n * Update the \"last used timestamp\" on the server side and then locally in the frontend\n *\n * @param {number} providerId The id of the search provider\n */\nexport function touchProvider(providerId) {\n\tconst timestamp = Math.floor(Date.now() / 1000)\n\tconst params = {\n\t\ttimestamp,\n\t}\n\tconst url = generateOcsUrl('references/provider/{providerId}', { providerId })\n\taxios.put(url, params)\n\t\t.then((response) => {\n\t\t\twindow._vue_richtext_reference_provider_timestamps[providerId] = timestamp\n\t\t})\n}\n","let 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\"\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>","<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 './providerHelper.js'\nimport { isUrl } from './utils.js'\nimport NcEmptyContent from '../../NcEmptyContent/index.js'\nimport NcHighlight from '../../NcHighlight/index.js'\nimport NcSelect from '../../NcSelect/index.js'\nimport { t } from '../../../l10n.js'\n\nimport LinkVariantIcon from 'vue-material-design-icons/LinkVariant.vue'\n\nexport default {\n\tname: 'NcProviderList',\n\tcomponents: {\n\t\tNcSelect,\n\t\tNcHighlight,\n\t\tNcEmptyContent,\n\t\tLinkVariantIcon,\n\t},\n\temits: [\n\t\t'select-provider',\n\t\t'submit',\n\t],\n\tdata() {\n\t\treturn {\n\t\t\tselectedProvider: null,\n\t\t\tquery: '',\n\t\t\tmultiselectPlaceholder: t('Select provider'),\n\t\t\tproviderIconAlt: t('Provider icon'),\n\t\t}\n\t},\n\tcomputed: {\n\t\toptions() {\n\t\t\tconst result = []\n\t\t\tif (this.query !== '' && isUrl(this.query)) {\n\t\t\t\tresult.push({\n\t\t\t\t\tid: this.query,\n\t\t\t\t\ttitle: this.query,\n\t\t\t\t\tisLink: true,\n\t\t\t\t})\n\t\t\t}\n\t\t\tresult.push(...searchProvider(this.query))\n\t\t\treturn result\n\t\t},\n\t},\n\tmethods: {\n\t\tfocus() {\n\t\t\tsetTimeout(() => {\n\t\t\t\tthis.$refs['provider-select']?.$el?.querySelector('#provider-select-input')?.focus()\n\t\t\t}, 300)\n\t\t},\n\t\tonProviderSelected(p) {\n\t\t\tif (p !== null) {\n\t\t\t\tif (p.isLink) {\n\t\t\t\t\tthis.$emit('submit', p.title)\n\t\t\t\t} else {\n\t\t\t\t\tthis.$emit('select-provider', p)\n\t\t\t\t}\n\t\t\t\tthis.selectedProvider = null\n\t\t\t}\n\t\t},\n\t\tonSearch(query, 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-right: 8px;\n\t\t\t}\n\n\t\t\t.provider-icon {\n\t\t\t\twidth: 20px;\n\t\t\t\theight: 20px;\n\t\t\t\tobject-fit: contain;\n\t\t\t\tmargin-right: 8px;\n\t\t\t\tfilter: var(--background-invert-if-dark);\n\t\t\t}\n\n\t\t\t.option-text {\n\t\t\t\toverflow: hidden;\n\t\t\t\ttext-overflow: ellipsis;\n\t\t\t\twhite-space: nowrap;\n\t\t\t}\n\n\t\t}\n\t}\n}\n</style>\n","<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","<template>\n\t<div class=\"result\">\n\t\t<div v-if=\"entry.icon\"\n\t\t\t:class=\"{ [entry.icon]: true, rounded: entry.rounded }\"\n\t\t\tclass=\"result--icon-class\" />\n\t\t<img v-else\n\t\t\tclass=\"result--image\"\n\t\t\t:class=\"{ rounded: entry.rounded }\"\n\t\t\t:src=\"entry.thumbnailUrl\">\n\t\t<div class=\"result--content\">\n\t\t\t<span class=\"result--content--name\">\n\t\t\t\t<NcHighlight :search=\"query\" :text=\"entry.title\" />\n\t\t\t</span>\n\t\t\t<span class=\"result--content--subline\">\n\t\t\t\t<NcHighlight :search=\"query\" :text=\"entry.subline\" />\n\t\t\t</span>\n\t\t</div>\n\t</div>\n</template>\n\n<script>\nimport NcHighlight from '../../NcHighlight/index.js'\n\nexport default {\n\tname: 'NcSearchResult',\n\tcomponents: {\n\t\tNcHighlight,\n\t},\n\tprops: {\n\t\t/**\n\t\t * Unified search result entry\n\t\t */\n\t\tentry: {\n\t\t\ttype: Object,\n\t\t\trequired: true,\n\t\t},\n\t\t/**\n\t\t * The query that led to getting this result\n\t\t * Used to highlight the entry text\n\t\t */\n\t\tquery: {\n\t\t\ttype: String,\n\t\t\trequired: true,\n\t\t},\n\t},\n}\n</script>\n\n<style lang=\"scss\" scoped>\n.result {\n\tdisplay: flex;\n\talign-items: center;\n\theight: 44px;\n\toverflow: hidden;\n\n\t&--icon-class,\n\t&--image {\n\t\twidth: 40px;\n\t\tmin-width: 40px;\n\t\theight: 40px;\n\t\tobject-fit: contain;\n\n\t\t&.rounded {\n\t\t\tborder-radius: 50%;\n\t\t}\n\t}\n\n\t&--content {\n\t\tdisplay: flex;\n\t\tflex-direction: column;\n\t\tpadding-left: 10px;\n\t\toverflow: hidden;\n\n\t\t&--name,\n\t\t&--subline {\n\t\t\toverflow: hidden;\n\t\t\ttext-overflow: ellipsis;\n\t\t\twhite-space: nowrap;\n\t\t}\n\t}\n}\n</style>\n","<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: 44px;\n\t\t\tdisplay: flex;\n\t\t\talign-items: center;\n\t\t\toverflow: hidden;\n\t\t}\n\n\t\t.option-text {\n\t\t\toverflow: hidden;\n\t\t\ttext-overflow: ellipsis;\n\t\t\twhite-space: nowrap;\n\t\t}\n\t}\n}\n</style>\n","<template>\n\t<div class=\"reference-picker\"\n\t\t:style=\"pickerWrapperStyle\"\n\t\ttabindex=\"-1\"\n\t\t@keydown.stop.prevent.esc=\"onEscapePressed\">\n\t\t<NcProviderList v-if=\"mode === MODES.providerList\"\n\t\t\tref=\"provider-list\"\n\t\t\t@select-provider=\"onProviderSelected\"\n\t\t\t@submit=\"submitLink\"\n\t\t\t@cancel=\"cancelProviderSelection\" />\n\t\t<NcRawLinkInput v-else-if=\"mode === MODES.standardLinkInput\"\n\t\t\tref=\"url-input\"\n\t\t\t:provider=\"selectedProvider\"\n\t\t\t@submit=\"submitLink\"\n\t\t\t@cancel=\"cancelRawLinkInput\" />\n\t\t<NcSearch v-else-if=\"mode === MODES.searchInput\"\n\t\t\tref=\"url-input\"\n\t\t\t:provider=\"selectedProvider\"\n\t\t\t@cancel=\"cancelSearch\"\n\t\t\t@submit=\"submitLink\" />\n\t\t<div v-else-if=\"mode === MODES.customElement\"\n\t\t\tclass=\"custom-element-wrapper\">\n\t\t\t<NcCustomPickerElement :provider=\"selectedProvider\"\n\t\t\t\t@submit=\"submitLink\"\n\t\t\t\t@cancel=\"cancelCustomElement\" />\n\t\t</div>\n\t</div>\n</template>\n\n<script>\nimport NcCustomPickerElement from './NcCustomPickerElement.vue'\nimport NcProviderList from './NcProviderList.vue'\nimport NcRawLinkInput from './NcRawLinkInput.vue'\nimport NcSearch from './NcSearch.vue'\nimport { isCustomPickerElementRegistered } from './customPickerElements.js'\nimport { touchProvider } from './providerHelper.js'\n\nconst MODES = {\n\tproviderList: 1,\n\tstandardLinkInput: 2,\n\tsearchInput: 3,\n\tcustomElement: 4,\n}\nexport default {\n\tname: 'NcReferencePicker',\n\tcomponents: {\n\t\tNcCustomPickerElement,\n\t\tNcProviderList,\n\t\tNcRawLinkInput,\n\t\tNcSearch,\n\t},\n\tprops: {\n\t\t/**\n\t\t * Provider to select on creation\n\t\t * Default: null. Show the provider list\n\t\t */\n\t\tinitialProvider: {\n\t\t\ttype: Object,\n\t\t\tdefault: () => null,\n\t\t},\n\t\t/**\n\t\t * Optional width in pixels\n\t\t * Default: 100%\n\t\t */\n\t\twidth: {\n\t\t\ttype: Number,\n\t\t\tdefault: null,\n\t\t},\n\t\t/**\n\t\t * Focus on the provider list select input on creation\n\t\t * Default: true\n\t\t */\n\t\tfocusOnCreate: {\n\t\t\ttype: Boolean,\n\t\t\tdefault: true,\n\t\t},\n\t},\n\temits: [\n\t\t'cancel',\n\t\t'cancel-raw-link',\n\t\t'cancel-search',\n\t\t'provider-selected',\n\t\t'submit',\n\t],\n\tdata() {\n\t\treturn {\n\t\t\tMODES,\n\t\t\tselectedProvider: this.initialProvider,\n\t\t}\n\t},\n\tcomputed: {\n\t\tmode() {\n\t\t\treturn this.selectedProvider === null\n\t\t\t\t? MODES.providerList\n\t\t\t\t: isCustomPickerElementRegistered(this.selectedProvider.id)\n\t\t\t\t\t? MODES.customElement\n\t\t\t\t\t: this.selectedProvider.search_providers_ids\n\t\t\t\t\t\t? MODES.searchInput\n\t\t\t\t\t\t: MODES.standardLinkInput\n\t\t},\n\t\tpickerWrapperStyle() {\n\t\t\treturn {\n\t\t\t\twidth: this.width ? this.width + 'px' : undefined,\n\t\t\t}\n\t\t},\n\t},\n\tmounted() {\n\t\tif (this.focusOnCreate) {\n\t\t\tif (this.initialProvider) {\n\t\t\t\tsetTimeout(() => {\n\t\t\t\t\tthis.$refs['url-input']?.focus()\n\t\t\t\t}, 300)\n\t\t\t} else {\n\t\t\t\tthis.$nextTick(() => {\n\t\t\t\t\tthis.$refs['provider-list']?.focus()\n\t\t\t\t})\n\t\t\t}\n\t\t}\n\n\t},\n\tmethods: {\n\t\tonEscapePressed() {\n\t\t\tif (this.selectedProvider !== null) {\n\t\t\t\tthis.deselectProvider()\n\t\t\t} else {\n\t\t\t\tthis.cancelProviderSelection()\n\t\t\t}\n\t\t},\n\t\tonProviderSelected(provider) {\n\t\t\tthis.selectedProvider = provider\n\t\t\tthis.$emit('provider-selected', provider)\n\t\t\tthis.$nextTick(() => {\n\t\t\t\tthis.$refs['url-input']?.focus()\n\t\t\t})\n\t\t},\n\t\tcancelCustomElement() {\n\t\t\tthis.deselectProvider()\n\t\t},\n\t\tcancelSearch() {\n\t\t\tthis.$emit('cancel-search', this.selectedProvider?.title)\n\t\t\tthis.deselectProvider()\n\t\t},\n\t\tcancelRawLinkInput() {\n\t\t\tthis.$emit('cancel-raw-link', this.selectedProvider?.title)\n\t\t\tthis.deselectProvider()\n\t\t},\n\t\tcancelProviderSelection() {\n\t\t\tthis.$emit('cancel')\n\t\t},\n\t\tsubmitLink(link) {\n\t\t\tif (this.selectedProvider !== null) {\n\t\t\t\ttouchProvider(this.selectedProvider.id)\n\t\t\t}\n\t\t\tthis.$emit('submit', link)\n\t\t\tthis.deselectProvider()\n\t\t},\n\t\tdeselectProvider() {\n\t\t\tthis.selectedProvider = null\n\t\t\tthis.$emit('provider-selected', null)\n\t\t\tsetTimeout(() => {\n\t\t\t\tthis.$refs['provider-list']?.focus()\n\t\t\t}, 300)\n\t\t},\n\t},\n}\n</script>\n\n<style lang=\"scss\" scoped>\n.reference-picker {\n\tdisplay: flex;\n\toverflow-y: auto;\n\twidth: 100%;\n\n\t.custom-element-wrapper {\n\t\tdisplay: flex;\n\t\toverflow-y: auto;\n\t\twidth: 100%;\n\t}\n}\n</style>\n","<template>\n\t<NcModal v-if=\"show\"\n\t\t:size=\"modalSize\"\n\t\t:can-close=\"false\"\n\t\tclass=\"reference-picker-modal\"\n\t\t@close=\"onCancel\">\n\t\t<div ref=\"modal_content\"\n\t\t\tclass=\"reference-picker-modal--content\">\n\t\t\t<NcButton v-if=\"showBackButton\"\n\t\t\t\t:aria-label=\"backButtonTitle\"\n\t\t\t\t:title=\"backButtonTitle\"\n\t\t\t\tclass=\"back-button\"\n\t\t\t\t@click=\"onBackClicked\">\n\t\t\t\t<template #icon>\n\t\t\t\t\t<ArrowLeftIcon />\n\t\t\t\t</template>\n\t\t\t</NcButton>\n\t\t\t<NcButton :aria-label=\"closeButtonLabel\"\n\t\t\t\t:title=\"closeButtonTitle\"\n\t\t\t\ttype=\"tertiary\"\n\t\t\t\tclass=\"close-button\"\n\t\t\t\t@click=\"onCancel\">\n\t\t\t\t<template #icon>\n\t\t\t\t\t<CloseIcon />\n\t\t\t\t</template>\n\t\t\t</NcButton>\n\t\t\t<h2 v-if=\"showModalName\">\n\t\t\t\t{{ modalName }}\n\t\t\t</h2>\n\t\t\t<NcReferencePicker ref=\"referencePicker\"\n\t\t\t\t:initial-provider=\"initialProvider\"\n\t\t\t\t:focus-on-create=\"focusOnCreate\"\n\t\t\t\t@provider-selected=\"onProviderSelect\"\n\t\t\t\t@submit=\"onSubmit\"\n\t\t\t\t@cancel=\"onCancel\" />\n\t\t</div>\n\t</NcModal>\n</template>\n\n<script>\nimport NcReferencePicker from './NcReferencePicker.vue'\nimport { getCustomPickerElementSize, isCustomPickerElementRegistered } from './customPickerElements.js'\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\">\n// this is to avoid scroll on the container and leave it to the result block\n.reference-picker-modal .modal-container {\n\tdisplay: flex !important;\n}\n</style>\n\n<style lang=\"scss\" scoped>\n.reference-picker-modal--content {\n\twidth: 100%;\n\tdisplay: flex;\n\tflex-direction: column;\n\talign-items: center;\n\tjustify-content: center;\n\toverflow-y: auto;\n\n\t.close-button,\n\t.back-button {\n\t\tposition: absolute;\n\t\ttop: 4px;\n\t}\n\t.back-button {\n\t\tleft: 4px;\n\t}\n\t.close-button {\n\t\tright: 4px;\n\t}\n\n\t> h2 {\n\t\tdisplay: flex;\n\t\tmargin: 12px 0 20px 0;\n\t\t.icon {\n\t\t\tmargin-right: 8px;\n\t\t}\n\t}\n}\n</style>\n","import NcReferencePickerModal from './NcReferencePickerModal.vue'\nimport { getProvider } from './providerHelper.js'\n\nimport Vue from 'vue'\n\n/**\n * Creates a reference picker modal and return a promise which provides the result\n *\n * @param {string} providerId Optional ID of initial selected provider\n * @param {boolean} isInsideViewer Should be true if this function is called while the Viewer is displayed\n * @return {Promise<unknown>}\n */\nexport async function getLinkWithPicker(providerId = null, isInsideViewer = undefined) {\n\treturn await new Promise((resolve, reject) => {\n\t\tconst modalId = 'referencePickerModal'\n\t\tconst modalElement = document.createElement('div')\n\t\tmodalElement.id = modalId\n\t\tdocument.body.append(modalElement)\n\n\t\tconst initialProvider = providerId === null\n\t\t\t? null\n\t\t\t: (getProvider(providerId) ?? null)\n\n\t\tconst View = Vue.extend(NcReferencePickerModal)\n\t\tconst view = new View({\n\t\t\tpropsData: {\n\t\t\t\tinitialProvider,\n\t\t\t\tisInsideViewer,\n\t\t\t},\n\t\t}).$mount(modalElement)\n\n\t\tview.$on('cancel', () => {\n\t\t\tview.$destroy()\n\t\t\treject(new Error('User cancellation'))\n\t\t})\n\t\tview.$on('submit', (link) => {\n\t\t\tview.$destroy()\n\t\t\tresolve(link)\n\t\t})\n\t})\n}\n"],"names":["isWidgetRegistered","id","registerWidget","callback","onDestroy","el","renderWidget","richObjectType","richObject","accessible","destroyWidget","_sfc_main$8","lineClamp","link","entries","NcCustomPickerRenderResult","element","object","isCustomPickerElementRegistered","getCustomPickerElementSize","size","registerCustomPickerElement","renderCustomPickerElement","providerId","destroyCustomPickerElement","renderResult","_sfc_main$7","renderFunctionResult","result","e","value","anyLinkProviderId","anyLinkProvider","_l10n","router","initialState","getProvider","getProviders","p","keep","sortProviders","providerList","timestamps","a","b","ta","tb","searchProvider","query","limit","providers","escapedQuery","regexp","filteredSortedProviders","searchResult","touchProvider","timestamp","params","url","axios__default","response","mytimer","delay","ms","context","args","isUrl","str","_sfc_main$6","_sfc_main$5","NcSelect","Components_NcHighlight","Components_NcEmptyContent","LinkVariantIcon","loading","_sfc_main$4","Components_NcLoadingIcon","NcReferenceWidget","NcTextField","error","_sfc_main$3","LIMIT","_sfc_main$2","DotsHorizontal","NcSearchResult","options","results","pid","providerEntriesWithId","entry","index","resultsBySearchProvider","item","searchProviderId","searchPromises","promises","cursor","data","MODES","_sfc_main$1","NcCustomPickerElement","NcProviderList","NcRawLinkInput","NcSearch","provider","_sfc_main","NcReferencePicker","Components_NcModal","Components_NcButton","ArrowLeft","Close","elem","eventBus","getLinkWithPicker","isInsideViewer","resolve","reject","modalId","modalElement","initialProvider","View","Vue__default","NcReferencePickerModal","view"],"mappings":"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","x_google_ignoreList":[6]}
|
|
@@ -1,14 +1,14 @@
|
|
|
1
1
|
import "../assets/referencePickerModal-VxSowpb5.css";
|
|
2
2
|
import { n as o } from "./_plugin-vue2_normalizer-u6G_3nkj.mjs";
|
|
3
|
-
import { r as h, O as E, a as n, P as N, Q as C, R as I, u as O, S as B, G as M, T as V } from "./_l10n-
|
|
3
|
+
import { r as h, O as E, a as n, P as N, Q as C, R as I, u as O, S as B, G as M, T as V } from "./_l10n-gZppkly8.mjs";
|
|
4
4
|
import f from "@nextcloud/axios";
|
|
5
5
|
import { loadState as P } from "@nextcloud/initial-state";
|
|
6
6
|
import { imagePath as W, generateOcsUrl as p } from "@nextcloud/router";
|
|
7
7
|
import _ from "../Components/NcEmptyContent.mjs";
|
|
8
8
|
import { N as w } from "./index-2phCrsSH.mjs";
|
|
9
|
-
import { N as b } from "./NcSelect-
|
|
9
|
+
import { N as b } from "./NcSelect-roYZ16y8.mjs";
|
|
10
10
|
import q from "../Components/NcLoadingIcon.mjs";
|
|
11
|
-
import { N as T } from "./NcTextField-
|
|
11
|
+
import { N as T } from "./NcTextField-JlIIeRJa.mjs";
|
|
12
12
|
import { D as j } from "./DotsHorizontal-NssXDZGM.mjs";
|
|
13
13
|
import z from "../Components/NcButton.mjs";
|
|
14
14
|
import D from "../Components/NcModal.mjs";
|